From 5663fd0c791eaf1d5c085459f60baa531dc4b747 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 22 Mar 2019 22:40:41 -0700 Subject: [PATCH 001/134] Added test files for hkexcp testing Signed-off-by: Russ Magee --- hkexpasswd/hkexpasswd-vis.gv | 30 ++-- hkexpasswd/hkexpasswd-vis.png | Bin 33135 -> 35199 bytes hkexsh/hkexsh-vis-fixedup.png | Bin 627943 -> 709574 bytes hkexsh/hkexsh-vis.gv | 250 ++++++++++++++++---------------- hkexshd/hkexshd-vis-fixedup.png | Bin 645158 -> 587927 bytes hkexshd/hkexshd-vis.gv | 194 ++++++++++++------------- hkexshd/hkexshd-vis.png | Bin 640745 -> 583066 bytes 7 files changed, 237 insertions(+), 237 deletions(-) diff --git a/hkexpasswd/hkexpasswd-vis.gv b/hkexpasswd/hkexpasswd-vis.gv index 5ad0a28..95e67c8 100755 --- a/hkexpasswd/hkexpasswd-vis.gv +++ b/hkexpasswd/hkexpasswd-vis.gv @@ -14,43 +14,43 @@ digraph gocallvis { edge [minlen="2"] subgraph "cluster_focus" { - labelloc="t"; + bgcolor="#e6ecfa"; +label="main"; +labelloc="t"; labeljust="c"; fontsize="18"; -bgcolor="#e6ecfa"; -label="main"; "blitter.com/go/hkexsh/hkexpasswd.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ] subgraph "cluster_blitter.com/go/hkexsh" { - penwidth="0.8"; -style="filled"; + style="filled"; +rank="sink"; +penwidth="0.8"; +fontsize="16"; fillcolor="lightyellow"; fontname="bold"; label="[hkexsh]"; URL="/?f=blitter.com/go/hkexsh"; tooltip="package: blitter.com/go/hkexsh"; -fontsize="16"; -rank="sink"; - "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ] + "blitter.com/go/hkexsh.ReadPassword" [ label="ReadPassword" penwidth="1.5" fillcolor="moccasin" ] } subgraph "cluster_github.com/jameskeane/bcrypt" { - tooltip="package: github.com/jameskeane/bcrypt"; -penwidth="0.8"; -fontsize="16"; -style="filled"; + fontsize="16"; +fillcolor="lightyellow"; +fontname="bold"; rank="sink"; label="[bcrypt]"; URL="/?f=github.com/jameskeane/bcrypt"; -fillcolor="lightyellow"; -fontname="bold"; +tooltip="package: github.com/jameskeane/bcrypt"; +penwidth="0.8"; +style="filled"; "github.com/jameskeane/bcrypt.Salt" [ fillcolor="moccasin" label="Salt" penwidth="1.5" ] "github.com/jameskeane/bcrypt.Hash" [ fillcolor="moccasin" label="Hash" penwidth="1.5" ] - "github.com/jameskeane/bcrypt.Match" [ fillcolor="moccasin" label="Match" penwidth="1.5" ] + "github.com/jameskeane/bcrypt.Match" [ penwidth="1.5" fillcolor="moccasin" label="Match" ] } diff --git a/hkexpasswd/hkexpasswd-vis.png b/hkexpasswd/hkexpasswd-vis.png index d94fc20f158c621203cca1342993f3d615b510fb..d33146adeb6e76b2d322544045988396d23cff59 100644 GIT binary patch literal 35199 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 OA}6gZRW9)%;Qs)B+I@Zi diff --git a/hkexsh/hkexsh-vis-fixedup.png b/hkexsh/hkexsh-vis-fixedup.png index 120520e78ffded693209678cbeaf75ab59ad1b5c..07a29bce3ce62d1e6a76737a3c047579adaa5ff4 100644 GIT binary patch literal 709574 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 $zKE6V#OXqr=|( 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 {Y0CT=1q(qUgb*%biOeeIa($amMg*=)!uC0L| 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

tN^SeGiQy5G#G+%#yYOgwLYDM~&)Ej`&t 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 z

!UNlOSE09ui+x0^PjccUV~r=;yoA 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 z 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

kY_t#MW1c5uAllavr{!18Y+25 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

jTq}y)Gg3iB^4d_e^r?@(B*8 z_6{q?Zew{82!J%9AoR*{2G*@*yFN5|fTQu|n0 zb*9J8EU$qblYaP%|KkE698>G&3zQVd>wrc%M$EZ=Ap_nK_zqz)-;VCFLIJ!e8>oQ- zbIx=w2(mks%4>%d$aE^(^8?9TfLwQ8B&^`N3E)NGsKk~nX~W~~H9W)_e>(BK?^6)H z!U@!q)-iM!lu;Tk3y08+69zZp(WHmGlKw)|a!GClFznDl@~*y?+28+V8hh-~*jgXI zN@iJG?$guza5RW(j-v#`++z`DRgb00_0PTAIF~K^sq|Xq_LAHKd2j;NapT{#YIdu> ze0YX^XZ{eD*3{H%;uJeLPckQ156o*oE`KAfYigwQRzH!GYsdZZkKs1$yL&PPgFwPq_ncN!@!x*OP>C$qEeOck?GVK}y}BAJee=+8 z_Zy!Vr@iy{im@D?zTOe{BSwE+e3}+sqV^&p#D&lnz*R<3asl!U3g|~?03h$Rh0)uS zaGV;{Z-uO^Q?maAj`lU6_!qwu5Zr!5GbvrexX-|*C55w{?3_AjLF@SOP48!j&Y4r}Qy6(&T}ds;psTAB^+&Za1T zGTCnblJ7!3B%2Q=<*8eC4I#Y-ig;m@+|JJ?OY$e?It%^Dd2afx@@e_1A4BnhPRNmU zfnF~Kt7!cmr>R7`&pI!lp>KC8`TbK;z4tAK(S*nbfO0Me!K}26aQBw{&0QQ8?)6vV z^xs}ySCR163W-}>t@bN4w_mX=H~ev*)CtU@IAFC@FM$6fCfhkV8JM{~OHSe#=sI<( zkis~rEqbSBmF`-77J_yZdBjBE@XluI7^zo6sm)Y=eOF^N-W(kUo~1|Nj}|kxfQtyQ8iJ^Cs`r1^%L(3yGc?~^l}u_9}eeAC824p>n93z=gF;( zKC`F1IEY29i&gKYE=9zIc|aWAHV)gHp_9D*ic#GeN^~48b;z?&{ z+KBF>otNcUs=geu^28PxWF&4nQH4THW3oQq`FE7*tdC0W$}sQ)PI^g`l|%ZFF#BEK zVbF_d>Z{$QW1BKgjR7kxpOvhecmlq5@Rq$;E&nFSfPN;R_XrsW4)hWv3WA5 zp>5~)MQw3@&YW2IpUFn>TQ0KLLP)R811+hKoP@JF%n6_afY|UdV@5w$#eD&R0(vXU z`K2W{_x94xfWd(}7P%$tyj|LS&3dx2M^io`F4sCtkyK;*7hRw8sHpuKJKmG|%~iH_ z>^IjP59wVV36=EqE;KqQx}Cmt4tauP$bYlkgeW{~u|pcQ$6qZaPw%O6w&s})r^Wqr zsFsQv@(ea@&nY<&ypJWn!W*Pi7mA6C2WSRKOU7by!|YfX$92AUJ-yyM?tBQ-80d z=z>IbFW+Wb8%}t?NJ!OmI$iS(8mTPvRj61Sk4s5+OZ%;I!XZ{tamAle=HUfHrTGZw zT52o+`VIBqg(lOngWfyKHq@S7cQ49}86w_;K!;?FQ;!LSg;IWg?3oWWO2Tp`x!ixz zeS&^M4HCvS8qk}tX?TR)hjaV*r|Gynwy_#6*g7B08HKNrpI4 zML{*|G2Ri{JbM{}gp;Z!*2BGZpCZm^kl{EV(em zQO7r=@0&Z}`c;Fusn$!^Rq;y;2ey`HFfVdQoh%EG+!Z40d2sgeiD_V3>+#g+)_jMV zA{Bu1{`{46HhO9>Kq)tF6dAZkn+uEA#0lHoI6AcXMri6Zd3`m#=W@Fni+XHRkZ)Eo?l-6!x-&tD#*gIsOc|cl7Y8)4+Lt}eGR$gAm(>((l=24d3BE= zXOUaPty;jNnyaC{NlzOj3`A59f++%CJtQwC?QbJ+4h}k&i*zh+;mN^p_(ej$hX36~ zmsB^7tv)9cvdeS~l>Ry z#IRl(b#C=>c8Nl-_6BAa%$YwZ)B*9`e`lkt*Ha!>it3)AfGVwjf*%r+lb?ydxeFG# zw#h7xR)rH`FUdDUEXNL$LL|OJ1sxCm>|U*m@0C$g)n&rlFroU0s&-g=~Le%j5EB>(Y@s_029IRT8YOA}xG1 zRd)ON>ba?@zJ*cV=nuI~Eynp0pT+Ke{?g`9mg^fTrO1zoztHiU_`6$`+q>$L6KRog zm#H(6cVFwA{UK^~WUtAM@`*@INothQOe06lROOwGYtMabK?Gf{dvRqA;iT&aJxWD` zg!mDKlm_Gk{Eqg;(vU*?Y;9d-GaFJ@SL1hU2}{=5 zUz$nwu!;T6Dt3QZY9&(mhC`snr}pc}rH)^O_5NJY-8xVGhxyic{cU!MSKn!Z-uyvn zv1`ATVmIKNHGFN(G26Ho;=6^NyBX6931sA$cRxr97@lpg%`c2CuA{Ts&12P9fH1?l zMp|Y+Gr77ZevtZ;31mdrVvIlg%lH)(VUY2lfCkX}Xp!xclOjxa%l>h*;yN)rc?_mq zGnvNgTFO(s)* zHyUla{dl#PrQ9=|CUUafH(ZHI(I`Ik_=M#P9!>^h=TPneF4ITA6tUkGP8 z>`)FzNqQF54a{Nv+i(;q;<|S_lqwZT-QsYDtVq5}_pPqIobL)}D{a^JHGstP zio^kH@PJQ@NNu?M!`LF9r4oXD_}0_u;CS^xdsqK1p(m^Y@9~z#Vt}?pfvt&d6JAHG z3GLb)SV})Mf1doyo>r#3&Dw%B&DTMG=|PQzP+xS?9MM2m#EN#7V0YuQNR5L(=Ko;U ztlY}$uFNL)#cHT_);c|BW9G9K#r0+-wj-|y$l8z1nq&zH(J*ML z8P36I84TqoP{U)kGwQT6a^e1kG7xBv*`xT88aP5)q`Sk^+`(=bG^VD}Dynd#UX@US z+^H&S$^))ApaT@si-5^HWRD!u9D%bI|@h+FAT-KOlVh&0@8a`~=(sJG1o@+1SlT>!s9jw>>FhHpu z{yt^{XFiHe`yyFV?%KNnXn}-h{)`;(e+5Uhbc03~4T$$Dtx^#$)!@M-l19&0m8b&Z zF|t-J+nP>~(!T;4;y)WjjiA!^r$o9}kmy*1bIL;?Um~i4hLAjw89cjg3I#5JJAYwN zTI+o0rGBN~^|{0^ox@wE6=s9^&EXSX{g z66h8Y?iwN9))EbFj&o!7>$f5oCxH=Cj$wPUIPSyEzUZuJ??T!F(5+fOva(*kHH!eI z1^PHT&I09TiYc`o$b0BBr7pBAL6NfU6a%xm*aAU z-6s^n-oEv*U29FF-1J%%bVh)`$o6()JSipmjrw(|o{3b4A zWh7%oIq0W$ahN}a`~DPEPUtar%!*RDN%uZb*Z0Ae!g_XYcB{9busls2h6@FKXWk=0I8pTt(%|3SniG`Xa3x2me7l3QdQiG2x zt`1&mn}5gJ!@@f9mbK^Y%rdmsLhZ=ADu|tiS%{tH;e(I1uDG_iDt6|$h}izo5g{ez zXsJO|vu~CFMK$R<4;WgxHd+GHf5`dl8PeiXApEcjbB$$7@$qKA5A5R^jmN-i#}(h~ zy^^oceW9uK)8A>`D~6}h<7bx%&B3xAy1jSCXPq+LObw#0;$JsCxkoEn<5J_6hlmSv z70XTHeRpK_QDfWtx!E7hddQ{LUy57U1+dIAPYjxDCe9S(ck*KxtdnBK7w7$pE!?qr zn(UgoEFiivI7Gm$9sp5e6!VF3bWaXuZDFWc6!It*5YU($l1DpjO>a{tyrdM}o3>3x z9_>SOmII@3z0Bu|L>k;#wFKNBqbok^JYGlkntXBz4coyB#-)|v=4D_;p0wXRdmQK; zoFbK$D{IP%YKg5WZ7LM1D0ZRuP%NdBJ#}&(k2#A?Cp0zxlHI0iLP$ZtU2dMZlnP{{XC?-X&0#<;lwrVYj>x=`qEw<+}i%#u*|_})#b!GJGr(*>CC< zv!VUNMsLwZZ^4!_wfKNiTMijFV#OjCCi~)4)~Q0SqM|SS)Dg>gjI^W#f%HQLGAW)M zpLaPfEEu64ld-Y|(@CC_bN!|km(Ex3>}KlhWa#*}L=CItehh4h+}V zfMv11XR>Z%|L@I#;o+NVZsSNv_!LpR`o>1W7Ezq(cEbI`Cw&>k5Bd6!>3hPM!E4*w zq(np{|E-ZS<7ezOuJ`NXy5;s%y-n`iW}}D%zG?GiVIS}PkPpimAia%qr&_#bXDM=`Q?m{-~M$nH1AAsa)if@4{lLS}JLY z(ed$VF@84-@J5O{UAy=6p}3l_3FboCifrq|Un#v=)51WbWx-CjFIVQZf)y30s;aQ( z7yZUnPHnNhH-KsFR+})j>^<OCU6{|ofX}bHf>58WEX(z zfN%pqtJYQ?&*3s64G(Qc1|C=GM953o@fuFLi>Kl}eJreE2#SAFMP#O~4W}0Dvr4w% z{{0)$fqp?5fJ;U)Zu!3S_-z8UPs7DZJCmhB(Q@5dgV?hx1dsDt0CLnwU`djZUDhN_ zEK2vr^C}St#xZEXkx`^X52FLoqG^DJEq2Y~o*_YFdg&F>HSy1PhGh?QwOBi&p#vu% zfDc_2&f$D@-q$DZkNio8myk~bpwq5Fw7TW;V)Rg{rzgOr{KQ+K3TZx z^HAw0q0&LpA7ki$zfHtq4DVd$nxOzIc3P_6p4F>k89P1}$J45VQzNhMtf7**8nN{G zadNz}FpXkW<_(hXR+#CWSSq+(Un{n(c3b2NwaD&)|ggBUTU-Q>+056u0rp{nmX8b8pjNggSoO7w`*aY{Q-dybu}3x`>zp&G+F9o8j-A%%iP)2X z#=pnV3cX%8HqMDS+}^S=N9@c!#mXwL6|ADj9eXMGjc12T7T>)qkKPoB*ZV-p=45t_4@KfZ=1ad!#iOe;-H`5;X29=I|fph$t;jC+_1eR>%ZBSa-yl^uVx3k z(Dz;^p#-*>aQ-6t8;^{~3AhaG-}LZu5*E=Lq{PSzE)v*Z9oqDhFq^;rI6*OLJ<0Ev z0y*EXy29~y#X7Q&_;jJ|YTP9;c@8!`W-S(O$D~TLwa-_Lp_h9*UP0Aq+OatPW`oa; zD)oD0rIVvj+3LPO$6s99X!is=VBAqQ&jj}ToGPb30Ev;7g)+bE9$FIgx^%OWL{dNF zKsp}Nioa>?hP$gvf0Ro9p-g>6r1nc@$3-d4blEq~2?(6S`Kc4)Ak#pXbXgaZkw3_2 ziCf9fI@-VZd#b~_HtIiOy{bc_2|Cwy9an`H>~Vhtw&DzCZ zxV3EZp{((Bfj0ND`+4+Dq(BDT=`sfN?*Rm$^i}KPvu0gvs?Yoy76Ry`X_*h=GIR8-k z{4=*Dp`tW5t2CD`_JjSFeK|HEq&&NFA^W_sBW~gDBp(N#dxGrntm4uwzNsEv%Kar` zl5IxSqTX!t5Fa*Z9NIy_@+|1**AYGs-{OfF05i>&MX?~HI?@}gb~#4eMgE8PaU8B) zJXkwk9dnal&1xk!`%#XF<*Nb_KY;rYfEVX-olnO1hv#8k&Af<54c2$gd!G;Tww4WN zq;2@N?-U-xDak7KqYRi@-nQ!kRl*<(d#Xb%NNPH_!-WxK5q;31pi@}vUQ2w7Lm{YQ(dzSHyCZFs4zD#X#~GOPC7+dX>|PV~jQB`=N2 zDD{SqgWvP~V1WVA!S(S2#S5clE$3i21?p48;p)!es=!?;O_1W_ieum4T_{d^cDINO zOJSa<>n<{1?#h}yOPNzsO2^*)nfWtosWMnaAT+iK7MKd}`3B^M@+YS4fT8!+h4iOk zU`s_mOMN3PKb23wtDB#Ulb4@X@J1&Kz~pyw$9Qpy`Qj8Y$}rO3^bpy`BSIFQ3+Z(b z#HY!oOA?sfO;^u{I7^~~II&^bMfAJafUH4`==oy_b#>lAoH!6s37o?~dzs9!h`Ex9 z5{a7Z*m+!;Df!c?^738M@gty4*GwKp8}wI5s#(mvEsR6-aEY$#BKRv7Ak=_p0@3DQ zKDXN?75*#XBDms{p1lbzY45i&yf_wzi9(_El^=53EMICe$9SRA1gYi8mkCXG)otuT z`4Yh}O^pp<&p5v;H%~uysW(n9_jabZ2Bz8zOZFGV1w{nhI^Mm`+ZGzPl-H=}c%QWv zy@~`DFU}ce|Js^bI-_~6DG|N-2EZCJ-}<+vZ*{2>7ziA!opQuch-re1exaoY;*RZ} za|dJ6e8lytQ-uQpE!c$M-Gm4K=2&(5tdGDJrHWiaMAD#8Q9cny^U2~dMSc0ZqE-+V zA#VH{xZRL(yWb`3KtfYtz7Yq+$rbWbR7>-!5WXod>eGk<;-r*@HAnQCgdS3sb3djX z1Q`+Jv}$WXOd1Jog+5LajD8llnW7*SaXT&A#Roi;j>|1p$mio-VxW6QGOzDi*|_HJ z`S%)ze~LpPCq8a*={DN?YSeCVSsa6qX{ok(RWH-q;k^4Xt1LovLQ%;g51I$G1yYBt zsRKC||LK^HNdg!U<}1c@5Ei;f`}OFmS$&GfP{hQYib$ z?yF1WCm`)GtOkF0hV|+*Mij-|8FB%wOQ+@okD%}TrO1;nv>HAqyZ_umE<8YLw&a#0 z%lAfn(7}BkS6=ZqXLHDg7FL%?5{h@$#)FDJ#^aWgE^h5mMwwJ>8uhmU^HZh!i{v2} z+Pq6YD6HjjqWj0}4K5~44)2_}U?1GEv9R}qT1PoD+A`%iPBD&b8Zit$Wvu}|EwHN6 zV103us-9IJGpG0A+zjG9@5!v1TOCunjc9@#z`^}STsu6O0oHBX+=+~PKA1~Sp`9>- z9xKsFPK!x}hEQ46p~^p&Q?(#am$<2u&3!$AurLlV?=pb-LqR1G0+H4$6FN*?9#maW zFz4>U`y%4o{Ix5yY~$+N%)=$V{+NQTavDUuUU<@fj0bS3kX z{1XS{9$95-iE~>j{K51OKDO`O#z>9m!}3dSZ?x|!^7sK?N7gF8Un!BCKfTQ@0IoZK zprTIvWowB<-01pS)KtmXvmHdmi`+4Ly|yu7DK~yPTh>)!F`zU$uFNn8A5P%XesDBs70#Jl90ef|io=~9$ckO2TH^9fgS=Td-{5^9WnZ;R;t~ zU$^<|QC=pI4<-wBZdQv4$=&BS);Fl0pR|r}M1B1qgH66CYko8#?}`1!7tyzY3nm>h zqziIMV$6|+O#TF*XI@8){Zfc*{}|OTAzaXVA=Laa?OJay7z`#2_s0=7ePIiMNgn*$ z$%~y5h%8G*ny?ri5!LGMrnBKPdsfN3biYQ)#rbI>x8=r}7(Vb+GPI<_x$SHdx5wSX zj6Xky7j_YeHcwdhQUQT?vH(`9Mz9)r33w7eiI^O9#^ndt&u#pdBQN<_#;~u;(LoK1 zKiT|IscE{j9H#fs_3^{Qc9;KEOU4JfU7KHOPqk45lXDBeYzlR9nPaY2p8$;&6UY5@ z#GfcYBhY;RFMdNp?h?QIYfymOQ@)kyzwPbhG;y#*Dhj;sxL=-k_Vul8hy$fu&Kx%UO5&CqI2F>h1|+sW z$?!ot8IqE~lhS=!MAd`jBmmDG-N!X%sEpH{;NRv{;Z+V!ZtziyL{dxMeAViasf=-} z4G30Rk4O02tvj1ywtlQ2bblI%)qH01hg>!#Uqj-VHBmlg2rS!R?#wZ}vt)K1%?%sri+*=O^~TAC z%Uu`5Lka8rgt6-)2o8jg^DsaPn0U0|1biz`M(W?E5r7Q8`~(*RT`ydn+_vS%mV0+K+gYD8-U+ARGG|}(6 z^#gyY+Pe?gt|+B^f5mTivO{3mn92qEg$4ch<*Tf~v03)2rK(lg6f_+x zI(*J1z@Z0ONB|mM2nXkATP@-O6!DJtwW{ zh?7Xs7biOhXi-Z))OY2Y07PR-e|2*=DuPJcI66C1c++p|B5<}Qa;M5_9($42%nldr z{C;G9H7YWdMhSBcT`)ETmm3#M7ATRop->yBtsRN`MH~WDJb^%afR8j+=jpN3aCVh} zE|{!j`Ue8(l+=qhKJ2M-WcTzs>r~%e$t;s29u)I3d7RiiB6q#$()qI^7nb~Y{Z4cWU zF$8%QA5W=)tDo%DMWEI+c3y$pN4pO+#zb{4;l;bguM_$Q@bEyA;>KsM#086!`ZjiW z`WP2Ju#}2pa0z@fi~Q%7fow6dWvzjJNpXTt5cBbQPX?xvK)%es(lOC9ksU{?C7q?&3Ff%R^z|#%xs?PtSZ9?4|e* zx^hhovYLN*JMoCf*`BC4gSTUOhmJ85H1se%C2nVbx@`u92QP9xxf+SQ44UDhdv+k^ zgI*2?BtRCb+|S{25wAg0=5j>Rv{FM<{!-)0y`b_H`LXNM;LG#^)l6#;U^WJPY?6Sq zi*_{kyU0vmA;s$j_6#ALvS)`VshtuS%398?E$Y;&W%H!ID0UHT7IoFoIw?$p>ASfsp- z_V?=o{}V3Z>x=pdxo6CMPI|N<7kX~B!5cCvgXs7Ej9nAM?=6lWFTtIbSYHF(P0bq1 zzDZ!vd?Y*Xd_E1B5%1%s03aZIkMU_>fzzsgz2xZ8f_Uc1sc1%1D$kiod9z}C9OBIkdYffv-H?@3u#c{qBYg3pD5KoT?GJ`Sg?CrH#*Gy?>1%v_=W#qlycnG(3cuR`*!uH1Bw0AX;wHG9B4;plyXr^C~3Iz66*mMPhEcAA40G3e} zuWM1Pwnpztc#;Sh6!83qF6w96hHp~a0O$eAI1E&`Oa-!ZV`DMa&09YXc*|vh1o*+H zPRic}XE77yVUHA*?mu=#45z7E$hyuf2>VBU73@hCn;b4^s(;V}Jf_VUpSJAtUYHCd6mvTQmnAD!?d1k!1?yU1_p^B6! zhMYk8XjiWDBVo7H{dLCrHC$MzhQCD&R7{yl_c{&_95~rgrg#dT3BY-89c*;j#)THe zo+O0*@7Nfp?ri{G&h<)KQYoNRf_@eh{IcG+n)p=wP_O*Pqjx-+J-S_ASadga7f>Yw zee&+kS3FiAh4*k(exJt*D0H#=%#2<{?%HRT3`~gB2e$J52You_^1a0oSr8V@y4V@H zVD|#bq+;PuK5p+XBUYBWZF0|mTp+W$m+2J#*Fa5ty4Sri8$yYims?9BMkD(a?Y9@# z9u2OlC5TaZy9f7N=PC(|ZBACo^y7T#bqff5e_!i5-!DX(=xuNWd1sPU*ybp3x zN$hB@Zasmk?12T`H$eFcxCC#<^9iS0(r-MLr%A-W(uwVI+LYAM6~szv%mPERORDt& zxFVIqErBS9-^dbTdQxGW9O*Z4@wYFUFfrzW>TvBK+ z4UfVe1YG)srzD61G=dr$_?s(5o5a8KziS`>T!Y^JdCk&kb5pa|LBCL0FkvMH+@Bg$ z?=p7&G9?(09fqu5&zu|`JUC0qkt5E38MkwuzAN=i z#f!47-pA#27_6h&FTKUN3up_`$OcV>4!yD<1kO;_bb(AD(lxy#`tN5ZkTw@M&~}|z z>-zfJf7p&A;MBx6%)@~_R$&PVsUZf@>k-eLbEbT z7B1R^vA`(@S#(keU9$W5%x2IH{JXYnfoU0t4ZEZf3jR=0cN^OAEuz*J9{_mWYgh zdw41%D%5;)vc$Xg^VjKl$d|{w9xZaNBDg<$AxtxLfee;Ev0q65KAc=feKu^~UGdV3 z60P(B2GdYU^}hPJce7kro(`lrMIUnNuSojK+AA>{*Uj62j|*%kILv zWyX|G&n0i+dY(8#YdqhLJswA%8_b}&NRdnlXFeGjl72B(1-=o>ADgz;EGU+N{d3NW zNp!-;sI(awj+mSt?>Fzh zEY5kp{t`+ivbt6kqM^a}7^=phR>tEAX?`o+kU2MI)~F>ABy`QK$n zul*TFMl^&=04fXH3!N*Jy}3-oXxCo||u+lZ+^_u zGsNkMMIA9Afk~2`6Qq2{^;+yzLW^ON3;TI>zr;18)G%|QJ9shXS3ZsR9 zt;7Z-gU`_Gt}hsAG!ti8fsI(!13LU9NiY2j%o<11nYZYcU3NqFC9x2RK-;)|Q+GRq z;o*K>M;k!=Nk9j!@Z5OpRtKx|?v~D@$E2>UZq``|^D}^umjyV$;ta;xGdz1=#PzHJ zMq8U%ct^}Pb#aFNMz@uZF1Hcw8Ao|a2%=|m9jGq%sjf__}Gzt7SC)JF* zS`^@_R{&`7jWY@DyV3Y^viI#h8(ei%jB(9h%zkVad1fvhv#}j67C|{zxHSw=+uvJ@ z#|%f>)|Vq}Lw+u)P}?+BZ9X9jpZ4BGYVdUFu`x?w@NyeAX#|dIRi%9i?;zE@r1EQ7 zUo;@%6!@0*!jJl-{ULHa!O2!HnM)fqSC>?0m7Vq;V^{rj+N(rT|I@a1#%Y5^+6F5SmweEK}`7gE=Mdak)u!AEg$<(y1!rHWe4^IkKEUra9L|i{uOLVb4 zr)s!9ojc*-Yq=VGC@v(-_%GHtEhcj=`%sv3UsC{h&i6p3&zRbcSt(piod~_lPXMqC zc{gH0L6^nW9r&P(UI#Kt8k5&NB$6}}rJ9fenC1tW|6&!gr}<;I7@y(+g>zm>5QM8^ z5{1hR>?r7`Ky7Z(8#R6H{_68xpfIGjx87&B$dcBQ-9^xN)SRVcDWayVid?jIyYVVF zJ|TfNXsTE%a=li+l!LX0S~SmGODnXF4h`@)IJF$7W;xIkL>tEUE1DEjpQRg!rVN$s zjL)5BW6;1Vv1mF7c)?Z0LzJ`&tL~rYUG(+44Xk%N zFab-a(FR-&F>2||v1dhs?XSXy{dr@U{~(%Ns8d;Z+$~BK=$Lc4XVlRf+E@TINrr4< zEKJHCowLn1}vF9evGaVn%XYp!Z=S!O65 zr>Y?cq(&zLxOIrvKqQ85^U^v1a5NMO;>6)x*YV(g|E69K^*1rPHwEyY7O%_2MCTlN zio~Rtjl*^GB#$J`Wn^HM*ZJJ(dQEb(fu@?OwzIAjZerptUC4!~(|t_qZ_}pbsr?J5 z#7b?|;-5g}Q@$>HY_ExGXtt~>TS7m^x1Z7lGBI(o4CsL5%rVX~8tSKOGAZJb3po2Y2*xU|e9!SphiXml^>qq@5tQ~K9c91DV# zd)7~%`iMsLZ=ZSyQvuA4l@kx3wS1cerE?w%h>i093|YzI7dkVath_h1$CGd3gKdxC zcRR%ux^isH_VP0MfZcL^crCuu776$9R(fo!Sn!H4YU0ESv$a%;K{tgwpPuXev5Gp< zj0U|qpQ};h#e5F!^;;}c3{oA_?ixe^k-50ta5}z^${2m|pD+Cqh!~#;H#Tylh(XSH zb?7xTl1dVD1Zp+!(>|NQbsJ^ko?8fIP-t;A`=Fyg27>M;HO8{#M0E(*4oxs zB6pg57SM=RxK=lZ>087dsV@N3!++-4*zbrJ2GF(7Lfx!O3dSb`lzRC2a6mKYa;WvKfik&6bB0iK+aYVpc-aZmnJiA1uIf9%d2?X z3dWrV4Ua~B0{Zo9q_^}9lKWq#s0)-ohVJ2c7f(Pe!!YUd6>VO%D36tAb_|=QiTeIh zOKa|lPD@XMBET^)o@yK>_OINjAmrn7V|09Bp8O{J7-gW6154v{DLPrSsd>`E6 z>DN}3aWyjfpkm}FW9g{xr!OPpsHK&U5{-^WgN6TD>+EB^?h6`ClU{cK2*i3$6n0HS ziy6t^zbDzb=I}~fw;4oZGQVTq3&*oG4K6Au&nw^-c`JcDZZ7&QuBwtVZuJHu%aA0Y z-`T~byrRn4#i6{cssew0el84psQ?0LqX4RG(mvOMp0G)D-gh(7AvxcKoZh2eg|ECTLw zc_ZkCM9cy-$AvDH0g<)@((7klfX&J&H{PT*~FWhIx=zV*D^#(ugmduW@a#p zY$)iwpMKWS`8=g1F+t^UgUW6Ypu4zV|DHJk5>KEBix(akP7wA{hG?tm>3=gOplI*- z;;ji3s_^45nQIbj)@;d|KLKf%f0H7%vqJ`$uX7t-Xhp&#wECJ@_LpDPUrTY^H$k># zUWr>-qD{}8+(?LI_C^UM_*rTKIa-^{RGlcUG_F{WYIY17nGa+DGqLcY2JgGdjJVDx z&##t$(K8l*J3iG84(i)zv@2DGii?}qOx?PJTICK<8;k|?PtU*0Z8$i0qk=4~|H+Pt ziI_1KmKKjkHkHUw&JxjL(l<%@&6}{(0GqUCV^YmUaQ!g5$4PkPrPhCOD%QS&-aMGuk~pOli46c>|}l8~JB|7dy(pt!oG zYjl8+5FjKFT!Xv2JHdS*I0Sch83>XP+$~tpf#B}$?#|%u?%ead-~Fj6YKp26_THyY zcdylJQOh7lSXu5G?(f+guVG>kF3zpOLGpazEKs?U`gSe|1)KE+!CKm?shN*}W=!WZ z|MtBnegZ}xi(E`zR8(eWRAxa^Ss=NM5MtH`&(%L1Rwmt7*F5Q3XM3Fy5$v`Ie;dbM z8_e)si}Mo`wLIMIEyONdeChyw1Xi^%wK*4yaXm=HW5qw_ZdnnG`tX)w7zj)h;T z|Cd9Q{bP`#&^jFDH~#eQR+hI-9IV$_S!il~9q(>#`?8)E_~_myXqs=iVaX($_x&Os z4>*IK4O&_$z!NQ1XzmVX`e-|geDO>)1$6EZVA>0M_vV(go#d-R@gp9zzKi)hbx{Mu z>f8U(ERh(x?TEjBEE~^4cDonEZEV>UB3 z|5nya8kDV6WZu_INpHvTeiNR&yK3!I(sX~Njb-%(Y*kk1U!feYDtskCDH%IipK;U1ePj#?o)X;}YHUqh-Br7j2!p;#ITp zc^^qnI30`PM2+Uz&+qf%M?*f`fvSl%)-s^Ge(c*z&H$(cSN4RzvwfVFm>TqHac=19z0(p!9qp5Y(HQpa#aTbf%O0L{A9(Awh2u-K#4rp}QI&e{3<0cu&_Z^@v=u zohskj7d><_+Fie}rSk^&SIc$#G8+VYIl8KhT)jJSM%u9^??LF4f8=MOI-t!wcAHlW zrOTTM~nkj0WB8qQY1Wbs6?bgHn|Ijry>hh^T_N zq^7{OIysB1f~GKBp>$4iJ{{!}52>2l=|mIm7cIVs$t-dU!a@MqJ1+ki8VYNx<>MXz zfQbJMm0(IIa19R)-R{LaBatTN35rRBRZJ??fdZ-ad|wwA(g28%h*|6$-Fv&ex;<=7 zbch=(e2$Gd^YD4~|MKdeweh!;-@VlO+6y7l+ZDCW$z|i)FF-uS-h%p_yOQ(I_xcEN zBj?Cy*T`rko`vMUmaDh;$1rY)_!$_Pt3Dx-@wtYEADtX;zO(0nvk15#NpEY}M`+Da zIvu;I3aUlQHt*vSTx{aAn5O;@=XZCp2YT(JE#73?M>hw{6s_|Jq|?t`nM7UhIPN4` zG$KBA;{9u6GCY&O*D_@fSp44jaB;77#?;~E z|HePB#rIp%D}d_%aRExYYsq2|$9}-#OC|WyTV=`03S+S_lXh{yTiEf~n3`Kyi3MiZ zCfiu%TbQO>nAu?v1BNwcF?azngyzPed)MQwF{8Q%F3b{?h>>c2ekMp+uFZI$vood8hIG#Lx@Jx*(U!ia94Dr68&TogG-uQNQcq*HrdA2QM$~$ zuP*wnpcK>;zbUEi)L*oV%dg36JQ}@(8y26Q;CQ^42gopiWr~7pzeh!%?YW!%wmBXq z!m&_P#~)b{9$yhI-^rFGRr0(tT*_?2G0SD!508#6CsvstCF;`A^yL8AP6?052zn{( zakydy%YLQ6tF!hTOnH@*H#o&(pIAQUM3=#r%~s@*Y{yIh2r?*P1-Im#3ke zdTzFc)qUKW6N&UsZ{Z>QTczBXIjv(PdaFR=gx@+k$p07-TQee=(EO7D&%oFsj*Cjie>hmk7`Xnh!Lm8N|V>w?!@$=r0N(BBF zZ%A>a_UoPs|2NF=zco&(V;21cqzM`NLL8AIz%d8zn&OXwi_c)s0|aZ>FKy;Ki;hXZ z7CwUpmr~8smweQt50)GUOLe80yzX@L^j*CRBg}sf3xf^HJyYlI1*MocL zZ=_t6!zXX})u7xjV2$`}u*|+qtHwP(R8@>r6lsDNNTGoeUjzY2M_4{8*&_$XCZ-dQvy6N_(169sL5RcYUb<3arYZL<$5otefWf2J`P}_y4wQy5a)MDBHpBogY`GZ z>Lsd+w_)NMtLsRl>DrFRP5axHj;wMw)7A90l2(J#Q_RPMO%Qx@Ctb3ThpV&)Rett} zT*4e6*OxT5vluUO)b{07eme(Gnwy|mB~i}$*CemI4hdb|R898}(O+pV*QAWBKkD>_5(?(xOB?Nr#jV>gnJ zkkiv8(-7kB{BCI$XdZ<|i+)wM;7FHUy>ny&ux-*efD{(6c;jDy&a_sc>kj`FvOLJBb)=54I|U%_A>vX`491mcLYA~?5v{A$sWjJ z2;h;n)!hGIko{QBV1q7JR1`aONChpDeem&=-om#y0T~2VR?F}5KnkO^i(&2I(8evM+01p%XZKueyPx^3(BdG}So2U^{XPb!h4 z`Y8D`l5pNt;#FGbP%5uP2TdqS@Sj0L%;!`_b#{HK4lTX;o`cf-F@t^S_Rsqp zcZjz`RGY0l>xl3fZw$osawSNL0lZMjG?$-OSzNHDWKT(N^3HU>#%AB7#Kv}f< zwu--%UG*=387-DSv-bBBjed{S9BYKl}0ZRLu@RaT|oUNvF2g?f&&RZWk{>vBJQ*q43aW>Zsr7T4%#V z+U!Ud&L|hoIxpwl=Fo<=6W+(Zj^=hx?fki&OYK?29r5|eWOhuF7|#818bb} z_qf$*IzO-9MPdK1(y9F6AhUcB2Z|VFQ;n(J`sNV&)STxNdnJ@-eepVi{f%Pl1c|-* znNG)8YBde{=HTk^kT=H#-I9M{q36<{&Uea%)o(Kk6XRL$A`}41h1DNzdoZnzKZ`th z;DBO{wCvDx+o@Y-!;?RS41NNir~2@}fxyO)#}t01oU>cE)pDEOR7y3p%*LAg+t1vm z!a7ZsupL;W0)g;aP6|2VlT_Y~ND0dyE0#TUv0oJEV%iDe!T8|r60o%4Env?9pyddv zc@Z0%hp$7kBrbeJIwl1i$KR-fJ|PzT4)n(EPA{VdFS6$w^o=XRN}msIg`<+$YBgyS zejE5L_-yW6D!3cd{^GA8Wf+6k%(;4{? zVm+i=@;6ogb}v*(==u9(z0t?bli(0nE>oMa7>fJ3nCGV3rwQ|o>L_YOb~#i9_Q5$~ zQj^`Ihpv5V9!1~%yX>u3^HZkHzp_mr|IGc2>?TqC9*_j9N;!&kL`{?P@vPn)cU36uAz!c(?;mb9kJV6*1o#*Qi!BwAt*)D#)4q?sY|on7gc)e= z^Dsy<|7PEaBS}|ic9$o`TBt>`6}}~*heh($5;6jzXv}TS^(<1AiBfg&elDbQtv|T1 z=;~Ebx4!Kvs%!Z>Am*9ORkS;q(w2op=~}v9);yW*id6DN#!+%ho~j4IXo; z_w}D;_rBsRJnxb;*HQ_9C`R$*v*Mjl#A4ZCS}Q>(P8z397W?p%`IA!e?QJ~bQhm>l z$da_?)(Y3dgU}BwO4@%tjg#J)zt+20q~xS~%G)?Oym}tiWvW7_A0mq*E6(f)c#POn zMm4^x5~4BV9H!FsP{3n+s1Xv0evpYydRXt&NPwSm2h_W!KhuDVKI2E&SzD8k+={YK zX>^usuyr}b?Ax$wzJ_aZ*D$9E+Mfq{*JTL$ssWk2#bY;Gw3B~ z?fzN0uB%LibiY*j<$Y_fbHDuNw$?4IQqiYRZPV;vzV!nO?Ic6kbNj6RA04y*b4-)D z640_}j@_~LJ-3{3ySYJ7Au%pcAfU$%yTX0{V;ai|P*S)S&l$5p!hJMvum6xrstEjP zr6!QgV8xF6mLw^%>xyX8-678S@68B5_rUG;Iwb?j&o#*cFFT*D1#3F+u3`?1avMw8 z73R;JgfU2vsX(EU;1o|63qF4aqb-c>C{ik;mb<|#| za?z~4FsH+lRjbIq)2suG{FL+(15LKTz|ebOce0(qP%$!!xuXmg!2LBG92c3ao}786 z3JU-X7L>98)&QXDB-{hZEe}UBDJtwOmW69?^xPe;yRC+3%;xJk6we-WJvZd{{sjcS z*v-S4$v*X#Eqt3Z=U!;6-!{#MeGt|vaSw$&Vt{sRS75oW{8WAZvgSPX-ZzB2ew)Gk zGhQ&dTy;bAq*3_xLdjy#myHcA#Qd=+hxZbyQ4^n^AJ7O{zZ?4bl@gPSMlY7}aNay@ zFg0J*M`Pj0h48$0inV7rW}+KL((>&YtjqBuXAtjYe)4d=O=z$!V@76__gZqD}?}q?+@L--W-Zwp*bB_G6{_T_nL^y>Nz*vjz zpTRrduj)B2`ei-74be^9$jY@m8Cc zPOO-y6X8f7Wdu^_%z+j=b$#vre8uZ0BBhBVb-;ssh*d_{;M~68^hI6M;D-Uwyn08`K*i*BcWh1Rt*|5kPsWj+=Mu!GT_pR@?0L zp_|j=vuV5XFPP6oTmOD0btZlINN}<%)ZgbPD_soX{)dh-_+lq$c)1lbdGBUQVnMWSuGQH{XpUsBH>cMHYgK*8NV5PBiYd@bc{SE?oBm^GHVL;-KfYZmP5&CZ z59aF99;63=)PR)8!-V8`k$fuy@vQOk5IwNhiPcuSV=%T_)gdo)Gyn1o!(y1n&(CRQ)MxGB=hd0hP@@rk7-`3go|US@OS1@ zhkcf5`)R%>$g4i(D*waAIGIkH9V4|JRbpLDvswR}<*l#g7$?Nr=9H;C+}8vRv#nqf zvS59p+gR*fI1xmyHDf2_sz1-4-(W~C_ABusd`f@0=?r2kUbPf29bEDmmk2Ys1j#`c^7tXZRZ5G_UD||OCdLs%|g#Y zt_IzQDkz#oGY4lYI)l3FYFEWQ-jRfmIFB1+Dv&^{7dq&zLV6YR#x>L(>V49dTxZ+n z%`OZAf_`_`&~ErJ{eKO%9^ z+F}es>QBG)y6!eL9OyTf(`BeFirMH1)|0jW?oDu&Y|<>ee-h*isJrzkHqn>hzP+Ps zsAJ{w7@{>ARrVLuKJ@zNc^SL>H$T8qhG44rE1HCGWY#1eV0^p!xHdD9bPg;Kx8?H; zE)!!10*IS?*LDj5BW1bPTo`0AM;|Uh)#gj6l6;xohH0vwkMih-xxJgJwdCh{9Tfz5 z`K0F6k~pXGwKihew%M0ChgJzm^|yR`%WYru-QgpApFJ{eooF02n09OIW;k+D7}hiv zo@Lo&C7z+KCgo*h6_(5nNolA%dUz}u=bZb)j|$Bfpan^L-1~Q_d~0-zQW>P^b}E(~ zP^X*~;a-C%jt~pEw#Y}0q|e(A6}^Xz#QnEv)=}P3`lbsmxIGnhl2h4?jU&lbRuC5( zr;&HzRr`@u`=yWP2ZsGd`ofh(&^l))?a^d_4;EZ$cA_%}BvUEBl=7>}k!{*>vOnA* zsYYpe)b@Us<~=1JGWZQ-4aD(uGhiUWg%9{df+NRWi-EOI4Ypb#lZZ|m9DDian_@qO z-SU9?t;q^qBb|sMib#0bbAE3yo!@O=o4HMdE`5C)W;MJq1Blwb*p7%JPy=c_4|~n! zOl=&F#B-$!*{~!8k%NLL)3S0C+bXvX%*CYJF)EE&(5Ks-?Vi9UjuLhqx0BkNJ4sNz z^9>JZc(uM5oRncBPR^Eau(RZIldlIlJDROwOR`<5NverM;by+w8Gy8Xc$`RZ2C-PJ z4@N$}t@sczFV#!b^)^bo93Dih$7|rVy;YN@U41HVTq(~`BE_tY2m*WyQ-2n^^x7|d zeDU3WDd!CXKG@96mL47XBvY8P&VF}NX=;f16G*5v93GUSj&b|YV1MYQpk4QPchF#V z*_vMuj#HV@>+Y!nu{d@7KI!Vi)%iA=%)s2%Zu+h@btsq8161#Rk}C^E-CG8$Ar5ch z-nk$A)qtL4GB+uaw0frKFSj9rj1x=mFAg3NBlQ|G*9Zty)r1d8q zeh`MI(NR>;CnU<15av^1zm+^472bPEC;6B(gC{yF$EnrJR#G)imOLJi7Uw)$o?vVdGVGwj$7j|w)^*a)vdmO;EcKBN? zdvTGsyU*9*W>yCbwamfBtaa=yPRkIavNmXN7)Y%R5bBF0#O3w+&WU(=;yZk2&<8%z zjoN{uH1K|S2QOkLg%1*F@UxsclCi339DcC37HENQEz18>={5y(E2ng#9EYK5Pc z5Sw+}wA>!Z8-G*s2ZZ({`r?^XX4yuc#P;>`XX=qj=bo>Z>^px*GsdcYK z>;CyCZ0z^NPc`OHY6~k{6c9#C`4zkl4z~_YUF^__P7TY>Kn^*;m3pB@r4hzC>`D)AI$I@7=6n8n zErcnoJPiq#9Q1o2a-^H{!TH0-VGPo@QAR^QI3v73!_bxVyR}mY(&x_!0?wWxem@mp z4x1hH;%Lt2SE4QAI*VFq=ZJt*^V3h2(~s$mdR=gHbQ(KSKe@*aI6Te`nnqENW=1EQ z?ZyWF!I|(8e7*$S;aS>_PMu(Rs&w&AwC}V~NtK-t8l*FYy<{(_816}M``{@yyu=-K(&p*% zy4ILi#dV?@h!0X91nlA;PnK`8>{`Z-=HnA$T{h=Q(|`1?gFx>LeCeezWubjT_e@&6 zJR^6`OUYjh6uzr>EzhoYPZoXQr|0LqKi)(_jyRbR5Gm16E3B@I`3U$Bg`r#kk!9HC z$OXBQtoqHX(1D|!7aiyyzF_^ZmM5O&X%6vYH7cEN`S8$H2^)-?vCKF)13p+PNxB>L zt=HEe4qduDvWKgOdATJ$KD0}MXa0<{?LOawsjxA(F*etaNU5!1!z|-+Hpvpv4_Dux zM#Ot8D+mcRGySS`fBf91#FcT(IEetvA!w5@q)m>kf0?BIU5{|>#2f^tMZ&jd%1Kov z!^Ws!9%l!WB{XPZ=UW?6?n%sgwF=?$R8mLztE23_SEUUO)_H4RU;%GSbjgn#$bB!eian`@rf3c zyfhCdVyBG^LQSjcAMB8cD-ZL$knXd_K$57-XY`6n5pW+`Rlqp~wJ-G}fyOcIONE_F zT;@h6kNJn%KO+Ix^BaGZNB2Ze;KlDj`d^nBeU+#9+6O0O`gq#p`ZwV~K6;9W`#4CT z3g(QK2%oiW5^0JUX_Lw%$QtmDBfU=~oOCneCcFu+k`GhMYvJU02U1; za0@p6{rbu?Wn-yH2ez*L<6^=4dt-hn=Q)VY725c3BK;;B6M1_SQu_8L)p*tfX{4dd zI?Yi$|Ki_Mjd?Fheus)43Tx3$BlcxHCc2kgwvW6;@E1Q!6s&g$G3egLaRf}jT<@Z`Q`KC2PS_jk_#0fi z`jS)-7qpO3H-YzuHJtBO17_BRGF6lGEzde|?Lf-Q7Kh>cn$|p>>)He~;QEVkWU-%+ zmilo)8LRcGjlQBy`pdeYBQd{%Nc08t1l@iy#Q^^bP|N|^7& zmmvXNo0%)ER2$abeUpEE%|U?f^gi$f*Z_f?p+W@f#6e9(3HGqO4AWEUKduIsSEnjhnfD4 zS-<>5*~O;v8(Ez6_C&?NRaCQ_%EJYoZP@YLN612q-Lb10;O9 zmaD)IVb+nNM%zrp>~@1~KX3l&R~SB?K#Bxn^;rw;r&0xbX!n798@IQT+T!T8z(+*xoJOAS3t#xnrJ>59GQ( zKu>P>0GBvJWKY<#w-%9oi13v4`*QIwei8#ITOF31D@W#6jTKkBrPOoY^t%OAR zU7wu*-I7O5=G8W@ibz&#fo4KL=`TX3hPA4e@iICz&vi3VbmBjM3&K^`z1sp$kVs}l z9ErYAQc_H<$$ZjqC8U4}xV;3uR&r_Ue_aW-f3)6zqQv4u6g`N@{b`;-l5Bsn(0Dz4 zOqrJ|2_+%6!!J=aOi#+>cC^fYMg||saZgh3&d3HUTt=ITCmsk2YNy60DHSV&p}N|a zE$#*@f^hNG2HM4;0e>S)>0&Q3q?oF-0sRy%F>AA)INK?|vR#Jx(bTL|C}8@h4o7+pDHGs%qzqfe1FCBSdsv}JXi$=pnO zE%kJ{+L)n7OGiUJHZrjj{Sy1_ZHQuqklp`wq3P9fn%> z%P%T4CUi5aBgS{jltXBLzQno^Wi@YGbw_KVG(W*BFq9xkU<6CmxnJ+`Iz8ow-4Y76 z$dy%>JG0c5zX5%gqbJyvN)6;SUq>iMV$fW!l=djbyg z<60!k$0Rou5J^%x%h7;P!hz5YwTC2R@j#t!)=9MVX*?1P9}FH zrh@xY8hW#a^aM4LFKa}{bjp7p$@|8HLH;B3y;1nn3*EnLt%mUgc}%7%9YGFHoq?0|AD=jL zzEVTD!tAU~A8voY2Yn(+Q{S;_{C9sJee_QOZf&4A3UZ7l>~xa>4Eed*VtM+B2WJZS z$F)#`Om;BUHwW5C|yWoQ<>BjP2h7g4h)ix8$u{0>~K52N5NARuj{ZPz{xjv0Pn7|q~U;e_l zsmI^a%)KX6{oaD0rmwNYf7I!=Y8l1S(6qjetdTW@_o+}0{q&FBU8vu<*u7-Qn z36>O)&*tFf{DNNdtYK+q6`dNB6q`}dqPbs?D-YV67-+ld&?kjs`M4nr;XG_s@Yfue zOZ^TGC_fTm)SLCuIn~M^tzM2sd*XE7tNu_&rVsn=QQ}!G_qg-=B)Bx3+o|AT%Mbw= zdKNq-UVXrekw+N$CS8LM!o+|}u`GPXR47x0m;L{P1OgBwSb-6c_nAVI5e$^N&o=Gv zK*&q;!!4!{m-Kw41}%0|1$R+E5n32&_;5wUlV#p!>r8cytb+JPwe?y}%GU>v5*_*X zg)@NNx!GKjfIi`BkM8t2(PGVqMp&Oq21Bw0XeZCM`Xu!XFzG&H2mfnTjittNuCgyX zNV-}x8NU)_l=@eCA^^pR%M)tyabL-zzg#r^3cEew&oPj}vn&~ogZB^D1cB58oo)h? zl<7=BB41*PS@Ro1N4~E))PK*Aeq@Sk-#Gy}tnW<8E{jdU*T|Er(*^6Ab<_c|l{Zh^ zYNnHXeWJAw=jFlqeD7r?Fd20*;$4{;157P+$SEusWY{nI*j)p(0{qoB9X#@65kXF& z<;!X;q0!R$GY)BH02U%%f^DMdfdB{O_LemNTQmK0#|jQ|xr!Hn>uX2=jMLB9>fNj% z_yd!b$&P9--l3w{~gQN7zoe+*W#G zWVbIAJMIQ_`R$};!dg}YY;DHS(jhwK%}+B(s%;cNurNOsG4AWt(==c&zgNvle>~p@ zVuzEFWB&ntjLuKj_?oI^5Ic;mq218DBVmve6K;G6FHu(t!QcS&%fpSHd#7gc`;v<>5gsFfG;9~AzR zFVUpiTA29gqAP5@`W-o?(ofHoGL|r1SCO#I@N1sk9|1Pf2UpG&MCd#0Q{D}N>DBS+ zKhk7CoBN8G-E&*m+~xF2J0x1u$EPcmTXXDm=~-zv+73)W_hZ^gR{q9j?5Obha-}K4 zp8u33v;z*LT)bI!+EnM3C6i;8ZT*rdP!ib$p(RgW;(G4kEX#nX+>07q&Y&4Bo#fOpjAA>7fI1MdHTj9fwDV zMTH1zsD3I^4VI9WXgWpDHDb9%RWDZetVmes_6Kr-fSYXf@U%1_g%m^72TD;5TE{!O zlNTsCUElQZi16_}mJTF+Qe2+O`u;$;K#_0)Pzh=C*O)=aAdVv8@bHk9u5)cG^YA!P z-zzhgqe4%($-z#PMws}g=Kyprg&{-$VBezlm2E?aL92RjrK|Yq^QT-tbmuA(Tl}se zSsU)hXoWE45z&UiyZw_CE&CHLqRQ@;r68+DPGS0U=Wb}XcORx|jBVIB02f=?a;qMj zJc(gM1XCY0X6uK_!1>Rgc_p+0{&-(FQ#uU++5Ticz7$@bl*NU(LId#J&Hmzp%JkzV z4)N1uL3*Mb(F&jaS~tvIz=P9!TS%ekT!+2yrq%2AKBw>_xtSfEZ?kXKSa?MXfaB zbAkLjIg|%YKv{CfxKvm%%3#_b9H^LyF##>+qd&h=wtXQ*`k{^q)P>>BDfVLOH$yWCNA^2&5u9de_|4R!x6(&$*V4yNSZyT3BtUB#O2Z>^X&s-?lzK$2Rp z*^JPG!J{v0$y{qYa&1kvZI4njOsb zHQY3Kbf5m09W7I*^zYgGwP$me#7B0pdp#>A=X$*L*gW!3oN9l!Zq`ZM%hmTVAdZ_v zz&GhnVpo=$Ui!bUsCyh{4!?G;+B72zRA>Qv=KjI;@5r`Qi*-be3>b1tZ#;Cgrq|oF zI75ax;^h!M$h1gjvy0T}C{+GKDDjcyPHR)_?fws;WQnIM!DUPNZho4am~IdMWy5Tr z6>K$ExmyfL+U}P4#{F^PJl^%NuGW6V^;QUNg9 z!P<9r?pF;p_i>jDwOn#hMW@bmNE~rSFNK&+82Rf2fF#NPtg7$lmmGULZMbPq(pk1XII;;R`j@p{ExvtI0 z&ASD;+7-Ubq{Jv`M;_hR6Vd0Uca{z0!SWBbPOmVk+t-O7ry8b-yx;aYVS=TCxn@G6 zBR*8GG}>rk70xRkNf={d^vc~1ftD1zrAR{gF%y*W0bxTkb%tL6NAcm-%gnir*U}h1U}Y{+H3dWgr&KmTCTDNiIr%clEzr& zX+Xal2!%EJX{in$V=VgaCJNd_2DAo>eR@{@Ub*|YOZ_$E5lwq-!TC3pR;bJy74O|# z!M2?#`$YFPEgs#3nlGBg;D%FjAnuQOc>gpr+*vmIrPEK-SOEs>8JwDQlCjCnN#%jE zy8p{ElB(jwX_FGu6ialHrKqwVMu(*mWb^LDpvqg6)Oet$#h~kyv>MyKihVVR)i(o# zTxFWR;T1AWnFrU8R!fs#Ve8W$)bouTr36xXyIq$2m2$JyfjEJgPt15O;WYXvT~NE% zMg2yU4&lGm>YCbJUieJfD)o?l^akYivhsb@7EQU|)xL(yt+RS4sdIN2n4o?T7igsl z@rseo9VK1i|LKAg8Z=j`FVO5loFRXXW_3E%$QU;Q4FE+qN(UGLC3=gui?Fa@p2DG9 zF-}Q!`9Ix!Y=l~Lh9)xC28{kL` z(_=fJ1P2E`#@hbpGo(CO^f%By4>zL) zZ#_I7a`XS?xmc9Es#^}}mqnHi`@QxrYR>WUdIEkoWa+}Lw)Pq z-ky!{7L9QOd$kR6xEwOmKSV>ZGs5dNtc~tW~4*1Qh*^MyKt0Ix7^S`|K`h-DU-A zQx*QV;NA8SLqGU#Lz;nLP!G6RZM zFa6|nOKaOD%Ic**Dw`G@SAK6r0giu3WJ@zJPbhq(ePhFG^f^X8&}!Z#D%1n2k_0F( zZJPS9IoTX>TcsN-zd8+3AM!Q$%bBSc7ODU4`aD=t3hvLtqSGj0RVB?#O4s_6-Z3=F zFgl8fwS&@txLj=_59C7dF(yUb@54~`2_r+(1(&+xO-+D+X^M{rjW6nQrV4l{CK*Yk zfQF{~Ug|&p!*56+%oH{?1n}W~IrMahmXFWllaSsxg}bdf9Y85)awly4(YIM!l76sz zsPV$v50OSiXedvXH#f#0@=6$_d=vj)dfVOb%=~}`2LwOV|1Rgz)tC;$-z)+OF!2BC zgUznsk{9Ebao>+ZAoqB2dwm}d{DGk{c2+hkta(10UIB0KufBc3Uuwd{ z=)4-e&3cCjS_82?Zc>YQzeV3YoY%@Ar{v0VtvJUSW1JAmgrfGL|GEii2?XH1a(kKt ze>PF{8nG7HZ4AB1K3Vxl>cpwBYV85Zp3Y_tQM)1<=7h8qp2Z~B@4dhNhO5id!GQ!~ z`q?uyy%L^p?LZci4vLST?YrMk-dL;f}M`q)?OUr0-VoaTiyLIV^yPrIFxhlk5~mg z_`F@(5)Az5R}t)-ORO5Rj!x$4Jn?c{;H)-Ld~Q?ERZ3 zgP}g1WW1Nw>n;03w3Tp==hH;qS?q*YSdD%o!M$7eutExN@LQXmigXls9gg@YnxZ$t zkIu7ANRRESz~`xK{k;I{MN5Uas7T_-asX)C4EM7%B4S_6v(`rq&}QD99J9l5L)k z5BGuO@48iKBYJ9GFUuXADjcm$Y>c2V<(N~93(u6y&uqewLD{G7kpZgDNTZ`ntqQ5P zB*HVRtLU8HM53KcTN^Gt`qUGldUKrIxcOY5FLeDrmADil=(8lId~5}JRj<-wFf%^(`mlK-tW zjXZg3Ht*2#YG;9Mj$&6zzMH)ByO2;$G^J0-h{lBBAH)BMkv&hJdfTW~{is%_*Q_&J zsiu^XOXIf`QL|5?MX6iyCS0kXig!hk3V)`I7by(&jIGf%iZKMh1Mf(EHRyBzqk#J> zFTjyfhl$RxN+9deCdHV?MtKB|1G)@kz;l+fwU(ghq&|e zTjN96^Ja~pUk;>f&tqeqymzJ5(e+|O-w2o||AL5*lt;^rSKELj- zXiv_kz5?UKvNfsl1vI?`u1#9W`ZkXe*PDvi#*=_0T|Jb2gLA|ESbhU;kFwam@a-_?$AN;+Z+9a`XXRD z5aP)W&@leEf7D7;6!JCabH`Q9P95};Vt;8|r2N#+k*6zb<^%#Med+JvyP``7eQ%)UZL25;;_$m|kV)$(o_y;}tvn3zvef;E+c6}#6R20p=C1qsLb#2krqz)RUEY9QUEF~|_ zr!39mC#!dO?7dZFSlczr-8Ij}GRfO5D7b96_h?5y_dt=Och|ffRY+@kW?O#an~A(|Hi{M`4iOadIw!cDopS~2!fu|K$HR)Oy= zGoR`DO8%rI^g2Yo9TB7ePL0HL!V~@Z;m(Ov>G4~^X}$#Ff=se{p_YglF3ZT#RV>Cc z`cJA6I`_X&*4?|(;3RuNy_?-O0OcZj%YbA%XESjnYKw5i0#=RMO5Ona6?3ONY00sO zAR_I@QXQVbksb}0;|%x>8<_O7TI;mqQTmRd1ZGA2N9_^(m?mmH|BP?^hm zeH!pV)J*;GK>q(B#PY;&Yc1|#OH5J?xF?#KRXD?9M4uavU{$uu-TO1>`X3D0v|1H( z?zn7K9=>Fb$tlUnC@9E;Mzy$K%G%jQB8%i{#1wLfvpXZGIY*{6WJ4P&f)lc#v~&_P z%EdFyolk$8n>(A2Hkx(y{p?f}BPA%>;nv{#jGO^`5yE4lz(u#}8g~}WNC`nfxPcA-{|6g=V63?V~867iBQGKP;5*V7$eJ5U?vKQ znX~lgmPw5PK0I{6$RHE8lu<)vT6Mkzshp`oO#BGNoM>8?w{gIo2NhLI9y@G=G~u9a zcb|b3O$5OLLpJSy^jkpZb0McV^ z8(|m6q1H=oa(!61$I9Z^W!=DYlj~LSEoXvHz}@)%669DYDMk+j8b#A6-ig{s@5{}t9YEUtBi=+v5Ri^1|4pWwB@Up>4!%$%E>(>y%6 zX`OYc;>^s=w|7iT&CGVFx&@mc{M^i6BL`;u)dICY@FZrVPqq778cJ}pnBd`7Muabf z^txb&jhgIlhpJF`78lm07-rC*W#o58Z#ys=ru>x@x&RC86 z1oVC0V*nJ9|FSPgu!YK-e+s3*h>*%x9+08}pr|0RY-LLdHarlG3*Y%62TiaTrAq7K zxBri?w+@T?eZoc;K|mxVC8fK&LAq;Mx}>F%ZUh7bq@}yrrKF`%y1Tm@q#MqM-}imb zb^bbDkMJkEPt4qN&pk7deOnyR{0mI#5V~~lG3Efc;HMl1 zX7Tm6pBU(fU=RCPoxPSXS(~jY>r8V+Dq6Zw>3sdP?0tM1F>9Eosgpv4hH=1Wtj#MU zDC{r_MXxZyy8h7Q_aOdFl?o0NE$ueZeX+MvjTW0d^5OatK0tl~Cp<0%(K-POv}w{> z2Y~{O*ZxDjGBFt!cQ>$Ub@$vxCm@u~hkHyltQ8XSk?iMV=ha&Y0D<^wj_b#;D`a9Hs-HnRn9txYlDpiKSw)3=7CPCseQousGQx#jfs?eE3E zuk6JP!6vrGa9JbR$T#NWEY{qkbG8COQs!*3W+*Ajv@x<~3>hCOz{OlxDdIU}-_4x% zE>MEh-Lz#HvF z+Ia#)0)*<_sRuY#wE(=ns_-Or{yI{5=NG@Uba!_*P2>+HCE^TJw8+RGk&&p8++pMh z&{`Z6DL+Gd3u#?9H%$voX)kFnd;2=#_>#%&SKP6Z7DNP`Xn>}OMp44Ft|T;C?cG3o zs46N@K}iOZlN5t||6`%${)vj?cA-rqJ?mBrQg-zY1))ny$X<*kiID?i^ZolJ5g%>U zPK{o3KJL{oAF19A4Kdr<*_JVtm6h2smDvt5Gs#iK75?A?yzRyNnLbqbqN^aH*BC%} z`Z&p1+Gh5OCD=+kM;gH?4EW;P&E9l_DvVGp-0i}j7jjgbsQBGLdh~F7aFH{{%36k- z%Q9t7>*!~ZKx9|G%0q3>zo(2RVc+}JFrqB=Y9N=_WbE$Y7~=rYNWS8FsVR_8qnbw- zEG*Oy^BWUMq`r!>NFbo?6U(pDZ$?d_bq;D;0why@k{oEDpJ4VBt86f^{VYs{M30V> zML?tr`bj4igZN$6)S|gD;rbMs;P9)}RP0?o3jplp&;Fg!`{1f8z~rqExAB(k;wVQn zSv0~s)_CmZhzN<Lq?#9uxn@k#HNFGD(1pys1*NP*Xss`U@RmUdN?m1O3?Pw1k5#AgHok%4g(wMyP~$@tymtop;%l0CnIzJ zqrLpaaids4iKI?Ohz&SbkyDT&rF-Pb$I~rFYlI&03YQMS{xiPIetxVlZPf1RO;;$T z<*|O_<;7J8FCarmY5pt|lclv%9zbrF=E((9@DgU!+a9h{E)bHv$y#6EFkR_sRgshHW>b7)T~`TBiOdKq^UaIO5pzQ?-n`XA zcs16$__y~#ur?VZmQA)03iyzCF7} zKf5+;b2+SS8ev`WxmuNT>8y6g99f3@n$VyIJOp4ZfPnV3!ldeSCMN2~qG1h0w^w85 z7!;Kd=f%n731+@*tu+M5rwR+WFG6(wGB6ig) z!jtYeK=mIxkY1GgkSS8sg#rZMt?;*hS+egVB;Eqy71#cS%~tv7Z@Fqapt(M&@N7Zs zLUCn$36Bth7$IMRe8L6)n(5&^2I&edO{c;Zhfs>i)~@Z^;r>#YiVTsSxWxW~wo)&X z1Y=@OLZ0(p5JLe6a1WWupDt?^bQX9R%s4n=cMmt$kB&Chj+c6;GE`Tp`Q;lR;B+k- zYTfiFwSsn*VdSqIEs{e=z_SFxkh%nglur5ia~m%Bw@1NNPR8t@7=o$gha3_1Pn@9_ zM|}AXG6AYSjO$ZnNEH;B-DX=((ce}CvHUPVia%zbTJ8N>BOg+K-~9%frljptD=X&6 z%JzGmubrRsW*JKQd!38OG2B9GZ))vfLu6|&@o`Lu<3iJo^um<8b2_|&*K{Og;^*wTE-bory*-OZW7k@}RZ zmX2k=6JyT769Z*>TBQ{qCme}*iPB@#yP0xiZ-_@iZfLl(9vM70#GdB zwpyi7%!GZXA<9zeGDF@Bb)CMK4th%=RCNepA`yzL4RnmDVAiJ9|!MmCPjYL|F^B9 z{!tZC6j)(Q>Uyd>3K8eK-I{mkNT7Cdy2C$N9l@SfqMSg-=hD|%*rG~ld}r&m$h_{8 z)@WieC_q!J6O&~juZz{81uZZtXVov4f7a_0Ee_vXC{r!L-tUklZD`*E3wbYxKQ1XY z@#gp_BSQ~`W1>&e#59Y>E@=Lq=bSRu+En_!iC%38ow{5v2Ty zeH+n>TBoR8YMvra0|(;zgeFEvgOy;lxtVq@g7rdjkC6cB!_0(g+J6+C!6~&=8rFLg zQQhoHQ9=h34p$@kmL1y$dsfgk)Lpl=et1A4&Jd0+2GkNmA$}gDkDFFzE*C_t+Ml;3 zdkdf|#c&d8X=4JNgWbb}-Q^lHh9H10;*7_3Xz{B&ShatXwR5~ZS1D2SwVjNkA)U!M zVM3VNdVgDmm&-DF&OZ$Z8B@M%joF={D9Y10F#X8qi|%HJj+)0h&FQ|}wks60$%o4C zw2HF*Hy8Yr)XrtCts?4Kqq@BMv^#K!dic3;$) z1TVt(;Ub|`Sn!D>Tkoa|XhhPjflCf-tgfzgf8;^Z2Vqay{BfUo7yOz}uQP(3P%iN@ zKRTYCx}KiC2BkFf?M0Z1YUplEj1w$3GC{qo^c?qtuFhlc}oPI6&F*YUuRCpHcqe$OkfljEZh zv}4!(MKqdf69;-AJEVf}>Z$A8vV5ueFMGZ1Jh|E5tOZp#D+!65F?a#@x4Vl<1(5DG z&jzcJtH6t&$|MqZ*Uw$;|4JSpDL;$z>2})SE_Bs%@uKokwpkdJ3fg}<(T8bPqLzX~ zA<&;%pEh^Tv2)0gbK{eqnYgR2Ib8lBf?kDDY`nMDDgB#I_kUvL;&;I)8W0fr4$iSY^*Y)ORqVI9dzMpaCKfD@} zM_EX=GU;He1wL4n)mX5xbq80iY3lsGFM6#w0|LkiU|yW)VgR8nHWOVWSqzj z?7@~m5J-l~s)9ko1SrUVsZ4n%=}xC{r~X|Ln}AhoMa`!RI@F$A?Qh-|@ymXGZ>M5= zb=T)qw{!Iui?5dppXXI$uz4B&r(iN!S9Lm^oxduXBHn+6vo)gk&QW2F!qi}l)i>WP zjs&@FR^)ma{k~ki+f&L9&aamTgxZzaq0=QH!+li^gMsDwO*8VFUlAfb znv2C)%jB}NLt_Rvfj9CmS=$B%VWGyd@nR$SA3f^&-f#tO($4m+UbFtf;81E0TP?fm zr9u>H1?=tooM3vJ7io0Q_1>5Wb%9&LC={dvX3$d@!BgXf!}wa^_Y?tP^smT z#G8&950*~rQQi#QRoqrAR$?7wq3&A_(BCtOwH81o~S%Z9w1s&mq9h2M==9 zSS|DK`Qd6^0BVDxkrm>bfeKUUmom;u`2yJd0VOgp$j~xsBw4Va`SHzY z((Q{qpZklk#S6&mkT>BGBL3eSe);bl8veOMFGB&IWbVUa5pM+(@gyfu>FXPMuI}jJ z(*q|F%3@f3c8!aKaXjtLXKsu|jviVu>H=leD416-2%h`eF&4?>$0LFu)-RFE@gn>0 zRfJCfzX4T|p8U}=;h=!MVA_h+i2<9pf^VJFFG+w4BfVJOr)|dPf(9fQoITS!X(bhfbknqBcrML0opBEFskebzcg4+EF?qEg5 z>`}+xC=Vzvv0+?|xgLO9xT5GYwY^1cKgM_k$rhM$V1iWf5g8hAKsAbP;Qy(LLHJEv z)ZkrDQi}i2mm@}x#w-pdcyouI&jiS=@M)&AD3vvOx@4j)UOXg%Lt$VwW4xu`;d)#^ z=EDHJ><%$%1p#DM7(ipm@E-5^b0t=M-b>W$K{3}k#Y%fs*$NLt4(Me2f?oxqdpR&^ zEp`RNs~q{7)fdFxxJPplu(b)ybJn6;``>BM0v80um6R z1lUTuu|T;N18%(vN#t+*%=k2fd5p*uMdT=Bs@j8+@nXV&%XlsSupD9?2miPq<(#MRjzg@OxV;Nhi}7m z^@NpIDP_ugwao1XFBzT-*)#BBeXD2TzVlcaLgpGe68OR+PTnK>hCziI~;iRy{#KsmHO>dL^?>5a~)$ z3A^-&0oO&^TwvAshTcr;mA5!WERu4vz+NaRuGIz2^99kGaObs})#+GX+ek{a>aDkf zpp(90E;p+KMLcp26k?^Jh6gC4W$!;7r2cYM0)6eCez#d5ZZ3D@!${vQFhcEYA8VIcFqey)=u3dV%7EpPLyzX-@8DT1M32_(qDhiXyidlbJ zL8@xHRc`&oxr@Z0cW+BR02Nr85N%G-h+hz?;mvuGT!$|rhV$XN-SMiKt(62tyiJr9 zN1XI=ZmdDAAqstzLn?och0IvZ?_^-{K8?(fimH^K!f8-m>s_a(^o12Y)nkH~GW2nX zw4zAB!k{EsidT=6L9aAF@QoF$AU*#&F}OAOm*)*qH6SV747m4u5ZOF60+HcB(q~%@ zXL>j1NxiWtJ8--!NR}->8&BDEYJa{^X*+J2Zwa z)ElW>UcuBqU1u-wvQmHWf*XC>x zUr}#6vKB8k_WrMWol&#t*5(}x{nPxKFSiO7!EW1KwCG4kH>ux;{W)M>`T=N2CZCLzY2XjsFyeLg@8Gy4+$AAqmJFYs8rl15O%i;3{%D7vL~IOg4{*U%d0PDfmM zw*~h>`@`UmrTWZFv`A7RPXW;3{i!!S3$$TttbkMLX^(NQMCUyEgJAK)O&w*&7mkdv zW(geZe?-EtD!K?L^iGm3&_`|87A-9MXa9OQ(Xj@@e>Eh)To~Qoss!oH^`Fs20?CwK z-p@GOuTe8_9%Y9HiL7wxo#Jqq2Mbf5%|waI!Sa2WQE^b-`79=Uo&B901!n!;);k0% z+&`>A>CKJ22k-3QB|zWbzHM<`k69@z0TW*n{+p^huLrI6O`U^&xy+CQFG3$pDK#~< ztmJ-tDHKF@GxnHDtMkjQUgiW2l}AQz<MH;ClPAFA?jh(zPmY_!!<=z zajHz8C^_#VAp&LJS(FSJHkCP7__=iZD>O2Ct}aGCbJo^c{^B>?VMY833qRAnMN&40%l%a=K8O%1l`xQ>JN~LL(O4l!;$1%fXWL9|Re4jG z0s~R{SJwFN^SMO0fn-_4SSh)t3)C33j8gCN=|8{nQ>d&#o9gWx=;ei>=YQzVlqgoT z4}Yfa!Ca}|3$CegQO;=b+Zvza7G?3fyLk!_eR4V6952+8e3u`*iJ)e)?-dW+#um%l zzu({cVX{8p=q-9(+#dUTPu13NuA9PrdaMEZN4-O!dx|ClWs}_p*$<;18=?12nL9k9YHswcov_J$+`_>LAk)3q`qa3AAixt!id9>Q=X z+<;Q)-`5{ho%3=(b1`!3^xcH`Mzp{Sr`|9Xm%!0W z{gEHr^w}&4%!UeLyIC#Nb!toUTTyz~nH{!r=>Kn|>-(h5m${ve_ydx@ZJ7UJ0EDni z)3&w_(&okN`vqsm_6oxwEoOZ^I{E90hxY{RuOjGE4h)Q7W#oc~0VF*W^VbXuIKq+_ z2gQLjpNN*llC&#fgZ7IP93RVpjVFS+Xi6A{nHibYcC3m8(&tN&6r-E`sRSQVa`c|v zey2mBx0eel7{||-{tMG9ZO*1M%alBIS4WNp2x6%NgPlyA{A0c2jXE;1eK>l&7{CJc zdMCAh`s#io>Ic;DnWqtxoSrA#YbuwMlEjtA%4y1j4-ei&i=32jn;If=d;ZKWMFp*{ z{K({p<#Kr+c>?QeAEXc#xr$twSf=dJa6t8a!Uv%aGXHGUquw;nhim_7F3QfY-<8<= zu|QYc{~{n#{jAGM7Pu540u@`vHR*~JRO&=}+0a%A$w;jN4Loz;YH(*N4~PSg$rCVb zpzP7lCSq2=mH3^kC;|PiTK8u#OkPhuvP3CYb;@dXp*|KCRq%nhmA*~=y0gc>ZUMK? z?95&C;bwPEp+R3HyS}Gx$i^`&f2ll*?0a0HkMPFnt@@CF+14!iNV&nFvcezgxU==# z?9l7g75=4g>aT8tSx=k&w-2T6Sh2;hTp?zb?WZ~H0T~R)*+cl7!=Czb-+KmGh{o-e z`Rb`1DGoEshxvo`){M#=a-atin3$E7#p`zS59`X%E09gna5%e?^mwlUS5-;khYo4@ z_P(Qo=T^^x=KSBy`8R-p1Drh^$P1Nds#L2MQ`ZX-IPL860xx8Y!3@|ByJcH_0+w8^REDx%CG$OeZVm~c>xm{+(z;5$3Y{Wy zL8T|?tD04$Vtdk>2^J9L{Eu?50-jM9+Yczzp_tm62zPCwED4qe4OM!!g7e-+KI5Ei zq&ad^(-RC`@V_M$so9x%w!89vx~YGZQM(2s?5Wz?9@XlU){_U+&g=6~@C&S8b1T@` z9rF92f-Xpe$(ecXmQyxDr`~R$z z6F-zq2LR&PyJ#XDBVK|R1lwD#8={nUK7S%-`?>c?gLH7s>2RI%B8@+CrSJ?brLy3<_ly5Z^SIl8yJHAtSM!kj^1i@-cK)Y6MIqEV)%Cj~g>`caluR_E zgV#YvA32aNLNaH&2SF3h+)Bs2n+@v?C19zG8K{v{AmbkJX#Xn)k4Xh+CEQ;%s7e>G z+&lr3CV&QWA?+Pqr4<(35%}WjZI}eW8tod};*;I2h#j=O6JfjUdeNtvup#^9CUpd{ z`Qh$J!9pdXit++GGxNN`n~WJ!krprVJM&L|79oT|PzQ@K%gGx*QyTiKVg2f^>XYoy z_bNT1p^3P->~ppx@RU8}BEHg5S{xtHRZI`&hyXhkjd~XY$&+jK z`0}s@2esouX~_F7ih#!sJ$T;wfazX23km<~W_<2%I+IeXUsmjfwEukz2f;|R$S=(P zHa^!a%a*2AhaISTk}lRq#<;$G{07evQ4amZ8-$1OW*4+-W#$L~)>)91R66E>I%FX< z??IhtfF4Ya`s2GutzgO*jwW#O8@QnCE7Ux@!}Gc(uTWmjEZjV+?@hD{f3$&gE?0%1 z-atxfs!`+9>SD^qLVc;PZ8KCXBT8G(CEJ zd^)A>)@EPh-Q8(Vj?s?F+%v9qiCiNUHA#e~MnT$?@BaN?EdZs04W+^X`+2Ja$D}mH ze|w{w1GcJBbHH{%KtApKg+@3G$b$eh zl^Q^x)d4_8L=Fg2GE>>fUp*8!)|$}l#>%#dx?CJe*YQ#NjHs5@`cir*3q z)*B6cj6gCJCcOJmQh(hut}7qWdjpenScjMhHV{a8`zIGgDJZA^E*_pxb>$3mwMU5IEqx~Qy!NNf>q_r4k*HMmg(lHnlAfHlxTTu~v4`maG0VscByPEdrG$S4NG z7{^+=w`INNv&Kv7UZmjvZaN5LA5}LNOTw$sUw=K#=Bnu7s6Q0|ij+30@z@e&UAfv9 zUR{`r??F8w#U_F7XTL*$V`k2HypN6~TK9HZI%D+qXJKT3ynNKcs^*97HDCWyZLaKy znXx>}OEgps5;gcuCsZ4I4QO#JL_x}sFsMi&hh3MLAdsv-mz_WS&5cV`p``vB(C_S; zW407Ygcs_(H`F79$6EjBVV3Ow`(dFNAoN6Mr>!pesj2*H!>)IFnR@0Rj0D`J?8uKW-#7ZcU#{Dx=5$)W4j)iCr;QI_&!-V>1(=hYh^yX@`meCv515+3e#r$~-GKD;R0_(9O`>3;6* ztKrPqCXe#xvJw;H1Xz%`0I@z3`oqChrFr#$d-PH27jrIFgI#~N&E4?i1*Gwy6PzOH z^}kWGg8?xEl@@icV>V2jIl<(l$a-bs`pg0m=L@^KB~?=Rd@jB})gLbx|CDDe80R2n z?Vt_^WV(GA3V8URCs1pw`WpDB76u%{On%AIr16+vbbc{9x-(a3*-4TwAaRpBpB7hh z1!cVnNfc4YAji=xD5TQSS%3+o-vOYiq*Wb@G{cGb)SxHjyCg+ychvK|duK9s5Bl-_ z(N4Ah2feC?BIv}ns?}}|o)`outvH=A!uZ~mdw=bap<5r=Z{m$cWHr<97P{e@B{`2x zo2Guzv6udHd&1=+SlMp=GyHle_|QMD|DmAK7_Sn{QIu91d`#I&xQ zUT@}Gnd#s-x49KT3>`$Hi#2H=drqUk1l*xfur((al7Upi#{wW<#EhYMWcfKCb-9)n z`7s0^px0@K`#(=#3ke-*;*m+QsY)_g&UXmpG~eNt^y9EM41`;v_3z&%4SW%g8bGEe zPr~|!N+v-@#=yq+Ph)ru zN(-1UIey5*^O&fbLD1+qgA*{Yd-_`t-b$^aVk zC`eh0h}-&au^P6Mb5(_5ljFZdIqs-N^^sPVB`+8-Ix-5~N)#)Wj)9MC{iG-`S6pSJ z+$O1OF0>r)gUy~pVW~wJAB08X<0G1~)FTdP$k(?AzNgjX` zxVzBwJngD?!NgsYlcwiG zvjW^z#f>yvcon!O-^n)dp`LGa8X)7qd^#OBERZAGi<^K14UZv!V1(7nFfc*+u15Ga z1Hg8|p;GS6du;c-UO-KS?rXn80D+PQUUOLCvf%ccRj8|*sH>yelEfh-%)b&_`m+=o zW&4a=a$4gebdO&8q{)z^AZDnOhgybljD6hf5 z>pPp4=>WWlz7&c^OqQB2WJ%{ikr^JVp|XeQhhi+RGn%x{f3}j?SD`e8^DdSLtO_BF zkHJh!j*U&piZ@D6Gt$?FXlkm_C-gIxeESXQR?VBRf^c)E3M3U2<>eHW0L#kUV)c`$ zwT*eFS+?a5m1v3yvBGgG+)L&ID$E>dpbO1pM44&n{<|2~C`p!z_JS?&qUdIDVQiRr zyZRfg)*{i}72UzIkNtr?U_^5$SV61zl^|6Msiii5>BJC}&_ z-rT&ElWTwU`B31F#iPy?3{)YN@fMK8M4|f+-Pt+s_(#9&<)6yAbicxR zeN0TfDrnxgE?fEu+CaC9Gy%R8!G>h*g&f=k0c83pOB&k3)=1gNC>)&k>;$Nmmi2HS zGKZ_Tfg)@TnQKFd>KpUl+S+ki)tJ`yKmFJ9aP+A_Agtj2$w^?kG`^5QNQj{;NW5-)!BDtll!7c;p**%)9vGJbdEL(EE<(!z-l!GL4_i+aGJWHbBg=#nmP71x z9Jhd2XoLrC+5M2}$9V&6nl7V_rGtc3eKc%{>$dQ1KuLIT?$!di#kgJcLki2C3 zU!$O$?YeNIC+X4rQE+UAFyTGw2{dlczMkqX6raCCobX@Fz7Z&^!UEAzVMWVNWsi9P zO;#is=z1r{)=Idf0V7DQ$SeW+#WqPD-?wI*Ln5RBJ6Y757^L4G{&T$YoU^a}Ggmfw zIK5@Hy%m@j`FL^vWMnyP$hMU>N0_>6hZ^X@q)2nn^m;-{-1riYFk{%*xx?r|i6YkA z2>@M%<9n%IcRtvhri^-~M1sPmoJt0`&nypzedblogFk+Jn@!*BOrNAmk^GxoGB-Qx zdUVL{K8RpvXP|*JD`dvd5-VNIZF%~>v#pe&KXD*mH4oETaR1uEqY_c#RId$GJ4GU=TqIPxN9rfxK?cl z_H6d7&$&E_IZ`?;plb9#8FI9l{z#d~eX){qv;X2|c-nLrnB4iJ{*>U0+({g`8d%Ck zeyAW8bi58kFSLV|scD#m=%jDux2}fg!>ki-_xCa@f!*82AHN?QXfX72Q4#(}kIZZM z=nqB@ybozby)!-^&fK73)RYz{q(~Te+qEuUi4Xrtjn3%$Y}1jC({d<_+dUR04it_} z{~4b|0_jM_Ce+%Qb*AOCk~|v32b~1IZ)3&UEU3J-fJI5^+#!Z6Jk{?sbumVhEI;2r z8F;%L;d9!b9eS?J&CZtya3P2-=Z$|hTwZ#7@{@nKkA+Gyv0%M_;QcD!#Rj&puHssC z0IePnXuCRrP1$Nuf4KZmbX8KkR2;0ixf?QYMS@Ddll)?6f812_;Jz1p!huq~()Wcv zL6N8a*Wu===&2-g?Y6DGgncyVTVbXMhP&&m_Mz!-@Pod?tpSvh~Scx%Wf zp3+)JN2`>bppvRFf4F~HPuz=J_xIBaIbZheF{(J7uUN_|p}OAP@Liud?e9(Xjn{;6 z_avhV#ET(;d<~Rjh$d2-^1*XyyJpX;pW9aH+E$CdC;tSNo%gW2TU{o*@#=2Q5`lHr zj#0V_ZrD%K_e>0otGjxm{HX|VSYp2a2lTzmC+Q2Ii(fTIMKsWJ?|Rw*@KLT1^bGkc z3b9e+b#FwQJuNPd+1rwuJ!>wFW_C&7B*e_2>Ql2CUHpJe$6Tw>AW@!BZ1$mKd1k#@ zHXcb4gpeql@9q(mF8wy`3+Lu7HxP33c%GZ+5o)?)y7QBI4lpv-ma%aRAT!Dp@kM&v zc-Gg=WA{|zi-HF_a+z}g&AFEajmLRGWC`+|oSfs}I50RqDCkuc$I6;hN;(;r%O%$( z+RM+IJK#a5Hu^ZhD;)R)m~mKHiHR92YpU71>G&C{+4Cf(eWDu~p*r}2dc-uu+`?2k zc!$Qp!y~1HVO^jK1QZ^H=*Q|jleXXP{P3P9T$-y&?~47^i)ozb4Kp*CdPhF(;ZNz4 z777XKuyjpD+G;pz8D-9P{>VV8SoFl9itmGKpC12wIBK7Vc>i0lUKy4uPVWAtc5mIf z`e9*=qHJ*5%?9FeaR?0(hzjVF3B={d z1S}n09AU-Vp~QePef>ZERSkRqB$XBmFN~Ta5QMiAYUHowDw#!v+F`pS1S}9)OBF+2 zm3)TuMhVnv^z%{5F;H}%*)cg@!O-vKw)e1FAqaF{{8vLFO|gKMa=-n6S5!GL`FkFQ zUNoo8boJB0LM4;qT&n%tG!#QIi(`Ip(W$%i)~J4*a0ofjr{+V;om@dAcOcMIb(qB- z2|bI4vs%?QN0rXP0uNX%HmH=y6s)|oj0XnF%5Iw0VA=NS=0)N+EV0-hKP5NTq06X8 z-4z&@dzPCUzW%rB?<;W@TGNl@ z>Nh^V*rwPv@Raa+-tZEpp7yr04N5fpYx7*;wHeV+cha9^#qYxu$<4+?2y+WfVV}NqYPof%Io4oKu0bt(2i<`JZb%PCMf zFY5Y;-Jw6m&`{aVU5Z=4PWzb!nDNK|%k^nX5Y9inf%JjKe&-LPe|qcn5wApBmT-8N zr0|5s4{=i6lqw`d0YWlt`5i=; zAS+Le#SoTXR9IM4n21AaV|g+=JtOtM_C%S<$}u!rt{PyIA^eXyH$ zZ*uaq#^YHAGrg6i!h*_F_z8PmM)(rBUi3cMrOiCl+1$SzV%BY0Yd{VFv13@#qc$*& zbHoCkh|%kFbDNJrKzSfVtY+yvoBtRGSe=ue4RvCI7eMR9O$sbY?>BdFaq)0)HgWOr za0;oq@m^}m5|WbofPpir53E65FY-+unaCkE(`o`+^!OojXh}7nK32-$remKON6?h= zYm;1y?b^mpeukV zAfT(sBOu}fxHS?3k(9-DlY0|hCbxQ24bWcy)t^?7TR1Y+O3yiR|oe{adfwuSJ zH0V!{8cMxkNPe!D0_%90*ZGbV^yth>a}(ukOW(gm;RuK^O4||tAMD-7ftj#~YOTcO zc3Vg5-T8z`#U7%#gXKRo6TmlTq%ZN~|N7OPUUScS^p999_m9l4Q7@2%k+fmKCXd z;P*Z2{qxv%wa@u!eRD4e5krDg1v6i1jqk(LwuWl9zv`#AYmOKt`0tt%y;-05R!iMUj)j10hO1WZRI1mUZjf>&dywQ(9O#*>3N(ulBUxK;6(x&(twVFss zk3GUjJMLa2I5jH=U$q32;lFU)njofk7p~OGfdYGnWhFi?R)WH~nig%o*(AKRydTA* zW$EZReg55rz;P&As8I+llXmUNa9+0W0-m*%k7n0l79K-T868c5GZ#?K2$F^MTSvyq zNm8MB;Q$F@u`%AOd_;YMN?u8TV#>lN4^B;vt@GFku$Kra5lCc3&KR1z*qL%}a=!^} zb#Xlrx3BJ7+?8vYV&lGiyDkpkQ$4|+@4sd!r6U1*u2fCHCVVxV^V?fSpSE1nm8tBb zo}T+&cEY#Ly{;h{gP%XHF(^3_dJ@|yZh*s#kw6KmV^erWYYP{-h~zk92xJXh1W~Vz84QcQ-aEmmxmf7u?o=- zjrnPoX(O*B_NC07s848DZB}!gKrxU>!#Oz?T=mfx(u%OV{(#WcPRraFPl0GiUh*fH zI)VBv0|I!j5jzP&GLY0eUvSET4AShqYY?Q zTotly>68YLoz{gi06t-0=*Qg~+Y&9;%9pX>`FuRrM0$Dxjs~LV&dG<-v1;XEdxr3q zOEsPS_3(9A+~P~H+s+o3sjebilnLzK7%Xt)PGpv~qrSjUmKogu9$q+HlhHczo zjo}kpY4C%JE4is~3vdL~Dd?cw(jf}6ke31)*`OL*Az2(l6~1UaAhOaWFjDbfyJp1msTcYeywc@d1dsqtrU#8Vt$8#`DQjCx zc|jFT!DJ)>vQ(%TZ_yrlSozqp^2bC%4rn!f2 zA%IiBqpqGAxXI$n=@6(S0w`ZVw4>l;{VSOV&1JqkQSRq&x;A*ClS$%3kyjN=y;R8j zlPO&ztEU8nKCTi(XFIb2mEx-0u45xlf7JGgr*BuZe5Pj9r!c2RWR33Uwnz@#GUvXm zo>fJLz76l!WWq1n&u-=WFj1$PvJd*W^I5)2Ls1F-i}?{iW3l9pjs<1`Ugo>FDWE&r z>_SL!1v2&d?0n?WtQE!Wr-h*uN5!&C&~^noK7Hj9zp5x8HxdH1LjWao%>ghyAt7)x zAHgOKon5E&3vkuldP|c9Ll0Y1B}`8tB+3UJY^8eF%S(;d%U9>i3%nKj4K8kj|DF&- zq$NV4E=WYWt4lEYQz&GWJRA69F&zv;5L!_^F)^=nDKO7(?+luKcpO%?fWbl2!(x5s z7o=>GRIt0p=!r}N-+8W231n)Yt!;;3>%*{eDOL0ECf{#7k=(Py z^yLHgpje=o_3g-o?*Tkv8WIRXqX*XUmJ%ai$*I{4;tvgx5d712mLwP>GC1S`#9o5w10 z;5Y7xI4O;=;Qe*Q#B5{Xv~OG8F6W-Q(UuAUU?vz~5Wi-VS0W9{O&xKA9+|Or3tQB3 zIJ%V8H~)j@&HFgke>5@>=k#H_R*@*XU0cu5H89$9Ao(QjVJAST4e?CuA z0tAqseH7Ak*B9!y>w$bKu;APsZ12v)gM-v1WH3MKd%O6bAIj~pEFVuq4kz2%9^%| zjE-pVzMqe@c@OA^rg~@1Mq}2BhjDJj0n9D^twj?O-HP%CC+wSkd1FLc&y2byf0N7c z{!+$(hQk`QqT-M)<#<#?0hE>L){JI#29Q~#c-^LY-6mSnQr{bRdGCDcOvvc|5L9}n zJa#a-!O6lwJ&_V#nj5!?1(dTMnCZz+tiX6JuY7IPer5-H9v!(_o+ioM`W|&Q{PG|K z0i(DR6VX*xWDQ1QiX4i|9eO8t$GJEPIOeVGoz|KzWud5>+4F9hdVB^W02xDO(+2i+Yu|O^>dPW|A85vqK-`sFC zFLTcUN*NfCa-@!>zx~3h)Z(K-@^*af;fo_iMptH=T@no5Dm7PDoh2U7MF>_q+x*+O zPr^8~2P%FBp9w&v{7%!gdaPI}`X`Br-%(M2JMTO8FVKOK*OvO0^GZ%?8m>MVlptyI z1Hbu)ms?6&p#&_kR5CIzx@$me)OmHOH?sVBb5MDCsmY()WGs+?b%lye_rWIuu$*B9 zcG^10ud^oml~L*>wmU_IFnygXb}sCINB1~8&krmny#^K`ri!<`CyEhQ@H)OQESq%L=xezD#6`Y3*x4=OSGVF5nk+5y{CLE>Tsd~Iayx*w`$8>U5Uuu35 zVI&OWV(0U|V~wkJDj^kEfi!sF{2V**6_$jdw)^E55}}`Y(52qh)tSnsr{D54@#Pk&li4(g&V=N#*vvh2z;&(LmJS#JKzm#+IjfU2m-$44(T zBVR+#6kkrsL?;s=<>f$r_-Grg>dSg@S^H#BUZ5UOt<5Wp&Z+`zWFR`MpT+{FfDfmR z`s{@+PBMOj2aJaEqL~<3%wUfHWSW#PLM<(Yq_)l{hZh8TprBr;l!>_+uzN{b&IO!N zC1tr{*$y=|aSZJA4Afs@shE;kE{ydQ#Qwx5)-Pr0Ta9>da*Np=ylz&dgF=9Fha4dYb(H@Z!&zUq!h#bw`rFFPGMFA<`w>uvGol@pPS3=@DC=ZLf6BhgTT2XMRNJfhMK+ z!~pqAk`xif4P$S|hTC1;K3;>d1LRk7Ay9AA8)V@OSGKBFy>XxhC{TftdL^P$->1b` znmxs>RS6+MYwzxI$Tr-kle=MGW{R+CZ8+KQt&WlaxzB%ca>$msoM;t@n~KUNwHVDD z6Wa8D=-TYoUE`S%GKEBlM*wk?nNUs4U}Ms!GgH%)anN~Zh7%HKe3o2lVBEj}aWprD z_vYjUa(MR3?uM>a-Q_hriRJ+P&a3s>iw)(Gk-C>TJ)4|wwdxOiC*(KAGPvCyw>#s* zO~ptR63bW6%@ud%Y6Skc1aG+sdPy1G;|Y6QTRY{6k>*X!;Nz#KrLB<5r0kv^7+V{L zSmbMlx1N0fSjr`wVQks|dB>xpinE2VD`CD)mlZRRtRv}VPqM5>Y>!uJVkv^A01s&g zz=_~NfBq49-Kxi-g+~A5o|3&u1bR^^&ao?1OniA8`@|geS|vtXT1rU^j3P=}S_a^g z{-30HF)e-c&^uTtm&8pdsu_|C?w*<5Ftc>5ah`T|0$bdm%d4Pcpz(u1#Ic`2;=}@> zoj);8wK+fHjLtl)>)&nnhEU;rzn$&FOOUbQwsJg6Hb1-UA|kM}zpsGkT(6kpx%Pwv zwYH{b=sxJ)-2UC)9t~(`XWuA<%8;|_{2lxO6zyJ-T#=w)rZfm%OK3vTa=P5?{;t?w z#W-ObUh)Mw8=zPw70Fa6G-_!aF)+N7+$gCei>5#4N`={`-bwc$^7Ymm=qn3l`3hyd z0f{D5@3|kuyUKPq>;G@|hi-NIR2#+`G@p;I+{5KS!1n$xATNN^-MQZR>eoj^Z@Z1@ zbDTAmk3L=xR`xpO@v)XG++Zzon&AP?t0OkhIpH$-6<~wU*I#nIam|&~Z=2+;aQd7B zyj%h-TV{*6t>gcbFp}l=nVOOY($7|I*ToKOKrl=iE^+lQy@HH+uw zoc%=jZbk}Ib_&z_UP;x&1a#PYzK`dg9@pb-Wq7K1IH}jC%zuF}AyAH62*drC#Rf-4 zOd2-Mg~)}jk`PcBEKdOpTt1`p>7u`J&yFV-YO7%*R6OZ$^OWVxG9REcsRImWT*H*t zfJ?a(KI+ZO*+F{#!FrdcU;Qq%*v72va9<-(&~z|GS(!R9hH_eCCXVc2;xKqNb1e!Y zy)y@|x+a1zN%w2wkPrrj@{Td9V$lNpH~*Y>W|t_{WC6alb$K01K*^}mUi{9^pd~GO z$vx-INJ-or1Ko0SgD)Kn~cbXthNt}4lAf3DK+3*EG@wbqg-6kt(f${1!s#Y|}t$3;Y2s%yU zM7yF+>fMpitsTf61AX~5z858XJda9nxp|r?Dmtto=N+?M9}Q%{R69AzL`KfvZEbd? zmEwthl+tc-1G9jn(q|&+@8&x1oD$4Wsf8T`As;sm*9wuRLQ}F^Ell4i--Fv zz4~D6{F;`l>uE4`cu;++1 zWQ@b*LPf~tY?X|5{b7+R7ho$u`3>hm{g6EJkaV|L4gZRqU+o}B_ljl~Vd^cS%sw9vqBwzw*_TBAq&S_l0ONeH3jJ;9;$u|* zoAb4IwE5k)OtYLnfSlQVBTm#Gtlf&+ifK|d?*+@J>}C!ZX43)ms^mlN0?rB*1m!SE z>M#TvU?3m@pU}cV$=@b0f`ZOWFBA{m-Ag_ffGc#9n?0L+SvLjbq~yiju~bv_Uz%BP z2HL@szlcntWchmXJq@Qk?D&7bhVC zT(iTI+u2b{ODgIng6Bkh*N+#!aYe&NC*s6~+>CJq{(U=cUoMggi#;qI_^(8xG}^iX zndsw669Q;T)f)f&Y;YB5WCaWms@)wYXjrWkJXUm<+}37Djs|6KcT(lo%x+O2VOp_N zz|r%+)Eyrk7Ut`RE%4A>)6Kr&!T=e-2!CCO1+LyeUrC7w+Ope!jB`z z_?}33H=piS8z@xAAUh_tLy8j(tDK#6o1Vt~Ayxrm^PE)t=>M{EX4ZU~-S;9N*7ACL zjmXJB9h>^C&PcyS#-41}1Hlnmunko|Zpg8IiMm0_me$=i_e73dW z-kBF=v8-Ye3v#3*Zs)BjI>YMjOq_;WWoH%w#AGR#yZyt{3Fn=|h=+$pUp`O#>#noI z{OV?(1;P9Y;Lh}Ty1u?W*qG=|9WVlOs%@)jLC;+Mt5$F(EoG7qJ7@u#$WfVEGuHG2!6FN59#`&Ol-%9{wtZ3e(cFoi) zIXjK~$YuudQ-4yJnIHUJ;R<~cGff!~ooNaSvm;-`g3JSn%oCuoB0`6s zfeSyC2sQ|A!Zn}G6ByKzkG{M97@05xj|LA3YR{qs?Vp@T6)NU#O}+T%qJtHZrA~>^ zkU`$fwYthwAZ)ySq|+0hvx5>E*XKQH>(!KMF~?6#=K2mvLUP4@6FHS`@ya+*#EB}( za_Wa~$T33z1PpL)|A}_&IFN~&6y}5Y=N{1#!?aIZVW*diionAX(&dd4t1s=!>jX`1 zko-EkPh>{@qi-8~LCiJ;d>n3LOmpjcYE)>TPmg z(Qfd##0T)?6-2yfL8X~&m>~4ezx}?T>!KT(&f*`;&lK*~12Ag)svABYE*hZNCVy%# zJ_bWCB!{p+|I(lL15VLucvdM3Aauj!)~;{dVbNmmEDEE*F{0&s4<}aUw|jP~ePkC) z19Q9&ep!s4L0VcXh6XvLXqCkQ7KA(@HX?)pYiTQ#iJO2v*_xc0!Q-<(w0(+#ZjJmH zA-2$Z_ba~kBwbULBJyQ$RIuMwYz%<5xIHfcOhRiW`fFxP)nv?imY*WUt6Hts#INku z6I!RH26b;{^X*KEkBN!#Hz$1C9oc-4y1jkmd%CSRZZEr;q7lhv#@6ANd19Vjj4^GJ znHiFiQOiV!j8?DBs&{9!C$Dp|0Wlfr@!~?okuvIGktGVzRgUNIR5~;>3hGH@#gvmZ zW^)d`vcGUsa|=evaJ>TrKp=sCI}VB#I}WxP%|8{&1b<)GmJK6G4AFGwthG1aYerMw z*dOl9z=NIv=~&VgC5u;8T2RBrJ!iE{7b1_fUGbb4wuD*n3iLj6r(obIZ&dY{^yPJ% zabEwLaAQ_5Lpk>|9B928EE!)$1K~%N`}CpX^Bemhk-rzdu!PdLgA72=NC<(xyxO6( zNvS-Y{m&W-Saz}G*28{ozKmf4t^k(W+6qd#M&I50+#%EOtE-wDWIQS?W5*dFQ7_?` z6Alyxetgrx3^?2-2Z6+dh^{~tW+DuU1KUhE#EG9B+;6_;-^03-vZ=PtR$>Q#ck_tQ ztw92z09~A1yHP+5-j{YS>^Y;3K(KY^bqmm9d%;y3pL!z6*4nJpcfP)RVix#xOwwgl zjEL`&U>{1#M!wiPqdjBK8uc_S?V4~S=Hbz2GA;#>IpG-@S#SY{Mv{Fj#1{qz3Lu)h zAM}*}*s4^$sjSJP;2a&G`egS(T1L-y263ODg(5GCb5$zM^@62DcSZ4CsiY-HF# zMOQ4x$M^*JX??#_txWgK_Qpds_pp%si|_*qj~Kn8ThIJk_I-i<_IAE3WZ$b#ak;4_ zU`jPLDmmOw;g>gr@Vlhp8pw;$`0NHCBA{+J^31~&nUk!XqN0p4Y!UKUV+AVEUlx|@ zGAkOm#l9b|P9wClw+Fe~$$)V}k#EfR@wby}UCh8XgPEDWWtlAs>~G&mkCGvV5lI(ahu9$gsG8MRoP5v zq5+1kGIrlIQxWwr6bR^WN3Y8B_4$S(k=pnuWga;L!``?MJSN6j=t2iG3CFAJ+f#G_ zz+|v~U0u&}6@p#eg5BMMuCFbPr8R*P`9Rxg!0%Ebl`XSAp&D#G5ae}M0JAVNlY9qr z(%>d0p#o6s2auL?Mr}lTM49(l8zdkk)+hMLND)c|4E~ge-C`axJU3|`2$EL{FBPP` z-_rs7F((%6ephLv0sCV2Yful;Pf0C%+s!>)C#2VW0-whbH+Jc<)0-Yj7&?prsI;pk z146a1LRni@=pPpBAJ*#ci7V~{`K`&W%FxB5I9m2qTM-fM=A4k)W{qNijKf**i%zKhT&>KDByobQnG^87G#kZu(%;zZ5+@o!|< z?enJssp6Ws^Ga}~t?Y{}3H>M66TZMslfoV$ZN3)YmC7rg;0T$hH5Z2`50ISGiPy{B zmg3tI2vj>L7-g$Hq*skG#7VGLhXN{QE(ERf*cCXA3FRLqp7H z24knIC?J!%H}4u-D{D;+B|C$s$AzQ1>W1Yc)lN~iGK*Qu97eax>os4ED#O=n@o-hn zr|Wg|12KDX9~BcRv-9dBEZ^4GqHIXjNE~jxE_8~DQ%;y*kX%x%_d!PmD61T-&9e*C z3J8%-H9Xia%{P@(md`+a*j+9s0O_5rIw^WW6F}zb`tluYAK!keS3&0CtYJ#1lQ))U z1LNcNdtme zp~FjouJR3gSZ1_5GIG=fB^^lRJ2}R8$EE!CG7vjpl$?wM9tZ_mB7v#I!2{x8u=p9% zq#Zsikp8i@IJ-J9;CwwV4p_$kjm(SJ1M9^+R+7xQSRb7(c(n2?g*l10^oV!?S%XYv ztk6r4Z@P$)WwLjR#$YK`)lr~^TZR1jJ(ipVLx&bsqGc) z!(6zF=@=q&RQP(Amz`h8XEB;{X!{M#e7NQ8uKXDV6zt8MTA(5;EI6XPg<)o4F=cUm zhtGSpRJ87^1N53YTzIlFS^M@mQ@eToer0CH^*XR-e&5qHl1QVzMIDyBJwi&S9StOA z!~_~X+RC2i^*Hr)#U;W7hQ<*;kUH2`93i0-)NgQ;cJ5sLp#<@N@)HdJAt2z|dVYDf z-`e6L2STFm%VDY%zE#IOp{7=ahjzTMCc6p1AQ6=Xfxt>B*hD2_sUo7HTJ0X$EiFhO zpaw^sOQg$fWL+H!AV#Iu$MaS-ZZ`eO^70wU(HYUvxAY`*BqVfnWZzj?sYpnW6UBf? zgW}NgGEfHBVLB-kGhr5Zd_uzP@*@-Uze1Yh<%H+J!~nJxdFL+#y}rT)WbR-HRkVy} zoVW7^okBtt??P-(q*IP?ImKixV3T~+JZ9kp$w}n-#C~Dr3ojxkPmQ}lfjDoD*4+2) zO2Op1z4;iRto(`Jx-K4^xM7DAbMoS0qj{|@TvRSMmky6x!`|&#MTFY;G$lgmR?^Nj zhvs@YYIowD!)jO{YN)g3Z=`uf5FLMCiQ?#xh~_a=_`Mtq6}v4aX171^%fnl!ukM;j zjXuHO18M8z`PHnXM7PxOLv~2g9ipg0-#P2FyBVxVwgGtp7!$t^0TXbZkCLfCVt)Hk z#t6ZAWx~-_mguV4nU#w!sM9E!i-Ss~q;S#Y=>c@D_L2dGf&tY-&YCi6Al zYiAvGpNC$zmS%&vo1(TF!eyfX|GSdU>#E4s0tJMG>3P156Vd+zI8yhIGCC{4WB0RJ zeUl>Tp11GyD^mM?#zw^E#wQN=TrQJrv3!M!(LpBV3!4kBLPze z8>(jVlJv7XOqZw1zP7nPoD5~P3||jkI!J4`H3q~2*aZMel=MG4oOEtUni>iQTve|E zUCn{aQ=n6rx9RZA_y)~qY#6;hn;_>pz?YBz_RcCCvIXe20o`i>)MEgQmL`1`U;3<2SVYKV%Zkxx9m| zCG6m6Gb^34$!d{*d1z<{?R#YM>OcRI0v%e}B1h#8iEq|+pi^8gd3i@GL(ejx0$~GN zf^e1d!^pD%Q;QHbPyn*}41z!6b**B8JhpMhFb+puy0Sr_8byE?B?7FY4FIP=$h}Nf z0Im_~y{vx@srC|m!`~bh5|!@K*mnv8Q~_>xj8r58jqRm;kW_YL(s$pU;Rk0|fB*ud ztx_`;Mr1K3A=aI0{B>6S0ZFLM2?>JilhwDkyz^5i#j5z-mP-KyyR)MWk1~q0W4YX2 zE0Q;rb}5;;LJokE8Gcga1ZQRr(|o0;*pi~ALnG}hPK)Hpf0LGHi^lk)P|ALnSu3f> zK|?`c?@liKAdhX02s_{3EIVvSLGBjQHhq1bTkND7V^F)bHosw-YVzid8whJqLL;El$hB}lMQox9p#5q-wgFVglcD)) zT;QLMQrk>TTG2J@~_UdK_#Wge{+?iJuuYeo30S@N9>0^+4(RrMruhN-FX zu92y69^csD;PB|+zhN;|YF###I8CawbZu>|l||S00=D*kfh@psbqy*_PvYVpXj`1fv zwjw{LzH-Pb6kIwu+SODu+0<7jJh*X?^Nq}3_lsYru%=t=Zf&^TO;pEX8T2EcXjERz zFPLqWFJ@A-|3xP@A`7TDsSZzSTb*Z3qKhLARMYy|c3Gql_7xuT8puDJj+t)6(WD%b z{vGVSqQpqR<)`FOt>G^L)5Ln{6?5b8sAKyEBh89Kc+AiXs=J-xLx zAU2{bJvX%YH!{Buf~MOe9YVTa^f zKuvPQ@v%>dI^_?H)A8Z<&JS6*DW>jWJUse-ZM`a(VChyr0|&vN&w^s{nfj%4bvGZI z;!%IN7S+$0^z0o}QrMon@_HR|HdV7Y8&vjG)V|RiH5@oCVvS8rDrCNkv`N99k?D?+ zDUiIx$4AXqjoOOV$CZXm|TQuJA-AuxVV-qI~ZeCRaGi#nl$KaY;`WL5H_>G zgI!Q=Z&3haAW~)&`C<>WZ}1GOn|_Bckzae!E>IA(FjoE=@8!Y;>`mhbb%F%v$)mp# z7YK@HL(BTNt>!i6JE5peIGJjNrc~RTDsAO=Xo?f2rnyP zfyg99h9mCr%LoAZEmqwki$CtMH!1pg^c%3A0R4{t*CQZ!Xk%SXK^;eau1|UT+dSqot^jzt=UxQ`u6z0cM}^QDRq*v^ zXS1tKKG*b;VU_#Ot+w_SiyY5wyXJ(7lOGWKT_%p)tzO(E&DD8x2M&PzGfh=jS36WO zJ33S$B3^|fATpihV_{&R11pVzfsGU#w)GvqT#0<^;@+TA=nLxQz1L6vFKCi(+`NfH zu@d>*gqi(Yh{6VesEPeM4h?X`Y$1kLy+a07_kzTNaQ$|bYNb<0(-zLi15`0A^d|W# zCD)wkoqBTA@o>cPRm1$)z)y{`NsC&G+NPR3wS0x*8R}XMZ3V47l@g%Yr9?h89aX{W zlL*jPJfA69i5dvMpn<1*d&{Jk_>;A4jE&3W)Rq<(04Z>wfewexmGm>W>rtUCmrK6O zQQ_(9Y#Xg^a?yTrr&cYsi^4Y<5Gb&c*Oti7`za6Z7o4c}%t#ka zrcjOjyuR0Kz+}VcrJ+y|^Xt&Au-H-PC^3KX{Edb51bg@H48l3XI|_C4ue#|St@_nc zG~Y*E37?do`u~5 z>H}8V*#TDHe0JWe&9B#l85=2DuE(enP^m)HTUQTWZ5@k?DwE_L_iA6z!+I5d%6-8U z&tqz=6hvT^({uk|Nr6#%e67NmrjKt_Og}8q>cMz0T=#~|gnVj!YOFRdsBS(Rt3fDr z=zQO9E#*{fVC>U0-1>Oq&#!&akoN0OLSn_*iYKYXWzuS`@8;qeMa7Gc!_0}yEdupR z&ryc*Nx3SU!+hyjA@YmY;`m~Sd+%rf7OLP17fjm?PREiyVm@}TpkC%{&g*C10xlGO75v-6>fNV%7RS4Drjz7s zB@2%aG@{C#L&fdBdT;@qV!xseR_g1n>JGEVqf`hp*S-UE-|Sf20XJJc(gd+yG;nIO zsdi?O0u{0ckDyrYgjo%4;2)V1ItEpeKqQy|3H4x9G&o__JF$2%V>n{^#GxI#Z}?c@ z*@bv!Zh>{>eZ7gDnp;CBG%(5J>5nIeO#|Ga5uV$OXEs}bv!f;+@{w{HPxARn`8xT+ zW2eMnG2Ip)3z$vB=7#3ZY*ri#Wb!9Hj@(67lZ&8GLRd?ENmtZU@FV#}^-HzTs32<_evqH-%x z(pvrQO9zqTVoFF%%DZ_5TJta0lRDKXOl4D5GJyhP+vmTdt}>T*2Tt4+u&oT3UYddc zZ9C63&_612cSb1Tn&x`*lEMe?kH1*at?48IefEnkCLU|=kecpDC>lx-E(HD_1Ofr* zLLy-wtVG5}ql9)&h(B1^9=m}g%C>tarFQI-&1fvUycbRX;MF%sf5Fe2Ip)KLXfgsk z+TCm6tK1b1)n33OI%)#zY+iFQkrq+cY<5M2VpQj(c{#a`Pj&f<5v3OLLh1e-DwFjw z4dThecneodKKEbDt}<3G#&O`!nofm~1oG-ON$Y|GTz)t)d~<$!b+p2Ce7*kUWNIG9 z@%1}+4yVRq^88YfMydlA1k&RbB(DwBgNC$%#b9L&iyap zSB1v1t2M4?7lsmokd@tgz3H60D2YgA@Ks63{63?dQ`3ZtTFr|#A-DY@s%A{8yswgG% z{?I2u48uOEB)^Zqx(y4_0v(3&zr^Y;H#%?Z|J*})22Yvoqs$bMu0>`pvR+?iw;s3P z)3Cu-|0_J9}JTs%{p*8_W9;NfbOO>1>23!eMP*VqzuN(;PN z3KUSP{q1S(eNXIH*~mk%Y9DjkO`%p7tMh0nPPAo)5*LUAS%Ma7Ia3(dIUtGi1|=C7 z2IV`76ci1=;T$E7>M>ytu^+d)z0j}NuTEk~){`xJZf+Q~>)o0G)(RO%F2_lBT`6!A ze;WAZfFUS$XA7QoGldQS;?^J#v*DIo)Ga})mey^l2DRxooCNS5tIG%SDd{iRtCd%a z$eLTH+y|3oiM=|wz`=;BuoFVhr~ik(;Q1xcE43CiwCBQpf=;tGn`^Pz!EC8kxZS)` zlds;vlFZp!+!Y`A57Hk-jksW(T#@$6|ECxqmLo&@+0>q(JcUpkZTaFlcV}+``xL;% zl+A2s#-!rdlKBr&Ti?=%U9UXDZ6T&+ThNtNj%EHKn1WUVuPO-q;+G;fWfyUT8LQlUK1J)EtIXD z^-+NzA{rb>aT3z9UtIa&z?V}I`3m^`OEt(X7(~pc0Z|8$CLgRtyrL8F@oI0kRwZSt z8~z#ri7KF>jiD1wq@;{q=eDBgy!$ngy_|k4}ewL&VMdM^}&8UzdskXqL5chZohKqO_CS^hkpB zOWHDVr~5)qIiwL&8ARX?rpe%lBgJgSfwg2%b@{5N1hhT3j)vjsV%%ScDDGmkT6pvJ zep1n*1FCIT-Mm?^Cf}Z~MqCxX2$Fa$LRE3#SCd=W5w112x}Jo=Ro%3OS75n&=u>$G|sVBl01zfKt2AN>FVWl?o8E{`%)y_AkX z&h^*gGLk&`OouWwWjq$|Z6P)zX*ko#b|o&wW6junczqLzC#TGk2QM&U-zO+LatYUn zj}1n-+3Iw)QaDi*$FJRGxclx(_>j6g`~oDJBN$R272 zuueNN1THc*%kP{bT$B!bn8+=}HuWm=A$r27DAdCxU%BD3xFpS}r}`soBQjf>Sa-Of zS$veYwYCEB`pvj}vV;L!_c6j%zE;!z*Bd_Il1b}!!8m^*jnQjVMhu-#9<#+lZ!%t5 z{gm4$ZtTz$+Xj`dP`yr*7WZ&~p$h{QB!})yL!8hjR7YQu9;Nhn{WET^ zrvz>c4Se=)r^lb=tE!RW(d)XaZhKHJnVKRf#${l-YWjWe(A(FZgw%Im_SE@|ffiHp z3;OAIJA+4xiqRft2N(THH8^6z0R5pIk5D1&yed>08U~cTqsoB(5SF#ek>|b|QuIjR z53<+)eyn)2A3HQwzdO5^G;aG^2^qy;RC(_49MPq%QjMziJ#L4$;$9*9uf4OgEMQbk z=fg&TrAkizF(78HG`Cm?o{<%P&v{gM0&Y#j&y;DCTd&z%(EM=3b^M1j#=lh)zXgq* z7NjlVv~Q(05a@D2JKY^J^^G!I#s|1NJasLuoa9oXb>loleV+HKobQ}M>g@FWt3Ir& zGHkKZWq47nedNREanRQalsl|NEdRlvQT7>-k(%K6G+Ir_z1r_&n<|rp$a3 zjT&&JvUD!YHhryXFhhIP zy1^fQfTwAp5c<*|iz;P3l%^5xzGN9hr=f7)6~ zNqK-0AjJt6TXYJisE_fRPzaQ7wn+tw zlqCXDL%Pdcl2#=-ec8gdnl~n=leMaaOEt25|2VVboBpAH@ zAcX}!(hWRxw8MiFvQm>9+e$TsIU=~$EF}v}FB%GEADA4}6%>X!p(69)9_=WI2QY-r%hGpGTw4r@hjAn(!XKSn0EWAh{1n5v^b26>>^G<$`02sZ+e`rT|rNPwFl<)OL0BbCh4g2>QD~I6z zP*8Y@OcQ%31Y`&bwwhvn=E)c#pNHGpK(F&|NGvkx*H6N7=;F~Z2=eF>K2Ek?6)14o zQGA*lCX4u&YZrg9yMA}``fArZ?DfsSWxphDYIF18z;%E7{c{5e=^NwkpZdPrCRgwQ z^%2sV$)$%SPpr0$)_Vd|zDw6X6~OAi#giwXsuR;6+lG%zfQqi6rF4IMVE9qi)}uN( zp^J-g{iR~-P0eU$qOVQbv}p@i=zMsqv`>P?&scKQW%W8JOaxcbixDJLdoCG(s9OOT zKUOGZaSNrW+16$7UM!UPc>GSDhWnEyDZ@R`4({gR_or?cA$s+zy=dQZ+trt`+m}6< zTZByR0@uA?vzQGprSx;BJPr?Y+Jy!-6eNK?Utgy$Uico&zC=9*BXDIwYf}DzD@pRR z#aBic;)DRLehA)B(RqCsuwT{gpG=1yCt+t#WkkJ2iBxt4Ja>}7U?c+X(_!&I)YySd zM8Gdzn&Yhs&sTgsN~CMHn75oM?QIJvL>06-)fvsPAn%b%=Vx5(U!KD5yLcX-ih}>L*Y|3udP~&2xwFeyW7|yZy#)Q}p4?(m zJaIUx)#iM@T}x7En-B*^6;!CSyKHDv?7NBm1zq4xrzeOXtyMxhNu?{(Q3wYa%$#Kl z16n_sueDNr{u+IX-Z3d5DJetn_H>@@Jy))U&#r$Nvty~_YILXL{T)A2B=^F6_Bm?B zmy3f_oyjyEE+_|upn2BLFEup;7`>O%zJMQs*tSgAjdS>nbbZ!OjhVVq?7XCT@$E-Q zyR0pnBizGz$Q0s}mL^x@Q@!txdR`E}B1w%s-H>=b7jzLFIJV-g2-+uL?>KW`QAfqi zXF;rOd9`dsFY}ZL4t)j*KMPJ!`wv--{YIF1(j7AOy~p>r+o|Q!haj#u&ibng$0$YS zL|cx(UfmF;ut%ex%1C}_I>T8XY{`%Kc4|x>AYZr=i3+c^qj|qwjyy>yH`;sJX|8<~ zxy7C?AxK12<+vfxq@0P{K8RVqO@K29XrF>QCL`-Vju5%_peO(Gu)uL=rwxZ?R7e>;@ zKINvb$r!QSQE5+4VCdFOS8uH6PPG3Hk}wdbT1Qf2%loPCaQ}e@_U>2bXlHAt*6Q8% zWQJ%z`$C=79&j-`+MNyVV1$v*K;s~s@#9YUBizCG$_Sq z#Al{!#wBDt?O%jHg_;k@GGD{|=tX>}zdW8JvEq-ilVyi}Y}1xw*UBzctC#{y{zin6 z%Y!gkg9L%xa*s=gBR`eRSSUB6q$j@qt#fVvS*sOnb}^~!K+_Pv3I{AlBOJO+vH$R( z=7$eI>TFk(bjp3gXT}ftqFY6KYBCurQuF}LLgK*juEIMU{3+;jxjwkzebB70T4t#X zNCYIqI@tU6>*+OM&6k&_4#zGwxMJ_FSf^E%APHkDJ>aaa^i8B=J%0@NS^v>|hBt4f z3Yv&l%EyQ9w)18lb^<>1ySp&^XEa;#mJu&;{C=<2v~I{$QK)(=tmVm76`RZXj^+8U zjRLANXfUlni!B84F3?>i;7hecr?+05OEGe;t(CIg448 zD(2Q&V^MKuGs=}rcF?D*)z6{~>wM@Pt*IP?3cP_w9I{47lrTLdUwj)iY7V|}MLyC^ zcsai4<;&Drz1yD`SyDM!S^7wZaLw%+@y#C zr*I19*`4sSr?Zra1DyuZFjd8Ht~o}txX=L&?h!~TzGZP!f&I;+WvAQE1Mz>aHSBYq zd2l;QUtZ^O3m|$CwMt>Amqe|9&kxdREXi*)E4Pp+o6k7kRZb=%>GNEX0!NRXeRE*AeVqiG5N4N=K>V%NGT+}WaB<*@AIb%ew!Yza z+dWVFXB4&_COcV#*OiW6%0qxEdiCOrd1k1>KM7j>j3Y&YBYyXHgkoUQ;6I;3fU*t- zhlU=!hk{>QNdlHU%C&2`DLG2Zd{I}j`5{613c#e&Sd5`z%9<|wvi_XU@8dZMS0R=6 za5~&33@>33X50t;7k25e47Jjx3RBwUt=PcM7{-+USEn2TcC<;5KidEjAG&(F{qKZD4!5;|NEic``J59*v9Bz}hwuTuw-o6>mRJehM*#Sy`+W zO1|q-aEAcR=)w2wuj%LYDFCMU3^?qQAi92s9$>Y1G*d} z=l8QSwXsjMTtl%7lkZn3$PFWwW<3mJu+;S5TW$Y#VGm#tL^7-ms&hw+ZZk&x(Y>iRf2m5o z3z|=-M2Q7Np0WUuN1c?ImQpUP0~v@zDYGM$gjAJo2w-hADLsvwdnT5Ar~L)+Ho1J7 z(nigL1~ydHnO z2G}2j_H zPZV&FKp+#+y1P8FoLy*tejd_yJHY3$sTExqleaMf_{XKYSLa4`bTGr%e|O1CU!nYV z?C;T9n}+X`=wdcF6fKXHC8GZeL_{XxxAipQ#7P_lEH58t&OMK_GG$4^z6HR#+~F}^ zFXuN%&YjkrjVGU)0js8yZ$c`^kzm}`#uw8$vN(af|j>A0F+cN zouOyJs}k_;dD?g;&-y9rT>>(7mK~i`<{$D&CT$1<=#fE5Y5W`iJ`F@fEeKKtiM85) zc(ptQDr)nmQ+oL$WUi20YcvJ0I1^`|oRXQ80%!V1f4Lk5vzK!4-vj=TB62=#1S@ezrM*f~N8xv^?09p#1ab-A zL7ecJj}M3+x?D~K*QqaAic}ncSfN2J%-Ip)Z~H-7$pk9`xXk`v=ykcdOm{`CQ@CUw z%$&TmSXM&$W8b%s^bgn9z~b^_bhJg8!l~6Z3{g?aMPOBze&1i-W{@r1(NCoVUA3iT zjn3o&U61!A8!#ETY7bqc#WR@h8oRj011prBZwh}*J?r04fTVuW#YJ&!*;dp6JFEviQ`NfZ!{PVnbWL>| zi(Hl{{cU00`~MPhgTprKv$0?1=9^1ao$oW?$Kray<~^ z6W2=l=Kl4nwZ{I2qJrKqY>JS(t>%v1JuvV8=K>7$@(~fNZI2gJ1Moc%7&xbg@6gmk zG=eF^CC*b!kVA)mcPsh5XY1Fp{5t+5lr4@EK>5A-;g#)@$#H;77~(~GdbB78$l33I z4PXe3zO<6^eAmCb`!7ffWWn|+t7}(GE^n*hW$FzX{b{O0!fkgu@6$XnvC5;oTpUyU zC}WKW1m+)PZPbAbhzJ-_Qs%nq@shAl;vHxMfF(o}hpxJorfrk&$4ONb0)#?zJ_H%g z06lcF|NM0!>lLON2u+9*;;L*l?Wu7VFZA`rtp%F&0nMLE} zp}O&MmLh`*u3ML?v%L2k%{(Kl;cdHF|K2G6tq|+>J6lC}YXBeBm5$mM5C~aGelY-m zyV!1BH{p!?B5;+ziKD`WeB=T&0bWGG^L%u`mgq-|m1U|Moa<{?WEd@;q(uG=CF`|H zOgc@(pq!+A%Y-N;A`a*qi&ayH;n}fpg|q*}n?IIZiGu`ioRj0(0l-We*J-wmxTdtO zCwAfSHe>oO&`bW{MB z>E>h1gD*c;%04NAMv#3gVvW5nMtj!+AhV`>2d+TVX*pQIi`E!|Vk6}D-~-V9+0xb&c#&zfHV3}jF;+WrHtAQHJ~A+-p4DDyi& z08*PiP1jsvam`@S7qXY106gkbZm%}$y-uK_lYJw1Q!X$+z;9*%@Vi3lS+HcuDFS?i zSye6&N#F=r@R_X$)N!=llDcmJOdvmcj@S_l^;QMy5!uMUgRN#%JFifv`0`N zMx221=i_?FE417L6os{i$GW7ag|7SNv0EZu9*be9P$d!9ub@LDz%ww$|C3W*-m4~N z)^k-eT{>*hm&W!8E)zv&^9 zrxsF+jk!AooPN2{mJ_@0SNxBM0i48o*nEX6;MzeArYf;i#l^<&Gh#9{Ou6Q(MaazZ zn?O7}){VA*;(njhy0$zzVDw9hdoZmC@UNVg9VH9M*&yhtg=m~P<-8s??6rX{r# zw{@qj%?p|z*HxfMU$tKxr2(N|s<1pR0-&WhBI%>AsXg#A??6x(6@p0o2auHb20>gV znyf3rV}83^oBqn6KBOl$5)2?vdYJDU3zIs8L8J6A^P76-3Yt!%E;7Qr=|m#J%TxC9 znB{VDk*b#g?LTYi466J5DP+!Mty${b7WJYLb(VMOO$5#-5~k?ssp`R>M-E10)2j3U zPuEAM{w!p8z#&#iyFFjtBo^g`Z)~-7H{UgEnu5@iw`x->q4s%Dqx^wgu8c|I-(z?G z7ZTWM%gn5n?FRBC-tw$3wohm6NXK*ESvoucqa#Cym)aO-CHvioSb@Oh%dT~-rQsqD z6zp2;UA6)yOampWrjl@TeHpdoNyj_zNps@eC|}L!S*XVriDzT^(C97Fl^n)!6=PV& zy|^jG77=|INTYIpo3Xv*sUR*gc$F%eDRSa_ey0%{8)f(pM2vSRlqIf*nD22jBzvqC zEfpVIteCio9ob!^0P;HkZbs+g&B;;<16YQpYPIPFW(t?*SIg;qN1&Xf>Deo@iT7-! zqAO;&uq!=i`2VBnDud!`n(h)3Ab5b_4nc#v2NK-f-Q8V-JHZJW+#$HLIKkcB-DPpU z%k$P(b&DTRMeX*T>FGJ=^yv@ue@0~VPRfQ$eP)8ze}%$A&ZyF!%CXZ24jDZWgs3cL zLh=Mf-|9IxPX)@gI7F&Mc1GSNZ+Cf{UgFrNJnSQr8`oQJB=YE0pYOX!YL2=6IpA_{ zp*UHq2W|xyw~b*~)0m?=+_&h8#5y+A6W#)sc~PodF`>$@6x3+?=lZZ9J!a-)OeuDT zw`z_!Dd~D2Dt_R}ed@L)?BK|E0hm`pR21*uhg3m0{Ps}?%T0h}LB-liAc)$qY4{bt zm~b<+oEtbq7;kij&vXF*^DVyf1BIM?VW${>Y#K?q%*TP-D5?;*vc35(dXO#SO7<#Y z@W$+j(09u6<2r5+NEZ_{R4ZQwoyk2NZ*4R0}Bd^ZQb3Bu0%?75O~ zYP2`Sj?_of>M~xyI={^&pT%Tkt^H`+Ga&fN&FgLLeq@ANJAMyOY3#!`#7z=tWpxZ_ zM{{j;j>fA>fmHfkVJ_*@)SRyRbL{fUSm7hAQ$G~QuYtt=a;8*bFv8JIL9@BWZ*fzi z?32*qyNgi%HtZ zdZ|^?7OZnNfUmue4CkkA7pNdqm@lUA4GsIPf=CfE2h5<&&DG66esT7&hm^cr0#KJs zrDExHA2d1I$6$Rp63n!bJp?!2cD1jc!g>LP)#$SGCn79wh)h=?O5r5I`_|Id)^xz1 zrF5p`@88=I%?D*ZJ;-ReeDWwsppVv7sTg^MM@Odi5>>dv)p?}Z+{Cf{(HG!iozbx< zUift~Il0O$r^K^+QFyfx)A(NLCf?D`7My*x`FbZ}aAv+#0{sSK{Ta=R=7-CU!xERH zvHlimU0s)dPs#&%%2Nx=<PS*XIGFQyvla};MO$7AtiNE7B zl-1O}k%kLl3(I2&c~zw_U|jq#V5it%C(67&=NAec*!|0izlBq~@cT`{D+ZmdOkKAK z%uKDmtY(&O!tF+lW<->if|=^;n;jip?Og5bT%DL1nVJ~DDfB$|bePNqqnz+O&1Kfs znzoNMlw)%2-rH)T% zJDI#@eoXL52quumH5`XC`#$fNrz9mk|_+d=tw5stWf5h2&jjNU-P+ z!WYX*5yjD+%ddpx{FivFg+OIyaU;5d^{jm&3*a7yEI^@8TTLS_TYVLg$AeHrS1}K- zpHff@B1uTbHaxk?T7X~&lZEF|r-rF}y172M$@GiYFcU2UFK0WS&T_Q;wKLyZE~3KQ zZd$Be6f`eHEsRYSC>B6y_^lWq$4e&THXk8p%WbZdU%pT?2qY6zr}tJn+beT6Nnp&L zu8zDbvldqPJ)oOR9=hrOl(T%C-n!h=(r_h%Pxo)I1GU$LF(X|&^`71Ah_5A2+TS!hBjn9|KfMzMCAo@!q zZagk8iMW>hp6a;y^)rr_fGA*isR2Y=l!CJ@1i(F=!wX8u4bU7 zhr9e_an>2u7GD*Gk{vtrsmzs;0knjKY8*~jfU66>cwON1xp*?K(>OWU*;*>8Ou>ChPSYUniGApK8Mv)Worw_TU=d|)2>zb-jEz?`9J z>7@yTJbJo)05t)bRxj|z7S#H&?gJF{%`tQHrA}lg`N!^~%q3KP?9=(dwW>tlb@^^#$ziNo-oxhgm2d#B7+fT`u>)p}jS!;q96fUKr@_ zNM(BPK=1%5u~xPgAXHs!Lk7gv^c5Tx!h*%MfR;&g^!{YH0h*!04cy-#I{%J(B@9R{ z$hp6$J? zmDZmONsSFiP7svZo9hA|VvubBSsWgb91P#|Gn84igk*T7c0{wsiGzg(P1+d541Im2 z-LVCQ--Pi{8|l3%qgA>V@VtA`?#k23m-4>W8!I+sPktn;J{Xb37FKQ0_3jbVW{wgoCf_J8$$L0R$GlC?mO7`b4v>|H>X))BI0^m zWga7gGH}_UE(F=y2efLu^2uYaSvu2amoezgUUkWx{x)x#v*A!$d9y)y$9TgggP`%* z@=JO|Q`T7p^A8nbaoxWlX)NE>)y`S@*$;MSV3WrrPmcNC`SS&Q?}f)}hMtvnvC%(_ zNIzcgI&RHreTq}aAJijOK6GgNx$X!!*GBXkOZL3O3z`Nf1XD7IQytbveet!v06Mq( zg*f7CB&Ss((0ch7NestmGjQ!S^J$$@3eW= z-@~0J6sklG|M5lj#Mez{&u&su6ryzG6A9hU_$B8DFUW!|?CSirc+2lJJt##WhP&OL zHO(cjl-(K1yaRL>f|ydG+Lbf}sTwR++EkBD+rq0^i29e^+;$YY26Ev|RV#ln#&pPK z7NvfmISK%RXIX`kgN{Z-QOGCZqob5lc7&saZ=LGS(_nM@>C-Z4&sy@>Rw@}KV^&Tr zELKv~VcRvUuFV*x1QTK*RUGsFC*a`!WA2t7SL?b~(E>T;bi1#OK4vz)Q){gnrs~H* z1oqmpX6+%Lk3y4#JLDmeq5ZkKwXsNY?=%1gIbL<{n;&r~-W)v9n{AD2+Vj88jN%ESnC5q;yQUlNmy3skT|LNiih{ zO(fO6inKL#e#}>pM5Ri1B-HU-(J^e91YnkpPk&+l`HE$D@eDtoY*tS+xG*4N*My#O z0`bG8i&o19l$7olMeg9@%HuA37;)A_U=9Ax_luG5y0YbP0OASJe145SR_7^^J-^|!YUNXpVzFX}_V0;Q7Z&=m#e{@EDo{>gvm1PS_F}nKk)HmQXl*y1 zVho?%;Ok0pTFz!p*LU9&E}!G^dFq6>2iLFKIs*kz$S&-3mLbVQli0B7yJoD| z!GTgq=_4AfTi<0-&N{z~-rr5uk8>nQ(EYSM$@6-C??q{{HUxR#~`^MtgZ zyyf-^7)P|vVMO>=gMnCOw5muMn3`KT=N1bGixdz=rA?F$Xc_Tc&1RRg)vs>Jt^xZH zcYN=y!%Tv?+cPKgg+5yH$chht2q_A!*Iakc6z47xB%?HYNPQmHlL&+~VIJJ;uAQC# zCe9rM0t3v%hnka9JXlDW4tJjeA7u?}DSKCe+2Au3COV_JFwTU0jS-1uow7le%W7Us zLSm{fm#Y4Bzkb0Gh~qM1E5m;ydrOgYVC#Pjbk+iP^TTy%X^Z>3FaZZ^Ri(cD6}WXY z57%MZh9QA4K{`!#6!f;}egaU=l!rOw% z7(s*A4+`a&$?7KykNs^uu$r#;>yy`oNN>wlgU3=5;Trc#1Z~-^-+Ac2w7E((PUY_# zxG$N4rO~TT)WIwoNU73q_a#siswz1H!+`N$P6t=8s*65n06Ai9UWovTXG5^O4JWbz9B0C4M}#6ugwjvqy+{%`n6R@~xyt`E76r6qp%H=AYA<8* zEg^{eIQ&=LKg&~_+HOigHO#k^Go?C75>2GQY`RFe?~0|FpmB^J+UWmCqBa1NQgr57l6u!BT@DVo*rmegzh3E1>ac} zsFZHlt=kskW@dN9Byb}>(90>*jxBHJj6nVFHhB1+r<&~u+hTL&QB6+ zHY8VtF@FB$d_8*hb`+Y0G)z7Nn1hiVTyLx$Zak2@1j;q&UG3BUx_!}oAMpIz%|U#3 zWc_$m!<4GhIi|#?T@QqZS&f`4kEN_$K8C_DTJB2x<1WNPRyyaZy8Ewu{GwvbonN?bZZ}~rT z!JfB7TkqsDf08WIWa-7*>X3ch96Tj(Hy`T?jy7Pl@cifj*{G2PKeC<5Fbn;g8Q6_D z=J5cVJYe**&=wfhM5Qv9b&JEX;tr<^y*U90v_{=H+0XnWpVOO@(F zO^)r1w~QZl?QVy|j3dCOke9&QZV_~Vqz0T}{uJRyQK;sAVmX(Ef#7pF029rLY8Fha zGEh`ek~+4}xeREHS0m;K09W|k?PG^6jf5|XY@C3!2p<1&rJPSPZqzE52LTAxd&9o~ zk3l6aTfhTXM3>$x0vC4DR&v^92ejm|G17zBEG`CpYW6g_TKb3tF88{|WUSQ^(Y(9= z%;3fh$Vw^$T}nihx?m53oAArYIF3y9+zIcxYe+>me?&|Cu~FrGtAWYj44q=%ZIu)t zW>lq2Q;wkEYkPT27l;0h*cbh5D&#RT?|WSxWayV#bq{ET?{*BcBXdxNzX8ZBZUC7m z@^Cs|{!&kI?k=4lx4Ctr8%J8ZL%_e%g?**~pb_;TdWzH7*wmZXK4E%bVL<@yFfU1v zB%xHn9ai+KdaK@j_1W-)24l&zP#`>|^Qxt)i_myQtxM|7eag7yRy{+9eXwhT{eS4g zVHg1~j+M>CRS0u~3V^}avR;=-GZ6I3PPIklJwQV?Yx>aA&mX*P9jfIpPlU zDY!)6l1{tMY_j&k+w|+a(}P1-!o8)ecBuB%vr?GaH(N%%9!#<8!|L#UjO;={EUTvl z2SQS_m)}TlQsjHrZBqG&^k6=n=-W@<{=8LX?OL78qKO0!`!i#=FCo$_{3({*!S7Ww6bODpP0NNZCj9)WiKJcmQ(Fd zz+z#$a#*a{xT>c+nz+Q!u|a-4)@ij~TaazP-}xsncSc!oy4E_r@`0avqVj65#qM^f z)T}~G2KO36ob>JN3%I!!AH>ofAzng7YLi6Fd%^|k$etSSs$v_i8%_-oR5 zMp36CdQW^cbAG2Esy{cicG>aqC!r=>=~$IL5{yBvf-`0)4$QAV{@7LMzkzD4-l6~_ zKua=f5Q|%(5?~VI+j{ttJ;ULffj|c6ac<(L%Z-6$0ucRm%D>|LSk#-Vy8!AiUA}1; z)*_4&tuFMKS#LF&px;|;->LFAUo4z_pw!b<=iU+aVy)p)_l5IiqE#6;%BCyy)Shx~ zwv^jEDBMa`fyFcG;d1sF=plFq&~r=+t>OKFf)P~jg0rEhnIk42bNAy@1r0fqBp5_k}4SMX(4W4SOnVP}jS?;83R?_*`>V`bWXQ2E)Y2>D3KamsA+;`FcoKa`q`qe||8C$cNkbZ&2=R zSY_c<;&<9$S#_U7gJnN^U82=nYdJik=I=j~IRUUE4zAno?F~XZ9jPp*-jtd?HC7SQ zi?ina{@!bd*uTSGU(rq%EcKG7{>@HX7HBeEx!-zSX?Dmarc5Ip2nhSF+>k<3?}-3r zLco;$ec3s?<|1kApqNn~Hhy#i6F?F{?7)iKT%%M;@}hxkzAJZ9tivnQ>~gt(Vwqes zm1#arL(3CVf5L;5%KBaZOzuW6m$zI+7&|rMi&UW0jM+PpM2*n#K4HaF+wl@hP6}Sq zOPE^Pa<={s!j*RZlw^F@)7M~&QasrAK!q6BTtA)gIRR_$4H#6vxDthl3a5)xX5}tJ z?8m_v)^pQ*ukYqUTM?|^gdvDw!Yfc~B(EYd2_(OyvitbX4%dn_)v=>I5h19v{d!yA zfXPv?6p_)1d&(WXz_#3 zpMP?Ur57Ddxt86X9=~YctN+FjZ?}o~xWL^Kedp9UZH|7eT;Smc4AN$@UmlMslr3v; zo>XNm(;X@?fgE}1Z5<}?d^GMA_Q;@rbUzgEwaJ3$%+=cMg7_JkwodLV-l$S8dLDNGiDXCae0GOzds&9@>Iz&->dRBFbjJR6ZC2~YV`3%K9LT&!6$&K-JPuF+oD%UP>>m;mafi+> zS%D{?4gxE$Sg8xvJ$FCYLN62Bj)5Yl%e&D{EQbTz_#`qJooLD|OW`FH%sJ>IC7W;cV*+ zc0*z|b7+ayk9T-1W}kK*WvyE5eO0w4Rl!gCTiZEb>F&J`IM}k(jSMTN6MU~b;o_GO z{oc~;o8Wm6SJegH603M3;d{#@cP!`q_0tO=-=6l@X%e5X`2?8?5A#pUhoRj(bjNg=rfA_!8XMAbJ5M`l|G`|d+RmDDth$W?d3Wh&gZ*{e}qnj z6?ibvYd~84>t_P=o0!lo|8T|kduu$JzVjRJUZ)1(#*Khq@aIdxJraVhzce~=5P7f~ z#Mb~ZoiVSc)?6Xh&JJnd6OU6LPUM_56W6PZHo9WgYK!ZV)L!MQ4B_kJ=*it8(b`5^ zwxi1P<_blJSFBVi|Eosk>SMnvx+wV%ZNQTGJ6s~>XOS$vI=kUNgZ*V(KKA?53#;YN zz06#)RPe{s)~6-XaM{~Dws(~jaf7?BtusRc*uM>s`LAi}P%%~iVGddlDj)9dZtQP+ zJs<9j|GmXTn1wsvx#a^3_-rMs?_r@>vpih^&Ew-4aDb13kl4nI9(_q_<5L1B1i5># zI_sc>HW8qbpwRhORUYLHmtt@q`?~u^o;L1+_GLDF_L6-gHjr!y2nmzhOuM~aGg)FX znyU8BB64BaQ{=0nKBrN>mDVJaRR{9Z7=h;BdW6aqY~aCB!itJWYw?hK3kMPpWc>Z6dl29 z>$B0)q%g2?$B&%K$+)HNE_v`o_dGc&eI7gQin~mvn$oOJUsbw*KTkD>eBL$kZLtPl zDC_(rK_nr6v4xh~LTF=tUuj^tGaC0jji=qAE1d4LYz()@`SMSJtS|iI=7XPaqqA2Y z5i>47>XKJ@E%G&Fy;M0|-1tUQM?^pb+;qB8?6zA!9I1GLjfX05qs@DwiTLgy+1|jM zyl&BG0#3KULRD$+K4lo_>UyMu#jB{oAl;$GCk?^}X9A(3q4iI>dtMjvu&-+s%M#55 zzFv>JslN52I{a`XHgqDXJnr|1S&znqd2M(U;&t*(pQ3Kd+{1k{|NtgMl<4j@qAc-WRNtn-=T6;q%f*yys6XO12Z zJe^c}rWMod$akn`P#{?OYO@&{QpG`wEFANeNVRK1LeN;+tfuS%j?+m?`)pAY`~(Q(}@Bo>0qh( zTUo?Q%FKUDQA_KMhrP?;W>a|YYqZktc3Da&Tnsrt22R31Q2%73MX^nGcE-@eN(ht( z^&H{&S{c$Naz68*3T4US?Hawxu+S%#T>5N*@%W7w1`w*6?t47~NI1ZE)4h$cQ$G7V zr<(bPNOX#8D~|!(K@X26dzd!MKEunEA4=Z(B056a54)0&xc>G6!qzgKci*5Lo_b<` z5!zCvrq4IsjMfclwd-yA_ogxQo`p+3`0RDEpKz02zaFocdSNJI!LGB^uqY9}EUg5KLbl?)&|* z+_4=UUn+Unwc7+9ubD=#Mx zxxL`C3#59ZOh#F;>(?&pc45y=; zABZ?CHwjkiP8MfqnVDZs{#jIOI7&3ILg^;ud#S?&HGuqLLLh5*I|d*zFS{6hi6UVE zZ`6j3E7^OYiE(kFgv+p$^4T)@*V}#t^P5jRZf27@Z0Lj_jfRNngW9=Dor+8`=NL(| z!ptn9PYYbHe3aZSXEatlKT(DDXC}{dlUg1eg&j1gs9h=*;<^;fKR3IboYpO&WGIIN zp0Ud33S1b(JO7Rf*vY21LoA z^iB$%O%PnrOKdPy^`>`m*v8UoF390QT^2p+`EWD1+_|y+SgjtzVFC@%9ihLka@L-* zCI{4slUS`*Jx*o8P#wkK7m#0U4Sy6aqmo78FPa2-=#Z#%E)7Yx7=m|x1t&ZYtQK);zpHGwJeI_kmiah{z?c~=VAgsO?~8vw9bsQe zIuw12yO%hiJEj?Y%%<8Jre!*JuAqgwtu;9^1scx;WDmE5^bM2QtY}6O6grZPi*=K>b{Q;DvD5F?S4Y`s zq1M}U2>M(t-0g-c89e_KqHOXLa7m?QnJz{Dx&G)V{n?tu58=EtM(p6SG4I1260TcI zV{-8E)vk&#ujtG)0euE>Vl(B{$jN1YJ_?c5UaLBb6#FMo=ct|wl3fzyFnt_2 zyAHEh%2Pfo=DE$_a(M74bjeOcec0iyMgDjTX>?@RI3Flo;bE_w>=z2M6J`dvUHpWV z{R;c;YadOPbR=pC24+N1&H-8opXVhUNCQ)qqv4-S+$1~$ZA!a5jxQPeb>ua-Vw7{UraU1?*v_3h2` zcI-)UIf+=Xe@sTQ98Kp|f$dvsR`-&m4c7mPi2zCmrtB^Mj-M)sj5)?!DKlLgcOj7Q zGTt1jPGFGqG)>;&LFv_Lw|ngRO-Bp<>*^xyo7DIaj{^+4#bIt8&+X9$SGygj9WJN; zG^BJTeDe5>W?`>lPDko+KE7w1BI(gTTdy55MHz9QDVi_(D_!Jy?X1cU-1}#Vr)DYx z?DIFZ%AH9FF1xGDL~(X24cTV{^bH}8!kQ369rnirZ+eP~aG8q9Sf?Y1(Ll@`lI8LH zMiUvTqt+f;cUoN63}cCmGsHki*yN3xndXjqat?x?U)tdbWvI-mg#$C1QX&emZ%tKlbFT z$D&G&4ztg~xNH_{j`h`bHC>H{wjW43hZjR}#G&iE<-x6wP@pn?7xQ7tEU1ptn^FX% z7Kf+vLbBi@N5`Bs+?$7l-^S9Mf7LtsbZ3)p%KYtA-jY@$RJR#RTpoRUCH5?T^%U$` z%!~z_5D7a)32Kw6UBd^@vtxC4$0J~1f{pddsA)-uidBdZ+zgLOO<0~p=9iypu>?eh z?1%VIY0w~5Dt+uy@ydb^asGy4xLE6|iSv&io7{12Q7C=S3_Pe41{P?mK#WDI7ZDCH zA`KakodQQy0|WwJ$IDBBmtynNhsWg|Jcup6M)5DnaIHUx&CYOX_2-2Ms%I+Oq(%5t z6@Gb*ucI`HRG<#4uD6_qjE~%Jz?{rEJTtUsZ#CRY1{*%g>}bADK!oLa(-VvQ332Nwak_0xO;*2AHf&tlWnm> zV)qSPc~bgW@xL=Oua$1b5)CW0s78e0?IB2RZjXI?OSkvIO1mX+Z7N$t*iYRkcoM#Y znq+;gYz9&U*aG^)X&17Dp9#L9z88-}?5?$#ve~z^g@m4ZUT!XU{VZaQ&$uvFxB1it zTXyfHlHF9)?_zVmv1N`K(bSJewsvpkqh9$tIU|2y%+cPyRE#lQS;PAW4GKsuxmMf! zM~I9`{6SaK)C^ilG#PcX{44dukW6SoMaV7+XN^M+MeeqC#V4VnYI1F!))QYSHM7zx z=2P7QVdf=%x>`ASPywmsIhR&D4rPII6fFl}xpH*=CtR223mqQFi#H>pZO(<4i>}np zPZK5DRyU5Q;d#FP3tGQZZMja%9ZY0W#Vib;OT9UWboW+vNHzp*Cf*!{0_v0_UFtlt4mh?2kq- zlSi&-^=I6yZu@{)Shc~x6PUe>dPMl#SbZ>g=lbUgiuFoL+(jwwVoibC*WG=NR}R3>)}e<5FG_yJGl;`d{c=3HTRnd!1XIi`R!VWwC7&iS z-uK&hF}f&^%b^Ni=OJ%cu4xDk9y$Y2W3~P2DYf;x=C-N7XXHy-(1EBW3TXW>Cb{&K zBq|4rbv)!bm*Qa8h0aPG!C&XH`n^R1pJ}w=qe-Y2!+TFlVpGzgK!QHT^MznicQUKm-~gURMY6fH?P*%W2~(Mnq*>UM%h$;?m}{rK8{wJgB1+E16xLBdjpx zyT}bi-yvFrd9c#576k1{_JHiso04hU?zpoZtGOprsm4{ZI8q;XJFqwsWk#Px!H=61f^pFOGA||%eVSt_8&XYK3w zmMkRN==HM1!tZWhGsd%JlOf=Ju-_>uin18}0}0>7ssF6f&7wCPm+@Ns_@oW|a^0Pd zGURbeo4!=zc#vb9=+?OynnP8ya7={CdwtXJaErHjtl;)@=#O9}oernzw&>Ld(u-1t zAci3Y4{XP)jpYN-HwR7-WBt~Z$Fm>PEB};k5?!r#6=W{!_T@pbb80TDg|3daDKgi= z<^F!|#Hbj;L4`R=Q?6p**?=aQ4;lwj<^Z~A35jgm=4_ef*$!p*YC7cZI(p@-p}ooa zHwi=hi5y%ux6J0T^i}V|MZ*HJe|Yl6dU%^|%88{0)z5c)`a0`&_n0h65~V*>WcWc; zCp5L|D}YxAEC^*Q{%tcZ4|G_u`rKVCXZg_920ygr({dwuNPkVdc;AJY(M-48sQC49j8bzn zQwKzh8rA~V=?XDrjoI6t_%rm2qkZ0;imJ6YVoU#%JUW)|&f&>Wwi$53>&Nrs3xLz} z2V6}UQW|_Lk8Ij7qGj;Ilm4Bw27LF3!GGMz+9|`{Ha2$nC|8_5=;}ex!5G;h8UQI6 z<#v9#t(uzalTJ~nm4OFUA`vy6LIi@o%!t2L=RWE_RY!JbpA3Qj^Pcn*h)OAXgMfQX z6I{1sX`9R-QnmcvAAVLG$}~}hB{sk_4B;H=kGIjZtffjpe*W}cmag*8ynVk4GH=r0 z6$?AsrJs&!N~f){ksn@d}M(o?*)H3jIEc6a*%|dP!+*xyOdDy$?v?jN^_}F zL4yJ+#EKI()g#qt%F(zppg`}vbb1+PxOvY9rltuz$JnnKmS;bLT#osm6Kf~ItUrYK zL1xZ()x|dQM7H^ELQ8XAVFaKQXIvF@fUWf#+Hnp$^ssgCg~PdFwbt$VZ~vPpZ3d^hYoJv zT+T`MSm^z((STsSa%zmC^dQC#_N_7#S$N!@#%X&%#OK*~rpVs-5{&^b9BWOAR=Y@U zJ&@JBF;vZJ$_9r>$mB=}0HTo0{DU4H>YIzr2KdSWo2iin^i{KN%SFp8yTzuz zmqD`*8YF^zqP1V4i1qTk%4>g$337AiRN;-Zt}oM4x#Y!AYBFn|ug`)3+4Z`B^kxl< zF|rqpri(t#p`48kNSQKy*O;85rHlrBEBx857AY@WfzN}ny@iE6{p*Cd>|mi(*ZeS# zp%Ed-MayPphdQ78wwgSQhFbWNGY_n$HSrN>-OHb}pipSGn9NM#l=_;)ie&rK^1KwI z7aisrdj*nqRo?Giu4+o4&g*n`9c};UJH1zZAAv)n1fk-^Gp1awN|m;P6$~=wZ=`WV zp_)I-r2T~*LElm6K0jL=K0ojU^eZVAs34uA5RaD16E$)puo<71oLkW2S)@!H6(n}U zZ#+q1q~^?SpgrqPrYp{qI^*{$`0ZbkG;(=-PG>!{%3%CfwP~i`cl6DUi<_&uO~RJQ z)GHMC23lvJmPm`mX|?W0WbMk#SuWhC8|wWTx|5-EWMSzdfZ1*zZ8o(o zCUmjYUi&7mWK1mlXvXK4>Z72#tj!9~^;MMhP=!tE83x+HjE$eATC)GEuLxZBrMz2^ znpAMBDatnCOzj<3qQY*sr9@W2hnR8FVtK_zE73{b(uIGFDmfPXpvtj#Udy2M!*bX} zhdN#Gz1{hIFRYA~x9#a6WVeFeO%;N?f!Cg@aGg+q)W(DO0P&5q8NFqpXf4SQGdHV! zXhA_Y58pZoTYCH(Mi~cH?<`b=X|cX@b&xKMz@N&zarK$C63xYonl`oHayn<^?!!>& zYj&xUL|1&dF1-$9%H#p8X_SLz4@dfq!n;hR@KF6RL!nAj$mUADI%#8wC0fzx}* z^$%^a3_OqxOh`RB^suc(;(8VyXUND%dAzHfI&(uHZQf5Ml$v~nW~h@E*O$9wn84n+ zzniXiEG=MEiD=VpG#%18rOQEZ{tiTFGQRoY${0Dd%oO;K^4NW;H{125OD`W#Cf|jL z7t*uFZC*lkSTH*@_Ojv$f1b!OCkCa1aZRh#xYEPhTM|P*JaUY#HSbLamxoj?d;H2M zt&b1u{_eF#xa@A0b^F8q3d`sDwj08){@mYQBNE@__&8q4kCXdL^;&TfVQzESL~;ss zO=2P7b0S^{!+TI^uK^pLc=&T&Jn+#h=Zh}3Kc0E>S#K8I50PJX5!}<{^c+fkNwT#_ z5M|-UFv!;=fKL(DcE_FG&(qr% z&E_Zj{-$-jaYVE^n*UpFC}){j%k2A=H1Lo&E(f-vdB6o;NzG=`JDz^6eY{Me{hxx7 z>38Ij51wX@+OHGG{V9CAv@4 zFH@kj&6h2jq*OW}ps^kQwW%WH$rgwzH1qYSlMQ(!zUc!7uh>;@0cpNM+z>1X!NsKn zxBJ0a?QW(3xaulP6el=yw_P-7Q-buwvc!Oo>WY{o@u_5|wbk2K>v<@lc#AKM{fzlq zI_ENJc9v-Isg+Kb;lkcUyWtdKpsMHYNr8HOe$c+d%1PLenOniabu#tTbTa9*PfNi6Vy^d@%-SNXEs zUp01fk2qYt%#}>h-%~r-#katStvuyd_@EWSkmjd#jK*%S3*Z2^PqW`K6-(|xzovcb zk2cSPD7-g5+~J4Af-uQ|Q1)0pbJO47LNXr5_}wmt8wAVOPIvo9d`;kh5s8Va4D2$%(q?ZEZ1zv;;_XOB|T!Z@SjHB3ri;Er*|2Pq5X~*Y_(d8 zp2n&C30bfaF7TH3g(ZVty0YKjT-g&JZ|ivDphOP%{bos)bZGwMA%)BNKQE_TR(Aq;WC8#ss0`xNl zO@b=(7iGeP0nX`xJYSiKp^K1}-WXF*w4#^&gnB-P?t73)Kz(Z0i~y0ek9EIpq3bbE z&FlOQAwin*SO9aFC+&0U6jr(9&_DCJ9QirqjYJ=NC0zW94hwc%XN!t?%g*XIYkxk|4lyZV3z-IxYZgx=35U8#q+w>SF*ocqFug~YJE4OX1dTd~aFZ`|G-KpP9SYve09@70AWF>ooRZ1GbI;!}H z^-8m|e)~zjPzK-oH6W&h6|DsSJ;`53jCrobM=WqhXP#=>jYfpL?eumEl1AwOzyn4K z#;ay9eG*FSwP4qXZ1xugKvZ)FsE#5<7L|zJq8exr;%^4^`W9j(|%%mH^&998nI@RLST9N7|#fB0?+UvzV}#Xs|gy)(^K{h{I&Ib)^d z5rWArgV3`}>X|s{^$C<>hh&>*@ANl~&3!(7j3YATa%SZF8W;D!1sNqmo>%^c!#QtW z!smtK*Q$*CmrZzJdd)1Rm#J`yy$WCgARIq_p5?phvU?q->{u|Mz03{1O&S~tIFVx$ zKHfoCQu(S%orr+>6>@IX;gbFk^c^+Yt9?g(^K8xQ<)}KyQda8|?O!aXFT|ic)^aCD z*BaN98gJc43#)P#ED0t!% z;3yC|V=%dsR%=lsZ#ub+&Dta)T_K-gEw_hV=T0FVEtruzD#p5NigQ_geOQJSKlRan zTO5P8*q=fE@&x~bgJ^b_II-%-`yhp|c-8DJ3|+O_5+Q^y zz<2*lpPeJY`f{==Dx=NgbKCc)DgwnuhYBzjl2KxB*xFqC{qPy&#eHJEoSz_Ef2NX4 zPoz`pObVyv7b8b7Rj+Nd(B01d&{{)HjCkwN)#gZm*ZmOmzM3Qkb1htPX5lbQ2$gyW5nNFac&MTtkJ2! z8(aKO$TMy;4g(9g+fm1ntI&B@UacP#GV~#){Wa=OT~JcCnbB?9M4xH~Gf`5?PF0F7 zP1s)R@yN89EMfE-X;yYKg1&(Q)>`3a#D5ARfuAlz0RJU`hVbTaPVbs&bFO?@?If|< zE1|%wIe0kON=823Qls;JM7*=xB4U;Hz3UXUcRjOOYc}5+vjnR(cL)#{xvmKYgtUjn zOO-~+QB^0}B=Aea7Fis&uVOu@78E52gDqhLs4!id6{zqLTd*MjK~%8yvAJwxJn zout|oovSf|VEKoHYHUEuzs@#ROM=75;gGqNRLED4bj;8Q?NUjEFTxN;;Y3MehP8GV zn=uZPGk!Pye~n}8<>@-KyGea~QpfyWHVP6Zk4aHJcV5gduOZs_sVa5y02%bZ83CdS zT1&39(1`Q5!V|!pjBM^9nQZ+3%?2dmYXuu06$pSI2M2}T@)a9wlYGct&+1d4esRR%w>)3?GZc~j(ZqS&mdfz4#nTw+hP7KMq8cs_xE>VQZ# z=g+-?w1)w8e?!c%(`8RAO%zZx6_s3kk*Esr?CZANp-)VTB(|zk0`Tt%9$<~8UjLBp zyAn984a_TrWjhFC*wwr+MmF%|hz&>smTcZ-0+**`x_2P_UXCJzB~QFg2IM%qO_s@4 z!My#S0khf&MO+R7LH`MI=}&OX(kvSh3Spbx-r8PsEBoV^vtyzQTeD^V!cdjBh)?S8 zj5S_Xy)9Q3cdcXQVg8D52GcJ*r5GS5cN{Ai;3AD+O9WQ0*@f!phJ_&G&$sMCbm8b3 ziiGjbM5F;?!C1mm)mFEjB`Lnwzy}S_5psDS!cie1yeUJ_(%Pn1EM)!~uE>cm(-Kcz1ke^`!=fD6eI?iC8rSp>?lqoB$q!?Wd3Oeiu`aSjG=Xfl zOJMhl^$CPgt!DJan-yu=Lg8Ag9+x5mM#QU==9MX|3YOGizMRy`XNM9$-I!hDIimzQ zg9pH1J0)wxgg8*{=JMi(h&0*L^FE#5*$I;R`Qt@QuY&qjDAgLpM!R%3-_twlW=yZL zd;mOl+M9hYO-4Ig$>&P%Bgyt&bcXZvg%M6H_v_xde0qY8Xrra0>m8L5p9=;@HUA_Z z7%vzB5apVcgqJH0+iHy&6UX+6`37rrO4-WU6;D^3OBhe4()Z#WlVNA+JWmZjXj+^& z#E0|6@5Yo6=^Ogm!nzcw5&l@}@)zCN zzd9`!4agUM*)Htc`?3NIzVUQ<-e2*y9EK@B!KfPizPV5Bi14fVK@y)YpS~TVQsiqA zbyOMb+aYeuG0%Ff|{%A_Jrt7nDxKcz?W75WBbi1AH zrGumqne{7y-)494xt|{WJ(IpsmaKqRL^sI-a!}?`+f$&msL9ehFM#*~a+%x;RkFV$k7S%C{U_ z^@bI8KGhM9@t61!pGS~P`_AMt55;D+m4YM9KTn~&H>W|(2{U5Uiit@DBqr&RnwV;E zc3dLIHQPa9;=Z6>mCRs7PRV99(MMTClGXi*_x1ZnPJI3l7Wd=40YgeQ3w)ZL**~sM zm40s<0Drk=%TR(#jS3?usE*Tp6Arjh2^Fa*J_H^*P64Td6qcjDCLxkGj<$6hzOs)Y znlVy2J~JijiIL%6-siG=d0R9_#%jWdoGCJqn2Xd?HLNCPct-a0kl_jukP9e!eTul( zCApe#&bMV!lz{3;YBB>`(Sz^!q~t%_D^R~YIB#4M)ziJ|FLl}ayjstN*A0k?noX`_M4m2ZZjVtfKvU;L8|?Kd%ilMm{(QWM ziar^by%vbYf#73cTd#qnax|DV=XJHf3%b*v6Fd{i7Ac)Es>9T3e%&9X3oj5x`#m|( zM1!^pwrAtvi^}61;dZJb$QFx}MB|O?CL0*;xigLzT`0v*^I$idpwHPqh$U!I5-uqT zczdnKD`*TS49|DBvGQp?&&7wA#6U`e0bU?^$e^2Bxk`dW1Sy;XP`i}!!rL@hFyUOr z6YYEv7?gESNxtMHJDm*3O&j(=68vS5*fPu~c1lR)iW1iXE0NwdkUF790^H=*WNa}# zu|}|<{RZUR%K5&a;sIp$&8FQyoHOK;@q&Sntcqx0>a35Yj?xlEmXvo!`OTe3ynFX- zcUJlG!?rmM2r<$IY_|(13d^I?^=DEK8wLay7x0GudGcqn8E=gV;6{n07SLfv%vgK? zmCjf^b_ElM%3{&mt`ww{L@Ci&u2AHxYg6Phk!*-R#fui3Q_GHJHm0Y>WoDXu2!`^9 z3fBKdoCNm;?Wda1lvagUPc{|k4^=8A@0zxJr96uYEePA0J7S_}&fNLlUBkIuzLN4I zu^+KtHnm2+gM%~RrtM@gQ5Lk=}o<0~3jh=v?YfX%S zs^@1emc_co{zD|GcsO~X^lz@ss90I_OjZm02LoAIbVD|E92Ve5N->d4r0@UHbk#vw zbzk>l01DD2DJ|U~E!`pANOyN5Ap!yl0um2McXta&mvnb`cYVkAH{Z6goF1?jJTgbU>Zk2kNfrJ_Z?8GlkQ zmJkIao9}k=PSm6Dk5l7r#P^oc`sAw;BOZMZ?xn#-p?~!Dotx){`_$pQ115p1&?)kz z&GEloeZU@4YXS+k#XEL|19XZ@L|S*ncvxZ*UOafNuQn=nB@Xwl7c4oWu^1dqq8px1 z#qIaa-K`ftj4!fDr^cuCNYYm4U_yVrNg<6e**96w4PEkXS<oaF22kC03N!U5Jk**EToT zH^DJq$B%%A$y>4Gff76?*hbJBMB$AC0|FYXP>Vz`_ZuTmg*J9PSDvHe1Qjt+z-r-4 z^R!r}+5WUswJ>G^O#b5G;Raorop0s7u_Hk5-nTB?Q?s#-ya+hL2@g*x9gL3gUT?Jz5hej58TnXrNclo3XJW(urxxHoXGv<|AHQGl`^DE-?UkQNQ~Z}U^91vy78-C6IAI>HQ*^FV{Mq1Zx?P$w z1^ff_ON_P7>(?B^`vdgCBjh+BZu|U7fsI)2X@H_T7tMuUFK2;@er>5R5`}59YA;4u z`|C&7lI5ovYWL-rA+NmTlUrO??ii>M8fp;S@JD#b=>Oz|5l?<(C*tw2IW1oG+vBxj zPK4fc4;kJ3A#G}?ei-6=siHi6LA(CfyF#eT6(>lM63J%9dM)>bV2QSgwyi#**s$J$ zKwpcVYG~Bk?~;@ldEr(?I(RD5%L7`Uxvc)NoboTTnpV~u#B1y8nC?$h88GY5x8{qw z3aFeKS5{mw;-od-I2=Kc%TA0^oHRF~yr^-GkpxO)5_48q#y?ypEbzglD8t0!8`fm8 z5P1Xq<6s+`<>^?Sf@4aj34e1!lJntqa1&r4H_{ttGpO#%>3OxGWZZ6u{Egej? zc&C(<*cE0@btr`FT0YeCtMsQzfpVnwmqIG&87HFM-sIm!a*EPV zEj0xd838i!N8;)k<6YF*^L43cnDO?!j1PC?4M1Y~gr4a*et`a5{X} zGw*qJz-4c49Ky&hR{=vx%MZv>a+M_H8?$(kMM5%Om(*bm+zCbFZHHCkfzl1lF!=Z2 z@OW{!)zs<6&*yYGm#B~FeNussYVxtZ2HsLE1Prlnsh1-aLMHWC{5QhGl2mDFv;@WI zEnnkIvC`Z3?0rzTUEuXT+1UHSeED;+@K?k*Jy)bq?#XwW;qlkUXN@`@jrAmNj_2VH#!d0D!o+16+ez|0HG1ALtRrxaz8$ZW@ zn0Lp(OXk{^Y88PY5x35R&aoMzae@yQr>NGG>7W4m1PV*%6?I7f)ro4h2~Fv&_AhRo z5$E2BYzZnoUMXWu004S2DHRiDUY?V<6yXa7lN9HsdHYdD-c*2Z2JLL?2cq)%(p z%(ZuYb!gd;*C$mKE5}AMUt4j@>!SxRHSC)5YX81%->3aY^D>6SkYPy-%pL(xeEGOn ziAF)g`3cRvp`q3|SBmg@`|5B}TcB1jLesl8W?4^DTP^WOtqe9iS*@m4bN0|6@5J;! zWX&2B_O2?@lvk))lZt$BMpcblo_2JxiO!bI{h!8l5YwdXH!lV(l)Dz2U3~hlE^`Kw zt#-#BdIGXWbL1(c+QtX&8^&9fx^%~X56l~_tXY8U%7_&9_n?2E&FhHkTe^QNg=Vbl5u2NcxIW5;Wao&zBR6%;U0i{ zI;`i;!Xo#kYk&?tfB0=07WB2=J4FKp;wwXjWM|q4(8z-l9T%kHc}pb zO_7W?ZuNQ*aCI`vfqKw&eT`5ai-wJb>$cfvg0$(!njtsa{qQv8d~Y1}l1;1%B~E&p zRL$dwKhJ%hZk|jQxVe2qyD}tDzT)%d(f)S}X-S;Bi2To9l|=aYm3JjYf-WyMTm9VtQKzkle7S*oQw z=(%$A5-3oK>BH`U{HZGtAYEJhzA`l7_2?K_m3wO!fuAPG4bQ4!2rylpaH5S}+@)Py z#ewO+eT~N(kMOTNR=1X)^19t|dTrcRWGfs@Z1G`t@$c-Gf!y?}6H3}zpn z%xRyK;eqj~m*C69U={D5ibhuQ{t#a@_M_dt!B@rgTJ4A zW^1gI*$w`Lf-&Fj%MyeCdvnP!Ixv89bhXb}4b0*HD&7vp!|}Krd=P5|2SJqsp~V#N z2xcl~vzAV|p1GqK^i(4DLk`ubG%nnE7H&-0UAnTN+(Zp-*zFn}w5TEeIQ7Zwf%W!M zKQe2v^fQN;bcDqa$JyBxMA0%oB%y+NQ4Bwx_>(dPu4^Esm4Auy<68|3%~2rs@wwu4 z+Vo@WoNoCracl&tQ{M5;*+~KuAzF4VBFMe5I2vw0a3TL2wYUKq;yWm_x1N zHI2aj)c-5Oq>gaL)Syz-8pRwb_m8phAy?%$ZfDlxvlXg#5cBqU!evSJV#5y{Hx`Z! zWTUD(76BFPskYXZI+2euVu5IH5Svvj-m=bOk*chsJ)`{b^A$co#Y->$Kp(sN40&;c zb5;6HPd}&nYLuH7=fqzg+*7x=X_vwfRU_la!8j|n=$IIMPD`Z$4>V5>fG@;Xw({it zv?eO*ox>Lz9p+cE7BQZE!2TCqR5_YOX&kJ-IXu1u6r{4N_t&xUD3Q~!1yFpDCq)Mj zWPck~azHe*G;86mHP^AL9S15p&7#|AQvqcfjxh&pfDh5wO;VTRlkdpCbQ*U`!O-PuB@R_w+IGqI8Mt4<tjT)p-L^g{FkK0u!!8!?P(MkEDsb2kv)-ImZw2Lt97Klh1N z=3w@IshacR8v{q)c|>&tx+(b=$waYP~6Zjz36i5}~mU5)Btk8sRLN z?IB=TuDnScf_jj2vb>ky_ZhsmbY8%$#@8DlG26ROs(@wbF|V0zmn&nZP!7=ojabD8 zb>}odm8PbiOmSJ(+Kt(FTJ}UnNws*9-Y;Yo5NswnUq7kKpe+qnmJCvs%$#a%>Pt4C>buS>3 zL;mFxWGW@#hT$-jP=FM3sDI>vn!RqrVmKOd&@sy$Ec*h^L-ktF`*MU$`mR!epC$ zc1}J=F;E3+tS_Ve6~>+#p{$Hi{M3?%Zuq(bTk9)Nwep*whd_g$``TOsNo;at->nyJ z)I)NM!CP}YkLm)otd^+;yw7DC^jN{F^eXE|Vx9P(WW^kw?^Hfh{aC;Xn-X9R8^R^z zzq_<*mr(n_3Fv)QxdZe+u0fs@yvvdAi&y%jQ;LO;#UM}wMT(WaR?1>&`AIcH5mFv2 z7kJxfl|+;5d#H4>uN*%yRGpX;s!A*$L6$5`rX$Qd;_YCKN)Z)*yVwd^&!a&$ZvMCUU>k~HV9oI zzvEhc7C5%YEy^~PZBwP2J?>hEBM2E6Nq=QItxCp!ldO|KTT1c@%17$J+%6xTmj8tI z1Y%B*wer34oQ}TsefZ?{ATUnBp1d!b%XxfpoOEIaGt0qs zS9%WNjZHtPGqNZaIqfKx<89#FM}}_Z&c>!rX=>yb=4)iz_(vlhT$E5Y>9)=ARRtG(;EcL6skW8N!)I8fAR=XLcrU`eaK6uY7#UWxn(=( z?A!ySQL&)!qi=^Jh#A2$&9;-xDt4!6w3Ov*q`AFcQ~;z8a!j78(q?MXa|4q^q@%zq zBaXAERnRbPf6}G#1OuuEDh6m7lxVT(px@ur`|JG=? zub!q#-;2Re1Hb0UleVbQm7znLn=e4hR#&we?!(5*-_pulso18`Uq~gK+uYaJ2Rj`e zgY)63Yv6k4aIx{HXS7s4jFyZ!ce#K1bVxUHw&Kya;mccV#Lu)uAXLOmwcc-cG_AiI z9`338APKO??Z5kY`#)e>Pa$|7I&S@=AvQl0rvnr6pZ>+*JO{Xl5=Mo*$~Se|{&Ng( zYKIz3135W>K4<`w=CSav`txc>Tf%LO8L5pO^;QX?T!D<|hB5N@D^&mDI9<30TK*;q z(G;)KOoM66bpf^&*r9{2geq=m&(IedRozd^t9*rW+3nS6k|-iyIdfZVIC8A-%`{E6 zKJ{ZkR{sAt<2oh=oF;I@K;F0;oyhy^kRmDnjZnna)Fdn2U3l`Z{J=uuqSbZJ!=kQ@ zfFp}KMfh~nNeL?XL-O3pNPR-+BueZd(G%fw!U5c*m)=OHqK+T&3SLhxk*mxrDMw30 z;ISHB`B(4r5DGdG?Pliktgml;CFXV>O65KC^yUigMK+5qm)cuGLC%m;pzpf-Zp-iK z2lRFW1nLfK)*!EM0_A6lo-{Gm>cBA*kD-H5!nwD_zt{t%P{fqx(zBET*6ceRMS{&@ zab$AsFSd^oK|%}UcK2(py+tvh>ZtRAcXU$2D4!T$1XaLyhSuq{BrHTc_aN<=VTJsC zIofk%*k)E|3 z@ZX++nvIV!by(X=JX&n;v{I=xfDCuef*gNH1DNCK&UxjvXbbM1AVr%FW-kGAl99)I zf8vbkNTv97s`>baILq^*H%`**^`6 zl}4_9Zu>Q2K(DEsfmm}?41fk%RYkKqLXBmq-dtUMc&8E;_a={1%!5 z(V6Z6hDr3tnbLtg4JVGV{!AY{t9Ry2+rosbY%evufAbnj0wSg>zNN`VW$Al|$m+#o zu9QMyH8bKk89Pw(#QAM}J~c*xeho+)uwe?H2kMpF8g2)Gq2cHh9!FDI(@wYsFs!n^ z*4AU#Fy`f+pvU%2J5ZN5dT-xF?5a~y^`4>!uVINp5VJCZsS?Bw8X@!T1exeY%k4^#9JLHa|{ zQH6J2oy3=i0U=+%F8nN<%h)&2lOo{K_FDkf)N~)2QqO6*M^PA)j=yWdG{_%O2S)b& zPYb}1rFevYukeTUx3TGq?f(ui~fSjhN;;oD2F-vHL6;~n~3`92!QD{}vhi<<2S zKlH8s>c<0C7*jcxx;<96YJK6Fw2T@HMTg7FQ1gq4yXHlmt=oZM@p~#O));v|Hq+a! zkFzJ&?c-Ii-}Jv7xE$<8m6bCJBJ%k&=0Pxy|o+(d4>r zXeljso%&Dl!U{4D+ENqC{?{P1Xx2$xK6j1O`QCVzqsV7aW&?ZXDqp{+^6_V{j5_xp z+9+^(d3`EPexq_}DQJ*>1BM>j)u;1E8L4M`+tl7TPEGKp;<+<`@qo5Y|J6t-Wk6m2 z=9}KCc+&!T{bA2(jVCaUcO?q~LrA9AH|GDiv{5eg#e@8snI`d0d28G)jzp{ zo)27`@2tHbe+BPzz9u>jFOx-&$y=Lrw&UnF7O^*_`4)@l%1dEATNva~Hp%!^GNIh< z%(V_mvE4GhZ=Gn`cf6oqSLufFWk~yk0Hb|~QI;B}1)7OcmjL|Q8#U0A6x%$|mh3T` z9i@9OewJp3E7cg{|BkYez*d`O0KABg~$F5HjJ!IDLTgWkhkot?~oFM zW;P8i9}Og_S=whcizO{Mn2*;dvG5rNJ8Q$?8$-SwG(0fZ#|2#gSHlh_4m2@1XA6}} zi!l5CM7{!k7!PCBQA(N)b&cJTFx0)p(}^!EvB}7wGq=j#79$qNZ8&#uSqjVAEH7}Z zCkpg5n(zd#yl~;R5Q{q9Plnzn!FsW0Rpo1G+tWOX(_qHU4DdtOjMuHLL49Tirnz zRrp0}?VCt{45fy>K(xhwTw{TpcZUn6?3T~YREXoLV`B|e)rbIGi~~#)MTk;P2c3^_ zpIb1vK;&V3pbsubpd}I%moK90Zp37-L-(;<)bw_Y;!7F-{p#?39+%-&VO|LcNZ-2W zpVCq5R4ID8^Il)o;PH?N@}D1Pv7rvZ_>RT{0`-}kkzSlyOf$YIPm=tQf@+1HkNqzR zif(7I_$SZ9&Kk7<`Jwr^n?9%2!p+}fnPy)&fW~uQ=BdatHPCTTP7n8ZbX5<4W=w0& zqyefb9>1wyDHQ^G%nm1&mffz)ciTVK%!Jc&Wopc!k5Io_K~Jv+UO}wEV6p&th`gVyPUF^0V3-vzUaXF% zcoFvIZ9t|}+XaiUrR53eor{&e6^{@hA|xzWzE%?i8Tr>WMd9Fz`X{rouG=%1h$~y) zpWeeG7ybDNLZzaO8Rw4kbeFFj^v-59QjBUqaqBPJ=8fS4+pPuw!@^xvaMW=*9D77wYByJTx`@S42a^&Xo6f zf=tfnl&A8M6-!?geTI9dT$z>}Kj{iXvz@UC-*wxB6K|zN_Y1GbRa@Mvw3|DkaKU5S znf|5^MqX|TATX;WNG6&AS1;l9*p!s|rI>_&3F!#O%_&o}6L4?l1^#g>$5$;67n|jj zr+}DM-(vh+b}-wpdoceqm23ax$Xf9rM5Ey%gc3<$#FAa`(WiHuNztzAXQ7(aCn}hX z8xe+7<};x!`VMRKH{WN2RjuiuN2=ux;u_|!9fmKg=N~SU6e_Ph2orsC2mKtF;wd}` zm3}XK19I$oRieq~J}S9ZHoB@@1eDCCsU6Q$a^hP+_B-5kJ9O)ws8)c!(rg5F&0oP2 znK>e9ZD+zL@Htx*TZ2C7sOu7ez?|FkTQ!if>K4E>nD_ z7_0_fP1NGdPksOe;DK z)spBv!-EfTk0!n<=rnoP$rsmkoUdWYn8cnM)4tcpOh^Le#aczzRHyzuqkz!t9q6z9 z3F{!|CJQ59Q6vk)7{-$OCZ0k1&|@U{h~Jco{ckl~?G?hgb-&YzUhW8bb$WG05`G0a zc)1d&6A4%80%P{HwuJWe_-*dLKfrr0pTIreRr(sr7Vbf$UNKIIN@X&dpz; zy;I;7fx6I<<;pVd)-o<4g#6SqT+FV_IAGWnH=Y91RyXxsX~W3E@@Q}$00X%zxcxhs$}JEL%xm; zZFQE60dG|FnrWF9aP5d6w2gDj|JLTIkJ?MvE#hmi4GgO4x7;r+ zWMm>l#SruPUaVPIT8dZe+0hTwvF3FTw+;^Vjpuv{PmP!PRpKRC$`#+~)?Gya@`IO^ zjX76jAL&gqB3E8&$ObFg7_cTx+#Q{t4B=i~-5g%us*ILy{0ro!(@jpZ1vR@>S`1LB z`2!ePZ0mi!k3Tz+g9WozBytxG}>jfQ!1JXFWweh!P{9c#(e16q>C99{$41gjh zeFpuK_feXNkcRVLc~OK@F>XykW1H3hlB}5&0 zYnITWzIEERMo300_sVE8;6y9Wv}T>rQ=V>ZTWyxiH93jz+1^Iw=ZYb2f9A#iHFc>=}o#49b`8V5<+U$4}G8dR5{$KAjCUm?N5iY5?^)_gN^ zks*uD;i1mSYObjPY4Wbu$(|kOXYkB^RZRiCu3T4|c?*?+uUs4SX41HPpZWb0(liTR z#-g?3i@hs;=3IkzaXAg-P_U^0;{?_wyhJjOz25Dyjzo^%_YCdeO&~aL=s)Wcxnwzh&gnAIbY%0SOxfUwC&pTA5vKHh67#4df|HIs{duKUkjmPfP0;??xtX2?JF zG8^;r0Y;`M`d(X`ykgnpU@EMEwz{~k{-AzG%gT-VOIT>=%P@v8NjJHcMUvI>FaE!g z`=QO-X+hJ4Ik&^t&MtgT2X%+QUfFBCbG18u_!_s4FfKkM!^?&MSAq^#!b*bI2}xOm zF+?@-h4M(b;cAS2Q@GFhfzw#h&m1NJ(Wd*erJe!=1-<*KTl(-G^O@g8B36eBu%smX z@UbWoRTTJ;l5Y=gk(e{7fVw zsjldUv7yuWI6kVK_3(~UGgi&LgZ9o^F3Ss2(uG#Vr>Oz?ER>3`SuH-x-jLGmPO8cn zW-PkxPP@%U-p_;~C}+)d;ouKXHzxm4Skiltl9lbpXSen|=y#C)m$Ivhq8X3$c|lm& z(i~zm@$1>0r+x0(K*FP`1AUV@(O9f9S$(bj^u4X4b%b>623u(*YiZ@l&I}vFLtjW2 zYDOxbufr;>y8dFC?^A@5&z;p5Vh00$ms>);n?IEc;;RX`Cq}Z8Q(aatl~Ges_`Pp# z`f6D6>7EGW_#h2&4(xKAyXI}04*iNhWh+XP{P-4Q%;mo1<{dfR=EADF8%Yy#{qdFF zRl%-XieAg9b8G&5QPMcl)^vS?9j3Ki{_U1^3KUONm z>?5wCh^qV;!K^~bxJ=*Q{*Z>=n4fhv!>Wi>RK?JOobKVFZ{+ct-Rr52PNK+h+#%$- zf7DKX(vH92GukZ-GUuS)o|(5>zDwXL4!LsO%Mbnak4~Yj;9<~9o=uL&kJ1+9AminR zhuk|&y&@(-H<7~rHsDB$Npyyow zc{U~Pw;~1J-#)YVOsSP$_u9>D_uk>19Ze^x0_9xo{o0W~3R~wT$KNjUG#7MOk6Jgy zwZdyc;%^k$(&)57U=pR58@=wk$=|<^{+1yXY1K^rTOi8mX-#b|yCdtFxtR)~d{M1h z3!V`)%I7pnQei4>IimyI$@fWqr>7(zZIm~Bj7$RZlwfa|t7LpnB?qMX`xzSX*#+D- z-hux@IG2{y)kb(E;h4#Gw&rNkm3~}Ee#8tvW&j5-?p&NF{3*mLg|3e zxlN!FYw^3hGH||X-%KMVV?&BeA(o1k?r7P>Qyj}NTh5vE-ez_!|D8M4mNiwoWo5O^*g*!An&~A^P`FH8~txhLPL-D zwLHQpqgk?XbSCR(P;$h( z3L&gpX9=r!>FusXNQ7DQd=^4Q_>i)i2H z^_WO)b<=j<&)c`RL@Rz@dwh4k+(N&>Jtkk${RcN&+U3d6m|Ajzj-Iv0f|_Y( z1OX|2=zl+-tzh?*@{U%F#*Yu{UQ%AVa0e^9Je@^@BBB@#%u}rzk{W>V*HQXFh!}vm%*L~u8 z#Rj}yqhpONKa-6FxHg1898oe|T4;IZi|)+YmA=={-2Y-phz}cf_^mKOe4ftArf+7_ z8;gB%NcCU*EPDkRQ~N485hKYI+~~a;O5w@=Utr*r8LD0>{Baf~rZSsW-Ya+0&sI*q z*u+kiQ+vqtJiB_@fuvdCG3~I)%RMR+dtUv=lb3IITBl>w-E3lHC?Wg9W8mU!I^T$E zVVLRXygMXO^I&aeqg8htr`dp$q7cA&f753l{RVgujGyNG&cvEqDWd!G1bdwV_WXxZ zVp3j*JK9Kn|JSqUEwYz~!wVA=%boLILSxK^!>-BkNmVj+g2`CP?~UXcpI>n+QfEqL zDvXRM)BS41@&ebwr%(noQF*1W%@GBO%IACYcKi91EyeeN0~_WP|LSY)h&Auc$k2haH?9w?io=7+1>}0+h(Uo>!iayjTA>y74)~` z@ZRt-N=oH~va#ujbXORQ6Z9*hDg zUdhVZz~=9|LS=la&b#Z)8Ev1F|vQ&uuuGeqr62t0h^9&bTn*7#Bn!d@{ zr3Ncwsh)(fN?+5mjeZ3N02bxn5!JwwfVefxHX(UfLELn^v9Y1kyA~1W*fA4DR9%`xtpJZMqdNu^? z?Kn0cX3}0J-uWgA2Z!BE;dmZq2(XOGda(Y-*{D(sN-Fhc>4=1rpfbFK4aCTtgn5V3 zv1YJLC%hQ$WQ-U`EWI(ZuVsKo{=lF8_S*)IZWaOY^@X=09`yCnPQc(o622+lmz{%i ztfAH}bTM}ww}gL>-+LH%)D!OaO+Ug}5K5VWpoFTNm23KeHWuMxUkBq|*VLc0qfi;( zKRNv0T|Ozy_{e9a)bcoRG;+KGK*EqP|=gV025327XS|sc^f5JzaqjM?qmA6Fqa1crEpq`IF;x>;yO90KMtRS5k=)<&XNwZKGrSCx&G; zXE2eV+qk?Ec+sgU$%{uc^zdwb**AgDUU;o8>B{_3RBP$>)YR&FS~ zx?KN?d{0M8V>9)GgSF0Z<6Vp8H)>S_me&&1cYE6hM;ktSwbKMLEe^;Q$$S9ps!*4H zm&Jj)9mDTa@zZuh=?ArIJT0gfvz_6|uWs5sKJ~FEgehKk$4Xx^@^>-mp0OEpO4+D}lKe(uuIbzbBVliC(Qj~T-1nDR5nKuin`f0^lTn2*V_(bUVn^Fz zhcMaTEXF%84a`d+J^6wME;1HQc!;dc_PRmitMxJsb~q9vxV9y3-N8Ssl_(*?J%bR% z;GZ+)Sw(1{ym7M=@So3&3;-9}b*R^wo4!Y5Y?> zifX%))?dBy;c&Z-{Ihm;!N9LRNR+*=!5-RY0GktN5sIh5EfIL1< zGdX33;*mzmD3?)5`nk}`_r+YE1}9$Ui?bI!QlUsV#e^)LWKxC}SiJ$#=z%bm-<9Piw*69^=I40ttb<{}TYqFd5@Gh?6=LhfJ(|sGe z^_j>lT|&z5x-8N0#JzUD-$sj~Vo2WQa>sr+8fl&9{~XmvLg;O*Zz$?jd`uUA}E%+P61Cy}aDtz}V{iczgM!&=cL!2FiSiSG%V6IjhUioe7U#}Zq3Olc++>%YT?HXiGF z$t$)_TNQ)TS*92HOmd}n-fHT_sjUd*Vi;%U45SF8*_EJFS&lcm?)HFI9A<^EZ#+M+ zVy|o%%p3*}=a0`^-zN1Du-I)^??zqldsi7B9(xY>KudcEHel6{gW5vrd}m#_94BF4 zLi;A2t^&HfYKHDl-CCs<`2DKEU*AV9(oZ|}ch9j>3LJp50r^`VKIZKwQF`dlHuq&J zjm!8NQDG+wsdi6K&U<>_QY~|poa1vCY!yDw@@whR_w89kEb-J?!-f#KU5~(rfX_B% z_M)dQdr^SI(o@bsSTrSl3K8L)0 zZ|lh}7T4acB|Hyv?L&Ax8^iWCB7pv?99Bfa8Y(pQoXq6!+~0yvF;6}yEB|;W4Kh%J zl{3-eW{WyI5MVkkXrKSBaE_Kab&P4j;)3q~0_QilkK2W$)oNnKm8pDwhtmcl)%WoW zeqr&wYk<#;N@>zV ztPisevLgxk2qVe;h6nF+EqOr>8Q$p<5IATz>#>#klzM>SNP|0QES4swM<%`-iQfkq z`aGaJ=F%-G!sdjczqC+lu@o5y*`LkVIzO0_SX@b^!Df0q{dJuW-p!u=j_qDGQu zwQO~~{46)Elj4A7|ChSf8X+bE#dtWoCZnSbm&x#sw@4iH3># z*0+1TA$}-!x9IVAtP$|)y{T_WblG9Vdd)m-ZKiOzz5DpYzw{TIr=L1^fdI*FPk4GabP9!BTJp8AzsQy@Kq^k-mNGM?w#e3{328sypE@54 zZO2b|^)FvRT5MTc9!#ww62p#5iu*mmh8_kwe<6N9Qn~LqFEBj|Ki5zzHRt?ZjX+8%#j??aC?swD&75S zk|$dX5(zT=z*i8KqT(A>+P)4IntWRU-#g}Cc9Wo=z~x}()KtTG@}Q{-+;ZchDZ(Fm zzw4(jK7GHMjuD?9->7|y(>PUXg8+TGKPp}lQ$Ku^|Kw&hh6P~=_zj?(zZS%XqpFvF$3iQr{O1{gRf|nU_2mGX1udRP_v#d?EDm90X+@8_Cgr4~Aj84wi zMtEa>k7Q5Vi&61QPmD8(EcpBsu$SHIc_}Eebdl>y_BFt=?zZGB;jb>{*W|3}{J$1J z=}rV&mE5t;`*uQZU(1t{>JO|L6tV72eLvxRLL}v&p*^q`5AgR>(4&p`Y{NUn(_osF z19B?zt?uTrKhMaW`r_up?)8G0#+d2hNTIXE=?z&^ghTkC9K1+M%!h89mg(~ex;;WW% zgD8C*+{_(*y{7xjAg%yf#E8Ksp!E`Z^IAhSEI+CH3-vrtwMLoq!_}i)i!)_^gU~9; zA|RxZwDQ#5b4(XheAxmxk zeyKrAg`+2Pq`*wx*w{Fi4V-S5FTck)c?GnTD_HQp4(fWP@I-nY0cK{$;6&_m6<-Tq zQ~v(@e5$Zs83mx4E`v)Y|F&)-ay2E$%2o(v{X$svukC=TU*(oNIAG) z9wnOOrq)-R=8}K<%!AXBL(Dn$SY0;LeoY=4Q7UO#da4~o9LWbhRnSMdJ%$Ogx*m{V zZrY%D-LcY8iqL;=zCK!C%KMwmZ;Hj$ELTwv+3)IQ-pFK>r&qj#^y%Cr@t;EG&e;?a zMSkx{Gm%bC9OIc1ChL5Z8RK!i?_0l4BjL$rR|f*cG5%cLdT5JG6|5sif&`kn-%Ss{ zb<3jqv$<|8=x6V?o%;#;Tb@J$?P;OA-;WLVSB`Fs!G#pUqD7i7vwk>5aOb1rldk6a^flmQGUiBecX^=ZeA2Wy-Zf!cBL8VTveJ!^8 zYse6<`ZKC7pPs%RU+4Q?U}xp~nMMfAHiSN|Um2)J5=(xK_#V~)u;4J0zRpyQQ?`Bx zhHdixBF$BI^OeHz%Q|ETBxQR#b!ZO*%a+nBn+nKO89?OD6Z4k?`;`*O;uzz`2XuYW zAKFYU{!hK!nticVXQx#IN67$1`wZuNrm?ABA6$@9BaQS~I=wjfabEE7AqpR)>nP#} zH?X{-`smh`0S`91Nc(i^1ws>yHXu4A~9C*$TugtFlB4i5@?Qmnseij?!J zvf{y03-|oGF@GxNM(1iS6U3B$LeO%$Y;Kqt|1;U)Y_7;695lAy+k>4T-FzH^0z-N3 zFE)x0fj>1orN|_}vcFuxwOa$DxAo@dLSPIzUseWoN5s`P?G2%#@a3eWBolvmv<8VyGiJRfM1(NUZZpN!Ma` z@p0!^gtDdKu<9J?OJo>di(8jIl4;y_r`u3!6H@XkD4%3|iu0Aq;=S* zgHRy-VLbLHo}fqDQQA{a4-c;T*ElThTW|Yg$W+okN8n8s8>uJA-n4&b=P_zsybT%D z`?$N;`>`yDED)emoPB{O5Hgk1@?d+QS-*1AAL9xem~KdaGD+>~8`$vx$_-5cSJf_? zKhv0zLv6&2i%#_+h5liZacW%=KVcHVcmn4AdVPNkVS%(&k)FM;|w;67-)m3e>V?gd5NOfcdn ze52?ATA$>1o*y@o-$%%P0V(eY9?#e+{?9JH`b@jsi`C&=NJ@o^)-dO^OBI|;Wi#m*7R@~(+k)VoFLPqxV4qLV8#{E*}ng~ z+ypJn+A%A-_Vq4Rqg6iBFv7EL$yUm9=VX+01%@t1T12RbQ?b`jE z%|kP~-i?<`s8IC8T>52D>#k~^Vu?i%jI57G*mxYuE2R!?HgbRHRc#i0&8cuF7f_}7bdrnfvDwFR zf5(Fy6jNF^9T;`}*i8(ix~ff0HsSpJyJ$?1C5@UHYRN5-@dGIb{&6lHqJHkUOOqCz zKUjQy;DhGezj`PI(PF|aQJ^tP?r#oY7#R@-kK0eGuianJ~7xvA3hQ{~=P8qXB zPXoZ2Em;(aMGCs*K={qV!|}fht;b`>?Jm1{<6}4gWv@F~a*588sz^oeIY*0|mHO$_ zXb@)8s?sv%L2|~sk^AVqt?w!P9c?5PWQIQ5o&J0#q=-csPq%gUnE0hBJo2eO2nN~I zS6a&U>!!<3x569IA=$5I7||mcMi~1x&1#s7cL$|JC^9w;1M z9I7ZKKLEPh0^6Ry$#q0~eE3ZInjRlU*{+wByYsEbc=lnYbYqfIzDjpcr*T=cH2z_;`&&d;W-{;=Tw| zol~xMlEWvf%lXDjz73gZ6)FYko_8+W#fw`e(BIkzzfGan1UqoQhn;F(+7<(Z0`EVb z6qS>0mSwg<$nR#=pS*}PpuZLY@adtT%kaccCMnHn55TT{O*|iHdetC1@9}o){8l4W zCGJPG!`>XjTL-Jh&DyoGGkPCVK|#Cl%3yJ`Xy?!Lpg5Fk>27}*X}1f%J4v6)!F8l0 zi3h48BV>#bdJ>sK55vpy*kP@P<95@gcOz9=Uxfk@0~F2TeSn9qj)Q!4g`#=?$P{`a z*bCZMrmmX!^Zuw1*hPUn}g@P~fh-hTUYU~us+lE>~7iFLvK zk?K}(E5JY4xjbO+oL;j8@(k!TJ9T8Y({U21=@QQ5%%>PF60$0Sv~+ie zba&_7eBZryEth{}$-DQSeCC;%dmItmN2|DA7dw5O$>dLD`6i2%ogB}mVOEgAUzy}- z4L@D!0;RZ<)J4Z1Z~p1+{m$3OK40PUF}0HNoKo1@koCUhK-d{cMI%b)Q`itz{i0@|eaDd5WLnfF3h+ztBWT96ZASOITv|W$r7Qo1v6Gpx;Y_J_zgjvy)i`lG zmN2Zt!V9cbA)nixikH})K*USfwJvcjhqzT#aK9V8zuxn^N}9J_i*zZiddo$M!*3a8 zg*9K|2F<*DP$A(eo8KSjGyydN4d!6~?$4+8Mf(DJB8r2JrF{b5tu5`D;8sgAQjAo- z4|8B1^%_wd)#!&SXA(%cwPCJ{1bMb%(C`QyOmWz{RP-0KtS}oWTJW=p4*U?kn#tMq z!iBX1=)N{kDk=fm)@!^wp-h>Yobq$`!=R2IdO!EmP~>MtgFEF9B7`G4eZ#!jf$eE4K3Pgv&Rwvirg#HoX<$G~4B*)`#kAv8Utyg-Te0e%9iT>m< zld)aO#s5QUXhrc3tDES_N=TF+67b#Eup8dY;G_@STd0^ke)p#BO($F}qlPWK`Gta9 z7kmlB=8d%X>`i*Ev7mc*<9?Iu>j@GPG8+*<$awc6y7>$iVyQ&=%x&*gNM=?ArHXO~ zog%vU{lPyTIXU|5oXGi>eD%2&fr_lSZ?kc_eJV3Eev)#Y`qmpneJUVt#@M8>Q9%pK zb;yrv{?~Kl3?-2q-tbJQ(8!`4HOxah+MaFcl)MmJGU_aBL1))uu&ty>>>;YJ;}zi7 zJa?yM4#AzkCGv(2lh7%~u3Acej%~&peguU(FQn}jrg(}*e)8Oy3|bJ_ZvihO+>;x= zUt#d?IJehrgur=oddFBlb_k;-p!Jk6^p#RhXlQc#akf7~-H4VKlzM($;HJRFhr6fi z-Vw|OMuHq4KtBzm<~4d)MUs7rNfc6DpfuDpSmN7VxAkMEfQFUWtmQWqgwv*(_&*>B z^WTwY)RjB+lDR|lkz0izeb0AH#fZfsj>=Ylp7`3ig6OIALYU{%sj{$vKSCP8IMiOd zXR!(5vJ=y^UtB^YX|ji`J+Ul}#NMzWrOUSd(znQngMRy|si^K4-I>q<*D|O5bR#>) zhLuJY%h9d$b^M|ifD$IPALvEMt0;jRBBJeriiyFUh6}DiK-wMk+If?;C?)ph1By6= zWc*0!`ap>(5mBR!&HL^XE(3Z`o&eWn2!|Gfdb0P<4`t^X)04&iB9+PaY9iL(9aHp% zHkGu_)os`-S!9K!UOX)}s4v&JrbksoGxFl(_#hP4Htq%%GH}yiaK0H7NjJ|JQtQf{pBT z%->;bbPhwGjNK2sc3Um>=Pf3B$>e>oQInaHQA1P&G~TzcgMmZ|nN#bVi|piFYC|Ep z!?o>lKoE;+TK(3}QqF^oTYUxjnxrHk_78?q*IwmV>aybBTdrx3uH}P=YTn^HU*+bJ zs%`(rXm*n*oldJ+6Vd-KdD`-&^(Szr0M_spaTD^iE^fDy1HkjpuX+(*&ks@{nM(*R1dtXqF=HouWTJkQm*U2t5_FJ z?VCOBpg=O2TL{UU1#cj*I6|7AjbLSvVL7D9j)_j=_qsy8r`p}!r7WKFK%6s7?lax@XD=?^9DC@3oQ9~oRH|d=%SLatI}oAwQHsu+c4;ZGoPq(=4owUS zDWC0O=5{*z#v1b1r(3h4Vm!I_jp^wPc{u5+ce6eY&_(S48h%#N{Y~T7Gyg`d>B4a! zP`LDIT>o1nB!4ZqLP39;_82kJ+miZ^WWI16nO&=pY!VEzk(y z;)O#T->1S3qJPGbrPnCeMYOl)bVTk9O!czoVq_2&$mN>hl6K&qGh}eo?wIjR39V8a&ro2CO#opon5Qj!X=?r3$B#b z@QZNF3SdJ#W+pvwkN504W?ZBvM&wqm$M!#B62{mU6Z`Ie0IJYxbSw)F$^G^pEiVk@ zadrwG=eG>tVv3%GQ=Yh9R&r&3%OdUjg`A$ z-ly<-M=Se|QzD}oq>Ppe%QHw6(fw!Jw?&6t*SHjwyT#$>`*RMn*+K0L@<6Mce*F=d zpB0q*5&d_ZXWWfdSed;m$ghlU>+RtwT!>Wijhblz6Ro@>TsrOMtR&gsBcIN%k|eCF zBJ8q+yGp;22n~Q-H8^n`O(frjzmjfH$le`dJ@nQeyA!+o-T1k0Y`^G zlwjm2lD?k-p04Ih3S)^fEmqeIO_LXg@!8)TcjlV4tHSsMKv@0Y5To3xYsZostt~!3 zF|1KfhDWV;t_V4ML`dJAcehzqx)sfb|DuFd5L*NZmD%KR!Q$F;4ud$e>HV}tb6r)+?n!q8-El()`_F2Ov0j2gkz`!`DLs7VrI>4qt^^>5e36Dw)^6#*O!;GS z|GYqlUBA?uGP0vM<0S|XY$#w|n++uSNRlbA=C}8Y#jnlQ zk%USXP9c(QyZF7Cf`3iQ1>@9SOi(I|iRoovu1-oj83tl= zEB>{_Kw4aMbjgRVt*2QGF{Kbd_~0$Dv*pxl6MY{8b-fSQwJ7!u%S%4}Y1YBN3IOf`VE$TmJYLROLBULDn>J zP-Y))?kru2Zto9o#bwoEUdf&g)7FVozuX)0(K6*dJ!VjJV24Dx2*Wkip{tE%jE`RC za*_Dt_N`w3F|K@fUw@z@?z48XGiko2+qi~3SAK1gio!x;GUtS3Sk*akFo6_NtmVkZ~e=|x|uPWgMj@vc8i&U$BF@OHxAjy1cxi`&tN*4|xlTzAS zCBJ3PcZ1c|^?%{S2vCW^iZPF&3zLhH1nI?#i;p4k@yhmAI%4!?roN)_m=Yt~FFuDF zd7I0|a^>3BI^z7lQOFvGM7*RxU`JNRP zVZ_{A>?oeZI-ZTPtRA(r`dbS)2Siu&;n}9n8>Ki-J8caZS*aS;dTkBQ(HpaC$e->^ zl{`*`R}3s1D%#XV8eW=BOif-8LVlO=8*$oyDDLn3ieESNf>H{Pj*$?n$k^fik4iJC zF@paBKNNzgUFLfLqF*l(d#Ie{U43vZSk|X$ySzm^iFn{IZQ|rr;kG-eIMbyrMe=rW?On@WQ)q~WXtNIJQ`LhA7=(q6si=;B?9q>I=#&+0valBkU^?;a4O zvE!#qcO8||B{Q*RzLV|UpUDhs=vN%cY*2B zG~L!LaRy^kqgI$su}orOl_S*I8Pc$sAsfS+TAMaMcl)g_y44bUf5GX~eT3tD2bH+b z?a6B0{?A4VLD$_EQBPKSongh3dJg5kgj;aRVFkGft@pFVa<-jPQ`vdu`Oo z(YWzuAx*AJ=s=M%3^+eJSTYPOtM94{NZ6S0>+Em5_rBR^a1U(%uff#3 zWW?5r2OTHHCf%9{Jy^oO>%<(tZ^Kn%@gpHF;p&;6e9nns%~AN5=(`X|6mLpqh5dGB z7W8>OaPnbd) z_UZ~*3@MRL5h+q8cjV|Ve#tBP=aL-S_2!_AT&i+^!FPc1Bzmf}2HF@l_ zq4s3J4Rq6Qp=iKsztSkAm1tScUVk(A3D~bX?vYs`XQug}89YDXNA|!!^aNfqFzGIbqM~S};zV|{*FPAsNa8*sb z8ArbGlG!+#tyw$%Te2Q$DsyY~tmsq1>gGim=A#RL{3sv#nT9baplw7$p$%FSmu+@R z&D^+{aopIO_5%jgzAr~gMsA5+30(NancY9Z7wCvxeO5t@TF$dITt%hDjZX)GKqJwQnBA-?tA>Ac$$yVd!1H#hiO zlv3gWArS;o0AoY4QTMeKQSGaA-#~447`4lxVdT6Ii_1f&pxa3Z?Ekm`WPjft_lfGa z&5DE|hF|!I@hQlVAGB>M!YS)8wGoG|8Ml1C4CVbGxH^--2D8fHoIOc2lJRl zU>H_Z`xNgU)w8Gi`K?p7RAX`q0Y7~Ok3w`sZ-?)r`b516)t!dHHx(OTdw=uxG@WX( z(qW%C-d#HH`FSIXfM(6#T4TwjzB3Eor6?zQp8xzv11{;itAz=PnN{Z-mt^%lVvF@M}f4?=8T`hM#Una;S$wig3sv#6Q}#v$m-0yS}lD!(;Ijnc|g^z&DI9V zZ)@4x{yCfS7O$i)?d@V#ePsnYCM-{Xk_AAJG3}Zd6x9)$oDYw_+@+E?YR)~C-dJoi z^3zvN?y9DzDxpYsVD+e+k`RnQ_!fjvr+mrzz&HM@N>mG72MXYM1-5qm8q|6SiHQSq zt-xz8*OyJ>yn2SHjZ=5V&W7rV`q*qnxT=>N9E5s#8r`}UFxoim1@d&L7U{Bfb#IB= zR}Mr)+kO6B-TdNXPxp81Fl3z>7+U#|D>>X9T|Zox9S#SiSv-%Wv|bI8 zLNeldM$^A_O(Z73uX_LZ){RC+gT|vR4x=`;(Nr(@NOpsRt+T%1`Wvs_6f4vHyxk-) zPRajXg`R=&+Y5{sz`6$0a!8)$<8$*2KfB?cE0z~AFbEkG8K755lg+Zpc*GAbix~-I z`rop7YJ%55NrI?e4UAbbZv5tXwem)m189drAb?@i2;*s`G9{zfJ$=;(f`WOE5> zUhDY_qQjSu8@wA_pA3}cM%-4~T&D%*{`zJAK-vX!G=tJDT%RqBikB^Ez>Vj_f4r}I z`|d&R*pwPN{dzQxJ;4ut?SHN)3{k_x){HN$_JpWiiCxgaY_zMicCu)|XW;)8ntIoP z12d}oA(wle!qeF1|J;s>N-WX^O$q|>c5fkvwZ^{FVq%s9&}`nj+hFW7+o94vfNlDq zpxJ^<6i-?o;FxnSf$D`u7JUgqM!R#l+4%hD&#-nM7_dJ42!H~WGJ~?&asrDelAEe- z$dK2?IKcWB`1GZyBfkD|TkZU5A};>Kk;hvpv5QBRSbG`=GcyJcH4~c3J?Wh+C=Uqw zuq;jH^WCZWQbpLa0a~2&>XYj=qZcSL_UK@EoPr3Dl{!>V8wnkX|E+e9BoW%SbZn)n z-J%b?wOY^%8yAQgGv9|_1hKj3kl{bvtKv%GBO>DVrJ zSZ{ob@VP|;VO%En+Yc9$1%yQSr=maQ*R_w=lrC-lR&Q6Oms^L5@PkUOT&pHxZz*+h zHRmsrdCWKC&ZfaUncSl5^PRj6@LfQ=#HMN*jaUteY@Q1>U-RI2c*z@&{v5&Y7 zyaEC{lbL0Wg{GxK^=qh}uDgm>oE1PVEo9c;7OS67mk2rnRz1u+b$H`saT|C25j*H} z1h)eWTEb8TC4@PlsW;+h+*D}#2`h}*v+#4EJl4*{?rA~Zbbk?1J@JEObW#A5E8W~yM2v_D%dh82v?0(-KUr@R%6u1p;#Nu>za^@0<#XW_)QWL z;k%4cD%D==?K_(UG57?;tcF6SC$I1$vt=F{e?fVn2av5GYC>KIKGPS|Q$iHejdl3r z;Maa(#)0*rK$Pu&TWpd-OVztw!jzZymUc$JtXJ{k`?Gf{L2JuBWDY7N`fNq62Ml&b ztC`jm-w++_?yEC5>M(_H41g*kpOKvBH2Bq5Cnv5SKGgm{yA@BGk@_w^qi(~F%3z?{ zS;Y+u=5xG%9)i0Y4Q26el=#oNNm#*Hs}$jXDQui^=5cIV-2x?C&IdQ2&cDkc53<9h z4_PmUL*qYtB$LkN_8pRP;}2BJYlTVEKd4?i_66S@C@vfD77=(~-c-Uu?u0%J&$g)l zC%heI19si!fu;U8GQMowU#gXdXPCoC&_Jl?p)QF5Hzf0TZ+5k=15BnB9xAMF1c-ov zHC?|F`?e9kvX?giYMD5GWFhpI<{QK>!ScH>tL;m-O)lHCP#-pc1*s+bRC|;U5($Uo zB8t`3;*SrPLy&yxBFOoEf1F4YXn9fVwqN)FA!BU503Mq+GucQRt{IQ)pIjq5;|9ao znbG^-Pl@UGruMwJJ(U5U62d9yjR^L9T6+4OF4>|0bd1$m*00v+IjI)g(gk-j^mk*; z)h)N|+Xe-<-yJ88?$5%s>#vG_l6|GY_y%dpA5MX?Cps?FB79i(|9+|FdFJ@bxKWP= z@4W~kumZxEz&3_Enx@7dWDX~g^SZ3`4Mu_dD8BLqc#hL4{#_!Ubvn4FwFsV3^Wp)Y z7GFC)NkUeB94$AWo5RV!e#P*=Y6!-yzWTb3M2?%ID~r0PWx-KQ!zIM`;2I~CnldWfS!`w1Pum`U}fqV8CTgC(aJcpcZ^H0kg(n0 zHrgLMY=oGrxs%zgR*r0Qp9mpT#<~TFv7VKIxo5br8q&e6w)vT! zWvlPIiml6)EDxQUgzz{}6|zgyM$Uguh$-vrZ0f9TYH1m4NZ-@f7Y~ISQYCi1brv-I ztTr$@s$^oWmdW+Su;$|Um!h7Y-b2GOuQ}c4E+-&r@IcTu3SzxS{-9jYtr(Bo1XNJK zUe}dv#W_S}j@e2U{LogJ?Z0PE-af7GdTf*`E6s+)(Ly*zG>g?UGo_gmLd!^ZN?|ws z#3cHjmko7plII%m{T7EWHznPgX~Uh3k*TU8*p>v~yuI)`hq=fU@mhJw^J0%1BY9~m z**_@$7G>yb&!TF_Dvd?WAmMZas1k#tTNbVxy@jGBCkM#}M2XDU8}o+jvG3J4iY+Qdqaw{&x^d|E{%7BD8 z%-+&+Z&7zEvVy8p+%=De;rOe%&tJ73)jfrwy?;z3eaGoJ_M zCdT90uMOopYnPW)*be3I-iZMx379fkUyY9EL3ZZj;XGFRM%Kb39}g{+qYFCLsmYr8 z6r#Yb(USt0v-g#QAy3{QCp|oUMHg=VvDyVq<3}P(qM`-9qPCnTSUTaLz19&)4G7>L*j7rnK$So$ ztGzFU?|gHxrVeK0p|7Pz=nB#v*(a8dQ3Gy61}beP-k>-Vfgk}J$dnNS2x3&e7WERL zW0MNK>s_22;7ZUQkFQ||uH1QfBQ>R(FU;cu2m%3c5yrhdZ)46}Ifw!IORBg!IsfiW zG4{aV(%fla+O6M^0w>w4H{H2ln#5#DsMTAN-Sz~9mOb;6K?Y^ z(|#7FkGnPj&BVpg%*OD57@b_hezyVLzl*k3g=(ncr%vWbC;Kj$-ISNj`A|W<2p>Op z6Hhe@arj+DmZtBv-&La)d>X6ZTir9a?UfQ4Fl}5};j4zxa~ocOURKO*>x&4_2-fIM zPT-T0uiqbp(LP;=|Mdy=xE5a9El>q*m%c}Wn?36puh#?EVFrNmRZu6NSX6(7id9*` zwp*nKVMAD%AvJypc#aW!x~&znH-Ly$COq2-WYuCc!NBKjYw4(0Uy z&`I8YFh=rahvZW&@4cv0l0Te$2X{o4{H-uIpP5ayPCbBzQvcDP$5RGX1FT2#Oo82T zcQ5HTsw~oJ(?7ZG&p7{mg_f%EwBQG>2P43tnp&qS7hMflmIbJnAQ|_6UHizZd5_&} zG#e}7dP8ha00Yibc;l|8D!r`q_(C+IuIx0!SUh}7WED4qam(%?@c4P;yj+LH`q$Ib zPugq2#;)%#EAw?`ntz^{k+~!%OIT&P?5++Tj7XiE)Q9)=KYemRv96y`FU)^tuf^df z+3ZzSMAmq$))^+ig&*2GJDL&V*xGz29yA@}Sv?8yfAym7!|BkVxIOfqR(5r9am3_Q z5}}Egou40v4oP`$Wte4dVL>HU?mn<*UkoPI7bWS>@V{R`s4QDL%!k(maIfF$*+m5T zusylf5BCu%D5CSZyt%oXW2h>Uz{C#qqQxs17a*3O8)jLvkCmOwI1_Qdp~>K z<86F-hIQbJKaD%8HJm@h1V{jU1KeNnGbc5RqRzM6*JxPtfP=bX^U;P^--10H1g^8y zXlv6rQaZm+z8?>R<|WYEZ2J3hsdwdQZf~&GZ>0;{B+anmeFj0QWIX0&tJ(G5&Kz@T zDP^@&qMm)#H-qiFSb=PAceH(3B{hdF$@dpfu68TuY zS4c1`+VWh-1)qV+t}uQ~`XOsyQpmG$;@(ed9h{D*4U6Qe_N?FeS*bRyt@iQLxG^_Kp@Ue5tX$0P;MTcO2@gA^KoU;O&iGDx2DtW#h{Wmw_`NNR~Jc8Z)4~_nwSR>zkB}e7jF*Jt>)ba@a#MMb`7fq!bk1dbDw%!W_fM#g zyw=W8w7csrwb$2M{R%`R?fsXw&WmTFC8!WkeDd1#6om9rEz}hiP=@rKxKyQcRWd+s z8jf$u@~p?gJ2+;w#18CNnN~jPu?8F1Z@2NF6aM(aYxd3MrezM?I?~(eBq}QQN(%mh zh_Kz!p*f_*;nRcI#FmCei=$453cEhg-PUAmQrDY~?W=43{d0rl>Ednf7wUHZ?!rMN zi?}7*Vn9Ws+f-79-DvN2tsa4;7rgoV zz}Am!aZucJ1!UYBUJef0=qyKln=s)~=l8SOZFlt|`c=DXHvfC$;{r$!MLB1oe$y+e z*C0%1y?_3Ool@S=M1Ym{EIbW95-G2PRrAW(YM~Nc{#?IyjPhzi3Wa5cdLgT__m|-q z3VqgxfK~Z$>5Li^0SN90(>{{d9P-s}b}eFRz)eE}5_Hyw&?a;A7KHxT!SgGlp_LeearI zc|-) z*{7*mD^==yQLh*!=4<i7 zP0V_{=_TXIV+f!yr~e^zJHm(fD@3kO)NFR%?P@7@4S#1EzD_FEO81m@xNE!V*q0z0 zT9HycI32r*X}@{3>v!aix!KJj8=j%bs4zWYVvCj<(jgqL1Tq}MM(5UABFvzc-gbwT z8w=yY>GxbzV1~nZW20)Zc;eZm>t?^EBJQa|CAH|Xdj;=0-JVZQv>Dk3uV z!fTryyhjF&oP1U(wj&{(UI7d(4-rnDO zPQL&jo^v;XwGXG?gil{1y>~cmomk4wevBl^8vPs5`$BHmMsvT?!8yo#GiL;XmmZgP zKlV&#{0$PU0d^I3ni`BghVs+ zAbi7Pro{~JU))+T&s#TVNYGB!2FY-^mjq_u>Fpj@#mbvE>IY$7J$2PdoHHs(Bd$YN zKew|XTaMoxGBqof%Q)GY&#pZB>^x=Z`b1_mGNAXzi@lcRQex#z zpY6Xfeu{#F0+vxtSkX2B=pL#jc z4(%fk<}PzCFRyNkyk_ZI<-YKvOm1KLmp|O{#rw(L%Gk|mj}>S)c#R9&74Xo0iHKd} z;^a%MJ3ct@=&^RWx)Ym0JKK#(4ux3(;X)83K=~j8*|nVFzn1nz-VS~}IQR`TRr{t8 z{A;}a`%iD9?o~=PqP`c}XH;szz3bJfx3gcF{od6-zxF)#H)Pg+o&8g>O=w@G2upVy zW@TFT&&HFj*dgB#ezq@5UVFFGM@D(=Rn~7L?|4(gCieVt-E`QkZyQ;m${Ut{&)ZkAQ+s&N@UFh*C6hhndbBlsXBDh! zLVN$@;B>ue!bt3O%^btk{oHHvno-6%te{Y31wOvQL0{$gbfuI6?~JG(#>s+m!TtG$ zt*tp>dg1P_!hdLu{wdgGv9P?is8XMB&y0LekWEzY|J}~`)OtNeB{dIu0DD~DA~aFJ zq=XuskRCYw_v^#EmF}H5-O|9Q&_esT*qpTGHofWK7w_Ja z>KF-s3deh_-jZ&t{yO^w-J`~8{yO_kSQfU=1b#Q-@ua+uDsv4>2S zpC1+AE|h(I)zbR|eL!Ns*e7maS?O>$Mqs9wCxGt#WN|&RK$EM(^<9n*{3c$7tVjQ@!R^IiH*{zlz^zU z!J%G@fg@G3;BIfXAQPoF>{X39!^5@80u&NE!{Yt%?%6vFlzhyF)28NzkCrNimCTAJ zjd69oAfnOY>_IceO6!m8SpQL{@D1$wUgob9_7Qh07-P1(#1Nz~tggyn=PC_hZ%Ls|Fmotn=x~u%6}L z6g$20xJM^;t0{gr=@Y~kbPxrLBU|?cNYf%!A@=Fmtl44L_ToE&4upF@vkZIU{X{`r zTaTiSYG4F2Ef-gVNpXY?f(d)NJiWm~pu+nuMO{RLWg8wc(6_&^dRZpFERQ?yb>MlOd=!T3 zd1QLdtEggG_IRc+CBJ<6P9V*=5bac?5Db2We5c$Yx)EEuoGH%b5Zl{7{&<^H6WUM{ z>N`Jw_5u&}-&8lB-9yUCqX!a^*T+ zxJthH+xL|p_CqgGYK@K?s~ykBqs{K-_c0!<;}eIb35YiVIRr1N1U0f;|$+72p2zg>I0&&yl1 z@eO+{v4p+_cj!jn&`Wonlkp1Yz4ANX&8=)m)2efCfu8r{P*&f(?mWV7iPypIHVYqm zknTrxs0y4cv0bmam;G>!cekdjN0$C+=BG$}p%(LV-#BR4f|X&ab>1%s%dpel`TZiG zjC8#kOEWT{nr|#DbmTNUc0dc0b^C!|_Pc<~sgF2-Mw>mA`ec)K$_c2NjVNpUdq`yw z7nt=5H)4WdQHs;E^RMl}$g^i3NZ3ppnjeP?j73iFn1G=RwlY*^CtA-zyo+Shc#Vtk zLg(Om>J@x(hlfu@NO)lL;s{_)`Oi6z38$G~&U%`@Fj#UVu;W<1<34(r>&f=*S7P2tb z!hCO}n;+E^!0uQlz7W>F(3$v7F8s6Rb^5e6ZORyItaW>E8vd_YiU_a58YOpNgp1Sj@aC{@Tc@)h(3BL) z-XS!3tdplPmK3)UyylY|b?y!~7}qM=5OC&~7IVGw&lB6w#b1bE2u;?uYYOx5FhSYM zoLs^`4&#qO)+u3!&OPNi0RGFo9XfL6|Ks2C{Er@G#urwRDaD6NfK>4{|lEN za_ZVj!PA1=&u}QQve{0!(TOO)=>`n6nER{p;~2Wwn=`GnbiECCrZnUcyjT7=C`?R{aw>kHXqbxyyIAq3lmJl*oYQs0B_aJ=y zK={zWj5*FbbUk;+{jsj}ikag7;{wdK99;~dm_K^ho2!mhq%z@WqRYP_>4pdDcpXiK zNq9vGU6Zx+LNZ-;r+9pa`+4#0PyNBo z^4k!8WrIo+nqKYY^1K^wtShI(vl*fS%UH_nBQQxkgFC4^eMOxs=35E z1up34LNg^dRPIAyMn=o?;|i@}3Uh#k9NiR>$&5lbn%5qF^6^pExd4_&gY7r_ZC^_5 zxzP$|ZJq2J(DXF%D_z3lFl~q8Ceqj9oQ>DBum4F%q(hGS*z8St_islL-Al>m(Q4NB z3;qNDko-|+;*ozycp*ckUG_D0I>CwRYrVp<+Du%xpo#Cyl=8K5hc>;9#I{o^{-9qw z{P|RO(@GpEmn(3-hXz^ir(h6y0{l64FkHP4xO3XXZ)GuNotT_&55D#){aX!N@5J;6 zPaKaiFv!jGMr^(2<7ibrAq2SXX>pAP!#S8HZ9qcL5PRV5PUDT?__HuV% zssZdJi`8}ibg;-FOBworIQxv}S?6J)C{^MPE14uSk;aCEPSUWRD5S{^uBiC<`9i>y zXko3g0kO!%T^kQ%k;nN@O}NnzEgU~|VSaa{u3~%NbY`H<(zD79WLi;*FFjB^1yfEx z@Di-9?dbE`TAQsSo$gGikff0iJc4{4pg#Y=OFlF!`{TMthY!ExlX-!s7)2j)x)}S_ zUbt92(&FYadRxPT>&)ZSWgf%w)&TCIJ$k%ow6ili(0!s6-7T63@{mD1Wh1bC_s0_~ z*DWa4LB#l6zw;*8c4yGZ=hmfvS})9df7hP5b}IU3VxG^%Iwl+%$M7B z0+7KxBQ9m5Z2Yd_e?AfRhNM&!blrVV*Vls4(JA#BO{c!zT^7J02m8IDNLCS#M@F2> z%8ch5O5RFVfzf=^;i)3ky$N9osrkH0F@{tf%L9 zEnx!A4}W<5ro}DJ%c}sv)0=J`VVU4?-|Mwiz+F-3eRzL_LPyJU2C+AE3QX6U6h;JZ zEK`(TFkfpz37HEW?k}S`ZU_R>h{d>R=~vdI_o;CQ_{kd!yEgo+e|emn?r!xssVk%Kw3PGDJ*TQM9vm!Ij4f77fAB+G9BU{U3mHa z^Jd6fqp}3%z!8lYNK@x*>Bc)9oZZKsr$2huBTY^Rnyu1t#IY$Foe5HNPdD2L?pwW% zBe8C8oTi43I~IajMV$MaMnzwW_dD+MLpJyvm?4INjhLVD-cuusbD~u%R*;`er z+BVFG79?H&&ezKfiywv}&IvxF7#xn+%SE@m*__%w(#BBxt z&<~6vF>C_lF$97Ml2K@t(Jn-NX#(+o_c5_@b3UZFpkrdhaU^U1x6o_IVsxX)U39|} z9bp0MmZc9ca(+rKKOxAUhG!5+5!wh=fhB7zEiTHTEE%?F1BQ2j>< zcc_7b%8Ro$N0-cBO4W_61FDXOO<7?#v=bDjv%Rt8@W5q>Co>rM(mc}l^~Q8(H2b@T zlZ!HhhJi1_N>iC~$oD<3b8CEZAu@-Z^QOptRpQ^NfW&J{S<%LwMWLVb{<0n~snm6K zlfZ;|aX!A=r8a}I3Ce-)-kk;#Vq_dIrHeUQSdo zRdEPEqMERqM1|o0^m9wx6LRaGK5S**UHCWVhY>D!K2t^n@s^7ixX#t%Evm$UWas7< zaFYP7zasFR9467H9}jIF=;|9R7-$;ndGb0N_`!`@HCj1tl0lE5wfOZJE}NPt1^Gw_1rPdj+}vLwLIBp zw!Em$(^3Dur>Agh$T^kxAAu<;JoV_(l>4%3`q;0GqxbhqGI+f7@-eh@3_9@Ue_-{f zW4hN6h2dO`X_m=+!#|$)(xLmW@F0@@&>$6v^4sOJd4~Nw}59%I7e!v%;fUwtAFDE01$0H~9fW;*DnJ9HD&O)JF59a=>Lekac z5xiVB~6MI4k#lPt_JDwf#f4B>0G;1-ps5o=YK+YQHusC8OU57<{%WEZIL z<*ID&>!b-YNs~dJUwgzw8PaDCl6nk`Od5)gE2^qeL%!G`^06G|3I!k+yE8e40{SFn zTl|oNvu4Ava8jq4@6}#{rjGO!+{X}wH~;b@l;of zyx>4&3oXxSkDlb26$lzk=+@Um{a$>PqaDXwZV4!|>rqs#E-Q5(T(v(9DYE9T3E%k4;4Zk{rKiLn z49}URnWHgAMtr?5y-zppNW~@GXR9_wDIqvT`Y!iNdQ$rNG;F773!5^w#3)UUJ<{jJ zx(AnIWwSfK1~}69Olt5TTXpwU_Kk{Oj!z7(m89hK)d9ZIXf$xg+`trMNcD^g4Pv=Q z%xwI?eZNH$ShU4TLtx{5;S^Vz`H2?F^s%W{;faw|=(ltya7L!57 z5ptuD#q%4g$`($DShACH(-)N=Cs6bVZLCr5O5SRe6OKxhp`imGlCW;b@Jypg?i4` zeKE)#E@a$CeStG3#*LH0>xm9V{n)9VxKzpaq#!CG#@>oP&uR!o40PUCo)Hj2BZp!u zds8qVFtlr6n2BWMf_!@j%{9yN9qbIp8_z&GcUy7yb0LwJGQ4?hBL#%f;!}?y!C2Hj z+rfS=nsh*iz=L-;+;YA%HTPbWDGk(QGtA+5vmZvnTU#U*o7{t?RFRS@;=@rp8 zS(@8W7ZUOLX}sLTxWI4Mq7jS9B;`ckz3N;Zk}%vKRDwPY@qq-eF7w~I+BhnKmaMwv z_jKWRJvdig+m)5OQ;{7LmZd`2GoD3)YaJuwT@p>B-TEFH#docmej5AK3+Rxlt8lGG z)CW6+UBo;_=dEGzj^YwN90Bvj!m>&e_5HB+qs`pv!3^QsfApdaky}8veWNwkCA8OjmoO?`v(MiWc@K9+|CVVy zHQT@n9_Tz2r|ozqMikpeT4lOiO+@~L{KNLi8_2E-H3-o8nA zxbjT-F>{qQFe&-sAPm38mHBoE~@-m=FT6+8&O+5Jt#CM@PG(_D^ zMaD+cUK;hLmsL?xR7_+)lSneq8RYbZ0L< zYg6&ZV-A)^f@qQvLE^NAZU7vv6rl-ra^|g%4;K1neUDq|0Z}MyRRTn=?UnX%(J_X_ zS_V%_t6lLQkR6a&#vUl!e;g)YZuNixXvcRuvrGs>OIZy|(ID)53&|8Z zp=T6>$x0K%duEA_YPT`+cfQZ5=gCr&A}DweHvtbKO%6a=AOq77e~>ax0XAtc7WwVX zR2GMn-^3OjAj(;z9!}i4n+){F(=c{rTFeCwjPqv?Cr@=*u*K(mX=p6TkntRS7Afn? zSEqDQ$i^h4mJ+ehJ|s}r=o=+ypw{m7{6t5C5#rx(F4J59ol<|A07Zh3@jHyy*hT^a z%T`9;X;F$2pG-nf;dm(uN#gMn3Tf4nfda4T z$2FUpq4+6yjFGpNlU=FU)4sG!vS)nP&Tbc%da}Z@mA|wMuv(=b0n0JHcGk79pwGXd zmJ^B*P-vABPoZ^1O8Bi<;H+M(WVT#oJIAbw^Hc4kh@V_Sg_cweB^j-OfQi>DmVDp4 z2W1fzo!)Ob&5bmHzQhlJs6|mKpgcu=uEALDT0Y}dPZ0v) zdBYk{Y}t2ZUu-P?#PjrKbR7FOx0hZ-B{cNo$NOY{_SZBUlL!OA+wY11Yep27A4EmX z+9jf)hK4&P zB)`20VRA1;qAh#y%;$WL-fc8JUK?X2=18`Dn<4M^0$Yv|m>)b;#zjMBRqe^ra$ zhq}3!bQiqamke2Q)>F#c&ySux)8$`OhOS-%ByYc<~=bJfm zWb_$_=Z@WLuf2A+I!YTnuvz%-eFhg=A`O0TH_Nj*rY}<`(ML-^EJ-O| z%0Q`obN7@@nt;QBob7OpJ$s8KFFe?bXID`mf=7*WfjV!mr;o?b@FvnPfT8HxZX)o( zXcNI`Bo}>Buum*u=zM$F`te54qY*pk6Nkyb&c0@u=bl8oP?(v6)w2R2MSyxpTXYAM zLG`uAXI~dG^!XNh?>(mca6!Vk4N(_|&FtdjhvTt_S(aBNlc2EJQ|P5|)(3ArLxRA! z1gst6Y{_yd4?IB4hZiN+xwHa28y@6qsZErB`KytoUM8fWR(!I&cI+cJHV!u&mg2JtqiwEESRb#cy|@X! zJt6c2ECb2oYiA3@puygj)P&Bp?yQyGI_(7BRpJ4aI@`Bi+|11e=abA4RuyDs^vo9m zTXzqtOYHS}KYmyrNc~j4=l?I&@svUOqn|MATQSP#j#}<!`UFUneS?{uV13~bex zvcp5Q_|YpWg9!nN+}G8`AYkZY3W+X@l1Yq+2+QqV1`_6AY8y%eH{L75dBlgJMUL_c2&&dbIF&KY4$mSp%=)qB5WOGn};+=+;ovpQd6kv#N zkKf#{-a0zI1_tlOu8WH@MnDtzLT*_wq>Ub)OQJHc0Hi2Fan>-vZlANdv5=Df`e)c= z*2fKub-8)_6Cl8|zjRT?V3B9#IMRsI#e+>w(~*^k!A^}%f1Hk0))&=KK%J`zwF#DC4i!!P2y{lE4o#rs@WgW4RZ5(91 z^bAz&RK?qt%GC&#APqVJhE*oA=t3EFV>@E%#yQ)>rUI^k;ASjTZ9f=?BO%Ujf<3Cc z9Uqc9x&`?>_-@qgerIJfUusWQ=_B#xEXMueKC5+hwpG$v?X*kZ=54k4LWQ>2)@I1M zi%}l$$;seARL1MzQ~eb;`x4$SCkJ~d=7$rrL31|N=e@TF;8Z^7(v`nReZQJ8+u7K_ zW9zS8s<8L)!Uvb5)akAr%ldUOBRHD_%WLd67rl!;X@~H}sy%~J2O>sQSLUW3+>`_) z<5J>nw8hEqFCK#z^2=VY&$a8r0mCsqn>1UWU8`& zK+V44QMtl!_hLN*y39`)oW*h;|MR*e1d0c%Sl zFG^qbS(FeKYwn*7Q6~)Yc#ye4NWG){)%)YwPdeq+ACKkIx0_{RXjd*C8=w?JE5{V4 zv0<^+)&X>jA4=wEblB-0kQM+ewb|N8S(pG!!>mo7Ox3+qTtpPs)!y;xPot8K z=JVI&&~w2{Ld}EOL8tS5;AUTPhM^0&PBzMhtF(3gGzm`u zLQl^Q=eGff*Y8d#=ve637?@=x{PV!-wy=``2@5qNHK?$+Dy=H5DSP^%yd=A%V6YjE zaH3qYNVSWhTbl-2b%yrX;#rPF>h=3M#G*P>>qqjVEc60Of#?32#olgzd4YaS`Do;i z6V+`}PzZcWrCV3lJ*&dUVy&jv^t+7Z7R6cyn?HVluAYKrBi_2``TgV(f~#$AyxuR} zZjTtYCQgs2QgmqYP6)x#Zn}lvS+EN&PIhH(W(2FbCI4?Vvl(bCOvMb@1X|wjd(cwT zpYBZSTm}y)JT)UgkgAy~oDcj`E-mxYB;bQFd&E_%j}B?nNnpXI?iWEz+HLYrkTp2z zPmi=TgnK-veym0Dw$kd;D`n>*vy@D?*Q1jlwZqHNFm6BId7`Z5cyYF#yg1NnaDva< zLDcm2?t$Ux_Evmp$qf+=)=eGKojTSpdOjcupC5-6AGZ~UxwB(CEY?@vYjmtIW#o z*mm$~2zgW%GS)C$R_YtfsxC63V4YI3opm<#y3@GJ2@ALnz&K1`uqjx+HT)RIgbgA2 z2Ko5~9B0-Iw4qM!u)tP_x zZDK1cWVLrO><{yGwTAXhWrOBb3_koh0ajLDG%ZYRZKEYZkGqp)8qwoK+rBG@+ zBXL_#e=VsB#kQQTs(Mk%b9goaGDx?O?|4~$9QyI~-%bt7x_+&)lw=#6^9~s_uC&RM zIH@Ls8Vo00m6XHvE%t1&AuJgd>3znVyX)P4jby`=>ThoZ4Um#uoX^;f{+@ynS?c~* zx}A=Lh;qTz=wcVqh}G!evq6-lsGnUhaJ$c?@kMGoq}!7UPg0#Hqs6=9rAq)joL^wD zaB#42^ZTQZ5E9h%;0Vz^A{!-!;)Uq}P`n?7FD_Wen1^D%ix({va9$Bd#RZmI;Je=A zLr6mB4`C1pjHXMFAYd~ZP1nwhqG7*BSxw<|x!YMETTT^MZ*~?E6-0as_wwg%7g9bA z8W-|JVLmGp%T)2|Y_0`u&FdiMME{4^&jIl1eM%|&WSMj?A9-155DgCW44wpd2PM?i zPA=6r?FO?8^gQKgVebbsZTkRi4FplWe@cXZfpI!7!{Sim-kt7W9~j(JQx4?pX&fVr zCscTb<=3d1U)(mWnuSmVI9g==?MB$Sw+Ai6$Wj-EZimw3U#O`xoSq1O*Itb9zL`Z( zH5@N7Qf~=vQpRDG&hY2x_7cmOD5WmZI9=*AsZ%+oAm2Fe3Z25`R&#@QI6b}v|HUDv z&qKpd2v-ihfkcILL+9fDhxkZ683CuhB;x12W)DyvKzBggKSRDHQv5J?Jxu(jWdS`g zu7vi3OqOs>vTFUg%tNi!T<5y*22EW5s{naoV&XSm&&$3?CM6Mu`7(c`Od4E1v1dz; z_REV4EAsh6OT$8G8Mg0xEtJ5jLUBg+#-eY;L$IjvJJzBOOr)va1hNh``AM!xUBa{ zh5wRXupkr@>}zMKkct*+xIR;>vt9(oS8qV|KYhX$26^)@uArNd60^v98R(!$gg>93 zdNSjuikWIz-1AN{0zkd(&UE3cU$wB-o%B|20NG^`yLXJsY+<1>qQF4H&8xOOs|O@7 zNa7xEYtsjdR;$TWP1LzDzS>kOfqyLaMZh#Ue*-$@zEUmZn-c%V1Z&A%F=vy-P;_&ZZ zv;+_$d$b{`5+vmn74~ctF@0<(PB|WV(~dj8Di+B$r?!FZfp$?b4djI zCd^V{zG77OIUGoT{!a_A$?nCSWK-w6<+%?-h0E#2NG$&n;>e=(qM_k(cQQXM;DuNE z%sHp3$ztol0r*S3O5&pbu*>E@L)P|j$2yDcAtgfnG&})qTT3X)jP1gw2kYg{@CTC<% z37)Q&#&M{LQtl}upYI&iU;n`|rbu56-z?#f=yExmHOT?~st56^CbTaT@(nL{B~b)I z^5X?Z5^2m@cxa*jlY(T>B;f>Tj6S2neeVYx4s6s10Gq?3{i;-;Jwm}mtlyu(!w0h1 z?Uy-i>i!pI$DM7JkZRy|i%B-ycTU)le@s_jBL7Vf$G3bP6jBqMw^-;j_e$@4Uxl|# zChT+8JWW1KQis(Zi^G0|bprpu;o)MfUg+g1%B`gr7U(ocDEifI{XvdnZ0MR3A68Q$ zgaOyg42h|(+-xdZgr9KhOvyA5!A2K!7QXv&neldaw#r;k6r*^-c6LB(KDx;j-$LiE zy1`#ETIdZ_G@b(Tlap~-8p}8iQ#fk}ulqahD(iC1MjQ9DH*SBQm^2+9a4a)*3|~Op zuX?A8Q6c<6NgwalPfztix)Glel`j`ll+JHjRm!C!Sp#0;) zh0c{vl_Yo7E(nxJkwyysY4GG&u+#3d-uxhkhLRetzc|diyw)p#G3iigEsCK{xnN(Z zQ)6I<+d|ALkCt=w#5V*ZL$(r^?A)cXL`b8BCbTEdj!AoZu45vf7e9fh%rX#rhhcu? z5T293#1^s*b)P6+Rcg_QaA~Ls#{rDL#GCPxxbTlRlpIITX1ID|yb|=}q^to?r6~Zn z!fi&r6??Oq(WS`=E_tN5<(Y^9d2x26P!!WFizw)pZ`0p$JzRz-esF+2d%hEYEs497 zFGcm>y#9qxEuJv+ujCum*HkL?$GKl=8&u!M*fG|aDl*KD_Lrhc%OVV5vn;Wc;V-WV zf%nDJpk{Z82})`rB*PZAStkUwcwY)aWwWfaWdgytuHT>tno^yO?7oT?lMDIzvuH4x z6V~7hh{2(NG}pL8Dwjs>wOjK{m@47r;}3m$v(S7H-H002+^p4j?R{PsUdpBvSR%g> zrFJ^XP+w}K9t!B0I;`D^2F%r?+GkjxDEeF+?y9W#@^!-Mq)Th}pBVNWN|69R7Iv+* zhj$C=$;^pK(Mr>V=^}q~goy{z)ji$pmD8PYSX>GeH%X}$Un|Sgf~MR$tvylnMlxil zthsRDNIKZ&=RKx}Xxnbo2$LhV_z^$Di0ZC+*6dXMxf#2X{`Y>h-LMqKP4RsH@ zbHUGU-y>#PqPyzzPmo+0L!$q-F%E2F9_T_5WeccA>#gyD>2~YKMU#JAgUs_PXCh)} zhiFt45a!ao;Zmq~;BRh}+k$wljCD{TF(Q;K_UA0z(UR{kVQ`-e?7gIpugs_8gbUi( z8!=d(B;c`4Dlc9-ThHTZcx_!xY0$~%!neG_KS@1J zf?Ul_dv-;Yxh`ETDZZud!EA1Wa{W|}4lRj4fw{UXVOLqjXvW*S%XW+Na5N}K+b7@M z@>S1Mx`!{$K!jp}6Gj4yoEczR>^c<=i#-WHne;0yKNc_UccCL6v4Hi5vi{pwAcG-P z8|BU!69|kqU)g%b#n19z+NO6p&o7K8LpVpDyGx(bAe@EmDFH__nWk9ScN*hf@1k3(^4LI>Io+fgdU^Q-`GZ4V+KEER z{h9S3f?Fp)-uFw}31BcQmu-6fMo;w{$Tx{Re2ovn!jD7G=vah_eoGm|886oEO!VbQ z339Qsz~W1j6dpaz+6(;v2tVm#QIiVk73k^jq!%!^QY4Y9U5NkAu*4fCy9CtR2U8(^ zSq`htT3zYjX2t0Ys}}Z@h-l=}Oy#qLpA1%F<9jq|rG3}B7m9+CmU*>_T5>O;Ne9ED z8B_5%%`o@#j_}{%ZZ~T5cZwfyOwCkL&i{%|2Xr~;NY|+l_4YP5*>xq|H^8Z=rC{-C5#|)7vpx0iE`)I~I_N z3Hx<8M4^s+z5U0G798HSy9t5%*+x*vS7j`-TOPhdf&n(|A2YCH(J!8dbL5%Qdm34SV4B9 z)EtN7)%iW(M(TlDFx5!1$ii(2uR*NpBuNDMm9s=-A86XF_^hF3VWCAh^3=*gWTTEr>) z%8XZMTeq7%vEWufiFLUWWD77s-0wJH^k{EAIGrcB>?MjjWL9Z~JN)Cy5U%PfgdY_u zIycY3UTzpIboxcW^Sz8eHfNm2uz54zxkCXGq%~S6Lzyw}e)DL% z??MN*VuwkwMEz@{tE$uMB=isO+%9{3Ks$jLcD*_=H4V7|tPhwUE%pxz_;wKwl^Ekd zmO?!8-fEYTuP#3_=X4Vj8bQ&ambHUoKDLx2zzJe=kc#LEOo)$)!a~nKW>0$34I}}Z z{TtBU(9_q>S!F2M4pk<1XFVPuKNIn!?L@u_u?a{9)(Yc|v=-;Q5shJl=q|_(7f26~ zHu)Dr2ToTfr0Zmqu6E(-RFWyWYnxr9(TB(hnTz}qR=0lPzg8^C}t)#xQRRmGje z)zcU4PF5zflq=6zMenYmd2{1cmweov-&ma?Ljn!cm!=2&_ITq(!_O;Zgd}o-d5Ta6 z7c=^!Q&fIW%+Rl}cYi-6KNhuYSUObg)`nxgd9uXx^FK>|1Ha?m+XU2EJL5%DwSoZ) zbBqyB9v1n=%c4jZ47Tu0B?dV;sALi<#5$iji_e)d=SLKmp*63qqv2x6ORv;XeVGqI zscSCQUm!m}!xH%c7U;@j1UFHYc1e*8 zNgLMf;CN{6RmuFjlo~3vsGheC=nxRBVo_@a@bpQNCz#$;-Bcg8EKhpW?eg(=6ngx>Xm62cZ*yVI-G#CgvJ=1q%t*1N=$(#AKM1ah0#PqzCIuf z>d>^frlX{yByAGIfgzF)=vXhiRw6G(59rddsESo$BT8^OzX%XSnVc-qS}HyA3RPuK z*kiM-Qmlzrbp2_^zNP&*c?*rAQB0NSCe(y_$R58b zh*f61n{%>BmoP^|1mSr;1VpkTed9#(q2z-iT1Rk9lNBdNM`zU)cGC^JOXrV!U;fE} zUoIVfa#sI_D6MTD4`58jVZ$*$vW9@+OiT-`bgFDsZZ^VN>#?9T z5a+T%&oupUC|vSDbl04@@G|8O5!LMd&Yv1tW$}_YMv-?evUNXBYos!u5g4`p~E z;ifU9*8JW8i?$hrD8rZ-?} z<_5+5|85%0(@j(1c?*tLrgX!@LSR zSV7npnI7~OWM5>UJos~;y;`lrcnGvEuL~Rll9$YIZBIUlA`{*|D0Gcdv*!;tN4SM- zO>1AdDVFLF(ibKgDUjm2y$!(PbnDs|IMgd*GQXb&HIg=?O_v|RBp_5kV%#|+r*SWo zZuPvi+UU(_UY&#^+e?V|r!JU{>Ozt?^ip)|mAn9?s22&ya;*E2g|$j=249mZ^bW9cNx zn2Ud$FQ3jP$#448KQoQ_Hn4VREWDK^dL$R z0hNnd${}ftV56K0qvciBtIX=UrZTHjvl_%GYcW;f96&(8)rpvp(nom3Jp;3IBkj?& zl^luI3gDqrp3RLnA^0~tDUUfHGYZ9ovN|5)9vK`ora+|ftTo<&$7njXA{HJ}d%tyW zCXHq*P4L150vmE;*0Gy`k>ZNYlOdTfX%`OyoS6kH&X>k7ekvm^q9v)+c}|WNUdh(y z>choFa;I$o8wR({TWBl^jaYttN8@0ASj~%Xy84&zAM^9w1b~8>E8Pn$YCP>63BO;z zBtsVO?Mxm8C}aMig3x>tI>(}ev9?di@ATVo##=toFLaU5n(vJS3`v#=0&EA`ldc5m zEeI4te)1P1_EN8U+rRi0lh${U)QI&dDl~#@5Lwp+_NMH7Im%HjB2o+fyz1F<;p6HZ z_L^*5W2sRTS`Pq*IoWSPmP79zHzfZ4(CqKqM&t+exukM!I~n8fue6&xN%GCKZgtgM zU8FE#3peQKAUzT;MKgHK`5LYIqUG`9Ylz$xDkZ$=5z> z5iwmjE0J#r3zPiq*8LP25w)ph#Rr+`Cd6Ul#R$R8E6B_Q;&ASdAM@BfFLttb{NH*N zCS1bSH&TESPFn}RR2`6xup~(likIZ-$xUuhQD#0$meIR5c*q|n0HuygzZ=v zDYJ~mCPtQCvP>k7qskLF)J<{P9$fSYBV~sis7=R$d_o^%ic0hKn%U6qQ5`nMH53ZZsfr7uk@nS|XPX;v6c?=PM^g7`>Z5mnLq@<3)`cfJP3CEnBaVdC`Djb0#X{+?x@T zGDEIgKxE^O=`Di?q}kTGwvPD9HOuvy8piAV-KLtgm7?3$u7{tx? zW`!4Kl9YSowoev&JApyybC3Tt7HRK4lZ?-@XA7`36S>YmE9(u~CxTnA2O50Ij&hdO`R=+hHE7oBL0bxSOlDZ4YnR-a7Q-j># zr}=yf6Jc5&mY~k{QbSg`6qfS2uDQ7=m}W8)MTVP;yeRgjgoK2xF#|dm)gs3#lboOv zNmEsrp98`IK{$IRIvTt=BSI_=zox{n*DG9q!#Ww!5_yUyWRaxHo^p6UjmGc0_XPBx$CMklu4ZKO{_1rGWPB_O@Hx|J}_b zbJ;xI)r6VnT(B$LRU#(cgX!TTt2t*E$Ih1*QASO#|4Z@a8wRnu)z=ap-FXAI8=AyN zh|kpvK;Kv!XH}v__k5N~+3Nl*0^psPSGM^8aVFCe&|D-8D*tKP3*j)WXG1ym84v5e z8vH#V#$c2nX;0AtEzOelZu=9abEaoz8SD(^=CexWtEy_j`;aZHy;2j-lF|*_=FsY= z+SNE!%0RbB8!hGd^ykJN)z$<+!E-|lXN_O3yhMdd4#}Tkm!9Fsw7}g9;>D;Y&-V9M zQ2W00JUQLXQvU^y#E}!0kN~t}nM1Ws6atV5pJ5=k~eyGm6ha?B-N-LwLhL zX_@zhf+ly3x&W2Zr^<2B91>fveYil3+Z~({wo%Aof4^wNj#HFH3lovVx9UeD1)>9z zZ&^Ub6Ko3PozH#>X>~u|l&}cxpXMO_{i}h)YD4hfEz||ky}dInE7zVKh~K}(m^K9l zie4Pf@c%nrvIA4tw+BVo+B2yhU2RqXpZOKj=Sr$CO%isy`Rv31mGW5KtZcI?DIXDY zh4tckP{F~c>HE9+Jfvq++@OyX;!Pwvb`lvXNtdd**!y(-WwzE-EBrvH=t)RZ*;)1GYp z@s)1%yCJHGr1Y0t);H!$7Rn4o0FX9Eqo?dKJw5c?OXcFGJ3Um{XXherb-pUHi<;Fg z?#jHv%u%K^ILnYV^$jAQ=PcZY#*%7n48*eM^Y~0=W=~=o*(D}4+#o{=Rk!8}f6>lZ!QbApe6)10{|LNr-pS05u^Rpwh ze*hyNE;D@(2HVG_#j0?|b3dy%;`vV<4@4GpM0KI^(s6J~2@CyWK>hjrh#z;>^Piwm zp0JLCjTERdSx@ipAD@ohN)_inp+i!pl%+giwm2<&d)eJrfMv<2xfG|oQONQ=4LKn? z7;ChFea0^zR#F%0kwFn7h-!)DQNW{93WqJ2MZG4aBCGU4BMon<+4c9r<`qNY-TZCm@%h|wC`afRrT(TRIE~cc%n!h_aJ4XBq>BfAD%6`$oh^d zWonF3f4G$Ne_;tIMC}CALdP(T2cSTq-c21bIx0<-$PP-_pSV48cIedxx0ywCtJO9d zC=k#|8LoG*OHSiEnoxxXGnU#(ldO^Anf1Ev_V$<7BaonaH3_9jkkT1~{?RVFR5Yc9 z3{KoB6n$Obm#cUP*>wKP}6WS zL;ewGjsd+v2+%MRIuUpG`vV=SK)7$I)ege}t1udsVRlf}uiiJ#Phs^QH9zBW`tVY0 zEt4>pCb`I{P{%k5^G=GwuEdyTMYHYG;@9tR^|iWKNwUL~y3Zl79)@!48K0reGFrsk{Lx$Za^oIfpbHKGCJJ3eX}rFo_YX3_wYe zvSSoIP}uGI|5dL*jmN(hvs}<1*pKXZ*xqF0A+lRvljP>zGbO*;Z+mbLHXi5`bD0*q z%PcgHtmt2VmgiUL?=r$DE{v^cl5c3@sdqkO&HkKfG1MF_Ru#D~bSgn2^C4-bR^U)< zY~v`%l~a4Zx9#dAOh;G`al^>Ml+*EW)^)Vqs{vmt9C}nFLy43OQ@u|+l(BS|Y8FOs zOhNfkq0wqz8?j-SAwDyC4!MH)+MMRQ@(UHPFgb3UKdM) zZ7khhy$+&h4YAv2MH+W`pz-Q7-(!Lv&3DEpb>&HU(pwv&KJ107K(mK2cSNN$ENMpZ zIU9rRZ)sK*0s?C>St4{cRBE_}e#xDG@Qa(>l{YRNsl|fa*{4kD{e(bhVY)W%Ut8In z!zD!XXNi3rG5Ho!4Vp5~*sa`Dd&t}3HZ9f|_06n0u}qcb`!dSCAwh)$#qm?doVRD^ z7@$ODL-gbvi?x#0BN(@>FN~Wq!na&|R3%xX3g25Y&$@2SZEwNm8|w8f%+ZkXySII# z2tpb7?}c(n@KaMUrztj){F9~?^z4#tZ1J<)@$r2>el6%cVC)N)&QmOV>(2^wFZMo%OSlhzqn@m}(eW^7HD;jqk3U$prFBjUG-I z#YSZ3d6jG6(s=cf^$k!gH%Uy6bXk1FTe$xL9cKPpMBy-T^JqFg|{i;W9G4v*3${~9*d^M6`^ z#O=l(o!^Og+_&`IOX|{I|7D69$nLA5dzQkB_O~r}lmSXf>5PF>r>(fVg#8Qx`DqHL zl;!?2E&b1WsgZwqmW++x;3xx8_B}<>>l7AOWTh+!WVk8RAl-$yIE1N2YG@=V&vclX z(IlS~iFr>hDuKm#6)?m&wWllA*s;{ScX z`?#s8fU)Ci5wBQJGd?9Rrqld}bf^zq>nr`uxt&6t;#@DkjQjCh3_4u)W>t4VA>X06 zy{~%Ze{RS3=0e=>llgQv(UKY-*5=QN-&>dce&L9Otjg`7@Ho8Nl}zH)*NE7jC^(sC~M^n7yaOog+{>OQeO zlKgQq>|uytDMy#{O|a|xk3q=c(cz_EM;I9=_st6RObZLrug2~(SP)_Y+`bP5`HKgL zeGl-z#Y~9&ZK!*?_&!Y%Mj126w$!>DJC%e=)L2YoQbMvlzeIOJP7@PU6p!vXft7-` zJzWm`qdeR=5iDI!_pQ%h%fG?wD2ewk$56{u_Eo(16*~^-3`{tiN-o+Q`gA&P75kqB z<)1Ru^-<$I@9~N?nmhlv(676{wML!r1#Y0*#-_ba_O;ks<>Zs0@voVqS^ma=2ifp6S4s@GEj<*ED-KSI4IX*Mslo>iqn06(2-a6HR(OT@2UmZsCD{AHhCR zvA(=KlPjffL=pXg=f>oLuaz&#zS959`rhCk7*j*TeSpbC(f)lr`qG*kHmpbHqf(a1 z-`&$6zWe5W43x6)U>U5bRPRTyjs%4iS;_XEjgY#&^Ws)K>+)w$PLMBN{6at`VEqw1 zrurhdYjHMd&#t~?*N|Xp!jpH4*}l!EYZK+*p5DG=i6T-1Q*dN>$Er=3U7$v+uX9XB zIvE!`68rBhGxbZn%pdv&G!r~l%S@8qDkdhPHquk79Opi$Yq7vR+Iw$y07Qf$p;FIh+O=S z`cWrEjfHe{UqFSNFfR=7H4ql`N}*RTdH8bbiu23rWgv5PXH%~ff3#Lr) zo-8b6#bT!LXzZX)Qv5XqdyxTqbS@?){|>8zOZS6f7H)>};<8%D^u@wCjtWBnZ<-Bv zX=i--P#KjafioxZOD%1G%fsK`s^!PAj<&n$yc;bR0e*i7&ReCd=k96w0m%6e ziHoAjS(=(FR`clUjpl~O;ZfH0FGnoEQ^rJUrhKNorJ^-x2t~dK8M>M!<3>OB ziWV;B8kI<-8LD;ERn$+YmC9mly1XmBiS>ip7-a~=&b;Z?~t zUHv%hP}fR1bRToiuG=6XH;%b;aW-S#j)Wiou~1}Y`ohZD9AJRirSwK+#Pj$gFTZA*Y*o2 zC@8oL^I`wlVV~XcByBFAaH)x+heR=J|D|&6nfUM(eD%ZIf0yit%o6`T#W8U0VaIba zJ#$!(wUZ{YYQM(GE{TIQq^ELVB4vz|<1xqUgU)Ii+RPy~G{E)I_I&+So;c-INzJJ` zD;?EMUhnL7i0@|SKgE%`0;L7rpoqW912|W zGu8R}!(A!if|Z20%jJF6$la3Lv|E+T0)1U%t0XClbAoYOEfW885+d0-lCo-shOHgy zOpIh_4*@ONWLPuss%}kh4@BD~CK;^NBF*jGv~0GA3?m&8zJ%p@32L-BW7uk`cJ?U` z*#)~*j zsy?uCU2NF;9%F&>KdAQ_Ks`iK*{1sPp}kI)bdS5}tOFy?%tjZT(tIo=i)K5tu7t8G_y?28DQFVB?PzB=80|2R zZ5?DBgiTGg4}VjLBx4x-ziRsw*3leT7hW5SD^jd3`NID+4?6%6fDaNMZ(^S*dW@uD z)h7b!S`{(km%9g_*c%5zH4(9B693z9y`OS<%b`*ed`xPppD@o%JE?XteenuVkg2-oJ|8f4v-IUI!MH zGH1~c&yTlL<2eUzW77e1$R~lUH|HFdV81;DrtZC7R-&nLdGMymuIIeNS+k?CP(LNQ zlNFJ9IReViA(dEOM7k_i0=irGZEI6S=vMIwZNXGxNX^XV+XgN^bxFvFj0Q@ zP7VYQ5n=lIL>ED_gcN5|E&08-m`+BQe>g?k#3|6yglA0ZS1m~jWBQ~d1!peA5Pq8H zLHobK3PM3|7(dBel|icFB62nkmtGMOUmRL=-K8fGhYmp8$1gNqY2(rmrL4&pK4&$h z9Ik6r|IGCj+RnW|{zXMV-QLK_gIM9Lf9gU6+)~S@0}J`F-mI~ed!o~shWrzb2V*y4 zQhIh$*@eWK5I5VKDUD25BcC;X_5=2tA&Z%4<&A0*8hB74R8+LZT(rObLCu?{G44$Su@& z4^O`ms3O1a0W-vq!^d_X{{;ELq42n~5r3tJ$Ejw2zp53mLz%mNpQP=GDM+Hf*6h-s zUn1sW`CBi`ru%OlY#P_WrV64D77G=6SmgFuHv~4Ue#O`mSvGLdkkC(r3-)*GDEbv! zeNJJzAxEqKe^+nwmt5XAV9U&B2I%=_cwr1+GE_P*xAI(0uAconI{J)Qcy{iWLo&F_ z+6@ORvLfMIOf6z#mX+lrq1|tdT(6EZ)6;BbE6CK`;@g*4Q^&h>#~)&B6Atv1f;+#j z4Tiw|49%tNCi!mfhn!E=CjcwSt85m9PXolEJOyW);HCv*vHJ14FJS@r1pDr)j93B_ z%7W>qLV;{`B=}`i>aq&yaG}3%;2&`MX&bs{MYFO8_acW+E+FK=yw%`Rllt+Ss)1|U zJ&$_GG85zDLPaWj1g+YF#)LdD?bHXnksa-}X1g`$8Dye=z!HQh zKN9gg(BxNUA#8anI;)7t>DKo##kwE?e_i{nKqfUb4<9%!=&$LSH+XceD|Cc9QM5UT zDF2L-+3&i<8n=>wh6=OR#ukxmN7&8}N!AYZ5!=dAcc95)dzm5GqEm`JFy(8*D*nD# zM?rS&I*|s}ucIjWtVJN6e4$2J2QZ#iJu>f_n}?2+vP$K)#n~L~a|DnmR$X=f zcZ<-Bbx8DI>gs{2@hBnHyUpIDIfmL2m6F_Ck$+&k#eG2r*Vb54(z13SzR!^8g15^+ zyxx|!qU}@jG^>@tB#ujz4Xs9 z+0tmJs>lg~r$a$*ey5FGFe@3Y4!1pXt%pw1RSYkT1Qw4HTPceZ`TbpC>GCPl6zTs~ z0~^>B1RmL%8!MJzD?h|h4qjef401Kw^_4jP6Po|R_k`JW@n^~c^o-;1s!sd+9SFED zC{dDfah6rY9vbw(zq~rYRF;l3soV0MF&+vZ@7`%EH0xWl7K!`d9fw!r*DF{U+aBn( zEB<&{TQ?T}_-W0&4(U^iV(GzIsh~22K#5giv(`;H!6&zcBShbRD%7=D}YmU3)&F%e_4iYq>V zKo3BTJyi`XGn0S}cc+EVP&fNCB?gppoDJyNhpUZ1)||TSxtnAUVrR$w4h{PEXtBt~ zh;~bPK5nLLdW^YLoadsV1K{VH%e5B_30BrV%12GANP{Jp3Jkxv@f(I;MI+Ms z=y!8d-s>9~!AFD)Y6&vB#4Q|k?RHr;K}wJ2PtGy1 z+qkH-R@Y^Ld;gE9uZ*gy`@Y5iQIQg)MOr|*TS;l88|m(nR=IR{gLHRycXxN^r5ob(C#m>0M7+b~q@_>@+hiX&BlpYF$y&P|M z`whiJQOoD;uYL?dwOPKsLhWB_QsU-bp!fjs7o$ew$46$PXx^xQZDRaUn2&eH_@;UN zXbb<=>S~NbiohA`RosT2VK8c)4OGb3$=+v4yo3_x4MSX2E%B8nwj3Hsm?#D=pJ7;! zJOmYMit0g2$P3<5(?=qf+4Em2fMfV5_yX=QBsEVhEP>z7-=XTqZXb2b&{FNi@Ih^W z?-0nqE8XF4Qe8_+F2-}CSOa8;g^7$nU;^ni~Sx#8Auu3ORY z_%qeCC@&sK1bgZ>4%?t{V`KeIyKa$1sq%4VYqklax*$I%^|?igH8mHjBi0Hb#-ND- z2_*2GrP<|mJF2&~I=%?vD!UYUSkq&WNnUTZKIR8V)+Y|;k%gAIf$u;4lJmj`P%KZl znU}bZ4}H!X;^z=v)+t-MUF_=mAkp8z%nhyZuiV~k5@JL==KiTF3ZoPPk`2pYy1Aup zL3U=F$6)omwA*yi8$`bgWY>iFWG%JnkCa4N#f6+xqisuF*QTx2+sSwPA>!4Z;o~+5 z@$pfZ`sxRF!&U_RK#4y$D`Ze8m>Epn!`Jl6bvFk%m{pXOTPNj;Qk|<<$+o=#jSjo$9*#azSiM6O&;j@V}7In!vJ6LXmM#OLvfXx%ks$T#%AOPfn}o%}O6wkNV4f;`?9{nahrQ zt2-R^DPCQKvs>P%oMq-qE#`;XY&^AEXN(Byoqpf897%^NA9r+$uWp52x|=nl+p8Av;X1alhC zCmajnZVx+ea&J;!ge-HrV1}To){b=ce3p}t&j|UoY+>v3_mVlG^nZ2eUS;Z$4n%kxghGbY|x)86$HXB4*4Lr{mH*+l$A zlnk_F9L8-KyZ?bB#Ak1h;ZX$?P>AG{Qpin?ACO-z0yE+5%t?ea{(~v_KT>qNnMumM8(z+fzdo1_wzlJ)(Aku*oYVgVuN$aU#*`ZwBjzrT4Hu5^#e z^J*AKpBB}-!HGpU0PFrK%_HrEn$4Yge3g%H?YX%PwqWKg*C+z08i9@vrk5^ozxY5t z&PoD75_vc=yPFvc8MSfVI<$HHD`Q?xr8@gmVmcK_mfycF{3_S1v=2f|4P_JU-wx{Q zquz>o^B(58NuU!^_Jgiq@Xb>JFwko=s!~&$q#>CY5?X=bcK-UdG@k z=39y^(n;})=BA+m%10=rY`E4^=c7i~ue0SM{72|(?D=aKF(w`3H6&0Br1gq3B~;)2q1C#(ueNbCdWpWEJ>#*6H)k1435}J3E0~lwARu`2h{3 zjqUstn<0OZ_uRseB6%~PmAqN{$Ga8jzZnYEMB&ExiCU61ZMSy4wBv5X)Vpm#t;Mx^ zlkb}65$&I?7XJ~ecpZGHT@cITgagRJe$C}7@3Ti-&E(M zlCLJ(n;0r2q<}{rp1@Uj6B-6vUawLVZoq2LPT-l?aPlZ9GB;W^LAM(%q$Y=7T5xyW zz9+L4R*l=0dpyiZ zy*!`(Fsp~K*FDUm$c?){ojgWKV~eHl{cJgK-=*)^Z?FF$!I$I-GO z?m`B&oo9{ab~)Vj$j-!ya>tS2bPZ+TH>!AmTOyPjvuUOgzkSV>)%$;5fKc~#!d}d4Qee&438U`k1 zf;lqJQf^zlrNA!00U8<+nP(v&gqB}ab}?pQbWukm>Ss;&`?&|3HUJR6{lob^9V8>i z87k*(v;<|h*oqaSaiG<6S*dC1mybo)k>`6Q^XvBQfZ?gYoPJM}Zrb+8EDNG#qNqF6 zZRno6K-aPT3ZOgDXs+e+4@Oy|IiFay8qFxwn5eu0QN<+8=T~M+swn{zdxI=ZMU`u2 zU`v&^$G=Q&Ipgw%Xkxmgdo2#!IS%@g+Y7)IjXreOf}PpZY|N7rtPsHlt>!CS0e;s` z*O+1@wfgWYTj&V9OPLd{2Ch7AWjYB^PA=dnp3!J5aC_o0g;Gv~Z4 z+dJ@DkP+Wh@^#_+wWlY3gf^)B%($J#*jo7yTkf=@Bl35ZE-y3u6M;o8aT2nwzLX;i z(RK}P=+surw!FUKHZx!gaj+))FXz%LgWMvTyGH`aI~(6PzkQpO`G9l5f@8q8*7Ix8 zp3weNMCZzTb_DL1)n77ZR!C!u%QnO z9deO|QiOaPeT!I+Ul?r3-;hLH-*PYAjdjIB0(T&R0oBP-N|TC;lSGhMSvxnHNshNZ zLD(j3YH^Vg)92kzSd{oTr_d zViWTX00T*A<9B!1J2vKTVaa#xo`^)OK6lqbNc=|8`!Y@{O;f)SL!@xb&H_l3;bny! z%4!P4Cb#XZarD8N20Q2Fv%U<43Xgntf~TQJ&>>m<_NU4nsvI5+C=KAy&gWL41Ukj(%42_jrNV)Av&W z#~tDxpEk;svE{e2zUJda>v#3;x!yRo(xVS8Cpsf(BNFijz^l1yT3qjkzK(&S{rV*j_QZoV(l46mI`{nT9l* z;UnTZIIbu))c%xT=LW|~ggh+R%+b~w+v*^EnP9m@s%NTj@#GDc`>aP`dgrRSg&w08 zOnMV5k})HbjBJ-6sSuA+G9+q}fl?g&-RtK19rpG9XyRO7o>HPk1dM#r7VDpx4f$96 zf&0u2fX*jMmd3mW`7}AZKP>xI9fCp-FNA;M=5zd^&4vdTjfEt)=ra`T+M*+0V5`vT zlo@@=SC7AK<9_%`qg=F4AWh~49pCbTJeGUcBJe*r9}nhPT&R$P!EPLVkKaB&*XqPL zox+TeI#5T&MxP#St*dVdt$CaLy6RI(kJ@?^;oUH=dbPHwPu8BMawTSE=PbH^JSfy@ ziGbiEdaO%nkanX_C6xDHzkcAFrjU*kO85IuCi?ImWZ!oJBWjrj4>T{{RPi`lq5M@$ zK8J$J`ZUF34`MCTj~k~$ZGuWBMnC>aRhu+oYKGE7654v3h;wR&tlxvDuZ5sm)9<#$ za(5{f?gDlM&Cj;ORj%%}K!!Y3;cF4RT5HWDz!im4=dQ8)%%}0VpT5RRm6x}-Z)&fe zVUhib1bLM`cpY0fe0Mg+5w)G(eVWS4JP9Yk?D{al~(3aWU1tH}57l)xwQ69~R71iJY)atGDi zG9%DHg6a$WEzSo_!7RTjRTZ`K-HTqbkm>o!sI50DF7_Qo6ei@0-(&b_5=4PCEtjGZ zc4Um<=z_ARcxN$>T&^fT-CzUd82ti43tr!M&{|rp4Q>tnz$rdW+$BFz@m?+RUNtr5 zV%ihiuVef3w?ILDMEhdc+j$KkCooW?X*_HAztdzy0U*`yqCL6a1a}o~2!TFas#th| z_~xZE-bwtwZ&t=c+~!$TZAro&fy1q+>E%&Iy$-fQMU<3`o70!`Ntz~8??^*3Wm;ZN z8|ly0M&a)Iye=_j!%ab$ot=clWtx1XoKo{BkCs=-?L*73o$db+N0cB!FTL zwa%oH(pJVtTva#QK_94^E9lZ6+1w#OAO0&wVS-$%4zfxb$xJ#Jf8uH8t)h&~ z>7YmWFNUq;H?w)>dA+H`9A}Pbh>E4`66xae`gJT1FI9|_upTmC3yVW{o|R_grw;nN z!e24=K3|n%`;n5T%Gu+L`pv<$moOP#Eu#23A7k^T9*_>24b?5i*xjDTvATU4 zRjJDfM+sveQWzmTzCaWvKH-pwym|u}_L793Oj3h^-YgY<{_y{TKxuT)y%o-!I5Ugx z`0tPHS29OLe&y?iCG;_HGz6N>`LOOD;fHY%oTMXl+{ zbd=^P99B=kEYzfZEI$TJGer%Z$w*sVytShPGO(Mzz9Wxd=BJ!!dz0MN3_kLx^>cL< zp^M-4-QCjm54JB4s?X$vdRHah2%vc%Op{;>^ZP=ND7=Y?-YeYFZkeCnL2{YCU-AG@ zb_@g9wFkfgDqB8)UEALfY>h0p-G2O6=xZ)yXJPEIeJZ#3eP*kkIGho9Fn~r}Hry*B ze%E}(W4_bSv-v}iE+$hi4{@~CJ*L2+`3p6z)eNx5;K9G7^9vql#r8g&D=%suT){c= zX-ivrOCUmD%8}S?314v9PzGJ83L`NG|CWhK<^zKs+_4rY`2TQI0Ke0D|5pE5`%;#{ zGgZ33LN^2fWH1~7$>OGlp9)%%cA?1CW}S7QKx$pOX#5X9n!H-}frlp0S{iZKwFfCq zBOMy4vr<2F+Cw*^{ZK&9>matvc~IECNt;|Hi9*Ecv#rB+D+~u$wEU{yJM8AH+P}vI zpyFY@@Sre(cl$$0ygQv`bHBGYry#}NnDWIWuu5Pe6+B+i zFPnn&s~tNc)lytseCA|lIfumdpY2CO+%c&E;ks3RQiNR-*j=Q$BX>R#nASAP@x47; z7rE59-R2!t0aj$Sz5rxIo+=qoDBN62?-(-g2E!pUJQfNyF7&;aUwY3D5O6v$Ar6dN z+j$S>42X)pX~1{3`?a`rbafUWg|%F1s9|h;Gf90#Tg*cwMuxYS*WXXSqr;q*ZqFCR za#0Jfznk)^qocE1(&|#JJWCKsdZ${BUncn55ZrDG<9*Rw|iexS8l!L zrQHAOz%<9G$YzZ|eFD>wF6L`L6F(BcZiLX3?TV zIY+(k!pE20?8e zXKoY)WSm3Ap%D=(jRvE8ECIN2z8k9A zFA}G^5JZd{oY72Lg5>w-XG;+qm%g4D9u_mm3Ki^H>|bnOGL!=BxuNP=BRzshR}t*4A0ar_}OQrZvAqxaUG*IB>e8EJEYqq z4Mso*7do~xt!QI<6hsim26PsiU35<;W=X?G+zvrn_?*9zo&GaIcD$JSZs8Mtv!gb4 zmC4~dE$9nM=-YqdlLqe4reLDh1HL;S1G0LMQ*!qn60vgss>ypU)^}|ST_aCK@v-@+SGny0_Zd&iH86^W@ij={S z6Ii7h8!ZaK)}OpAsei=f5A|>Jr00o{-<(2%4V-KWQuC0VPf1VOOD6ZL22z+PIVe+= z2xruRY}eFnz|z3UUHpm0V5Up$6yaTx>wbtdUDFlsmv?CUz_2zIN=eGtJWNFTYSNm<<1hT+K2Vdp2s-!1*qZ(Nk`Txuw$ zBAj@bHJ>y~(FvxzLW-Ah6FPiE?7W9@-Pk1zXOJF&mh^O)Vv`}RNoZKx!by>T<&r_r z@W~(Xwv)QkVNyn+z}%jRor~owN@fP+lyouBdI5Pk>zwo#^fT(?<0t*^i~QDhq4y#2 zpRxnVQSjHE@t;gc=DqX_3HWEPupUXK(Ab7O`MItO#4cW=Hd$nGJ@?nA4%?? ze*X{Y*FoyW?t!7h3VGhWzB(h#V0)qB6BF-|x1si_DH%z^FL7z6$#bslrl&1Bt3<#| z96o#^(oZ9N=pl+3L(2J$ZG2`%9;97WRZS(O<(U~U!@i)P%UWF!LQYHTjT#;q`DeUy zV^e=~BcoT3an$L{JhMVflwsEu&i-S&V=ps? zynAM%*;&8trPkSw3Ru{)`r@T?;=jga)Lh1^_5dEa4*e+e>19;lGuoN|Yje3v21cYW z>QeT9?ojx3N3uFUZ|mg{#_LdGq-P4oBT8TG4!930%o(2*=P z1-V?&Qu6Xtin0$yBEZgHXICz@hf znqn#%8af&pX(_3@%U7qTj9FQ35|VeyY6-J5%JkU$=T5fMF@#vaWPVfr1r7s^0n`#E zKck!4v$I;t=av+Fy`-cjIhcI?gB1a!TvY_{A}Lb;NTHz>_dR@&FO-Fh-cz}~aWT4*nVORS`^d}50C#&N>iSt9dvHv&5>}L=fh$!{4=s4U_TSloNM6nlNpSEpfx1o8q)|U5XD^!+%F6DWj@tX#Q^2^M!OW@0%M=XL(hzwyv__KaY)rw|lX; z#^R!59^3D*y?gt`z;iJQOJQ*ZK6V}Sab5H=%_dP-ygLR)Mp{Nji{&P!zP?xMT^v%e zE6jSn@aGaQza`$sE2yO!@SYmN>&0X9`wn*7Wb(5-X--XjTuRy(k1q7?bONTcpV43P zB zY{O^8y9?-llamA*17eBIU{(y>QxcN4f3zTJV|?FdH9LA|Myfj2}15+aDB5vvRsp|p}Iur ziw+`S;BSK0ua0i6_StL>X5cNCyZXhL6lt*&@LgHYS06KNMe;v7TnFp9GO~;O2S?MbVDc8BRiGga4w9Q9IrmB|M%XLh-h|HuXFVg zh63*D4-b7)Wz`*Q_aa_5(JKaD0H_V|3_68ljK1)v8nS8%@>?rV@QY zv*iD`L;~tr=)ioy{#~FJXfaABDN2DI#VyCTT327~A*Ha~%H#}{;1DpIR2G6(*(yAX z^Y`VE0Lx|r5%%p+v(g?@4gKn7BYfi;^zlNU%Gyy*L!;hkH0#N;E{IR}N9vx$#cJk< zi)Hcc;CGn2EkQkVVew@P*2A4~mb8VjeBS)zNqio1(!-YvwFy72?zeaPfEyS*d*Wv- zG{V*DqVLcIu)8cw%r4>^Jjf+Rs<)}=s4vc(c35H3|B>uP&!2oaKZ|4YoE6&Us0f&6 zruyc#jvqDt#_~_(NML}y%*x(9F9amh_$mOf9_J?8`+m=IedkMiUThu4Nlz-O(Idwj z0vpaOX3mHmj3j?z;=hIJb}21}ES>P_(Yt_KJ&|ivf;{uIw6(zjVepG1B*<&)Yh4jJ zs*Sq7;#S_7bLNrKx#``tWndX59^NX+%hPB!7XV$*A62U6KEZA^U|~0NVK%zCiOz2NEk#~z z%6p_&v1=wRCFeF%DijhOkJ-^o%88+c{GQv=oQId^A;L*(5n`Afe5l?Lib26SVL5u3 zyXI(rw^)v+9~=JbS87()khb9s{=lZ^N$2(VW+ z`H}sbny_ss<+wpW!1#Yve>)WLZM{Qc`Fq1qq~XuamM@;>C=Z*We`$!3CHs3@bG5N_ z-ROYeosih+V63e&mA~f9;*vh6eZ$(F9?(ex>}Yc*w|@w5f@AqkWaEFGrFrL#Vclij z7F5vsz9#3KkhW$|BonVH(5UxmU#+XJZMft$`jakfm*c=>J@MzN)ezq&_8kTW3L)>q zrMXtx+n2xl5+m~(LV#!v4%_>QfRVU@+daj8D`apB+jHlq?jz+CwH&idhIIeQ{v+my zrx8!Cqbt0LK+!U_0SLVim3r;@gkvS}3H^&O2ha5d-`A$R2%7IV+!bAVHXIskfM>QT z|3&xWQobqQ{H9E7^k7Hu4C$*167)D7R^7V|aYB2u?5U`YrfXBxmbuogK4QV`TTNT0 z`APee-SO!TL1Pr!ANcdNIb1_EmT}+)x0^VoX&_o3>Wf_ae*J2j zkT5}`8s|1Fkj|7~Laj=(Zo`2{gzj})e^XbIA2U3QL{L%*#Bdq zRS7Vfk7&=i4!_EC><7qY$f@ZN$wm=0W=FhszY_SW7KfnUE` zjND3cp|36Tptwr>UGw#S96K!$QET2FmJ=6Z6l2ONk0GR~d^e#>T3y>~U4Qjwb9?u6 z@rSD2%&3=k_d9Dq&OA|n3Z`BpRL$;o)OQ!9*>3BN*z^`#Q zOwE8Ow*+Y@8X$Cd?>;w$S@D$22K8?afk9ZC{fKGncDnei;1Xr2ZU@ek3t~I+{Gz-` z#-*zl5>_JM&~?=mRnf2UeEa_w!Vk%{P>#C$wSytJXKJ>`ZgbwWs8*v+`g`jahyOtVYyH_XRGo{oll*tVx~1`k1IpjNjXIwp-^&OeOU6H!8yrX;c8-VGz2%$d zJQ0oxhc|zTnB3LnJzrfkl-T%_A8mjRya~9S567NzzVwrC{`UDM{rhWxSVw4*^YWcs_GNYcXa!CWI)+#Pn4e|y1y8>mJ^4`3sZt3m%p=5?~vB^Qt^*ZfAvUJPqJZZ8@#N!_Qje76#? z*PnPWHOvZTXB(uv9%!8lU(>4Dy3j9YOmDl%U8ujZlNvIlX7XeS=&Dv7ShWfeqjGyn zVoqW4-Pgz*4Di_TNP8-*O|?BYS0f{q;=)|z!@Kkw5a;!zP~PEW5slLR8EbxO5xdXMhv#bb+GsXo`@F>&PnH1`lzc%ANt#<2w7mze3Mpghbea3*zNS*{t7wC`ZT_2&`MF)EpWQ9d|V_s*$lSPQndiV=H*k+ zpPa_bYVz1AJ%G;A)}AoX$SW#Lf-4LOi0l?@8R8bk+9{H^L$+_&^qnXWk{s}L`Zm|* zQ5Ma{m8MxPCS=qrt?>Dcpqe{#)hb>639k^MW%KIpQ}`pkm+h%(9sO)q%a=zLiE0XP z!o$MjnSa9yF4O~)LL}f)kXnZ6C(juI<>T(Y@RzsW6YsVkJAZap6@tSRCbsTK z4lajB%?HjmBWNV3Z2BB7HJ_Q|ch{<Dg;F)i@izjqLfh60;=ACmlf(0RbH=+>?mpL<3Q#|%dD0mZ!wM1 zWOrG}DfaW){O~{M5(3AI^D`yY*LQq#5*#ygro|garWbQGDA46Pm+iUpxU+xe>_WhR zoJ(C86DH|h`vqRY2Wd4)sTjDPV}_g#{Lr}L0OLh6{g~z$^pvI?*HpchrU2W)QMpJa znKBbWWSLT=;JdoRey5(8j0<(-TY`di<1ocZnSIkNUE}o8V!pUrm|Rpdux$0&@-3<| zCc4P0*8TtCAnI`1yfii6R9fu#r$74ZSd(BSjJ-GFx&IY8tmQd94bA~H#L zfmi>sIyB3FY+wjKjtnq<2w=%RB&8uDpJPu<0*(eCWUIqXt!>6yKDM{X#EeI&;TZ0 z^N)#Vp(p+RVX}t{%DTXwIo#39WW>FJoE$ivjl2KVaURqy$8($c6H8Np~EB)n_S zC)s>pdprgPw93ycAtPVaY?r>^cN^9b)~#aRgNCO1m6o^{A)aaNjVQp$h-J?1wCk`k z?Kob>o2~EGbny`~js7qjbddd{!C&ImnUt4_Lt$j5W~;N^@ob{~X;|yFmRD#%-N84x#7Wy@(pQoNk`!a4V9dIrc_wiByw?9~ zvv!4<*zStec|um0m%H?t7I!?%P>Qay~a*~DKDE}|o9 zPzSf_voRU!bdq_jQ%$V~f*!)rmR!(%5I%g$Q!Y?XeWqY?|;ML@TJpM||OHFmE+-d5z!gmLgQN zU`@o%y}APrt@NmIFAV%~)e1{F6!;XhvzGREZdd=Ei_C@wsydBpnfNYonc37Ha&3G zeQSkJOh*67b-8%^V&Uk(a_b655gHABe5$QH$tvLQTvRHb_YI?@{B7=Z>MOPC~TF=#gaL9+q0B_S1lp2CxeY#c4tQ; zgV*w85$;Z|(4%0!3f##MY2t_`$RXjP4`sM=iILRhl+fWs-|uGUB}D4iO((l4-4-7p z!O+<8hSBOxxrB*)2c2nr$K_GOVjh)szOmU>@&oaM2&L4qPfl;7W1=NZ&UX*yv&$`c zHSoC{QHUyxdu!01&EbRu;?Ddc9gS5{3r=c|DVMJ^@3hpIWA1TR{T|C*UygeGL)}3! zT0K?9ruKL?9Zt)FFq3JPbrKg-7lS*3B?Bhpmt z-vi43rC4TEK+9;v$bQ*cJN4>BKU6Y~b$cf4*^4V^JiRf(B!HM7stX{;KR4ZG`K{Gp zZzYn2zDX-(QGnYTsZLjoyEzZlhHm!_71`lGV6kfLjOR`l(&WFg5F<91J#X0JuO!k; zmyIiZjje2ge-Rg&*ko{*Tlj+3fuL%mJt@h7SR4{+?U4=U;t)f=h6^HwZB)M)E$u~2 zeejUD(?7jUxB@rRz~+8bN)_%AEOBe-(cFJ?Od$rw?Zr8k0jClXA7P_+x7hC!&i+_` zHmZ8se(xI;RjZyVCM9KS?IbBRN ze4*LVg|Au5%*?-5_3um(II8Qc>JM19E{=&qJ%L`Ez^c(R*5^DiG+>@?&?x!#Mj@X=L~Y2M(|8G8;C+9DZjO|89+ESG zHvPsjLOXr%NVxI74YfK>KL(~U#h?L2*+Q9_>vYwdvCOg?QyAlW=6A$z5ZbSUL zIQ9d~c$wTq<8QhE_REE<>wCiet&qLxN}Q1XCU@xMM5l|tvuW4l*C1HRAb(5$O+^bm zUwB-mAmYpC_i0&qW;)5>M%c-xBGRRf3|Cf$r_XVno@C0l{SiRa#>|m-zPbz=PH7Vk z`8AmdR{nD>pFIWXv-XNzR&8Md^JO|@k94yGB07#jxKM6+HMLv*PUi3Gn|ghbn;QG1 zzbj=*H&PLQ;7vgZcOb#`^?S}u6FZ44yUzP)p) z;rQY5^{FRsb4^+97n%^lByj(Y>%Pm))D=IXPzPz zNPW|ceGSp=mR_ni4PYio+5?0ITwaIsjnJYP|3gXfob%DLP+o*VmmAnI=n`SO&?N4~ z%zZ~T6e%ZS>qWcj5c}8d<7bNJa+wseNnPh1K27~M80}UNdh{@)cj6zaHs^hqo9dHYH*zf<_hryY-ozV4`roxM)AO+YK83*TPZUVgp^W&xlEN_aE;N`HifgiioMk z0auUqw+<%GiYCresUAXAL1-S=`6X@rU~Au1C(ey$^rm%Q&B%5cxCF%cMN7 zWiBaue;d68OF5MLTHEPh$+LH#vO#U^PnmcKQeC6TpD35Z=y8;h*aH6K%;}GOiSzi* z`XM8uj zI+0$1KQW{%{H=hc7D}UA(g!5Fthk^AAGtzjb65Nn@2*B?SnXF`dNlrkY?uuQIVL5- z7YJ_ecc&lCtvaTjVRaA9#T%}-{25L+wCJ_B`kFG;^+IEAg6~|qWkqzqOp92zSORbS ztnUyDCFKQ5N)^MlN@4u91i?5{%6EA0-th~UVpM(tuBwmslu;30=@db|d84-Ik8km4 z<5YYxC`)guiQe4$SIF!xX{f2IFV0sS3fljr#Vr-BIb&ko{A)DQH+gcsImoh_$3O1< zv=eEgfXAMbIP_PbutGC0dsp+mF>uR~HSKT-;2p)_G#tsXD#c%MfZ~ zthT6M!3gR?RGzAD$$Qn)+t<0cR3H7>ETjpKP!tv6H~k05xvJz^Hwqo>CcnJUM3lPU z^zPC~zK{4qhps9S+)5`Jex^vsj|j$C^R9ICxoaeF%&0Q#*ipZB*C4#wU3YG-uOuKk z-m-FlUmKgV`^O6ZnIoXllKzro5ey%TmBAbK zhOaKd7Y>Rm@qk{^;7u2(m&bum^`{sW*}=_XrGTJjkebA@R*&D==|*gez}foJ^RKv$ z#e6zs;@{=wh^R@UTe2R)&m0xsG*lKS)x&2y>0sr(jdDatl8O!|l@{+6^B2MPUaz>n zbZoN$V(VDcx30iMt~&&Awt_vDIs+ug{Q7Aot?Vv|-#~PO*5O zH)nyJ)cFv%AN#UEVeGe9CZ>`6Zt6q5ikX8)Gm-qiDOwVm@HbX)uR;tDdsbdC{*jOO zjKeXVLxSDdW(D7w=LxQf+2g}~&WymnJUE&ox~x=XOR6ZRe=GH}@#w5jz!Ij?UxiwI z!Kb}HUWUZ4_+6r?WUyg9#8HBAr{eE!B6?~jM^lN5MrM-s%ZBSwimLR!Je|-}F$pK; z8JzJJHdGc>AH8Y^2PkY=xOYr+%&G;9{?{nFz#+6-o${xlsG@~cB0~ZrnO%S;;L|_PH&xU0?@bmL+A&WJk@6EvwD$`q@LA# zc{d#JzTpr7j6w4TiACT2O(v(v4dYHsn2V$NY>mZDG{K7;&~28Zj{f^-ahZOsRP)8M zAJ;3UCQ614>y=+l{*g0#JmhWfugJW5%Z+%pE%W4LKGO{MN%%%&XMP-$%Y^azMv+mV zAvBi02{5EBv0YJ74ak!}Gg_Lujx{7>#G3bBYP2?ATx+0{B!Ndj8h;CSTzn*|dVCKJ04;i%2xfP6MR;PVGWp_PBjVi#w zEOBdpeZ8EeQ2Z@oj~(u3AMxYi;R`$wF4mm`E^W16_OemTyMv{eVJOmEQ^w2ALkvYh zy0ehySyD8^;eVGY%k*}A!#MY}B66UE-APqUQKvyFowZ8)WS~}YiklkmSD|Nylt57? z%W$8t(RL4(-`Pz>Z*}S5(g-CM`a}IPk1@TGUfiXtdTRSrvh$L~$cIu%p&V(~UnmrIwFIFDJx~)(4+)W)?Vy`0;sAM#}`E%8EvuQAX`mn&7r?z&@fsFSWc< zZ2rq_xADszGb2# z$(D9WUG?}2b7lt~@6Bqo7uq8pO-{#)xfh>o`xR}2IVUXC42XW^(i=@u8JBTWip7Ox zM3eW1r!l=HF}Qu@cxjp`mm6qqGbKRKV0uDbqLZxU-r)9IE#S$U?t=bisd)6u`_5J; zm6O%Uy1@KdO9Oc9XYl@mf5vkd!@;5^aYV(8!@;ui2N$e;`(D5{x!KALAJV_XoLmrp7uy?V_h&^*z2)4GlYQb z-kxH4lM!Ph2}M6Uk<>*lHv654!aNa{yniF{FrPL!DPare{(xXzwf^t7e)>^cAQFW3P*2!i3H zxsxXG({>_=_D7?RqjfYL9@{wU*mX`f3u`J7pb6RWz;d*T#9NygLIk0QSmAf0&6T-# z&QH?~4#L-85)3-grcO6;R5h5)r_NCw@-=uE8bZG(b?WF$n!VobdSY$Ayk&Y7 zKd(fYN{I9kBb;=ssiCw;wK(vO>|9mfIgN_v3#FtYsfeMHkOGb+s$G!2jYJ80mY&P=i{v9 zYXucX{plj}%R{w*R{3PtMxG|Iu+zzGm>HA1-$U4U72il0j5>nCQ&BQI;W9=V)Etpq zPtF%Mx&9Z9$bZ8T>0OB7dL-K01DWDyAZaCWJc_&6n?4*r9&XWSyHmq$5{QPw@L|*} zEVHAcW93(H&qVhSWkpaC!s$aZl1Ym-8dvzVG5C#Uhdc*4?J2&>N{1qZe?VpYAc(G4 zAe_E!rD8Uee}2wgB#r86cufK^OVVg#EN`*|jV?HNp_fubPAs9NGo)If+VtGglI>PV zBEH_J!K-#iwh3n_eoQVCp&uZ1SA-2_;}*EyqgH{x=sAO#tnfuPGMxybRAikOzp!`@ z&{sdK+PM6Qbak`77@g9>3)0+Q+KNGMW>1|q(Zk8JBoTNUq%dlEF*2Yh7!F$QhBlPv z45kG*_|f{?qUoYbymYE$6Qsizl zS!Oly;;v_qN)IDdsds7KN+;ippM&o0onN2C(P{`c+@LPi+?~JW+GfpF8WnC2BdtAL z$&Bm2+PAyaa^JOIX>nFgWA-@B$no{bj#IZSwjg85nDC`RHD;7MGyc58T;mr)wb-Pu zamaar$6_J;4=?^%`#EeL6*)31e#;WLhq3vsy-RYwV!y)V=662LTnij3+()eY)kU8x z=$ejhmQ;$*s8!*w5p;<6hl=N^6o>?0K4~yc2euneR7IGdRS5>0>jmQP-yPN5Kn6Fh z2jOv453i=745!ns&fQiG4?l@+m`fsR=0w%cj7M%_!n$5OCr0~%i#mpr0($z?!%6=i zO-QBR?yg;JJ?XC-X6r9nC) zXQwuq{g{7#wgZ(4?r6%~q3u+p&s`ujGJp}9#*dUjEm<(Nt_ChDdu*&nQ%%W*z2-7c z4ujO*45zJ2WvO`P(a$tQE ztn~oOotZ!i1o^>5McT>seXQeFT?)e{KuiJnWDNT*to6)qW51)^bn>CLVfDe~M%2^M z=hPR9L(#>}yOWfhV0fMe^cytfKpJv1Qp>P@79a4omaf#XYofqc66uKF^}4>xUiVtBoIhByIrDz7Hd~B z;=Q7WOS0|8?#x7)S=kWQ&k3r4bL+2T*1Hz8&0mj8kBCW0p=%e6KqR4DnXaxY1B8i) zMzc0!g&+T#T+@sUF68Nr0;}qocE<{cq3`{r5a=b^GunNdYDNa)B9r<3PrFt$yu?2f zpl!BED7ERJ`kxs|8h4xzeZt_ZBmabKJylpHYkmzP>D1;*37Vt~2#^Fjc5Yle;g=Dz zn=pZ86q149PCjyV@3_FmI>x<>A*tBaQ}!1ll}utPy;7)(IW=QU+kVZ;+c`k4_7o<1 zv*&gxM>brer6JD6hala%C-gAGtWaOL!2Wbq{@=WU@ikXY&R!xg(Ora7p@Gq+W(^xe z|ILYRpxDWLxphdv#U0OjhwH%CF|D%H$&An8m{b-(SaN;D@8SWk{kVfxho8K;pQH5h za~|{Z!}$_jpmNCjVRW*`&gE8R(Kn}NHz(BM5xtHqXY5l<-)k7D*wc^#4dpg;;_ULw zX@MTess1cE&EmZAfpK?cK&qb*mHk9(0#wZ@3KX$|hw7E$OSub1RLO=D>#8*-buAT1 zFNnE*0U_ESo)$wmI}_jI;0{^KJt4BVH5&muZ-Q7IspVHMIiG!GNmY2)yt3XyaEupiXYss+6C(ci64>Ni(KQP`v9-J=q$tu45SLL@iFtnG-P3VBsdj~c5k zL=oFZ2C?m2YYh1`gXtRn#2EMR;kaK{%4m5KqD?qYhgkQH!s?rIfRwlA_^Oz?gox=H zbx<7HjS4GwU{cLK#cB+QZtr6RB9hQZ59ZSuVhyT^E3QtDE1XKCE+|=Fk2iv2$Ho>8 zW{z~4++YAe5(#bEfn{~C?*%N;&{pxCWZ}2lx~I01oW7(mb7VDa@wy(%@claBOVQod z5{r4YTr0_`cLJ=r2Sq9u$LDTN{!IrAMQ&rsWGYne*5~5Is}R-y>zK{A`lqR9_6B?M zwOj(PWpg~8!9^TjSIgfW#9tjB^qM8@TUsH|=h6IB>3p-;07|rE!QggKoN$TqVK;RV zcu%A#Q#a}!k>F#iT`{&rp zCzRno$k^w+OFsPnT!3HHIb1TSI5`@A3#o(k-9k!-9e80(2DazjSOJ=`IOo}Cx9u%r>*^y7FF7` z&EEh8MNk&`XLLK9lKzfUy>fHAuSj&kg9`gT_GS2H^(y=`x?9lpugV2+LS$(lWD*To zVSAfiE&63JtS_*Y+^auAo$WPmQ8-@@5(OwIOaqd&Qa-)%qr(i^&vz(V4UssRZL zMzAa-(^F6<-tu1##y+TgSBen{G3IkP*-|UAB~S2D=pr+mIwpY(FBzPViVBKUMnBvBF z280bhF*K5X4KCI3EBdwOXM>k_tGa@efpOMnqQL5%>3Zu(M&a8X#Te?4_aP7sKxW@! zEDPJ<-_q!uu4Dcs)e?6!wKc@-`!E1LxqU}AvT+9FAfNalsqq5fiCtj2`xTjx$?ah` z2b2YNEz2@JaFWjU&G=7CQBzBipt!UghHeSZ=OPJYV`R|or4nn}2%&JjSSRhI<%r{K z{pLINcp4<(0sa}a=LawkNPp*wgtD&RE+4W?@fzpV+FA3pA$&_JP>gerRz?*mb z?HiEEG|L9bn9-ZjwS@+a1FqaSuT^cq4}mxZAUqcCbGxr&h1RZ<#L8vk`RLCLwwr%Y zwqIhCtpVd)5aRTd8B3a(QVP4<8YKY4(|+K@C6ZjQ+Hz-`unJ!liulc0Dg$O|RkKG> zYUzTcn5@^NQzUOd79R0Z?F(i0*g=D0jIj$|P_qwF*7z(V1P_fiN-VFi_>XP)o&P~b z0f^f86Y`pCFyZKgHhPU~Nq@mY>c<$TK+4)2Qdmz#3R(&iv970NM~D=t%+b%+(^uZ$ zq8{C`uPpA0lgw2@SNLhqF#KxBDsoyO?7P_GuI;|L;TwQvPk;|K)wyK;FlSy0dSi zlO&rogcpD8NR%u0q59T-{X~zqgjB$!c$ZGo=~enmW%^C|T*3&kggw_iU4ur+EE?nu zIkg$c0Flc#XK`DVH*FcDkHM6I>v02o+1VTQhylj!T-Y3hTxgRv+%!!|E~Q>T^mw-L zUe5X~P|VS;bMvhyrDdctlhdhF@q&nVxMyk2XJa0lvcH=QM%XJWQK-#?@Mkg^j2Vps z&#M#xr-`A>;vKYL8NX#ywq4%`x8sGnD)EeFudCy^D%h)+WKzAfE&;PBE*l(i^wT>)o5viWGcaa`X&vMFEaRR+=E@Wh-22Hhl z3w18Bv|vy(7Ve5%03+4jRRyl0L61(uG~;w+ef)J;^(}de&6th6gC1RrVVn0(Zu@7+ zux{F_tAB9VS6%t@EKYh%@tu8S3Tt`fIN1yKYZyZa`te+~-_}0h4qrml&AJj4h&2sb zd>oGNNx2u?xPF_p?|geJtAxQoq!1<5X=7_UF8EuYs>6y9eh z`-#~oqco#PUofXI$IpJ;`8zI0F1G;Fr%3t824KrrVV+t{p&6(l<@u@U`eX(2;b(e! z`9dA}O3TA#cX%BG!yd3sw&7}3!AE+gi zs^*9xo0|-#m!v7oUQ94&WZRkdg?K20Sse5`|r5x2 zIk#6t{TWy1Hf+Ger-bl=uR#6K@s&8dsk@npLOd^?c)`q(eY6UM=gDKH_tTSSgb9^> zbUu27BN0M=Wh0^6wQztcP?zGVy{j$>Py8T5xwR4gClBA$P+vnP)`QYA#EbOcu~J#R zgk7u7%3a)=-tBP>F}47Y}Cm(sPT3muIEzyXGOz%&fm8$hFET(8p@V*%9J$TqyS+cL&MT6?>H`Te6kWNxAKkaI? zXeyZgQ7wq0?uRZs?@srQc6UeotArtZ3et!cRSI~C0&U?iw#@s1M!;ova?E@HW190` zeGL?s>8Ys2_lWG9Wf@=xAi)ssyiye?a-5(AliS0KwrcWIRGAoZ4o-g8M&V>qZwIx- zB3n2i`2hQl_B^PVls~>U{&}#YcRT@ah+*DVVpbM3E6X5??5HX#JIB1M ztBVd8*^rx?mz|xLoBI*Mn4=18QIV~ZjxpmP)Mt4^L5*?BPf{BZkpn!^X7;A0d&exs z74mj0wG3hP?v$r}nKsbgpM~5k0mpor*G5MA{SVwR)Mx^W*|e)Gji4=4?Y>B1sr>(I zH&8bNyu=h!N(+{VP_}@Cr&QMXHnTRniFBG4YudD}G9LNCi*yW`m;zn<6x9L_0szpK ze-#YOTFEhlOVFyJcEw)_Xkqg^Gad2Iyw|sVgH*JRK45wVtf~}xy5Eg?AePcR5vdsY z1jkwy4y9HTY5C>n#;|=yqahgsz>YRe86y$i$RvgFW~{hBAdnyk1aX?-FM2_?%;@zf z&j#{7Fc6YQ*tvv6eZowqN=kD_ z>B;ED2321H@LPrC8r=rF=Q+8$f{~Y>3X~afiD4xe^ZZ80XyWAiuh zoSe)wxBVU8*eOFppm`a8CFbROARz@3sIv3g)D`?4D3%!AR|OiliV@3`L>?zFkK5c? zYVqATO8#3^m-@e#z54HE>qr-3d)aH61dffz?lWyc;hB&n0Up$PaE-wOi#pIK8n}0L zuV|l4O-u9ZPhGYLc%pUs5L4W;!>@kOiJc{8M~x~)k`rH7vqU4Wx6i03c~$!)<>s8~ z4$c<4(VDtc#k{-MS>5HqlR)R}bZ$LSED_a;6}2wkH3FwILKBEVzCXX~2%1b_O>J=6 zN-ffZm>3OId$T#V0^A_vpw>>#_zxBXHolCR)oG@&FQk%bLoJc(Gwm=k z`g;NR&PWRTfQYstw{Nmz>-~q-O_d2r`50==O6-Y2_Jw@~Z=fx=8Pg?DjQnPQJE5r; zYh@*meQxAk)6_n%+U62Y=PA}G$|piOL-0PAo|~)KCILUx z7^tL9HSDxxbuLp0ANfk%^QF!IdUyHGUzWBpX0Erbt&)#tw+h$SZyi{Hz!#)Du4!7fbpxCIse z-q~REUYsm1yrNJioaY@e@BjSK8Q_m9tDH(xF-hgYZzor`4Z*9cn6_HX`{PCA$-^0d zClZxYipfY!bZ$xA{~#f0$(B;2nOtu(Ig1C*6b(`(%`5ixA^wSxRCA>y7+Q4pQ?6#8 zWxCLvoIP?vUzB=sPdqzu8u2BPp-y2=Py!htj+?#FW$cA~YLK2>TcLf(`Iiy(keBI! z!V7}2W7Z2SeBGOW5`0heZKce0$yN~drr!o)bmGY7lo^V6pWi+whQIh9vWy5I%WmSK z?z=fq^*lCUW-+sf`*v6RQxmOxk{B2d!S8M8SOSyI+Cer_!1GLh)(vZl%p*~bYF~-{ z(UR@dzJOh|REd8=3Kd##m3JLtia>mH47FR#B@t(Z0(n~szNgcf{NDo8XybO>nt}O| z43!6#CqHP%8hpxe#BRjjZ*aH`b>nup&B*`Rj2y+7jiAq=*&XF81p5&C0sB3*thW=xm*^fa-@co3yWxyFk{v1 zO|pNUkc(KOZizUznDtcGQ7`Rm*Y zNs5}{5((2DrR7HJqx5zvCZ>{nAdfrCv6>s)4A0VcC9*~z~9tyo{ZU_RjcVn6{WI%u#J{{dnEjIOJP9a9naYBOH zRI3$@b)em5`arWIky>tqonH=Ah+Ft;Gq3-8MuHdAAm43|;_%LnA2tMPUgnKkqg7Q# zsZ#^xk!Js!nb1kCg8y7M9^kqUne=Tw1af4G%ud@Vfbk~TKm$W<@cA~=19H^(;#>e< z=*A&>6qy_#!Zk-;*!YN#A?_DzQGEap2hdtB?z_Pd_k{Py{d2Ut{Q;g$=-x2L;@|zx z`p59|k>Mh#YvLm7Iwf*{r@i8wS+~vR9Bv|R^9p`It=|C6O6SiM9XI{_*0AzYkd(((Oj33t{M&*1NNTgo zH8s!*yus_RV*WRKk21tjPY6ywdnf9iO+!07E2wDL)VT-2q*=h?!y3BT&b4bU_nvsu)8S3F}*qI9T=WYFgK^j$I_2mP;qV2D(L z7%Sm;J34Pv?Co{ovZ*Se>kXBDbd?Z4QZ)7bNxoZ)q!?$=+)XlETcggf6OXnsn-2&( zm0tiA@=DGPy-H?#&dh)ebzNzF7DpiU)?~UO=ePI~kcB-BLZFYt?7Y8oJK;>HKakd5 z5Crra#Tz^Sw>iI737}vy8`lOzbtf@Z!+{WD+q>FN$Q7QCD$j$4%MFCMcqTp!tC#G7 zW0&umn)m&QKkeu=Enh}7(N;U2A8t=~B*?m~qcR5%{prQm#i5qXzo(XQ-uXd@&YE_>@6{1i`84!|H_H&- z39Wki3u7gJb%NxB;)RWQF2a9&u;fB#wAfnvxXT|Jq9uaw@3})OZZ*^aS$>!FA+VYF zJ~Fk<=O|m{F2y8nG+EChs?3O})=5*_!&ya%3%p;fE}=^jISIgi1d2t%PN`aTD+B39 zB)w1?7C*nB!r*{`TsL6)nU}AI*LurUCzF9MQPhHRAt~-p#{-kGLZF&yC%2H&3ug4Z zGs@?>?QHs{r-e=~DD_`Ff%RRL;ZuAJ(O!9#nhF{*zaPAn)W6uE(Rv~6Um(R7gN^+~ zg6UF8zX5bH6na9o;(v47dL|9sE}<)%qb#o+aZqakx*&eqlcZpXGX^c*a&4Q^i(8GK z`XN)qP)DDUQ-@;6hK`z=t^-~wdPrJEpw9gPLiL~(N!)mMZh%S*if(keI%gNb&<#Hq zih-nB_z;ofe#a<;?TcPW5?Aki!w3sU8>QO;Yzu`TxNv<>y_@qP&UbJdQP|VN>?sWK z;dx|dy}yDTnWBv3MExpQ;e7O>WG-rDvBR`-Rwr?yxLDrBMNDOsTLqvDmD@hFF7gk2 zJ!@`!-XC}9%KP@&F|tJZ>AZ1#_6i`*sC(}?)sGtbGETD~^u=mYw6x4e^<&rm0b%5E z7QE}kZ}<>s)~}MQ&A3$V;Q20X-hKg``ybaM^lu>3H^96|n}!MT<#U*_5mfCk^MlW= zPD6y^TVJL>CJVW=Cc6()Lf3Wjp0AUmv`E|d>}Gz@k~UTFE%KtDkZISjSrP}&wS8>e znr{jD0^D0R0_1@2)W|U(T5&NjCk|XCh8>Nm$hiGITQrY06DLfQXK-pzkzx}+nw3(` z(QUu$#1JPKaP-cMX#wm&jXNm0(ScZ;p8C`i#A1m2&&tw`#!c+Hvec={|4on#5t`$_ zo4Cvc0H+zk-4)vfxwKZ!q1T!szLwRgE?oSFciiwuM(Z5nuc(Z#AY6C*i`QN?nZt)| z40Goq__fMkEGxG{RT?6Rxfs3fSRk$FUM?H+IRIkY9_;ZirPTSMl7oN(EqY@#n+q%4 zmFJn(k(V4@e&u#DTMcY4X^TwzM(E!yP?EKbc8w)a}l5i{5zt`?EoAS)|z=-jTSxLA%gY50S*bW^ouN|7^6< zwp6GEKMeTp?nn`MXt4B4i5-nfX5#DEq!s*`?#i+QCwKCspOX_)oW9pP$&xKP%SFE{ zVN7fEpzfK+hI_MnGLx36_C|?prcftOs--gXH2(6AoGEl_>YS;OEd>6 zGdsjf$%NUeltL(b;62OTB?>Fwkph8 z!!gB&o340j+3Tvsk%e3Q_;-{x0C~;sO_ee$*%^=%-3oD27?w?%=j62@*S9*HTLmgl z>w>GwVlCM=zC1sD#CzT5Q>e-K!$@eZ&6$GnW7}|&sQ=mk$3f{KO{>3?DJUvg&f7XJ zvBZMxxN*ByFZ{V-KU|i4xK} zzhA^!EVg;v&kcVB{t{5ErQj%Eu;>S_)4SRR_#8oRQ-&kV*fb*Qpw`O!X0cy^^Lc4~ zPhR_RG?1Zua`tpI&&@%g#zn0ZyJ35qYMW`qFUhjp(3DoB*@p#i2ALTv%S}C`jk&a4 zxZGy!W1wbDT=ZP28jjtfU(ta;xhn@9zgD&_n199rX55cRJUX$&_U4s;iO;V>GC8Rsje{dUZ$A|C#oQf2N%v7!}%*4H)-v zX8qMoG16 z=y&(1kYeYuO<~c`gQ-i+s?BLiYir0Cs~3MfB$5Zk2`*KlM*aBOBvNshttYbf0*}OH zz=fY*e0rfFIkA<!Ja-zJ^Zbc3P&Z~EwLbpD~-S-L9888W9e)!rVt%OZ60NfC@OBMzox1$sk#yV`YsP*dXy1Kr(EiU}9tqsp{ee|%4SG97rx z-tE8FNf`}QCmd_ak}Luc39@Nm*cQUKw^o;9%Lg+h{dr;%#49htr0CB^e!i!bp-;e> zBY~Tvpq%-W3x5K1B`l!#>n(Cn)X3At;fzLM)wi%vg{)}|43PWP2ei(G+cd^BuxcR2$_y?A zwNhlir*fGl+pJI+*49pURc{p8GIXOY?!UB$1~Eq!VBzCoIkxC#+@8=$D-%R2j!;R$ z8$nBN8}#EZJWBI`(hL)c(%bjuq$a1`E6!Rlwa4K^MP@a^L22#l2FWW7r>EjAk~%-|-=ufZ1Pisc z<|h-5X7+B=)h=&Yk>~02%|!A=q}p22L3I^5HcA1ZU;46o>>(K{F>K@X*#Y# z6>RkLU2{J4%!Ty9yK@{6v2Oj?U9^|0j>c+&4@-m~_5!-(S z$Ta^NN$NLvxOFyeIX9qnI+bX4nkA_~-+y}q8j`qZ_$z{yj)+8RB3@~mF&U)DLNcaR zN#Ffp6bTs5)r58#xed&TsZXT8Ltf4i)E7m z4)c8TqA2fIh|y%|fBtTb}p~fEZWTk%IAELUQuwFUW)_9mnnkjX>vFq19nXjkYN*oxx7Tj z=80!c_|4RO#rfKZeUx?KzM6i}??vAV3}4HLp`kth>j|0QK|I;*XddLq)ChFxh2hvP|AQ`U*TBm6EHl*9WSm!yOOknt2L|H8x@v!Zk&!{+;aP9ENO(uY!J%cU zRaZz59Q`jSSCDDNc6wTS5)^>OQ_Jv#Y^V$`jJNDpy>Tb1Ihin>Dg#Ws`XUB>8^@&T zl>ijl67VjZhJ({|oUtz{+eT-8Cpn~}^tgK$t!%`!2u#$u`ZoXVt1977cNrt{o}Oc( z+ui0e8-@Vi)!ccgKvDg*kREK7x2`hHW)rXt0a9~DM<E!GVPsAc8fTRIv!{Q9A2Ret zlKl~~ANe`nrmGi@A&zne@^-UN<$kKWy`9xJeOfH?_|1oZQcgbz_bIMy`?c{x|n8dMI!3$#)X1|?? zWOa|^;NRxHe>ALFV)JTPyh8lOAxUtV=1A)2Zc`#wWL$nb-5AMPA^>dR`MOg&AU#op z+aq%$V2&sLv!6xE9dvzp7G>NHuvY(v3eNqX0Z=1V1fMH1IMbudZ^}uJrMR6sEdZD%vcxx{Rzb zmO32IWyxM-Pg=910W;;O9bACY{Zy@Kqh@l(^uDtXI|3u_6YML~c0hnHF7FH5-I*nW z#+woXuqxO>c6YjkybRv|^}_ZVx;AHx7LnMSgu4~ONEK>Nkt=|hkMj?EdG_|yT%`Lo zvKdNKV)@jK-K0!f*mvvZ@RQm+G`dHrS+@b;x^1Eqj9f)1<}Co+{%>NPh5u@8{~Gs{ z|L+}l;)UtFOupRxN)N%q3O4p9ySF?Zk^v6#wsqo5jM-_3d)(_+khykI_ZoW`za^Aw z;kU7AB)PDM6TDQ%1y4%S=RG={1oN5yagdHSwqV@K&sB^hFZ9d$UKKvty?Hk1vKlc~ zhLRe#$LTun8sXJ@j!0IsKW#Pj#meB`d+8fT0wmg@$0V_W-;QYbM}IY&DJ`P!yT;0o zy78Lm6h}Ebb*V>qvyB%=OLw)UJ{71dGZCitQO11J?ctvi@yMM$VF?RTKvU{I+GW{< z13`q!vil~`8fN&oq_w_KG_s0l;UibL@$D@z>!`?`PLnQJ2&i9C1kT-Y-9YQ1?dvMg zB0djF6h%ujnm~V`Y6avYTb6c*@m!kat3DxdtG@sR-HvJ({{j$I+CRa$2>@;K)SG#@8y)+P!l(K>uswfIRZcX;qko#!6 zAqJmQdyb44-*cTC-bF(i{KXBvUsN%rtDL)gBC<9&ciFn93KB0>Whe;}XBO+bY-B1? z%$+Pk78c8#3gmmglG6FnNDnQ5ydA@2(ppHMGo>9vL7cLK>s_$ z+a4$z@uL@-Tb~F19129%G07HUr=-|j&P#rCMMNY1b7cM8-eCA>@wV2%M^CF&x}yr5 zQSMhL9f8_XxquU%J(ofZt}2?|UlKh?JxRXW8d?Od58%x%8t%b-_CE$2mK@CDI2_YCJ>-D&kLt)mz7?jf4JOn*YBG1baA0r(!cvIR!CkeY7 z^ptJL3>r?a$6Jc408&UxYY#SzcZP-Ikh=W z;2@yCD43PmeX|KLGZ_^mC=$gN)5=>D{8a4@?1s}WEI`KiO-}YCK#?;0_{ILnA|xX)u#lOlv9!>Y%J7&M_~aI;SxSrIS?hfd z<^k(^-aK{m?cj=tYXm&j5*DJEmo>SEoUxYW2Nm#j2z{&#HvRcI&;Hi*VWFKWGmDZa z+#cf9GVxWJ2#vADuz+`0T0C#s&*x&I!G_yKt|;vU^ATAFgW%a-o1V0npD#io58#tc zij~z^_bcpkovxlaHCNM4S2B0mp@Q6oyQPbM55$_9$&80>S^>=QOIs_uRc=q`UuPP$ zT7B637u{H;(v(i87y_Q>04q=HG*;%9#KhxoI1`xgM2U<3&_3y2>$>dMaVt}%i3flk)}CQgTj*-7h# zZ7>&+J<#gev-%@-&-dp$fnJUt(L+OUrE*|8MpoJU0PiCH^%|~0JCl-Eeur0NXA7};s`gg7|~H*FUk(>b|V#Z=M~xJB=G5J zdnE^^K061muCF~|if38e-jIq)e8yU_|BV!OGSMy!6y9V*qaMH`nPQziPP<$@5hFt? zSWD%`Z#3rq=x5{tQAAxQQtwx{lY94 z?&ozj2+f+<#gKy~T}c)HzP)CovvrTh0^0O}3~xZ%L~q_EPDd1uI5a9JE6-Q&4_mw& z{A&GgO?dj_H&upP{NTyJnEgE!^2Gv0lSY00MHT~pzI-DX(EfhuWgva(U5NeNSvGIF zhpx-_E$ZDRJGB5Khk(EYUj`XP*H^Z~BT}frA`#a)DTmLmFYEh<>)VHiKX6TCYTg5N za)8t_UR#Ul)KZlp@34HM1y%&Dd)EYjIiCo7__YA@{4bBBiYmf#9!uCraDa?y3=W4mHR`^_cRi z#{@Y5J_J)d5yc4bzyd*WI`3t3h-aAVsw;^^Y=r&~JU}>Qy$yQt7y=1b(#27~@e7kS z^WM7;V5dS_Y;uuf9F~@otEjBZ5Wq=S9m$c%%A$)gIGj7{y>#x>{ z4`#F%3Qm_#O)v7`{Ea|@5nMAU=ytrk;wW8(Xa82sg;mr^Al7lGr_N;%tWTq$O5IDZ zy0OW?4jhxGjop6UCy4>A4aR)Fh!L!x(i7?Nxomtsux(!;q1_5Kps)Y#{HaW1JkhRD z4I!+6Q_aLs|LGn$i&;+KEHWILEY#c$mM+5BrQR#x1;rQ2m=D0N8DM0E5Mn1=Ae(7F8pW5a@t^Rv zFP+w}#l9jN6Leq%Q#1%jKJ%aX z7xhKcDAL%4%Z1D8>p$GRJ3B3A0f9i@PIv{;qo zUWHfEK+DHir57c#``t~Ad8S7;&;m9g^=^Z>-tA2sdE(0o@wNdE;~O zwL-RZr4dxXE!GxvwkPqNQ6!OD2&-_|yNMAM@h=BeE3FU$@pXaK;QMbseg{%8bI`Nz z`gJsUGo-z;mXH4obsNq-1m#ciz$$A6Acp`Ul6|!7_7bY7F<(hh4vwXf{1E8s%rFUE zuaVVaO59n~X<7MZlpg_1e@6JGpH71G+&NK`YgjZOi;ORz$}>>>I2dQ~MMAf`-yo?O3^u#ymT*8IL0okuq>nJ6+@$p&laL~=7j9j#RRP@GK8Ughm1%^S@kC3-I z7MfnVPO_EjgLFEQja)Q3G=m)&nQQg@EBcfmP;|X?iUE|S6mELb+L@ zP4F9XSQtJ1aZvpy&}xs$P3d%DNmgkg*mf!GReQ_L@(eS^?-t%UK~K1}k)I}}GR2E# zQLVC~&6FLX9q);m7{Sr<%G$f<yq;YH#~K4b zB@6E2$ZKo_fo#YWBuK{WyQA+uk}owFi)RUM@0eB~hhw}qW+Om*AJA^hPL$NIgNm9I zZu?CtHn&(-q#}w?#BJ!bVg)W)F`LqdsS-_<8FP!WGt$*fB3urh)Fn4+I~D6h3PfM~ zljI9$-bXPu9B7Iqo*+-n)f1>qtnRO{ZwrISZ~dSIsl;c~>#3&DFbu@wm_xE#<8dtZ z=+3DE>6uX9E`)VdWF{`C&1tHu5f>&hL+qEvit_CQ(G#u%3`y>p_XZ5xjKl4p81FO@ zxH#53h92GBFP0bk{o$V&ShAdo?UInZ1Le!lj9?TxBvqFVmbZU{ zztp+mZRdUnj8lCPZ8NkbMlMqC@-*LV3c^2d(E7Kp2*HPVXrWGHxHgs7@j3N#9$GvS z0aUZ(7vT{en{kVp@}G*TDSY!BnzJ*<*chx0>}7l$y!;wn##rmURVy1)TMJW12ix94 zXFp$%VPs-WiE*ZEcV=eFVMj{w#NuJ*;ZS9V50f|(QuxmC+SYW}@bKjK1FJvO5mA2D z<3pGJa+!dZ6t4VA-C5JP$dM59O;=}Rgg)kL7Lg0r2VhiI)`DGbZkxq`wRp~|FU9ji z>l||srNlf5fqCV$vHe$8_f?ujzQ6<)JNe7*i@a$Yuu}-j8fLVx*A)c@(dqBcAmi-^ z&SbR{lB}e8u06q;ZQGcEpzfG;5*_Q-Y(6>N7&_*`*tpFBS?3&cMBN(ImEexbbmw9Q zl8@M&f{eXM0~HQV8tTA*Dasn;Oiigfe``n9K)~Z@=hGFG*xe7up%oeN_m)!s{hdyQ zxn*9L*WPiO>yP!$b50Q#V|VgK5jM+Vwf#)PRUp{RV#A1acd6hVLtWI>(k(U5K-JuD zL$(b05GNkhX{hN_42OR44chtnfmFfA7ZDaci!;bQg6l zP^ZLf^SwB~6IEJi_N0lImY*dN-^YEeqxpo$R#@s?aPf6@7Sx5^lKV~kwJICGcbhCAx;x-6dUo$e0L82b zK|c?ZDP`L5B|+Cux9P^uFTVG@zXf+8?l~%zDmD4XIBZRA=P4}K`m+BiBgmAn_!CWN z(KmN9i7fz?SEgs^hd{RF(#gUEKaB>l+r;<8qIoPYR zl5~MUeWUXkdhedxm?>%rLQRRf3^js%3QRScM-&UP2$eXUTAd^fa3&mHLE%^ZcOY+CB9Ou zbA#ZR+r~LV-VeI1P94xHQn7e+}-aP*>EQvPHpZu8uc3RePm+c zGEc5WeGBXoh^>iOlWn{j*pUmTrK1@zQ#H%ak$Ay|Cjez5j@O>uBG{ln5;#C>%3v#Hkf`SCTuFF$_u&GS7%sNzRf)|j}> z-J<-M7=3GNL+knEVoUt3tsvb9-4!$`YPGp|vv`^yb3mTJnE;|qw6^G|rDPxOm#->g z+?#pJd84`HFPd<5s7e7xnUWzUsnJ(Wja5&@G>U(&rQd7#kX$yM58NG>Iy}RS*dhHS zmlWTRP$M`EwLovFIeNnT&sKO>PomelUDY4}L(SQ91na&V@8ZKg#eI911d*c*j=Vgz zGl}~rR)l;a`M+<{WE*SY)8nE@M{8LhnVoatjZrkA5n`O47|aIQ#pnTc%>3=gM@^cYci<^c6#Z0+OR_dce8RN zNb5)RrRZ2-p*wS39UTL+(J$EYdCQEtdcLFyfQp-ot0juQeaDP`>O_KdzH6tJm_xyL zr!^9lHrM0X<1L8~&tCbQ7mE^x^TR|&CskjW>EmDmYM7ZhB8OOXaq%ZZP2~zMMx<~m z&S83aRK|s{E{?p)5@~r(Y(TKavc`I`I@^3N4}U&=p0wu9{Bc?N%R@}l1X!-)Y0+HI zCYLw4-cM`ifX%5Ts-`6hXs3E)O+_pZn{Ew`I2MP4%QD~%~Dpd z{s^Bo7~|LYp;A2F z@Q^%g&lOiL{M^GZ!?)v7E_{B$#n=cD!N=zbc<`QT&qqoQK)qS`&qBUuKjsXYZo)_~ zai?0b8tXq8#3eBH$xP(q5HLkL?DcJX@z;=dxt*HudyEeq z5kK+Hf!~JHCH+}It-M2~$PC4#T}_C`ah$7nJFn(fru%o-_e<_CU%Z+^2abj5y;00{ zZ8Ss{EU;8XhaN>D7-ytEm93z>15)F|D_7m|FP9${3_?G`5mBdzZEbe+4sog0%o)HmiW9`*)j2(J!vb?YdsVkgUup%GPc2=axv}n33*B(sndlJ zXR(TEE+q=4=(z2EM2WYcL~(7(0Xb$_zfuec;}>(>WCdV;($9KJ4?o}dhxV;CH3HBEc*lQyI zPCo<5^#FIQBtf3i&v{GyvQJFkJ0!ZZ*Nd0CL#Re+Hvw;0T1jrbm+owXb7E42`XWaa z<=)DA94KiirEd3MoH~QRWg#vhFRbYQFu861%m+fdewk29rCu^oH>ZQ#8j)7NwSeF& zbaFczoAlwzoE*=yom$^|(9a<*TM@GiJy>)E7^=XOD$QM!k)(Mg$^eni#)$6=qHzWl zh-()Dl6~F%f8SCv4k;tc;dEf-sB4dt1+>Rl+4*k8Nt>@0xW=GhE16>yxMrfneliBW zzJ!RSa{y+eEV9hc#RO_u25Kf#xw6qKMEb&<&?k}O{3L+ZJvUM5V{M&UO|7LH&&u3C zO}}+-@dX=ixZ}ISmem0)!l6G$kAIw*gds&h=SqTs#T(=rRO9aLkSqco_Ydf--pW}L z{ocMV&Gq@DIUzdQZTD{}Zqak*_-Y&Lzhij*Q6noxL*|goh#&8o6{xq9HU>(4x!xs|{V=1k zrpm&kSYICNZ;c;nypPLKfr&3;o1j^ux{F${&e4#r&BCaHEEgB!3{lUId#iz!p~|S< z|3x-bnF03$^mxOTT{}fFuk$NLqP1e3Gwt}?YsLU+b1Zr;N{CoC2eSJAqwBAOs&2pV zVH5=kK~m|EmhLV^q#L9g>F#b2X%J~C>FzE8>5|yQrlfn*UFYWcp5J-Tob$djd!Cu+ z51G$hE3WHWYazx-(%DRrp0n;{m5D|1rhl;< zxVC){8#XmAxMF6}7o2Z35lR`^5eDMbdKDGjN=JKQL8|~&#%3%p_uJ8tj}#QQ=VYo8 zFDAqDK0P)N+&{7~h4-!5*c=#ID8WUdNA%nvA%GwAz42ll1Kyg^FWRV>+;IY6ox6}; zonj!D_ITZEQ?<3GiEVL`RsXFULZ00$+^lqe9%3S82r-W%05|!2I6b{TeUYS^TI}hr zsnUeXrxOu0D>L><(Lz}znUI%7@2TGuZG4x$B~PuiN1%w7q){Z`eU75QO&%*($txHz z_#XLV)?Zd$!3@b>EJ=LgjQ82(!Q_er$mA3W(VYfZqWFRV@42rVyTdb&U*j<1s(1IP zOZD)lUp)HZJ{+2by)T#~51x9NB3`CC)WcsUPWOhQOpWf%Zmm|HSk|Nkggs6xPjToE z_(HljgWOYB?*&VWp|@>2<3yJ-qx*M}c|HiP;5eT(+u&LSN4Qz~YSUG6h|&C70(owr(42 zZ(rRb4-Q?09RsEx7T5PmRuUjQl070px4O_brJ50R#yDtv93r$hb5{D)(d za`}&!T=ZbtywZRe*kqj_A(+ZCpR@o{6Ke^Pj?yYp>UYtKlBQuloAgCc;O<;SMxcKc z)QMdr3mR*(8X7scKc5Sh%uchnMposI8+@D08upq$LzGf+M~wYoxem2(_@=etdui*D z%YN$Ad>^m8T+6-h^l({76%K?2O`9i}mA4x`WZIll#y5SkPFu2Xbn%skKG=3RZ}?c#&T%)tZ|GD4GTB8W1)sq#2PS?I5Lf^M8xnF|SPd3SoZh5EYutwfH${`D?65U`-ncfN#FE}^ z=m0{kmt?Q!iexZ|%TtRcUm8kH)ZL@txvn0GjV2pPfV&1j6$IQT3|F@ zjOU={q217y_Vtg3^GiZ}tfntJgxw2RPoMkQzfQW7hu!6ZPUks;tSxm@68%kKtTpTp_H6m=I|8qL@PNdL-QuKJY8j|dwkTca7@qQXe|N;?wjy;E2{W{Il)1fg1w&=HHiq zxF{q}+e>$L$*fXQRVbKb(tjukluc=Mm63yndd$8JmZ#dBu6zV2MZ5q{hlg_ol}M72 zXia6E9h9cfCzG|jWsB!hGu|MfT@3lU?y&aga67yt@zX0Gm&f{tE$AynCthM<>xoh~ z1=9S2ywZE8h){|6=6Q4?xW8{%HTVAq7=iF(>?c1dk(2q@vNni{fgRo>6P}%#BEI*F z<2+tn#ux15_!215kMR6@k7gg95_{8EvbA+&x_0IfU+?I|Z*wloDCPXg9jYEa#KM!ui#;7PyoSz?5|Hz# zr^PC2SN5XA?b1cZV~7?q-ltaushS+5nk3432kzwqI+4Hf#;r)Qf5U@$$?5EO{8cy0 z_nGu|Vao@*Xi_~F=f2|WTAKo;5>oxPLci;)-A_^C2lMsmN?qQg<3nD5f9e;=6BR5E zk;1{9Rce&_z5kbbKCjm*pDN-i`EZNG;6|e9o%4^aDQcJ-4kJj4h=#p;xMb{yFcIks z`T6Y6baoXa4#pb>#-TUQww;?QY;`oTJoPL~g5O+F#^)m`3O zN+;qe*T3<(&U6<Yu!+l*9be{T>YWPJIkZ)QRWd z;uTsxo936|u$)l!?ZV?ddHsr(G&S-{b+X{UK{94%EaxKI7}Gf1^2|11xJ#R7Q59$u zxQmydL+s}|l*jkM^crLOv3+|bzTp&?+3)=3bH@@%(ELrQb`2v3<>D+sXT$H+qXqxJ z81=8Xo_>GqQxjPvd48lu}+MkA>g71ME>GBZa_z0G2s`qdu` zFluX4;b6ImHiPwWF+Mc#J1AVfEr>Zn2=v<`&1@*WX|g;S^>+HVNzx3afgNsVgVwP%dKD?hRsf$GeN|&`%Hjm?J27fx@_Z77 zSlxykY48U?NL>vyW&CYV3N1KGk{{BYcvVeH7MBY60-rV>mYVWz`yD>pkx|jJ+;Ua> zN%@kBN|MLx@wqDM8!CxlSi+TDexR_riv*M2g@`ED9gJTFPK<7)wYms4h9tYLXt>TOH>(Sr$v||f* zw=78L#1$(}&)^92{33F<>UXA!VLz#E1^+tjbJ z`az4R?jMle6-ZUW>%@?c@85xFZlCd$#?UwezS`)y$BXN)qRfn)1`dqn>V|hY%`GxY zN}W)M46STx=LSDyQTJ)<6!8q63tv%0M^rSjex%027m%bT74n#^mE*E<&RA-zqY@cg z=(XL+#tGG@ViCf>Tv^@L19rZ@9 z{M1{`Bdw3=wQBt#Jzu`k4K1m}#^+8>Lw0u=eD&YwjOUM~>Py`Jm$btG+36jZ;>3|V znUD`@i784U*h!2Yg>ZYhp3;lHvm6hnDTBrq(a7D+N9#83uOWiM7BS?ghmA{lcnW-L z^dMs>o%PZ7bq9GcEL|i7lR`z#cd7ca;YAnZqiL4Kcmikbyr8^~dNaGrz}olo3EomhOB(0|2&i+3Y%KiCID?627Y!v$>XgN)$lWTU$x}Y)h(wI2|1g>B0;LtJf@kI64@b z>MpF##fMh0jmv<$r7XAm%kSyNPSGVp5!(UaP~cc9qpYv(Ig=zbeXgwXy)<37*hVcm zJq+{2dc1k{TasT|4AFXi0Y$Ku^Y+d02cKg$TBf|!Z*2@?O9|=@1Lb)gtsd@&f1w*4 zF#fya5IwTR{)K5$a;o@m=PVr8D9G78l-*dO{ORaBkNF_+3U{n2@rjL5k~L?7y7_t^ zP>2?Ovd42Y=?GN6)q%8gER)SHEv{MYuk6l)hm2Y$nhG4jZH>07W0*`R`O6@P|IB1?c@M+2wYp8WzTB;2NDnfp&k&4)2LXo@v*`Y$L;^+|C8{~^@WIn9o|9{h&SuzIi9u=4PH7gi=NnQ`TNuiq=ADmMOM79Wo!T+ zO%yqZH6f$c!8xPd^mI1M^mr`O+cEq-h0j!{JPocHemDsiQ@j!UZh_1A%3`T zt2#sPN8;uUD?1mq@rjUZYa17A|OfMa1=&*pe zhULxq!x;@gysQcgFPOZ#@-Gl6@e-<=ll`k=^J|JFoRE_rEKCVFi(6%8G`D_>bJk)&HyEThhS01=6z_={cICBVc zZ9{q+d~siOb+Myis0pTXpG_Af-VlY!lvAwM)p}|`U;irxe`h?2b^_}w} ztNiFs$biFv2-?SF=U|F5_z}7YT}T?rCn_^1g$M719pmL(juI#i80CDXjH8p#^W{A` zf!{&>XjS4Oti1G7e)5K{RSO3-=9Gqy5@)66Sun^=i6FwsSInvqUS?)%^3F7SX z!o(oIW!IEdL*`=hW3fawC->u7=b}+nVfi6Cn!nAVR8}(8&qdGUq;gss z&bG^$#$2o0A@(IJE=yyH5}yN87`moUjm4~WVLajY(o+8}P6_0yeW4d~bvpFA%~xjp z>B1&A3(y1Hr#<|NkR$!!vuwH#mS`Sbg-xmpyKCa3A#1W$hz?y6&cHf->Ul(}_u*X; zNS}JTyU!$^H;265+EC@(7IIt=aVw`4^sDxGIE!JiUR~z?@`pEA(N)@Uzy4L#Jh%5m z4N4H(?iMu{#)8FrG0(0R)X)oSea?bSb)Oo`%o3>E<}G|jo14|{h0pR00-XPiOo^Ir zqs!U-P82|}wUgrHZe+O!%NGPODncUEhxHrJR_^DYEGX`%=GjoGtq_<2{K<8Hfg~nW z-;R)e9(U1N+xa8Eu7|1j!|m<$A*_SHT9g{kP2Y2AxQyHf9z3kX+*W!yFWuOqKY=sF z7PI?f^Z&vscgwN*2T$mT!62-m=p=jJG_|rnt6_B$r;~jc^1URBPH%Btot_2(5prHJ zJ}VYAN}d=#keS?7FM3VRX+7J&$A;t;MGO>q{1I(}H&aU@xFE~Sd{0%sL(1;iInk%i zqRROeGfd{9_oqnZ-qLk^(@qgST5sy!lrU%MWj}yeo{`rcccs(Lu(Y-N6}%P5DJ?`+ zc&jnzQRIGU5 z^!auafRMGpmpTGoI5=8mB7|_iztviPzUiI>)nb7A=4&8Z#}N+gs^_$&B1WG93~$T7 z(IIu)M#pP!fYs(uAZci5f#EdV?%Vw|OYOZ;NbMwu-K*S&4r%UZsacbj2y;?sX@d<; z!|u-0e-@%G_QbRPzWRCWR6TK58%isqqMwx8I$>8P&(Xl+WH;b&!sg0(#FE!2oAV>h zz7$iGQ6NLD412SnYTtc%xkjr@@96aGU$m~5H$?g5={gqrvDz)Sm#v<)dYoPo^P5z1 zW|1~u&hVCrlL)pfMPU;2IU02Ah-mZi5(*$+VI(LwS@d3!%wMFYK(1AF;QS4@ouR|D zczS)MKVF+T&7Ym4WXjaov$_@znwXhn@V#-m`j-KiTDOd?-{1N_d=yVkBWlV;-TkIk z7EZJ*MvX%rEIWLVTn}?*pe-&c3oBx3kRwSfnQ}zQ&>5)g1m4AMI(ohFDwTil(Nf$f zd0H3k=+$5iHp}qdtk(evAU~eu6dMz+C%Cq0?aRxjK-^fS)4sjghBwM=ySz;Fw8q`h z*_Hd5Qq9kw;PF4dEH>QTAL^){nWdwzvR#}$#u1laZYj4Ck|~gYFhlazJ$jM*bwCqFyjKX=qRc6L56FV`(n%A#3({9o&qVg*i1K= z?832eC`FeibWY&xfQ-%hkA_4aqRQP1{Vmiy`{y_|K=ZRc7ltY|7=^(pdS}P*7LZ*EN%Y8 z{5Ce%*ufWwF3G|cy@_-2(x|AB=^K4{%Je*ADU6abJCn4s?_T2zpu_!}-{@%bx}M44 zQA5wKF7teFpfMSku7SbwF`r^S}CHI}gr)Hb0t z9vm#8NA0>>BdN7c^ZFo81@hx@bI#sq6u3fhrPcU78Ki|P%E0#~XF3ji?n@u)a~i5X zLWDCyXS#YA^jc+N_#6h(x0=4J5R+lFpcsehv^ah!QzH@}fy=U$0^7U)7)5Ww=f3T% z^}+Up$F0$_$0$X%e*3bx{_E4Df8YHa=jg*ZaI|Y<)@-if#j|q)#Qe@ii_IbzcNeF> zEl%-?XYHpkr|2OG+d?5yVP0;Z0Qk1Y^Pn4>ne-=StY31CwwLx82e#N0my%Krssj)L zqoUG-a%zBZXKSSgunk`Bnp$02c5qXupY96mjAk}FI_w~|J~10fvbw1R0!r!KEA|J0 z0u89JR&R*DI&*pikneze5f!y$$)_9f73tDcK~oj{bGY5$QqIhs`;PRa?ZjwaiY7sh zxV70cB2TaLlk0#sfoVJFix$nNbBIC#SN)uKwB1oDtd=Ut($aXJQ9rnE&F{g(;jV>; zA&JS^e0N^RkugA$)3va7A4F4btI?4JeC3x5`V8n=TAJEgnhm#wDT?m^l{+A*Ff=T= zLE9_hb#i2WCS0T%h-p+kt5c3MGYD|A|vEOlN^ZE8^X`zMV{~*4N|Mx^~la z?wTkmtHL254C*At$Kqq9V5b$>I~y>5YUg=+iTnR$@MkLS(VoFAOR4F-zc(*aM#Jr^ zbjA8|+L6srrzK=JP4ze(09av&-utIx!w3D)o=(l172jHFckf1r9&&ne!RP!AHkfcq zRPd>8my~d}g)HMea524`i}ANJ7>5|>XwiI*%}`Iypw6@7^V8$=+be^ff0L1CwYdN@ zO5QFlMFVoj|MUS$WxAA^E5xMDpQFWHsU-resO|8sC zJfI5$lbh`x_Y~YTp7V+4C2EYeL{sD-%UJS3RD7pujD!H^%~B@LgqIjAlIkCWX*B1B zT#en4-O$nSnD9rT(RYjQF7fHuIN25HUqHI!g+T04{7sq}^ zFLL_)^ctE@M?}w=Fzow!m^WUSsn>ROv@r17KdYnR0Q7cQUVv-`DI`dL(z2As79r=L zfl&3km%d z8SmLe*`8P8a88*VrdR3L?>x+ z-kzoAp}lqAkK@qhX{x@&7B%JIbjZkOqU{0Wd& zPLTaHf;PX9n;)=QZ0Wo=v}H_8oL0ig7ne&OREUfb@a4Uj%`QuuzPY*y!63xtwtq+D ziiME15}UXQy3chzjN!^MYLiav1kXvC!kDaP$BJTC+@z^8c-PygbZMdeSajT<9?3TJ874 z;YT;V+q>V91G-IiYn@in0^T~*Zi9a!0d}A^j&!Mmgb2sy_|76qd=jW@-NnAd==mU5 zGIPV7lRlngxY6`e;8wvuKm_V$wRZ_jt)o@aB{v@&;E>Ex~G&7_o)s6E>JHnaYN;y zMUn1FxG5`ed1CGRNp4+WK6qFEQga-Y>HZKISQ_xA3_CJwdJz>oRpF1lq(ql`72^yl4f!I385Eg#!tI$T1 z3fJ=7{ImU^4+#hg)zJL0zl>eTmQ{-VS#{Db{9(n0Rc#CQbSBq!GBe9F|Dol=@By>o8$$@XrdmNo=5rXX#BJ{qsrY3FBw@&z`fdkZV}jhnt@ zske0#9m8WoKG&<)rwm(TK9b57oT@ZKy>pOW$l~#4S;!Z*5B}*KT73UQlv<+k(T7o2P-()v~*D?f4O0_HBT*uJQ|8Jf4uL-O!+`*SyS5B7~fuph*8ivimA^2&VCAg zsvQohx^Iy%h`4;Fy*W4{#)ux@0^i)ebbQ_tCcqrjHZZ3%TgAXU~=^L$ts0Md(Z zl^KBczwiEv7DarpzHhnj4|kVUOITOR*)hR&nc_-{O#T5kb02aclce9`xpFp;>=P;v z=yQHql>bZv-08)^JiYu_8js&twhE#Q{4PhCmWy|!c1cx=j4L~) zAS0u|+ed}{67IwJx=3(vgrrk`VAJPj7>dyMlyZ7pXd~|6Kwz9;B&Om5lvT*=^9h@e2c$izH>_ zq*iISkuqtHag>Frq^OL}9)lE`qUB+NEN&TiARro93=+*I6kxxiC{q2UR)jA*y;V@F zbr9s$09x@RPJ^IhjOaD)<|)n+WpHb&kF4AX!+}l-WO}^VRoa2zad7ERgrD&dLPcyC z5DxNEpgEPhfnpW#Xsi0r-{5ZE{^xqR-+CkWO%2aB!Ch5-L**EgwOjO=d%-ayU9TTO zvbDis&s;ITEnV^E<)8op7b@(pN%!WW3-N#D&Mvn5M-NuhrNzIV0UlDlu{swcbPr-F z`}tA&nNX3cva0I4cPuzB2dS~cG#IfXdQ7?;;}i?W&DTN8Aes{MB2{`UQ4Pk#pgwo z3A?Y6x3aP*u;I!^-oT7AFnlb5Py{nFl>u?#1CQVG_*`cv7R@>#oCw>)mj$IbMON>1 zUOgN;(CuP;mlKo)7fe#5tA*xAhJ!wC&*LOLla;^4%IAF4A`wLfwMHbO^m)H>TDU|D zwL1b(dG`PM#Vb7vVx3XwV@~74BCoZaS;;CF!V=|017U3ETR}wf;1nU({`3+&6ol21 zNM%MuLoCFI&VOfqhHU&%7cFS^|tn91I) zzDzzB9V%>!V0^UvoOsm#D{R+eg26dG!bZA7FWNniW#3_IX=)c0W9 z2S8V0iRzK#xC`}R_1C7h>;HDI)UXDCCrE-TG}?|&dTJc{FccyQ2ftK#g#xuT=l+@q z4;-A!2j%22TBVL!Lb}Omx!82oog#pj^pJ?OZoOyxAC5(a0Lpaq$=6nPLgx!!LE{me z1pN@O!`vS;4z#)NiF1x_o(5 z-LPd;rQZ;jDxQ-fuvY*g!iHC9pt>e(gl%M4vcvsB6%>CI*QHT@jV?{=D`p7AIB0Tz zaF&;M9nKTbppeQQFRaxHQ7f6SOwcORDw%IO!(&g_T?OhEiNdPx>GmIP6=eEt8hXl8 zB9`Gf5e(0Qs8=hSs!G18HalIu!y$AU-!rpE$+IOk zrTAXCpNKCe5C43r^3m9jaf?41}WV<0ON%!23!vkwbF&VIlI`y7TeP7*rSIA+FnQUcc?e1*TEo~Clmq<;B7C~WQNZ}8$$Fb)Ufcj9Q`+TJP)O_*iV}MfLzrCNye`}?d=}6mX@CA@r z-&JYkvLvtCH$Ls@BWJq28NPrj<>kN={P2_miIPhovuRqpWzfcKeP;7phD3#SuV9J- zPX9w$+qCU07TcFUTR!r{JdA7)iw8&*B793ZPQTN5SiCNFTMWh>K@0{j2x!wH$ROu# z@SoskB--Qn!`YKt7x>)b>h~^L`K-t$G_Bf#o|ToY&ePu$KzgWr?7pgwu8fG7qe>6^ zFQ&QyPwxwRp4Zsl|AkbYzk1=O!Wm?4?0=@#6W0BjsG0b_prWGXtnCP0$T@#xZgRFg zJF3*ZH4+uQC8DQ!x?j7*)_Vw+a|e((_m@oOP;_IYXX1)_YRzUd)4BrOD=5L^#(sf; zMFB;s#lw-c>$!iXe&qi6v5qlt2lRA#)IG@L*kSwoyPLba08&w4m=XkVvN0OC|YGSM*ZLTL|CfotIEn|FAtYm-7eL{#i6M-x4DE- zvSo>uoXSz+Wx!WCYn4eVjuxib4Ekqiy!&m$s>%;f9^7qESfezCFG zu!PL%o#>d2>rc$C2d|4n6qS{y==v+HVq!&jezUZJjd`E*1T`|PHFC`gl zJqlR*UNJdni`V?}JP&NX=DuKnqc1W|Hd`@@-=Ih1E(jmf_n~uYR>NBUe+3&LG`u*vatdyLTub$L-Y3+^pIlX-_%&jTe}(ZTl-Q7!nyw;}1OcC*Z_4_j^;1j+EjlT; zy8FC8)_-izGasTl-zq$4r+BUYVm)iBq zV}XO-U9;e^o6aqWA;SlN`>UYFxA5d*91Rt}UUdTpJt6@H8RatR-kq*nIAzPf1na&_ z1_VJndR#B4&=xIvz3m`7g3GLTeD>M#&)>McX~r2m*>i1-XF1!@HaA1V2T%{dAk^Y_ zi0*|1iMzbVOm0ph=!(GVWcndvC?}k4kv<)EvRSAPrg*U z2mI62d^+)8iiIxCR_ZL0dDzBgcPkq6vrpKiyHn@M={5w4@wY&X2{P%!Cm|Xa$INCAnciD` zO@s#-eO8|v`X;~G*f%nGyQuk}Wfu@#zHC58e0?8$yj~~}iU@9Qca|iL9WK_@DOCLX zglamX-&m{g7?4@3uu7}SZ%7u=qsI94Tc-gleq>6HildUDr&64BLD^{^+ziy#IHQ(z@HhJ&GuCUbz?&h8joZ1Qy_)a(9~r4DUw4s=Grw&K2xq!h!3w< z_jA7#v;Vn(@~Osk_WeiWwOE3stQAofVP>C6qJ1? zh`k+D$a!KlQ48IMhZ(_zWuvj2sAt+!W7KVQy4A<=O=UAWbEk;=vTrW(l0C)oXnP01 zQ=iCYh5SZehlq|EIYH|V-C-wf0B#YsC{->3;oO!8bAG85lW8 za6qZcXu1#<5sr|fhMyJD{Iivhp=d-K`>PjHx4^*`D3A(zI6ofec+F|1AZLSCKf|{h zJd|QczZF3NJ#L0gv2BiWQF!idel#}-3kYf6Jng_PEoe$$SHcTsUET?W$`dfYGRLg7 zG#NH;@JHE85A2Fee=%j%#5XtJP#z;(Ils_l1RcH(3XSesTiGM{sPb-|3j12dOhuTg z4)urzJIofA0bVSZ#qNA=Sd3YGK0Y>|It_!`JA*UcLO%Wg1BE(wco-E^zMDcm>u@(kZ z1;Hz-%ST??5^@i<-6qpR8TELzuQ~Y}bz3qb*3fX#o)-3%$JPCj%S!F@I3T_MY3n@H z6{KiKBvK|32_T!pIab%WTF={?KQhZOloWCJehsu}189nthQ`0u-RSO>AJQQ@%zcW5 zeC(Pj$`AS;|Ek*3lpleP%O% z-GB~=r`xNsl|rQ;@Q%)I4z`F@I4BVjv!V;B0@svCN&KSgEvBz!Y(P&}UPtrC^U1Gq z5zCj0SASxUpT6C|0Fo%3ZSbr;q^Lw+ihX|{!Sc`asP7!v9_<~c@#NRfsGD;0)ea*+ zc22Vlv=l05iE-0{Fq=VX)tFPhd%d}k>rSfOHtldXBDpgK+oe~R_rw4#3#wDKJZ#}^ zbG+^QolZE)NY`|`MOxN{Pgf%>qt3S?RY$w7xaFo1i4ncez+u5V?UF!fyyWwHx#v?( z6bbZ7V9dhlAnZ+qdg)Dx*BD?~Za(~f*nhrLywD5ttxZ_d;a`;da@$Oe%b8JT60Omn z{I-uP@d?~;Ss!rLecvOqSqtk%{t^Z1;e87nL~*hD11w*=?l*O!;j~Jx@c--kc#aAp z%l42InbV2LOD(QQ0eCJGv%^Z$`})u^?0FrTo6_wdL)c6sWhr7Bg`(Tupu!Y$=W0kyD$&44% zBuI9Pt<`Qb(=0B(AYG=mS=rc|dH;~9KmmdDm}MPw07pFaulbPreNU~^%ua3B0tTWy zGB{O#&lln@0d|I)y9J*aWH^@6nmBn}asS2wXQ5(t*Lqz6c{C5xT{Bulh~3-=c*_6*yP48u*GDPuJ^w7t$zB)RLp&m!SCq0*qPfa#Sjf4SE8rE1QfUt!XjQ^{w^TPqDe_<;=b+i(!tfqCSL|v ztZD5O;XMl8TP>1B_-cc`Sa1>D9M(Drd;?!!A;VpXT)_C5!_Q*iuQ+O+F;+SU`BOv{ z1_vXDYkUh232>>;D4QiID4Zpk9Ymp^s5i>a`t~C@(0^i)(R%nWrfsc{4!e3EbNO=b z!5}HcOqj#{C0T|CA{-nPw@|v%u9H>sfb_)x*}&*CXccp+R)$_*X4}ndckLxe*pQ%U zi)T&GFWq0N@P*>&YYo~!xwahnFv@i`_BPqOd%px0U1SE?V3cYc@$G(Gv~kxdKMV^x zMbv0cF=r;7KAdC9Bt!J@=(C&r!KT7^wkXSqhhE)O>n5?mqLoG_$(n~L%EhP#KR>m^ zH`)==3Ts<$+F8C}{K;07H0sQdGpRkTT2t)1)Buaxx=V`67_G3MwSMI2Q;Q_zEi!8e z6KW~P=VJZ0;J_TZxE*bTcHGQD)UI-F4KN{N*ODg zk2q1b&F+)aHt!giq5oi7vFRb0#pT7`?rX|YAAD6@t^YX_{x+;>cv!)`6t2BUp9*dS zzi&yMX`{M1iWVYvV;#@P$frt{;U3cDI&?zSS$&>Q(0n>)_NB$}347SO z)bK4pFL8lXk?~#d1VSuVW?-2gFprx`TSI@;BERsJkRhZtNr0CalTBNPjv4-&J&wl` z-A_#|?8h+7uIOI++KP%w$HZhPE#()9+)%>~voYl}y<1l*Uo-i#;q6oY*PN3(ZDhqB zi06^`lQTPuC72X!C2iRmbaOHR0%wO6LkLJV23Qy25>r zQ!2}QEbw*%^mG-x?t`~B`{(@?Ew%`|$!B*NKepY9A0$SmxLhEJLjfN(65fp2UK4B9 zIA0_875SjWlU^K zUoh$a8#F>(3JvE-L3JZJ@+I24r!ifTXJJDbn5~R$!5f=e{4QcMIU?qiGUVSsGZw{Y zV_LchT^LG8dl+H(w*x+$JU*W?7`;Mo*l=dbXDe=Og9h;y^1^y$rW`l4Po|{M{N^Hy z3(c93+Y0u}g*4(3TIH}WN!wQblJe_ZrjW}I^3fxWmW`bV3oycaVZ=ci9gZlncYi%yI`d#>CKv^?_- zjqw^99GLOZm)5Niyd+A}W%?8OWY^8Lv*=%RNPUw51>%DM05P>1y zn-88K>9zrShy??m!~XBRhKjVhh}L4z#C*lr{r5Ev%X4o&>-vPr%JiA%yS6n31xZao z@yWrtt>L?5d-deO$~dc6nVzd&ugGh?A5qfCnPmwyn+pr|6lyl~XfZ{zV_;mK&Prde zc5}8cmR`B)S1k=%B>zek|Lmbz*)b-qULZbm=?$9Hh?-CLriD9Oh3z6OlGf^)oglZOf#%e^Md?r7sg_?DkDAASfRl{$JFgNcQ(Xj zHe@R&1P>0d>NM$XF#V9UpF1rBQyz6^>YIEei>A2-c<;12RLsWnG*?SE2uiDuif+zO zxlpL+QjgEw57(3ZIuTPAPFD6#2jV^l0k6L9zP6mzjza-^_Ioc&DF=r|EO$ZDn7;W+ z*SX@2Q!55l^1|ZcFZZ>ch|4X1V*xk~gSG>-rC{k*y^WR-m_Zn|mpF4f*A;k|K0kf9 zP%nJ7)9uOAKQbbJovNxB+qYux%OdzzM#>ahbURct4_Hj_@7k<4ZrWY%{bu!~%LF>t z5>04OSSX&35{lpWjO>o4xsg*PPy1mDW4G;R|LAl6*Frws;6w2kwLA=#qdjV92=G%G zHQRA*2k=VQBrao;>l6zLG$-9O8z=Yv4TdO@v-}d(J6hf`neiKkeN=YYT*FU2FS^(G zAO}ybdVYvw&`#Y;8O$w56oGkD@IZt7faH;~BR8Ctol}sV)Az{BalV&gW0kYq+T7~a z_mxAPXqJKJo=CJmOP>3q%w9fmdBCK_d(&O@;MkOIzXzjr1?dqy%y{aWQAgD|w+DCeR4L$bpzQ5~F zrDpEdrIXVZd{&FduS>P9gq#4qa`RtZ#a>%j2+9Ax1QDfwa=(+WK05Ci4_fU%|p$?v9?kZ zicBv1L20xUifrc4ay_EDMq&6^F77;_$2)I0YyXEvA>gW8{|@559Ua+Ku% z0aovco`0sh@;PbVyv|&XPk-(#dxI!mFsd696Cu>-x7Df{@0q5_tXJP_QOPma#Q*JN zLK%gw$n@aX%+TF-PHgUWfABXq{a=(K?Jpm$=&$a|qlPXr3m3oAP$=IXV?ekAkb^N} zhVDJSjM|Mzt3Y;}|D5&@w+pRxb^97$=9~X>PW^9?SFsr;!HYbRX}ht9jEj})cq=4V zmIW6$5bum{pOIld9LZCjR{N2ZCc<^NuFBFehpH$kjeg-ij3L7;%|FZaHZjS&ge^Tl zrj(eIZrN7vW1p$1Kem^YnEgFc1hD}D!OkwBE){hOGWm0I^ceN-H3+64cTzH!m*a4# zTlLFuzffPJQ+FjNubI^CcYwx|{S2&zdf@>^h!fwThK<}&PlQ-HQR75Pok6t`>V_Xd49q{NBrY?T#tBl0u>hg_z;vGTw zfQ`{TqcQrK2zKU^S#TDeY z#u)Jaf1q3Ugl;!tHf?`3Di{A+Vx?;2xs9RS6~KsGTLvy%6UcmRTl46wE5qC$G6U~S zx3|f=MGqQWWV^GC?85J8Hp$5$8I2w<{dHi4tQ+tpQre=?C!6%$rGuVO440nLUd7lP zExo4h7*?uj%q9OL*6h5?XsU6LwE8<7Rk(0Y)2n9sob3y#HlG*j$`-fL&q9^ysd^3R zS1Lzv=wIXatqR^oMvg?)k_kCk+HfLbtl=Y3Qc{|23l^anl_KFX-)|v8K9<)vo2d?2 zX;h$)Z0sD2H!XiNrLVhPZs>JCb0W$d6^XC3CBK-gB-IV^q|f@|&fX^LO+|hZEKmna zI>W2mPp;kRCGll4T$&!PBQlF@x4YA|;d3^vHSLQkZyK-CGLGuz)A_N5}lj!Oz1HR71v7^n`i={AW!+6K-QPL3ZWy z@ud!m@DI(!iI>{PL`>(?_dBwdTK$99S{=H|u`yss)?$;b=jOIh=wWN;?Bk!+mXlST z8?^*{_NMCcmBpx+slkS%zKuzjrHdg{Gyy2CcPo~QU+>)ph7V?rcOJf|7UFoV7fkQ7T~RAocJZCe3q8*DBxyD0ynWzqE87o zG#d>g#P!VXm2i>Rkr`1`%krN@1cIMRDwtms-pVUstIHi%lrv^jvzBDq4lNY4xY-kI zaet0CYjb>?qt;t9Y=4V=;<@*Cl1A0a7JFnw`=f$sV-8~xG()%D`IVXY+GA|j)!t^O zd3d!_okHK}89`cxO}OG#>2Ly(C_t=S6kjiSNGW}yz&mvVa$W(IkrQ9BS`m6$CkV0R3KmvF;U17 zeMBuj;i|!T@Tuc&q~qmf2oYarX82$sThb~MZkv$2QuPl_#m}1Kod;J-uGbS+uKP_K zAmIGig-xxldDj%?gwIm3BX+O%;28YOhiIuj8XHGTLGD*Xgq)l*$FAPE*Tl8x6(9OJ z>3;7+{xpN_*m%(CX+CRWrN1FEUeoIM-=3oU$0wA%+A$FkGA&-Zfx*>Bx9Rfi>VYtt z$1Nv|AkVu*(Y!Cnj;R%vU$(QR662+^#yQfi8r)6>ikj+}729;Nb2AGThYbdfO{(xx znJA0$H+T(lpAz&`n;k9qkH#badr9&Qw42o5vL=G_PC;?$cJuvsm6P9KPJqpIEUxnx z%yPZ#Xi=R@pQ*8mEfT>4la?rBbr8zP&ajp`lgAv{@@{G-7 zju_7YaZuTeJ>1TYlF6t^F)_gxMYqs#>%{rZmh}3GGo_5S<#~mzlz|0(Q)4Buq{d?$ z$IicU@fRJsy1Ka6)dAg!c5x4WvGCPAqpf!eT8sED`89+^&jnw!FSqd7j+~uj5eM_L z6Pne{Tsjc*$n$iN{O}!%WOn2mW_%`Cj;$1w5si+RYh3feoUkl<@Z_w?rroZ{k|DU_ zEH>Y1PsTBSD967`;vPHo_@pH;C)CeD+lD$uJV$&qU+MEwHIugX5&}<^ZF^VQ9j_BU zPcy^HlHGW!Vd!BO_25;K*;@T-Zl%07iSNHGS;S!S+U`z6(|5$LDpba(aGGb>Z4b&_ zT)JZt;KHVaHRN1$nLQqLEbT8=SuErWK`(6CJZOn4>sadO6Qpx1Rls0i;HRwYtXE|Y zb8R6-EgeoJ?w49UxNgn4v$I@X-DvCF{FXh>S5tAIbX7oZNq?k#-N*kYL3vbWa8Tms zE4GTmU=(V-s{WaMb0t5Nw_P?=+?xI}ZJvMgIX^5c>7>Uxa#VKI(gBqtHECI<%_rdg z^@@JDLwX1Fe$A9};r3CBO#!YGxCgL3SiAG~c;)V*9z+cWf*ooT%19i^ZXDhMGQZU(P~O z+?Di;u)||A6+Kz^R4K(M`dbNg12ye04A@|aFmue;qj1#_X(O^zo!POwHJBNKzW zx~GnLC!YrVq2u2ki+>OvuuoF=j||}0DP#!{s`IA-5{VBnWKHDT(fxN1XYDA~ zt}dI9eZiG!h;QG_ess|5)Z&G07fE)_>!!$la@=L)Y7(zQe)|*6g`li0(%_)XprA1t z8k!6i5eSJ=#9PqtAwDy6tks7ysU|DC($R!nDF-Z2kP?n##V0m$nyFv%R?zV^42p2i zSl<-K$_a>t_?p;xkSlAdoHUwr+=jLO>Tj9u!E+;4d8|i7MbXhy-IQcz`oBEu5e$Ck zfgsT6xHExc7kYsJ;u+6^kins%Qu^Xj9W-9wi1AJneah!;;h^@m&`AiQY}*hM6SGW1 zgQFBgtNBs>BP$u3nwHSd-e^*utnx{vSS^>7c$FUl2(8^;e{h&-=StLB9UayxFhWII zZ3B!>b#!y7i;nHP@bQT);};`yv?b;bhrA~zP1;&2+ylLTECxol-+v~{MAg+rpereT zO-kCLukY}VyzA?Z!ts}n@9Sgh>zl?SC>i+o=j`&)YFR9B0yjkD9({VCnz~Z) z6`|A+99SebS-ymjB-O6E_3WfyL52RyXDb5x`vg9Oe%IHF3^a5&+#{}Y@22Co!@<#f zX^lYj<41g7&$c)-xiPCZajS#}<+0GpIj8G50+utvO;B_?}Movz+JAHSvN6tHHQ(E%L52ETqA7OnA z#OJe3>5t4@ZX&q62tBYXcYC-HT4hpReTd|;KMmR0tMw|%4|z{5QC7Tv>}PU&WyO*g z$}v7}kEegiQ(1AX&ECyFAaJ;tVC>@$Wi9q5?crcAivn@+LuwKd z@hl+4iSUl~oai_&TKYbnipHcwDih<#6i7s1$GS&ZaR@DSUuofPz5`XTGMm}0Gl1)M zrZn|gz3g0@Ac|r1^qPq&q%-DFDH>y~RLBUzY}gM1t_1Y@;OhKa;5W+f!-M%Mi{o$n zVJ`wowdy8E>R-+_%&{VL6kFT^R`hz?JBZSd4%Srp8?!>SW8cl80RPo7`$PoIkLogq z*9HBxj!5OWCSO!KOTji9aTxjaG2IqINZNb{C@j;GP9CNT$VRQSG4zds0wv!Un#6y; zI^fU^$vu2Z+n!utN_tzo6bH#zdVnt$@W^p2JE)=%Y4sd>`dt1jv1YyOvhO9>-w1s>#GEKz^N$;AK<_66CY%X`JlQ z(s`xbc3}ybbXM=k&fAG6uX)A^mv@1)f-k@b4vBurS>{uh$;lGe^yq8Zq};FqTAIx^ zS{iz48hVLGbdS6J6U@uVwgBM_(H0kFEd^Q<^1)%Wvr9HViFMnVcI0vN;D8GFSEl|i;<4I?=LS87Ha$ZYs)_9%uyobeJXf(JQC`{XjDSihcJQ`V!*V$xvqE# zfl>A)Dba~YI~N*vg`HJ{F{TDXg6QRY-<%z;L0l>Dlt= z7{|mIhkXLS7)0zT;h-FqNEPpy` z*Pb)$cLGwi7S#*r6P$?FxB?AjXFU>BINpK>w+uTBX=s=X@l2NO(IzZ^NqvLbx|o!k zEy1Q|0#7i%=E|8sNM7YCkpwGu=(17a#kuXB|D@z7!`R$>Z( z-aY>^ypAsl6^O9`e5ReMxj9v?e)`58rbnTUak0uQ%BN)K)AUKds>R6Ip{Qf^;qzXJqC%H2%eOY9G$%b`NeR6U0g5*m_Gy7?lL%l38mC$h}%)ftg!^lwI zOIC3wGbewE{BaSFoE(Es(*r(+R5T+JS%AeU)t zaM<_`My!g)PR;pK;4a$Ryv|wbNSUeLO;|>J?8ecK3M=_S(f4%*!A1yz3Trc?H`@Q} zOAVfpmn0&m6YpBrc$?({YE*>z+DZK;_!EJa5v*7+!JVRM<7sIlL@54yp6Rte)BB0!`fWIwsrkqF8q@EvL8GAlT9)%+&X!#`*?fKpaJJ%p%(w)@8(<-R+%ql>T9GrY%r6>{^*qJF)#I2 z%L~U@QbpXQ>$l>Pm0p>c=b{6dTzB@?Rrbd=#egISRP%t)j}X5FWOqA(^2<$RT)r~V zGO4WZhy%2!!gvdsWzGk}kQ_=63P`3JWjkfQP2&5O%*qRRD{@$&VhwJFL&fthn#a@A zpnHy43~~&(1m;A#6y+esVp0K36ecJebR-q{cd#FXg?vcz5|fVCvp`QUr)$5Rvxt0; zm$H6s$TfBBYRz9o)zx1Ed^sK1<+>yIZjWBAR$~z?8~@UGRRPu2e#yyx#l;oX_DFH+q0!)z@DS@%OgE&wsH~{u~gS2 z8}CF&* z%!ME=jeFrJZw-Ew@w+~Pq{J1*UP-b)RiTMeOdQH%kBUqZ3uAK6q;_EsRyh9>M_O8+=_`u#$9MF+ ztcM@4r9b*E_dceNo|&HavEn)})wZbL`tOLRJ;)M?Kd$t5tResPbi}g60pLs1W!ihp0ElpIu)L&b?udv;!s%uM!RmKas9iP21PLNY zhFKhuM+T* z`gbvnHV0F^U^cH>0()X2K;2O%c{BaHOa7kD@M^IIj1Skpi4nEK=d%3mD2o)n@>q94 zL*LWi{|PHjzmKZu#}6i7R|#oFC@dPMkk9(KSR(-Oz_#DI4_xzZrW0!km2w-kPWIPh zO&0F9LB-EgJjOob$AlMMY}|2-iMV!gVqy|4Tf(eiu)zm|-fF5V7hC&jm`Dx}3EIB2 zP7kN>7v`2S>Cb$ML)D|bo%wY>=2#NcZ!vWV@F)~vc*7^{pHm}ajfe0F1=^^>hDb6F z%NudwI8?ngN5do= zI&?dP-NO#!ROS2or37kR*!*>5))$jJxxI1o0%yz}G2$e%YLf!d`KRd#PjAhxTC*PT z;io*>I1i$JWEaO5+rH_JlN-r@-($Q={BIkb08;lnD}R~t^p@VcyX*LNn(9URV!@Yq zR~O5x2Afx}6?GJp6;+iL%RB-}q|m!R+9W?&Va4?W5Aw@rx%B+}i7%p$A}Y{L88@ z{16i5151#Q6|jmpVWXnwMJJhPO3O;F>>I{|)#Se8+hGwlUSgMh?N5S`r3)cLf$J{7 zR?*U69hJf&+2D5h)42Gu09*98HMKv;d39S;hsihYM9*C+%E?vl&q<3^rf%YH4QQX@ zsbY|1=UL_FS=G1ek+rcP9zWeJ>|{|Fnu6Ge8`1Ibh!Z>2b(s+L(|c(Se-htvZG1`P zqP@4nWGr`=A#a{e=+P2?d`e+@tm1*Dt;$*p<2npEIMRX3c3(K*IP=4Be`>|$A)V?w z69UUWDDRZ3@k#0U4iG$2ml`j_t_uFDB!hjTB3!DkUYS^p_q~)yYV|l9)7xw(@1K@Q z;ol07#qf}g7-clRA?d`JpgG-DlYS1}CIY;BT3A?7`RPbaWtDqAA<-%kC*EfxQ}>GT zjbUJ$c7C;{+_&5Nb&G=5c}&Et=&ub{yojv4_2MCLXg5w42~_Kp$hAbDRn#+=L=-Dq zDLdTdl!~Qfv*fHL)zs*Pd3~LqWDq|#KcZQhK9fYh&Y{ZniaE1qM&wCrD8#DB<5;aNr+D& zy8S0s?nRGX+PYVY9+n!Xb4}|Mh7b5&3qk?ZNt5$^%J(i-B|bq->x*Dkeidk>uJq#9JUOSa|&b3 zFH-y)L-6-TmJ2Q$#?l8HT`rA{rOv%m?vmwnWaG{VM#RV^1QtGVnC=o75jn;3w#fJVA>MkF|~ zSnV_(g`B|pFw6kwEy|Hr7g^yehOFo4_rx4xV$!V z$iF=u`W!fnS2?Bi-_dnt*Ioo}(5g(<%lo`OJ$p{n8X2W{?c$SM&mmhIZo`N9JHldz zftiJ$-{p|Y;QnTqwZipK5_(VtdD!fNit@G&;n|Hj-qiUx3JDF9a_~p*qr+5lKO&5m z{}}$_bl8NqVx(tTZnJpW+>Bpo_l%ek+QSCBj3yy1Hm$2be|`lh}JN za))D1Pnj!UcoT6UIudf|ysj&(44emCnEm=SE2ggzKd?UtOU#+vZ*-*w>{$x_%bD0{ zS7<2?f1@B31|G@;3&_X5Xp{X2A$aY|WHO6O_QuQwL-}K6Rey~ehK{3$rmAMC=8pclvl6gL;Lj_{2#l}i z6#k?l-#ehQf_c=ocL}EI01s4HM5_4UDw~(kYIUJNyNyEgbA8CE};Q^<40m{^mw^LxXnnU!t3xq`YYx-;q9pv+Fad zG7avewB?b;QbFTwPD@(y!Sr9c=N8YyUj5~<5DHaf5Rpga6Ys5Ejyk+r@Z4$N(aWP} z8vzvD(5Ux1n!lx->mKPLJ5$EVGdI6DsP0Q=tml$VTP1^8S(&FnTmx@qkY#LC`CDWGd>on z3vR&(b#}JFb&83*?a+;6E6BdNIa;u@jQ(}X<#I?3df^)qq_g<$9b&u`cNiM1kYn=D zn-0eB3v3MeHrEhuXB=mrWUI4 z&~wxE(9rZa5gqy67kDU`e3laq7h5Ka11>)q1pq2oZmuUe&sR!v>AWNfN$us9O^`fF zpy~z5BMT8V%b`F-8nJLkI|8=YecDjBi?y9G0VC-&F0a)!Wb?apUAmeE&9zBSnSC zSO1a-hX2(oaZjB_>(L;Vys*zndq-CbS}H0Mj`T3x=!fV)>;homAbGw{i&!5 zB2w~g08MUzGNio5j?;R>Tv0`l9HONo5t5#|(@9B@^9xLFg5s<)@IYA360RPnU^~;1 zJauq!Q;)lg;f!Pm{oB#)3DIA7jrBR+(U<+0QSvl$-CR?1OCm(7%>}o?3kz4+@t4fA zZX0Q73wit_Y7!j^nt5emZ=sAxkh-AvCgvCOaK5^3MGq~d>D{NIDWag53JW@|u8t1W z3&6omOy>7Wk+2venvOgQ+%IIlv220G{-C5@Q3&}D@?rPA5FL^V!ZaOIgaBnBM-;#< zH^G_3AjDhtryPjqO4E)f_x+}2xx_EZxFxd zA-{SF*Ae|uMA{%*Iy)Qu!mvMwzU@KHz>>1BA^2-b)>>`v@9CeT#td{t8Q&#KY6V{u zVbE>s(2~CL^mL115gpZJ*C+3FBx$}qQ*L7^OcY}_M#KJYqQvzi1@wvrLa(T-{BltD z<_4wLJ8ep5NneqmP%Z=ap zs}FbQhe#;}jN&84>fltx+3js)*d_5AbGpmUpfbKk2at7M$iSR37!=WVcG4o|m}v+g zczZm)=4Bz}mjaz_!xCds9*r(PpIo z#3Pb`im`OA-TrpKC7{{ygU)MiO2CW+LjADR1=kj4pTv1^Qze$=e^s|VYq8$AS*FFi zY0atsa(~4d|BBn5n}YvgBJho2WhGE>rU?G9F>|ek#EynLz1m|@{ECcHi89k~v5v^e z^r*?QhQ9ugfA8auz`?#F?)b})hKk-6kEJ?0d)xoW0}d|7@Zd|ty?ptb7*gMlIT)zI z%0Lf;C8xYn%1Kv#zpeJy!&4SOyK~%XTsP2N_xxm?#5!npB;%>0t~m%*#qEENq_qA1 zz_*1ZbGrN~!jc84-UE{fgA;F@a3c7MS@X&lj{2xUsTeItuhRoErUL{mCv>dsfp-ED}!;AWZ zJUl$y;&N9ZiZy6>(66H$?JgTVj=CY7102g-e3^_&iBnh}TJQ=WEe+C>MRFrYQBPdS z-F~lxU|3~jWON>KQ;ta6>ZKEFm+b;V{eI6XilsBcrJ%L3co4q5xcsm-wrMs#rjRS` z$i_BtoySsAK*IAiPq52|3)NNi)hjssyW7>p9ce;SgjeFYh#wf2qovRhqOwQ9y}y+* z^rAZuz@kTPemY(Gt>_$Z-KeCZ0yyxAj}P;JY^ScSnbhQ_wZ`M!tvphLVor_FArfz^ zEHdj&@UMZh1xPpnvF~00zZNs+Pb2~CH^;16Mgl&^vC;!Pb2`M~RBi=DMQNa?dNK+M z_<(`@mcFF}rg)ZVq{YTEFM8M`e+UIoBrN>3vPyf@3qPGDZv)xXws7%J(}ohblHzJT zy}07yU=ubzZfBxPh=|+#YFL-I(u$3XjYz3}5#)Sge|5ie_VTlefjd;4P}5nEP#V#a z=THqrWQ-SZ^1ChRvb>>@;7JqjQ&m>xGHCC~W(ef464)&*dcq^y=nP<1cIebkbQ<=|eIw-Q1%OITSlQq|s7B68ii)-tZ#?Ey0n8M|W?DN^ zH0LXUj%8Lvg_$Yf<(g`b*=QunsAA~Z$3;(|V8|OX8$B{je^OHuSBf6BnT{waEKKIM znb_*QZhIiw-Nm_IBIdFok??2tM*KrbNJkl(Yyv^o*J@SJc7Za?MYF+KMM&P}q>>GdLOM?Y?&hmD%v^!DcQc@`FCiYk z@w|+X$eF#s1C4ItNjgM7Nig?@P2p^AZH?u#QkmfRqQrIUojAv6Sds^P8C*|3nR{Sk z(o&OjI~`-gMruoaLiXblcYotuKM zoTV^!c!$bF-P^CV>Z~?Yjs|LGAqdcyuYE=F{`*v>zOkaBntD7g&GcmSJ}peOp6M>` zypzk|m-79MlNWeXv^=)f!g(y8oh@ zd-wl+tI-*Z;DT{-T2TLP+-Cos8o2>U0BG}WW?HDGtik?8LgsO6_^*+H#>H(>X0iRR zo{ATmqT`IoqQ8wf{rq)U@$*)l?QL`%ENfeHYg4g5#HtNPZ-Mdv^M@$orWrQ2D#QAg zH*XqNo!SCSj$#pF(4JHzO5Dt7m4Z+*S>i#JQwb9@^oY+nxa>sg%N;SRG#HV|(~ zVnRS^PvkGwwiVWJ`Vgg8mu8Lnn+)Pj4F08WJp@ny2(+qTN%W7H=awAY7k^T5hM~9; zuHfxIaR?iahIvr$YN7~phUq}Ebg}()&=I7acG7OiNw2}3^4RW$k9x8($0oc&bAh~yk0-HJ3!djChZ>Mv2XuQIxM?^_$#sCkZqhUp%R*N$x_R8MPbSxd7YJ%G5h7j!aeP(qL z<CU#`ev2p9z?2WK>l7yx&8hvPg_F z`|f(NuF9#|`7ydACj+EOJ%lz)^d&Et5%bI}n()=usR;zVxTFt9Ame8;uVjf}`0u33NDFDdy^-FrZNVPwh(v<7? z`=>>o*|@|HM4GJdXe3H6K*1AuXbLn(4ZMo_N3Uc!98d!!qjY!C?VZt}Ql z$jz-y_cy5Od!wj_j#v!GwlchpKmo|&&;G+PRD-gl;=I2*Sn6W`_DS-7X6(@D3J;_y z;BxYNCVLCC!GtP5#15NefQ*WHcpS6Z7bo3~cVCGi9)SshPTNw?P||@PK$dbqo}lpf zeK=ZK369g&(*1pSw=%PNS7Ee3QFY_n)O{##z#bFGb?Rc+HU|V_dhF8J)e%U=~zie2{GdPu^w)5mw1w+NQ+% zDxo`!uf+1N?TLmxSuOXG(a{tRv&epwCIIdAAi)Xpr2hl@*NaAGR;GWVQ4Tv_tQE}1 zXXN_hf;m^t_l!RV4WkH9zFoefJ-?Wd_X%-3Z}w#Q(Hs5t`kL#+DjLxOj^A8U2^C)W zhvJ~=WEOZjO!~n$!1H4MT#62Jij9q%#_jabduGk%5V~`i1-zg1o$C~6<`O*b42xb; zQZj*kwkA(L&Wn2-*BPH3CKQ5joWy7tui5s9RkrjNO%LLJpBS{(9*r&1q2iv4CJf0N zK@rwKx@SQCpOjTzf>R|(|AH(EP}BvGJj)7m`4>H^`$s(G;-8P$1G&G!DtiraCA?id ztHjtF18#3q_~FSB?|5ROY2}OOBbX_C4*HM#y@%t5DcnveGFT>|AM{1q1R+#-HHXCt zzB-(K64qQLZcu_eOf?Sl!d!uk{YM5&S7c#5wAo#_;JMQ7>+6wD+UM4d=L33>RT4|O zM9mHh4wldBKfd1m&_sID7;qjqJW7?6qM?Fi|4#e^l%iQJmD|qtU4XN`>TLE<{}bmy zqqPY~Q#d!~Pnn;5{(q_YywH6;gzoE71OXU6GB9wb0Wd4)r<{=LeQ5PW3IXU#BCFO$)IG5^QfbGO{QcN{?q|g2YIF z6mM@)^X-2*L3zrQ+xfqbL)Oan$3VQ_EJ)s zT*w;&Ukgwl-laZ(A)7RDLkAgULq}3zhkKA9-{fM@v81tCXs>6p_Bebrx}}UK^)S4G z%cuub*a$`n#a27=S>u(VeQ@jvfkoE&wkh$<*k^#Qgh2}o2X>_=CFQo9NdGy6WF@Qx z_=?{g#YI&tlaqMbST4@F!%);4%v0r^Ho^BsvIM>T{UksimC*Ch*q!%$r=k+Cd!9No zQ+umFJh1&0H8Vsn~EVH zi&umU+d4loDj0YBi}SarDK4=oLedPZsYAQ{3jdW^(1N{eCoajQ>5Co?d_w{}(R5Fs z?Y!;;nmst;WwOF?m_`8eH5~P*7kW?sL`OQ}aQ!{DIg0NLIg4{=18VwdPS-GV@JOnv ziW#W=Z@+lmPQPw2-dS?H*7>9s6&Ac%{eiC{V!6hnJpL%mi3u*wn9F~+6{;bGzw1bd z)^eqRU(=bFoJ^` zzHveOG2yhG3tu$DcJ`P68ZD1NZGi8`uFh0N#h5D`!~AC>{9vj9Jl|_5-&jSR**?7n zy!xm-s(!%pbh7ku5#Y(Vxe`2GQyu&VC+o)=no+|!;~5_gJb^ymrhuxK{=@zfXng9( zVhq5-c3xJYW9BUHNjIKX2S3oMQ^17UfA|-a<@9dt^=_m@;%r4(57KiOWAJ}>yM-@9 zdBk*7g#U*}{5;(!{eRZataMKSDJo28P@DzNR)0 z2_3dN4Iri$y^}4uBF-Q{%^IuM2pd8Ahu_-@ffpC+?Lh*F*Blvm?w#z?(s4^%R1_Pi zLIV6{U|=dgJR7mO2lia1!Gpv3x~D>xXc3RC*(+^n@g{{z2u0rr7KX%^nubP&E=j;{ zt{#=F`*zubA~}HbftYWtB0DlSTHPsw;OB}B6N0BP)XsCixmG2DgjZH*3faDE%JhZK z4O#xpAjP235R;P9%OJI`n*}{&0p9ENIWY&f(mcz)l(21K_yRhn$KwG|Y-m5H<4DSd zmv9zGXbS`5Mn}%8{}+!Z<&eh7IXBP>5)vUH$jFle{*bdDu;Ib$#~=Rrb!xxbZUvpA zL+?nvdjgT6f!+#-4)$NxnVa9^a!381YHBz>@SlfLxR`b%NoN~?=XHLLsOoI)PH;(e z?Xcl1KCaF0#SFkb#TQVZf!7nebM@E3FF|LBH>cZf&kvo;!ouBQZLu(W0$G*F%H-U)h$^mzBb~J`YmLkgbAZ>z=y6Rua96oJz3~pf zz<~bUe%AENnEZa|yenxNY85f*rT@>a>Y)0+&!skq@|z{k$`w2L7@ z(#arRSB@hv{aFE*rRr5w+wwntR#43b$|>tOdY*RE#|{be(}#C=F-rBkgd*TDYEaFV zlWzr*Kl)wmoeD7A=$<;aYtrX|EUE%sqC7K+^jeH$Y~%?5$+fozSv}y5-1Th45aI;~ z2dmO1=oJ@n10K3`8VzXF3@-SAg1F5ncX$^#imLL;UW9LJKsfL^M|z;(9uxBu8mcOL zE!wG#%f9LBlw_mN(44H`HFOCg8Nt-{9K&ILz>aNy17xlKIwmn$ty>gAL#uH;fEpGQ zX!j1m33lfJXT|K06sW$RX{`sdUI--BpkqB6ADgFa?HD~ghE!nxxxbSed zMBI*#bIVRm#-=|BcAr}P;0h8DGe*d7H`}+lo zu&AUYL`h^P_A+faWXJs~mxrKHJ<8VC!2~RpZ)XD^eUu~PuE?7u(^lIBSnK>nFi_DR zZT^YkHONPlQze}jQTI{xek1w?v)yCNI>*Uzg=Lj_MZk;kcxVAg#o?Qv=@3f~kcJTn z9a;bX5?;dU>aI}p8p0~Z&6CXM@Q$PIr%1;Ot2-pZ5lY5ivYaN*8WdV72IH9xoAb%D=S66p(BAINR6%@0BZ)$W%oP7Ay>V)bEE_DS3*PTAtrOmF5@6^VqHV*YpD{LU;(lmx6`NW3uuFq%f$oqe_<%8l5M# zn~IQTGj^}|SmjEt1PdV_db&4lxOkE9rv9@yWa#2_I7LQ(QPY5Q30N&SyQdZdLyIrd z_#2kHrKa_6ytOe{K@56mNmf`$?T7#N8 zQX6@E32P{&x`NUAKduGWj-6b(fWOXtC>Oqru5PoU7qmS_1YXlK@-7j8oB})DcI&n- za=iWvrcFELd9X4D0R}1o#^`bK6;f7y`AQi99-W)R)kQ<4&E8?%5gKq(GZhLz?b9dF z$Og#2W(#JOC{a-@3_wKh{Jj3<8zY_44F}toLZH0(*2-|2pcGl=;-EdsCKlv3`T6#wq zLV_YFUC+ndmNj<|hXx+X8(=X^NUM78?(bo$jE3%w%9dyujF#3n8K2^a%;qRk`5jp4 z*lE00mIJDH~R~%1;JKZ%KctBrU$M0 zO7Hvn`$Q3+>}S`sA>PIh$u2Hjij-blrq|y-1YD}T546ou$c%{V+Z35R_1@iWE-bwG z@_2ey{pR2h5A%t$q?xy&xcD;dU4r@2y;{_t(D<|da0Y|1IA)Wvy%(g~tq|~cbBj*v zm(sH_7@+XWMOj&7a#Cc{Hc*&enYz||eul5dY~hQ(HSsx_ENO zqiV0COCqDeVCQ4={d%j<=Io0NxUrZg;eN6L>amV0s-M8Dz3(b}+PKhTRxP)uP3#jM z)6?l+W)_L&B{n>jbO>BH-2B(Mz`^9Qbv{Z|mP9&OX49RRp;{jN+@i|_5HS&|n7$uP zb(Eoa4Hna=Y}$LUzr?|i20&R z&&WtUT$zmAL>-!#*y5Y@lk2>8LMm|up-71!C52Do;0JYV53{7iHEyPc@0x_&%5O}C2!22haE`5N!VyzkL+uMHpU0Lq9KUN}4 z;Xx9Ig^t0*7!s(5fMBGHjn;w9$#46$tXefthW;?G)VIne*-wY9-xgIEw5KnPcmv!1 zw?%-Cl#k8<3{V2&HAhBJq*Iwa+BZy0>utuHdQQiJBG(uEpM?7-F$_R{s8;Y}|0GoV zj@+(n$qFK`4{6$_EjSSJ`WzAi^b^R>M}VloXgXGUZyHcgTN)c14e9WNP(UNdYr}S| zq&gyfM(lG@xb&2-%n9TZW| z)62|SS8VjnCvWDrV)1Qa`g`xpjd#M^ZE&^APZbUCDe;UL*CZvC#o{@K{xD(=ePub` zVj4wz>1S$cGOSsB8qCnziE?>K&YwIZhFoi|?sPct%I-}Od0WYY`^=z{%|MKnM(>}`Weu~5+*r-ELq+d3Qg(QhAHG8O);2^~?w%&`%M3*5}_XonDD z5j#frzcCZIltk(5I?MA)WIAu z+E66@{yS#t0A3!Zn*V*wb60F0ryL0BRj;Pqk?i)+bC~pH@TS4RuY0G{ZbTqI-?^;K zJo_$J?+&W)VPB+c{*;h7@>?!wBcT$13&~(BitX&;UpT(9O#P%puX>JfNgpNt!u0~R z-i2!UHejK5uqY~N`sF~$(lst=c={pRa-X<@OeAwo<=>vO`{w-P`8*kdH~755zjR;4 zOY!@B*BjJuSN|OEwXu?_$@4fg*n7CN9z{k;?^xh)!JhY?OD6JW%xR3s9xfs-#@crz zAL{2Ai$QnsH|ox=qkVr^%d;F1T?(O?snWSj7rhfdoNY+x)dzi7a@iE0jUZ{Z+RLaF z`R29jR?L_qiU0f|O!||;Uk`g|GgxNF-++k?fI)IDY!w}`xgIEcY2nG+N;2aCqa6@%H9q?8!J`-%#mn2(R-!Io-D6E3C-(oydJCYcyDw}MMFAxhq+7a` zZYk;RmQLwTl?DOn?k?$W5RmRJ>25g0A?`-s|98JT_skh}aQMaEd)2envzG2HrV!0W zL4*lD6f|P-?~CL~H9q5Bd5i+n2fr#%r-uef+S~@QMh?U!8rL|OJb@Y6>AsKzgg*5I zBobde?2xWZDv1oa2|^+H3832Rv zw*+8N{0PjX5+?Cw5|+mh1St`o3^lo7A?i#6C%S9%J?H+M=0XqO*}-UutkQR5%jPJL5jZF`-DVG$PluHN~zkw+L=ERLAB@fD|kv1jn0~~ z@6fn)qa2kdKBfb5)V*8gJL7+u=P)Hmd`C~`w&&{XSsW_XtUy!YFHTndVL}Kb1=%e0 z^yIwsth~JBysYG`teoVW?NAhK3U4NHbtMU#{Y19i!dUYfq_ zg!k%3ZXdg%T-0qNvdhvNGVwc^kmNc1&#pZ@d0`FS8lW2}qN6J+G9$tYWyQ`xpTopx zvj0rx^yHzWG#N~Nn`4(Fl|ek}?Oxoxg?W~4^a_JKqMzK3voIfRj>~*!_szyui(AZ9 z#3X1B(CZwQSoiGA@w?f8969yG-h>zT!Q)XnK)X$UZtAmwlr^LcR)X_9Mamf@-tUAH zHHH`t!54wVPb)PdA~rcWK0f+tRYVXB`%940(9zLRRxh`oj-APlV|XIKMeteM<7w6T zdA-Mz#n~j-PTLGIMXE7N8$(AUzwG?7>@s3b#x1?8l+}g(v2Q%V#J0la@pM8$28i|{ zVFZ@N+%sw#>Xo`jFThlBD&Opv*O2D<%Jn zbEXH}8$?9K0J$e(M`t0^FZcc^-MoPa&j`>PsHoXRduB)2yOCy%FxxRFYLOSfasogys|RkRdzIm5+S1B!cT3S@iqP zM+g`^c{%n-P@Ylx=bdPDXGDn{7>{2PAphO9(E7l{wKA(%FGw;r$y{B{eqcJ^s=D0G za-5);^W2pVzqZo;7;#;qIVp6w~h$E^Q#mj19 zLMI^`VbA;9^$|uxG3mPP8J`NpPZG1sdjVbgtVi&;3+>qn86O)L7wP7xP>@s~mYI5E zog>md=G7!w^_*IP_6j2F{zCKq!oy;+FKO?<`mgw_y0tCY{@|B>Prnw01f+$h6*Xd6 zVqeHdQmwzIupeRPcOc?G7nN{`SFU^}^GwW@#=~ z=DeGV_O~#?iKFy(=%aV_W$GC}%9F%|I!AXmw`Mwakt#Sqi@Tm;kh&FU3P0K;lBA8 z1PvoWMJGa4dGbmTZa#_F7tF7-TEDt2{vM@y@8-c+OvRo=iG~}W$PIn&M8GsNHkC1J z&qkq^vP|mB)8Id_*wDIJOui=Cz0{m@(_jS4vh#~;xKGUOmDh@t<<-GLRdivno%UPw z+O|Jm(Q|ikrklTe@jx7B_%GKLyORh@->L(q!w{M`%X5~Dk zu{K^S)xswH)md!E?r1nLtcBD`eMNM9hJz5b%?s(qDth}}p(e~2qD_en?^=8%`B^4*(2b1#b}*-(AjzlR_Iz4(%~TFG_w zXwisC-B)4sMi2K~sMV^vbx>Ni*}>*=(LN9Jh}+C;>-cBoE=!5*bgoW{u#$#r*I=0@ z-qzjubgp))4xe<&3T$S6c2WSB13{nR*>>2sK1AmKd59*D9-_%E?&+st4?+3CPwf&c zFcTU8(u>G~w_0rZX=b|rYRqD+uoYVhb1|b0{@12mv!I)+-#O`vRduQJU1{&lygWEK z2OKub=!}eai#s0(5WdATTWFXWZOn8P@ts#ginWwTqBQ0>Jvc1{dWL>VVbZem((|1j zmUxGGZA(t~cD43rl_f=}GMry|kO@+q_C5b5=jMPMRBxYk(a95rzzvx7r{jR@rq()y zqQiIBn!GJnL}~`)VCGVB`U|m;y(DHx%rUV!bj%f~aPBxpwW=+(wJiaJgxQ&!00=6= z!GmY(9}2$-w%UnztVE|~!`zpvgYijG@7q1LPH;XFFb=>Eyynb(zJ1hbc&yV4~#C0OOCXoAes z*6cO6wexi`%~>(c1`nkaH64@7m?I`_U`b*Ke0Ah+;H zZ0DyZ+qh%#?O;b5y`ZcNq~8Zut^yzrc92qQBsm%k6KCsY_j@H7^Ot^9=tU^nP}JSa zjc1c~b{S%ob%hd3bvpTE0?7+E)71v>k}pq@2I=|n_{l+wr8(HcWKP?InfB-{*$w3w zx9(g%UMNxmPiQHL`GV(L-yd~QN~x)0O8HljnS#C}qqpU1$B#-L! zfrgP0j6&Fov50H%U~{sriEj&r(G}7t ze=XG4f9er{i`rP^JwMIhZT*h@hiGnCeBb0?+j40X(}ZcaX<-@Bc!|SS?ZQ#TZme53 z*Z$h$VdNfxBsgU`dSe|heC&%G+T{6FY#kH(_Rr?zZ`v*D zVA2;I%=ysyt|_>qqIT!p_BNx}F9b~oik}ziGMeq--9Yx&<|}3It~(i%1rS`HUF36) zHMu5!6{IRJ9?+Hy@mr(kbB*F@EED9h0NaWac`m^fFVuvOr4lguKvsV#Khzs!U^L8!&ocn|~W^prMM(d@i zroHHUHzk0WNkvnV*>tk@Fxyg2#V)%1%krcJ9bO;QLi47cll_EzscfvJSO~`m6jqFV zDBoL((tdTK7+bROf;CmxFKxaOnS{l7lgBoEq%imtk23t06&gSU??AM+R;M>~ep}3S zZ*kADI+Q%<4&iqx-`Ipb`k{l6fe3ZV*J<#&9Z9LAbVLd@E}pLdR~9Po?MF?kwsqHUl$f4HjIS}g6i`TgICG8hCJ`>TB z_G|!n>|e{(1^)`>{J>L9OK&R6!U6tCdb6aRv4;)Um*R;FEh)JA|SH zzj#QJoiE7T@Xni0ZTF_brV6rz_O<`YC1kLtVY3IVu9T^J@|or=iRr0-eHhT%-hx zKiWHchI9haUUECX1agMxwNz%mSf7+-JaBO^+tW7DR3YVbHW85q2a$5W-Vg2fY_u#< zwUJGg6B?db-_yl>>kE!LSZAkOV!`bmR&Qtk1j}r%tX_+oeVAzaJ`^pu$u2|O`kS*D zBW6I#ajR((!bcDuIypmBOn0WUxHu_)4 z#q$Mq;^~kfUL%}Qmsa&2YbCcW`bLNn*#om#iv1afSyAY8HL}R{LXtmvF zFR^I7ZSHw1Mo-B7nGN2$6=ldul)aeK{%|6ayr@o#a4~2u0-!kuLMz29}aR3 zsUStX#M}V)UdLIega{~~yrbPv9(-kw$8C?-n5bAopL)hYYPozQx%HV_4l3NEfi=d? zDhjkzTtSPp_X)_H{plw`$naK`R*2pW`L;hmv4|l{e7--&d%FAF_lJobDueDZB>sPr z?bc0EB&+QSA>I{Nx{5%yIR7qO{bR$NaKzz1=9}+0XRbO{DBADlNH*ZzS)i=g{%9R?i_)A@#ate(yNtea9X|Q& zI{LO8)tfE{4lm^qNFs^FzNL#rlJ+L{48*(?QG|s%$2soC3RO7rY|eNG=-2k=5CSeo zI6>3?K`6TS9Wsf7@pLSEuA9r=TxO|%thfX;42R$D#_~M&U1G85TKgAg6^vc8#Vnyi_nmI$(DpuM;$^XNzE6HL3pRw@#@6Bsl2zP zxd~{Vr4SfkLJ>0J=cg@*JZ#Qr1b_c(=xoeYJ`nazRH#*^m(X_I@4#zqHq{wjuG9qG z5QbMyczxU_IMdsq=Eo^!AOHNkgU_hN>|Npk!a5)^Q#POIE7*Df77V9mGOQ7(1!+1ohxyV_z3f%5iHT z$f5@&m&co?v~Yr%?P6!v7)2ddxOKa^!F!$A<>d)2N!eDACLy%ft$rd;sT$r*iAr!i3C#He zWKi{OOWMZjvWTRrZo!W&6C(dwLft?!!9??p}U;ZcIm2d$Ne73$> zcDdzW7$i#ZQJ#jK=Dt62!*mA8@|-Q_piodazdX9u;?<009@;%H{w=tIxzXVOLSk$s z=d>RhIYHSHH8o~;!4;FsCxBq4&IJVd(fpJkhlGchZf&Sn8XwI#7fz0Sabj56@Aj=s zg0uGezJk;M8mH;(&zv~F@^{8zsyoTcm#`-B30UT^t%IE4?9~8Iv6MHL4XM-k^9=Rj zQe#BaZwX0bkEyKuDfERFUTD4sT8sQMB~MBDi5vChMNaqA(7nX@nLDQ|B-tyCvqtvd zpioX#$H&M#LUpLfYU`@9IB|`Smp`b%t$g#>Y?4#j%&p1lnkcJiZiyDr`Oc5p(w|CH z6^gnC>h&Cu!;*B_04dG-mUpgfLw6^km(n7vCI%8YA2C(%N`;#qs&O&gw{q!ru8Y;r z@CaWn4g2$}mS{GvmeQ_hG=$ETHHLZXKRoP}+z_df#4+Bu%~aMB<~YBGGS1ir_Ubnm zy<|iS0?jL|4rbIZ4)DB5_IT>-XK&A-P7|D(yxv92;D<{t)&FFZ$!3t-hZ&npV4{iT zWO~^x{HnsKkn5n~QaHOr(Oru7Y=T)?ae7_j#WTSi!7STWO>_0>Sfp0oBMue#S|8jqlxP@r_=sk_ z<(P*&@oi0pHhG~$O*3|9U(H3M5vyOqhb^_(-!D}jI1P+an$27Fd{3zi%*;nmda%4D zd$3#vj%t>*evQj=5bV34kV`^Yx7Vt&se3)BV3QPjMohaK=o=4tIWdx&ZjaUROlrSp zV^P)=mpH9;b3*-KOo z6!`~c?c5%I%rw>}|GGEWqBA#4JwD5OCD@reG~>j*3Cu-o(xu6L_2N=z<4|MKo#`=S z(xpCj_a`RrE6>h=x~chv1}Aq6B25(vAd@4Oy0Y<^d3oN@iP4W?(<5U#4G+=4hd>Eu zoS4|q@KO1QPz9vNPKQAZWqYG1dofoMcJN_z;;73Q!{59heLj+ zvAOYSJihuM+@?~v zQOT65ZDmUxLEp76)Fs|KZqeC%ljW9kx(1Ki?ScPEnOcr9&-=I%?b4BmGaO_&s}NV5 zt+nfk-f%UT&70<{FwxJr&P=uz?TUFB->~y~xISIE4`5Ul1;_($t+S?rM{;p?Jn{Wv zd{P&vQnqUBa;76s;w{$I*BThR%foNFpReU& ze0wmT>eU@Pg~t%k>WRpD#Ym=+B zxx9(ojGVjv*k;!7D)xBMi%nn$66R+#94deq;i#)M?;V=2n-~q?&lE|~;GEnQlPuqk zkWQO_Z`_iZHM2myddSo`UICcu8fi(Kf?1K}@iW|yXnh$nfaE`@Avt))V2OWJT+pRA zQt7)oG*?O+Y%dt6W9ec_%f(-mR3Iu_yV5%HPnXdbw=3t26k+6J*_VzK$I}99m+si) zax$18Lw`3sxMIZ^#fW`0fx>y(gznm~e zY577%+=Zt(CtFjP6)qMMvcw^xd_hJ1o4eYv^V*X;RvN$ga6$UB zXJ_|%LWSi)Lt5@HzvVE*2WMKIONPZ3&6B*`LvC(tn)TDkaf)bha+K6n0rXaj+h+DP z4ePQhXQ?_*&$hf!e3V34*kO@4IKjE|1ff6Q*0C*PR}ZvQirr4kS(s7q7-@k z{;YkY?WlId?!sAKDF%dM+I(pu&VMJVjldAL!S8lWWaW|3%Eu-Nf}hSk$L~qfmesT6 zVAX9c*BgxpwV)2(<@FfQjXNX^ljJ<%fqvRA%9R;Y!pKAuBop}YOdx_xB$Bl@SBXkv zR|`b^LpbI&^o8{y>|srNo>Noow{C~8!BIDg9P{xmHZ>&Vb}mI$?T91dVg`{}>(U*F zhyXsq9XCCV>d-Uh3ZS!1i@=r#PuQWWQlfJp-gs2O9m_}FS|em`_+eRMzq(hLQ*liT zTCa)rb$?KVOsXq}^rx4IdffI_C+4OMba`&Sl*`Nfg&jGu_@BX35V}Eh}2-gF8eo`cQ`PP?$UMs^|Uj>?j**Y~prpr@leYk2g!b6JLudK=4 z+{9B_7<@=~fa|YEe>&kIIjERb#pFGo$*Gw8uulugJGsOLNyVKA6WH9(-F)j6v&K|X zZd4=eYi4+3|Bg6|TN9~w4OUfdG%y>Kzg3%XeZ{4qdP`(0EBFrtaA z7g&&^TQj-Ro6-xutr`U2tO8???yFE;R@Kf^>F;5;_G@K-!VpYHq-SVwzUC<`YW*tV zwt7b2djA~_%n-2ov^)$9qEV@GUcfYizr)eu#O1RlN(z5Rw3i3MncMwaZ%cK)Y@G;% zb|e=AU&*A^%maJxx!`-qkxSeVE zX${)9+Y8?U>>qQ}u-U@nce-A|aBA{$?b^{bKP&4oGB zN?W|G`>XEupRjP#oL84e-Kwg}q`r@s7I0$|*9t|<>D^0eyA~QYH#Vs;%vtPsOx3w8 zodj;P7P;By8(bL{y9v>k!=n%~pdpw^WojtkUfp3jYAOVy(Rf_^ z-Wf0Whh)O=P8?>vfT3V$#}3=#vFaF4f%#$#J?($N*kN4&ftXR>wI;F{Pk9(fT3{x9 zHnrlsZA@#?uE{NkGBq`0T=eea&c+Jp!7?|$z`yCLQr_F+-`J~{#60BMoo-AE%XsC} zI|kZM{@Gse-p{ViD`j`7zvQeH*~Z3(5b%a&=HFSwvBz&+M#TwVR&7iC25pjzh^QiCPain#UT}zlWtzxxJ2|M|u_*T=d%Ihr5H&sBW2xv5_xuxd#b9 zdaJO4xGc=fDrd90zvtD;1W!~;QVWX3#;K6g`+oe3AT|1R_4G`ioffNCI`4B&nw!DM z)wi76hl#P<%o+bZ*;aQ$v{AeLKJ>GaNaDrb=Pc`_x0s)S6u{KnG3IA0IFCU;n=gU>l(2h1{TuHzxVl_9{%|nRTX>hne^?N9r8_U!ce!Aqg zCg3P-yxV=peBL~8qEIFnEtt1Ts=q@3IW8KI+0y*?W?h9+{+58$0)T%aB0)93Nigw& zH1W~+W06Xiq;R8R@r5kco60082|DAC_$#Zb?CaKFZIl$bL-75$3g%YdVXHj-+E_Dn zNN(S{b6Dv`QDt=N0+O5de7fmMNO(70%So3^6Q$^;_h-M0XZ8qn>Et>Yau70_OkVki z-T!y;K7Z1rOb_#g!_+W#Qh%o!n*4NU2zZ(8hVQWkbRqj@x0$-RjhFl57vm%jlutj) zYR!~Ly4MUPpGba)`vlg+|D6pF>8{yK3f`n$eN?V-gq99Xoa(D*i}fGSe?0rjjE(K@ zD;3KYlGDFpgM;Kd68vUwI}9QdjzZ7ubYQ%`5OYZE_+zuFkZy?84k`Vg18kZV*4qCZ z7{T3H+Ou|Ykm?yZi=831*g_;IrjMQV?%LdOl&>)XUt!sml@tKoAJt z+2k_>47Sa8i@F7q5fW({ZSc$W^d%h9Ird8;u$NtSCD8o?6~C|@!|=%|HcT-HdY+x< zpK(nwJVyAuuMvEsC}n{{IdO+r>T(+u`^bLy^dLY=pxt2q#8I9h=40{$<^7?wciNZG zJvIx|K=6bb*#09B0(iwu1{sg*h2fdHVB-GhmkEL-iZrwc-!iEL3qYwRD-&xT_fAg% zF*oyym*MW2F9~{HA~v>JS-c>o;;&CrN+QGBmhOlT=%q(d8#&L1=VYCKG(`Bmr{o)O z{c{O0&qrmS@+bjs{K1Omil!*fi&nvyqPp7pzGxyD65j&7 zurH*SKV^uW?Qw>DgG0#y5A74W_LPEo9}?Oc$5>YF%yQ=z>9g5$T!i52y0f-c1aMnK zWV-Dkh1!nnfYXZC=$C~5dtQ)-NpGS1<(ZnYtd)2V#QN(ao@l`l2EBs2x`K<2#USGL zvROloVm(LZ5p?6ce#Vp`HN}VKdwT7YACIRRT*>?t_FL?bW^t*tm^0M}JR~6xiq7fD zyEJ=t^w+D+U0x{;4m8ny65sMk10}u{lg3OwyQbPV_LDNUH2MsvL7hwuibYtF#3;8X znlk1U%9M@0%v<(2QiQNu@346&qJs1gNcvBr@?`H14Q`Zwtz{K4Avr6ou_n!iTOlCR z33n3!Wb1M1xdaL@@)?_DbUd`9zC*FVMtn&e8JkLA(%bcYp=e)G$)Ls2{29WMJZQUv zyE>PHr<*U}%r$aaSVXhdVb!%%&k)!9^!BNDDkLf=hjlUIOT!;KSN&y}@}pLFzsgz5 z5{=SG497paUE`Ffm1@OBFA`ox7Ul+;eo2w!7` zW^Vd@_c9@;{8iYJma6;dIV;z<@wJr}-Rc2?VxNgxc_AZl9kXuc%UAaQ?PlWRZnE0j zE@Q1LX$} zCeM(Ieill3;d)>HIsEqB!PE2Zr?yZFF3UvwD30~pd2`t6F8#{E0bL8J-e0y99nX=- zSl%_-F>^68_WYU|5ZGIOUhqu3k6J%#7L(N1DYemTZ9Oxa>RWbnAene@ zI$BW1Vi6{mp$V?KTKMhCRxP78NtC}Xj}Kaf)3)W>J_Pb*-S!{T>cxSQt{wn*O1y=_hE zXIl?VAC#sC4y3#9LO4%q-5Gg8^>(4&)av0s->GW}<-z=?F^wNnf`e@`1CtZ7;at@4Gw!^o8Oq?$$JTxqf!|O0wm}29l$kfnJ0n1U<;!E2J!hY$tvVA5AH zDoQpsgLb|n)64fGJ*^f8=m{Kx2qN8l99LUM2pRVRi=XLBK!XK;J?w5_1U*ojZH0ro zQ?5plYkbJXWv#oIU1_1=gcCC8HH{3)kl9b@uQ{lTXbBHBKM^pA{jE^H=&kb}{hdSW zljF1(_o$yo`pT}ZuH1A|SuG%8o_QMd$S~F+OMFGglUaPN+K-r3dIDJvdAR=JvN!hK zxtT|`Aj!nkyFEkex!$RcDFIlC7bQ7bG}7MJbbFKi16ae^B7T;@HC`H>m)t*GDJd$_ zWtJ*XqTunwC&2OI=UTOzDT!Pq<2Yv3Q z7FNs(j&y8-?Rrmo8N8yV)t@6h)@gwcU$Jc#{7;SQ%+x1k4e7;EcL7@kp@{+*qgr!~)o3{B^jgdNKq0@YInCoH&x zj{)76Z~~x=8#-~Mn8S5&#%v+@TQD#Py?R|wpg9cC z{39+7K$>q~i9}-fkzfYUj!nJU**OtO)XMPxAf%XHKs|zX;)m;j{OZgn=2g;H;^++p zGe0Q}hA0)WoDHKfiG(TziWorL3khDIjKTJ^!S8%UfrfB?fsBld#GMeIFvA(2pt*~O zJ=QoG`GFV%3K!@Jn=6&1-q^ge37Wjor}nR%a5vT!%q0bT-s;)o!OUg!tuFM4s&Je` zKlYCW9nvBHc5%T0zBjO=#E;@6hX_>U=P$Nf43?=MKc2fn`OqJwC>=d)&HrOJ_!6c% zqUIMDQ!&u=_4k7+`y2%`Gh0193H=Hs(g-m_g&-}4JT#F)w%%?gpu#$+f>$j9nUK&; z%~v_Hj6-Q;$pouYsZ8Fh(-D?Js-q_-U%FmcsK!aW5_zQR_K6FsQ%6N$s53--0y#rJ zJ?u<0e>Bh}TF(+wl57kk2=x1?suIzF)6htS^Cy+2_w*Fv_4MS^9mzaefLD@rAD8wn z>9%dkZ7wL)#j;1-=0g6^h*p0<875YHmcHWvZ>DB`MU7r-W!Vz=f4?uxkYSSBxm17x zHB34Q58?8}cWZOwrR++>_tfHOIgtv%WH|~!yPwn(zRS^AbfY~ZiRv{^BWJ;UpYU*J zf?>kM!g7Bnt|=ts%Z!~!DvjSGlBhA*lu%RP< zla!Rj#6{sZFzG`&iyS}Dohy4vDHAMpI)6E zG7=}0)huzAdk#}2QuvyZhjM8Z90!ZJBo(D-eph^VelAk3_xcxwia``KV)GEB$ zj1c5MHg&)l!Bl+#+aCZQ$8nxw`DshYIo3bNm%!jeB$tr)v9tqx{@o0_@fkBm(|NwV zQ^wjO*#aiL_sXOFVLplU8*$`o-G%V5z%V3!JJVrM`5rHon-vvO8{RrYNn9pbRujgs z==ua^P*6T%-uPJ9jUjC~n_D7_EP$Z$6pCR|@&9=#rWq~f;iZDhdr)x?Ds~)^;5z@A z;)(bZ5V|hlPYT^!W|2C5UKWnb&dI5MybF7q=DxMbk(jd%%m)MVrJ1y|E2mPwJe+;D zGMT3TmwE9w+W3MCE^NwN3=6-g#o9o}uWkBC;IRN3hQ52`cilst57e6rn}jS%+`!;a zR8$0Ts|M1}3>+O}GBV0TiUJBd3mWs{yYxp>uwdla&4!BNJrN0@-bK?p1e!+$3DIQ+ zq-$YrZ2yG{|K03+vQM30%EU2x3VhAiMI~TVS$zEc^Cjgj83YyqOUiFmUC_h9@ak?m zFx0z*nm&OR4S|5W5deG*aDFa9cP>19j|=!f8gtsXM;RhzspWqw>>T@%WL=rsS(Xa| z_5bhWKGrvVh8y~%af2*|%>Vq6PGX9xMi&bnJfx`SN_?3FOpR0Mu+j|&d*ys{)qT-A zZDqYnG^4Dlns(R(Vi*vY$8F@Et9#{?oZm@>T#2eHFTHc&_*ZzEt^)#uxz|NszB2yY zrxABA{JbOlckN30#>VFC2CllR*sH7U+nByTUh6HVEqj{o!tTSM8}b^8gNa#j+%zOU z1Zu;&Qv2A-0LBG5T0%fGbGld3^izb}CD|jPB%QZtajB|U3bL(NRoJ}qP1jgSS$TI4 zuc6-kZhmQ^GpWl8&td__G^>#8`73X4>y3v5$2gM5i-T0BNU1*WN5<@bAi@L+xO&nz zz1Vx$C~G1oJWi}mn}%_4+w?TKeEIPurN1smvAOllWjFt$Ufe=VPS)nirpFr-$ZH?|k2_5buxR%po#W!rqu@^EWWLj7}a57RTk{RGwM z)4I#dO1f0IMRiCP9IuM1$x+;0i~`#X^fJGsq=ls9 z-f%#uAOc`Tbo099@7lPnAM5yOS(%y^yNT)Ur8xSm@1wFiCLI$vzG z^1(TlLafOZt_Ajij}ZDT8&G(|J$jTV5bgN_7b<}gA_Yt1q%TD*5?XEp$WGC$%scY!i;!h#_rRV!7Ves&ijH^+>?~BHTXXX*L{@m$Q4E)$H1hZt7;@<^QyPHTwnRWXsMK zX#GDvMO1w)H4X?-d83~pPbgGBI44s`azcTa8;C+m)T@1a4Y|1L^XHO)H@dUE3zXuQSjs_}hLd?4Ox=mQxK7Kjn2WZF z#bEY0DC12}aR1MwRKo%LrJ@dx6gJ&<<(pK33xEvTJYo*H^$ zVKIpR#6{D#Z!M`c6azcn8F~#Pnk9Yci0QqH`dN~ax%PkhR^xH;iw2qm6SVaD7T3b= zT5=u_+ZRX?u)7uSXR`uE0p%Ke&$e#Ww6%>seOlk$EZDW#JzN>ouiP0z{1COl*X(XG zIPF%Wqn&4MVt3`xV-_|xfQ2)P)p%c*HFzNOSW5FnQH2g#&U2$9Dm& zq8vQngGsw90+06i-1eVNZ)LwPw>;7M{{=LIEocI0pp`Tap{|h7gx$%Ld?CO{Ky?~s zy*yldIB-jzRk64`=~1-+`sQN)zwBN<_oFH(7OH*qsDoWxb(dxS5{O{_uu4&kcTIMJ z$#%EdM`(hN?DB{eU@Cv=@YUMh9U;MG{U6=KPy8E@`Xa{p!a}Ys7W)9nDK;*S#Fvh) z1P&SJdT@d$!}z5JzBtud*iR{r#?kTzjM^1@CZs%Wd1mqVy2iq~2)AAq^UaSd0aJzh z_&`!Ued_at_G2YNe|1y(CJ-HZ`VxL3wwEN)adBrHY#%3A&VOg{zVz!D8Bx3V(E_aY zY}cLkfix=MjhJjYgK8SYxcjBi?wZUd9xfXFqr;MiWDbw@bt8Mk{;6il<99`|n0_Tm zazIn=q0SG2j9}QA&Z_LsQI-QkhI`+C0%8jLcxc&@{=5oDVZ6Mtdl5qWFDe|N^7rrN zb-z5AZDbV8Z)(~%^H>1(cKdhWBrTR?&g%%Vgq!`!|J4GFPc9Z&$OVGqH`p06xS2l` z9ESAZ+8w>aKX_-m*_5bZE*3s=5|tZv+qA5j1+U#g*k#xu%02Sb4!z^(^DT;=+VFEq z$71crN0bCn!Jv&2Zlp#X9wk?d^lk~~9}qD}f`$N`K*ij_1^Z*A z+mQXrxQ^Th7FA+2%cVL1?l0nV;i6nuZ5`2KE;iV1T)qiufV+%;XK{~bA#-t#RCCCc z4A^2|&Y!i^&maAw9!u=hCnB^?dU)nkIGUkEjJvXFbD_>Vn{BM~%?h8H^&`*iNMR=tj9;8M8StpIi z!rGm}>Le?_o|G1w5Ml&8ym@EjLqm(ShzLk`dw#wRW=M`4mC9XBKDcdsz$g)iU4N8> z#B_;zi{;6}-ZaA$em0fxkL*aYBC*pyE1rC*PT-5GZ;&nFCrskKCTltjgU(x%XVH^s zUcW0Fbla+`Yn(mj%u;q_T4s6OVV6^(RZuKPQzTZANcQHiWaT+S~ z+kAnD6=xRV#5f`zN~+*&DsqumWFo|o>2mV&qZwK796UPYX{9SGK2*W!`EyZ9W_xhR zgkPEH!n;(WC6-W_Oy>qtBVV({K@})Gp_4Q(@i^D8e1Bv(_VncBSfjdVXep>Er|A5+ z%Fizo%MOwc{JMsORCLX(*O9+Z{sOH7qM~E>XKLg%MW;3Q zr)OsmnwR=eb6My~?B>5mR^>rFDeArW&_Q${Gw~jv32!L)ZVhM2{|QSv{i72PWg2Mc z-(oD?cOqbeH>uc`dCcfl@faAOfBkU9!O-0`nKkqTz*1X=CZ2Qb@trFT4er67Pn){D z3no|l=7NP5TTiHt*6x~T3kXr(&IwK3#s!Z^BCwH zMFv`Fy>}vAp7ZxxlR`3B;|Td$`7Swhjs2&#$N6zfYU=%;4BaMq39ILQg{N0h-aM^k zBE#L4M}>Wn^TOZ*n@-`O%#09>byv zK5uDGUa7$+HPX0NUU6xXiqNsYJjtJD)ddu${W*e!hy*q&E{ag3>xqodWkBl5b-WzP*1F%s;cruz|Zd^6|vii}bk!atT; zV@*ww>nv0DOCqLLr~PLX4E}!z=Ae^7ml(duv*9_>zi`eUpWkA#dv8b~r>EMjW_dMX zR)Z(UfQ1l>hl7S)Wz=Jlgl}~R9VSOKDI#q1#*6A*x2fZQsMy|np=i_8vUvf2d2qWm z5dr9}CLQ`{A==WBlVs{5Xp_$h3InN84A(k(1W$EM7J@SZ>D>to}YAYD|%h)Z}j z`tNgi`1>%sAmO_oB^v7~40JXl21l)dy>cdiFso)ylYX5HXewSG2>(jpBYOy)5%sf z{3VR7Mp;=|{_^nS65`&x_n$O8=azT(;vSZ~tgJZ-1xm4ZTt|81d13b_(@qR=J%;a< zL!{o2sS8jQAyj-Lril@D6XEP>%g>W-lMM3h$7 zoja`?>r!R5urq8ahR2lDD0}JtLe)=2%ElA))=Fm^bDJR`;Jvf$?J7b=KWOI!fYbtiwY^ z&yWdUvA78LFCm!nAoVP}wCT!3+9@!|6Z`(~?Vm2+y&^j?(l78;)L}4Wx}u{XGHKE# zk27rX@VLD^-#!CK=b{(ir&Y)(W}PH+D&-=_A7)$R{}bEH{eA3bLx!4;IJdi-0(r8n zon<$KWVb}_mjqK27Y|Qv4dD^Q5!`*!-z#GX*k+Q}m1u}o|K!>gEOIQ>sCKlNZ0O?U znrOI8t$T&0WZ3(W_ysL@EB}~oA687ppEoY8seGPRhrE}`m(rf89X2jTZxSkvh#b7v>X9 z1~w55#bY!cUw7G03zmP2Iw#9(6?3PLBg74@mt*@QZO(XUON(TN4K8e7IwS7m)g<8> zPt(=K(o1Ueb!yuS%Pb9jzLEbM5SxQAJ_BNk#&X*=OHd%oIDh?2{%<@i5iy)vH)U=5 z*}%fU;(?8umUPut#%ao5h;krVTkR>y< z%NC`vY%_a`O14{t^vE}Se8-jcjrYbsr3)TWFBn$k&sPNqA4&y&|K6hw0A2RZO0@GI z|L6F+$>UX2L@Mq`jgN3aB-I<&mwtj-quS<6@3LKc(9GA`Q&UtLp^!!?%|d}ZM$p|j6y$}lMaZj=ru1m5kZsv`9VUlkjxqev~TJ9L!Ev zx=P{_@K3krjiG%`6?_$!_CUq%eAdFmpLT;c1xng}DQ(e+?#~{qvX^^hsZ1P77lBLt zVQvebkee_2{!FIi=2z-`#-#b*jgT{9Nan8oyyt(ux|-)&&zP+cr0|t9Th4Prqr`xj zzx4-U5?hJ;+o5r@u%}Q|1A$HSROxIxbT5tvEPAB0*;`n@=M{n z%|`2w9`k^gY7yk;_n!5h0gVqHQ4^}ijAhw+qGoP*E1aA}9_5*EF$T|Vf*V}i>=vN# zPa=G9%OGeUj9w5d(DOdkNky!*nn>M!)ZuBuS>&^J>XnC{8mNTwtr5fS^XHD0B)<4T z($J>SC1!`NsBMkdgGyfcUM2@PA4ZHx>-};2Uzdb~no4>PY1jO6y6j1)q46M}@i10@ z+`qM&$~$UaZ3J%s*vM%08fOjZ#3gkzy}!kN8>>pLhM(TdWmE+g2_S}zB>*4+JVAcF z9F5;xfxuP-yEk4+8lknNcKF{%BNES4qQJnwD4GnNtIFe&)XtDE>f)S5{i)^Raxey{ zb%`~5Vvd=GSaa0}J&S6^Dm`L36qZiBgyH$omTYvkjM8qf*)tQsl(jt5tf9{A41PSML z1F|{8cwvLtc)Cpc{)a&wO7qzTF|*DKItZ+YTklg-TbCfr8+ zo_Qdx7uJV;=W;fc-G*FEn!O=H6vFKnt*a*-uTbn|&=oCF`8Jo3Q--MOc)ZDP!qh)+qGxJMAj_g*PY6Bq0^8+x$=>K={$n=Jy{=a0 zzGQmLV0ehkSgOGO`Dj?{(XKXM^8&#!K5Oyxfc)bZ2Ys)PNVFS-Gg)~s&YcFL;(;vM zMnDP>#qNQqO&F^w>JeWN@O?zmi`qa1c@^&p+=Qdv}@j}^U4O{+4^!4&SQ%ap+ zuhv|HHk{jEo)eUZ03%(dJo8ib+qW|Xrlm*H2CQ7$PVz=WcHiKFKjKP94w{E>SYgS-pGZ`^2@-|$PT;MMGgp31 zUJgFWIN6Pgj3{UrAX3pVLMu5cVOFW)kesdqCcJe$_j}NPJ}WkGrWoPo z2rXNm*_rbnu5Q2JrBe2q6UdT0Z!NtfG_jiUFzmJ|1QIC~MZ3OUyU=qlOy}_NwNu@t zKclX01Ybjcvc{&{@ZgDhghF<-@9-Y(uKS{zZ{k=iHui2kt`$Ao8v{-1I$7N_?+*}m zW@f$N4N%urY`}a3*J~H@6FY#O+jll8Ct8rK!Q*IZa=5)vyY9y!mAY3-lOgwr&HVQ6 z%JQn&j#7Wu+~CYu%8A*P2lk32D~!@4gEGC=Ga3^s851k|f@-7TIX;?fVcUnMS;6Yl z<74ydH;4}q-V>kALUr@iit|E{Kw0ndcsJ;tZ2uD}5BI?eb(4Dy7iF`x>R552^-!?d ztEH}gcP6gRC_K|9`0w>Kaqt>nrQJeLee$J3w%8F)ooHC@+5*E{_UPs18E$90@j}#a z%L{2;S_WvOm(z7hWCW-j!fAG4!8xX-AnBd0?jJ6E-9GO%Hr**9u48{);-5cz%ifT}Tj_Sw zBPYpw_0xp$x>#11cJz&M)A2DX9>2P(fmEp=s%*}A*Sld@@J=8E6H zZytOZ9hTo68vaB*gvZQLK6g}=F_rgnJPlM+Us;oMq;`3j7FgJjsq5{=D$pK4 zB88J{j?B)s%Io%p+wIFn|H~E0C31=sfm&QgxXer`bw4?YK=7AZ*H(RGu}sEU*E7=n z{F+SXQDZ>hukMy*?gU$CrFEze6`sZe99i!#bQ;9#2}#!$C$kisH_Y8p|32e3Bu`<5MJKXxbRWUM4Zza9z6y_?QKUJN9y!0BE@il1s@V(=dlGZ9F`ri5ih@L9egkSplKtD( zZ#jmX3{=T;T9lVjB($%2Ij)C(dP)agkGx&3>E|$=jfmU79PpX-BAH9PfFHFd&+uLI zI38?aZZEHXxT+lvlvL<2WDfreR8F1Og}aVZ#;)NKRWI-WA1K3o+ORc;fraf24$bs- z>p#H7^*A|QK`ce;y*Gp9p85Ev2RDiBimnfCH*_Ub<-a2nhSI+xTkf00vd9PBT^QnR)5p!hk5n_o$p#BCW87x1dYtFsmRmshgaa3xg#=A9!3I^t$QcO7+-8K z`gY+moLC9!wPzu0oS7pG)!+5N92Q#<%I-~9IrKocWVG3tp?M!uP$b9mu51NccD9~F z3%6X4%&@r3CT$)nmSVhvD5R-@#HshRwl=HdCOvU~i<-x1&_ z;3%!=m64pR{!A4rin=MVEF{h^f4qcjhiJX^Vrx!?)F^GaFGE~qZU-2G*J#b7ZvZLU zTwArqE5c3L2n4@{mP!JxfhbrFKy(Vkp_qabTGmS{I|NX3PS++Trqp*;E{E&Akzy1n z{NKM^nr`%iL(K4aFR#Q`S7Vgg!Py5>-X#rqkIwn%XEfs2_d`Ka*}Z|hVlW_Zt8Io8 z2oYdB={q59Cm-E(V;lB|RWxleysuhu4LoXP}gdr*xBj)*{kWtg)a*b#O zb>*`|{-WVv&q?7M#VDR5>jky;mKnR{nbzJZXWAd%FbcF)n)uK?+&OhBZ@Sa4gfjar z@Mn@OOpljWM~ieOq`9UPA}3JvdT1Td$fU(%jt3f?TVG)xUKkGD1HNKikraUexSsU zcX)t$y4;nE1EI6QERFakosX5rKjGUN*ZCVOA)vP5``I8%Bo+#pP)6^d4JmxPueZxd zUvKRP0V(bgjTZdj?a`HUx2etE)V`xq%V9%br7LIlwpyy4O*9_=R%Rw=p|*hMaxQbE zWzwcHB`EA;xxO?#&>njYzd8h^f8laVTkY`r^EFSwj)~M5km43yt5j}KzB6bt{d;mn zX6eRM!k-)z%i%u4QB{P$Zq=Slb>A}#oD8gdc+~$^OZ!KBM7?Y4q7brE_NaM5ntXdb zqFZ>vtCF(cJgWXhTuDGTLwCn`$*3-YNy{lqJPj&w0n~R`BAB}64WehUo8G|Lqo}9y zX2jE}S12Su$w0>DpRnVOV@pW?FbWT_F*g!=a$(Y*@i3@Tj<(KzcRA)_m~J}AI`dbu z{g3Y>)fGsuJ8y$7%&+hLiWOt^n?c%rFTI=EwS^O=>W zmOI(cPO`VPHv8vlsR0FQH!w=M;|~|A4on;f^u*Qu=v|HSVg*VO1!zjgul8G>0aP*l zvX+1DH6=G5TLPhOW5#pfg;744G&r9~V_ntcctUu75b*8WUL1Onx;x~fJb5Hou(^;OhJqgJWCb#u)5{nao zSXVSs#s22$#*U9?Pk_|AG#gKC@(obliG>*aHRi=X$bqaW><0GIzA!0ID2wki^axlm zhfYHa94*JUS5LZu2AE7dlhUk7#~Bensnx8|aXFqDU-Ek8S7FwiGdKH?m327#8Q65P zqcO0sl!SD%8uv_9?M;|SBFcH_=*%3M?tPtW@F)CcJ{K$k7;pUgbo%>_CWl|a%>3+c z_EGg;tMa+ZH}8n~^ zFY9-F+nBT&-sTrX)T^K`W@wZXmjq5UGF5Df|SJT=@Iu}x$Ov`0hB4nt%|OI8Uj3}ZGu9zk}#!XRy2 z`0Ou;oaA#Ak`^O~B0lw_5=;xaZ5-)I>dZSXB(c$b=j#5+7E+iAk-6O9 zfY%!z{8jh+F$ZbGi026uE$rRH9kZEnm`u%7l_J7FTKC-B^$845Ix(9{+LQzH!V2Q7 zj*pW&Pq+DRJJZrh-n9`vVE~ToSfszz6aG_&|7C(wBZ@ zEfMO=+MM9mdf)p%R_qJbB%U0+d~*2md&}2{@uEUt82F}a8l&|dg`?)U=zE2TKF{!2-A?@cTUIm}GIB>8e0e}jLS+Ddl)o(t3az(008f=jZ z1tA0e(X?MOzXnaoIl6y#&tf}GRHdNCTF4!^RcRp>MEj&iJ3gL{rO(gMnbRS%S6^ji zQ|rBfw$b8HzkaFgGw zJi!foNfHxdD4RIt3ZD8Bl5PzJ_02JIcfO=~gO&#I-Iwz_(`1#Pe%A?|9L2I$cMRyt^uy*v4Qd;Vy##8|6;AR37cSjZ;UjuH0VU6vaLdpL26FLXF*H zaHeVzX2P3-(&%b9!AIq3M>{(|rcUJ=_z2gU@5I>D6RWS>fUP|GSF2=%TV&tXgY9=0 zgL99qwcGaTiL&nb$jm7wrd#!<-sEiT@A4y0R=9h#g66F>!U`R2hu7x|ch|+OAXc0> zTP{J4V9^|}z$@ovDn3*g^DJborDW^R^00A!J+v(0O@G$&bmeT}9{u7d2_pw3;q~+9 z;Dizq7R%$J=LS35lJL)0`?s^;S9k{(Y29NDP??-jQx#eKE0)EGj=zT>#N{#dC?QT0 z=VNPCJpSNd78uG6D;?KJZV;O9Jd>@nm);2x9|yA@X#dmUk0-l<`Wn%%$0O{1C*jm z{+oOWO8s&T=_iAsG!fsRRyt51@f*XM4BDlwXDbkQ;AbZqb#^FZf35}w$t82ooE+hY z7od>0pyJVrSMn(Ic|roJbnn)^7OVIg(RI4GAtcywe8QVYoa|_lG{XnpciQRojjC{N z!8_UAxy#MTNJKYhPfp`S6GB`B1aqRhp{22^>v&`Y*d(qFdJw^;{O>*MseaO#nuK_2 zgm@jJ1VIvHDl|9&VUDKjb9o+OZsP$;nZ8WKu`;+NlY$(H{rdUZRZSx!AxxMG*rNGS zFg5nCtt;ivW(6UNin$Eg3hBzAbaeE$^b3V-VfyE5;*>AIcf|Mf7ePwoF%qv|6mzL3 z&_sU&7of^CJw44RVk*-->Z3MyA8)36LHdIU^XVf&e%;13)bp=!nR?9_W!h-JAB5wK z+EosHgPj*Opin(JenfJ#%gv^UP>L-y4I=RJs;v{^_k$l6=$RFBnWFjs^x`?@Qg6-u zVsd%^g!@He+Y+js5sSZ+ic^2OP9xK#xcF=8)R^b1+Ba>o7bjPGHBQ!|cQCvzZ-qA_ zA}3SFZl3x}r41?o(kFON5;;wJ0}Oat56CizPUB}a?Xh%abxt*XB>cyZK8Qh7!~`k{ zug-lsW=df53xXV)9s0JCJtU4mZ0qs;9-W(I5lM)jFzUpw(CeKp59u@no?GDzW9)|X zZS`Ch^lAb_8TpUpi}ro|?s!;~^anQ(V@6G|yLX5)w&Hy%-MggQ;7WWp)LPyo7V_*4U@eg@hda0)LWQ_Cqjr_7 z2`x5e485mz{79;}oD1BGuZ5xE`ND6c z5eZA4*&m%+>}D@@Uu_F~`ZgVCVWJdtX)>F*uSjf6ysXY6pS;4FJ(8zfuE79^Lje#A z5M;V~A2!6ZT{VDi8pXlI_J`Gg+WEM+xudj5OE(Q?;&!kXf<1Xwk}34;$%+ENQ3(sQ zPU532DI;KZi-`52EAY`1v~-vlx&U(&ZmBI`I5k62Y_>O>V77kj;xZY3#*|!RcN|V9 z27l#;w;!VU$Zg5*SYPt=LfmJ{=_n`ge68_8sCJ7YvfnJTe43GId7ug z7R*UMAwxN^#dgsFM3D#%!P{g^wZTnEg)yuwaPz`2@At$?yaZ$cQf-SO-SwM;Yopz9 z6;5F+<<)Zev~t;CDI2?M>fahpL6sT7}XY|>QW&kdtMBrNCz9U#^-r>rJC(7 zUheLmJWNA*+}Rb0Z+|vdVFq?nV|#2-oAm5Lo*z6r!|8D}(-nqH*_<&7e-zYx{aWL~ zd6+h6db0h<4>K)Z1Ya9Py0>&#p=4OWG6}BP1Q*Knr)u~H(1mzo;h4Wil~v0%WapsNrq& z7A+nPCv7;IGx1L!^5`Ch|^vn0@dc2v+|$7Z0%S9v2~fu+);Bn zy2M{Uc8PhApw@(@hAniHQjD?8ar8Kuc>-wY9tlREOk1UETI^A!UEtV1-%W#?c)F6x z<{RL7kk%<)s2P(^5kOn-GTyPQ`_%-5qicqG-uu zhVx00!&5EVbK|eRP~HcIY1)k5)@p6ST=1@VcKt)klWRWy88ZDoYCbDq7pjplmUOZ8 zX~ee%r{Z)rAhhjk=IDnvu_o#D#dZ!ub!^fUej=FwYr~k_r}y@h2_E0P@W^>%ZbbNa zw=O1TEG7n9#BdUT_M!LA?(MP1*9$RLB&vokcR43o=y;w8E671>iPB6Qp03tvEnFsVlGlHTb*L7XR zMoiCOQTK}WrNLV~8JUx$q|FU}mJJ63p4qq)SPd?-sOWQ-sxyidDb(b?c{?M5P_29w zQ#QL$QNR-@+;z@@&vid(_LqB7SSFo&5|nG?D?}%3iBYq0B%hAQoYah83qIj?I`K(N zP z@fH{E4Kt%C31CTa>LvarMFciyJRtH#hgrxvN1D_lESab9Sm6ZFi3A zSAJD~-9S$*jV{5}c@u~LUDF6m76kCCfYs3JQ~wktu^ZJ6H`AA=L@P zpR>`foQzV~VWm8VyMH%Xc<-1rWp?Nn;dN8&b)J`cXOW4PF8=*mKHMfy?X)o~Nrc$U zjOt|ut7*8E0(vR)Y{%V3pc-3-v+s6cvsgePnW=m=JLP$5gXtNpk3^?ByxRCOT7lZX z3`ipQzLWlUt?Fh(}gN|YAT|>8i%n%2&AE{D;Msp z@ZF4o%j9}&ZqDC4K$pLl7NPL#Hk@orzJ2`$`)O5P9H#y! z(~k2-!DZlpBa5tahS7##NUTc3UEdSxdnI6O{SsRayAQBTP zwC~p-xJs5uWZB-zT!8wM4_oxVPOaXfj*y)k8qLzuYS6r zCKFnddFEy?PNk8*x*PLGz4(l$_lnSQXmgl3YfIN_+w04T{$#oWBE?)1gBvM0BK>3{ z6-4@CR#)GuThfVTW?1n$-8lUj7^yW}im=D!+{1Lg-JipiC6%zVLv!H+^-yKu-i>gk z%&??VpdtC|J-IpQ6!R~gdk0`37S-Uuu{d_p6ZNNd+mb5S$Y^hZ=9l!Do_t*TCArPvE5%BR-*>8!dnnfiohwb zCGs`O45Kx2l`YB>yx`Jo!W7XTZ)Po@kkuihYggJqG;+!OvdS(;pOv>`>}hhaMq!q? z?!j)YcrgV>G^9JzF*7l4E}MFD`3!EWI$C}%v6wmte*93+*3s>QIpj7_V_A#6zI2wkY=|ye6Lz zSs^){BU0iue@YmO`oX3bBR7XbCeO2zFe|tRd^6o@+L`D24F6us8+9cse+S8NWPZ!9 zMN*TowgrsKC2Jo11Fw{T;6#;{@qWE}JpP7Rp-vm7U@hUr6BzVB9=J(uN=v1Me|xL! z%uOG4<1!-!1n`mcAA3;`e^3tME8#g@pBhWkB)YCqOin-5Ec?_pCcUNMu*>0b zC#9mqRRC#VV>;_MSkr`l2qi)Iwfh(K906N@aa~=&bRyC>*ecO!k-)%<8q7KqZnBJ* zO>z{bzLAx|$-n=OoaCgQ4VM40E3o@ z7Pm8{_heLk^C?JU-YCU2FQ1aO&kV9J$qo~W|293|Pdw9WY#)<9@&0aSaXti6koTEz zV#lv*j8LFqf8Nze-TfZHTjTZ4Ml^4t;B0l+!8Uu)CMdEpVXLSC-FemNQbX%dW<6Y5 zP4#+rWy)-+Tw|xFDwwafD2NWYm=V(zyx|iUkGLzg9R)07Bvd~Br$O?ii=9LZF>dH( z&c^&>C6jFXb%)CU=^D$OZ3B{7U3QlcPt{8va=OY*HDMsE+@suw=QkPdR=&` z$$#J<4dRb%nOHk&*ojPxo~)LhU){OdaJW7MY_ZY|X8@iD)la*;$7{H2%`6b>doT{d zFJrf>&B4(Xp*%t;MqE*ZsEHhL=5EfK0(=0L+1tyII#u^(<@?5+mk#7ei7V40ZUk#eVS6W*U3=!JKh;SN2z=j z`Q$AM?2j#8H}%HunK(e-f%ET{sHEy#ugvV>2s!ou%@FDbhJ(z0b4s03b<V0Z_dXUeM+CbT2(vtuUhi&ZH7 zkgPBjoN|qm`7VE>r9dxO(_Tvf!{Op@;M!@I(Vi^d`)2=6HD?%%vNs@^=0TUf<;H~m z_7vfksCwlEZ~3Os9VY>SG%{V;t{UTEu(~*GJ;hk-tn2$WzQ@Nm@Qjr07$nXlau#?V zzrEh}(Kf-@wsSf|TOS%O6e>!#K+Ivim4v7W0GQTox;;Q8b#?bq`V~!Vlhh$eJ-Hbi z&Sf6m01Flaj;1magAEcF}HLJG}gtZ`aIt|GU@K^`Bv>k zy?7cbHqHnDLk`r0Y!0LV!QAk`S6aGPz>5-yi&oQ!hzKLC6lR05K96>OO#*MGNEJwZ zy`7r1zEa0fX#ly!eLM`o{X>b4pROiH%ip@kn}5m!0Eou*;%`+cHDiiEa^jJS^UtPF zV@Kx83)6pFOCw5aGNXO5lAE$(28~LVRf|!W<-u+rvImovl^D>?fi*HzO7<7bx^W&H z_^fHtBHSlI6G~08l+^uspcwQa=6zwHi&F_ zkL~a{?rt8o=H2b5%CW)O2H1aDUOeiXaJKe@)+7pQ%FanZ^d#B9-K?#jyVv$6M~2Ao zU554>QImPjV2y80pB|N&;|}Byll>_wn*VT~EQZkxAx{+*6Zums&Zy2kYG7aGjulZ1 zJOHbo(a=%IK>nu#fb{<8Hfr_zA(*Z7CRXyu?&!!)GDi3WB+S~5%DS`M5;2+MfR~-%lDr@}|kuMe_f4=znVkt861q;g%IM39mWD!VgfGeRL z$}DDvjr7d4we>Z1P7V%Ec22f}_bfM$XhD+p1KOq`ieEcXJDg*l?JO_Z@VOHI zQMJ;5IYoGZi<6-vq<*;eN(RD%E+=G4J|xSwG)$N_T4LM}z2R-=i5tIo0 zbfFs9^#-ns`4kKd@O+)=LJ(=vB@z;%0B>G5oXuz5Rv*xvmwTcY8cdsF2=>sk09uhzX8^r4gtXb_qZQ=J_RUp2j&0kY* zp0?my@!Uo65D;=C0q}KH z7x~SKe^ao`zLnN}Pz*ti0jR6kLMSH$#GKkyo2J|Gvy=_#Xr`9YOqS_C|6p#)zDbQ7J9FzH==*D7Cv(pTA0Y!^Z9fyT~}Vq#%FkvS~SKJ&2{x)go( zv%7Kbt1mou_cqsCBeWc*+;6=oic?H9=(n`D9E9j~&?v@I-9ZUJZ2|!o&)qsJMMYBG z!wcgS0RH>8jPD=Z^^Ka`>9lw1(L5i40u66XnRT+(!Aad;wM z7g@csJ7i&jn&9J=hCI3h5(5KxlQAsfy;sjF%1JxD(1TD>0|Go|?f|KZ2iSuMImx2= z-}y?YF3(+gVe>c;)nXT_f9v)O?T#FR;w=qrbbGXbR-Aecr!h` z?+!uP*NE~HXd{2iBg=|pH#H&n$QmE+&EkSY&jZGM^^lczFqqUOMAYdGFA=dV!ckIUsD-y(JM zs=U!Z(rT>4cTL~P7w~;9xM7@@P{lEtI+*ox==h77MiSdjG}nsJWvNB63DiRADNkf8 z)E0ZHCZ6ld6XF?ZB0gq4%;WF&tR%b1u|%Fzz|{v^kgRlP&B3}`XZN&!?Pf8rOH~Za zNt^Cv2tefDq;C|yw$Znb{N38g%+wc%y^?_?IKhV%0mMA%c*hoSUT`pG zF!BRA2tKKvkvLEVZ;r_Er{}#oJsyiw)Qm$Ct#6L4EF%>*nHTc_GveKqCL$^tW9tI< z@$Dy1@u;{nyAa-!J(DM}czXWFyO3et0yR!JpRCNCKvrUDW%$dBzjPV4S$$8^nagQ4 ztulN$d_~K|*|s9K!^kZVQ*n~mqWj0pM@Yw@t*L!tHpCiUm8sVana}^!8ZGR>DDxIu6&v+N8?4h=22+qo17Sb_WE?(66BquV zbmH`ksPXS2%3Tks2zT{$zNX8-t8I}j~>^a8T{6Y3|*S>eQCd-?*Cgr{nwB1dESC%SKrNBE~lXdWK-Ml3t#Y*@oA{e8*I0&=_I^ll!zs_4zXvPbDk*7p3;=7oF)hmb{$ zD91n{n~RBJt+hEXYkHE2*ocDtIKum65RATST23e;mD&@FPCP7{ zvRwk!Li_YJ8&C5@1_`Vnt+BwTI5fD}@f}jT_h#IvY;JT$eOE|rG`0t?zz%zN(cGDGs8uCL@Y`BegwKb4l2gbJHu<^uCYz>e@r`1@ z>z04zY-`O!=4aLj6!0N^atJ+9NIv)^M)!-kTW-r%)AGmhK`sY(lBNYE0+0n8Ql!mz zW1df;5ro4XB*Co#3>Vn+{D+PR-YaYUNF~wz5fPUfA@?I*DK4Heb`?_)&$1xG-#5a) zE-gFMr=zQJq)pDy>XZHlQ->T1tmwR=R}^=ORe&P<6~%{yLj`q8BRe#InG~v%TInQ0 z6r$O!^QpYMG3frQD}(S$Q~?|Jr6CozAtkVHaqFZRToYB2A~RIFP{ae)RO3I48r`6>NbPbAObVUBBNF}+Dp@KW zY;cm7-IO*fLqsAz=dcVmg7yhNy0Uq79(;8k0?qLy_0g=?cie=q`S192gkPt_Sy6Uo zVOj|gnhrV~lU!gIm5>|R`hezQaNh)@IwI4m%Wn{lN`xvjEfWk*5+MaQFB33NXdxwb zFXORHXoWR~7|^r4EuIIanV|i%e!sR)3Wwfzee7@SN8Wip5Jo&5sJh=98oesHH^zX{ ztSXXvad+q6>mLjKyZ*=R|E@t!+noaZ_j>ZbfA!~U`cSrFrmLGgY#>K@& zM`y9v5_Efe`{2QYqt)KX?v=s8L7~8BCnqO6BiVQVH)>vf8v|yImxo6~O>Lb&h1)*E z23Fsjz-}>KFxxKx*OHSPDA2A6!lG7r+gL-)f)_F}GE!{NetB{67zv3{z2wjGQdF7K zj)slRp4aU~=1k$i;Y#=1+#DgN^$4uS^~4<9(1copB6X;!UhtbUojTWY)4{(m7(BPI zeyYSMSRs3alaW_Jx*tRl|Gj>x4wg&cqqUtMENN?LWyq%LXlc2x52X2{;+Cl8kpS4~ zdQ7@xY=L^|>S}Kyuk&tMS(y@T^lO0^f{RN_$QUG+mX>@@+iJ+jfl*OWMMXt6^%tv+ zK8OVc1%8+~!OC)SMV6B+0s;+fp@gxU0*s8-fB+x*d|K{^z`?;`W@ZM*d3qf#cY+B8 zSWP9Rk^P0{3-{YInAhI?{Ew8Bdi%9Lz2<+5RgJRgUi z=N5a#?zBC@%*FNPYK?mVOe?Y#{pO z%egbmV{LU+^oa}TY%E_B3kxfjK~p8-$l%t$GVt%qaTVrKu=>RP=AI(uM)Y$@5+u-?*%&+Ma z0IsyofM|V@ zF&xqriq)p-m2;CXX2>S1XkPXu zaYthQ9yGO{tsc!*q`txQ@$o??pJ{4MC`=vuM6b1C$_Fj^=N3b0VirL2l$` z2qEV#xC@w!C4L(W5pXNrWYtH?!;_QHZ{KJb8OKu5o<1ESE>feXqoYGaMAS}J8lMBg zk33?Xf3CqR74x@dY-v%^{z`W&=(Cz9yRS&E`M4b$MXp4Mm?ycQzuCByfu8;tvIVNn z%BJvD0m)Np(qC{sPV*wjxHrKO$Q>Ya=4xH+Z?7-F<5n+h@9gZ&RM{Uci{I#I0ucpY z2qblIY%8G{J-+@gUn9I$c2Idk)-pF&zbrN@dCbkt%}26Ffz;R83381&ZRUvvw0ZJY8X{xK6u_bJ8TOuPP&*HPPvfe0j zBx;xJ=kP+9roaGUt*xysEyA4DD!HIE0^?+*=gnpG)4Rd(rxtpF@&EnwwoD`c79x?J zz+xn!qB1s7Y;cm^_|!9Ww%U=`aZ^c6P3`mN&!0a1s&4}H2MCSRq>l*67iP%&=V{fx-T}959W4?EUT)jI5;@KWFD>c3w+ss6?p;ks6~$ff%IxM7X%lYkkRq7^JsA`qVh>5OCWqV+dT!S*QGuiv0CQB1(dl zg#{>_W75(R5Z=}3RF99=x3=yxE{&E*xAscuVqs-9V2RJp&fcptH#5tgzN{U&7#UFl zxHW5Qoymog(o!HJP9Ag3x}AabV3?%h=dWJ`tfThao!{%~bO&&HDqx8KbV7$Sm3@nu zGBZV2*Gn*Q88XS>a|~#YnA*+z7Y`^F{rmUtcvh1DfBzF8BSt6}70g{d|4Sp@3be&4 z8^AI+Zh!pvaX6`flfC`0)qqlk!mzv}sXDz%cML-+zsKcbE9y=9;^HFURh!xB@)`a~ zOQ&EQh7>-R7r3~Y0xtXWAH2NaK#<#W5rGS8*%ZpxuQv*fjg9#|uP6HZ!knd%AY6X zj8VVIg4l(HCQ{SrDT~QYjs1g)?2Fdcr=qyXcEpPwpH`~&8( zYu)%(J`209QK@>(tTh{fq%IW|)k~4*BFv!B6AOL=41RigT3+5@hXBLK(|L<$X=QbC zbu;DnyUR>TnH>+UqP*M;vKbo_(_?(JxtWubLrhG}#KaUF91L9j$ugP48>Vcu;y*{t zcXoGg%>>Qq{zEFiq?FOmNl8hirKNvTf~xuNU&+zqlZq7asy;9gEe<)aWB4BN<~Q z373XPN25PdQi@N(U`#Kc_V)GyIcg1^HZE1R{}K;liC?L|#JI+Q!C_hd3Yhk4WA#H5coEc50#qCTp8>NHly@v21o5Q%mpSS` z#|8LdKL6f@0j@wg&%e6}JpX6t|APF#emT5xivV*TU9{eayZ5w+i^vEU2!8td{{dFt BeVPCO diff --git a/hkexsh/hkexsh-vis.gv b/hkexsh/hkexsh-vis.gv index 55c4184..191c65c 100755 --- a/hkexsh/hkexsh-vis.gv +++ b/hkexsh/hkexsh-vis.gv @@ -14,135 +14,135 @@ digraph gocallvis { edge [minlen="2"] subgraph "cluster_focus" { - fontsize="18"; -bgcolor="#e6ecfa"; -label="main"; + label="main"; labelloc="t"; labeljust="c"; +fontsize="18"; +bgcolor="#e6ecfa"; + "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ label="doCopyMode" penwidth="0.5" fillcolor="lightblue" ] + "blitter.com/go/hkexsh/hkexsh.main$2" [ fillcolor="lightblue" label="deferCloseChaff" style="dotted,filled" ] + "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ fillcolor="lightblue" label="reqTunnel" penwidth="0.5" ] + "blitter.com/go/hkexsh/hkexsh.launchTuns" [ penwidth="0.5" fillcolor="lightblue" label="launchTuns" ] + "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ penwidth="0.5" fillcolor="lightblue" label="rejectUserMsg" ] "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ fillcolor="lightblue" label="handleTermResizes$1" style="dotted,filled" ] "blitter.com/go/hkexsh/hkexsh.GetSize" [ fillcolor="lightblue" label="GetSize" penwidth="1.5" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ fillcolor="lightblue" label="doCopyMode" penwidth="0.5" ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ fillcolor="lightblue" label="handleTermResizes" penwidth="0.5" ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ fillcolor="lightblue" label="shellRemoteToStdin" style="dotted,filled" ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ style="dotted,filled" fillcolor="lightblue" label="doShellMode$1$1" ] + "blitter.com/go/hkexsh/hkexsh.doShellMode" [ fillcolor="lightblue" label="doShellMode" penwidth="0.5" ] "blitter.com/go/hkexsh/hkexsh.copyBuffer" [ fillcolor="lightblue" label="copyBuffer" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ style="dotted,filled" fillcolor="lightblue" label="copyBuffer$1" ] + "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ fillcolor="lightblue" label="copyBuffer$1" style="dotted,filled" ] "blitter.com/go/hkexsh/hkexsh.copyBuffer$2" [ fillcolor="lightblue" label="copyBuffer$2" style="dotted,filled" ] "blitter.com/go/hkexsh/hkexsh.copyBuffer$3" [ fillcolor="lightblue" label="copyBuffer$3" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ fillcolor="lightblue" label="reqTunnel" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.launchTuns" [ fillcolor="lightblue" label="launchTuns" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.main$2" [ fillcolor="lightblue" label="deferCloseChaff" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ label="sendSessionParams" penwidth="0.5" fillcolor="lightblue" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ fillcolor="lightblue" label="handleTermResizes" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.Copy" [ penwidth="1.5" fillcolor="lightblue" label="Copy" ] + "blitter.com/go/hkexsh/hkexsh.Copy" [ fillcolor="lightblue" label="Copy" penwidth="1.5" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ fillcolor="lightblue" label="doShellMode$2$1" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ fillcolor="lightblue" label="shellStdinToRemote" style="dotted,filled" ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ style="dotted,filled" fillcolor="lightblue" label="shellStdinToRemote" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ fillcolor="lightblue" label="sendSessionParams" penwidth="0.5" ] + "blitter.com/go/hkexsh/hkexsh.main$1" [ fillcolor="lightblue" label="deferRestore" style="dotted,filled" ] "blitter.com/go/hkexsh/hkexsh.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ] "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ fillcolor="lightblue" label="parseNonSwitchArgs" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.main$1" [ fillcolor="lightblue" label="deferRestore" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ fillcolor="lightblue" label="rejectUserMsg" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ fillcolor="lightblue" label="shellRemoteToStdin" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ label="doShellMode$1$1" style="dotted,filled" fillcolor="lightblue" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode" [ penwidth="0.5" fillcolor="lightblue" label="doShellMode" ] "blitter.com/go/hkexsh/hkexsh.usageShell" [ fillcolor="lightblue" label="usageShell" penwidth="0.5" ] "blitter.com/go/hkexsh/hkexsh.usageCp" [ fillcolor="lightblue" label="usageCp" penwidth="0.5" ] subgraph "cluster_blitter.com/go/hkexsh" { - penwidth="0.8"; -fontsize="16"; -style="filled"; -fillcolor="lightyellow"; + fontsize="16"; fontname="bold"; rank="sink"; label="[hkexsh]"; URL="/?f=blitter.com/go/hkexsh"; tooltip="package: blitter.com/go/hkexsh"; +penwidth="0.8"; +fillcolor="lightyellow"; +style="filled"; "blitter.com/go/hkexsh.Restore" [ fillcolor="moccasin" label="Restore" penwidth="1.5" ] - "blitter.com/go/hkexsh.MakeRaw" [ penwidth="1.5" fillcolor="moccasin" label="MakeRaw" ] + "blitter.com/go/hkexsh.MakeRaw" [ fillcolor="moccasin" label="MakeRaw" penwidth="1.5" ] "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ] "blitter.com/go/hkexsh.NewSession" [ fillcolor="moccasin" label="NewSession" penwidth="1.5" ] subgraph "cluster_*blitter.com/go/hkexsh.Session" { - tooltip="type: *blitter.com/go/hkexsh.Session"; + style="rounded,filled"; +fillcolor="wheat2"; +label="(*Session)"; +tooltip="type: *blitter.com/go/hkexsh.Session"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; + + "(*blitter.com/go/hkexsh.Session).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ] + + } + + subgraph "cluster_blitter.com/go/hkexsh.Session" { + label="(Session)"; +tooltip="type: blitter.com/go/hkexsh.Session"; penwidth="0.5"; fontsize="15"; fontcolor="#222222"; labelloc="b"; style="rounded,filled"; fillcolor="wheat2"; -label="(*Session)"; - "(*blitter.com/go/hkexsh.Session).SetStatus" [ label="SetStatus" penwidth="1.5" fillcolor="moccasin" ] - - } - - subgraph "cluster_blitter.com/go/hkexsh.Session" { - labelloc="b"; -style="rounded,filled"; -fillcolor="wheat2"; -label="(Session)"; -tooltip="type: blitter.com/go/hkexsh.Session"; -penwidth="0.5"; -fontsize="15"; -fontcolor="#222222"; - - "(blitter.com/go/hkexsh.Session).Cmd" [ label="Cmd" penwidth="1.5" fillcolor="moccasin" ] + "(blitter.com/go/hkexsh.Session).Cmd" [ fillcolor="moccasin" label="Cmd" penwidth="1.5" ] + "(blitter.com/go/hkexsh.Session).Status" [ fillcolor="moccasin" label="Status" penwidth="1.5" ] "(blitter.com/go/hkexsh.Session).Op" [ fillcolor="moccasin" label="Op" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).Who" [ fillcolor="moccasin" label="Who" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).ConnHost" [ label="ConnHost" penwidth="1.5" fillcolor="moccasin" ] + "(blitter.com/go/hkexsh.Session).Who" [ label="Who" penwidth="1.5" fillcolor="moccasin" ] + "(blitter.com/go/hkexsh.Session).ConnHost" [ fillcolor="moccasin" label="ConnHost" penwidth="1.5" ] "(blitter.com/go/hkexsh.Session).TermType" [ fillcolor="moccasin" label="TermType" penwidth="1.5" ] "(blitter.com/go/hkexsh.Session).AuthCookie" [ fillcolor="moccasin" label="AuthCookie" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).Status" [ fillcolor="moccasin" label="Status" penwidth="1.5" ] } } subgraph "cluster_blitter.com/go/hkexsh/hkexnet" { - penwidth="0.8"; -style="filled"; -fillcolor="lightyellow"; -fontname="bold"; + rank="sink"; label="[hkexnet]"; +URL="/?f=blitter.com/go/hkexsh/hkexnet"; +penwidth="0.8"; +style="filled"; +fontname="bold"; tooltip="package: blitter.com/go/hkexsh/hkexnet"; fontsize="16"; -rank="sink"; -URL="/?f=blitter.com/go/hkexsh/hkexnet"; +fillcolor="lightyellow"; "blitter.com/go/hkexsh/hkexnet.Init" [ fillcolor="moccasin" label="Init" penwidth="1.5" ] "blitter.com/go/hkexsh/hkexnet.Dial" [ fillcolor="moccasin" label="Dial" penwidth="1.5" ] subgraph "cluster_*blitter.com/go/hkexsh/hkexnet.Conn" { - style="rounded,filled"; + labelloc="b"; +style="rounded,filled"; fillcolor="wheat2"; label="(*Conn)"; tooltip="type: *blitter.com/go/hkexsh/hkexnet.Conn"; penwidth="0.5"; fontsize="15"; fontcolor="#222222"; -labelloc="b"; - "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ label="WritePacket" penwidth="1.5" fillcolor="moccasin" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ penwidth="1.5" fillcolor="moccasin" label="WritePacket" ] "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ fillcolor="moccasin" label="Close" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ label="SetupChaff" penwidth="1.5" fillcolor="moccasin" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ fillcolor="moccasin" label="EnableChaff" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ fillcolor="moccasin" label="DisableChaff" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ fillcolor="moccasin" label="ShutdownChaff" penwidth="1.5" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ penwidth="1.5" fillcolor="moccasin" label="Close" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ fillcolor="moccasin" label="SetupChaff" penwidth="1.5" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ label="EnableChaff" penwidth="1.5" fillcolor="moccasin" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ penwidth="1.5" fillcolor="moccasin" label="DisableChaff" ] + "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ penwidth="1.5" fillcolor="moccasin" label="ShutdownChaff" ] } subgraph "cluster_blitter.com/go/hkexsh/hkexnet.Conn" { - label="(Conn)"; -tooltip="type: blitter.com/go/hkexsh/hkexnet.Conn"; -penwidth="0.5"; -fontsize="15"; + fontsize="15"; fontcolor="#222222"; labelloc="b"; style="rounded,filled"; fillcolor="wheat2"; +label="(Conn)"; +tooltip="type: blitter.com/go/hkexsh/hkexnet.Conn"; +penwidth="0.5"; "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ fillcolor="moccasin" label="Read" penwidth="1.5" ] - "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ label="GetStatus" penwidth="1.5" fillcolor="moccasin" ] + "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ fillcolor="moccasin" label="GetStatus" penwidth="1.5" ] "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ fillcolor="moccasin" label="Write" penwidth="1.5" ] } @@ -150,46 +150,46 @@ fillcolor="wheat2"; } subgraph "cluster_blitter.com/go/hkexsh/logger" { - fontsize="16"; + style="filled"; +fillcolor="lightyellow"; +URL="/?f=blitter.com/go/hkexsh/logger"; +penwidth="0.8"; +fontsize="16"; +fontname="bold"; rank="sink"; label="[logger]"; -URL="/?f=blitter.com/go/hkexsh/logger"; tooltip="package: blitter.com/go/hkexsh/logger"; -penwidth="0.8"; -fillcolor="lightyellow"; -fontname="bold"; -style="filled"; - "blitter.com/go/hkexsh/logger.LogDebug" [ label="LogDebug" penwidth="1.5" fillcolor="moccasin" ] + "blitter.com/go/hkexsh/logger.LogDebug" [ fillcolor="moccasin" label="LogDebug" penwidth="1.5" ] "blitter.com/go/hkexsh/logger.New" [ fillcolor="moccasin" label="New" penwidth="1.5" ] } subgraph "cluster_blitter.com/go/hkexsh/spinsult" { - URL="/?f=blitter.com/go/hkexsh/spinsult"; + penwidth="0.8"; +fontsize="16"; +fillcolor="lightyellow"; +rank="sink"; +label="[spinsult]"; +style="filled"; +fontname="bold"; +URL="/?f=blitter.com/go/hkexsh/spinsult"; tooltip="package: blitter.com/go/hkexsh/spinsult"; -penwidth="0.8"; + + "blitter.com/go/hkexsh/spinsult.GetSentence" [ fillcolor="moccasin" label="GetSentence" penwidth="1.5" ] + + } + + subgraph "cluster_github.com/mattn/go-isatty" { + penwidth="0.8"; +URL="/?f=github.com/mattn/go-isatty"; +tooltip="package: github.com/mattn/go-isatty"; fontsize="16"; style="filled"; fillcolor="lightyellow"; fontname="bold"; rank="sink"; -label="[spinsult]"; - - "blitter.com/go/hkexsh/spinsult.GetSentence" [ label="GetSentence" penwidth="1.5" fillcolor="moccasin" ] - - } - - subgraph "cluster_github.com/mattn/go-isatty" { - rank="sink"; label="[isatty]"; -URL="/?f=github.com/mattn/go-isatty"; -style="filled"; -fontsize="16"; -fillcolor="lightyellow"; -fontname="bold"; -tooltip="package: github.com/mattn/go-isatty"; -penwidth="0.8"; "github.com/mattn/go-isatty.IsTerminal" [ fillcolor="moccasin" label="IsTerminal" penwidth="1.5" ] @@ -197,55 +197,19 @@ penwidth="0.8"; } - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [ ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ color="saddlebrown" style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$2" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$3" [ style="dashed" ] + "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "blitter.com/go/hkexsh/logger.LogDebug" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ ] - "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Op" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Who" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).ConnHost" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).AuthCookie" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ color="saddlebrown" style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.Copy" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" -> "blitter.com/go/hkexsh/hkexsh.Copy" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Dial" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.MakeRaw" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.ReadPassword" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.NewSession" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.launchTuns" [ ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [ ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] @@ -253,7 +217,43 @@ penwidth="0.8"; "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ ] + "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ style="dashed" ] + "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$2" [ style="dashed" ] + "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$3" [ style="dashed" ] + "blitter.com/go/hkexsh/hkexsh.Copy" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer" [ ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" -> "blitter.com/go/hkexsh/hkexsh.Copy" [ ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ ] + "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Op" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Who" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).ConnHost" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).AuthCookie" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Dial" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.MakeRaw" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$1" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.ReadPassword" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.NewSession" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.launchTuns" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doShellMode" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ ] diff --git a/hkexshd/hkexshd-vis-fixedup.png b/hkexshd/hkexshd-vis-fixedup.png index 6410ae22ca03f8964c135fad20e9d36161d93d26..fe9196a809428b5032431b3723fa5ac830db9729 100644 GIT binary patch literal 587927 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

T;0aD|`gyNsP|(g`~jwArG*I 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
obwq#W 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 z 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 z z0=2!+p0Lhl%U+lmIlMpdrOl%gqesi)n`?U6xK>?zh_ZSWQSTK0{>;2pk*MUP1=5XA z$lPAhOGuK3hoADG%rrJrgvAq`tqoL`+Z_7|=ao5ytoH5a?+ACL{i>aDt({@0C~dnq zzPNhSb+NmOLy(Wwahr)D0Rsk}w+7a*G`h40Injmu2PqyNq5OBqZ>UK#Uj)$MI3N7g zl!x0jGVVXHm1f?LXJe)?b#!147gbz4mWyT)oAsjk*=&2uCh5K^-c3-LdJFYdA$odH zp7pTg;02f?0XGBQb+fx@d1h(0yzC|&erkmEi-l(j3O$>n^{G+YB_a;fVi=rn$x|-| zj9&?37WKtH)c0#(IJv33;20axt&Tlue(sR1HL>$aOK)7fOZH#{D2zNC5$*Ea(`?OS zLv3$$rVRx9?foh-RjwA|p=kgvZ@JoGp&FaxhcG@&_$1q2(-3awhnAGquOP zeHCe3*FQt{+Mb99hmde{V37VnevU4c!@Q3tkVbLUw&y?q+cR3HnW^tyb>utdN{g{N z_25RA6CFK!5@g)Gt=KqMtL&9yJ!Hkv2~G_@hT5+*^W3hJ!%^B0^0Gp@vO-&Cn`ab4 zh|5TdSxdb`LQmc?iAh5QxEU=<`i2%{*IBzJ?4Ikw+xb+A3K0kpm-*U|S9bz__&;Sk zhHty*pYB65VDM0L-4!4mdwB{&TfnChOLRw0ywrhuy1SZknnz)ubuk2sxn+#U8am%F5g<) zm$T*U?!X^rcfk@x`*v0V2kUZlwhw8j`gEk(1McgDyrhiVOZ%B|a$|Y>Y^G?02aJBX zo~4GyaM#tB%O@bE7NfjRFwb`&K$kR>2(L=zuzFgHL#sQU+zjz}3OdA2%IVp6eow}h z3^K6KJGHUivav3$sd|l(QC3%(fAW@a!^VFAfW$mCg+*vF!^pMl_$O9OYxDIrDIs7~ z3F4?JNp}0yjDC~k`sHQ%tu)iqE6Z}D^eB}M4jO%eSY79;9u$s5*5{5yyEwI zCR3rEnY@$@k{~pk@;9VR@hCk`-7lL+HCltU63tc@p8(`vk_y080SW*=fHOz`4o|>m zBt8j&2U`LXRJ?YBVY7^niaP&yc=U7?S+`ZS!fU_&F$@_8$7MKS`w;#3A|)#hfU=El zUtXC=y6ZZ2)H#MCGF@!Rer4OsZ7J{HKSaqXqA+D;t-oTmG$qsKdAM@1#S(x8nGoIq zh8NZE?uzJ<&RB~FT|VB-K7S!jy$_?Gc<*F>%a)dxLvsESpi}OU92JkU_*kBP0L$9K zC7|#3mwoqp;w>+%EIenFR3*a-&A{0n9SK*>WfdV#*>Bq(db=yqL5qk^co~~dU*RU; zfq`3xiW%1K@<7v7HlO~JKtP~<<+Ith&R;1Hjm9+|fUHw1O-QF1pLnb3U;q8-Jn5Wh zJA>h&(JS5k2p)hxZB*3=X_de&v0Tq(F$k#28D?&dW4=Fy2BiFcY`^TVm2daky82Sm z;nSAGp_ly%_Oa^CzQ|}*`9;Ja304u1P#d}w&L8*wW#Guyi$>Yh8pXRl z*E+3z^Ff8@@r>6hq2oY+63)rJM-fJN;wY{h|MqwbTR}T?V)DVMpP@ zOlzg=GW*wlF^PBc7&cGxhRUa^SQ)*mDZRgCotqHEXcumGnf>?FVSiMnd%=kMVY%Mx zDT<-JqzSsr5V}k<4*tO2ytxfqf0~(Ho!e)7Z^KqZ7bY4{K=iMou79;@nF$~B^^jRe zH66@mkznwcg4618+O{{_0eByuRy5ICBrPA2++tslJbj48lA*JzJZw`78fQV`X|u+r49vdMn8@-Z<+kAJ&nL$uIj zuj@Y2;~X0r6dRwrl7831xWLRY$2hM}71`{F4Hkie`sv|f_(MnRhmMDYiIkC6^;W|M zV-)F$i8<%m{LJ7+D*4O{jtn14VruHr(D3P^eW%BZWsG~^REx#V6}pvmJLT5gtO|_0 zPJ^pTD3rkpOrS7MWO&|(|80^$GWH}PO-1R+$>%1-i>bVIQmOLd2}s`-^$*UcepFPo7{CrWco2^ZdsdF%`?0{YuS#PiI@`qW;XFS38x^TdV)esU+OL zJvWc>4E)|;u5a{Lt)-8!DKWZ6dWp^RRTM+c<8nt;?Osg^_xnIjS>)$7GJ)*qHH5&$ z%&?aBFHQG1$6F1`CF!lGbItm`&ABwm!Ms9!_(93CxwY~44U5Ql96$6zl+t#59k%m> zz9+w(FJYP?f&{nU6lq*SDynb!UN!&t>w0)b?7}!Spr_c!eAIK*#ITHoE>Z3#QtCRB^6Q_)h zeL>^+c2Z(KQf59%T6!j4W-4B0y8Y^wN}nLiEi2CritO!+YHF%}i+xNhh23yudp_Pu zy}Wh%%W-($o^`bkO|n2~Ru(sn9-eJ&O-S}{dQPj&Orv-{yDVe%MCg+>I}!a?}a zInA9@B;^Lg1W(&P;Wrm%7LQ#%u~Mx6F73_#n=+C}SxV3QGqRtK624-a*LhHmVt+xI z0&aaG>NLgV`P7v);yqyJH569ORf$O3eK~SHQlJYuVGf_sHT}8$=HE7^EZw%X8X0zg zLh&5EtP>R2EeMm1%g4P(Li!g&a=sCt&t2Xy0yeaJ63ei6b?ZhmRo0O2rYBs$fk3Mj zoh%?k&L%cQ7DhP9AY{mRwNz5nnzWryI&KitmElH10k=YcOvDID!44xm z^>I8O?$YErwGTj#%JOj0wc!6#y(aWP(9nUCo#U8AAIyj7on@2N1p>RV3ta#rAh!(9 zHB+x)X=y-5QnILjmj^CRY>}vg{eFYrxulG|On)eiFTCNFFnblyHAxNB$AGh?l!P03xQOtID=1I>CAvaiu z-wPb1{1`GDAU6@CGNUXyAUEHmFyHe&{zf9UFt2h_lb2h)CNG(tM?0yYW}xt|t891a zQ_3(6b@dn>_2@r_(QnkUqu*s@M#m>;wr_f*Y2y>(SQpee*rpg4lsT9bhFux?-Wgy% z7oxQX1;CXh_Xl@qsFzL#h!>cI`O4o<^nkD;*Sl`EqUkD}ie8 zbpNd1dCF$OZkA)#&Q>fc2QNN>@_J-q6Yd*{!PcT4syxpOA*0)!9yh<{)2y?a1!HXw zg_@Cof_f5WQMzQnjo<2JnV83DRZ-;R_5W3;>jixNt4`+>3^el{vv%*xeyy(xymj5w z+f5SN5|I=W{Pu`1lFrcK=4~S!+ahmeqoXHgH9Z_ORS7u4FY?X7o_qbQGi7Ry<+u-=xgypP51Q_3$E~ zpOB#3&$u_T$5j0V)k7%^tob*~T!*ib4y=pe<@$7qJPk5EslS!TWM z1~xX$J1RZdLxqi>V>G^3U7)%c&R57*KN~MtAnAq)8-HgmXo7JmURkg&0(jMZH-?gG zApz0vf00%POoL|_KV%i1XjCvvfS_#U0fExF)&}M>mkKNAe!n(W1~iTZl&6RI)eiX8 zUex;ymgbMZBWhYohLFpKkkC^IB_)4J03tqD=^JT2=|J^isH1x)3}r=gcU^mPUS)oB zXMJ;FXM1OTb!T~VY2o*p($3n#det#tx#dpdmj7Bgfd|54WrXtiM1ta6-yi6<>Iy>z zCR2s)alCipo)d)?p1);mtQ*6B5>!q6EhGNG)%bE+t>5+Ji>R;_Zckc8tUp+_txR|0z>aS&dp(-ri-Xvrh|`@!l?7eBbLlX*(1*myQ(E#KP^l7o4K2sq)Y{1|sQG03;PWz*RU<-vg5NKE;;P_WVvgL zrzA0aR3f}}2pQIjB{ahj<`l5~Y%UaQInE5HIYwGJ%zC=_SbKxyB9TWLvNupok+Mo{ z7N{>V;FuHV_f5wk>{C$0>-K=ueM&K+_Wk6Bzc44*KPR{=EiI`DXif@gsR`)`Y3doe z>lteLD7woMG*HIjB&4o~d}Au7)=Z?9BK`82lNN?d>X{XSSa`rU4Xe7$xcN13be|}4d9-E13k$jasKI?~GTf1&|gO13k z{!|BL5a@qw9~D*AA0eS3!7!ph!E4mhelrgFa0yMIXT4g19E z7IA()$wUhlJ{18LDku!RGN`6a%h-Cnea_kdAQ1fniVdf2RtkB9LOYHCHY@qhBP|!R z3N<-rVAdGkMvp1s#8q2x+GKJFjo6#%!Tg}Wj#e_GgO}sS6nAX-faAmKnoJO=wdN_G zZOMJKFDqA$5MWj3Wc@?y{qee3X{nghL^+4RwETfkk@f;M;SDOL#lKNSj?#WPPzCbW zvxW$Uf%zJa!YvR8Rn22Z}w*MeOHuRE+1q zlUZbp>2C1cnmAlf^@tKSW`&(hU~+=*Xr#Pcvhfq1-s4sf-FYC{x>5eLG3e1V@Fgso z<*@AQLy(L|3t2yEieVU!mhS^gS!Fc?^>>D<(r-1D-zrM0%Bz9TWu@g+mDTnJ>`Zu? zQL<<0+y^O~ZRiF}7K&fuq)4Wz^PRq>7k*8m7cG#UAs;N8abg0tr#2rY4Vj#>pZBl< z|7|GHp9GU6behZ~M+XP(AK!07_D9uie~NxO=8r5Wi0sVlD;}>Hs$L_m zc^BuUzqKqMm8v;kY5lc~%hLg|*(@y~frQI!G!=^m@(T%hM)?Eb|K45G#XFhFD?=Wk zp#f<3a&mPb>UG(jo;Yhe@|(GLx$WHT9RF*z(EL`X$gWjdS-2KkVq$4JFPTw6L&M@- zeX79a9J6@Q(I({nm@avvmghlkesLitD*BdokpXTBr$htxiUC|kjVo!glH&dgZ8nZ* z$bPv!olHVj^1pIL3GFZwPBRJduz5v1RfQe7&cFMBx!)frAUG7pZc|5n?M^+OyRbfS zo4fi7{Am%MqB#-_LJ%lVpzGjhBwEm7<&$|EUk&eOA_3wP10Dm{pQQJBiT|Bw+}@}o zovsid^6rlE++zB*iYUc9l)tpB#j&>a3mB*;yY}$)Sluo-VIzc`;3*VkUY(u-!q-E@%-an~5 z6%rAJoT5sdRin6w{mw{HNHSOrar0x_zuG#Bi{(>tDP34XZ;oXtqOOn4gNJf|NDd@p z0gsFf>CV+(qk~O^Yq)?Zq@P^lM7#Md@^}d;*(+n6v z<$exL91qf3xhiXQ0q_K)*QtMQvbS)PImk4{6G6yOcMDp7mZ0{x{5Ls?^{l&Ci(ks- zVauW?lZFWSK^D4ZYM;YHD>$LMsGz1;@qNtRh~23`w)2q@Bsl%%JbhgB38Lk|xbd*N z4etYcQ;{d%>Xb^G5o#?$8SJ7yu{l0Lw|foE>!K`cXx2Fyh=*5V%eU4o3l!sP{XBmS zlpZobmRsQ&LZoOWl$1W?|?f)d?{#;D8Br|3CtenEkB(imwtnXA&M z3{(%h1o%F@G`=Mpaj9O-vfMT(Ru4bm-#&c)J4$C%$Hho%u$WW?%g@d4jtderJ$SWS zMjLl-fB?m?(@EHEl~(CIpNnTT)9!u#azNaufc{EL*WfoA+9sQHB_CtAiUrEMOi=ex z$CP*3f#AheMaM-3{an4O5+?L|u)|8v<=1R-&W;Njrw4xfc_T5J6DcO|?)9K4Cnw1g zigKe-^vxe<%nU>9xBtc1t&&b|PLy*@a(KK7TRe+{^y`H$2<#J#3nzS~Au|t=P{ca^ z_QAoob?Ia#D)iFdjt5bamh|QR8|N_*omIvW z*$67{wBPa0Ob+<}w(s{aL^U6@hj5nzA$5%?=>Y#l^a1quH>)s*AZa+i+pEXm3|FGB z;IMqU1h4lQFML4k*h~-TyX@IXljmeM-}7cZ&aPUeI=E(WmGF+q>iY;XLwX){Nvq?q zk0w{1lfG7LQbG=^^Fm=+1JoxW8I?!8ixhr)Jw0yUcqw$pUxb`Lr!M~~n=|Nie&?a- zzxfwP<7%&xjD^xNhgC@BSBo8wNWm3(eAWGcvGt4dXz7po@QeI9%defa&6W&bK0FQ^ zfqMJZfVbg})A|r}qV4LYV@<7Vp9lG;e$*hP1?-ov`s<3y1@xZt3^*^$)DL(6nreKh z9jZ9(wganBM{W`)&3m3@`(QaFv7o(80g|m+nA>F?yC7ev|1x;bT!qp_dp=wnt3QvPNwFlL zZwV43fUZEGP(d68g)a&iY+R$$j(L9su6kRw{yyTdn$<0&Eb>;sB2M&XUy~j$Wl`Ic zkX7g3{MzTPY`5N;n3P7}NdR!>t?ZgiU-&;_A8U_()2%)*;o&CJr4`jsa2Q{grXGbs zN2-U273p_g)%sUn=&ITsta@e*@U-^gC9_yZ7O3=7JP9vuiS$yo|VV2Fs+ zy1z{CYRZNqj2wzPvKk`oQe%YBI>$#+#o@&YERnE8Nv(a~hINJf$G{h|ex=i7 zoKO{5^!qmkVN5VFhQF|S3nBYU>fv!D-e>)Sj%x5<0KE##@O!rXY+i?jW-I#KyO4#D z*;zUS@({)s!eGp}g{B;zo$>azAptuT*LGlgvYijH$76}{0D)}OKMDmvy+&EkkF=uA z7i&z5{>Z=$f)+QJLJ2b}vxLy6+1oOd;sIEl^!A$Gd%h)CkJ&!gdH<}xX&}lzUZ5hn zI!ei@x@7uICd@EGf*2dCLhvt-FS=Qup3>AabfkCQ+Fi8;X2xvXoZVg$sz$@#Fhp(F z;;3=AQDCKHWNdbK?@l@Ny51UxJB1#3N)LY4r^#$=CfQ5=D473d@ N=P^T4R*u(Y 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

yYu680_fw^%)e^0k}Q!SG* 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

0T3hS6UJ8S|+<3cSF{9>wg6X{AfL6|Ob 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�cP#eQp3cZQkcd}{TdcT15;SD;cz8)AHz-XYZ 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 z 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 z zo12?wOHrPLbq&%CrK4St+Rg10`wzO9z9NiP6orIQ>swez%xp8QPSo9ogd}Tk&tvy! zmV4(t!HBKV#kYwuz1awvNCamBP*prA%ZbUdKiqSyOU<1s4z*J| z3X4pL+pqVkqsZINd6&hBy*60=WIMlo@!E9rfex|M)VCjuUOchC+^2b1qbQqcZ<4m~ zp7q|fGKlS9Eh#~Os{0p#no5Zg7bvE@1met@u+J?ARVLQs7$;}ab;VQ!7ZP&Q4Ud*U z5FdPi?m~_rz1_%3r{oL>w)_G<%-ZTcN}V&f3skDeh&*=aV_nVXz`1oAS5sDgAm10G zANFHua(lkI={?MH*yb#~uF5kmW5aaL<`SAD!ZPI?< zn5MTL2*88No{LTL(TJY$H$3nho{L6ryGWP6# zs~>$!BqH>I3n=KuY}NYo!b|Gl6k`-PgP z+&HdJ1_c>JL;|jV)KQgAMW8C!v#p}3)Af;yH{?1}`92J#K%*U8J!H$?l_A&Q?OXj9 z^QC@=ib=-L&dv#Ea7qp*IYn1C4gH0Cie}8Fxy~J(~)$j*`PO9((i~kL{^+0Ygvf?fmV4KtQ z;YwqIrvhCStAQqK_e902P0S|TBCR3_clWbkOXu#Fk_E+fS45}vF?wv^Y@`JcwW+U= z9RR2K<@N6%iQ~qScz>b&yY-Pj?}5NLVE^IvJugj!rvcT*>%`f;e^VLuB?Sqp-lbdD z&{;9bh2`Okl29z=N5<;SN5BpCCgT?jr*idE;ZhRavsGM>-CYO7kJ#9@pMB^mtPAK@ zr>AzJ^`ii(N=zg4?@VF1tKVM>96rV;{98Ms=E|jAuT6qfr2XJ>pD&>@2-9ODi55o9 zOn@(P%HFj$_Xqf(3sQeMej#b5`NcM&MjW_MN;8PWhLt>nQ8`esuS^B%f~9D>Qdf`_ z78jkgk~COqJALj<8mPF1Hha9*Jz9SL9E~byRjT*T4IsOk-_(^V>#7fOU(&8FGqc>F zT&Mkb>A*yvz4r0kAy1p+%)Tx(6`haWZJSrrbq9ksVyqCA157P@fLiTur{4tcSWE`z zc?3~2JndcOb_h>jFE5Z_rTg&!=B*MUebhrP{JI3g>gb4rx1Yjn zx;QW0K=-C}T7XBr86#t3bMwsz9vA=IG1K<0emtx|3A2lCCz})HTWFU_i171ujJ{Hh z2iP0(nWpqG6Mf}s+V4DpTsE^EAMo(xEbXmRoC!23*ZRKs*u7XXGU1E|M;+FFwAsRY z*Y7B$Y+aW9Re-^N>siZ3G!4gMP;g{Sq4nV4qhjt%i|@?Ur(;j5 zz9oO$6Rpjl1OZ$Yw%8t^nrE|csSZIz|uxPFW2uJbT~b(sBqM?bO1ciTLe*kb@tIn9HtRltkZskf6#?3n*p^BG5Z<4 z;?<>~&NRh)5#3i7?rdQ)$)BJlh*>Zur+UmRxZCZuLZW>QE0-X3sk@>9wg78TTIAEO z>W>kO_{4{^G9ilEo7?;-F}-En{vQJhiUjeOB9sM91{Eb}VhG=Pv=xy85@6 zIii6=5)A*1-?FLqk>C49+hwb8pnW|jy|vrBnw9-X`7A&Xnh>aW)cgtP+(YlXx$x6x zkDbe0v3sCnDd|(Cv(1ks@%Uy9=2Lbsz-%$JHZAr?%Y+!S3OtrAI-I7CuEs%%+!q6b z2)EI$99&ISd+iC$ZlQgyLS4JNXe`*uL-a)D3veiyTor@+k2G~cm7C#M?ZTO0>$fNflRF5bXD5;vIhHo{qf+m-PfQq*cU z@~|9^Lql`e-`TxUK{>n9DFOIpqGiVMNSiwI;6{G8A#7$`T^5!ro%Vb6t}bY3DztKv z@nXL2p90&Pt81-5zV+{9)U+tL|)A@kO zh!gkBaN2B&2E2ZeUa7ClgkOiZG=PO(Nt>8BEVjFa@lPGLz$Tbdrv(J*b>77?l>5 zt+Nx~<sZDF~b6$O_OB&v*oi#sP#R2-QZTF4`E*0C_?ZYG$p z!Lh7*PRr~MtSQY4PEQ$Os_N9EcTK@hPs!E7h)ZjWdV=DbI(#5 zb2xbhl{|WtN7edOFz@u}^3BJq?WF|H;o)fH(^Z$%L^{Bl7Mw~b@57v?>fF+99x6Sc zv)Qs6{cXQQy)p6}5K@&@HKY`%le*OsX$&TB0vY2gsw4Il95ZeBrUlSVYE08`6A?H_ zKp4dnRfk&Id0m!Aw$;50$cpUu-F<3z@fn8UPxjOqNn%x6TWN~)_XVd<9I4Sba_+ob zEILBtAFQIsebt-f394ZrifI<_cG4Sx%07k03mO^-N9ufN$bFA$wInNzbFG^aituM( zdKn}9_xpAkH64t~wYKH_Ez&QCz>dH)gTt5|Lx6z;sjLyNhI)0osY}q2lsR@pB zw?JN}agCgYjo_$Qy#eFhTO^f?E~d&0zTVN|AiK@;o|l1R73b$Vaq%XiJ}-M}lS3i= z+jT20^((H>V`u*AP$>haKf-;u2xc~59yFZI?jBF#+irDv@YruYN=>EUcHEq23i^oL z5R1cO6%M#qD{c}ED@nIO&3(rHHvo}W$P691@etL8^=jVFTyV)LwA-y+aueKn&Cnin z0sox%ihMK&{ai`|+CU z?M*kwvm(WcbayKp=e56k8oZ^98nuYQ>9Vu98bbj(Nl0J1yF$`NUq0w#ycUwg@9`NE zG=>AEb^67-K}iO4IxkOJblNY4rMml(Pb!uo!}pdhD}O|asyeqb!8a6(N(;5-)!ZC^ ze{5 z)dU5nk@ep3Xd4sQ;4Zv~pXgsHxlCS+hbv7-*P9an2q%iW1WaF ztqF7Ln^O%ds-tyLv7A@l;W%kM@tjw;o7WZV?b~Wv_lDGr21}m^3RbvxqoIbO#xoq? zcbfF&7M6LneZk>Rn-Ze3lT2{xk?+iD)A~BPbsFaKtO~xE zn8@|dU3=)Pk-+hyf5RDKUg~?#|%Dwv>uZpbpcnsIp zIsNIUxM7yHYoclUxj3+8kuQl5;;$$U=*3203yocC;BP-fKz0ZIZsGK+ zV>%L_voplUOvi~2@!C0V9TNTT65*&z`2A&Oc}P4Qh8=MhhUYRLeWYh()S2G7uyg-z z=8PYV+kWqYX-jHRvPjSvx6Vg$aqNwoW2VD#I1Wlyy%>^_4#aYa%~~l|4Va@YCq+jK z)4Exj)k~l2cfME%CS7O>hA6l5MXcaCJXwoArkBOTX-!x>9m#r71}DcN6#HBIPWglH zb#WB2k{4@eV9Qx3+J~%A8Cd+M1^A8|-_+HYsKT|&ql%5d!OBr{`DG&gLkJOnNgvN? zwzLInpn1v>bxtauX5Q;^_XXUmCTD7T{^>)^b%! zVuL5_*-bjBp3&0kydt%5LQr!BmX&dsn={MjDf*vNx&Ppr&I`=Q(EH$viXK`k$smh} z<17-&CoZ>8D_?5hUL~9h+9f+~l^<@+YDqyt^43O+4$U^ME2xQVGa^^SWa@?Sq*%m_ zh|!bN{m~jH;VNeuitA>l-)Pn{YYAsBcl4H@_fd>dAV}qnJjC-6is2~*xng4s6 zv;kn&w%-mP;n-4e`7cq0E@g4~^t+E58kepq_iIm;$;u79my~=$zlQhWL(F^0dXX<* z*!=xFGmAGj$?@>QUy=rcS&E2{m$0_J$HT*;UL7e8lA`J9jnMSrEJ~KJC}4rX#Jy`@ zUS9szr1jDTzP%mb?R`T@i3k++u(Yyj@9M$>y#~n1Hxam6%DuQZI0D$lfL zp;~=VXM~|%mL7|Nfft9$H_ex*Taf(IMIUk8u@j}2w_a*BYy9w!Fl&F+Ey~(U&*-mM zM0ngDf=QK?fvxTB_+&1g$nPMUix;PkUvxm#bg9S8+cz;WI~NxhBMoas)55-gPp2;U zoOdx(SW(e3HATR};^695x4XOB+TD$A0cv%+)$JS|wN6Z+v#{Xaym$3wM$s~RWXXkdivNbJ>z?_n&fLI3(5fHq7 zt;xX$D5B$;A)*sWKo|rZKXQa5f24!bVe@AEMlB_YWipp4erU7Ux{{}>J zkl2hSE8LboI9(zec-`Q;s6`2*^elrPNl8ty>?@v^Bd&tm+xd|!a4{_{p01eVr;i&$ z8((`|T)JW2XB4xvbV^7d4?O)B88b)PfcNy$b#@q&=--rI9TDhbZ@*iSfy?9@e?qfo zjFYgQbb3ju@^V?vSu)8}>3s%X$jN$;=+i8z+rs2wWbuKG_&zAjLg3V!%fGsO5R(-4 z?yc-SE2402qL|l{-p}S)XdgN}8Qa`HtrUSKG`xTN77r8i!{(UH>>snUGiRA>*}G9M zZp#&Yc^UP>`{Ix^$k%s50gjT0h4DoomuALy%_vg-!&Am+x1BpP4THYt&e$pT5Mbo? zO@f@9&=z$Kc3b>B`47hsmPbcSeU8DRPsKu$bYV&8n^R;h+f(ObHOCJyaL7*~vER&@ zLvCT5JXnQ)auSm2I(Nd8pT_Xe#J$<&^l%lfu*fKM8ef-)ePmAwn(;~d-W$oK@?eb} zSYfu@`$(PzZMRvzcqf?XT z7um$>A>ssGOAS6J3v1i1YG0xooSZ6Wm*(CklD?xO219~;`jZo$FCmF@J4Gerg6`2j z8#M6o!beMu$iNxIZZXpB_4n_e!QV2m&WFZ*h1zDugTI3^^g5vz*E}=|?NE7n-U$`- z&(U-u3?&Qc`)Od$!@}j;%1(EBx;1C(X23=m&2=nv8<;CF#Xp$T?C}W7B9I>xZa)$d zCg0j!x(NWi+t0toPX>RJix?h0_@i+Dx%G@tl?^EJ2>RP%9vo-tMf`m`0)x=tx$SWG zVMrAkAXtycxg`%g@qwMuJzVe2)uLG|K@2H6B)Rsb4#GmBcT+?5_u5^3jgp^B`aXBrfB~?|cRVYBT zV}0=V>lR*x-62N)2cDr}%OLaXiKRSt;;DhRPLefc~4C zRwb}1tf)&ZdcUUdlCQ|kQ9w@RqD{AalfNTc2zRMro4@08;Y zutx2{YNw|wGbg){j06EP6Z^}g$3o+r1>J7gCVw+kK6jn3eZ{I`)u3eN|NG|#ZmF@> z3qI?4a3PPPO_Ctp3Ms!-|DNfA)|CH#AZ_CZ0`~mvOqcPS4@|G0AZvT zB4YlSXPdvhmLHsJgo=ub`YUMdIg{FpF`@0Vi)+GKiD#Mpz%YTvNmy7!`HLf(Tt5>H z)mbaaDO88D^dh92$$UY;1~g})(Hj?d<35SMC{|z&B3-rz_f0tAp#IEMu5wNAQ!&Yx zPJ6brQb{2d6&Q(p6{#j8IJT<~@^7IM96PZ4S&YCI&6FL8zW=$_^ZNjuKcDrF(WkzC ze6Bx6e_p1m2VpcecafrtTH9DR{%lxuY+6mdFzC0%Ns!c9?z!C)SN7Moy2#tx^Q?@a zugZ)Vx7T+%5nwXiQJ^-_D_9kbq&wzhVP*?u+ul{6Nm>BL=4iwZpQu=jlcBp4DZ zM(AsEIC;oh{KBO)=nD|~S*C^Uf}1qEQDCrtI8tKtH-)p#MW}s1N+=*LO>zZQE53>l z`7B)z_~?jknv6Uxw7+V?7Yj+y+M|2egP2k0&$FRlF@1MVN-1wjD%n8CXD#(Z6H|=Q z+Ra!IGgCiGOSJ9;?CVf=n`!vR_>%BEHHRX*4d(Ws*v5UBQ15ILY<4bHq!I}LI)+d? z=FZl1U9!XUDOl3(Pq?^))nxDsFhs$}|0xGp^ z;Zm7QUj~NVf++a>{qY;L8^6*yEk(IIy0}Ez{=O#9$gi=ad2%TTfH<4rVUzNAOjb!0 zmcHB>Ow04Xa=TX|L?&5M7$;6Fo~>hGB7BSyUt%@qIE*-Wk~raGwI=(5%Kd~!;ZNye zgcNm0P5Xxh)P?nek;2f(hk--|^KC>B%lTFkWTBU$W3M3BRKBbFws^gvgE?(5{mG)o zic6u%bd&Rj2>rXOx4!NU_Q%U2oF{4&?#(~f($;PS6$8hI7+$WoZBLFAwtq64>F>Wu z1seXED0_v$gcSeamYin6E42_UTQ#`*XBacZuDzT-I24eJ)9%x~ZinA8X?t5ZN+=>A z1f}-LP}kQdygaLGZ^0FU_=8|;j+!@<1Rd+?){Qnv;%z?L@LnMQeNeT42Bv7H^yL1H z#CtTAUB7Dikw-|$<}uSNIB&vfH|O-=k&VqhHLwz)2gqiH3fD|Vv;^ML^p3+1`kH75ELUzU?IU@FF@XX&s&rEQtwM+hVlbe8X z7ysDmrW+{!@O+Gir}lKNC%*q`YP$&9J6fZE4?Su9J$Pl909Uw@rdvgN3kt*2TcJEx z+1OYW+x5YCV7`Id)!Xj9;B*xWRaRD?N%98Q>PbNGp+&SGp=&K)%yf1^tJYX!^g!_q z`TNWeBDf%Kqi0K&x$${9=kTOj4mCSn!_CIw&%WS)9N3i%#4>A-`N98v%M0dMfOzzp z6u3$EYool7$mgitoc%<2nvLfE2=sim+JK1g#7W^1$od}4*YLa{WtVP$c&}CSqyBD} zP(Ut1syn!#)_&={8<8Iw9}n>miWPppFg>d1_;a1<9K_!KkdY2VSzBA5&QD~#axx?q zv~$+dEW%QV6A}w05?l=3I`3V-f@cktZgS#PtWOo??YxZIc8Q*Yi~O*qFY74EG|=6h zkJp@6tDqZxg8P|0`kRd*Kz<+f8Z0LLpQPX~ZM%gZ1m(Ux*45X;|C>VO^HuVqd=9oj zi2yIWdfr7RZ`Oxf<3ia~GK^okv3rMM#GETfDPcuEfmci_0rKE4<}vA1XE%G?ID-Am zZ>?%;++k2YDaN2R&)ESiF>d!4!}9J2txl9{=bVxXlx++Ln0M-rc#PI!M+B~JO4*yW zU1S%4H2k)6xYV34RrI8#+Vv*pqxcSj$M?*pYZD6^pqk;ej%UPxjIyZA`W=4v{@(_thFz}Fm*r6)$gnWKsbzne-L&xO9RF&d za}e0{1a1n5pTko$$6OnmfieIXQjNUUO~?Or2W#$+S`G|04XyHrr9WXP&dT7JBS=eS zJF#A7`?7#va26DpCKvDH%9byLu6dr&~Txp`7Bj)HqtWXSI0@97V&&gFn7 zTFbj5BlmV$6p4BXOe(ZZbUwkDnLIDXl)>81Rj-(eEUc1=Nj6t2Jl1HMiBim)Xo9h~ z|0sovNs9E&rrHOi{Uk3s(QHF|Y0#&NHtk$RmsRdAw%qrQJT##R%xt_QYZ9jc4XCl3 zS({8JWwp#W$CWr-plTp?8L2{?#g%RkDzH-YEanaf@U_D*SUNDbavt>jznq_Vi_i*JZ zrm!yRt>}go6>9}9=;eSO$hgSy%uv$oG9*_gkh|=VkG6gY7cgdg5eP~-t0XzAb+qqX zIJaN&{m^S0-x|zw!nHG&*IKG>FyP4#4Y-p65Qy9uxS`d$DSy)q!Q9wm!5Ew#ox@Q0 zOr+ij(hBX1a_|7p+0Ug`IoHjt`KIDC#DKBap~-$T z5ai2yCRgx<+Si7D3WN;&l3^Ms>tng}%`Q>;JL~y`TYg>qwUQy~7yYH+TnDCke3AHyQJE64Hi3TEf;<4E0x-pY z-|HN`8gXrJW380BlHK#hvRg$pqKW*Z3d&f@b|Iboo*u?OlX8?6QX^#M5W`n-NB1}P z9r;R3+>#9;lWiM*KWoBAFodo`yUi`4mxGPt+;A{^G&7y)X{K@~fr2z4K^+)TFcYt8 zq7x%@{@7F*E%^5Dw}mQK+1HE-x>KkQuS|SkSy))o7f&i%7sTuE5IimLXlQV4sJj^h z3t{M5DtUn)E<0L>AWoY`L?^Mhia0wHx*_(DOFVQs@cH|X%>?7vLIHHqHZ$uyPrgKJ z^m`LZa4PVK!(`uD=%O}>?v9%lX-gCv8)90xh#Qv8ZHK1HnTOqY)^VZo9ROKsz=qn- z9fD2ideX)}{BAoH_yC+g^+|_0%N&3OMT^snzPNR_p?#k@A51X1J<~+b0lE97ex`xu?CxvW(K7{PG`#h+&`dR6~;(0OR7tT&4C6L&^ zJF?06MiQ0<`~2K?>tO7H4b%ZF*#lx$8^cR^PEcUQx8OKcElVGm(Gn#72s*uY;=&KC z;o|agSd76l7MLL?^p|9$y@TD0?FUv4cE8@GsrFo%a-&hX?xu|$`i^t_0;iq&`^wfu zzcyC^6CMMo=Cj|mTmseKiE5I&gA=*Qz)t*{#cQoKHIh!H0dSJ6EbgWJZ}aPoiNyLT z4O}bpcu2I*FtXj)*AxPPtr4LjK8A~$V(wUbYMKF(k^sL&@Xg%S0=f|u6N7QFFBpkB zMlxbikd4jL^J;W#%zCkv2Q2na>^1pHO*fvmWsjWI^Jc;XHS!ZeB^F0Jfja{`>pse_ zNodk)G<-$K!@eUrm@VU}uwlQ`y`Fd9@lV=V89?@z3RycJ`V|$UUztfKW@7Id{G{Nq z3i&^+U3XB^YnR50iWO885H6r1B27f9fS`a%6O>-0Dg>lSQ#x0r7ZE|E1yqnCB_PrX zMS5>a3nWx&q1RBtonUpxc&K=yc92U}@J=x20HWE!$*P7$PB)N7k!7dH2CJ+{*k?d2{$|?3tJD zeXI_Ft6^@=3&cCgOL?)+aqSL;s$;JyDb%z6wpZ&X=O~IWWZDMjBLqTmYmK+Qr9}X< zHRpQqQp!>nU+h(eV}B3+{b2IVDZpZ2yI(+@li=AWYhwRp3LB%b6fPly+YAgxj1+?X z=)~nO;M2o{@aaZ}S3?zrqj-JL4{nrv`^%`hq>EsKwXN2dyD%qx3P;>vN|fAKLy7UW z%vto>T|VicX}?f!aV__2K*^ixQg(vd5xQ!@$th(DiIry2GJ@xUI^}qd8*D+4Ji`yT zMX03gDxs-g?P}ly8qzXCgOlryvi^0y#8vL27|AY8zoV3wQy8|w-!8qO@3JN}Yg^cM zb9ej3A*pQ>NqSnou&B637+$-rEF2RgYuu63JR$tLQ(3J-YM{+^egL-x} zdL%41?w4%uFj0jP1M|G_m)M1nLb1Ud7L$Sxt?t{>jC+Wu_VV%B~sGI ze5@X7|J&T7<#8(SsqYmQXx7XWdv&X%!*PmF5T1GOr$b*91fjQ%`DyyIn7Mh=La0qD z+-tIto3eOms}{*)aJFIOU0Cv_N4)vn>bUQ@^y2w86~U~YLhOx49$NC1rMpabbT{jK ziyXJiUtDQF?2{!05jkKdYt4M8p7Wb!OY&i}H~NI64)<*>ZV?1F4~4VQEe~j%`XKWC zM0;Ajy_-0bB+HJ~NBg5kDH9Fc<5CWWQW?qN{BjC%In_~xo2&SWh36NX*Sm_$Ql!?W zyM5<>?U-p6{9ZC|kp^67wo!mv3EiqvPk&y$%DF7vf>BiQFZrrr$`XFJO2*en36&-r zwtM5GU7<}G&AQeV=|V_Wbv`*;lj8H_av8(Im%Rfo(kq(}i?T1sE^mjunxd?5nsG8w_9g*%e2QC+dg4 z!#ntB=wpOaTeVnA>jCcDepzoQByNjMFawUf0|`WE_qE{oJlVkfw!vJF4>DbHODhM{ z*MFb0I$^@q(Wov^1q@Jbz3V&f4ay<>V_Su8Z0h?hr{P4AP1T~8QlzkfcC4<~Smm1a z_8V!Zpyjy0EuMW`J{z?6TaVT!ENY|eKTPR{aNSDQd9!c4G?n3DE8YNXZ+FY?8?c$* zq2m^f2m*?#FXkoBuA$=V+R`t$xZu?xfs)`UMmNzEX+^GqMzH&m8i-n^Y!6r6y=MLE zr5-al&WANwNX!&&g8wzMo?*r&L_*&z*Dua=-#&T2HOQw6o8&pGP#~&M#JqVdwtA%~ zouRv&dlZM)>l}_?6!6@5M+6YfE$;UqF@6I1+<>>+qwY2Gg5Wnws!;vXnv-Pi<^bc? z+MMxlsqNJIL*f&TSC!dvWCz5lr^gg|1*zN=8FJl8IR2Nup{aefiM_+Jf|wwI9>k;# zYzIaA#Nw8sXiVpMXsd!S-0{Zpsa%9F3}d6B6E`NaN>z0^NyX1V$Txm9sZlye?G8Z- zk8dzBu$HE*d2P^7QB1ICAH*u^=AC}M8?pdzNr7_6Xvti1CUO`NvNEy5% zG!#xqW8EnUk7+8-ETQfwn}}U;9+qjXVL!ow^=B53>?m1(#LoP?n=k1Sl!LEyTAkUYlPK-0!tjJmrFutkgk{c#0ie8wP z9p=@8gYWns`7VqEwHX2#?4I}G8vaK`Mkpc94r?_;Ij`duQLo%P`H#tW|lVw)_MpA)+ zynzpIk@lFm><4HSq`6(0aUdQ1S))2O^?|q_j~_q&YFtIWAe|^a+Ec6XO<9V3qr_+WTpZ;fJtTXd2uKNFVzQ= zr`H*~GfA3V@B%2dWl8dkzIKgyFTbud&_vwXx%UAWSt;S7}$PArjD$DNe%H(?( zQTJ^gzt9BJ)=y3pK*7JCXn*4Pw0g3qIr|gM5^GVsp3%h}Nd1vm$cBfc$Z3Z*0N`P^Z zy~}Dc)2(mS_cc5<6$zz{e<1eGaogpGNX@jkrw0?Ft09xBAruv(@#;_}o%Cws3#chZ z4*8Fni9>?yV$#o03X0PL^0K$oCn-649fo=hQFQ?TC=@xTe5S?3#Z^%Tyo|ybGF85L z7EsYR!?i#1<_|J5HH{?|!R*zb&&7ijWvA&MY09{=P|7!9VGRjhbEdE;`2M_v!IJgd z=kw=V>)7oj=Ttl~3n@BGkdcQx)!ol0ytsTf#>)@BPlP>UF1Dv?Y-t%Cix#D3l~QcZ z+15$++jR}O{w(sxx8MtKBx?1OX6Bb489L)AS!3%j8tMK%J~h@XFUUgpP#$V4CyU0R zbCt!wh5@5USx?4xZ;l$Q52@Y;zb=Svo`YK3d7{a+Mf&i70lN?P^?*CKpRjd89m@pe z#J`$cXeZ}y6YLH4M=W2=juV0UYk{S?skD{*1qd*PAW;DoHUTuL%%XSFL}m0yFfRt;g_faacq1Rycn7t4n!3& zkzTkJkNg_(M`pHUvP?6x1IY7EI&CrL6atM(t|(JObs7rN-v6pw!wnH=B(E~{ zGiX9Tj5iO34pMt{>tECUKIeDyZr&Q?E`kaz7jQ|=v*#_G!h(y0j!zWiy0k)ZnvI#J zFyz^Q!WstETV2J8Y-~CF&}6O@b=2*x9+4eH6a1wS~+ETHW3k&cH8HF{QQ{4 zo8Vf@F_oMD;0))RVzGYS`;8C?H+^fe3He>SKUtJsSW+@FH>WV$|1(RMo`uZdWBWPIkRimmJxk59N5~hh`%{F?hXt< z6?(0rr{^e;1WM62;KlY#t~eGO4;g*Zg0HPTV`u(-9BsgiWS8aA)ZS=ArO()pMTc_NEPs^zP^5}^Ydwl`Q?Ft0XY{C638n9{i439iH&pWZCcCA zVl4$ZIWBcGQ&S&@lN@(27)-R;f)1Se85s$N)oyK7?(Nkcoty;9z;SBoHHaTgY;FC* z!zr_}TD^9P;BDUN=>oviC@d-(nw|~@b`5_*5?OE~G{_^3Mp#(rql$^uT15tL(k8osuN*NB=&~mA@XNMkYt8PK%>T&#pR_{c4lAy)0Lf_Uz23W z!z)T76Lu7PG2-`AY~C5spZj7DdnxTSyVyOwTW;Q$&WIA)CFi17VXwm>auK!br@fF z<=~uSI1;hCNY5@P81dfFlW^%anZ5?=@tiFk)7Q7Nj#JUq?VrUjWt~2A<~DF((q?9q z)w}EVu4ccW8i6U6AoL*;Oc#bKliNBvI$#tr?5BdbxD{2^)B;|=F5?Zz!1VPXQ!_#h z_x5(|iGrg_l{F^+OnL@SU$GN+QBhF=dzgm0;lWqKk?U^hXPzH3_1L>%8%`iQ$jHk; zZ{v}X5e9yf{VlN~DF$d)iKTkB?UgQ-U1!|58>1v~V-z6QT?)Y`Km03SQPJyY4pj%x zmag?%ezO^jahpfKkL1-`YUD;e-B>Wrl_V}F?6&73R4%ZwSzz*KrRG|m!QXw4Gu;WI z<27&pun#Hz9PobGIX1Sc4D1U^Dh6RIhT-AiADMdZ>3DUoIxiRj2g6j;7N-5p78ehC zZ{R$9fKlj)Y*+FZ3c3|ctd+idveSA8;XmAs^ zaJzJ_m$YI;?Jj)$_>t#fVY|9!+&sPj=g9`!*e1EvoPiFNB1W~h-xs#(r5I~Fvc0|B z=CU#DXE9L7AHpc~N%8#^cf$C4fON5gdIS6*0epJ-!CCqxs^y*@F>uqp|4BCgkdU1^ zyWb|rU#{<|j2krR*S%)mevV5sqdpx~rr_!-hV$CJ@u(Iqi|CJ`Vs&4Lu`XS16<3P7 z`eJpaN5HyY(A~qMp|$mj`oX7T^(S4|@Bz8G0y|sl9G5TqtEDJ|BHjvRxe+B~N%xLR zk^d5roZ1ge^#(cpDj6%Z)0P*4AbqZS6YF z3(@iEHp8)l`Br`3X;maDNk1F9 z4Tp$eD+ULV?23_BVJ$$$b8>R{f1=~HgQkxzA<~XBi$&yHW0ocpLm>`5@~agYl#;?h zNkz@Gq;o~TIKtomkb(Q+Z5EfYu$j%){%;mCprg_Jj}GdWJgdRsAmRxXu- z?L@`IPMtm5Q1OB?C%gUQ^qy@q9X!r{JU2J@@X@2A@DGIEIZd{|SewN_rtd*UlJRGS zcMA&(6dyD*bwx!*DNgGMdu}`1J2;R=MkErGh387pB>cKF!yUye9 zw49e3I8gn&b*x^&9p+eA8mf4X^Qeoz;dbcwantYKhryo`*UNXK zR|kuoEc**=+mhtNH{d`2v;FvUYa4a-U(s64Vw;| zfPmq;FH};2r{*`QK18v!wA7nzObJFyDCna`x~6)j?mMukVej7~6rP7Kz%>DZzET%~ z~5h;1LyR#mP)zi}(otW@LqtTqk+E2@0y`q$tmrwqh zntGX{i^VN1E$wd!=QjtBGe({AJrEBOYi?T))66@MGuheMSA%f1wFg;QS#w2?lGgBX z{R!P~=9QKxv>8`9cD}i)>J`Yq*C#)@E-A;=Z?4X`z-HJ1GqvV414DiCz1R)HL_!O7 z!_+{L03UkgZ6CgHB={pwsFaYA7N*+`2oKHq#EyRu7ZCt$TKi8`D79K35jHe)zr#lVr5l%_AI~8;Mr|BvdzxN z7rHdwMDH@#))rb?Dgl1u(2*n8-nqHBME`_54rfFh&*gH7zO&%bY68#LJ%27zV#SsC#IUuJCo!~7i*b<8HJ80Dk^@_LMd1I9(NgfL6vHN-gF9u*_RLD zG#=~{ceb~)7*Tt`D}q@hPOwy>&*`(CovUTyoe&7>5m~N-;7?but*u$w)@DFlNH@^b z?3OYpx2GxmRBITA05!J|W?H<{&ux>THIrU=#h}!`yj-fawY8M+E4DfQ1`{{;vX^qt zG7|b2*)NUBgSGUdVZ9_S4yTGOyH*w6aq&ZAXA=_>p#IV771)^04HPLQNFpUYHWxY- z`Si86L9B0nl)XI0A@c{B*@#*=&kbCcmX?N_2OmA+XE^3#*1yAq#bSGVd*2|D)?%ke zaG)*U8yf?=QdD*y-7qvX?2`X>`?|-bU}R(@fb`v&DA*IxXZR?cr4%E1d+>xGH}Agw zyJ#4U=!|PoVc}KCt#oJUH`Rx+5x~dan;oowzE(qT_;d}gbLn18brWBCGf+4*CLf#E ztHf)3Q4atk9|k6#D(bY>gIv0!jTxDl7M)3ly@&)32w<>n6Hwa z2n2#lJ+%T%yu7lqa7n&V<;xMN{d?G#GcQZr!d#Fs=i4`6QT`+$rwsj)NPr_9DJraB zmz>x75J7{QmBG~{XKO#+m>!8<=~M*Y&|Y9`n5>e}3Rp?I@acK9>*@&XlAu-Z0_&E} z*T;v!C^bj%SE&m-PTt4k@sKE^!MQIVFW+7|8h+^>Tm&VREbVh7S=i8ZirvcEn&j3U zCR$CwQ8z~m_<^q=HLS@tt_r+?^#TEx|M^A3&d!dXd%h!)3No)NQ(b;A%pBvYgJ7&{ zNcMp@=n6^xXYPcs++gJ6TJ64CBp}DW&LZK7h`ExvPP9Zra?~7w_`xENMkHr&0*OH_Zy~{XPd#|;Ijh1ifJ!V zfVVO2&d?zZ%(i?d^4m8Ota1UbJB2AgaoVY7>I#{)#kWLos%-$ygWaxeX$b-Ay}3TG z0`?76GXDuYUNq8KZzwG#{sK%MxN0wY4854aVTd_SR!nvzTKq^2>%;oigseXC7`#kR zPmlH7vOai>p`thEQS?<~>74Rh*r{BvT~EoK6}7J5dw1{N1qmSOTNFSou*;8rHAlPe ztoD#FIXDYo8oofG`1Fe%ho@2!gfYAGx{aF~=XY0@A$~V&jcWi%?w6PdM~DQ6f$Nt7 z8rw6#^v4S*hyYu=JaA3cd4Js1;|cLR1%7^hRNR^wLm;jz_&!=KEv-+9i6npn zYUl`-FG=Q4SRAH$rzw2?FVI%dvJe2Q;c;=n0OKI^AOZ8M%zyvqAnXNzba?x}2GId) z{|c|er2l=a{cnTA+D4 "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$5" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$1" -> "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Listen" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] @@ -253,17 +261,6 @@ fillcolor="lightyellow"; "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.GetHost" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$5" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runShellAs" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/logger.LogErr" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] @@ -271,10 +268,13 @@ fillcolor="lightyellow"; "blitter.com/go/hkexsh/hkexshd.main$2$1" -> "blitter.com/go/goutmp.Unput_utmp" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.main$2$1" [ arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.Put_lastlog_entry" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [ ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$2" [ arrowhead="normalnoneodot" ] diff --git a/hkexshd/hkexshd-vis.png b/hkexshd/hkexshd-vis.png index a0905fb45c9cae247953ed2f698393050149bee2..8f7378759ca87c805cbe1d04c314622a4ec03f5b 100644 GIT binary patch literal 583066 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

T;0aD|`gyNsP|(g`~jwArG*I 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
obwq#W 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 z zClIoLl}{z`%f8W|QU;>!*vM<@;DCN~Y*?m9n-W8dohJD~vs4N@R*HJ&&O?QrKQGb@jLh92SXMpm$?ONIQe z!!1RE5S@qXy%}3R7LodQ9~ndz_!p~#y`-QLYmZ(P$~`V@qMwU?KX*6}>||joUZ3*V zoE;TXgnAsuD~TI?3^vI+!}*@apZLeXA2lmO-&4xRC3fzeuYpKKhA98P~LtW)FIIA zhX)kDwB;qVI%70}E~=BFZ#});$SG%2#_u`5xz8$M^7lo{9WDzos6$cBDK~FXjDq)` z#6VWcqIvoxe)Rjq?b%v4<30^>ze}x^apw>B2hwDvQxO*pvmrL;dJP`r_XD!;hh*Qg zo8E^=7d_i(%vb)Z$duQ|&bXQ#cq(CAueRSi?M1os#6Y@0yz<2O--XjsV`6V6lUh{M zz}2ny&6MR2YdHf0mhC>uSUNp((uIJNq?g?H$U9@4j=xB*y zQaYo|^hck#%g3K1#Oe~&1JOj}W5mui#Ete(=>*0r`{YZ)E|*x?$F0XySTP1bU{-3_ z^Ds3kls!VjWh!;b(uf-YccZd7rbdG@bqE^#3->;DEG-a?MN_3(#A!0N9E32s&6EZV zV96rjKZyaB?$n_dakfO!G{ApQ)>&ox9t#4^#$Oap5thtgVc`io+(d?dl9~OhhyY^1 zn?uf?XBKD}dBIurV|TqF)w|P#CA$$oUqp2h3Or4|*EjS@{L|t6s^MY~;4e|tLVInZ zKG?Y<428cj^l^*BKtcft&`+W_H<=nMZNXdl{ zaaS5g5P{RV z1EIVe9Z^Pyma5fO#qfV&%;My|5W>0ucRH$ze!cGr&{SWmVX;IH_aBP<#?`+$ALFkB zrz1}Kupv0)JmO7va(yWwhC?T7?$QlbdA?)GTiN&G#%!5$zIGG&FQ1pApQ5B&uW}5~ zrWjt{_$~MOO#!&Xyz3?4;cB8R918zAZ&89qvdu@fa3dafus==MU1}nhCIAMc08VMB zD43O%w%3==5d2_`H(iH(_;9T11L@tVaS3Y53_CqM+NLvWuQ^l_0!x%|9OA+!D3v6; z>!D^y0lSaW4jJHx*Q}5UMU>rz4_Ij0-#Ap76iq>R;lT>JjM_2fxY{meuJ3U09HljcEAz z)F{}hs$EAz!ToYJ2005obF4H%O%J7~2_w|U0g$s6_psYoeTXB;Y~zofEA4CwC@?Wt zKVG3hh34&feNgH23VjM%JXFf+9AM6mHFTp{Ck75$WfeM1xV&$Fb~TC$49c{C*l}o7 zDAXy_Qb+&-l`&hDeaDJJA5|!#*J_GL2|j{|5Le?mtk-Os=uP|6Z+HO;iOoSv+vJ1xzv{;w({1eY0aoEnz8H(IUb^68=;!b_M{?ii zhkq^Sd%0r%FDDdbK+ha>L4y!n^SW=hP^?8VfD_{b;`i^z`mH#k5a;sNsmlC4^7a5{ zyl!cM;5 z&BOVT&i9Xf7@k<$7@FG{VjZ3kom>EpCh4O5WdBuk(>K3zz=Z$ENnZtoL2UrrIi~=$ zoWbOM@jN%t#x!Xj-R`44tLQnW@N5}ePOjziZe}VBidDz@C6oOsU7fHXJy1B_RUwT>|0Yl8ZcG`rm>Uw){|XYC;l`2Bh62Rt5Qh@}2u)e2!GccsxRZgM&s@ru^Cbn<#Vku7Xg&!z&tr?y@ipbVpAPhKCIbq_ zj*7HS@MDeIIH+?4Ha1gpU`Aj5F|Olp*|siMXCfW%X`~vc6AV5iYmNNU#+FZ$sZ3G$ zpdoKP)=k`KK$kkJoN|atmo!wu{R35KrhkT+uWM(Aok)q?v}XrN&k3E&D;@;u5QuYG zU<+C?6%I(sUj1AhLx%$bJ+j~(yjgvRgZz1X<|amv+cRFq4yVm42D}P`K<$c2ZSG2s zEyjP2zMXo~m+{#6l-!<0(o+5>m3P z(HCc`DmAaaW$vtV->dBoU>8=ph+e?g{fO5?1f$9}3uGF3dF?Wm^eiTve7!QZogU36s5$Ih5fh}Ci)FHSty zumyLC%2;)Z^4o0$03bp`oAJA1QA)W(s}fz>uoZTz5nZZ|_UP{1T-~w=0BA4$g4mKK zw%lG`V1;SD_AcMEu?6ABjahgulDeEWDIrR6bLu-0z}K_vC;QsPISVA&qQPu7+@C)% zeu7H9ui>@M;750Q4K$Upd=eDwP?h(pE{#kSd-uu~#P%+!)^2x~s9EKu0S>hJbRGo` z#=jL3y1pNz>fcrDI?Ey)E!aXWFHe~blrOn^WEY;jerT+7fE&w&A7>M+JD@2VUv}C0 z+osA}zfW-7RQeRIs_IN3jMp6EZ={u{Y3S~{k(8NAt7p(hTRkMtI1t(!iH>l$@%@#n zLGiT&CGh5a_plf2WMkZ@_apPC&#o7i<2nY4376g)wQe|F6b$IszAj!+1M6hMROtn= zM-i`9v+AC7(&e=`0>1P(c&(eI^C{4qNmQ0t^TT;vu=-z50tjBg}vZ%7QZn<5q~@WzW`zKd0Wrs%dAw7u;+^a ztPhu2WndC4HFV5lwc3|9y#&+9?*z9cy1cFqyHdt@ zrNTxeV+i1I-oL(+2WnOou_Jnp^ zw&%L+H8;Fg&K^-C7t`12tak;%N@|Lc-ppotatDTRx=birwilCi`0wwJsMbj!DpPbj zGo#=B>kPhc;$EJR$?nqjaoOqcB*{Jf?Ks%+y<1Ju=zZd)i7eY;&hvPINfLthLQ(qD z*BUgW>Tq3T&{yNf!%Ri-Infl3b1Q^BP3_*P-!&M0f|=7+egFr_`^rsocaJAwplG7b z_7M)0ht!4hLKuplCCd>V_FZAOZB^GjXtpENg#UU)S|7FLdvFcCyH@!mBnI0{Jm| zY#V4egLJa7B@4-H3SmF}YxNgP%>qp5J#AGhjo*ZtLK}!@b#>#p9U+0Cf$_@?EW}Z9 zRi}zeoq&#E{0Y`to0ASiN<&+lF-1#Tfi}&;9jv9HudS`mSoKx@1K-MycfJyS<^(}Y zt3N;hyBN09)%7Je-8|as-SQA*{Z>VZ$qGz1I_q^m#I@!sJw66@mH5Wp2wwIe0VsH* zCE3YsQ?w5UA*4ec< zDde+Z+WRkU&cfdJR_lc@*}d_$7r_PC?Wklk;JLi5`Kes+n#t=|tgenTkuChg2e4Y< zTg%zw{ul0{iFB0Ru;H78LqV(gl>5n&;tz#xRhrFfXI}Ob4>-10^&WtSE3C9x+vB}7 z-ESyK`eG%OV~OEECbfF>x7e4*p?}{*P~t5E;gcsz;iDJwnBRjCWrB%Vy3>*1KLukAKeI&DR@N@;ASw1YDg@n!vJ% zUC#Aw&nF^=`ynwfGatWKW!JlyOB5Y4HRM5r1N8tUg(r{iY^L1qR|sh0%sZ1mQ%FKr zSO!hvUd6gwLVqt-d#Jpq_@b1uslaluzyjiSvlJ_LbE4Lx#c1NyPn@jnS#m**cqn5+ z18EdPi}B0raY-6RBAJsB>gxWk*ZXxHzc#}uWaCZ3`Y2IMO%Wh-|HTIja~YW-8#_B* zdRmN>WOTp!OtFs{a59Y^BDlDRVP~fx$my9I%T{pS{wxDmpgp`h-RdbGcQVsG6P8~| zhO(V)i5VhVbY7Kr?ovhgN?tqg}gL#^8T)o>CwpHj; zlt4=;bWSl^HGBE71OCfZ$_#V&yd2ZhUlZKv`nOmdg581ELU?cgYzgXhF^Z7J!;8zo zwIdJrSW%CwqiYB9Or=5pdhz?$Cu?3)Y8v2;i2#-aHzp~mD!XV=JM%iI*`X#6axyVd zAzIHdmx;J~OOuD0gFXg;+pd4x?t8y=hAz}#S(^IeS5|gi?GR?lFZ^R^6FJO95XQ&0 zJL%fUwRz%ebz|Oc1x&U}B^j`hm?N#Jlhw4;*~&4$FhwE{?1<{xc}2Cim$XOQnyJZE zufMFWiarE|XSUNvAAjzpJTHi8hWkFc(s;a?K1LFnaXnQ!LC_XJGh>43oGcx3(V{kb z*w)xscM$!ZeN~|De6$rs*!yUn>0L)~-FR-x)ry0OSv$0u^w;IrH02n6_$w^TDSUv; zyx!#vj5REx5`!e*h=|6HgX#o@RlvJ@7Zc;3G{0V^z%8Hom=Y%K;6n(|LE8nY}pCePd0DrK-G4f zjMHQFkM?Lh`hMPFZd(ig?i~fp<&o7(%{vf>nLIOXZHBL_$$B@$(4x5;n%lGORxKXZ zjB(<%x_GB}RU3@7Q{tU-g%v3o1;uj3{*O2zjit^h-1K6@mx&k|#kNsL%)^0-Lugc3 z_vNq8oZ{%gnFI&~QUiU)!!I>{DjD>Ep05yL6XRnM%}m#dn{(S$RT0`Y|9oT-m9XG_ zM0eEQ1C%_0S)o#3H|;f_KQd7V#U0+ZUDc)3O#@c}@Dun9Xr-1b)Xp3NrpB!z>=dQ| z4`V$T{=dby2LkK&_Y2^ChN6Z0#a+IyBH?!dd=8dt+$)#u4tQNWKK^D7f=E#kkK1Fp zv@!M7%c6RhbTtt)t~f!*->x@T%f^vn+kH-esyDkh!W4)v_41~Cz63VUQ``A;YQk7SwvXZ97O&vj^H~}PEl~axxT+WS zr#zZ2)!yAL+O;m~y8>1|{nPrdq`Cf>j)oWf%;@OQ=t{|_At-EwWM@ZkP|!>A+$iF2 z#fSSx*VPtjy42^^outsFS8_s}4fh^3J`Gj!ONXzbx};-n;K9+mdAkNXUxbq8m?=#V9s>HZp67`0Y>De<)lpwz~qGy2~qmN)?cJ+Ggx6*(1^ zEJvL;ewGW;B;^CXAx~QRKZ%4N+VftyP1GY@88YV#jEwYvB8kyAQ@yXcMp|kH21fNI zxcG72(2J|fTPOzN(OOA&b9HV~Qg_LBe)MS9(^9M${vUBDZxHFxES3F!1gOf%iarwy zTD5e$KnwQYSiOL=zvdm|d*25dqtm;@1ZC0Y@MQfWZKR_y_k-u~JC+ z^kR6hFakR9xP_;IfC~`rD($E9QAA&^WIG8cire4w92u!!fddWqFb}grMklyLKAA}S zxnedd=xf~zn6t4AGqe1KV5SR_qT?d(Zf)&SV6N6`E?lM-2LwI^Jlwao`cry$151Dd zOM1&4tWxFI&pEUP9j;D!iytTthLyHlu!(;CX%*8P(QiJXsvP3AFQYA=U)_AZ$caOP z&t`v`x31E66Ft=Z(#K3^zNss2mW-zz!%uY8iZdkxB&-}^&w{N}XZXr~o57Sr8)e>; zNKUvq2_2yR!C_Rzvp|*%m|>{OcXeMJpBsn(WfLGBtnnzO`*s6uQoZ%tlaL2M2ACA zdh-F8N{ijvxFb!uE-gSB($ixO3yQwq6;F+phV$MpTw?b2nxwmJtyKiGF z{-=V-vq=xA1dyMmivh|{lpuL22`$x43e11|6pPT#aA3h9uM#e2KeSpJ&@S>=~P8xfG}<0^CJltj4nBJ3&R$&jwzMEFVBv ztz37DQ3(jrns;AmEc+Y`g-8=EWzm&FLgA6Y4qGwi_r1BMY3oAMr=#NjRAeL}CWn^xsAPM3VZ5cZUJVm|G^^roOe3Y*{#RcQ)(!Y&7h54lI69l9MOcPxwDV zQUZ2M+oj*YTKFIHDM5J5f2V?TS-y6;pQb3$5s7&i z#UW(*Yz`Gbo`fcrPl%Tw;UxkUdkwJSd!~z6H|q#fINj3b>nR?2KJCUVRSd(UBY)+9 z3f;)WC?m^og!vDJA|S^iz=KiAxwsevcz9SyA25MQIqTk81_*n3dDKK$yS6ya*#P;T! zQ&F9+t%@25YXHRQM-Kgyu5+}Lr}dpva|qKwQr$Fns*CYjapL*R6ya53?-2d@1qEP@S)&x!X;NNZLS^5dj~SR zkgAuF$@9GN$k+dX0Q4aB%c5xtEF6CV00L$IRlhArc{J*$uaD#WWv;N2>CDCM82I~} z!h<8y3VZpG?h{G-sFz`$4kJJ<ZwYAgG2?wzeVJO52Tuu2YLc6|W!282W z%np^#d{K-W_#iz!Z2@kfUjA7$P*W@B{+bUkixQAgk$Fc(KP>t3Y{Mk9)Z84I3Jw8H zK9+Dv&uiNjgsD{+yR&dqe%i(mbH4+lji7QKp1fXMBQkyVm!IF#&;wYp251eV~b}w5u+p3V& z3!g+p$2;|^U9+DlEw!_pg^J%pvu3~E`9KbPn;xuv6QdJ;%!K^T;{2*PY>la?A(`pG21k=?f=~2}KDk{8ve)y(7u_qzyxuYWjH672d_JLDW==op%$wX$okOZuqEl5h zyby!ZfcF4y4JG8gIGj4JKg%#3p}$PGYzGjxj_e$z36 z>sP^rSF}JPbdlgmqHHsy?5Bx2!;cx96URfp^x(+486x0I?SiHhmW=1Pp4wr?q(}dU z&7_O8SWF-1D%kNuS~pkPhWtf(?~J2m&;g&@0zp|7lYl)Ihy*Z;b;;9IAdo%mM#a?< zkbx;_`K2i8AUugcPO+RR^=xgq>Do*Y%rw#!?0dccE_lP0-%IDya@;iA+DkBg+VRqP zv?ngXL^^WeKrB;avx`xy_w~_f=0Z8d+6$grtZODd$#%f^fRqR?ZlJT>_jt@ERiR9a z5lYaH6TKwdae`=;6>)~6Qdeb8dNVVh|Jsb0u-FH8dwmIgLWLkr=n>!J1=FQ z1j)iOEn@sQfVbc!1k8MDFlZrz73fld5AyOhvi~39Uu|r}J(2pKV z_>u?-oILbWC}(13`U7Bxl+UYy3v7R^G$3Ppk=Yy|T)Mbkck>Hldnfc!u&QO99Sa|q zdIw%c0(_-LzRvL6+?;}anhKk?94%ix(t8QaFh;BL%uM0jp(HmbuGElUKmfPCleE0d z;c4OaHqS(c){1Xg2+En1sQN zq*1SgZ(OtJ!DIkZKGJta<(XGw%HaD=a;Aj!dT1akb_p;BwbxdbLk2(i>iVEa(yua9 zxIzF&o z&m4XmEt>PlFrw2g`^HoR^y!(>kkd5swU}_{Jkk{MHJFs?EZ6F51W040Y$k~Sa)}gm z>Ikk-_F3P~f*4)$FfWu0==CFmqbOrk03PflAu9MkHsB>3Ol=MZ_%=~1Q%MFgV9~sC z8vsaDL$v!jjAo{7>WNU{A#=bStha%(cG05QB*~2s5L;7rr~%n)F4Ze|a1y9=aU)io z87%M-16H+!O87wQmP;R~9QK;kEs~-Sf%|u)rWQ$=Ql)L`?3D1+MyNIIt%M?!il|n+c)yG}@E-60 zjpAx;M{R`&g(6MHhPgSR#%UYQPaFW+!VQzN;))*IZM|4E^1H0P1c+ptM>^*h9;{8S za4Y=OK7XJA8ERP``OmM1Bn#-kaFdH00Vx1j22miSaiBFK^Sw z-ZXoJkc$%zhMI||tgs&h9Y(=rjbo)1(=k`P1woArrYYXsZ>xOKV=y2}F29>)D#ry- zu`gj%*onkT#nIo?3r^M)!h>JC3kym%53=6Re*KDy zX?hJ`R=R`fCKQi2f)h+9V#h*n@wKQ}x`Pf+cH?Z%*SpN?_4{cG5HQHn78_-af`<0z zyaPWiIW;-7R+K9kJyriI*Pu(2E7I1m*KRc0a}#hdu;3u1OC7TUsHJ>yV?NM}_?Y;z zmy`i3U^CLCO6O0n=V>_D)Q^}=9^VE4G!u2mH-#dFA~nc2hsN@~DhYr8GKDfVh?YZR zoy)v(;Z!S|2w(K*mYcuGJ3vz2vqdB)tbeOc(1?J%doK|LGgVx(NQ$3%y&?Uvv4Pmz zyU|FURhJ1*qZOzyX#vc^Ii>`e(@1l|9u8D9kg$0eJ!Y&HQ-%tCN*Taml`Gmpgd3gadLgP#^gGI8kGV zw|xUiv;RJgQK|Ckh_og;$!s2D=#|^%+2rW{TqyWD#hLm&ZB10&%YOp=A!0Ek83?7o z52!AiOu%TeqWk5q7QZ%W@pYa4!x|F2w8pYVkvECUxnLg%l1R3JW=jt0xewftu;}HG z3+Fm;#GULiJjhcu6vl_!#`|w9Z^eR#(8TTg&ySP^Q+9>x7k}O3Bz7XRd0~<08XIhi zNKx|_*UfpCRPGAnf%9%IpObw^q)qnra``17_5o%0?YcRyt>d|#pO`UUT(UhxYBIID zHtl@KQn58S>i4u&F=_SU6K9WBDDpmCcbr=`4ZJ&q7FYZG2#|7>Ndc8jeBBsn$=Xs$ zmU7J4KagFIRwILz_;Ir3|f*P!8FhUd@t426wa>RB13B-LbfNd%AD6x3#tdCFO9EB=$`d zBmW>>z*<=&_ZL=7x^yA8otMm~I|-hQc!LBP$ebOo1Mp;ZAY=Hc^7_Wc26lWIz)R4e zvQFnSq zku(Q*?Rz$l+wja+5S5|$2#f`+rPd_Cm-L@`2`B*xvB!x=;KT>eyZ~tI42bXhIgo*m zREX~ZR0cJ}^ib(AU?Pf%o|D^gDB-hv)_O zS3Ni4sGuPePdQNQ$wO4)1eHSWnnj;L7uv}i)`0lN15TaF3TF8r6Wk}t>#efi%)*Q^ z#YWW%@2X4X%kzfTzr!K7EvmHO}FLJc-c~!Bl{Z1U_aCl(PugCQD>D18K5%wiW zDJIExj6k%HOaybry492eXXEJdkfpYcN#p_m%1aL-wn= z>-K#9vyJu-OjtiN4DToeymr#px+!BNO)ueTt%uo9JezYI@CVjnGD(?E^ z-}MQtqEl?jHDHhJ^%~l$te5t1p>;Ro3Ec4$0bUs0@S`>Fqx6DQOq)^x+sxua@YMrG zQDcih>f2*+c@=yRT_vMZePR}C(T8ueq7wmEzC8t>-pU$bBj4zZ_v7&L9VfX<&&N0T ze|N=RImz9apb5$ravQCQtsVaQru_+^pj1xgAIgtfar^?zaQt_L5OunGs8 z-L6S~>4@PB?b3JGD$&DGUcuOj$>jgoIDa+G)X=SBRFK|-aHGUoY1fcrGa(!?2umPK+fXU7ASu0MQ$QIAz)U}3{c z1D>FDQNiy>f#lL(>zN5Mg=lCQz};9gKgRZmi8%#HaX!(|#f@2WCEVViE#IVIVs>#Z zmtulIWQ-eg0eNb6uq3X)1&xJ3;<%6tB_FC?i#J3SrY$q>QMVq@d24Q8FJAu-O;;IJ z<@a>22uOE#cXxMpcQ?}Ap$N#2ln`l^GwsOPf*mB22li@z3~fWQFS^y2jGS4rdMMD{*jbzQgFRVi-x+qVDZ* zfIx9d#RS(!MublAECNeEE$n7jj9Wfi8}HRx13uj0Ou4#-1O3efg`xmm04IAh_`{dZ zpG@gN;Kf~4ir9P#Q@}5Fi>(<&A95L}QrM8}_c$t0V8R9*<`qC@!Hqkgd{{v}Yc0P3 zEEF(OQ$HJCgbA^p-Vfp>Ko$SLyb)ZP#qW<(594L!OvjKh{+|xjKQkLvO0>!jr%1Ni zNN)aap0BPFu;w_6G8^;T4a;d}>$fl8RuAucJ^8i5yb1*eI|D~Nm?S61uxD!NV4VU( z-sS+ONXWy*^!@L(W(!Rb4ULT>O0!~wxsNx%<)8bt@avOmUP5XzoV0{^lo}ZZeE8R$ z+1bRHyLsHHzHeW5o;{s?g#cb7VLcyFRTO)4pN$8fk)|b%A)(A>gl<@9=rsRy5rPLv zeT9j-?YgMSJm*0Rc;EltwjC^!w^dnX;R;>8nZz8R%=Eo2$=_qEGX=0C{4#8Dc0As3OUPiBhKM^g6!$p#JY0X zW3~IxTw3f1icEqaudnvn(iJPBs0}M3R{?u-b`%!mdMfihEiJr0IzX}FKgdh-A6`^{=6A!?!^d!Q zYWXSC*QbvQ!=BRzpRD>KI7fp8xd^ndjfp?+i_-JArD?u*6cKxc-u+NX0Zm%)GuPw z+t=fMLbtF1)EI8S{WG8^C&Pt*{f&{A+tR{DDcmSUS5iVZ7uUOe&4iONu(Rmk2zcAT z0bc#GjLe|is5SJrcfK5klVQUZb6a?>pe6^_>@C-y4#3(ZL_n@?di6hj>tprOW)z`K zzQO6mA?tN_%g75SGpn%Kwx$NL@^b2Me0|loDrQD#wwS@4(m@-8RPIhL@nvC^qo8eg%RI%BQ4}ws$J`hdAYsv-LXjbJkTElqJvIMPbe2 zDf=sNed=-`K=)(Yb)Zz}d<2<=ax}OD&pR8^R%?*c_%cr6m`Yn4FBoIUhq!#WrT3)a%SBai>t>wyntUzC5sAn9Vp||M z{EKz8&Su7k?D1(%+rVF6jOdf*|GPOY^t!kmo2{e3i#RFdUin@;fjP-m>tMlfF+QoK?c}*pQI{nvHahmeRe3Njhd{{LT~lKwn9}m`wF7tw#$y_wf>}gG zSve_{Gt?p{r}u$x*5;rq$!2+3;A(ul(&-FsB4*kX4w~2lkw7 z1a5@6#SmL<`GfjlXGePQ16`Pd0}k7ukQtJE4l;@Q#Z=C@0|x> z^H=lLp5G=JUub9U#*Iai7ZVKV=|?betrh;`9FWEza6_GwK!(a@vso^^x{Z|5b4J#`N!>`GjBaOOEqbdw{MR6plo=(N zC-q6te2QOG>y+f|C5duN!$i;E*zX~|?030Ll<;FLz8?A-zBl=u{c|7P`+B7GzZ~9v zL-NA0gFB6>YFjr^4J`8h*?^4-bbhnzC5jj_R+cJ}WI0tjT*OcZ_6<1TMeMLTb6=BK zS*^|9(80lF!AZ$cdP1$QcVg^V5}s<0eg>$mP}=!gcBj05=#+lw?H^pgh)-u3E)^-| zY;@e};95(aWw`7J&imcX4i0KvYi6IPf03|!aY2Gy-QUL!k1BP0QSR+LX%0w-19x%C zdr8FaFI1REP*52yK|VDur>LkrDW@o}tgN7_ym;~1=IDfl-*Awp#scR`w%h*AQ?5kZd!qnuP z9D-W=H6R1c10_)`b9xNUe9oYwrg)H+J3DT4QK{Vazvo3I8gqx=X#sDy+#kq>51K9~ zle%r#^e`Q&i$WZF$Gr2%?JEy^prFsc&OtkTR>Q*7 zH1V|hCPziYL(zgyTUm}FyulM?e)3n;#lvAt5|x#`;THMv8ZCR=Zcsm6&P#hA zT#n0X`YK2+ve=)@8@zJ|WDH$u$IbgC$)kIF-mkyaj~)cr8*fHm`ZS$ znRtfg=hy$tt^#Lvb@0!h)&BVk#)V^Pu}4;bG7*y%fG7B%ro5$v_ri9$pK_Ho2ajcp zdD)BerB|ri+$cWS-Y33bb3KRDZNljf!|g@BV6YPd7mh4DM!CG+Vw2yT9b zdK!%7DU0?YWdpMY_E`q`Kjw$Y;1=VO=M_#(HRS}ryks2upCSj;=&2CWp#1ONWbBg=5Fg!Y)d5=pXC&$xAv|+( z8hmw!&qJ}i*}JmYJ2JkGaXmop>7+)N%%irx_AqC_NAaVkB(xfP`RS=uKkfM8a+86X z`2*;$D4!)DiR_xIsk8vqGAS03Nz`44|(jaR&CPpwK&3qK+fvNDsf|CGJzsE z#@5J-iqwRZZnxl|@n`?M8kKnxUhq)Z!LWGlKRcv*OnYQdNjV0DvXXOPAnmET%HiYl z|JSy5h1?tcRrEj3`OOcp8nq{T$GWzyJ;_h@5Q5d|yX6WX%?%Z81r2o_3K}NlRV9gm zbDF0|f04mQN|MGOh1-6R_kD93-sSK!qSTB-pF^W}+amhsCwc0nTK1*#wJyJ>@y1)& zKPoCJkjaHfoJ zsl*8{EG&{qL?b19pkZL)d3GYRmjeGk7r;?TKMgLjZ$*$V!1q}xgMF!QZs^Y}!H8E( zXm0rba9mZFZd5{t&s44a`hdsrucQH|nj$+(*uyA;HB_lcPtPF3&_Lf{RnK6>PIy`F z+5`F<3S!EL2mITL^?2P)1#c^BRl)jls;fQWP-nIF<;WtWXdqM1&&S&Iv}g9PQ#4=j+HhlDH2S%8+p zuxA;1{AA;dPIJ{x@w|4508++QaFY*{JK{IDsFhmyG&lK`M9qYV8}>M-3UT-9pHx@w8KbPVNa zwpO?{R=AsfM1{mL17^N7O1iR$s88g8YIJ7@Bq3-L4z3b0EARBrG=wd>1t=&O_H3<-YzvAD ziVLMWgZ=LB+`=W|Wb&1jCmhd+03)3fX99KtvRzl-J#&~3c@S~SYaki{hnw1O#r)7c z$5>}xi-WkW7wyjCk|_I9?NWaYPOI~t=hpBGEho}>AoBU9?e?3LL8`UX(oY-^Xj*T* zK8v$~#erZbVzM#Mqe8s|HgVNcex6`rt>EnNhy0Ao+%87FDEt)9bUy!D+KOR@-FqX4 zWqq3eIrgb61;)72FB=-0ukZt zn)Thf*B@V;z?QKpoN#05ZaaNmo- znmF_Wk{N$?uT|YegbAsT=e%x^A$Dib-Tf=g!$^1fBhp((Ga19(La(&U{RR{+X)n4V zvwBmBl<)q{N>T_h13E(6r+b0G*Vn&!l!jf{Paad8@wOz(^-~r6h)@A{GTtr}WDV4M zOpD{|v*YV^TcHmoOzKf=?Bpz*l-!iU;FUR9S=4iFx;;InpMC7LwO&9rUQ^q+^bx1}Tk2LH zp<;tBJ)!#CiUbOU>gkzf=A>j6WVAfY?o$>umUfot-y~%Uqgh6M+P>Y42^g|?f19XV zqPo;KocXo*)E5=y?{#;z`Qqbpd`hU2$>9NDc>vf$jro}?{jud&u{mmA9|=wWkOZ2Q zrNbpD8rR_qX}cGyBl9~CaF69ZTsB}%5)IZ$Z3b;X)7ZxUv%kNBjm*i$^l2pO*`ghn zuTbyg=FG^z#LURT$jHLxOe-?OCOH{dAQV9~Cz#mcM6f`ne+oq~1JhfDybA6;2w`rs zdZ;dGtHE71lA7@>Giplhg?wwNna(=VK)q|xnwfe3meNK3zj|{#D7zTko~_M>uai4R z8R>+-^iOV?YO|Q1VI#Je`zxkp)tgDXCK>5UU7G86?%`cew@>#D&22}IDW(j3iF6n% zZIzEuK?$RKZu0!-E*gCl7$!2sRE7K0h5N)pe$ge8M}$Wr1v!_YWUK;}9)~D)u-_A8 zj#}^tI70Lr-*c=ols%#2r{JaEih!I2&)%6{oz zn6&(PV``$<^;As9d~<@zaxZz<9;3hNnikKZApcoPTBTztW`dMwN1n?m?cy0nt};1! zZ=>C}fr*?5lz{mpM6>6DH=A3lS4KY9GcU0MZ&n)_)9*%u14jq1o9%P)0A%Ep9Pj!{Gl=P|^x8k52K9PFpN`^};p4C(5fy zsn_w@-Ldk+Z4kPf`+PYe6vDr!T;6(9=pWl4KHi#?KrEN!^tgYmw|xUJ9j$WFRho(2 zPTbl5Ruw>@I?@1f&_PRhy|dZTh|_Gkh6Yxye6MlJTZ!_7<0CHVQ~z2;vQGE1aJvw1 z*U%Jg>ji`$BQI)xanVS~=j3R+^XtxUk)Th;ZT{6OQT_9uz1A~IWKl1>eDA5~ubD|y zudYwKu7+|x2Hd-OyUA)e0d?^Q0MMYd<)yW4uH7xRGZcw|?Iv&!UOQ-HLt3I`n|ssK zU!$--0pMwFJ)xPp2dlBoB$(@X%6JIt{@~{Lrx1Q5Q>!_b)sTL{EOh_=;l-t%(cQ5= zK!z*KA=;+>N|Pg^as?JNU81c$0E7K%R9n-MnKKq2{a<^qNu?H0OP8T1_3oTx7|50F z6Qn6sYMEV6pc2Nlx=FKCg7LVMh`@x$90JOtQP~=tQVx*DOZaiSYLL8>**r zO-%I8Lhdqth7N&me2(`o>+GKz>JY9wi(MonOhw@05d-i^?>T~>1}(#0d{yyg%8R?l zx~CRK#J_P#L;{qRv*jSy{sa?Jp5JP8Ks^aDlvdUb`V=buMbBw`hpK;w#ki}8zBtsJ z&f*=awZLNf;3WsEp#=T9uUS=n#Nnm7J2D6d*WFp#?&p-x^S|J?rrt+p z%lI4V5D_2aNjLqT_qKrm&5Ir zx_hv*n?j(z2~LGhPF%29!Hn06qcM$P>VyrOzQ0itjejLKftRv143fAyuSDV>62Ex3 zrn@^>WpB>CJ;ZyGZglsTG>JSY(9x*|ZTty0cT00|J@!udBbsE;bHiVexvwu;S_?*< zgl;#p`NJ)Dio7|-ZBOF^y{|);GO>6^rlzIkr~gC$;+m`9kN(0pyO@-2F;$iqzne$V zq$oiF&H&VmDRJU^r?}8xRUSffi^fSq+{)R=JEl$)sUYz;E-AKyLTmga7h5Wd^1n6gKM4Cnn(SrO zs^5$-=R!nDfQ&R+!uALj`W^u;uz9{ji(z(7BN1~~GZ8Z}afdZqlsR?jhny8HF0U@H zDz6VK@Y@4%j~?wq9=MiNApUq6vQO%<$DIPeY(ORMvHrY_k`6H!FRhYVOzMtmQ;L&S zqy#qrPmVyeq^%nhWE0X>W!i3GoA{u;Byx}X5?vjK3)KcbE4XBE3_ zY9F-*p&TJOJ$5e|Af!dEXJAYm{OtP*SrefgO5@`XS^2eh_xh36#RNVmZ$`|HtIQ>L zZJxbz2nCty&Gt`9Mr0R@*Tvo!4_Z{EDHZ{*rx2e|4V&pXTs*u!} z2N}R2Xw5bT&rvTns&Hokh=}yQ?Bp|uAgtGnn*j#Y)AQ$P1|ldN0CrLkwhG=mpI`g* zYIDg}_hQG({SKbc{S>n2dj~eHA&qv4E5`kr3q)vQff_*`n%RjBhpjwK$%xoNi|!p( zmAnL5Ss9@~*Tczk2Wp8Akq)!v524uQJa=acxLaT4XaR?)LLgC{mho}e0)qNkMNI#< z7T`QK1ACl>%G8GGvC2C0J%Wf@Vk?FJxq|_Wut%!6AxW1=Tf@=BN6l{Y*}6ZphJ%Ew z&wQ~)fM+zRx7ZC}Pm8@xl%djm*DralQv{I+xyUUy%pIz?7&}1e=SDhJ44FJV58#8gY(qL zBoUk4a_n@mNbp8Ru&=iDz!)yD{PLSfi%)xzjD@9xD6mu_81gCL<=Lm!g%r4c7X;X_ z8J($F=URXk10;3^##z76d=BQ-Q#9oBXPnN78-K4ZvGyd}0>TDB2(fUr@{gwuv0i^? zyjb_IIt&%r4Uup6xI4Z~0yA%9$}$7kwS&K%n`{x=LH6&aQ4Tu`!kkno+k_*erYuPN z1DlbiHaQD@DF#BBG2v6UckGKOT8hYfU-Zpn)QU;Uxk!P(Q{+Z!XTAZA!^u-*#-C|7-C#xBMHKq<8r z#q~lH$4>nph#&XiPs^mY1&aw+Us{!oz+Ko8TPDky1pd=Oe;6XS5rL_}LJhZD|KaSc zjOb_tnHU0K2Ol+|;Y)}pKn)R7H}B0_Te{e6MSq|{h#v4lMKb7gR($^;`Qz&p98je} z;Y35!bjPe__xc~dJuU-Zd$x$5>(25Aya;{AxZ>36;?$hT;`r!{Pa53>AM)^*QC?N1 z)}NlTR}vG~v&U3QtrG$CBIi6^p0~Dc$^etm|Ce^XW-d0eJt}Oe5 z_EhNUl}L1KMO&KzRS5=yMs~P;$}MeA0xU=^0n0Q2&*l8^lHbwO-TOMzIsoB6MRmIQ z()>aS-SE7SYJ*I<~hV^IqYk_3fXL>c@@yEwQQ;Ch>_vWeAr3p`ZHM4@(_$$Ngm zFVN`{c(gPh?+gw9NBF!iZ=R32PGaZSoj|aEAev9yq6a%6zzEk1#}vHW*m&1un@wAkDp2<(#dv*aQN_Dt!5>4homBgikQgSL9}%oM?JL%a?(^N&pFT3*Z#E_upnI&)Ldk!t*;(@Q!P0Zf3Z}uuuH3K`ndbvRk7WO zb#)6++k;*f7kFo?0rBPTx3JXL4uKL~QKBwH8w)Wz1cpKl4a%z0(jVW;wHZ>B49cBS zN30YI0SZa4S;_mJCOL+@FVq)_ynk{|v2iWP=msdUGN?y0g1JNOS(&Q>hBNBbzw;>o z9Jfks7+}8unM{0jcXWAVwW$vQL{$Cnrw@5633qysMUwz8SM}w^D3L8Epb3Ll^H|ct z#|R{v-#;QIxtx0tb|>y`Hg`_Ee!ej^?n}aFO3glZ8cq!*Q+Be}w`3py$ir-Sdih_> z@n%cbe=U=d#_t>I95)P2Gzh%sI`d-cDRxFk zX!AdO4wIGKeZuylir7^3L9IMYBye2s@?ZS^7Mz6R93M4x#Q%9ET(bOCD1)GNh5cU+ zIV3@aK||AjjOGdDf3NEp921(=yPY`bRn%!A8IX0skV{0Yv zv`$lDA@JDTTxcpD-0xNIOgX)b(s^O3X##7X``ip{hl2%0kcC1~5g2dv$9(P=z$AF$ z5+Ri?$Xt2xc+bw!>HDcWgq9WT;OdT~qMG&a(9GF|EgyWp_c!Hx@r=IoJ_gp0QTD}V z?;0R^8QS|2XXRP$v?L0F%$kyXZ>XkD*_T!*sg(hV`M5+rM!s|#-VcFas>5tugnZ1T zi&=PMg}Nv`vB*G6^CJ+U^JE0SOY~ko+U5{<=C0zGl538XvdiTWIxK~coi7>R8uSOJ z@xF^0*Em%-sZ*tf_>#efQ&`mQKecK;KgW98!rYMzdLqnwYvUG)LV`H5<%nyxRWNy9 z;r@#Tma+x`*xg6Tz7z)@mF)YCRL*aQhxK(;?BcG}a^^E)6du-SE)4F(uB%e?BfE)=^K z`K-o#`D(*pFmh+$Yv5~JK!A^j*R2$V0~*?9m_%!wp$a!ov_PAZf%=(Xz$b#R!df8q zkv5L`5r(*(?#BM>i}@-&YcGu-Z`nGyls(cfgdca+H#awvze}X3l>~iRB0q6!eJ0X0 z#*vNho3VDQf&MB{O2BVvtOd{+^xm%rn2kADc`JT68?{($oUcD9|5tW*Qg(ND287?U zcXQR9^hJHp0^L}!ua*MGRgkN7UQQti&Vrq#aGU37N`85WUhVtx(+lQ-QTRN1GY zU2OeSq)6pS6!%+Qc!lfdWaDw`om9}T2V68P-1Dt=$m>dyjM71oQ^26|uZX^F0zxAS zto1f@_ubV(Aoe36#YDs+y#+0Oa3Kxp7hVRdl`jAYNi`)UP>z&STVTPC)z$2*E(1H8 z0CCg-GeSs0g8&|rO1yo=5Z7A)@vPmbBD6HWe(FUy&iPiMIzuT{U4B@7PIY&AJFSKq za^7*xa%NtiEGn@G0WiZ?nuxL06%|ZOjP2(8o*iq=2%rK$l>-FN&904(&h{DnwsR*| zD2W%#8B3xs}{Y3t(Gd9*I z=!q6!nQ8Jm*R}?Qq~fzVdt4vkx9Z`g&d@5Smzey^`%+y>$d22mK_ao@o7oyWCRD{; z*ZL#59oNb5C1RAoqp0e7`b)PktMdgr$5HZH_`eoekr)~l$vxZN?8-Ig!PR;P12zIR zbP!+9=*sz8mT{!iJ;KQ$_BczLsj%Tj34^dJVqOM1YIl7;~7w<45vD5hK^eOD@ z)uu8+stPKhAT|Kqb$=ibHlvGDaB!I;0LAv=xhci)(U815e$^g6eZ(*2H5G#FPMhTF ztgHw;`XC-1kjhc~SX6=)w*X)1sJnE)TxHoB1N@BZk($n+9a? zFOOai_t!4+6Q5&c!oFRRd4A^0h6Gf%;dNO)&p9RezXl?x`uh}{wL;ediz+EyhD?_| z9qfIEwh_-GC;R>i?Cj7WNj_CO>%l6YJxX_YuB;C(UXch#3wmFWe28!Nb_Azt-*szr z4?Vg>$1Hqu77a`?jih+GgIjI3{mJ>1^=Fn&Dk=DplUY_zgQYaNj1I}z7By8mx|{Iu zzVuIgYk)^z?F(xn3;|T7Z1;zNW|fB7r`c4K{#ZssmGDj#OgZw7l(3DnOIsHFSLdPM z1y_sXgiuIvZqM64Mi$@K=W3+@&3#S8TXM=zAspHl<+Ky^rf97{F^LdCasqYGUeF*= zjBs$YvDeG3%r^6-s>**7d2f26yv?~(cW!rQh3(ZjugGD?fx$FDg4IBe{-e4`g=qWl zc`9Wo`TRm-Ge59%iroXVl#8MkuTWC{E*d1z+%4T`GWyGWN8NC|NLCOFAJER}sYNmzOg!lpVh9e6_HgA!rxOIKO*JR_ z;#>S9H1Y4)^5WQXS`a8=dndC(*KMYFGE2%nH}pdI`GIu3fBY5>4h-;y00I;~j|CDa zx9<0=vXYgjm6YdQxgl>AT?#@G``FOZ*4oh4P<4BL(y1=|F4!UU^yGxusDnuVhtyFA z-pcd6X@IcfT7S*N?sG-kod^m__>LE$^Nujv>C7<@W%c8yTH;LY(ec)2?#k%EDHR&S zr#!zqk?lo*0qK!8Nj9X*N3ftz@nY+cwaKz`)-S})=zJ{E_5e;g!Ya5IleKbn9g|=z zQ&Bx5_4}KdBwba?QwkN;L$uSir1*;K5ypUrqN*F`;qc*ph3#F^>)1f(HuOybcrx%jS3SZ?&cR0fzG+Hk^mCUd?!xoY)Du(@G6>w-$eR0845< zSyDz;0QN_2N_BU+Kdl2zY=A5M9-5mKLWIxf%hxE`Mvb1X9Hr(8J{iD8pE{ONDh|!1 zKW)P3YGLp40CL(E9UddbjIQ0H678}EUiEgAOU(U4e}CUt%2eJhTEzOg01TEJ;G?CECV6X_r|=$UHw+8zDU zS4^BKaOx}o4INP$^bT&$aU{C6({u%%)9d7iU`;L@7eTwY(ygn<=nPX*lT5c&I(FZD)U9A=Ah0&}*N zXrK{OS>K!s;y-3E$;F$pS*~rwe5$7?&OBcfvjZA8Wqoo(Fd zdHi~8J+?Id7Cdu^A;8T2G+I~>EbKu`ffMe8EWS2*J$^Sc7KYrj5p5fir!1Ou2S2@q z2}%j{`CMI*4k?R!ftfD=rG{3+P>*JyM)%fuos$1DV0}Lal>3c0| zftD?B>bp&$`&?!GPfm5G@=dxQU*>C#*LV};AK|?`?}nISYCTDLwUXmio00(aM*p7-7h1 z=fX!P*uX=Md)rKu!p@3H*?bMG{&g?>&H}(W(aD>0K7xLZ<1d^!(d6uQIqE*DUgF>? zoe4ioaa^xw1mr7KVgDxm`ez4uW&JW_<7&>dcLBc@)PXy@>A-uDVe>o4>0mGDVB9S1 zZ7JJ%3VI15BD&j(Z4O;#ytCrxi3Dhvx?07P1hHHob7tUoHy1cFM`AH+=c|?E#n9{r zIby#U{@GI(?{?(>@l!h?`RAeIRyw$I6$HGeftbKZLutvkKU|Zki=*@D_dLb?0F=to z7d90`;F4dg+S7$9UQtzs)EUGK#Nl5hx=cK@zU#?RNw#Dx?NzeDCX+LkpKcHyyTWA0 zAwgRqoanVF^%*JkgatEH(p|6DA<=hq^Q|5SfAdrYC zs{jWD&B;O`VzG~-Vf=svF_AG;!2OJWStB=$X=fm?RDc|AwqyYmD(daj>UKW+)>mx2 zA++{nfrge20~qGAdWpn^2x2w%IMv7nK%TQfJPTfz`Q^7 zwfRY#LH7IbJ$F7eo%RWDRGJ;vXFbsz8j{&$D@y@b((q#ZC-xo_veb@{JMA$AR#SiX zcP|+k@zN3{Bl0S3F*fnrnR}V}p@9-lr$H#!$|5%OP}pyGZ%}CxKPLZj|J90T(S|~i zCoJ6PFZ`-g+f8j&`-?m%P{kPvJ(l(*K(&H$ z+3}VxgpJ!Dm~e4OyYGCCo4{KWnQO(Dx%W+od5k@~X}7)yz*d_NAOJ3)H0|~!zGk{R zNck9Y0gORZU6=%KK-F{10c`s_RU1HFw{L2Sc((hcBV6&l*@8GR5-N{Vf@kkuKj>*D zVrF}-_+B6LD|KL#E?jus5&O^6nTPXm=4w<{mhT<=+?JdJ!wteQFrd(#qy zDhzMd3JQ$a2-xusQpLf2ndy3?vMZ!z9668ikDQ${5bdPgS}qELLUmoJBG+f^@B+S#n#vc3IZQB6fcg|yl-cvFh;~L9&i(haYN@nO4 zJeKti(;8#w%xi~&u(5c|Y>vkehgwg16GWKPd<<95$rz2m=N*T%8{tq50-c;-fj}Ik z%AyNnw8RS4>Yri=>dgv@DW}wO#1{&GEb~z2vXT`3#9b0+i|uhP!JO#ND{O-}>;Rh@ zAE9MWR%~yOX&?Jio48Es{O&`Tu{h8{WR*$HClyW~0Ov5k#EZBsnEe;XJ-=tM$6w>Z znY2{Y)lrDj2mk%MJzOunl;6>D*Sw`8A<%CgoyvKKytbB!f{YS>DePUhmAlP5MI`#R zv<*IOzV^*x!a>a21vG+XKB*EB3#qFa?d^Y_`HL4TquDb>C_t7=U3Gj?HhOZxP}^c) zWK4|{U0%je-oIcW-`LV-z*Gf*=xCw9U@0(i9APd-rRgdlAV8If67`kxFT54P7pcK* zcq!qJby1}(U+lzb^3~`tVo^YVI<0ROif4Di!lD>jfqLm42R%~XEJ0LVRh3RDntXp* zodz(;O#6c_#XZG{B}Fb7p;h4@AcK&r2Ef-K7&R%1A1b!M03U2tUU~Ug?&<6iFmW$l ze0p+xN;z=bg~KpLVK>l9OBe>^6=&UMq6iDFC@26>*tbK3ttN)X73l~yy^0>LWDjs z3HhaCnfJ6jjxo?31Jr}^+4o`8(Q@bK&XDdmkFWa3A)TIvOP}t#@VYOXZ~Nj^>OS|H zT6>(o8%S9L#2jH*a7OmNVJJYU(vkewm&VP#pg{d&{Y{_UfEXj?el8B85mg{p*wo|G zkd6h%ymK&-;DI{@%WC3mVZFB5IypDGA%X`8?ZVc z$=(w|GF2)cz0{K;MPY_>nzx>AWf#vtZm*BBkJaYzi|bfR{5a1sXo*V;o76N?2`UKx9 z)#+x}^XuD@;x(FG`nF9@9$p@#*a5+Klg~SxR3}%7?Tjz0$ZwloXYbR?JPMoYSP$Pv z_h$Hsd5Mv}++B>+SIHz2-wJSYK;?#tWH{{Xjn?|GaWsqNv&+CDNe21rhw}-VnprRA z);Bkbn@_+Wb(}PZ$leV3rdep$jVI50;5y55{Z0C`zjJkkYXa%0j8Pj+|NiO0mIWXk zx)}!Bw}>redTnOdMyejSXLkDyK4#xL3aA*VqZ4L$f=7jODh+K2Fzy_SobN+gp0)QI zf;~(jTuujUF0z`&4F>A!20t?sgWt`iV&3)+9n!D5SFBzPhfkNeK%x1S`sI_WIG&|~ z&=P{bzvgO1wIm&2I|x`2RBEy4N+xipM94IF9u~KixsS~H9guX1o(nJT&$)#ldLpNZ zI<66duO^e}^L@^RdbsVIApvm4DL^ZI#!ksn!T=H4-rb`v0vXBE9sKv#l@A;qvU=T860|tO`$tCae}myF zN;}WxH^m$IyL!LnDtJD*4b05~fXSQane`RXYR{kF%b$p*zBsx5wh5!{-m*fmAM5YQ z{oPWdK=(Za?Y~}&G#niw!J)hjN7V?KoOYZp=i`DRrM2W6UDJbprc;tnbHy-IIXW&3 z3(zksLzyA(67es%B98cPW0(1N1SWLb$gfXRe}9u!TfKK&E#-(_+^m)g(>IBN`9A&&~-&LgAd3^#qw0fCellq zrCJB`i+bv%?*oLvxD>R49{VTOmZ=qgDdLWPZm)%WZ_HTQvAzv4swuFY5;=E5kw~R@ zJ*EUOi6KlfxLLdT)ye@7K#B|>*an89(`52b@u!iIkoAZxH93Ji#E<7)qZKO;x##o< zuZ9nnNyYNx9*2FanwmDlf6Po+Lj&K(6w1fO)YxKV^6a!2;%%LsZ6-OndH2&eWA%+q z%x+(06&PV^ZI|Zw7MW6WS!1N~*nxpi*G^a&5`BM{39_Z@Zh&BxSNrQqCl44AGfF<@ z_84mxlpZ5b5E)y9{Wr-C!0@pK%;S@2Hnsv{(OHpRZZ>O5iZ-FPfenukk;)6}#&s;U;F zOZuyv&CUP)O0&9!(L~%*p;a0QzU7>^ZP=`Ef@YwnKStabORau9y*zcY0an>cY&V?0^v5}=@E zV+(xlz$xgA3XB@S^!!d`Oj-0Hx{sroqqYfPGB0sjc>B45a|%@q3=OpO42<;Djr2^6 z^t2fyK8A|t0aOhpri!!kv&xEdB_-b@7F-!DKP!82t)o!nJmnQAt zbxwEA=w1+I`M(*Swl;_HAA7KKdE7q~4^<DG|DCgp> z`NFE`@qPa0VkwI?X2r$y^E!u#b$ul&Do)7r?C)3Nm$h;M&&hnvW)@>rWfk0|VK!)v zFze5s4-bfzSynbLWpyrWLxr_wmt<`#&Av_e<*FQtlm0` z8s8*oY5&C9leV$l@V_ZBQv3GRoEWNieSLOwadU8Ra&|OA?rgn$ZL_}Vzi5u^%WUp{ zt;Z)*96xos2H>?*D(?9XLA^M^h0Ox3P{oK{{ALomNxMA%!DN2BHo_LnIz4Mu9$T1@+?_ttK68M9Gm=m&7ceBii~Ic?^KFf`79W>~`Eq4hUH;Eb!8GA5 zE|WbXCb~gX@?L*dK!|BgXQx)f!Q#|M)ySfb5Z0vR1FF;ms_s?~o)H%N!mMCILamJ3 zfH*B_GYstCztFm@zT#I>*DD(}ojkg9vw4D_@9?J$a40ZS*MnU{;^Sh`dFUZI@p9 ztid-dc0>X6)Y%xjcRy40X|4QZ#zKqm1_N!w%4B)0#svm@?&PO+4Q*ea7lVH$GR#kz zs5@bJ++B6i`?oLcSj}Dm<{MO~`8W+Ho-YNuDi!81)j#Vb!AoI$QR+1lO<{X-*`nL` zB5lr70~ATZYVYnn&K7i+9ybonFAtvPaGl;k!Ryv2rnR!M z<~Fj^WHMJEe0S<9-oaTM7N47) z+GHH7DsOwZ361Ok$Vn_O#`pz{oPBhDIl#5J@EwL-*ZX3_gBmjL`SzQMq;@-eIVQP4 z`84?Y{sw#xc3H6|Z$M`#bl-SRxox`aLr>SFFWyg%WaT4HmtZ^Nu{`Hsb zg+UV_0AwZj=|#xNS;)7Y?EUb2a`kO~5*dDqSKozoSN^f=_zmal!1h0|vHao7^yic^ zGDcwm;r)}&X@(zYk-fh%4BJ}U0$Ktx(s(mJwn~c6Ti@&X@60@_)AK&?#~Q6COS18O z1(>lwM;sVOLNVSPbGcxNla1~g6qWjghGO=8pWrS}=%;q-Xt_cIg+6_y&cc7#9JLw- zl@-{GpUcU>vH=h_KB(;RQ0`EKF)VHjC}2~Qn^y@JF@kh?niriGR7#O#-VgBI=@Lpq z-o^*gZ{F{Wz7(}4at`?|BW*~LJ)2D*zCiEDQs+j1Zw=c$MDW(a?x0u=Eem9mldNgz6L;Pfm80m8yVvdJ{eRDgPltZ$q zYoaAKJ9B+=cYS?)uyZnF&UlZn=hvcY1O_H2in4O@jPqZ{M0%Im&4%xbU8bCnw%8|x z*p_VEl$<)9N?Axi6IdLIab>_RI6E9g@Fi>e4hT5gEJ3LKwUMCwlr+=51KX0gd z$j+7gA7Nh=7H1bUIRp((fZz_n-Q9w_I|O%kC%C(7aCevB?(Q1g-EH6R-)Hx77y1I` zig`KHr@Okks$d@{hF0C1fr;*YdJ)p-TU|s!l-u3gdBZ@vQU=bvX;&gy6z7(`Wn|@am|P`7*r>P8b!x^^25fb#2h7cz z?__aSKiLdQ)j*h$n_fe+;r;htX(`!I6fxgk2%8Q*|%jLaZ*+EBN(@kH~A<_Ri1M56BNl68oxZth< zjn*2Eh*$7vZeCdp^63>S1S&}-5oH)n1soM2MNsxOg~)LdrV9hczW_ZE2%3#`Fc2;q zH#z4{ZqC$jnS*8Rluyyw====#!dS59e&^$Y&v=}x865QoCa(vH2iLU2QLW#0X8b)R9L`q2H9 z2f>%L$ew>JG}bTNT>AEbnW>?x@p+f+*DbhwF>s)1lHd9DR$D=XYUIK6nelCQ_XgBB zySk4rTX{i!I$e*eBjr=SFkPCM+Z>!&gVvj!5n=_fb5G~(xm8aN*c}iCty4Kn{lhEN z-OmD|m=_uAz0@JxV=C8z+qh@0GE1l(KV7N%T}_VyUjh0vrox=qFA5Bt7k)G> zG6UGNP2m52W<|O=sYTP$vNzz~D0mrRC6Np7!omc_<~;5^#d!lW?AaMsOm3g>p<#P? z^E9^ii>=27JVsH>2-e@#tm|sBS{y1e8rTtEKz?lo`hU$o*Gg*KC}28}yG;5QM5rsz zDic|hL;2M(EVq<(?wS&sNysXT>9twaw3JXLY^g%;TN?~?wwuzJLtY|a$g#gS@nc4* zWm-;xK*N!%5o_!WHd~fgM~*$>cD6&_Fv5BcJL#plY$y}ulTuPJSBN*Zmtr&FyUP;n zHh^&dXDWjY;ho5nmyefrLv@avfg(@Xk0NXH)23foGD0V=uR(rSN_G(bO{GCirI7!7 z&`Q&F66rqipmKlew$f2M(K@IGo4L%M2G( z?b1&)5$rN>40v1tO&%VRIvK0C-BQDF2tb?RWIWs-K4*-JBzdNh#`7K730t^1_gnp5 z4FoaBZ>=}lduIRx=Ferp1`%d=j!g^${MyLQ6GKamwk5y&P{nnX=aO6s+GQVVfiII! z&-GYSmfRRs|DTz1jA)H^GhEn(!D?jjNU@Wa4nz;aJ6Ilk zVC5)1zQy#gC~IvI3p*_umsfu;_3O8s>@)B$TeN&Gx|mAgxAGYI4Csq~?o0z1+8yr(tQ}bN7WuZS?1_lwnyS0%*n9l zsqf>J>9@3riXAA5GJ+P82FJIKB;9f9c-=IGnp3l32}r$e2lxE({X6yv3oJ91yXf8^ zgoA_3%BeFsYv$#Pkzl^VfPVvcpmE8zLEn9$RR3joS(!tj>@DP8>(R*}Yf66$soGue zwb`i;-{ki|#=z22RMu8gSy+~zLhr`(Nx0I=O_%U@^jmwnK9Nw}YI5>;Ska1cjdBY_ z9e{;s#6bFf-|SG=z})+`M~CI(^i~Re3q?Jc0q^#t^^C zlKTUf@wAqJjw>pMV`IP?Cf!dgH>i#En^Ajq^WsM{3g}noU2h{}SPx&Px&8HXn)v|1 zx4t^m-fZn#WrBv?56J!MWPxVe6BU$%wQtNShtRembyUj&p#p9H?%AS2E_#+Ptpg5g ze`*_2BgjSCv@P`Ww_ZSZCB16c0wRGgw-7`d9(!z;o)bZw%;%RGj3P(Iv% zJn+kJD}nrTfe8lzPiM$xnTVL`j2#SY2MJn?5ObLedztGCh$c0{Z5G#$>4HFoTPRRT`{W-> zt&nWpJBNI&rEtTfqCjzTtvm+ry7A)lRuvmcg%nl$1=zv-l;vY7n2EKz?YI7L(27UJvF@cK-{6 zIAPSZ2*;O}UD>VQKL9%MRdYN#DVj1gUlT+9=NgN?HDkhSKu@o2(ELNhdCPUtKtn;O z>&MrRC80b?a9ey&?{gRt$Khzt!&TU@o^|$iQN0!%>$a=W!F}0YtLUM9e9nefVG~VP zFVQ0=Ku3q)3d74|3H5`Il!gV^*q<@pH~jJjZ;dzI^#}i8>gi(*21Gb~)IK@yngx&s z7>fD0M?atAXmd;Xpw*tU`1#d2l-|OVb2`lqSz+(tJe-LE(Zdym_nYQ(4Kd!HY1+z9 zam6&0|HB1n;(BoEoouAfhU(xUc>M-cw+*?kXZb^sug-*q;GjP)E3u;?JqntdNFI2*~WvXRBd&78ax4nnOUf(Xs@3TOiyQf`k`^Kd#rTl=>9On!~ zJy*}(C1KExd(pKV?wGW>LlTtLf|f%wH@Ep1IgD*9Y`kw7Ig%68)e(8oIZO1^yf4gNNz(1YkUj2+B61|r^C>ABa9dU zrYoqbTK*X!9c!bV17W<*hV?H3uL$Teq*bEzytp zWFGZUaT09ROvd_yg9Ox%YdvkER&;YxFmn=cGqykXyq_Za3^|*Ht6kkt{Jdha~!Z=DC-RmaV8N{S9OA58fP$)=(*B=Yj6~)1~Ul z!cUoO?uDF-o9*>uI=bm6eAVk7%1QFXln&00pUsWN4XV)3l6jItfoM%uWJ8ZH^{;Y@ z33I1788dF*WJCo8$KNmTm^72*z>;GDzD6?E zA`=re0^noZXtfn|nPZ&>BR~n|O-K zn$E8h-H=l$t&sa5kis|n8;at6M={B{&&e``|4A7Ka=11Ze4{>YG0E~Ft(R2kSKoFY z-fX4h(%%tT;&vMTt+tM(M}>ufygDRmZr%|mwG%Z(vOV~Q`*a1}EE|*dSGhbes@C6G zCyAZ9&yEcfzU_9}iseotL;S*QYG}gaw{I(7nE*L6&>>G7amv9xitGgQ1#|#ePl}pS0n1B!&SSy9Y==$qO zzGf%*Nq?bVI{E_<2)a47QBL!BwVMNBW;K<9fG}^>*>-_068f5N-#lca@s*sMqiS0C z(ukjs{_WnrjV{1(u^}=);u3{AWqMzo`aL5cEk$-dQteAANr~8di`bhO+|{2}oBZWz zlP#Hb^<{fAwS?MmyEZ0xoTUf+&|EH8wUJj^Iuo>A6O&dDGkuzU@_aRtS^rtM*KQJ+ zYsr2lFVMe$VEY)kfXlJwcC(0x+BB9BP)l0Y5^uBA^we%vQXviZbr>FL$C2}W{uQI> zhtE4DY}DZPHJ#)4k+(PaJo)KAU?u@jsgS{Bx*hxHIGCpxxR)5X^whMB_JMsRJ#61a z(|vzSs!l2DYCPV_JiVI=g6W5S0fPt0t0bneO*#*{vDcYxE$-V8kOEua#EmK{?#HFP zxZ=X_UfI8M?Qv=u z1>wZH58+y++YsFBT|v5NTUt1~_G98Yd3^MYR~N0G&8S?KhsWYeNQ0B2$*Q9#7Eb1r zU-0K<<>!c_M^=COlhxB54^A^Nz2=+J$I6qcOP_ScwGzZ#NM#GX)xCr6iCEfey7 zU&rSk+6Qjwsk8pt*!HY;P*8vACd0{s<{rII_`;*=ts&^+pq$y|dJ$8X-#=l)FZsD2 z?M=r3SjIM>MY7hAj#gaV=`BGjsenb;c8K>#X-q6PtbWpcK#l}_rP_L12yc;?|XJUzaWW9a~!UEXE>o(mS(uBC4Il-cM(ukwAg5?%==4* z`iI-WU9kVQq#Osj;_<8wg(l3R{Vp>y+j~698r@ufF+y%`uW|JlST-fz*uoaNPvcy! z%d8;P%jumbjZbaqyd{*e)bgiz{)mnmKPg*8q(DoTG;N_(2LyfQGbo{{y`ib!Z$?)= zb-}V@HV^iaaQQx;uAYb9G5_I%SBfGuxzx-K7!aSl|5_5*Heylt%Y6#oqbZ+>l`kAAOBFg1&fGx*v? z01wr-d;M~H^jYz?01`XwfBYTnB1G$L3oh%`60$g0d`$Vu!*`M*ge<9{cP1=!=mXgi z+#9<_E^L$Y_CbObVytD-_^3VyMVX>hFSe(BE!k0P@-NDkUvXno5SzPvPg~m?Zo?V+ zqJ8Pa%zxBKWpzP1C&gGsxIm)u7|hk>dF#0;rYHV25AU5u>V|JvYVLI{vS+S<8nzw| zb!*o$LfMW7W)kcJ`tLhpB5RLyc=&NBq>ZrH{pu}+(5rTb8y6{))$G9ri$oj4dj>3< zjAMIME3;XGL{DWtIWh6K^wwo#Fp0JxN7EQzOFK@FjPsPY!*A6nQtUrhJEe6>gv5iEMf6J2-NV+Yy*s51#F8d8kR>(9tQUJ9 zqJa1{n6fUsAL0%J#v`?x{0J+J|1nvPF|ePrd0sQijp|10c2L2CVm()_?~1ucc9y;N zqvM(Qh<|l;)qW1-r?^AzQ{=UTm(E=ouSv6Zb@Wkj5CFwrhs(;jlDm5cg^K8$xai!l z!(Ij3VBktzwcOAd4l}(h53RZ9b+7Sb_4&LgeFpP>?&?W1G(TS9q^9ooSfk!H+Ow}G zM}%IR{n{hjpH-ekq^7qu|F~pPO)k_oV*J2BEEt)YCoTf(|N0AY47)bt%Kkv!9`ep< zf7)z~$1KUEs(F*uWfs&eY8%E?KE>5MW~6zgu%%SQ|C;h#y7)m>#9j+&goRG)2ptj@ zG49N*`$bOlxCz)#qml=9JA6)y9u^5Nqz()8KH`-!0F49vDJfubc}tATC#NVcd9T=N zu}{FLR-bMZzy>iqSEc;AE$Z$*`oX8GyXA7^PpgSeo&4jc%V_AUHGOcGt+Jo5tck3Q z3|>gzPy*S$^The!I2KcXM*_S4d@ML$8DdH{uUmR{=E`#a;9Nmcl+`)U;7X&`8z9)> z+>Z+S)qXN0B15yNsh#zDvJe(X^ji6t&3p3NPfbZz+t!A^J^bDveg1$o>1Ycv8XkEJRyj+f zGnXqovIh))OtZy;P+QStFE}|Dchk+rCS<#p1_2zggC;~)%dZqZ?G6sk=Y%iD&Z8M) zYkb}8x@R`;ET`MXAivr53_bq_I+PaA{*kpD-?Gd+w@;iga9G4(8vGCA9oN@vC-9#9 z0a@3#TR!U!;{Ef#4c$v~myoTeKAGS96l;N74=GBZ5}b%a-=$#UxO>skUP0AoHCd^AQEu16z}Zb_~5~CN?!LmyiDJN?{$SXgqd}VTFy~RmP=8yu>Fj zKZ2`hp|&aog2v^Y)^?JP9myUhvwKU_R3l^+jaCn#xc0^abhC4@IHqfd_(;DdUfg>9+8dOv%EujJ&kvfJ&AXeM;O@vOMZMQ;GY)O=u zZ}pzVx^7~iK;jbe))OyUn3icc7O5xY2_oDraF0X~UpPpLDVX?}nfORps8}g^<*p=b zQ$zHv5ERGFqrN2GDV@dx-N=!_gpBy?}v~F=Ym8fj6fAXOm0cCl~$;sD7_{;4c9b(C{qDgSyMzv24NGx-{ z6xjhWvBZ?5@Nd_MqMA_Qits#g@)<*xHvI_$h0fMkTx<&qNmzn%Pf4wAiNL*v-W?<@ zPH4+$d@s15tL+~OI0n`kHAT+}2)|DLHL=JNfdHAcRA)BXm8I9QdMvMYjjk#amVNx{v#XvzEtw%V4yM|Utm})l zlN+)-?H07HWkguIN(mPaXTzO2aSKlwKZwo5G37cja9-106x++ce4o(U7WuVI&sW#i zFQ7B6j^<;!mBviZU{s#5gQO)jv_yW9$$IexmYmmZMv~f-nhXK`U(EbK;CkGpoY>}b zPk9Wvx=yt2?XlCruS-k4A}p+2I}=?{5ziB}EF^&!N#lw9RPC~fr` zhT3#vUuv6HEO3y#lkMIO9!eSY8=|+O-LI65^s^S-^|Pl!tzACbNzcHGDD9ht<;Og; z&?(7m1FqPT#?O;{`ng?l>v?~i;Rt$dX4d&1dF~7D=3l`!1wS;~FP$$|0LtYQIJZuP zwOCa4bm?!M02Q@sgT}13HR--<9FP8AI{F^VE5-<9E5WGjmWY}6jVzk!kI(bP#bSEm zC!M;Q)Q^|zZilbiEAVJn)BP{evA|s(QLbRz?=vTXVtE5uczEmz|1{91fQqF0*|jmXRdfrip6AtGGL_yt{8qnmOXvgtgxcu1Ct& zzG&G}n?5c=%IQ>Eda@5Dj9BO}Svk{bcWL+t8wW5$JQVo!;JyV14{6&{dSYQhLWR3a z<5V&7?}?;mb&{Gjo-2oCGlyVwJ_fte)8=g!Ni*$Z2#6OSGOV ze-(;xd|wqw`*_KU%Hz-Hxa|2*(U~7o)qU|=%8Rk>A!UUgPb=$u(3bpZ>}dIvzR@2< zm`K^Eg^DM*MqnT!6RopKKAXNCQCOlLqvd=x;~&(si9TMNLsiv$DUtGZ`4!RskNab_ zx>N!%>esgKj)$|W7)g7)s$u*CKh&m_rWTd1 z_3oAaDJ@BxxyCRm>A0Yoi1%)OVFI5lmE>t_We1P-!7$v&5NfwIJIHT5G@yS&7BYq1 z4$%FK+CzQJgaUD#Ki$|Q{y)HLVOydIxZJQ86OTM~7LZ$8QE7Qm>FL{p>py4#WESJT z2c>chtc+A@%2Fo}FLI*UqZh-){*8_D3zi_#`#AuLFuTzNf9#NcpBp16lKdIN6^36=E5?To9n zbK@37rs5v74?qvCLB_``A`-{$oX>?`AM9Zw4ovZbFDFG%*n=J?KcG&YWQ&GA2mY%< zn&pv+7VKN>*iT{aHLlDO;jb@8HlH!N4Qkt6aF;vX_y2unJ);IDe(?SJy*(O@aD2^( zItb5LU&Gd1V{ebgW3p}p67bfsR#sM57oTSSWCw)8@_zmkpawS#9Srl%c(?&%+0>Y8 z5*VFEB_k;!ybEQme~-RzRz6PH_6~DSWp(_D8n#`C{)pId;Goy*Qg?r`NTEeG;&zL* zhOX#mHx?;1iQmTEX7j0t+w`zJKB#{yC;rh)W>OY?_DEo?QqxmRQR^+&7O5w~9Bg$; z_&(9R#)9GLTXEYx75-VJm(1x>U z@a27rr>Aww!}x)`ne^w5RKY!7?^Lx{>x_!;oke9X9Pp~KYUE;fmGat4q4NHrhzBpl z#H8}{3_-0=c}s;n_CXg#xJ^K~e`L7-xEm6H{lJA}BqrmeWM(C6#AfTHW~->{tYKni zqhWr?e6PV&QP%iPL`^#qTQI`VUr1Uqt7rg(;x}a~k)O(e%kOV?bTLcAMhmPg3-heW zYKtn$3rT?Br1FBA@)CNA>LG?2T9RsGSQ;3x(4Z--BCDk%2!x#0%1=GK(t>y9|Awtv zp}(eYNaOsA2-Nc5!Q&eKy7m>DN(+KY!sFwPkN84dd^eoS+1_p6>jpl#qm&I#>@V6(|yuo2r76DhrdcqACL-PGc*%k$?*x3K&>-cslMKx2K;_ zvAU=2sJ_?kiwv+g{jrCTDeswWd!W?!sUYP?fQ63c^5s0TN(+6NmoaVd74+ETmj$Fj z+rpkNAO4Y;&9cXkjS?>leP?gV9f%CSER*mN8IudxaiQvKzAh;5UclvxUR7-YBmaQ} zGNXJiS_c;t-EuDKJOx~B{W$Me6h5Y6tiHz zmR4^oST9Q)1k!dU^)dL&7fVUa z&Q2Q7;c{)$UD#+)mMr#C)3qy_;HDB5cd3(UE%BRw{_<(qRt;>e<>0*Z|62D@l}RfI zHXkDKgmWB76z(_vC zP}##s!a!4-Uu3pSNUfFNJWu_WA096fmPbk)=htVzkXI0c3L^gbc4)q{>S1!q-=fV| zp9a}yr{k>zUZ1woZ_?}(%Mvb{zh^{>zK;o8=LE^w)>c<_k% zwf302E=-_bXHS$Mzmt>ElF*u~n(g7MX{{xCScoq=yuzMh7@p9@fFlYpJCh+qCM6sE zd+&XJ6QpJ#nfFE5qM#C+i~cX+8z;8dbQ6~3Qe%XNPn2pr4cOt&Gi;}bu*US(CGYV> z-`pzEOL-+Fks{|jzg9Z|fzYEWVXMXgf1z}ObxC%u*?kNOGwkmZMKT?DUL_fmPG7~p zgj5-tHk$9xqX7;}v;0{${&vdF87NZs$GIkkC%czm3@sVl#3r3F(Y|rMI}oWZP1`s2 zAitrLDa`<#W}5Y{C;tRNpsN)PTrlZ=-;wn1DjJ4DyaXAyU017|wsNEbW~2TydVA9? z&eeL!?@tqa<$GRUeO$t@h#-)D;m}1ZtBI$#u7Q`VgO&eh!s8A-V$A+J;@{1IF<6Km zhIMWXGWYr(CxqM7wRWfrx5a?cB?=Z%$180t;o_@^@_^_`U|&L}3RQ*F2k#3XKkJos z<`f*w?;{Sws&IST;etmFCU|?S;FkP*cK(F2^x)oq;dP^{;bp5gqirYY!NAX>CvCv% zq9)AsVGHx)Rh6bb(FyIK?*ZS*P)gChMG;G;Bqb-Fk_Qdk zrNNr|68;CP>kxvJ!}^oj+1sTv=_>!+wQn3F7zAu)X?9tyjNVs?6K_ zMhyx5i2_Hh#SKkvn$lCgXrs~SB6SgBb$J-`H;11Sg@A;bjBQpFE-5P$<0X)$vVzNA zNk&B_`H~fns`z83?JxTxHIf#u{e`4*_1@Y0MoCEt|Gno%J=+W^z}84phJ&K^vDuq< zdGRhk2(ImZce@BO?-BMtS8gk@+?FQirTa^u+SDi6hNC$|0jRQS&CIUY(>cYp2N7LL zrpmr|7DS5?L_mVfIGp4q@q~5&RP$xmGWy~SCa`G2HF@oQ_SE_L_w=X3Rs62bv0kLp zN?j~@$ryC*x+ytG;9o{Lti|Y;tkeL;6g8RBN>eFyf+P|z_e9zbd(7Y+{V64r65srD z)gKqyua16+H~vTg&sqMvNKiw77IBW0p1_ZeJ}-n(a6Uwv=Zn2z*t| z;3X4(T3Mrzp^T6c0R!psCF}Q% zXhJ7A71k&z44ckQr-S=*OFL882f_xTvxR!CcJ?eDk183o4Jf8GCcCSeztD0JA>?8M zhi5CkfWmebr~C5EVE3xB<X<>qwX*Y5NivZ)kg`8^YCe z+%|*t-A)dk;Q37Cm$MEk%{Egx+&Aw_J#DTt9abrEx#|87ke@>ic-nw-)+%I3R5ZwM zY}YjSXJPXdL`C|WYw z#9Z)9Owd~IT4qcSG}m4%Few0-k;4xgiO+YWZr*Bna6tt>c!mL>TXCHZBfQ?Y2pgbGgden9Vb2O^C> zdKarsrcaZ3hIV=@2ySsAtgcISIh{qje|@|SYN+E%wMRg9i+C zArAj?)gCOkl2xG}R`FQO0d^>aAc>!X%E#0GiDRWJBo0+>WSi>D*MrRjr8XFBh&?k< zni64wD#12R9~_159Bg_Tp(|39#r3=AyBE+w_!%!`djZq)VJUR~ zzl(rwx5jFWrV@VzC2t&8>-wGO5}c^vh{tuHn*Su)SYI}l0XjDcc8es#JH~6np!J|M zXqmk?)-3PB%6p{V9^K9Ukx_48ry}0b{+`xp3D4T<3uqc5X{4;7JdKZjEIn8}!D0^l z;_RmD)|w!I>``PU>*HfdMeSv)>)8EN-xS&fHNYN6x5||+@*$2LXT3hzopu7i)80eq zRU2;P@faviPM|JX5rN+quhqkQ?-VIsiI^I;H|@bfSpQ5NIFP)N5Hiog@PY>k{dKwB z`K1ImxK$nq4D6Oqo10wi!FL3jt-3^#$x!}WaFq7 z83F(9{QByeUu?=@Q1jZTlL6u7Be#<2wPd-Bj05{M=7)UZcnD3~w>k#{wY%T)Ek4Zj zL1)~JTbnD%f+^kl@@AQ#1@X}Xz(011pT9vewQ;V52-@obZ_V7?S~@>8Zw3?PD<@vc zS2$VTCR7YvG>pc(9u-eZUKF11Q6w`9ks^VW+2Pope82Y7SFp>N+-RWW;%4y~d^Q3e z@uA{#JX^LNG+Vv%D+3B6Bhm0{c_#V=m*#A}`pC8q+==53hYqk6xUhKo)rA@XiC70ktZ0)zDwwrZ}oE+scFTmI+i zy+$;e;2$5Z$ibc*WW`+My4{Bo=BYqWv#JUZSRWqM<8RLH#-geUzkcwxS6-Uyvvu+` zoL?s!_xptBvEhrOMO}q}laY}%-d?vk<5aDC%vx>|zTwT=ad1lixV#)~Ce52UL1X$F zMQZ;xQBX*V$Lk~TGoI1uL5NAFVi)X_l(ynvDSPQAVK;?V!`j>!4zzvy4CqV6?c^%N zU4nyevdu3^NHEe=T2G8u0y*;TE{cnLN<&ZW^!DVLxf;6Xx2-)#$7y#iiD(qT_L-`l z-s5)XVO06yDYaA)!nB&GS{_kiCH0ZhT!`FOspXqG zZ^(d!ZoSn*l@7P&=g+(^f!SiXAtZBV?lR+L(MFG-Udt0QKjTZ_e^by4{UmB#_vHrY z6Df2X(GgKxe|@<{6VF)m%f93ZKcJ%z1leA0R8Z2S@>+iQMXm8S=g*jVgByB-?{eOz zG(jx@Pn4u@i-51CJU2I6Hl?YiuGZ0xjk$So{$wlqeG16fyX3Ms{PvnM&I=KTF*$r6 zwhwo;c}An#M14bY>3qIB;jTV>#j?0<*lHZ3(kp}~WLOd3=IrUDVWtCNZDp1SSLicq z9fqp8V14NWppfQf7gt*B3$ydfcZco&DtV!U<<>VSZ~7`u6Po*8yNb+=2fqvz$AqH5 zG~4i=y|*4s0R*W34lO@tmD$c_z|F>jMy=u&dgr%7YL1Fd)nsgJPsjGhHZUqgRQMlO zgt25E7WtrH5`uO3Rv*=oWrOKe9b#q8_@xYd=4ijGF#($dm@Wt!*h1N&Bl*&fL8vZh zSGVNet_$)h?_w8;M5NPWx}%cWgUaX|s|~ z-ZPM|p1%@-nJ&^@ce&{I?4@OA$3StkzE?O}%Kvp+S;cY9CN)id=|IS7|3#TGu=&@! z52Phbf;aG7PwuhVp&gq;K3+6HMp`_P`goM4=hPdrVA%|qV?<&foc*fINsIG%etBP$ z+f-F_Zu(34mEvED>Ce#kpEd9Zu=qh?9W{ojlIG?LF?jyIP-J9DYt1!hJl zmzv!4#T2}*!EZjUS}p$0OI?~$TQPppM!E9XKCWu5dYDNz&Rv>XnbPF4c>Ib|@PkZf z3+!tFiVqPQ;6=)Md{ZSO1--IYSo~q*$|dGvv^<#0MCnB=X>xroM z*C_%Kj?P-!$NBZ8;3^hhTX2}+uJGyji#38j+hMu$(1TB@tl zNW~TV=I81X{*IjJw4&XE4vMZpVhC<4d-GUDwWrJTc-jJ-we$VuhNp?y)2@7dN-pKe z9kZRJyGL0uJQFpX7Iqn#GJ@|Sm{9IQ<`2(Im?dl$?u*Hb!*Z*-E%#pkDm~&+CPf>% zOm(G1{+(s?IYuQ9I}1FpTnvFlagsL&$?ym|Jsw`u{a{TH>s|lYm>w+bmzG)SuPman za}A|o51__Q7C)FCO|C?CE)(o?34*Uf*b2-MeL*OH9)1It0^vuB)i| zeWO_wc?ZwI;iIKI4by7~eE`UxVMw1T7&oa!%UgDD!9Ky0=T09x*vEI>?0g}v!>1W- zwyPoJVLtBw3lhgDibd%0dBL*aKcc#t{`K>|m5Z^|7y+3GR38I`AOu>tETK3G%-1D$ z~p-CcQ1S4=~#dbs7~CR9aLxGHX010=3)#NdMl<@yOKS zaeyobzqST|G>8iF$|pfG^(z(qPs=64kAlB1iF<`OGQW$67;{6LGQ(MFwSzIe8?6y! zr#$Xd9kNbkq-12Ii$-M~u}!~U_iIN~iu2UhBbJ1~84eKq=bK@c87YJ=S_8(kt-e&R!ib8NX^wqhA z7G`C6<@Bp!r1>ioGOgy68ul}g<|BSnON)!OwRMdRb!6YTvqPUmSlHP`f6#jE%mw%JRZ>S)E~xwOE+BuCXTVVL-Q{gHMU7TM4p=pY0sOXk= zWv2hoQN_PKZ$51%+`cWBjEHckgJo8fa$thgrqf8QsJ3JnH2(8(61B|V4ai@I!i>y} z0QNEnpl%~J(ZCR(Ob-f%SnqHF3)TmKLL4nI9BwfH44Q40@Z-Ss0U$-gL74~N*O!0K z39l};3Q9{21U#>+IMrZ^6BaCJ-yyd{$HbERtNGsF*w5FuK;I*ropJu1uobknQgRG$ zJ)W%mi#G_aE31kMNUp`gz7_L|Kt|?*tM8;^WT7CVNmbFa{A0_qXdSxqVqMaiuSsvq zmngoLw(mM;Hk)jdUN#~%i&NVH2TsO1uHDQ}8Rm=Q`|0-xW$HdB=#j4)MtSVBmC$G5 zQ|Ih%Y%`hqZi)sU`;#cJ6M=~&>gsi5TwF;(MNEHMM%xE9XQ_Xe)!u!=iw}O=HRdux zVrGAVh18g9`09;_GVYSUfRqvEq_{$z-oM9=nIx1V(Z2^o3`JXzDdK+e8aigFby9ve zR563eg5&=(o`t@{-n)AZIOxVF?9R>3-P}5^WPay^S0XDox(R0qW|0Xek~IyLV6+R& z)@vEtbvP}fDjOR+p`t#a8l{4}wH%e2K@RNuwZDhP!oqTY58v3}Y{%ghWBal+Gv6N> z6%7OHg@OCTM#+d6By@a)z0Aq6#?6tYwd&RN!O2Uz|L++!2I#ruRCRT9%IOw-6WOp3 zo+x1UZU@-br7nbHhJE>fhO4u)y0=$YpG8t+OMPSbj$ZxD?`mmo+-f{BW+W_za$GtA z4b>HY`-G!grDLi}L)^!KXX3SYn3=J+!ukVCCP_qhY`m>~9XmK;_bncupmH)SWwD+e zvsqVh0@Eu!&d2U>IG=XxL^5LVf}grDZ!;RpNEAC)OhB<6L78lm3P{#_uLxbQDP7S6VezzAai|kA>2F5 z$jI=|jOj{r(6((hazZ^eN2Q53u{0dVfSKV=m3e*?*?e|#43)12(l zP@Ad&1S)|Gwm;5027es|6_pv?kehNF1VOcOB;s1{D)2>5^H zhuHsAZ>RDlEU-xreKF&-)&)50WUVDv~GG6Mk~1U7ctYrvRi3`6d6qftXS(aOkR6I+>p*WG+!wX!&xpu_W3(}#pb z1czE=TQ9wW=iCA|Egbhs?+a|u?Cj#q>|z?9BR=R)Z7mTk86_Xz!9cm`f-@^mr+})A zaBf$2M>>?S?zJm-#MPs`l0tSyygCZbFy+X&A*#7S{9y2p{4D5`>P>M%WZ!1juJ7kW zw||!qDCEBCAGt6-RXoQMRvAp!>yBW;$1-Bdqn)EVdEtW{{0l9pi$n`Y+x1Mdfe7q` z0m_g&>l$K$1Sm)zI?x{~63xYB)`?dyLk&8O7w7>hQe}7`>qd7q%Snz20piz6YeKn< z=>dnM>F|-AO~>aSU#VOSql&CZV#(S7njj3!#!m$W4g1whpnCO_6LbcikP`Vvv+I%x zC1r47V`WxA{p;1t;Uq5aw}Y;Jf9bwlo2kVt&uUPV;6*?eE>oI;jk%$X`P>V6$XtAO za(pZ%hR30Yy9lQoAz?h_>?qZ&WLX`Rg%hW{Q5dUGNJC9}grlRRgX5@U{TSTMFMNUk zq0+K4oFkmHqtdbNFQu{+kamz1+14Nzp&*vvufV{l1cz~7OU)y zGaIPw)D%8=w-W~j=aLD+LUOd&4&BXg#(5&gu+gWy5r*FRRn}fjvxC3xEPetI-cHOv zNBN1vTfkMwAACzRxNED?nm1u(_}6d=jz*T8Y*tlI3UMyIw7m9R&6Dfv>(uYQoqL2x zAo!bESmqA_u^p2FvaY+)sWIyv2N1S!ic)N%T5Nn$@ffAJ_!!~LJ--xOhKho+ysomm zj<&KwteToebTFX;N_=pesxJa9k`#`y@d6vQHaxV<*j;%)S( z-cQHr%vjXhRCGw4l7Izejrm!5+N#w)=GhuQ0tYW$LkYxH3mci#&sgVntD=b*cQ5v* z)sr<id#-Cj3X1+TMKASPyLdpU~WZUpdcTk3q4q=^U#--rQ`Ld)(ZH!L%A z{h^;?fl$za5U*;0sR80{RYQS9gnt5wk;%IF>&gpC;3go~i;b0mg_YrLvvchR`P}N> z$_beLGNR-T42WpstAW6Q+h;{iR$En9QZ<{7TrMHj|D{tAO^A9uIk_xzzHGEC{ART5 zpMTk`LF$l*AaaN9QXWW={vkRr4=r4wsPi4 z7C+^@>y3V++mnX=)_=6};R-)wdvvy(-a!f@6b3Y?6;juaNQq?7?N+`wY{a#VK~%J- z4Q5djcaW5}*&-jV%sT_ZGGgqv*K=g(DxNNLFfe~X|NE2qM86u3*&!}G0uA!Z4AWYE zMqe-Tpb2~FQvm*$@*wgrh%!ktjYAUwcP2zgb-s#-Lb>exY7E0-TLiLc%ydn(xJ`MV;%a zJgt4gDTHfHbM$YvJPY~w4I8&x3d&HP(8Qbl$;18^Pj3MfM;mMnFHUd>?(XjH?ykWd zg1ZN|;O_43E`i_{+#v*acl+nP_q#v!)a+Jm6}3Av&vf@Wr%&U?Wfu#%%2#ejmxs66 zPiEzt7~Aq%RCf1X&s38TzXkp$PTD@W{mBjqiUoXv(jY)DI0zu-Z;9x|Ry=2x5ax(E z9N$VMzHJg0*pt#yY@5SaMe#y-@V}zGF)z7DiR{5ARdlVbQiFpJPjkVP7CWvt&J(@mJ)^D?5A*r>*!_T ztKz?wa^D$zWZf3JLRstk@OrTqAt*aRNz?CXffujcG)(yhZF;{9U$2B1V;xI&RssB7YHa*qX&}= z8jb$QtG@njRbB^}#?)3;S5(xNS5l9S$pa=b6}2|j)`29%|BZyjh89<0jg%)*r6x6l z6GeaTci13ekZ!OUDw>RJ;&eV6c4FeYhB`R~LrF3AKQy!fI*VQLA#{dt8eODdsJFGZ zGiKqK&3V6=_V7f!K*`- zR;%;MhMI6hRdktt9?;bk=xQgD**I06>nzs48K@1L4wpR#K(c$fx}6`#~%svYCST3 zR=ayDu}LrshC)EFRLDYsOMpbV1o%#>|3hnqVcDL&A{$okHlWjR#r(Jm7b8z#SQh#z z$Um$T`9#d%a#^e3^GGD*dUs}de7U*K#m>n|O-s8DR93)R;1j*#Q!kGae)mI_eam$b$lX9<#n+C zj?(X#B?%TcVq@ZeJZJ_7=_?pFVQ&Kss?SXK6;$d!Y-8sF{^!(`FJs!sZfkv}jyxqW zD6uJ%1XdUX4$22CBz}N^Y9)LqG9tcQ9XCc6K=-56St_GwQ)G*jtFj4jx$+4SfCX`Kx@h-`Yv{+-pCyx~^~ONBW&RgBIrl0Czzt`Zr z*K}PXi>=#?`fo2BTB>y`9)$6;=Jb~36{tNwBBR0gXZQrw7~f(!ys$Du!6d<0qh3L0w7{F(l>3X~libI@_0BIUta8FLPzhh=i*_YP^8>dg1v^3X)fdE(<1agOu)|iI{l}}HE8Ml{|gf4Ep zd3`5qN|@PgVHrKV#lyo}V=tVwV$HaDU-}|Wx>Hq08Y2rq4I4L9J<8v!%=D@g*i8C7@J4-$Hhh6IS)bH?c znZ!otVSDG&;G;Fo9DOu-wX@6i14#|{?*joaejY!SoAE8Ut!+J)yxw{4*qlkCSQ;TN zzA*7<8m5B{f@gMX#&Ij>Vy1qaBrXPh9gw;)BoqD0MkG`O$)tvM0h1}`$CO(jJnxWb^C^oVD+ zdOh?mKIVEA6;yN#l>|-llnZ-KBZSmTqFq3%nY{G+el^1V$TQ$j@ToZ>}po zxr(ui9A+8;-qQvfIAEoyTVp05aGZO&9^6!XkB@M0{vK?AJ{YYrao`sbNBEuYSPpaH z|Fi%`M*etCUn)jOE;lsKc+fuOgLHN(qJ^+0qT-@kn>e}sJ~}&wtkB`^Kj*ejD;5rZ zhde!^Iska~OpajC(7&HQrzCN*VpuuZINBtCF;sjSdp1+=pTSWwZz~l z;?!hbh9RZ&>FTF9>TSz0BB7h4>47BvIZ<9)dv%j}@YjfCC9J>y4O&O%Ig68Mr`N#! zWAnb_#20%SPA$PyWl^>hdVVvT)9zlU)tTV#vkeM7a1`+hy1%WnlU0xtaMXXBuBieB zlmk=VyrGNQHO6^8q{9LOk9~-xrDe2$weCmIQrb*18#_HMjdS6eE`Yk*HwEo58P{d~pfKE%MInTk!xX7f#HZ;T?tm(|8k)tlk| zSAnK%&HF?DR@FaJat2eL`N2^)XLtF9!!~2DFGS=T3k#DB5*Qld=KCrubqbgW`jjb_ zC4F5xT>kgozqbLv#R3+bZ;pA85Iwd(ALs`7F?fI)Po8Gx%>5l!bQGJXBs`le&Fq6! z_sayGS?|po-gZSsL0Z6q-^&aNk@ZFMrH10leKJfqd=a=?soljr;rSm46_uqwDE6g@ zY}vx3eg3QeNN#K<1+<+#f{6=WdF_% zIqgMd-EEPz(MYX-%ZO2^)Xgv4Oi=KT$*(Y`)3wwQ-d4?j`>$f|4p0-57YK814>XYp zj>G=_6qJdl#4522GvL&%&y%W;+kSL}ENl%fii&(Ldhd!5CG9lL=}QwSROWOM$irXF zdi$60(f-BH7K9+*_GahyY5XDb=c(?CDWnPxQr7A>9as>GCd*&cWa{UqZYtT|lIb=| zI(e=h4hl=*y&TAaqE$Rzo%qq{^UQHQ^(QTt>ay1E+gsq!(4|WCxy)r@`IBJ6oeY+> zufO@)>T2}+7$}bCpBgZMk)lEw)Kq26>!!0qbRKbTX^$T$epgAiNu=ym%#r1?MYC#eQfi8>o*gN2}Qm$-;E{pN8cvD zpig&6+uORbU;X_E^n|@&3a%iqd~G6u5!2a(V8N;$E_hhD4sPAvfXA1#`2=Zlt}I?+ zW_GeRT4Lsf)kOgg3a7Ec3|!iOvF?<;f_h|R12{i-Ue58MEslbJ|1G{F_$h#_#G7T+ zMj`B5>}9O}w`%iiux1wd=Bi#=-p%dtK&7POtD&{L_Vx2vMcVpElAM2QB&S)zoJap{ z^nn!Qn`&c<>inAa`m3y|1dCE7+doML{*}7Tj(y;yPF5E}*aJ^654wC~b20(Z-JDMh zNxB-n!1nM*+FR$B8PW6rxRr!3oQHfT@e6p^Kv7~9kRxrMxU-bm&um;cAucVfM`={Z z3`U+n;X;$?x_^!<@5YtonGH#oa_>5Pw`4>io_ZKV{LlN)JO~Jr!ldMsk&79lV4x|W z6I07`Qm@;z>M=-SVuYJ_CRcFhWf5LLYiLlczPWY1bMR5Z^P98x^=dR%i`!iue<#<} zly!0A3OiR>QyEfODfz>;u94A)6AE>6duqzgn_tqjuk!{Tt>uaC4awe+=19KAu#AV_ zDZFX`KWfqbfxw3mH+Zm5!y?P=bBXbzag1;wdQItmPtTx*8w2b%l(Q2r=!cTMnFBDM zs*Q5%K?PqxUs|S(%iB9B@|B%G;qg6&F5CW7g?Q9ti66R$;lh|J3-&HG_2*HW*k(~js$xEsN~FQ*2eU`-tJOadZ;*S|Pl&+% zm5f;ov3&*mzmv8P1_J*vXzXI;hQV#Hb8tf1zXO65&Htn7?M^`?x;Wx>ubdU1So=|Z zo@alCt~rOX+;~Bi<nqWy1E4?6a|ks`G_ASW1=vI-#e(Edy}rvvLrS&0GmH5)yo+-s{fqf<+4! zsC<@%)@Q(oZ?3X8xo$Hvak0GRz0mO)>+<({)~Z@dPmadqa^O?mF`b>^oC%{XeCSOY zv<(Hz9Qo88)|)LL{4%n$!P{utTVe#5m<+dT;h~|SLH$fM!%V=fcc8#HMH`7s69G5r zy(5K^kjm+p%;t`%g16Y=1rs71n_VxeKFEJ?7Im0)7K24_Vf+k`ohs^@^7EuzZ>h<@ z((@uzWSgGN7Q9`^cvG?oo&7^@=W?}VFDXbHonLmp35D{fs^gK6GXUOWKrzfXTE#e7 zH9likPJLLv3hDoAviwoUNd=A3hRJ8Rq0xpaEW=rNnpR`+k_4XX-MhIq3@v((@pws>CXxH5l#fq|qU`Jsa; zQGt>TlkaZn$piGiK|2*jR2ZKV#*usK-u!Kj79+1Hvoc!71TZtiDRN4n;M4t(?bNL#mi}GQX+i@2$b} zLjaP~t}Q+icWLo?&gW^O%GKR}%J9;hWTIwJ| z96s`BX`ZDsYniHII{`bODwJ4|Yz|Lze1E`bn42vr9D%y)<83laWyQyxYVPara}VAZ zqOKugV5>%k7K)abkfx4TakxiXnjdnwZ`wQugffdE$?#l3Sv0hS*+1oU49}H8gEWeA zNP=FYPGhq8k&h#7CwRD7y0n!im8aDAh%xtjrO>i25FL^7*7o`AE&(O8Yrw}=cEF#X zp*Tbku^<{)w8ZV-hBsevFu_6)kxYCZdB4)$AsO6N0_0N!si-fSNf4>%n>0Co{f1iD z2p$;1q>}IsU?2uEa^cQSU30d6X92G2>8)COY;#C0B3dw=5`tP|&Z0}sa5Pe=z1vU0 zo(1>Q_m7Y62(qvC;Wi9*0_Abun}hxRj@FOmRCP5|N{q37x^E=pr=dhLqAI_98@r#)65D|; zz0iG@2Yyn{Ir@*e&b1BlXbmiwv%3~9Ahk4!1b;?-Y~JV&AfMOHEwkddk8_w^(oQ3A z*Y_FsX3xDFk^KO{237N8_Hz5+2mOfcDJl;NivP)vc0Yy1$&OTKVNqgXAyH8|85{S3 zb`32`%=29{9F#R>Lrv$^9PqeeUe!Uh-V?Gmr>hOLc&h4r(^S*c(NmLStg5c5BuN9B zignk$Yr{|P(7YVQ!3kp|Nl{@9(3D0N8T;mN3N{r>$FGaDDyJBSGa%Ht#fTO|mQ0aW8e>3s!E<>febF``@wy#*o3pu$V?x;E zU9wp;H`W;Z#rc9otc)#DMbqJM2~@C%B%NcD1qoHa53Vb|A=)NAUF3kotuo;%!?O4w z5eE}_wDa*M9iyVG724vUqb-b4ymXEPP>B|0u~>q7og<2>g3a5mdENEK8(B6N*_&uu zI5}E)xymTnDw`8(p+u^yzh>m2Lm^NhP+p;s(xTwqL2u+D{)NOsGRi;5N0t8lGKG4I z&_>9Fi97GW5eS(&P|hr8Xl}*S)f4DA{uG+JM>I6lT3XOj=TKkdRM%YA(p-l4(-Mk} z8J(JhnUsc_lm;9zw6s!Hv{F&AFwR_T!%_b?n>D`v(Iqkr1_H4sAUkp|t{R@QjN|f+ z=zkM)uL&hsK`WB{j4~cD-~_um82=f9iUQ zsBxtJ8e=1)UMbs~wXpaeY!#@Tlc4BztQub5*MrTnuQ_(zT3$IFe?R}u%00@M9!$C4 z_Pv*rCbZ;sb%pH+7!-ktsX zdG-%@^E3Nj;T$bzmu(FzK4uX$RV_6guoxLg=t(H4DHzE~XsH=U#L4fjQ%@ZNg@wU^ zhhncG6*6l^b)~MewS=9yo0yE30^k#5EaT?yB;oI5u7SwISI5p**WAP}#H6AxA*rt; zsV|`k94(7Ui7u5tO^?Kkq;M@(f(Ov@AI1UGL=YIPDDl`3&W5)s2xL9j@WOJ_d_g@C?cZjp;KIVpp4(@&`Yy#(Dv#UMZ#v$Rh0K!PD5zztH8XMoWgfD*9!n)Jy@6U;LH z-~xP=qM6$KrBs{t53ZHe4}`>!!jM$A>8jIB-nryPd;}HH2;H0IxQoHIQOoSY@Z@Dq z41|d0ck&Qn*Vxkwgf?)UjlmybH>^$8O(?MBAmYAuQW^#>76z_o7lZM%w^WCBM|L<4 zRS8)!1x0J z5TESmVN?pY?@|AP0+th?LD&rZ+J;X&FU4ttwN$VR{XJOHcmPh?GWDe^7tNEM>TMW^ z?h7Lfgwha3{xXtRQ+8695)_Ba94ykLiK&c9v3a@`A)iB8w2)&S-IDp9IzMA2OV1u3 z-)5e}hbhdp7C8zceBsDiC?_*pydojMz`#J0&+4YQeUUP|Nrr}b92k)tC)hmtslB3! zFplXnb=h6MRB!WXK_}3(Fri7R>a45;`$zo4o2wBaXOzE=XO?c3Aw=TSBl)B|$%^eY zvv6J=x51~vaWsq0m+dwhY+qjzGS`MFF}W_GryPmeEJ_YD;6ETz`IjgPczJI&Uq7kT zzru>EvC+xd>Q&7?*qrp(AOKLtAXMZqfMAbiv^R4sruq8jetwAjPVfQ{s_O*IibrHF z4a`_wPn1C1PK|`c;mH6GR|8WC!nzREG&$gI5Tr>FQk$@tW6L#EZ_NtcKi4>|2Fni> zWt^A<@=RrF`w2SEET~RvzoD@xz~ExS*Kp=*Qu3zoGi8Ogh^D-unpbfp(8`+~mRVg{ zh>m;j;3tdb>8N{h1FRevI$PXcGYr3J+LuI)>{OlfHwvM;dj7ilH<2qJ5C|@EK{<&H zuf*88+S;OgmZ#5k$C>p#EW2;#TOA|)l|>c< zdAp21ow_>^3Zd_+*ZlG5)m6to^I&Dn(0O-ypP{mVtZm42^IBS6AHh0uMR3+uI33|5 z^3#C?VIRAd|NH&>#v`p|gg_=bvK^C|Z@(pu85dPyj1gIg_S7+KXa@v>l$2*u)C&_9 zZO&XLGds}L_uaoN7+u6{A64@DVj*%ai(t>uABF)(TFQkDPIqJJt|5@mbKwuHqAYN@}vHWnffOr1l#Xl ziI6FFmUQdWrO6gp;!v29FpaB|-4Q-59bbyLHV7L9=qc{cBS~3-Gy!{Zb#q_UR0ruY zk9Q90lBk(u3E8pXLa3-FwDRz1((KPFJ!Vl0B1qVw1Pm#BR@RgS2WaYx*&9wx)x<1{ z8QjUo)^MJxer(2cLIoq!*B~Rn0FGjI7{&^u5QL#`_uu$up{_KB@8?g#mV*1IC zJ*Q{q#An{}R8dn12vG=pzTF#o#kh(e`0%3!{JW(yqv_Mq#HFpGqX5Y z4~`zN50rdd`7i!uo@r^hS=xUkvKH*O=yweqwAkuCpqYt=7WO~4*{`xq1Ost=vD{YC zj5&DSu^em)uG;iXjO{@%w76H$YZ<*)>o8yk{hj<3`NoaVx9hBQ?Se&HzJKYkT8oqB zJ&XV%wmu|iWSl#8WCi7u?B*`wb}5ZarDiZmbY2`^74lStIFA4(^%d^X?_IM~_* zy&lG$nUGnWzRXYrk?EUquBk}rm;to8H1sQFMeGE;wzj ziSDQ03rs9PuuLzsP_hYL4B!gVEDF_*&Ek26kjDrhSMe~s;Cr(B#&rRh)JHV|xHB$< z!xscBbc3zzHi7s!;>UX*8Q-r(dWT7a_B_Wtrc;aPkNxG02JC;CvA&J&^okckeg6>J z)JZ)Qg~9;E`+I3@MtYK<17bH%;=g^%rDcgHV4yKeOeOj>pLvr+4;S5VR?eo3htC@- zs!7V_Ng@Y3mhpi(Wf}C(*z8Rz+vjCRgH9^v!xe8_T*nnz-w3vKEW%FI>4}j`4~G7s zv6CN{v37iq9g3N{n!4RSBhWfLp$&?R!FH^|#3({1$}#^#zx=h(WoGVy2|_U;oBA!8 z$${?Yb*Lu>Ok3~bWe1%iN~ZOxW94Bz zFmW(GFnj872P6Yv(L?@tIrvZXH;Y|L1PSW{LEW)Mh~KB&zE3vq1FdkiUUMpXYXa z(QjTpaVt4d%Jx%C!l)O(UZh)z@EVUe%Eom+0+`NrJhWP10g^g=&1=*F$ntdX1V3;%pxi-+ZIsF?dkU~0s zo^(JA3`EA!@<_nzwsY2yegq5ZZ%jG0n9S^RKJKoby!*xZjMx5UQP1NEz}w|sR9$b* zGkgH;uz(%HJt8i)1oXH5CH%H{~U1H}Gtki`?yduTm#rquF5!A^+F>%X-(7 ze?4F#sEElH5<1tPnDVe)r+T@bw+9t&w`Dy22CjVr!6R#WColGQPfu^+8aH;IUv0~{ z_5M1oAj@RvA%DZOZn2sR(tphDeys^x4@NqZ2DmbStH|n=x4?^06+=%JC!VGErYm8u z+D$CZB>+%`kE^qpiy+|w1}#IA))w(Ry|EpH(r}Ve>*KxGfww+*Hz@00TdCJ+%Wa&C zh=l^5w0%yoBUWQE$?3*afRi<|uJgB;Zn{1v)xKT}Wi}G&+*i}r_F~gFF_xBHj?DZ* zsy7by$Mnl}#Vh%x|4LUSJAT7nue&R#ti)Z0^my-iwp`H5*m4ADKJGI zcb5Z3jo?9~XQkhnaXz8dl+OqNAYxyLD{q z3NUstpR0kv;_8a!5D|`uNMA6|Qnc3fvEK}6DSktq>4C=nA7;QcHrIp==f_}yij6cH z94vY%=b_pN1v)f9z#8Je-o-hD?0#*~J=aRWO~CZ5*1~)wgiT~~a^kt!vg&m>E=&7m zOFx&FYdqWK5D&|CWF)Oi^Qb8#!%Y$@0bm*MqCcth%>sHV>7s2v(WQ3wxw8i@14J46 z?309a_CMlF`+ju`c$`LWN2MtB@+gWM{a(Ts$k58lO?$fU~`eaQI}r zXBzUl$b8XMoa-_okstsDC~+2CAKb%l$ic*BTbH!FoUOougo|de>b8uVRwugod1;A} zbQTt*7(X5SgpI5u4K##}%A2ZuY-Il>O0aRL|0Xz>k0o47%1q?G(*lEFbN!p9(zgEa z<69=iWt)N98Tj(o253S-a~WeLtt^Vo`w}iLgjz4~o6LdAFrKm#vnNFg$x)kM z;Ko&!Cm4%N&xIZ%GHPZ;Gd!0l0)8svrY9>6Lt318`mP0@`!d(=W+*_pR?vPtJb=ju z2$TQa9MR+NXzZcge;5j;n~IU-RL-1v4L@3C%4jg#E=#^pn+rqwUqE1o?_S%Y2?Uzr z7y@7sD?(L$dlO3;9<}9@Nl)Fuyh}v*Dr{`er(ywK&6}NPBD!NbfLCceKl?ILq%rbe zF7tM*d%MBawjw`lv<@|o0XrZJLNO=U4Nfg2fdwhQo#nsRrhghr8s;*L_>C1~NGSIn zJGEGbFoqqi{0>Tx8UH^mfDQ669pa|YzRBuPx=U}JJ??dD9*<$V;J(D-XPe539SV6L zZ3Ce&wFJQ+k6hX}ue+<<816?>aE>>$_%LvONKysiP?h9-6QQyg)uCvyFvD94t_28C zNQgKR0iVa~K?+x$AqW%_DpB_&6cHWC@8k*u_DwaQ14Qb~LsoL^f9WKk?me-xEEFgd zc<5?|oF)azUXC}`6HYvPjnZDF?jD%HfpXr-9M6;Bz>$lf$48<%cG=ETIR~7{2;}<) zcsao^PK}o3*6*}4yD6$4`V`+O1%yb2$1EtpdBl;Ot!wOHW+1I%A2u2m0795%U+?HmAu^f2s9*eg`58RwtgzTC(A$2|6}(vUa%U6A3{SsR!yzSH#h-%tHv z|L0k#tW5~O1jN8If5(xTzk6YgRnVFPDNAGiSR5BbTwxnM{55)4%-e-eBfLYFlg)Id z?jI!9HMVF_?;m)2)l9gI@nbHp};U)(hL$ zrbqs%wV7;7MP8IVwL!Bc8jNQwuIcRz1wFr4+O}sGTfgl4Jvy~%q3jxQ@#}J-fG*VN zA0W_VYt*qt)@Tk|KGQ1Golokw?SZ}eqfiyp+ z6Z5l6JGi+$PM9C(w5hO`Wz>4Kd{jmeK_EMV_Z&f(ID)O$kIhpNj%OtlOw9dZ{{UHr zi1*|c>ndbWzvalViuX7{!*)zeuqG8aK#`Ia7uz=8nQ0#FpQUMmfnd=kSKV7Du8$HJ zC!7tpVGZn3A1~|=#rFfnmwtyzY4eip;Xi80nseop1jvkqAKFbJ$`)DPwYd2WMz;|u z06o;6l=%%6LmO6m^R|3*12fZk2R{Y}TG+y2I&q`86uq$mx_e#D<-r91tsm{pCiSG* z^XsTd5q_WV1pA+=0VPD(lF)~R;4ipaiDXQkmczAR-M+$-QDK8+lS5 zE;t+kM0v^Mucq+W&7}sFCv;bDCX(~;C} zFc{K0tORV2wsdbr2`OU}`S2BY9z=r-zfCxwL$1YQ`o@*FSiaGn`q=hNQyF0V5~Spw zs`>(3Urf^3o$v`n6>5>EC%dGsrvOu0z#GXyd=)t`4tMWbbpBQ^mu=Om%ur)%r74fyfq_zX!wn zvvT-X&D}DMx%_0T580)8YebB0ZZn(FlFIQ1S zkl830oO-h=PWzg??cXzbbS_|(B6b_2fb-0GS#NduG>6f0MguiHNhIAzZDRISmg>tx zK)lZ8_8x}D&#V@=gSq!1^Tn_=T9r6tDFMN=e?|yIBFIv|B_Q2va#DzV+|K{WNJFv` zQ=25uk5_pZBDCu32Lcdz9~gTqZ2kiZ8G=fFM`yZ{ZpxrB1X39zS4C5C_UiAZ*uQ>YYRI?)C?dhUn;@T|ICR>wpK(1rb`1`OgoB|FPv>v9-$d2s z%!Cihkb%OEzu5~i=`nobT1&kf5)M+GR{%!csqO|I_ToXn`|~2E_;=h!0vQ$KzpHk) zsx*Y$F+a()l}nd2d+XC9A*61;|6}5*`l8DK3IS$a9y^^RiUnZ=X)&m`E>&(w@ZXyAC8 z59jv8w&gXFT&RV`gN}b+3_1N8nT(PAs6}($;gR<4ey#~THMw$*f*}|9P}sd%NjR%I z9JEM8w%abN=E7h&9VipX79I!z z?A8xxWo|;q${tikxahK_lrxNvF5+F79Lo?sJ01s3 zBvzY(-e!rXn0{n$W6|REE^8mih!**H*KxXIT;O4EK%idricLa-YJcV-D(in%R-NO6 zbbWhEBv`-xTeyYnAq(#x62xtsY4a7ah&1g>u~ym|#hWv(sk!a}mKKAn z1ZkI(qhOCGr^}MJbqx(R4;EodMHJ^}M>V(KKM`N^wj2^45z{e5;Jkk{boXlTfqY|O z4O{0dL$2`?6Y1&>&QKq!DBnCT=5A-y-3Ld;ql{3D(oBG+&waH|0bEA?tdt!7qn-ZSQxRuJ2K^RlRne%_>@wd7N9ew#rETb- z1&WVlbRP5t{CUlaieYEFx{^WU*IkH~{re81B0juwd-Wvd0EN-K%UJ8xJ6lW5=qa6( zhwSHz!A>H*HP>fUkBDO?Xy+b8>}4F27Hl_4%(mv`O%RiWeNty6&_c;4@@;TKGtl$o zDG({J2S%|tK*rDUlJZfD%#^Lp+}7P*PfPs{7`^27+dp8e!WWg0%jcr7y85mpw~2j` zyl>cl{pvL-X<1cG(r`$vvd9|jufts{VG0db3%mvazS;3a4^6j#klPsJCv_gXXvXO>`gfn z@L1Vgf{6rfb-QO>4f8ahOlECULo{w-@uYgY#;Co9Y5d$J5?0QQ(jx75C)Ea~u}>@Z zF;e65dh8<5?+9r>zZw~NL*Ocfd>9HOuF95hs5fM|`df3r2HCiL?edI+!?agOfzro6 z6B1iA&W+m4ZkMwilQ`~KULv}ZrOjgC6ZrUx2j(?(q$ZbZ7qoe7NNjz+P0`Kcd~s>F z^67_thJ1b_e^LG!z1TNv7pZ(^XKb&dCB;!}_4?o8iCl7{Pn@5reiPzIrno6K)yPv`Px zXC^+`N&s6D%Xh94+Qn}!SW&CA=ktR$v){7WsBgCy>#p?05>K)WiqM=5#$@+P=)Q_u zx>gFR9D34cO{7L%k=1>Qv&Glfky;_+#nvVg<7-jy;?a?CO$OKZ1nuk7!PDHm+Xx%| zD?a7ahj^X0nShoyAS!% zjQt6HH!qPqfx_0|8COoJF}u#tMq;>^)xVFUGSR(0p8bB^P$dbxQxjZ$?S*yKFQx!- zbl?DrArt*%;*=~?;lX#8^P|XX*42|E>**+{xXIcjCZW&=R69ZCTaq3wEZJRJ+A5Em zvmG@tEq;adLVuGqIrQAutUu|3BIFln>eBeKC(s6sJaC~8JXBcnq{aVK!L#oD%&~3! z`eY`xLVIn{>scvgG-{n=x9@y3dh zPS*qB!Qr8h-@o{xoXFg;jev;*7#JvLzVKiDZ}0#hl*&O!H`oGyd2qa%5aX7^QUXiXugi8Gjl`%nhs%i$I+VQQvJUeM9!dKtUHF|7*CtZdqLP z@^y@pS*A!c5zHipYfHzo4fF|!Pj5@>8DOr=mOg_d8k9^N(N~pu9l_UM(9+&-lN*#E;jMWE-%>zHT5S3$GPm0yBy*0-J!Ai* zw>CvKszhu(MbPz6Rr}mSkLvr&dvw~Q-61Ll)s@XOVb7JBX4$0>m3hyr%J0Cj)>0Z5xE9^yA}mWYVe#9F%Dr zp(t@YK$GL9_v{Ht3M-o4@dk|a6lfb1 zct{-xu3PD$V8CiUgasb+EG1zn<7Btz)4^$~jSd~NhQ*$M|NT`nfp~w85&ZN7wPd&9 zG<5l0YS&!AuZYJ*z~lRUZB^BC!@s^H#)j?aZcTL!jau!01tpA&sILlTZTI3B!M{B3 zt}aw(R;NuFD0$bv8}zXi{fUWh#ImMJMEINl0uNovZXbXCqsQO3LYF7Q za;P~ss_|}v7DoMJ;D$Z*un}9}1sN7(#CA+UB(^_AbzfyHP*xh-eR~C%F{F@HxpMfc zup$nIgM-iyTJOYN9yY~j=VP~{M=Q!$t)`MA4n>OeYwxyZw-pV@62apRTN#*LYH zHiiOUcr)iqp5ZOG2h8UmAcxGBm5-|_oyC4nXeDLyD;2l$6;gL^u#?D}t|rCOHZG1W z>uG0qp5YN>Y{d-CfPr)kZUhV$!UaS?pqza^%L)|#j;OpUliAbDaEh{htwr`ZZFpsteoo}%jL?f$Q!(vi~tJpsVQedu9>mm&sknirC9 zgu-E}>1LhM&5^$BT>!e;`%b*Q!n-FryjOAKKGNcHHt%;t`+AR! z&_$)?bc;{}i@Db`L?q|~CP`)O=1hs|=Nm=}hq8CdrwL2B!VEeXovDNVpOl3uvErssuj*nx5 z=RzQoSFAyxo|ZE1l9_fPZ%B28lNKnjXY9m*=Tl(!DII$uvx@qrjr;AkWA+Jlb5sXW z*J7b~#_FPMq&x4g>B4hXdEMTr-zhL4AC~2xBiaT|65YStMf2eOxeNtLSPq2Z6{Hd^3|Y z!9bFeJmV=9o;C~Te`oB7(XI|301;ny59Y!eZ+f^k0O{Ov{TTkr*ZZSkO&5@pEp)O1 z3MTN-U+~fkd*rSOR1wnAm9Zy-su>$A$3YRVtH#T(vX*@VOhxvsXLljH4Rg@3V~-Co zHOzpJdadJ-69LeP$0x^J*R%jN@y&t#(Dkpz;ptY|0e`HS=GN9r$%5IVPfZ87_S5ZI z)F|}H|P1Q0%pW05r7uX=Yb&lHJRX*#sr)6nm1@nr`;alDZ z^|h&HLA;(ic@j354c-iBEwj<}vAzm+s{?`7i7pIH>ZZfR3LE%OIy-9<+oxH%+{uMe zTp2x2)lGQ_*@MW*1s%>0=u$;%Vyv^^vpQJGFsr~pwNz>#5I(1$3#){~y9ER(?VB>R z7V$p~hE#TEdZNz5=oevgQIx&OxZ^QV?+;&MbV+g5HQO#^Ot6Hen}A*8dk`PIK7`%= z+RO0hQ{K7KJ=gzU_yJT<*LzR=lo^`1Sp^3LEPAHaH?YWG3DIoW>auAxaGDnYJL&!O zJo~j6am1#>C!n*Th*hAo&h>!{64iRJ!{^(KuQ~yr5Zl7#HQXTN=XvwX_^(!Y08c5r zWRHdrUdw`s(p0lT)Bv!`qa|I^E}o;=cccuO`9o=0**xCsd*wB+0kiOiU9K9v*`=j* z2h)JB04kH$G;SC&;>D;VLz&cOuUk__!?pG;9Picd?8*S}t~vCNsLu91>;TjV@3k=9 z2#Ef8TM7ctsi`CjR_M^sK`6uUNbKnT7h_0*aKX#Dja$#7K0qFD#5R#^Lnm~7ll|n#iy*!?Lx{o(2pfa%p(FzcwJ`55(~*Rx&q{e|jlbqJl1K}iD`=&UKFW`K;! zWA^Pi?>j@=O?J%JaZEpYa5Gu?kj^dC!}yw2RqNphkLO4Zmw+ZPKT*+ z3BFeErj_r!Sqi2N&u@)V5Qm@azW4^t+JkP~3t$a^CD|hm9e%w;i zlLExaQSk2TOfOO>CCLIk7MtzObkFbisT)4mZCvv6do?prIqh%ZB{d)rHECnp0ib>y zwKFyLOb(zOpebom;m%+z;uc{6fm*5s+;OLhm?couvL4_-@!q_+Ojak15iH*Gdb5&fSq%oQMdqdeM7rJpdTs)zL<$%gMC3`Dr zilq6`Jy%&%-jW8~n4IGt^ZmdivNM9FEL>o*;o)_p&C$dhqr>Sc{#x@Z9jBfbg?&-h z!qU@wEvOYN=oRcJ*kKDzTwH1Ye$4+m8)pA?WT~}91=|%jdI;L^{k*kxsc{aCv+Hs& z%-BC)cPZXQf7G4pSgrKJz#R-hwODD>W!^l>Hi z`W0rugc>sG<2ErVo*nvEF@^_@T@4T*uB1))Br&sK|D2dQudnzRE>SCF!hukfGs%KQ z1o;yT^Kg(r+BSDS476po@gR_()@y#ob6Cb9TUI(|(#FNhrJSEf2mP~w+=tpnUUTya zlo=cbNSO3*0L^N^e@cdJ5U$kOH%9o#;g*GzCLMYIjD#r;iUHb}#SEwI8P$5nI@vhu z3c5=%xp=EHtIN~>+@M+=Be1S7Fd^ZJtT=}Dt%~nEPuXSfqwN&y+&eIbpdJ?)xe+D} zf7C~j(|96|26;-j|j9b&$QWGfRV8W`m zdIq)rVBg_rdOiKVc{1`f0!htMuR}gn?Of1PLt(}-@$hDKOYb>Uyq%05DeITTymmDu zbWyJ2wjb4ztJU7P>7jFGCUB39AtGM4xDlP6s*UYU4i9S){rl;fl5F-=_i7lHMS_F? zX-s3Dg_B1_^to9F zkAZ)H^?{eO-*0Sha`&sVpR_3gdVrF?yS@MQzJoR*fqZT6zb=37P0#~G9f;XLpulI% zW>+i)C_2z@hP}*wL9MqYT?1qZkf8MfM{we2X4~iyd)zLZQ`DL+3HYVeG^d8!Osd1J zPnsYQns#0c3Id}lV%S+GKE7Dq)E&Sx5|nrq((T+)Z*sOvF@TXm`|Oo;wjOvS#{&|) zKGJn}@=itXGt{fFA`f2{&Cz25%ZW>CDk-J?9J-x|e}536Ec^tTS2cN&^q2oX+>R`# z+mMy#nnz=t9YEWyOLtNUAUN@ZYGicvt{+0mfTlTSk#~Onq%R<#AG729OA8t6`}K3@ z0d!g^^Wev(udItfdD zss1_3DV#hM_>hs&>DT6z%N~`QdNJ4_O+czaXE)}y3H@N_#@`nD1pDI$i3VL2vA}~k zq-V>DXvh#n1B3|QbY0d50wuv&* zQuOCUj2$?$%$$73*Em=y&mcjE-g2i;m7YJxAwZfO@&aR}#4Cea9Zzc1Iwy?sx1xl%bVujXhOt7hhdp*$CuB4!;J2Yb&_FL)VG{^c z>RLonE=Gk95i(ete%sn^Qj1cYZT?LG+f#W7;3ndtsewuv`{V$&8ohdszx#49SzalZ zqbiXVp#rgl(vqCgQdJp=z{x^Gp>|v1#WRhTJRY+jtdNFPO>}S|4ja5orE%newKCz7H&%`CwnQ`wkV(p016UO6_2pg3Xf((Q<@e1?dL{3 zVm7ONOdFAZ7Q+@m+~?^n-1Lh+5+Q;0WUz?t?Uoa~3rKeS-;4kykpbi}+S|7xA(M!( zo4&Z=MD-v{8KQ!G;wNWAFXIL934}XfTKy#l+*WVwwHZF}+v65m;}2pA4|sU$o8SY8 zCFE0+(r#U`Fc=MX7$UtjvaNtV7@mYQjKaSjnH{+YCxr)QDN`Q;D0zcXqlG?v1u1xc z4O3+otD4GK*Hc{KNfi3|nmBe*^gpzwd8O=v(!xU62CfJRN;>kr;3S5Jv($#9Rh?5Iq;^Dzo0@gv%Ft!1oPukx~x&59AN8w2aCD`q*=T2;p&m& z3?Z;LnTrhoe@V3X*DyUh=F$=wNT5cBIzPzpzBv|-)$KHIl~~IZ$T3t&#p2ks85n$l zCM1OXOg*iU1__E|cFJE&x|XZ}T)r$m>+@BgJz~Z_qmEP_+fQEKd1gqVX}MhCTILIV zUVrXsHzavAZ~G@?BH!ET90uKDKzw0O&-v-`Q9kRc&5iX^T5hjk>vH6rb$2&k<4;wC zZJLajtn6J^3VDqo+Bb#;NTuD&Rw_qQ_$A7+DgerUWT$xPih;<$*Ax2rTGvE=Puuqn#Y zOj>>$s=uzUs%v%c*&y%Pdb5oB0V&znOO(_d?MbGRdap*4jQJ@B1;SHyU}g@@{)I^^ zvkeBI`qdRWSdtFuX|2&Ov}itE@%bXw58CIK-PI?V%hlyI%u+I}&n@3Zeau%75_JBx zKZnKC!d%^|d; z8ax5qA;?_u#BkoVrSWs)g)Z2nl$86#F+6sgRww7>HV7tvKA?I7K!ABnoS4Cr+cf}a zGCRBg)H)i#O9Q&s#cEi)kD_ZC$F>}sZ+_=D6No`hxD?WIw_%2`?`uwd_AB;C=xWS| zNN=BzG9?*fkVd>*E7^Gh<+W57{HlT$(Ajd>`g~7k$?fKf5%Tb9fQG(=q+8RVilwl^ zO@_bz4h!gI<)vkQN7#@byUC%EYIDG6lBn9G5Vd1JP-}~+RSC~pZ~w~g4Z_;qwE0JW zmz53Fau{fEqMtfs8vPS_II8Wmx_YOFT~da6QApV=E9-wE)vCWuHY#YJf97ABo-cfAb^DAX8l>@Z}H82F6<9ruo8LKO|_FFMZ3rb4b>GOA)Wwt7m+rVv{W z9#G^zlUzcQT%PvWpiIPoT7L>Pr~+kM>d99v3S^p zW3B^lC|T7sULWN7V;8LV<*lW6Ib7zzEAkeR^9gF^h)NTVb(;&{R8#U(F0ZF*V(Rv} z%?h)V`w2I%Kv!K4l_#HYegH9`E?G8UxH_2iS~pXy)wAS|3f*vsJ|5us_I@IIB44+H z-&J5u8O{39a=9aWK*)Rl(jtQ;B8outr9)9s_2Ql;da>@jD}-h{+5U8tOOIR}W5GE1eH=JI?Py?9`J1d;OKv!uPK;oybGQ4_U zhP0Bk^gkr>K&JZD{`9Z5EjT;29c!sxsqE%5b>$$aBRB;2$VQN$H0JnV6cDkH@U|^p==@$ z>HP70MQdp>Wo99ljC3=%JYpB1u%?Lrn2Y1o#(B=YqhL;92 z;Q*2blvt?vn`uZJlV|nBam7(*b30gH_8L}C?Kl2Nq3Hp5{oQQTIb>1Y>H9Oeqx&n} zK0|iv&6c>(2KvWwuF)yj>FvjXs(GuZC=a*t&1~lq$5(i`Mck8)4TSEv$`BJnwJnDTnL{h9j z*ewR1LG4(P;Z#Fs%>l?T#A+(C>w+3VjI^$UOK|)&>qGZ%O zCi-Hg@7&wxickX`e62sQhGh#`a3~t#jkSx*2-r_KE##`#80?w9jiJU666C+C~d@lyBAH8wu4 zV`N}5q6;(3&JR$)!F+tR9dM<0b0;y0fu1l}<-}2?%=t6q0iU1!u13@K{26_pS)=v$gAOz(wL0IiJEb zIc{oiZ8{IOGdf+_8l>bQA56F9g3nOw~1p$j$kn>G!!_%E|JPVy7_8$s?SV8RTp|t&c02`Cc`KdRKMSCU#&NI9Eg4b z1&Y|+tR)3%-(&2V5#bZO9^dADWwj%rQlhwon6vs0A|9QP^?P>+NH#JxN7E<#mD_3f zcuSwo^;w^N>1H>7!6@v#Wp~B%x})UcQD?F%EQJG^5%-p7)(aOFCWune5sD-T;>+)u z@*^E-O`%4$O0vJrz`HZl`W0W`ZZ|HSO1Rr)W4mNH4OZ>xO?t4QZECHF>D_M1b>CUM z)|+ydx8*Z!vP*7K3?%l%2G@YAJ6fSdz#W8+yFdCTqC!*H&vm_8>o24@c6{w$ZV#UZ ze^W))$~5%4z|ZA-KyFqh6EplYwXzQwZPt08I7y|DOV`zEvH!@!TcYoBKQLQ5=aXi{ z#m0@!FH zlOVzEOKSYi+LID`9r!u1Eb#054q_}nE7Npw*n0oA_4x|DiZ%Rq>D{_`M~sejSVLbpt-vY#y@lC4LI*XnEWsfjp3eUV9F z*e~qMI$edP^hD@*NiUR0qMVZIf?~!sJXAs?knLN>>6&=(f|9Zq<+%&wNn%z#%w>E`{ zt}9EJ4K3E7CR%l~lKa^jI4o!RZy%+kH*=n@zMb*7b-LbIX^O8d_s=geZk-AYjdIU| znCy0L`=IYnS35nAMiK7p{B{e?FTSFdniZD3)p~+!ES*{QSX%b2-DYp+Q_Rk|-#u@R zqS3;V#a@k)GlZt6*vI7s%A~t_6AN_!g^_MMRIiFzd3AhneBh|xMc2@S~_V7rNHH+YL_)bA-AkdZ?+%~7;%7Fg>a@~Jz!+z&W_r1K_!{u1_egsBeXE%ogxw9r z_;-MVjhn27c+TN*ekvLA`3XN*zD2{5?Rg&OMy*=oacz0TY#$Q?A^)K3daA6z*<6lo z>nhv(mW74+Wn=$Uy>sD?1nT6d?zIqDzywfFaP%WPPCa9(bAa~RtWk5QS6=w{}s zhoX6$S!xA_*iHmmk1I`=zNu+9E@y#-Y5zu|+!fv%O4CVv0>y+l z@4TVe(5geGGlY9;29hEeEV&6ju58Zzu+w^auRi}(e|V#o=nb2VJZ)SRDoiI$d4l=7w%+1VkT^0CO~z?xEU)f6mO!W`QLOK_QVmB z8Vx|`vd3grla3--sA5cC(s*zHe6la;YSoX{#@^#n^?9ye?i-3_l9N2NGd`mK#redR zU$8Xo!{O6dujgEqeg~(;VQF19JRbA?1>YKny;g(i+J;wG@L;S;WgZVFQf5=Va@RMH z4w%IU;X)TXO~SERHGp__AN;5&yCytGH$OGha{Z|K0%H(j7m$kcN$vy zt%e1}qxn7~w0T@1DyfL%`*;cGQE8o51m~BkMWINLt?lz8(!V~skrQ@yeS7G6noz&! zT(7v1yE9k~)<%LmU!K{#iL$$8L!V{&EItM1@!7Z20Y=k0Xxu7(YKtLQ z?GPGpN)^74IQic_PyV6wTua3o*wcW1ka8GZhM@$wTEM@`-8zSL8|t%{U}I;p+vYxQ znPdZ&ackANuAb>&Wl|D71!bwlG&^R&fp`YTE<0$Q`*Va7%Pt`}+S}(~)09<`t+hj6 zdnh1gapKKEf7}sGpI;35-&)UZc`1K3^*Dp@q9F$yp6O(>s7M86m_$NT# z*1G!u&zBlpIMg%q^jjk{Qz5^?d}rm`!J9HkHmPjvy)A~r!Qw()3|sc3#az{Hv~}tz z*DMr?<9)j+Yw<5a0msmSMCpzV!GbS+#L^71$-|s#?BGA0ru&3^`p{qENK>(Bk{eyT z+xq8vlug1vQ3hb(4xalBu>rP9J&E0t-}G)}0eO%M?ozv)tS!GyNImh* zc8X$ls=i6a>e7)00s`jde947EZl`e6XRa&x^FjVrZ^IQj-gt|nquphS>6xxifj>Tj zDz)CW?^prZ8%GvDjeE^+zcDC++JImbMUsoblmO5ZzL>@0h zSg5ch%9*m1(tSxD`R%0Pf*Cw$qLA)FlP+VzTuK#Lm(B(y#7V~;1j>{g+ExI2Lx$z+ zcQSF(d9~2y8%3zSXb!5?iWDnZOZh2SMv}8MXepDWSg~mt#$)&WRv=R=o6k3rRIII6 zAY-6OiHs}~H7YBWP$Emgj57WFxi<*X(8fl|^g)z(D>}Lb6SLUNY|zZiM_QUyS-G>N zr8Xp_EFGtdU0y7PFW)k53TyRH_*jgT@$+coI-7TZL%3i>wCOoR56 z=U>XGfq}hi-8WR;%j#@xj!OOahn~4RKeTAHWHmfx6*9Z-gqei-kUnlAC#@?B+mCAh z&k}QL@MrZyc8lO>W1Y^|$B7Yd7K6oO{xJL755{b&hSj*+`YSM`9|B>$TOYd*Ld+AJ zkp%pwm}G6We+AF3g^5Qxa8Q-+EtL!9uquOdXS+Of&(LpThEHVN1vj^%RRnFD>#f&Y z%YL@v@(ot!-n$QbIPn)g&~N)3k4-f2!mby%P`~JGvb3Jo*sSI9r+e-6_&QuVr5Kd` z^N7QL!vy7n!f^s>aZs2fFbmA}_RIPh?0Fnk7H2uBYD71QKh!p=p81Y1e)t()Ewohw zuFG||C)21F9wZ_1W5`YKlULKpOd0t*bh_5-d@K`RG%RF#71eXnrC<`uSgp&1-v>JA z(gZi#`kPD?`@O}@`K_0sm`=zH*ldD3UQ;XrN&Y)*&YS5G2b9pXTHyIdNrL)4-$BKti*lL&QERsW`DZRh5n+EHN?|#Uc$~37f4}UYnOK%v0qfK-}&K8LZB|!QM^5UhhhcXy~E` z3>y4K!;JPn^w=NXHS<-D5zDmDl&{*TNXG-#KVl#8l`8;w@~@q@~T}V*}*g zg$Pz2y^zkkRh&D{(8y^Z`wku}qMErKaP+>k*vpg>ZzH!I&AgTHq_jzx*A?5Ywzw`r zbuHRHzh39AUyB9Qif4{b^W1Uei^OT6Wnb=`BB2U-Ra~v<5u|+pFRxlCsw)p+pHQ#Q zE!)G%;^FM<1fqL-)NMF7x6V-Y%h2-t`T)2ygz@h-rx^ctC<4hs7AkY{Z7L>AMJWAI^O5Li7Ba|-BO#iHRcWU3+43xQcb9@1fS?ZzhTM;>WzdlTHMvIf|Xm9 zQbPVR(GONGp_4>sqdhhM5XT+ZwtWpwB+R*fG!>J@wElqeASnW$_BE;Bw>0?~loTC| z5t2Wz{H|MWEwz^v(pyjTc8tAPUv5tjDai8(Qmdq?3^iOGKfDY!esRtH+dElpTN$cA zqdGGKtEhMtA7A^w-Em~(2qV<+ro~2DIj5{Pu!wqTetCL)dAc{rdX%GvX-{c5dX7~@ zu|KYl=^s-O1V6#o5`xv9@Fe*DGLAz1!U)bU+ltFZ{PNy@LqL)QUPaM#QWUcPocs-SSi} zKi!FhGdz5U@2j0&m&#=Pmw-v#U>~hUtv08b7U?_gB0CckQ?sqodGu(tXv2l2Dq6Nw zGj~3py|z-8*)3+57biVi@;I`pZl6moFZlzj(Y4iCXcQ zN=i+1-f*5y?oNBlZvr#zPZ$y;pf>jzbXPqePEXCPbT*L&?L#)=7w04Z5w3}B(Kb#SePL7l_fzb|A+8}E~-CL3A5ANXQ&?e5AVg$oC+d4 z4=w}u60Pq;YzZaejq5E=Jj~xTi+#A~?fJsYtK^ zt5u*yMrEgs=dL8O*H{J_Y8hU?c+JV6m{V#$yHqr4ne_{Iwh2U1YBZfEqTQYDZKT^s zn-@obo4ybBk4*HBR6cvD?riX1ZpZunm)-|K)Sq)KuYCLk&NSkk?fK5yy6MWFJd_zC zyLF_N54KZV4<8jBD;1sNja`mQkF3;8T{uSZ+~OF1S%R!H`rGZz29mCt$Gf)XB}2#R z%>e?>Q<`!st6y82=08fJCp%#0U!X4Oys2fws`469W`} zGt0$>In>Mbd@Wb0Ww}F$>}Hj%R{4W=Hp=X>@>gbkbcb)LA0nM1{4XAc*8>14L*j_F z5qPiwn{GVUDvT8F_y~oFwvr#DK{wUqlfE~Z7+aF1NvPnXqP{=7KAtRH{P@wUtjs#r z*t@MDuFZ;MZmljZ?M_Jx?7)xt{MAQI0Wu`5Tv{z$eiWbzHEaIDJ&}Gg@u3n?U>_(N zq$s8&FQOnX((BZz+Z{c?^YrGpy0Y9k1NRS=P{%$9SBdd(wzN|#nGbc%`2K6F|H{*V zh%AzXvRUrBMzF?igssMYWO`5~M4K{+;CoXZVt?YK+i+I+K zAOUgd>HN0h12;!XQb?4HHaT7{V~wedo06(O%aBOc=LTOFKkVjwze&Fd&|jJ89rBsJ z(|%Yhvf8YeuF3sHWHRP;6zgc@GSDR13k~-FBg!m2a@y$NtYNaLP9_t_Z zZ#7MoGL8pkrJB>6NQsXx=pMvm%je?Z{r_Bmh^RN>rG)70Oz0S`*RIJ1PRQu8n}@E^ zyp>7IZO)lZgPR-ksQwJW=Ywr5pC7{R%dfmd8#+kcyy2Bb<(S zPs%GS7s}Tkrg)+0XMJx8YqipF?+kXQ8EC8Hun`y{l1vkep;$Dj6O-Fwep3YrzHA%Y zw6|ASoNpWLZX2WhVn^>_JUJv{4XRUrn;S)LnS>>e$TgEt0x zdIx%b2!v3Hd#ULG$K1okNy6jxq^7xW{B&Jj<=8}`dRYg7e1|D4Yw=q zmBCH;&L6VS2wT3i38qF%j)P(Ff^Y6w&Z5`#Bsa#~v!aC06L!xwQ*?3NSFLERq-;l< zYh<@EhCI*VH)zKE{GD2so~)t^UU?2}b!cfUXgE~G+^6FA?p;Sj_F`aNI<5&9sSQz@ zcE(C0#J(e6GrR+rGApaSLj6Lw!%JShXL7RKb}i*>^{LVJtoQT%g zFK#(dECfOdj&@FPn~R^NZxRH^R+s&h66nrkkN3sSBFW`# z+6tE-kYKozU&$vL3n&FGuEBQ@Llmmm>-;3HM{* z4fOkh?18dEj|hG&d-he?Me_ViRJnwZ#@FxbT)uvxsCZ|ijiWVCQ0p_(MVR=0&hNaF zW?;6zK9K467HedzpYSaaH$h^aNJOKQVQZP4S|X-2w>HvQ8Pw;p2Co{I`lv>ZmC0^d z@)AxOw>rV)}sPGBuFX!Ro3H&g-HAP2N2L8<%sio=v`0!9NImtlwHTKT+gBd<5y;# zO`QFa!8J?SZ3W~_ip}>1{D*yrQc*EdfuU-^PD7WFR4H5(m)X4P;knFlQ}bYVY+<@# zF%WPYQ~%%58tLdJ*a$peAXFbB{^@N+mhK7-OI+^BM>WMUiaz+qMf32*O?rZM%F ze+9XhNX{qY_k~lJV)sJba%}hUTf6KOhI>T$3lKg%4&+^g0!BRysr=6fr3Qm>BK~b<>tHaVwKi>gSR~Dk$HNe zFB%hkKU99Sw5+iR9N~rwd>KdvMtSM0KV z#2eAeyH&yA`1RkRJ5m*YtG?5)D0&7A$PP`sZRPLHb%o}E?&gLnb@J}8OI1UZdTL-# zL2&wa1+_k=;e?UXLxBrVmBtojyW5**9O;BaNRUgF=)yuBDWNig?3h(Td|IfjIZ;bX z`@vsb<+qa4DyBP0-+aX~;~ajNE@$O$7(CC@u%8aTiRG#8kyVv zw*$|1Mkc)nasDPp6ZnBlv`xfZ^pw=!d6>y*smXbO2QGT?GMZ`@<8HHNP7Q7z4Ug6p zPtRqZ70oRNfq}`m|BEn{(s7Hj1dIBHl3g2qh#hE3IswC@2GG)q-FoXS0{92dAy(q$ z*I&jFQAW#fKRkR8?yB(nVM8Bn zOCSC6VDkxt8_iC^e0Fql$P+7k!SDI7Exa0rWC@Lw0|8Q35BqpyWTGk+K3UvAVBJdZ zX8CN}$jKp^IvR6untAhHMn)MTLB_??)&b`|_u{O(6TnU|naf8VA8uLyl{f4uO0B_e zyVd_97p-L8_B=o=RH8^_(M)~C>NMSzl@{h}DJ;7(Lv_|+*~`js+1p_rqO)6UO9ZB#NAlzp&ePBg?ATl2V~02yu2;Ah9*L{aK;=TPFR}zG4F}) ze6PM9|3YlfeT$dUqZa}!8?LHzLiF0`u%fa*t$sgRPVY5=2q+Sts~>i#6bs&QaQW0{ zr))OEwMq9i+j{tXcCt;nEdc>LLmmSV+EL7>pRfexcfIv~$${YvLdsb~cc!fu0ZU*?gnj8ogETx%jiceHaJ{R`)I z2ECB^w!fk4D^}^i`s+HU@1iwj%n=un13}c!huTPGz;Y9nGGlr6o*jl0a+@ zE_EoM6x;gp`S23J2)HB8ihV*1J4V!sC0JLj7}yXc=kq~vys&%(QyKz!II!^8PaEr4 z;JzMXe_GjT|D##SsYpRm*-9Tp3A=&$SJWXr(aaBC_ib* ztT;1qzFtMI&Ey$UJI>%pZcm|Y@O?aNF^5%+$zRk`J43Y|S5=insYY@LgJ~QLcAfVW zK8bTb>?;*v!e!i0zmB?FE_J-coONY()`vBmOXaE!W?qoVAFWpiS69gq%G!WCWS(-p z%sAc>POS)#O;j3cb$UZg72zM^i_!@#`P z4bT4-zS#z%3>^u>n`7r76{+jCCi^NKD%5}6&rja22>EsVro4`}Ys`DPR6+S)%u;kI zWl0rJrg_LwU|SOxiqx6l$0q4zSulObGSTYLLCHrHyS* z6Z?U-Huj0k?5F<{uYy1cQ%H~$ahZw}2p;5QtT*GS_7q{*`W0U~^|4JHqI;Q7utE{m zNH2rUR^L#atT@kf?Duje^zjql_OxSZKGny>%$^DR)M&N3FCy4MP(jB|?p@$Rhs)*Q!NOT!XA?leju8D1=0m|cNfFP2&Q1{g9MeU_klqJ z(-v&aEC&KDI-LcHV~OGqv@V4Z2EG5%hhk4Zb{`t7*=;IvwJo4ZJM}wh@hgKo(N_v3 zOX6j@qoF|EN%=pQ9vJQQUfGTZL(|>gpDUDl{!O*b{-dGMB~ZYsprNH1yR*Fj8R+wb zIeoRc(vA^|O{nko(`H1}U_KZffL?m{@&=T#e(?qSt<^Q8TaF|)f`dru!$jNL-9Nx@ z!SZ_Me7tpc`#lpfCFf)EXN~zuxiX}jyx`${&FY9oOxP|2?qnxURI4qCq0o@5^}6#C z*Fw!fH;_V7whB>oNgM}zfXkD4_6?@S^B-)CCHZ1_`+M>)2f zxhQ;ub5OLa8I|e(U+xYZp&S`S^n*`dKniJ?w%cIUtjw?2UtoG09pe9)QWc4!Bj%d! z#}PagvH+nRK2LOW%c;MoXP0U(5a?mQ| z=DUN%49SKp<-b7&fwq>RvaQZnPQ;dr36+^$kUx`O-x|f-r-=>O=^7 z6jF#t(!YFO&fmMH^mLv&s;?jCgp0bABh$s(@(9n_r#8&)xi0P7pxY=eo?li6MH$`g zsEOXRzYdg>cT-pDXrL+YDZw@{JRsq5q9YQClSMfzdCIvmtm|fF8rfc`x@KoR$d`o{ zt3Iv~c1&-|Sqc^Wk8;UcIZO5};OkpoI0O7tnig>?yMri$@}ER+LD$te;mii>cfw&7o!#bA<2!kuunvpgk?!+0uK)$5_P!N&BKE!8C5Pi`HQYxk<>m7`I58hTc-7JRcCol=#YF~Y4L%%U=wLHX9l%LPu{;f$rvfp#!66rmj6~g398TBHT_$0r?&U|K;VylH*#;WKm~J1d%U}P;KCWvcYEc;xUG!DE`D}%W z{AOY%Slf)vwP9prM7wqeNqa4zNV*9fbJ5)bAC#7%`A>>Xl*qjhLXZQR{uNoSU`AGE zVrMsh?E977c8O9M$wr9UA|+y&_Fu!bjy8@e-4+FLGY*z;8qW$R1Ie{;jG1`HgBsM-*isrEKkbskn99xBq!rWlCg`EqnwP0vccRIRG{S;Z0(yW zZu-M;OVu^6`xciy!%l@DOVyp%`OCGE2f3%sj@N5y=PnSBBMF4K8@7qMpPSvX*Js$U zVuE+w2ghE<;Hm89$8F)1A7wrBb*H7`jz*s&4=yD=K;gQp-gC1J@Q8$UIh?0Ls0G0MLm=daJJmn_n0-Qx>Q>#S6Zsa17Q>ljsWdOgCDkp$6K@k$CPYT~M`A=H!c7aE} zM%Txa2tt zH@+<^?ix!6PwoW_E(WNe0J(x+hgh8X`df+W7aXVD-g}c3suhhF>z*dy))wPI_&@UB zS(I6w14RnrF~*{c~(H zmc5c*>IxNp^P-mWG4}pWJ};@F6t*P{gsM@#>ULW(n_iUXUC4eO_uYNDSS$1u`!daR z&hDiWJty^9kD?@k_$zKT1TTW?(bg*o=Y#dVY0#8v8v<9J*~N+SC-aRB?@v3q z0s<+#I4gvpfPQN}=anG`dYMFr50l=v#Jw-qxbFFhlF^;5^y|Ew{khy{kOSQsYH7Ml z1>v8|Knkv?NA3Lz4N8OVm3ni8LXPjsZUWE7<6zfMYZH9W2oFUIQhPVX-bz#W1I!3s z6Ph*##s1YShvvt~Qr0@Bj@ zDHzz*5gGm6U#1Lu2x#x~nHyrA8T;FzS4?A`E6_tCXJd%>`7&%J|8yQ7z~rlu?DP4! z`99Vi&J;3-d&Uk}&Q>#*4i1M@qudY{eQf{nn$3ddbkFVD>UK7@^}{fI5uy(oMtsBP zo=9)KGiy9J?QvAEFU2S1yyR}?_M)7_&0DO(lr&9!PK`qzPdgo@6Fk?1)7F2ovl2kwS5+E}y` zY@h4ikJcu$SqV;-xmMAKh?m@PY>g4i@ljZAKf}Sg&+oRrvNFwNs1QO5EQtrxG#2wI za6I?pluL9^H{#RhC-#59t-VdEtn7&~ecNTB`*wk!1}`{?3>2>N0+e<*h(3Wn(kE!> zY`IFveUeDD|5{6zFxUb~FC-$lf`*zNL6}W@vx^g)u58q9R)%d2~3RD z=^@y(H{+~He#J)xw*Wgfx6#0COpV_RlY$H~r=O|j=8WI$06f6Dy6}%e6RKDK9AHa_ z^rgZ&pLit!)*e4z#xObch(@{rx^OILC&Jd8u;%jo+2CypAYE_v4`=;MGfoWssrMRo zvKhQlR{@yux$c?&C|kV9RPeg1WcY!9)TEf<$vkmfa*{RTiYvNnU1Zz+QTys)f^gfK zBt6|aj{(Wx*k2v*?q-L&fA_Ob)}I*#uYR)6efZUT&Vw7?cT3D=fUm7hK4Vw7$>mtSnWZNNUi0nCyG_fNDK_rZlj#^kyeS& z$2`7SyMdVCm50e-XB2tz3u3Z-F}&>K5st$26>ZOUy*|cUNzE@NG&?>vI?QD=-QG^B z8~VaNv;+!RJ@>IQXh&p&V|z$BQCp~JVL>)$_>;NxUCPj)4gOC5kA{L{I|TUXeR`c* zi;a5y7X&9~`{#)XJDDwq=B|5!A&YverdZ1q>#2c1mCb08ec|-xVm@wXy)7FH^`;zr zURC2tup`SW{=ffzbW`gainUa^aJu5LmL&WPSBWw`FiKHZ;2S5l%f%RCmjT2gN;@bpKiKbNydt5T%rz9@r+kGj;W22IA zX{>9msS=OhFPdw?RE3r}5b4@d&tKC01`~OcS%V`b+1y~y%^obMDE9imvWr(|J{3X8 zCx(d*)8>8|(fYA;dex zrS>3*Om=*lVkCQZpD1weEQ;&;x-ydoEV0s-F_%7%vC!9y?&M!ibYo~tsn^om}>$DcTJA!*g_%O(eCV2=j2o#kA=&7 z+f=N#0Wfpt{gV8qm2qO^807X-Fz2gh_GWK%yT65_MM;X>p(zqiFH1>gOY??1D<7)T zL|cA8etqQdG2hg3jrz^Gd8KU&8AN1{m-&2sytG0wI>O7f+hjg;--yF!y0z$Qqa0Oz zA|9LLCHC<;JLl1@oDM?_3ZP83c#fLgJ>r!Hw*ce)GI_pHRT1y;fgA`ruE?z1l4rm` zQsSzj)-P=6^`sng_a#Qcj^}_W+uqgQ_M;s99y-+%Y)&DgQMh0QTo#|bOBU(B$IfO} z3;EPjH(d9@-dxZ~Ok_m@&lQ(9m*=O`dw_YJL=u?$8O6hj#eBg`m4^*NWt=d7%Kj2C zO|LB7mnlr1i&{^?*T&;;=^|XRp>iN}Hh3N#r;^duV6{WIj?LuoWoi#A$dxEjEzvK# zK_uQ)# z*!%0X;nMY^*A^6Qe-8~Z!{C0GV6d1m!I)&nv7HZFcNFdZNBS+I;wPq zCH%*lA!%Wb%HB*(xE-*T)|R$IG~DR3|Did6dv+4j2lh>3s@#Kx?~hAL`=hg7#9bWH zQaFG{&sNzYgu1JA+Z={tM_l$hzfn+_3|ORdG3MRDhx~-~-5=;;XRQP5T*B|{<@osc z&>(>Uo3d6@3^7it7giF!yZ#!8&9yV}5bgvExx8cY5L^LB3@76n9CtA(Kz^NGk~UxG zo#8HFvr$F1_&MUyAY!pMm)pos3VXtP;1b-OqtF-;(NR7oZA1FqJWs z_Q|5*!lMwCNeKR)q^hv%Cs`1H1p&g)-;uTJAjPpZi7CtbmKhD*hs|pj%@{aM!o8Yc%-pklcBzaFq^^7L{M5mzZWwHX$ z`ltzVX%4>1Ls=I~!U{tfIGDjPB5wnU%gd_m*H0`L`@HX;6-5Mt*pezNHAmYGVdo!B zpR_Mhot>-3M_EOLLvW#(77Z-C?9Xo{x1^Nbv1kIVu9csA0gEC^@Z>ZFvS02G#>?%L z#WN=9R;5NN0v0loF555@7}ZJ=Sj>&nqLV4)O30bl(*JRR3^eaiIEaip*6t5($$iHW zHnO=!E{IJMmSuOFpg|F}s35ixe;=D*F|vKw&|kQKuFB|Y|9a8AVT5e@&%!=HHGYR$ z?HwsZ>?^i(0V8pc!(N$Y7cPQy>70uB3Mz4f=9 zgQwm6C#3PSwZS2)4?SQwW4Z9=_Hfpa%K66Q>bVPEqDAtwM~_}23!adI{W&K`UNbZETlVj#)3@*cW3*8q;gu_Zl_LJW z6AHAFUJ8erhRJHF`i#X0S^w7yuv7E9d<|Y%x;H?sgU2LDaPE02!JlYieaPF@UY?@- zb`C>TD7yw6J1eK!)kW+SI`Tv zf$ZFLg-33wX~zvIv|qZ{VRYXh1ht#kEJ8^d9jkYkk)t=iU7>(=A-lRhM)N%zo}4Fm zBZ>&G74(4v2L2%50)$H<*NJU(Z3M$lRq{-^*7w&;H!nU!84Sl-{flqTM;*pOQFx0F zp@KSUWN)_z{bPxUZ#8aZqQ<>-tQQ@>k#Mh`KG57wRO#MNY<29Pe==DM9|Tv(V7JHR z+&+%ccC_0^cBqjOc6}OtNf(tuO=E+64Y%MxqJLzL870!*Y%j|A z+lHFW=VSN7@+^UvN{Tc$&Q|;Nd21K&emy7&J|J6$H5o;<>?g$&2LdVc%iP?-_M$}c zWQhJ+IuoeZO#UsE;!5!{k_xBRz>Bw87Iv9vY{Z0^#$v2#SCg-1Z5f7^l%z}+2P@z< zN|h<})6QX6uWkt+I^cO95apXaT-Dl0D~vXBF|iUC;wTXp%{l|Fwxj-n#T)?^#n-Mu z?JI1G?k5S+FiqIVN5g=f&mLo@tspbk7fjIH2+v!q#XODXPvnk~Z|1^lmX&#rKEo{g zbJpRX_55%yQ34-E;o{U)t+lc$Pm^ocRg?I~JRX{lEwpfZ7G!sKN9Ml&<9T4f6G~!3 z&>(x5=t1D1FT$x84T^8m&wHL27tkQqDtU_*QPkVo6C3N*JJJ~qyC!6H-HJ-$DUEaN z%v{{$HLVSqc!Ec-h!Xn6DnVF;u-eA0stm#Qg9?=ylv|_FiZ(fxZc>m?_KLN$(SC;@ zD(R=mMc`ujILZgk%wUL2?=HPg>L>RIIEVqZ)a~78*rNouCx+)`*}+VdFT`+nhsAm1 zC>WdfSUPI5OTv&Vm@sXsAmnR=@0a0v6KkH#m4m|A0-MnfHU|q9^YvT7;3r<3MD))Q zg(ZzI@iy0jeOPg(1fI654LDJ=E_TACknij7edERc zJV*6J2DQ>7QK^S-h3F{X+R3QJ{t(4UQ;EYXZ=EwPCk5fdql1A8RT*H>-NrSi(j&Xt zYWih-Txp~Ff1mf#pn(anzG8vsxZ7+zvsuH!Nu!G=GBZ15E&0zg*+~9%1!+4sZgu<3 zHdt%ZHtTq+`H99RfoTla!ut2cX@~<;PYt*YH6i9|YJ*7?Yy5nqy|i-Vx>zJJ^$wFU z|E{XfwHJM4+VI#__$DHTU%b|)#%G7%SZFo=O(}my|2FHAUvIp4dYx-I#fRv-w3dee z4<-fqs;TBd(CG)W2|~#F^>=XCn|%<%)LMO=v-!9_dsMirz$?a3#}!UYO8;#& za<#LT-m{9_>IDB16>u_r+wp(NMwgsk*yLYX?g0A4Tgf_85`flLryDlTPYSv!m@Xd6z<~A#L3pBtJN!Q^Y3jeP&nR9 zgeciuyXwt+2MaxiSB%VYg8t%*1$%7?XP0IwYVEY?j3}Qz2k2jz#d+~00+Y&UUHZGJ z!n*6h-uTqg*<>e;PoXsC0JBwDc5O>}xx^o^?y@xnR?5~OVWeQ0cIWz%$$zSkGV*_R zsS|m%ai~J`iaO~bK@EHkci+H*X6=LeOr>-LdG>@6AAe?0oQFjhr`-{F)GJHTU^K8j z_V>i~4Kmm+JLNjv_Q(!>z|$Ab|L?n#gv<3HhDLT^Km+=#Bu_!j=HNfR(8xUE?IlzQ z1v;OwYKb{zEVy^^j{aiq9Jb!+mv~vf>E1h3rN7>@e+~Z&w?c~=J>e~kh$>Rnv}8Xv zH{2BhBG2FdjZwRW^IBF$j+&-)x<``IbP*~{-TK{YJT2M+>*FroKlfkya@dT~2BA*N zmB;E$UBGu#1eylwv_8|CfLEl-N!d$5NU9h}kXA$K#h)qja+MlVdfI=92d22(&u@=4 z;kw!`dd|Xhk{zARZA=y5{G%vUSsCfqc;nq>R}X#S9LS$uqWtci*#9X800uFpDG=l0 zQ!JbB9=a_69uj&}`psNo1qlSNEYsLK#s|SFa;dUf_x%tJw}9?=I)$gEjRUo044^8f zp4D8`A1kij=a@pGJ^|~&@eIp(i^D=!Q1ThN&WYzufDNd-?4I+aR}$1cD;S3=aqSA4 z`bWccT99ZC@_k{ZwYs{HqlI}vb=Y;W5@b7S8kpGdI`^n(%dET=X&4Tb=65hwyk{*^ znzx~Q52bnDOjq}ir$_3w6r~-a`}gcR);zQ#5BlwWK@a*X_%6|@wd%R>4?gP>)<4<| zk+aIgvau5GwJxbr{^y!*)PWH+Be(P2%Bgw`H8r3PF>T)_go z-Z?rDpxE}<3tE2BlEVt{yEr%)YI~BrylqA}SlH;QeTw2yX)}$wMbx{&VFL|Z z3?Ff`jb24VlcW!4JX7)G%w+Fp!=YUWu>M!WzZj8+(xnHE-w&mQu0=sp#TH(r#Rq?( z%pqAa`imV~I5;23L;LWS-M!%XFt&03?DN6^H#z*U3IzI>*&oSDEN<-g zCmQi7Kh8^xSo)?0KNpiNJuHf|6pMhrJQ6{nZVdmT@`6_Oow=4SmkJ)FWlcZBK8&Dm zHCf8l-%9nqCZ`zkS(27iV$l_>gMRhP2=osH(_0fGjtB|_V;`~`@dYu-N{ity@AJc3 zX;%`;@!|^K^?2M?wj2%!G(wr}sJA%t{h#q?+kB(@@eK=+D_@MM#fHyWAiWw}1K(*? z`WMp#Bf)%_G!0arJ5N8Wg+f;hh1J>3dL5&T@0D_GBvJgBZf^6votXu7D=h)eLl|Z6 zuW#-*S1VUAKBj>gu@t(7yMp8HW$ir{(qIPVj1p>Bbiz5hUdjfGMTDT=XMeO%?My!< zY5uk#fY3dc3XHC=i?yCp5MR~vMsZaaSM|kp^kQ@nV71h25kX4}Hc(RA(0{~(f-v(r zIhv~TXTR3eush|WK|a4nb%ln8snMmpB87jL6QRQLWin$%Is9VcU$SBd$=^h-uvC%W z?+Y{ie78)4N>~Z+t0|a;d%;&%_3uLm%f=l@{QSeknJ`!-Z7z%Y`Nw+OpK?(?A{Sm# zw(kK!f!mqj*>!bkD$dfet`?i}VRNIVa=yAo*My;G+Y&9OP(qfI3jV-fLJ2I=Q+7R7gO$|#TQ7bO^ebrxG6cTRv1kWCOn5?F^zeGU+<6lA_ZMn79 z#!y+dx4B%P=)*Z4i%5$(FyZKO_1CzBEc$G!Fr&o$P&-#~)Ym#UkaV_3gBgeWUH5F! zBOPmz)U94;LNS;@J+oM>%b^wdDY$;Hd;#L;FuBlzLc;)))lI+gVvw|QmsDlE#TQ2( zaAm@=nAzrUgqJw%*+$AJ9?Ht3&_No)w<9*yD@sjvkvN6A=+4iLlH8u@P#_|%5oiUq zlZxGIiP^twZ5!zdZ9!c)sF-3u9|bncK3mDlv2BgOx_f$FEO8fcDB^-BW6@ZYWA$$u z<}Bu@GR@3Z>xquP1siEZXFVFzLJFUKOEv)GAT!h2<7L|HCV%EI4R_g<3)2HQH%h1~Bv8ShZI_#OSJu3s9? z)B9xCI~}Fz4|X<#Had7Ax-*Ry_d{_jn~lPdi_odCECmGj5kLplLsP#c=Q?*=qg479 zK&T#$L-R+T5o#F;sC9P7xSQYU>}s^t==76mh<{X2TnR}1=0-}9 z93a+I*nsG6ZrA{z%z$<296 z6?4JWS1+2{u+HZqX4k*83Jy`UReKPQYwq`R#V_Dd;FCzja_;Ljb61rHA-+;iq0PJj z&cjeA!qxSudQr886@3ixdoyW7i7Hj5fx&D(K=cHUV}#JCt=ZW-S0n&ovF?8NVtuxk zGCMdZ+Vxo_{#lOtW6odNcn>bpR*$t%u8y}T%F8wk7fuv|z3@ls?!-!~>M^^>KT zL3}#zuq|6*r>N*!D4PWga49h;0Q$7aNB$P2Et$pJ1GU3IHx7ski{XFVKa&3rsC%q# zcl7;s&R(hkO>RPX_p%axLdMnd*JgR7ZGrgKaQ(w=l;9HA-NVTiaEG_-20SlKf#qVO zo}Nuk&gEeh{~aLq&o3}a3;KL7u0Q4|oKvQUQsB_u?M^1R^^{1o3WW!DlGj? zwxx4H8<ln$Fy<_*YXj%{B=gE(@IOUYXHA}1f|XVdtudh?q|1Ty`8@xXBJ?ufoUfmPuW1xr&*kLQ%E|?)o3`U8O9y zBT>hrrS{qe9x4@F(AJ;AddZ|cSI4i4%9iFYq-($Gug%RyY|2m}Go9TSx0-Q{*H=1% zL<+Ow>cAV9)f`!|L>5|E(MSUMR_KZ)w)Y-LRT zuvF*JBbj75F$J3rNAKWl8^ghqUF=tFVELUJ6Ua&@&BU$kWoZSfug{8`jV5lrQfBeoqv;|| zX}}L@+3Dm~YQ5vx5iyUM|NZS*L)X?zHVwJSwo3oqrV3VpIZZxiCZ)2oQ`vOJ)f&Zk z!_za4>vfl%3!7i6FU0emJxSJtpsn{v5fDzzl^Yf_{J3)vCk&|2#f^9qQ5rL=z1?JD z>jxe~#Gs+e(T3Nd-?<>vwVt_z#N=Ds?*V5>VGiq;)IRh2;;z)K>!*E4H3pvpN?9Bv zs-O{G&2i*7GNVN|Gjpd=*d1woI`d?S-rupA_-lhpHpKH3jlTNOgHU&~=DLcU z&|;(tAqULX4{bUc+$Q!f3q>cN z2O4&_4if+IC@P*eT50lIuTb80uF)ivBr+xks?~9*Pr2-J7#c+=w+wp9t4N;&*61u+ z>vdcNF>IpQwqIqQ<8+#ChGBU`X^L)?)3EXeGE$bRrWe?)WBc4+?^IdD!+?11j++W5 zWj?%Hk@2RTlAQv4yHlA!-Ke5yZbcSZjV#)Wzp`;$R?UXgGhuot=%0Y)y-_s!amM@# z4O*|zr?u|_tIjH%594k1KA8;@j((Su+FkE0HwBe#r#7@}wTD^Uqu%Vea{8XkE_20T zP6X;cuAY7iI+d?oVk`NJN-6k|!a)~3#wRE%#4h_$jwh&-rUVv z@>_MU$JM<_!o4mye^9W$U5N@o0`A`S zv{6rN=R1rx@;6Cbcz+NGOl}`FCvgv4xZ2ucE^d^?P)zR}*Gt#G`_f7?+U?dX>Uq_c z3>)!+_6BxMP z6_W>RT&k$ZBMjLx1Cq*>bZV4cH`{}q?5iD5*}}=~CAn8?MY?{3uUJ1&R1w(f=nIm* zpZFbM6^U#t>KU`Pq80a zbGl^QFq_Wpda?L8)l3@NEpc>hdD9GX_}((|g@)wD2IYpYZrQ5(p#J#e1ZYxWol!31 z?1;bmTdeQ$_B?dC+GzDrLL3{X5j6BmAbj%8`Z1@(Rz4gf$J%MmWC zi-F8{h6EkHdfV4UnOP%3*b+8%EZV=5VP8VNLxQ_-XiMhNzrUrW)E&6JK6Q99#PawG z&AxD#k#hrbeHrs|G8@0z+EFN*@Y?c+`9g&eKlX)Vq^tML2@WdDeo{x}ISGmv$LpHH zCa_gfTrVkbk6najhRhlUJ|WVOEgaYxOA}yJV%NL3N`0%$?R=47sROqbKywoT=Bxa= zp=BS<2BawsP6XdKbK!_SHD3d$>T6E z(wo~z;UPhSK?jlK&R*^GZmKcRO3OQfllV?L{H%FW!PSIng%d^v38m7B=LcJAqwzIy%C6RaG=qstwBc1K{b$zpa@@@1)jwYdn2MZ zgs$h?Nux0J^EHR3nbHAUl=IaXx{DRmv6mf}$%JZa55SGZ!bUUI56=ZXsdCxtTpk>B zce?0xdr(D>xu}QdnMp*h2?IVgOs)bwR6P451s{a!)&Q}#_pd;MMoWEYbd{6;-MnMb z%V*)OeJy?YvTJ9>h$FF5^v$ltk8wlt?J6Igd>kvU#Afwd{Bs?Y3GME^3=v&bQ+Pg~9qnaanGnDx# z{Jk`F1|>Am0F$vYfWgvC*dRDB zD7^1?HxL$qQgLJBpzShIHihNjJ`7;{q%pKmg<5h0iR(#!*9|=NIb4Yx)2Zu4bcStg zcrR9Vwnuu=dv=__RH)rf?A3UD@+_A)+yNPx4f+F27&w@=+>9H|chG%Bl#vIACPRq$ zGi45(5H=jCaOi$`uxo+nCjS5A-EOu{peWL2i3_VT>M)Tcisk{Ac1To?N$FI6f1>uRwwujYi&-~H!>=-34=C_`KLY>cs$di-Q#oQ3C{ito8Mgh4%*@=_ zz^7G{j;H&0b2mS6_|-rbtQ$s>@pY)t&g9Ap*Rmy^m3JrVZOZ(`bE+$(pk+axJlPaF} zyP#q}S!kS|d(amF#7K|@RR4xGzaP$;4#(3dP}{ZaF9-dHc9Z_a|D`O@Q5)M^1p_IY z0c~eQY&F3MO@r-gdK;Z>-meKnf87P8NMUc*TgPizj#uNv2?e|bxbm-Ap<~)<9C6QI zy6iyNi>F79;t6W_u*cty?@3|UaGe&XoV~$%OuEOp{Llk|Q2{3Or{0vfOP!8?zv?E* z_Eh$=MZkp7AVKxG_e&SsASTbZJ;ntaAv6rAKz||}cnqN*kn^<~E}(Ys@4Z&%o{(xb zMOh4*8-cHsCD@{In)&nOEyz9WnYB{0MgtLtiy3aaSMTeiBoto%B^w^(>*JMKa=N#d zNTi}gPc)Yo$*kotD?U#>f$+e5sQ>?63Nxi965gU98Uq<{oWO!NU+bw^C-X}P|Y&8V$k z4Njw~FIBLo2QZ|7?M6L{V0x|X<~6&ex16+eMwjR6kpAV-JiFCkzA!1YW1-@(2gb0& z@APIT!Q-gDqz8hw(uH^k-++Mgv6Q%jNuQ+2CW4Pg_pNIv`yl_G+nHgR`dX6WANgQr zjhPH@PpQ!E&rcQ&sXMtMFcL-XRY1pX)#_(D-_Jd~Jm@n)N1pO^A2#_;C?(x6Ks}Gn z`7Vz9O)0I$W+16-ua*V=&$E5S+t0L=u|6MtgF0?-zkea-C--6xiMsZSB`pGEFjxE|9AJ@tgcpAJ?AQQK22dmRSt{)X zHLe^RXizmy_ce$F%-U5nmc!Jwx+E}ny3WmH&l5paLq{qz0MOwmR3I3R5TVk0FDKoiiV-LYEE5mvKO@Zm-}% z-+S}vr;fw%XI_O+J;UO z!t$lezl7B*0*`FWJ|LMiDpPM9WLPC$Ejj8CSM`2XX*rkuu$wez3+<8R3nzGS#A|vT zC-eF1QrGmK0;$D624RsI5h6@;Ac;f_uv)0XLiI(wn2O~)Spd+G?~{6UP*XKtaawtg zfNoN{oNuA!dzZfiHr$#{QcyCu2Y?PK2(+Wp5F=Ux2Kxt_`noYGol0vRM*kFtvZQIJ zC;8?c{Y88K`0((syAGh&RudBqj8CNIyx^O5c~km1)%;VrYsKp*S2oAShFMCFaG$3y z=(NV6YiS3Uz2LSQYSZS0mQsJ`L;FOyV}yFe0UUMi`?PydH{R^fFcML z6(e=5L0dT;2^h$5DXRd24@_7zGY3f*AVbaXU1Ll&7BvMq$+8iJr>cAM3g4ZRcQI8m zU0;tQMX+JvdqjPVM(ID>+$=Nx8T4!)9b_zRA$R8{i7^-q4`DTt^}M6H-s*{? zl-H4!^>n}KU5~@QFvKbF7~0xcUm0+OJIA?D;PGzaA2WGVG<=!&*=1Z0Z}U90Yq?k! zPADomt^VmX6#jLt!$So@_G+SuEUlmh3ErH$Et%Z0*o;N7MT<0N#0xxUy(04d?q*oF z$`q=cX3FgDybXCQmD}xYsi(_omDOOXT0A8&Ffd=LW^Fe0-%DxY9+-c%ReD8ZqVb^J z*_t{2&+my$Cv)nZSt5s_9t=y=q4T| zOill&A3|My`nW%hcWSDq!``{Nrf*pyHa!E2f`W{KqSxWBsHV2j;;<;6-t2m@)-c+% z!>}0&0ip=NLOVhKhB?>d;p#X<1l>UnT^2V7RrggvezL>uayaNT3dkK5SG+=s_1}Z1 za=yPJ;w?~;kmN(1Ok)0a^8|HMBW9GM#$mGtI%CSY2MFj#jMiDQm9kZXt6>(ityHZ( zdUv{R+?CjRcf1Uh%<9oA#RLZK-3Rd1NpePz=*EuktuCni5>0(5_DdOr1@CIP{+^NR zxW)N7r&8MLoo%IeX~!BiqkKv5etLP?X?J(OSQ;O?Ljpcj;`nE2V1A;Hm8i97X*t4Q zF|tbctIKxQ1H>PWTo4%? zwKM>YQ;8>-QmRq`wt~3qRIdv)f15hXckPKu4>Q^cGCU6VWGwmE7;!S@Z+CScy|wMn zUtLIwD(_AoogHNEEL>fiHLT|BTW)p+($uRqT0EaO`}>PHFUi;2lj==wiFqPc82+)A zcIf{~wpH=i1lg*?2Zd{!Pv;wBu7$~U5GJ{Q+MVAQHm zikJPH0er#eKtxQf!t}I5#X!ShC`E_7dbwEs*Cg4xMcezZeT^?ZsnO)TrbMb>p#` zOeHf1fU@iB&rarfu?l#osqbyhX4`5e$K3HbSV{VMYcp)yh$amLABhAxDFW)%IVqv@ zsLA;mkIg4`^JT+sbja5_MBE}nj?Z>>mUQeF@NgrLL0p4O#lM75A9~hlQXSoOOTd&5 zic%bL!+Rm|SKwkgmTn#J%$#7cTUgtV$jM=KNeUk?5eKOzdn-o9X_~Uk=|o^b7qh?o!ow`!=*JclnoRZp6YWFm)!1Qs>6$Hv(~`|CERDq>dN8b>}fIe zk9SgIk;T$w9t{sqF-WQ6M=^nbY_rSdb%%%DXC@xE?b-0$;=I(>#v5qQ0^ zx$H`_+w@|fC{#TbMiO!q4^6BG4@YT@HO-=pRHXwFv95879jre*zsL!vgQm&a z`gs;4QpWzWmlXtLIj!)zQSC0F?x(}zl|rIY>A);8?2Ok=e4eEmnGO%(g6)=NbZ{V~ zq*!Wxgs_nv9Qcri&YD%>ZU6qwm$hF%Fpc4K!AJJVVf|^sYH2Xcb0j1;`feG+B~X)) z-)}FnkiOMbN7CM8cV0BA(*=k9&z*GY^OeSN`O5h;0q#RBU0gT!LAt=pCk zcc+5UkkPw9|fpN)E8sKm_ALz@#Knm;NTeq)&Yv;%BSpWRo z-=^A%QEOBGo;P1$id|@mU0{j{T>p144=^NU3$bfAm8mcY38SWdd~O+ZA%7DgCH=0Q zx7>nN43O{1s5CYlU+YIk7$T*Ez<-7n%jzWF_Lq`am-r^cWUc_*5XkWa-|JxK++2AO z`DD>}G_qrQ-Glw*3y>j@V1%O!YbCJ{e_IxNk;_HxbGvD;-RWTlXgR+ZJzBl-F0?Jp z(*_Vt?@|(KzN@aa`1Dp7EA6dviz4EGT;16%PBG;KDBmNO)+)h=)0`bWmq>uG<~|gm1S7#0neCd87&N4a=QFaX0)p|g_!ew25HXvnpJTr|f3?DYTYF=^y1jlR<6$dgrOyx#EKhYHVgd z#vq>mco2cc+)^p#_ka%%^cmX&A(}T;xXD7dQ zcg%KwF*-Xm8Z#e{SH~s#$=m*8j6J}Xa=0OX7MpqNok<6m5?0i-@ynMaDci^r$#HdW zg@$>B`rrBQ2Kt35C47v2iPD@O?C!0__^)h71AxVOs=-uD9r4VKT{0;-kV-5-*Y9|1&iMllQ2G7&uNs~hg; zwC3Vg?{BSez=ziy*@i>R=MKTYQ$Wz7a;dQ|8p!+K>=Dcvog3_VP*;k44t8M{Ki|BT z-ozvu@N{) zel#qd^rcYut#5%+L^WP@TJs1ikf@lBHm8=vnh;;k`1Y1C^OlgSBQgwrEkJkWQI6}z z$Wk#M%=h$&-C!WZ^3*g_Um*8(jF7K2!p0^f6_o}P0qzZ##NSH;%6hbGD^Wh; ztXW(Xmk5eDotzj+Od!TZOMzII8I6x+5i?K8Ef!VNDx`~{k(S1tP0wmCljf;(q z#7p3EK|sJjpWl9a8YrHZ<_izPpvf@4UBk)!@$bpAb85V!99j$)#Mj})!irl2o~XKH zHLEK7*&-H*f30_1zUGB+T z#VVQS$JSx9H;?sFzq*5EcUSg|=oNciX?Jf6aXo1*JuMS&dv_Z(`IzZn?~k-wHRskr zjfR~Se-8~PYwNaexqw}d)O!wGR?uk!Th+Z;^+9n+~} zqb z4$pTk&vy>@clNGYeWoj*lwv5%mHCwO>5u!1*&ty-Q^PV)Ho_(Wk%Q=EVRbY-$|*XH z8EJI9J>>R617a9?JPoG_E}vHGnC2i@0@ly7!vH`qa_y`ahwNiwWaMOIZ1QG=j>N=HIyk_>z`!syJ;cVqINZnF-`m5+hzA^_ zM=(xko@+|K7b!mTaYXg)+-isj1Wy{@Hq!|t4eZux$U>({6-^i8a|DF`)Imni`|-qw z6`Bn$uzK@z(r~7%c!v+U%>Km=AmkGG+JHe|wvtaD40?4lpec=dF44w>wNk}Wj-n1o zqqAS*Ehtt(A}uZ>L2P#R2Vik1mKU^W2eCYr}LtJuz#MGnYog`Lk!De zIWeT0XC#m;P+}{)cTnNucwyL4$qolMd>Slbl#Fy=PrKmXN(M7fY*m9PXzC=@C`?}# zEY`}k?cO_`mAmoY=;u^-0^?7#PTAq*I3D^GX1aQhhX^X2Q8L$SWMfoF&7vP4ogdi; zp}Jh_yu5n|^LsoyUkn;JfQarVx|*jUA%D)DDpcsNn!W^A_S^#$O5}!ttn7q)d^AB? z^aB+!KRN%Rm3L2I{Pqs#+kY>>Ct$AoLy^veu@@GuBKK*DQ|I*Z zY@{LkwoRxNLju@uLLp>T$6H?7*&dpn?36PQmJc13A7GVo*EBVilx)O`Dyb24WJ=F1v?vq0ZU)C&dqfvlnE30=`IbWlwvQYM*L$k} zuYd`iX5vBUDFz88hc{Q^gJfUq;UjvSuGsL9R%XEK6hD3B@B%N06(%oBSwb8{^)d4H z*LinmJ(Sjykn!ra&XW2Nb}PC546u#p>EQ`OKYim!- zu*#e|x&y5bDy10k2|AVWqY2UlS~)+cfvhiIrDho}9w%MEkunA!^koRHMMnxXP`0od zanWM*-u?SNT!M5%i_#s2KM^=sl|2k%-tU%4&yFWghR|GaFhEMniMBls&xOsJ%$qLu z6aYj@SV%rU-=V`>S3cyd$^F|FIxKWaTnL^F8@8`#kPY~UszlTbjSUTe20{W$GbvSD zDhb%@931YS-1G2s43iE+iA>wJp`33t+^6l!Ol0vk{G6T0j;=1$1I(xMotgeqi8x;B zPhxc{JA&sa%m&obfErFtf0b%yJ}p}BUD~0R8M=>^Pw8xj#NK}3 zh;fhkr#+Wq-%ub5eya1M^Gw4irT5cA&^06~tew}UO@xjOyRD{N^7vCm@bF=!K(ieu zF#~fRNqdTjaKQT->FTrSpJ(xgM@#Iz;q0azR%rl4aGI`u@RQP1{yM3fOtN=!$q-+zS-rH zV07gN5!K3R##hGkKhsBG)BF&*9+_|3+EUIGdfbdW!l3THSxQG-xkKh%i^tX(Gp8gQ zzL!J5+f|()epodzOa<{2_v=!fgV`iQ&N>MM?W=kdKi~Qp|N7Y`4lWWPn~@b9=(J$^ z+&jO`ufhcl7-JQriU{YeyrP_ZV=s1zk1D#AIkduy4rPq1*m_P;vUI??3 zUp(AB2rIIY^55T6&0y)Qub~j|x1BF$EtbFByv&DfzE^XX>-LWZ$3#c7fdLYz$_80z zJs^9l;lhd}W*jXTyRH{0?G*{EbkY2p*Y;F^D0W_n)lV-XhR!>r_NBsUpFI-D2}Xxa222h0+$VIvsjrF*3kWc zJP3q}E0wuKs!~N|{97zlI;8C@A70^9XL%~gIsOKAj=}Ter2Av4#$$mPL5|Hg7(s!j z3Ws3t3T8X(L4!w~EA5#Oxf+s`i1-=hd(o^gDHsU;VXa=9h8hf{ zt?dCqZH6+|;Wu!i3+QqD?KmRo^P)xOg&dm8YC3*8Yde)2M2LL6X?@a0NcVC^iyTbn zDI#*yn!~azo^i1Mt_QXDYc3H}Q*OC}W|-M5f#k8(WVLs^aJ6e}pZ6I$>Zw@K*z+6N zX0v}TmEQLRYH&&xf{j_4{dbeG!Vkgb13RU`PSPagtXAR#YB1m{pT`T0a=B>k`Y8|4 z5>*O!SPDT({I3~50pV`B3`IV@%j0Bc9rz4XExcdfM|rqABI9wAnDqNHAd1sII8_BL zJeDhnDDko(Z)PWwVw7s?BZCr8U`O8Aa!jd+U?WWPXxxaWyOv1H=~z2Q$Z!JAaj@bX z9_Pv`33wjR#k?&h&e4&UgzNl?0CMF~)BQ*40}!7u!*y|~+C*Ps7r-LKB^s3A6ZD3$ zp>J;O(ID*{?V&+A+SOXI0Q;!R_fG+0r+w~|PZsNhz#BbIZ?yaUKVk}r zN84bIiixH#e=!>;LL?8&x0Wem5bL*JS|A9Dm^ z4l4`^1pY`w1nU;*WX;XQv?mptfH!>#^n`N`b~xQH>?Uu#|5w-EJfR(%SFQ5Ni`?i# z8&yX{oUd4yJesrn71Qy?>~8rnFFB=1WM(A)cJu+tA76sp9$jqTZRAyWyJlGSU#ulaUwoKcmJjaEdJnLwnTd7VfHzj9QAjabJcl)6 z--1Wt?=Hm@FiH4dcg3G!hd9-Nl!R9VevvPcAHQbIOFeVBT#llM%q{{PHu#4+VnIKR z1O=|`qRLN$+YJXfJ$c8W0!(K;t~dIPPA_frRboAhcJD5kw6x{(0r^V^#}Rsz%Jil~ zHepPfn_JU{ATx0h9}k-*jd9e?kiD0Qi0ao+qZ~yXTwm(BgC<$yvt8c)siI|Kx#c}$aercChucCYN z32DB246lPXD^>vcv_EKH(WzrewTN4<6;P>DHBC{JzuAdyI(Mw0;^^7@ zkH7WvbyggJpFGAyC4kfH`$oUtr5yef5rg%6#jsLOY|3=$(S&mkc$K??_WtouXm z%wdtGo$pY~vc8^0J>yFxk_2)?dL9H15J80YQZsq6L~U?xbv(DbxLLpSS+T#H`k06T zTWzvpO3|wEK?2rq`I6hu4a?xV$jeC~FKYR+f&SH@L)kbmd!?NkR`4|jqyO1)x-vPUv+^F_B%x#I2q;Iu5Mm?zW zc<-fDZ*1qy5tK*mBILtn|NWq#9i_t1xh`#f|A|RPrkY&`1s&l(xRV;e1Fdc)^`^|g z2n~vnDArT`lZKc&^A`F6L<6pb*?ik-#cXx&lcjjXj;b*%-fM^+xre)rDa6CH(r>s+ zPP6^5;S)Ts15;-Uc&~CIGyPYv?BI}#8|xY+f8^BETHAuv2eflMqUjb}Et|4@i2nQ> zKU&xQiXpa%^SE%&3%5(z{(i46^D-cs$$L8@5ekrtPQldmoMs7y;z)67GPM<0m7EqB zK+AkJGS;!ZrX3(q1^k)BYKGy=HJ}HJTW&Ym^%F)H^tgH|iR&;MP35jR$nrIBWj8(gKI=<7Q-5uT-FW-IocZIeFP(@8^G5h|h;2GYi>vkkA$WgJ@gg=oysY z@X#Qh21HQ*Cu2%6jjV?NNLUnTdR)LTUo7^6_1|0LeJ^EU3VQem*pT6B?VRRsNQH{b z(EhCYcsSv{7<~EK#4*XtAzUE?BzNSbDS%{M9V{T3iXr;DmTuJqAI9d}&99M}A&TmH zzYRc;zFFR9sjwgU^jEHLjB4dAp6@YL`rW*7Lx_ZHw+~&5Y1&j@VjJOPjzFOO+8yz9 zW!3cYMw6IC6H1Wq-!;8Tyv=uO<_t>YuiQ;&1r~68a+9a8gGH7cfHe?#-KM9z*J`*F z1arB?Gi_`kQTNdPR+S9Hnf~$qLG&G4+h(&^*M)$T2BZ7}{C{eABXq*}keoPfm;$N^ zu8c1*m6`0M1?&aur>j91H!Xu_r9nY+4~#cfm0LpssZcD|=vI|$51kT=U;SOCf|B8@ zY0*nFv&+Vzzd5h+7~535db&AQ@JJ%t{C|)OOGl(kxCQ6djd>}z7raC7@Ip~D2ASo! zAvG4ij1>|(h)=54p439Gz1^$nqw#aDB~8T7?5zcXxMpcXxMp zcmL+S_x}F-s-}ji*`l^~x954fPoHzzsp2oSLy?!;_p|)AS2G@2Et%~4V#{HmpY}l1 z$;CiD+dKa;(>-5`*}0B7@_n?HgOuS%%lU9=ek6$*?+y!@rK2gmSBm*@i*M@QCcV}^ z+6TqFHMZc{Ipb{|yAFh}!1Vbpqs@o;ie3B0({jnCfObu{@(-^X%>TiY*^hpK0Un6I zKv^u@P17)-re$M}BaqM@j$}5ovMA$P5YS-{Z7XaVmiOX_tjG;TvpqtOQNsur*@B2n zO23)pD6h-%#1 zbD_f!i(h^^~lsT-B&l zR_uE{`}CIPa%bTLq0`?8cUbxW=Sal-*MH6@e7SQZ_O}0z3-CBsZ}qSqom`S44QJ!y z*93o^LimW=UrG5@jd3ESmZWOdxZ)8;cSy_6>k#qN{B~jXD{dR}c~|G8c9r?zxKqf$ zpWTs~89s2`Sy4DT3a@v-8nJ=iq!#-%QYZOkS~I=ko?j*A|H=XoD0~9o;N_}5eFLZ; zz!!}YntB&XgK6;yFk$5P3RN@5$sIsqX7iN{b$Xw!>LkGc4RF!uS6EtV8> z0Dt2xkcZ7Hj|TtQ6NI#3sS0sG2>fYe59-QO0vB>orAVKss`asX$ezN+_jGkfFqrZC zo(=4ixH6*%=|@Y=tJ7$SE^i-d1_mEn-a3UH>?z8H65_aU83BbgRns#FB~lI`U+Y7K z_F_8P?{_sxhkLB6>@#nFCGO z^m*=y@6Rl=J8gNAwcMw8)kHG81F|4?b7U~AFn>d?{$5_d)qOHr_$(y z@PB320XS#?=)3w8W3cPchqMBG>wi4qHCKV2(38V>xy++1<@mIUMNWr*y^|Xw=6|4~ z=LSZ+lkKj2ch{BV4{9_9_Dp8uadMgf$AjDN5^OVOV4515WjkY_4*k;GP?in(`+237gr$hP*->Fq;5;C)ns(cPR@6)R_SD> zn~!y$R4oS77*(XjVJ(%ZzoAYX{)$V6g*1!yu?o?dnw}#U4(<{?+e87ulMN?08-qC&IQqZ-t6@{ZXXc6J1h^~?2}3?)>yP7GD0**hFU@=-Yn_|iszTYY-hz!Ly=mUtgd|WwQ_0etjFaC; zp>5adZUzoJ;tNNbob7w^+zmgY%X~waSsMndGOz^7bUyr7^{Q5VkU-a32U_^M1i_oN z9@Pap5HBqs&D&_`q8;m1p9}4ID~)S8|GPPcDlqfF0W5E(V`q@Bq6H|62B5)1sg0p> ze?eC1&Epp?Q|6%u3zt@g0+AKlO$osz7A^U>^$I`{+WA|1r*X)wdOHiwT z8Fz$T0*R0=joWM`+N{|9!rKcUwBq%&Pqvwu*zetP$-8MUc+r`nS-_l7ilHV)6p7Q2 zn^PZg!}-UXzeg~WcjMQ9pjLY>2KhC`f9w*N@bSU%|1hIEkngm{)u-DxP}Oy~2q;bk z%{BPHmS+nUph{r3v{P+wYX$52R#)igwh3&0WLK)mQCIm(PcGPR=Ye0+7~36=hH9E= zB#cxqiN9H3h-Yjlk!XXmT4k zsW~I_vl4Qaa)yk2sN7otI8{WeREBlP-pkHkK&tfKT3w#ak`@@~Xk~c%(4bU84Q5jC zF04!)A*St1PairdZcAywIQx%R`Y^G;P>TdrT+XN=UX$mZ+K7a;^_x-8?k0)aw_7ay zxVk{5*V*PsoA=^Lo&5lZ_@TesVLoKmXxV#B32=zt}*&5|xmEoCFSJ zIb1vT!O?-@n^ls7MH2mo@Eb+Cm`p`#U@u4_S<(_ONK{HVU0v zyE8uF@}qzn_SPqras% z0IMP0TWXP<#Vu@0YvBqrI@Nq{;p44Nh+ChzTUzt{tjnx}&({wp5tAZjClx%lXh;v= z3eTQKNFL13#0E(cQI|JRSjxZzZWM+^M#=OZNl$il;W!rP@o!Xm$U)>T^E8iXH~2@8 z+{9u1<5AH2-M*dsalQ`0_U{A*wchhlAJp`gejhw3h^3d~2)^_1n~8WVSw_?X-bEx* z;B^riZ`5%CD;~T{C;aR8sO&GAIxbipcI)w(8zTaxqx*YEwj#;@Mx*9Q(Cs)XvJR65oA6>9nj|VP0&(b-|x#~p^ zrAfY7&`By@kWh*GIehicn$q}>5uQm#4iJA&m}dZ*PTIRMI~nmA^761bQ{P}eNAr|S z5FjiAz-s`Y|NJPV=hjFj4eEnGTDREDNT=t<syS^0m;HMUUo3E=Z7vD_pLjj2ll?QR`A3E&Sh)r`*er71sv^$>;`2 z=-3A1%Ly+fQ@TqwyM&*?5`3NZ9%)_Uj7?&sj0HkyFYREU67AD#0X)Y#50#oOFLTjh zhCY+OgS^!syT(2c2=noXho^@1mwNo>iZdo)N&CD;rHJ*6H_?@Z2(tUM&n1U5xBRbt zfFQhkb&ty(It`D@oleHAzs7HpBMM3Qfa`!2zJM!!s?V4rYk&{4Eh9Z68>3 zoWF9{@iGBP?9*ex3xX}ZKAYye{Esfr+d7t$@*6y#~+tZ@zC4C{7Z@r zl4rv8&!TAOc$V<@5kd|WF5bwz#3i1TY2b-(4NesQb$iskUJ&1OoIQPH`_J?A?pcd+ zLi_RhUhn4k=Xt;y=2-f*BKZ9{o>~G!2B-Jg*0m8dqYmHYK{#!t=*GeJc0eoEL}thD z>$3TUnVA?ltTB(zc8S4A!n&31h4E5aHM;e?+m#)|nXr!VE##SYu4C1GXU2~lTy@fZr|MQ+Mp^nW~k^Gz(GWjC11z%+%ra5Kvj`DfCl$< zbOi$~$DF(v&wGRYdVLa{Wb+EA`X#f?%%kA!xPJ=qQbx1kFmm?sg2LDgYjmC`cHW&P zz>tq3G)cz6D%>rhLu^qnU^bP5lu+zLC1hU zd0%jU7R5?Yu>~oV7C4Hc|3d_szSquv|2JR^^NSs5>xhM{{TN{>*UAH|fnJv=3%%p> z*6IC3{I^gX35lK-3LnWzH&m^^;>m4ZpEi)|@Oe4Ez7#GpI{O^%mP&@dX134P5>BttEM7Dd_{`%SbD)YhUF1)IYC~w zxOctjj3jz7T5Lf1VF;ATKf`eZy?2z&60t7+z&4-tK5lk6ZA-U45C{vef_L@4y1LkG zuC-ovg?FBz!ibL71-!(*uss96;j??QQepe$)|p}7S5iNqiDgb94Pnz45-FG*i~l&( z-ETcPAI!C7>fdGWFVrOh0uANOJk=G#W73LdKQ-2&gXD#1;8kI|?)(1KCQew!NnRdp zTu5_3g2DPLA_MvoWr%KhrMF|Nz@mBiP&$6HX0OM3TqvNFAc(2kGV^W{(Uo=;ykQ(oqxUxxLN=sF8j zomxr$XHiV2mp>>pbSjW2JmB`g8J!0SZ8a(6X4O1{h@If*+2Y5M%S~qH!=Iihj9&7O1WgVlc7zl>H??HGR_*7V%b8+|5_0K#7uX`WU|rM&0rLyTh+`_xScn)MoD0zg^*<6BUxhB;tML*p2|Ao} zr*F@fM?&ZSx*tk>kzpuI*kG^8YZI?KK|GJIRM#PdI;+2232>eduq`Swr{R zWc*ARU+29{f9q4lf0GbaOrNO>ZW`9##exJu03y@u8I>Ewkh~_30%kZM{{+d;ZLP1f zx0reB+PJtB%r7iN_y|qSFscgt9er}Yl?CP?xY;Ty^IqC^y!^TyaJH{TdVF_osR7ip z1iY@RkBi4mOTn*?7nT&!RwB8KNY}2g502V(P6jo?&qZZt5z4ru=?FpyXeO;Rf$tn-q=&oaUC04iHj#z(HdW73|3-Vn3o~6LaSaN|d=N zVzt!WR3+?x8%!(3)5w+5&!4hWpndrCrfaSz#Cp`J`Qk>6ouAuEhxH-I>uO* z5U1PSQ8tv9Y88G%&~Aa8scshpX}3HtnR~F?8t3XJX2yD%Z)SUYZDjbcMUFTKUTJ-% z@OUD=8SY;$66Pmb0+BmY*e}>p&Z5XvftCIR=0M`7^UY76wTXokm>SiQ&n)~^=&_)MqqVgvtq8qAezb{9rzHqkBKh8Q25*`eX*sqbrqU&)v zZU-F0xk}!Fh;LHcYD$NG#mOCW8a=$!BC(7(QS@ZZVjS#cd>+2_Jdb+*j@2wA5=q~; z4l8ik^IxPoIhN!@)vFO$g5@_PwlV6~! zh3vSX+}60CD%+FEKMUZ*Ck#!W)Mc!T4PIy^e;)a36=vU~jgdQKDYfdl`e^Z)-#<6R zq1L*HFkJKsd~&dGZ=W<|KF}v!Y_{7zS`fjetu*=Y4*Ng=3vj|vwDs;UHr!-sOpv_! zznnHY5DZLB25w?^qsi5;z2@PEZ|kLvVj@n))k}>PdiJi5za+a;(Rk9CEytb|j0UhU z_lUUb9wRp!r_JwBayPE-;fgkv7a8^UjyREs)?OFlj#W|`Y?r4RKlPF1PUVurMQvmo zVr$_7g_(DnR*Ywoq%~`c*NhiZ#&-`HtAV!X{dJ-SD|MsYS(;8EgRYG`5GDDaoe`iZ zg}4v{y>>zJhl|ehUeZTGJ_(PYPL4HR1Q~&L(S&sM*a0mpWlSX>t3J~^kGD%9&gOU_tdJ<^udo=2`kt;9mg z3fEnTo~|d2ZUuPa9IH2zwVZ>hG-54RWHC;t ze88y}aT+f9;Xt`ijkwTa|2djKWdrS)a{mdGq;WBxpZYI86~CM%D)s}r=walQZ|)5C z6_hCwtq)bDzWywj+W3~|IdI>JOQN;6x=97cI>T^oF+^65GUyuxBpjX99KTie96IWf^aFi=tOAJ&wD>Z)W>hp3Rg z>Jn29i=Un*_;wVl^%#?%9|PR9I>B77mU3{IugT$x_`G@_5#T3@z+W+QR_^6~TkQBN zKPijS@wwLSrKjoASw^Q(JT`Bc?-8)@3(8l(h_dc8Cn_oLVWlNBhRw5lS?fO7(Tv-jb*BI@e5;1YpX6|5`$6FP5&UlSc2<=+KpT z_Xt(cwUB!{6hyZYlg#eS1)|frZIxD7ya9vpmp_L0q%2J8XkVy!E!i62>|NKWzw7+} z_gUFmwh(_Lw|bz%-m)DOQwS}uUF~z-3~6nRR+0H?)u=!43LbFY>;xy>& zSoT`0Zk%>I`;yu@hP}SNnK9W%h29aaGuHK?)mWZPRiNb|Z{8qyvFu{?TGj|vcUyDF z$_$aqyw=tx*3SHUvBLQ=VUFFU1;8$%=JAjKF83<5r)yZrC-scgL8l=a>9ZU_EwYP^ z9ss;A^rb7lmqI{*`O9PSm%0XLq4R`Q7CjKtK3GzYR_U5{`I|jf1A=8WB|9UXEgm;0 z__U9wF5Je6UhFkhG>94Xrk_qJHSTh6f`hi_%Q3(Ae+_bOMqso14V0bthV1#ArJHCg zYv6Td@~*QovB9qc8XOqIu=VxolZy8imvSAei;C8kmX@Vzm&Pytf5B#E)|q>qHXp&o z2eZ_f|MunHcY#7zYQD(Zq}7)5J)E`TBM< zUAa*Z>LtY6AHL*oe1Na5@z+0`EcDN~x>;^DKcFrA&ho+*4Gc_%&us~Ha##HlTB32_ zjKNx*#m0Wsb{HpvohAku+$lN$fBbOS>{*!`Q}AJX8SZ-@?qw)J$H;cr5ah@*ZkEkG zZ^J_1@k(^D?zYSX!D%s^BO!%3|7+KDt>h)sgd1r*8JIxVi`)9T*lY;d@gwLN5oaMU z@2}kFcY$|2=aowPW6OVh968+dQJE#1SmVW~j~n_%Mr%l+OAmwYbeOf)_y25<5_0Or ztt$^Z^vWZBY`ehkreVsLAzi7*Nk)IghbdQg!Ew;b@F?TkZ}`PqYhb}(&Ew8t zy+TP(6QABWL~10hPCrpIyyAURBr_s>f%_A7nr23Gg%|=C4s>OV3(`jhm=zXuAmnz} zb0|YA$BlLvi{&O0^2EHy_%_+x zSo+OwA{{5zPuW~7`|59lDUrM#>>{h`o}@7w|Mn$B zq~ha(Zjva-tWh@@T<@~^C2D!%mc5Zqh6C=I!E7Eq#;b20o z##H56_&H8^o!@VPqbaH>h4)9uHNt5psT*Pl1Z^UHla^-<$Ajd_tJmM;Rv+I=41l~>FjQt*4; zP0oEo@?NE&VtAWzu$az45&dc)#^8oyjS?@~z$%;prX8A^y3m~tZ2w`0$F=V;m`z_#cws%z( zb)5@sYMM8HR;)}DFS$RUmmrtUm8PW%JFZY6p9d4jX4R^3+DOzy1Z&MaIAhi|G8`yG zLOp*XT+G(c#uqa>jv1D3$sU@slDA0|aGRBRlMC*i?5qTC?w>_W@G~do6f(=c7WG6e zY9bO59X)ULA>+-@-&^VK#>(gIabJYwW70Pj?ckFJS+b)}M04w;9q4~ACR{@VythZ5 zYrP3<~y6%Db8VZa_{{bX!>R3umEt}a9!@J&ysZn4 zjx{NSDk<>{2lj%Ie>Cgne&$ETlXWuNJ(Rl@$GiP-D!LlaQ5`kZtpLewzYYpU6ObI=zx` zgp-2!zT)YmUG1@(o3$90P-aRhSLzkZU=p`23U|sdnJ#oNoRN_+LDCC4 z@`&A%FMfJ1HDA;*k47az{jH(w>@Gbuf%C>h)GpG zN|qCtC+2>zPqu&*CF|idGc_CxyxN`Ptp$Iw>-BsD1(klYIc{e2aU0NU)LAF8$@nFE zuP`23Y+{85Rf-b+^7+zs^lx8*rISy(IfezjH8MP6B&ha?V zlaU%%D^-vfky2L-6Sv zv@;IwftG3m`zI$=DFhR2j$7=8z>K^Nua{gZT>Ph|`n>lS947On_29{6kC!m4v9p8O zid4DQemK*UW4tx5r{7&!EyYef!v4x7K~_mL=%E0HH{JX8c(I~5Px*~OtU}c+RHRa> znfi;L`t#S5OiOnpSpB^{7Ke+SRaYCb15+yxfGU%ru=T||rjNk27xZ#Du$e3fZ|wD|8!M+0o-6-U5?G<8MtYCr+tARz_n z&b$(&WD8=dv7%fgVBJnF@>TIuX{=`Pw$Qb1yh7^oT9brFB(k?T{W&q4(6w`A1OD^P z?(D{QKh+Jg*$nH`&SQJ-Y0y=VWOu3IBNlxlQSb2jHU`eReRw(P(*3_j=|D4TJilGNR-a0qKd+d5`^N2gmPYVS z@g9?*ax^``aWt|)M2Ylvz}HebmC!je!vXm4(*)v!^4?fTeqbTz87`7sX}S?XQZq! zA2J%pjFy@h>79Fr_F)Ml^>il=Zv#o9MHmuqpM~Qk`}Y%Q<7xbasA7lv4XHtYMGTwU z7Tm!i2P<>wtJMFcbaJZG1$AeEgF-~eVndW^0)@I*v7PV{M-7?nxbV|u^A)M-Fa!Dx zqs03rYj!RJ{h#D}arLwU75#d5(Kh>~_8oZQ7tZVmB8+;*JLe?bjmXV_wTSdAklf?bHtA%ZciSLWt0K5v+F0H zmVtsyRU7(yAtr24RPmgJuz{blp+q)I{qrO{RJZv()!9K zjcYc3R=#B2`5aa1*vzzsbM9&cwRX!d_?WMq%cLzHtrg2CS1dQ{I|x4`(wZCXhx4Mr ze^;xQ$6v=r#U-@fR)$eB@~allNkcgg%jF)(65WL3=9EtTmjh9Vz$#H67*%mKSN#*8 z4SZ~6kk9~AZ&rDmY_P~ALQ{@;swp5TH=0Kb=#S4AWzQA|_mz3PHVDQ9ax!Cr-pJ_L zHP5QzpP7k+s)!r+cdu{ER=7WS3;k$0Tr=-Gi&hg!ZQmXbZg8|V2?>76gtmBTgy(>K zOB6tN*LtmCv$3yq+JW8P9iA!TWDIn4)KpXq3=FiunU3zi3)ih4goDay~U-at}fs5%1I7p=Db<0LTuYrv2Pd&1tMHea+Q_}G;wbD0ypDQ z5CN1ZDM)vQ4*2sl=Ef(XqQC$`5o{b4h)&WUJ;t|c{fUrishzvEP zyfAVQjS8J6Tx<{x1|BLvgal23j3i#SKovY%BuDX=&Z>_^ai?paqzYf=Bn9d(KtKoz zm_DHyH(JTA%#M}YYqs{{)Go!lU4t>S`5sVT>4rhwY86F9K(&pz^6wa`%_gX^3=&^kZqK8A`{Xq0stF5`%J z!_yP4_9jxTuqNJYJ=z(}$KFrhdfu`-&q(AoZwD*$^5}SZ1$lWHSy>x*GRw-^{QY-& zdQhXq%ZA~(@Duv8YOvWT0)#10Bt-bqB?q>v=%5gSds)nlzktc*M}d4LDNrqG^`&|8 zCtP9&u@=}A{(F$cfhi%y(lqgKz^GZ_;oUH08s}yqvP4=@)M6p3?Q7Bf-_go6|HTKD zdBFg7hzJ{#erghSN(!z$*8nD_>A?X7egt!{k)g3NC&HPll){>0y`;sFrgd}z?H(7O z0Le~1;wngmHZ|SP;8#F5irexfu2NpP_1W60Ym>*mziMJz`mlhp! zK;>MvdR)D!<>oG8s()i-?faHQ-*Rff6H$Z4i`(L_!WSg1^q8n?sm2H{`^((lK9VLk zsNNqz)TE0Qt24Q3n+q}J2)oSgz3+NZ`F#9Vt5z`-?~stkQ}XAuHl}T&huQ2}ESY+< zwWsO|?U%fTK5~^CI{cHm?r&;c<8gOuDy!fw_)oSkO9DziA0K|1-R9@N25l$6F|NS~ zcwBs>9-)JXqhVry-m9}&HN`hiCt{Y*|L>Cxfh#pa+k+}D8R9EGi-E3OkcYabc36;u zrv)C0Nf9)UQ(F2xi47>8PFP6DuhMR#o^dnKIH6P~>(+-da~Uo;F8Tf#l(n01!bXVy z;?x&u1tYbw(TTs|tCF2#D^WD-@Nxz=$Z6gWL+rXI!gAHp+S=RLn3 z*yff3q*I86n^hfPFQk-slWMp(?q*M?*T71h+nvQ<_?2HbW z5>9|$c78@jPd|=3mbun29QJjl-j1C4u0%5q77|Pj1_>^CZ(MqwNgB zS8UW207ASkE9h5!-qS@$8Y9*=!KgwDU;@cmma*c#-EUvxVO0zacFzH+K$Wvn#P5=2Ll@pce6+IW9zRDgsew}cnn9GSN| zs{1+{w1cNviuxVi`n*sY|KoBv?86JXzJ<*i9w;?uv$$<#D>$95bMZ9UR`r&Eu!z^D zp%SmeAqG-B2U5b8aE*-@RG-u>`y~sbS6PBxB7Dr-$6>8UaJ^6OvzN=k3f^V=0mNe- zFKHsFiJ#3x-fBh4Cxw%_a=ISBpJj{GNx(r~9F99fx`Hw|#>QE%`T15R9j)t;36~Hg z@%@t$J<&z5#Zg20iFqRWb`bT76O%H(!&xe!xg2|e!bubtafGhczlgU>Ra<@8)it`?K7rmZ+2CowE8 zG3<6nl~*F@=i6Ab!^O44#iicb%-zz=&CR{Mb8Y=Lm`}{}ch*9G95Yb(TeReiVyujq zvkDexif9=HT?8p3ZFUG^uUN!-jr}|@N*)@K@Izt8n<$H_1nQ1JuS@N>vP59y4`(Bd zPqaqBJiDatEoW{CI2Ie_2Dt{xT#S88{r(hp7KEaU{HQ6rn(vqXa2r*vxDTWWRU6mR z%>5pfi0s1ujqXjQTMyc&Y?DZicnoMkt@MwNjn_JpTa-3M>O^DR@9hhYdQ`qwE(g5c zw4n!8%cR@1rHLq)&lGR3q(44{2$Qf~&cz+ByTSkpX|MH`*OvZ{Q7+H@;r-P~)R zK_JQK5M6oF{W``E>>06-^x$HRc|-q}o@niHNEQZuX7ydX%a zr?-I&720@~?5(v)L3s7*{_3Cgn^{7{p@08|N67w-@P2%-{;jPYBSKQnx*)DM*gY_| zu`)L?(g&OuMv{!mCbN_T<|R8+sf=^#o1^QSQG|4$6+)CVqIHs@m6DQDV&i~uLm8=Y z2|$#@0CAS2etzmVxSN)KzP6UOwuZmHp3cXwv-~T4vh}ZASP@rnW~Sv_h1R%OzG8HA zMrgm`_!zz8O=^j#9%R^V+}n`|8UZ{)xYxUfcKdJHQgN%El6^S8ZhV2uLq@6}5?gO* zjXQr|1ZEc*&yV&e43RMm0Xq&&)8EE>v3Na<(a9VxhwKpD^dDx&l|LGx-f;y!qI|-F za%mKfhP@(f_@!lrqlSJIKAp`mGch}wFZ!&Ta*CPgBJnqRgNsEvJzf}F<^&J9U&}GR zHJkqIjtzGWr9faaCtiU19t9R_dIf?dLnXc8bRl_u?%sk)_gVP_=CAg>e)8O9E<2fh z*9Bx(6;^nRw1iT`(+KpXnk>B)cw8Q_&Z`l@)~7os=FMK?NU5sQo^NzJZ}nZTew9D; z`hz<{_3HV%7G{ji^)3Z;R$twle>)x?mjl|p>X2kP;anR*Zwz!yQZ?luc7V6&g!ER>|7Z1Zmb^>YO61kP zQMtlPeYtWKSgQN79`d=IqT+b=Nk=+K`21*X?2n(l>Wstec*uwuCuthOS%$^oZ0a!B`NvBG0ClP) z5PE8e*XwQ!duL=`Y*Zau1(pcZtz4|TPs(N@abcmo%aWb|`!8u*aC)ht?tDG*T`@jo;bKS}tZt)HhHhZLz zA)UWz>{nsk@Ed>(=!3sq#PB$Fs_`+i%^UfShn&=QGrIIOLc4#vieP2g<=oC7U7wxiV(QxVm3iYlOF_jh5ID zMyr65pss1;SF2kRqIOvIS?6m(B0;TGk+IzaN{THQk-)lRFuqx^{urkyp&R$l(g2u6AS**Bu(5J&D<)PJRyBEOMPQSPk;&E9dQ1e6bBo7 zKOCC~<|~%#=HBdjdazz7mpGBm-_iec^0uT8Znl|X@sO|h6_i&%hKSGh!nO+Kf@ zEp?A&e4`TfhH*TT2=BFnLC0b(Aop~33azn0nJ>(22P}(A2GlT4^qY+z0|a4>^D&s5 zcu6$uxFNuQ-Pu*9_u~M``XH(i_9E5U#36pOr5eO!+F>=6pay0ehUroi@j&O%{PY+3uAdQ==7?;?aZ~ibDXg1Tz6c*E~O~mLBXD*H_rx&*GBcrXxmC9FXv9Q zBm;XTL0V4!*CO;88a`5b&G`zD)pIQ+IXl&! zZkeu5k5BZ@2MOEo-cu-`%M1_s5X8SxQ0zM^JBa)W6;f}9W@TTvJ>8qBm3kFe=X2J$ zqd2gL{q4z%O|Qx3CuCBjBKai{5(JY00&&3-d}p$ZSER<+7LS)iUmv2O-0>?SQyXC{ zPUie;eXhHp-N6h3X7?VX2b1yhOw)w2MTlR2*kA5i8`bvMrg~Z_Rk48r^J}+ec1wa; zvO$n+l%%IBPpgODwzDUDn)6NE;Qhb*{{7*U%;pJKi@^WOtL4S%+JPdrZoXdtO&NB0 zwYPh?(E!ehLy{a7G&C`C_i+7ViVuBWoH@5j=1Q3YNQ%CSrikT667o`SEoCPQ zGEAw$TYjhD!avF zB<2c$32@-9i5@kCACUJB_)qNjaIZLY#LK{h=4dqcUn)B8pt7RH)S@ZY?4q)||5g|mz(@1a zV>IiOtRPGYoER6UJ8wSBe0H(ep@#LypgVC;u%gqW28J1CU)^X|-I&DF!U;mh zyajqcp7=Kp3PYLkpCgg_&dzv2`bL;!-ohycLb$j~6{_35WFFN{^FLvIt_$yAF zCi0Ni{S~vl4Hj36%Xuti7!bV7noaPd*m03PNi-6A2?%Xnf>kS$D|6^Ml);7(FuP(&+VAG&VU-hY_oBb8$*^RyK{o{ zRN9k>C*_iU(f2`VAXVX%LtX6fnn%=oIM)9T zv>z_@{_ENis|%2#(>XCWWoeh2bgi&W%dI#5?M6-a*DG^87a=J#Ts$+JqRlPDxzOSOuDu)2(>=HiMDHOBR= zVzTLjjGp*pM{Y#E)yS?=c@BUS9>#?~Py0m|az2l}=c-WrG6GUGoi?|_vt_H{VH^y4 zHk#(z!XKFxgkEneu6D0iIc1sxNI@@U2Jbvbr;9is*f96*?dr%3QJ|ke!Atqs<+lrs zh;LTw425{cZ93NF{oaDs(ZQDqyoqrF*yvccsZpR+V}5*i1VgL3(SMM9GOvB@PU?lx z<<{Q%@})?ZK{?4f_HTrf@cBQ+FWVI8e66Zt@CAv4_+J9EG{Z0JuI##wj?5kjDMUKP zr6q@C!VslGU|VtRRw_OR;DXC7{|IsN&#&WW3qP2KN`b@va)?G}lg|sgs7x%K?j9{= z#dXr%{2W@E9V9#~BQn;QX6acpzs&s?=oNgAyRey^o?2fT9Aa=k=G1x*SD25_=WKF& zH41^NTYf_$Q9uf9i9SIeC0=uT!$q+vCBHu?#9DXO zyfe2;u=@jP>|X26HNDo`TNhSzGB2V!B@qV+q;h`}hN??tVu<#rn<;a^0g4v(^4cv? z{Pq(WzC=|eP#BnyhYZo}l=;$&t`^xhm$rA8))$wSSC?A$wdVt{0kW^9Y-t6$Gm%DvT8Me#v8RI1C->YMLn zKu=H1?jYmG?d0>^+*l~47e}p6B%%@2>;2_2*eAlkvLzVkhu1<NMPOh{YtpkM17 zmJLLw)G)X6$w;x18a%>%fgBO5=Ytzw>OpCtHwUbtfB3q`Ts59@lZ&UD2N+1d3b(}t z95lK{{l1)Uihwff{bT{qTDX@rO!04#;#y@$ttFxyPyO>b>~6o|v_4PT-DZM;d`Cu= zbotwxU3JXg+Vv9oUS2Q3?q50C;!DIAio$iMr;0ij*Ee$kQzE3+-1^nn$Mm4@r!*gr z%RXLj1^bN^&>PRZJBT0WG6lC)PH&$Tn_D$8m}voRa~_tcu+sHYGkg^p)LXHL9-(>S6f80qlQPFb0hP( z?r6zrQKMO70i>Q2{*uu67*f|*?`DtL(x~rzKpGDkRk`-${vZ)0BEiXL|ELnJ$;!c>sj%ZrwmQ2rL|9E@50sf5jQ6V``ju&dTX|^%fLPGgIGPbEQsg z)st-2Dsa{UyYbEonFEy>v-kd<(3#_9GGU#|tR)w|A)kTr&cV(>a&kO>$Y^tpLn?^o z(RQLjp4xEAoS$AgfBUx$k%hV8Zh4upLa-JaCNhyO>x4Gl7QOT)lyJC+dtb1jvh!2pq z$6YAg@42N~YpNFmW#NI<;eqz$s^~JXK7=mEZHg5AN=I6a6ErmY z7>NmRqNslIJy@Y4hQ;D!7$N!lUr<7GNUEi;J38Xz$rL&&MTH9$sxDd0nU2ump}xib zRfY|bB(KJ1!wnS4j{+t`Y9$UYWS`b1LwWFcw7}~SKoLIPiz#@~{%;orBA{O>xdAP1`d+uyW!s8Lr&&-QphC3sv(TVdQ36E#Z@b6W z@)4T5(S&eU##jF@$X8!WUa`Ir>|XLCu*yGNK#T}gFwM&lDKzJY&45f}>AfGd2cOBs z+o0KGL0zU&`T$NhYdMco8N3o}d8z0q(|t!@(eeM|0vzo&Uda#nHM4wAzFga+4TZV7oh@sL zsF;mS#j)MlsNL}a8jp;W3V6itU{lWbTodOGXomCm6A~zNK|%%a>Qy3(akgzQAIuXPR!-5RGzlKbx4%0YN!obY{^?l09 zS6EgcL+QV+Z)*j3M{YRPGELWWec6{z-nxywvgze zmH!`2Ul|ow+XQ(bKnM^lxJz&i5Zr^iySonV4#6$B1q<%(?(XjH?hZTex4Y-uGiQFn zb9h7x2^*KD^Fgu)72fs?ZZ*O!X1x6j5PnWCpKLXxrHEth%eP&zf>7XC=cG`Xz z^#sQ`Qp^}hhHFgYqE$I;fv z+@T^f%$BTDIDpA$YA^+I6v0!CF{%$C<0Vwyc22~Q&{`Mp$HV(6trxORqf6Su!Fr`s zx#cIPWZBRi%KJ;hDS{_fd`b*W%&@!?9UX%dLVK;xHX2Zwu?|^5_A%EcU$^~`O$u6t zquvXZs}od9MSr{OjtTsg5zngqfdov}m?~C&ZwX~};wf3uW<{w2n`nDb6O7|?99=J+ z934F|HNh!Mz-Jh@4k$gt5B^$F@@{U9AyeSTqnbJ9 z^Rl~@I0cT2cwG`q`;*yrg_8K!*7#!JsI`znjeDxI>L%&WgXM2sEm}${KM{kB61k%I zqnL_7Ui#M*q@zVK`-arc%16E-1$`hy3=YAeOkts32WqY@NYh6_2kk$>mT|b{d#YC zvbwP`1*1QcQMG!Hhb_YaXQy+mh0rTSMPz)l<0bxm|HZ=wfd6|e03b)~tG7V-4w>`X zu>o>Lwb;xD?>7&G;C7DzV=cC#<<;SSg6@39&HIx_+?KCazSLSj>#%kNC*?PhC8QK_H-3*EegXJd4y%oR86z^Ip^NHp;kljJro*Q^R-{}Q<_<{|$fTPK&YPUQBS-vg zd9-Opc|6GtP7`g6R7V7)b~M6R_}J9T;!kX;(T`pa`AHAx)gX`H2cPe<|45wUEs}00 zZiyRde^b;}WY$(hT$z;`SVR*oErp~*zx*cXk1FVIB$yr85-dpnEg?aL47W$G(vj!Q z4?amDIdy-VdT7Yq`B)buKu}!%jxlq0>m*%=8*PL7|ANJE=rK0Ft3 zUJtKT{@#=b=P8^mIrR1z>X{u{8h%;>8(8K3CP-(qmiwf^QhaNV7nJ;!go93%wI zpH$1<*`&&^B;_4~U_KVt2)u`dJz=pBn7q{*76*dIUz=9fmsxmumnLj(ulH8SP>)RG z1hf)$Gt#V9%Qe&QV`KlVu3AC*$;p4l4d}7}fgAFPO%87LB412QCe)!|?U}O5`~T%h zHV`PpY))@<_>6v!8`s8Vs)P@a=#9lnOotig!nnTqjiCyG<+;B+fvfW3bYW#xD*JsK z1?rap*5VW5yZ%Pqr(o3>7Mk~0g3-?Ohx&_+*`{+ z*XuLDWGr&X51v}q zki`{N1aZ-m{fq`qfbssM%ZxNsfR~*sRTMw@$?UM0Zbn=Pcw(Gi4`iuO-56$Iw>&&D z`Fne{wtB0V{XtR#yRTnPHRqccH*qjj=(JY33=HkTGk`Q+9v3&*9xk{$yoEg{zrBpN z8?u2e?s{a;-{&|G8P!VL^Y$k5ELmp%CBQwEoFr9TEDzHRRul;vR;qE?Y|QIsBu@Cx zgC{9tf<~2jtp<28rO5DN2=z*G5^S}*n7JhhaCHhgC~{B$f+80{H0?BNp=`HJ6L+5= z&W?aj#DNlNVNiW5VO&s$;o0V$Q@e1+?kkub@o_Wyzt5b5eytg$LVceA2thIyn+YHP(>YB3Y z?nXk+8CODQM@Vk->^y~`$hKwG@@~lP3I=&(>aMRG&fPT=lr;a5j<#dv>Hj$&*XfMY zsCUx|4FF`sJ4qn?tA)ts^eUy13}%)4zg5*!CqF~KMh3k_)H$qtN7LSE$F11VUeW!N zN#JqDmbCRzB2llAh%&-hSJK#US^aI7BqQ5$fr0vTLC{-bx@B@RW5y(fojrxUwPGgd zpa1mq^eQb#2Q(TNtVUaZ6JqC_{#JPb|6|$t`1N|3EKtc`fYC&TzRf#1d~Vc`o`#369>kFO#FoTCNEN5jwN#JGndL9aL9`0heNTXafzkD2s>8$mri$moQZO9Gw^LdG)}P12odo#1jQY~l`x>UVQqJ!H z%He2GPFZl1AE>a#|4k(Jn&$Ptg zPAw12Qj(MB^F|6gJ5?lQC!wCE1YpM7@7hQ*q4~CKX$N;DN^t!36{N4JhI>DG_=M&9B(&!I*`PmUW5K7AZr^c z26Y9i)-PNe|BqKdE7Tk%B^OjMnZWcVG`mD$5S9fWsteLLm$t)1HYk*ik6~%DNmAcR zY|Od7j*E?1r)-wRuEc8td-^)|RMkbp@(X%nq_((m+V8hFzOnEb?_at3CeJUj<3m)3 z`)4?AAN(EXUtdU6vQ-ip5NPJA(pg6BZe3Y_P(0dztRK$(2O~q4vf2gue&WW_m-COp zNK2sr{Kt{XQkn1oa+8gG0<%MIA*Y-2^3A|Eayk<(gaUS%)2p2rtf|lYbrNu`Y~I}y zFfyc9iKG!;2hkeNr|v8jCc%@INibhC3r-mSnz79rFFwDy6!Y|hOB`@Y(v~@}jnkQU z*Kf+$v2DFObjWk!3j;4h56u&@dadhW=#-%yP|X5z8Ez0iaE(~+?b64WWL-#10z9LQ z{Pzp@KJa;`^A;Ra@8p6`b_tk$I#P(t+x#z^z~8b)Ko_VD2)i{q?$!H`Es|wwD!Vq2nPcNWWdfMUEmU><9 zSw&#exWA?t?I?HQ`5qtTD<0c2w+%@9TT+q>Hd|ho=^m>1;gjP1dV9VM{avQh`TR_o z><1_=-;fa}k5{=U-hZ0}DnI~N!aS%;&#G;ukw$$*uQ*3xIMk69 z*bD{RFapR9@D}$*sf&pR5-roZCM-o8pPHK$vR=V}W=7bIs z0KzGr=^snjkDOj3>k}(gsS_e`ep2vt6v{5#BaK@dpG>CVD_mY*a5pt?B=Q24@20qU zrDk?e4NLN=agLy*wZ^xDfY=csxX?=O!|^+UUr}D2+}JKi9MVrW-8H!eeo{s8m`280 z96rYVt&_!w1@mQ>n#i^XPUNb&eSd$A17QRf<4eQgbw5mD!s}B{lGa!v!~0HW{yI!*#chv{GgGMT`{pqA&TF9HRiV5? zSeV359gXlUlYVjNy#8`0^rPC@-P2O3Z{HA~+9Z7S7=f%N`pB;BS=({^nHS} zxw*v!G+p`O0*xr}7YpI-A=JONmc-rrKz7w~_KTJSn*CE-4TOpkT=2iSf0|#LLMXN{ zn555^SkFG6y6Wj&+!-D8ns$sOUcxOUmZN)x#pxU^xx7}}dw-4JHyVKEy(ajPx-3T3 zbyt|GMop$k$tV!lUuvav0@oF+nB*dP_8)Ae#At^Kd<#wEH%#I{st* zulBa|K)Oy-UTctt^LZTRc)$Rkhr2?m6Yf|Ok79>Tv9gkOVp6-$+cD)Alew*9tiG`k z>pAM9zlL*}4*KtF8xFl9Iu2`8srmhb?zJ9gJ)WsC1A!x-g^$>txGKLa#vP1 zDuzXLm&%z+p;f7~WP^bR%p_4=YDUvtIZ_E0W5jlqEgSywIdF3x&){rz$Rk5l<;~C) zqUCmZl_WAq^tU{slfGoEbi`%Op)O$2jmc-E!vf$HG61=dw&Mf;sA^kDz8f9@JF0v_ zONd7gk-WJ*>v&Mps?)eTwernQhzyYJsoHiM3KeG%^c;}-?rrwP_gU|%u{^HeB{I{$ zOD_f|^cDqbs-ZIfs9N(xP=lB6KUNhO#Lhqf+@XjU4fU`XB`QS_zL}~t+RQz@DjGTw zkj0jBj&#~18voF7Ib8JB*(vy7%@W9Fd+j=-`_FlPeWdDAoIEy!^Ajz1 zd{6?fEiOOO^X2DN0@=Ohxcv5fpPJdBfJ?NrHu}-nMxPCFP2|{R76Qo!n0MBuv;ba| z;2n0S$D7ZHfEEqN&f<{03bhN><7M$!?h8A~((usHKwyo3xoST_ruyA)F_#Fi$YN$1 z6?!!BpTdka_sowqVdA0Zwyb8s(v??yeIJ?o8pCgv8^w}}&dQv54ndV%bZV%`rfWW{ zSO*p!?Q4h72zaOthYUv^*5^|Um=K%6`0J?*Tf5H-u>N?hP0pna(9qG@HIexY>RzQZ zn#0lR>BOZA_-~e1|L6qBau(j)9sfBgmjuzgB`4vB_u*}H{1*EDm&b#Lqsj00ahag^ zD07ap_K7C3pnvA$qjTJd(HzDR+{93#>wn?Um|~auK={L=)l~F?4p+sTch{rmx0Ib> z6__P-aO1(&QA?{){6nAV%=$C~N_3fPmM3od`p2bx+@%qx@Iqs8-)v5_*9W1kki_m% zS#(3>7;H;a*Y@K4xvtz`h2LSY%LqK&8@aUQWNxX_;IDCl21iSqrS@MXy34&?p~X1? z6fr**A9%N54NmgPj^3%R(!af5S+itIvcbb)lUy5sWWgqq#5ik z*X4ulL%^wn?k5A+ZF&rWyRwGPs^$$g)fk0WcnvY4SvA+v#c-PNx8TD~jcz_|i_*1qyp7vLUB=>{(mW2p9SsFek_Ub3y zbVp|{o(x61W7tn#k{e>O%?o!6tDk4Nvo92D2?8H8%*X1-<1(TmDj)&X+ z4?j7QW_zNw$vZD3Y~8(?SETmHfzbcU1L$Ea*ud^9Dr!JvG0ly6xFrQ{&T-0iNc?rH z5h*60x3|UE>!OwA!}VXGgjQ%6ahi@PS0=i>p%fLhU)JFL%!$>F>Ta6?7;Uq=AwE8E z763Lk=6>A}`<%(Z_(JRClqfOvbUgr@d*dFNVq$n@Dy%37h@XMtAnvpTRCGXYeIXRz z%j{wQi_Y(VyPtgUGT9x{4F`VI_c*VP6;*Z>GaE$~huC}HsBe^1JA>{M zhTsC<;X8OF$%a|8yvApn=cMB-UHC}U=7qa4?UyR|O0Pwhgfln7g7FQ1XeZI>Y+aKQ zZSpXI00JGuyp}94*NIjO@GYrwVf)WU7?F?zG&U>@DS&GyZ|(%fvrZG4Z09f^>`wX6 z3IEEfZu5u?e$2C^rXfnEeLkN7U)qB#4uvy=BN3+RjfYFF2#Z&~`8H9-$_j{KR z1}FeSQ4zN&{sru_9wf{1$dPoBBzr#4`$;KCm|6q$YaR-32o{hab-T-SPa=T*GFGm9L8PI^|g%POS}L;oV)b$6<_FiFBe#R3Fz$NWw$- z8Ys}D#1Yl#jn4;mtstH~9r>^}d^}C%4G*=Vt1csO(&7N|Nj|7$Onmp)J-vzDls-|7MdrGWnBIhA&bE9l3rw5Rvic~ z!gc@bTWlc!g%V`+BM%vExWZG5G%wTs49oX_^%h)UN;1yZVEE^b|J}}(HXfcPn}Iuv zp%Tn44~LAdzpL5|6J(u~y&0O+v=Wmv6O+JYk782bV$DCTGN`r5i@ zcGw15n+{k3y@NZExS|d-34Z-8maKRCFhIR7N`}!jRg_{vy@p(?(bhEpTUiU0fLH;t zla{o)aCa(CWE`3|B5YN=(V_;o+93u^kA~m3ZXAhAdmMEkZx|ir8u{~mPxLK~v}noI z!IT7WJXfaS2s^9%8l3-t)Xtjpr5m~@X`>?M`>A4St$+gaHAH9cZk*B%ZOE5$n>IVzD*?C7=?IvtGny~Vb`IT0$i=uBI-0;Pk$5N7Bmsk-T z3CDRQhLQz}w(P)WLcKE(g#q5?YqA`P=HbNC?pRIFGvuGPn99V%?oa|R^9{17K!YPf zqp0xGdFvn#yp5<$!v?1H2Az7%gDKUo$(t)99^9+!+@!b14ed#V{3K}kZEom}*NaO( zC2ij7X-Jv6XNTN6{mH)7UmS7j7Z=4zIvLr2g+&XCDNA=~(DB|WK-8?C|0sY?E!dg= z6Hyq_fCPGpN;k8z)U8=tZwZ$kz%Zhlx_0{CeuVM=CSHjD8(elJUXO@Lc|nCkqa|Eh zSZ9MV&ugm@!03EO6XFGWSRZuuJf8xi<;>B8ePgzaGGMMzyA?yPW$GrYm z>w{|l!|L|*=o6rN5l9uEie@3QkTKX5$FXuO{FLgHDcwhMB}(IUM0H9J{Bb?*Jo~MX zpplY!4O)1%PH!Mv!1FIq`^5h|_Kl%Bttd?EGk2eT8>uw$_$^NRMSqEupH$wT5Rx8$ z(T9&bsnAsCv|rvGrnSc%-YcP-gR`hrT4gH33I-&)uxM&{YpEg7zDu~Ra&`9hndlxB z!n?L)7Im?jT91e8IZZW*Ftv=o8nvj!WhGV{%y&|0Q8EmEEM#%kH1zDcq0zfX;u}X%oSwVF`sP`pOAcuw_`Rq`7AbKG`+yk^V)m|31rLh=P7$L(P*{I(b<7T zBi0gW!06I*x6%7k5UnngDlJBx{DJiwVB#h!S{%(UY zN;FmYk*{gqZ6B1SPY@a!pLAqM07j0w(UH|rc3M9nwrWTKOtOU$)x%l=%L|KEo-jKd zwok5Gj(G83Le1q8#Ge4{j^7}& zu@P_4`5$N)xikXA+xu}&k;U#zQm4O#m#CX&2kTZ=Zn#`ILY0GCtkUkmOv3ux>G5Bf ztGaBJkJ^pxh9{Zq(+G542l%kdYys9QUCo+3d59g}t!*nUjf(?)WN%Kd^V{k@Y3HL8 zP4>|g4LFQxS`*EFq$!}990qSpXCmF|$z&-L7tMW7TUpO#y^kVvd}OFAGuh~n(t7zg zC(dYAB5mrh`>Uect!S}UP+rO+%>-S?l$WH@?TkKY#=KPlc8f08uIgPS5wF48GTVto z^qp?C^5ZI{g;6A1FQeg5~@k~gUyw8)Vq%iLd92orY zajVtnI8a%2IH}N;@9Iyv^z~S2oieFD?I|SJLCrGub>|Enn$r`O1~- zXzE9g_%xVcF*p{yHPOAZXqB$t^ISjwR~fB0hzKjf&p{iVhnrT2I>FJaLQGXXm*y2; z&TQ$}kydNRhCpeUjNM-Z`?O@S>V+Sit{zTTTfJ{8=x`p>cML2aWIF?Ck|wbAkiEdG z5A>?pW%qus>z(?HR*(XjV!1n40He?Qgs#TF3wUrS`3;lQSUm06GVeIC%b=4Y$~gJZJzw{5*j8O9X3WaZ8-8#m8GASFmd*C-|0qUnep?cYYe?f4oB`q0}hB zZc*e2DY<;p3$nc=#xXobc5Y1VYr6lx3ou9)JMCFnB;(M>Socf5j)+fsp%~vUUlIA6 zR-V|&l6$|_It?8I`H#Dw9km&e!5M9;uV)=CK9FEn(^1ZQ2Rz1?xsDRYvbFXpMhXO& z8i#{n;$J4^>vr80GapM_7mxX1C*#c3Q;jwug)`-$9XlxI$R}kT8GW!a-z| zKY70FfH2DNdR}d9o(IG7Y1_q%=yPIh;uNd7WYdQ1hgb&p&Ub5@bGLCfZ;Dn$rAaZ=$@oFSdkno=MQ8l6cL0*s_&_dNk@pii2TE-DcyzOBPtjF zl%B4w>T~<_GJ=VS%}Sje{wDk2q$KwJdU7i#7?IH0%K}2loJ9gbq)4EGO%qI-m&ePO zy@vw*eLFetb6_c+`J4&bj}37oL3zntMh;Z2ez7y^!?wCuw!ss(BVXWZ?P3Q2>H!Y> z*Xj_vi;x=yiHpBfZEp(!Gh9?s?H;d0`eK;+wx-QB(Z3>n$YCNy6x6}Y@*;ZLLi$lv z@m_W){gy_Km*>ET^9vj_L1XSSnxdamVPQU;_Pl)FxBVck@Fh?02^oHQl|W9r-LPL2 ztT2i=O=FCO#j=_0365+G4MN|QkL{pP1Nv-T(0{{t42VFJi+KF_a<=Vbxyt3CgUz-% zm$81fcI|bcVl= zH-D%9obX5Ap^V`RebAB64tcEp^`r6qNMs! zyyqoslDam}7?w~J(&vdxKBs}GfL{gWPZtMwQ~I(Ia7c^wxL(y+v8I_wQ=$qd{I=Jt zt#3DD(N0StyzQh?4v{>ryLMf+nb2lSkgj-1i*rcVPnY$ z^SfSiB;K0!?xBdT0h^=OO{rBs#zgq=e z@az^)+ahjWZmUUWuJRno(q>m121CZXmSL)x^0VB*v!u0s19+mwBn7sksnEw1YzK_joXF^OrJS z$58hwe+jg%U&}ik`x&pIav)VsN#nY+M)IsrT_yI2VCI5~dD9k_k1>M~i|}Qc+D%>N zD7}N`Je{G{bJc)JP7P8(jzYi|l7T334~O66I)h1ez__Wla<@v*jKkQo57Fr)B4TtDb6952?ctbj)6+seXPqupwB;b0{G z=H<4kwtNqtOi!N!&tCH!xw^!ryIj0HIgC_&mmrT9IlK1|^OG3#WR=Eyr z(7>#(zJa32xbUllXfE#-EJsEN-=7YaGIrK^F7K|V0$OV8gz-N+-TB~#&FXmZ!4fs> z5&syl+X2ltE@djKNOHPF@wz*5`7iQe%0E@ADQj<|F3sd?Q==4YbUe&YBLVys3n^0h zqNcfJMQhUBq>(+ucomG|TW=;sePv-*yZ>Wj1f1hTyHt?@FT9w#QE`{Ljo~{$v zDs+iUc6nJ+r;U_wq=S;g&oy(D(0IjM?(TOuTI8-=VPXb}P*b2tu%m&_jt^}LgSyh? z&y*H17^aVR?s?uh8cHC!kwzVTAS*%nWcR04Wk%XaoF;$10~G=&4$mq_B_}q7g(*~pUQx1_+AgxR zT1rKoyn=FW&=~OD`~pReNjxLi?7ZLXZojr>j(2`Dv9X+$*pt@29IGV0CxZ86#17w; zN0C0#TU2o}XS%G|(OI7-asgMg;zMJ&8F+$xxC1 zF&ByS@7{y}GQ{dI0#%eTmmTZjTt4|~I(Dq^dCSFl3~u5O^D6^5^OMk;YXVTt4jFCPEwdE36D!*C2Sh zE}~d5#e%U6PV4%+A{se}PO~brQS!*4Qr47rZtvaoGD`w)zc&gQ=YJi4z6i)d1_zwt zE~v<4hWtBRj?_iU;EkTtvxK?%w}Mn$OcEzE=Em)ysS^8z9dCpN4cN^?0(^H+rXL?E z0+7Z0H=)2+L4+CrSjab3Gs()wR1^-zsqU+;brfQ#&gQKXxk9FN^~4Q+r@+_*%g{uL zm6Y{cOoz|o>YKwKovB#FS5PEvQ zmM`L!G$Fk`TL=%`+|LuRIh@~Wq+@EsBc{|_^qv=qYJ9YD2X=1FaK7Dc;VbVAlX*np zd(Nc)K3jy;i((NO2U!x~OE{!2^inQLR9N{T^UFQI@;M=h1+tDA! z7dWO{eH*7qPvmE(m7czS@W!2gG;=(3WReUpSU#^C-sD3`Ra`kbyVNj^AxSK03Jm(mJ_GoBERKR2Y3AHI~UijK6k+Ob*AUso_Y zNWen9hN0gqlxd25=R9sHrGASAGpK{0w<@$a3DNNf3>*OdJOv0~tv}7;`AQ>7R%pHH zlT#C;G#P98O_=ft@5gS>_?NZHp6Mvx5F*;&y(Ex;>y+67^@yzYqs=^SO{h|FzZF=S z)_sJut2(UPGiowrdHW3gbBsMlQ7aKrom&5>XPp0l;*~2Lfo$Kmzp$|A(MTs#BX^w@ zC^0`&z5o&T5xJE3!JF3OVv=DqN0725)d8*C(cPPM++=C}E(KR>+9Vzeby*lSGQ{&V zWSoIw446k~BsBu2la%takdzj3BV}usM${Q%iN>a?d!|u;StG@=*{e9fKBS>z+12ci zn4XILS;HEhwa8#CwtmfQguF&_^9|5N;Ue}-L3Eqr&E>_%c(FoC>Uo1-o@cL z%D55GSiQ#(kaur@!Z%m3RjUN@Waz&NE_;&6_!3o_Md7l)F$bgEwbF7OP3JtA-G_-d z8q??nVv_ zJx8U8a>CFJN93RGzI)gL+_d z419d-x%HdS&2%^N%g#RfJLc1x-cPSrFt^Urd%6=FvJ*a(@`uQ9eM@s>?GCrQU$njc zA_ISt2#)y}^2!?=P9vb@n>zkVG88H#UkV`+Zivs2ONAI~>RKxtaB>GVc5ci8a`yKj zMqL*41aSmC$KYz#Y*30GKu$jdC@q*!#b%oW!pY0}MZSg{5ty+aEB`bGHZj&zRj&DI zimKat?-9uU6pjs^!}w-(F-y5iZ|&{Sxl_nO2mf-XT@tW2&{<|0F<@c`5sU5|95|h? zZdG)=hfEx3$&TavG}NxRx=8OxU7mN=ujO&MIEYTU6Tj^g9+1(_o+>O+We}I)-IHU$ z0lo)5e5EdO$hCf(sGg4f*ZoS+_N6h6=@4FsXe3P87|vHiawoEfln0O}$1^#Du)_jb8S~L3LE%YSL}!CNKgG@b03$R$*wXk{&XTgpCo z4=1gM=kaDJ;&zq{-jsDEZ@`Qg*8lhKAS5jIQu+Y`2t4fQ$uCf>q2Gz(baA<^GH=*q z|8lccn`RQhFvkx?=vDpWI8~!(OB^}t-4Stf7lwiAg9`k9{iyv^#}~@21DTZ8xknE7 zsJ+ek^_;Cy)71zq4Zq(Yurk>XA)he)Tsp^%odaCh)ZAvXk``3EMC*KqGJhNhp_+EW z`rdc+cObAgf-|AGIsW9EzE^SSsHt95tsy_%^Y^@|XZA$r99rhKk5M*rJo+B4)L%DR zZ+*pMH7%&UXhq!K#IXizI%q*Q8}BzfUjSq(P-Y}tJ}Ppy z&ttH56QDQC{kpxz!&GxNmoXZl`(rRug5Pr+<~bGxs8n)hyUVMEg_6rN7TW@K?mkVR5%!)@+OVn~-gT@DZ`zS~u%Mh82c z9DhuJ)YcYE-U98tNb~4I#5BLaA+A03WShr<&A*fzl~wU_+Pd@@NplP`r}gh!`()h` zgh+hu`{oNA!NuuVEy7NqU;&zC9+I_%(1;{KR$(7bOnq{Mg&lNHA92wdmPx>(kpM(z zCg?U!`-1hzDan@~==`>{;ym7PKQ(_yXA(IaG5uxq$c6y`;$&2PQ1hUj+%2M5EPj;o zXr9a{ELJ%QvuiciZ2H3j2&vm&mxd>LlJ7)0I7H`poXNJ}?=XNr2j)21+ZM{|jv)DAZK)_Z!iv6d*e?HVLz=g;9{dJ_>1R0^v1*k|FcK2h z*gftydqaD^irmN!Ox)o;WH^k*o7-6Py4~jw&DO&G!aB>0_`6-Fi5Ph2#cVS9&*mW` zo@(~$DyGG`jDew}$$X}G{`TLPh?n#^{=p>y>ltO(e=^kc6}Z4GHCd!c#mcIHX5~=N zRcJg~Uc;;4RKZ3TL;Gs|)lD5mR0G4BDgpumm%*A#jrdt2nki}#LNi#qeD-G^MqJEM zGV?T+%HwwjKEHgWKUk}6D3NyBbr8UCWOVs4RG5d?&pt9G0}RMAm&}nb8E^#w$a@Ed|VBo2jhQ5)Fv|bRH!-KNilkYVlsESmXJQYEm%o+ zP_oAQxn}j#9(vRK0O-eCq(&ZP2Wz?}GFG(4=yrGQzB=lUdu#QhfH0-tmj;xaBv-Pi z#^*JXxgHYHiaE~Bt4D}W?sz=U+A=cJp9yI%@0}}9Mvz|Jy=Nnw&eQYTnhaKS4{S<) zE{-3BJY@db)MunMWWZ zrgT*$M*>+WstVx4RFE?Mf`Uf??4m!hrl)`)<`uxppSE{~>>jGCB|PM3y$(6{fBTxo zrf@$2Q7(;OIQv4;Zn3}O>TTOdZ{sbz)1d5FT_H<3I8it9`@ge=1E1{zS9g6C zW!t%LZE^9RVGLBNvs#1|MWQ%y_g@|#tPN_HJ6bj6C0z5{|1TDL550@d7A%3F=iDF6TuM}}?obzzFO^GBe zQoXO4jCp*l7#5U+U5g6~|Llz%=(IgsD$k{7dM`8C?*an}LEbXOH6XZO);&{z?Vf_d z#QNK@vIG8x)hgvdJT`1IqqkRS{i_;go>hJkPVG<(BQudZ6(TQ|`SXflcJ=Wk1LhcusW*?QW+&^prb@p`jNr zn76g8i-kP-#O?QEAoBTk{0yS4OYA#Gy&T7X?HXH3mZ+gD2q3)_jLnbG44C3qp`;H3Sk9X@{tLyo+6G*H*?emep#LUgd;wPH0j4q_nh*+#Y>HBv{o@cjNkbH=3kdemYOr zo*wcg2cw4a#kr>yl+$H<^PG^;_B>~!M7cZa9_2_kHrKP`Dk^ri3s#Vb`*t=tr8qub zz9V|aKt*4@Pz#QEYw&-ptb#F{&{R#rFv5y^r`53>j~&?<(eGjdf1)8_X2vfg;HIg0 z#iB6&m%7oTwmBp?5A z_B_^7GuLA>=F?MfFQs?@4X+cq5BSQfUTtMAY1HI#^1aQZDF8&A92JlD7%j>YoJnum z9(<=$KGX2>LYx#GwBKjz&x5?Wlv;jpvKx`BQebY`hUkzHSGkh61qqp^+~NR}G`Xzl zMOMV2{VMSXO~0K!14)(Vu8>7cXa967Q~_U18(k?3%-ri& zJk1Xbps`(^XMNepZpJacM0as8FiNM~TE8a6Z~&2j%b5{C!%Wg`b=~QYj6YepSntU6 z;`%v&0}Tz3_fRqQQc%ybagMTqKbd;dWIQ11m2`<5-G7NVi!TRs*M1H(M+!SPMiVoN zrZxgY@ySWw-rnSL?H%`fDcG-H&3-9nM&(kj6)OI8%(dBQFP|#(xIfnIkT3efoP0NZ zY@yte<`&m=7dgt^)aGW08#rY2=J{F?YWP_ei+Qs*^MHrjI&SUPBCiH+% zu|r#i-wBhVzB(vhV|4AGD+|Rd^GIR>sVUbE1`5CQLPK#N7lpB zNJmCTru(j5$C~?ZA?N!`f)x(;>&NnT7H)9XMY_vOQeexac2jNm!i#zT_2_sJ6N|%%{SFq3k9qsz5h0s<~Q~@sgY?pq|WnlZ+D2AOd2`WMa
  • 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 z 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�*pkYr7dN%L{vdMz7zhTRT{q5D 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%0D}>KE=Tddw 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

      tN^SeGiQy5G#G+%#yYOgwLYDM~&)Ej`&t zT<|xrU50cyYvmR(unhK3o@`3%%zsypakmhr z3+9gYvSSk0l>WfYz<0!|yJD;IJan~0*p<7O8EhZhIZ=?DnHI32nfH5$h zBI>DP!x>SuOkY55fKEB@aDpU-IlOGURov2|b%l0LM&bSa~(T7(f0O#dSg zjCq`NIW&3-TnQBS!=paSkhcV|cq#D9i$3R{%DTOyRk30{E@Ak6biYbRVE1?~ILdX< z96sK|q}JJl_~(9*F^9)1M005VOIWl*sO`T*a(Yno?OEtmQRwUnSCd`8(7NRvqg?!_ z{e1h^LA~3T8(2MC=EAVuQwH)DZ?*^sf7@vF5aR2N&OlMdz4?j0m*Ba1Jjr;rcq1Ao zy!6S-g|*OnQe<}?mZ&a7IHlpT%50oFjJ#FVa;2@UvZ|(k@{5AI2zFBB*-izT$=i+3 zhO_b&?6-JPV%4GEGkav}!BfECL7v6NNZDV)=Gch_`pNsX)rkx_)im5u4eq3w2~c2E z?&8h9humrB@O#U9o5>&XkT&sSH4$1%nL!@RkxZ<0$A=i#(ke?MBrkRvtOJ1 zE?i`aspZn$1j>=oc^oV9)YC{0|2`EGazZjJmnYhx~a6BHFtAGNSWv^vrKiBA5<&?CA(h zZubr@@7@tyKMJ<34UVSksjPQb7&Ul=Dxu?(Ae(Xrd0h&-u;_*_ZEZHWfBz?l!^im7 zZ%9bQ>nQ3JSE%dA?8)BfPwuQwQje9^YX_-O++IXCp=1s-`3LbX7*W4R@hrBe|$y= zx&!(0I&LG%E#G%_5ZiLvQ^o8-^C$+;kc}VJgCBlsmzkE2*^LmBq5fERE>z>-@PR~w+v?)i*U#CGIAT;dP8`6sGiRpR+sn>>vCuah- z)6TPCIL7175LkUSy2p{U%o=3|+T!BP{?oHt&r=^WON;xn47|}~uKjkfn?^j=-VbYx zA_%L~*`9j>bhHZjL=bymZ}qdYl^Y}&3T!ExHaRIQ&74kHATgOT+|lt4rhNC|>#6*E zZNOY0ayD1Hh_T%-#S$hnBY1;w3f8gVkH_kIZ&w(Q>3268Dr%h9l-_zoQCMxnQ_mn( z6%+(LTw&L^f_?NzpgekKk&md-W~8I?oZGIUdpkci}j@gS(6 zpcn%tq}2Qw6^7OIL*A|m7ATHxAW+TK#d)bv$uA)1oV1;{wQH!Y}t6~Xw+bvarB=oHQlt| z6)R$dd|E%7u=5$XT$*p<`>}}~?s~1#`^uwjYPp6?K)_$n%H_{e&@Sh$dFWkX1ideD zI$J=&tb3yz_|Zj#2={f$L(j8*QGVc|;}Vf2lElxy?mb2kA*LtE5?WTjpLH5*;{bh5 z1CFvh?ed+%eFOJJyY`9 z8Nh0N?*G2zY!%qn#)*J{M2SHcM9t;a;2sb|Qob?6Qt-nq3{LBAj|-;Oi)?4_cLFMk z12_C1%aN9{fcVSq3fY56YFr9fc(#0ef(jGdp*+$U_Vba9RxWP=U*F8XC|H9ivpjJ1 z+f&k6tkgSe&=2EY=dduRdgd<6+vNHs@+M_3_Xn%qSTZywuP+ROx!MM$Twlo54R9uX zW01Momn!O4%bT{c8iHD&dM(_Xb90O->=C{%2wNmd9XMraezC16C}XMpUJ1`TD(Ux@ zWCUv`Bcbn^cv@@gEt>mgY-eo0F|MxZNPo$?h@dxjkBG^KjhSelIE;{Os=Z_J2HI5* z6}9A^2cnK@?=?Fg0<7M%z-`(gX~6r!%>&dJrsv3wd3oRKp{S)tp@Khs^nhkA_-Le1 z@f0*>D=1?Ax;o)$^EWh1*3IGEjWK?X@nJ(8zzuDNCY6TrK1Z>;f47xD1%>nkZ`}~Z z>dk!zQ#0pR7ksmKkML}Hy?63V_116y>Z6>~-t!;u0?a7$#Q-ajSDIFkk~z$g*1e#n z-UGQfEa7+}B3)RCulF?GhI|-nrSLUtsc4KDsf!=>c-}@09p4Y?d}$!xj@8k7nk_`&fQ|F1^5^aM zAfe9z$$H+$_Jsx6&DH5ySq_EU4C`B;rgYagS89%i9jYKMw}G1RnpMjniq>9ZfVQnM`u>NtjyBCsq4d`GACy z%h{ow^Uw}{a!v^#g{s?*N)0~d&tlz_kEb`)%W#5%k^jjIHVrOMe$%)?RvXTaG^Xeim++GC z@D9J6hL2bR3QiO`Mmm<^l9@*lG6S!x8`JOK<8!~`KkwTEf+WMu0f>r4%%`fckk|AFd%^uP z#je6yHwQ1BM(A*DQ)=Jh?L)jfTKkHx$xD|eD!_TWRWB`?4L?8En6^p&P#Vn8Csj&K zdZWcef907GS1i06*px@IEB&+sA=>W_}XWi@A7K9MIdm_diZrCC#9rzDY-7E2EQ($K#+Px|gI{}3o_5EEji zZq%wQ>Qc9I0B?7hIy_@%U^6&6A%=pnID80A6eh;wx;4pi9b`0}yCB+a3-`^3Yrl5= z2~%mED|j5&mq^onGCs|jHeJxT?Nf@sY{B&QX`M$?=kdwbFq-gl7q>pkRxVEF?o<`a z_8!T7=Qbdu+N?7vPiHB525++^;B4=M6~*->rm1|MoP^%!33)+ZY;o~c-H8j8N;n!^ z>PutXdorb+%a-VQT`*Hb7;qE^4EKw&+v5DQ@F++J?tlOFr3Oc`5O(7en zr{$1n;=e~nmh8-FY9$MnDDtHT0uPe&6DMP9;w-;hSzwBXM`8$OU;2$i(EpU4Bc<#s z9RH71Hk%gPid_mFnU1v#k^S)S0R66kpRA#ro}p8CBiQDpRKiIZ7S&?C#l}ke30aoG z<#c7~2WC=G!F*%=86b-cJ3ru%GQ}wbDm-G4;?d}#{QBndsd+}Jd&MUt_}qck!C!9_ z*<8;U>tE`_*Crwcrq4E;7MKNqrH@W|o$HBG$X%pykYK?+4>&IcHCi+yfb* zl8zU@>Jz!WaSt>aQvhRuveFL8N|GlS{LpG}uWBxsn~!$Az@?Mqaxh=l*O3;A@U4P( z@wE=|I)hEuzW$QUHt(A3VYGK5dH)B@d%10O@^*PnEd}W-#dp1EQJEENWh3rbjE2CY zOXbm3zw;0uq$D+O{9S=1OC9Z-{%Q7b@2rl&N4zNX>xD45TfFr@B`o_B+Hx(dXyjiB zARR4#KtMhg^0?xq4o@3jx9kw5_H^TeH7l`XV9viRNNI#)wLj0S8cZxV)qZ+&z8mrk^PddysBhhM8>(B zC6@2oAAafAtg0ge7`wpw^CqIZ4s2`H*$kXzEaP(S_3@o*W<8VO^&Ac9O7S;i1y|B$ zl$u*XeDz0Zw?HXjvSNzgu^&qqt1D{_*PgOs-7a~un6$opbLY)KMD63h-s7sbNOHXw zydV-3r+as2JNOKllyAER$?|!I$_q2)H#a8lXAww_407GH8qKJtCPii!VND}UPL~#! zCeP+BOYv4`#y2v>WHH(wBtsIzC2kNGJ@ z8X34%m9iH6#i$3C8mJ6lskf(_(dcUmR1OQPT&OMjZ7ItiV()ja0OLk@rmT$M2z>_c z;9C|vyv38XrX*WoH|h24ck;jL^6_3g#j5YGAb8w90qs5RKP-yNRdtS_t;Ir%_jNhD zHCGFFeIvD;(T0Z@K@q`G?L8O))MP-Z`7@JWzAuw#r>IxJ^Ir@97ft@j>V>)JJG3^G z^AXC<9C0kPjbX9e*FQkizWp!A@2&FA6qS~WWt%0t`lj+e8Q{zUbY;h+CNKfp2xXuo z(&@?UW5M9OF>M1x;=qLEjA92hJ9`F|Z2JbJLMYcbN~kvcEaYqL;>Q3`QF%GJ%Yd2- z^oD>~p}h6=^3%$Sz%`Ltu6k-xHkhl*7=AIY-6dtAK7p<-k~Im^6-Rb`P?TK7t`-FJakT$dz%8R zSBS7jz~0B0J7AU!`QS!Cdk>Wivh^8w#ZJ`)Iz>5S2T=>G$DaXngCNr+8s};o-Nl84 z&&I<9K;pg{fOMSS%qA)Qk8O2A86)}O9H%Bb{*as3YeT+!j^MyTBx>^`K-7$eJS#2ANCW4h>zNoA zUwisCaANU!9gZ{YB>d!+_~Gi# z(jtT>zh5LQ=(I2YFIy{R^|sJ+Pc(8Um)I%*bH#t==9RvA!t{v%ofFf?Rl{@Z`LC3p1B3nQ3xXU6ws|XGZP{2d z3!RT$YYMC_sn0&=uaewh8#x$l&G+|4~EJYga*u)p>-QPxT9NDmiKX7Ih zAULN4?Ap-zdttU9QCZU;yE8f8Cg48dH-zR0Oh=xQ?+zlwqLt@Xm%dY>A!%(v?Wxk_ zz&`un*#GFix4@Vx`K)bk)kj14a^pR24GlCAUGMzdTC!&NxL0C~atzkAeLC*hjhCCZ z7VIs5d4D446r0}ar%h~XXcZ9GhP79K|2;@19tqxp0v32>bo9*m&CNlr4B|h3?#9Jr zNJ^-kX2Dj4fWb%>y35=Y)hX+uDk*r2qe)R6x`ApX;yL?~+-QFFdlp;O zA;97eQ`ETgf#APsH`{~b8pQ65;T?N&1rUO(i{Dm-kaOTX|HjZYZLPufu$TOPITUnCUWwXOSa;IN0n>UT&ibQa-i@*P;MPWq}yMJ#u>_pyBBv~F6{?q3V7 zt7DoF;*K;0l86joVXXezuPzLVQe*BZ6u11k?9w~jzDcPIpIu(Q^Aoef6p`lcEGH)~ z*<^Dph1G!rxI@6X4lxYL4sc1`;UtIF#7fI9NO*LkDjRaE=za@o(w-E4kJ7M#@bJ`7 zg+#=fGTQ5X^62(Sa7_;=!0ps--=XP!Q^TMOo}U{p5op2zCKT)RDYIdzH!&8qD;)a> z*aC->0kHZ!5?|t^n%63g8>M9fH2^g^JVCt%kyz1d#hyCy;I{M5dop&W`oX!-`dT^#w9hTx>C2bIIe(oU&cW;>dV`AsLxL zb$0KL+Dq*~$`upU{tRm=tKuP1mj|l2t+m8k*oo80ezocC%ODjHP+HHPf(-l@bMyBWbwROE?rn@et)z%2f)G!%z^}d)`Y;0+TW(&R zr`mt&E!R`%D%!qiYSIM-6+f-jv^O<)hvy1+j1=9-z9V7NH9ZD^Kdq>z_#1W)dyg5{ zdokhsn!00uz|YEPplx))o<&7Vs~fl-3+FG~Ix@`x5j6xpOxoL+#J>Hra_iYh-MS16 zbbC%K9~Fp}WRDhS7POWzh~^@uARxbxdp(~&GFR-*Y}=RpcrHT#o#6TT&Hs8!4iX{c zfpfF(Xw_7wq7w9RGcGHpr76=1jalp250#q#;HTnRt?G$^7%wwH;Gh9w0V%(qaNwMF zDH2K;JgG4FVeT=qdTMf^aT3UugEA|MClioL9|;yhU}})-2b)Pb8ugHhl2SlX)fDWa zEQy6hEwF7Qz!s!8QIH||x4c}QF$I_4;|!G_aR&JTI$l7F?CN^%jsu>;ts2jw_QyHq zlgDlNK&lfyxAZd4EzK$$5>u9f%hk&WuLds)03j0)tR(P%a_%3^GavV`o>_@nZ9x_K z1khFLI$W!vO8`d|eky1#cqCeXwxs*?N9^l$K+*U3Pgnb+NrzAUUMr~$)3$&7CdC@- zPJ>fqe@ST}{foq?05My~&b*n`Yiw*xg@v_Cn}9$Y0hFH%p_j+4igr>w16$i?ZaOWf zy0k1T+ml`1wU+C4+Fzx2WxPDYcY5`+J}$Tl$kd(1;$ho#0nspVfy8thefncWS=#t~ zxgveSN8Mbb1AHRb&c3ky#WqU<5R+R{daDixcA{I5_y%yU8DVKY{#XG7J0^K?xSqdi zs)C2)WxHk<0un#Q2ymP6yuN8pF=AM035|VQJRJIM)pV=6I43^bs6`6sgyJa(EKL_Q z`HgT^Vxk9V3`wTH)&BDS#lgiaCd8ekn-$p)u#b^rIRG>>DW+q42jCP%RsX`dn9;VM ziWpj|@Cz4LdyL_kGLhz!`1I*m0#G*r*tUCV%F>6VK|MI3NAkU!^iBcyOGcke`HDD6 z`G~|0?lYq`(-B_#M+_JQ8F>Fkr=RD!M2Aa4D6sikzP-w6l-440N!YEzFL+yudK-6~ zEt;2C661PO21_fpDJ|zXnI!XJpD8?yY?f*lASeANFrKbsH++*#^07#UfaZzYzHFD%UT zU(F4E$r=3WRua_|aml!QkMw@K0;^-q-sd;)$ZTwgPnN3cL}-8&0?mSBA*xx97OUKF zcOcb5%iwEJVEjVF$-}dF&iZ}Lw>7Ney*=NwG(<&IqW53a)DRHwAVzm2!j7BW?vxI^ z3PL_SPY4@lBmseCW?<^s4!>3%=5zrGQ>_Mzo(=Vat&M{`2zp?N zjN{Ckv!bnP+AFrh0hee8GuWc{%RrT8bcRoBvcQR6UiK7?-w@&*rcb@sHkLE2+Gq>V zf&bM?gA#0tC)of9EDJHYcOnTePzQ;tsPTM&ic9sKP2 z_}%MisFmlSl7(9K$cHTGFwT0#Uc&wpyNQ@>d}zUi{ZjX6K*Y0CJTGaDJ1x}r+J#dVcd?)iP*+7f@crGsBR@! z9MwDrsxnDX?;~Ct&jtAF+b4y|#id6>Yirq23hxm2JQkP)EG$ZDVj3Z#L?YP^N-Cy6 ze9DF9#?2F)-z6Z@`f=t#v4j9Sl3GsApZU~|pD*B&Fr(r;UKwLkElSI*-hFtVtDj_Z z9|eM^pqOH-%%&eJk=I#cZpsIsp5to~WmH>ADi;cMPR7|e zp}ohAv=)3uV$;pe43Q$w9;^I@ySz|+k?Tr3D3`k|J0oTc>{0j^7$<-HW>>LM0Jtg| zW@w6|xtWE$ricyjoZg{GFek;?aok3RjEsLp zew;LIRRGu9Aya#ub3{J#ATmtYS@|y=J9&Gn&?dkI2VfFnjMohn0_3hvt6ikgd;8up z-Jv7o{i46cV&riKr#qo-!Q8iJ#5^8u2DBIoZa>4x7Ke8T z`Glj+{q?Qrfsh@o-dg+M?iSd`NI5pi_j~!X`c_qOYe4vR%l``*wfsQ^x;HYdPA)qK zSc;|g%HKEao{kPTh5$b^<0|zP)_Hrv1Hb~o+MP@A&giF^1aCv&27o8llQYQY{A;^J z$Ot@;%UbQwN#g;hml6EuUrRoWVDyyfCZYJ699}8_6sOb?-swf#hys-^mCkd`O(e%Y z={>jJ@54P`90BjC-du{cAG4FVCh{J|BGh_;pr^vEOELu=J*<^B7J4IgwT>q~s)wfQ z)Mso2d?W8*s{e!Wk=wuj!>0VEE<~1rfdEEECbUA>_J^VLVnQh&#K`P#_wqp0eXiue zY6H|d%6h#D*`dkrRGa(a{uhm{XK6d#Y=N6()W*&cV9kDk;*c*>c>HujC~mUlJAGfz3;~*=?W4eB@67-M14EP7;oCxmj2)*HvfJlJia_zeS+lyo z;qp}ucHP}w?+Iv3ONlb7D$N((+itGu3=L7UQ-zey0y12cK?Q{zR$-hJF~8wXbP^I_ zuhy4?MG$)Cnh=m_A5k?YeYZ|1!x@RbkZ;Odnk#Q{#o@Pvl&T=YR9-|-{<+ggPj&8D zc)jKBefJ?O(DPk3EREy!zH8NmWnhAH%J5Lv)hwR?OTzc(~sKENvf9QzYAW&v-k2f+tnD*~NOBxx6 z6sCss$PC7K@jVYB2k`KU%<&e3%F@8x_kgRue#N(RtvgOrZtr0I(W_=%9rEm(D`br; z4{jG0Ldhhcjf`iP24KNVJs~%b2XxW(v`hxt#;?=6VU)Vo~t# z)+Hxv8=4q}HI)hWC#q>IEgIQahlMnmku0Kr!ub@Pl%il`g5aKlr!yq8FQZ2NpqU~? zMH(knRbAabHb+FF?yA!qxOH+88kpb6Gas+28XxQYNXnV8Tbe!@n^Q`O63$eKb|{u+ zk8J<$FyO0oF@!ac@7)1s&?u(oVw)Y~X8^KN3ZV}U{$}ojV1BVI9kwpv@r*i*)VwZqD(u2SWB!Vw3|~n?wUJf!~3l)&6hI{AFm5KJ|TWzlc*0Q8iYB^nRu5FX(7fMW}^DQWv;p~BZ*9pKDPLbiE__TJqq zM*(bmA}1&J9tDYtmG(MuVt?mnOiZGLg%%sYp6IOAMZg}K@9g|k@lV8OlFCz-V=QCk zYWQMp61g-=i0OzNKE}k#RnxgJN*JhIo7+M#rwX_-@6WvsjpULFCv80ogkE0K4o~a? zXAAT^Qg4dH{ECY3P*EcnmX~H$7V(y`nX2k)2IlAW*7ZZre_;+bApUWW{C-)^HRGJx%ruPIFuM#5qh1eL*GuI7UZYYUfGb}0f>KqU<*84Da8d5 zi)XG&mMk%Pb;DDf5KvYX51ec7DAmShX2(1nEehwoizhyS#>D~RCA=Pfg9h&pg=#DV zWTXL|2YUCehaufc4H+`{u{m4H2;m-K-oc871}3ASwkDH8Y)b0}hu_71b0dPi#Gw0Y zCL?FL*X|Yw!Yr8*C3~-rsPgw{V0vb%56@ROtMo0geUb1J(;nB7xXY`c>6O9R@PYM* z06?YLGv9|SB^)OO^a%2guJNR^+)df33&yqvB-7GP>i>Ak08dJcq+fE>qD35kYHQ*0 zr(puW+B^2;hrk2aBHtndqkx~EAA=4L2wRaQYngbtN!E4E!;xNc8x?b{G*IETLh&^! zeD6BQmbb+juYEOh{^8N2+?Rvk5h1ueBdAUh?v^aWsa;aV*xWn;^F(mX7p%#b3b;SO$HAsikVDG~`&8@cIFwfGQZ!AT$S89^PYRuo}L zqGHMV-I8_MEP4nFw|H*wC);;*(;+U7UBFLFO-=cmmW;7DuQ3%>JT}hDRbl0?%PsO@ znNT_g=7QS4zhk@KQpPU*e>8n%RFz%VHHv~rDM*)eDcvdEozmSQ-5jO6yAIvmeWbfP z58d6(cX>bW_fN-Q@Pljbwdb01uDM$3^QK3K6#BQ-)iv~iSJ>;c zjV^>vs}cDU^!=1K7$A;Lj)~>~k4?mkvPzWG4ns2KO_Z}0C8w!jQBm>V=>ho1C|N($ zi~yM*c#thT{E^5w0!=A;cKY(;UB=tI*=AI z#^};2c|4<$-^4a0)AQ%%FRS=;Csa0EzGt1q6D<{L>DwTr!RC z%TzTV`BTKwTyXcc3Joc#q?8m4gQDfj3{8D216J)K7xbC%)2A>+^B-DA zS=Qua)Z&kO|l$FKp6g~q+^Dh_}ioeLgK0a?hhJK{#A0TNfi~{~sTwF{=LzCOw zoYDz=Of&>mjpG@J<*DZ^Ns~9D07asLii%Sx$997!{tvoDCGF?a-7S008I_s2S52Du z->RBR_Ua`fG({_FWwV*`R18dtIm$G^ULkDDFh*v!-i7&h%%)h=xP~mahGF3{@|G+~ zNkOXVoo&>Ek|eA)h~`zP68!C5gUJFsMXzA(Jv+OIIU$^-4Y{WGb(*cyJ3yUPI9ViKgB11XY>Ak?)qSTB*c|d zZ$Ir)*a=G!KX7idgmYS-4vYwFZY8kdFI9%zv4ZrBECNgqWnJrz{VZL{E<{(i4VL5N z7TPHZJ@63gU%0SPvADegl`D|qK6*bnqOr1SBvdR8ppT8{Z_+#1ePO1@!#}Q5t&+(s z=H1-Vp*wo0Y@b~H=k;p@?Q0P!lNmm(_a9{_ElEf3!bFW1MHyGekqM7}@`gZ-0}Hz?{oZ|q>a zqw7BHtaR`{1_fv`06p1nsb7vyWaoSZa2Sa64tObl+1A%H2rdIzcEZW_&{cj1a4JAQ znvqE#6PVx3e@fwH^UF^AHhR3$k-VZgU%B>umOjb%PdXm9W)yhmPqJ56d-C>GlTkk8 zmLI0w9rQNq%`Lw}1tXI@&7IqXQD<|w=~xH)x4R1$iU>DBpb=+pWZR4p<=bT1U(>Ls z>qfsE4R}}rwiA%$176e5rK$X(#^|Es?t3-0*k@mu7#*}foutS`nl?J>u|7h)!%u2n zZ4}Ga|I3kR2eM{V07eU-%6?dHRR3ot3s6H(+*YgZSgjfL@b?!xyR6Ow-keptQSCrk z1t4I;*$OHR?Sq?kJB0@*iFc!?ck!1?px%<9arXrw!%e{!gwO>pmk$7O@m0g-gHNU! z>x_yKm{;232vc#BE!Jh9!#?lh(%*VNl#~!5Gc17Ex~(;_lcj+XO~_8U*UzeQ%DGpn zS$N$RKJr}xSg<>qvXtWNu+Usx8D*1lb=;1K$Y4BcK`h-rw&{+S!J8-pT?pb-q z4tI0xSL5r%D@L>YT|#EFqH)^7GU#;^R*RI#?dy!@P6Qp&!x=5gYkQcs6qcRArABj@ z7jnZ+*@4$-etvCf+7oS$7WKFM(pDdzPPAGz2&L4}5H)?pJD{9rF+P~y)CC9Q<_Sg= z1>-WKv*Okzg{~xtlPQvblluTNC=CkK6$1DJKsE+i5wkPljf-MDQy|$1R}v^wEcGzK ze$_ts=|>p2gaU4EIHt1cWM8Sa>iclre+pd5d8MYzs&1y76&0XI$xrs`Mirj*O&Rwj8FK2^VqHJfM0_qB+MnJJJFy znS5Hh&+^|7Kp%H^?TM25w_d$DFo=7{-`zNqu@@qRidG@s&j}U}{3@m>OBv(L70nBI z0$>UT1zSDG-QD`$VPraxVvM`Vb?U))^XVLK4sE;&u|wMbRM#3a1bBw=b+-A26p_NZsRFKo*-Q12JYc1CJ&`K1TvApqmJE}8M^ zz30C{+iiI5EOOFCA2;=EJKhA~&&JUg6i?RALQ1p%6>?xrFYt-b27~;)5k6E#^Ndc23J7->WLIIIs-+M2q#V9wzD=eY9fBUX*r`{!u!O6SYJizB|3HjLBL%CV_2 z(iR&Min8Fft5xl3Wwjh8#-7nBJWW)&(lqTVdnYjpNJFHj|H98{Wfcd{C184dUQ)iG z{GEtXm%P{GyB+vY5Uk#!-yii9sK;9sP3_^db0t^9nfp{Q)fg!we`I%eP3eOnE20?v zSMTOA-ip`E5jSgW$V*!&^kubU8o?J(hi6>G-?G<+3#Al%ahtT9dX)|nwX6s@xH4_Ort`Ny`j2SorRCGnhAM$4ey#+pFV5n?qQ#Wl_gA>puHMD)4rFZwpwj*$`bB}9#za0O?z zKfVT^wkLz^f>cJnqHdwfVqXum_VEtLf7mgz999AmYM z!&CZjv~mK_pUVn9NzB?T%V?2Ga5Ql(Fl4%Tv_D!i^FKGmQ_~|&0_P*MtVl*n68Ajp zztX9lF>Q%dKBB?65vm)cS(gUXd31;~;LX7n-6NIz+S0|5)=Ngs8k+uy&VdF>m^U=# zv^zlC#)yCAk|j>uJhlmJXo3AFmCb9cZJ7D`mc5T~PEb!t)iWvX{ZW((N(JOnz zK>L-KHZm8;3!iilml&d;{+^1MIK}Bi=U*G9HOXYZ(9ZtyU}?-m%||Hf_a4YdITC5< z|N7LL=7g5`KjOFi-y_dnAHu3wGB7mMw(kbCaln{@?e*j%+Uz%<74C+WnJR$}eU6sK zYVYG>(O6(1_8xBnb87qMU9kwz!l{Dr0C$b2Ga-PTth{Wg6s8gl*DH(WaKT=7)tfrF8YTjlp<W3Ia~b?WAJwuxE8^m;<9`Wr z80X*p>%Xv&3+5J*og}ZO(^=cPDN|Nc%VJR0x3Kn2ZsS!QEl*nFG+00KY|E}@pghd4 zvn($DV-aD!&>w8A`C)I`f4rPm0T)M`e0s)-T>~AH?73%(Rxz4-SiN~2 zG2^P8n3G0rePcZ$G?2TEFudvI*GrE`QiG<uGgL-=YtYFRt7G2f}7CutL{4uRnRSgL!!-gf0I^j?@sOhe8SpMh{ubD z&DHRl4T;^tnpRl|I^^(BnkI4TsEYW``DnBq+^+wq2L5HVZNG>@6t25#6K)@2=4|t3 z=?33;_vM}QiPV~bVz11YR34fqZ@L-q-Nk=%w-ZL(d2ny8TLf+pmMk3#(k1E}>-)s} zBeZA8Ht^)mVzerr|@_Ce~hyo?_7y!-iyu6;$!z(`-$)HK?qR50?4z+B>sRq6lE!>u3>Qy%eb`*(yRW)#4G;4WnpXGFRAW%c^cDJ={BpU8Ic zhv2rOyFE^zf&X$Tdn)u(9|foHHp<=zmbxmnh-y&C*u+=+7yM$FuAk5^cz~+&3Z(vU z-8nz_(U6uFSU(0Uuc9C;YmequM7@XyC zp*8#bf>#!qr{{eCbyw;&nL5$!p6669IY@s`ZWx8F>E*7WLRN2!p1rnkWXPl|B;KmA zqGE^WSQE~`&{$N_0y8m&S-52$PIywB#sv?y&YxUilj8IFo&1gG?R(3e5u;c7*PQ1d zM%Vg-@wM1)tXL-X8gqWjdVIatXyM`#%W{5Go8m0PL%qei51DR3>?1xrjEro}BNoVk z!2aQt9!wW3O?StK0$P=yZtun9wAOw-{k$RM8%S6YlNjmWj+|+^GrXpQ@p)be4z`ex zR+a+(b$$Im>Ei4YI?$+v*(BMy9jaETe#y_6TJX+V{|vMW_D||OBcvp!uAY$@ZTB~a zB3jLkZ`9^`9X9r+j?HDubOk$4iO}wsAFrDemCJLVrF5&TUzDtpx%~>~Kpo4hl{&Xy z-euVp6_u0RYT@rwS}X~fr1J^OIFav^|CtYT%wCAvSAP^a@QO&U&rg|rlAcy=X!q4{ z(zx=k5ZFprWFp{QT0mMkkPi)ggsXcC!P|IgetI zAKT|wNX+@klOqGsZ}YLnl}k%n#Nr@ArnH7$=bYpk#$6Pf{Oe4)0p7Yq!T9eLZP!TX zgyDZjD`VopkfBYY?(>;iSCiKnl;5RywmA1gZgIUQo=^L(a1EEe;)+Qk;k4!g3Ixu7zGA4%^IaVv^V*$riWNEEGItLJ28_xc@ zdT{0&NQEApKF25hBhJ3^F#J~|oPZrvs{l1mM)I1zdg!nAufMUBIv{ zv0Q6_wVvkIpogtC^#@c$LqyuJ@1?&GP_`94@v+c1P7a&^iBmZ);n&tFzZ+|3P$R8L zA@b>IFBrB*1<3FvWNf*e3xqtp!PB{DdV#i=HD5*yHH2~M_M>uRG5#GrJ79+6x#|4! z1rbgu4j&P4nSs*PHPtwQJS-dnGtX;v(x=YOy+b|qf^PC3mwNQ7<RmJ2%et z-RuA)8MC7Q_wwV8w{H}aQND*ERj{LmiO^TLbMy*EfLHiy z^k6v=u+xzfoE%tGg>e59N1b!|(POTTWbDz+l&$u`Wl0p38)x$3wA+aa59e zU**+t?*2#+L9&i=s)F*n(@^gqQeoK{8t(6sU64kZ>elze zZ$JCnjiH}rO<}Uy9&+j{oA>WZrLd?5N8Shfl>yd=!;AMCSI3d$+m5II-wObMW+i-# zc$L?_Rj)n~?bkQ>pcOlOm%ddG&L5wmv%a3Rxtt{DCFfL64&wi`Fz=F-83LQ<|Fr08 zbCCOzR+#yLgvNs&#|6SKKgIIqJ<8doCy)Ep*_}5(^fqh53vxR4_`Gvl7O4KTNl~uV zg77;cBF^R*_i`{Z!qJxKYs@dy=)=Li>A^_ZvM2S6{dXuCjeiH7Jnp=fKBExwk9BPB z-tUE~gyAjtM#FOHnaT5N?5c_kM4K*f=Fk%GF9zj#{I36Rh|G^h#FMKkMjhgtd~G&k0KX5m%n>d_ptZkbPVXXhjhi2&EJj6I>QLJzrcQ0it2m zjtxu{pK7RCc}x6A{RhwFdh#Cj;Z=#LC$NH0xh31^3ois>{#61&5dbB4#7SZ_aW?(1 z>oK;mK>-p|ifUaG%QLDtah*Q9)J(}^rz8%sdU@hi-7Sp`3=jXU{6f^dhlT3EY=qSy=p37v5%eb>9VMJ=%51toy$L=9Lh2(w zI*E=>NQS&6iIFf$r_MFk**SnCWs0TTOA(o#ql`(3>tKJGao_BFfLFbvM+h!$6c}?k z;Jf4+>(rniXXLNyoE;mcS;e=^eBG!6mxhp`nGe9LFeb9mQ!vxvM%q+Za>wmvGco4f z4{e$;ZK-skp6nd$Tx;DQc^z#%Xz^|Q*xHXp^?rdVWECOn5x(3tC7RMd68@I1E#+0_ z+c$dIQNWMpUC~)Bz>7rzSxxL{)6Akp2NPuYS7q@T20G~4FFHxw-+{J!xm@$Cb~H{Jxr+Q2dpW%h_`yfwmUd_+?$q!G!v^`7NgS6CB!iydZN z_PreE@f-G0x|E*9j3I1AvDf4|nv!-Cd(2+2v99PF>u|y{6Z**P*4(%a%&J?6oKFJp zG)+BMziimH$(gfH@AqkEs%=qCw zv`lv_XCZUFk=5M)tQ&tK8h$Ftp8=l(;}HfyNGDyhsYwLSyO)zh~k7?`jQkC@B!>qJ8u8u9OUNd=RdO@LWa{KMOK3|o2ob>t3 ztJZTx0;An8nTi+_CBoaqy;W%xlku77;M5!8*Cvjyu?%{3ofW^)IB;7B5-SThEk%BP znPiOk?&fQA`64=2`Ov^QBpI}>+D~UNc0|5D$w;P1@a^#Z^HVaeXCuj z$yXChog_BnPJ1l9NXLVv)THCF5cM47jQFuk)P)Nh#B!pia4zc--RS?&w(`5^##S+4 zQKf3hz!)U7UBGUGiSiLl0CInz5YOdWmXV{GJA7cb5!~BfQzU{mS<2;YviXE9sY!$)Q*sl-IVlix*}tbiIZ5J}>zja}@6>rQI9UHyzInPV zFOE&yTAFunn03Y$#K5>a@T`}y9y`yoop2uCUpo1CxIHw4i!(;WVuS?l;$dZ%R;QMvjK)cbcpm?&J-L;266&_NO z#LVR2YCSl2#P{j#-^zAtbrw^63egQdNOi64y3k&^zh|r7_sf5qIcAoC97ePfEJ$Q* zTYP<2$punrTH%s6$L{P%Uz545BL>_eiUc6te5#ctqdQfg2{nz_+S&T={0JBOX8fUc zVU8KPZhm?B<5{!D%z`UZq>-qup|QES6r{~vuRPS9ml4gm`dsj-*&VZP390<*CW6VI zPo|H)vs_s<1~9W9T>Ad7K2v!!qk;CvCku5_sEf8IK6u2 zx89OM2vI0=#1r9Oyj#zEsjS*F1a~*bykD`rm@|S78|0}mrd?d9A({TBF0UDy+9+PX zY3IWY@u+Er3uIeTwEyG{O5}a5aAdY;wO}1!WWRG*{l?YK7EKb5;Hv{3x|dQ&!rrej z8|4VNwpQx+j3`Gk7teV6{Q2q#yFaL*eWP=miVNlGw=M)6P@y)0d#Lca^`U*_+V`*t zqZ$u*x#|ca{x!a4>Eb{#Eace2#)gjOc_ZBo6%ebxi0*6|^MP721MgWslChE}?-hz` zSYS14h=V?jW@TrvSn$aEvTR=NhG?F2R&^FPJybd@o52U z(ULQEyO61}#iNEmA@v1QtVAdZ>9#1gIb))Dc$08%SxF%x;`qc&*Ze9n>0|S>Id?6G z!2Vi9dwgsX^qlD9r9)F{vd^EUwtAt@#SFB!KUyE8NgS`m)SFm4yPMkUh1`dqjkd#M zHG>gWC2b_};Z$Wg*iJ$m^jyBJz!vM)6@L97H{If(q-r}q6yns9e6#a+H;J5*xX^*! zhbysFV5-}gCuROz?nxtcoA#w9gO1E|%CKTTdD?ir+Kq=zq;h|3OeL|w{+STK3cOr! z*|du)st7Yh8%*}E6&&v!h01NSkL79Nyq!IhBh;`kq7#z`5-N6UcJos%6JyQ`5BqPx z{JlLB%|6**Bx%Rz(v_Clv!L^G3l4ioykf&^yCSC(`N@&>LM4-50(P$ME~2ob|Kq)H zg9>_YsZ?&!6FJqF=HEu8U!Qj8y?5IW-gaMsTjlHDc2DDT%AO7$B5ZqPwmp%KAmEfg zSV&R{7A_Y0OAD@g++1D$xDeh35-aP@VyVjBUgEdkyrYnI8WnP)ae^+7H= z6;p2T`Z8BIos#q78?^#fzYMMSd?rg3@Ym&YUbQ|uxQFYNB?K-RCc+@opae~Ze_r*c zV5#-}e;?vxLqEcsJ$lr^Ig?b)jGK(*fFy=Q7K@Tr&Wf1*JE0*wyH@ILS4RVH!u8ua zg6yv!$b*_(BZ4-?qG*--<0ZFfFzo%a?_MP_>_yHk-6g#o<3C=-(P+G9?VcEoDNJ&8 zCP2z_umo8{kjsWzQpZA|H!uvPx*p%fNSANF7U}euYV8G)kwOUq(?Wjs;_j~ys&2ApA-fZ5TcnTsr)ImVn0b(a}dg?+EB26e*^s059)~` zl=M);2)c!61PW!thQBx2y?hfV6L)fq`bu3ct5l-!D&`@RT%N{`cM!8?(3y}YWw!r{ zOw)zc5<8HMp&8T`>(@{~D}(1|!HvJ(?hz~{gCVCygEX?=a`lai)pN8(n1;M#GL(Jw zn-}-;Q5ugs61Zcbk}QSw#_05*iRvoj#Y?goZIGS+)OaqKR=7JiN;}s#JRHZFP4({H zW1`Ff(VfNKHUBos?$R{OcXs`8R8SD=W-m1zmA-Umas37*J(7Z$6g62eI6NKs`fx5! zy95UA8sV=f1@*Q2Hinu=%z&f%!@|1@#E(ClY*4!>Mon*<-8dG5Jw*SZ{7;e;XohEAmpQ@1qVS4j|$9Cw2)pU4mO`ZZl z!wD`a4sM5Ntq-kbGwQ&lWC2~mr@i&Cx7b#;0WXQ=e6F$kcvL>q_%5p&s9pc6*u~5z zGyvRte)k)`!-K(A=hWXhkZF^xFxWW=cPk6nJHWH#+(@CN+{a{ULTma{^skn^@sfg1 z3A+#Jf<|=AwjcwonaZFOk*w+}M}2f_Sgyyw;Aal_>(2giM{P1-oZVg8>R28JCpI=Z zqPenCdG`zE7HpITm7$Co51(cPlZp6l2vUt?OKeo9Y3Lj*gXKlgu30*5T*D&-D~2Yc z@m+0mQv*%v1xy?kr4(mGO>+Q8{_@QvRS z5^w@4H<9}NlT)l@rzF^x(QWfuOy_(5D8+#VnSvVWLbDy^<3WXSjp;}WBu1Ru9uVVUC$t}!|_Y*NZ%2Ae3UySKrWf4hq+E#bSfImOx+Hx&Da5ENB5DNazV;EX}!D1gO-28c8OaMnS#7BB3TE9?T`D?@ibI(5pUs-B%|9 z8n%2i&{=}#?Ye0HgOx$Sy^ZpaFjl{*>B`9Y-Z{tlumk_q8%=xnSOns;h*W}j+2ru@ zm65XH7qb!jdrlnn>5Gn>K901v&4zm0%EbRTnF~&LH*~uT?3CYJ4Jo!fO22 zFgoH-!Y7PV&(^eAfz@dzuk&VjAWKkGR^x|-J0^kV<5aV`kaZv#&xUu;c5F$YfAR5C z9#ulc%Aa!S-d+sm%4*k#r?KOj0)~q~T5+d1Brj`hLl5}L$^>#a`+n)MEt8|~fwL|p(^1(tT@U?6NsSrrFRt~`c*<0w@X zc|^Q-z5_Xu&hVG@3mV)k-L^deutyLRUXH#ql7RZ00~iukDO;>1aUW^1rf2mfwBfGvrQf?Z#EG(^U*bcz4C zMkN4l`ubN+c_5w_{FUpOyTqZ}Pz=t+gCL#QDlr|kZ`{#aBxz~$wcQas+qOX%qD{pz zLp({;U;fq zZe}K|It$V0!TlKpjsCT2OcyK^D-Aa{I z#>?%Zo$;|`TATu%+nYv|D}pq!hB|#%O99qq9BW?RR`7C4Jgau)R74i2UB%!8fT0YggG3vBI-EVqWaDju(U`v1dKVy$lkT^10oGA!r|qW!Yf|R>+t<>NZsR(12iiYfl=KFf6?!|l#N>oT zPXo4JELiTsp0}!Ujm=9lUINoFr$!6vT= zc#08mt;yc%P&Uu|XK)$>zXuv9w7;Bh*VOlO(~RW{#o3tvFx~JKMIhY*ck$za#9m4y=h?P6z9;t@yS;OKh>~lSIg7=l z0bT5``@1%yZHbFX^yvMf%3qe!$818C7auya>nj@fi{Pr!Z4I^wGmjbkEc&|#V8H@P zoHfoUY#AfKk1FS1P8oDHx!Kby0AuAiAXotPEOWJoNlo!(8#jNQmT$trS#EWWNUFSC zZuSfYeCXc@(hHYzsoA?mW4}0TRt>TQD~DwHV^{+lwVQl54J~nT3)LZ>T-tDQhP!`0 z1;{@6u!iP;ohw^t$T(yp+Nit5%9=2{^X#>(wOlVbj`E|7TDHZ|bl`TFRX=1W63&@8 zQ=Buw#*Ir$d)zkr2&2@O@XRc|JYXDlM~zf~xuVWihc&`$HSv9L+u#g=qP0DU^>l3K zP)Dk8#es0Yo!=0@76s~piS{6SEH*3QT7Yx(7`lR9a5kIUab-CLLxk#qWGwdrt3K(z z_J_iG$ye9>qgxWUyF;d2jvHC#y6l zbuMS2=9UU_ZkxLHRt~F4?q<HmViALg`bj#2aVUQnW zN!W}iJBC*CR<4j=kNnC=;wWZWQXBmitpn}dw*#%xm(dy`=r?B`zcaqd6*>YW`oKS? z+cC^hK16`l5ug7L7Ri~D_uwPglPnFCe|jhk>9jE zW?jb73~I>Mm%c(B-NVxc0?Ne1WkEU&5N~-xVSJi!Jp}(a&Rp7e&$`Jl+jMIxszwA!IKDex z@@fp@8fvg>8m?92bt0ezPdr^alL)o*4t9=V)tos*iElSf+x0>V2niNh4P6uAsK9oL zfk5Qa*yw0DX_oT zNsE>%Rtgo+V`9)6aU5X93MSPqt`DZb`$VlWCMIwJ0dgRYpYeb}CM80%e-uZ%2}l$I zI+3j7sEq#J8XWE2XPK>+y0q74DH7E3u998hW$sAKcq>7FNq~%d+0ftUjQ9k)fA@Z2 zpGu~*^1{qV?)COxIhdc&9xf=|IWZwqN&<%twrQLR#y*wSYH7$)6J5|NPULNIY8Nzie_Nm_P^E$WMIKW{qqKN%#uV~`M zwfJ%yH>&S^GqSQi2L~fWdTN(50YM(IiP2gob2m5VLTYrBTUWtMHbekz7fpRtRd^VwHWob3Viue%1sknbsBf=$ z0uzLj*y*5vor2DCf_F25=d+T9JZ-T6emY_?5W4ww*^OzFz7!~J{@Yg<{@^w($hwOy zn@jVP1$MZoki8WWJADS_#WVsSkTEc@b}cL==06AMZSDlr`i+(DprBA)T@MV6_Rh>j zn!pAStHmD^*QxPhIX~av`1X!&D+(jMS)r&}%V7*7nB9(UN}8GQr=36|eC5>t%q~y0 z1tcm)x38pFa(~NucdOZ>+7mLAv{u&r&X#m7eyo;2GTxE0z45xl*Lt634EJ!TF-fT( zTy&4bNUzO3WnhtgiW%>!>@6x#q{dQN(Unx?gzfP9@&0ETA7Q7@Si9*;&*oLeuaG^k zkE9kQ>xOO0jYfa`aHpbf3(uA2!+Wr2W00*ks{TahFU%E>wtA2QrWboK9ZDX!#N0$N zt#P=2@N@7GTK|^hGFSM0d>#sg;3biR$sf)!c&xxbfZD$t_(KF*j$^6YrwTbDbomF@Vr` zJY>7ehug>hzZam+7)1BEFiS#WRYZQGHQ_b{uvv+_sm-+MtWA(zM;0HTAojpzrGpf z

      !UNlOSE09ui+x0^PjccUV~r=;yoA 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 euN)BegM9uoM_b "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "blitter.com/go/hkexsh/logger.LogDebug" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ ] - "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [ ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [ ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ ] "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ style="dashed" ] @@ -226,6 +218,7 @@ label="[isatty]"; "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ ] "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Op" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Who" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).ConnHost" [ color="saddlebrown" ] @@ -234,11 +227,13 @@ label="[isatty]"; "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).AuthCookie" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ ] + "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Dial" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexsh.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.MakeRaw" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$1" [ arrowhead="normalnoneodiamond" ] @@ -250,12 +245,17 @@ label="[isatty]"; "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$2" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.launchTuns" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doShellMode" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.usageShell" [ style="dashed" ] diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 104bca8..6891e63 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -1,6 +1,6 @@ // hkexsh client // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -36,6 +36,7 @@ import ( ) var ( + // wg controls when the goroutines handling client I/O complete wg sync.WaitGroup // Log defaults to regular syslog output (no -d) Log *logger.Writer @@ -43,6 +44,7 @@ var ( //////////////////////////////////////////////////// +// Praise Bob. Do not remove, lest ye lose Slack. const bob = string("\r\n\r\n" + "@@@@@@@^^~~~~~~~~~~~~~~~~~~~~^@@@@@@@@@\r\n" + "@@@@@@^ ~^ @ @@ @ @ @ I ~^@@@@@@\r\n" + @@ -70,8 +72,10 @@ const bob = string("\r\n\r\n" + "\r\n") type ( + // Handler for special functions invoked by escSeqs escHandler func(io.Writer) - escSeqs map[byte]escHandler + // escSeqs is a map of special keystroke sequences to trigger escHandlers + escSeqs map[byte]escHandler ) // Copy copies from src to dst until either EOF is reached @@ -91,6 +95,8 @@ type ( // calls a client-custom version of copyBuffer(), which allows // some client escape sequences to trigger special actions during // interactive sessions. +// +// (See go doc hkexsh/hkexsh.{escSeqs,escHandler}) func Copy(dst io.Writer, src io.Reader) (written int64, err error) { written, err = copyBuffer(dst, src, nil) return @@ -102,9 +108,13 @@ func Copy(dst io.Writer, src io.Reader) (written int64, err error) { // This private version of copyBuffer is derived from the // go stdlib pkg/io, with escape sequence interpretation to trigger // some special client-side actions. +// +// (See go doc hkexsh/hkexsh.{escSeqs,escHandler}) func copyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err error) { // NOTE: using dst.Write() in these esc funcs will cause the output - // to function as a 'macro', outputting as if user typed the sequence. + // to function as a 'macro', outputting as if user typed the sequence + // (that is, the client 'sees' the user type it, and the server 'sees' + // it as well). // // Using os.Stdout outputs to the client's term w/o it or the server // 'seeing' the output. @@ -156,7 +166,7 @@ func copyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err er if buf[0] == 0x1d { seqPos++ } - } else /* seqPos > 0 */ { + } else { if v, ok := escs[buf[0]]; ok { v(dst) nr-- @@ -185,13 +195,14 @@ func copyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err er break } } - //_,_ = dst.Write([]byte{0x2f}) return written, err } //////////////////////////////////////////////////// // GetSize gets the terminal size using 'stty' command +// +// TODO: do in code someday instead of using external 'stty' func GetSize() (cols, rows int, err error) { cmd := exec.Command("stty", "size") // #nosec cmd.Stdin = os.Stdin @@ -216,6 +227,7 @@ func GetSize() (cols, rows int, err error) { } // doCopyMode begins a secure hkexsh local<->remote file copy operation. +// // TODO: reduce gocyclo func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.Session) (exitStatus uint32, err error) { if remoteDest { @@ -256,7 +268,6 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S // NOTE the lack of quotes around --xform option's sed expression. // When args are passed in exec() format, no quoting is required // (as this isn't input from a shell) (right? -rlm 20180823) - //cmdArgs := []string{"-xvz", "-C", files, `--xform=s#.*/\(.*\)#\1#`} c = exec.Command(cmdName, cmdArgs...) // #nosec c.Dir, _ = os.Getwd() // #nosec log.Println("[wd:", c.Dir, "]") @@ -296,7 +307,6 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { exitStatus = uint32(status.ExitStatus()) fmt.Print(stdErrBuffer) - //fmt.Printf("Exit Status: %d\n", exitStatus) //# } } } @@ -331,10 +341,6 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S log.Println("remote filepath:", string(rec.Cmd()), "local files:", files) var c *exec.Cmd - //os.Clearenv() - //os.Setenv("HOME", u.HomeDir) - //os.Setenv("TERM", "vt102") // TODO: server or client option? - cmdName := "/bin/tar" destPath := files @@ -353,7 +359,6 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S err = c.Start() // returns immediately if err != nil { fmt.Println(err) - //log.Fatal(err) } else { if err = c.Wait(); err != nil { if exiterr, ok := err.(*exec.ExitError); ok { @@ -365,7 +370,6 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S // an ExitStatus() method with the same signature. if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { exitStatus = uint32(status.ExitStatus()) - //log.Printf("Exit Status: %d", exitStatus) } } } @@ -380,7 +384,8 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S return } -// doShellMode begins an hkexsh shell session (one-shot command or interactive). +// doShellMode begins an hkexsh shell session (one-shot command or +// interactive). func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, rec *hkexsh.Session) { //client reader (from server) goroutine //Read remote end's stdout @@ -434,7 +439,6 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, // TODO:.gv:doShellMode:2:shellStdinToRemote shellStdinToRemote := func() { defer wg.Done() - //!defer wg.Done() _, outerr := func(conn *hkexnet.Conn, r io.Reader) (w int64, e error) { // Copy() expects EOF so this will // exit with outerr == nil @@ -471,6 +475,10 @@ func usageCp() { flag.PrintDefaults() } +// rejectUserMsg snarkily rebukes users giving incorrect +// credentials. +// +// TODO: do this from the server side and have client just emit that func rejectUserMsg() string { return "Begone, " + spinsult.GetSentence() + "\r\n" } @@ -519,15 +527,9 @@ func parseNonSwitchArgs(a []string) (user, host, path string, isDest bool, other } fancyHost = fancyHostPath[0] - //if fancyPath == "" { - // fancyPath = "." - //} - if i == len(a)-1 { isDest = true - //fmt.Println("remote path isDest") } - //fmt.Println("fancyArgs: user:", fancyUser, "host:", fancyHost, "path:", fancyPath) } else { otherArgs = append(otherArgs, a[i]) } @@ -580,17 +582,6 @@ func sendSessionParams(conn io.Writer /* *hkexnet.Conn*/, rec *hkexsh.Session) ( return e } -// hkexsh - a client for secure shell and file copy operations. -// -// While conforming to the basic net.Conn interface HKex.Conn has extra -// capabilities designed to allow apps to define connection options, -// encryption/hmac settings and operations across the encrypted channel. -// -// Initial setup is the same as using plain net.Dial(), but one may -// specify extra extension tags (strings) to set the cipher and hmac -// setting desired; as well as the intended operation mode for the -// connection (app-specific, passed through to the server to use or -// ignore at its discretion). // TODO: reduce gocyclo func main() { version := hkexsh.Version diff --git a/hkexshd/hkexshd-vis-fixedup.png b/hkexshd/hkexshd-vis-fixedup.png index fe9196a809428b5032431b3723fa5ac830db9729..518a2fd9246774c0261516336b448dbfc4c79dc5 100644 GIT binary patch literal 600193 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ⅈqV>#^?Uw_g8b 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

    1. 8eZT3Jtw_dEadXI}M3vN1J{<)*td~{2BMildm_y?t zViQf%^0JO^ggEn<<_VKw7-s&Ox1K|wft#d`YjnlGA!Hd9vsD=0YyTZ~l)XBH^~$1Z z1D0OuhLKb~W`EfC_1a5B_(nHP;jK`nUS5WA_Ga^P4bE0BUeA-Q(W4&kdi9!)7F3LB zo+>GO4H*|UguCZ}|Fn%~4~0Hyu!Cof%3UsOK38(`v?n-dJotZH0C-=`jvO6DWi|CA zrTf20!W6I|l4;z)$fo&*#=>9>poxku^Dq7O1af==vu48@`jo-kLBl0BaSWeajSgjJ46`Oa(bj$NeD>2GP`@_YB zAAfvYhMV)^!Fm%m;lHPZij>83aw0ov#FMX+DilL?+Y$ttpd{5*HdXFj^Uo(Gh!IU( zd$rkZ_(3g-Lo6O>Gu2Fa0Kr=C_g$Esa}OV1J{S7dRzcx%G#}j3vG2WpyvLOhu``JL zdbxv)Sa^4RR2f7f`1R~BPjC*Y`6=wz#N_V`Y@%+k(PYXUL$cYwG{-1SY*hKXWb}Xq zp$4mBIVLb@LM{TeaBaHa^myzpnuOyGSsN@@g86+N;ipfZwkd>i2s@r-89IEp+)qR8 zM3_f6jMW!?KZ=0P$oN^RY#rfq*9#ZN!|l%hxGpu) zRIMp54ZFEb(4&S1I`OE+W<*0#&g9RqrlEL(r%$xJJyM`?f&O>cm=dScjp&2AUy-!Zhae=c0a$~vp;)ks!R zx?`BBlP=(=dI<~)$v>Erh#b{EVl(ByC*RZD2->WPUj!Eru-#Q|1y!VL{m|8Qu$)Tm zmv!NiXQ+Lavu=oYF)?}S?~=FM^Z|vRwtmPzX+9*}S1}*C_z13@^V_#}j0gC;uNxH0 zAcBVxtxg?s)Q5N5Nj+r4qtwZ(7%HXOO5#65fXwO8CJhqT-iFU1$R9unUZAY~D@rIo zAkwr7{8U4wXQ~7aHU8Cj-=w6M@y0wjsMqdBEMPjAS3qIng_+9(fOAH{=*s?hveWk4 z@UGau30BAE&$w!hI-@)Hy8*#`&*0*)nz;-T=L7=h6bJI{%B2xA(OZYf?$}++j|`I& zSHg`e&8GClbr-v-ucvbEqE+Qt8+J0P>d|=~Y~Z<@(JcwK#;2bawAgi$1H(6jKVR@@ zs3%#D*`t8ePWb*i-+10v5$#Oh|3}j`0A=>R?Kf;~ZP?sq+vZlAZQHh8n_b&hn{B*d zvo_ndZM(kn`_FtcXQrlU!g+K**L~p&;LFv6iyJ3N5 z-7;TWpg9HsuV^X_QO@m#)Ehd1KL{Z43jha`Ze$K~6ybY|f}*k%a3uj|&W}os_pUU3 zS&Ey+@`JX;C_8x6y?@up%T3NbW*dFS%POF>HE0SQuGXW;HOf!yG_1>Yz313s8R?XRLN zg$G(*AIJQ4&gma*Zc01Rq<6h`6MmzyW~Px(w@#L-$N8bLTP^KrOZwxrUvI5Cp1roZ zpa4bacC(0xXg05NH*l;l&^RKFH;azgg__Ttp1|y~7m8)39pf94VqsA7{<5G~PJ03f zuJ4HAP#~c2)a`*`rzhAadyUC&=6w;VZ&SmF^L{_o7kGOXUqBF7H(ixlZ-mjHgHp$@ z{zd=;0bv+K+7_S0G}CM-Cx+3+@y+G(5kOQ;@`^l@T%OtvtQd6up%yI=I%I$A9?T)X2gYAzPV z-xpU5FvB%i`fD)MqWx+fc36mPx9a0_FeLx+T0@d?Yec$Y97pu@fYa`|-@gS40INM` z=wx@2=z2AA)*pEy`L(>hDep~i6u5FS>a;CwYn@F&fE?@yOu+I=*z{_Nvu4iH_{i$Z zx%z6d9v3V24fvT{H0vQkwxu(sNBxKc#60QYB^Gj~%_<}fjl`MZEmiOve2*0+)Z|Sb zjb(Jy6QQJ2WDme@JOyb3Ylo}ibT&1(?GAaaV+llfSDV_6H``_urjyqI z0s)(u;#1HJk0^56)y~{(R{QJcm>&d-4cn&s^qRL;s&Y!(t;+ropk5!g4#O}a%ZpWE z&k6`*u>M+kMNs8LxoFC#qTNy*Odsb@wC1q&3=k1AO~RO=1u zV+}qX~Hs*!4-ZsRn-x<)=TLcn$oEp{``VLO-%uH%WeQv{CUpFKj|t_(gcA!oFaPI^ST*3sOxB0!IMAzNUP*xRMXM zwjXlapW3wmOPCo=vN%C_+CQf#B4(dZ{^(Vz6#;`R_!kZ}<_iDbZYm}y&{#kukNKXX zm{d|?90~;ZaXrWX=16_rnZKzEN|$nToa50YUaCt5^Kvp41f+Pk9) z>yPKcle`q{`6O28>fEVtA{gzlP`JeSQ91G2)zeb!-naP_>*9S{+E%M>+)$yh;Bmn1 zs+>)}Q^nXx+`>K8N3*1xE4Je^AJ%q=V(aZvvB|%jUW|{sb+IJ{to-EP>Mt*Ur%Ot# zA$`|=v;nrge@3HKytSt^OUT#(i>t(0yBHOVNg8eWvj&ZV3?H?N8jkIjUn&5kVYtGx z_;WSv)K57Z--<)EcmoM%1G^rujb7cQg~(sG_QcPP|5&&Z#`S;v7IIEgpMaA}<+w1A zm$!T9i3=sxV8jaGH0D9wUo9Zo)8%s2=dX9$eo%Aj_m3Tr>koaHr!1L>u_T_Eo7g#8go%|95)u%|Oq!MW8w47td{C*7(|C}8L!4Xb8wjLY zfBtmeFp{;VEe!%m8yC~tR>ikH@%(u_J+D$R|G`^7Wn0D10~Qpi#sU{LWQ>FXEfazt zA||(6LH>&?k>fvf)e#MyBG)lt-dT((;JDzMb^4JSYIPUeL8br_nk9!W%`*B2G^QGg728mp;y%4 zp$7sEV@3dt2a2-X!ETeuq4KE03?FW=f>!E?baRpVkO31{)|RAcn9`yl`ove@?q{io z0N`Q4h_NE(A1F81jAvK4-zWChi?s9SfzpfXR2n?!JiG0D<6MjnqQdR5DwMvsoj9Awf*> zms-AOQI$4v3G|Cm4f+O)7~@>GmrvWH=(MGeCvNh$%b0zt&tS?` zD~~07bMD%X!^b=QI5TBVcN({CZS}+)6WFi301NA}L5rxv1Ulu^_V~bz9kL&s7@kbX zZ0IwY%J1jQh53Yy{>;atA;@lTG#!76BN?YdXlXVyI^Oz765xY!Wefr!XUWUQI7BVg zqs;t!jsnu$_)8E-G4m87HuH8Y85!#H9CBRjBX_Y-Q+$Nt+}igSyoK8&%|VA*npz|k z%QSdKTLwtb?YHNP3`H(TP!0x1ly{@0{QLV3W|Zk(W+Ec}aD@Pdf4>%8vTIm*g_UxN zMJCCO-Azu*7?!BFiylOv1Ux9`SF7?4G61M}pr9x+Ghx&5(yjr33Vh{g$94*uPMfxE zKK@82Z~P z){0Tsq%PR9;XGWdai6R`P^(ZHs2@ws5ZZYoM|8z4dlZ^-@B(|FJ9JDj(+^mt_e?1R z4jlBKPLiGt1ti)^3A%0Q=XM%@vr2PNY1;IIvgcut< zDqaT`|FB;KmM*@ABA>eMPxs^>ocr;0Cb{X@{-l6j=l(uod^|OFv(PK>W{WV^<$QaL zKU0>RO|RR2>tCKuJMd~?`9^p4&w1AzHx%8rDTUwp_!kT@Uc`on4?WB~-DptmZK{|% zAMNn@%EMCp>}_6@BI93iMc4NhnG1F^#U4ox+_?xfktLF0L(Z?BmC49_RqvbGEZhb`Ym$962&8>~ zav!{bDgW*3KO)2U&(K4u-#u;z+h6=L_HKU~?Q;bBx;{3d>B}AN97Kx}JBVBdp!7`W zu6I&IuBseNCf(J+KE~t4OR)8i2m}NNcP?h_jsZa-7d|MH$K=Ho$UvCnvKElHm7l?| z@#46oZ8#3ih7%P1?->f1`AW*niQG4GkLg_ui$=?qv`}u?*)35074d zI!SK0Yat$Pp^>-R!8VUtDnNIH8&%`s!BKGn%HR-uD^f7MT;bEe@@JqUHK{>zw{htz z+mD}e85lEDOpmEIteV}$s;#&8u+|x!&XhD}$4~aoQ>{@uZZp(g&3{;loM%=U)`enA z2nnEyqyUukAL7_5(7J(ME~2VVzq1P<3S_35pHlo627^H`q)hE4dRubqC@L49X?W4o zj1VEFl;JX)Do%mj=HoQh$Go!L_6Woji&XwS<9@FQDr)|8u&FswGM`U=CIQd7v}O9Z zDv;K{nvJj;U%=1k^)aH7CUHrcPF30_SoogM;#;L0ZOfty8jSm&=G~xFX}wu?`~y_i zQ*cT0^}!OW&%*bSs)MXC<4Z4T)tw@!CHsN(G2XPyhwzvs+vC42uLm_|JK3Me`3U7x z+$oSP4~TW4{{y~*21~GOni?VpTptXUR+3|TZDy@8TxHGmORYT3^0WTg^u=K~I|cUr zxclo`&}W+3wPPzl0qqHQyV;?}I9sp~d5vbgu`*lT*uW)9UuCID^!7N_o^cvYFL3e1 z81>AE?RwnHKTkh-;tA$J#% z;}tUVYCQRPu%7oLBV{xEY+X*Qb;yKY;quyz&)2|#PMUolZaL`Zy~2(W$?`6S;{>}$1#zWbd8=Pv_F4Dw>rkUG$uGEs{k zBfo#^$hUv}7cQ~VVG4$g5pnn^_AF~D%eDS6f*x4ug8}OADumE(hx}-ZKMixUV1{O2 z5mGdWK`^j{H6P=Az>oV~8Fkt(K9A-9O^8j0MM7FK1~D4;BB#epk`XfEUlB9^;J%ChHxIrf{H(>oYy&#b<<&E1Sl?Zs}&Am6SGC zTIR9Z+6ex*0%DmhCBag5MS}bqzY#(>+goW>ZMGX4rM74 zYddO)#tfKBRLVkS5ioZG>?+#2w=b#C;UfgMKSSdo9c*q&5V;g%;(uMk!R^$d-;y4# z>)l%dx=GvVVSgieuo2{3?sC0CT8}*`n8$Jy^O+VuJQORHw!$xn?VU2^z-rbiH1&G+ z@gpZ=W~?AVnk3G-sS`w+q?XcP8H(<-(Ii0f4G?WXn}>%1U0mA^8f-YCBq*B>B~VBr zupsd~()D)|!-auBW6T6^kqPuPw4+{oeL4Ndv%Qre;{!k6tAFayeEsWU?ag>RzTR7D zXB3G~I}a3e8T|e0`)%;?q=-`-KoO()t@OSjFGw-!$$@M+VRDhMRZl_4h91Z>BPtzr zMI^K#t)P`G^a>$X7}Jvad_w>LS0)eUXLwe%7oNx&QyvnQEoBXn80IU?*Z(@!5Q;_y zr@+&a*8;%HPp-ZpHCz1WH*%kYXB$QWKqY2%%?)Z)=$E1-fig5nQoSsxDl{n41xBSJ zBuU{X7*2&sr8AaE!?E^j!CeM`I6+bb6*I0_DT7LdCh1tFNP!xiCgfNoSD{pH+|G_* zoQ($+&i7r|1zV%+OY-qH0qb&0Dds}>NL>Z7b#h?7w@M4?RtDNg)VHsvs9%Q>5OQmL zw-`T=+G;)dLnR1ayJ+YlRvYfEdyQ&l=cPpQT9&mUL`V{)_E=K$wu%jv%jbqn;PaH(zd8W3K!$?jmCZ(})P!ekX)Y;tV25XpApATEz*s{T?hEm> z1h&g>Dv@B%+(e+g^||lget+6nl^#VRyt=BvF9)1b8h(Ww+OTQ8VWlIT^LY#bVMw(W z*9+Ml*7i|)D2HP3dA2||8?4)5z>)4fEo>L_JFbu=-H()G=5Z0Mjf)Xz3(F$sYaOVbQKRa;fzUKr3n>5iYpbv9at*7a$L{`l{QJ4xV;8tPVe z63Y+s_nrf>i4P>06K?<2g`gkA2P(!Ywa;KQM@T4tH*Mmj!@M>Z>n|LbwbL=zZN>xi`#e$|RCd=kbtUU=sI^_J;1w>e|n~`y%GS0z|$(o@PLy3<2`_ zYcYT6aiQo7`6TN3vwL-0-2K)H12v}T1%~BKSO-%0&pR`3LlleGum_iRQ~cxzD-X5eE)FG<3p1zX4L(j*lb(n)w97gvs= z2qb1;0H94H^Kr&UM_M`6tdz;E)xg1hKD-l468i$0v_izGlq;RbK@cm|vE)d%{kg&j z6Xa;Zl%cD0=+c6gC<#b@7#LhIN9JZ`V)~p&zY=l2Ai}^z`F@0*oNSaya9zy#m$g?O zVZXMmRpGtZo!1i9-O$3we{7dyur4t8;?ku0*%p|kjB4I1D{3YMK^=!NVvS}`jq$j0 zegfKY%M>g$V!83asCd3S0%sSJFe!=wHG?eq-A|_!f659DQ9V@~j$_+jY0*6OZDmv@ z)0DCyX89crOw?ZIjq_t=(JR39(kgM)-tHP>qN8CAeIk=PSFO}+-1DN7?f`=dQ0m_u zE_Ce(#HKZ$v+K947*3u@M}GP8?#0ilro&-qcA%Y}m zgXnyzKZuks=NHIop)jM|9D28TJ9cW+DyL6ea7^2^N>zpn;7diQQ|3nsq?#-AC{%|{ zrg;)XsNy56Lm)d8{@HuNkRKl3w6MOs)>&qbW_z7CP$ zrG`_YIhv5f%2@dX_Ho63<|0FtJ2qLEwP2eoXVc2m%by#;ph>+Gulh}`!V;oHQ`ey& zX>tddprSylT3Vk3h$WI#E3;yL5Z7o_(Iw-ipPg@QZJ&%FA>3YFU5Vr?X12hGGeFMK zuDTzd-WqQ--QfiG-^VY*C*!`&AJGeZ__>{A&FH_moc4yiXfH5gbG9|MpB-<77v62W zI~h$R(2C_#|64G=n8z>_s&t_^{$KxkB{(=Ze+nt}TPgogf|{filUz*fUw{S__2dE5 zT3Ga#1uM{vtcC51+Cq})A6c<9|LB;>5@ptpyZ&<4bKp;y`pTN1VnQpb6NmZMf_%Ec zYB{_zK7RYrR^(<}W0JA@+uzb1yrlmr=I!!MxA8?mSvM&$Q&A&cJ3d=kBVJukZJK3u zH=v7!pYI!;d}vrP>r9fAxxzOF6_`XRa}q_j)=rn+ZM+&Tl8|R3_QWA7aCteJinM4R zk5G)rAeQPC^r{p@oPaxt+W&I_@)ZW1Ygqxf7w7ku1J}q5EkG$|qGBUrB4eZL9%;RE zJOMDKz};;zC&w?}m;v7%j&J0uc!rKbu6mf1q|`gx)Bpo9pNIABC-!?6LZ{%urUOC( z0%#L!|DS17dNOLgWg06I0pX6XkNb6DCU-T!ewb%LdpJ#0uxHMNtha zE7a(~C{iLuni!q2>dFI^n2u#4N~Jn9N#>>)Z2ZuHg4Ijs@9+OfVBX)?fls!!0>{T~ zeXa#vlmX(;h;+*@=ktR@cTS+-L4pbq@#%08%RbCW(tlIa&|>#{=QIxOwRzikA%4%g z=ct6un>ud%@VpAsEylRBLPx#2@HY}6QQh6XF zsucA!8t;dg4v-}KY)Jm@OGr08nZyZlmET7FsGdQwze?o{~Q{-mIoc`;+ved(;VPl{b2d4kW>;i2q zi_*-@FTfg~Wkxxq+bma$3v%mtZ|8_`_k3r-q$ZV)BXLjCFLUBM4-Pb>q$yJ=g4u{J zuvZLLqF-`B+L@|q!hs7)%G&M<)S)~HY(ELeXR znSh8D)>B~0ZqejYshZeA)G|i}G8Lzi~ zz-3!o{eyxc1PrvIBJtLike{CoG^A9@8C;Iz?x6cT1>s}2`DApmv3Lu6&~qrI?#kUk zgtfpqkL#J&b7P62Yn8)S$KAGR#Iv5r7FX!=6)_Mc^`h++! z;6Lu0?tcvN`wBl}oKldm3>j|o`&i;yli-}wO%XM*Aw$x3F}P>%HC6Nrbz_dtU0?^Lj1SQ%xMLInyD=w#@ zi;^m;9ZW38$m?eEkUh^O)P&3PvlDlF{YIMVcAxDRJ0p5wf%X{Lli#suT&9@buj)E8N?m2)VwL`iLMQ-iDUc>Nbr^{Qg8YFl(VOlcvZ zqeRLhIJi>zY%{<`_K!?a5xkvD@g!&hMEC$AbT9un-8x1%L6J@3f&Xvgmx)EPPY%oD z#FnPD0y2v#{al6MI2*&2b?Hm0Fm>9!Cdz{Pj7Ug>UhdB@2np93?HRFB>|QTXy1fTS zr(gWZ&-7WHdPK3?#Q6z@h*1c~@i~28|5dii6LNdMT%YZZG$!sC|5T&T;`0;HNs;0> z(nC*HJNxeQ^lvELDh3HONxORCPiu~RjJv)cxc2#Q3}T9bB;RN}gU5^w$6Kseziuig zX~8fPC%c0-1P?Y(nYIp0he_QSFz5a=Mnfn08=s$~a)ctdlvefupJSj!Gtn~)bFnx# ztwc|O7)%rEdl6O?23U`tsDCUq_}YtCl-eR_?e$dN^ku99H@Un|{q4Y*vLnC8MZhTjA0-Q_rP&kGqI`04LTEG;sI`6oy5>TlU}lT2hO%E%4L5=!Iv-cLx^NwFN&B zrlHKZ<_`pjJ%l?<;13F?v(Ux28(GZDUCHO20c!cI0s+ro>wnKM;Uf^>t|LD;ynBd; zdhjZHON<>@!^Hf6d8zyPhT9{B8C4kFGcig#F$^ALC>b0EZ>mI~qRjwLgY62C4|IK9 z?KK+&(-#s7vpC@vt_}ecG(f-ZW_vc+ZT;e9qWA|bq{;KGdro@&{ie76Z2(MOgh^I} zsUY!qwDa7_>uT|_&TsgZ12oIxxOQjf+fV*vqlD=-{+vd7<_?dVaz+DXsx++ z!UKR2BL04%Gw}!JNvT9-*xMb*SMa*Jue6459;Fe$(K$Na^1)tKyfG&gi z*Go&|>_Q{Sz2V)_Z9qg2QTj>pnRXkenw3(11zU#T9?2-G%kbx-F7RafV9Ern4)^-u_?{FO{7W+kO5h{T6>w1?V@Stsc3|cV#HYqe0 z@Xfe7)U$N!ucyTV;{Sk5zL#5kCd2DnxWpo~2>M^&iHMekWQ72OAGZ42!Yw9j1VfHg zgUuxcsyaE&MW`+}(}yBMU%I5;Qwz*n{xLEYR)1int=XEs6ZYlwt%(if5SOq=;JKvXu zY~Y$Ze}o8hvG6#kzWdDY=I)5!I=YCgto$4Q-?iowWZ-AGsKHSQU-Nq(pi2k==ryqM zwj}H-7L+2n2x=PM{z8D1>m`y{reH-SUt<#y2>hN)u?;S_D_Oh|8 zN-7?g$?9$hY;Um%HvOtA-&#`_99J}o~p_i-Y@MC%#YJHMmJ=nG&Y9M&&mm3IN!jez`e^@yJV z4DyT&;Pu*rQ=l}EgkJskJy-Z81UVw^^B0qzE&EB{2D!YZ53(0Mqk8~>>z+0@z5)K4 z&c*n~&^rQwvWxVaN7Vl=o6;sKGS@TEK#!Rj7!PrlO6Ko2H6l{`ou-3z4+Yl)P7Vy6ZxBH(`4UW`Ey>{n^%J{WT4Azj9)ZLzhNVwwg zSw3${&ZxqR9=E4IynoM3&+s_fZkEQHs99RS!SZ4AK8M6RC#Sd-Y#WN#S$!VW5j0|I zuD|owm*;ceOOUy;kx;b>{J#I(qf$W7gTdAzoZ`=B&JW6iK8)#5@62ilY&zrVmo z#ohW(xQ4d%pwx5F@(H-jbq1&Z(){&H^_8rWskpk9_*dM3AdEw)%ovmP%lSASaGJ~~A(Z1c`Kqjs!0iw@`=A&KC?o??)Gzd`}Zu_1?He-(X+r zisDWLysy6sfak+Fgj~MhO_mT}Z2_t@|2H#7J?4Yay@7%8HQF5&|BtsSLcc{;7mL^J zK2}P3f;m>4%zNzaq6&1A4ga>C9z|Tno`f|n_XXY}_xF5nkOs(tJPRR=bW@^t(=&>% zCp)J52hrwLO&9QN_CL3X6LxV?WtkKy zGUo(=1YQFBY~0{*4c1I2X#kbm3*Gv>%Eq$UX{FEd#t3YdW1 z<{wN@SGE7exb8}$6uA*7pxA%1AVhk5Kqeq9%#}Uk4?`lBFP~+XxFz!WYrDO=q1W&^ zzBV9-xp~iv6VSZ-gq|5{k#ua;RV3RAIBXOvl|q0RT#man^VhSPf1W`gYModHKYE8& zT)%qlRRsTj6^Pa4^(NoCKO1PY7r4K5dAXetjl!C6ayab&t}PE4D{`mZaBz%83UriW z(wfKrTOo3G=h%>n%3zD;FR_A~RKF7l=_pxswa!0*npiT;WboLGw*d)JvDBYmni&bo zzp|9mGW8Xe6qS_}Zx%ve)nw`Vi3cZ07vuI0_J;2bJUp5B){d$WiW!uQ=)vl$*CH7- zil5{a#!=9JUtdQx&q3D2q;Zar(~LH%|FH)WiM}I^QtJ(Nj8;7x3{`=O%7m+^do({e_mqPxy-eB01?;iyvOoX6K zG}P~wQv<%@F+q_hEi6o2d}f2;e~3xpr++b?u4LYC-dCMz110|R-bY9F{k_ehJ?xaA zZsu-r_WjwSqeA`^B6o$>jyhdZ8k4dWl{;?#wm#PUa~^`fBIAqeQCIQ65#7c042OYt|;UbE?YpG7DiY2;KeYF}z zNz#1e9wKAeqiYghu1v0#CpzZN;l&x|<_W>!2t4wAB>W9IT5i}{CCC?7=r7iPx)g$> zq*OC|VIELS0Sqo{nV~ZE?$^VtoId=v==3;2UR3PUqVASy1fZ{j-NqaT*rP;@u;Nlk ze5t+gM)oQ;WMsVKp)UbLk*u2|~w&?QrLg3&Sf@LS$pkni(Mm4>ja zli!`U=s^GGM$EffViMk90ZB%93K3O{yMoKbbjIi#?n07@xzF|0OYsNK^~m_!IYH&^ zM3_hZtOEuC0*W54692XaE4W#%SHP6kUH81VAE?D^k#;O_rso`%wx58pNi%S<|$0Ic#?G4ghFWDMTbR`{R}6_YK>f zMu3uw1tob|LrtC0XZ(~_k9di+x^w~o^fjdj(0y6cl+sJGe{;Fb=>TFVRTIjpmf4NM zT~n4yz(ar;;!af2Go?IU?9tkSKu(>Oe<9&Va=MGy5m~t`;b%h!;sE&QiDaWVsAQYa%*s5E$29w@Mw${1EuZ!J$mo*Et6-0*S1wN{M|O*vTI z>Nib{oPGRol2Y?^r%t9!?~X$(G+uwIl+h&BxJn*c(qMsNMhO{3=JA%4b5VyQemBq8 z|ENiDK;y`N7svfIcJ(9OIss{RM%O%^{GC(q5sI1P3 zF%O(eGny0d1$F1SjwY1Z=DyU>&2b1?h2EowFs30t{C1WL?K#QIBOLSTco7n>@wu zV+fduDaxGf#^^&QjC@8^V9<&0J+4K2M>flR8Ud@z?)XGX@p|js`Dlc7$D`NNFyr!f)I4)TmQ)VA)n>~XhM+F& z%^g33mB`0GY6M(Xrqq8X5$6|xo6}kNoq>0(r}blsv^b06*&Ac=CO+{UKSsTk_%n^S z*O6{-bZj9j=BJ>p{6&YCp0avvv;52AUh%jZDbM@PA#J{!9 zQR}^MtqU!=!S~;ZXtA2ASy2)hKZ@FKZX?Gmly;c$w1La}`m3k6?QLa7{Q#(ddYwPDFi=5P_7S%7h_RDZtZ(<;Vr5Qq6v?aM}V9CjX8-B0LBJ zAPd8Up}=W?KoD_##`srUK!m~K(22)P;Qy8=3r)WX%buC}{rSuUAjaphVg|0dbR@bX zcQ{Oyg+&?Kn^V>z$`MU`BSswDFLzcn==?{bw&&Bva1v;FP5wyIU5DE%LnbfS${ zEGaOfM2i)ZFn2HL1_hirxOdKZ7{eH*I$`rz19}Xl_hazcn-;vw{XBpF=5#yt?tH!O zG#%MrS*ha0@eWi=Aa7IXwxZlIMSUCN7ba|{ zz7Bc+jLWqk!o>9_TalFk7w7|cYaG3F*VQ8wUnU0H*tM6_JDv7?0MP*|$kFD@ttNC`i$+V#yW9U985a2995j4KH0cj~|8Y@QP5NCI4rKYF$D=V4Lcz+d14;2K^Il=_m z2O@D-Dq$7d{?HJ(_f3BSCjYv*e*0q7{9M+O4;6kW5d&Y=*P)*%pw-I2|0qQ`h2J@`+4J=OQfOsIze<6)#Uuu4CR27@B=$+YW_ zXZs>+eou$iJBGMzb#ql8)jO+Z_>JD$ioc{kjaWvLoMkPWYP@MXFZ<-($^g4;2s;*q zETYR>p$-h_t4=15`Jx+0u&*jX8A`WO07I5xwg}PIc%Fjb^?AgxrmkDld7Gs3*+bPT zp(2LVB}rQxTIS2uchAl;p+(}(8np;~9;dzrekSbG7yAwwX<4tMPd{9Qlj$`5U+#^u zc-XJD8}2=(WCIMtcRPebGdlqe-M?lhd=Sy#BFLGL_gctSxqX{8`z^b@HQN5z3JT=6 z&5$&^rfc!VwSZo!q6sMlad9!AhS`M6rm1r=0I^tN>PIfRMX7?jdsMOIbivevu#{z# z3YALJ2O*)C{dl{lUBjUB1ouSXx9BWQ4P+2i%L{Mc2@Z(J^h2I0XsXPg`iCYKNebt5 z@tFR_Zl~ag9m})_-<)UG#_QXH@`)C|tIFf;w@!;CIgwPE$veI8mSaoRE_w&u3KCV> ze0!`m1XDJ6ONRIHAz|lxvz-ePPmkAqxk6t)Q|t`I-iW<9*$w>V27Xb(tDL`7?T4ss%lO_GNbN9mlCLgiryEU3%-_08Eqt}avzhe^PA+0>#MEl>rA%yj)f!7Hz zF{hTSgIyRW$X}RE?$lwiXia{BKTcPdk2&4#^_Ct_-h%w=XopvU3bDrbqGYd}4%V|i zU9|j9v!|dYTfvtc0!xX5CIp9046nlC{6{*(Rjsz=Ryd}+TP1*&l=JPcWq;*hU#X?B zBo4iM?HA>W&;sWntxC4kBmFPnpeA?kSe@?{abxst^_`GC^u`iQW~^U zeXaU8DZl>p1#!`&IJ9y$xDAnKoS>ABrMudgx%Ad8Ozem-W9=XBfIx+Da*GU}IUc+N z1r2StYMw_oT=;Ughe!euP6yqlC!|(s4P>iWaoHjQQET20yAyK1_rOlzOdw66vdgM-#SU-%`QYo|bqZ_16@9r%ZODnl*lyr^HAt`nvP2wbnp=(m3gCKp z=*Y>#PP-zWTK$NEn}+nF)>B4~wc-5+uFA75WJZZw|5s|M44MuTcZ8B4AFk=umf<+&W){JA&G{KzFnMFZ<@f$nE$*2hHgmV^ptRDk>U1YqeU zOR&=SIsYEYS51sI;C_rWct@z$4a7ns3Ng=Lti((XU%P`3WY*(T0HSkv9bs`G zq?ewWlv7I4d~UYul0cvt40*eKwet7WZAJXJtr-nPS_T2eKC2gS2ev17{`U6CA_i?g z&0bs7mt;SWiq;=Kwvq}WNcM}#VK-vw?k}|WaLOs*`PsRVVVS5%pXsYF!MEJ-Ax3Y{ z{Gfo&1xAP3Gp__Ixp90DNN%l=G-hnztSTxK2IQdYs-gKLcsG$WnN;p zIyjLMbA{HVdki>OZR;9BZr#>W(ZaEJJ+V{PVOG$cFZ#OJdtQ9@tE&!p zjgNt@c|e}m+b#+GgF%DSH|6kbB{|7)tCcpy;@45c&5K8fd&p9XvYlO;b@;{U-fVw% zn)COOL3@|S9_63EykkNZ5*ffaB0uzAZMAiy+&OvMd+n!hu_nf&qM{to=CxXMNBz_~%skRL6&|J(q|4V0eGG5xp7u#2$yF%5muNx*2W%(K%Q~ zj`s6acgf~Fi@%u1yC(izl)3u)`Q1RT_vtnKi~el{4sNg~SbtsMa-n|gge8lAzP_5^ z=4N^5q_HIy=Zoo7JQzW$fH-q!`?yMl2H*~O@x)hIZ_fUuThf(hB)3d$+lbaqt~6UT z`{@E7&^0TYnf5?sf@)^?t8DsDxU#moYR<{*Z;7ZT7dgvNzbGwJ#RPe)vT`8gXenkP zPi4?JwlY2vI!HZR+~~!D`p%8N$z8fsVgJ zDvk>J1`{G^G-S4}tp3I>!7%Rs&!cfa_$cn7;atzyyfo}b4qIgy!}B;Q=<9@yg&h&r zp3dmOG^9Hk3KIwfdB8NG7L?suDYcq(l}9*hhj13Ti~<+bm8`>ia%LAKMC@?fFRY%S zvtLNM*V&<=_n_z8m%kyt8eV#(+Vk8a)R-~#)ipj)UN~jw^ltFt4~xg5fLRl zG(^qDJgdiIZSqnnAV|GglO4K7!0|)@GMJ_4JVyj88%VIpP8b~ZS7LKTr>Ivfr_K=t z5i>#PVOl}6p$4(m*Xv&I&QE^EMo3EF-n!mC2zDBzi z%3d^`l=nb@aDTY_5n2d$kzATYj^qfjBJk*P98F&&VE>YR?jscAIzm%$U`uBDC$M=; z>|I*&s&LlYYEV`FAc~)HW-r@Aln~lrCys>;2|8!$JImUze5zW^uk)p6Pm}J}l+zOu z>t>O|L+fm(zH|Y?!v6i#4dOv%LV#I$dIA3LkT1FLeJRww5Jyb;LdJmjTaK@@gQot> z;cbF4MM7E$mGs?x_nNTW*j}$sxkN}hd1A47!M)#oc|ZBhgNvYmGbq$em?unZW`2fK zLRRt?7jM$l}N_@$YEkTDY|$s`~4Xje&#yDPN$V?a%Nz)y9^ghezcvuTygkMwoz*x=P>10 zA}Y}E%*4h(4hnMDFQ0BPpMk9}d)|N6ABI7;1^vsH3jE7_#QTCAO-yGH9>^eh$0?Ps zx+D`BM!^M9aCh;`q<=>iHNjH%US!Zdnh*E3Vn4`v|`rvGn_wRT?B*yfEqi=K)gsqhYRmmsTY_=U)nX;0 z3rwvvNM>a#<%U(r!T7bZdoZG>^yF)OGzi3=%E(>`OEM{2&a6toKjnBUo|o?T{2BUA zzWc)c;(AJyv1%_Q`%2fbZOr1vFJjCL0yJCCtAaH9Gk^w5a>v6+;Lc55;WsOeK-%)q zv4BqB@a0#hxS^*~08 zvv2R@LDKOi+cQoeE1BvJl!>3JX_C|6P(=>Q)v!7%s=6iGlgb*~i zJ0Z9(?(XjH?(Psm@L<8+-GaNjySux)-_P^b{r;+^mfG4X{+Q|M?&)*-G;5$KCs6Wg zYx1fgdanzaSO9}vahcagZN5bcANT7MM^8Zg?{FMkI_%Gl<;12$P(G=VBX6;!Tr&nr zQyHtF*2ye`OQ|OS{L}aiLvKj(dm-7HgJEf(dy>4`tC zsV@~3(*a%$CXO1HhtcQF-%M@2yOZkxQgnh(%V zLV`SbK|jTRCrqAB3>u?=ehz$Gt{kAQ)A`+fDsk3a_D7taXmH&RUG+@9_$@Iaw0at0 zfusBv2fNaYrQIW%5ih^WVPgM|>$3&rlf;n+&~&(9l=CAh23C>Hh2|_6J8R2X!6UWJ zkQE>FbHVC3Zbq=1eR`r&2Vz0AE6}p%B-ZcsRLSL6O5f?!tQHd7drKd-o2lFwl;h(;O^OrrIULk7XTeL~k#Dsf!u{lYh;r4sp# zwlxnBXu?2dgK}q+>p>UoGUc(0Au@gk-1lWU^Jv zVYIROh*W4MipOqv9b_Z_l~LRd`v3Q!0bTk>7DGJv;%YEWK;QZ63U=RJ-FFZOWvobs zS=WQLZ?a&Iz*T_?J~9hurNKOw)MC?W#T^1<$)sl>er#z+SS}kj$>3s{(I8#8&>9(; z!rtUH{AZ}Q8`JB+uvl|_B&u6~V_1uw$es*DbbRm9)cU3u#{Tw1EkqOVxE1)B*UyF{ zIwRo+T3Ebe=ua7XsqoM!lUi%MS~~vXXaXFzt@Afb>kRqgXxPQQBjg3yH+I(Q-0ubP ziS(Ex{}PzTifsrcFPDA^bW#JhVPiN8=#G_Cyr;yemCB1Z^+~w7(meafm7+oT*Fb_M zd)yAx>S|h@FyVFCpg{Jf%ddxQO%Y6iAxan?#zUcvnrKT-^$w*=@f0phpr6KEFBbt) zaS?%j!K0PlS}f&Ux>blCIG)%b2AU!(mLejbo)F}BVZtaDuI+){eQaWW}>bX95eu~MbsH&L%H`unM}4+`|}GeX7DV~E-< z7qX7u)$-&A8>OFTE(`f+G<_nMrdqso+-=Iu=zB=@S*A2VKl8cPR%|w=*JB%Y9s7zD zghG1XwH<0EvT>H4D>?L%A0Nl~PI#xJ$zyig{xkyfn|5Y`#4;A8X0v1#t3QIRqUwUA z`HNguwqw2xVnQIC1v%pcmY7-_CM5ht!$Mn~sd7#UQ3~irQD`jSV7>dp1TWEM^2QL~ zJj{JV%&d976_=+3Umla>hOUa$CI-SaB<{Sc&Z7aG?rTAnp#?!Jt+~C=_Om@wGYcn@YRf!+;7P2yTHv3bt;}2W zd49l2>GiK)UAE7x_D6^8!Wf5)OXIN-H0@vR4rdC&EtD-b7TgJ)w{Sk6zi*28c$zSy zt-t=Gc2OX~tlVnpszrUW_m*7mVm7d6_wEU*wVLJWukuF`uxdo+9^}0G_VZFyM zFo>U@p46g_c8NANtU^hUMyaIHXe$&gH4+wlMYIGKheI>syA16J6D~Uo z^f_sY);eq(6RR;3#>!E=_fB^Zv7=>GUa_13hHP|NS=E~R_ z?8W7`kWHU!(Ah4e^OW{;Oof=EMQ)z%`Rrd8Q#&osp8QJp`)81l$?-WrILDztbso)F zZQb1WA^Cq%Ky+Xz#-w9E{9w2f`)sRLCyY@SZR)ZYT#|J-wOTLvn6yfVrx z307xg81z%=(i&d}*yW^TxM2l|l-_Ko3bbC@1DBb zOg1V!9Rz`NlnX21?svL`7=I*4-`30*Yy!R9B1%?+gIk5NA1q3_J0gEuu9p#Y%t0Wm z#}~J=dTUjAMf__0RAnlyHqWb{pMc@P->&BlTM!=9|52YkZ-o6_DB%H`4-(CyUhVda zs7o=X;2gaV-Y$FQ29#V08<21yfszI9mxP#@tI*(uinq5@zlIJ?aCH0j?p1&o(%I0U zl^=wq9jcpUU9<}N<$%iEez?!gH;S?gxeu$QAe}gzc7xf+fU1kIXv+8n%#~(oEi-g* zL(@_@p|-UsZ8dH~4lCFGQvJ{lQeWw?o7w8B+U0FW=zx-PDGmn4?vocsP>_iGi+3ZP z>_F8uDrvopbMm`bs!LNl{)wNK$NA~ku%P_}I5v3NGA~ZNLCh|L$&WPV;^ta*28zem zd@Xx+=bi?;7lW%&pao?l!G}tKih|P~0#U(SY}U5iaxmdUHgq^}q2JmI3byi@MGgC0gdMl;zx`hP6* zx2N4swqZ9QGHjty>!37LYp+fA(&@*YO)8+RMY(=mZMylb5y$KyEmr}Lbo3?R)%Ugk zjQOm=Ne<*V7~a$-71ehc||8l4Vub;;UP#Y6Tr$vK4Usnbu&q@q)ccx7h0F+(-s0rJks$c+NLe`^zk4QdV z1QKMs-dL7f$~HLjz)XsHqd|{EJMV;Nh}(M0EH~$7v);}|WUq{$TIX=zJ9}7^f%s+m zEv$xlegaEPNAvV>*YkGwGe!8jsJdnfukUMSMaBG#TCpvuT6@^U@lnV#Q+}F~l85O; z{TmC3&IE@KNjL^m#=8m?_)=>shDI}6o`BtFzz>+PLe54pcrjldn>n6C%p*=!LhtFD zoPmw-^B4JnC02^B+v)bN8a5s?x@Tbw1piy~NjwX2HFgdpexh&1l%dbiHkb{kd%~y3 zZl!e8@era)fWAyA_6o~|!7ji?S9f7H1M%DR!?iWsHTT_F zyE>%!3=TI;WVQO-4EGK(BZo|Ankp45xANYT;`!gcZs|LPy(0)_%bU?@1IBWC8SLgp z^Je=TWkpW+_Vpg2gXnGaW@SOvM&k!^_!>9&M~io`w5?VvXgZ36Yo)(`J%ioB!qIU* znzG}qmBRRCnS0Au`!DPJ0fEqU3tCMk`{z_|rY4$D+{FE!_R;nEHgaEJ{GE{wXTD6Mv*WFIPjk|;Slljt<-wOafN825>#G%U zf!8pCylShfbdUE?&Yl0>5}P!oC|nLXu*er^i;8&;xzCrFuPY59V9|9sbg&8rMP zyi@yOmq+j2O*9$wZh2cwS-r~H^{&)_l<^f6M#R%|xlrx`5s~0|?$>W;c^?}Ih1vMO zYS{>B03M6fz@hc$ON0nA#R8ok#qcmLF5d0s1z$XDpw8xDMkE@<5wtuB!Vw9k+QV#I zZ$@N}lW_!sqJfSR32hPWXHayl^fGuyWmhvwebN!BkfLs{(G~&EZB(82(}f6b+)7e8ea1bW(|B4MU;-hS zk_E|?27#t;!S69cXt43ZIip&aZ8hO5VHXGa9lmvz-kpaW;e|9W*k4rgj{}SqkKW)4 z?eO@BY`<;WKk9fzN~f=fS_(z`0*olz_1Bxls!uoj$>0%Xj8a!5t|B%4< zyEFBKYprdCMu#|1qN%!$7pMrwpK}7t&QJMVQU@?0K&In(e!GJhE_d}K2!fu`+RN%O zm;V^9NqBx>R90BAx~C*>p#8Nig}s#o1^IU11orVPw}=4ax!?&`l%@oU);g!kqAs~I5F;XXlTa9p}?Q|DGL zD6)%|$fv(pYj(M|m(c)-2BVFkezt2f2d3ft?NDrN1GBTinDpyQ&3E#yzE41EfM+9} zFow@#)h&-wi_t+jJ=-02;dK)bs^JuA-FM{njzA_35vvWB` z)F_|iR@Mg|3S)x^ayLVw_A%RU5-8Eb243oi^A!)KP&-VEzKJ&kpje1wHZ?ZiJh|k5 z7b);DQ!Wotf&_Jzww=Y8#-Y|lq+%qkSeKPuNdoC=8Oj9&K)}?1G%3Ek<9<59Q^gs;g#56 z0qgh1OC69!L=aj{P7*1SH|CjAVq7vh;~=}`HA+&)4@*rkJM`2_0}A5Fpg=JYRvUw2B823_^C~K zrQJf**=5-&CjnWb^5}Du*Go`&dO%$S{$WYkKho3gIE58L;;Icp`qGbRpwHvoSIk*T zoNRh<@U}NO+}U$%O2`Xk+t3yu&K+)ZWKQh_%cR*dckYymz#WBDx2Bn~Rkp&wq0e4{ zK=t>L)V|Ly+JkWuW&K}{D&;A5(>P)a)Q&y6`;$~JbV z+6zSSpSKW?P|;vbtQE&2UZ%2 z*)QUWcMElAK3rPRb5`?)E|5E7UTifZVFRyKaFAo8ziwsz=iR_KMn+bd2`ONM>D!FR z{9NFYy1S(BM|pj!(avr9^`O-{%w6K|GExa8E76=13W@h*>w+L^n^vFB2FfD8LB|U% z&}c5bS1aV6ar-L&Mw>W7xZ2XDe^pHgA*$3>fj28WHJS$VrHZ=W~RpOe(ACaxLT2)Ax^8r?=7M z($J&NzyfU0$jk(6^5^2uRY3U|f+wf6I3^|9@IvSk+qu|=H&*U&<|mMJ1iqiR?{5w1Vw6M}-Wot_WSiQ=k{tHCJXHbYcysSpS%xqnWX%!=VlJs+9G-Z|)5O5g95-gTHHKR0F>zHpX9Gke0 zWLDc+*plHnQ9|P+^KEd5VknrBy$>JxKKbWro)aD(F;C7EHWqE(kCiS|Xcy7Yw);A7 zMC^Pi(^*{wW~ZZpB`2V8ke}}^o6>eMCk%To3fp{%6oAp;G;oeeQHiGpw+?aH|c9V}i+86p%>?5e>CSV~Fo=Ot?gbTSp<8j75 zF!A0TmBziup_Uxs&B>CIwnaxHD-}S!JT?lsEqQ(g?sm*0`@@v zN{2UZY(+%RDe1==(4{WLH;(;qpbHsX?}PhIoc;??nyYYfa6xMGl^~BLj`7*?%L~G= z(i{42sDK~K&ulppq?c^Ai8I++96i#QpN!FC%64IZNluOKm{JGi92uxqyv9M6elnJ1 z5TUjN`}nReLAkM3i34pv-d+krCScY5+Q!h%-({#`T0OC!F1yl!ypO{=A-!#8Gh5(8 zhkdO88)zZJ@uqZrVGp!}ZgB8@L%9P@_-x0|qPEUZ<|^vSB`)G1NI> zp)ojiZi1AwzOaMS9!H8OMx{LNxOuk~bS?iXW&@D_w~#KOfP#rME+&AxJcGd3LDaB2 zsq}wbfDI-Z3}#pB&BZEzLx-K%AN0U%UiXjpn(b@Nxgt9>l%q3S+}#V#-jS)XA&7AQ zd4&@Zbv$3dGXTZeAM~+Kuv94zsj0Yf8F<_#lK)aujgW%ASP1pzV)C{meLSWKE889N zc0WZ~aYnwcy`Yh$-2ZtqBYbZ=dam5?8rME#@tR@-#J;8%?jl~lOmlIxG=>Tze12-G zcSQse$>5OVq%otWz%t1!WfY5YQApN#Ct+^Uk-uxNB@h6BXmEXAnywKooQJ(#v<%cv z1x@oKb#9=J#BIC?$#4Lv>LKGTq>J}|+ldu@8tKnvmrvg}2<0|eZkt_$+C^wEL_|cn z8{Me4hkAgaE#ajvNF#pOJgzyR#Z8LE-u4$5!871Rq)_1;`9oT+`|*sLqO}>4Zy}vo zo1IzuF-64BdpBMN*--q6Q00$jFNO zy;1F{IafC^ zmAqUo7e-jd^rVBy^AZRJ=be<joDd06Wsy&cOi6mx*@j?6(kpejmI2aWmP@uMI`qi|@HI7PZlG?a3Ci+W<-YB#j^F7W+V9(39K*5-#Z(bMYV_Mm2$L`u}NE3u=?4l4+;@KLdZ# zi`8bjScxtBMj$i2Qo=-tSWXCe0plSOf(@M~L#9w9jBZB`fL21UJErQ|Jc_rw(%Xf~ zPTnlhnR@I^gQHW+J#gpfI&wgd+e6*G5L0n28CNb5X&n(Q2ip@u?y=6n-}=akkIkQ1 z$VNfX@IUy!8x!dfK=|7`IXOEyy`D7?9v>fP@`QUlgE=`l8M#`BxH`DGI$me|Ve?!NWarSVx{^?n;JZOK$79~rL{AE5(UJS4`bWTojh7udjjVFNqd+-a|GUl0h- z4~~wO)q-k#xZ+?vJi2>UUw){IP^PG!ua87xA;JfdcD(*W#2Pgkb`zyLe{g$qu)T`Q ziud!rGW*Tn40($TeZ&a`VQ{b+m-3h0W`7k3r9#3k(x)qR*uTpp!5M%0W3^a|N=JoI zi`eVjIw}A^W!Zm!K@~w6U-rxRfU*OC5SVi<>N85{u~Y?el+_nnFXwt*-0;%1BO+wD z@N*QgA3F4+vC>}B%5@q$+jEHc9`++f*zB}RO3LhA9kl99-xi~X2v4f;FxZ)HpT9#v zJgpF>`l(kvI}LN?P9*_{7W_F93Z$$WH_+-y@OJD0oRG7p%<0ZcRn!F}=o?I4c7A;R z3RK8f1x{sZ zzIRx9qkolODt0-y>VbzTxwR}TMo&9FT`wa>Djqm!8`wS^}ot1b2_4#M3sA_r{JdSPr$}Ze5I7palXG(rzm5n&-#-<^PRcQPHXpWK zfF8k5vTLE)1eyOg2G#1O9!1^7l1ySCuE+)gBu{|`z~d7-|7zg`Ft}eT$$6;EXKc_S zX9Ih@nm7p_*4I+mDs-f!L+0kE@OfOfZ~Y&^t<`YIVr0Obm5<)q(7@Bk+|fwi z{z0e(&kYg!1=)pYR}>Z0NKqX=^{IURJ_md@1)}$v)Y(j%vg6sBm>i#4A8Z>QoLY0~ z{|u-&PsBliKf*BNEhX9(TnFMciGS5XW0%!9TjloC9Wi5)!N~j}7dzi-jfjSZvQ25J znaRw%!8dUve-w*BGY40P7W?x&;pq@jBTvo**ARDU5a`?{s`jVCyD!OD>0o|+5>dG_ zm3zL1sqY1qT@5Tsj5*%iWP(~e{WfFmnUBg#sba=ao6aK@BXNRk>6ZP4He47 z`lU#X0vyhDI|{Tg%n8zW9zUvU3wDffI0Dpa*ELgmyAQ;DonxGoC{k2;3gs7>mf`N{ zNEw7j7RRACLWc50vqEpE9(*?^D-mr z5)*ylnYlu9OOkIs7pN-5@|TO!h;0eF3aVPb($&;b)znfL&R(e3aDfjM)X>z_T3O~| zXK!gnaCUVdMS0meBM|rd9NcquN&_sjaqAQop~4zv2^Uva0YJIO*Y|61k5_EM2RUuW zp1(U@f3N(Cc$8_L9P{)7({y1nmbukTk>~QUFhs=EDz*B zV)ZC>eRMFA(7XNDiOSJsK8oC5YIldzxw$X2Upx`vlYa%a+Y+@YZoDjgIa1NqUdu<3 zkaaDn3D=Svm_|g7LIjytBoG^`SZdZsB_Fp-byaBK!W1m|PHs2<9RnM2wA<1L4}{4A0v7 zl$NGk!Mq5>l=m??Kaa<|YWHa0vCl(;@q@lnJzn|X0232EK0ZYXHQO@ zg=Mp*B^V(LQAS2gDxyGEL5);l2#N(ZRFYht5{fE0q~|`24Y8x$e*p9P5yCe8r`nI* zt3W(mAA|rQv+JbOW=qc0t`Z~1)(0VTKnxA zm5iJD@M!JPEkrWb>GDjt|EWeLU(pMR%>S1gKIi0bJg+y$!}$mTV$|}sSCBFW+Vlv2 zD0sIfDOu|;{^B_$$dtvgo*xlbVDzx|?BMcM7T(~FA~mge7PrEqck5Cjc)GAH)H zvo|YkqBt^IT4D>6gNw7X-HWrMy}hH0z1ka{mrez_LPS0>fY>;&qU1^$1-#p{%F3$C z%1VIM+S=UO`rl`Lf(GDv&A-K~PD)W9X7bWv1gL(WgW^sI8OWB00Zv)Cdq|iYBcR`4 z3P9EZ1tCB%?C>~m=dQTW5#2kQKBSkAzY<7Aej^yp4O$umsFTFZ&#?^}UpISZ1G9x$ zLvV#7B2XwRWe3YqFCQTSbLOyOqoyY1XXfW;r?RnePjLTRxLDXn*ucU$Hpr^$eP+*B zR7k(3VLoM`=2KXk9dbJQq_h!QqQ}%08xv4dk?%6y#>KcmhyI=1T`pZ@ZtCnPtDQAe zS#OY1 zmzAxsD3$=&7B4uB&NLcIb-dZy%M>L>-|94JNyaLvK%nTm@{|XADQ1diRe*LaJXl&v z=UnHkMuq-o)jc>mzT|DrV#0zoK-tX+kc1rp=6*(;Yj@coN5yzMgx?j3fKvrB9YT33 z+cO9~&$c@b1(%5|QdNTPKs?;+1c`da|pFxMm2UzqMsv{P|0Q4EFprbRCwV-7FG?FVvgOF3jhH&H=h$Q&BTs|^tBKM0KD}wrt|Fr&11ue(h?0teii+am{M^#Q z+|tV2Tp*-n<>w>ZF$)o8@{^-)31|M+|?VQ_Jtg5|=f_O2xFLT5c@bgaB&Nu$Lm6fkvUJDr1^qHT! zb{uwnRhj^zkm~%uFe$4N?9(tRQ`!I}p#$Z4298!w-E?^}Tk8+B3jv}{Wu_QOVoM7} zggbLi&0|kaoM%oP(Pzzsg6G9`M(F~=|Bms%(b2){ou;)g*E}<6z?^QNTvNDt4DYD< zSdc8?r<#`Nle~wX2sq?88cx=4J1mMK={j(p@jEEKnMhsBuWr{lhm3$x3snfE_4GodZ3`Ch7Ls3 zfFVOtgJ0H=F$zj3aGXHiA>M0Lg@uPGl^tEA%oHyfG;HFRx;%@5TfHxcG>>w^loE5* zScfaA6ubU=jY>MC2A65n#GL_lr6njAcn%E74AG2^(vDG=(a;oAQ537X(EELZ4b4-8 zu|y*Y4e8lozybpz+@jeq?!fRG^4JA9k&=W}PJdyNovT3LFF%E$(~~t_M^PjQeCem2j`&oAHyfl_@ot<6w&x#9+sy{P*J;VUiRdmd`^Vh2E!qAGgtJI5S13DK03 zC`^Q+032d0DJS;HpTC_74>7#QAbWc*y0UBm*eV<>c+=x!+uhy2FH}@dQ*Ez{Sc%A8 z_3uJkZSLlt%%RE&Nhu$kjMOYO6yIz91&v$G@CO%|+Suv?iPCKDkwq!)(afz2xDE`6 zTxMH|Aeb<5G{|=D1Ff^{z=LHNM^%NkB_~BiT~kM0QAt&TzBG@|D?Z2aPhSpxnG7_$ zW+R8zlNYDu%q;K2uMTXWocg3aPG<`g3z&IavI^zo2CgX$36$!%(Lwy3CBi#H6oRF3 z1r;S(dp4S%Y6M9(>$P9PRFZ^ioFPFBHAZ!3t;)H*r85~jMViXM&hbk)80gyGM|L2( zaF_IZ$^w})hLG8Dt4!ZZG!Pe=e?+aed(2Hvy6>YKC5X62HLKnAdbGoNs72w z8o$Th%vr=3<1;@rtw_HW+(unfgFsLa7JOurt3L9Uj{$6Mw)?H#=V0%+z+lYQ2bUtM z_~F{qZOqCUy?&G4?|Zd)*)rczSJPczl#?@b{wC?l%PXcQC1fTgAkpzcfz-9Io{=1HZ=CT?_h82A-oX?x zLEdyiq((9_<+ZbUx*6i(0B)@%H@6|U{{$iYt>+uef<|hyw~k(>V(}lK zVPi3-&2C$-#lt;=*Ujc}kZ}^H`@c={za ze1iCO8uyy5J^ylSaAl>gq=)+iqkUdoA|b@wjYoubg?oC^8xhHQSIzGdoCM1s@X$`x zEcp97;K{z_wWaB9;RYok%oa?P(0@!b4NNn3bO%am^wN^_-m$8eRJ=DP-ln<+BDw~B zM^Z?P=Ck^Cg^d0IqKLRf#p{*(`EH3BAB2e0NbF7U;x=t)^7ONvMqs2f42F@fwWLssydqc*Xx@N9N%`MCfqpff5P+PRcd}JTSP7 zmevCY*;7u2;d+6Hx_3x88)m#2x^3?DMkmjIZqf8U3^3`|5OElr-;9X933tJ9-E zBTGJGgFZuJm0QT&U?43f-cjWsIAx=(siMn>Ig>{MrX>c)cVgbI=q;KbTww-1V6vZ} z3-9B3BLGfasnre2Ca{^6Z!q8;@9|Evz-e>QeflO7; zS7)Ou8c=oI4n*)A7g9N~xbtP4QfP6rmX!TN$Y^=mm1|~WedfhU@}GI|x9h+r=aF1F z80_{f|4Ag%VIBzWP>1$jFkRN{5K~rq01U*#-ClHe=hiH$CMQF~>t*Q~fw*4HDpps! z$Ur|t*zY{c%^={hzb)}&Eku0CTJwE+c~!q#yfU?C&9!Iv zNZM6rF}9Iwt4dBUzui6kecOdIUOJ6)+;4oAh^y2!jK-HVOBiPwAx&o$@pP@La_4TD zN{NI3C_}1P(Xpx;aGOg5dr|@cB;2!}4^5r4WB>4Pgl@=7i4=Oe(SfOnjyrW_UyA2- z%4EGNOt*i2w}Jo>tar!|eS3Qic45d{{qj*-NlDOpyn3Lsv=IIGb$@d`9a)ax5dqQt zlB~aPuI>NX2lgFHAJ7|sE}|0y(+JSUAXtNr7w?XbT=Z}vr3tW@`Y6qnZEwTV4vYQ_ z{^*Y!uMdE{r77og6@NX$jSv*r+%~ane%A3)WKHyY-tJ*eBye!Q1G*7l0q#jQoY^1y zdgiljlUpV*!f*~YDaII9SEXH}=fmC-brh=Njhv3R`}1@zzu!V8rrfP#!^shr7uJ8^ zi+@dNs$#LUoYei9Jq*bjP#}hz^+hOp)w43$D5iV7!snN%fPX);6lm3cJpYDvb?H9~KqTg?(->)P z7#bN{?=V|=YiWRPL~8bZsjA$V%!q^mjD{%ME>2llkHD?+u#W|RWMy>*3>U3OIxjAd zn|bin?EJrf(-HmS3X7+akdStF{gm6|HRpVH77WkqhWop>_SggC>ZxoR1q5l}XZMi7 zIx;-dpd{D3fBitvadi<X9k7e}36m@g~<#;@^9Nr|b+@v(fbS|FbW45w3HJ&YX0KUfAO z`Mt`eiqTiax71-R9~%U%#Ab`rMzdc7b*m^N#pWv$6C$=yeFX)A!PA z2#;v!$f%1b;k4EerGkf6qCj_SdY#MnE4^{_E}XE4wf2ivChq{|Yu-a9s-R{=zG<^o zrtIxpl{=4eE+^rw-@o10IgRT?E&AMw3QC^;eoFn~#dY>>lwBvXLejng0R$vxB!J@& zL?gh_o0z@OKy}h~6&?6rF&$}yq2XLO8zboYbd*wVq zpWi`@6}@gDQpP{er`M~FH+F-VkT?CY|v+eT| zHiQ7GYI{Kv)4om=xPeA$>`{l2R@DGSWCKMei^*{ZT(+w6)kDTJuD&hm_(BY+I|v?* z1V!RZG$&eOU3*dgltp*qdsa(D1uno+wC-uv1B8td-x@vphV{7E74ZQJ;sr{k?Vfk< zbEQaLfb`Eqe1K}HvB)H@HE7^Tzbw>dj@d0;1d{2|%>0HD^9 zU0ggjQ|0|LL~KB@PQ?#yT??QjltoM74tZjXdAXZtkhjOCvS~bprX-vLAh2y(@&`EU zIb+243~WLR;-^4s^}e!xSkJ`|CA%3nU`*VqH@G>_Rdl1KrCqPHd29QZD$paQ*X+8{ z`R%zoh@WUp|709e%Z=dhh=M43U3Pv^J{ChI8BI6-x~wWgi1A-F7Sqh46?b1}$y)$1 zepZFuCWl3e*kE4oKdod1xfSjb<-vFc_0_SH(dxgfJ+0JM>NSZMk`r`5mgiTI(zI20 zBu)k{Y7Y&&}gDB%<_J`-S}AlXMVqnwEE{T@xS220|Y1FRjX;K$iG>X z5xEE1%MIP$WXx8RRy0QyQ&CCz^T>$^L~b+WEypGrb9eg|1DNFaCATO}xflGxikS$thh*WLpdGP$e4g5Y z&dI~;yBDD#go~q)|79>w_DrY9vULOxHRW9`piKJDKoLKz1^!rVcBkl6iU*`-K3qZH@)Jf|tn z&O8$FCBpW}Tu0?olgN;*tp_Wt7>Ok-dYV2uSq=MqyCt9bXwT}r?|?A0UGi| z-^4%2P~nn+0Yz!-qPBP~6e5&~rKudrkJ8glIAsP$&|>_2gB^cMTCJO;pO0821GT^M zuZ~$ITQ@ZdfGHObwqsb{Tr5h@>-3-PNqx#C!rio+(Tj@(o}BL7c<`qZKeyQtuk|m@ zojq>(@Zk4-p@UE4%FR|g2X}4$ zS!EZBQUHOPYGdL*`iJ%gEssG zj3z&Hn^3W4-?N83v3<9Y4G?ErrH3G)=Su`NLO?X!9bI zit@Fq{Ub-WAd%_OkPM?Rx6sJW4x7P!^Y$yGOEms*=$_iE)K&9-^RfLk)y;UuE9!vj z8Fq_QR_4fA4X)_;vh(4s4KwN5MZxXC)AWCoAy%N%fCeMCxkT|IHvEgXPlR{9AYG4Q z9S9_-8n0MvUUQG$Q8GE}rg%eM$*tAaw`d0dntlH?wmn%p3PMboVF2QoA8BF;z)kuD zk|QO+#!b~!*Yx8I`kSP6`YSJntEc6vxjAT}QtM-77{H%_uJ$IE0p5}n&;K(Bzbxg! zlM*%5s4`Isl{n=!97#+?;aVc=5Av@Cie+I*=1la=A)W)f#4KT^7!jw!5 ziBY5`8Jy-_a8B7B;tT4yz-LWrUC5zl^`V~Wt`810p&>0ku8;)59vuQtGdx!3XghUy z4;N`HuF-+4pVuhRR8&;WjCXlFuftwEMC#iQhdNRKaSgqGvy2vutAPr?iuBdVnJsV1 z|D8S*#MEjx6)g*;yR#!lQlVYXKx_ToJu^$QnH`z+sn)+;|(ryUscA%@`@}c zzdSy_e6F|HXayYEgxY-LZEP)DC+}bXuSTQR`JKM20Q57br9+Em1O&=E{rFnnQS9KT zt8Vi}_Pxp|J^D0xgK(U(q}b$&Ly$72WS_nBXdoW0uvwnhAw84qe24K^NVDfs4&|TMqDz?{gkl8=4kD5=JUn(6pPcrkaV~`47DpZz2yZTa5B!(M zd#1DYt~?oyJ^xoTasKiDsK~U)QU1a^^6Dgj!IhAiH>42hsHyxUk+-)~OWuz&?cNO8 zH^J5TETJrfix$~C7%@|S0}T@Ig8rE zC)Cu`Prh5DIo+=TViU5-tSyDzKLHmElV_(8F<((SdZ4!F6gHg{C=qdohlM9F&#cDw z#^?2bO(-%24SH>AXyy|UN8g_n~U8pUHrCC$GP}W($6P?X(h=;+p&(+nv&dyiw{OoT% z_$~4)&hhGch2C#_u5#hM7XSM+jH9Inhlk(mJ6J>^!197UYOa%~Ika|WvS01h$=_K` z=)xWhQeQ3+Hn{4VUIk6+xTz#~0*<)RgIZ#_0_4j`m|s%G-+{!Yl}y7XAfVA`qVaM-ES&~Y^=^zt>a-Ef3M z_K3d60_>Y(^=Y~&a^qJe1q2%oJfH9NJ$|M#?~C!>o!%ezDV64#MteaK`sW9mU>#ff%mI!F-*IM&7|~}%Ro99&TPq9O zKjCuRcT13cMlAMuDVtV_RYDkv9;byL%P+&rnv|jEO9Clm0OiNy`VVfi6_Ns4u{8c? z&~g}rgfos<*{vtf%l*0MReXc&bX|FFg~tPu(S>(v7q>?Bn%t}J$47?m#B7;_H>x0y`7E)hTRM8da1 zidlm6-$xmLaEQhGj7%Uo>$O>4tWdA}czvEcEL-eNT0Nb`p6SF zQf~f=6To95of9YVU z9~CVnj&f-2g5@Uun(*?{8U~=tk=Ry4N3(O$w3IMEyc=!{-_FVw9|Kh(K5VmCrHYp^ zh)fCM*J~1sk@CYWLH?OU7eng$nPNDLB`%)7I8hyzTn2q0Ra+ z?2iNjj8FiYxUzg@S=Gj(l!+}-LzC)snLG@h;mOd$I*5sq&7&Wox)I($ojbyHnG%la zx3e?$C!#Cmz=8vw$E2;2AUigE8j2G7Qj1~>bMuN)y$;(QBTA!s8+UMO)ThoC8{5oE zQ52`NzqP^e>}f5A?o#?FCq_CaPOt@oUGdcQ}XzIP8deA_2Sc+k=|T-u@L>N#IS zf7FCxgUzXl-2!`v60~0dhVSLFQ&h*z{Bw>Q5PrV^ed~?`9XIQ5H6(IX{lrY#pFldC zfEf*1{C^}}1yEMq7QIMF3DVL^OLvz_H==Y%cQ;6=2+{)5CEXw$A1Tt^-QC^w4*#2B zU1GYz2-Ix7eGO=#s$!(yx$}8*>s9p7&-Qbw z;p}W|@#P=B3#K;ovbCEM(4g9W)(Bz#=n(YB@Fq1FU(YAfTeitdI-Z@L!t}Rm`oiT- z_{D;kqs{zgxUd#Obeay&g!bYMnSyn zh{pY$K5T6Mz5~v@a~L_2RDwlV6EFE?SuKV$OC&lQ6+K6lD)2s`Lppt#uuKBJuq2Bo zr&FBXpE33B-h_U8A>z}bbK(%tLAQpT_Te9zVq=J)`ArMnr1uTVh&S|`V@4m> zPd0cbsN162X0F!eAmzK`ZGU8rqAp&Sl|AJ9;dA@MAvVZMtiTt%$K|535 z*S%<@n2kH0@vymQs-IJ*}pX}X-n;hFv1@u2JGb$E*h z*3C;PpF{Q2_4Tq({Z>1<`>MEGS}Q07p+r7SVG ztG0v%pc(d`Y7&K_Ku(3U=Jn#OUU?@aXVY0|tqMw+{{0YCa*vxa(qVneJMsP>fd`8o zU(sT6qQYeNk;lJFD~L6ETE95^;&;dAq})xpH~qO-d>In64n4~iw+s&x_J==$JB7AB zoQx~LlaR)ec?@1yWriDXthx*C`(ICwRxG83Awtau_Rnhq7*wD5&WyHwvJacf_&YxK z5;Zu7!{c7^Pt`~1Fbv5Rh2W7vdfCqHVm>-0@e@2O=ywU-57KJrad*KqNnQSGjNpDe zzGH~s;}|ukWl$Zee)6SRC0yumjDVcUbF=Fyxwl30wfN(bf)iEF?3vseb(jp=KnlOrzRq$kZUjwA7~4Bi76)A!`JiHRvxkD;MsCL_I9n4e zjT@bv5d`6~wi zV8vw?ebvOfaL-9XZ)=2(S686((PHn7YQ%wlIV|D?B2}Ne6%M^|a?c)nj?_luqtmIC zfGn{tUMC+F=P|f|)GsJ2Q?xVeb8F}OEcw|(X0K6{O^;*k=7AY!xa0k>zhiCv@bcd` zky4(8NYJA67_`Xla=5x=*E_C#-p@b8=BXF2MbEh<^u0q)K1)@K^TMir;D>I z?=$O!(NYQC48D~ZnlSr#>UT8k5XUUsjUM}? z#9Xi=LfYo{Z}ChU(yV&p3chxPkKTJEgpyxO57^2iTzdCKes^W&^FWb(;k>)9(a}IJ zDQtiB=R&WUF&t>dsR zV*Fyl1cqnI6rrbVNZ;5Pg~}^3&4$KkwL}Cz3E~Suc9|BCU1FVENAC_2rd~J8cXBpylen@l*aJByXD9I3cUq&n5C^oVprfv z)^Sq(ZUKQDOp|O@KJdW+|N!P1e;^NhIvX27RBXMQs} zK)g4OZ*ObuuHQ<-+AAEmUK$|BvIrlUD=~id&vjeD2}_n11|0 zWV%{Bq5YrGGNDCoOT^=*3yzm4P45<_1t_c!3TaVp4dI5Bs{y1*I26KdU0nV z>=%!O|Lfv<+{dD1x~$Bx>HgS|%)**w zGsCLl9qQ?aev4X;D(2gTS^f#|+JQ1J@G)_XbEjk3Pw=71sR`O+U$Tdum43@M?|ZkKG-_e`Kk5yWI-t?D{xSEmCX11r@q^ybkyL zs%g0)@`#981ZW4sSGdNazv(|UESc-Yzxajf6km5))>JO9Whyji_Eui|u&A=~JxPRE zhx+5<5yEc}e3j!d@-)BVGxW!0)T0nd{u-fap~A zTij@%VD#ZM;eaRIy7)2ke38Vi>B)3z0QWj4$i8Qf;CfXR{Cl!sA(X3bA!i1}uX z>@vAwW9Z~8O5$iA*eK*lqI|Z!Jg_otzf)&BefW4?pW-9$@Ox-eG-GI!lL$f-MSOx2 z{VS~F!RW4d^7K>-UymfgZa`~}W+rJTwUSR8Z9^`O&zO#dPYeY73vBEtaRX^-`=#Gf znbvb85lbV2^!?5^i>x29a1_}>`UvXLm9vjYyL_y}9b(}74t~&bbf7d{|oo!tX z1St6C9BPYu9_tX{lopS%j`b}kEoM-6*seoN;RE?D1q(rlJO(A+)h+5-NSmw zvn!RGVCXu=NpDMLCYLx}YS698f>Y9^pk{ULMtYgwKO)6)Bv$(u87Qv0=^7~_8I-^C ze@58CN{(=LYYl(Up%+!AQW8Z}!yYjcRYsvanW{HyZN%LFyz5o^)2A)z2%dDuyA9e(#Xwn>gP@m~AoCAP+NK=CRUS;?6@7vb$Vtw8ZZt6|wIQNG&ErKiP;p=9O#2hQh7k{R}5sA1}_eoA(y2Z*oh_Ns}Y{!;#IY;+jU^%dO&TRu*d z*)>6qmj6qbK01=&?bt*|_zM(hPp5ri{$VL!KyPbw&f$US1c`O{jfpg)c`F zG5a2Hu2*hmb03F77c3n9({EvHZlBxP!)i`9acGCtv(RJKbMikkWcO59L5%G}Q1L*D!V!E%_z72h83S#<>Lv+)*1S!Jd)EA@_A5)Fa8BC> zE38kmq)!Ul?GT&4eOcz0w#Exds#vishkvNWA6lbxd9m>n(@la`H*3)ybVvTta?M!5 zeZ4%8bmG^^MoINJA$==8ppw?HufvFYnBu;-^EBly6LeLqamd!b6XFmg@Y!Y5bXXvs zqtR0E`0Gk8l=chrZjJb{Y7kddn3p84Uvq)I72cUN-7!Hk1`)@Z?aF}W;(#U0MaOYA zGbQ~;OpFZlQz8ovQuyMO&w{4GZE7eeB&OC4?yjlR86)A@KmsWR|ToiTn# zOj5Tl-P5!?G4oom;$fR%V>LYfa7%3=gVDo|Uo)y|D9^TZCxN8S1Xk5$y^B0Pk;cJV zrPPn#Q;W?dNk!mKYez*NCe?z~wTVs>#RA}C3zc6O8yj~l5-o|Jm_K^tA&&6GYelrn z`Y#z%{Y?m_Y^N3YFOkE`FDPfNbLjGO5N92iM@VqRpAaJV`)&%2jLl&{RQr^6n9!vV zMi9CZ?v|^-!`Q*rrz0`Zj1j^Y?MrY_`_c$u@BD6Z%QA@QgPSenqb~v!JK~&>#-oxP z5uK1E3|YSoJo%a@klcn5lY_b+@b6P8;o~P6Q#Pselfscp7#1(CgcP1!{Pa#;Fs4LK zI;=w};aKcI35UPn1(3*f>azmFe#Ihl!GQ4z%&LR?ZATnqN*wjiKM2^|dViOLzbCk* z$hBfIxMSmKr7s6Xw=BdVv;V6pjPY;1A;uv6vt99U_e&x}Su{&Nj@{xO&k1Q|GJL;r ztIV$Qwzy;d%I@p{hVjeiIuG-Y5tHtNctS*co zLfug?2=F{d{ty!zMk2&r5#eS{Q!E7s*{Bda#32p~!%$o`#2cd9r}N#)SgWKkAQ$V5 z1>-2%)lr*!PK#3#Xz(L0pa$&4hB0@>KgpSZef6;YJ-xGAZy}6SKoNI5TtwH?)XC>` zOOpmo2#1srkPEe0e`h~f*f5t@eBeE0qFQdr$a@|&M%jd zk*!>1DR&%5{mTwSc8Nw zNDYx>4F?J3XmVUXr+Dugs^aU-!q$dSOy|f+V?@r#!)7q3P$0M`w4YNJ-~3&92@eOo zl%`nRa}Qa*sO$12hwO5qPj5h~x!?uV+>+3eBR-8J$f#`0sa<$wi0@-W8I>f;mf0tt zpaiq%A5k-YiDUYSq{qtlbp++b8~+gBRI>s)bKaV!j5_RaFirE*P;E44Mg4+Y%;=qzpVYR|K>+8!TL8M?5NO>#1PZHy4s?m^{lk?l*Upui5;O_(6~F7lSoOgisw8^em@!%96ma*M1#Mz{-ouaTFhE{j`Qk8yyM zXhM)Lz1r(qDQ!OoQgwaRnXzrU`QqdHPC2@%5l6@)j83pL)h08m_Gnr>*2EsXb}KEn`?V*B-a<W~lyWuMpw^Z3u86VC{4K!BdZ0*J@K~XS_0eMoSbeorq+p7K7q9K(Z=@)@pbRL^ zbFDVD^n6D6GPAT5&X?*orYb*^kcac&S~ouFDRiChCFouwir3)Srx`61#m{)B*YLsm zGYg|*86$Uwh)s*pcB91-qp;p#pDXdbKo-fCBd&PDcDNJCR65g~xp~2pAZ*F3{DANt z?LXSl{6W+|{rN>7%ltR@>&|=yE;a?T4apRFt3!svGzwS+3g?-LT}xrQcE-cGY;yfm zg^t-2%4C2YdkIO4z4 zDTe#Bab5&YX1tsjkW?`YY_wRYpuI8Pom+FzbzIXH2`jm=4iF2X&pW65yD=WKw=Gy! zdD5v`GDr8J!*4@wK>d$gJUi;xpZ^HGH=QeXqq|cYrG^a2{ZgrdUX!bNR{Q49&@dBu z&q!d|Bjy}AA@yz!^Qi)8BARzvEnkkwx%aO0M^gSx9x|+lG<`mwoDKQ+>ZdYs-}y5w zjN1zLg;ZGBb1?||J6cAq)?2fdph2)pcUr0hXdZ%SnG6&(7A9tNeTuzGVmb*KxP1UE4{TV18pr%30aZeNJ%5o#m=8cH< zY+601cmIA6meuqs1^7SGzMV(4MdQOoO%wYppX}YI2nM8yMNkX_J}D{@g>pM~cgCwo zRJm*dMbfKJafVp4PS@LYuIHdQI83QOmCxmTwEif=|DUg!8JUypL9jJiT$jueqiBksK369fF<7J=vpeMFS_HjDS%hLs1Y>X0he}p`eX1&dO z+i`g#ydA!n>aqI;{O#_rCnhcqtpH&eI#hpV{gk@`R9utlA*D6?8c~wE4{zP}(JOfH z{-Y91{07v{C&<@ks_YQHDxU!QoZ|}{vW0e=SUx$-^{CaAY1*^KVPqV>>CX92QMu=s zX;bm_t{Og04|xQ?v-bF?y+&<(;5UxEY`Xk3aV@()1~>C%d!DkDNREfR!GZE*iCp0Q zWwSRJjLeX)7v4UwU=sc@W+I%ZlhXl%rK!$n zuI$&6zGrP%wFHDasCZrOoJ2Z$4XF&uD6Pw`jaRB35>;>0_^a-^14QVrPfK5*UxTX&05gxz~0%B~lxN#|>uDhl(>FIs{? z>`T$9MQVM~8kv4l7Aavuy=Fp_O(XW*LS$Ri*J_XRmns)Q%s4r75d&jU^<+{*YJT)E z_+K0}Yr23iq!OFiO&(mlz6d~P11wuf<7vo{*`?Y&-=}&P97TMj|DbCsS|%YQhFU%n z1c;vU#D7D1kf@tZRk43B1DVa-gXOFr0|ZJ%sc3E_$i-&CVGHO5Lp4RPtWRF^&sY#P z{4Ua*7mB&3<9wd8K7HOK5_oSuqvn3at8x{ z#3i2pLD^hxf)PC!q%G)^WeFT4{ed2eOX#6vf2kxX@XWevzHl~_Sx*hS5|2`YY*1BNguENv1? z3&wSs4+`%DLM38p!&s|7EZV^6xgKJRe2@|T&eq?~<0H?G{PB{X-p%q7V5k8!?bb6j z`9$H9A=;FkRudLZ?~-!o1(q|PB5t18K*}f%e8ylx4i;WGxW~-;^W=%R@))83D$i{% zUa;vLOi=JO^(a;{19xJ4Y;;m=G|6Y#$PZdMX=%0P#ibdgA7`>SoVPWm(c`COO zrk%XT%xg5svSY;kUuXP{ejTVBXul+FkJa*lgpc5{%2ylz0o0b~W5gMBsdKX`R=tyi zTn;V=w4l5fJFi%@w3O7b<0XQ6L#fOBtPFM1c4L;tY4piegRc)13E0S6;kCSIbE3Lg=gxh(t78*@Odv%tGI66ztO@GIfL%KTBGMg z5OpFstaDnK@cRR^GOSmE!zZ0|98*728!v~b==r|< z22TVchz?kq=F(W=%J8!#12)S)R)JpYe6;GL$XLCT;DIj%uP$Igt!&;hk-g3iEE29d zX@Y#}=DR=XnS2ym6!?>cO=kZs@_EM=TWP<3+oF1{H@IF@$vW;Dq~4C91qT%kg8ViD#1+mvzUR^=o&v& z%UzIFnf02RS^wqD*>p%t{t>U@s+Pi>aK8scAmWlE6gg>W&k6KDYl})4Iu=O~7 zl;m_}C|QASbi%{h(^O;QjUX{0fv23iw=v-421U(LS}gDTE>Dq%%eiUi#PoE->&%w4 zfWtZ>*TSON!<2;;sW^wTL)im~nKzVRhC2t9V4gecc#0jNL_S@VET616(|wanA8|YE zG=z~RN<;HK=U`yPTqhR5AJ)6WB%}?Qbi;YJ&-T58%S}Y2|Tb*5X_XGv*{ppbAd%d3-tn?!>4_ z{`$tuD(NAP_c?$MPw}*T7qYNZ zxNvN|=6{h3MK}#TYu%U+bn%mTOo6Yyp+BFQ*HS*eVNp5opxYRRyL0&Q(hD>#bc+6G z{UO`@JEseaV2X@F*smmZFH4cnByDLZ;k1W7S(l^@Z7%%{-BmCMTi2;RX)YZ z(JeQ7`P@x0j}v|23gM%4o4IVVC)~CZoMF#jT;jJZb<2o*b4IbBzDWZk->F#m;B-O z&lTIPAksPTYJ;NVREK&7oX&q<`?SjCY~yk10SPakOFu{W=C3IBeS7jk%tKA&Vcjq| zu8aR>TsU4N{J%PEap}U{$NT!retTVk?t^;rFZ^x0=c`G8Xd*-gK$$tVJgt$N+Ih11 zR0;`s)_Cm)u5K^}s(H7--yzOofi45g{ED0mw$@d zzuep2nK5zxm-~dgOEz+754bA1b!wO4jXyi&wgOM%cWiT`mzkLu8+J9o?*<qij{Le z)k-7!$RhdQ!ux@=S~4JHWMN%*Tp5mA8kmOh^vyLSlNs^FSAX*G6m%G+iwDP|%Z2O0 zupnN8th~Hml&XVlCWkfh6E6f@gdw0L6l+duvvP9%-m zX!y+IADY4k>&%Skz(p9Z;Hek{s>{-Q!&l%(k|%7^4H;<^SF6lC8AADB0#Z*fV|J^Y z$A<{x=mg;)zz~DG1!7B8BH|2lr-8&W?3Z+RgGwWpgbFEm1vfeSkB^%7DPNOUXcf|i z%yhB@W=*V@R}1?2v8!jC7v^{r6WJ`AQH!3D`3>mQuV2Yy%2$~a=Ll7L54Y;2uJAkl zAAz7zeL2u@W>6$c@#&!dJ@l3of=izz{W{t|gn*MG zjbY0xcS{5{0( zu<>;~kalBB-FvY|k@o7da`V(YqXK9lHd+SRA>nlFroiXM?$ny$n^xA#&Y!??Y_w>! zu?k4B{GhUWWy5P2%dEc15j9ykKJ?WxvkO|{c1Gnoddy+^tW!^%(U+V-##rJT*?gfw zl&D*OjwpWIDTF9sXt11aXi&iIV}OPSNpcFP&Sgw<%CW^zfd6ldv^`D=4&|wOSPj$QQg+%0TFEoz=z{ zF}80B!fcmMdIHJA8iNT14hnOq8h}xjN?Q10nb^xs?^}Fr?e1U>rq*=+d((xOT06dP zU4RCG4@(CQT}icXMdkfdbNjnCu8DPmG({8osNP|vHJ^>CWa$i#+O$jGl0^Jl4%T?` zTI;1gS|;Nc1T#*2MRbUhD7g#V7Wto>gU%N9&CeDpUr%`N10NuzeLbvuaQ=B%EB)jt z)YKu32)fwjT!PYlDelO?nYP|ZhqXXcy}+s=fRMwZ(4WK2zQeBRNCzb{P_CuF9`eH1 zuz)`c6G&ew;sV1{JMU*2wdPe+HVksZ6LoNZ1D=5uS^H9X&65xYBZtcui5;t`ae~T+ zyiv49M`B(V0e*h!L))fi=PII)j^w}6!k*q)JJ0e3D!1764NWrbZ4*W0$Wv6?`hN3_B zeiZf*?J&Q1O3enqNP)ZNQroX%>STHcMCIx{hRf*#`%58(zdHaeKUhb##s0aZpi%2w z4hF}D1k;)vi!nCFb>aQFG@w!Yw;mk#nJtReyh67UnffEtolYqT{u?nTn#}W`XjC&@E-}Rz~CX_E?X}ksN*cc_#D(zQa>>q^pF-m{eWi_6lXuV7`EOczpUp;+Z zvoW|4-X2oRNpX>`)baJ@9R@%?zJUJMsXR7*l*TR$vzHt-Az!9npe4fQfM)nw^$R~} z=^_j08KuSulj4c(!6`!lCyoA8sk-MfcF=8^|GN5%^SfNt&7f^7bHmQ=lgrIJo}C?w zsy*iPXIpnfcXQs1iG$8xT$Mo!s{B0=#7Kx557gJ;DNPL7g(a>2(WoP+18VIMHI!FiLUI%|H$*IUzL zuv2)!hjC3}lG-YV^kcptPWzQ);iuqLt1rKp9$!BUyngo-1)&z*O3*K>Qj)z@Cv3nk zPKyYWx{vhCW)y5cH!^#t_cQ`7OEn;mOFyga`(2`x03+0lEi-4LbD-!L(D;$#vmi9d zzs-uF_xlGYH_0n_zX9vm4r6|pfS_u_OA9w~_byUbk;(dvr_R@I^FvzM1gJ`6*`n>A+Ay)kG#w>3E42&>WC$OwZlKD|8Sb2e5rK7Caski!*Qen+ zL!qVaB!NK;%BA1gQ$F-zF-%eLDdqz_NKy(ciTbpYNxN^A>eu;{#T@?rDtJc<_{8Ur zn21S$wxnq%^ooQgq&0_wwPfz{g2?v8(+uv()dnK%SZ3xB$aV|uux;p#cpJ2fIP#n7jQ2)5kgF( zOG!B49~VB>sc2QHs3|X&C)Qv`(=&+xv)y*ZXL~22Pzg+DUl0(a9<~YBgtv4%{3h0% z;{ef8(&{%OXA|6S$>Y8!p(UBz=+QJ`a?01+Kx@dzESbJ4^?@WJi9yvKc)gU`qXHcN z$)pG-QNBmuIVJOO`sgVjTP5##>v=kZQ)~BF%bICS)h-lYrR%{C`FcsxdJVahj9%6R zR)DahqnZXbKY(26Kd2zU&r2Bw5bgvGZ_JgH(EV&PCFON{`I>J`qdL65IbE_(c*L6& zMs=pFw&8GX%+?q%CbpQn#Zl7n+Umtty;Ry4wG<9-7CbeWFM8mzGBBRY*% zJio`}EDWeW(gyzD`S~BKv%wbL&u{@ON)pMN2$9WRF6A92Ks?laoL#p)3DAWGgvMf_ z)k;E7o;L_Yp$w`H;3XMDC_kPU>ucvFfS;K}#bRw(3^!~y|*S|3YYQ2gjRb<@}%}3VT;wm^0?%);}gZ}&y5|apVJf%Oq5v1N#`%_g}lQp zkB>_zBzlpZc}>w>H7eH-lO?MFFa{6@A>T~?`roPhMS!WIz5_y97{((N7e2&>ua>>V zWOJ=Y_2q^HA4qMbo8KOs6PT!lb5 z=Q~rRXD|QnA%IPjuT_bXTcQGRYC5cUu_dXZ5N!5x@x-Yd{2XFLK^Ky2?dkk+nOdx_ zXQ=&2csyEcs(DVEB!1W{=_HyIFf-YP;}`%(F>! zo2YS1jv6^lFc|C=p!^Ut0nI%g#7oj++8XMt9qZs{oNVr>07hweRYgwb9uH42IAG;Saz=vP(2owA_5^=@MSjrQYX!YPXBD5bcv zqDZ5a)BPo)8hRcP@p#y@*TMYS=zq2Mzq|>5{-lw$L9S}j*-3A=a=?sqt%G$!=-Dx& zKczA-vb71KLg#b;(i*TX_0@0fMcU?E!ZkKZH)nw@JN-oc8Cftm`F2`=|5zO+{p7&f zj{$Q9aVM9@+c?pNnG)rcJrarSZkNB?|#E#dEqmvsu>~hl8c= zZ;}?f7#Cdwu62UYr%C|?YL% zlz(rzu<-|ZtkfpBvDyGQ;^~z@mw7`upa2l^k}cw8%y5l>wD4O6r-L$@q$G zO8s1|cha4ceN?2-!}SzUa_-y{xpr= zc+`~GRgpA$YjFQZ?M@lTcK^;<{qeGjnvUZ;lkp#oP4P;g=DnG3=uvXzbzC~ucRUar z=|F`C0ZAaJs)~Ga@?#ae;R%HUOLxs@4fXZaG)+RhM~dt#F9o7x=1;MlyNe9p1+ci1 zukowJ4=T4wuT=vY+msxe$L8K#dbIOtd=3=F>x;_edta$U+N#!eNJU@F7*Y}<*mpK5 z51XhBA#G)W<**!VzkRuf+e6iK1TClOXt;Bm=8_3O z5#%T8qL9+^d&C^ZslRkL)cDB#tkvb;H4I4V_>cbqt!#85$3tH}%E zV2)#x*qF~Qd%05FOqy7!UJ`Q+7w0>w!E0%fsarcY$f5m_)=%e~!e2kvyS=5+u#(7a z>BI`6Ikr`$WYF&(kO4sxMMhVcS{K>lSwRt&qhlOpEDBwXc#`Mdb ziQjqK40;LgH#0gWP$^(BN)ki?43pdXD}MQA;o_hRLK8Ez*}hi^hr=E&sq54#xoYQ| ztJ?g-qM?Pedg?+C1h|MbmV#~{Z9;+jV`ZKO2YlzAr~Y|)73LeReK+11m$OTRQ6005 z^z0YuZ-|-xW3eeXi5?Ty=+Daob0?}VFnJvXm7JN$wQU>6#7dj;@k#a1yDz!5sKEGu zocV=)`k)GSS`;xMqPR#F(nfkHz^8|&#wlFwa8~SP49tv<#VI^j=Q}1FnWu4fN0XB}J&${o@9%3*&rcfL{R?1*129)j&2GmMPj2J!VWj{^65W8jti_IY zodu1V{5CAf0d_8ID;NU)U3zZVZui+G0WtxR5wz)iYl*^g9=Bjq5IPU&yswDE)Gy(Sw;abr(n7K@uyD-*kf@=3lGLokIQ(s$c!9+EE8hr5~ zJ@1sEm-+V9WL~?TXq8|zI3)OYRoz6u!>{!E1`h{ew=%-8$gnNM7pQ@Q_brU`Aj z8EKGqt#Lzt+=L{|TeCD_rd}I=xFO$%Mnv1;POeD7P+mpKt}*FjDtpXJ?yJhP9!46# ziG6EjL!j^)+rn`Pc|w&0M#7hU*qx;zb#Gk$nsnv zi}pzyc_0b(K0dsSzDc$1VUU+TPv$bL%t9>ko?IHwEy!qf&*0?ZKil3#o7B#x0Ru*Z8{Hqa>kJZ+psv-{4-H8_~cD%dw=I{h^Ax(>5e1;6!Yvn{8p7#GK~h zZyi)~zBsxT$4}+SXJ)Ki3pR@pIfVQiv=byteSWixLp99)aG9BT-FmcOY z<`2JUZ6k+X_ISO)abwlFTbl}e!N~loJoh_G_}czSnsDfYG3#b5Q}Tq*;NhRcfiqY6 zH@#y|iF1^%igjXiiYd>ynIv@1?|j~u>_%?XfAaL_B&zJqa3?2;Sl+C8%x=gYly~EA zp2RN=Rdh$&o2Bc-_3TD9@LrHg>Npt5H&pGwoF1?2#?b1iIAA7wDmFX=s<| z%&9E|gYHj|!Uq;l?ESV&(ir-sWNSQLv1}oBOto2YCh3*mCU%W%Y2T>nyrz#hd$2Ko zZxI&!<7Oc2>RBuOO_D~>*V|dLWF4WUoF;G-s<74Zab=SN$#70`#3hp!#^qWx%2Z@Kne3jq)RYd=q+c-gv zu(786L?Ik0Y@wQTar{33Bl*Mu&)UDZc$1Y;I4G6h${q0)K_? z@-xdxht;}eQ*r2Q?#z7vu{@Y8I~7}sGZY&mx|77xGj_$i9`%x7 zk?HHiJa=uXu?>XD0;iV@4VFvERZEXfjoVpEo`@|3HEUmIe4=>9C+8;i;qxp93{z`d zOta+IuOiUcZbs$K`9(lf`J=MGPXJcgEV!>jHQ`{y<5T-ytM-HcFb?t2l2Nt99Q_qG zeY8WXUO{_UDm|{3H&Y3^#nxRDjr4mm9 zPVqmQt~x5pFWL?vA}A#((nv{nhtiGG-QC?Nh)BoKFm%IEL#K#zH$!)KH}CWJ-dpQi zvxYzTW4?Rtx%ce7&ptu>J6Zq55`%%!g94O#xp^o{>G6{%PRjP)u#2C?So)N$N>Z3w zK8{t&a?RnCnp2KWv4XQ`Mo!=E}?(tZfK-zQ>6VU#Ea0qKg>2s^e= zk+e!1s#zxVk>}kMJ0-+K`PYEA0nrpYOkIYc!6rW#KPYi^jdti4m2wJAZTjwB;hk6JDSOBpWv4lyL`g4t$( zcgHN_-+NUwbJMJrG34DrL-da=R_)0*SY|=9A9g);=`A%m04D{U|263mUQ6&`T zS8SC}<*%jR0E1<0xd8ip!uJ{Sxw~o%$GtzHKOdtH5AK$dc`2*bZ|Li2d{L*6A z1v~ruNY&PGzU4HItUJG5dw9oVH(E=ZFjP!FoDyCq7_M~bPN28Yz5(maF-T)8j}|Y{ zZCjm9CMrEj*FHR=baWMWBaqLd2zeF#YuuWPXt($YVYB^KL&z+&Mv;OB77PMK@)CeV z-+C9LeL(=dwpflxdr7ZL08_MsY1*pGeQBdyNLgEKsZOXj8y~kzn^A%Yr>U*7jPldn zK5R97Zs(J7wd8jq`ToaIl~5f_v3?aBAFeairNwM?$Ui8+@Y-s($nd|gDiLgL$z#3J zhRFo*@yB=oR-`DIK+@4$VkV2q(a!&*#t=)eW!BZ5tkC_<9Qu?dk<_u~cqkd^}Jbv9O>5t1`_r-DIescds{Z~e*7gqUQ`7> zAiknC<03kG7NWmesW1xKs>`UFP|>Q|lG`?cOMd3PZJ9AItyEnpr^RJZ4 z3@^I}T0gZRdl#o-sGrQLAij@5I}3Zzxc!A4iTC({H0qzSJGI@5B%aqdQ8zb0!odHDICU6h4A~ z6YD(WJt#Fcab`>DdkHF%tEShrc#ToPC~eYo124lj^JnOUhpcP0a|-?3C;sl`M0#_^ zOG=SI1Zb-)kISLw1kAZ(!fI*A%@ciLM`ff?=02V`;7!rx8pBRw&Jg~XLUc} z!TS;Kd4Jcve(fMEGr*!oVcHb_YoFl#Xsb(UHe_FAUo?P`8(e4B6<^*-P(J5sE1g*< z-z`Z%eaoJ;(sF5#hqwKRb+dke}eE9qq zmc!q1bl>&5QG7X4MNMY>3I8P%S(CSrLdN)7d_t~E^45L| z-M2kX#YNQoC{1z(XSk&6X=9LVPE^LK6lx^k(sy;qhH8Fb9_!8L#(g~Qq_l>myuRCk z(Y|%ik33ik-y*76U-`g@4|9In!ITKpu9Yi%s5!CSO8YG774|73F3$gIG@}7ZyOLH|^gEX!0g1T~w zpth3QI_U~;y%0e061ztVO#?1qR?QZf!aPU7S{=tMR#UWV`dGDiZAvR;R|@m^(PT>U z(;IDq>4FR5`^=*|c%y%s`B$EmzFMK+a_nuICm8qs(kmP=fv{z{(!G&e_6YvJS0pwC zc01-x*#3iQxv?W!!ct>mfdlb>9u*EBo6TD`ME|=&u#KX?a9_@hXq( zX1ul@yN2l?q5OL#qXNpD+a2^HTg%gDpMw`~d8`!4W9<*&~+^Ay9HQ9Ko;ls|$9e3um7^UcMaX zt!}PQYOdF)Um{!bwdWvNtn*oneR&FJe;quQ<;1P2{o;8qLnY(3;bql&ihJxMC%q0u zHN*n-4KHRKM64fthH9SVJ}`UT|1$_;oHnmQ{I>Q>JSzO-a%bB9TES;j63Hi;6&Lkr zlGALVAf?0%6wnU^{TrI_a$Hw1X9%V732)stK?T~OJ69oo^Hr|zSMDBx8X%$ncEkG;w~%^OG}!wwkqNb&U@li3+^2Q-Cqhg3O znqNz093Htla~+%9g7SIm-tGM>i|l_j+fI1w{m%P|smx9Lk;HtAjST|Uo0){Ba#S7v>#9>%H0!BMa+GjoGh z_vhcW8kiY*+^wW!X2bS^`cNEI?pW}f)uW-jJ>|N678Oe^dmfinIU zsM4=gAOjotC3^I)CYSrBR!NRxJP-&breKWzuinJ~eWP(4Y4Ql%T`SZGdsFfyZD{Y1 zH17I>lA+9^Dm$_%@@A)!1!uiNU%1`pStie!tM7e2-P2a<<=bTY?@;q2>aoV!^Bfd4 zt2L4R@$$nDup5=<`>EzB(bpIT0xbXC3Y6_c#~yaVm!K&8{1`qZruc6_S*(PS-q+hr z4NeOS(yDVIis4HA$RJKDteb40_E)L_5@8dpgd1MzAqHsOh)0HrSHw|3pz@snj;)+A zDyd~JVICdWbQ%iCGaE*(X?$PMW-AEzkm2ESGSgWuOlnZQzu85JB~7jjSSw8@QnDK@ zd0chl5tQnJew=1;%=X>Mr~2%7%B$rec>eF*!an z&PfFz>SL=U@G0n)fItm==M21swySPxg=Te0gufyxR~3&189X3|m`Cx#O%yMdI6=SD z6BoWGg(2z;zMHDInqXZS^6^u{xmtzd(h%ZN(Qf#8It0##zTH52izE|kbw&{b!NW@5~v96OR$*2 zCZCKre@{`Yj+?b$u-LdX6DiqoX?kL+^Xfve!aT+#eAhB<3J2!VF#t$d?}y8lJPKswh@gsQ{K)L~s^Q`QI|?bIdPodMAkmNm|DZpw6%Gmk92rfA=##X)~e*%3hEIDO0xYM%{YEj`;-h#rYj zLQ*fk6!zg+14BZFidNE5(T;+LomH&%w1Q=ARQK%M zz$RMc-sW+j9Rvd1h}YfNbY3u*n}TfN-I(}t9L0lp?Sj#rbaaWbn+(a)?JsG@V}cr+ zeX98u8fGnFF52K6Z*7s-F9WAwf3y3;m2$EkM@is_kER*GfXC02hoP?R=pA!7uGH|BQgB zjN4Lj5d^}Oz(%fuD+6P9heffFLuj$+O+lbg*&btkyhdsc!cF`SloLCfr1jErL*33e zwxw{}@!fu5?z9M+Tm(?o*J5Sd+GGXER-j9%gPbmm5)~zj4!~mQ?pY9(<3Huc{h~$* zlF3$De}|Xvf;Z6fX;TJE6g8r$IasQ;FQ0u|@oG`a9mik>6@v{1j( zq3UC@p@hb6xU_bv2JeC-h?v{L7O21F=pI*&Ul2k%;tK1oY#$Z6khV5VAy3;o09?~G@PUkG2LLBxz$LxJG^MDf)M89ziS zzfr{snKD*9Kb9W%VB3K3kL74uq$E`K_V^`3{+QtxhKms4d zfI!8%dL4WU1a&VDF?t?rcMM0MpM5{xkC>LlT*%o!4EsJ>&hV7V4KoM40$Gk9L2h5a z&cGil5);owG3mj;ux2-OdRixheuxVr{z%F4vCz@F`Tw;54el*F&HjpcB}*E`@~=QE z)w^Uu=Qc=ht$I)YP~{9~3Rxv(N4$ISeR#Z3gsOFp3bMUaR9eD{6x8`O8BtAzCPUtY z_kK%|-=uRTA2p=orWa+medcL(ZEgB~zDZLrmy_!1ij1mAFbM-)F-Gf;(w+8MIsw}~ zJ|69&hr=XvGlJwbZKl$l^S{e-P)?Ef7fNP&W(Ed2Mmjotf~5Zz2G$jb_zltUv&uVg z*NU?hBSu1(x#R68vH%B^pg)G=!dC>V=#td2z$nJZzPlU1&PaO@FkC2Ax59M})lEzQ z=SD`WCCYL-H>y;8OuOi&B*Y2*yLont_#M{UC$qtb%O}v>Fm8F0{Qy(J@`?Pr;^cQY zQG9_;vr-KLc?HLz4X@r{K11ONUYMp-{82uvet(Nd-|RQS*zj{z8D)H9op<{m3m39I zw%SFsgnU&tSaOf$_ZxpyTYVal_9(61xH-~WUQEIvq8Mn^H(S?-5JZqHWZQ(VfOs%o znGDM-dgpPQIJr7d;)6~W|NLx^Y~?EJJV;-D;;D3t;domSFPkakR|QIF5qA$EDgmQty>!lLqm@uh1c75HSy01@Qd7?0Z`l-5^?>5(LC*9 zW?51a_4{Xz^=XPI3+bL0v@gE9YktQBkfgWjrL{$s3qPkyf>$L5P z-n{tM_m8T`Ht5o!c83baND+1%^6h-!X40*Z! zJlcTvdVTMD3&jV^l>Yge4Db{+X7yoG^CvTzf}{bzf3I>y^dGU?zxS*@r>#hQB#zWN z-St+`lE0gj6Tne|_JFPal}%Ox$WPe8XRf79SpXgGsrA8aWFNbrT#o?$bWsvie@wd} z%SFSGMvRRooab;)u@GiWw&0bH3bG_5RlYp#Ny2=Z`u<*NXMuhjODi8Kotdn zsOv;y9}z*Kn~f#m>=G1Arj0VQf?KI+a)0Dz6lfk{*|y z0I_0E0UVDTd^1Wvj=&Xgr#Ne_MHzB)oEt{Be~D6tE(l2+WgL@8si-nzho8HwpP$|xk0}h{Xa^*JR>@}ay)bQ=pSTi za_6c0x{rdF5zcwI0JYl29NuAF?8&(`S#AVeO8mn(A5dhq zM^V9!NTpZ_qbw{>!<+G2WuuJHB^2>q*P3-|^F!E7Z+23p%vgXDe|2lOF?xh2?IKAd zye)G_O_swr^Du*DDB{{qfV$>6nwmz}_@!9PV{v@g_Q?7d1De7Xd1hw%x*WRipPbGv z@ICL4{U%x?)9wkBJJ3sBA&c=MQb>`%wjDh=T=#|+uzsYX__*F5)EpP6J8Ap@3pIl@ zOCKN>Ou#`i$^yO)7`D;5m3TeT+ zWkImcJxN#4{t$?$ZwN#C`Gp?O$HM_4yuaNv;WJUDwsdzMaMrR>=Ykm)m=+M0#9CrD zqEs%^+VT}^wqd_|pi++-SxbLSwz@txArOmYV(DD#blMH*tEz|n0Jt&XDK~2pl$SFuo9ih^NW<5HuJgJTw z@Udt+FFF$q0Z7;j&4>MOq?B|U$TH*c@O4!Vzm5F)qXzi2Q{8#|?qGkr`8||VmG*~} zI8?VylObU;@9!^}Tv3&@DO2kIP;}~~eit?Td?e5bb(0Jg@PDsSIt;D;ygl z2?58s-tMj+-n$cVTH}1j(iUm4n%DxkT(|AV(~&?*+P2LhKYC(>3p-KUQs@f<#gE%3O;2hNIR$fp-F-Btd-*q+Qebjy z1V4KaCTKM5e3rChFGpT5)Lc2Sgq+_SN_ z^$obOg1X$aeG~g#s_t*PSdN6|g$&fvH)o8*Z+>SwQqMlT4b0jTRpAsm+yv8Nk_t7k zeC?%YtW)yrJkft_R@EFQ3OtDVl>1VG3nR>0_o{fxc-S-6@#$%?z3w46bx1#BX(+AM zcD9HV&G5^xC~9R~keOBqXz58mi}{0Z>5c3TIuV~tlNy0lCY zOB^D{yAt(3^|YTGl4u<3k8iM${ob6NJ69MqyWTG`wRVu7ot?gN7(EYZR6CS@EtZLa zA99Tuet{XzcwfWIBS67@w~>>{0pSzy2Bu-)I>1Ot&{*AM78k zYJm+8a&Ed>1xh7d{HU~tW{sB3$AFOD9KYJ8RgcvQyb>Y9?@-ghLRJgzG7b&(_dOkN zj5v6W10kBsgIB&7=$%xWogfW7$S;%jEY%0b4#`?sIbYTvcmH@7C(+c}G?13_+e^*XWY9s!x?3qdw4asgcmxQsmXkQHZc#m0g#}Vq{ z)^6HVV%w$qTE^U8+XIK;bCa)~0%cWr3oQXa^z=bh>I>dZ&(&+yP;Z`s^<1VTQZBs} z-W>702(Ks#AP4Gp8_C?&Jz(6>aQbAL{8Mb?XP>LXi_CHftP3I|XD@}e-KCARBkocz zE@AVLKB^ZV6Fr-JFm^=p#7wEAq_z#$CJXU%6$!`3$G-a}KIw8YGnJC_3)kNFcJV|% z4jcJ#%aN+v^H(`fyh0?ccNvoRAZU2ZrUdZPy|Bt(bX5%vc@0Ht<*InBB>-nJkrxY2 z_EoR~3e`XE7urJ~u;*Mz^BcnbZai-&w0sd=z;@K=Cty1WCPT)F$BFm$ln5X976QkT#zlZlE z5R-W7rCfBOmAZ;O3h=L!n zTWd#pwDW6^|NoX2D7HhxBcBT7xNMN#aXAAj4CO?e6hSC8nH;&+g>_n2#D|zN8Y)0= z5RakE`PnGavz~s_CWXjqrb2I_?cVazp_3HnS?g_pt=ZoduMQ!ac{^p?p$0d)t(6K* z#Hy}qodsf#`uSb}Xs`=@;l<;i3$OEPEle8u-9goM$n$q-F*j}|F&_7Dwu+BgxVzm5 zy!Bb?5-UvDsz~{A=L{e7xS`8p>r$jGNFw{-+xEt|$zUF-2~EC8v`(!Rq@^;;B3gL) zibR^+R}Z~GHjWHUSfP2S0y#*LukJ7jVclOrzR!NqW4Q0|oLCB(m%j*ed^d7^`=J)N zkqBZmAIMtTCudhx^WdOvy*ioDT^lflOE{<&M#vZtpd?PmxLLny< zOetrSt~U;)JjU94$$e(GRM|Z=l)KKeSQ0?Y^&_Y1Wq<;IJH7SaxNpPmHf{OX+ro3) za_JZ3S?9B(Pq2gL#dm>O{KM9@iGDGVgsQ#hd;l(fT~5Gn+1o4ph@v*?#0uo_Cby4M z=3kq?cg{zpY3p<(QmyYDaY#MM$jYmfxM@-*Y;GKp66&{`_24hg!yMhJP`)hxjvf>k z6P!6{rI>0+29%$Z#(2q~mfDB^qIs3)1xb|M z-Mqb4Oq*d><<)*mf$pt~tn{1C(lzXKTrZKOfWcIbmWCp?_ zuHw(#Dv>?WnX-i(2k&f1%wWl;L{4pXA^iL?BWcpV8$BK2&us=?kM_3V!Xm?I+>RX= z6oerUxkbv(+DpGf2QmvyzxL+o*;u&Q>J4qm84&*qM(O|L8!&4F`|;i?PejnSzbn=s zyj0uLs_7tu_|~${sHX2GrVQfV>6zw;`x)xhe_|GJI#_v-Xg48IQ%8`^jd&*9&*>s~3P#fSP;LLSuun5Ko9k_` zsY&02315j=2A8Z~6|XPMzBSEl|8cGFk!@X)(_z7OE$_Jf2EGfxNTqN(RNDg}S^KD> z?f&j=Y%k}lG@422D#cv#KJo3W4!wN%*vz=|l_PcVBM(ILY6iQt19xY?&gHO7ba|v= zupt*v5tV%Y^M^_U`hX`fwud*!X@!f5AKkHr>RKlm*W-AlhG)huA^Z=zGITWM2kksY zjH`U^ui&in**2#P<#asxmAWX-mCe1M%fwMlmTnECuzE?oL-qp7=goB{4paCDQgamM z{xcPdROLV=u)`Jb!zD^pk~|h3mauUp1`3Lg7ux*KyAv|~)5mLdjx$>C>+R>A&bQp6 zGldSXA8l1giYV2+ZO$@WSbjYeJnOJ>lo%0)i*fGPR0j^G=grO%TX4G7)|`dL|Cu41 zk7#`COpSpQ9Jli|d*?2uE^eN5F}~J68H#T_Y_4%~+d>N0*Gf+V-*8@S-7+c<^L(E; z`5hW>jbeblIu-bLvk(iJ$8UZRPbi?Zb?r1uf#i_gwpDUypUaxmWq)o3fR8h|OVvu< z-HGb#acD&-UBn%OYV@#98a}|J>a4#6oGk#FN^jCJtGSC~?;!~Lw;|UPv<{dC*@$kn z5K}3TUSpB?AD_-Gab5|3R7a4{%jTyRq?Dyd+T1et@$^(%cg|H0?N|$SWezl~$-h<1 zwnJOD2ZU|m8Ov3KoRV(zf!}T@{Zu=h&GVS>2bLCfLS7RqWbv}tu7sLwS80$r ztj~0E-wlvF>N^0={D2x!B6qCCj}IhTIu*Z}j}p{j$O;0L;fHTQFQ&|4#cKWa2HJ%a zDT4((w3<-s+P$w!`}Yh*E1KM5(3xFDQW4j+Suvc@_wc&)Nxc2jAF@JnRxSa+d-3?a zCLkiUb)?gJbh_>dArd*9K96ZR?ta}uS|{W!7S0o%j;?f>aW?_RCy4VuF>m!dyw0e4 zS$`A}uE0&<+P>x2&G_6EbXKAycC^(4`o`T{=W%A1L_#s1tcZXOJPLOa{w&Gy=fp|} zB8hkG1BO(gh*Sa*8Oym}m0vhT!8xq=SK7Up>g?f9ibJSg7d2I#QTM|wZEMSq-D)IW zbI@%j-n@Qar0+u~h9k$@in_hSOdT;h2w%VJsIA!F37{`Tnt@-?Km0N+ug0xJ_D9cu;6ghjJ3mwT89=h+ zf3nuEK+An7B;sXy4F})xSZ}kpeAKwNc;uwxR_Ffh6X1>?GXi zo8^Xg%i;-I5l!yFOGa}_7oY?W{47` zUolZU$p9WJn%Q^dhr&$(UP8T8;&Cf$*p$6kO%|YYR7wF^w0;GPz}NgQIo$K}d@g4C zxFMY?R<0lrf>M?;z;q)A8L=jt8304Q2pRD~qBP)8abq}k_UJ3nH*(aVK5rj7l%P}h zLT|+H(gn&(LfHEC%9HQcPLVK}V*p;b zvHKHO>TLr@bOxV76E?`yTz$_r{)*#D0EMu$fiAp_{OzKPy%k*JR9+Ay8dr?+OfydA z>|=F&`7-0-K80T7Xe;B`VY9q}r*S*2o#wbJ)FlnSV*&r!v+d9L&;k@ zU#XCDemhd#Tkt$dOUmQ%>>9xgChc;Y;Mob}h@v8~tPnbj0XliGKThMU)n;%Zz-}2pOzS7fxjqT zIq4MSt4|gylE%WJr87tdD4a$3HkQT;1xtKD6h}{sQY@J3eB}M=qaegXQXHV`ptZCEaWB%-VLm)3N;9 zd~6B;{EILsaAf?S#7>l#*fN$wh58`IOAL)1-CAXm76f0JTb;u9@I#|8}|E zsD2YjYfJ90Z~{w8Y^ybjRjnr(Ad00k`?zSqKt%4ly{nZ4rkY&xL)1&Z&|mPkDi*4h zs=bSBViZ!R$EzT7T>hF^z2@WzkZ6=Zu;D~X_N<=D(|~33Um@oNV2(TTz7G|riIWD@ zVHXXIjUT}D$duS2T`Idk%z`__v3|&B`@-i*2K@Q~$DyE(EV_3~Sw`E;LKO=Qf~V2# znq=id>Im?|fv3d)LN=#{iX_x%AmSv%%qrAqXc9Oeu zA!Y`q<_I?uH?)4RS3ib;{VnH8iVNF$8iA>qVLLDOF$Gt-i20nlJ;V@5HA}g9w#Msr zVGb;WTqW}g{q0|4pCczMR1FX2ZVscvEFJ}1?766q{pfS=nNYJ}D z=deh-B3;jf#tHUrU%#}|f#&Puy{*4=3Qe_UfBycs_)MH*5wNU`3L?Dl+v${uu0K$? zH~HiUzx}!9w~aoP{?kUN&*4ew>EyauGpENR@&^c1=nz1~cu(UFH*;JYy0}@Dkitqg z>`&BFSrs!alSqZU57>Wzq-~V=n-IJ0$>u3<4`$SP4;7T?>-5l{eUax+AYZXL&U*~~ z@xq5}xoyR2VIYAxTCbhB`Ehg;Ks`cU_+0K!ugxvnvV^rEz_@43UzB8~_KNB5z(j>-j$8 zQ*Nv@HBPK}E=Swshxp9YL+GpV>Ib+v3?LdVcLj=O>XB}IR|iwTArB2%-dccEz+|Cn z*+Lb@Uo$falcQ<%4geF3x*s^Ulkv2AGL9vD7#|!BcA+6Chr1p<%<*l{AR>R>@OgPR z>3}s|;Ikj4U_fi=flt~qK{;cqbHzaWm!l=^O>))R-yfkKBjH?+kR7tH3AY`@gC_rx z0FhV2O7sGhZ4JLoCDMkD^*Uoeu1`AvV;PA&OrA?jR%x z2&CAm5tCFmu=oV_T1ctpVZ`x&BnFMzkMUGURqlbW3;S>NxZ|Ol-Ep6v2>vc6w$%J) z{TqC-m(8Q(AX&LF`t#DtlMy5?CaT)=tte{!C7>7LJ4abu<^AVXH^X8hG>;v0o+cNItcrY(Srn_>c>%t9s7 zTDYwPOGMdgn7$n>87fH<+BYM6#>N{cL)Ei_${$Q9l|@eY9<(C%(^b~%L$k;6?8fTq zR1?%MELJtHtEl<1$I;B+`u?^@)1E8Uj&)bH>SbcVvf#?QrR>#*b=={X*PlO)+5lll zk@PXaIartG`5Gzz6NN@^JX+%?W(~Rxv|#ySWy{*s>vA9oy7C7N8v>?1{6T%jRq5$^ zh=d)0UyY&#Ai)A!w@ulJAJ_lR?(-<0~EI0>Ap z8eR$}oQ`F71*oyN^e^mwJU%ilxL0^#7%u!Q3<6?HGw!*8uA`}EOkl0+EhV!0=jm>p zU}W_kF<}QuECYSR>g>gU2yefyB4l3KfgAXm&(+T&GK`| z9NZ^s_QeVw@F5N-rACzo+@F_^7OYzwGqA~?|0O$S!1maF-L#62ktV!ri&e`OKm3pk zOZ5sNybDNsW_%og_+gX?Xx|=~$GS1=G-SQ}^ydzPa2%!)U_mf*-If}Eu|Qi^&e`4h zWx$J(f-l(pJ>HxXE(nxGV|F)@W}z|Ep6P1U6=9RccI>3aeXtE-siG& zo2vU?zd>{7SGee>sh=n`hr5X*hTZt6r3aMwJ#fTE|F0OT+TE7*e!=B+B8n1Sy^*x`TG|?v?ZfLlt7_C+o?C z+8=kkxVrzYS6&9Trb&b0-M^XM7V z#rUqQ$fbJL^=<@!na+`9q!?X^SSA1xNRnA^K8}-?JtJ5~?t^i$>KVUFVxR2tlHs7S zOM@<8_p|QUfS653PM!>;nc4IiqO<)6`1k7U?c;E{>1er-F~l_61aZ`m85gLb&iFXz#?-rbsD zF(Z_+=CyiEQV$@3up}zfzt*D~FE!{oq1wG=&9+}|;& zn$!L@qwfB@{IK1T>k@FqL(&B`@FiOz|quVd>Sa0$P|e6OC59tliD`EAS{lOh;N9nI{RWZr%L zNc=AT3+UUBZU5v-PEJ3Zyw%})8h|vXv?-0I8623&a+roHjPUhRuMRr8i&1LJZsQ{} zhVEzCKJ|W&NAq%WiUkB44Gq%8F-h^bNw@@wj~d0wzq+~{X#3>xb?9)}fZYl{+&aRZ zD%veo(z4C&m7#N8bM$iDBSZwLrc2C}5;WNzM`0j^%%9>_sp5b{&vh}HT6W_M#9bA0VuUrAbN014>w-PE7^Z<%*NM>ep!h=%z~d%0t4MLPI4Gb=CX zo0hHbz2^U3D@r%UjX|J#v-$dULhkG(7~V+T2qBHeyM`h4=C~!n{;k7Xpx=ws!r)=# z7~+xGH4~zg?)$jXadGm>p^lZ@vp~btrlNNm&_b`wF`rnjCdfl>54~3s05InSbxSTa zD$#;wwhX^q>9$KNdyX2%Q5;cme(S_SMXCcp{#*d$Z@pCCVK7ex5gCC_*7&S8PEf@W zcJQ)LoPr6clGzvYG?ta{o;g<^#qT;E=lf(rZJy@zmtw9gfc1J1)-0skt=ZvJ*wJbg zvsE7m|GJ-%sY``s1wTy!n@07Pvwg~pkCfP82hX1gG4@# zj8*ZCTZTN%*B_s-4d~WRZ`#_PBGWht!qSluu|qmH9ldl(pWSq5P)jJdLp~Z-!N52| zL5I_h8NIt0zZ(NPMTGZjS^h+q4k|YISx&4XovM*+yJkkEyqS~YwA$O;{)lxdBc87E zp)a)E$9xKai?7??pbHG!1sL~>?0a9uGTt--Gi5P?vJwc)x&?h*&D)Q2au0=dKbFe> zj?V1}e$lfXl~k;7xh3y)FUR%1(HOd2$H%!lc=bIOwKR!4;-tR#jFj}oZX(xMFt?92 zT0@3@$m1%eI|M_RS!=m;b3n#r&fV(xs9S0f#m!30-dXX2j+y%dAzkFN?ueBbo{Aq|Bw(TS!f@y z<<_ubA1YH@K{X9mkupBHsHPN5v1hZiQ~!t}1p-=3$)${}v2OjTLRy>a#3i{fpb3xP zX`pM}$3d59P9X-0<3Bbps>@%S`R@h2`5GT=72AoA;!27x=Q1N!VUghCTnz+;{$oWR zodAH1AHh%=lSg`1h>eX^Jz1hnp#EV+3%9Z-($akDqGa_1o-}O+a z9lfv6(tY?hyQ=jo{F^CJyFbQ5h*(O;dGXbjT9NjTNi?6AS@>!*xC1UqNkkto0wQ-I zRqLvMGPHuOTYOSS{+#I)w?-at*1g!i_QABL(wu8JI(~32U+u+Pub=0wR6B?jxSn|( z0DeQMxwT@a^D3FAeg587pdxkQcwzA%eBWG8_xg#Pbb09R1|7c6j9TW9dPa}=;d;9+ zfUEf4LOzP%g+a;*gI6I4bULMWUS95fFAdfzB!(>)qeXoPiFmbX7lHSdZ}Gl0A!Hw& zr;8ynFe-eB_$}z$2QSP^qeJ;t*KEysHSvVP1^$MOtqzZoS82{aenJ7@uc4VoB{;_~ zWLT}Wk{N9Nw`125wdD0bEKX6=GjGh&Gv$mj&mYe}n%IrueXK3p9?;wY8#9L?g5<4< z0=u-|@PCYAbae_~;ft01K){l&)!4*6Cz4tdMm&H*q?%9S&nHu%j~|({%Y!L65Bs)> zkLn{XkO((rUBb@y&pYH6?x996~Yt?gf zEW_>JZoLdEREiAvk}uXo#`~eg>v9*GMpR71p7O`E8fRCqK1P!1KJsv`c1%YGvta*B zP8eDb;dAHzz@`S}!qTFw_=V5p^Tx8Tc+%D8xsT#HQP?b)+0O@3sV7;ERq(u}Gc1q< zdEWk{SdJV6Uy22AUAa@-F2$oqQ~y!ZPEyMlf4n|v$25B?GGNS$wrUx z=>)idT~hOJd7-+u&*u(fBVQuuzVDNYb{I2|0Jkn&(8{EPdDg}jY=_|8TXig~DXW7P zeaQYZPkan^8@c+yeP?<-W&v~#6J*Jj`{2<{{547B}UrJJlyIWguiEpKcy`%nJddxJahjp`|6e)5J=-#(T&P) zwc4q$9R8K`g?k#-bO1NXOP;oA6mXxWs%ml?4JhS$e(B}2sHRf)O&vj)8feVMG%2I1>CKsYm;(KzPItuEo4f$&XH8!3|9kV z46dIl9wCTIc*aluiR2~I#s{e!?=GZfm_0U6wg$CMf-mcNtTuYOr))TUGUYsd1TcIy zRx*e+q9J^++PLjZem9A@*o6uoIe~7FUvT$h&FQR&nop@5`7eI|yY3Kc(*4UOt%+_% zt?HtKue?-mruYb7)8zSk>dLz&;8=kb0T!nBb%vt$FLFY#q$Ghi!`T;57$Rux40kA` zt-bvIq+_wQo#dtuW~sJ&xr~y0xo2%L#uq&-3}*}ZyW+0x9JQ}^_y;=r5)hU>v@AS4 zEVL{f0G|&n>Hq$0(Jj7E8^J>XZ|?0K?QI>AVNJGu240TGzwI*x=^Z?8^~I4lOOrpszSBi`i6 zPM9Es{Rw#k4f06+(CMqe$ zZfp^|;pZ-nl!!(?xR%x~pH>Q>_H5+Sy1i|D;nm2HPU=Cujan<9;3$t1iNK*M<%qdbW6{#$dLW`M*{SKJ9N`;1R2{u zK>{-vNA`<3m#aaAC&-@;Un-;Lr8sf65r?V_yg4V|fguA(Ff&^CuZ5~ZhafQ}N;RN~ zU8YoACI0W)zNv(2Ijn#>Z5QCSKp-S6RcrCRsetXnsi2qcFJ6TF2$q@?xZ)Yq-i$O0 zVx;lw2`;2dXPAj%kZrhhJaje4!(ijU=fCgOQK(D8XcY-YI91sVg|qA``wSfbpfcCfeW}9+=Qg zUUc@aZjvydNvL$+N9=zA;W1b1!ErV_21A>$~KE2(k#8&U;t?su?sQNMQZ z%M0%OPZ?lv0vM8z22KG()aoMnczBx25^%v?S0^WDCl}TW7XeQQ9i$oh`b%w&*X+oC z@k#Z^O>R1W*VZ5c+?k6_9U|2#6XmT9l^KE;R?3S>5NWNeu?bf3YskpCHAM!y)hSyv zbGkY%-qqgiA?Cf3e=%&-0c=Kt>`uJBLr1=I4*IvOXD25>rFL31mY|e3q@6!xOv&a| zeXuP*BU;*LIA)_f83v-3dhxDBV0afS6-i@q?C{b*a25dsh{+f9*>u&CmyA|L)D{V# zOiT^W*VJ0-pC(Vb5cJya#j*Vh25G)ZN@{!04MbcdSryX*o%~u_L}o(yC!Q^(X(37V z6%_`eAyImQt$r;nzKcSF0Ain;`!j1KS(NWDIJ=<1@c^Xp4@vrY3`DK4v}R?MIw zCs#|Xi(+ZCb22?a@WYLmxaQwzaKOpgljkFhB}j~Z?4v9%sk;q5rkDZuzhfIP3%~qK z1<2ymo^Wy%t=Ncuan{vwK0hBoJT$+~5cep#lM5iQQw*}2{)i0oIc_a+x2~_9o1V5l ztc0pVq0s45o6_2-CIV*F_qVOJ409D;uI;><#wzOQ=e@$up9`m3bW%n_CGvfJ zL%T?f`MvKl0VTHohmf%lO7=y>?3;*?hYT?PeK&D^h^GC_ZDom#3c2EG*#ZceloAg( z0kh+LJJI~tnwk?^IrB}BcKK0i{PS=kj`CCuHOBEqj1S?I zj4Z4gX59YTQW!C@3o;5x)THs?-P;+HEHj8*d@+?J6(sZBxuXZwunr8Mp7*r#=Nb1W@9x`z;Gmh_0m<@1&<3 z9Xp68UV{a$6cnMR6pi*+pPPKgInzG_BtYk2QIX&vanbN7I3!p^IHWyzpO3l;b{H6a zOa!Qe#A#ldLN1VyGLxY9{qA{HN*X;Tk>JPXB80LHIND3pq-kkYY1!aN>F5Z{Nm?`h z`J^z}x>hULQZ^*W!qgN&c;(C)6$RxS8g&{*AH&fG970$;)RW))&AZF0Rs7-|%xM`6 zEJ-C5V;{pX`8ZS)QJ zlgJ)alwO>I*^7I%y8fqj1zjDd)`EhPT{mNCX=UvpTlWDPLqTILt=+#}JqI062H&aa zxydms*+T;+&o-|g>kKp4Ui!X(0?LN3PfyDS{0%DSOMYPJIOu(qlEY^rhFL-qJru)t z^S(O^8g5IU6NjWuVWXxlaF;n={h_Kw-+T9r>@uyQ;h<-(8yGNYD-^;mf)zTlQ@6C* zrpvWLRzT3t>l={C$%Y%jReA!8K`E543{o%r(~sDmPV9U2ni>YR7a~2wySk~{+F3ff zxa7Sqk>#Ppi|n{m+34o4>h|0?XX_7n`kXprNOsqo-^D z*TWntf(V0v85$OY!%M?XPfE&)>-k++$YUG^4igeG!mRC*6_lf$-{D9`cd|Q0mb9k; z^VOlLBNw&%QmPXL6)NJyMiw2|Pedf2 zsfl0^PQL94e=>9VLjVJ_1|=p%=Axh1=lIlU_s6_&%tumcCCW;jEhn8W7bEJ*$Y>K zB;_HBn}5hlNCwCFNsHq8hva{!LHvEO*bCz$|N z+O~jbMcxaf1VKBpNXlY7qim>B=!b+U+eK`CN#rm z9*@n6`wI7EhNX`eV8V3n;1BpbN=Bhv76OY=)xx3{R^AgCjrl#ig(?kAbwIz&=NHNC zHy`2rwfBl;+XE_LZi$l=2&;G{>|PTFzPeNwzkvSk@b&P|+W5$sV(T&h!-ar<3^$1p4ptrp5gCU) zapx?l)4O@sE3M9{3QKuw=s`%BM9qLX$-VKWuBU*FU8;VXHM32RiJ_c&$<8XVi#eo! zn+D&%g*cHCrtn%E<4^24-u>#X7C+S3G+I0s(Z$onX9FNst`dvj=8n{uyi{c~df9JD z%5G$SC`Z8S6spkcJl?~rN)ml>WZ@&d&JxAP_$mrcQx+G+5g#_hrc9j^!EziE01dPuFc%KP)bLVn&*0iWflccPy?bn(- zE$p4^`e8*up+zs%?N1%-M4Ub8W80V5>+4eMu3UX)EL=3l4f2Rqg(}4=?8Ai;`pz)) z520!rKPTCU1r$~le=RR49$sv1d46mSIWLg6y++YfwNpA9&hJAmb^4yBuu^{eE5|gI zX~d5IqaWeB8I)KfKKPe2FViRmjo&FLC*MrtEAqWODG)?0=*JU=3U5S9J961OzMtdC z>_jj>{t?~E60DzAA^(jBwiWj;s4wJc=Nr5~QQfS6JO+zrHxQcFHFw&r@LH~JPGB-E z`tOeNOD@UtutQ1a)Xu7V61or}w=~w|B87Hol*&2gpOZ_`eZJFPVEt%xRg_FEYx8|N z?tdZ?H9TjrGw_}tvCC|3F(&L=v432k8WQj$FqH@=OPDt`;7jqO*|{#f0RkdB4;fAA z!YbDR1;qpA0OjW8$J&}#`P_8H6ub3onpwk;1$$~FWrA|mOd3Ek8M5F^z4fXD?#>UJ z$rFGaHM0i+R1n7q><~gl#7&s(T%-DpfQ~;>I9VJGJ8qO%QS1-~YpMuo959X`RgNTX zkQ|Uz7fl`_(1!l(MIv?~)1tS>9O30;thoai`7+||YC7d5DRh7ZUZ$eGh0+oM5=@v8 zXb^#NZ6thrOIh1MjtD8KtAJHoD#wHBD@Xb*ZiB{JiLKRi2}YPil1{0M7J~%_9HbHJ zkM09_ZX1QjzcF}N7Y7FuMzynZPaG-8gU$+gH|{uA6YK-X6zO5L`OijIgb&$7!DKM1 z{lL;fv>HkhO~P^m%w@3Fxafg65g?FoN&d`#GNr`_get6%Kas0sm3z%c6qb0#gQ5LK z{Mv2v(`m!VmNQ`opv?M2qJ?(4Kg7g*CjT&3gOp&>z61Aud*|Uh4L;ICm!z!WFCHDn zgmu+F!*iQq8(G;f432yJ>={{$Uxg@bXNfnt3t_@GY zhKs+0)Q$s zV%ofdv>msal?RFf9R_78G<({qPsfx|EkkB?!l1t(A?8!*Tor8t45)-&BNZGuxM1l# zC24k^A0pz*F8pXnt!v*V0WnCvLAm|>ue5Z;F)Lry1mSYW#R_WdoGEH{A>gVpptt{n zoPN=xAS3m)4w&TBDgWREU-1`P!$__>!Vm}Vc=t;&#lj3@)<#tSc3V$8WKHl}{D24Z z3bm4CLA6Nu1T29-aVcvftBLt~)@J~9ou%;Uu}fydL#M2_NYl{ZL&3yS<2plK_>;N7(;P2~W#;Z_D!TcMqF%et)K<0R zKyMTfsv9l>dJD3U%TDIy9l7!4qY&Xj+x9wT#C?NhN>ymoXvI}cf=Bk8s(QcHAV5U` zdrHWa7lAs^*!GQ83xP7C%LveM*{R8lSvCBUlgI~XmzJ)}zzLjLt(fPuu3t8L z_#G&wGE<>!ou1yHBX2z?UpU?7yGYMu&%|WUnLhH(v!<$Fu)B= z^NXH|a^&QlJO}fZ$5vG}zok?;U%4DtJ&GggvreVPO2v#N33eD5LJtUv8R8T8R8O!7 z$&>{lIo$fpOt45F`VS92fO&)pBZeO+lsBdFm3sYuT!1w}z7aeh++R^p;bUeT>7x?) zJ$4Ogqh<+RmUT-rSx8AU@Tz!Q)2t#reJt3ivT7=nU?$m!IesxSD9Y zsrM@suYteQR1U5CxqJ|c$#B8HPSKSS7q{POfP;f~cLo7C^LOadH?KiPj=00XE~8P2 z8U7v41f(F6MzXFv^=7s`BaE~?q9YC7#)#{Y5t)t;$D0IQ3yzYBstn=l?S~JelTJS( zYb!Wb|6iYaCSxa%fqzTU?~V#OC`Y%M3m|Jdosa&go&E|Jy4?7YlT_|c$owckq|izGpWDPp0c&bOX-!Ry@?34Cgn9K6J`rb1&sNy??nV6HjmYUed!F8P z?Y@f>rckVLhr;Au^>x;b06WrR_P8Gk2v)hmON%)w<>_g->J)wAR<0(hswQ<3YtN&4 zgc}3lJv;C|i};Kw6Z;Nd^a#^?fSx?T9eGs1WR224Qrdc!z<10D?W&ohJAhqj&6!@W zQ#of=W096-MO%ScK4&#$m2S&f-uE>S3`7m;0Zt7FB$R7}Et0E*0(^%NL#8K;5y|B% zRRdg%g?iuG%Om=8U~O%swqOadeehack?NK**`{$9A+@8zTFuhsV@F_{^)T~MK}HZ}-pclvlGt^T+Laz6oyP6T!+@0j{9l9WBoh z%|%5y$K7_ta}c1v35V=~-}|wqAW74R6VI^}3K~w(o9ZTqh9|Mgi%ql?Ekyr zHXS@um`wRBG$<>boAn;TZ@!E|EgprCz=&SD=*Tm&LqRHyA=wl>D(F4LiM~97Z#0GM zz9>9daMOoH+86gQuYTm8ec%qOr`GKB&r_@p3be03;V7Q(%G3cc;^epx-7;J;ldnvL z_VrUx7!pzY>q^5AP3aor*^&+CP=V{e6U7LeDB!bRLB)_so%Waj3DEXN^f@*032aO( zC}Lxx4w*SG;%CJmr;lybe91T%U0UB#DrKil+P@%r%z;D-7hRiOoSmJ_QQ_p|q&_x{ zLZofhOUraE>@b*LZdWvCUa~<-p}M>>zIp5bIv|7>(d+lu_eZ@{PC)*)y|s0;wKcTQ zXPF>UKKHdw2k-#O!~_}D0pUk>q{5&onB*`^bd?70A^Yd~io_2@zQ9Q@z^Zy2;NShTP%=7QgYar*_b_8HXtHA@M7H?o8ba)f7};~ir10L=N| z^#sGhZ*sbTyZcj&B7AJ?3If2(8i3XJBld<>u1kiAy_h=MeKhR9f z>8FN=3l?U`7oroh7Pp6XpDClzC}Zy7vwy`eoBs{+bVkDG_f{;px~mvDS*Y~;2=06ER&)c4b{v4!iC|Di(yW+;Y5ibQpr}V+QN<=HvV3>C@$m z6SlSn2!3pk9)t<`(#OiwXw`mt0i~2e73$+XM8x6R>FrTjoS$BvvR}CPvi|N}bL$Bh zZjNkSd-4IF1AxNYcz5E`4h03J1^QgYSUEw!LV4D-*zeBB>2bR&=rNb?N(ke5{G1j_ z5{8hQ&Ejul%gI1Q%&U*nm69EB3GVFIka_V_tN?m{cdc6YMg51r{L?zxzbvN!Q!)=l z+SId)i~xMF-DvS#{LW%O@pAbNXTr?Bx;&!;*6q7*o80;Nw-Kz{hc(+jkO z_<+C<^)LQ@B<-GFfAa)!x(SiBi|E@DpJviAh&oX>GAKP8^_B0Bww#)O>oTMmoHM4~ZcwZ?Tb_6)Qz)X$q)L0d=VYmES)-y{ zrNPy*uzBghm@=>jr^C(}b1|}a^+gW|m(VoLkpY)P2L|GquJx=Y(1F9-eF!K;k$e3J zLMGLK)fL>?`L8)GulC2ou(}Z{&u~g{Mg86%hi?dxHmW*!c*mn={Q3 z0XO7pNWT%ySLT<(W?KPj-ccw}fPAsU&X4LDKxP9r%&P@tqQ=+)ey5uSG>U4Bt(Siv z_KN*vGdr7ItLNX;%ubtX?o>B`;dA!ymys`W8XAcNU+Ud23|9(WfvUn|x$}A!`yS*+ zK#sX(&l@+un$fpaSNC)^6?at^2cEFJt9ZK}R1Y&$@D{w!r(m(TIF@_~MU-b~xVKNC z?_kLG--9lFb`&OnTIq(MX`S}T9&4zG0aMD{NTFSnzJW%b+AJ3bN7KJYj1)ey2m9z_ z2!NBfVj{e$MHrY5nsZt!%To52Ch`*t`F%fRDBVS8Js_qtY^|;v550BArw`ljpXs{V zJ$+M9+xTUf?E%R@HU44}KsA*Lc02!h@XV}TS$&1HvYhFRgJakTyG2q*by1|nei412 zQ@0)wDI##x(mMhj3~WpIUr3vMTZm&B7u9{}2^xT)e)8%w;@sffTh`aUXA017{ z-RFnWL}K!KkE2c*F3bC(&=02@b!1#r=}ecIthV>NrEDvzKksR9$l_)blQ2_Kl4hmL zC>l8SOexNTc-VPFsS$uDO5S-{OU*8FNQ6QPC(6zy@PkGQ#~=Y(SGh|LgH#C?0d1F z$b+?s>P2ecLjmijJY8AqLCXa?YnNK5_BK5#x`b~8a|@bXvG7rSo~+F-e$)+xtsI6S zU4kOo^1-#ZAfX+X>wR8uk;YH|8WdOvQ0M@c92b)WE@H6L^+s4^*^&hWV)h7{v4Q}( zEuB#Zlxd_t4^VQV$-^mK;KW4) zfdJHl$tM~X<#m$@2|QSUHj4pwmx>d1Y4|C8ptY_x-(>qdwRWijsPyI;XfUPF9Ge1P z^)ym4UBydF?2o>O_3S+H1^%5d+&norp}W1idALJ=etxd|q9o;gOr6*bxA8%zJx~>G0OM%_dwe} z*R?CQcXv*OB8&<1Lj`E56$(03&3e{MoX5N#ZGKJV|cGo6)v(ptko!5{p zhGJEX^ZbV^;!bB$^F@$Alq$Wj?M*n0aZGZ{vz^E1xm;N9d>@?{xw=DFNWYriwX7qY zK6)5(Ts#vOe`<89b#|_Wzjn4Rqtj=^3KYT!4GWhPyFU}8CMBh%=er(SDJLa%f%D+o zitayuigCma!&4jPk&aTMjgzLB=J_F~;lA^%o?8D~+{oF}N3b*CZ%!<*a!{0wjJ{W8 zf85L#V}WgTg5aXI#P0UQ?p)h$8`!DZ_pjgKtqn+HaXNmGeR`3@EQ&sHafZ(jl(Hm29eMdg`*wkdstzM?XdyTcQ!1 zCS~ke_Vgic;}))AZZnTFW>(&1!J=#H)+$=gwS1}o(EORx^ijUmeWBOz9wBjS?XhWS zXzMka#F$=l_{5GYUI_RONM(tE6G|3(pus|rf=L#~UwKr7Lk9|zu^nN+;Ye4VfMS{a z{yW@V7VK)8>M%ZUKjE$c8ya9G`?t=o#m@Lq)vtVt>Jw(93NQwNc*PJv+*xka%+v*A z%i_obmK>QMc9hXl#}8Zcf2=+JI&5_{KtgvQ6Ed@1CD~7Dt)j2*1XB-AtX&OM0hr$@ z+`<2OX`$2?TA;92dYVVtZv1XF;}lqVK>&V}$!FW%P5|x+e87!{5cP-%CFF4%NCTCq z6M2>RSf17mxM`C_G^iZmPnVaEe_l_kQblvJQ-guH@y8b?1gW(!Fv#H$kYHgDkl=t3 z6;@9$FfhpAl6jE#nP`jdKZPkuhgLP6pM*^Nky;ErfGbe=%^U*RgT()$%o^_i*a0~o zR|UT*WlZSS_ubxx0(mbTBS z1R6VYh&RVKtSSZ{0wo`0*`54ALrE0+{dwnM>|a-#)THCpYz*k>N|QSc81xxU9vtlL zuD4~SC-~AGNSNfqh4%nrxxPNC_Q&fJ05k$YU8>Rq0)oqiGi7YQpQ@;ykRAJWPW>}b z99B=-1D0l$-fGR8rh7XGP}gH)prK&k1DgYf+04Hvb>j>X!U!MA5SjIAd|QB=Mr)^G ze%|T(c<{E09vQ{ZxqF2pkVjGb8ch0L`H+B4Ev=F>ybEYw*mC}RKXoeH z>iUYNaM^W&yDTi#PH^X1!Wa7sR2SC~3_BV-0~l`i9$#uh!HN70-K(~aeqhW+02EH1c2nI=pWu!Nec<_-W23_Vm~d( zi0g^qLUGBWV}PP7VOw#~TQeIK*KflWl`aDeTtWhLEC79=g+6@$d31@$3IP#91s;0+ zUxtfrpu^bi*}`fv@T6YHe<%RvOZh?()!}=4&~jQIg4KC1OE|X_=7wO_&~4i21w8;H z#kvoV_38CImZ`rxy4Qkalbx5#tO1Fa6#LJZSW1*;U56=%+;8?9RIpx+hiNy_XRWR- zRoW|~F_D>%bI2jZhEIFa)jDT|>eJJ3mfA`61$n>AG)R)T774~VvApXn@a@BxCeqL3 zAND+-st?!caU+C{r!QXfW3w$AXEE^=ii?&?rf_G+yrSlTPc`{vuR@*QYIL~lPK7#4 zlc&k66rWum)-d@0#-QWU!@%FeBVQrH-|sy#^X@V75d7m9D3j**0+-P_w{6PFdQ9=( zoYoq3w>rWcrPvuHQDy{QFgOY>ZU74Xd2g8lN=TpIEY^r+qwUM2Hs%lBJ{oBLp>l)Q z_s_^s-j7_xe5nMfgr`o;tm9eFt|QMQDXbyg0q*<0%)a|0^vUkw8LLK<=K3R}E%Bar z!+m+(d@w;GJ)~au=MT^6H|S`pv3%wbA<>}{=3+BAmF3@gGZj+RRFn;LG`w2tckl14 zQ`}##%E!zAFAYDx_q^)wlhuSXzhhSKbOY;{W&(&NKgiPZCGL-mdz;39$@fa>k>;Xyk9!b^?r&;pfEeE7* z|9@hvRKodlc~!KojqzY}Jnzo&*aU$1uHrf zMH4iZ7WGt%%YLhBEYOrw4C9v87Aee?%yX7CEH%pLYD|~zR-E&i9$jmVqB>NAxjl^Xwx=*mu8HQHnE z2b}7o1${Ef82@Xv-534|5o4ijzhHyR7lrJOPjRR65FzHUm=Sl#FxSX1xU8qYv1AL? z0B@h@A|0&;6f;Cg;2Avu7Sr+BAO5Yg;YH1jDSU~gp)Pru@_P13mGvI#+dpQ(UduKDXe0vwL}(=S4aAX5bCBVP3)2~cPR?m2u zS)_(!j{J`T&^VGdj5P&83KFeUEG(lQ`cmIYzJrl8cJy-Gs!T??`5o{V!}5Fd-Jr5R z^Z79C&%q-6Dm^!5LkZ0Jxh8rj`hd(Iicc_%Q`L&oR7=&>(ymf#%<40)+3I>F%=L@Q z?S_dn^r*Jai4`U13&+b5FmNGa@^bMIIuXVWJ5f)&w(^t?t*@^C)7196L@sX%x7JAp zSbxp{3X2B{>=Y`PoiYItI@;mGDv!;-;<2mt{ob(ZK+Gyr0a!q2cdP##QXOF!ak%(J zecHe3dmCV-V@d%K@2ve6XWvIk%WtYGyxB@VZZDPX*9CRmuKj_c3M%_%Xs@Pb4hz9e zxbx2Q97FniCXZuc-*pztNzxM2*xnVSqLWC=?(TO;kvz2^xTnDSX3Bo{0dC8C_IPt(nQQZn<2eck`I&AbNdQ<8|j# zM;OM%Jzz->*pzlL17+f%tg&tbtQFAw&&vp<-vQ>b>z2!idu3w`CTLtf0mdz zU)I%w(I2gZ+3Aqn7j)x%}Ae{9tqwk?p)7GBLkgVV_n1Cizcrq1(<{ zK1kL=Rjr-w;=%iF+WNxM@(RLxQLop-I(>Jm(ip<%&+^T6iE4R9F$2P z`#*eq3i%z=$n~5kuoE+XE0#}nr^xRUOx zsGSpTWRqy1#j!%wX1-lccaa*Daeo33arUnRAF(>&2;P^`*U$h4Pw|ZB_F^uuoqPM= z2KuOM7wdg{53jgacc4G0Ki^@oPEVL;bhxmH7TaPzKHm{B-;TLsl5XRG<>CeQY;|{g zhlD<0!xuG4+HhKnds<36PMzhwu7o}f#1KqdrcYVaPYN=#(o(X@0LADcNi~G@w^h4) zGGZ5DY8&IzNDAcyOc_QZdYQ;T2nf7EUO2#MGS)W%Hgmi*tmV zWYqAvk`&FNiw}KWmmw?WRRu-scs0bVhaVoJiJTKcUu%mhm#$A%n9^$%IqstG(dv~~ zDzr(Une|+Eywu0Eez#wc)5>Iw`>*PVB_v&gW(K;XYMHxdtX z-*%vjehw9k4jE8=&PT*ypzf6P`A+)*h(OR{#NFJft-T#?QOOj zM^cdRSc)>irjg38wvVy+u}=kVxHfid|D@NaS|6~hAKbk;loPuR29HlFL`w7+@;2Ho z)&DkN#AEm9&H6+|)EfJ1=4iCt^G)vg$7sX>9K7AuRY*bN`bEcsF%UTO@=W3seIP;( zK;VJcI26&5Xo{(vBmC1mxUWFBnyynDs>eYVjP0RwGghfUo&dai1}fqK1{bLCZjJ&? z)2fe_!}~3w5rq%jFLnlln^>(W?#r{}JAzj`W1;}5tb&+jnX99v{&~QDfwv-=%+T*w zvum)s5VK(I87-$6YZBLeLyKs7%tw>eV1~Pg@rT7%t46H~2{I5UNDl-aievthjp=82 z^y!p8Gt>g3{*Ftt-F_0$7gvt6Q`hFaA^z`OIXn5m-c(`*ly}(ET*(S&>!C}$SUgGW z1@@=09qxXebFRa6sh;L+_L-eJ#H#FPJc%_YN>G@=KVo2UxY`zekrzpjWsX)+l; z?mWmV6eoz0hKq|yi2pDF7;rVPBzeqYnn10G-=ij&%4U#3dd0)~feZ3Q1B(C{k>RTH zSi)7(wmHsOss9Vl^xFlM44pT*gIEl#;oGnKv+cKt4T4r1SD~*}oGH0A+!Mb#N?x6d zxjuTgUmV3rdD0~huCZ;RHE8VH(VUuzQ})c3yH>Eq`=fB_j+YLEJ0P&bs@8#0(dBCm zn|4^|i}=;zD2r&kB%;h|3YvH!vA%2;T%cdZf;p1E@4f>}5WK9lqT%2duYE5KyHeg) z@1dWSS5qW20}t6ix~gzyW=sF?y_l1hJLdq5noT6{8_8waepR%OAt(Hg3oy@+hHu6X zvipqq34||JRZ%el0bb*7^>Lpecv1EF=PP`0^6AyLxBPbv)u*TkYlABzCn$!c7jnoJ zpw8jH_Ik4w?5#zA@ujNsWqH;8FjA848n(y5&p_e1w0;J#qg`bzP$~h^Zl9~Wg77_zbo1}z*Txef5s zQOKf^VGtxp0mT?k#^scKjrZ-pdf`}3>4c!Bs~?sjAGJ$w#ynzS3$a_myxn|4TUKT) z;NjuW#3HL%^l^E&HGviV`dB{cCwif6#BrSN%!F&NFY@KAZIT&e4%CB}IX~tHca{N6kU}PRi(}6+z^vb149VuQ!{aa` zy;m+%U9_1$t)M$9jv*3sQz|VvfcJq$z`q|VHoU`Q#*U%l3zG&=_5_y)Ul+mJnctC9 zGcDaP+_f{X!#8$os~xTpV`hNU$QFN|&h}sN+^s=Ta&VFGzX;z6pKPBS7~lcb!%JZ# z2giKoi(8tzh05;Z6W`U}@jt(9SCjq@u1|QW5=M0)eQY|DCMEy*S~~VElJLtE|8Lc~ zgJOa~LBGGojV50L(GS|>o>v|~qOrm=1?tpr<5_kU<$;-#zUHAo+qrOicVfd?R3w2) z!35T)&Pj&z!;|k!E_nnJ4D^UUU-9FUK{^XPIp|1#dZ-#ZktScYI8vcu`E+0$$kqJM zXG1e)u;XZD-K};$r&npdURD*)&0>7B%^+equFMH!(~U{N-$-n|DX&JY8W_`=&yx85 zu<5{!M6_Dxw^jy_W&z7>dZV5!Cg(Q=FO@VfP0I&X|t{-*6xAb#-BdpM%B{#$xA{z<;;xuW1wegQ;v$# z!orPKc@eZRtnilHdLt|RS}m+92-N(ZUftQWg||y!;U67Eg|J=-xj1FO;9M2O*4e;A zk3XKlgQ#eH*BUkQyA(4#oHw%fQrHF!*4xe686A~pUFQlkP<^P`(~kE<@2+V&TnL@M z5V>f;IDvsMKJSHh>Ka)0U9{!S>X0Cl`VEH&Fv;W0cAB%}t~K~U!ia&dSC;I_+(ic; zG@gG^)u4E>d&`nvnK4KeIE`A$UtA|p{q<%U0MxY4yXc(P*PjmTfocsl!XMWQI#9rf zv3NdFISP zw?~2uF&iKa^FYvJuIOl{j}_$w{kw<&1;Ru&@7oKY=VTt;yV^mI-$7Ra%7OrAU+TjO zB4mKr<4{Jcgs zw;S`>VHc2Q&_)TkES4;6WNi3vqM((gC+P|a2^|`Ec*V!7cs2Hp9Nx7AwPpOj8Y`k; zrKOeC-z|qYKT{5>)zwrE^_JbfeKLb=a<0)QX}wCS{{ z#0+rbEa(9>P85b9&{N&)f&bcb*)RrwTeiG460;-4{_tz9puK57$;@)-uj0qo@CTbt zbzIk(`3=tZ7Sr~Tqm27*SpYXq^>DPM^GMr1mzoSj6E>y#M#;)dp{B#<_s*(n6J)VQ1}5jG-+jU6M@14|yq>^Unn6DH+r0GA9a%ekdqe z{8@76v8K>f@2pHFeUSwV8c=uHaXkJJ3I>iZmo0R7>kK^4bso!KfqwKj$Mh_^& zP0m)|(8;V4^PtoGG+beRo0XAuy?tqY?A#X)twJ<5tB{+&PBd7mf3wG=JAF-V6+xBx z^!_8t5RPvJ8zbW0{)wHg(dE5%Y{_%a-sg5_{L{go3hm9ExzG;Z|Cn1!r5FG?Mhu*# zVS~68zE(t`9KKdK_EQi(3I^A=-a>fu5v#Jg&v&@VToA&{AYs9STo9bwmno#1p@|d? zy$&UHRdrkT?I{aB+?_ySbY^TmpuHGCJZLewU}}?OposT4#0Ynw@V%)}JE`UxGF_N| zx9$^yag19UZHhFPomQ*&fCk!+*Lhxe1HUr{+NAqS(cux9>1aZ3zf&V=N7RTt{;#u5 z$O1acbPXS5pGiayi%JrIE-%wI%N1EE4gW{eDj$RT1o{N9^q|6T3Y7QWBc_w3}(PwFJ`=M!96Sq*zs8ON0{Da}16vLre1S^X zgFEn(hvN_4#4b!a4@*FJ4F$SYPQMRU2bY03yiuhS-DM=w<3&zh)Js7=Kt(QSz$OS} zF@*GSv+iB?PcItgwoiX&$z!r!Nur3RPcrY~(ASw38;`q>vD$-ndS?VpCF|F~k8zBw z65W;A{I3Ye^v1ClF@LPP5qSUq#@AO1zie2&DDthZ>@oMN9oWdy&hCbiJ$UEIZ9o;v1 zuSDq33FA<)kZ8hn_x(%4g6I*3kDaJcqHK+3|9R`QZ*GUe!Jq&j$E+~1{@{zfy5iDh zGW~o{(0S>Ri?Vw~kXsG{TQsUE>J4AAoe$ih+#&5__OVBkyMUb;MH<+o zVFU6O_?8To#nT>+xaNbK#`9ikH*ZW^OOewaj)ouesonD^aOa?7J`w>o3rIwXmzB?Mu|biw(&iIL<^DQ{O_5`IU=%Y6gL>;SJC zE#ZRigzk6`kbEAjjt-9vt=DsZVQXX)?+O{?@^Y10$`@I^M^K;F8@&!%9ciANNzC6svY;UN+=mzqYtD zFXP()EsAz-&&kX8E4G75f%H_at2w5Q*UP>}L!1?odp?qXU|Y@z8#@yzvnSV`8v%(5 zVzcU<@9$@*_>$Qd_4;%YRdfFSP(5ZF7j97S(@?)Hpk7Q~6e#rKM+_%x#XsoC5<&m| z%<$SyG5SI>J7NlO)s`Df%8}FG?uLnq6#P-cy^YwTRh0dK9(xb;!|qzk(cT`L+3W5_ z$42b0S$Ice0e|kyaUl0xsQrzBxo>&Lg8?;yh=BRMn@lpAXb{V&dV=vAd~hGj5(SsrqMcg`%N(|BKocnydmsRAri>_OD-e;=-(8&H#R33?Z-M?cxs*2ypM! zayT)&Z#X^Cw4qTxe+^BRM<09H&! z&z`3_F`L!??BV5h_a_QQ9~zKpVr64sW#2yQ-hhE<3%fHl{s~!x^m@mgI#4<&IZA4u}k*NY|9*hII`c23E0a zoprqgFOu)}UNA!$oA`IS4O@d~)FlOB{aR5#4%TPhB@OPFyU7GUD2%}ZV(d3Mu48VR z)p6NFr^*d4N+@627s5`xKN@Yi;G~ii^6+|`W{6u zF{b~d^@_rH))0NBe)ztoB?I&FxA6kYwG~acymw#l(+Hu9s@Kt!Cenh5!>!;n*95}T z3l8XH3k!P_3!B;Mb@0AZkTLx@l*^yCRD~LlSS19@nTz#_Po#e=tFa)0l(HKl1;0Rp zl$t!jtNE*9k=hxRsM^60}rX}WfN~BSrkBU z@hH+8YT@zjZ~ESwNZTH0RO9mJ3kVc&g;kEvn4}Qy#ABfF89o%uzO&U~HKddQeiiMx zk>Mnjem>rGgHK8%U9NwIDuzIy`d~X0fO&3*m&&?+AJ&_j#^0+hzKE8V{L_+$M&MAU zbC7eguv0WV$X4aIZjlKD9+Le0fz{UwXsoc4HP!XT#@7Eh(+xuw-k-Seoe^;(jcb17SdbnoB6Pf?U@z1&ylOhJB zQ?@5du1rqOVGw9-fvo*;WrNmwmjx9}((mJxgccVRP;3kaYDhA>Y>f4T*=yAd#ZVJ< z-zIg%Qp7(pge_-V_izes^t)Uy_kNGgw6l{D^x5qoG`wuAYH#0-+#aX%zUiAeN}15t zb#}RVnPLZl=0&-qLO19HPr*%AiE}&LqA%}A}sB--Fd^!p~*;eKU z{DE^j&u)DTG}_mnm-GQ(N-L-0fISb!pZD9Osy{^ErR0um^3Ngrw*}r!@#u)Diz|9J z9YCP8G~A9SE9rRd-OYFXY`^=vq|@y$_M@$m;-V;tnXaZ&-Hm;yem5JQb7qZ|Pma!h zKU`+2TEk-SBT5brpbGQ+dY&6*%p*U1_EN^gCbYAwJTAh=$P6;ju~Fv;)NlC#nVN95 z#pSHFebqYiLu)o@;^9SJP%)G9zV)J`?04Cr%?U~ighzcXxLuxVyV+aCdiicX#)HzWvueb#Bh7>Kcj*ii_#h z)2sWDrgL}8eR=o!j@UZu4YUv8riBbmAW!_pLe}lKuoTA`JwL3~u?mIgcXy6yXuX51 zC(ipFR^r{~oi&zI%0g`jJ%&u*02yn-k_{C&05<&=HM4-yS+dSv2MCN+JvSag6M0ed zkhSes=Bx-KEvK}0N#b%i8D=c1 z9crz4ylniuz-{Ep!B*<%?cl)9f1^T{)9V9}>41O>lS*&2TMy>E#5i^kV#Zb1;B5*oEDFb^7&P1lmK~z%j6TK0n;H6=vEsK>umCMv7c{;GYB(( zCnGgWx#E(02T5(KugmvRPPNH&^jZkP;c{mQrK9s|x4a`~1Cn-uoyY6FtOMlJ8)50e z!i)CGCk+GgXz=b&^Y1kgL5$qOA;*l`ec$c2d#y|G8LaZbeLXe9M+!srjsRUa*z%(gbx*wy@*ox3&rkqPF%&s`M)( z{%dV*MMp=(zz~J}3Mp!u-zsj|^~d^>NQZSsl6hSgTKgpjY zY+M)bt*wn!1WT<*z5>`dY4?uz|7x9UoE=Onsh;RhSOGjRETjh^3J5?gT!^DwWb(L= zul2Mfp@{iGRud1EATQl*?MGH`w^F#3cZQKS$o?ZOv*a{cjcaT4y=HIx+Tm`%=<2WB zdCglXrYJ)tTWC*nhY~P})#d>#Et1(C{{;(+y;kJOjx-azeViAa0p~qDJ^iixtjk?) z;g~y+U(4M0(+E}9z&n{T$vN9c-$!Y4U1eGES%$LhL2NftZpGH-hZ$m_lXK*8^EZ{ig;~UtQwj zDLa+m?i)Sn(cRlsYVqSmV9{qho9KwbuA^n~_w4%uK zdNeCEVKt%2xXi>FlMh7LzblRm`Hhapn6RX=a02k{vS0kkZkw#X^@3Zyc19xhZeR6^ zMQS$M2DST#Ej8PdzEyj?Jbla^=TS2C>+jrsi3M*4b#2+$8>`qGFP_}YggIOPdbGOD zWS!LSir!d|>gn`pX(?=JId}>IPMPRmsA@)Q{akGr7$`tY6BHtns=mU(@i0Ci8PvP& z$B;tx?BS&=xbe?-0wL+CQms|A#!swg6IM&MU%$8g-?{$xN4du(>?tu1R!Gx(yed6b z;_ZivBx*Fey9$ zN6cm&Oif(v}0}p@k2G{$(M=l*?4x0V^7#ew>;iyBCG$qbxmkk zlmuov4-QJdZMLS{`q6vAKnRvp*)-Bj4<+RMSJe2@$MBNJy8V6w?QDJ@C|8ATE={`J5r&XA6ebW4TdPV{_ikMKRlxr(K=UF zQvKrlx`o9hH|RciOUp{s8!ORu{(VoZC>$DcE&b0IUxx>|Y_De)MQ;MChR2E!dwd@DUW*wl1Xb5ebR? zWu+21)oLz0fYmM<4#-C+M?RVV$aQ*di5M03NrS#D1Ry@(Al>7W*T(c#mKWKV74smc zscKJd|7)Vf%ev3!JokNdfJuxvWoc1 z1SBA%z>9rdVZ>VdFxX57_$PFgzUA1Kvz)jX?v%Mzav!gThg^xj+C_pJDaz06qa9cz zSZ}0KxHE%+kT00D)x!@@;e@H3$oSy$?2*S*pg;mPXM6}Zsoby2CHz}#)OeAP@ z0X=euP&91dx_X7mvUl_gZ6ruyYEA5(hb-?Pd`am+qXr3R6`I#V^M>_BCr;^K{p~3a zgvJf>??-o2Ps)T5C#B=JiIvyZ?%6lZ@p6=bhwDtp&h|-jerr#xP@bQ@wAB2-wSnAO z5~VpQrDnfeGRe=oJZ+R!Nc!1RMa)HArrz097{!MG$7Op^S}>2&taWN;URqjQ zUq8<}KmTgfyI14R0g~mqAu;%mnib&#hgY4uP;WOARN#(RrPl1Z*>7Y~O;bt>y zw|rQu+^r3C96nq5ePheLyhy-TIA=^R~%TF?5jhZ!&G{kAr_kw4o`gujPw zZO%Qk+$X86Bpf2tMT~vdvKP?T+d2sWDnE$Cd>61`ngEFyZg6~IvO3lAWMXAF9Jqf~ zul)G60UiRBx;_48%vOVTf3wjfs|VV7efJu2Io{8sr{C(VLWWus=ju@nUT-Aw3wIR@ zX-1u@Tz1?SV}3CUW*%;aTk|ybdFE53aqX#_XX>U946ttQo0rg`*^Rk!qgW%B5peEn zX|B4krr-IeQHn&fH|{iL8Q9v&GPXG{*KcrY#g=f(B)VPBaLts=)WnX$jyO_Etl2`h z$^%hTP5$uFZHrlKbKtQ;Hd4`?-;S?Fojz}=U_(!S;{yj-(7D}?pJ%xV{X7zF0`ER_ zd(lo+k#@KuMN8=4frD%jL6g>#`h1@{F;jV>pR23U_BsQHjQh=a#H3&ckMKa~{`t*d zrLH;%Ia5LYeE8lSjT8jh5Ebpwxq3i6Hi88A(z1F8?)H=!tB6;cZ}!L(fQ1wy@%<(m zn?NQxyfv&~(9d@wR#>PoBSLlTJ;w8qk^KW31NuAJ;&ab$|72&Fq%8CjqT6&{= zav+(eN{clx(ZNyi{a_*eYHCVjb7MnmO8s(UfoN;n@n${`&aDoc?a`m6z>33QxeFRQ z&!!L+_1=1*I3_WUgFs275a*)f5R+#|vo4aU-v{|@Zp9qfFWagt+{Rt9cMVxrrAs0r zJES!Vt>$RM2>%d4gX|9Ak@eE^@YUCFuDMWkuT>%ornsC z!Bv`=b$QxW!CuP4DEhfA0)l?RGv#Wo<3(Trd9^2fn3r|FqsqGgg2G1oB zgK`8W?eiAXzrXBjWLB(RIt(CIi86Q8We1lAYhTqPyT_qs#nMm+UmWVJ+|G!K-O$EN zK>#)A?&ZaMBlJU(E+}qwDO;HI1B>YC6BW>qJ!N}}(5_Y%-3h)Re1Hf#R$HRIRj+fn zhF4LE+E5nn;TJU!!Oof#&zS=E^_e_mWuSuw37`fDe2bxE$rSk}H5zNU4>U1f=UK)w zH0SRT-BgT$z5;mhW%;ya`Dg?#u}c#$+=vqQeE%4G#_6f&%GX2&(P|A08IYBGZ+*J!~` zu~*NdXlG6t3Ep&viXT4)Q@~FpBvvMHXyFk^@iX=Mmznd%lzWf-lKOXCMf#Z`o_kH#ROcfPDmKn@dzM$oh#}c$oROTY9Cw^PJnPF|UPX;m z8VyrYxg$R;wb|AAA0K6EeqWy&(rDXe0qG2%$(uM>i}eapQBe_CXtleY7vQ0Ir?H`Z zh%Mne5r)a^+PJBIi7Adu-D|WTtDg#4$0`W#E!qB9*6aD?iHTvD)Z*D~_vH5#xv#Ba!ikJ^DB?7i7kvQt;|f#%&BYZ;kVX!H`ZmsEg|cl zo7qX7**Tfn;W8rw2wsrGLqle!$Jn^oCr7x&rKP^np+{b4LoFb(1Aeo+p= zw_|vl7u6-E%;v_4K;6@y)6kr$&8)ZYG8BfDSsccb2K1+^g(fLowC>EzUJa?}f<+N! z!GPk83q{j8|72#G9WnM8^r&${V+%oXf3L=pl7brHN5Nq|_b7IoV+NTy-1M z+f~y1^n!>@JR8`T86?}bh4@y+x_&zNlA@xh;9X|69Kew%XM}o zj}PbSY5bBrGiWWMdu3Q&9brx|JY*6f%wXiu^|p$KvQdDvpv^(Pz1+yxf3ZSVV(o~N z(y|50(>f-8xtWfe5>f-@3~WE}^lhslIf9)BwRO6&m&=M1uJDB(LCmRb|1!juF4%LOMT{YEr-^ z1g6}tMfTr|*1Y>F+A8Yu@kD8H?;L<=V>u)mJflfnVPQi~M^0v@Z$l&@=Bx9h)#}8C zFvGBiz01QE0m)AfinumZ$XOyLmF|4&yW#%H1y?nh)$(0FnLAI$Q)(NgPU=c^%B>aTfe}SWaS~*|86cb?%&>Z8*aoTa-o{ugbMroz;4j7&NX0^v-s|{KIGg)3#i+5V$ zx_mAH4FZv%!a{+-eMT8C{mUk;(`#%d&!yA}%1Lu5Kl!9FjYneNfp^EGkbg?C;9w#8 z2@PEQAg@i$^veIR$qmjtG^$Q_A|vy9yq3yr^4*&Jh1&)qi^=*@<9ubKIR0iPeoH(I zv+9X}TJnfwMj;M`aJA9J+gf${ZIA{=8{q>JVgP8b4hj|Q75M|7im>y`nWK+&uBx&b zowe!x!<4&fXm-KjPbo~JTfSS?Y`%o4FaFBU=jHhrDWyj9qVnM5XQ!ZHWo2Zfs?Poq zHHsB&V35F4|Fz!Xj6#-Z!3+BzBv6oJ<5?sm)h5?o%n_nSD=5bp#zsG`_T*i?kdylR zau@>x2M&xd$;mN8B|Y8b)fs)hPrrLG@UQ-$eA&}moL>}$TPiHZMcjC1;k?=k3Ns&x z{dU&=m?!a#S0uT9zthCmLDBKJm07CHe&_s?e-r#u#C@)N>&BQ8H1 z?jByszNE{MZ(nAvP8Cq^bi#&^&mIyob|Aq21t2FQRlJ zB9D$!>Dc8KabG0FUgqUmbGhs~F{8o%cio*{v-epvP^Z9y5~bp6r=`Ezs{Zbaqw=Y8 z6ju>x`O41AOlNqQ$lAd6(C{F;&P@x~2}d7PYq;9-_f?K~dgu4ZG2eVlSQS)J&OW}e z)kAGHYf<#n8o8LIsn+&kK!8dVp8NOTtd5u8VTEWrw;HYYCKg{eD#2}%V*?v%I%4LN;rx~6NUN98THwG# zeos#;PCsM9j_=xq)iCoJ{02*D zwJEr`=}{3JfJ911Vf~BAK7zBB*2U2~$TcXwg6k83c+Pwk_WA897&w;4TXwS?>4)GIr2tX<}ow^6NTn^q{Bv{%;9Mzx|<* zh26p}s+l1MFsS>v(A(L-cOFRK%|3%0dJ4yVK)fE|v0(jbcIb1y?Jz&I3ZUJz`&b{m zyM6T>5|O}Z@Q(J`D&{PUoM&e_Hlfz$uU-)luWw`p7ts4Db%gvA-1g=~=G@X!b+389 z0E_2NqRaoRT+b(l&E__>-7*57f?{uOc#&ZvUh%kz&&|sIVJz8XmPfLSo~y>g(9}y_ z(^BTUzdy-nNg6kbX4CR;`F=#(JlABElthv#=^B?eCnHG)#23emL6^(*{K!|mcX&>f zLe3!4U!5llzg3ohtEi@?5MS1IEJusU2WGZ#->v3Ils#lPm$O|x-{-#k!7bwzURjzL zo*KD0Nw7x~ZozUzbI?|lTJ4(?il2Z%Id>x9hZ46~Jbt;4RI}D}*uAQLyo^h28Y+mP zBJa0vrwB~bersCZPYcUCn>NX+C(_9D(#jD9%UzEUHQs~(tyOB^7thvEBgzod9II0w zt8;~$=3VIRzxp^?TL9+?hotE86~@5upcWEa6yg-DmOT=C=`Y!okk)tsN`gy;l9OAQ zMm|b^+v?O1k-!sUTkBcHX9i89Vk|Q@EttH-XxGHN=&33*Ybpfv>R6PYpPk{4k5zmug?iR-DJRA)Qmn0%=xh-iPhGs!C{yCLBCZm} z*w~Bj`QoH{wx1bYit2FHP^8rF&)^zG%zbmxCrA?1XP@Cf*1Lq(}!=0Tn;<{zhyq!Ex>mdz32e zs>V_zmF2e*-v%J#MeO_($O~Nwp>Em#b{8I~gNpAv0C)9YN7b*^V! zeG0XnCe>*9 z{sM+$ooTP-<)CQR2(Rh7wbNfxqFvLx06_nmIOSaET*Pmc)pE6ef-Bh;U*L$3 z7_vCXLcS~}iejFJsqrYxxz}9G4yYk-8twv0Xixp*^4vR>qzazpoqwg|d)a6;-R{jx z4b*JiENtD((o@&NQV4>TrWc?%JjC2meRHaVQ-3~{l~j~OhQqq!y%+ka`I5xejaS@5 zBRXYu{@$@qoN5(7%`Yy@DK6apVFMU>_3G^xl0$VM@_Ou`Zrvi?A+2kypA)3Z7jJ~f zo1yrV+)~f#=gHFIw@^s;{jvms;Kgg6H<3+cW&>7RsrfsZ@tIIWdlaWQm}Hex{Mg0NDJk*cLW=6%gtN1+<7MqV%a)^xf4bgYzZ6n< z(ZBc~CWk+F*K4KU9S>jBWAoUKRMXVpTJqG$|H1d^_7MPeZwY~A3M8ACtnm9iTD|SvgfAr6jO04QW8$KEmxSh@b7)-e0EW&iH9&HU~`Av^Pq2G zmcISJnGrD`i`8LD%QKS3Eu1;UWJ-Pktr8B=KdXb2fwN!aVvci#uxQ+m3toLTx{AZc;2yS^6e3w~S1D zGK7oAQQ2ssU?}z8is=ss#7lw&(rGh^tVS+q5u3x2B{XtrPI$rJ%RBHo8w?w3HF>4R$@GJNhWx+t%EKXQvkJ$n1lilxCP{iFC70x69 zZ?X0&7PN@fHd-=*ZVCoNX~B^l7~@S5S$5|y{k-mx!MT9}onQE}vXZYD&kRlMB)?^T zGd$X2vguX`4cD+fB@+~C1;!P^ceOd9vvGNiH9=F zaMI{&_!ARws7N883L0`v$PMRP*II^?4|loMb+qJ~cILQi83k#|w0Ki~TKfDNZ*I<< z4{~4J(BiDP1h_~y5kn7gz1{LAd|?GfdPZjlIr%gSA(C{g1*o4HIbUo~oiromh8+nS z2bLF1fZnNEIGuFkxHHnu?40w{c#s}?`UK|(Hj8ci>BBtpzQIQm6AiFP@=N~rXVDEK!m=hJKY$cc}K>YM5IrlaQH2ys9FC1rv zly?tYI%N1FV-$D*md$eI71;8%&| z+S$1R?0cRUH7iZd-ann@^Xp!C|2I*fJmgzQ484K}m4A2nf#c%8)2Z`9CdG<&oASIY zV)E7Qt-t#Opj;c071W)a1iEpl5Q|*lbc-js_A0Ahl=NtF*;#1_l;TkYXAYBpr|q z?veKMwCz-JyPU4ur*6{uUi_J>jTNJRopsn{GYYCHp(XYsk@4(E`HqULZFpPXuY0?7 zi~h#&H_3vqaC(htK;n986g~H`UiUik>lS%LPsz zc1C(UUv0Oy3_v5WPhOih?!e}5z@d@8Z3A`19*Z3a5U4(%l9J_VD#p`@`~aOodj7Qp zUInJkl#qS8c&sIqh{=w10nUZL@2=hwFYO`E$Sd2ZZ)JQ<^dfKdjBDW6p2+Y45@_l^ zoyz(M!_#hh))7Me>!4X_8DKS(|5cQqrMer{@a*7ha#!MZL#vXGKG|U}HrDHKfqQu_ zB#y=?!WF4yAeo~c{Eck>4SpOmnH6k-(X4*3b{TD(sj-_k`zs;gr;SX1XW zRWkkF$lcO?U14p}=(u=poZsgCH3q|$jJope{{H)975=wlly$d5=~EFsp^LEd-HG)N zliI797Q>6&v&g}H!j;bN3{qp-9&qdbsY#7Hbtg4vE;-9HPX8yS(^hj*G?au%UwMTr zWqwD?|KCdwk4-tGWu8<8u6KJ=_B-D)@mH|lIUTYtM{A8&GkiYfF|tOi*fIPTiD%f4 zma9oYU83ykVf+ooL=P~%Y;2#GE~F+i4NBdDF>;dw{D7%Vwh80f>(!SszKkN#f*~4Z z#8tU$b`#$~0=h;o!!(C9 z2zIac=lrfS4q8gcVOrz5Q%gvWbPG)W1E$&4IO8SFM;gkzk9In+7^wn+UnnVgp#D&}A{9xexVyIO3BSeKQAGrjo*bfgFZNoQV-r0ppRW;w9Dj9uA1;vVP~zl!I3 zenibq4SBp!PkaiBnCwvyMxlU!)eA+$ai`9J&DR3{3)NfZ|4EFu+~qdB4Lm8l=D_cm zNQ4K4rG-MIad09#_)-z{dv0bh^|D3OP2;Tbus^?xG6G=OQW5=mKsxZ z9RUem;yqbIQ5``yKmRL60%ExZbod#27a@|lXVm`nqKuDFP_#j^DO&lE2Hftl)!#NinH9XViao{g&+kv`VM{Z=^I zgzCFmUZr($Wv3t|YJP`zqeX(8w-tWspvgYhzzAi`JmTuakZ26d`UhA5$uHS3*#Im2 z*!#E84;|}k(m%2rQ-gKdcPRxV<}e)eT$Lt!fGI5_>GDO{qLSNGC}5LnY~1GUg5uYm ziiHaIR|u@LLPr9&XX|<)uZVHS&Wb;Lh>CL6W6Jwh&|8M}?-z(OahH`=u2kYLX#Piy zLKTI7#k}BQBjMfSx(;mq6CE6zAGX-}**NW=@xxmVwPUX%hM4@8BB~CLuVHh@mY3@H zkf*3&wjuc$&%bJl{trm}vaOD{k(96(q~T#u9rnyvPtvOq-HV1yy4S;av6oq{R9RUm z3kw^s^YKHKys{95%cr%6q+QSC`44P-KcH)Ku(3qRuxhfaoSfs`4bTVh5IIcN_^fc zKjIV>9o?Svq{@}+V-OC>)9(0&Q{Q+|l^aFZrd>5&X{ZWCgY#mdw$56{!i*|IEj8io z`g-2DHj7Y;PT{zfAMax~!M_U1n_J9Fk(ZS{AvNuVv5&u>*f66zOFi~|vP~eO`PB|b zqYgY#69?7(?svU=ytWN*(jtME#&eeo%S zEmMBfG#SH4#jw#gShU9`UevSwLmV&f3j{%1;A30@=BN9L`cFhtI6VawP0i@*<{%_f zSgNQ%#Z&Fh$We!XbN;uuBQyMMa7}BZs7}Vn%=WiOgIyED?VXXnl|B?8AuCT;*`2uW zLOIbE`pauU565+zW4zL)t*qTD74t0(SCd^msY4bgZCL@Efc2FPhu`EOAlOnb$wsbY z59!enJesfWn@ET(U~`rm2l>oXo(l$77mK~*((%&_O^bX9N-<4WEf484eeaBl$2CJP z*>buzM;e&O>5N<%(|W-HS3F!od5?4AKQ=g^e>P`xU|Q(q_~$Q_qj@^%BjruyVr+;c z1wI#V*Cg2oWncdOD8}&Mh(mKH4;`=C*Vnm$4umMYb0o^op5m%#3E=llKO3`LT`Wse zr{na%{Ch0%7~>*RNoaSd%7;kBZ!*jkMPfzmxd)1psG_8nj*tq59k!<7lKh`3sdnYk zA~-q-1lDTO)(oL++U(tD#wemBPTzr<9++sK-n=|Hu#he!WS@pzU*P&T3mr|1*Xpen zaNB4S==7ayk0OSxe)HSxh~d`0bmu<~H-0o6F~^bK{0D6Lj(IG){}&73Fd5T6Qe#)9 zV*Tx{k_C)hKk;k3H=47n<|pfi9)jS`Fg>4fy!5MQO9PHyZ^2wR7tyV;f6ul9L3)i| z?uwHL1jxTT#LiAQ>1msiPL7KMe_?Yux3d;1i{U9c`U~#$wdqsPnjh0A%$E<8Zy=D_ zh~0a}*c$%027xr|eBWf^x11C)Xl6D(W+rk@Ch~n@A;L`L5@!=oAks00h z`^V);?HKGCv_1o$!|2?W6+*05gO=w3gse!pOYb)+1VBPm>(_z`G z4HyBwMJJaBF>e?3qS`Tu9gW~*yms;3E!p99>v`p=>cp^xrsN4pbM@9>RUI5B2iL`E zgWenYdo2#T77){-!$=(4yj+hnd3)wG6xy%0aSw^IJxeKu#%MwA5l4-e%Djzz(U@^<0JOn>V`O(!`SmJMIK+D^zuLdZ#1!uq5scHue_1I#rA3G z^-)4bV{c{%BW|a81HE^g!E5d8hVG;J|2@il_BvyV2v9#{pdin;C(fs-a&xwnyLvBz5>5C~UY8j0 zI#iHmdDl6v`!&N8fXlVo*={A>+?ar?N^B}fY|iM8ohkQ-a7JG;1U=TP9#Uk*J92to z>|9;$&v|Na8LMSSYCm-_7?+gACW#gPVYUu+^X1}(({^T5c{pz``!Frx_h} z#!EJq8<@J6VQTkN@57Pv_&r2uDS_WJO#kd1GunnG@^4vFY9vSO8;FL2KY#3cqq9|P zTA5m|9!Fn52xkMGKFTUz!`&=`;i=X9^t@9Vt@Y8J#XGUt!Rus{94@jpY?=9mpKR7g$Wjv>P_9-p!W=F;&e*s0=vdn02FR3F`Hqu>geu>S8PjFI) z74?f}6S$`530Q3j)`RVyD#_YQOG~6a|KL}|4hZ!J=#xppE_@GzFci=#R$2u>AV;K% zYxE+(eMLgCY#lNRom^V8&BNCv5LjcMoQwM*0Uwf&p{+cnag9K_B@+S7i@3WSDWSkk zk9^cGm{>S50M}eyYS-q;B)7aYL{qzpQ#feF(RKuu&B403;q>nym>^DxDnP7D%`G-P zo^hTF=pex4hXEN7-N1mFp494_=e-i%_nRj(38Zja22B@_dv#HW3P?#8=cd3ymj=5E zFZT-c#hgAao^BRcg<)ep8N(G7Y4>jT3=<41#3W2p0gY!&vd(>#eUsQ{ROSRH_u+z3 zKWYKxI-+wUsqJf*jt+$V`v|NH-i7&Ur79=7CBgvLvG|;bvMUX@O%9okH5T=ft zsHIYL!&tE!*7?_gUY!eEPR@{!!V{V0-x~}X1c+~-PToja6dfE-M&5Q3QN~7|#0P5> zN|G}1g#kIxrCdsZ?CAxTt^zARKmsAxT zybT<@tg_=5{bR^cJ9yB_PPpO|gsaV_OFn{tch6Vb-_FtOHd8jZ1kR4_ejy0pbQ5-& zRj6O*uI)zt#9AnH`R+6sM}|el#n*8YJsbkKM)Ogr5T=^&mKJ4MQ&?z4wjVdi?WmC_ zYihI8zZa%|XR=!s3lP7hD`DT0u%39Hygr4O;=atP*ve`5vpOrP#56KZv&|?nPcQzM zQDmKx7bPJx!l0}umKdd#9;JRsSBg*1%(~<3bRD;6{t3A@_Iq%6V5oniZ+Ia1=g~sN zD-3u+e!jy$*ZY(DBrBdb%axx`ttLCyai)&zQd@VeCI5r3kWNDDazF%!u8ocL`&`a( z{$!K$yD&F1O-l}~Lj(wL=Nw3ucu|6#YGt1sqAABYShA#E9@?t%k%PIfs@Q5~BQ&|q zJuTmm{R7D*X>hqmkCylM_v5_~McL%#e~gP76~Dj%S{Q0G4qtd@P$AiI>n&m*F*NBo-DKysOKO?$ zIQgcV$NOjGnvdE_t<=7z9SR&%4z(p9w9JdI432Ni(vNVxTjyMA2zxqmWXWR?x#>Qi zXhaUo%YEVCAPptwr@(v7L>6i-`;IlPeFd90WqqAfv2f7h7Z|&w-YS;?FNR7`H3-d? z6j?-JoyNP3k66HAFbzNG6^ZMnw$xA)7UDw8uN~=EEBqEo&Z+g*bThiYRXbCpiqdst z(SgR&$sH@&CXkyRaG=>0UGr{Kh0o_zT#8omV!zi6g%D?+{BA``TMIZD#;@VjTAaF{ z?=w7l4{vpqHZjgyM%0~8Bd~YOlOf|++RyPekXPkTM%@PYuaha2ttZkeucd`Xx2!?ke~FWkn$@N1H!a{q(8{AUmLklNFGK-o0{PQL zYp2fkDyrG;6T{adcyu zXG2Oa7MCUdy3Fu5En<0DA?B9Ti&tq=s^lUQE}Q;-oZ5kODc)2_D`ZFzWyD6%`nHyX zEuHhmu8|a<>!Ae5=XJr_KF`Cb#alUJEn0EBdd;SMSXwv*;h0-eRWY8Cj-kC@njUg6 zbvYF++6FXr^TL)1#4R^pFq;pt$;t{H#T%xo>Z+-UiKD9rR=2|5c$+f$+D5@C9}+{+ zw+4K$EMTqFAH7dm3hnR2HxA2*=WXwj`bk4FxLpovdbdsSEB~cA z{{2v!vPo7@H@61(F~l)L=jxAE%m4JQeHFchz7=?*n`FLR?@ z;qS2OQiFVC%fiCKLPFebId()}4u6AVat}?f!ROlS^rlhUZT+mvtS^iA)i*n%5wt4j zOMx+j39M*Q85=l`(qJ?yWv^7R7ysw!fL4DT7lA!Tho%yiTJCxNY`^aIQ%m;4~*wQgl_&FV5_)zj!;J zz2N5j@<~tzEOEDB^J1hh#x?XOD_vS9W-ZdQy8l6)f33f8EDb~0C4@>eG&D(8Z=OsQ ze~yLgUz*<)p7JDy1fi`&5nAtTKs4{Gfd%ywh-$)0g8zk# zyrPo4oO=H+6&cyUHLcH2aPK1((Vk6kWH6Qf-B4^xmArR|7{_LNx;kSKL68Z0Fq-q7 zb`bC%%r@^~7HBm+w(|3F6{GB5r!KY$A%Y$r-%#=1$#3=xZYgwsB>U!swC9ES>uVch zErMkVvsCeelsb`(%DwX_B5D}d~Rv^*3MHwD5YEzRaGm}O^%rBeO z1zz=#?$s7nsKY#N-RYZSYfZG%DQ0FCTUoDZZ9WZ-|JiFELXNCDwl}a?YdLIUD|%A` z*pF-@Q};H`h-d_`;`4>Bt&9f6DnNn$je1i)`p7fgrW+n`B7i^v_-?WqeR0BgdHg{a zx1O#KXQR^>Ti?l(X=a2Cp{7-Pyx|m-Nay3 zC+1=Ei4rQ_vT$RJx;~dd; zfYKP3=|4KSB@W(o$?aHJnK64Q4;LYnifaah*XEExH9{y&+UE$3c`;BSLsLgiT53XZ z#n5TEJ88K)%Xxh_{Ree_n2@Ff59&=}Bcg!>x^!cP5`Q|v`cdXvKT^j5YQvpSLBI!_ zbrGU0kF{nApFB+1S_c*~*R2iJrYW7aIV!i@kG3ExH#{9tR7SO9*-JV4lr*H*8x_E( zzy`hta#IQaZ{5H^-Kj@94@Vf{zQerQ-A$ykCmZyzT0j| zhGOGH!0ts2(gAEfKt8FdrA?2F01J@6Pi(WvO^X;cIa%$_9&c)L-t%q=4xM5W6&8|e z7;am4G83BrB|WjckeGcy6hjw2@#a zQh&eMKg$(rob~-6P@P_@7X_^7f+OL%J~@%)si<5VL|3#GVQ~Dqm8*lzcC)_Dz;SMv zI2b7Jt>XX}L%YTV>*rV;2((pO!wF7;`A%n+nq5DW>cPhMC}6Rkex)ygnqH@~#x4~o z<^EBZd!FKHw7lH+GLH#pcY%bcBR5@p%@Nv(IT_hm`KWfbTbH){cRAVfszRS@!3BZs z!Q&fc$qI7JV(qJg{cCnbRDYP3(Si~<=m$pgC7!NL0ID5&c zJx)nYOSmFueg@Y>+oQ+vP7Jp_CvoAIxVb^i(w!T0TCcfY4Ymxe7aMv~@ z4`z_C{xl^#z-c4@sTiza0RC4xIu|wVGbt{IaztuaGESF2;Wm1T@V`%`voC0BKu_gt z>4(nEC&oOBn|j8k;9Hss1yF}t^dgG-qCd=S?eVfpa~rJQ;j8w|e>=ARa*z~Cn^RWS z*l2KSj?&)jc<;1MiiyGFaoF3+`3?p`Lb|`q)#?oKc&6Q(9@c-Y{*&IGC#9|890exq zp<;QbSt>to_1gp#IaW{}*T+l&o+{&)DF`%xdGxVZnU{9eD?eUo+mCMS9=fcT$uB=Avk#AFIke@IF26WWyq##M) zmjebuZ8J>G41W_ijfqq^u4b+ouY3PE3T3c_^P~ z0~vD_8S_Q3PxYJ~E1Rk_Q7v>8^}bl6P2dg-r7>}tzEYdsvHx7COBTYQMB5*tYcx}~ zMTv;ED#pSsA+c(I>tFuQT*CPQqr=^V**>Xe-^c2dhR-nN_!8WTbzwf)6_M=`AKsc@ zs^L8uu9HPo?Xg>zu|;j9Ma_~n`w1AH#*J^YiR-abbXytxcy3GdgB2pq_fFbD@E6qW zK&bk@#b^VG4-z2XVKf1(J-+SO+BEH{K1)TXE5q@El6ohk-s)UmntI0WHWv1sqtS5K z7R+llPh{FFf&;8_D)OAS*X|FoWO+MXMVAu%c+u3p+@4)W5S&I4@y(8eT0zD9#APw) ztMnY)7$_VdJGfZ050EZQ=kl5wUtSv?&^awsGBhMZzTU|A_l!kLp@jkof zk#3HT{n$g~W)|8sO^#h1BZn;#-K+Iuza%U{vw5!*usd%FDom7>k&su^k80)vflQ9K zK|V9wWqgLpu#jslZE{gg$Q zLQC`ikoA^9adl0!@B|1!gS$hJ;O_437BsjF65K6FaDuzLySux)yK8Xgp7*(RtG=qQ zs%vU~3_mz$@0QiwYw>vPzE7CASKJ`OH4TbKy5YaJ1PuV+BiO`-4O}K)!d=yR(Us6R z7hph&I4vBdb?cu4tan-_5JA7}cFKyH5ZD#E%IG|u3^$UO;JytTq_~IeODEGtDpLKNreWEHB1~o`0A;Z`=tbcNzn3h7e7l@(W^p;WM-x3erL6v6)!?Kg zgtOeQ)A4szHU0K#sz9!i1lxV&nh4X8N@2x6sQ1Kh0}=#n^TaQbakWs6&nfN_>U_#c zhI43b&RO=j(tQvGKPcbsLqjFdnKr%+?=}`XX{p@sjTypsxJR@e|L1MG^` z)2WqxDOlqH1?(6X8B9}G$2r6Iiy+JTY?Yz>$=$m>Cq)`_ZTAs3QnT|&_aT5_k4=8Q zSS}_*|J-kP+V}&JVA&4?5%kzwepDgcWn_{kiCY2})MAM_umTu>Bv#0qj{DfiALK&w zc)j86ncg_Xmc}O6H|yOX%dv@(f3|=NA+FBxAwZ3)3m^nVQLeRrSS_R4#=zV?zdNH> zFQNUJ>>`##{qc+>SRkp};>klrb=B4L5ux9pH9J(-$o4#1R9dnIkhz^upJ+FpsjDkt zcxBauo&b_e6bh;2$S^ws9X^D(`1e2>n`~qp8rM3QCFCz5o6PRfor3{vPDK%}wY#2L zI*BdAd=U{cWiFyoRi66Gg!lKETF_t8OklP8WkY_|Z4f#F|Ks%QO{Up-%J>%->y*wH zNrktv>^zA`W=*WP=mrl}nLKi+Zr1U<>ln*cYRj>}zt8=8-L~)<1lmt$g{X@s4jRtX zLN;Bnm($IOgyj0#Tu&=esdbIPmVdIS{PFjHF{w?T@@na%{0{~fyV4tJ&dgY1*uF?T zBAe|@_C!wOed=+WOMH~l^Rk;8-&Nv>`ry?Wb~+wdhUT*;*39RkpYh1qXb;*7aO<7# z+?*pA&e8d=1f8oA!Rz_zwYgKpJfwH>2V}&#(6=gk?+AfG$G3LM!;|*InZj=(;bATG z`8y*<HYTKk0$Syd@yYsgbT zy~3g^x(|X{J;BU;b=fnn>`Ra%i)LusY!2GWTVbEB9$wANy!oEtt`a|EpX~^B%mYcw z(F7BJ)H#z!M^ND1<#I6;tRZo7&fh7Pzmj`2i;#bomS|pElmC){EO!2-xbmX<`S!M| zr789h^%p7WVNL2sA+|YrJsh-@jBKbMUS<_%^Iz>{cR}(vvDO*pkgmUICF7OQC-K}p z&);w@C+Ca;Qqb(qk$CKvq2cnOZ*lboHx&ax(3$YeQUkxd8IColjQF6EW!#+`hQ3K|*Wg5fhq+}vLoCaTPjVvvh+=s4cRu|zP zUo&F3?(TC@MAD^PS@A_?s_A`d|q{59j@BXp`~v=y{rBSf>L?1SDYE55pNjOg5hqqaGS%9m;;`sanDq`pRo z3nL?l#4I}D^1oc=q8%<6cKmQz=llCFOb%G@t0ma{BjTb0WKl&ou~XqOiTXYoG^m7# zB0K1E&*PlWp7Uw!>g_3GQ=dRbWtul$M)xE>Am1?C)l%bgjb(p^;vwgB{xhy2H6=Yb z*gquI#!fO(7BBwn49E5(?ZE4S$MZxYtt7^v{I{0c((j`4nEk5s@!f7f!~meCZUFg&qtcf)jfm6b;hRo<&aan)N@{Ry22K>&AR?mKoyQ}*LjQ2`@(&H3 zykx+TM!(O_bM{f(F2~ZmCz{!;h((|GX#-=bQN2`J0!CYEZ`QWX3TK`@{XSXUxy(z$ z3d5m>pN$@1EQk#Cbog8zrz|k$*_mbDppVFZkbu|Hy(Wry!jERU5_txqpO2Q@F44Rs z$?A`0Bk0J9MB?dq%L;5Ua@TIxwHNgQKl6HfcKGw>TZAY)*zDMA`g=8gOXN`7FYrM8 zC}+AsedjwU=OehfGCX|i5YgM9U_6Si&|6)0NE$1MmuYXb-CTK9GQ^NPa?4YqA`MjT zGA}dzxGQe^A%{SlkrmKgvQxzGfQI%%Vyznk@pMttH@ca|4YN-;_UuD#yLUyON;x` z3fD0nwiEFOjdAE)-!Kb>d?8Y8VzFG?;N;+#-4x=R z)E>olRDiD2gMm`JRp(8+i5SPiEKwTox4`bTCX~k)uW5af(xc*KBpEMP)pc*zM0J?j zlTwWE7Im^v;>v>)m;4DG;*t!`wylT`13LDi-@ zz8Lk>bXW!|y--i3$aPZOm5gA|&lb@brsOejkq^$Vu)%X1l(`8WVI$+@qTx z-aZe0=T0{4C0Go)PUj1~b7j|4S4++Co|>`?k#yjfR!v~hW%428%;(Ke$-s}Q71;1k zXL8th8)Oim*ncWtNs7*3cMkYd8oT_l+MLuysuVw)+hav1kfOrBBftt+#Ym3^#Ap&=Efov$kF%DZiK& zwlNJ|q(5A=Ke;V`iA>{j<0{Fp=_IY;E>P}g@DR^do^v#!BbCOeJ%89vaB^bcKC9d+ zH83=EzTPu2LbW(ev#_vB?+8cpdxS~`ze9i!bWoP=5))+d8zV0S9!Fn)#1>R)H{P*` zPvd?S@!3(^Q}x*k1t(|0Dm=xJYq&diKrXD`r8RV153irXzusKntJ3gn&87!zdfGiH zd^baScyhi7R`ZGeyZM2ms*J`AZI=KC>Yd4C9!gjVR#jd}SRZ1yMIHh*Ky^E95l zpH{Xzf0ZZl=7jdQKrE?+(_0IXPGJInjT(HhUWTxBDP72FsmXb5FPxd>NP1dVXuK2% zmGfi=ge*SJHx4e$TbyPAwKa;hNH=LG+$!o5F~fLNI(H%CqY=Q`VwX7Xf|)MP%BvssS49Cnn4hN!N=MhI7I3bpj0HP;rqr!W#tN5s*;zxWoSg{2iGyj4Dn;ZHKDpS~Rh z|4B@T`}|2quH!3iZ}mNLh*r^@!kJF!k%6WDoKA})`?~?H*q`GqtfQsXOhHng3n3@C zK%I>AXDSx{mh76f-uA^KrCmAMah`ir>3n9M(;uEzsyb)>ad}Y5vLpK`?(R>w*Y}8U z7Y`)!ohHo3<#-zMnVe}?jN*yqSWFh;njhVRQD>cQ+eeaE4QxL`3z#u}yTkaRW4M>)md&>O1{zf&pyYBp-KQVt&O%f4fIxu2GICYDjZwYeZ{e zNI73isz$c|{7GoeYa8YFr>NLzM*OYKLfcKh0i9U-raDz>w}f|AHgYEVd!g&xKlaVx zqilCb2>))c|J@+Xa4>p4Z0G0q7b@WM+nxDpe#2#Q_tfmXlEISCm(Y*6`g!^jgBhbs zsDv99yM}*e4f@#n{`lIyRw0usBl&Kun=b4ybc z-UDJH__sVOoXpAi*-Ma3; zTTjFJ`h|@x^b8}ukE_P@a<1NP!L!`^SK;<$*w4U?C4c}v_>d6mTq=+Lt zAQv^fo7Wf6WR{G>96vHNGO*U)JJuaCBPT5`)1MQQR`$DYaGz_^Puc_wzFb|MY;7cp zmVDL`K@Ai8E(IF`YZrxT$TE`&kg(H$wTU|Uz2Ak}ytz2fCJ~58xs%b@ke|#|q%zF8)NQfXqrzN$dE|Ne zY;js6@Q{TZ{1vkImxa8#sj#flGa3)xOSKWj%8HBsmtQ7P6%=RB215;^p%*WU;d6%+ z67Nh_eHo59>Jsm})=G`vO=xpZ#+-aHdt z{Rj?(nhE~ur+O}aD~JqIrA-L!FPL9g<8wReTX5o`Ut_obr3BdohV~WD4jyOd>nXS` zYW0UkxG=H4aYsi4ZMh>YxZEo6)U$iP$VSQ(9fl)*vwo|we+f!(#)Ta8c3+*srH(_|PD83ls`UKF?c5`fY=;>fV>1*v`Kk|J|ML zo^B47HWDSjR_2p(;(OmN1uGd*h)b*k&wj9FzEew6>kC4XH|Mo9vW!)?pn;+wZmomF zMQmn+?yD@vBHGXDr49qgmmoy+FtLAj(+^+Ii%TjDQ&V^zp;wyRa+vh{6i^`kRck%A znZerqh}t24H8rDLoHl^eO(+v|$}G7PZ-+*~@j+h`IN;u1e7K+mTR?-hiV1Y4!YuZe zUH11+Zi{YfPi^TDnXZp6ISu_1LPS>i^67rl&|u9aqDSg9&Mx)W8vXGTbY%MWSKL#c zOgs{g$zI1>FEY8A9L^u}yDDkCa-M1^x^%VlXUNCy{8}wqT{3u@f_D#f*9ICI@@h_+ zTCuLEq{e`N?!Uy?l!=xsnoz8c9=qlc5g3_&Bi%>;2;e7gvpK|uTwd)#hS}0z?6O)$ zt9=|J&slH$K+%Pb5MSlt1Pt7vMja2VkWFS5nr(JCx0Z=gCl>!qs_30z+hJaEN5It9 zPAu;?+=U^?Y${cyaz%8CsAq5mREk@$?l4T`>ep!xx*&FUT@jH4M z)~f+pMad)Izd*GCiZ0qe-rZ|j`tq+@$>YHa&^EaLI`QsD0_b_Sw|QybWRk$ZeLW|_ zUjeq}!5GMdDaGT-y4-lW95zpBXad@H(~V@s`THJgBd zi>O9Ok8^Oy+#ULi{pyi`J`5G1Ns1BJ?KB{Xpd*Zs=3hEWv_VY+58Y2j!lyuMX_7cGuQve79kFE7tt(QCqo z6`JZL*c=vn-7+cs1d_{7et5^8utU0eGk9n%6)oADF~e%y+gK|#+CE@&U|FB4k$Hze z=9BaCvbL~Ol9O{95Bra0Y6Z7i6rz_AL5R^;iHbEunoPO)8yuo=c5od)p#iM?PhK!-xPa-~pN3^vLeHN>;$)Tv0$==e0} zf0D({I>#p+92FHIEhRrRISMG=M^03I)eg(t*rnUua)r1SdPNHjdyU}>)LYkukA*=*}^=5*mPmgYy8}@ zhRI(`FXH8fC=e`n%nKRMa2ZFR9CjUKwl*Z?jQaHYOR z(&LluMrc2by<1G*)1A_12&gg4T~Eb8)a%>6OXvwN7{>%Z8OchE)7Y=H6t&@F zkb@l_*eeC{Z;Na6!MthSHX>55fqJtG;E51HM;HX?-l-XH2|hYeZL0=vu%fQIIw}!f zd`#T0pC1+Vr3orjsu~Y^DOv8Pk)2qy@79OBldRg$U9@4y!n zELR4>WT{an$7!U$`)UA7VJn|NIsv(*DVlNDPjDJ$@M!Pza`Y}*#3JKp5jX2)*ySq9EM@uOw%|&6=SptC!PZ#ep zjpxe-f#j%`tEhWo!SB)j--n5fkPvJt*(?il*9Xs=MPum`+hplqBKpWqRgl;5uk`|t z-WAP3z4q0{N}1MxCo*V(Cf*F5+#-@Sb$KVc(3Q7MfK z3-y}Q^9pEN9X3|P#U~7*+xre2*@q{K573H`=|)yZX7Hox`qUdMOX-@pS(~^SshQ}y zeXs1mL=-|tT^^Ykm>4lFYOE|SeoDom_b-G5p_6u0RfKCq4_1y~sqSGI^H~*Ff*8Yl zwu;;-5F**qjpSJBavaKzpfRnraa?#7-pqK{-mPVHpLm{s4nrX#L^>rRN_|i4vq}55 zy_nr*#!4xQ`05sanfC*SgMmDgE6wrwugDVeNMLYev}(2%T1 zy>hnl5G;c3_sXySWI2GejTpRosWhRUBVlX6&`(GJ8xWTD{6k6f%C)wDCz10B=K9_F z)c;`R3m(P2zE@bD(G>|6o8#%I^VMiu)7|l~8aWcfeM+^`>RhqIC7Pe0=Qmc|a@ZyB zN7y0b8Oo?wv>hYD0SS)l&)TRM@NGC&a7+9;J}1#>jr&o=Ezl9-E>1U&P9F2{62*X0 zOMF}cdVG95uarE%T%}5dVTp}gtXl9%Vs$Fm#5`}5$?&Ku>q7rKTz2-~VO%iygqr4r zh9>T_R91H0SH=J;xMazLl%y1UIX(}!)X0d(D+DvzGoR*rJ zJn-)lVQlqWM$M9p@BT(|3;Q#O<=Em2j*)D*FZnJUu8@PdL_#u+jL&hSOZm2|5)@WF zvn^DAB*_y8Y#zlGb+KEnuhW-A$HiMR47zTK+6NUpydNx2p3sgtCbXZS+#=t_C!gO~ zaA5ipp@F(;oethVnTd;!ogwRMyIa!gK)Vz%{-$oF?6h$+40N| z_Z2HXI^71~%twd63cv4M;hv_Rp5TH@pYEJqpH~X77{1X#z<|(wB}H>OIjyY^_5ll$<`siLW7JEI7_4jdbxUCfAa^=bcA8fV7 zw56A}SVut#pl==T)RCgjc>LXNS4V3{t;L5?nU8ic+3hlw)v@F4uO1sE9->G=KqRz5 z3hXb%uxE|*rT7~-FUE~o0TN^^3sS6-ruc*$nr9?vd~_f|SWU$IMT8g07#tt< z&av3%0W&%Pz~JP{{t0PqFRNKi<+J_?>Caa#VCcn;&CA8mT?Sshe;#flh!3{vcI{tW zcGgLegFnJ$3(UFYA*;ZbRFG)UD`I+{_jA+d+8^JLgMo6kJipUJP(O_@NIbW5qqaR> ztGuGJvfN8arAO#jpDT7|!-wC7~%n=qkY@57}vSJ29im~K%^q4YDOplqEdkPdf z<%vijrcwS1;!dAu+qve;3eU}m$$+*(hJUJU%N_df^ zhU>Cnbi&Pi%EyNa#NEW7C)KYiDs;MzcJ;!9qs!J~O}5weHDBM`JSwvbKiu+6#16-*=!Oda?gWF+eNQ>kuSU`rv-07Y%Lw89B z--Z6?yHG*k>dQkAv5JDeio)je&g&dJ<%Ny*+m=r%Y(b5B zR4Ib-E}e3Kp!y1(PRI!*!kWTWDK94EQ&|EGo)U6jo#SMC^CGpQGFS*@ve;)s6FFolk2L#KrfB7L95qtI=WwoB!6>sR}sk z6dyK&HQs9OCp+0~)@QYzJ?=*Gg|mJCFH{GhbvKu}`4Mv`m)_>A+!5lot?I8p-6q&| z2>;02;Y+!7;|9o1%;YfhM@{aA^pWysegVonJ@NGv1`xte&=4y(X4D`Gj4?F<$d@d7 zN|P2U8wMRJM`u|tov$h>W(dGBb2-Z2=c(gmX#vLXenS9^R;4yZt92E`I{NY$YaCRRRwpeP>+gZq*8?)jLco^9rrpicIko#Q z=9?MyNedr)UVa5)#12dsiFPLyBovHb4D2r50Kg1CbbQ8kvEZDVgd*dD-Flyp&lCf zcgn$KG#7z*dcCW+H;+bk+f_UO;O@)A`TyeLwVMj+L;K}IPKuJ)pDi|LY88uFspCzD zn4Xs)KYM0~Qb$YYL+~R785E0>#!7tx{g05II9}?ToG`F)Z9#(2%bYArirGj=V}()@ zH^L!bq+A>z+>M7fZO$6MB7frm5iQx(8QOy52rVe&N*gIl3JF?b<;IokF|0Ob#sLWy zC^BIqV1|)J53^DuDi8xL{;2lN$u;7n?;Mn z6&jqgE4A>?=2=ro9Kv9bZ(j3#=8scPZ#C~9I~aj=pMj&wa)eLQk{u63R=giz=}c!- z$VJ5*%vQz&+0_`M6dVhPd^9kPdj7fsSKXZ5o^WZ03jaBRv30thQK9PYZAomdZ_~lX z`#LK@LVZ+cd=$~AVt3!i9^(HlH|nru{_i{^Mcrr_ma4zkCm~u^2pMHSfWXF2knE1d zv1|_4$mngj8SZFqWCJ9oHSaR@QXKh!K2Md}qPAIycB)Kl{oO4-q<}Lo6~ctUBkxU@ zorT$gxNXvq-T5iM$vBU@(k+66nSzv*{Nq}#ATfVRM#uI(9uwJt?FNBeYPMy{iRe;F zj?SpU_6a6axCizca}>%1ycveCIe08lwvC`skkW6*s~cmX^Yd%mpnrdS8gfFW_-%Jy5nU(j9%{VUe+Lmi1~%}^#0A5q_XKNET_79x6t9h zPhQPz#%fw$?C{&{`R0#mjKABV+)jScK@BNO4uk$_4S;6KJH3xfMWa{>mmAd~vIR|U zt`;S6?HeRGz{O;jldc8)d!@vjs5PHRqGF^+lAp}g;R#APY`Oj>Db~M747b-42s!gN zQWp81Qb4O~*s+BE;chBrY{&E3A0#(iT~hd3o@)n?fFbmb&#Tq<2c`(n$wg41 zr%2{v@X6zJIFg6>@ooq^lK$TZk4g|U|BV1Lxhf=Quw1g;dfmqz2%3%+1f8TBB$$BY z0y?zZWZl7&h_ypvnzqMV`PVu^d6udwB4*0BTW*oYDvg@~LdXTl?V-ZNs-nj9v#8)749F+HxPq5>?%&=W#Bmn6>zU<2#qEYeEi z6IU5s;IRgFE8WSm+OdsK0Wly4Ps{tKx!epB_1#0wqIyl9KY{?%pU> z`@|j?tx4o4i{x|8`iO!j`PPX$ZSi03xBVRf1j(z0*TtBTLx#aRg)kI{uDVBv$e5bmmE5 z)U1(0^$T<$h-eKUlP3mAi3+K9A%@6fiLCI`AZ3{cQ2Y&jzB2K%xNAup57>MaNVx#ZK`(SzyUx@>sN;??blufC2>n)i-ZP06RHT~uD@%Bgl z%Pp+e!?rnV3tP4pDT;u++nl$sldTW!*YC$sf{xrl(TKf6;w%!n8IJ9wPvRTt{;KSY zb3S#&n?nsw<(*KP%(|;{QmeP~a14Q>RGvztWprq&`!_ThV5p2GkJjHj8#8!M};1iqYIK7H(3>%xeCSZx~ zXYzJE;1tnNSglGgvnW7Wr1LzAJ=H)cEBisA%gWfd_+ROtQBWNqT`X+yt4cbgJ61Ge zUX@QplLR1>x6Buw(}euVmOLzkHWYD;bk@^38O6K9Y4|ClWZfOLAiq^@b2uvMz2Ff0 z%Dpgj;b7+bmqho;m1m+qCE#lxNNn1VK!Kft!={nKze_%w-fPxPvw=7+pZb$7PzE7X3$>()Ba2x=8P2Y2yyvbnF znG{y-szgulvg@_JW3^FjYaD=uPfH4;xj5dxl&Vp&2IU!L!Isy{rNdni)f2q(MLyOv z`^Ie+nOLn>8@j~vAOdV}n+)Rf zFj@`6(RQSp+Jk~jP?f;_K_S^ zPEaU-12nEK1kz7gSl`Z`19S!UHu#PJ{aji2JXWAxnV-KmVGe_tmyvq=A_wYf zW}#k82KtAmpQjNho5HYpu-g^7`g z0=ui72|CwI)@p*<=5`+8j}O^-`RWI{n5Mq{tc#ZD{HVDtqseCE9KXI>paag#RZfzA zGD8W?uG&HSQ24IKUP;{b&1@NKdHHdWdd~_fb!ur`D0j(iaZ$(hbVgoe+K8wWh>FDyo?|+I;+J%zrcrN%dY{Sow$ZSi`%E(aU@KUsbyn0}6fP7wT;QqANp5)d+3wa6p#doe{OHYrWPoPHhCZ{RkgdD*$E zQ9;;;yRoZK zq045nKF{1yp{d*i-k7q@E!r%1eB23}5aq82oNOl0{TR+SbI)+idt~Ex^xcfSH!kjoqB#xQL+qNTLL3jGFS35h^^>o zqkA+^-CKdp#~Eu1@HCm5oR@q|%LUS;Ny1jy(~HUv@6Hdtw#P>SMI!{ITxY$J!$hy9 z_6NVU3$dbwABxJw#kz&Lk=en4!ZfgPfPDrv*gZgqLJJ1 z4I2f+hs%*0L6AY!{F;S9^;Y{AW?J>$s}rQP=2Ne^b`WUoqYd!`7Pr=n>HO09eyIal z99ay%JR zTzjt|ZD@s8=GY_5)|cy@`LV~(HCLFTXnGPW{p zwzh6&=H;P}8R5oKKiG|zG#=CEL{rzI+Dnm2?ZxCdLz$k&I|Txy_qX00)kNf=vrlg4}$eyM*e`SHLg+uBCd6Lk_h4n_G4mS-}f~V41MF zN@{zKfNu`hrLZY^VgOEo34j{_@KAR<*(ALceTcv%F#Z6bGYS`kA%eu*P@@9ES64-- z6488InRlKeeq?462wy|6IUYwMj?m01RBlKLvq4N32d}sbHB^68M(1-9O0?<%HajeM^2ZcA8fNk01 za5(SF?su*JYBPKZ`Z)MhgZfY#t8%l$(nIX2mZ-eu1pVYf*zzZ}CzB8j^cl=4pboB* z)2oO1oW*${t2B1Z4j#SRJQHAsEMVR; zv_fh*7YxjS(z>};AN&aKaF{wZ>z#GfAyfZ$o<4a;I9BuiK%Mo~5-45@#1cX_hsI=9 zmA}%{HTkT0T~q6VD<6pd_tFQqh!%)Kc_Ni0!;h2rMk&raGVFH7>boId3%yxR#`?7n z={M6EDLk(Owg)G5$dS1p(Ha`Q)>;eSW$0=zR%lh^_Fn&kzXDpEXS0h#k2gNvV#Mx* za;Wt;N#tykhHyk_vV3*4Z)2GS@3~|C6u=r>i?*P_FQ9mW&sE?;$fW$=m=N-it@=5| z|El$~hHNJpujYc!8vDCE|3Os}rizXc$M`f55y?buOU#@*5xh;4p96)z$Yr_M2sV3G<7akiBrvu~F1SW)DgTGL%J*Ij~>* zOURzIvVg*I0iSdqZ4tU;{+E)4)5=Xx+VAVvoDslgMzrFk*PRs-zOD!KE|`IjPZ)0< z>ovI@6WDccKBr6P{0-5%jr@^Gl`y0wiYgS=)S(1u7gmDz+Ka#ywtF0`uq9x;(b5wd zFfJ?Ft^)J5zJOw?P(AaZX0k)sctqOySlapcP~Jx!OsRx0goUUANQkOAKw*yk@Ac{T z7GO1Nypn#7$;E(Oj;?LnLv5yS|O zt&-wOZt>A0gqO2X#B=TLaNGg3p`y93?FceT&Y9fmO^)&kDc_qOUKk_6`VZg1dOo0V zLE@Ge`O0m&D2AQogvgoKbf0qltDDf>!b(JVBrQ&tg^G5GN&OZcOV_2i;Aja2z2_)! z+h#V9>6fbuOv)~PQ>}b70gz87mPP~^gns}~`wuaTg}Wmk5#k@42%y$ckqsECp0(ZC za?X)TbK^Y#aM1ZvV80-oi=)i}fafyDgSrXtl&4|$Z1N?aD4JGhhZz0NKbq^u`Oj^k zyxt}@7CRW4`Lw~@diO`vf!4x@niehEvs??tn1!(kb83esDo&2YWA}p!Cd_Y?vLz#< zrm0#rG9R|$=M+&siV{TxF;#t)lz-*(n};L|Gtsx zB@S0HTKGImln0f9@nmQ$WoS-Es82&jENgB?9pGtFU3>BS18dv4FlVDx9@f!;Ay{_^bhz?3nBf(7#TXht=K2adZ078OvJvRq*owp1^~fx5*#iFKpWa$fhB% z2qJV)2s=$ye5~l#>07c*ree_Iqb~XRo(3cO{Tlo`8i}q&Brujlf!vnf^P(XZB~j~S zv_9mhma;Jj5qoFrsOGY3IK=2ntB0#xI@8NqK2PqShg5cp+wEN}Zk`C7K;e1{Rhsyb zvof=ktmnOd{+9K)Qbpp#+_2Hz4MfkeZ&R5m(is?Q0vYzM%fMJgQ~RG4ge0j$O|OgT zb|SS+*-fS@;_G0sDN&G+>qsH5V{bH0%8C`pcW_Xh6}{k2*9lVaujz=EVzdUbQ(Jxq zL>D8Rf9^@L`Hp2uHb%OU7)O<_VkV(ov0BLvWpOgn1-qJB%u)Ee!$D^<%o~!524GQ0 zT$Fyofd;<9xpN<7!QOB7q=c6z18m*19W3_0JXdk3!MKDJ0t%9D?~LT7Wi|JAiQx#E zgz}gbUk@4*!~shv2;w}$BCyU@M3%@Lo;G{FdtUsreX>#jIEuBNk+HRz!AUq~2k9F) znrmQoO(*0N=x;C-0|(xw-o1DGnJxic=StRd*t>q1peHemzgn<%@CqR0Bc;MN-leRl zV!Ve@p*+MW3WqBpm_1dcB{$8ot$}42f({e$$+BK{sc&m#e`96y<>lNq?eEwQXOv!= zvwM2=!&ZY#GZk$vzl^*i0Hr(I@jl};L1C@&#Ms%%2+c9I3T-YUyf(Df?LSKI=?J`^ zCa@sQhT#RmQIB@{TwPi7c(YP=941mjCD(aJ^h~LSntgZ{M)Ei~PEM~%Sv=K82qOgA zSRQg3@AR2$-jU}LgM1m*sg;O*-c%i9`{mq>rd%f%=y*zN4zd4&%G#WMO>P$EWEjWK zv4#Ca=$;x|t97Y--!{nY;VV9JX0{SI*K_A(g$`r3m(bu}sJ*}edDBJmBzhbQ8r(|peens~f+3syM0JbxwmQRY zWjU7cU6uxkHYBL$wXjBc{#eP)Ibi~=I#o@8l{T2It_+umkO8;pAxDSI*q6f3-b%h0V)P`_r(;fPp}$(OZWm0>n$T z`b0>4y62PJCl&W%AEOe){K&xk!jPya9eaRq7%mv-v9nF?9tS08lE!O1rI*to9!^RzRP*?dRv9&i8k-#i+m8 z`2_sNqK|)3w(0{;WbQidXZel zau~TVNj5d16#7&;r;vNP=;C^qONN8r>yD4ql?`@tKgL<^@GMR^YR*glgTapPrnJiA z;Pv9JXl_2MJx!vK{Wv+m1N-$o1GFqOxRZArU#uUX|doxOAlp#96>qk7)-|Z<_b-2~Bv4E*BCZhr1l($e+_ECTi3UD-mmIknCnZ(V8nSZ+S!n!`8EG^1R5+yi4poFtu+-LAK@U3JOV_x)zO#zO#xE^_WE-%L|tLt!g2-vs-&^Kq|f2UdD^{7bvlC# zjbBq!+$^+bI-Z`Q|L9P>mY5x`N+pVT5^I+8db<|DBEtI)|8~Rta{vr@oe*6{Zcm7@J$IZ4_4}a3OVl?=oxk z1i0o&;B9F`iK@O6fTq$MD1Lem#ai>%dUZ-5>8|4fv)S8wxeTX)P;&4r1~H#NvPP+H ztrL1&2CIG#*YQ8AB1|~x(y~^H9=1@DmYhlxk+50g#LcYMJ34*LFNr$R9S?S_i8i~= zTan%w!Km5_J_jxWUIWt&tJ&^PGj0M5N#pw|LHBs*3$}_3wwn{9N8-dCsK{{EM}($F zgcP1iF+P{(3wP_24Aw00_(m+hFx4(QMfz-CS?TJ4?EzqySHdA#Zt3e*nm+BTAW*l1tOUO0~U^` zKL-ZAEqOO7Iku`&%|XG;!$wbE9{VxtYS+ zg-TZ1>XH)%VC@E)=NXZ6PV4kCwa26k24+LV%)B5%bu`5vnYm4j6FiEYmNT9HykBRgH z;tt?2c{`iPE$^s+!T81ynw0`)vKE9O^BozFX6A@7@_HKuOzIUxeuH|~moZ=()Fiy+ z@hXA}w`;`01D;hsr&>$s1E0`Fc14>E0%ZKb*Z8l}m;eC|H0ATQoO$uE5xoEflH9yI zud=*=tah3Hr*S?tKY|(ZY;qUZ=_x*^K!ARF(8QIjJi1q!c5p zFf48$Y-V6)XP`FjE#OrlXX-nXv?1Ovow#VrS#*fNpN}cLyVK8#$X_mQ)3}CfljT;+ zuFTCrQ1i(Nn(MU-bIX1DLm`}I(cA$+%TQ3%|MUP(uxwx9GYF9O((WsO1QpQ*sP|oe zI@O5K4djx5x=pMVn_{L&bT2g+uu?p(RfODBf#k(>)|6y8>!Cn!r3emVntYH1zC_~$EZW{ zNW!WF>K~0_et;)B(6f2!&Rk2U1Nmh5&$dSLJX~y~{zX9m{e9of1>9{vp57DM*Ul#S z_Pj}AhXA$xsA_o!dSXJRR;TA93B%%Dcc<37aC?RYS6yMWfbE%}qw@YCAqC`gq%NF6 z_*Tf(c#Us(6bPipA=BDWZf(2f+HmvU;nxNeHAZZ58j4p2v9__={VE<986Ev*hWWk3 zGA|ws7ujDsR&D{==RxVsY0w|Ujh*WrnGuKW9G(1pWEm`ovd3za>;6>Tj4qZb(7fmr z95iAF>H|hky0h6>-+NPah%)&pFyVhYPtCCY`D%}3Ve#LwJZD!P8RK&sZix73P35pS zu9-hnsN%C8im%)E5~k1SxKPH{Cy1>boAgq zH_fX0cp_kYS%arg^7d|gtnwc*ivB0Wph4jah}aY_1lQaKgC0^jSVtKU>j&yO+KUp7 zwqgf~LsX~gWcri;vM~s%Zj6|yfiZJ*bgKu#)tbiZJdNQhYo2X@_NEoJT#NcWS?#;I zaLi+qM*X-Jp+y7=r;785rCBw>8*F*U?(6KvK-}0V!h1Yen+}u1smBo&{D6wAg1OV{ z@_tPMD3%0C7;sKnuKK(D=2UfPMOsh{a-Y#XT5=uTC0mN`&FPkB5}(aXFBTf6tu?LG z?;KSpQl*1*9Zi4l5N*nwvr}FOY>cYH`TbH8#)gcUrRV+QrJNmpzapS*qpA1ViN{Uzwlu5q&zkBx6O-}AO={4&Gcyi0-M zc}*CQGvSAlU?Z5>$MbJ5?Y)NsDs0k2d?*l4<6Ru3)Nf+%yQDoe7ODR6Y}qdLcy>&jYpLAtEe-6?0!^f-A$wOj z&mR8GdZn-`FyFclG3y-+$fq(v!uck>f8rW5^Gk3+f~@rzO4xA@h#|kv26EZ>+;ynC z`yuPF8$+?qUrSYNp4lD2d5Tj&C@j3z9 zc)>MB#Ss$v{tm-4B0L}y=<(+qbd}Z8c;36XfA(5lbSl})>NG%@F0oM>j9|U3M$scerGxyqy?wS zifk|4Hd!#54KYY|*;q`@nD+5afy;~ByzYeUS5c}?Uw4ggeC}2U9mmqeTs3~KcVz%m z$+t5v<8Aq9$EBE3z#42ir_CHivj(?^atX70Y`&Z-)57~cx$sHt_6$WO_lKSHtDL+{ zL*93*0VsE=jt`Ozb5(jd3CXA4OGw`*7H0bO_k#sZl>L{mokBek1(1404@Lo878N%A_%#>ru#=TfXTQ5^}nn_Bx-3c8@t7wjSG$puPhyiq%WS=kKd%?zv%F^ z_pXi?cE&aVJ~7cB0{DE`B`V${J0Xln{{w;WLt*}~11c~}V$;gNc^Y8Tads;TDBJR2 zO(~(${19Nd^QLg{1AV{Ao7)q9b-SaLYPMJ~=B?t@ps?6!4&Gl|x^295m;POlAeE)H z^cDpH#qga5oul76r7#8W5|RpWfs{*cs1d5Hx&*+Kv^2Ifp0@ra*To=C!~5BwfG~DH zhE=-&=@BUV?I37s6HM&{sSA$UGV4^59MO9QzdWm3p8Dn8VV7!mZYphj*xz-QdWO0$ z{3LwL??|`b;IX>PSn(#zD>ei?b{|dAeVB|U2sb^z>pfD~6HpyvS7N$u;u=v51A8kY z@*=-<{s7dJW&%DgPP5g#os7CF0l~sRg*%}2dfNIR0D$F^Zz|{HI~1w<$e4T zAuVw{cm65cf8jZpk-pBL#l=p?J2d>Tzj8SOPZkd4`@{tdrA14W1)WPbz^BDI8V)9A zxfyD&0g@#CMVGx^Bfemtu({RVm0Dy0NfJv}yED$Z?iwx4{RE@M@Ut08PX6x?PdN+C zs?_oOGyhgfEt>yTyaTn2qb|hfc(lw5!lj3IaTB<$}RNj;Uac%mG%EU&eN^G%l zjk{%Kd7{3wQ1>IO!*lR0J@FA$AWVnie_az7+NU609Dv%ppQ9;IniAx!-%`bf1pPf= zKoT_tIDIw9z%iEI_yz!{phCowTZn_ln}`3}H&nRQ^Lh2hCeU0h9v0NQd-2K)I-b?8 zt$K4Nwmasa1{z{CKdA}J{~pOP%y7&)??Ee>(Dx#|Q6(Lur@Ozp0a8Yo{zQG7G{N=q z*9Q%ZjtfKi*1yV|be$>%&)*#$Q&RXD57Q|Tb+R;nRVkG{v-iIyNo%Drra0fk6h7D0 zQ&Zdg>zM|(q3Fu?#8_B~GWPrj9Vw`=P8d^PHb5P{=gcCnNn4}Q>L#|c?QUPwbsD*M zZGIfprk(39S$&d6SsOyv3r&z9sXR7~z7*S-X`i$1-pc74q)X=vpEQR7adEd*Xg27c z7P8wiKMI`22tdb|yxN^V*2Rg*-6S#SK!em8^duNn!xtJhAwP`6p-@7sVC80Q@mp+` zDhHjmHxD=XZ49G~SB@KQk`5{fVG&3BJw6qI(Bf~SO#K^KCMs2_4Jx&&i`$SQD&>#H zmJ5#M@{rHbIoNqSy^hDMrQ#SeS!)}JI_xYrFTLj2*}XlzYm*vtBKa~Zf_vLL5?B!b z;8>ZOxY(F%HWGQa+ieFa6yOqEB;Rj&mtl!c73Vh*h8)4YL#}6TEW27=vY>x+TDi^L ziVf#D`(EZIC46c19}~m}kqMM|L;bvQjSwKgH8tV?6q=`oy%YrYs`8!y5inGH95{ex z0Lb6^zqU4RAh}XYvnJ03NCAMl;pgP91C7$O(dlXKn@*o^vp-v`ZVY=f2I**^-oX&C z8h5q4O72W_=wGzPqkOdh#J^wOPh)d5)NXpn7Y|KBigE?^YN_pn;-;I2mr9hCC|Q5c|VZe(bA+{dq9{yjprJk?TKtJ#ydD+2wB* z*n<-_VC36Ugqw*9&7`b^Efic1t9zJB`Q4K5)){OE9mPSLwMIBXKd2CKL7-1+IYEXj z>VG4h#zHX<9~gG+9C%I%QNTe$KT;{N>nM?d(Mdd~41({5qMrKBp8VnUT|#$IP^n)) zf-7&{4-?<%!Y;yhog32v3)*;~^Px~hl)5im&i^|X9_LofaCl0B)kUnaS=P8*|XPT!IWHu(MsxXH{kR6NT&)4xoHeCP64P79#ZbmKpV|mVcr|P#20*XnhEINnAT~@5y<)5|XM50TgMqIAR zA$PU_!4D&HE#%T`Bb<%3vCy-<_H<); zb}%xFX*?&574&D)H{NSQ7D!mU-p^KI=3w<-R7%dO(HE73Ad7;<1rf0hkN2DBj<&^U z!W9{^xK{3#p)k|s6~|MP0=vDp>1gS4)Bj`FV~zO zB*DOVd0gTg-MYZqdNQihjP6na;;HFQ2QIwbLhCAt*5GPY&pV1IaKK7SM|&5&EL6 z=P1}#;XuS&HDXN@gnO49rq>^To9p?%sc!JsO^D0oWh~si#<=J2J3v<(-~t>?u?Qe0 zj6*)o|q^ z`0-xI(QVBs0%I8*L!)*Eaibdz;85V!7sbl-h=SSb# zT8GL9k6coAxO5>tzthL_>{VIvgj4$7gIH)GUHE&H)QD$%OpDho15KjaQ+H)&XC+e2 zX2f?lvC)KYhXB3&?KiSE*VUGW@TGj{V&jI+QPS;>9c_=*xu1_BET|i$1P)`M9UM_! zgbh`0J@+~k-aJ4xY?Inf;NbAAliCX6hwL@E&k?rmRYzA&Y){5HE52$)NrG@e{F*k;MJV2jb?o5+3igSd@;$4(ltTy)UEHlow^ zV))*aN}D99ewT`tQ(rIu^VW`!MnvS)$VyLFf{4@B%4(I8gg0Z?3dsfhl|GZjFtrLZ zj+iI`#O64)lJ+1Fn{eAoy8-z(ceW@Ih3UYUp^MGPyRtk3-#2^#07%th|D)!COnpSMn3`sC;CvRFEISHh8h zT5Y1l4y1pi_jtV;gctv4uwbtaBKDj_cqX9F_m@yxM)tc)toVM=GnFMAJuO87iX+No zI^xdV=_})&Eu`#>j>n8msxch&t&gT|s?>?=aCEZGVs@W?VV6QcXgjF-C4A;=rt+M3 zXgw(N_qW<#0p|k&j)UL8Ll(-}T1AKGHmZ}&;9@fp$!-eP@)meB3^yJeY*Z6fiArYx z1?3+xx!wD`Gp9Or>`YW5YFuc+Gv=;z2rH@h!W!*9AArt6hoRDI;xuVm67!K zBIw!gWL3Q7t;9!<;Zcf9|68ht1rq!<6EkmLXp+J-S_=U@>(`ZbGAOhHi<1CB(w2F0 zAqHXj$y&DSmP)B#u69uBed6+yG>6ZI-!7-&*f@ZV*hvflg1YHNXLK@N^7wcQsl;$6 z{DwuP1sZ#qpU=Xg+Jg&CaN8#N@vCnGb2}aHa#C_=_YUqjr_Nk+B#uiK(N|c5N?CWB z`Pzq#?dIRC$37}7OuqR|WmAatRbqz;QrN<;@wpN5SC{4Zr?l)peV%Q!`aQ1aIdaix zvG1nE_ih;8<}$VDKh<@Z`#ihnUcK*N2`7omF#7;?7L{+3(!O>-8GfFZ zLayGmBLw;7ldsU|iE2(YlwwzCO7vu-LM-k51b?WS0jtY)70T_YAaN`%g^?QM^{L`E z<;=Pg=BFIi zp^^g*G8!$xhV?|)Sah0TCgf0+^fr&}*J7!AXp*ysa{d!j;uU&m+8%9V%Is)CC0zkpDxk3b+&nYv8v zFTloF9A+uQp!y6S<Eo( zpXEgd6$CgSB+ z-*sooNvts8oMnEZ%+nEDYjJGwCj(mnda^96v_Vp>ngH_H8*0LDf%~XbteA`T<)h8kN5J zNwjasew!Lhubb=Uv;@EDT=cPD*M;i*-T}w$h(p>yBEH&wiBY2V_x(+wE@L?{@N4wM zQlwfCIc-B#L{x5L6uWW1E>4hhW#(L7oAN5m4;=g-lS?jZ|7sX@GBy`PBmOu=Ua-kxbvRCWrOvW5k$_74Mp@B#pIUCljaa}L zW5zjcKhv2eF~0V5AaETSmp9yuCB}k}|IhS3{s*VtN8aW77aTT?VGEQ6gMj&N$Jf5j zBV9~^zYbN1p@rHmb~jhN0g9{h+d?iw60MKoJ8@~HQ{qx7OnamgM0#DDG}R) zSi@${5F5tE=qEF{H>Q60mNq*)x3U&Rb6{vY9Ubs`_0|I%+uVYRbHq{9uGE>c(K3)1 zipJ9i|1haksU7{PI6T*-41eFKwJiWf)Vz(WXn$eiMc>~dFL^)RB}y492#|U5)wM$< zr&k8o#`=Q?f*EEX6Fa?cY~-WsVa4+Gwwr<*koeQ0$UQ^JdSftTJO+z`Gb|P?V;n3I zMAy5Qj5Xc0I{LU>X#V!>JUyN@+MIL~;d~(p9gRM>CCw>SWLU2<{|Ht<@mkY+i^Z#| zD_w@HQB#vwvUz-2m#E7#G$t2%884C`x}hmkzefxGtFA$CfA@U!W0oOdfisirelPW6 z7K{)|tG5u&jp(*iVa@;{7D(^T$55fZpnuU){nY!tQe16PMoL_bMSo+j&9JtvChhVQ z=vYnu>}>NIf?Sa`xlv{Ox?yMBA&~uK}sl# z{nKZLpPi#y3*R9+ZuwF?;z7B`a=!*+AkY<{s<7zzSsIydI;;;%O2rPRjpKFrIko(0 z!Et+tZ8LGPd7gY4*7$>jf_8jr;&n5;_RnP#B^JNhUeZ@DNji(BDj{yWRwkIJP6d$d zExM9STfCCvZQeyh7Ss7eMOiKU49h@NR&Gv?s|h$NC`tLWQLkpHB2C3PU{3&&3~d?Z zH6vBs3CJDJ(V4m=J>P;K++VmH4$?(U*j`TMA%6HHMM_`5Zko+Z=&`J|X~1l@d}!2< z#@^!j5(`&t|9H)faF3MeY~b;5+&mdua!OGfGSvIn?65#(QXJAX@N7_Q<=`x#;+V4< zGlQxPS9(AV`?u)#4Fp;#s*9;fu=uC2Pt zJ*I2&F9khN6Y&IDKqLo@XwUd2~7~F8mCKjq3F%mzAm!D{OEG` zY}-P8aBmGE+A91&0HTG2z9<|-5(~+I02CHV$stgX9Kg5@6iG~0UfcO`iv%3T@8!AA zK@e@VpiuJcD;Lz{(B7?Tvi@Ao$4Jis;Ch(ZZD>GE7+@5rdPSJ++X3y6as}^3hWdxh z?ce;uP5b5ku==BB>jJ9Rj9-ppK%yb621hpPZ|0w_UQRlG*ceyE&^q4?#m?f2v#CTV z3Q0hvpXhl;=R8k42SwwD3*}g?H?K{>M*f`CY2F!VKoAXtuEk4-YQ zS@%XWU@5Q$L##Rxghk1;dAtMK#zag+b1WYB!Su5Tib(mYZ^sSn_C{~4mcT5V8;@A` zNbKx(_O(H9jrk{Mv7Hh#IgT%G?q(%1ijU{I6{LS=nMDEz=v_qF>pB$$__=2C(;av2 zEollTR=#)%xb_PK2ke!vd{1gf(dNX<%SsVj1yK272@8I_1+h#VAwAFa2+U9%3@qzE zy3C#%bIFfs&p0F)KSdSY2UcX%p#BYwnR|@5t{?Q>zAl|AFjLicHr)1yze9jf+fp|< zybb#i=$3i+Z|J-==t*&Xdr;e4pS1-{$V(Z&tH~pSLiWP|lezrHlIGODxQ;X}?Ro%9*sPeD)5u;pssRf&(-P|dp_QfmPWce!>K!N1?@J+vdjgW~p&z!&7> zZN2+D+apFyYBAYhK^4v`b=PtC=7cINb0(y8Raw8^J;O8F1U4GZ++lmuFE|R;%BZpIcYHm zOK)z?I5&3gs)Zek`(h+XelQZE2)$+XX-+$E0oco$M_|P_QC#savFR)3JjY>?<|fO66&Q1;j5@RQ}U8(wwn$Fm#aJG>ToxrGkIxJXQn|D(;{rY?TEuGR@uC?ad<^1@Ay3MQa zw^@rIhOZ7}6JGyra+hM<5j6Fp#`O~qo&NWrMDSlCd_hBAn9?eo*=p`HY8WYm&b#`foLv$?Vm3fHbI zzR!t{9 zGBokW;U%S-^_UgOEN<*Bj7m!)t}oBEX;DVB9U~_?U5U)C^38P1ogUt(E7iv0L!K2% z1W6NtUw{JxT0`z^vA8}{9zAGMT5fA>d_jI&+hhA#mZk%Aw4TvDHO4ButGsu?U^WD9 zM>V}!GX#@dKjo>jyD9Yh2ml7~*#=@&!)|R+&dEq?!5(kWRDV&s69Ws_&Znj}ymi&p zv5xGUyM-DfvSv}AT`xGLN611V1qHGp&i;e*#rR`L)*a*X^3!?rF&JV_8508J0Q0IU z{Xu&~`bxAn^dpB^4+0w~z0jsa0$)}D$V_y$`9_}&Bq+ZK>DxPZKz`Z+lf&fFp8Hd4 z8@8r8Gdo{?vRFt6E-p;=hjg{_RC>O-2EyhV=LLIGu5Q9tuhQ4K1(q;%q;ypjg13(u zx2k^Qu9B&L&b&pnSL-DOE~TYG70$18ZSR7+;zsXBm>gyd3=rx@HFlSnyvZTb^A?8g00TYuQXbKlA({CS+Z||2Q?xKkl(EdXNw3JP!PlMcre-Pfk}0=p#*&2>h$Tcj+?*U zi{j*HXo0EyRuriT68RD8wUTsbIroSPsd$+R@*gCWQgmn(3v*NuaG^diD3G5a$ON-d zP|*DR+B0ZJN6+xJDua2&gyGmAef_e7Wbz}vzq|&hrPhY|<}e4&v|ke+a{7?`N~g49 zzr(%0n477_?63@`Z-D#znIvYDa2XDwO+`hd^|O&@kr6+Cnw@#mX#ILY=;RSJ(Tg=W zaKD@f3X%{3v~{zhG}}r3huPRwjU0+3iH8mB4dGi@vEHG3&mn84ry?YIFk2MMnU@y? z9mXYbN(@Sh?FT<-^2HEEgv+N&S-0=qAtHRj&=NSe-hq{R=5_i{?SM zD{FD)N?v7el<_%j0_%&~TU~#*w=@{JdwaouQlM7WckLTcLHPXJ>hG09^${UQBJ6+! zWoMg?(Tw`)QbPvH&()QW%LrvNu_;oj(e2GA#m^&sEm+1t%G-GoYqk1>kb9X6XJC2g z#m!g=f@8VQN`E||$XfoLs|5wW%WG%)E9t z_zRIec!NIYYBUlTJ}|ZI&oZ!*ptOt@57&51ySO;NUVpVU3gsiX)}g;O2G&_F!=&}R zpf=ZIp}ywfi>!t-KCkD85r9znS10EU%1X+*MGLZZIHHF4Ct~gk!`^AP*~#x_^~%|u zpSa3#YM^@-a8gT<^J+sRr}Y^X)u~ZCMnHXk*OH+ZQlB3ho}cUE$><+3s=MJzCuL{~ z7%VHUs@g#)ei=C2EFf@w889Cb_xdJg`{_$&#{h#ix62AXY2ZvbNVV(Z!qeYkJ|YX$1^57ENH29yPv+>Rqi*jq za2v0~b}btPZAwo_(d_2J!ob1;#lpPj9~R+Fkw`rDY#r;SaL%d)I4HWB5XMBwo@Da9 z0|P^&d|R%J0q41roUbeQ>u6Ry4iY!xTDr8a9+z4HK7IdUQknB(ank$#vbUhBn%l=K zToNsu926BV0y`)&V1)UQK!P)aM4RIXQqQp1^r1%KY?{Vy@oB>mOMr8m-O+~S$=o!j zRk~)C%-(#v`y}QkHIK?TIi+h)PnR1i9UeS=85u(s!rOB(lKx4chGFXn zb!uzxKNqq(^@IRP1aoSRo7VhsNqdri-#Hfr)-U~^FMxp0*`PuG;#r-)0P6p$ULbnr zXO(dQrOVSp67GJin+2{cEi`L!U$gf}I>R4esLt;ijm>r4{F7i4QL zSys0b;W@ByKrxT$#dbp&*o&%BTD#=aDkI0&-24 z_2DRpA_SzIP5SMQB%PmnSMtF|0d(gn_jkQnzy3)@rGF9YA3+G(E-wxS@b$1lTU*Vi zscn63i-kJM?Z`GHJnkeR`DT|3sYYlztR}Pb1&u|<0y5`RX__wF&5id3i=|H6^;%T_ zck9jeI27=O;lJ5)jRm*IYQU7GXmT?lWt<9Qq@-;%&d_|EzC3ljjW$v84-UWggNQX_ zQFO_$WeZ!{_)7J|ro?VAp@3}+35LqtBDS3?w}lgKdUfRi=kt9VV}dPVeQ1)a>+Ix3 z)No`YcHL{)e2mOcBY6$)=v9`M`kr)ZG^p2VO9zO+*1*o!KbVS#oP*eN2L0;De^)Ex zz;K!b^ix!OWlbgX4daw+R-a>ibbc$jyslUZY<>>+lbV9+z%xz@&4|^Va$a9Rs6w+h zcM&R4q8oaSc}k)e${h+)BlGzMqXv}~>vC*KB8P}@+EQ|DOPgG7=((Rm6&c}?AwP`W z2T6D;dL?t|T7v@FVd;9yJyTfW98|Dl+mU?U@z|MPsZE2qsI1EGerK^TM}Ale4FZwR zUTdr;l93Jwc+DOXdZfpQ9fs?YWa(%ty|KL=$BE*#H`X`$UL#m8fN$5}Lm@$THZ@k@ z5^toNDJyO*D2ynw=QnKVs{Eb`1{e^PNeZCLF>TCf00RL_+VOAYts=r7Rmch=`WMQyW zhk`%yO7x49wiOiodBf4%Y^47;r>Nt)ZLd1H5HJR@`0R%2>_)OyX7cl%=FWbk#9|}v z1HLILQ+#px{PfP=&@t1Qrq^K35!!;ls(w*Z(GzZNAu&=mrnZ%@2%`0D;z|p zyJiXOiOlpSo3Ajp$2rw`Y*I>osOGoUe-qXMXi*R;PJKD>|)>tzx4WM`87k<|>rs&)}b3{TdkZD4?w~ z1N18WuVBQq_sK&=oZ2rZWnzAT(Uq=ztqaYD-8UKjiK%jJ6^qWtIlAPx)`xT%ZBEDF zEW4EtYCD7Heb4!LRl*QDf!5cl>2(?7>I}Zdf_=6e04a*|+Zn+_)+UJ!iT&i>cstjH z*dq2@78^pCxK}Us>~C>?PZ|9u&>!(IE*6<2Yw6)3ZBn#q$-0EdHlW7D7fqD^8$?ch zVz;=^lp~dUDDBc7>^eg(D21^hHTurUJhi!jRD|y%=)x!S&wT$0k9PKG_ zf<)$B6>5GBwh%S7=2u?ngS&q)X7W{5fxC($B@~UAQyfWv!LoWmlzOk(N>1h~!a%;K z^IouKy4D(_j(1F=4tiF4a+22dh35kh57X49K|cQi)Ce!}n8VO&)JS8`)*D=x1iRE( zDN|2oUtU@%l9DMF=K=4(LM9w_3n$cQ)&9dw3hmvp<-K*7QzoV4W@ z_u&mm2;kz)g$7{W-$QF!{npAbM81T_I`#Cjf(ch1+E+$^(yVDF;nJl0ARi9b_=ITR^MK_$gj3^ckrARlxFClIhFxEC*5$Cg z!{Q$`TW)Xkyjhh=A$^smX9!pg6(rA4dsTn_UEeuoef?b$TO*F4vN>aP8teIZs9v9I zyW#6UJy?W%&8Dc>ofjhxZK!G{FaV2^k{o2Nnc(-6F`$XsL`ecQyU1iXV71E$E_ zgv;g0=l1Y%pu*yGjUiGRH*ZmmHsE!$bOuD(NG@Y>{SvhM$?tF@zFz zOd&x6s197#QJ|xN|4l(fm&3ssT54Qiu_i-WialR9U%@98|IH!&6>~7?;kPaO^-JRo zGGk=BSi#zc7CxTQlzwsMs?S|@d=Q_Q-+|v}Jf>q-W`Psgvu9<`1?Z*?MHp@Qip5%5 zISxb*PaC&Mpv&Pj7Z3I+m@0>5tpD%6F_7I3w-~1d)0m{CK4kvcV#kl9bguu-ZRbS< zz*8Y4`l98ny=k$x(gf zwkd;;w?4B;t=?CqzThe!zc-eF`|ftpbHv@YA@DuFe9l7!5`X?HgQ+<;AM|>O&G1}M zQ&guHrKbi%CsNJ;;K%NC{Wf6f2u*@CsPw*UGi(8byHC+g=V2^s{xGeuNEXV}dkdW1 z71n}MMR-~-2q$0gwg&J}x(c$2XJ8pjaUVA<^rgx-T(^(QM3fCrTFG};xc1}(FJb`z z1R(2C-iBiaXiLJOc}b$7ft%r3>H|#@69&UkYdJ%MRoUP=EMiE{mZ_BZq0%>zCLc$Q zb(J8K4xj693s3X=ONafpN=OjhCnIJ_7Fq?J1}{fAAuhQM?RdpbK`A;3|g!PFYT!I$z0EO@{9Aq zog;D-MR`8De<@K_ub&sZ-rb{9hD3?s^KBS{6^9RR|LqVlCcLSVuClKi_jzi|m>zX) z0D_*>^MS(!2oO{L0pCn|Y3|IUT!o*JGhP$_>2*tLd9zWQqtgQY*UJ+Vc}*1pE?r^D z(#pGJo2RwDj6thB`Jr1_u(IN_|0Azg;G0}{Is;@-Iov1WgBl1B6ggla77Z|xzouBM zs9*sz?W%DZNKmo5>y_DPLL`B!BWAS-Vt4=-O9dChShwddiMMYxKE`wA(uOa10L7p@ zsj%M5$9Fcz2~G8NDfLN4yuDVUyVNqzNZDSsNgcK>OG^@&?^?g?LJ*@~I-SCT(2lG} z_wHmRU4&6dMS18LIr`%B>Hg>8JqJ$*3pYWOA#WlG(3I`PAl1YlRjijs1UEFonSbgl z>+^kUy(bTmqhL-=RqNipudhy)vBta~3;?LiX}Qqb*(avq{#dBCLNabSK&RcXYjiYJ zU=EGuT3aR?6q|UyWonOg&Nl&@9X2_+YZLc1qIqS7jiRhPQ}wq7tNY6n!l5h{CYD3} zi~vDutS6XY60!X!a8qQqnF7#0b*+Lp9SmRQyYuc{Xybr_s_8zgJRDD8*L?Y6*B7f`$Nb1YOT-0 zAf_912vDgJg9&d7FM02zKs5lgokpwyZh7#X?s*dGh0x(DaDjfal*nNI=?s*g1bj~u z_kfD)FfkF!u7x@asX~u1ni>rf?kPI+kKQS9bj&4-_@BSjXjpcxHG$Bg^U7(Q zUw$?IF8gkF8&@FYTUsEdE6oH&g6JMK;_fO;gJsHn2e54ua9{vA2c(F&a!&Y7B%C{D zjz$)%i5gI2Y?lIj2TyMRU`?dqKKSVeJ5%TZpT$9gSZ4fzl0lJ{7T5FIoUUyXgPmFF z_uuLG+~>&3gPM?^eogMxnW0eCrzX0q+Xa-Q1g56`oGZhY`HoD)ojI=83An=A=Ap^B z4x9x7`)Dd+!9=DIHA-&p6OqvNg?ovK1K5}e^NaTTIbGgJC#^4Ka#}4YX%{RG(tt6g z9syr;UkN(AE-@I>1l2Ju6Jj;1g%6Q~=@hIC9eq^w^VPClsPKIWa z994cKlG2Lz?SDkY6+D2v^54$VQ~!|9(9nPZ0aQXBlZ%l$2gs+qFq(wgtCYg>SUdh! zTYeHgNfLNKT+oJWQA)sNzvQn5_LkSE_yswmB|VzF*j*#b=~N6ZIO75 zSVp*Z>8%lV_l`f3^;4s%*t->A`Friqs-E?6xZ$DZ{ZSZIqb_zDHwyt6&?0^T9F3*& z6Ft0O!ZB5)CiQAgMS45hIJzQSRwU``yU^(Z4_dD3SI7KaV;2c4E@){fNcW~{==0Ae zBAd;o^r>(k3x-l$!N;YA6VqZwQUMt(_Y!>J>WZ3bz|m4tONwQ1-=`cH)lQkNqE$e5 znmFpPO;3yFC%GQZ3(YeM=JQ^hE(J4;lpW0`6I}3_Iohf>)O9S6y1T!+@Ho{M6a9ao zsH7C+^D_Awf6X@j(h3hugpv&52C+o5`4E$T!gI4i0}1x`CMqh6uwMLReDYCMqLmAs ztAC`HbtykZgZuGI{_Pv2jNpQ3(uTz%xHbb zh|vV<>d!jbn=bQhZ;F$`B(Gc5@z!gD?v)G^{Ey)e`a!X$zzekuY&?2PjbU`cJO-Z9 z5@R_4g@*M@DiDD$Wkm;pQXlyBAgX9s7iLERIT2!(&Sw5?HL89V|L3wiunr_NX)K%f z^o_l7RB{pqn19`y?7GJK4^AaIy#3NyKx-@SmtbGo105_dyC@t-_uzkIg3{xJUV|Q!nVy{3i!B4x8`)y5Y8*b!;O-R@Lu0^n04WV zn#Z{{CyQm<8}FTuE#+8pb=Ef<_CG4=k)5nR3$)5TxY<7BpJ965+Kok)U0P{eaNml#8% zI>SJ|NSuQJK~iWvBmoUvp6XB(b?U&_j2ut8Y0v}t=V%a!hC)`H4J(qeZuIs}6E=aO zgXu8~-`*lqiEgI)mche*v-nUvPg_41d3--k_D4Is?V}ahZQ_* zP^V@AtYzFcH*=fTnVf8;5Z#w%us~`wi5Wg9aE{;NW6_It{dCT`y-t@; z$%;M@f*u|L^+-s#KkrAudk*UoC1Wtr_uK5;RzPC5ci3t*%=OK4JZj;-ZV1T~z?j&4 zAwgucNr0+&iVd$fAGkEo)6Ry2fTk3X%!qh=!4=E>%6*kGPlZS*r9c;kR4~pDMJ%E| zgW&nt!z^}qlQREZ_Cu{!VWSL>Ll`UVSxy$2TN}l3uz2yWbyy7{Ti4b2dqDW98w2+v zfmC;_TSe=Gf!43R%Il8BjUU^sQGx#Cu@!HSz)49oRIkc3?(o8D_hL>GXK^|;JvlDB zJPH!wY$&$h>LxVQkFYR!8XC!w5#WTCmX4U2jQ}rzZ%a$r*x4~LG0EB4 z4FlTUrd0nroT|V5;jFv*hA2e>m!o^Bn1r^?WE9yLW#w^}MiImoD)Mmi;EC~&9ZC{8 z@CTS@=`z`vOR2+7Np-BXC=fu_A*J56OT0sLvR)x?%H8*1#B~GAWHQy_Mz=9+U4fOl z-@gRMd8>QE_@Myg8g-hZcdOSQTMM-x4%MB5TS0XmDl)d3%>er|9yR}nqY!tscRo!1 z-Y5_&`sRo=BspUCb0G1#rMf;*`XeT^tZgvF7LLqr;a~Q&up0p{rpJ!nP(@6!28n!B zBep_r(8q<0z$A$APA9k%W zI@XT68nS%Qg~HXqz%x7HobI+)n+T^}@WA#T3RUt_q@0Bx9+FO z*-SWE?#7B$8-;uxQ!c=WEDhG-V1G9gqSU|gldw_y!M4bZ0}d-1sP|qTGMu2%5t{Ju z(f|7@DM@2sEhR-ODMbrqIV2`Twnaq-87TdW7@f+%FBek6S2{oDGX@$&a3597XE-Q7 zNfIHH{9-{rV!?tKAfN-`fj{%+ z=9L{B0P1`WI1Y{tZ0z&(4fBrw`$?+H5SUO2siJ^MFa$b%M5wmax6pEO>`JkHrPfN8 zA@uV&hTi$Ab@xqyJvTl_sEE}XKLAFci#-CC;M;R8cwJKNgMG=82;Ax4bAAmDJI2PF zi;W)tiTgNie+B zW{vM<)MYOx{7T%TN7@f|>q$U8C^lbk^-dR?a$+S(Ds))99{y$5EfQw6;wQz#vFdJj zD)TTPo?kMX=4W*zZeOBp6cisK2xsYL z8KQ(fXW4$Y2HUTrmS=Sy3Yb21!qui`KGsT2av*!!>%|VHf7@hR;h{FbY_Relbim^c z8Z_7&{At+X_TaL4P!!yFyzI<*e-f#h9mY>d881l&^5IOD!zAyAu3VE;unHF2C5>&a zt|sGbqT*~~qAU`0ib>NLIz;%5E2KzPRzg)uMO{ooTTG*<5MJ29f>ivUjk1?g&2u z0maqU|D)+EVB&0>t`{j#q{ZDGiWGM%?i6>|;!<3SyIXO0cemojWpUWz?(YBnykGug za%GcE$R=DebLPxB*O4ClA78c)Q;%icVy*=&zuu2#x5*bM>ll|la*fj`yuBgCN;K<< zp3Pl zGW0}%>hv3UuvU@vANB_FYm1a$LzHI>lwC&NdO=-+=e|j z#5ZXNcXU`01HV3D1X%R&BM!5W>g3bK0#(cTU1!P34Au*6hn?_9vbGOqp_78#E_eP7 zS%(isf}&4t)@5_Pp-&1iN|Z5S(rr#$TXybI;~%2?jfRjf(*?*z##^g8i1^U{V}mb3 zg^PVW7W&Y=WmZ&phy~!|^~GpG!u5ZhN_qEy^w!_DiUIOF90NL7#K-}fQ}6pCxe)J? z(fCTMbH!g3gTs!`F>7r8I(pw`zACf)oQ&=)HaeCEHz_q7#S{CMGlsB(dL3Ve;;6Do zNC@kQnr}L=0XX4W-|1{{(oqbH=sEsN_qob}4Ju}7eW^WD7xkAT@r7fH*gLyF=-~*M z?T&lSxG5<`C7Bt5`R_dh(QDl`5&=rIGKy2uvSSMJ6LSAs>1k=LIFWVagUc(*%FC(? zE6VcA6y}sm4lTpaw70#8)&Nc`Y_H{498D zk!1PXm#ftC#<dF7YZo;1s=gU4>VW+eBgqX=E}pnYTi zkw}oE?+^7zM|*$QQ2(Z+wBxKfD+s!PT{}7R5fL1Y(gJKns00;Ud%S>U7OFpBSUyohEpyMhtGu=#j#0g;A zeKS!++-lfw=VaH(v4h@(J5*jwAb^7JB|y@Cd)x%&d8(xk$B`Tv^Oem%K>PYxgtf1@D{rCzhn zOIy2moH`}o4XuC5|_o`8?yX4A;9DMfMLfMV=FMdo>K>ns{wR?1MDn-g`uPR5p zGgFZFKzXaYZp*;va*Rx0guAY%mA;X-@m3^!rqJ`JRmavhun*m58qPE- zC00td2!#u(2FDS_rwWo_7*ORq%hA^=Aw({`o1K70&{w2r4mPFa$pKc_zMLavsJ^tgu@msj(MZ-0I@L%nDvp~$fi6G!y8 z4N;gB7*@o-I`02;1_y!z0ht;?P<^%jIo|a}Ve^o~vJM^)wwh0h50Oh9M&Ft96Xxn8 zX6qwdi94za%4S#RHdZHwRwvXoD!vqk0F#A}f4Dv##@h>ahAH?y3yNa*pnz&Q7e61I zvO49qbStp6py);QJdKGf;K2CzMSRF14g`qll=#nP8I8ps8`vdX<=9*w9Ncn#$q)ZG z+_{Ei900E5#}z*Wrr@p$akLfQ(l$%-==hqlp0On0b>Jpv-3Wd=SoypiuVO>70dzpD zMmbjE9LKDU;@KL2qqW!7jpgRsH1*dS(n07GOO|=G1@wd+B91((MId~g*W~5Jb61nOU*VdXFNc zH~Kh*ih97+?bgz%yrUvi@w|JrrSf!hckb4kXt5>}(&;-GWOlq_Ebbhs{yMkcxjdvX zmt+6|rf*Gt#Nbw$?y~)u4WUZs#suY(+Z<#L+Jiukl26D2S61`IUa|`)D-}CV7xTfJ z(H0dR9L_^G@aAI%HW~AKLBYztM8P% z=lA_PvhP~5y?Fa@C0Bm3k?Zlr*ej@rk+rayQrJfrbtzTZffEHF+iD%sK!MoQy=-!> zXe%T5#I_TQE;rQ$gL*%KtyO(bbjtC4T`LG9nNIm0&h%IngR)5;`yP*{G?i+(rr-6_ zESF|93Oa>?`%Qz0JDeZY)y)MBB2>8CP6RyUl}I8NEY9-gjZImxLvf^w4jGE^g7YuH z1r(5Px1Zt1^BJGKSdjMG61#eRMsiIHTZiHcAItQdoe15 z)*+Xr9p5eClWagc;k?Sn}>^YLTf zMsxEm(^P$Pi zC?+qongGnfI2`eaQy(~Fi3!hV96@4#qRH#iNt46Uu!>UmV+z_IXcmOg;_c^V>o+A< z^F}B;3!>{9y2`qe^NPZ&gTp^zU*B(tzxpcC7KZy5hx=0>+?R<{Vq5Gd`;61eNKeHo zPR7VimRDAOMDanxe=1XLjgQx#%4XWws21>QcO|!I%FEKRqWw2FW)=)eiaMF$R^A=9 zbVjO(x|y$eCcwo%J~-;~z1^}F#Rt_oO_=+Uq{83Zp%AV;23Y9~&(uH?U})A~U{(bS z4_=mv9&^U57d5(j+`fKkIvVfqD#a#dMRnQlpdR|ZsO~{*d^3&6#hM2FI^yU2`qnIZZmnN=CFFVUtjS%# z&$Hulb#MJ(bWyI7^p)@TXbIFsd=qAl{Gie+AtCm+>Fp&+Dp6BK!omPADx1tBcKr6f zJIjjlBODzIJ5TNRQ2{DUZ>-VJvIiv+@ZDcF;m2@ElP_9|#dn;K0M^oMDg>N9&Mnx$Yp5Znwbihr(-FB%(l*6A zFSAC79)0_EzqS1niuqpttm|oyBmu4|dr;2fjgsPs3O};${&Vfcm4pd_fSNxk22Sk2 z1u8;-Zb(ey(cyJsYQOP}uRzD+?Mbs6%nMl;DKF>kZO1&9;wu(qAm`ErdD{3~_}~W8^64t-*WLR!g2=GI%JIa48WflEV-p zjvj05w=t9G@Ff7;^>nzh?@Jj@cbh$*O0%;i(QGo_-wlxJHypZxi@N8V~x` zTdPVROofgcPVE-v&rzW2O_VH_i4-WM6t@G>592kW zeHB5!l~BK>Qoo&04=LFjN$AQF@WKEY8s=`Fo*tc^u5`G4mY)y;T@jk~Hm8dvm6fMJtF^`U`l$OA-mnf5pLg*& zlsSGDt@OMe(C7?E@I1%kgATo4oXMRp6wl7&`9ih7GV@@DlnI`HhP2r%$`RLmN3wy~ zxVv2$-&LpOG;dsdVG2&EOV0d!u)X?3TSe`31`dPHOkd3GA|O1KD?CYP(P$wOz<2Vv ziW0Q9H$eq~a`|XLo&0HyF4N1)k!zi6H}WW#rNwroDPr}4c08W<6cMI89#aa68hi|@ z2JvZ_?Jg_ZefFL*!zf7fiEhL683x5J@wh#kIe zEfTe(SDXkMEo@m~n|n%qY&m!>P(e!V(&e&J7KYt)ZhTy1Yx(dIdB1jruI}34v9T3s|gVn)SIQQgH(DKW#c*unN2XZSlpXI|SH{TvtO&L=DCWla%#rfwILf|yjTQhGZa z_n&;hCtUtC#wX>1FyXm>obH7j(Sy*$E&nM~08|gW<;DLT#7X<;ub-$;A zQNsWYgB1mzNE1=Qq3XGx9~1CqW#F14o)!ScvD$b$1q=7w2FCx<8s~;w)?&7~_;uGP zPW!&EZod1T=aV9A3hqk{R9~X;4L{ioLXOtxz+kry_ z5(ckvP@D)gyb&NGT>%&PnnsHoU{~yBZ?NseBWBE|bE{staWb=hHSQ;AKK0y<9PGzx zcFRxqa0a_h{pEa|z=WJnz2&gs;6^ABE=Nuv4!Qcq$|`IqH|t?SP`pGVtXL>cON&ki z&}#JN^p<2-+F8Isg_ZAd9Ma1|0D)vYyY{k!AbiBp;cdDDnUyslkW#H)kGI0|+csGq zd`c)W2o<`**wW5)Zeo(Jwj@XAIK*!J=olD_Nws^_8Q~8yWz?BEI|>>KanWIaLFUAW z>cxKwWN#ODOl2ICnT$Myx%G0%#&&!%hzbRlOH*yo*W&I`xW^pg%KP6Xz5 zD8Q%>>PIX-OF!RX@_*AT?1 zu1E;<^tAcp0i>ks40T=4Z*_&K*fWvOuMhCghLi5Ivrub3NTycS!&XSfyLw29boB98V0OOb6y?q9CiGVpU?$%jbqOI$mNNbZ zO>qv1AKU#T@TBSPGB8hkRph7&&!i`s|1LJHhL+IO#Gc7o%mv!P!W8!ni+#Z*dEAt} z+21LgAD_CU%h^^bSICPC_gvBSvE>l3t*%ZfPvMnJ?pM+{w{F$AamS6EyvDW)-D0Z_Y69Hsx6 zJ!&%%b+3peG}i=pd!=G)>`4)<46X^~a}P9GW)QlH_BWfTkIQ123^$I@P;XG=+n>=r zU>87|&-Xh*uM!0T*Q_YsPhMW;P1_@C+=%^+$4dtpUg)AVxIghXQ2WD>!JIG_JpwKI z5FcTTMqVX`Zont&v&OAor>{dQm@B;T-IT)$rf=(#4f@+xZbDE{sH9%I%l=SwC<}`j z3fU#M4Lp~1&Rui1oo(i+oP*{rMkU9uzTAj!*6*9^rmT-02SNX8?-jGf1wKVb#l%F$ z#H==2jfk>`{5 z7blcxkp{s6#|L_WZY9OlERTK-t~TpmEf1vBzz|-1h{KiG?Y&_Qlw4DfS^B8UFPN7k z3s4j9EN*^T4~Ec1wV;dva!`!_7V6G!zZ@WO%G2S z2e_n;NT#{ZgxArCZTA;*t0RR=ie(?aGk14-0Rl2siFRL@3BQsq;)8lJG=r#gp0($b zF*bw=(veHHzy4Y@h!qQr)c$^=-=@1UmVg4{-99n>Y|lT!bU0chmh&88X!+Xs#o(TO zjXqz!s;8Zq^Onz>V$yddjmJc6f*C8L`H`b%`kt6rTt-^tIPti6p? zxey(fs>4{r$COV=qqf*4IfxK3xQd)!a=dc9+sEUE?U`}^+mz2zKl*Vs-8G9)vc|*5 zh9!KI`o+$Z%8PF~&a3^BoHmVHhr*d_MC`YC zZYDAgAUMf(oxNqejaORcPoVYdzBN`hW3|#F^Cruc#N)9e2Fn#Hhp{7ukLHpie51l} z+|B09lBq5oW};_GPTIf3x{@(<@{lgeZ4EL|rXOKuU}8c`Np3YLH^hl;2zn~5z3;1g;>q&68V=%CH@*R~Wm0@-q*^jIpU%>X!(wuI|HL_N*Z zInRwkzzq6_yK;5S`tTu*vN%0Gcy$;!(mo}_0^D|Bdr$9wJT20zQgU`O4+6(;Y-K;5 z!l$b1ZYq)2;3cxP5+AnOrT4#!wMXbbzs2*pFQmXd?fx_}rnNrT66GX!3UH zAy!3zDSlEF4TQPE0S#)zHv@5q_rulSEDLGrGOxSLwTAt|=H{V`%~xtUTw|Nc_loEb zpk7vvLY@!7yD{vmy>OEGn-MBdq&$zuJw#S&Y8=1;m@e_>;GG41HCs7hqlrCv@Oo{R z=kqJyWeg)Aw}NwyStI)TyLk1 zoG#nwWt}#=2nO`$X0|*~422-4j#JPC3bd2|hq(sE-cIj{;c26IIri@S{8LjLS%Tp* z$4#wmI*NQ?FJ7T!dJeG%a<0kWOE>QJj(jZa2^;!=HSashs(sW~>rwuMAvw`cRh9g$T^?ZQM?p_J}wp2W-)_y;(BqF*w`J_YgMJBtx`ic1@R+JAvVz2LTX_OW(;Ee{kQEP~9|C#p06cWqCRx!EqJ={~mk zKK9PerPH;$#|LpBguwK?(c@}Hj+*RPoTBo{MP-vS3raKKt)m}~U{$RueTJ&#@4T}z z+MnI&b(m7ec3H*aKZh5Q(f&=A7K^~CKt|dA)5yAMmy*XAkn8dByY?qRpjSnU&73+4 z5^*r4?jijm#G^gdM?0W=r`Z%1klX=)b$#I&*nJfM+7l=%C!@Dlb!12 z7V8CKGAJQ0n4LVqS3LW9`DhHcEeNO+#cBQ^+RyQ*Er&E@B?{~jinCOmlGMmiBO$mu z?2H6I-{;5_DTDr%e+|7moUYN)`Hb_0;qEgy{4tRX{US@?gx727RCAYv7z@XN`DDDQ zw=n5OKI6`IqZ6{e?y=U|*B^2__^wRF6Vl#IyAQ)GAaaQ|Xs9-!i-@sN%R@gJZeX1` z+pHIwYLwT+D3zzQ&!}7Hu+jM4geEO*5n_JM1rG)Lq3~nbI)n^sAl%dmJuh1@K()Uu zChFCGt0ibx(Y^DUC?HRf*iz{}>4=n&zgQUce!Z0ToB)J6Z=F0Va)F$9_gcK_ki+wg zEs+ghdP_DnV2mhUHemz)ZDq;$R72&!fTi~xro)rtT%{5 zZ#s_AcVd5SkL|;FMRr?jz>I@-sD2SsFE!gJbZ+|N=#m;$PyDi)#+I3{k zc~%USa^nf#yVx8QCHdy_@aK*7p8nbC69KQhqaIJhxBcAjqbbFnDPSEv)wqnQv59T0 z)QiZ7$Ih*UEoBku@Z3UGrQR=azqZi3#gy;#>wzK0{B_LaZ+}v(4`)g#k>RM&KB}_D zehO?Dn#gJxb0y2aZh4pUOY{m)sIs3)) z?OQz_$4x*gVJIs^NEd7ne>gGEqS11O>U^&RLu3U~;&9_|Ai?!DE(?janEUn@*>)}l zNkK@T@8EVOxEkZ#?hj%Qjd9%$;9y9=b@qI72+X)TE}aqSNj!SqAMX{*ZKy+o5CXVY z(|K3ZtJAoyJlt=}z9>%Weg5>(0}K7?$L62tM4H&&9M=4SBF|LKWe4dNl8`+dQ~IC| zDB+2E+wrWx_V%aI(Qpn0M;BK<=Od|Tta-!`WCEX^>9eLUI9a@YulrgX#?zOr0mWu+ z8f4cS^q_z4E)366#!$kUR4*B|h6(uw`)lj| zak|S%lId^Fo511|qkni0kK9D()1J6kcCW9lS(OtP4S12vt3E&ts<$o2&ZMfG;5M7) zHPj26XQbqjiGOEN@peXlFS*_idPDaw_y&oYRlQm5o$gWn+#qOV*GZCQF{kdqKBlzr z*8qcTI1c9S9*s|>PId5K@M-76w{Ii6Ef(q}-5!SfE%Vd;_Z>TYp_^mkFZppq7<^3p z73MQ{G+IoPGTn`PA*z(F1UnWBliMxyM~~7Dnl7J?@6{+&uI!W0ys4_-q4hq1WUg7U zNa$?jL9`RhV`s(I>cC6W%hEU|AEx?JX+FbrJcsntI`$@(ES*#TFy0^EmiHe*l0Dje zT06F!Z9~lz4Ct5jnZzP{%x8Lx?WO}376JNF(nAV%T;N9y1|-BTzFS=hl;iR><}`B& z9=tq%LHS|&nn8hz;C90O!*qwm^CnXD=kNZcEo;rK`e)K*$Gl-kt z)aKwAH&1M6O4jo#_Px6nnQ+}!%tLbb_|>PmW*PV9D>ofWGBfJvE~|*q-hN4H%V&a* zpb(RnL;%>w=Dt`-L`Ts+l+>jy~HvjP~{T)-e9-NFe2@smO;+vc&Lf407lN zdCk@$ZHg-1ZmN_yG0;P+Z;UR}xp{>$OEuf10=*P}{WV3z?u~kly22W2#Sz>vAfY#5 zJg`Uf=CqkQ@j6tD@RzmS2is%JY%9y>3DSy{siQ=m8XoDKSU{}L&E0jMsOy_m!HF<@ zr|$*$EzSSf{gK5%PCH&Eb*d1HEcR8i+RUe#IRMucciuv$v|1;p7N&u?3QzMl`t$n7 z>TNEom7j;#3T^FnJ8YsooyjoFYHv{F_xYQZES%h_e-Qo#lLn*lpt>{<*oebSf#dK?5tlkEgQu z4K;;ouw^%yq}Ilqde-f>{Vgco2CBe*G0%Y#KfU6gxp{Ljh~Po0h*snOCQabnKKa}_ z&TWjf5O--em@j4v&~VxO7IMrtkhN>OsmdhZ{bi`6?+NI%;e)s(Tmdb!48**TS{w>9 zb8P>d!2SLGnR=_>=1Lu%SpUEfMjigK29y2wc7A22lM;%Ig@d%Tj1^u^Z}o-#Dp_K6 zFTDfK`}QvtmEWPWmz%2SAI0w)#5c^A&;5F&m8HCmq!zYqRqwhd$ZNeGImi1dB7T%~ ziSl-KUED0+#V0Fp2N*pN@rE%kmM33y2WKy1d73Zwlvuk@YVuBYexkS?Ca&XI7Cc%X z9n@1yVT>_kw^~xwH~ZQ~#`$mA=P8}Jo%q_(#~}3TrxFZ-`kxM&^>tuR5_YK&@NT{? zsuF_x;zde-=hG(o0<$6D9Le(P`vuer{IK+?E3orc>f5Ws;k0;1jZMC>5_s}G>Kw<9 zlJsamw+92P$f`4))~d5zFm&+ydf=C7+_A$}&;^^X?0WXAet z_15dBXSuZGnlZ<)LL_kVAITqmy2MWm+rFzLvy6^&C4C9UUcVLJ5icGBT z;P}smvAPF^79uE4kUb6`Zj7`~l4#$X^7;o7!AlqeWKAvr! zeed4j@S1T7Z}2b>>!6u2&MuTDpx4%vP;1xZDC-r!$bBS#BF z5~r;~_5q^F+XpwYl6;NUqSXJsx+5+w`Rj^P40|TAfN-a@rzyQ=M4ki9Cy4BS6pHj3 zeRNTaj1k>4@Z4yTS!!NP`=#{-yUk0l$+rLha{=0|EKAW50Au5Dmul$_{q5!tFV2Q! zb+hl4eNwO`-4AzQV!f5wGFXOiyZP#=#_g%0v<3oe7!a}$&UA;Q7x3fAW^eU8z;KLhgR@ImY$o}8N*R@~Sa3NKTO`LuiEomO5&P9R|~o6Z*B zXZjY`Pjb9ifqe-)E9zOH3UB-6@Esx_mVV}nQ#&IBJxy5`A$WL*(G!4#nWo&|Rr?nz zzR#)25q4B{?0>bfS_?GcGH;S~_x#Sp{AEJC&V6cG@@HoI2V25yVyv6(;s_a8J9}Nv zpNGgkl3ZOz4RyL%BnB$s2{{q0TxFaH!HW^$;#=N+!Z;rKT^(vV=eqzlOfw+0u&yf2skO2YkqyBuFe$j-V5sfDVcY@r4WoGJ8~2>8+8CS zkX0vmYb#%8Eo*FSJ#e0Xj{bgbFV5`q?xsQxa%$5ZVSc=#d&*Iqp<(Xvd^Qb-+7x=1 zXzFS(`&WcQ!z`56ayODlGi7VraSG}2y*cn_biPIB$wvO2A0>01Wqp){;mt_Xv7lk2 zFliThx2Uq!w^z!b+4*BMpa<>~vALP;s?A9POR?0x@^| zwdNCrBl7BHN3|+OtgDZ6Q9MAR2{C0gUoBz*4?$PoR6sxQp0tqY0t)|JlCZ$zd&;8a)5J@xBB!9g%_P0=tajo9?&wS-Nn_!UTif2)mPZZ5eE4D3GpT(=| zYl6WBz%2&!q<2%%uyhj=5ka)r_Ol-I`_Gb8`4X6pW$A6Wo(~e4+5qnJGV;nBqnQV( zexI}5b~f(!GtElb>Gf|A@QRrj`*JWd%ERmMzBUSTG_m_h8!L+RcSA`iRBssviT1!a z1S#gy+vBe-5LUCd0dB)E3wL6uluuX9Eo~dQp|#KjgOGU)0Bg3Z#S-1Dky~@ zzFB@n_#sj9KB~_Ss1IC$gyUDT?wH~Rc36LAEFpmu&3K~q=bW8M!$*Bu%l$6)z7J}R zf_~-Vwv4W#@Oz88KGF1at~U+}33mRpTi{NociYKk3t>9VXbuDZRk5@2>a(80b?&fG z-yMAi5yGpq(skO@%q-I|i`87u|KTp}Q6)(?I85jwCFH9`pFTdOAWpM)}EAjt^A&MO%& zBA^cZ+=A$ixr*ovtAf8j+w!=c%qG#vnzAncUGBHf(#)$U(muybD|C2@)J?g(=-%rV zu3%9&KLD#M7usJDu40D|_GKc_?z72hoSVaO|xUNP;-0ZbbB@4)6 zWDDI92qu~=#M%gskG=nUPS9RWTadSz?#lCRXvKzcczWendA0wyMzL5>{_%w$sdcRZ zqS~w_6fkO7(LL4zDML2IraTjG^lBE$N+2N+bX?=dy7uK3g*dlCkcbL!83GGd+{Wki zj9^MIn;t<(F zqx6jDj0hKJaVi#5t@wsaPMRa*!Hpe9-F+)DG7r+4S^AluxV}s#A+phVcD3r!-|OUW z;R1jBthPLY<7$;g(cL{Z@8CYK32*)9N?#}sN`j9$o7Hgh1aIdqGvTKW-`8xjG3{@O zpG8%m%36PjX@ke{gsWwTv9Z0GuL^VJ3HV?|1Uq9Zz05GhxonqT1&>ab=Oi=cwhUkc zeh~-HhKv@z$r1J4Tf2dTV|U*t<yzhI35;Wz88F*U1 z=6m_oIN`JZxG45fRd^+Up_1_>`Cm`sLja;Iy<0T^$cjg^gT6M(xtFOCT2XYY1-V81 zAgM0OAlxyoLscwJy{Zp$Np5sgbjfO$4JyJT5tWwXsBW{~y0!-WGIoR`?*1sUkA)HL zg7ta_Be=d|@SS5GH4Irz2jY=qcfMc5)$Y(jPm8_Ja*V3ie{k8}7eV@HKQ@*cuTsna zv}*V?6t!8rG+}mgS@lm9F-F^~50OD*7I@M@T5OP=MZSv7f$UWqR@3Llf32P9EIqAX zA0~g+Y)GcpDr~L$U{kmmAcRjaq03O_N9_z$?AOF(JymW6smShkDDt_|@YD5(F>IxZ zNs5i9vHPrne~cDMe~vkH)AD!_aj^qLC$>@-u!E9hd%{g&)06SgfCQt9tlQ?>(^wZ8 z*Z|5#57XaR>RG}PY|bWLB><8Ve*}?Y?do~sJ_?etWelgvPzARw=Y1x5zRhq4-0|WF zDz|A<3b}#;_lw}9#%eOKJUUhBr=kVYzP~91rFz4IR^(=DYEPFk@w%`LkY6+P=;N{X z_xTZ8yE&>$&w2vNqwbHLtlr7_KXurxpN*xSvwIuQk=B7(NCD7PeD^a6xn6MZ?7YQR zM5Hxm#-!no;{)HY^5J+mkgRn^c%pfwR^3+~x;i}Dw_v4OO>648-xB@#2dPi`RP5Mk zUp>wfF`+Gl4NeW_KFN>Ph%=y1oUPMcTxo@PNpKDWbAqL749w- zE$#_-mcP%*X{0&R|@<)-u`d>^~YO#1tM}7y0e2O4GDLhQ>jbdJLq9$XN`~ zFRATmjwmPNezgg`2Em{oOYX&za0yFCgfJONi}xVm8bIeT3_iltMzkhxa2di{kn?4M z<$QB$OiIcNXNgutz9TBn8c#A)_cE|0YA}&^k}tfZ4w?(40zdk_DsI#?k%k!?QM}>x zS&?M5V-th9CTakE-mRk!s@MI(6dkUurJgvv`26cpL*2z7DyTN6OE#XAQL)Wdkq#+r zSHkBOmz(|J(otmVb|u)JK&escK18nL3#qD1gx!wCmFAEm zox9rBeQNyJ)oiz&LH7X>iJp6|vXs>=ze$?v*T<2Ti1@9W4n7qba8}7uf;GzPt`9H* zioW^@bip1O!7Q2L&Ug&=_ra(#O-M+V72?=|I~L@vBhn!sZ`C9={Ji`EB{`cQ9f8x$ z9O+J@`veVQJNX?EyZn84NKdMF4*8Aiy&$ z8sQhc|1bHsc0;9D@j$Pk&awr;(EN@!8M&1wvY{sV8WPSqua(wO?)~tzOW*UnOQz%-8!qEy>hLKECBc+U_wsZw_ z-#^Nit%z9Dly+TeEX^VBkv7~{(}plZ@}ZmIm8ioZaNH#5ay(^+q9 z5H91fqM)Zjeg^ao1QzvK)7Wn(L_vl>GRkn5hvBm;G$jk7EdZD^nhk5PHA*Yz?kwDR zf&@y^$R*uRf}8ALgM(iw90_HeY0Vp$N*;u^U&>`gdh@dzp!Zp zN5o%WT1MqAuYG*x(Ft^oIxsAj={5ezK1C2o@ryUwH|_m*Q(>ClDipHR?rs6eQ4~E60d&ryyF2Lu~;2t^QqBlfU_LvcHOVC;L4Vh@qp?$jQPP4lR%(ZsPRh>Brk~(>I?NdpTw| zoQkNZlLAR*c2~OsLo0k}P=K*aJw3$CVM5OZZz=zeHpEt|rOt~)&HBq>`M=8`0eA)9 zu!yxLpY2$k=VwFvefMkqu)6AO&S1dfnc}-l`X`i7wvstpEjcx4qk+;(dipg3+nMu# zT5b|WGjfD<3>*>DQf1YQwsndWsk#%ks;L+p34P!1sqft^6qf26dWSqy)Ev?dr5F*MB zegzv}G6;;VMX*{SwE(pp7Mq2mG+F#;vTTvo%v4iWI}&1p^EUZ~YD!4c@Z$a=CJlk> z&GX%nt2lLu$9*{7c@BUa+axssJt?5|M6SS8fsnw3hpw~kbvd||ne@+g+t<6vT#~GZ z$4bl%nt1U-E4=0NmDyFAECam+T(w)G^ds9DS3X2@9aXLTaN1%0H(+4HvGU#EUtc`J z?8N&1e>?&w3Nb*;b2CFC-!Z5L68)z6$Y_cqGol4Tsa34quYqrOr_-G%lXAKdbqsMyNaM0 zpMtd2!m`P}#AA)iDW@95k$c@GOo=*G`VpnAuRXS29zG8N-I)OogqS!l8eecaUs1lW;%^~{Z%wYRj_^}2uC8{=s396;^l(sYT2o5Pi zf(pb0GwB=Jn%pz;gb#nIJPj)Uout=9U%my>?I#Y8#%y6L|`*BHgCbkf; z8sKk>v@v73Km2q(3bSN_<~xaoLx+k?;IvjS&jRl80eHgYa7 zHLOOnE{e=Khl!Gl>Ta(&a8QO@mqYC77@@W@1q~POWIdGp7kRbV%g$7OtbF?l*Y{4m zO?GK88C9~>U*_ z#40hsSwE)ul1rOU?aWR`udT&m1k`zWBso?~KV_o5kwLsMdWi<>a3G@nGlYObG5-H7 zUyHX_*vKBd2bK5qhJ1WnqYdJgX#+=XP{uY?gkVp0Qtvz7&;U$3+c_2}WQiQT4`XW< zqH<{wL9AL7D;yuM`dy0_GmR%?+njo8$KO@C>$ipgJ|T2U=_gQ|y)~+S%%d_QhNVg0F!kfpWD)myC8zUDuVF;$dM<+gSDh`5S3kAKUw!OF0agU%dH zp%047#gf21bZ?Q;hR3jtCXn{f*{Y&({ovd@kf-_ApDZ0Bug<+wZ{Gr&Gv(LXW`0T9 z5wQe$F?u$Rpgenp&*rNWq(4ylvGX_^L?CBlW>Y&!P`OVFdg!Qo@R;gBFta|lAh;z# z1~C-G^SY1k5`FYwiG?zZU~AaY{-LQ#UQXS=VT!3&fM05}XsW8(77U$+DI)8nOb^GR zsjFS5ns99ozF}?r=~AY;vOk6Lvk(pT(QDXOAI%V6g_vtjCD?`_Sb0pq7HaMqAwM_T&A{P^Gf}|Ut zXSOBiV~}$?1!h>qF{31@w}Y+FgDFf{w~xsoO_HwTvOg>CirTD#%N$o? z^di|XkW{uEDAU`cEu1u$t0$+eE$zHbMLc+0L_$Si>Dli3!iQFDmM!q(Cq2CEY)xnu z!rGHNo}*stVikNl-%Pri(y>fTd_V|Zb73iiGoe!>yH{GVQ-1p%z5-hesbi^`wAY%o zn9!h|?h5L|fvF1OJ#iKg=}4u}-7}GCvI4Lvdw3IQ%dwNNu?87rnT8Clx_*OM!QTnN z8-qrFV0(~oK2=T^C+&55tB^ze`gl~BkSUpJ?ZG_Fj!AE}B!h#t%-yfVl&YA~zGdex z)o}XGAdTWX$DB$yhN-05CHjWPHNV;%T~}O;7#&n&M!{9B_oKb-9gWx1v*-19 zqwn_Q8?ipNOFM74*Z{2?gCD9@_(vcRKq#SLvP2*sk>p&BlQG-8q>xZJ09%0kr!Cim zgiyabLitaQKBD{Q;>P&PN9v{i1^>)yExNzk4!dA;#XpQR zoSD`$>f~EMLJJ+8h5e{GIG#4JQyc{O0D5iqnS;Q8xnY}UT=@>Z+0M~d9S3l3lk<4T zSVbAJ=rQque+ZxYHN1UXIgXvLRfUeY-Q4gSn6CZ|J@~vwnkso~d!^H$Pb~BcU+(nIT5WGFS8*^E z1wD9Pi!HSb?G9{>JdI71ZOu~d`>xt`D$t|L48A0^FlRrx>ZH)bTmSqm_igM&Gth2q zG0XjlQ?NvpGEq9nV50}+3%W@yyC^gqh`QP#WsH)7cM5`kK~0szoG5+Oz(%s}#cuW| z((s&u=ZR0onrWr2&n(qdfAm9WMg~H^%ES{H;$88p(JAx%qK&D9} zX2E4YEwO>zh4XJb+^;i%=a~B(&S&QL--^*HrVq@2cFUimaVu&pdIz>qXfeI8SHmYb zi)O%KVytk^9*`IdH@h7RE~bxCqvwhrYaEQ>pAXm9U=#_Rj2o)(zaaP~=#fqwd9r3%0r|$NF*JO843%{OFbpMX}l&`rKPbTSwKj|~| zf7>jLsb+&LWPGNw9BOEqJq1Bl_Ih@dP#(atkyWNxfqj;@s046NoRbk`gQ-5KR@?0j z?;kA?Tb&0mcq%NoTu6WHu?M?_q?q8q4tgW?SnTY=BN*@SaPOTNdG%1yVt)n|>kWxP zma=d?2V3XDB+{z3XGMWV$IHX)+3^{N>}Xusl%q>X%;hriHX=^P$cMnk*r`K(Q^C-_~vS=LbRh zf(4i~qzK0Ll3v%%tP=9ZZI4djsSWun&5UDIUe}N9BK-^o4t5(TQylgM(9d@@3mZ}8 zMg+A}U0Ws+HyK5;_i0@z!QudBvAU+$O~=OMm&RwiymqwDZCfg|E^t3)F6MRZ z7D$^?e=?2lntWnSxNMm!;QY;9Fm1bgKG%_;xL{k3_aqu`m+zwS_4FD0_Galar~$ z@cvR~s$a;;(qTB7V68MZO3qojp2JGP=IK8!oiS>@vd;v+>BIUMD zv}6hyUyL26w)`vTz+6>^l#u?}I!*deHm`+m1Um3KUNn{UH~{m6VX|LE3!)GCZX4fu zhM!k{G|e6jrNj~t?uS=z;b8H+5l94&Tu@g2N}mXnR7^>Vw7@Qd4yH>T%ljJ>F|NF? z5iMn%1`;;RO^Tm-KI`esMB#(J#lG%B=K3_FC3?xlSev2~uS4{7h{v1DzZyQpWKG>Y ze!lpsViH%2i!2&^46YjM6U_*5L_qm}G+hI5U0vI~Y0@}pY&C9dHnwfswi`EYlE$`^ z#B$u%$dww%-pm0ez=~s>V&}{L)8|ij}8uA7!DtqCNDCIqj&1Tx=j8K ziB`aX2qM@rGS}xLr34frOB2ukTp8u*o{_6P#Q_EJXIny$ehnNP=y{?<8M${$MGaR0 zOkZ%-(s7S6+KJkJ_Ljg#+1&km%J$)3htr(ljK^!w$!kwin8JXXbXSp=c6 ze<_QF0m5z01W%)*@5ljUy9p1UAK6V!6H`)-fN5K;p@}6X41@+CRLSUL^#=r^?Iv;RlO41D3r>J^zEW znE?5&&E~SL zFfh*iCk-x8JW)(uF$FTtQ8JWoBXbi`erj6b;W^dcKz)OQoE$AI$Bx>S&#|aU-Y?HI zS}ay?`=|>3K{x$zyp5 zC!p1W{5z3Br3v)olVG3zzYhd{HK_JrDGl!E{^i@DdW>T&xT8x>Wx=5s%MV0Jq=qHx zLkqQ~em!zTUk|-^gAt-hRNJVDMvPE0pkfvp9NOw_W3%%q=~aS3KZxwm$7-;)xkCH z8HgPlsBt02rH4gV76aQTBIp&{V?L@vS^twa_oMoTzZQ(5F$C_HTaYvuwWfp3=OjrK zzDgMEY!qY~F>GXs=3dgw=x720Iq{z{WoJQLf86Xh{C3AmP(u+*3=LQ5)__G2yP6VjRpnS8Mc## z&BgZC8q%o12c%7Ru6SA>mft7;R__!6NaoI!rG>~plwUx?WWmq@Gb~ZZJe|uDo(?>x zTX?GiH)CGXrC4(ejRf@{>HbcwuXDyijfn0jM=RmWVgq-6PG{x9bNm3^n4~Y}|LS(J zC9ohBEeVCCRFM3%Bn}8Gb)bz3|4+vvZml&n)i)%JeFhg=rhmN&7fG)dXi!~7i2LJ%ovp|B%!%4XJCLT1XFoZ7iAE>&vpii} z0UE(EDNx@^SNw59S*1cN2#sGKzdoF2C@UE7K>HfaTZ|O8C-tL9yv_b*`O#%^0McJ+ z$y)t(+bBYpMA&*c)nhdSKyQbPXO3pMHOC@=A;~Ck5JZTjMF9ydBq$(NKtM85S-UnL z4>E9imi;mHvS1+ZZhN-iAP)Uxv0U5zBxDA+91PHcHME^T; zfK4s>LM+G&7qdtd3r~sW#I>H-@2K*($#EWoR@Y_ww7$NKz4pqT7%~r@^&JH*y6#7k z%-*s7RX#?C=fXkKF4*dMzemO5y_t?EFRH?1vZyCI-z0@ z9v<%;oqrtW>3{%K@PDfo*8Le|AfVb0ol*e?DrioKX3?2#VyKuIt(d}9@-{xw+#bFy zpQN9!_|C)|V!q-+Ga*Sg@>ptef#9g|+{zD{ayf~Ax=P7rzy-+ijxp}nCG)O&E4 zm3;eCE(7DC^a+9jd_R?wIo|~^MCy0G>s(hg>|r83ALk`q^f)-V0%Hr_-rqOcTe-d6 zI}=%cjBR}aWeV>l@p-!k2ZOq%Y7-^;o`&lsop5nd0Ash{TBl1cm%(cK`r9I2j1R$c zZdc@;p8;!ZbM-+F(Y?ua90SoGz%Ah_lqAB3@I>sD_BfcJu98y66c+~6-`>+wt$ zV5lseQTs3KYsDn>%XM&ZKoiy6HToW0V!59?g+A+e7}<>)ua_VJi|h4-ZboM2>#5Ly z7m)0VordJC0O$-W02<6JmNKHZwRU?E>~IiVgI-r6&C1vAZ&Ri0?`85zN}N8PV)9d; z;ox?@WW_&6>e$Ra`2j#CRnej}_>kfvHX=%Qf#GGuk~I1A>eBy z_S^vv_ZI8&Tlt5GLg&|B)DHAMQsal~Q)A)0ROZ8Q-hoOgJWRyF%<VrHea8G|=KP?}Y{~!^s`eFW zE=<^lY59jBW6m_qkux(a=a~_j03}1N{OR&38+-_0uK9D!0ETXz*! zcqNzbE8NOoGb3SO5>XaXGKb~p)H)u>369YNFyrvCX>0a7!r<>RHb}*Fbj(S&TFtb3 zy{l3Yg{4?na=dPn2UTP#dWMR07j(W3FE=+uiV8c=tdt5fag_Z7zw4;PrRhM>rOLwK zps)g6*0Piwi%+1oI`@QYTO?q=fSUH{vM%sl?mlq)^=l1vE!4g8+u@i_*aSwq4}`kt zQj`Pw$PFm+zj14FouD;{{AVH!R2w<=OC|j*xnfboH0R( zPC^N(Mn8bhD<<2u>i9? zPt)7vfC|X|S@ut%%CcSx{4RPk=Z<&lps#yTiJ3jy;hmeB7)U}w8tZHi0z^_Yky@kA z`3V}74XuyF4-!BoCVe z3^bkxv)oxJUAGeL?x7Tq<<_~2#thTCDx?VGwb``&$Iq^SZtKQwxmT_KbF|z1UB^k&o;H=6}8*Q5qa1a3{|Y zoClz*Qb>dq<_ESV+UA;I#ZryT%cgLRjsd9p;u!1oE2Mw{-RczGj?m9So597wB%oqy zQ*>@8TQw5xQ(-!-I$0qHG?9VQEQ%BY2oR8K=WHLbn8U#f1_P-R_b-iJ+yv%f@K8{v z--sIUc|VOWpJ&;gSuyM1fAPlN6jGSJ*7d#u@Rr@H11{-)lG88Gi-M#mrW1G%ogYzL zZs*U1GB0^~JEj%iS=`2BqtC2gL)|V`=MiF*c=LWM6UPr{g^FdhT<==*+dIGzf&gYp z3K<+;s|9z+zWa}k+?exg0FfvPVhi~x-*gcdbza-;k7JI~ zd>0~`iNV;TPr7tMt$T{Cy>c|;Z`XyRBPZcKEs%owGd`v?4QGs()8|nXMbUpwc%X|6 zMQwLBZu~wXyq>;4AH_e!oS&#SR9_#LTbNePJ*Zy4WJ{j`?GJt=Gyx<93DyF@8|0NP zVFhF>y9D-7Q7ypJqSE-Mztq#b#Ti-0bR*aBwaYg;PCg>#T3pbg!`1S(XO|pJvqmYA z5P*IZwzDUSKi!v>7yR;l0fQ!zpr@{V9BYZj#Mt-tTK^4igA#8w@Af=+^6}gFqYQI4 zMqrlVR@a%1{wtO70cpyu+i>2%-#>Yx2;Lv>zWiM|8|~aA(ASitj+eU#n$aXh^s65n zEQ%@DZ=odd!+ITWZRWiWfel7HkYjxA`??Y(U8AFCyTdjT5|e6`=}%Ve=Ai6ZY>|J$ zR~Xlhdyd$kOIWySb($1u1KgEsMMD696NL)sD1)}dM)J{-p!;SIs<>P0@Yg!6`cD23 zYRe2yhVT1M!o{>W4!{54u$U7g>I z0T}{VnvwjtfW9xRvb&D+N6w3sx1achCr)_0vFMqn*b%S|cu0AJFDqLrYswYQf zQ>uuxnuIsQcJ#OL)^ybzpaIP|8C?hg`80yJLHu?>*1B!6&b9^z7s*>Mcu1?m!x^vp z0N8YvnZdfo7%=|T?jlNN2}U)*s=1z?gdbZO(RZfP z+rh?B?Rkv1%8bdlC!u0a=eKroM`G`0AB^Vs5{#2%diwR%# z+_Ichpypf<@_tP`PrG)@IT)$J%;3Ed?1ih=Ysk z+?OP@a{Y9v%+A*FdYxzW6I<0g8Vc$5V)}KS@bILlhF@`hz5h0}p>KT?S#ZTybhuy< z4+zf`#m_*RK}xMbj;t~VQ;T5T@ts#k#qPAX{;Vh08_>lA=1d0u$KNm^smka=JjMCV zjzHZK$7;o;FSZ!K;itM}L4zz+&skX8gMLXNdQziVm8Q0q0zjfQo?Ttt$aP8}(J$6= zgXZg~TYdI&IniYUyJN%u{?3I|V?>-eQitD`?SW}WcY0O;AkTF z_^Y?ad+V)@je&tK@q100Ae;;Z;zX$@GEf)&knynw#+5rTr3?tGsXyD4b`-rt6Q2IK z!{_+!`|-C{3UeZz!Spf}VRbOliZk{r84$>;Uc%LypfHMvw0^Ecchyh))70fPTtI%< zGY2V| z|BTB#Rf}bDK7rB#`X7YL3Os^BJZK&#{Fh1{D4T`8y(iYx9A`8iMR!2W)I$!s!9Plw zX18E~>8>20dYQxS-v$uyEamHb>%3F8*RtPJGVkf8=FI96b&BRLp%U8*0h`sJwAlBD zNel-`cypcozMByMK2p6p&D!qt-cQmDOB58Fv;Nh^3#D(ZZL*rV0ReE=)JK=O=msTr zfTBR}^aW0eh+ROZjcj^x@&18u|AMbP`^UrMRqfVRlD|JauWzK!J=gQ{$)SuFJ?bTg zmK3-dw-N;|su?$`6A3=NXo~HP)(sisnTxTuyR!CUYZE)+Hu{JGY-H3O506fJ+ZvEF z&dn+N=ENd|N`JlScMSUj5lC?jR|}S%&5)&9`838@Cll7BwyF)pi9gCPQ>U@uA!`jr z`7Dodq%d9+Vlx}`uSz$c@Pkl*ss{?-uEV?KIb<-ItckAt&EoYo&g*V-1%2y16xf-L zn7#fkHvUC+v(?sU>;WWGE4AobN~u7_hlkBCQO;)~)l))rXWQyvZ zs>_V@2;W27cp9UVV!P_ClK|Kp(9@v}rORn0hx2HL;1XM`kefU-XbWDPNZi z;iG|?Oy}~Vooll6bC>@*6yhl&h?CQ!yPFD_KAs4mCR9*5l$k!ut*JDmhQu%_cO;b4qyp?tfRo zIIMnfN|S#)N4rV>gOVAeR2S!i`t`q+a`D{>0*F^)*^0VDR+06Zx5*aB04xrUlT~gq zQBmQw7GIBX6d!J}BHp(nDs2#e7%@HLO0GZom2rD_6Y;C@!LGg8YrSh@xZDQHg=8m0 z+*_(2C9+23XB>IXYrDeCN*6MKK^Q9~QU8Q3XP`Qd+q(sghEA)iNy9JK4;^5b?5PTn zAplUgaOBEnt>@69=)A?PlJc=HUvb!UW6c&vNDXCHqoKnAM%-(^`w8yKlAD*E$@b>u zczzTVXfJv&4cj%XvW50il~pb-YpWz1;IE9&s_4zKeqlYw<)U4l9|B_8ONhw$V(sOH z1j7g#k?poa&*Sd%q|dq2WYiw{0q22t^y1c0&lG_1FQPdz-g;C6l({J|1%|SFto&Fw zXBY%;@frDE=I*CT?CK{_5wo6rm(O;Vi{2MID*mKi64nnDCl;J)iRCk|I&|%wJ&{wc?fezaoFaiNzLq9t;#|Na6 z;{+_3!rYnEv9%efW|Nd=vM<*o*Ab=G`HR7VzRJq#%F5=>&RNC93@Kd$fw$>FCq*5bL-t#qBK;7z zggwrlijK2U;GNt*g?&UL`*E%Qey49DiJDy{no&<4)@K%X@-7DlDi&ndD$1A|F&v)3 ztZ4acZzErRj`FsTXD7ma+9@Smi`4wX`_%Yw0;l*0<`9tmp71c?g^-CzBD`2UZQ>@Y zjt4O9KK#ON^z#s+F3WR#Ohn%N3&#}mF7Nzi*BJ|^<-m=Ws5F(2{w4bDklEQ*j8p~; zBv{yHGG~F}=YyHUu(m_)+DFEP!xc_%axM(Ew z88d0g0YmJ(yaYKp@7>+LJ})7nBEk24e{N8TP$V=-02QPeER6Z{(h=C$Ljw!qKnilj zlqi#BS9}X8sPf#NS68=uFi^Dv_@r)2t$TNbk=Xre!%bJ0fY9n23I_+rI#NdN#x;0v z2{_5ja#4fCb)1-wYXCo~+nP$bzd?YVwBJSXQot@ZHs<8p%{*7*6t4lvz~zUJFN(PE zJp2qDZaH8(0w8&#!2};k*sRHIF7P>}r30ck$&*CH{V2<3^!UfxI&2b04RZV0FyvABOfU#h+`8XVB_WyO(cZVvuJuxn>7}bCM#m+Ze2q3Q8h^g5 z_x7v>^ze|puzk*om_1J!HwE!8zs(t?m5R2vgdYu^5Y?7h;z&|kN>LvJcUnGx@O^%P zm94q2qF2*cxX^upE(Z^zS7mqioXXy5ueB9+P3P&n@{?ROb4n!l(j?gb_JcEGhykd# zT*=v7JEydv&l5-LP{(~Q`;G;-oe`zi|Lj;T$!E~(@U)dHq3*GRfu>{seV&(jq3ISs zqs`04Mm2zeW`on2A^1o=)0xS98yIi!7j}rqkas?tBp1U0Au+gG{7nF#KT^{?$V2(L zd#ORV@oW+NQ7oc8`A4<<(wT_T^lH&G{_j9yfe_#Kp@*2WUuDk7!o(;j+k`0Fd`|li zqd$j@si@1SXlQ6@XsBsu-X2sIri!i2l?!<&EjxaKr+r1U&%jgvF4pj4u-f{B%VBxK z8;XK%G;GvSpV@Q!y>i+(Zg@Tp(!(cDaE7QVVd%I3HcVNUK4Ec=bwLW<1>w5IQ$wmq ziPD&!p54yQ&CYJrZ@s;Jo#(rDtAy9VL?3)CAlpSOGOMnnp@0aocW|-dI^Mz{wdn>% zc-%c-&@k)eplDhFS(3BPx2sXPw9e&AiFMdy~fMqE5 zQ(KgDf*q;38F7TAcDx>SgrojV6}6rstBtW4*1J<9GNDb7H14(y(2@Yg!&qJe9w$`B zY^s^n>1 z;As}|9j--F3UxW7Fz-ms0#((;-}E+l?2w=>sJ?~0wXozD#whCY;kLhcT%;e{x*0Y8 z=es?~P^xRKMDP)zFh8YklV?^3X`=yM2Cu1Gz~~f^VQa_8k3tX5Z*m&TPb_CtAl|n; zq@{cLF1Gt*MLj;+pQyTXA)&Pz$LoG;Z?X7$`Q_vE6=8n@LI4R^e0uuESQ0|qs)`E0 zIhB@{($ZFxmzGu(7k>j7A4*Hhii?3CZGBsvDnyRFOv4o+U{q_4XbqVr0hnBC@~Hm& z>0&g1p^X?B+Zh&FAQ_%Ykm!#F3swN9b&Cm9hA7!;(>4v{xTY^&FGGr;4Ntc@O9>0t z=p<7!PVXPl<`JfGYf*Hns9|H((t558ft;D41j}H>SxU8Gbev#G618IBMbR?9<5dx2 zk$L8_sTYo_!!>n$(+Rc#BA0(*ef@)5!;Co5oIxRmF7^z ze@83fP&d2epLbU%oJ4mARl1P{b-WAe`8~OcOa4C=Kt#u8;f{KE@V(jV^{3iq@{|F| za)8*hJ5$2>rk}lxfq$EBZY-;*Hdm78eSU4Dos0l)2+yscLhW+#Y{vSt&Rozp1ClIm z5%GeBLQ{;w{DXqE$!MVZVi9(7mv3cZP?XVZBF;IzlZBSe*Qre(-an*^iXCgh4twR2t-emNOnut za<3Lof&hZXYP~%kc&eG9iT0AWI)@D)KJf88kB32bn`{wv5q}5tOUa1>H(&1t8l~uL zl9x|>ELx!7b^T<&B(fWYbQZl5$I{l`UcCK{B?T5X0kX^f_F1E@9+%O`A+SR{Ue@b{QRvKp zX9YJsdSZZ;!|5!p+o(|1*7(7kW#E+Yn#*PQw$Qx|x2>Cw&S-0B+Y@z)t9E0%i3An= z`~`;?5#C=P3#8A6B{g#n_QL?nnB`F9-Jd)IksqWVgHfH&LQeQmlvCqtBl{A6Ovyy86MKYob1i+y;4fwM&b+_x{z`%GNMDjFfhpbGQAYweO_ z?y|ehN2p7^e`!4vRnbsa(U277XXjIWW2N}UI>^)=Hj0CU%EUqEY~RUX_n=$gGQ(vr zhEvoi;Iah{s++M)oGP>Ubxz5IUFTWwd(4{>QF`w(%()@ArmMw3$f=!i&f1c)=>U(3 z(qa%Nncw*~x_F}L9M}d@o3SZk4MQU}oaX`oTmC>;e3Y@%9k17ze#mLAIgx@N>%?a( zS>gyoIDzuCo4JYJ>a28fJ~~V>)4sX;yFDwsC)7o|5F_#zWW|Pq&&{?Ju4(k+VO8`9 z>4pEL`&to|)QPiavv!F*<(^}Kbm6aIK!{J0PHkjQGDEgXu_Q_~Ua^EJWz4bplL%vq zw7-G6QQn$ki)h~b3E}Lp5~Z?f*~~Y911x=zHv~DT%b0hK!LT-k0p5v&208!_Zz*w@ z0ls>f1|@9B6kr~Q4DAK{fi+u1zu}){X|^)q#${*T*bQ zL|HqbqF*3rdG%=gYWI~aJtK0Z$MP>+hF5HYh10#FkudmdrMJG8_Z3!{4R68+9FGsU zhnsftG6o&X=1;%+L6D_4jxZ1q*~#rDf41w;G+gG3)zqf(PrYw9C#iUyIFBp^JtaMT zm4cbWe%>P7g+*P)gk8qKJlx!&-8J!;qaedvxqZ3vyX7QPD~+GMMpbf(pK%24R%A6s zW~k8_fM9bIYzE|Da1M&jkG!C>0}4fIv~@`_%%KKqDF z%59nQOpV&WN;nzYYMtLBe}d1jVmm&$i3`pNgrmEF0&#c*D>YA`KTJ5R1rj9_MH6Uw zzQmH8u^KPD38hgh0hppeUTvI!S5bP|^$(B7v4`P`H~on8m*KER$lZ)hbcXYUg^Ej> zE@+D>E$&L&bicha&R#y=K4d88wR%r%G}siuuZ?K414rw>#EpN0gs>nP$}4l1xTuS6&q<&eb zx5Ko;!%MFeDKhV3h#a&0m?RN#G3f5+VU%Kv!$LgkaQ6c1{v+nD7jxMW{@k*r#a>gT zC(G>>KJga>{b@;P5?e?C)pB*W0A|cOabA^h{jtATP4)VF8wf-hPFA#+*<^n(7u+`! z9%`eC95ls8W&hZ9X#oCwdxATKTA-K-pC&=bNa@{|Z9iHSTri(xTd3EO;QOTNDdO_x zPm=TnuUR_hSIGSZvw`wja?bQ*rq%{`R{^(!CoYTFR}eo%JPV=ns&kj)mBI?gjIIxj zr;!XvK$owJMq`P#S>jYH*G(YG%eMWZ8dkG)2NXWfo09+tW+s=+J4F>UCfELEh%k!m+L3^&-WQOhM`q~GV<9VJO+v(c- zY|u2g(gm5@{=9>|Jr`OcUfn>mx|b1ru+cC=9*>o=yR_%= z;Ufb`PP5I$W+3p;~VE^cBVE*UeS5Sbp0Nas?@V z8(hzRS)I)E9eU;$H@Rs$XLQxTp?{Apn z9%p5dY)8Kyi2gH_1|_k!$Jyro;s$`YS(@sMbWUULb+uikb!?1?UAaXNCKB~G zaRC{~gJ1sj8jX1Ey%O-DsV_j;XM0HDPQ*gf0s+L2G?z7k{F^M(oNLgtxEq9Kq$+S__b4!O&Fg|m43FN(b z?_M(h_Uh{oj#>cb`*@6kGU6i!zUfDFM4hE zEq>Bd(KdX!lc;swz%z8!PuAV|kz?K}mOuN&d-x&3Aq;D}W7PGNM_6N8T#Hr!EmEJX zNA<@Tr;lE;E!t;oYW9o?m5hnSbovD^_vW{o_3$1o?vIO|Bq(91Zu>9PzUT5m-sfdE zgBg66A~w(OHk;+ZBh^r&e{ndNUUDci?QHpL>uHBLuocZBTLm6Kgtbs+lMrtqOQ(5c zodejzn14SIo;WVhH%uk(O*3A)FEM}bduCrk+YjJ8BuQ9t0T(8a~)+|We z1kvjQv_8GJeV}yJ#DX}1N)$Ux4$pK{kK`{+Cdk|I&W6fyE&%E^Ho0%#>+1S-T0R!d zUMnIRP2jg@x>9%K#QS1AJ}1%Jx_||k*am(1Q5rCHrdl478CL8?%NkpeF^$z|D_2Co zu7+HroQ6fSgc#JMrbd<}A#M(3)R`{6bn5VBE@$gEkLgsOUJh?|e%yVK%i%8W^!0LK zL$MhxuQ6I20HdScH>0&;u|NBq)Gne^pWc7>pPOP-&)aq=8}S`TJAfm!B1*68V49mx!}gPFH)T+~akXlF}eR_GjEJ zIe4VyEzV_q(Qx%ikt%If zW^B){@a1oF7C_nutJJdC43h#@VgPJfV9?Dc&ilAE$t>o1a^J2owQ1-Fe%c15%-Y@2 zF(;5i)Caww?pI~J9f!nSuT-*CWOU|6`1Ly1i!C~n`3{+K| z-{?>7fLJ-ho7idMbtMtk84+g-g_FtTq9`$7EE@9bY)D&U(hjn>!CS;#aETlr7}P;0 zl=P1%O6$3jTT`OltJAR`L{N)A5?%8?1q#AL`ban|F3Jamh@^9P?L<^{a=ULm_$q*L zH@um%)afpOK|vMWOb@@ir}5i z?{RsLq*z|xqxGLVo6v3fyj*Qtg?6NJFkyTVX#CuPYPNpd-0$Z5@|xiR&vmyp-}*-0 z_THcP=J}>{Jnx0{FSCdHN<DYk z_scOo?J$F7LeHPaUxXV`8t34{Q7&MnG#WUvIqVvd4*;H`xTyb z?=%M9S|HBonOOeYD>yR55jo5}1N@|3)2*xH{b_RqTe;pUAG!TzCjJ8LIItyKm{SKd zfASM4VlfC>R(A>uW_35d(keX{7HY5HGC+~xX?a@F##dvlkc=zN2XGmPpcDMc;IXxgAhcX>Nlkl{A89^z=CxH zsVaOe$({&tEYJ6Lr<&Ga5*z<>(;{ms~M98V|Fx1qvo$3yi^EJ>CHvw6)?^r>gqG5P%@CeOPVcMvx#e+a%~K z|IuR=!}>b}Irm~H_(|=a{Yx4jX3p#;qs4r)%_xc=9klTE);xExfl#G4YwPzT=OP_U zs3I|aNQiiWvKee_w3l^ZAipDT7hM-*lhl_N2gD-8aF%d_h?Al=ZQH#`<|p~=|E7Oq zE{Ym&idl369*R|64cDg>Qwzfxx?P<$p@Zg@Tl{%lI9Dh~xRJq$r^AgmZ+6U$`OZ$= zmjN1-YPj5~nz)KzCy!t+RGAE7x((ot_=N5Ck1$SLhclC(EaPlm-2>(N;B!}nU6*>~ zs99(c21Fk>xnFipA}B2CpV@ggo|pIA&+Kt^VE@}+KhYpf>u8Vj9D;$oCCa{WXfR*N z3YQR-&%Ba-04}m(yaSv;8fmVRjT`Litb2zKt)?F0c{hA!)Ah#ZQE7)UcMXxswNjq? zhb?RsizMff!4-$6DD@vHk-;`nV}%U(;1q4CF0W?oH8+}_J2?0F;r^1z;iOZw z7==yHXg~3L&Z|OAx(~4L^3FAyLBd}ZR|jL+aGm?v5uf1Gpaj|nt;EMEvDhE-Qn`)} zzs4S6`u+=DnFT1MLbL~0eZFSiwD#?*{_;4RxmL-78kjKilrs$;gTuQT$X{%<<;y4$ z%@XiBOIdy!Ieu_mr}|wiLs|N3K@Dpv5fTjGls$Tx)LVY(oMCeYsYNucE=)CBD4j}n3kjkuy{>?w^)zy{YOnsmk)fSi{%s%XE(ya7 zYu@o-s(b#SN>gx|4w+=+BJ<77lqP}X&%`;#U^E5M?o8UpcT@P@ZlkWbHRjG0nQL#? zPlKJ3L<&HgZ7NYD6ToYwKUe?>VZ5&w-`!SHhNlHyx@{yjAl8J&g=&?v6~Ld%0C8S} zF_I4+C^$MIIcKQ?mAb_CEINqK>ELm2-g$CtIS_-x;I`kF&)wLvLWzfmr^OOg&k(z$ zi+nT_lt-Si!tJZtTE2i!NmrIqFUP@sSlmURZ_1Q|9>%#dS9L5UjuaVM3Xc)XQ0E5G1#j; zE;;Rc%0^b=M(U(&nw5eCzhqvU0!f9=ATY>R3uv_+n#>N(#fP9jPOk?A(=7h6|$uz+mF9rBE3_m{(AYSFx_U>G5an3zs` z#Hx&e?juoiTq~lVKjc>j`Nlfi;Wf$nG) zt9t*pw4{n+@?ZcNDQOj?imA+8m#%e-((x9tvp5l>s`Y;yFwo!iZ$HSQ->BY~^dWWl`%WP>a$Le0S zK#%ib7=kN^eW?4X%BV*l^dp|%e1=jhwbudecm0&)%J_JoteNxbsV%PIHstHwaHowgssOZ&Mrp}F6XoBT(`Gxa=T3gOWYkV;uaIX2E5+Il*Ztg>9!UCq zsP>;ta{IR)7E`%)ACmFxdbCfs)nQ7yJCCxaA!CFe3mu=3{i{ zLCC!uj~VyH*O7dwKJIeHRMuukV|=goO*$~x6Y1x0`s3k3+i!%0AbBH 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
      FS8tvOe&(d)Nb4wtoAdz&dhdq#1I`D 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
    2. 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

      T;0aD|`gyNsP|(g`~jwArG*I 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
      obwq#W z6p8W_jwvxVkBc^lB#klKXpf z@b%tR`k|}6hN}4`RlHM$*!Kofzj#F!TF9wVX@HJ z$~;k0G_dM)$RXhYBoNsfB85-Ci9!aM?L#KluycQS{E~4?Pt(RBO2;Kice~yPwc-H* z65s#oo~^zJ2)tTcOxFGSW*S8ePFB3lvz~mTAR44_L@n`9A^ba!96){y=R@{APii>> z*@T3QDgRmBAZ!XvNx^wO_b#bdkY`ntvZ2fXW!oy*mLi_nD}2oa5$~V;vKq|i^FKo^ z@k}u+1Swt9wDE>MYqzX-$CWRLs;O07Nr4-lL3Xqhhn9_z}$4Xmgzf-WdQ- zni@7G+u8Bs^SDIw+ApDw{tT zQ8pM77vcibSX%0D4HS)Q{O5dFl|q#Fe!TKDag2-ub7g$>wp#)!DmvOtB{}kc+fwAP z-R0QL-9KYsN*WUJM2r8-DQL|pc=6F8a{juBDEzMAYsJ7BS>{xl7zG$~n8smy-yJ;k z3A51M`Ao0t0hwTNtUEh=)$Q*G;R)s`dz5}x*9I@r@GP@vN9n`{30;}&SMBQqD<25m z>*>iKrp?knHZ76QqsVp+B|@zU0eF>5>+pBFM(ntSO8%31BoCz;n+K`DR2J8cnd_49 zf;9Z~vQ@I;nX0%;LmSaR1Jj!5%&P(d5cOiyelWH^`wu#>=*9t2QVo58v_{OoVZ(n3 zH;u0#I|XQ#DrHTaRE$Rx2c^t+)wkJJ1yPT;^OgUbzHF%subTr7vmmA3Zd;KTk!~CT zc*Z_MA@AWsS_421*iFibY7*5ZKo*n3Z&2l=0`-)Dg?yz~=nlIYO0&AJQINp}WoXtTgajF-d3s^8Op>?p;4c5mGvUGp?A z_l94yQjxxb9Cu!|7*kB&%-W|j&D}ij=_9h$dq$38)SmB-1j&?>V!jA^&9v^4~_ zW(jW5;eubGeXI_YRf=XCuC)34`eK#x*xLf;V4p5}apPTzs*uY09`)g6@&=_al5hLD zC?N7aTy!;GaOhB6Pj(e2kRYD~swV-T*TMZ2yJQYJGuD=yDtR zwV{&yBFS{l*D)M-mtH+mmi1msNYwhy)*NHhI(J_k$NkoPLfJ6*{iuOSb^X%!^%fhp;{<_AefUmNPIMM@WMmcApBj{NXA zZn+rhEB5LIUAJgrN3*XJ9k(E;eF-ztMjt!I{ z>-X0?|5SY9{bB6#*@~>sda13{xF<>MpuHx?=756QJVho)UgC9N9n{u zW!q`r0_vI**GLu^XOL1fQLF!UL$@KC8^yVG@lPyLXSwc7_=L^`9gWZIdwVsb=W`1_ zm#E=4+yE9QlgJ7o_g~#HM|Wg$S{|5$NgfZ^GgEnG50CC(>@F2KdAULJBnpz)%w)}x z#`&%6v#`d{q;fkgRwWI*!-_TE3ds+)Jo3kzjI{@=C%LZSgQe6AFqp4XsSG;~MQ$BMH3E(wNY9oo1fU+$mv@MjDR zbw5LVToZ^9m$$ep1T)^J*6S{8C5Xs+NuylU;E#rd~-0qG$!II4wXo(=uYbT!SC_YC`j0;8UPYdJU zHBNnnb2mO5-d9`e1#Ak6Og>M0Y&I7Kd3m^-MmCMc$LM%2?pEs85pD5??BV3<1A%EN zmWz=>IAQ$&NxFSS*pp+0Kj$)I#VuW&v~#w3{87oj6BSuA*tWE$P8>wAuW1vZ;4K5b zH8df;R}}X0zb_s>ewxC&bR&);@>xE6nmN4gmz_Et&)Q~KM*_;wWq~}o=Hn%E3#xE0vB}v5W|yaYZR*|m-7W__?&?N}lHu?-WVZr9M=_-)Xc4KKc*%ae$(k7V;$=u;sruJ-umPAX36gwkWCMd&pVg_h*`S7x3u90_a+E{c<-IAtD873} zZio_L&f_OYUu_&NaR4|EKA=C?Hdrs=ge^fw?_X!T!<)3#HWmKepinyLaA`JIPm>hB zSbuVh|0dlLplNv9uo8m8VAXugGHx-f(!v1#uX;=irPy*H{oE8dk$la8!YfIY#o%qLM5H>ZE~aZLJ2=dj9Xs(+e71rmMHLZ?R))lZ$@(lZR@7#`e zk5`g0gk78-&bklh>t%=t&+(;z-T9qdkXEpe*K1(4*;e}7t=5g`U&RLZO7;)ax7?IG zCU<%sgpFQ{yeZRGttlfmNR)*Lf49+O5a=-|M>_Dl$ra>0ytj;Bvps&`cQ>xfoud1m zKajY>T<<6QaUMpbeykS@EHgUFZ*4;Tq{8#X(F|CP9Kcx5#d5;;;zbwOo16wM9@#uz zO2pp`YoithLY7$oaUTs|&IE-p{R}4Eqj727jbz zV`1D-KBTKL!Oe1P29D%GH* z?YM_`qGw?_ohmrs@qPtFrK8zc9Ug1UDBs>OJcWq2+2{%QoW){bZd?Y)yO7}V+Vy+7 z8!Zl8;#<$pg8Ve~R$HS+JB+MOVwf%g2KrIC4*=kA*o1NqHE*@t-j9;yfy2ge((${N2b{x@O6^z?OS;GGeq1;fT@9e@@{yevr4kCk#-FPVrd=vYTcR67o7~& z+#H6JZH{sCvW@)VBQh#wzBJyg1qCt>?66#pW1H~K-^**Ehuza@< zO-#q{VWE?KeA;X-Ti@a!jBn~HsXk}jclBwnn`RE=89uZ|hb%7Vhuf1Q;w%dCL(7_J zC%-IP2&bDmDuF~5>Q3V#UC=y~JTCk&Vu2Lt5o2bLYE~*0-RE3I1)ueX`HScOOCJDr zY^s=x7xEIaFAVBMg(Wm?eKi2gmlk!HfKjKPnFuD$)`WJbR zAg;?$0YX`)QeSoA66$?bOt>_#f4cq8YLRYZ;P!lrfl17%THU5hX9twBWkCg|$cOGg zCZqN9CyxcTKrsJ5-KnCZ<94(Elbb*$R}t`~$xhI9(>-wue*ux4jB@zeH2VTjLp0?0zx1T4eIJ z+pLlq4Q8G5x}1xI3>fQj+n-PB04(p+A6Y{CrMnP@rvr5>-~Rci^2$f zzkyycTA7JO%hZ&WmT!MBNYOyP+OB^dDgxVz6Z`P5aLwLd9euiV-%BlMqn}rpu(Voh z73;SRZn!izV}TMW@eN-d0rWS1^nR?#?7FeIaIdYU=~5bp1t7_tfCexvEi52ymLWo# z16utK+PlV+K{6n44M(aBl5#p%wj4{TDP{vo!;wKSd-(5}&J4PjrKi*cnz6SK57~{S z%g+KP-@nazACQ|{H*Yg7xAsp^KJ?~d-hT#(MdUBXeZ%d{ievixI zoKhfsj(!K|7%HRqw!N`*jH8B4pE_&?X zHVv$=tchJ*9K!>8zPGjdpWN6u#r1X@@QPY9d~c%FC<8KCi$=}Sklv1piq_}ZTe5`z zWz{|9&X@#1L9c^FFY6;Y#Y6%Ct?Nq(?{BD*`Ac_M)Bc7QZAJ+|rsExwYPYsNpz?CUf_BxVHz z+5In|_}~EZ#e)OrVuy)&vDC>AMgL{HuI3TR|GmaFKdg1hcayjL;BIb!*+qw}_>y+) zq3&h7Ya3Iu(ekpA=drn!Q;nOwi$m|Q4j5FtysTllRM!v%;fn)4Sd}LKrm{zRxa_5s zoojZU3D9x_B22a?b6!_rsxL(}g$5fOFI+c9C4Rr2*FA7}3U!(0H;CjE=V@6wY~4n{ zkF~hx1lqWkvyrq)YlT4@Ic}udE77%1W0Xi|MHg|DXv4dauYA~976A}I%%)-s9*FCC zf&9!H2h9-WLJ1yX017Lm01@6Rr9$Cj&W7!21Lvz3K)2y}aB5RZtN`0e``jDek@E38 zx@d*IIA}bM_=_HWVHd1qJfONq`okf?b?-?6{5hy^CejkndIVc{mWZ$_c}d1M{iGfK zEO0gwjPPP$5Kk+8S52sSBaHF(1*|}Yaa}(%gIHLc)rpgJX&EKV^=i9Xmw7g7ovpQC zv$|}xg81c&)5#PBJ*_HFT@{u1Knv}jvNo|ao6~O6MN-%!UsG06oJWpMIX&+NhkTuh z#Dnkvmlgg+tzk$c7N?b7P8FpRllRrPLGPUbXSh@M?e2OnyNWe$Iu3*ytBO_~W{as) zJ3p1N4rlwP`w{s9sAg-aV<_@z^Kd{Yo-(olCUtWP63*aEj4w3#TE&CgGy>i}UhP$p z7TxJ#m5;InbO%j?rV>Hi*OMLFEuw45nas{e=5asg!fT2;xX+ySURsV%AJbo5VAIe< zr)KNy*&YaG*lHJkIFX*DIqh5AAkTg(1b1$9eUQQib+|h=RLkr zr|9pi)O~+Qcx8iNGwE2FZawd0E-S7cN&jNVdJ3aiqxVZ|6`vW$yGDtJr`R{VVX%$i zs3=+j?5~`fXLS>hKvP;)6at<>sT0(`o7hy=ct3qT6=Gt3jf7WDn z_0}mDnDek9j+%O#5a_xdn5|~Lm}oK(+|4dA6qV7TDl%DFt^L<*0rk0&^k>S@tHj=D z*@K;Zsao@#b8OY1t781)tYLRBhWbvS(qO^6jvCrS%|RU#K2-#ULmAxqdKgFR^?khc z!U1FcyL#`a_-xY^pjzj2)!iK|xNxt8cEE3)Z8+f%_ag)NwvtZGT7wWJ>I^2T-nCYa zoBVH()N9SE7bk4RpFr0ayukP-GD{(>kXtW#^)B7{q&?`JSi2=H5dU~(67$9g&<5BE zhulxp_<{0Rw;%Y>6Hw2KCxR97m^Ie!vSlDQC{;FxTz1p@2~O5HY}df~eLSjNyDfSk z18M3eql=ri(|UK=DQnPYJd-423foh*Z7`;s9FXtIfY3kuU8{S zHJrIs+dVHJgn@k;_!y&XE5iB=F8Y3E(mz{!fzxtq(D$-V&xe=QL3yB>1 zUT-gPc7l+#2FKS&w|1GFKb&6f_2!fUl@cS<()8c#!s`xyNB=j&W>V@@{fRG03Wu?`(ZG7(-{8nSm}V-7E`C_?O!@h{@sA`Dzy`~;la%NW zlg1ale6l^7wn~%Yt%+$S&zg3;a8EsA`viiN7IEOzL|Fe9jRU|Ny00m9ht_9&E(#-_ zkRSJ(3emKttA)+q^rv4x7^~P3DDGD~Ne3VAzs>{e>*hnlZskomDo)>ziLbQJ*D%FboGTQZ zzLxkv}yCF4Qp*+v^b zx1AwXmjmvu*|P`3sH$5PAE1s0nh`O%D73S-9?dr#t<9=>aybI-J8(K48V7o%MYR2Y z1YW#|Aqd23xP5TGZiZ&F%`-@}`UFf=yo*c>4zh#()_fZK=qcZ=Ez5azA+g0)SVxe{91>a2EY*y`l z3;*azj21SmSZ&jRhx-cRUU_<7IUwGweRFpP7=XqNWwFLsO6IlI(&wIHy6VHC=n8+w zT&4HdO+Yi|?X%iH<3wnUrIa*>eerO6dW4I-=(Tr0!{~-uPQcm0c7^RByUOc8j}~-X z7_qk50C@+fsPdGk6B4!|+MvpSL(Z2P*y%u)z2Ha@@ANs2FvhT&q;oM$3hq*O!Uda~ zwH!ifidR9PIU`%K3ERoc1kmj>iknT}bSx|YTa+3d7Fc&3#b#W$+djnxC43x60Xmp~ zfsx+$)x*%$Lujylc{Dhx(uYAZ=iFVz8FaODy6f+60P<~go8dxKF}V=Jx~SOL=5*X| z{qB^r5WYY@5BReZLfN;bx+nF=nTEq)sFS}~cG7&lTXGSfImZN9+rq_zO!J9d&Rptp zb9YU4f;Ie;TP2-3xu$W7qJf@ZRdum>mba&WwMJ3vrt>o(1-=!LZ3{6*$DdhoZ4DP_?<<&NNsfk!ns7KLx zq)!~tWnlgD)yur_NH)ke0`-ZGy@@iVBCQp}-6_?Twh`HArOZd>=U&*9Z;~3$xX1Hg zB^9GTV;)YG-=C`zC+2H!?lU`uY zx`L!#YgfbP@y-C5zxGCFDGtzK7J&AxMXIfbQrg{mbGl$Ee`)W?Mx#{6MSiv5c(riz zEXKzkPep$J` z8FdTh35xfzd2M75ZGQqWvvjpZV9h22&3i^DM8%{T)&@u*fY>6{R@@Jn#pv*e6w2c% zwk$Z*>%aU71>HN_DoY?ee-feV^P>Ob(<^Wh`;)`&eOP4e>eNpt!J?XtLHd zHd)Ydxi=U1@7k^5V{Q&){;S--4EFkmkDBJBdEoFC#*UOR8mvOaY3e#C`O+U?VfsPS5-V?K|srYHawlGXbu;PwP3 zNb1NW>pyp+lGhs%Wu$efR+nf9P^7y%>k?B}$!CzB`Lg3MLgS~hI6Bw>!+r29`7{WG zz$B`&rRu}wox0|WZNzgE3gPgG{$&jV|HKmYPmS7W-JS!vG=Y=eN7$OE4I>_1$65ux zrPL9#eF)Xb*#2dNM0xzojgD|JRcy%-6S?Iw_#B;hSqkb2+eHcJZRKmWDk&?QoL6~h zRGVy00(Ytmf}iQ5UXS#>#p1$U+bZSEDwwG{I4NpBl3)0kLKTR7ye`>-lvWL|V4VIe zR>X>56IU7YaE^^i7G-d>$u8=B`+=u|7y#&BiBiNNJ%7efY&(#7{!t=L424ADl^s2h z6c#KM`@Vle=9w)-8VmacB~NbjKqBxnu%zfPT@PB&q=Ka&SJ=jMQ%8DYlr06`YYJit z^Ct-8IJfh^Yu|8RR;H-!>nE~0o3?IEz^y-oBtiV^XG}KxmG?iNqWL5$IUg4iJ6xZZ z%bP=z=mkf;?H<+((XXIMolmaGt$C=DhKs+20sdY8M-Z?<(gnPV+J zTBGGZZ}3m=PB5%i#v3(Y{Aa_ph~p)N?ZebYO~l=3rQI4UzVp2Ie@PP}P7o8)iVhw4 z=DF#_jp4)AD4nuxw^} ziGasD?~ypaxQ@yHSglil<@F4$sH!1QS(URrqAAsD$z`(QDFsvsm- z-5$^Zj^MsX4--(Ue7ar6kH`2u%o#1=IOr*HnsUF*%@22W-ccz+G*HF{(>2o-AHYDc zyl&({;f0ele>!?_WGddYiqXMOz0uRIdAQB`PgQiKSi%SSd24HHduuEIm_N4(0?O1cf{}!=Wacg``JSwYL3?FS4z_ocF{SHW3rqA*2v+&ET zz|lETLYZX`F%w3sd{v1fv>wrRc+4p!X1T|?-%ASOB!y5uX?7b*ezE)s;JLP>+{r?J zlP>|-T$5N&(#^8g_rD)Kqm>4gsd+VLPN036$(V|Md=n)#6gR>P3nYsd*WgSq!eB?i zmL#2f!xSan5ksR5i|j+4WM7RDrs1FSobu-<_EQM^hkEL9_khK!GIF{zHb<|WiH~nJ zJ-wdO`RsU{`iIY%6ZH2!qa95WDaRxEU%Vk6wly4v6bvO?qok`UU*L?(!Zt=u8*0{s zs)5v~wAtalHScm+0Ne2IQ}&PR7Op8b7K6f|fS!t0#biWF_q~IhkZKU9KML1hsM||< z?u+n78RfptT1xspJ%6due%Fl4txeR-R*8lm4Fl=hiwPjJrC~Az__AO5KP&Bsp%n;$ z;OkO#PB0X91!#w#sfevv$|+~8PLD+hE8PiA2pQY^WYaypssW8=l{PAFvS)y=I*yZ3 zoN~3DxvN>4VtRt}i|u-OIeT63%;rYLi&QsCX&EA{|1v@;Ku^^5zT&`i#lfo&AB29f z1d#NtdNR)@fVTP2BE^XSMz{)5Crb^)n__(qGB=6>M!5>X0^gA-u|5Mx;p}@43Kg7p z&P;R6N<}N`%05^hI?z2YAKgAJE`Y}H&=mJWr{pW)$wH;(59ia@Jxy7lzo{HNHP~Uw zy(XzX+q>>(nm?4?v%<&VTdT-%Twg8z^;{p*XV-og3DKHYRh{`EBF`P4Z>fgcMQh(j zx8bnmj-5sS)#c06rrRo@KL^~0{J)%;$cD)Hnw$1fjVMy@LX!gOfXP{k$vdF)yD||t zw8T<2yezUfqP`p&j=1g-0$P5Ehtxn$Rsd1q3T{8xfVwZ^ggq<0L zB1q=%gfi0#2UOSqtYj^K#R`e)UzySpNER9lI^u=N01YP&Qv&c9A^hKyB)&uoIb;8r zrE?7ozET~zi@|0(T&#_l$QB;g_Bx#2LeKIfOd(WMQD<^^`ULu$Oecu|ug8PQA_%l4 z4U)c=ZMWgm0CfVOeyQ}*0n|^xx}516leX+QbDYb&ZYP#O>np z;%dtb{k-LbH42MbnSzBZcJoG?DQR_P@`F@ofp+;qvn}(@`I8V)u|IVYX&JLVH^2n! zNyiITA|vI(_0^m==ExG`L#_kB8p+sINfZ;bsqPYGxw;k=2>KVm)nHmnOeaUFkT)q9 zl&l~@1vZUn5VJ$TA%%=;Z?|DRIp2r@d!nI)TGlNYt%nc}bvj&RN(07~Vo%Do3eMaD(G`>A^R;#|M*Hp~ zny~CD=M68;X1LF@7KLId&9XOci9V%-;Px)@grOuxIBgjP6y9h$g|`cNrLpIi8sdxzXo7GY4)4oevM6H%*)*PzB6~i z{IRimm^5Yhc_w)O@W$Xabx>~$n-(uDy5NWVnNI@M#+kX7Ap^q#lgWJ~e!JdCl_CcG z@o`@QC&Ld2$n@L!qwU`U}ZVn#uMj<`cni*LY;9HN&tUmT2PRg2@Emxu>oh41l2ZGpH@(bIMFthur%yXT`F^h(DX#W zSgD%{p7G=3GcXwW_jZXCURqcIBMe3p`~p8-kY9n?W+{ei88CF9R{`s?%Xg};zyEZt z-S}#IV!_j^rpd3}sz;Etj&1y^h^@J{qP= zCR<_`kQ#AH7EWBzIVxlp?dsJDejWVK`b_xVCZyOFQ4})ApO^iWeERoyQf6W%lDS!V z{{41Yo+vs1~@$v3R99N_FuPx^xhoQXU z!|;Wg9RFN!BY$@^KW(HbNoBsholCdfxp$@^;#eX65pA(~FIFs^=;Na~%%*;% z9-%CrGE>XQGk*SF!QCCXs6BN?B8JxQHCS=4t&`y0e)~R@8iSPXykM$tWp})haa@1S zB^m{nQJ-e2Z_=%oyDnZmLoK8Qt`YCARtg&LansP<) z``0~F0nJQPBngV{CY@Gi2X4B-U@{%2;f~5+%kS|_Jwrnl!r z)%%Ht28}f&z$d%@rck3YEE4{Y{a$P%3+>3N*EhOToH`U8-fl;P-6RtyJ1jL~bo8HG zC;gvZ$42(3Vnlte8>3QmF$X|EtMz}kot;^b6irDbv9;xo7lUX?yZ!-B6Ox5@h=Pnh z%GeaH@EQ+O9kkRTlcIyz!0uyrV<(+ z7cWS>)~WtJqF&4?iZzarLf!pvxP<~uzDk8qUkPRqpo%>;k$ zpTC^--;YtK(1oV5n*8lRiZdlCB>L<}Nl_d-feHASG&cv25(Wr3*xA`SI2ennr-lC<7W#9ulSxps%)kLx01Q#wLvi(Z=smDPAX2WB*`(8WydO_7a7b)i@ z>f0}Ko=zD}#}l#nr87$Ss*7oS>z@~n2XxNg9rEH~jXazDCz5T;c0HRS7jif25!(5O zzMNu?)sS-f=}YS^A|KA9;j$421Qplopq(G@~3${UaSvUt=!wJzmEJvWs}hr zU#+o!9)6(Mtg&GLtq07_vQ>U;4PL=L+_`ra6r9D8@F4+0)L8)m8_|XuMKM>6#%p1# zFGUt|=Y87dLA|8q;F5XPi`N#4vu?hy5EoT2MW1(v-`>{DAI+p>m3OyGA?M!&0V3CT zwtCZp?6gwm?m_8->Z?yhb>Ux8f?mfXVNl6?(`%-QUelN$*zwi}2Ka!1bkm6dsqn=d z*ZG`;6vcQ>tEobn%5`t)OvXJ!+4UyY;TH09z+AM&5=WSE7{HUf&yYIEeMxGSMXK0S z-Ft~tNBQA~u7!xun5{vdYW-a5w=+K!glDE0B{)gBGe;9B?VdG12`^jwmr0$p z2tWIuK^qh*7Axe}h~9?2nM&#Q*iXmSa+I^rcOykI_?^~k$uz3ld~5cm4{9;{1 z-*Hw32xR}C7QoxMs?jA;Tu|_P?3Uv1*83xula!0-%2ZrVyJufFLcK7n$FQ<$o7Ea` z8j0d;HmgGlI1y)^5;-=CY|PKC^f;ZxlUZD+2#t-GIxl6#kdl-=`e| zQq7ycF~uB47#(qvl2WEb3ORzrU&Av8g;$pCDpkO)&jZDXTO{}|k*q4*m1i22qwO7B z2ix>TnwP1B)-!k=ZS0^y+QBcDW{Q=W3qZ~tazzN1&fE1D!ETl*NW@+S^mxQG!Tilc zYKt0fqH(mR(C`>>`oHv+QPNmDof#-gygE9x7*=sozdzOh*1Z~iRngrzQyV+ z=*8*OajbfrZKID*de)v=-F~{TsMZLcA0!`(&DB&hM~*AaXCBv=OV4{V+-sXL1~#HZ zz&IUTE{p3}h=HmPr`_9o{EXGr%r^F~z(x#-oeXs_kuhb)Y4|yxz^@&g^)mR=UaGzr z2QK?tDk~{XffbUD>&cHEvcJ=vJacw+6Ce3#b}zJ#>uUcRP>MH~W&%!(q#OTTcy4o@ z|AIuZ{!H$}(sFl)I$Ch|1b5q$ zPpZ4Np;x#gV5?eMN{RH}0lHkvwYG<=o!ROp!k6b1)L+kE=+b!HuS-ms+o0ZuQNqE+ z^c3$-_u~b-+#t}`0Pl-VsvMv9yquik(q93~k^J?7`L)%w2~F4Gn`q<^33Gx^n4h-@ zxyI@0e7gVXR@-c7*?!E&BF+E6*VZtnPZ+|a(_$-(dC1FAb<$6ia|!9oRi(w+m>hgL z44B|sX))jYOYbEJSP5{kVB-U%pde|o=OUhRbNxyCj) z9OS50uZPKwhRTlCG}orGI{!`l`SvXOm?!u915%VUS-U;M{{6Xtra1vk0v#C2>HpK^ zJTZpPdt(UZ-J4YtnCq)gcfi)+IXcY6cyWEfUwwfHCWL10FLBC%5RvJ)d5IBCmO&!m zYTWRUgq~HU@M31R#TeJ^+<&{;61en3oQ21=*w0x}t$aD37!FT=*q1r0^VSEpV29W1 zm8&4&1}s%LCI%FVq_9>?r>s-%JjJARrpFqFcgiRqm^h-2(b<#xG~f$nd;6rHVA8p0twEl^klFS8 zBKw<*tDzVYepYhRHdT9r_U$!<1fJY$wMAchh6-352%M;UB=~VD*)(28U+-wLr1_C*UZ}>}U4NU^$@z z|4cAAp7tzEiYp!rF|_>c9Op|KJ}z##EZ^H^f^0IcN3z{k_t?#WO=6-F9=F{NpiZGg zW8|JRH2v7jdkZKK>?}pgFAcELQKmc4w?AJKO>-eMPFCfq){YU(`-&Ku$?Z0qNL8?j z>?rGBph4ZYniBJ4%^!HWiz!=QNC6lZ^79d}DJ}j^niNNK^E!V&c@BDa;Jd|U{0!<1 zkzDZU(8B|qvzi6JBX9VyUi92`ad9qxg>vcB*#qiKT%x>hW>gdZh54^hPqKI<1FRn5 ziiv=O=8?=Fk)smwy`s#Cd&`&DIuRmiuB*zI*t9cE^);2%>BxbuYB^|*H`UkkX&(v9 zTWIVotw~CK)zGCR1(~FlJgrqVDzg%~(DeTr6yyIkY179iSf##`_MX>28>4mP!ISl=99f)Bo&o(Qs_jp zZkI|$g10&UiHI53{5gV#tRXg7l$GfIA%{ZjGr$pW-EGD3EHruDo$lt5r(1k{U*ILG zL8h9erbM%UNx5K9e;EUpi(Wm-Y?%C4ppvkYzFv?(DN~bSteiA${1BD+raCM4`)tNj z-daXK9;_NzTNkmd8S>wQQMsa3{sTyal?vau4Ljw#T_HMUGJKqD_S14IJoAICxMz|g zYV+==%vcz$vjVk=wv;+4-^i>fRY&@O=6oDUqvcq2dWIq+MYVAyE+pov48(r|atAQ* zx4`S^dL)T4?RBdsvE7A`&-Id)ho?EWuqd~1fAPs9`1gFWqb`!Djf;nk3lyeka%WUf zK~_=}Iz$-rGN&?FLR%5A82DRRwwI{NvYVoWnLLk{JTGA!o|2)i!B~(l7z`gqz}cW{ zTf=|?lOlg>#2y}0QgxdYFwZMLC%zzsB5NU6p;o~6#A)8|{}S?GORz4mw4B6+qV=o0 zy(izgI?Ru#Ph2fXqx0=Md{-C9BAH4!| zRguF2zmXV-M23C>mCU7QW_IuHj_&SOG&E#(ch~ik3m7JR-!i)&Nzt1$#kB~ILJtt2 zm?Ud1aj}x`R=aMp3RV0GKb?QHjF6&DF~xWxdqdE z7xmgt{?9_-6To{m26c6*y1MG+@CtZ6L$BE_5uX8}VwQeuLTKDj|5>a;~G)f7iRfhmCj`qQ$CinCMv7oe=bKSvOgemIm^EaX<}}s&;jxX{SCu_z78EO+L{^30Va@*w8G)eVU#W+~pI}t&?WK%=)GHA(6 z^%s!9eX!gU`rX=KSOftnfCbOVJj=%n462J)4<=Dob_xmt2L%}m3-2W*H8wUP051fD z%wtX&C;S1*EQ4AsO-&0?Q7$MbToV&08yhxVT_oWBYryZsmtXtPvR;jgSfIbd6tH3a zbq<8B{ZdTgN|o|DI#F^oJq0BEjzWq~#`|L}?LOyVje36r(N<9*0GlBSk}sPD=G-T- zoQhQCW{>SK!yMy2MM=MsSIJQ(hxaljY0SjE%#@JAhVd82S*c6WkgtvRcTfBO9x+(f zVA9UAq{UJ)?2NTGU5g*;vfSvpX|~~POv%1fT$BXjneX4&(MTmlKy4&pC~q%WYOg3y z{n@YK@<(@_QIw!YvMa0Yae5OXQr%6?Y~dFgIhQb+liSv1rK!91(xe=~vT_Y+iL`oFD zoQa)%or8T{L{ya9Q?3NKs?uuH*46V5aGr#PB<9tnLIzbiYWn4SfYee zs+A{KB8-wogoGJhC>YmJ^oOcAcl$0wkxEEa6j#+m6L?2rai_)QBDu7{cU`7f{%WM2JEU{rbg5_?EjkGr;_JQ%rs+ z-lgwtbnULgpnjR7PCMeTIOzN18E9>Y%Vgr+8%V|RU{kEqnTp{uM90mjH)z`?&6bs` zqo9+KD4&|7nXIamq$o#(EUshbD^ReOS+SOBWm$>cG%uxzG1DKeKVYDtIgQQCm?YTi zL<_SEM@C#5IfA*sc8!DcZrm038U>Cuil;DvcMMVVNf(V3It;2R?; z6soG03zc_s;^dU=y~P_AHW7?~JL#tVS7gS(3^+ zoe~a>Oye~)n}lfJl~3z!&h#ndH5;XmW43A>(|*W`NZ6JW3l&@TskZR%*2w2`&P=RT z@xn|TdF|TVA~`ix;tDFXd5m(fARsR4E?jb(#_PZn3{gDep=vrOmGo%I#`gbS;?j*g z2uK&SU=KeytWl8@oSfSOwFQ2+rjpjMp+Crg>v7?jtCFyE8 z(bIne0k`Dy+iJdG=S%R5i0Gpxj(5kd)UyAxZrF!n5aqfMmG-iZ*f!qr9V^v z&ddHStk2QqEm16gGhDwKGJ5RFfZ!Gbsr)oWcxpMLtkKALbF0!UFca1IG(X~~A-#V@ zctd}2kHuL$;ZJAF*<4H6tEF$8o!jQCtNp!X7aMVvWpbK+z-7A$KCpG($ zRPxbAo*(2}$x^QyXk!$rTGOSO8xw&aVb&|dHSRA^tLG{j!V>Bu zf`XL)m&Mv!`@2bLF7`3SZm1m^sDqMJg$6vRIz3jWNg|JMW{b*UZQe`KuKYKi8g@Q) z2=78Z66FX5 ze92*%gw#ackIvYPV<||=w0OTp~um6S@6vQ zflk}i;~x4TF9BjeLBO-{vj8k(L|#L(Qh5edeT9 zxYQd}mDwX+Gc%lwsf5)U|5S(!b&hlcI%lEDJdiq#@?qLK=cgnL{QQb$v#@sm+JFZy z@nnUFO{+lT&5!dj4{kF>x-Q}n-L#(S;T_d|aoqA-cYGYlTn^W%OwY4l!PEF&Tiw3_ z3#O9FA3{KaA@N`V0Pn?+K3=ZJFcBi*o%S_<0kFbcQJE?RVl>3>(WvxSYjp|xe+f`_ zUDgG)mK_C#t0cr>4F|HBEauA6I;tr_?Ix7GPF;QA1=HLrxp>mBQMqjA0G;Jp4PJ8o+H zUmi>Al13DU@4=9=o4JIdao?rz$YE1u*8bZMs)Na)47=u>G8T>hj6>3y%Pu0r0)i2s z`*S^9C4~PPiXtEqvasWU8$m1 zo$$ztnf6w5c_YJoQNqcbUXo@(ColNHUL?tXV|vQCqD|hy8MM7-k|1&co+xN{>~wx_FLO2!NVc}-61q~nea#T%2$L2M@1>KA%Y69u zICFH{M3w-LEAsgOD_cs0IF1v5W<`o;!ds+Myq8g!O#W!9-HcqpE18cC!MQxVp{uGX z09`J*Q;Gw(IXuRLheTVhS~eA5cD4+f_4jTOXo?Rol(XA1U3VQl?bOen>3qD~cOJQR zpsF;uTPYAmy0C$OBqgR6s8c;LEJ29O)C*8{V-~a$O}21mP2OIY?5n`@O4~w zWIJ^hNZ4HX^QMB)XYIoZnV-a``y8Hq>VcW0D&`$56o)m?t02JVeVEP}u#Ca9~ z#;U)+Y5Ig^PSAHau{-u-V!f`EyEFg@Ut8B1kDb@jr8Fk(s(+NdY(2TYs;wkbi*ed& zyrYhAlL*x>Ll}UREYhq|J>@Ra{L$CnDEddy@4ubH#GGA`%=X_J*h1sRxjlpD*-nJq<GD`w5xCPat$`Gcjg~Vl&p1ubf#jf2+D` zoNoSdz-b9~pDcAuG{3s-&7*>RtBZFIMmExT+(OkYAB{BD&k;ks-yh3kOx|l=Zu1nI zKiIwBrlTlyeHdMydj-}S(9}czvAOM2007ADRZmg$XLB7zJ8Izg#Z$3VpBb+t8M80j zsN*&7)tWoyHQ8R-B}BBFxX$&B)dUqb;6(2N1OkWRe!R7trWQ!&DB)&$yz8%~oj}k-)-H(#iB($*C z-G4kzl|4|si_RZ2LUEKMIw3Og{;v~WMduMkZ5WlYGYc!jRDfZ>cyz)KkSVvZX zM$g2^(fd-RNfocwAN`575bS{B3a;xD3NOJ9Y5bHpAf>$q1_EJ;L@HK6rq?PQBZ@ed{I(gP8l`D{1<}g^5MXjwS z)SCk81+~=K)Q7^KA28M2lErh#sjTxlUau6D4Y%QXZIHxMSc(JC|6NU`|GxxuVrxm0 z(x!8GlaFChOb=UP>B5;1daZCWWMmLbEHo`J(ThJ%4$$|2eESXJu#_M&_+0LyPhVkS z(`*k9Vv3{i^^QwC{9XDHu&~g7y!BMV$kq>ZJ?u?nq>N{Cj?Mx`DnRf>%KGPMZ$Bg^ z>lfzeQZQ5EW}J2&P{iiZRLTzYH_KbDaZU?A_1uV|E!SSO%t-mj%fXZ(UZtaq>kktzIcP_8F>P5 zamcfkdK>JGxS-8x8-??|jThR*>C<2m9?)8Uvh__7>@;4L?en#jFqlQh`u^Z!ar0tt z)wtH_r$8S;zi*4T<^x~)&Sc!nA+!IP?gfV}OF=vh#dI2>?#fFeMD0=lEzNV5;)c!R z)nQZTfr|BNfr16bD3)18ilII5gi8L?{|1bd1Gb-gQf?7{xq@0l4Q#q%rokTe`oFd@ zW0>O1muMTWJ*y}M6@cG-7!1N^n9uTjj0o-!{a=uIa=uhq3zVQX9rfuS_Zc1cpe-3* zIB{}>va#s$_C{4vd$|vCXd(g(AqhZH6pc!aD}Sln4W9Wn7K|y_1N)uTmDWU2WtsKY zRe=lK5+Jzx@RYU58+JU7YRUQd^YOhrU%rrk2Zq&|_5D4&=d18|DxO(@^&GLe{2icN zQ_Qn)23H>SPK9O$a(RsNwxuX(&5#NrQ{J;;WP7jgh#+M04Cfei^sS4gR6U)NuUyuK zE+`dDH##B%W@kjr-nD<%=k4cIU-+K(L2{WO)nO z5f*pa?}Mq=rER5VjIZUI;&R%5%LfrNUYt%CsG>h4%l{uuUmcX?`+WTfNH@|TB_iD= zjdXW+cbBAqba!`mK6FTTcXzjR|876;`<=Omar7U&Vt22zXU|b^i&C46@%{jMw11Yk z$iQjZpNPbkWTtJG8L1kz9`u&Wid#&67b=pEtH`i|fPRwIGT&LKTIxIdcL0n!7=B}w zx!^}v5LmxFC9MPQh!{tEC$5-@N-)51I`^A4f_nY=0cP2}HjT$svj!C{Jst41yI=Kd zzhfl5nrUO5;U9vhZB;!xj)vcNpd`F~f9cA}IqZ3^o}+jVEgu@kN7hq~!!+WDB+9c- zR34s;vv7-;-EEHWYB1=O%~h^@+RgQEKzeGuw0m?{^8pt@LCj3Z(C~+sc14ADly;Ft zWK#jIRAaWui4K*JG`bA9z|>9jT-W{m%hGbl-b`b{nKPd98~7FI7=2GBnlD_J;Cr(^ zJf$Zj9d%~)ZR#ke~dOFM)>g2r05?X0=b8{xK8iVC_?LL zpY3zcKKGkfK>7l|-m;Ul(pv9^>9#FJzB*G0yR4^WS2oK^A=O)vGxkXEyf0Tr77y>R zzi!4rIjN8eNsPgX6=1$hSN+ zgGRc9e56Ftedc$=Uoh8WFuGS)x#E3$&K{Bdw9lTZFDceI*BkNp07y^yjRP@6$Rxk$ zk5G%|R$}2w0E@0rPRX~A#Hd*3BxfDXGG!%hPF%m!u52EB>5lnh}%CHlNatK*;gLEl$uw*o7Xt%Ddr z0pNG+jrOO^c#`=Et9)o2#?lKybA&8cLii1zp+TpQ-pvupVX||MJ|iDMqtB*23RMRw zY%zj&H@AOpZd3oBKd9pIwYc3qleuQ?E{Hp;q3~r1OJbLQ-hl^wYkz4TsI>y|KSd@4 z6Hee4Vd~Vsjp?8X*( zy(vpMuU`(PzyEyo`wGH4H#VlSu8v&|azGAIJJ_e;pmXQg%r7pjEH3S2QQS}`r0(=8 z1F2KDIYEI$6qO7H`Ryzzz&HOuJx66I^R}zW9AD=A!!@NiZx!1 zs+oQ5r5#>3Xx}ai*CLA&hOMM~S}p%4nunY<_9Fvy8Rs7^g4V+oEvHbxrMA0s4b3#e zM>RZKX)H>V|5q|*CuZ9Vwab(#Q_JIMNm@snm7n}^l{o*5l3ZU3WBctj6w+rvJpb=i zjr>Kphhl^c4H6Ql_*=|}s{NpH-3O1IBFCuRx961a^sLTj)AgsiC zADhBd`nbHfc7zQ{lCCfBG6wE5hlvO?Ol1!@%ZSmgJbcu6J^KSUP;{U4&N&Fi+ZqLq z1Lf;(Vp$eqOFa|QS+DCiZpJ77j2YzJ@V7UU z!%-wQUr0a;8p!Xrf`Mc7U|an7I~+FA{<5kGiNn}zDcP!ptd4X*Bju*2#MTD4sgMt} zIUg#ka@LZWtW7q5m}WhHdHQFStXYQ9&{m6!n6fjMhBL$6K>E{1uhTl)0FCzN-xb{y zGao=ek~p&5Mtm0(x5k-@SD`%cuIGNevN!JQi*2e3)ZB6tZd~{2XHMry0hBPU+%^hW z8@Ejo2Bb1#><)r+w-x5jY;!4bbf)(52nx1n61Sg81-1JE`tx5su%Ay@rpNFB8zmR7 z&Y1iv2+%{veO-?9>mKjeXRDHXeMmt;$kjBrTrQLu&G)~p6hLMv12PMM=(l$~zK_Z+ z>?9Uq9L|rOR|2JK)1EqE%0h+wkmbxy#EjJ;$F*t_l(9SJ+-d2uNFrvt4^bz3V?DCElm0EJJh0Jn<=i(fX?nG= z3F-AAgY_A?*LcMF-PYyhx|JhTcD@Eh6nZI+L5wEz6Pw*4U*}WVo^mJKAlGNR-Tewt zK75RAp@Ce+^DcRcsE7}s)io6>jK#+G}L-YAJghvU;R>sSza^zao$s2 z#~0MuxU|ew3f$>08sJ)zXMw$$5!NAg771K{PGh+X@m#G|Xc-N#R{mY-^Sz&>6>gI4 zjDP^&;Qc>VsgkY)_^kIer6r_$+5*I{_6sH#v%vIgh4uzV-tO+4X-G+*`bW%<KBAw2Y(Mpz5u?Et_e~lG}&BH9RQD94Wfma8uHhTNpY1*2)nonc1lqaU;+}Mcah~ zefw6zHjgCz5qLUM5i{WUcNrD_%T#G*RMPi2Ol1X%-w-3uH`mV7RJl9MFi`!A)Z5!B zfsqzJ%jdK1z!`$&<_TYgQIEC*vH{+_c2Qc34Z`pKDi!4uZK_wh3f9Zk6%t*4kMO@g zOAZV&+Vzu8*M zA~^SZ9!a7TQTlD7)XjS;!yCgDGnlm>uAWl`3+R6E-xO*ujY0sG3MO*U{oU1slxzk^ zGkC5jdpr--u^=4}p>ba{|7QU%;=&)7sww4>zT1?0QfwP*V-Ig*IIl>21ws(< z)ku?}RQ4q*X z$(Be4@aF2+;g#a7WjxG~b$=mJhxm*DiXKWhYr+a47e&T%VhR5_e1F|Py8;q|{AHvc ztMPHVvkXB#4-L%VQP@^D~0YVx2MN&c;aQ;AbQ!c^1tHdNO1j26`r zS}L=}Q=zG|F5zQFcQ*Q2+t=fDZ*xm=V|Wng^Mb)Gm*a;8v9y}aXgdIr1$JB<5*BKP zwrQzub^0a|=)a2G)^W7!T%a=6CY&Ku5#@8atvuY?>bmy1zE!$oVYgc)4Y8|X&3-D( zT6K8y-{jhmJxDNplzlP#dp?VnM*kDg1>AZ6^8@&gN6Tkl34wm8T-~7onlsPYM;uIf zm;E_1$ip}31m!^COPH)3&aVdoiQQZ)tcO{_P8UAZ-O^SGi{=9MfOkG3MN?l0K)=!` z-5;~l@9)q~Ys-8x89Nvg^7DQ0=)yh5wxouX@`&aid{RTfHR+_8E0Or7tFz$;> z>I$%GWY`W9)RoYnCXUos4^AME)oCt5a;bAm?)^xaY!(GOrEe%c`J7q z!%#&ibGHM8|NI2=3c=9|H_s`Lo9%g9_E#nVC0N!?`}fkk@|jUV&5)qn$6SBdSw865 z;lt@~;V_)yY%>%h8P z74o`gn2cY_`gA0#^dy});qe9$`jEZ#2wS2!0%~`NQ%E2=@4dqri>t6S4B9715d8Za zEnQaGocXaNe1jLb;39E*p{H2V?Xoz!V)8ISp{rts0@^z@kl&!u^U2efV&o?i`ls@MY}`E;+`NVudD3!{B#B`V@G+ZOz~iY^mXYY!SuW7%u*Q!{#`3IF1F44 zEXkUP$tTXzHSPl_Cg)7|dQtjM$(jib#}_TCg!oU`?$2!n>%_B5>kRv&)D!dON@t&A zRDzpN(|f%~TpMe>#9ubP5lk8XiFdgvSTN55nstts7Ut}yG6f4Ki<~GU=o3mjt?&T0 z7KW7enjpyYgq=&Wly+`9$2OrG9V!QplJ47ORQPfakDoUeFrSo28}e#wRb zq2hQIsqaj%nFxzcFc8R6w|%l;w9DAYJo{<9V{m{6*aZepqDp8ym7y?ERT2@|y*`YH z7JAk=GhM%rK=W}m_}AIJjz8aazSp1JXXzlZnk}8OxAi9xY8-Of$#$)pkLNg*7sHbfJ95j7EuDSB{!{17|x4ruVOU6zFpWQH#5N{pEEl^fV}~ z*FA{piq^Z&d@@|oTzYdK(*F1|ga!V~TF8Q1!4;HjCIE4w-QeIr`%#+~yR#k4so9}N z3gP>3cA1b{yUfm_>HJoNu`!Xx$?|6=Q>Hfu4Hhb;KR6t>+Hsf;cfRL zSKtX8v&U!g?{+w^T?gCv@r@?ot!z8@E)o zysj9BEPi*G^is2%-)){mW^}r;os%R8u3p+(iVn6ibC6oE`~4sTj^WUi#7vACVh?#X zkRoF5RPo}jm(shxBzebaE_H176GeK7#8ssJjD9q6Z$Cfs1+#F;ZqyLf-!8jMo;ZWe z8!tThUi$;({f_;35gMePXgMF&CiMO*;sr#4Y(|0sL4Y5*j}gzr7somQ(KA2gonbbr zbT`dRZ&@nzZucPzBMS~B$Eeh6^yxu*CxODq4Ltf63P3P#1ghfIbQ-XP@iD(UxNsV= z#UBMe%;z;;;ww6Pd}HghTHg)=V2{D(W@m{9bhlGO728D{O%D#bPhgr0a9;mq9*~IJ&#jmZ@0))NPW7TFP%KHh0C%4}VJ+4;_+Lia>BqQYw<&#y;>XL{WqqflX z&Isq`b&OV9%9&RnzgFaPx`BE6=M^LaKC-`kYjWX_;&(&LJYsdw=MotQPMAAlgovWz zjGT^+w!FNey!^~;ucgJdBZn4U5`7HtN~@76nmM_J@P!5a63L_d1T^Y{dSbmxqUBJ)fa!0c+bckwcX_ordgS<+gtBE`pfLLt$I zSMW*Qy^7VV`2}aQAlPt*6cKM>pHGUvhZ+UB@_b<Kj*+|0-91@KgH99?2p0F_Y_W>8D zcuyn9O#L(VoI3BS63p0bO;HE>_sRteZqZScJ ziH^E@g2>D=tuYH8QWm}EmASdOaow2Mm)xu@Q@d(g;FF8C6$>UxkYE!$j85r69n=s` zYs9|8VWQ@<(Vbt)dZInq+L^BL?|xgXak*M1Y(>!>8l>fFzi`w%F=1n2O)$Y`ON+_y z(R$f!{ec(Zvb!0~=Ta`57v4qtzS4LmUoS!+d2i_yd<(&s8X3PchV$K@3 z_;_Xs@D=-f)DjGC=-UxKc=Bq3rZ3?Fa_mV-s_DteFPHj%{b43bOOJJUfgTcp6|FXb zdSxVyDn%mrBhdQ>8!6DHC{YE7kz>ez`vT#cttbuxfknt-s6Zfx0Ew@vc8>;hy0g6) z_K(}k&^E%Xt!*tixh*jis1y{YfOHdH3xJvn2=Fp8#xOE^85oeNmuFUgL$iQk$;?*~ zTXx4pkATZ)Cb?Q5&-`(q_E`V3Bkd4=Xd}h)~W97FYx*Rn3{jD^!S7CurIZg%+!3pKg5#g^h+@0g~ty8ao#xonD zzX-FL5eVcD4V3qEW9%5g`Rb2*>Oc2Ve(vEm8v}nnI%)>KRu@8`1q0AOrIS&)Y*wo` z^)@2gg$76ULX_+cuj_EuM=34R0XP7l@r&9vFYWjw1%CVqDD`;(XC6+rwvcX}iI?rT z(U#B7rJBuI%S60v?$!I|IEn9-7Ja1n({^SB^#EcRi?dumpwC!`O@QvLw^8NL3~2kM zeotHvR?P$mK^AQO30KE^o-WTK`M^|(fU?fRYL(_p)Az>~iSB#6^?mIs2fFj=Z$|o# zY+#;0>?LDOaqc&goK;-_-FBl!QXhT|9jsLz3kz(S0+pQPZ(yL960a%E8%Zs&)cK|Cbo_e8*eG23k$d<$59=c>i4-v!w8o}t2`NUIdwFw^~LV8h4 z0`I;dBEQ-?vje-p5BPS$eu9qhc;njL`_k}J?91Io>j#jNMuf;)Vh!?M*rxL`HY6EU z$mU~`AjzCL>!0X}GNAHqSFu)`Dw;7TPcJ^88e|b7MOV9u-l&P30hqB*9 zl265aW5JUZGK3RDM3&43eZmvX#nWN^cM=%YNI&{^<8&ARC&Hg1_v#B`W;lrgqZ@jl zm_Tlgt#^bRebEfS>&YbKalh*hNF$xPCUVfU+>iDafFyl2$c1=mPe(mlgRedPw#CpcDTfC?3v zAD7M{!}j#Kjq3tZ%O(DOj(y&7AWh1wqmRvZpx4gM6{+3)dU~EW8ig&bRcFK$hrBUV zpQuySiI;UVcV`G3HPElC8m~qhEu)cR5yicKeQ6VV4jRF-x&1w(fcqoMV>Nd&8)28Q z>lVprG}te70d=-28Jwzm`mjm_DZuhqe}bNxMwZUjgEeAF{M8@FAXG|%2`J(M6QKd**>=B^FqU=3 zqqWQON!wNORK)5fnpG;4sPn%^XwYKgikyNi3PcJf2m8KPh|pq~$14D{k9qMYvl0nX zP)-^NQspznsTIROjADdh3gqtxq!|DaSK>T4BSc>yG)w|}$=|;@WJZc9nXd<^?`DR7 zjjj=b4-^w7cAu4EJ9GwU$L$_bzy>$e*3R2~Vfo|bX|?;XSbWJJH7=96@$1(B@-aR~ zu`Mx(zf!J`qENRv!-jMhJkk zY_sbN-=$=w=k>>x6NKZdvHun#1v+}1E^f1dM95iTlB=~Rv$jE1PfvNMK; zFwon(o6Rj)-e$!b;41}Gi!UpY?XV91bXKs*2;TtaK`{eg)JMIh&_nvSzaetZ#s1OT z`X&{c!SzoO876A%*VGWzuXFk$gvB=XBQvIDJm zC@Br~#|MMut1(8Rcm3Yt7G_Jyr!HVZOoRLJz{`|=&F$rEJdW$ViNkR_d+&PS<6}$e z_ZAz`9Hoqo*ruI70i$gW|B$p6&#vBri-^7*kB2Pge;Wn`fkuFy8Ix%M)XHRVMH-ab z4J`Ykv?EsLn&s?@u$-&gO7B-AKrG%px99FzrYp7%vGkgMUA}qH*Ue-djxFl}-}B5{m7YfNNFguZVLv*?n=RY}A=o%0qQPRE+rmA&{+(k-`R5 zh&0xfCS2F6kPMZ|nrRbK^lzA7jj3mr9>N0Up9nSD3Zw21T5QW*1+ZYQirAb&4zLgJ zY0hOvq!B={5BUTUS=^vTj#iv6m>^X=^HNlg4+vSunyLNUc>N(3Kq-M_s^$wI9zGCz zghPrcnyWA7L=zH7HlsgpP1V=8r|Wq&)9ko#>&^ookPgh({e9elzC~i#dT^vBi3#qS z^7YSyboII4N-0BeeY0m|uJU|+B5JgHv_4xVKbfcf8n@9@3(52Y2SWI@;UkCbFCjy+ zeIM8RpcL@Y)m=_c1dbXz_U4X*+d&IJ<|T5?>bU>5^XCd5CUOI3mi^NIzF&%9DQR-1 zu6KTLl=^*VcdT=K9WBHd1WLp-+{+z8D2zJ1qO2E~_}RIV7Vuj{tKD;aR{lohC6oXP zLfrMvaz9;Xf_B6SATkj)R>(B_c5hnwL3e-)WXdQdIreysRMH$&Gei;n=)i zSJ2j}8;7}X4ZT-+pD!1Sh55G30kyK6p~G7yo%W_0h3?8|7L^eE;erU|?S6@ZWSD;l zid!oAPnbKHzByq3=sglG; z3qa5Vld=FJK`0xQ4emrT%XCd4=e+ZFdP)rexSWup#@pYpI6^;0N)7x|{D1^R zJ}9v`sAd?nP;fs6^*leFWWXS&%aySTLD;;t_AJn(oSs`*9ycwA3-wO;xIVnN1`SY{ zSZ%nTn+Ps1=w7ULzCRR76VdB%L(cg(6#D{E94OyT>d!KtjPO|&3*L84Vdf*&T(Cs} z#}#c&blhXd^NA`6>f^|aR>zy!v)@Ha0FMLC?G&JAIu;?Nan#zLltJI&>?xnlsA5EA zhD^{`vJt>txn{BRxb*juaA={>OWfD$+(%r*08`06Yghha-?FE}nTyaY$i0P;0S4HT zYcX&Sz)FKoNEQRuWpPz2frtWz8*eIYY-bHxi-&Ax?rG<`p3lYMs(e;GDK5QtOpL96 zyCMUo`%8=a_?l5t=DJ#)$tyG{OKGv@vEWJ(0>A;eEehg>2_$?1hHyrS%qe?Tdl-96 zmxQ5U=72rHT8CdtOtU|Mtb!*?s<8+ztN}_N@c^n2esYY`cj*RYrWl1@WeKHNG8mznNmhI%a*;F47BC=Toc4Dh%<%eLZhZJH82~7;d zjXPLsHbz{*3(KbcZfUXzW*%9?V==fU1;G`&RoZex^SP^jCJE!M*^Q62?7_lwdhP)j zY~nUC%aZ@mEsBT;Za5vf=wZb>+nIeyyPw%U|AJd+2MGeo5b?a{i7ejkiIJuHtrRG! zd=J0qYS?z2tc;8)pFetv1JkVle-nr9!&v5aqA{twS)gLtMnJI{Ir7Cj2f!wGROINr=ZP^eRf|j5L-=0Xsp#Xy-)DJ%=u9jBYmX zmWm1Jo6J;Pv5a8Pt$CyseqDzlvf^+({|+K{(L1D1!+yRmXOEQ6S-+pK;qiIBO07aM zG1?Utl?8@l=YTjRK&lVst_vz)_yCd!$tDY7NfbM4+`fOXElm8H?qIuv@$%VUij*du z(_(8>UKt#LUCHy^=S<(l`w@^xh}3Ng5+dz};1)qf#wQ^Bgn2AY(r9j?zz(3V*P&&f z$qzOp#KL4pQ9}y?cL1`tmDMaTrfm2Go$GORikU2S4@HwmJJQd_43q?$dOk@1;{r@; zhpWb{O|wn4)k>xMvmb9r2WnK&y&{9$pC|Qgttp?0JnjkSXXl_nFRL^V;>0AUn0JX4 zq<$W@C&eoh^VVha4a?ul<}C=F!4}{Oj|(3881mZtb!L7Sh^6~y$TF25u&~hGk38HP zWX%Ve&;1jE>mCz7bzPj5m#-)HL^W7_`XgRJ0^9@U^&eU})m@Pb(%%E7Og%5Vd92-{ z2&L()cN2}OLlxA8OHOl@yq(cXmGtb~ejtdFX|e}RiYsZllHs$5Hn)$v_Wf>QCWsOG z8mmE*Nsoa5sB@|PiG^JRycGalwBH19S#yJBhS)_RkGBRgXK9f@cqb6Z5@Yqs(7;bQ zRvZfn>=*hG=YwJUJw^})F#oc%EGXEMO0LdsYFdppsJ47fLNGzRc=5EX!X+ROUXNrS z<0s<;lSSw#>$7x;=KAlq%^Tsjw2?yc##3QoGOvXV78f?heP>@3@ejJ{H1QYHE)9@r z>7zO~?oWEc=Q~^P$T1x(9CaA$3;{Aehq1auGh&r&4%dU)BjQbFb?o`>!Vq@)4>@eV zz7yQZirKSm5&4>5fSt~ls+m)F#;mo$GR*7aZ}1&$Uv`GNpqhoIS+Kf*2{c3W2$|fp z=wheZkdzMzB86#qli@@Cg7W2aQ-{wLNBaNS`v^_2# z4@Pz!`flJ}-`Cq~pJ$H<8Hq3F*4lRttj7ii&lYTt!?2U|=+>OKV4u_=7U!BRAY(HOSK8y{>7Bd6d?b&jj0y*9wP>ot@ybfwoI$>6NQmV4rn9;!3{ob$p zZMarqjCKZUz_rN0!9sSyQrYiM1U{4g{jW*{l|O7`?H+SW@v!PLHPw5ls!FM8D(GlR z=x8cRiYrCsZ`NX-gm_R?TQfT#b2tj19KJwBHRAOb~Tkr$)88q({g-RjkjcO;iw>sRLCrAwdkaj_mia_C(;x#i@nK zZuxtxctF|g7qQR}jD)prI=W;=tKf_2g1Q1EQj)St-x0L=g-{L}v{s#7eYoS4x#kok zEfvW7Gf_{!4o`m{OF z7`CqeOqj%kr@bb-oy_l;&ve9&VDeR@Hk&J}Qk5*yrQ;;lG~R`0wo)?DISxjrprK(~ zTeaxeI~2qDN+rNAoiSm~jg#r^2lmeJO%cA*cxf(p)uj=m!;$dt{BZA}i|^ToXL68W zas)m}z!fuWBw4GY`Y7hsgMt*+z($ajIY$9WJn$1F8T?SRfu7iWkvzayNS!)4Zh(Gr zcmKVRwYLt4(|?leMOXikmrQTAiGcs;2Ti9txWhi{=r$)631Bd#oAzp4mdvIwmh|j_ zjjip#=bu52g+NVa2KDcz@nuu^5t~zrL&BgexX`S9Ec)U3I??kc-(9Rq>!Qlz55gN3vT3QtuHBB-RA=LWru;NwQ?ByX{ zRu*0o@7=}o^s)1Ga&QYya@Znt1o$i^s4Xl{I7c;PqzQ{M$I41}W@o`Y%f9z=gV0ze zEX?2MrdJoI)6exxxAZLaZB1>g&8IWU0=&K?i=Dty0d{$jF|p|&j3e1V?ezUc+tT45 z<%JT45Azi=LJ6Uzy#t>Olj=DXM$5{i+zHy`@`l%?7s-$I;837FU2BmhtoEk+gEJf- zlt22jYvnArG~V4bpv@^O6>^t|dG?Nmi(opWwl@|`fI7`BrPtgoYJCa(vMWFO_sC0) zQhpsv9K%L%BW05uEXAljhPnlly0m9UswX6TEv~ZOtWJRcIm1BO7c9k2o|YUN0W3Tg z5Y|FNC_`){7#W$faj(nD)-&pk%F_>`YP0y9h!|+xo|2qe7jEP5@bHRcwC5)$ANuO` zJ=n%==}Mo{^Sz2Pxjj?jRQs_gtFf^9Rj^Dx_^#)P{*FMZow{tl9+AbpZ9eQg=ASNY zycg+Pb@RH&Ivg)M$-4Kk_1vl;N>3`h=et?Bwm-Y}R5J$IMk59{M%tdTKBe{c-Vk{& z*0^5uyEK2h2|*KQ3CZ@#6k|WS?L*d4zq{6U476a@bG~g}>0*xo7wgOP!aY_5qBtx+2qeVA9V143jD|P_ z{i(KtBw+T2e`PS($lRn{_OzImc@3Caat_M!K`m#$8xq5R=x+JDzbsT2rm#|7*~&&C zL!-9@6=7y?G!-VP#sk^9Zpf0w{W?w8l2-+OkDeDPhz=!l8Q)4g@bsg>6HX}ajt}h> zO%RU);BGh4rRheWsz+Qx0!8Sm6XDf`;r4m7DJaCUD0V zzfYf1S7}IEb!awOk$Uv(VMY2fdJCPt({J0$JU|9zl8`uJsW<(s&}^iprrsDyu(z{x zRK`pwYOsF(E0+Fpb|5<&uW{xQD9>54B z&hF{O2L550cetbN$-U$IXqVotDP20)Owd+WRFUZetefB8(Bb^vaIPo=Jo$tJXJr9i zI{eO*8t;P=u%)YrsP3E#hg=z&ITo;acNuX;7BjAUSrgtViO$a`6ZX2`i(S;&N5KBi z_2Cg_Zhn4NNmX5qO;-)mf&y3x(tt`^tE(*%Z|RtN-;LEC3s$PQ&z!$yZ0vDbIU-b3 zh}z7m_L+;cR`s{h&Gr@?Y>)51q%W&wU@<-nAQ0BmYYfs*hPEjX{8U%d6ftybj?&OO zauvJTPGzgij~D|o-b2c zh>=d0$5REqw(My*xHIA5=Igxcj{DLc7x9Pqs@|MeENrb3`Cm9ZS|)T^F4E+YH#eM@ zLBDo463O1r7sQ9#ms+y?C5{RVDeiQ`#cA~o5fLHX?_cg(>HFPZOu^Rc*D(0+o)0Vq z@iW1xYU%;Mp+-}f&D&7G&7c?Y3m+jZPM?>qokjx#bRzCx9LDX}j|XxTru?jByR-Gr z^;nr+uclUF-&^|z$9r0CiI|CtB>~6D^UEuwKY9$5LvUm?1Lj;JrqJW5Bk27BeD0);r zGdtTJD0@yrdkc5>Y!_3r;>J9Qn7DKq52qNe_N zH|NI z(ne-X1%V5H40td%iS-4Zq0IFXW;l}0&{^F~5e)>nt8HUO;8y9-X?k9crdD_i5INvA z`X5x)0y-t2YIqk?Hms@z@F6-soO;a34UES|BQELi`5z6~6lmz9b1_C_&Bdl!D6! z{LG5O1qx`5WG&iI^oz6@SD6>7%uYMbWcUj%Sww!{0WR~&C%*UW_+2P#(VXXac+O6y z4X<5@1koko5^ME^jK8zPK6YXEA!RdUct4#}%R#mZNf-m8!34EA&d*DWedbkfIysr$D zl_rELJs!;f-GEXT5cX z-%|S{=Ao^BGGB0j89xX_|7cv02G0VF`If$SmDk{}qp#b-Pf_IEUXey1eiMI!u4AP0 z9jP8e5D5A6X9ON@Ebp~rOGc~Fwly5w<^pkX+^()SB3#ZJN+9lmenBJGk)fMI`JX+{ z$9wZmgM$&lOFU?k9FOACdq$tu~)L+80-Xl(NCyUTsKb|-5XOeU% zs#4IgO9s*?0^gaO7xy)Ve$4f~6N@G3)f0kdGhbf(n+ROg z)k7K}r|eh%S|MVYnw|aKA`x(oDVNt<9bQ*Wpp->JoX-_ae$r>Esb;#0`B7Y`{+*dD zHU)Es`H^dkOkS*S!gZVk2Pcq@?{5rsB{_u4a33Li;zxide8!=-+`EAxs7er^&H^Q{ zY+z(FXMhEaUsP6p1gWK#oM_F({r(|;gC|2cF6=mv@0kM4TpXk#mcX(7Y|b~e zNB|-(jc4)Vdc3Tpo$)}oxJLQR!MHPWdoG}uK49CaJGB^iqMkDI0hEwH#g_gf1J_rm zZ~GRn8BFK~2iYUQm;M9uFHo@V8psc5!}@)Pdl1qna(jN*x_X$+hl2j$oFiYXZ8zfh zEiqE9Ej066d9D&-BtO{Ra_%=!3ypF6T?y4b=^NX-0$SxicJ8K*7Vd$_v{9;{e?_r? zU^yaU)B4VMQn?o!nEpIaYfIFvcLfyCEy!u23}%l#)Ii`iovhDC5T2X6&qOnFdg*W* z$a%rVZ%fr7QSivcbWM9pcl`-oVYihC(;vOUL90e*=B2@g-`mD#)kkqSKPPBU(h9|!o8U^D%o56wWn`fNdkN-}hSD&H zy095Dm(LZYEP+&*Kn_Y}iTD=TVnN6t)UzgC-u=l$C4AvQ<;IyNqFMgoRO>Q#V{rd2 zHS3n{lQI@JkE11E6js5vDoRV>Lp<)$4G(x(q0R=VX{3Gtl_p!U8oFDj2NR3!>!x{! zRa)A2KVm)QK2fNa_KijU(fa^0Fu~7~nP8^~eJpu@xxe~*M%WDcwJC7(t_34|cY(>^ z^L7)4{l04S!=gA!5`9P$pMPc}91IRUkCLMhWio`d+~_=*K1ZxbhpFTop%U|MaBR?; zo}5bZC#D5t%POyKQGVa{f5&U&Zf({XIL&3zpkCpa+oKSJvO4*da~#B4YiUtuK+scY z#$i2wws92MF_wV!j@n3izc*#eBT8@Mm|~-%Kiq?qw-Z$bK4G?b=~(<6*U^V2Zk-12 zM=YjkWlj45#Q71^q912Dl83oZrNr#T=E)Dva)M8sY7f3ZqB&f9LPl1m6|3*3>!qJG zk9>jWeDs`$%@<`myaWl(qR7YHt~m1RP97bK51>sXf)Aj+M%fM;?0S;TCBBakpv0&Z z2a?Kqfk=2Y)`5E~UDUB@=9~4c%cr2~p5TZTnGP|!a@%OC1P5^e_rH?9h+%mg$NIoB z$p~(RM7{vv!p`M-LSC{9P))sc8bDMx)O=I^A(sS7ayh{RQcKzb z9pxu@8mxv-$EefL9mO57!*cTGh}l5dJVPQi6T2);6_+VDiu)-HOJxUJRJ#iwN8=G` z+DJymzEu&iq-;$}Eu1x@j;V zhZbFTzZ3NuJ;7XLRTn>5Ag_GC2>GGxLKRqQz)51sy4)$`MgTJ_r zIE}G%hKzR%Y=&5s!?))4_j;E?lLAG@V{1n1lOHc55J?sQBsWy3yW5Z38YZ{S&3FkU zY~DbHZvLT8X#QI^W19x6zOqD<^X4U15T>YZ-37BukMK?kJ4&on`I&pfG(%voVjAAh z+nkXoJ-do?1dTL&SJ$!Z=_W3(#LqajTU3A(A?)$=(>+R|0@6%v*c@NH2!s2^`MSD; z8QC(09s0K;!yA*+h37j_BAo~I&uov|sfU%Z>U^l7gdg5AO5i)}8^J8=`R8?^TyG1B+_JR&#=0Dp z&3ID`L_~2X%(CUhz9Sr(O63T0JT>Ljzv+L}(=?jQ%)d6$wB9FmS}+wQ>*^9XliS^y zAdT3l7W~HM=E8rv)rT~clhd-rbhx zy{4T~BOVX37mr-eRlFbT%wYYT`j^2Y!9wj}jXGaUKUr`k${1bL;Dc{hCnqy|g6?Nr zXyi2IMuA%PL*1^TPP~x?aJ!U0DL+VDHz^;h{N$HQ0*rA8cTb4o;W3VodniW=OIC@I zKmgWive9B~s4Ol^<9?&qsfVvjC6Qaj^;>!>e-X|^${_|DY0`>laSNtAtCyf+qW;mJOM}MCK~l3u<9?Sj z@F~5{hg#Cm*dkiR5?)xfH+o^TYK71&XwOpLS z15WzL)B=T0lilPW{`ZHzfigCt85fS_UTl`|Lee--l`wcMjY3m*5w%NGZCxi}-i` z=zSHhGNl9p8AG=t{4(lJUn_hv2jn(qCw||+99|dYeYTc2tL}nbu z&iu)*nEa&ZaWMuEIO0N*5sZgMrC^Q?KR3YwAwKK@iOq<^k={ccSY%( z-4z1Du|J1#ijksb8?SI*POMXH39YZt>!qAysX~^7+4IEij19>}FF5w9&v7`6?2eyE#Ww#|Oh zFJNSkIP(Bt1da6SuVk^BnLC{B_F-gw5Gvb8(v>|2Da|mJIM&O1+9~YFQ1t5vl41V@ zF8;Z_9?y||fkpuqBF+i2O~MsOs)9RhvAIR!;2b}{S)We@l?vQe?J}p?yFYbgy=Utemn6BE ztS%C@xn%{?f`QQ)r=ceMABF~%oE(e&KkNX1~pbgpakrNNCX}P zgqgz5n94(2l|7vRglauLk~>H(;OH}7t>8M|o`=hRcdOGhP_yw#x*r(QJNj&E+xYOH zsaOv1>F*oYsIPmKQ2I*T{iBFq9Tw$ z?s}_6RjGDG{uLZ9=3n{c4I?nj3$%tuf0|F_bpl6*-gb)6i*i34i(=Hn)6dMv0E45g z@1*0&5}a^B4B#oOA$4D#G^SI=-k8}qZr`=yu7E(-5-L-q-S+T&w&J6yks2Uc@PMq% z=KOy&ePvKwUDNF(B*bucf;$9v2*I7;?(Xg|0RjXaoZ#;6?(V_eT?ZRn?s?u@U)8B8 z{tdJD*}J<}uU_lIRY&uXFfnx*e3?9vcv4tcj*N68FV}v%>h=Zo-K49w0&mWe=lO8$ ztH=XlaJtVvVT<+Nj_1W=Amqj-wre&{VIHu5UH$#_55x|%Lb=-R9)FKRu%RlB~E?Y;;?->8sC?lvu@zqSSf?|K;j7{Gg->Z`@!pMuMOJ!9QEN94rEhZ);!3 zl8lO{*{ljybC1;8<2DVU+y-Dr=e57g0n<}N^m+ow!96j($6;FXu|WLpNx zm(#IveGMn~F>#0f+Yq+5=oV?a`^4`uBpR4(MTvmcdH|WX`yZVcAt&>`=CkBlY>Y1- zs*}=^nMX&dtA3fxx9o~ElRqSv3T?2s*FP8_o*a#)d}yO8pUExdY@p}$d^LQm9P-V0 zUD(q9Z}PdPx7YpkMOH&Y9^+x5Gg=~Y+j$qJ=e9WK=*`c_yN=J6k+v^uh!Uisu}s@v{XvzrTf zzcWs|ilEHA1#WkGy$(PNpU>}C#p!qF4;7>XgG(yAByx1puJgI#>h+D~yk|(OlWIQI ztK_d2l49rT+0jK01~mH(s1Y)JVoa6}KR#t(R_%k?g4Cc);P>`A#P5XueMn8k!Df0% zPr7&S@;?L&s2&0qNT%nwuag=aZj=0D-mgRDCupkb>ldnw zfZu)6A3-NUF6#vh`^QDseeshi8Ht#8{YtAKGfMS(`B)im73eYKUzj2qlEy6Y(Gw16 zDUM7CN)##Q7j*41p9ZN#i`Tilp1TCfbXPFWv>G>vbedupXgw4Hk{*s4qE9|80t^k1 z@`*4r%sik@FYv`_A#WppXnqZkpv@@kkS2-cTj$6A`qy{;W%~bb$>{3p;lbo71;u0v zCwTk7TuoJ@!DZbe@!$J);SSA?D`jm*+kFo)21}H6cNE^&$7fZ)8hCK~%}o4xkeFnL zZ<}1&Ls=oU<5)6T z1zxnz@4bm266AQ(vI2aX%767Ve!_#!zZ^(rbxr`NbI9M66zi2n!=9ks=;#Y7Iqi1W zQz1=P2Tj)tfC)1uTl5^@^&571v|bRLNCy{ipKIlfheyE_>qxrIqStHEOKu!SF_k}` zmWoqjDhtpfeD5bZ? z;c#u`pwj?U30Q6o^G|6_l$6{JK zzSgxhr)Z#d&QlD^HlgV2d31*ZnKJ0MpA0a3R$gTL?w3vd{S9cpT$iue=?iEBx-8G{ z^ThnoUlfJFUmq0#3C{kb>GrMOg@?AATZNsP-M{{nfXp)_p(x*HPuTJNG2o>tF4EfS z!~1k|N(InqftaA%O!x_ui5m^)$@S>I@CXoC+_~JFm(XBK9<#_{Wah)0)78?7HK9}0 zQpT6_?0MgCWHJQa7!4rd^14EkuvYv4gs{?y?1Bd*874sfi9L}quU0!`{OZgrmzlBJBLxMgN4lsv+)6adA^26;~MNrGfz_EJ> zQ6RRx?i1eRR$i8Bbk=awG!-BCvh$CrH!F>Nu}Gd&pmIp|!LdmO3*6L$k(p#r5M=^~ zN(3VD_&4V>|Mu7dI1qxwPO%u~s*nO++L&=Z#*T@7lRJVKa@g#EVTgLE0G4#8{++jO zcZoW22M8U#2Fa%Y<=y5*BZ=^jV1!Sr9bhF}+n>feC4+-^*i2heQncMUiomlLUdzVn zTFL5GS!Z9#%E_8FWr4vn_HSn4kEO^I6kLm=z z)32(^^Vo^3(!)u8CNk;YuWiZI={detimR(nygUa83kS%^Z19i)IJZpd6El~$jxC>X z0HN_xV3&T|1G4KEBw6qS^~+v-cmV`XEW+&&6X8qa_cTEC)+GtRqRR>hDyRZ~SXK;?r1?#=W-fZn?NT|vh%|qalb-NrJ=QH1#<0(1yq}ZD`TYFk{dQyXTrgL%1IvB|*QNTdd z@Km@GKmOOEs2H0cPE3mS8M}Oy#c}*Cg?mSLRK-m(Cbhy$o?1q%gGOMIMLyDag*v?t z!g$m#&fe_^`$o==UjXK#FgJ$Mx6jhjA-T#O# z6rzoP1L7h8wD-Pua?VauMkD+Y;pa)SG&Gbcm_BeW4h$>`2(X#PPLrG7!vEcjf!%~8xm)KK>N5}Zn%9Jn4IeW^$*SJ;P_Iwfzfy+b4>$#Lk+Xp!rw*BB%duFBpt&4 zUUufy-v1+;Kn6+%joy_sI?xp}#D<9~2NeWeDd&l+y9XQE-JJ)ycJ zbCKi3rju!J7XKXKPa%UcMf@a4u-S)8@bOVW2$fu9Z(o)dGc+_bAt~QH2LC0{O$nh~ zUjWr&Sy^6LnF$c0YXJ|VQ+4;iJ^m+gdVN$HXPbd39?JUgP3eUBcnpfwj_GD+JW;`2 ze;}kg$oYD>`fA7td8q1Y*cy1KAWH8_ut=^CuPluIwiM&6uFmANIm?W?rZM&@CRvO! z{7!Ose7Gt3AoBLjEuehGcLvJ+?cE;^Wu^1t84^p|lq}0`PV_&k@ zi@`JDn+c|vqS^==o*?mmYMiB{oQI>P(24e{^OKU7Y?RRKimhxouNzbvOzV(1hIpyh z=Tp(IcnBGDm#2_%`1jv)qrTu91LDP>HX-U}ksq#!e^6{N+n)k`>!`Ep1JodWhuNYD z!XH!?yb1N+>f8w0jk#N@`F1zkJ_G|8nN2G^g3Hn3mw=x-p)!oI0(`X2+|+4oWz3y1Ipg_^vh)2{S^Ix zNMje4G#w7;%>Pql_RT{pE850LoW+Qr#Ykih8?g$NvidAtLT9Bugc}Gvc4Em%3IX0a za6UTz-m6b-X@lf08B{GKKyu6lB*#YLNB~Wj5u&G3s5}@^ssh-(Us_iO^2^ERBp|@v zhg6ICJs?hDh9J}IArz+tKNN+g>wU#bQol!3WTo7lLNfBQdyERP?5EzHI)Dp{AoOmf zDpv-JQg1D86RR>YF)*$;oCQh$lH(WpfnxlGE!_{UdZ$9`bni{z{||O81G}ca+e?)D zPoYBxOKzfbv`h_{N5GcNO~KJxMtU&(siR@xdDk=OL=|(kdX4w3m!BM=;MVu_@6^mr zvj0;GFPNzQfKJH^Gtg+6z95s2l!Jkkl7W&WmdU+k7!T5O@4@Za#L~Koo6hLEc81`E zeuwRaJ?*IlIR@jBJ z$@P~r=C8dC@=?Kl0zaiU-AI8%!=e2}NXC@CCVy!qTgi>El}r@s4aT{`I1O~} z5A-q&E6)prY7{UkP0-TcEb>}!T(*IiTCAF5I!1)P;edV-h$a~_E75aw8Zi8M$QNmQ z(9BOt3arohPgQCuB5yqtsJ(vXy|vh*u~jp$9Kd0-%lf5~cz+_fm4-irY};~sx=*x} zVff^#;pnSP@2^je*v77>A#jni8WCm#&kVuJbf-q4kchydYz_ zQ=wxrz^jS7WZ9^2c|+WcaDN;BSC_tG40;fRpyX7&`J1kZz+!k-wJ~P{+la*m0^)v= z9HjCZH`5f*)!^r#!HDN1gwjA^~dBBhga{@d;siGy#%6|)brhknE4v{*2zMdWQ z6WIg8F%-Hxd{F5&-Gl=B2q)|fA9QD}#Tq<<%^xP&avT{X=q!YvRot;L!O1**(BX0^+;Xw#v?8@zK#J&B$A7shU~yEGE`Ritj(2i~)yL~9Z1*hMa zaN)yT&XFC@k+u9bhjFR@~PvE9k#$$Y z+wuZDw^!L3WGx<8&x`~}yj(L-h>bKInjF7Cht2R`1qApe>=(<2Ej`ajb=RF4!jS8n zW@9%;puco>1^cq&xL{&Jfgskf-29L6ZZ=S=X>@SuKfGW{#)wxQG2?)xCYzzPdj^3T z0{%5S-Ec4|ze-Q7d47`Wb6}?aqoxmSy5gkj8dv{pvY_dWRN&L@q)LCJ004#l`+9Es zn@$bk&U?JItX=g~b4uy<}k0)1sKF`p++JQIu%{~7mdU@VEty(@e(tBs9;ZrR4* z+hEkU4&b%``c_J6=|ns(1&yVqr%bN|0uGPIOjM)K-Z(__byiD702X&FU`H&-N0gC_ z&?4D@TERlxrB9UV{JRh-U5I`J{Ai_A$@b5lRFLO+Kkj($*Ys0=i*SJ;eMx)fpN}x7+m{!7>^? zOi!3^AX;2bBEB8lu~N?G#$yPjPbqZKV}RkZ1ZZmLTE9fh^QGzD22|88{DJS7wL zXrIR0HS%mn+)BVpzN2}dA6%H+P0||LdTr(9BdBMTYgy%a`}-}M-dAcnb8`=KDg|P8 zo3lS*X~yYO&CL~w-psHX)E`+J+rt0JSPC!)|C>0vLi;_6X7gc+5%Q!Pj00t;|DUHuI4LFOJ(bxk(y}{;FDM=*-nRu=U+6T zdw>s~Ccn)^eUfxTqRN~lZ|%*yL|3;jzHfwzid}zwPu@_&#M3NxCtxU~Nsz{4^Cle| zjbyIB?T-yl##czY!~o4K>FL;!Sip5W&9?pGPD#O6NV+R*|K`y<=VeJ5^1A;4uV>n5 zhE%ru3`qfWdH1$n`C+JhFfyY_|Aw`OBoX2~A&-+k_bZrwQ4S!m@3{>p`q? zKZEJ^WUh9%l!6_zigeD4(Q7l0ScW0m4^fB_^?*~1$J$Kc;69nY6$k)o%los%!P(Ik zlB0+~N2`ud`cY}nL_k=DFFWeb+8PhGbZ)f6p$a=a0esTpz{3c%>ex!w5^Qb1$kUV?Fuayc6BkX!82kvN%BNJH1}J;<1kc zfT3I4kJ5uxXymyma4mgNX>+%Bt^|3J{+ezP{4*R~6%z9toDo_vLJXyk1`9xRt+B%fqm}34v-ME8p<23mNY># zHsks=V`;V}I)iCNbzlqe=s4y295k9OI=cL4?0`tnMWS8bR;ta>`EyZ;)Ro~_3KfJpTKl0jvfM`=h4>kYhzqY zHNSLzIUXusMdAnsQ~ya+CQMqjH@9jH!JK-XZ)nvLR(0~Ky=(Y}_3UzuNqii!GJ|Nr zX!|lE4-x7d{ylHN47U1sym>w94IYGUiSQl=!?Iv?2naposjn~&RJ_#?g* zIvuFv`1LSmIx&O( z!8b!YYXR^q-@aO=A6s*!QW?Hieq?^oJznG8T^oHR;mCoz#cX>dEyhS$gyg*=PzE;@ zC*q@~Oh#T!C%5k=X8f=g`|zZ?01)j~+7r- z=)Rl8$r;fS)n|)W5jWe<7e>oKvwbBh63cPzp(oLXs&s8e7i9oA32A5q3&gb zVSTJy|K&;&6u|nlHvD~5+Jo^<9(m`Ph7a_8ayQpa4`XhnJeJNT2Ip{1sy;(d&h?;4lp%9i+SO9>7w3qv9fDI3&;i-WI6+8H$P&X*~0m% zkaTq_WLVy;9kZay_ZCmpPN|#LHZAq5#Sh7s!UYxM{>mPXIVidD5fnz5eH}Ah;(C*E^o;kl^+kX78+AKE<|P99s`UKso}9R0sC$Bi zAF#GL33&0;+-WEtA1j34fFPXWoDl=j0c*wuYAm4;L9eQFaGS#W*DWj;x9WGe8tK~| zi=MojKTHoZI47E;KXv5exfy~$a2>Tj!9Pnj7|i=tvpc*61bmyXENizIH602_ zj;%)zRfOqb9(hay)?@c~NrJdkLAzlkybNREdaW|+ZlzzC0)GMC9GlzNf1}fBV}~?} zKDPzv=@dHZa2D|4XHv@sj*GYV~ix|m|3tP z?eeI8EF^A!eEw;{id>5sb0kTk^esFjrF*@;%#!g340_CufM28Z*wLpSrH8C5F>bz! zb~_HIdV0nPL}+p}2VL8Q#D+ihe4Dvc?CYKE@`$oHI#*wC#4sn-ME}yuv#gs#@AIJ^$L5w~<}M#C z{Uu{u9&7I*^LN;+m(~qI*Obgh_421vCR$M=(b3tFp^BJdTG}QU?5%)&zKFx;=sh*& zBa634a7i1m3gXa_{)&Ap0v;cmk>4fnSagea2%hV@YbG)`zJaw_>8ABwZtlBAxZ9=2 zM~`1!N513lS(Nq0k-v#Q+B{qpnEnsw$oPF6#r^XU`_u6-FwnIWnFq)3o`3?Q?Eyxr zZf#vuhH3V;OFvOr#oE0^nYotgk0$legrW*fqwMTPEY}G#0tf4tVsnj*2uFr~!0SZK z(3JSV>HNUOt}Jr738IwjyiSI0hv#?*r^>pqMo7pyqm>iC@mc>CZrMm?r_z)rpDG^-$BCEHd&xLDllRqv7RVc1{L<;9;dc@U6V?Vx`-C zGC>D!{>1X9XUJH<*b;$(Q_%1GGEFXr+h{ATo78sSr-HfkHQY|BsntN>AScQA!TL3& z6;!_etP@JsN*Dfb>@5hWaE++Id_P_AbwS@%92?`IAcXqG7R}E^jZd>W!QW;fIrvR= z6hGDY2Ygnw#Y<8@fJ2Ukftj}{@})E3>xIGgwJ*;Iq4kG|~7)s83w+x3si2%Rfcf}P=`V9x1xo;f`; zC>+T5&hm5Gob@gqU~`5t#~anxnp+5lniETH{CyADpr=wzeSE*Kl%k6F+2GvEtpl2;{0$J>Ev9!|g}1BIH%j#4>6yTS*yzxiHQs_CEr zR&kt?5D0xflFB0LyMT1K)m+(0T{2SW>2w&jLSBM7r{kwG_I!QVgwOjbyukRco}0}N zA5*;aEMJo6EB=~_kcjr??_#PJ;?7wBxgjvz_-&2 zv+*L!QW}_wX|Z((X)dMdyut!j)~w*nKJGJ zQ~Y4fN}occv9EXc*Or?Y&sLeGEc%8-4aAx9BNn_L2QbN&`Q%d$QDJ=%I_+8Sfzag^ z(6y-pKLO}jh%rtsR!6@z=m|@-@O<~QLc=f*kI%IZ52~aJKn6vHe71Ek@eKoj+`P7; z)@nL53=n9TxE)aC&M$15|IHjh zDXi$1^{zIVRFwx!_?tX@{_T{2ensQ2%kQBQbj=K#P6jb};`~l|Y@WK)!`FQa@@;DJ zIkZPk7KqgUetEoVwobfU0rQ1AussY6?`n}9QB}OcDsUrhA}US9Fs5dz3_!n@A$s+j z&Se48EiI^eubl^j`vBxdhpLPXl;xM3Q??kpDtp`3tqbl5)8&t3@F%#8`ZAph3L%KzG+&Ry`8v?(%VN?+GD9ZZNw_hGn^O{x%)1_n}w5 zsa4Gt&v>{hhY_;8c2qv>1*j4UJ|(7nWkCG(FCQCUI^&7Q&O(*n`_aPrSY(%v zSh#Z+=cfg+ATkiyu0xs-UrCQ|vbz6-+4k%KO&Fx;WR+Y6YCyUK824vDswZS2_*J^o z)0YWhrrW0t&8G9h0n!qzCfYM`q9Pk@gYwrcWlVUp%Ko{HHm9L_C{yfQFVqAPO%f@d zd9O#f!ZNS(0j8q-Y>c7AWbQ(pFH0okh(_0} zNxT>jMy*?-ouWgzxHFsp?PyjNFq}=04tr5jQS14rWny0lt#U$+nf|h5Up@!C`1luB z$PfDq#D)%JKWp%$Q7Vd20EB1n2HM7Gs4^tdy5~yY5tf7-(S>?YE;NQ%DC7IX4e4JF z+asJBy}n9;_-}gd%uDmNoNemRW`yLtOLMXo%GV*u*ChN|dU|O6b!D+yH<vX0_2t&q7=}H8;t)DJQ06b4i3-zwlui?Ad_cRT++0>R8 zJL_ygDeec$uQqmUXLWnyA>Vmt>E_sy_Kh;BX?Gk`b=a0*ARyYf(7t0Ct6GmsZ4uWF z9<{LTP)}4<8Ub3k3!3IE3!TpP$N>TGB^%y+92H0qXS*i+-USCbAc{pLKibN9z^tKn zi~B>ZIxV|YF#M-lWXgK^3k}eTQ~T(Tf-pE<&d9na^WYGwr}Qqh^*rk0gX6p6W3MbJ zhcsxk-eex*=4ly?^wo)s7#$D}h+WIb;|3OXaU%ZE$A;FxXiJd*-ttchvv zdwAF!&=QC1X#Qnv`MBAmYwN)Q`X0+a#jY_)DfhzlgVl{up_Ud_RI>Ego;S%^$;E%1 zxk*fI~mF?~Hg^rcg3HVfEWkpBF zl)rofO1<0~-6E|>A5&GbtEn)3EEi00*T3oH5$=HI&i8QU`zb~QgE`Hs#dA8Yv&jI2jc@` zbWhQ)sppY^Cdo%fCXTc@qT>aCFqkPn;j`2IL{%`dO}qdjDmztQBK8M_ls~hrEC-fe zeM?QiA*PEX_8DS6tg1Ym&9|9ik~0krDoB*Tc%!s*EX>|d070D$`V`ZyDj0dz+WgXV z6dzt7Os3`omJd{wfdi`UcuBKCg; zMq%?wRsv*EH;+^}*h+rz`_Vhgm962b}ENNmF<`Q&A1 z{HbuG+s_NCBVJclGACza6)cbTH=DKX<7qhV|3LRve^zx(22 zNE(;Lp}$>oONXf=E3gUadMC;I?$<-BAM*P0SdxA~zS{G_{eTZAyuF}bHZ`k<9=Om8 zk)jZweF}7!#_jxXJ8#1bp_?l<=6g-DjH^L@NVlf81NCn}7>O5}iye=ooZr-HIcT=4 z75MMA6TdWlX_;nP;Z|`BdjrB@&r&&F?vDbjU_$4OF>i%=yDQ>37l)N_HM`8(mH!p7x=|24Oqj8?wTtrXY3Eb9j0!WV!#aMG8W{13f8sPMXzl|#^$Cs zMn_u)7ywr-?Ph)BiarxT`6!}bk0Z0P>KRk~HnM4Z%w?AwVLyR2g2u{&#TR#ZV#_FO zI4eS^kGFvy;p0o-$z$uH^jLo^YV+ z2o^`Hx}{`1A=!wptYnx0U0+co(g2lm{&iUG;gx8H&5B=j6ieF9BL+hG?hyON( zgVFrNEK#jjHGjqVWJ#NH=7xG4<_J!0f_&Se3o&Bn^c^wBF=CLY0aK#< zTfxgo-L@8IABNAeT4(1x`xML~$e`~Rea{fAij&PJ?;*Dr98RMRwY-ke^p*K_ zzaZ2vfkQ*M1@bzl^*8g}^jC}ax<4{k9R|0W;{qU31LBRD?4hk@8o?0VsDsWhEuA}~ zg`oGy?Rd|G23J(*o}MVq#oeu~u~Zetks9vR%U4E0T$H$=P6UFOYqh)y|C(+1GT+OM z0?^xHcGTpyioMm=#J8Z2Us!7FXK%VfocGc2urAi)ujV4N)4t*4&i1XrnI-8KF^ssH zi^`h%j+2pp9=onr|JqEun_x8WH^z6tAjKu5Z@;iddG(Ykp1pNF=+TixNKG%pApgL$ zHv;#^El%;6f9e<}_R zlmGzvJ=G4%{p2uzKueK*PzwV5g5ZAX({VEW>E-?c{j@iCq=Hrc;0oVyc82BT3fgGDk(M z6a~iT*`=ylmtoCxF`B&O+!H`^Fs9i57b?Sk7uF7+X`@S3+<`O&=I1X;aNg}rpDXVO2y51dIH9a40(f;)6`D!kf$iH5o z7a-y@2T8DXP<-R~w7q1KHtsEez=mh^?Lbhs_Nm0qw^P6Ba~X#c{ajm(qIw$8 znH;LIY8ZT=0c@zHk7Bmx?WQ|S}Vz0mSpRwZX&}Z^BdRO0Ac+FR9phI z<#-9RZCqCoo)mo}`D&MwC`sG@*bHHr7a4jw+>NBLe5IOQ?&X|&)*xWJ9v*L$So>iO zbr$zM=h&OI%Wm&De7Es94JCB9aTcbtJ)uch*wUK*cej^rjk}MG6bZwKIA)yKczB;c zhC}&dn{eZ=4&*Pso=FP%l+1q(P_w4{k^lBvTW|x_)psan2XQx4-RD5pHzL#mior;n+arLr@z)xgx8WHFE? zD0^*()W&J$&KDn+QIn31cvuq~UraR7?sB{h+;gr{H`G**qufqx5`%EGKM10O7PiZLyas&_Fi{g3=dN{o93%?~< z9}scE#RS3Vv44(<1e;$Ex>iT8m8C0!L`dNR{2Q#-_fN0*ws}w^Zt@i!DPmmN;_FXc ztY5)42QGMx(ST?!pi0oaF=&k~?J_cZ$s@`juQH-EbE)jYM^mA!GEy=wp)hwDXXq;Nk2R1~%ot8moCt-sXjOl@4Eq z1Wx|_WE~-yBoh~huw5-8gMJl=R zv@{Ugwgx%&SS|4oiUz<=CwLekfKlTw6$u8r;Eb@uG#K&OIm-Omw#9YY~ghX(8-d$%w@ zumT6C^h1(1d3;?)k@K>n#cTQbMrGjwN!ejI1t5LQ^DXg0x1fkqXE@>0a4{?Th9U<5 zH+W%joVJYU^<%8_pH7-(*BN@W z_YG_~!*ta0@?D}qPb&ZI_M(#@BO~pdZJ$~24b-rT%cx)e<*5YP;sOCwC68baTAVMj zBPL8ifFoexfdJTg?QqB1Hz_WnCkJ)VyGVIG5-Wch6wp=a1#6gx5S~BnLO8*7oO;9m z(*S2#e$QwEbh_F|irWgj)`t!Y=9)wyXZpK>C)^w<^Yp28#;cqiXKdL1M5;1tF|;#W?*Ht|e3N#A;K)Fk)D1sMqk7D%uhnQm~ZV zMoaHroG{P*8>y15l~PcWvC#h1wzUf$q~Hjx6{ESr`!;>jX|~_cc#R|ER`>T)t4Q60N*}sH{xI&IF-5#5DD+ctxsneeY&mQMb zq|QIxFyPa3{1W5!IAuw)I6j$m47C5x(}k1}m*e$>o5y=+!R@&%S#MZ% znH&uj@P`=^!Hf8jr#NU#nk17wNnKyhL7#v~v|fxJk1`X!agmX@!kgx0Q}KEZDI*-w z;_%kLWw63x)Pl_eYZ^O@AqZwh4>?h=m|d!#F%#`EdsgT}hlL~XHJ%>3K2sqB2T{&k zy_fh{bw2br0)Bp-k;OFmtf(#jm<;mKuoItW!_#?8#$#hrx7tehJC>0oLp#&H7NMb> zFg9_!nybxJE3egT@su(K<@@WPLh_tPf5iO6rRaj85GONP0%psVBRx*dqu8`~ZlmEs zU7v^NDvyFggeEiSU*3lDHz0TLa}*5$Xh7U$+>Z>o8C#DD*~brr~${{1UTkunU* z1Nt0jY&T(A^_M;&qK$ufaj|P`tY|Z_jh|ljL*3`e{x$I3K$6*uGn9SpI#?HFY=TwSyT7@6VS?HKWf*4~@X3TBpa@l@`lHbHhld4f+ z5|nX~Y(l?(jOipjdDaK~)O01oLo}n~;}heIgF`g*^z(l58!wajQ&NIFMvSE0{Wd4+qxtn!hmn*@Tk*@i-iT+NSXQZ8(F{wVBB_dm z@#iFMidecn#rGZgFMQf-mLlhru+E`0H4l0-umy7 zP`OMkF4~le2Ig+=2DfrfZ>(0%bvY1*#r164ufDb&M^UuQF%aTfIRHkE!rJZTo5O_r zFJ2!(e>rUilPmT&>~X9Lt#6#9j2_4$VU}PiK z!Y4awF@e6BNIoCkr@x;j;8=`f}Ee--5G{Q&8Q^)y9EsDGK@TEcFO zLu?~TlS_<`f8CMvR8;hIbQE)S^;4$hJPHuYNhMscl_OB2s&Dx+(C61zpI7sj&8r?U zOpZl ziHIl|8%v0YRMylyw?v{?V*gYBu>f>!?X-5-^@Gahtr9&gTMV;>&-7Mm&r=vU(bFT7 zudX`RvQm6CQ4Y2(PaAnKB2-(9UUyaSktB0J(+1w{%V&fWnpT<0KE4I6ke}x2B9>Ay zbvfqKxhp?Fp!jXm8AiqlA%lyAOOm#)gB~*a_Vg~>rYrA3_HT0-5ShH({m!=Joi3Rz z6X%sx$#ueX8)r`n!&y^K0*tJEMhiHt0+eZYSMQdAk)vksi&D9QV|-Too_uf+0={UL z!t``{I-l=B24Tv4`Mm&N^+4|sYkzo(45bn|+C}(K4(P4J!Cj!KWmeAQ!8{K_p-B)zP-`I-4+-dpQrHC@lc^)v#G{pAYq*KFRAx7MuEi=Ji8x|&waaSVgfabIX_ zVWB~`_B1VIMJ2K1qA-C}aT$)N~c}Etz};nf@cYPEAkvoM#-@RW(MUBJXYwP_fXb zbF>-&Zl169Nvn2_*uKsyCotOxU)Da;C1t=~S(ioh__(|(Uj9%q$yv)nfeUv8eYHI$5eR>66k^18YYSR%U{U%(Cg9RyvhTV48D zYcX|XNYDo_&5<5HtFkkd=B@SgZgfJ@_z_m=9G`+ZaeWj@kpvC^98pX{68}pf+LY}d zQ6jsY&rI`=RAkrCeaCYah$q;I)wMEbEukyTu3HO!Kz=ZNSnKnEq}}3s9A%JGsJs*= z0OT(L!p-Fm7Y)k|S`+W2!grO`?gwx6&$E@sgky2$S+ii zS1fJiEFH}!+9j0tlV1;D&Cmh}$;PJ?)`sP0IIu6dVGU0YpZV22{l& zKE^Wx?UkIyMsW*^MV_>?J_>oY$3X??AART_6ewf6tqgo$s6#s~=^MZ&0&QdaZRZtj z2z)?RZfXWVswQWEN^1HlYWlj=ZA|59B{HtQ1w~2p>b8*@8fHJh!a~Cl>YWeZk1A3A z3^rL+`0{c=mju>Hu1X2Vc>VroZsm0+$smA6t}e0c`+-`SB+7h!J*RU6w~=xWp2lPnICMV5dA z0m1iR+;=dtTGIJimY45WNk(-))c;4u<5j((l~>wPiqXBmtjuZe#gP z_q`HO$S~3m^7_2w*Nk|rIt7Z7rv2&lf-TdlEJ6CvJrN4@4sDk>tReNwXSar=WOS96!NGI)y_9kr)UnVsqZ)N-iIp{S_&e0cegAKqv08i)n-xPsJPpkt8v2v^Kcc1_KSng znuwnxgvd}hxCp*La$a7eBOrDou(ixN_X6ofjC#5t5mq0K!uaBn_rb^+ydIaAu~dhM z9^DGm#?HTAf9Ym1{}lSU`2yY4cUs;&w1gg73Yz#@rvrY(UqO;0LO`Jm0?8|2zfzN( z8T3c|j`NQx=J$$(E;^-3kR#yDcpc6B%n|GBR@6!pI=|b+lrJYgd!gMs7M_dTUHyFN zw%!3N*{VKbXqh17b~-*^~VM0^h#t= zs|orQ9QGW8EH01FnJFxng%8AUGm*Th75-KrrsKvOk>2WVN8qtLRw*jWa&k9Y|IWC= zkRO7!}u=vVE~7Z^*Edb!i)21_cV40*y?WIj%-C>UDKa{U11p z7anivSx?XX_|4>qm1uW>*PfWmlQDn&>kPhiMEx9nvtMw*ts0&0J5VLao+27U)22*Q z2Uzx*Lj=z@v9kWH<=uzyE`2W8d_Gmfi<86EO8qekVVDr;Ze{iJhGMt#kA`6H`V8C z1?IG0K5ZWNGsn_HCNL<9GaC2aNVx=SPC%!wsc|EX7&TxM{BB^B7mZ3BTMSKfF!;}4yllDg>PtHy7Vzc!^xHX`M(z}{I*DS>=+u+k@ zzfApaYzWOPWE4Ev1A~*>xC?T%dvlSkQ;M!V;7vu>Fj~42zzxW4f1C^`oq)li03uE{ z&%L{s0Hbc+*{v(O3;U`^=d}a*{fNCw(E_G*LHnbd*xFXWgOPyGy?=fExMpH+ER`FH zQNc}_;FUVVuLkY5T>laF^&8L3gtK(&iH#b4+QV%2Py;lNh|gtvDJ?g}P04OeR_AF| z4>&kR!6Jx9%XMKDR{xKttAMGi>9)6&0>vGQyB2qMch^FpxVt+Ain|tfch>^Nor}A> zyYo)JKQB4CB!mEGX7-*fYporUMW2Q`D`mT`(B{N)xfLm@lu@5E1s*fl`}sj-;O++# zk4z>zP=(3|s!;4U4}ISmoqBv<=#*zv4;pY-8mefnf%$|b1z@3o711mq$5Fj$%h{Kc zkj*-uM%KogOEH}ZM&^;l;*N`P6uiEEYOm_Um{GXpgYh@{oR7dtzbcj;Ph|16c#k}_ zubd2?O}!Ivv)D~mBfh&v_z8}zguk72}S#*yp(K1k)%`<}i{S*6J%esJ5dT42SSacwBnmPc<~RJ3ok?z8d7 zA55dh2O|12U_AHpgCpfYZA!+af6sA^>GIc17Kh99SU|RJfd22ffIBTu+xPAOjCG$j zpUobvaIA^ihM;3-e8q(uwUvmU5|xDx@8At*KL0eLTH499pmY zse*ras%`hzR(W=q7mJzD-WDBa<{AF95_c##1&;xtCxv|GRI`#PBUQb2i+b7QVW$?O z%Af7lPmpvE2B&Rsy*E?XQ2u1uic(V18lzeAIm(`H?jg>RZmu5$t;a0C8pAoDB{uLT zYJO+roq(7uOscK3`4)Ro)+;XmH&&l=RYOZ_)^**Q)9IkR`@0|s3MrJ!v&-QQ!8e@+ zQ%JVniIKyBU9bk-Z7 zqs<{t8vvxrr80I@IFa%)a=~ckDnR_n8)UAXDXk00ZP;BseiE`FL5*y1f^4PX%RJgJ zF6pc%dN$|~JwRugDehptP14oeowZFnj5!&3-zb(%KAYn`&df@#a|WO9Ph=QPTJQPR z8_k`3VjqoCA-<4fwMsAi&It08`auEY=Epa!-?=;Vsx*$BZao6Ut5l9}Ejl_&bG`P{ z&VQj>+{B=4GMTVrCG44CnVMS6+;#*5lR^h08HkZVL4t3brVi$Mjq$(t1&S)a$4Y)h z4H6>`l?0MxNKi8p0cL#q@z&PdrYp2y)ec*7ttCwZjk`$GeOCe<)v&L_)t@|4&(^3^ zRDKtnq2R?~|AvMwHp@nvP#X7G3vNcb+Uf>#fB>*zFT1}!~<(}YF8d8`ZxN^lH=%P zCdlt4cNo~bOQdN+-l5WR%*>XjjnP>^FP9Z(cmELm;239TAM;>)x^H5(w~rvy3M>$0 z*;hN7K5gn=@P&(f!eL~(HtdM(3QI$Y%1F{rV*Mbd^Iz!j!Oaa4N54#NN7^f)Ui zj@6;wUYbsFn3j0?_YgH*2DupHG1G| z@V6lEn8&s&l%&JAqM)K)XQrDx=flEb*(>!O&qnPTY}cKAPq2A>m@(m^`%^g#rf)vS z7jk%6w+i+qNT*}N*EElRj)XN}gog@5#D<6Z2okgfd3Vp*|C~b5fVifKRTF1B;DdYOO7rVqc5d2t>R(J-$WvPifMT(Y&`w_J$d_RkRpD~l|-#VU4yQej(!^>Q4K3u11tG5Y@`fMrdf?Q zR!ISx$HXnhRkT=P{`+|~eWs}9O(ivOH?;$I)AWC3WgW5#`og7_FKiY&hQ@SNeF>`p z?PQ*Cw>7GULf_n74iYf-Byiw&rQY3dvutL{%eU=SY$X_$Ot?wj=ZFLK&Q~Yg20ay( z^cr_3)}!zr=ewuOPoFAOiYDCSbys5Q!jBufe#>CpUn6zBz4TU%IcZ)D71{Do!PFMB z$t(_Q>-7e>$oEkP3djAn6X~g%qsqz}7XML0MiFk+OTwZ>hO5I2PBJ-{Y^)(?Swv?q zN-eNrYC3vkp{PIv#k{RQ*2|c#kmh-gzx~{{E|mYRTdCRUH8!3h0Rp{x23x%t_(+1h zif_hm&j=n4w)%hUqjf$Rp9ew@<>ZKP*uL41r-#l(!Flk+m|0aBw^f$^l3RNBzJENf zz?awY7bI$5!S7hXFNz5L0GgS%tc4q{y&iG68mYUIc7z+IZDupq>H{9}kD-w1_~8Zv zCe_x5cUHJjbQ$90%95hMbmu%|Y9o>$St3+BY}TW`gx`{XHmfJ1pJ%0Z5YEGJBGn5O z4{tqcM2VAz3z!R3D-(v%4NC&_RVb0eT3)m>vy&Lm;eHwhcFSU7p`x5`AEIw;AD!>w zZ5$t+pY|9qt*vHhLjTJiH6+a*`W%aHJor`|jYWs)j2^MGNUi0DZLB+ll~b`;ZCVz~ zR&LzLV0$m4fmzQK0$Rjd+!BZ^77Wea*dqDd5;*7gK$Fvb{?6?#>n?MGN?lF;rNMi< z+t=0pS6GFvyTaieNGFPy?CX3Czhg(8Bh};#As5%!;YZSzg&j>g02wqwc;v{P5$r{N? z*TXcA1sLtqus-IWs&Y$#5+(yp89hyzk8MqkqNEOP>u;8U+0gB+K^JGkHcorpjD>N; zuMZTD(i_WK`xrQw#PL$$u-6^!I-K{*B|tpaQXOV!+TPH{M%`u!n|b7{o#fj5Z>>2S z707UG`LCtjr+tm0a90b4!os?<8Nzt>7F}x(_fBgiurP8h*1NB@o3olEh&HU3E{<~o zJx@+fe092hU@(x3m~>y3W^ z-kFIYIySw_9zdaO;?pu~7tE+O^I5-ETj%F(=}&!dv1ywn+l4k$8t6^3b#Gl6B~;S! zv6le`8&93;M`JIX#$zl4vh#H4a~Yg986ejX7Z`bin$Ey|^0T+JO-xb8n?@JTQ&6HX z{O1dp&x~(BOB73i^g95jMv$sYv&iCTlZ1%nWN8Qzr99c2-UU zAKH!mjq#E7E;!6^896B+;OO58aOhAMVd5gCs~ojtGIo{ILmirn{r*1NPK0h6RypSW(EO6S;+bePoS3QoPP|zENQQUARzD{k_%x zsD2S!(;7P4|J2=J32o2$Ad*jd!0oLDbm?A#k%B8* zmbgZyx-di`)_VK?Jxl(ARq$trr|pcIR)XJ=c`2+#mA^rPi0b4l^b_|RQ)=5N1QzF( zy{w7tjXP_j20ot{-&uS!PfE}+YV~bneB)d$!kt}nyY)-H%`Rl@vpopd+jgftBVQqy zVQ>JDSCn!Y81F>hKnP`ri2(F1#q(J-3HTc;O{N9eg9Z5&=7>tmFDNVpuorfZa_qAbfwgo|xC z=Agv5ki%6nlkFuC<4xRKWhq<_Fn%1pu(h2hD@$2+eUWwBhM;pM=Rub5^&}{z^02c! zx-phrXAbJ-rR zPn;gCKpO)Af@Sa$3Fk%xNiH^{Z?d*;YDnjuPe;uATm}#3A))JYIk37sK$PyAStO^5 z2&^U-P0xnQ%)d4h7e70-FPq8V#8n|0cTK;hU0pl0*1tnT5VUze`-_B(H|}+2HzFzg zxYcV6PrfC3ogtiy`V_Fn(cI9c0{0m~z~ezbQarHxdpW+04)Jbstemn-8Acq?^N=YE zKPDG0luD|F0uBt0$qYXim&~ zgZ1{D+;RFhT_nP;1=~LxuJ;`PR76{f0u|&3`r{{@=d4W!L3AKbZ}Y8<2P&8wDoELi z3*%`3mF6*H1?k3T(Idq5ciY`mCBuO{f92GV|Bjx3 zomeZdQsF=qa(CaPX{7-iqmdk=)ejv_ULmeqRUziLJ#mDd*+Y#iw%Iu@{ zO)E);W7}(0>@#ILX-FCY_i#&V{HTk|3C{9MWP76w*7!{X{6dH0a%q-NnE_`AowdsD;uTTH^7I%d)9GDgIbnF89Goe3van05Q{ca#uoj{T_GI z5_eNgSw9UZcoV>a7H+Mdey^WPumsTE39roC536TIA-JI{Gr z4nPQY4S3Z7B+hV0?IlAlg-9xh&4nMr#E!auG!weg=ao76NggexReD_E= zKQDK-*Dshi*~tg>ek2S9!fS2&v3imz?}Ue=K+v{>3l9ujk~HT%YB;|?7DEGpfPu*F z9IhX=Bo=PY@!JsFpZC2!H%%_p2u^zb>vrLwhQgnqLR?377%>h$?vll;E>uYUJ5sey zg00-w^qCeiuIyde-`;kBys<{Stuq`|9{IqkjlLt28>7MOAXA5g**uY{>CaF=-_71HI0SI4A#IoQ(J|Yg@qw_5 zl?ydOknQn{!8Xrl5D}e>XIpGLoVe@0LC8nYcRL0F5|Sx&)33@^iEL+gOZT|TJQ2ba zM#j6>k3AfpaV=DkVT>lkmP=gD?7I{+q&DBRidBG~_BcJ+SG-EeuI%z{%US8Lp)ZGk zL$Oq4winARNLXzzhfe>KX|lgL%$><7u*g+=xE0#1=#gntV#9 zHBo~Ib#63+&ERqR5sh-9*_)$4Vf0Va!xj+OoXZ&)P=o%|%a&1-;UIt}sc#FD>!tBQ ze!ncvhN#n4t}=3L%n?&Ip2v9x605%T5MMN%4Nxj`g zrvic29sp=go>~&^Efnk9V`_G=dyDv$yfkD77|WJC@7bCl^cOUU3jLx^LL#te=}zBW zn0Sk#JgWjc)5Hr3SYiS4wG$v;W5to1tAn?Mo~9UdE1-f$ocPXRVDZb}MUMPU9kMM)h3*I4W#VzBul9N+hwBS3?N_|AD}Uho~C`^iRB26WSFN0v0(I07QT*F5_f3`Kg0Ns|s(wO{0`YFB}&cBzrjDBvIU^4U1=9#j0hc5~I#E z{*C3==My8U>GHbu%HoP$L<7Zm+8ys&<;YjOSUM3 zk2oAje4XXs(riC|L`+TREt?42T0A=+;Q*Xq!>89L zF%+1GwopK_lGhbW{yL+J|7ka?@2u$W-6OMA?Hq0DX&`afd}+FB zs$ri1XQHHdcfu^x5SN+#eUIJ;;9=E@!{CJEkwHlD=+9O!)IJ`nGYP>-MJ@X}Dj$v; z^jBWl&aU6ny4Fqbc)fLsz(@ouXwklwL7h2`{d1JH6Q*t3?4#n@OsfLArl)p92N`~} z)5tIg;eL<(IFgSAWbp+*?A1Q>b%V`PTbVvLDbkg({Wg~^Q=dcUZK$iRYGZ!H0rTJ~ zSjQ2zac=(nu>itLTx?dVnnmx&zr^7jv2w4N10On-`97GO0Rxc+WZNI~A=3X1n~9w? zOQ2Q}Ke`PDAP$WSso!zm4yN`RuAiKpP2=pS0BY6ADWB(NK!m3yK)$ZKpE0j{eqM^J zp@Ltd<+OTT*O6ziiYst9ZMhwh_*6Hj3Ga`N3TOumj_1{-|L%m^S|3@LJ3p1`&6&~+ zXp3e*SY4VhKfmc4v$*sbiyKZjc1ec-dEHFab3C3YE}IfgSDo)aOP^(Wv|oqsvCIl7 z@_f?BCq_oa>GU4)NR^dlFBw`~1e}2lpZFKHFxqRgsI{?((jgfjsDYmcfn@^H2Rtg4 z=(CFs$peM-Q$3b#4_^8sVNsHkU#o#dj^s|J)Kd?&Y=7#Q8bAzfK8ydvLbwvXUi)MH zA@l+b@M!px_v;LNE+<<#EUv+K(JAZ{g^%N!VaFT--j`zvW4Af~prT({E$ZQ(rxXoV z;xVRO*CP(c+R@VvUIwBXd|AzPOwF{%VvGn~4$L&K4Z6m#I9y#{UC!AuZpijCIV{Y9 z7k|1K8B^m`iY721mFR&*!Os#gdk13D{&yy5PV_%5tTUH?Fw9|o28$isK8;4GT0$Ed zYbWZGmk>LyL@f0sKB|W7joZ%xTYm||)TXZcdcr?8wQPmTZ1AR%sJXGwF!bSYtF5S- zEKS7BH*dU!j$~%2)<@Q0ao@j>4I0+V|gIqCjJKWws!?ig^7?o@5--lSmXWBj*9Vmp>s%z9G!Y(y2@wF z*VNYBU_9P8=4@a(DgSDlCQt6XzhFE(Msfvy-*SxycnUB% zz}H3Mb`c8r6gTwxuW>*Q2z)#ik@Ru1*v(}Uu=yK1I0s0muR%1EAbbD`0^M=V4>Cac zd2-S0YmR+hb1BGQROys%?iv}R=(qu=uqc((`Xznf&-V>T(Nw*-%aJ1*hsZnU;rgRH>zx_!8x~c)r=3YPt%bV45@8r?|%jGkJ?}Pg)0JtQHy&&X)6v}|XiCk-QeNEQ)$p;_$F1eAJY;gci-V%ED zP`CY((`=*XdY)i0=+m(D|6>6bCMPnMxop>rEF~bd;w#GbX9QdL1s^_Hh7t@^pF7f`i|$BV8N&1;J6-FQz~5f3HaSEbQ!FMHmghj2 z0thZXoc%U_KYKi``W8Ydm-;CE17Iz2r@X!9fx+*;xg66=^{$_zRQNlvUc4{D#FzO| zof;%w(ptsV&tOj8hlXVCi&d}o#spTH?FWa3)|TvrtUtvXu({Ajc@#~P>$0oNs+w|F$ zqvNk!+mFd(08NMEn>Q`7zv>~!c%P?fvAmJwM}JYuF~Ub3({LP>C^8j;|e}tU3JZG%IkXm?bcLB@^*fe#B6XDwADA49lO zudI;uTWk`5ud^Tr_-NBq1_m^Y*eRJgg~<rh*mpx zqc6xmv!S|s`{lIXIT!?<|4@QUYo{yzRkN5mV}mo{5W+Xq)vnxhfrF0^I8Tt@j1vi6 zB@M^cpu@dXl z6nDsPt)U(WTeNrSyx-6z}) zDrT0Z8d!`I1J+&Bug-2a{f1~K^gVxefB&}^vG%7Yiy3b~2M)_W8!E~_hoy$9N z0*2V1e^$bS-B2zU zp-;WhW*mby7bK7%#lykDtpHvX2o*B;y`A6R!1nghQTmdcKExlwh3+F^arlY{e)+Eg z4FtL_Mat}X+_>p$23=pL&8O{%^tfPg=2TXnmzc#m%DdBLe1f0Bdbkk&5$T*Gy*VbQNNyD}V#3l9Szu)g)z-Q7K8G>n-lQ@gH%@18FE+BR(1 z@Iap!KoPzem=bU)wVO0$29VpbNn=@E$v?uJs5L+!yGTO3yw?3%PbPMp@s+|xh zfasv1rInjr|84VXmk>6nA(>&l({6Kb?DsvabSdz-5Ox6bDXtyDVDF=0?xJ8W5kK1v z80h$f+qnL0n9jd>0ot#W=I-}dMzg=j80cHtc#v@CYykjbr?=;Ko~;fM^^k5f!{kc% z1A&{F3EFzsi2|_Tq@NHB+2{degA(B8I?z#Z=uzhqk`uYxnzeb7?&Z`~&XAY7?8BvL z%9F#)#_~_-r3<*84KIxHT!1+1tL$y)>mMgcwIzIXoRQDJY*unBG_ZG%_X_)lENS?j z8%n)y`fn`>R>HgN*fI@zfl;0Rlq20`De?>=wTr+7`Mlxbp6FQjRK%P1@+PeDI( zrVi?7cE;Ibfexay5?ko3k!4eTEkO2b@DkTnjp?~ztgF(A$pUzHTAe1elIteV5;^vN zvFHk->8oE`(GKLsH!#T4zdyQIdPOb8d46u_;zMi1u&1t0&*^7j4F^G$>t` z7ZEDw%tp!}3ou@QuAkH=hNkL&NbI8QT)hhOl}J&N;Gj?9qLBZ?VDB9+w(uhfT0=qv z^*{ea$Y8yDs|nnntGJ6i!{_&6&6KTi(M6tt{P*T4Frv1ET{8*!D0%%_z#dBzmrozp zlexsJ3^|3Zgg|gtxY&r`fzPpRGr3^Qpnana2m}G+ z<@7nu3YDa3eW8;on;Ca? zatIzRFApd$e+nlDa1K)zhGctF2r*bZ3&PdJGcttuZt%%(2FQ2Gx@Y`ZlnhP<_pvw#Ok0tqPHa5!oMV zC9bSAsg667{j1W1dLXDk%X<{M;Et=~0xH&{`E`z_1vCo;ps7t)rZQroR;yj1TnL`A zOi-?n&Y3Sg-ZccWEj4OZ=@NOBstOGdXr{Im>&I=HM}_v|R+Gi!h)R$q>gwQ13@bRFQ08Ha8iLAkicz1ZZYbQkJ-46Q12i!_DCoYW2- zRD^Jjt}dsIjl7M`IPjU7N&i3k45JSAOd&DynE{IYhi}uB`tBaPUOroagG$@q0))%) z=Xi)Uirv^63`2!UVr6!vTZ92pjtB}f%I{CAlptcoHw-s;dq@wY0qd30XqbDl*f$waBmGJuNsHA|8NoMYd# z^)p@`C6I|s`HhzGsD#Dq+LF?M8XC z`Ui;SfIuD@>SYP3{dvIom@N&iYLG6`D*~4Qsj3DytOHsVgDB>yLG$cv(#T_EN_aU2eqGE{TZw@-a`v;JNQ6!t^fFd?z z$d8fDg}ZaY)n=s}MNF*ZET7?yCN$yp#CPi~`J(+RF=LFETIqi{S0MHQoD?A*QwkcgU&TN9kZ0n8mxl_E?;8%q~M(9QAaziM%{#i)j4g+mZ)G06{#}^jFMFB zo{%|t-hJEqi22#FQ@hjdD1z%18qvJd)HF{?x?r|X*(NqYBe#5aC@4`{si8KisC=8l zNsvg%jXQj>x>v~xSm)S7KT;MuV7(0k$-(wy+)<-{;>@s75f<;*qf2(3xt%-YD^zL8 za1wPjswRukwSz><)GbsUB6W4EV$61&QT0L#tK}<@%XU#4+Q$#Xs)65N5tzqlZ^Run z{5Rg(j#UR>yGS&2$76HSph*}ThMK5P5yN;Oh?3+O%sa7ov*J|9QdCu7j2Ho|UjX^7 zPL(OZsY0VhqvqW^j}H4K(&vpRLOhQsR+1!EkRl$SVFph1)M)@iIg7u}`MDF$tE=U| zxB|kJ0-OYTD5L|6?pm_2md?4{<~Bm^HU?sP2Ee84F6Hh_-Xxwkt97J6vc=Wtgv%Wy z4-7zuWd6suD>j0Nlm@KUiRMtu9up_%!LU!JQn7?>DYyy);M{4`Y7_%-3E4_inO)Qp z0E`ey?$D|D6>#7^-2RgffkGdF&8{O|9_XE#2QLnQhvr8X$3g>zopYTV<|p^~sfFh- zkdc4(Z7Hk7anFisQ&5qzWk}+}dr(*XG~Bl_|5Z&j_R@KF5+Yg{XfAaW+@m2B-|02g z1B^zd{W~7pi|a}&%^6k1h#z2>hUC_#A){zEQ%cBVUQr7Lm{dPQyefutDO|w{33ZcX z51myCBk2@22{?AJnskwS8qfO|yNhTcssA{|BKM|wiWhG&+BSkRs;K@QD8X zJzz~pC}m4HId8L`QJS*#ulnkeIjS7bP|;C&BDM{f*vfM& z=>;wgBu|iKLT=Y`VQu83#eEz+ge**iTzpamso0PF1c~rC*#VRtz`WxyZ44)EBQ_7f z5AQaZ3WZ$ZK~N|H!-*RDE9#C_?at1qsl&+(yCW<@hmW|ikw`^K#>FXJxiR_x(xzfp!u7(E=i{4+;{hpnxJeixa>nw+k=}arLrQ+lT8a=748Z zPWeXf=8x+ejJ4MGV0AAYQ5S(i#B$4_Jr(O5efEBMQtjW7#!Le;_4qJE^81O_Tby~X z#{=5r@o%kmdl#4CsyH2~Hu%x<6{U3E6f{G~7zJ?Q(`0Io9)OUHpb@v?DQ|JqTGVDB z@Ttm!ggVlKP)Vr+7c6RdnGZy4Me4IMVn9|Z{k1rGw)8KAF`WW6CY7kJfl{foZeH9B zsP`I83y=f(^L_ge4*k$VD?7!!CX1AbZGwvd<2H-8e=60jL?nI zQ!!L*nC>MQ?IqxGdEx@HO@91yP08RRV&~qPuZf5b*1qWI!H0fydy}Dv|M}y6Aah{EJ*&O$C!|alQC4R%4 zlFohOc&W2OI@RzRt}w)xm`_?ptLM=~Km7tQjUV1JdHGxRGd<7UnSOenX>p=P{s34>j8st+nroH;@v5gzy*ChMv#<4m>_WdPier9B(To+ebLuW&p_p zt6u9!YYi*``Xn8PRwmj*oaG~*{Wd=XsK!m#h7q~5u|k%#A=MwaOzB~i%YEuBAJkFO*X?@*`1h_j+I(Z|qIvet6} zGf>O-Zd8- zl|0m`_3T)8e3VV}OGz(DKlNTW<}I7|)nA@^0ENoQ1w>0ku@R_{nwi6DN{9}tep3Iz z3_j`4cNFZe7jeeMPyK{zFfKvb1XIm6I<|u(7=)KvD17v|)qN znQ0X=r>*MgCrsfKeQ`{%X}VOdUW^8Y%Oo=y=r7>&$xKWg85-Svao%Aj2sxeQbNdU7 z5QP@yT3}h8+jAZD+@u!L3!l8Gv}mAVprmEwtgoW&x{Q#>X zBOUhk^y7Hma;`>GPNC_ndC=WGAR?rve4yu~NIPgI&9E2t>RsbSzuzNW9z@ zd%9@E!=Ab;Z^Yf%I{o3_QUjRq3OLU{=?bNN7+Oe%;4@u?PWvI++7P`w@gI!hfgeEM zS+VPBb_*(SJrsWL;?Ig==m8Q9{cX|8bb1w7v^yC|i6!ZWEz-&kKv~ zSi2#UvB8>K$5?`7amp&F>u3@{1PlUwZFSMO4mV>MI)(!M3I|*9raf$`?(j9;hg#t= z(8+|7FV~gGH)Jp(=lLhw^}Yu_?s2#O{jD7|+Ohwjk@B?4LA$cTXENcLShrdelaQax z-=X?+vu;5Qt&qR;=>`VBD*|IC{Osr*F)cuF?F)80+t^~r998H?PXt)dvo1Nk zifR%yZObmTD@LwzMk@};um5`}yF9R%p}XQWrtzn%l6O{N_{(7y;0ILzqzU0Zk+ZPi zOvq7k{EO-FQi1twUHw-d1;f(MDKkhayY~Yhb9b$sgUe!#HS-;;#8=1LsZifDhY?!Y zI6?ipVxd)W#G^SDnv2;17mo{0tMfCVjy7oTCa+Rab?<$pqXL~vEE`^?T_4~3<5<1b zK+5Pd4j0Xc2DZ+MNbhh#2^_=EP=TKj5fr54Q<%M7be6B^6;&_n=8VF>o>}o-vkhk;eqT3zY}kNLNer$Yw4%!?n_R)06y z=siAFE+FG#?#%o9Qa{n3h-y0ZezV6LIj^!L_+nU(2VAOdh4W0L&(bUxjj zNn|UYovd58AbkM&-SBYik{EQQI@Y+2h%bthI-H)>WkA#SQ|_ja`RLKtQ6QwTmby}o ztk}?{I1T@e?VyM{DVQ^}U6J8+xEoL8nK&OPSdEr>cG=EpQ3)B#;9eOobd)Fei(<|H z4EW8gem*Np+BK9gSo+Y}@7jqv@Q|D8b}G9tfy0A zq30_9w@_3r(MpkgR4|aB?_vhpN-3CxNO?k4sL8Zq=|@=nja2(3Tiu6g7N0?&Y(+?@ zaKn9Zla|;MUFxr{wS2!v9Y`m&tm~kF1Lj|k@2;?|XvS)2WoW|^fZdX6j>S<$__T=1 zT*uxgRR(@{+?_i2d>^9S`2aFQpFSX7HI>EYtkziYB=EH%hO~THFqrxgA||sN#*$2k z&*iy)d0j5&o4(d~|FW>jG$N3?v3c*d(ivrrUhrv&-y^S$TQ+@={V$RBdj8 z(eigFHHV`O(6 z;Iup&gG|d+G-yQ&V2LG^l%8#keR6XHEN3h~fHW;pXS?IK4y2r~3b{R$@c5_^3EW81 zmp=ffDFd@XxO-$=Frq)18XF}>@ ztcY53y$;odfX#XpVBU)r7pXi&^lM!X&x_Nawz0D}uv6l8+DVi(MrEF4-W_dDRunab8syV`l_Il2m<@lj&y`jzFNLB9DBG>QFnXfAc@ zK+gFpm(y(;I2TcRK;CuY2@M!LHsap`wQ|~(1 z*ev{g*BUH)2!d5A`5~Fb{h47iO-7`vV`u0SUhEO}QqvHvx_a2%ON;eT?K@Knex6*7 zI`LTRi^f^xE2pLMMaYOZlspiSSzDt+D#PIflGm*aeRW0Vua+;aQc}APFMSA_4ahCM z>KR_y54u-4OmF}g!wT7)9%;IkD%za0Q+4#+|HWLV@xM0n^eSS~)L4D{<^l|J8Zh3D z`{JW~xiclJt$3l##k}}3CeC#n&!wKQEM1F?v5>N!#*)J+88QS20&DPG!2bU{syX0M zZC9ID=G5DrRZ;m3Sz}Ic<|N_5uq!{v9gU1!-LjSTqnIoCKtLetbVMTu=<$B7$Wz1F3W&IQ?N-^=Rx_LL;f;Ixmd+Ifwx`-VF`5Esq z_5GKE-P}$iJ1m4bK{-b3Cc&s35<8YfB6Co2z4l-U%}D&U!-&e+p6+7BeCY>}8*0Yh zmW<)f|y52-?)aO>P>E1Dtjb!BNO*JX^&dT8nY zu>g^wEWvyz>qD)KeoxcgOmtHK;XWME-RJgx78mKgasOqaE6eTW>-E9-yYq^+(}AQ& z8pYT4<4XK48uVEs2UA2!nm%I?C{9eYwS6)-xCK$l9tS79i0fHgE}-yWf5UahZ0gC6N_ zcFu{}oZtUa3jIhH#KM`L>W)8PbvL07fB?(Y5($-SXnMzFd%O4bMC zovNmUX=MUHuyeL$DpzO8vkVl2A+MD0@Y;{*u19oVhXH&j81SJuk^Q3)GiQ7r4Gna*C~C%E zaKb55RDGov>GtNzJIpwB``n;4|D2HwD!b0*r4`WBBi2A7Z0VE@{-c> zQ5hKQ&Of>#*E=LU9iLy#x2V7WT*r8FPSm$`tZw3OBRe#N z`#f?AB4lBph@^M)#|mYN{k`FlYvUDNcP#>j%R+4mNYF;8D)Y!c`*FR@Yk8Og?8l|D zI{pi=674Jm{iZL~yHrqt{ME*X5uZQm=a_H58t--hYV#eHh3(A;6JuT0&FXJm?izan zDKC`~-a0GKoBXgrT=rH+3qsJ*l_L+A*~WMW8JpcEe7s%eg9&V3TGA&p&UxEkM-Vxx z+FsYPMV8VhtLaNJI@VKaYa@*IE$D&!E~m!Luy<&h0{LGsdvj*_h)+W;J!?5zE{-5DLjp ztL;7<=XaV1wd!QE%{HFGhX5XBTsBDaZK!k|0cty%wy0|ikn_ z7$gX11(Lth&gC_yO`&!qQM}zX`@LPkgyA{c#jUj52rF+s@!*zc{(F`U9|3L_DI}!D zg#X7z>-0_a-sQ&I(J9NJN8wLnp?r>;J#yeN?Q86YqI-fR7aIBo(EtkNHm7Lq8i(;> zza`<39^bAjy%d0w^Je||sA-8b&VfNZrn;)J=x)X1abMvt{Q2RJ7fLT9$E}mVuKXt( z_>mi%o#9wgT*Lti4CzU9aoP1u;>0C!ffN%b*^%hQ>SqUz?qpo~jOdYM%NmKytQ12q zQS91Oru*#y5{igGmlv(i{Sq>rtSMYsSH9MIruO%) zNv8L=koI;#{X9dDV68zh_la_Imq?YgNAr6;k>^=!2ee9_pc^&@f<0b-g<8j&+b}aP zI)bK~tUBNKr{}Y~FHw8s>mH4+7=khUBS@O?NP&Vxn3^h9co3f4kay+rGpaH>#_kS! znGwmf3?mFO?Ip25Ck*%-PA)`&_<|fAx-T1MmOwCVjxlG$O@=J>H1N~s`q5G%@z#PK z1d=eDj6XR@V=%=V_Npluk(SlHlu~|b?pLmvCY4-a05)`6E+TwF&I{ftv2q-FxjN3VyHd4>Lbj zN+WIl2n3q@Ct61;F95b6WxD&WPI3z~lt){3-*0XRb*fD!igQ;`EceEd@a#ET)MQ;i zpp10*^~FB*BaC?Il0s_lR^DZzl@_1dQxg9rCzr7)d`aBeYWdcJ4_t(yZMHq+Elx6F z`IwH{pRaKhRj-Fof+kh>V6i19sS~NhEiD+b_Gf^7gimNRV3oH(M<+om`Oebk3F+NxYN_|_u-fWbk3(6#}fV^ zgRV!J|Bb&+Tv5vO@F0f+w~r8<&HMQ?!5`FQD< z9N&sIw^qy@x7{H5&-brDWDKV^63qLjXbsBX&nR9YRbnHlTt89&+D@Tn)7)Ig3EEjSKJ>cpo(wCA z7FgpL?%q|>ihP04uPuB*)MEv;15e=s_1_==bd%K-oG1Z~VPtRFo<7A#wgY}CXp7iY z>w&CxW_=%VX31k|hSkG#X^I9AbRv1Xf+?n*;YljVHn-8zpgEbE$n_4ik@dPaOFBz} zm+SBGh);7O#52-jT`yL2AKGx3Orx*efNK?}n(gbcf1L+h2YoxQcTiQntasSWlAR%b z{>(>Xo;;V(H*qWlRQz`wbfe4afkxTgZ0U2!N%?I2q71>n4PJ}7=H|$X?4W49@d|M; z{!<}P=eT~(u7GLr%@mbhgH5YN%Utj4IwtD0uWK}yOJP5ARlmI#j`(%!-(Z#jUFWdU zhf?@!LFJ5AFg-720)?jK?A7PUQ#l(5vxs4*_HwOahU}rX=#Kl+E^Uz zlVVzzJ+Tc9w#+P}v)zc;syk)J-?l9n`f;Lh4{-{|eMKX2I8Ke@@m>SbI&NXn=(52$ zLCJhGjMYWEBgFL>nk_AF6F0qg0=Q9a9lO5{_wgm;ccYDPvUcmK4^^Wrv~!IEPgiF6 z&;Bv%tJCn=d5ZffrdFzBMTV`=Tuw6Xssh)(LQ0ytdK`PCf_y+T!zz2GCL6*VnR_&6 z2NUa5v$QUu@f(0Lr!)wA*JrwMP52!yo(#`&B))0Roc&b1Q?%~0p!IbF1iYsMix`Mc z{v<+m=gAumkM~NSiCAyDcM?+ z0?jpZ^_sVJOZGzmluoN<>J>;i0_q5)+*bJRoO57LQc|LW0R_W(u$NlqR#5+=pF1YraVE{->$#OR$UM~Oa?`?F?+k@g?jF$(9NZvG!@9kCk*V06cd?63Wpivoz4$7^l zM_{9IOJo`I398XS!Y(ylPXXhrd9i})6N~K4rD5*pzkHs55TJs(dUEOOa4H*WsCeyv z9{Ed_+pUqcy}nP66wwp+5Hs=oq(HmNRk`v`QO%*exM5$=q5dy|xg7OWTGMobBkMav zad)J;81-GMrDq8(1lUh#)gGd{9b8ODxc$@d$12d|N3G$X?fyT0a-AJW2Rn-nbr$e}zeYS&!vu1;Xwl{cgJ4f*<&J0@|1HkY=1IS9rF*$z6F!?ZB!RXh%g{-ol$i;e4T zm_NPKz(xsh;YL7Ca!&3B8iRujYb;JTuYbH*;mZYy*xf!3FNnunZ62MQs;k}cu`NOu z9*nV2{k2^#^6Myj|M^==kORlRi%#I{I*F(s(N!X zNq=7mS6eZN%VVyge*i<^9jHGURcKFbk!UGHVCcA)pRoJRoMhC9B)Q{88ee6hW2bPO zr&brEkK1%5i>9BoT|_@A`{o4gGc~2u7@FmuiId#oY3f2e;8Y^@e}Fn=xg&o+`_+aB zP;Jk*64NrcJ*2So^d%)Vhie`3_aHsV6CHHJRhDy>-*sYa*bmPb$Y&79N5XDM1fl(^ zBPMNYL#Zdn_v*WX%A>)NH!XKwuN?w>g?{{@-F5G5WlTk8f*5P7VXmiK)d|dNzmdj7 zA!Lmiz&@C@r^p!0os__c$K|q1JErAxmowi7cSwW`7<`G!0-8)M;UwezlM6+qI0Y1u zx52=%P5o)EXf#z8Eh?+E)j|#HtSJpv;i}Wwr{pA5l50#0=jL{D%T3L$SIsWFOWUcz zU~k)Aol_+W0&Drqz}RIwl)UjU`6|e1I}(a?5^TZXxqemo@ou>DR`QOm{U zEM_i$EgYk=t|;tb(lvF#_z}_)KNnE%_O={a!+tP~+VSixDS8>m5p+M^nd!q(_@Em9 z9x>!T&&YZAE?QGN_ofBn%qX9uA{p$l%35si6X%W=0RSmv{N$`0Jk{mp9`yg{Mx`21 zczIQTo>1gWxttWwCzl3OJ$F;T_W|8C_`S?4| z1hmDbUr72ljPv;X)uJA0fgH4tvrYJ6LN01jBv*yTJFb(N>E(+m?B3dd^J3-=pQovn zF`ghh!~5yJmW%HLz18)ZDcLi@Rz61h6E6&C?x54&8*&hM)&8o%{vJ0dXBiMAbDB(o zBb9CS6vx&W{?&&<`LBS8W5EV7!e3$q55)Y3YkR(>Gv7?{qo<1iDriY+i{eErQ$8vQ{3v4L%$+ zQ1MoVs1-piSEWH+WzyfkkCe9W|MxBfa8=X>7f0pdJ4Kc2wUj&K44_R!MpwYiK0U2i zlt52EihtgXdmYvW!?!_;l*7D3mL+A{fuNsEv*Cz*rYz)3Aks8h3HW=@Jkt5UR=e&V zqOGr|qyFhcLZ`eND~v!|eJ}V(X>?40O)v`q;HG@#pQ6SVUpv_G^Z{|P9HyyhYDD}O zpi0LsG}C{RWyE@q9k#vMeTz_kg>3Bgi)B4%3mYidX2?i2v>Bl;JzOVfWBT<1Py49w zd;_EG&938-w}s&LyuF~ZN2$^5>#=W$<&+mP zKukt@6!grG`l&D z>#;+rAsQ?+A4m~q$7g_MNg+&B4I~ZSM6dxZg3~hxu3RDk2am(scO4woc0lLox%2)= z63uvaHjeAH;iQw{xbttNV*lB58^e)XG^}>o?F||FkT)!VaGRW*uGMo2{!K!Zlis}Z z;{d_%jt)>H9N_?2BK0?seewEU_JH{psqJXs5rrLCwhb?t*Y;}v^WdUkHM7>#S8ngU z>8POOvdbm`?W7&v6@NsaULQxt#0}^-QjWvoO{FL=WB7m|%3d0qly0WaffJjQXriH* z0-#0BKgbxShv-jz2(YCnB!XyPEDwWm3gtuwzO~Em;HyD@mftR`hUL)!2d(3uc7NOG zs3R;~yXD5y^}k67=dZlVn!}$j?>5T1QaG!DW^|o7aC)#AJFM3+I(PCy?=kAX!~E3; zx`HbJGu7&0zuoO|StmjAJLSg)FeQQm-n@@@Pg#^k&mtV@_%C=NZDY zN=yGz`%+3D^HsLRbmxQ0N2$=AaDEgE#Odg`4wE9^ zao}cvlg<4B_{k?Ga)ivpYPksWvg7*I%k(5;7lZ*UrG86KE;P#$Iz?Lc`Qh**jN|-0 zf<8CidPGUmx502LY}JKb`D?Pu;^`6jspKCf1}e6dQZ?4b+Y zh)o3yYA8kg9}vjen*M!vni%=^6*oa-phPb!H@Xzo((;r%&Qnd-htyZTiR)BC_O+%rgr5J1KaFro*>i0s%%x)9r z6y!pbpl*|uC0@SPm6c`V>dP0B87uVED6zsk*QD z1PCGTiCzPVAVH^V?bDUek8L%EC;>7T55rF6k>Iv_Ku;JGhWJNHMN^S1R?0-FSckf_ z#CzV>ik*X1Gf}UyvP7v()f+T79}L*xd?4*Q~x|54kXteA1<&&E@8ZRRt&}r6Wjz655=z6+^QB z!uc1;hQf?tA6PTh28LDCE|1AM0o8vkJS;D${>9{3g z&pRp0{_$_(Ci}(iUrC&^Oqfhqc+(oDpJ(b%eQIpP5s!jI9P-SH0xZ%p1hKY6oLJHN z8tTnU4{QRt{5f~~9wWzvzUR+t1b{fBJX^k4u>{#GQ?GLNAFysk)s^$q=;o{vwaVk9 z(?1>jmdHCh)r^XoxMzSj$Kwp&>vFqsaDH%cf3UeZvW}4lP5(#7+9lv11YIseii3>! zL+>vS4$KgpSg(n}(SM9fDma0r0H# z*SNaWH8wUnI#d}~pAr(CE!)s=ahY?jriupGapo&;?Hu{+Eh(@GZlolsuGw#^TPMpu zd0kOzu)a=6NsVT|JykY`@YB<;F>L_WA1C!yde{$v!AeegKWGM^0YDjc+gvu zH{bCQTdT;}%0+4^mMhU>vsxyqRVnXpWHJO2+;EvX6O%$O5yGwAl%f>R%Fdu z*L#o;PxOZFVRci<)mhD#+jdeyy}b@=?1>;+{$klWdYQ@U z3F+D@8begsk=F>CEF;I`e< z4z$do2yrO=~%LXCRf=P#^El2`WJ-~IG-3YED;2r;F=KyTEjeTmjk157u@cj zbnw_>v5UTl6;wn%yOJz5TAw~jH#FQsJ>?kTMB)@GCR=VLlP#@3NccRTSFAeHGVK%; zQ5~3=o0t~>pK)>axlp+@F@B>~*fBJG9-SXw=>B6lX;ed)$^c*3{sDK<>>+tUERG{q z%#>Nb+>H5fFEKGOkhNG!@UoJ0AMaeLlh!P@f(8_;XOJ_(c>dtExClkF^4r-*5fa~FM*`}{cB@mZEI_} zZEf3aZMhj4qB&JZ<|drTVWsgztIHGXA^kOZd@F3gqCj;+hWGxJiGmVsEy<;#!7xDH z^lFtrhoVo3p*BRPfLsXsZ{0_OeX zJC6%D8 zyjNCS0x32p!h9|ZJ`EZZ*9HiWi3Gl(^~36Vz?p=9@}!{FXJoih6CP$w)JS(#X{w$X z%y-EYw2WIg`_4Dcp5m}n{UN|mXVParVou=%;BWF4u@Lt^5x;*Mtt@qD-;ia(v%^`R z?3)7Py3{%WQN)f~h)X#pJ=N{3ZTlbKGr+cdj@l6*;|NO-#Bvx}_#qMwaOvKgNj+^{ zeDSRrbMdJCr*a$-(Ka_%HaB+)jJmqhfxQv2z{JX;T3|$nVy!NN=Z6=@m%-!xSz>i| z^979*QexKj?lku9Mbr;rbf*1TYb^hd3-I40Ux&@GDmoT3SN>zD{8tuC!@#hMjq6mQ z+p1o4bb5-8i;GThOoD-dO+c`@vlG?b<)SIoT4?WL0jbY?QP5d!x|yqA3jX|nC4`TD z*T2RR%g4S zy8y)taoS)i&`)Y_wNV*X{77mk^?e!ux6(uiNsT57d`ST(7p#frOqXpwlUtqNlzxrv zWjqFUR-##jVi;Yj?pCiUidGMhBkhB zQN`939}zRRa0vJJ@rLfNj9;Exy`Hwq%JdvdCSVe~^I1~_4Rwzx;o2+8nyT2DlH=1= z)3TKlQmHXMUVuCN9`0S^16xDYzgKp&dp%q%w`OM&olw#I5>6Wo6LUM6SudA$pDoN) zq8u9CJ}|j-W)p|yfonH?c$e4xx45FE;pyep8t)f_cCU+T;}2nUO1{?3;rRT)Xsj$j zxrtGFPJHBj#0gZ+Za+JK4hRft=<@t9?z~O+{Y!8=<2pDA%uy#o9Hv&pMEiA;k&f+Y ze)*{YXfW5XifE>89?xsUqsB@hprJ)XonvCna`3i<=K&0hM}(uk&8idyb3lt+GPy4# zPr~E7fhDnxvns_*p=I!`=&q8VvkG;RjFscYkxsL zoG%h8EBghJ9BQ}+1B2!D7TDwl?=6+!MIt~yuQP6Yv%jAUn%XrE*CHc$TvHxR=N%|y zQ3`m*nSkApLi^!hJ%VA=^s=@@vKq$ZSrtx*f(8vg_$~)@+!<2Ah#>Mn62@}p%C_rH zx97@?P!+K8lJW79n@mUbfRv2T(&4=G)kbfJD*e@E)ByGXl%N*F@wP-Hnlm9s+l?zA zA!`{J$ON9-LwY3s+<(;@7wiY8G-K82nZO=ifU6!~v=Ro4NX`%7$r5_<=&O25x+;ZMDI)<(302%Xt6Kuo z(}AOTNG{n%R;@+Gz2ILJI-`rVHov>=GwsEaUDkN?(7_k?BV5dN`g}=1CvwTjU~}%U z#Ld0J9dXEF0t4!@U{2UID-iNcc-vKU6ZMgIGn04Q?^x$UfHCTP7Zi$0B4Bce;N{G* ziau0|fwQ0D)T|GXE8#(XMC-l>O98V-VaR^IJq@Mtx|9EY9#*`Y)_v`LFJS0%#26r& z^ZjWHOJc6jNO~{K{EMdoX6+7U%}%^?cz82#Qtk{gfk41T79Q`32AXlJcO3@!Dt|hO@Kot zeJ_V?GsLY43dybgFcz{MXo5}9>tcVIhi)d6!|ef3Sb+LdF|Dv<#^;uu>*|;DBH4b( z0zx1#1&4XXY#SnT@|CI^8~n8`Wd@s#=0_E8_AgFnp=ku;^P_lQGx+W{-!jt(BBc-a zKci0<`CGWyLo3$H%0Aj!8`6LxyFK830V5*yCRML!R6$P0`5?x6b`deAVp~ zYG|olZ5&)=wL_SxYH6uz4^Q+_pS*aZiEstX zq@vF;{0fU*FL+GfU+t|GF7|-7eTPryF#$B0N0`W-^CIG zADNn#l7Wh6E6=iaWhF^Xm})C;3g6nxw>?R;&oQ#*v6>1TN*3!Be3ml1e|a0`90m@{&IeW`AgkqImO?tP+Md8>5?&nX;NqHr>0v2+ro5rpW;__+KDF7I7PH))|0GB%>I zoXR0f$ot|d8LC;UQm80Mgxvo|+X56PP#p-pfUQs@^syBf{;a;-KspT&^<_A6 z7COvzPLoQ|X}fZZmwv|Xb~^P3OXzT!4bx9tc;!P*0C7%$v;U*herD*fy8YlrQ!-%4 z(_p!{EY~_QLz^!s5D0&Zd`5zWyL}NQ(J7g|BqKfFPGec^Xz5N;w2wU(HQsA5C6E^= zh`(ezH+A@Ma76_`aEw&^R zf96xvR82(pX1j+RMVLD#f6Z!jxyop5Jt%9=mP=g7?diu@n(a!#4_V)flpO_=U?tf=QDB5oVLDCTeW`O#y)BbWQVIyiN{RD_1lI{9G zfNWCd^wt9bNfj_CdVTb)A9X^7E4fVek_8op|I<=Yvd{<=!H8JJ{~V$e?M#_6{E++W zKD^Gb&7G0vzxDpba7!1B=ux(`ynBbw=fx;dOxS4dz_rwryj@Ms(E+HX_Dq`lBRG;t zC4%a>*GnfUoefRF&Ut#)2aA9Osj_-FQvB<$iSpG^*|sfwFiCjjBsuOM7_LhFH`^Dm zn%0k5{JWLV&dFr#A`~s(6>^OB8=(8BKqzpzSW&)b$`1mi%7hbhS{){&62H6974h&6 z5-YeTV#~Qm`DpYG+Fjspm&L24q;&h*SlVEt#bta?gM`Oq&TM#zK7+i4WuDFdbWu_H zFek@`dTXjcxNN=B^d?9whh`h-f&jp~Z!9^l#-jdELlHCLgRwoy!HIrcrxCw5&jY5; zQvzmEv+lqzI|C?Zgpu-OL`2ANL|8cZSU8WfP_sm&KC~S+;{R#bCKxN59A1Y*P87ad z2@=c48VVW)WQlZ~3hM*OjHSK(rKYMQWo#QLwELcpLFMyJJgoeJ|M>HDD*%7qowM}lEGOyuBjzH4@0P>|8SHQMp_MAc@&sfTS_G_jD*^tMaaW}5BuX1`dngplAv^HLz z-pgg9XKvfUhfcxa+e4LJIEJYsmzVp~rDoe&6>>OG(-T}oW+SuNqs0<`S-auRCb!*N zZnd+JY@7c91f0nuJqcavc-rjH1$sr#Mo;R@yeO7&HLTswcm9NeJ^;k}4n%mCdQ*s+ z$>v$rN>5m~u#9l+illXZzg|-ebTH2Z-Of%E2Z7+X7T=dxU_poB+~6^!SeecbpD>aU zA<)354;w$r6VKv-y0$)M7wu9N9nciu<(uLh;3WeC>bun;9WPadcHF%CG@4Zw^1fEt-|opjvVWu7 zFV#=OK)wiTg@qPzB}xF2phK9bI;FA3t1^2lB}Urr&GL^fqZrAodS8v$HQWg3zYl1| z11*_-QN#V6=l4f--ke|z57s<4wj)mA2>GoK#|aoPJf7Q^yIuugyh=JODXh0+)f@B)J0G0ataZj{wCS8-ExnN7#Vdc#9ag3Jnb{byMK%IfZk8o zrcY$>K94sFDWtHYylsda|0_!X+@Zl|t7s+j1R&wbe_c%bQJ?tA;8Edd_&8{>OVk_x z0?)Y{jDQZpa z#sNuPI(6EFW4aI-4KgehDf+(a7A}52(~s)3rAnNFVNzB1cP{rgZdVUxp>SSe!5*{4 zmxk_GU7Zp!Nr8Y4;2Q;?WLsT{Q4?nTLL-4%zN&)2gYC^Vb%?5`mKM^jt*mjr-!l?u z@_CXOyG1a%|1YqQ7tG1U;O4L2oW3Zo>)G|Vw*IuBmwA264t=;tz{Zn*X%c*BO%#ct z@n^&`6(XwIccHn@HB}l`FU5s=Z!v(nhI_5gk6pLgpX=)tV-`vOS~vczSVx>uzAx9# z%ua&z=kgRm1#4Uf1@RWCpAWu)>8-5lP8Olnzzw@VDMTWVI{N$uSi=s-V=r)-GFr^G zOOWDkOzU3v>q*96QpIJH-^`b%Xi;w`sXKUx8iv&UQ~9An=h0v6puv!8GX6JqnDRYpXm!ud@8Fef8S?HCME!I( zno^}Sx+D}h<3v$dP>gypwoJWffgs>_(*3Wn#fa zyN^Jxrwz^!Bi7wc*VdZ;jUK^BWmHVe%vV#l{*tP;vWW+{lsIR90+D`|azZ4r_*y*V zZ8tT)1TXdhWYVSsbR3m6{Aa)B>1k&Cb08-5MZlChh4`BmlK<;fx=aBjrZk{?O3#Z`$G_v9?J~!bAsbv^Dyc54V_(fRZPd$4NZt$e zX`0cY9r2TCFki%#DjL|9cKKZCF#8qg6lO|nVe*v8Hg#M)`q7n`e&7XUFG)O+mB2*+G*M!P@B_}&^R$?g{hl?Te6k6WomJFMQMqz-_5>oV;|{WG&tW{kKZ3E3Ob!s*C^@^l`%#e zX&CKgnc6c`rd!$~fy~~2ib1Xa<%d+}sdqx2x>DKHiG}339Sm-!a(vT-@ZVedYiMq@ z31qYj=*=hV6>-t3TBYg$;URZ$-{d0Y^QP0>zRVM3%G(2Id)yBYEJ!#(FdJTkAa13)BK74%cHm=$kiEqy(cr^LY`IIeJ;T0-FeWzC=00 z(8Nk?rt9u$?QUzSK-r2olz3^*V<%zU;JzyqrTH}?ao)oji#+F9?Z2G z0LHq|eZr+_GzV^ko+vsx%K#MqW%wh}O01eJEGUG$(Of|!(cTC=a7_{8faj925xM&H>#}wEPtu)>NkgMT>aZts;m3Tm1KBX=rMw3hV zg_W903SdTPbDi+1yp8fd(LI`9=J>fFxzWh6nvf@7z#yY;i^tbMQnpT=7b~Wg!tJqN z-=t}gUBOp_`ej<^=$rCY13Apx?B#x6rzR*K zi5!q@*=mw12fs=HR?f}+`K!YEl#+w?UTkdIMQdRCn7w^rfB zlSXNmGn4Kk*33l<-MT+tDK#-!Lx-66E2W^AbFe&X$FBN5>G%Nk?RNA zWQ=d;>M19CnNOH|tVUKM9H76K8T|?O&-bzmbnaqfltC;{apP;IlfkGGJ3+lszXBc;*lV2wu!J7+ zhnL7FtCaLe9`c`fTVGIv(5NWAi&fMo)n#N5$(f?$!$acu!WG(Ops8&0KcH!Ytagkl z_mqZG+kAFw&+_5u6!boC;Tyedi?~4*zM1L*KtA5xJj9+|880Xe$ykbUf@`-J$F`x*<@R!A&eTxXmax>Tzed0Q zXfb{GJV+0z4aYS#A+7(jy*-xxvVcn#%2dfF6wMB#n^+&#n_+?swsSWnPqIk9WB7u- zKJGGB=kP=v;G%G2Xe+fA;FyAWQhlKVWASJbaI5T|AfuSmOjg#cqEAmJ>(S5iZ)tT4 z3a6&G_>k@;Po&9<*PYVDaQgwlp!RQkTnCdI+zy-Ue=K}oAEP_6DogNvU@6rUKyCze zGYj?Qn#fwiN7`Rp)14gq^R(T!jj~HfNV1N;gFp#7FKhKogOc9sPX_G>;a2g8-nb3Fo?Qf1x-tD`~x&Xh`u@+QCi(>pG$>1huA z3GRd^BiZD{l&0_{r06w5C$OO{uJhX^Yf7_jk?!}F2ek0cIi5DZ148qf%iq=~u9n?2dl6Z1InfYQmndNR{n_9W> zpPpd>_J7O4!Xr6uTQpT=X5m*G51k{=aG9_c83Wl0Z%%bmzlT$WX%S2P_kVGhj9P|B zwcCV&Ua4TDnRA|y+w#?Z*|wt@SBp$@Yjy%CkGIivLMs0EAkIxFMy8UV{SJFvq;htF z_q2u%eO9xsqDGAS>v87-%=VhSzm?jPNE-r(+0X5V>;!|XM(gV%+iFVcMwYJ&d8RiV zmHAD;hA(Z?i?w;_*!J-JC(Qukr1I7T2iEx7mu*KORz1ZkXjW6V!5^AV{yvT7@r!}? zAnqvWr)UwX%FZjTQJ2TfwQ4?nK+A!X*TZl#%N z9^B4i(BnsB8HyTz%0JR^&)c61>~5?v{ovQcYaOg!3hmSD&If2BM47-H_+q_%`5IP~ zmrx?l@$PsW^i!_%AQ-OAGu}%29-tlud;(*dR!)E3RiOR=0;Hjm9zgF0VJ1Bo_cGyU z3md-dM0nQOo3mexVkN{+&Ngab#ojKjDx#OBLB?tF1aT5~{n_;aIuNq7sck3m|CQ+I zLsrxZN!}hW-t+hGOn%cgfrZl5%2Q@*^UWqcwv1x*U8FkF#;<$#-IaP{_a|E+%F|?N zfHMOH?mJzbYB%g0wHz<{$zHm!}J45NM(sWgp*NXxuguL**#gx5Z zw{%mj&0lxu?DIr!j{NM_hjAd*s~&Wr|0a8Wk3*vw^qK7(vJt8^T0C#E7IhhbV-F(v z-xWdtX#HUPC+4vO*w=)K!S>*qRxJ(DYIplG>OB({9Y)0b_;-l?w+Q9&06GNR9e`pF z^izvGCV7wV*8=a1Rq+p{xO0gA{W+Upi4hWzvwhZ{{{Z$5f|0V2K5XX_Nyz<;f-a8n z4)!kK{S1tV_!p&bXzkRL`82?X&GEUJb;II=;WvU938{c5C?tlD?*Z)m&>kbe$7Y^3 zPuJ>xAR*^Ef17&Ka;168YYPD`{~HE>#BdvoISbQ!YX8rSS2y}8drh= z^RaM;&uI^SBePp6&>d3E(KYxnTHF|cy{NlZ?Uk@Z6J0VPl{CkIIWm;*nHlyR4I`iRr#szel1K>ZbQapk#B*MFo4yU%vXX(a&WC ziz`Mlf_3Z99fGSxAtt(-z4mLx^NS$R$)wFI=}3^gaJMybbrL07rG!Uqueg{6+-9R)(oU8y+eCxzt1p-W}a zEi8=4lx$b=`j3N@v@~taRg?T8G30QYPWNoeoy8PyE*#m?gQ~1b_QF{!F;(%b9U%+w z5dCnzcC*2-obu6eR-v^jqVuE(=x17)w*>=uu6@hiU-emz9d`pFQKUdjgwNTx++Y4V zo9gbca3!PZAId?RKgXp6ATW3jf^jiY;}3iTLW;qrY2IfI043dG94 z`wqUqIwOR0BN|9^Kq5Ho6glGsyI@Y?kDm)EQ=NT-WQwvc#ifj8mwvIpn-dB6v^w>A zgrbJ7C%GA0EHXwRe?uWLo8IP2{yX`;J1?#0rM@cw+$OMf@FnysE^GyVgV$Bp{@MCn zR6RYjPhYjZ|91sBt4{hkdjXFa7*Gm79dgjonhKHL6%;)k%3*(%UURx(QG1SDVa(1t zQ5@e`NrjDF#cfmZn%fDZ*P|>&*K_G8gQ|_ACMsQ_|To-ZD_u?`0B?XVS0?H^v z4K6WxX3HxCGehJmB-*|ew@QU-TY(pXZ*{ADQ-_(7p4s^yQGYRWgdI~gHi?-XQZGiS z(V<>ByH;^9l^Prz2;E&foo#9YuGN*O)H6Sdp5S53&GPTvuytt;7CEz57)_HkpX-SG z&=>jVEmg+Us9Lkl*zM45yM|>c2{eCYP?fx~JD>;{mFIwZA{uEapt{@PF^QfEmdyvkMMv_h@t%?|aeQQu|Ql5{c zRZ+3OWi0Wn^DL9GJ0LqlMR6CHt7$)6%rk&I-}fAb9T-~x4yQBQhhNLJ9KUOWe%2KB zYp^_ki&jU&F<`16Z00*x!PRb`w6)%Wj*pwp?t`D1IMb0p4pnDH?;}VNqQo2>oiiI9 zo?BAi33R6D{qXR<+}*g=e?ys$cwOc6Z}&b(om=n3IRz}QHVFwkyf4g+`FM58Dpiht zBd@BJ!%#Sbe%8rYax*AdT@6%beLEgWV3PZ#%EYAgE2nM7tKdpIulo`@QQq!&IdPgB z&*w>?`*_@+nZ|r%Vy>vx4FL2#Vg!MIvtY0+|INOC|1ApQ`nNIfkUUZBui~)u0LoK} zd|uLZ$(Mc9@|Hgup0w=0%+^m8YV;NMeToWsF!lo@ab_NuVD&V&Oq5*H+g8K^HOZU3lct^zdLJ(*-?f_}NLs;zZaAta0 ziV!PBhfNCU&jLwKJ9JfFzmY+G4pgVyPa1WBEDuY)(Dp+aq5@pKPAz)hE!pei4Yoe( z4;H_~9}z6rR(;0NjS02>(OS)yYy(>8OI$|51$w#>N&i+x^VLN>K_Xj6Ucr_4r_;o9 z&p}>MH6}nhLF<4t&h;r$0v3eO&-8X@*;{*7sn-=FU&_ZU{CvDHv6`)4`7xXKHSbF| z_`YxenJ!+U#wmS`dl)|iNVZ)auy2rIokdcvMYIFAxzh>S4Zze>8h;y{@#}*NH5%0{ z*TUiF1pPFbulm`K9CSHfsn-f)8YM2Bns+=a=(i{9`hM25+hd@)R2-VMqrh8Nju1jd zl43jmW;u=^h6w_p*fk=F{Fn^1&d-s*K|`phDA{$e^5%=Fh`9n}X?^AtGczqR?eenq z4i@urKVlVXUF`G%zW0>>Sh$JIgnZTpPCZ@2uvBw=knqq*A`%boB(BurF8|y=oP~FC zwHuR}JQz3vNtU?v7+2XVa-HWtl+E`2_2|!)88sXD^;a56^V0^ z$s7k`^l6fN83h3D0!-d>B02*2J7qsVV$jc3$JBKXIpj}hpiNUCH)Q0Av9n7w=N$;~ zzSOt0U=h-<79&SNa_(m@pWj&-o|yPC@wa#PB?F@DM?(BMli{^^8Z;mCZ%Ok4@@%Jg z^8w6BDOlLsV?y-W*vGB6%I`p=HYU9r3DV!&L=&<|J?F!aWf^|Yv}l`Kt>~YvCCPU- z4k=`FAKg7C(szX8l$62w?uwuGp>q|=q+9W{3VXfDx%- zodx2jD`F6VY0EdK4?D4z1+vqWTh-Qs%XC`GC2w%Sv&b+ZW=q~&C-Fsbe^4l9fKBX5 zg<`)}y;RwrfbW^3Lffp?nz(;GoiopSB*GGV=4BNR1K%u2XeEf$ezelTWDXzH)t;iP zW&4ti{bwOuD091HQ6{>LYxh8ouZ9&VUnxWn@cLTXOTCK5;vVOdtPGz!nQNt%Yxj5( zRG^(dnZqQeKiMA+B2j3YoyMGf-Wd#^hFSESh)`p~M_Ue-%%h94;Ue6Qqy~XX-d@P- z|Ed)!BgrUD+G}3VH{gDONjroE8R)+hSCwR*WwshDwQPZYeyhbBq&lGI;N|IrOq`p( zU|Cn!Rl(jfs;L`AS^%$e5C}cfDOAUW+K+6Hn5)jV>=2#AXq!iU07*!=m&4)A2}KYK zBuM1-QSI@|3|n`)561kb2S)aoJiT2ypcV3xhB6BPH6Gf_syS$kaU8Wl?ZYRA|rO<7++tv23ZH?zhYB5t% zayqCWgQtZUw->I)*DjuNH7>VP2gE(Oil&buKS*GT+yLy@ocW9>gLPIpFL&_HjUkiz zVA0?sHbZp|v64U$p#q1Mp3s=EismN2kKGNfpC#`40#T5CNmb9VLSO7B7j1WtuUHw9hc5-xO`byVy zJ((jNE@aW@|Cprl&I&Aa5EmzJBg(OT+mcu!^?sOlL zN$m2o&C9<<$`ZF7Bh*Sj6-&+`?PBb)_Ht!j>xdhPb;4rCB-$14+POg<)#^8l2+uQ% zENi;p#WsE(d} zw9GH+?y=Hm3mg_C(;kNemA~*9FnE1kSvi1ad)U3T`DHszDHE<|t#un1_ zO;aI6Rc}6%u7@3v5H>XipM}7@6{ECQ*7^Oyawv7ZYHIMIst_~F&}ff?)$+36+)5Fgt$@wJ?F7gsn${4D!`vT zRBlp76uT=l%Hn4A)iO%wr^zlSNJNPj{3AZe;()y_$K10a%D@|x1+zNk>O~*Z|?t7USEm*0XdXxV3)B21d2YpFDZW4T1igxH=mKUd5GecYT4Em}6vpJ&WH>S#hyimgeQ)b2ly^eFwlf{kjQnP>Wo z-iUY?l7jnl9ZlGi$S_(6-*O~IpI_GYtk>L~8+wdcJyJ{d!WXR-g;J00r}}s@WutvK zx@!gB7I5kBEN?bu*Q?ze%jo^z>=;2C!d2k;Apz2j<&&zFTLgq@nr`b(^V=o4R;tuXA`@KxPQ`7xnNSUus}!oAVgGi^+qnM)ygF76 ze~#BWWBpgMzWJiDBa78@-dOD6l-k^%w&mum&i4Q$0?1>2c`pX{klF0ueEt)6zW1Q1 zrR!JPx*}rom1~)A^BT#z&%=R1*xfW(o|Blz_UP~0@}_X*`>gI)yUpvvnz-V9M}Jbj zFwstCpQlFDq%lJ5oerZfIvJ$~E170yTD z%Gtp!$J>GJz&w!f!0Zrnaqbt(0rc~{I-@Q?Y zzH43Ubj{9Q039BTjH7k}Bk&|w2i^TV5aO@?h4Yuzbf~sZuk!@WrVCwuv0r3)8vU5! zm&AV`OW~AHAGkj|`t8@%*XxS7xb!qT!!7+MUZs!OBtdY9AoNDYL68xfX=FR?Jf?i#RA;@^i`*VZCCB`IoU~Ie)DEoHMx6J&e z1^b3yU%K$_mtxkc2&waJPaXc%#Jd0{Fv|gSqjKSDY@R>aghaXNQA8 zYYk>Qt=F;in0Yy!*AJIC9pv`Ot*q3jcG^YCG=XrzFW%4m;JFqLsB74(yE{3l@Dxs4 zPi^hn^ArQW29qIFYg~*EO}FF6C|+Q!9hS0Hy9-ZTSe2)JxT0@&gUAVgvO42zUe_=Y z9=oSkUv2>g#hpZ4=AV`o!D_AdSH!3!=I=m)_upRaJ8Zj*p7!59qQO8eHaY~AG|(a_ zaW(D$##7A20i4E(+8Dy9F<=3Y+Nnpg@s0%%e4gBgR0-!T=z-)%^p$O=t!?VYdGB^g z6w3||3#|UIu%eQ3?ng53p%`umXZiD%$GyBFqb$1g;JVqWO<;vnc929ZdhQ2`(>2zx zy=}#0^??Z|jYUM!U<6QsP#*U^Oem1Cxpu?K$oo1pqx{tv;9+Nc2T~d((sspE-)@cZ ztMo*Cvy`~{H*Kk)pWD4r0t#3<<^}~c&y$IHyY|_#kFzl3>f|a+PV}c4Y-r=z8!Vq zYf&DrWy{*Ix%ntA`?}Q-5UgN+l7F(hYVd2+ zhVdc}3<7F-6(j;)epkDC%^|;2hW)Q^95kyfo}Wu7ihrG!AfetMQvF_fCuxkD)zpa@ z4h5Q=L|^ys;N{@RUd03uj2Gzl7PRYE;cwxZ40QCqOUvI~0@DrNfyh|1z*5edSk6zO zqgh$#YTNH1nTFFG^*X9*`RY?XKT` zZL%CV`q;|f^bE4M5LM|HftO#%qlb`mZe^30r~JX;L_lehHo>a?@PUB4c-84_IXcyN#~Iviwm{~{&lujE+$9vG?IqzL`n(yhbKOx|q|f^})z|({ zW9Kk`$;CwN)&>2x`Z`!5L&=KI0w{oc;rVpG>2M!)jn)5J%da+6DPnv99*zQH#FD~t zdNA<5V1;qI(o21yN&$$?>`vwux)`O5mb{HWVBuG4cQLWw*=eHdWq2kTnMu}Kd5AIf zrQcp(I^LZ_>m@iFa#eEs9-~&{buDub@w#{bd?{Xr2&?cxoePURr$R2jMk^L;t#y=* zd`3vUjbmOvn>=sFPVaiaAn#XOsxuKCF8zQ^4@{_(MoYf&Z)L;Y7}xa?KB5&DlLn z50BdI2A?;_hc)vpU%MqM;R0VklD4^sxjzF!U_X!r1+ue?K7(*s561EI^^L3{qXv@g zoBs118UDf!Z>3y?Xinisk$qycVLND?C2FLGUj$bh)CN!G^2`$YW-h(R>Br57%mG(w z*Osyj;)n()`w)4aFKs%stdUnS{+>BEA4{v41u{+2m|nDMBzuN7$LKB9(_dR_mvesR zxtQv$)kPr;>MWi;R3~P^V*pDm*Po3K6jzTf!-XQ_<8kJ1TYeo`d{fBeR@PE?vKnUw zyr%;yJPJN59f#L%V6RXG`C_e=$*|!0VXS+P zV9A>8G@G@l&vFgdNa5-6y_@Hn_o2}GV6SWJdb(A8@Y86adI^bOlk?5c0{}`cJze$J z{JJH?-@LbD)K}49A_zX;CS|}SOY||fMaKi86ZJrM+v8EId&Qgk@tF>n(baSuuwq_o zdMAgeIh^Dss-z?pNwLxup1oADaPx)Qp6<+JG zDA51bqXY@MCoI9U4+JJTQ;J0Z7w7JM8S~Mb`3exm~OpZ<3x- zo~x}6(MS#H`)fH@0cLdVwft1k2?Dv<@xw|2q*E}U{kqgcYSd@*->laW{vJvFThUn@ z5PFdxM;Lx@E0zm3Pa^TH4qigJ(+A3N7)*Nn-lroUVwKSN$&R-aJ6N{I!M!taBEYz#z?#+_0kTuIguGrW74b6k;5F z0k5v`fv+Y_&0N=y06GIq4Oq+_&q|b~9lm_8bLCAiFh5&*c6?(6rI#qmAE)H%8I1V?J^(H;gHS=c{yBWio>g_ z{=BkfAOrp~WJAbMX+CGtf|;}<>iQSp;DKx!@kd<84^g3t3PAdtC?b?%GSwYT4QFEj z>0|A|bV4>mn&sK5s-;|ICB4j5*28;HHYeZM3_DUtCs4upp$s6`tv(G6=B&FL#JWcJ zW0!C*-@j*B#^*ghL(*E$175y-HGBoeTgEd5)z!2%0mNxF%7s}p;;|UMGf>QGu0Sl7 z$7nx26(o1d{{f$$o11~b;e6wp zzrSKKzZlweU%*?sNF^nZoqD*)TZ_&WQ&rAUFCb%+LkwrsmSxx)~h*2YFw$2H59+TOA25 z%S(t1N`QbRYThE9(OFG?mpE<=GVDMb29 z{81dKqZ?jBt!Nc-l^t7sLj+hwqXjR7GK3w`=w|n(90=V@!)z_M67U-f$El8(g>Iap zmU?QB)n@|KzgZj+500CCQ-E{vzuOh^Cv9^+BKR&$#AP_NlOzKR4Dk z*16YJ)i+kTbJSL|*Vh%MC1+2*oEfM>6sWfyAC9%%zIfVx@nkIf-O%>CAvbEg!nXbh z4;C18aCN@}NRcj3kx2GQ(d2U4z8l;L+tXno0CW_GJ3GAg`rW1YoULO&Rrhvru(5t& z;Ur!@bZw9PTf5Y8;T~{0&V2MLeAd8X2Y$j4IygxLL?)t{HNNMf4lHgyuRxUqB z0}Bl=SH0xYsrKbvpf_Kl+dzm72z0SXU}>pWU|8bp{I~RD>%;{(?B+9-RY>r`L>+Xx z&M&KDB7j9~VbPHrW0Xac5w|7;+w;3~2j_JJ#H(|1uy=G7(?xk|vtGQg`RrOPL!f&6 z??uxa@zc|OtQdp(;s$xQ+bIt}fEA4PG{`#U7+SEQzjKqhoCi#FhKd0ii0Y3V%v`Nx zLPfx8D$f30CqA%+;JFf*=-ok1gVnt-IHiI8e|rID23EQTMphQOei#~AnV5-~vXmfw z3hB&dOUB~GoDM=Y%AU453JLVe5&noVhxi^NR(N3NlBb^E4II#2QdW*JJ8M~=3UG4& zbpZN~$HweVGuJZp1xZNOm?};+i5LQqAUq?Z@)F=5c%SKVs|zZk4V09Oq)HJHWitgC z&8tg8M5_&RZmu-QFdTLZWB7gmki{+R~3Q$~6$P092o2V6Gb^F(nI-u>71a2dw$->`yPfRwu)$ z8LbTDvxArT&nb7gTS0Yyktvnp@Q}>VaAwWWu$5KmVG|Kl65~cqR{OJ+I9tfjH|2dK{@Czt z%mEJGXyHG9&#`!kBdIseftlI}8C#+@;VI-shc%t<06{tHxb-gx1O1MbgARyBzT2sT~M^Q9* zZORfGs{bL7%+K$83VsQMSnA0Hn)ADv(L$nDnflNdq90n3^7*}LUx1FUdL84)?Bfrs zOXaM!YSJOVT`sgE_ku*nzb%*#6@}g&jqe zmX#9_HP}S=Ht>bqj|}F$J^NOX32~9Jm>i9_eo{=E4I$reM-oAkrMH%)KN1NFyY>ol8p;;skShR8M$@A-280krdN@MnlX4b?f{uv%PrGDLpo& z#G}leZ z4&p!FM(Xvv>)Hc`P2aBOJH_DcXtpoE8uz`OCHaDD^VTr{F}SX&p{|)wt%(pKPPP#t4xOQ3%3=Xfd?gNtW(z8mPxeupu6reC{!EWg&?ucfOzrs5 znLQeH0Qgf1SZomxSX4Cc>kUS;L|MWR7IbWWZi@n)3RaRjc9OatB*TPzc;y$5M}UTS z@mVrDIgXhGE~`0FzSk#woBYI+v{Sj z5kQ9A?ED>SzDNN`@(fXexTDp<-j=TBVq8N632~yuSug%tB3zw#lk;q947Xt9w z@>f8*J1<-uI#w#6w+xW~B`;TZe=_uvvst-mEfIC>ZrsyE`oz(*x;{KO-@UfHx;8sG zv=SU4T7Pv>qyLe)%w!K+jen4Nn283+R~b9MXVus;uIQ^=42F4XmM6mI^uAYJ;H3rx$UwG)kKXv(!q2tn0!9S#`6>Zykg&2w1jS_4HV!SgxHQ~sXUc)W-~CzB)h72^HC?t2!ey zwv(X5ON2z@9dpqv)T%`UM*~z8!0&)n`-$_{*AeE5wygW@CCJRtopL-oLL57S--4r! zuIm0@o;(WCC)0~m!S|o0Cdz8+Yq?lihexDNwj%0u2RN^g*q<48+P`61I;!Pd4LpFu zo~Nkc1C16u@lkGg8Q&~JeHX+b`u$9Dms!<)6Z-L<<5TuchD1+81!d1&^^)UWLDd>L9>U5+OeLLfoA?Khy71gC)R&_c=J1A#OSJf}w0QA~1& z;;Ir2z<8!1S$4M@l`3c#US`b2Yus|ummx1N%jK%%P|uXF zb+SvhWBfg!F?=MiCl>shzh2d3mj_5Tt4kgJP|?f7A$aW3Z)Wj2?uo7xGv1^6#m~=f zGn>VYae|#y(a+!J?>)S0pJ`GMhDz+YttofCe{qua4mcrTL6ODNH=GGwJqaaYBVZ$h z$l_vB};SrZIc@%I#3%>hEGc-I;p$;--R4! zv#8pdhUOQtlkG*#Okv=i(IWdB3-?CjB{M);89EnU8mG0UJ|sM%7Xa%ir66=?*}F z(2~KueRMRR=0^F#%YG=~G4%c}xi8H=mcDvF<@$xTuc8wkVRX>nW|zcjL8OKEifOtt zOqd-CqzfSu`=s(QH2V0P)Psg!WhE_s)qTH)cTMKc%)~Z}wV4zZiCC#^dal23&wEi} zMeg=+@Bcf986jZS+EoXI`F_9Xhm~D+jPvuuNs*ty-qGfS&c#pZ;LoIT^z!#tt!h^j zG&4EI)tm8xvT~zGpge}q^xE9cEk3vb-WmJ(GC zhekhA1Q4dH`~faMdR(XEQOtub6BR&t7}Q9%I8$rbxOe#5JJGKjS*TyX84X{c;o(%= z_UA=uR?qQu%B6G}wFBiC$ej% z;`|kLo3Nh9_>IK>-?z`AG{=(DtZFaL9~vHIx|ph@$5j;1ds2VhIWZ%}tvvxY-os6u0cTW0 zjisVP)NGgqY3Wi8Ap2Ay^1EMyg*(@9$lY~U4=K|GudtoO`$LFmOccRt>^Cd6Gj+=T z==)0=g5?7+vKJ6E^8>vQ6$bun?2X(G_dQJ?RJ@!HP+&ytNpQ+|si?{t^8(iN|C)PW zi7KH+LgJs-_LdW5Zh(9HcC0N=x#7i^iwjVm5NeE~UOJ{cO^){)pThUXb-4L{@6Gn+ zt7!k%(|iXHkMwXiKnfx5m8A{V{g_uWg_kI0D;Ea^^2%svFANsUu@u)<%IvPQ*M=Qo zlrhw7-5fwt@XM{%2`4A79BeT^73ev42C9eMk`gL3Gj0@&+l~$t4$`N3DJ#Ei@h~(6VWL!^bbiBNFj6eE~KoI{uz&R@XtL1QL3vYBp zgqD5(CA1TH+8-9KX9iC@Oh98>v`l^Kw=RKB@D2~kCOZM@5keezRTR+pc@{6qsr~nq ziSbVZ_Pg4k0986qhqqhB~aF&S+( z#>+*x_F`x=1~zLg##eL15Mp2+Kq+R3-iYyjpIQtDVtsYFhEkN*707RwxxnVLt6|P0 zRL8=;)aLfpUUH`Brkv+d>1~G;Es9JkD`T}B%}EMO)!NJe;CFFtRW%s2V6zhNgUId70N418^3ILhmjD31r=8yj7MJ|Do8&txhVj`WS0r!d?i>K~=EbEog;rf*DB-0?$f5y>%O~>hc2>oT zZby9yQ19Rf@zd%EB_1P4r6h1p^VX00B)z`?;@1Y6!E z0tEqWic!=0rGL9BZmnLU^Jl0RqXa8H)XD_#=bCI8W;-K;vK($Ge>TE_0)M&(VitS= znRfZ@*vZk?yk*kp3VJzO#WuXQbMNk&L;e1}+4ARalU>a!qTOAjf@AuRoz!?px<^p| zbLOu2Jc@6Ep2RWTnG3BA!?V5Ozs15w@1dS#TDcmcpSB^=TM{T6A9{q2xz}`9uYG}N zt_AG>&B06CARQ`q{^-{Y|HoQGOv{j;%U0srx_T=r^hXHsj6PjZAWPbqhqe~LHkXk<-Yl3Qj(5(9OrBgHqXTs!WWwXD^ZiaC z>anwjm++DjPkYIK005}{pV=IP*3~dcu4s2 z9>n{?Rhr4VK9V5TBf|$CuU?XqguR?~t&Xh30R|rPuTp9YAnwCM?pd`2ARx7tVO1=e zMZ+@#fh_d^f@bUbJD|qe^re7RovAyg#Kc|i>yHSXs@zQK3Qwy;bOg`_&ZmE)FlP>+ zKjmrFx3|$i4#u`0P!fpN_(gC(=DvEbt4DzoDfoK6iaorBkIr*=`!Z9!f7?F=q_h56 zu^Uyv-n!xdo0)QlHqVi%@3r>9E~?ON#@o?ra{q&xPlU1xGuHMVt^u#R=|c@OoGs(w zV8HUmH|y8QR!kS(7yB?HFTO-Ugt2X)GF)juMgSg@Qmn3Nu0G3NY zT?RbefLvLc-_=*L>IG5I)Y@P(((f*VZm6pmn)w_YpB6wy!#)oPuGqQ}&8}n`Ss{X& zT(@MdlRwzPWvkJ$DZcLW8`&8{)vjUOZHyJsug@2MmW=NIgGKP4ffo}J3wXnUs%&00 zVZqNef|7zS$E~un77SP2YLRPcc*mCA;xh$&M89AwAL%{$Q<9w2fqo|_TBbx*r>d%TL#xOUTPeyCc6LPW%NsrO@=GIcx5zwK~GfJYjXI&%(b-4R8BmF&R)((9IbREuq+U_#&_~lw>-QZ$$G&PhWVdM3N(6JG-!GQlfg>-d79jA5Oc@aCK-7vzH zvFw$EHq=Gs=D{(+(kf zIdf<~`akHF#e5HNp(cez`!~M1a-tN?KgE0+BI<&>Kc>~`lIiKm**6Gl{~0RK;>DM7 zeg|p_83gh~bSatxL+s9|??Dbum@e92@{)F63b%!D8X}bSzEyUG7x8R-@2I1CJ($XV zeF9AUPf5c}1~EZe9RInNpW!NHvsS!QDs)&5GLd|jo41bIf*>-VYz;zR1xiFfBdqOg zB8Mi+aCPZ+bd=!7myN;Nr~HDXo|LdRZS0C^nYqyipr)~3yLqGoAL_Y%kK!j1^>~mH zm$r=R!!tYIlw;#@vK55*HdY;p=YMi2B7Hz*dQmd7RVG@JoM+(2Jk@Yx0aQXi3lhvA z{Cjn6lcF);L=MSh0YHOsAcP2dy6e2Qt|HE8$xFQD0ceD~Bns8*?g#*yk_{evdOip1 z`~*5N-L+<5!n~}z~Y25NH4V{sA`Xtr z4!t!i9&3&AHn2`BkCw_n5Ae#=|9GT2V*if2p72m%P0&x1h>4wIc5<-bWli7<`S#CD z+mDQ!H8yZ{no|rFbamIZscDQr`xjyT!Z~{frEJmHlqOi*bpeG&C-MnkE*)?gh*>!R zf9TyA4b~-kY~FH{Yu_L#aH(#Cid@bxU14JS^%^|v%p?w9g`yQQAE%~b{|o0t>_0S% zU!L!8mbSG8ux>r5VOM**al?iNE2MofV=-_;fRzM+Xm&2+e)acCM*uvjD~r8rLK9>C zF;+H9ZPW&2u%Kjo_9gf~EceTcUPfUH2>hdO#IiAEz%EB8*-Px11- z$9*G{QdE2y7#-7Yb7)a76L3Fh$nsZ0T_^tEOQN!bmage;oE$5V;O>CHnHm>x(1w0p z2V3Txm3NUOTet!^U{4XVV9$m?#Uj9qyYSk|I~tx$=k~C_#iq!?b&&Cq`Xg#^VG%Hv zCP9Pnt{ZTK;Nn<#*yMjpeJ;TantGH;h#si2ot0r>g9AyG{R-{Ie`>US^|~8lFKP9s zUqA+w26?!B?$*Zpme8Ok5@_q0TU%s)+dbXN!M?8wP-1|}o*#O-mj8!sw17C#%xj%) zg%NiK;~fPQh)v(MO#WZ4RJhVUeQDHu2O5+-&KbL#V3OPfV>v71C!P3I+zWITDDWeM za9+W`2dzMyeQ#I3*sgG0^{A`deV_ZzT)uLjs@vjlTbpnO7Zyyy?UQb4veNAy_CJ)U za?PvPcSCrQ?z5Y;*P3@Ltv@YLrx-@ulh3*=Fu8=d!D7 zukJX@65*eO?#z3ywnVWOdq-zdbA^UzDY}ail+JA>l4tasZ(4$uv$Cbm9U!A1vFe@Q z>g5O|gdpJ>D|poZp8>pg&`P_SzkczQ3Z87Ctk*?|mx4e_Qo&5=Pi8^DD4pFdDO!3$ zO5vnSv7gwu5_~hvzvx|A;{%9{kSjqMO9LBVPpPr&PV(uhAp$a#)opHijxE*BphlW6 zz~yTR`_DlU@W6eGm`Oh#8A4E>DNbVgSuxnAlZLq`bTmAFr^{Ste|L+TIFiQxwz^eR z`G?^@xRKqMu1eGNxO_X3rU5saOjz&o#TdsnKr{~$CMmCTN4(l~xzwKF{>HDF8mF5W ztDT;%dA=_)S8ly{XV>WH2vJ7_DGlxbml0~A#dULJ=y-(l5%rM?1N5`nd+Wl;vY*s2 zf=7gW?76n4*JxK(2&mn4Ni^J7g>@-I!@)9YvE6MCzFS}XY3dp?oezxOVIbz#ozA7C zCNZ7ci4hyXfLH>bq=ew2fgA?|8H+em5>P4k;J*V9rPA=xXF8r(I|LArr2jF<#fBZD^!@g7%Tr905r#8C}M^0Kz6H5R(5s| zQ(DtrzI}sPHqd#a0&tMAFl&*rS-;lPD++&N&70oGS?i9I>L;LM7yval2=&T2YGtzs z1rm8vrL%O+x{wbP5VRDm3xx{>CP@S2agUVEMeHavzsN&9!cC zssn(Ih65+4bHmZ(BW#dZX1T2&IShEtx?T=(*a_Kn`JiXk&$d8A!tTrl-)AdL@;PL3 zn8dfi;i3m>%}wr?#Nd`gt@CB&YPce2=G#VddH(t$-t&n!s$fc8O5IzKbf=p(`qRj| zKO=Z=(^61~htr37gWIe-uKDX$7i7g23{T@Kt#4-pApqy_Zcc&%3f7SqYPQz`i|coE z)-nV}rhi0ZUwD+1D2`=D5Z`aj^%gRhM-1;o+>3rl5&t$pW6M9k`~iryxt#B=KVe9x z9MJkw#wPv;ji&)wD3qxU z74U*3@>EL_WHQvt;s)yo>Ltp(78#K&Swh3%yt02vgKcbBHEndrOFm2QDeefg?QwE{ zw0NduOIUl}`nz7HZZXTODHWBi1RuEY1nYr>Z??1Pd16=dSG+6lS6c(=+i+fo)4ERM zmHz0OZO6&#+@o3t_EnZp@Biln*2hxvv89!|oAvw(drzb5Qqp8Rpp9S1Y}B5ePKZaP z&1|R9TKo3HLv{H{B}u_HP+9#6;=(GerJ7pv`R7OR3Bb3P7eMMeL!h$!rdvRQ>DxOH zyc{rW9i<@;^kxu($SRl`5Hl?9wTfoLOMme9`+wu!7Lcb-TiO_iYRR4XNv;9~s$WE% z&}@saW{K$^m6Fx3cDg}4E1tKk9kX%AW2>*WSUl?6so5J(9jGYhaX)bTHW857O#2_8 zvqy*MQ(+#|5r9Ptze>4k*UNmIv6>|ak<0tJ&tX+B_xmetomGK^e&uZO=S#10<(x^H zS>@P#dxm1>`9?tXo#k4Gh&veEdi|NP&K}N(Y-6t?r_3U zvpL|`xc>Hfa-H{^4N5d0HYD`7HpJuyYJIijia{0$|ILPi%-8pdfg1xA`k7ZaV~U@?VXY7hGCmayN}+TmzGAUjX8w8(co zBL80$eK=f47ouK1QThwW;^)O3&B&B1SEv!9U~4CcGGcQIaa_-rB!nI}R(~l|wosEv zP%Tz#R1-r4_iha!aiGNXp-*T+6G;Av-?!k0lFd<(JArvrjz+>4u;qmf>sGPA1J0BE z8Te$WNdyJ%Haz!$PO-v+6a3#S)Ak2++m-4qxszk+^4At_T2|U!RZBCgfndvu9C`Y) zA0*WLyuMMEcC0(YHyoI?xcX3${beR>0U#I=a+)4mhivm67WV$Rr!R!;mgqU{cbGK_ z`aVqn9|>oWC@dIX$YSI^2_o01lUu1f^%n-q@ASuxvj&6zB5h~vB;3cm2%SO$FnY9(4YLtAU?mj<#+#5jKIA6>)u%qT>?g!^$~qVW)7O;2M%MH5LnQ_ zVQEyxJ3@mvhap!2>=&&;J1BbGkj}~91g~1#NhV%VdP9SXlx!o#i3-A%d)tCeq_r^r z@^!N!Vxh`3Gkd47z+C)o?`kwUd&%x?<;x<-LtB^I`w@>W;dVV`fs^y^|4^SIE7BnW zhF-aLiQ1qm;LFHokLu`}VfJsVn(;u{aS`7YiqwI736`LpE>R10(a2M`QbT~K=OxNs zdu3>Ug7t#Ps8`Ng%^*lGH}+xBz!L;fe1!tc6d3gGinE~MfR!bq0Is04oVOtJ+9 zFPH-2!ngAstTa`Lt}6xW=$9?(3|Kemb)PTBctw{|LUQQffq9Y{010BNQfIyFCi z1%ri7P4eBXgHNGZ1#MO}UsW1tOX;BDMe7|nh!BRI_vb2TkWfHmTk`|&ZH)K+v<*Lv z@^=IHV+gwWr|~9cj(QoutaQ_xM5yo4I@MH*;r0+tf*(ER7k2>=0P*pbT3Lhc+o!#m zr9VNY;^d_EAtkCJ$42vE5VG6LHI=OQ*id|K?^VSQ0?8m^qIA+yXDMsmt?Q)kVq-p1 znL;10I~|N^2_hEV!4(Sw5HbwKAljA$fF zH=dwBdo}SU;Yg3~^fm4og9CH2*UucGg#Vntzkg>!gLlpi`g7(O66gmH>ucvNIV_k& zEH!o35TE00cewn$6CEUyQ`-y^B4g}GtIC@&SU8oUN)Xg%GM!A+poBj59V%cD8yb{B zPYI8ZK>@H5x^Tv1PaZHZh4f{!@~Fbb%a~6kr=Q=YmtpFV;W_WU;CD-$y}92A-+^<{=o#a;k@{4$G7*ZWVNBeszPq|f^v37 zbB(ofSyM#{4a?EU-&f6V4txbA>}|swMDdf-^mM(W->hCPnd4!keL(4aA(cux&;C$q ztX1)K^PRI@Mr=Ia{n43*6Zf7!UKE-r{EaBJgbLJ#N#+M?Noy#w?Yod#^*E#l-P?0Z zs3dT3e9`-75L#vy5(o{!Eq&L0xvM;5z!ECZ&wksJ$3o|@Rhc@9TPmYCi?J4@*U%QF`2LTrP^lIc1`HHvP{HT}s+EdZj+o}Qo zyd~)Etek%P?af~CWo8TE{ktL`ua8je9GfYF!2AU}(6|ReQzgi7HL@pxRdl)Ju=DU9 zc2GbB0lypi8_Jx|s!2?(Vj)Kt^d2M!hz`S3H-d!CuRb6oh!#w05`h3u^~-tu^-B^u zLdcT;O8)ECSZ(h8)C#}xNYXGTPU5WK?U4C8bLu>?-gQ8bB>lSXGkb_=+eMea-cmm7 zX63sX#+un?J~x{P7eLaUB<*WrDlnyDOb>F%_g6e=Xq=UqzUr!6#VPMML(9;%WcXrR zJXFNWliSp8LQ`DE|I2r)7F6Z@lvur0$x}ebLm$Rp*AJtkamQnNd4ycE6hNzyBO*oKPG-2eD@((;p96Av!hluFm0m z@iYq1JV$VKR-e6z-&+Jjme2O;Cu_>0=u4=t|8!U6^6BQ6H6O-&mBS+f5Md;V=Dh=j z_43LayHV-3POPZ(9ARlL2UE#U$XM5@2jPJ&=^e zGX8`DE>WL=>G!&Mvuhs4z-Sp``5hu@4i&QZARX`Wb<2dpZKCySwUwWiplsUZZj7Oj z(mDeTrlQFMv9OGG(s$CK(dBw^+&+b5j|?j9tup;lr_AlzBIde~UQsW?j%7P58unT2 zv_shuWK%a=F^{2-Dr7tKnC~YCFR%IiRM~{+A}CaZx>g0PeSGtFgT^&h zIqpvC*V{N9fALPC>!G!F3tYW&MPq4D^-I28FGeEq7XEmH@#ihp>7k~SDY*Qb8#wT3 zN+hfQ%&{ui3FLsU(;U}ONA0v8hVC6 z#oGuq)u2}HLX=d0_&@Vn3nU8Ra29;@8qHAjQBq&L@2hp6vY3(TcXfNZqPO$D zUM*Dj1+1{NQeQq?O@cRf7zFt0)?(+&x$=k4HLM;supsytDLydc5EKQUV2$wu;Tjr1t1DlU9(TncnagOC5j-q%~guj<++Ec<<6KFE}&&IO9| zR&@@l?}GgQq3J85qI$o!M?|DSr6iRQ=?3YN?(S}B>26TEyStGZnjr+Fo1weAhvq%} z{_nHad|=I5z&ZQgeO-IsF5}BH?t_O1h8yb;ooj+PH+LqyDX$0FvdZ)5LQe?TGpnGQ z5cD1CG5#^wY?)CmHGMeoy9k#+;7gp;g%^B)&9x|x*QhN&U1!L7FS%tq_VkTX^uQ_! z+3-;5Zmgy)PZ&_({e=;(HLm+n6stc?2UgRfbVlqa+}Zh*mrp(l^cBxvcC0>WDPF*wbJAn zB=l~&XvKHZol5Un!f{4j!qC)Z(SN)ca@E_fO>a9ldN7i%7}-oH5ga}(rWI*p!LV#$ zL;W@utM^Lbnk0tJqdj+2A3=_A4+JRMXGhLkXgZafh6M&s?dj_Hz|#ha`*93`p68+I zmjL3uMqp)+6`;r4=CJRR)j|Lj(fjrwk#n3&oGcb=EFrP>PvM=`hxK}V zb5!<-o-6e$K}eE=WHpnAht5?0s~=JuO!xuAYG2@dn@V_gFT`V+qkyYSx_+gAva5LV z4><^d*{BsR=ZE}B_DPl*9E(AioNIwr?{bE09}$Nf?B0`x;~4Wd#nSj2WE5AOBZ?Ny zC>v|u=4m6A(*z_Y&JQeRqj6@a=xSbKK)#6C%=)@^0{ncvjAHBkcyPD$tkbx@Q{VD@ zKSabKLm-m#-70K5H5kl+^VoU_JIcZQSf%KBb0@qZs!fbN?v5dyui&EaH8(fcC=}&_ zELq&c3L#M*0SIygK#(hqj5?eTu9I*H(o0Jl5IOVeo@|Y%7jeX4z&d@yBdejQ3tSkg zjJvt?7~E~Z@Q>ehhZiGrrl;D8L?W&>?=C8^5(g1}d)dcB%X09JANDn2dIpgBLbiP8IO?wk*c++R)dzd(_#EY3BPJ(XlW~B zc7k}=H~M3jtOYRBl84gukcuyOV z6@z=&F~IcB>ka3x_X5s!FlLx6>mirh-{-2Q2zIh`b&yJjge0*v{xm&gJTJc{ztqg|*w5$6PrSxj-;rrrz*bM%&BEzO@`qXOYKVv5sk(C2~6 z|COs%@CS;PhzeT2a7nY^sD=6~(5G)ru!MqoYMaxkQ%fb89BLT8uu3~EZ`7x+^P#V; zV*E)mS}(dqUNcWK&pqGkI9PQTX}ei1X7}q5-*&;4wXeI?^t|t-Y?hvGdnB})N?1%-{;lkdUqC; z;dnMvm)TCB#f6Nv+Ni6p{GG&k?;PA|eD9#vX-fcmY&s|&JbD9qmE~{|&J?xe!dp0& z5%`;RUvxjc)n(!&M*4jMzL}*>1d8lqJU6{Jcy5efyUPO`5x^5i7 z_?m47!Yi$B_ksJY=cSz4h_#`fH&OD8m~ot@yNehbA<_j*od2hXWLy#MeTPUcLz(jO z+E+^h6$D^n+LB_1lH%vlt}R6-pUu^$yb#oX$4T*XlnS3)8cW-Bvmm+6O@MOx`G@Mf z9T+G}6OV-l`F}zvVc8zaWb~L9M<;Oc+k;CM&$EfI7@lhDh0^{{K~pAGV@Z+Z{n`!CPg~)s>B=3sEv}q4!JZCXh8Z z7sxw)SLzI!a7XPIPXZ91n&$R^56Oesab`flK?Ct(d(oeQr9aoB0hZ4^czlBN*oBm3 zx!CVj;+3gzf5U52Cs4227b}M@ts%n;JBJKfIn~t>%sXxO;^W zF8m|o+L|M8?Wj6ys17CIcSv?ED`riFJcazLXw@k52c6> z!tKMiM42NE5{61+Vp;49C<&*GnkZdSOG!f-w+UrpRD ze0$R5)b;m3*Y);_-s<|t2J9O?tg7VcKupQ&HzPZ*!*y$*0ZaD>%oha?bSFT_U^h@6 z2~+^gZK`y^C;!3Dz{E{O$wVe@*?gLy0(TiJK~h3S@k%Oc^f-%$r^-jxl=>LhVR+gX z+N^fn(YoG+I88t%Q8nzCJDZ%tW-}HaDQA`Hp5QKYQ(sU(%>(RlD4Zvi2%VQtUk*QlB5cxmkp_flk{5e1Xal_ly8mL?q=(iwJUxV;CCT*sL#Qlts=Pn!hDK@&lA zdc5UyDo!5W6?0(PRi~aUoivAqL50_%f>1ivmzTiYS3RQ^X_d4;7^+@tpgRiQRt2_+ z%9^8R9QJ4 z?~wT5#Z-FHTYgvB5Dk1kqT{q!0? z=s~;G7}WRZXz>1TuaCUXra7K%QpwAn9=I$nWoZ4%%W}~G4kNE)gX(0v{U9Ho-k8d; zE(M&fT6g<2+k!Xi3^t0IOL9J{!l~Gzz2? z6U)T>@HRAYMW2U%zA19sB%JyU3%!w$!o02P*o>K({g^19<)CqT*L!|$u=TCeRaWEN zw1~ZyBk*)QPdgmm4P^8unpYJJYncCE+%|yW9w#L5Mgx;Q*xO>CV!->ae5v9&>mooM zF&T&*g(a^+?aW9Z!eAW80(~ezt}&ANj0rzxE|?`2!}o7Od96MT>oK@O#WV9p}w*06+jvEk+dQ!?>Nr6D|Bv_Kw)-J;<8tW{{3;g)adWAez;b%f@ayAfD(`{ z{r zUy8*epm-Juy5(J|>NC|p|BHpcWMRH0p8Iv`!*j#J!U4QO|Jod6W?M3n^-C*BY;~c0 zVyaOweRR<_oFJf811tz>!`n3zxkWpW#c``G5~-&1S-h(odZdZ1pUW=L2&$4j+t#)} zQuwX@Z@e<+b@|Jp4Y zj-IvQqIq!rFmHAq03S3@A=u9N%v7OzajQmyhf1i#TjUFM@|;Yv%)-|^?S`0GG%4X8 z;@v+m59PjOpMmoEtG`(Hoi+Bg%X$`P<&%=*C*mI6%Y*Gytdpt}$bKJxvw=?ap{3$` zTU%6y6Eot2v0KuFC!)xv8uCtf1K{$Ow_UmOWM$ia&WGjL@iTi#+~ z^Dy|a%mNimPUUctNdz5j{wS-f-FDQMKh7~e_b?Korm1*y2hmH09n$3WO7D7Fs%6?C z>j1TuFEoMq8vF$1AHks_CBpj8g9(9vCn4@Iu3^5rWS|~;<|aFOM_eXIxPlAPHboP2 zH~cvNIuJJQHj0S45oVM-?3m#}_r+5tBaqeV%yvo|+m7L_3@SFZix>Vs#VF z!U#ySj4(mFQ6!Q?K7GK9NQ$)Ta(2#|Wf|DJYL`VB3tDth-3F*iSx?Q6VO8pS%Nb3* zk8pf0)7w>pGhV1U^7HvE_oJ>r>=xnr`rqjU%7*mx%FF#5>8GQkLPZGRoh#`xHAdQ^ zuf-9sF*2x-QIgw1PJyEWsi)F3hPvX%y#{UHDJp1_C~YvgX=VyTH(Beb@6Z=o%=)rF zcWcnHgBpkD!MWCZamUA=`ZV4TrhuaOT+THN6z^VSc{w4zd6@Qj{BzuIU{Zz)%XnBV zmqY$(H z*R!cqwX>eY^zB4_a-bVO8$AVz@gJT~FnC^V`EsxF3)cSH%4QxT6h;NYr{#m$C zUPzP{Tm9Obi5%aR!V=sdnuzHnyRGV(#EqIdKcE`?mc7eub#i~!a=-nJwvy!+#Ey~FX!fQ@Q*Ud5a)jyOON}F zG{RlnSytDebB*|5#Ay08(13PItGBXOzWMYKnd^$qe-{h%r+zvRuHCNR#=$6soM}>B zE1AnXav`_gk^tK)_|WS)FQ;2<+?*9ue0Ol4d}z-j;%O#CO+%;ou*O~0daat({>bg& zk;D?Ur2cThUC-?kTUbo_=uw|LIwmgmKcyY(>3nA~B@Foez5&SxKD|-Lo$8NNtOyxo zb}0+o)DfJQbUD5ZJfzmv6}j>j{>fM%#_6QPY55JB2B0^d2}BG{SE;Pd>aeduc7&L2ys0M}zD`B$JwrPN$D2+7~NM$s%Mg z&yh3uE)sAkxg-4-x2*{Yeay8#-Lts?Kl)zW@6+O!2!R9~K6BfuHz03iQow$qF7o22 zSc69`?03^jSaC1|$vIngcN!@A=Mq#@aB8Vq1)5F!`t)G0ivyZ^Gwe~G=3zwHx zQi?BBrSTyGZ8WkT43%|tnoizf4EtX)pausx)X{#`9UP+Jla%&WcCt8zYwijlXPb-> zx7>fD&=11AbW6W8RnXRZQ3%PnT4|@A39R~@W)SH6Zw)c@BMgS<%B5tGQK>F4dq{5w%B}?NeMw%!M z5^>XXVhxBY78KYC^hpkXi|vWia_Ud3a-KC^`wgrf9X8|!+jZ`SN0CL8)fQ*AI<04L z9!`G%$AKhVw6k;piIiy_=LZlyKH$P;PkNeY!)jlhv^%`5|<^J$K zcKyTqK@Lw*qdyzL(rtBkR;q&z7sO3_iJX(Bi(^3zGigEoe*1JQI91vmSOdL~8zsk? zS#hx`8h9__qMRNRD~FE@K%Sd5xn7^7!xtwteTKb57BnU+@D}tCn4wJbw zdPINW*e+@$CL(DUM=+360tARD2jGbd6x|dIyfMfpbklxQMK=#=QU_o^HLo&*gW$X? zNr^$_!+mc`S^b6B*b-xm|DAw=tnNKlX-PY|+oH7xjwid}Jm_3L(f1ZT?Q?VG5vx^Vhcv1PNebafQ4E ztud6uv{D7i+rGba^Y%))mZ!1?-)5}muf`VZ|z{1?4q{nj`7c@s(3 zg>m&Y2r?)dECl$@T?Y@VUiq;T7fqmfx?+ui;3-%|x#|=Ix3k#K{6G`di9I&UgC8el zX8)0pFJc%#qkz1>b9u#+5NJY+nV7=9w=u<{ zx@F+t=ovz%9JttHX4pX>Jz@+{V&cY{+fw1Y;TJta%d&*RVgS^6m6e9O0NLG*xhHo0 zE1zI%U4nl-wk{QxbGjR|#qa$%ZnlCXvR>I#raN>3#;tU%HC!stb2lllwOXSkoaOmsO`b!bD%_5$xM*;*b>+hcq_tD3(>{o2Bd1 zu7URc>bgnRgFKhlqP)|;8L9&KlPHic%xIdF1K3GIGQQ++M4vw&hG5S5W_4HcW$~-LiK-^C zVoBU$#qPLIm_oafJ*$YI)mRerV1GZ~zBPw=IAXJo4OCYh-6FQt8aEww$l$Sq#v@># zHq{5I5ASON9;3OLYCY@I0X_F?BBu%;M!e$zgYn(mi6eTj zOD9lO-gp)AH2Uq(*EvdF!8J}Xxi%r`oHc^Qa~xI<0984YdH??*5e~U zMiAw_HF+qQF**nmXEwGj9aANoQX`sCA^fRTr;H$#o=hb}knB9n8=FrnC`}y{3gLVw zR4n!miyC;7a|+Pe4lgIxsT&baRrjHTrl)f)^u;mjru82%-V>TSD2X)g=0OekoZ2`t zdW?Q=O8dq4C;homOq3saFP`j46~|!u8;iCb`0_H??FunR7Y>4+OI)BVN|ToxhH}xu z5d%(p<=ctdB8`9D&o<#~ZKV7h14PV{-0DUijq;prbAXl7Y&DTj8`9omJ$}A^mz03R z`!LIL<>8}(j@QrGWIH3`c6&>iXQYh5&t3&E4b=elK@iQ8TCJBx*VtabvBwUwI!r3| zvyxW{*eVKut19<@tymN|1chD-dVS%~-evh7n;y}P1wc9hO~=6Dz>LL;C>l zMEHuI>y~8X%!5!DAPBIz5}5)8R`tu<_LVj?K=&d^&S%5d-0Tckzl6}m)_#}#qSy6K zjOmRcSiBR5s(X(^tGpGzp-x~IISBA<7IXWHS&2Ri6*{g*UvTu+!Mp$D8C!qXtyo-f z(s=^+2dQfT7oxC&fVcep;r?SOGQyCjq!w5#Hr?xVth4TtFS7Izi<-{+G(PMIYSZwz zGkx1I+|;1ew?NjjQ?uoBulU%$qSUvP>Ck7nCdrbNAF=N(N`D10OU{)^dvM+TFpl0|eD2qWr1jK?A(;y-J)+3z}FWO<|5An_Xhoi5qY82fuHYBBr|r%gJ+>^aoD zSf?7AktoU~fN^(z(9|krHsw*!JU1zX@67c&#tgd@f&_JHgSv2p?wwM*H>S#5oA`~RC zn8y>^(xgX$zV{U?07T$s$!jZ*dHt^IvoSvZYoo*+$AH8j`g0e*X#x*9!ocDyMSrwF zf~f^3G4hQkdKs-#_S4O~SX4GmIB$p^@f3VeC=iqBOT}Wz^*k(=qjSj2RvbNGi%P~o zNAcwOMj-@j4-}~Rky#)1?C9fxzN(|S*F}s>Z?hp+96=s2$HN-M`2Jbao}(j>;HxnL z(op*nsFsyM#bdE(ZRMbKMQ>Erm+OM3h1Q3`kvh+#`uZbsu$+;d2w^oKCj*o%!je#m z*o%DXNa>!K?|QG;1gm&D^@}U3A6>1bWV|d@bfi>tEOmridYtb}_ja(6V~Er;U_TKu za0uw+lKi94@ixM@8rl=&)lr&(|YvBK)(Ii4ztoAL5E{>>>FvwA2h*}{ zLx)s4^sr$A)`f+-!bE3bhqQJX%ZZP)PBKTpC(VTrNlys#`%lk!cYz-xzF1ej%2&R| z=mbUV+VDU<3~yZGkmTLm_#)p3>CAtXB|Djmkbz1|E)9$FRFVYooC#?(ldeWoBb{ni z5uNHa2a(>@D(DF@|F^;AcCxkc1BO!WsJ_RMXWh1|NROJDx6Y5l-~AWLm!8k^noG$v zI7Uu59%I71%E!6^mn79WvmJ1-An81oOsI0qmclUT*LbP$mf=v1Ap zF5FV(J9d~Y77Lw|M0Tdw=IbMfYi9r+k7X5_Yx*+xx?#}wz-4B8Vn$ol=C|FgQgQUuuQ*~N>VODox_GzJ)_hnUyL+zv(#xNl-D~(*n zNVZX?EAh>1p?BFM{gZpFsn_7*-P$VLee$ZMp-m~at+%eBH>dB4Dw*6n#6f?+sz}`w zEd){3@XR1gN>ltFC@dF+Sh!xiW_Gl3zmh1*7)o2@5?gJV(z3kPR&=~bV#YP=j#i80 zCfvF#S7tv+423&>+rhf@(2BGwUAfot*rP`dDjaAtol?^4DehalZ~}A_U`U-}oe}8; z%5H(pGkV#Ra)wQ;?C~^pf^i&#Eu@}+AdSiA*Q@WaRZXZtD~8{VhG96U3>Yj;L@&g6 zlm?3wgQ#Nm6q+NmfX=~c$sJjin=ky6`Dd--Ma{%{%_KRgH^$puL*~08%1gOtk9UHf zFnLs`kIby%c<6A3{`j67RuuPTxt~LCE4Es_NZXJ(wKWq zg(V5BdUYCSX>PR#a%1ia>Gr=yGhgpfU-<&;I%Y7yhKMBKi69qFEc|H#dFLt8x=@bf znto(Mx_UA0n1GaLrZ=UeF5|IaM#A8^pMsk(uuBg~A_j`M$O;YZyM?a5F&wDvCmB-3 zTFWfqPCZWCK9wsFu3e`d<47W)ESz1mbhoa1iF{REI8<|_6#1L!&OEy?E;KqIs1MF= zvx2!$>CkoJD%X7n$M7#bUV#w(>6C$1skQ~GSn2wJvbF}H9Pyya-^n>Ok4ll)O}~fG zgaa4rd1rOox?l{+o(KEx+PylnTrR=8366-&|6~eG4>d8gb(_|z1V`DXtSVI z=cOlMVbWcAB*t#dFO;V!hI;Jt=+teS%&ge4^POvR8E7$Jz2YI}r(kPqEM9G<(#aC{ zATo_bWdf=ki4V*70~Y3JZ(j457=B%Cup|g7Weou{t=iwE<4DwK`aCdZ&kCMX4a z+uD5n@Vy8%`AmIcH;ti+di_6vi4?HB8K?5!jc4KCpZ&U!V_RcMkkKqEJUqTl=JV}} zZjG*HG@W8Z?F*uzqQwvm|J4Km9e>60*+!{#J(~3z85PnvhxA9jgXT3rt-i(&n#S^E z^<}c#pVs{jcqNd>QT2GSx-WC@a>y{}lx+<4i%nX2y1qLI9!}x4SJz#kDI%BO(I<@{ zCDY1Skh$t@W&Z#ITnJ=gQspnV+}ZK#-YH+oG8` zS3R6#`J(d~llm{xBSUM|L~PfJ+T$gFmL(4jwy+Cdtns7Mdj*rJ>cY0aC}?Mihg>{I z8y8o&iXBB_SBO35PNX1po1(VEtTo(q^EY0)s+Bl9^Iy3E)wvo**U1xJIhy?6>;JMnq6yl-F6f*wA&4Ub&L&r%X6 zyKU5sH~zZ&0rA120+LG@ZmVFdaT5RJIhQm@03iU>@lNcOuQ2p4kg@YrgV#R^%HNFl z%Y;0y4r~z4BWOs{yNWqkqV}N((BlH4Wf>qmlq9++dqZ8QJ^-64<*C8lAi6< z_mw{cs(dMbc!}%iADrSnEEn)<+!tn>94t%Bivk;HQ+!NlPEkC$>4W zfZ*Y5K!~IFPP?gHDESo?D%vTby_@Rz1G7R+N-INH;yS(T!qIu_f#MBp-v2I9PRx(? z6K+E=tQKod&NEil$Jh^_PG1$}I9*Qa^`T|H-?Mu%EgquePkYzG5fs_kr#=cI4z!DR++*nmwrvaL!QYyYM#)VnTuE9~bx z_`^9BHSrq9(xa@Pt-h_`ujSN3J!=-Z1W3Q8$ulLKA@0J2Ifhx3@B>*i72cs#dXDL| z<|D%VJh2^|d6eE}E)(keO zTKcyc#*0Iz^r=AJ0;CUR7d4A`1JrQ!H7j;m-G|Izrdvgz5eM`OzS(z_2HY1({Q~&C z^sPw%IR4j)x$Sh~K!?C{^pkLB&2*To@{YH@plvek5i^)*<-zGHa_e&zrNL}?C#;Q3 zszp0X{u7`_yIl(AteMIqaRUh!Ufp8amf&4W8dF{FzcynFmt1MOwv(3DqHQ_Zod!%X zIhde7H*h)HpQEYZk(&exvHop(2Br7&J>w9wR|IFv|C9e`I%Ru*hhm_td>sE#f^(;& z?Pp!S`>{iqCBZzRf1|_o&6}!4Tnb#5r)35uctPp3Z?5}+f@SQ-9@oQFD4}JQz;u$> zN!r;&T*IWrl(-nw0ccOX%NyyZp{L$GH|hM8bRR+YVv&1?L2hALC6ncvR8m3+ zO7BgKXKI)_zSBtM`**WY6+o~pjd0qZ$KOc*J zi<2J?A)8q9Eosj;+}M!`VQ0LJeVQbZA#&kX`V`?P54dE^P)7WW&ylLX^PX2K6*~1h z3|MC!-OF?>Id-iO+Q5~)2JFH9f*^f+H_sI9Pe~}7l77;kqX%z)Ql#~9*S{FZ$L z&%ul)2hBRoAFX(QUICko4H4uijWV+^VUe!fJ8r$rsz8Ph*njHRgFH`lNNd|503G$e zGLxdRAG2U97;2uUJttuh?KaqHb-@X50u~AO-k3Y$mx-^2H4Zjg%}v!d4IxQ6@BYCPWSLN6+iG8PmApY7sP>+}n>Nw#P&36aazn ztiS@)J2dfdFOnii-S5_b^;-&q^v!J^jLtm9Ej|X=HfrG9!`wNlMxXzoNU1(oM}7K5 zd7M_gnsA@2)2x4w+_Cisr`2<%{2+Mc_V4|h9+eNa?l!kY4Cup01bdC{a4%8;dIqvZ zdEi27-aMM;KS3WXl0^D&XkK;XSi*ranfqrn-+=s+rvT>2H^qb%6O1=-Ir`bHJ-Lx< zGlEmC0;immje23=jr>_3ussTtr;#Z5KCEx?d6iHY5>S17t9k z`SKQo5{^Koo+tp!lSoJO6{98!B>b?THVcc#76}oZ6h0HCchrT&ikvW~lzWi4=A#%L z+X!autWLN^yqzhr^(a}H3SszDEShxDax|?4sk$*LSup_^Z5zpE?H@`fNZ%vNlK#l!IKI8{_Poq6K2~N>7Xk+kKDH6! za~XzK@jdPDWIg^l%cNY^y4|8N3ej7OBCf1!8yPbRlr4ghL{D!G=F4FbupG<^ae`*+ z(FiS2gG3u%2E8l*8sEGk_GJ^r@08%wyoo8oP%z=Fp+uK2iiLKW#q-)if!wIi@4gnR zP*#9sq@|ZNt=j7FfHHV5<3UcU0Svm(J{|?IMPbnEw0$+0y@E3Ev2J$4nEr!y<>mI( zWxUvp`+Ovrl^x8V$^8s|7CxNzikJ=OqOjYxK1P}uvDg}tOYayjrt=*C-iz|8+l30J zcIS{*m_)8Xe-p!DW^6_wEqAp)-dL*z7FHI>h0Bf4Q z#@0+V^#tAOEEGa*OznDfTlW4=*#Iss1rY?mNCw)$74=+Lr%kBVR7N&*E2kxl9+J(7 z@%z7VlXcslj}MreJV%x=9Ic0z#PrL{5B#L9>$utXboSRh_!oBeQ`KE z?c>j>^>9aA%CV%@YAg0Wv8BzC_Bsfo`mlW&>;?YMAg62g9YF%}CB}^K0uy+sCDgK+ z$>a(>gX`;o3gcMF_4P}3eesmq#~s^SqcEu`{@R#A$TA?Y$h?2rH#0<&A^Frns8y3o z^AoC??w*s0yxSu(j|Vfo9teV%D_%F3XY+}`G$;xE<53T#O_<~NrI$iWVs2l%3aX^x zMhg%Vr0_4fhU{wm;iU-QfSkRI9Iw@@mNx4@0uxl%u{wkn0OEEC`-X&E-v*`)&8A^S z&=KD_X}efyy!kuFA?7_;e1ZJNGX&yQ;@lVNJxQXnaz`q7xl4*3(%xh>yneStQ;5D9 z@PAx@rkdGK7$lDMCwt^~3lm_fij%1JwgS$GAjr*0NrlaqIaD|Q!`ld{VVrqfz0*8KA0+o(*6_g8NE z$8B&1BDe2ys;^~}> z2WONg5DmJAkh0veUW@ktYUbuPFuo{v_<^uEAT<^rI$tr`~|f){>8?YQU#3c0U8>DPq-EZwUD z%tWfG<){COw=oqVucJC2KEX1Ms+FIq2tN@lZ{G|=^J*dyYdqV zd$6o3Hc672IShG+51Ja8^mUK#wx8#Nj*?rKQ}iVbtao2-5ezn%@#0lu62`U9(_4?Pi70 zF#Rc#L?0OQ!wdJr*EpNu=imbfbibF|SPR-*`(~hK_W7kiS8dFQt(uoz z_z6~3>GjiG>Z!2RV>$h7%`dzkV_n)H30ROSmw>D_d-{t_vU1dJrRThvh8rik#Cr4O z;{GM-s^tiqfUoLi1BELs$pd;&vSHKx@bM+^Bvtj|5P^#CDV{GZShCy{Tr7v>2+)tH zis?(Nipxt%s!Db1e?EqN>;_kO2o4v#>gbc9uWC??w@d8b3~}OZ5VO;AJLx-%icWEEoCshBHv9Y( zt_4?%aA(UIQX1_By%ZRUyo?N(h=eqBBSfrq7Zm_c1VL^SY_3822K4QcPTP$TG^<$_ z?-i0lFqq=`8)|^weCQbIyTyp`zBj#L7(n^?*~@Pa2e;aszj0xq55QNq|0MAp@%o44wM(egsy!=3vfM zvMGKIq`n)XtCH%5@{M1NA@Mq&+MK<3u#u3b0%bSJ ztZaS0LI6@u#IPtiEUA2e0k0D)exI(2ptcF#HMVF1txj>+Z&kml8nmzi(nEslD%11t zj*%UU%AJXSZ_>fx;~ap*C`j7l(qq}3?#f3(phTXsgU2Gz%&NHIDKHtUWv8VjB8lKs zbZgqXJ((nlIG($0U=m3GZ1gz^4X~idblH&MAN87as%3Lqj$DN3A(O{HTaM6MCf80~ zd7aaS_Z;E<{p5ea!->C_#oGAnOD^I6sf*?{rzfzhmX#}@-{3VUY_LdCw!Fd!1>Ot? zSaZo98ob65rBMJA{%io4izPeW=MKWI@zW6m@ zJwgKSpT=U#L3iH0ps%T?(8=}*w z-KnKeSXu%Yp-!B&{pPIr(xL(V##2AozSQ;`)~i?Gg!M?nMGM4|M+*dt>)SUH`uTR_ z+QAEbN$Xy7i*!?_cc>n6AJn`A+ zq_R7$c^>4OMc^VAH?{QjDiN;7q_M>-pc89W|KBX$pXxOuMn8ks!DvZq$5_Ql%|#Lf z7K>NjKJf`%$Wz&Gj!)*gVb7t0PK9@6W`VS=_(d*PZD3Psgg6~L}Dpy>7m z1$G-+I3fg$=rbp4qbCgm=SoPQ)VFOXPX5zU?*rVp`ByCR)#^bJMf-%VzS?nac0o)W zkZ%`HC73ruPWyAaXa0}gudmiPt3rUij0FrIGb$S{+(&|rxC=~~8=w_>MZ673ce?L{ zdtZaFK58=F^zU%R)npdSt4k_-Ix2f!UhZuOzwh;=Y|i@er?1tn)Gb9E8FXs5)t)_^ zh9Z&wu7ZJ?`g(}JPcxq;OgAErSz3fDu+K7|hG*lgIZc=X9_{br+zRT>_f)KE&*%9{ zvRJCGs?FEnhV-4sPdo<-p*XzwcE}!}YB^?c^&>&MfR>Jd z!#Llfbjv+qz>s+c)jjVsmY;xrZId=Gu3Ec5hs)NPj?U5|RlKO}QGh@z!ZLB|&lpy^ zmYX-fFPmYe1-(6OP)=H|f8AOg*_ez75!5VnUXP&_Am81O-9J)?)$w5)mj`j~3}2tm z9;=sxwD;5_gkoZ2oi6`1-6YTy{ybBUWdLPgW-UpuKx9v|*-KvziILA$xrEDFPVx4i zx?K3MdUQtZNe5NM>#552G8neR;RtAPWaZ)@C1&vM&A17Lh{qFGv!j~9lGOEHgYn(X z^6U4)0X*vP@fGA8loDpbM#b%}mniKijHqUt@o=D4-sO=TT=E#vy7piHlJ&fG3#NbQ zrp~m-i&TAK(jio3iRpBjuP{vr@48Y}+f;1KOf5B>-TQ;jYEFv|^8Km)QIJ=6QA?%Z zW~`H!M%C6Tz(Xu7mSOSs>Vu742)zTiZQ`o`O9Jb~zvlIWx9ZCVUWtSbNH%^SZxG?( z#sMdpSE@++J|T=c@V&*$ImSr>_V&TK3pB<_?-+>^&}U}nw%nPsCXEx(FPfuwX@N1$ zYL1%NYdEQHwYqiTZ>n0WQKt9<>t~5}Vp2j$ld}d@2`d3AuumN%O&aqCPR*}lxO-Um zlik(jxoPdnNGHu-f*f1eECGxeBfXI+*QaQwzWPVOTW2DkKL@KmS;)Jb*N0-uY*B4@ z!}lif=GQT~ZY+=tm}Bj10wc)xpETZ<&^OY-!&!Un;j^iSIJCpoWrycgx z85{9{Ja_&5p|(m``B!JCTTa@{Ry^wd#SIUle=ccBiN*Z<2MW%TFo=Z4gCmdE_EX2- zR&!HWMhK?~wjzd_jd}JCN@`ovytccq>st}go-W3RuQY8+J4s1T?o4TdX!gME=id=V zi;DvdC{qq}GaW;zPgRo4@~T}!mVU6ASCcnu7NDM-FUo9MK0F-&w=;2@9&Vb7POpbn z9ebSasPXBD_WAt5zZxjSny)DIzu+d$xOpR$|JUcwKvf?+;*YS4g?EU5wWPnqDaR)z zBqb#x4Gs)Q0#_G(2!4g!HxW9$!1L5zO1upeX&rPV)kdm0HKRpI1*buTLuz2Ia>?{TVqUuGyHJE zUlhn3-j6E!eEi^S%u?nv!4XVtvQKr- zy&2LuLbenva|+clA4IQHJ1VI-Ku27)c>FFqdvCW8@DA3FB>J-Pmv4PWBQ)#W84M=R z+Zs^HhOPXxvb@_8hX@kKypu12%wB<1Gu02$8!SerdFo#i;D2QDxSsmnADmrxI6rA~ z^5A)plcpAjLWAXwD29%RmcnQjss{L-r92Br-EPPWV}XBh9VwEe zU?;Z@XA{`4@g>p07JEDvGS|6XU-nEmX^*YtyZnq1{Bk?}viJX^>8pd{=$>ddKyY{W z;OSb#u6a0t4%y9Nuv-7UE5;=K8O@4c!i*rJ9%?oQvHbGuKULv@aJ zbhh|3RkN^;v#@sgLDP*`B2Upt(f3bx$w&#YiHY$^ zSF4=YUS%3S&{fXosc&7tAtv-C%h}<=M^u+!zFfUOH|@yrxR@PdEDS(DAcAhd$9(6? zsLTy{5k~Dd{Y$vD`|5Cf-$4CeMn=L)=0w0aaj~JVnK9=-%0edz9}K7bmT#c674Sn# zBU4`$@4j660pyb+P^A+A|M?yLeXF7=2xO4(SZ!?B{R8T~vJ^ODGihWB?JB2k9x8Zw zo*b{<{=gz+JztxP!uEWKy=va`1tnhB6rMEvV~4O5Uf+oiHVAMLm0<8Hn#UKcc|vJht`8&unN5E?R7Nkh&d{2MKG;{}?j?KM!7y&^pmiC`%(aIy!i0b1G4gI?dFXv_~5~t zmoo~kp~``$?^YWsz}8@9L^}}u;Blf$2vhe!4-;;OOc({^7YdP<%x_+@Wje`(O5MXP z!}*0z-8H|sVWzg_a2@2FqQ5Sp^O_2sG;N>!<@R-XY1`FZw7I^#J6$bPGzyYMA1d(4_u^?IlQ3sDc@A!n6jQxGuibPQkkz@DF9fc38u9{S`a!dVaqBCqHRC}0!fQa3Ml z0V(z;B)5$kL$P36uHmRpYtaQqA2H-LeByY2Hnv|we(s4PX!@U=!Pf%XoyQ}2tExaK zI1p*}5hBZ%p{}0M5$Hb9?@8|d(mwVUw|(W~q7wFz(u7eReDP=Zn%~8gKVvM2LcDwU zfXWk}*GJX@ZhKC`vL+mh6S#Oy6(X%O>_>*ugDZ6z@7bQkI-h(`=V2L|fG zf|@vdfm*55z71lKP(ww&UCqw&ae8r{{FeA^22Xm=XyK-7K0-eYfH#X8y%A5X#Eu?Hv_gO9k9Jow_ z$y!t_=eLkw2m%pHd%Ji{C;QiHP5+5Rk9~Q9S7n|=KrX2 z5iJRp+z~Ue8O~ErJkt~MoN|?&SUnOpzpN;WSYXMC8tNSLOv^lR@i_apbgU4GjUUnG zI#Yl?#oCQtizbO}FJ*{@MO5#7%|3S6>oA$ep;xaWpI4jkhiUPU(sQj*dq6CfhM7DE zpcujtlSE}xiwczo_FW6LdOigN7+hgM_;~13@YOFjPqH_}Zeu7GFL%)X`vOGHUn8>P zytF@@MvWtrap5FXmRNlN62bHL0gEoL%ad5mAtfD0Go|PYDw?NP+XZU4Z8S++PwaJ) zZx`#7CH?AOliQvaB`%N7J4HK(;&U*`a5k2ws0`veDt;Z9Yq(#*LPq2)IN}|6QN>4! z0fpChq|-&R&ll1-K50*iY9h!4$)HePg=5hD$isHMJjFfT?&)5RS$j@~xnS{2B z-nG6bD31oxr%mGZ_FPk==(>h~2=s}wK%->|LBhvyV|V#(%Gl zFEPV}xX5XMtF*~mukvwkf$o+ZPkk}5>OSE=YMw+h{=+OE5@K05JysCNSQ{&B%c7Bn zsqNMHo#GdiY9q1c;D!8RQyE1+FTf_Q-?4Bo6i4X39{(6ODz2JBZtV@0I9l~ND9$!o zf_0u7$eAll19%HnCaZTt?0|cN<&Y{7r^Dyy5?$DdGzEyy$vurI4KD{<{`K#&2>)kY zVx|K7c)Shev-*MaQD#RQ%BPzKP-2hs1wt*h>B#Z4}stCsecXjF1Bi+_5g=ovk? zgQZmr6I~&#w7XRJvKNV84!J^*&o@Y@bFkFqhsZ;xBPfRlR+@)qG342qk1^-g-yUll z9r?*#Eun|~C9b*c>0GvhHA^#5Zh8&6fghZ)QTyMF0xs4jo;2#eyaTx>OF-~dlaQ|+ zPg_j*{{ta-xX5!0?0JH*4RfUfn}BdSbprE*a)FzuSBeHmg0G(ZBLhovITnH7q+gdS z;e#N`!|VNvEe1xl*g2Zhqcsl>YRTyv)&AeTMaB(;TgTe5<{K{a=_dcWtagc);^?HD zg}Tv7EJP`i{rhGyXMOuiRmb#dlUkkz8Ov=E?bs=@$Sm+jKrn@2o@ z%h(Zo@I1nul){at@IlI~&M!#9&CBVW$~e%sr!XhG@mG+5``|xEwoVM!*VEP~O`df5 zjsT771Tk**s!aWfQsctDKr*wH&w6hb5on4DE6`2awlb>w=A;`}io=?fGgAR>_df^d zwPa$CcKB(JY;-EF$kAgaDUTOZjd2RKF*{px_J85t784Ijba^%PN!w6NnE}TKX$(^A zDc_Htlal{!0j-s0%H)r!{{DwP{yNTDpTkFbU3Ib-%Wf0}zQiwd8yH zP7H2aU|t7h>mP+L!Q&k+jSBuZ7q0`OIt5deJdE$7Qr`?T+}v%4lKAg^$Yvysh2pAD zRhR04)BnNK8e?K84!sXGW(@!L{=&0`lg1CTg0K9MB5WHAw=Dzg2x zidlk$ULRtCikTksC5*G6i>+_tWJ1ALhx@|^UWS%xkh&@pCZ)F1nw4h@A+L;kv7wz- zP1g>ZLX`83Q^DI$COiA5?MMQdx}jpuLEX8{r0s5^{u5J>(A*Be8sF81+TcfM%s@vc zPG;OF#D~12;ds)z7BDVxBXASTBQ9bgtm}$#9QpwC*!P5H4qc81nU5*9;ZrIZXSS%jEHquuI?` zB5FTx|17_&QLE4Gw(hkpI-!8maLv?Oz|F%>QUX+yJn=E;T{oH*7NqNS>1<}n&t(Yu zJ&1^epf_*JStdfmNFygT-RJgOS0#EF=@_IU_@n_*R+bj?z3EA3Q=WaNvFYU7xn~hW z#b_Wm!R^t;+FBaQ30;De-s^$+awB(9UXCjav&+U*2OazyabF-Bd8N=hi687u!L0$q z82maL6wR%wab7EIU7qdt<7Er%Nx2-)*Gt!JKBr66Yt%pGX}(*Vh?xexk%ucJ90*g^ zSW<6U3nRjLpG|k^nu^4({v$|;LtXCnS2s}~7<2}Jb!+hUb0^OJdFz#)rpzrdut8RM zM)b?(v)laMs%dnqHb%?!^~g`oIRhUrk|WwWG)MD~|A!xGxtMe+HITv9CMIIa0&5nN zd6Rk~X=oA*pBm*b*E_jhnASvVn2w9rDw+?rAx&EnekAKOY`L8$P-$|eqcnPWDJrE98gz<^+o}CrjH6^J5B(`TACi1m8GisC}WX3$hGE&*-G( zI~XxgPW2mdwN+5p8?V6OZ-0CduJ}Ub+3`tWor*K!sQcRRJmoOTXy7^oKc${VJTnjj zr1ogIk=!kM=4R|5XnL#rsXuTjZGMm=!t;2ts&gsn%ZZ*&d(KWV+tYMf*gFs*xLfJ0 z{mY#BPSaZ9v5C{|Sd#eTh1O&rgt=I3-36hE*+=ASO7Q*=LdehI$HVnC*PF!kZzUzZ zy6ekN&~aG(41f6gRHh5GM4(arTykli74&<;gcloM%jza7h5z-Kj>cc@>)1eG#L zXXvthqZOy+)_3ohf%iR29OPqY%&#N9sShbL3r!k>h`)vOJ|U=@Yp!Fmz)jz^Mc{Bsm#1Np|JYSQ9+vbuH*tvm5S0EJ1>q8=~UPnVh?amukq z4gGg$h>8TuTGTGa&;Bd^Fs;-1<>St#z0=|$2NQ&WEoZshqWQoCJ_9o5# z;Z|o!F!b)55>v+2YxG!Gj7+^@JpcTws{UQ+0)Mo?JI=9lHSN2D^>o4IKLs&U*Pq~n zVe-FrU&ipqFFA1$B^YGSJJkMAk|~@rt2f{!1`GxkL+GX7Y{2kx%vM|a}uIvNWKSc)(Bw7!hyon7>E;0u36F)KIKmVkRv%}XvZ-Ta47%* z9s>;}kl9JQhBo239XCJf*c&g{L5QJBluTjSY>9%y+r`=faL~J6UWi1Nz)Tw_yxaO~ zQb@t1nUAR)ei14RlJXvoy?dIt&lqPvO-JOlk5*Z?8aC!@c5t@{s( z!;zE)&Cx0eyQ}D(98^%b20n9T;_m@V5U5ZbrM>fcYusz8;s^cH&sa>3Zq zm(^ciR%J0nci6k$`XGKVvXn{&EjPUb^|`@9w+kCSX0^kEebt#7ED8_%EgbZ5yGQfR ze-OmfIWYl$9XhwAn~a&L@hrZZ5Qp`AP5yBce>J9WRT}|8FY`M}LPdc?ccQ|wHz%Z6 z#0N_TSbSd%99!JkkB_qBnVY#ikioofNoJe}XW7(Ix5qp|A8nbyH`6NXjQ;~I7k-j} zFO^KdpRZemrt6R56#=}7eUw~A@d~jsF8#?wHVLHQ-u@aK@SvWT!Uv_;xa!c_`6{x^ zz}v&~!`-zC6g!dj0l(l|+Jw@)iDp?slhdC|nf(sqB9EG9hhwWfE#Z(Vwf9}D*t9TH zdb|;U?T$?K3~>T{>PV>$M47G-=nWn>1az)jaS@}zSL!%({fw81Pyr-0ym=36b*^Xc za=hn$Rp_CnE79S^NQvZp%va;oW64&bPi16ddk)3W;2=Z||M(jRk?>~criHHc1Gc;X zV6ZXxwM+{H%9e?yjFF@6TpJ}je))zWfr$+MY%ahhRAu@`MNn;WZ#7mOzrR2p_-;1= zB|KtJ>A|Y58-pSai1fym{QV>H-AMFo?z0G_cU?xxQ>V8$C3^&?Emikz!kLJmi)Saw zmf8=&>owxy*)z3{vgaR7ErRC;W=9l5mY`uXhoQNDv$3%Mfqe)g%l4atYc~f|$}|y7 zXkLVIA2tMDis4I~hZl2bGoa_gt^HX~x?L&6HMB9GomD2#)PsTUgrhZ_$-+d40X`1a z=4@=rUG@D7bSAJQc$WVV5&b>jS*@`P3QN}fOtNerOzelpey@LlK)Obvu3B5WL4t4c zsj4AL+Un?as$8NF!4J`HPH>?)=vm%oDtsfAAc%Yj78L&^^1NR6WcbQtbnR}Z99VBP zk)c4w>=MC$Il}(Xnbth%S50&&0tz$xoz#MNUR2ovN)#g^e+yiaK-}T-935XA#-v`Z zVi+B33EA7@wXp22y$nX!l>Y}tv8jIZ_q3dl=E;yKQWEtnzvwkijJDmtu=Q_1aqKmg z%q;ulw@w`5hkF+*cQ7SrVRnxG5-`YRCzrhZNClul=h*l}WmQF& z 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 z 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 N=P^T4R*u(Y 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

      yYu680_fw^%)e^0k}Q!SG* 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 "github.com/kr/pty.Start" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.main$1" -> "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.main$2$1" -> "blitter.com/go/goutmp.Unput_utmp" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$5" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$1" -> "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$1" [ arrowhead="normalnoneodot" ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Listen" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] @@ -261,20 +253,28 @@ tooltip="package: github.com/kr/pty"; "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.GetHost" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$5" [ arrowhead="normalnoneodot" ] + "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runShellAs" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/logger.LogErr" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.Put_utmp" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2$1" -> "blitter.com/go/goutmp.Unput_utmp" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.main$2$1" [ arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.Put_lastlog_entry" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" [ ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] + "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [ ] "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$2" [ arrowhead="normalnoneodot" ] diff --git a/hkexshd/hkexshd-vis.png b/hkexshd/hkexshd-vis.png index 8f7378759ca87c805cbe1d04c314622a4ec03f5b..51e1a4cfcb8ef711c55ce06c9998441aa6f2e365 100644 GIT binary patch literal 595242 zcmcG#by!qg)HjT`N{ArRjfiwfH^?Z0bR(^FBRMoGgAx)-gS4~^B{eW0-QA5y&A`yZ zFbwe??)!PJ@9*z=zi&7f42NN#z4lsr#c%y~q_(Cq$vygeczAduuT);>;^Ez;#ls^? zBm4)rV<8TC4*bBkQd53`cYX7f120Oz!+V7H>V=}d-}l`mpP)%J3&FvN55{e2>9=@* z_vf5{uC!IjxbHsHf2OEIc3WRt$MK<}e*CvRyZf(isZFvp-`&hn zIN!*wcT>|;b^8to{_iWjaC>|E`qEt=^|$8^V*STDiK(wx(5wIXt45+`QLytgFJzHu zoOYh%zq{H5gyaA7cc1r<{$Jf3HKSr=Tt)uAk7}4(4hIJLCGh`@^{gIz3%GTVD2vY| z0IdW+1b!)hu%~kSzlTlU`Y4Kr_bjY;X=-NbgOvA>MuME4l`ME2$NM{C>l34 zk55z2=ig%b<~^^VB-gw443-T#J`6fOz-1zX0^gU^>(J9Kuu;`Y+V}hA6^*ge#1cMc z=qnVymQ$hUBpla_LynTN4qFVji=*a;f-uLXCKSM&-UoclT>@r7(yQ%-#h$vGm5)!! z^Q+6$2L)`YzS7+7^GKNf-ZW7xjM+{uFoJTseZM-|i)`9N2e@`%0|Uk>S5(hXO_1PL zmd1GR(MarQTstpC3!-6{vtZ5y_p5oed$^YP0jh~CyHZWPX!3Xg5ZNK=oiaThUe2w8 zV6jV>*lxm*z1ybqxGs5-uO|n@B~5fS$;U&GZ!w4)&LddiaQW>J5|3n9f%5CjWEH5G zAI*O{)`!^)O9WOF8c`)WPK*oB1dA&_D?;{b4KHTnB6z9ya5@7-=FNMvXjz}r^5$B# zBB5eRjlK`Y%Et^>C}2PQy7#YgNP4Y)HHV(9LRd39%|4B?pP)$gDM0G;U*5k8G#m~Y z)9bcBSPv_zU_te=K^U7X3<3=o0~v@|-+GZYqt~9%&}F|YAZBX*)O>_^5C$h?ZEW3? zKhKMf`<{Aa2Ih|Iqi(#Pd5Sh-`cA|uF>NEd&TtoyUWx1nu<-O`YQk^wvbXp2Vt29g z1cLA}#Il`SmkTJOWqp|N;8y55r4j9eR*GOtcehL?BGym$F4>^H$)sttk6JJ)oyQgs zvS4HM1RNL=hlG0LAG6H$! z(C4)c$3{e~;>WG?OJVHD&`=UhMo`31URfX(80!G1%~Ng2 zuqKahe^qPXQ|HO6DS9GS>gSPg=R3f7q7Dzd*FSy2Zx*&c zvFy{o4_N<|dAt>Cz~b%9@MQHV!sUbVyRFFmpirTW!Rvq) z)*QW595h)sj8~>vsr{}WnvlXcAb7X0XJ`6>GYYJxaprp^5+g7D80q6 z|KIz-|4SG8|Hr@QEHwQmy+hU2BCe;0Ww-`Rg%@YfmWYyh;2(&Se`S5gvGR7=oWtZa zt(a>5OULOFevYuYVu>An>YBcvdJjSO={MjgSL&KqMJ82AXF2iAy1K-B zy2HZu-5Di)CK)JS1i?qj3eo0L&niAOkd8LO@nrTD3cdEGPU(LmEcws9r0#VhZc*v5 zA@?sByzZhzbl&Selu}dp8LeJ|o zbqe(o>8I`i6BKv24!#%0mNUAo4t-As+Bzti3=Q%U#;yfsk2~C#&REECzp-`4al;h( zHG_n@Zo67?5FZD;tC$lq>tdK-c!?$aNMR+r8gStq15yOr5t?|J8b zRzx4w)7cw*dW%S zW`?Mb-cu--DHNlRBUH!qIUy_MJ>@6%(d%X<#74-qRhF)GqBOII34(S9FZiGleKZqu zX427W1tO?Rc|buX4{LPn#pu+fV}_iB9G!m}M!(AcWirSC@3s?4BQc3qv=^dN4~ThH zB9~_^Si-4hndZH zHRTy2DUv?z3jy(oPwRpo1~IK5Z-a@kYO_5>U%> z8#r3b#dsBz(5Sgvj2b45rn*FeA(Om|tvwErT98>bT5uAeOOppYnQeeb|8TF29gp#o zl=5WesT&#O=_Nb!Mtk?)bG6k`>ZZ~#s8Te3TboM6s!yNE>$M@{cfcs;?+I>MOc2DZ z$^>{k(S(2;6D988-6Rx zQo+uN%`a1fUgftE;k^%i7XOI=uo7E|Vf*as{Ox(2=NjxQeG75{&jx>JG2UKalLZ3D zv*29qV#X>8<=u5MTCaVNjG@vpfvLoevi>83`WgfF`Y7_)q9qF>8KDgJL?ZJGh(HL) zNa3q;$C%Aq>=6!O>*~y*ytfGB6a@^m(8j2vd9u04V_tBnW@>7$FMQo)erE&C= zTc%l+9>ni_+Hz90^!DYBten>BR*SL~#yeS6Iuy9>O?VCO^~%-jnHoGkc4mj$-vJ`_dqW5)cN(hC^I-1`qm!Ybr=zd;t$?Qw$~~-`Y_rl5@={Od1>sxIa1iEE zRbYIl$cycVPYwy+68-QkV>U^~ctQoyEj3(luO1C?2JEWp;YKJ4Rf6bg%ykG71fxxe2@n zH21xroOp!x8-#`bvr>R~wfveZ*KHY`&EK5S8G^KbHUKW~+Qi zkk~Z2{Y(xN?}ifH2&d~2Uy*Jc`k@!-%Q){gh>K;-wv2gpYcknb=N zP?)|>d?}ZT-ueokrfgQ-H9=X|;40x0i?_NfDv?GFlboP!WSmm_tt=4Nh=PGL2Snu} zMc+2I1}t?7$$nIBq_jDefitABkZY$N2qVxq-Iq(||F+P?1&Hzf8p7tWrt*DnxweiL zJ$1KaN{ZV+ihIM+gHAc*S9**nhv^y>$FcL)D$52L+2w3_&n>*Yut!VuOD+Ca=TL)! znGxwb-QJm4xH3-hOq=?~r97ceK&{RUw^f*<^vdS+^%8ZG5_HotbiY2#_IIh7agA(-B|rPtf;E6)@nSx! z+DE|KJ1yR}*od-rS_$jhavChF7WcxEeb%;qtjOnU7eB7YOAAeW{_IznrOa1lvT)TJ z@YJYx!QMjkK{RTMyoT3+e(7s)PAqDOYf^6EhDjOX`htl+ zab8^P{zV227Es7DlGmPfFHKJwM{^}ALCC81+mWUTJ4a&9tYkk-qmNDoB3t=*)#AKj zx8+y!6`20XLz&-{1@AM*XnzJ4z22d;HJE#4Ak}A3|BbwkU(AWpo7!lNNdO(0c>Y5A zllR(y+^*?UQSO&MISlo04EYU$AIutj?S-2NegG=?XHgvyq z(#>chaHXDFc>XEGLo$wxTpE4+Eop>0+k{5SPpLnAA|r$;!+V#F03Y2foPTyklXclr zJL>`=d)2#rkw~XcuVmCB)@cpGh$)N5Vb~#LM{##MSWLGP%wS6dI9HZ8u_r5)h57?V zX_?+ZbK7jupC_a)+Oio@$9okjV>imX?tUl(Q$k163f1?>D8!fr2KN^A(D+BEY8!L(mnO^ICedsR6z_P;j%R#)%f1uC^&dwM+892NvgIh|pG!9n9 z7VpPgW)Hc^?8S9`j$6sdBVx5*3CR`jCkM4$?ivea&`BTE8f7*@;@3nJFd@gfC^cyC z<`s52lcG$o9vpg{I+T|-<|FNT_N`UdJ98(fU9AKDP8r5t#@(27vQvaj!N}a{Ji)z5 zv3|!HXappYc%!n~#iCV4#k0JVtr%KR#H*sx!5ix{{OW`1&T>bKQRz$TZO#}nPqqma zhdqBL>I-!X-)7v0f?lGmvuH4ThmuJpMG@HjQ}Ht2sWQQqMj^-bVJ{Jw%;mAz@edYZ zXO?l=Zx*4M@{@g5r4p%aD)ljC>{SK&!xb$aWVegp9`-TN1-*u3YFa zD4yZEKfFjHg=3<7Kmv<{*0`m7YJH?qFKQSqg*!R@fy$nb;71lHeYnl>HvB#?)%WM@ z?~ceN{juH*uLy+@Q%Pwv{UU1v#vs}zVmZnSN@14Hf2X+e((=!tFR~(bpbxVlnKfZb;Lkl`p#?wkzjd;g#B)z7-zZZ zeNYpE3i48pOQS{QH}f(f9Ov&xC5jk@TA1m5ry2!=){E=Y%yQwpHzA+`DyAHvIsH~;!6tqO2|CVE(`ILT zf7wjuiTA&N&)%LCKQA~hD*Z{C;%mQ5x8qdfK*-u@w>cKfw)sSE$R|VU4#IB4N!(%u zJ(cZ_(N5VsH9iZ(NHN^iv^W*GL9BA7^0i;M-3ozQAVpm_Dk}uOoUt}8?D`DS%#hR)=J;mpBT3v>u&aqc6x`JdE*Da0|IuD?w=Q_#i1LCAa$_kI4-;6*U{)Tn7O zE$?F7E4$k^IiuXr_SI>+KZQc?=+H7u=UF}(=)@o;K(_VmBu1wD{1CCYdYf~rs+bZK zF{dpI8wd)YJEdfo`%^%~TH%{KB|mD&*lWa~=gU8B@{_G7Kw&8*&$wfBZ?pVlGyF`0 zSk(6J+YXBd4Du8r?*K{g(mCo>_QpcufmjG3tI;va%rr|%Fw1(FeS!1Lhouj1zG`mY z`-1miFCsTwBjK_0*C%fVmWn>5mr+JxzBMz9%bQya=q}5(^z!a{VYsoJKG$xtTZa8X zQyEpnnp4cb=J1fjzW?Lh($qt1N-Ue|`~93o^Xk z8z$2qCWB8BFlAT6b3D;6ERa&vvt>T(<0d|J8CP1(I_RQMpo_Ppa><(%iW|C`*Qx&uWL++@ixXQMYizM#X# zDL*gEQnAmoc(+e3b-Oh(P&e%RKB|)-`)JdqmQ#TnZ-@~^grMD!p2Z;ca!SUE-Et5S}-r_tTAckzH#Gtf61yMA=2Oer2*}3w5&=}aqI$dMvjL!87NjQ=Tl{^pCd_P9=+}e z7G4qm&r<`~P}mUIabloALl6LFoOGz||8v&1jF&=h7j$`I1WxZK5%|Ot_`D-UwUhTV zFR;q8&M;@NNT1U)KmIq7-8Fx~2809V{t3aJ@=#Mf!%@4*1=i<9dc~suqp+CIpn}My zu+BZjD|in%$a|`wwxe}mLeQRZ*`dZ58=G~MLmJ!0#PrWX^wK{>cNwn!5q)$AQ8?@} z$$oX@(fvn5z%>9JV9%>{CA#nvC?fElskMKV^!EwqE}Ia6kmbW*e8;N(^BYHB&Mwq& zd>prLmVCSqh>Ack{c8WT(BSr@%pC+r`QyL+;VjEfC-r@@4r{e`2?JAZM#Iw}O%U{O zpBaIhD}W-VTz)nuz0L}0a;V_1?Nl=6|Ubo~Vz$bdB${_jcust6_BBqjEm9m9dE#GF#yZSITG_ zXonp~Q zqts4bK8IBsPy|rf@&OUy(sQ{0-X~)?2{qVc99v><&ahVDlP$k1fpvIOZ z<%ghO2J8hA!zs&>DS=mU8G)?@H4Q+ek=YKD{@kP5-2SwPezl71M+RAb9fuq0`^U5A z57{;$3K9$o?ZE7E8byjr?<1X_YZNFN0M$30m};2GTYaOI<7aP2xisiET1N`T>Ab1q z+BPP(`J^*?)(Htww-{1JZ}1Q`0N3M39tBy|($|WKXH5Ml7uuT+yJs zqU0yZ;CcGJe51&(u@WRy;amPX!17nM}CL=4>W;V(1HW@32J~H)%Pt=U#lUeHbyR#}>4T&@Rz5W%c?@V%E;khwZt&G5ox%FVz7@+(6W?l>aeTr4_c5^KJ|{- zWhIV)R*XpEr3+ptys@WFV0A++E*>|vXJ;@8S!wcOS1ACY=o7n&>r+o&YQ%KeRMPsq z%o9Zgco-hU%ZLy8N>w@E(;0oR`qxZ~t>;BV7$*uH&=IDFSURxZt(C*QUt8xX7H%gq0CC3Q>tH~6m#2MR#gs!spv0_`PzD;= zH1s8%o}o(aU5f|*jV)GgGcp5cVI@`_8sA58xWTLr-QJ5b1F*v`Dq%k>4$ICr#|$UI zVj80OYDgwlbnL+n_AzVc4?P1r_C)(mzz>8vqRh(XxI7DpiH=LfzaH|raOG3vY^pb4iT|b zx2eS5PT8etIGb zt3b$D6hC_Sk6y_MZki^yM)H^8K_D^UZm9Jh) zB%PpPT@CoXn6|tc|NG)`-8K_*&E3!@r8oau+$euZbrwhVyIJtTJ)loE)X)Er+!tS| zbrp4%JG41*>JyNr+K4d>2(P(wW(#Oar+L^=#I$*mM*FzV^whetv@CWk z+x{aedB+jg+tjc%{=mKexwKCPHaPmCs!T7@V5<!9UVm8PUFhXtv^5HKRcE!4~AaN1T7)l39R*BOP24O#^rWESB)K_CKeSG`_f^219pkWL#ZPnl^U~YKVR7RWhl5ccZ-@keplP7uj0*GZEJIhfk zPe=Ie-UGooC4yOBx?@>PoV;$dtscjon z>cBC0==+K=9pj;H;*}wu2!&Zkq)~|6mHocw6)(KHSrn~nJYP^f8QuTU8$`G=XNqKc zDC-wB$!mtBXj@nNw+(~$ti$T4bJ;u_vv=OCW1dNau^(>CEJ}{EKQ548QoegaH$!iC zu%uKV;{3TyInMMa&k(Psq)DP*yXU30a;9-b)z&RN4XLZAVU-%Xh$PxYuIXMr9 z2$k?i6wF+d55KKC71(l|b1`V-4mXOUa&KYJltD<`b{n_rq-8D&NBQ;s20eH2S+w@iyl*%+`E-EcE z8MclEQ2a1o^&+kfRrAGpbPTP~jLYCsy1cng0g7aJnX|X39lM6;o8iY9D0ubH6VsI8!fdGk+ny1|+}Wb%My;AlLGxf+ z&k7g%NB_$OXgGzE-?Zu&!m7EB*NX(ljTdjRT=pe2Ei`?X2B72(x3Y{?iBa-E z(88V5&^i9n>`van<${|uS=5p8-c-4{Wxa2(*haW9XT2TsQV@`f0g?RqCv^(g`9hPl zOpbQ3<}Fs>GVj*VNv2$ad7m3DHeP1){TO$2d+T~B-Hnf?{hiRiYtHeTLNVU$9S~YI z1y}?9Q8#L&V4J z*}-hM-Te|=XoJrY&5Um_C_C*B?PA|@!CXvl7eBHwB`+)Rm7anB&N$*HanZ2L+2(qB zlH1#_fR4_=d)&UklS7nK$IMLlfmh>(Tv|&xvqpLU5eU_>f*|yP)L9o`<3D+O9a=ptw|1OfdD2EJSMAysK zQBdYa>=s5@AxM*XlGU@*3`kl}1%|TxbdA?nx7Y|2+{Ycgpk}==zs>Qwn4;;RjaAhC zO2OyQE#~15xe!o^tBZIBW>*S!Tpw&wJ3lkfHDSO({YKqyN7wNwyM9^AWwmz6c$c?> zgnz%9o7=E&$sI-5Eh=_q1>BSkV6o)|nx$E^dCN|}ksV_!(<(&6PB`Qrc8tF8D}3MK!-+z)Sa){GlD(-?n$Ur4(4_2q( zGA2RUoq54Mf6Ow*X=jJmW{mq3`Y;`mD*i#p^`8W{%`c&dTKg;}QJ?wQ?q=za-eJA+ z#|s5wUjN`)8AU?+ma4ckVy0aBfvB*Vy~2Cs4&+4Ow8I$X&u#kB6aOjr7xm4o1kVb9 za^PrKFiwyTF7pUiplM`|oO66#RALF_U$g%K{D!K`ler^J3u=0T94?pJzdwcmWr0%5Qy}B3 z0-K-KJN~UGiv4cZYDFF0_b5a@cPVgZs`O&La~D!pRPU0b&As>EygJxuU1H(Ucbjsx zxe_cH-yH>w7eB0UTRy5)dEx+xeylQ6W6D|IRUXRe*|`|;&y z62hVbxNSxgH*1+_0Np)P+n^lxU;TF5KjoCe&9V+NB+wRC2q6j0Y;*jgGAfE%4wk%H z>`G$MY{Wdu5G33k=dVx~Eg*Bh9;`b(1u<4!r9YT>lW?^OL|Cc(vsuu{sE3M*+G3bHfgP7JK92{~^=r zwoDg&?R<0Mk3|UYR-J3z{Lk3s7I{=&u(hU*QS?vOY8CRc?5f+{kV;yY*5b-k>}g7ApZo244Mo4^@McdhfLmFO^IS>~5R zrPgjlaTQBtI4NM@LP1A|5)<9`SC5h6Dmb@1@r*BBh!QCxBk1lzu!Igy3H*i_g2}WJ z${6tSiW1Rvw=YcDurnRB`?~0H)~xipgDv!1mCgbMq6gzZC$sR4R+o6 zjN9~eKW=Y+-}2YwRAv9;$8V;HG_P(!Chsgbr83LiR>K>Xal(Soqt`jT>Z#Tv>FO z-&H(sg=KnfE=o*X2F67)H_a~Bl7S)~D*%wY0XF57$ox`T!xS;)FPZcy)D{r!y5!JSN*5!Q?jc^d&CWhXK z)>!GqfL*eyeeGuzsrE)YMaSCgpRhaQt^3EA?@zI#$RvR)#kMLrWWlGR99`!M4*O;G z5w#(nhP1Cn`noz6CBNoe;^d<{>>3*-@0`Q#;sPP~0kuTO=wn~k?;kUANL|CGU1fC5 z%M(>zka!cl_<8+f&9EII$m#D*dttL98WIZs3&w zVqE^0X-~ulxYc*2f|yf_^az?yzDwuF&>8!d#b=jnDhhH+Z_i6cx~1=QdZ)GYw|q7D z3TE@)qPc5C`U>72I5@Y?ytJ}c!hB<$$jn)hAJ@vb@dvId=ct-ywLlp-tev$I4v#L? zD$+FHU1t6D=e(%qbya?k5e-e&Y=hl)#<9Z#`bIi2o7cvBdq1c!wCI{-pEV`&I&f|X6gT`;gc_<8 z@8${Abw%Nrrr-3M7~%OTnq-B@L6 z1%_F7PzKG4ZKY|iq1M)LCkcvvJSQbbXdBLG3VuJU<+2bVRN_+{k9NgjA1f!O~nE6U%#Rx>cGz}m7ajV1bZy@ zvCK%}?)ud`V)pS}K2&ZE=#d8FZ08#%uCw?uGyF7+^t|4o`$;>LUz|XXgMW@6Aq{qX zFV7Yp!k1MDi4Ht6MPb(wZRWRwkp8M(m92r5t+>gmFj14swgjWPJ!$k-)j-pOtd-z{ zAoYyj{uS31TJ;3YnB>kOB|~lPHN@N_udatbb_QK0Gp~YVtBipJCA`hKxNj#ehfBS+ z5wiebGC&iis%F~HhcSxqhW|Qx58E00E^_x_{T?cxMQ(q^S^WeOw>`KC_pTXo^8W_U zzm{1kK2<`LY}L6X`}@hhtNt~rxVO6#>bT`=U|{RFf5mvUg1Hd+E1=D#pD`5RKQer@ zxVZP%qEIAz8^7AH$nx+qmL=p|uR=n%B+;J0H^jAlRKCiUemfaqE-MhY9zXl_xmC2A z5p=N6`lw(k+Ne?N9%iu=`@<^4)>iDJcfy+*6M-OHdMRJU_2&kNbbHi#udrDSCr}YuB>UHM3tBK~R$98D| z6J@wEzY5E!aXI`hk2=pQN)0{Y$ctY+B1AVdA z9R#cqwh;yte8DtV0^WztgF9DDx#pJ-b8qU3RSS#EERTaY*h$AO+x`O*X5sRo;(F8N zkIU%TZkv-dQ6J1vfqk8eO|=vd&HAesMCr}5BLV3>a6rlFpJxoR7ixJbtQ|Lo>GA3!*Rj&E-#CU zSGxnVuiO7tucV(|d?9)+e;v}pxpGk#veWjQb8QCdSEJ|MF|6tSmh8vQ>gKXLkkv;8 zTf16AV~Yg_v~K($ag!3W;*A0N(ti1{c%!LzELmZu*_aSDg=W@2DRBe3g5ARx9{}1B zSVtqXw@=FVq(Q_~T*}Wsus+6<ypD6$3x5u%2qgfi(-vc>sQHvjTeuTw@-!9N-a#HS96f}t{H1hl)-mzxx=o|TI zP>a5Su_mFE-{X*32&Rm(6xf&*jIXEe=y~%?XV&=*r<(83cu4(pZPIL(b#Cl)@xO2^ zXRe<63lP?{LZ$iul*DNeM-t3mHka!A2DL09UBog^cD2jUVQ6uGTO{^8Cv)w_it(5u zx^2MeM@lJlD>eXn5YTleLDP0W%H&Q4|IU$8*@g})0HsVOrl77|5MSX0obbl>H&2Js zMR#ZRx4dRGg8R=aubASlVd@+Y86`uowOC8j@|cEQ(__e^OIkbl<|GZp>wjL&q^;-_ zlSuZq+11!(V}tj;h-_Vv5dwOQM9#Jo;yY;E*hC~Gv zx5BM;x081jYOOB*D1`;K;>u<_vZ9qFz-C`hGeBZr2o9krjose*3HwZ6tGPOyw!y2D{FLQa=E=U9GbqL-01fi2#?iStc)9QU3#vGCvq z-Af3jz0=PNp1)Cle&SwZT%+l-BvWttC+T^nebCZ=nE8KPA?*=%6!%$u>SZMH%nvlnv*iu)6!hT z^Z1a;{@ot~J1a!Nn_~OW5ee;UWonX`70DG&-%b(Btm8{L&YTaUY2UNluh&;u ze2ykk5|z?U1&X@P-*r)!O^F8{9rTiAD~mRToS%J3V+r?W2rz*0rPzQ!j5-ePcON4<|TPaWe%eUeVLjmPeEGt}*G{849 zdhVjJ)~s~rmdq;99s;)2HS@xJF))#{H^ug{4eI9t~^Bsa@n zhXrGP=sovI&y(iocV1z^wPv0g9JT-ME=GGa%YC;9^xsZ#1_#4KWcgY!v!UL~T^x!TStLHR;+0HK$xef?e~TpUkSSvzB?Bx3ay5{ijmKuUcA$b_&@pTpO6$*42dFn>?W=@-0400Se2of8y%e{#I-JmW zw4UWs#fV9`g~$8>lq>AN)>F?0A+r)f`b^dPOcl%{7Xp;h>X5)0026@0N>*=K#8vLv zLEeAIQ!6XKXtYafotev%m=bobgBWtxF~&O+^dohX+jNnH*>nymv=Rf3Cop9K^kk`_ zV0!!U^Pqo%S)}c*j=sr3;>9b155Q3&kLzqJ2L1LO`ZDdikrSWezRQGobS;b3uqoB{ zcs>YW5w>kbS4hRxAA4Q*j>!4z`FASN5{K zUPs1#{e#D!_52O4E`LSiV#C`1*%#S{e85{0tw9SOf~;g@oi6h&*Qg-z7>h%w-UzlQ zxfT2ivcKrofi(L3(*LznzpvY}D5C6`_+_Xt`n-sdhZWL%y(e_fyxRXb&pr=+*IP}| zcW=yktDd>(SPFq^sQnw-{AbR!cm8gN^>Z^?>Lv6*ibclh(8zIekl2OHLsV`)Ijrsh z95=lxPdE-vC7JgsD~yo)xG*{MkF~gIcU3ldJ^zMECQfh}MK-$&7LjmrF7?za_0lc% z{8m<-U{LSnBF?MEl@OpT`MC%GG}L&V8Ze7D2QPq5DIVU{hi;qb#oJ1I*ROwfJBd$I zuIN(RauJIFJ?OhBn3cu)c_;BPW3xywz~k0MQgEYVUO@33N4)Seg zU)rro`Lg>Mq|)@RRry!rPa!?7#N0Jl%Vge>iNz>9hos-Ei2 zVXFuYC=kph^L*}HIQlwR8mC694~o!I=}nA}=N8#Nsr0!bN`54X-9mtcMZ##N;3KC7 zoXwmZP*{233M%*d{6mXd5c8I=agu5|)xn|0(F0(4I^E53^b#>9bxErB7ntQqTWm^5 zs(IE!7Gdv~oe@%^_&cqbxwD_tUOs#1s4q7>sie7A$ZA=unkpsFG_4=@MQ?Sp2}{6t zwD#P9mK@%yqc%dl%Dxw_m-f>xq53JDN2WxWv+?n<>Sk3o&|h?gCKGf@e)9fC(ESuk zE;D@}4;=|YJhjDMfde>Q%*O%b?-W`%S5^vTg-G@@i?I~>uKJkU7gPvN)j(XkrwX@Q z?}u>4e=lk9&ii(DM8tXw>$?IMKao5wk7SbuyZvRE;^6AV?l0n8Tc+QrPy~`(g11rz zzO4UIOb6vk_P=n7fmWM@KMH2K;|L;b^g*WV*0f^2Kboa*ePxLo1K9!wg(2CnRDi3_ub3!=$D0!RvrbHKcgy^0Biemjf)>INwj;nXPq2 zrd@N*<3fE$LRPD>d=7>BzvJ!>Lj+0PZ+#lLU3o=Kq^#m_vDF2d5HgLgxu=NU{glv? zJqcd0+2!WWi8~=Hk2q$c3>5tx*9+AM72Eu6twJ+7ts#ULm4g-$-lof@(0TZ-vG zr@O)>K+t7&2WT2!TN}M})wt-s3mlBNOXA1wG?=$p9TW{k`Z^-Rk5102zYO$Wh-M7+ zgO7agBgvM~QUFaC@EXZpckmp-uZE}KJ!GK!rKM4WWws?L07uY1bJ0#L<198y;Gvw^ z<3Q=pK3&bs@9p}_25RQ)L*uRw;XsbmE*pFOao{Zl=$CW{+x!<ⅈqV>#^?Uw_g8b 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

    3. 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

      T;0aD|`gyNsP|(g`~jwArG*I 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
      obwq#W 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 z zClIoLl}{z`%f8W|QU;>!*vM<@;DCN~Y*?m9n-W8dohJD~vs4N@R*HJ&&O?QrKQGb@jLh92SXMpm$?ONIQe z!!1RE5S@qXy%}3R7LodQ9~ndz_!p~#y`-QLYmZ(P$~`V@qMwU?KX*6}>||joUZ3*V zoE;TXgnAsuD~TI?3^vI+!}*@apZLeXA2lmO-&4xRC3fzeuYpKKhA98P~LtW)FIIA zhX)kDwB;qVI%70}E~=BFZ#});$SG%2#_u`5xz8$M^7lo{9WDzos6$cBDK~FXjDq)` z#6VWcqIvoxe)Rjq?b%v4<30^>ze}x^apw>B2hwDvQxO*pvmrL;dJP`r_XD!;hh*Qg zo8E^=7d_i(%vb)Z$duQ|&bXQ#cq(CAueRSi?M1os#6Y@0yz<2O--XjsV`6V6lUh{M zz}2ny&6MR2YdHf0mhC>uSUNp((uIJNq?g?H$U9@4j=xB*y zQaYo|^hck#%g3K1#Oe~&1JOj}W5mui#Ete(=>*0r`{YZ)E|*x?$F0XySTP1bU{-3_ z^Ds3kls!VjWh!;b(uf-YccZd7rbdG@bqE^#3->;DEG-a?MN_3(#A!0N9E32s&6EZV zV96rjKZyaB?$n_dakfO!G{ApQ)>&ox9t#4^#$Oap5thtgVc`io+(d?dl9~OhhyY^1 zn?uf?XBKD}dBIurV|TqF)w|P#CA$$oUqp2h3Or4|*EjS@{L|t6s^MY~;4e|tLVInZ zKG?Y<428cj^l^*BKtcft&`+W_H<=nMZNXdl{ zaaS5g5P{RV z1EIVe9Z^Pyma5fO#qfV&%;My|5W>0ucRH$ze!cGr&{SWmVX;IH_aBP<#?`+$ALFkB zrz1}Kupv0)JmO7va(yWwhC?T7?$QlbdA?)GTiN&G#%!5$zIGG&FQ1pApQ5B&uW}5~ zrWjt{_$~MOO#!&Xyz3?4;cB8R918zAZ&89qvdu@fa3dafus==MU1}nhCIAMc08VMB zD43O%w%3==5d2_`H(iH(_;9T11L@tVaS3Y53_CqM+NLvWuQ^l_0!x%|9OA+!D3v6; z>!D^y0lSaW4jJHx*Q}5UMU>rz4_Ij0-#Ap76iq>R;lT>JjM_2fxY{meuJ3U09HljcEAz z)F{}hs$EAz!ToYJ2005obF4H%O%J7~2_w|U0g$s6_psYoeTXB;Y~zofEA4CwC@?Wt zKVG3hh34&feNgH23VjM%JXFf+9AM6mHFTp{Ck75$WfeM1xV&$Fb~TC$49c{C*l}o7 zDAXy_Qb+&-l`&hDeaDJJA5|!#*J_GL2|j{|5Le?mtk-Os=uP|6Z+HO;iOoSv+vJ1xzv{;w({1eY0aoEnz8H(IUb^68=;!b_M{?ii zhkq^Sd%0r%FDDdbK+ha>L4y!n^SW=hP^?8VfD_{b;`i^z`mH#k5a;sNsmlC4^7a5{ zyl!cM;5 z&BOVT&i9Xf7@k<$7@FG{VjZ3kom>EpCh4O5WdBuk(>K3zz=Z$ENnZtoL2UrrIi~=$ zoWbOM@jN%t#x!Xj-R`44tLQnW@N5}ePOjziZe}VBidDz@C6oOsU7fHXJy1B_RUwT>|0Yl8ZcG`rm>Uw){|XYC;l`2Bh62Rt5Qh@}2u)e2!GccsxRZgM&s@ru^Cbn<#Vku7Xg&!z&tr?y@ipbVpAPhKCIbq_ zj*7HS@MDeIIH+?4Ha1gpU`Aj5F|Olp*|siMXCfW%X`~vc6AV5iYmNNU#+FZ$sZ3G$ zpdoKP)=k`KK$kkJoN|atmo!wu{R35KrhkT+uWM(Aok)q?v}XrN&k3E&D;@;u5QuYG zU<+C?6%I(sUj1AhLx%$bJ+j~(yjgvRgZz1X<|amv+cRFq4yVm42D}P`K<$c2ZSG2s zEyjP2zMXo~m+{#6l-!<0(o+5>m3P z(HCc`DmAaaW$vtV->dBoU>8=ph+e?g{fO5?1f$9}3uGF3dF?Wm^eiTve7!QZogU36s5$Ih5fh}Ci)FHSty zumyLC%2;)Z^4o0$03bp`oAJA1QA)W(s}fz>uoZTz5nZZ|_UP{1T-~w=0BA4$g4mKK zw%lG`V1;SD_AcMEu?6ABjahgulDeEWDIrR6bLu-0z}K_vC;QsPISVA&qQPu7+@C)% zeu7H9ui>@M;750Q4K$Upd=eDwP?h(pE{#kSd-uu~#P%+!)^2x~s9EKu0S>hJbRGo` z#=jL3y1pNz>fcrDI?Ey)E!aXWFHe~blrOn^WEY;jerT+7fE&w&A7>M+JD@2VUv}C0 z+osA}zfW-7RQeRIs_IN3jMp6EZ={u{Y3S~{k(8NAt7p(hTRkMtI1t(!iH>l$@%@#n zLGiT&CGh5a_plf2WMkZ@_apPC&#o7i<2nY4376g)wQe|F6b$IszAj!+1M6hMROtn= zM-i`9v+AC7(&e=`0>1P(c&(eI^C{4qNmQ0t^TT;vu=-z50tjBg}vZ%7QZn<5q~@WzW`zKd0Wrs%dAw7u;+^a ztPhu2WndC4HFV5lwc3|9y#&+9?*z9cy1cFqyHdt@ zrNTxeV+i1I-oL(+2WnOou_Jnp^ zw&%L+H8;Fg&K^-C7t`12tak;%N@|Lc-ppotatDTRx=birwilCi`0wwJsMbj!DpPbj zGo#=B>kPhc;$EJR$?nqjaoOqcB*{Jf?Ks%+y<1Ju=zZd)i7eY;&hvPINfLthLQ(qD z*BUgW>Tq3T&{yNf!%Ri-Infl3b1Q^BP3_*P-!&M0f|=7+egFr_`^rsocaJAwplG7b z_7M)0ht!4hLKuplCCd>V_FZAOZB^GjXtpENg#UU)S|7FLdvFcCyH@!mBnI0{Jm| zY#V4egLJa7B@4-H3SmF}YxNgP%>qp5J#AGhjo*ZtLK}!@b#>#p9U+0Cf$_@?EW}Z9 zRi}zeoq&#E{0Y`to0ASiN<&+lF-1#Tfi}&;9jv9HudS`mSoKx@1K-MycfJyS<^(}Y zt3N;hyBN09)%7Je-8|as-SQA*{Z>VZ$qGz1I_q^m#I@!sJw66@mH5Wp2wwIe0VsH* zCE3YsQ?w5UA*4ec< zDde+Z+WRkU&cfdJR_lc@*}d_$7r_PC?Wklk;JLi5`Kes+n#t=|tgenTkuChg2e4Y< zTg%zw{ul0{iFB0Ru;H78LqV(gl>5n&;tz#xRhrFfXI}Ob4>-10^&WtSE3C9x+vB}7 z-ESyK`eG%OV~OEECbfF>x7e4*p?}{*P~t5E;gcsz;iDJwnBRjCWrB%Vy3>*1KLukAKeI&DR@N@;ASw1YDg@n!vJ% zUC#Aw&nF^=`ynwfGatWKW!JlyOB5Y4HRM5r1N8tUg(r{iY^L1qR|sh0%sZ1mQ%FKr zSO!hvUd6gwLVqt-d#Jpq_@b1uslaluzyjiSvlJ_LbE4Lx#c1NyPn@jnS#m**cqn5+ z18EdPi}B0raY-6RBAJsB>gxWk*ZXxHzc#}uWaCZ3`Y2IMO%Wh-|HTIja~YW-8#_B* zdRmN>WOTp!OtFs{a59Y^BDlDRVP~fx$my9I%T{pS{wxDmpgp`h-RdbGcQVsG6P8~| zhO(V)i5VhVbY7Kr?ovhgN?tqg}gL#^8T)o>CwpHj; zlt4=;bWSl^HGBE71OCfZ$_#V&yd2ZhUlZKv`nOmdg581ELU?cgYzgXhF^Z7J!;8zo zwIdJrSW%CwqiYB9Or=5pdhz?$Cu?3)Y8v2;i2#-aHzp~mD!XV=JM%iI*`X#6axyVd zAzIHdmx;J~OOuD0gFXg;+pd4x?t8y=hAz}#S(^IeS5|gi?GR?lFZ^R^6FJO95XQ&0 zJL%fUwRz%ebz|Oc1x&U}B^j`hm?N#Jlhw4;*~&4$FhwE{?1<{xc}2Cim$XOQnyJZE zufMFWiarE|XSUNvAAjzpJTHi8hWkFc(s;a?K1LFnaXnQ!LC_XJGh>43oGcx3(V{kb z*w)xscM$!ZeN~|De6$rs*!yUn>0L)~-FR-x)ry0OSv$0u^w;IrH02n6_$w^TDSUv; zyx!#vj5REx5`!e*h=|6HgX#o@RlvJ@7Zc;3G{0V^z%8Hom=Y%K;6n(|LE8nY}pCePd0DrK-G4f zjMHQFkM?Lh`hMPFZd(ig?i~fp<&o7(%{vf>nLIOXZHBL_$$B@$(4x5;n%lGORxKXZ zjB(<%x_GB}RU3@7Q{tU-g%v3o1;uj3{*O2zjit^h-1K6@mx&k|#kNsL%)^0-Lugc3 z_vNq8oZ{%gnFI&~QUiU)!!I>{DjD>Ep05yL6XRnM%}m#dn{(S$RT0`Y|9oT-m9XG_ zM0eEQ1C%_0S)o#3H|;f_KQd7V#U0+ZUDc)3O#@c}@Dun9Xr-1b)Xp3NrpB!z>=dQ| z4`V$T{=dby2LkK&_Y2^ChN6Z0#a+IyBH?!dd=8dt+$)#u4tQNWKK^D7f=E#kkK1Fp zv@!M7%c6RhbTtt)t~f!*->x@T%f^vn+kH-esyDkh!W4)v_41~Cz63VUQ``A;YQk7SwvXZ97O&vj^H~}PEl~axxT+WS zr#zZ2)!yAL+O;m~y8>1|{nPrdq`Cf>j)oWf%;@OQ=t{|_At-EwWM@ZkP|!>A+$iF2 z#fSSx*VPtjy42^^outsFS8_s}4fh^3J`Gj!ONXzbx};-n;K9+mdAkNXUxbq8m?=#V9s>HZp67`0Y>De<)lpwz~qGy2~qmN)?cJ+Ggx6*(1^ zEJvL;ewGW;B;^CXAx~QRKZ%4N+VftyP1GY@88YV#jEwYvB8kyAQ@yXcMp|kH21fNI zxcG72(2J|fTPOzN(OOA&b9HV~Qg_LBe)MS9(^9M${vUBDZxHFxES3F!1gOf%iarwy zTD5e$KnwQYSiOL=zvdm|d*25dqtm;@1ZC0Y@MQfWZKR_y_k-u~JC+ z^kR6hFakR9xP_;IfC~`rD($E9QAA&^WIG8cire4w92u!!fddWqFb}grMklyLKAA}S zxnedd=xf~zn6t4AGqe1KV5SR_qT?d(Zf)&SV6N6`E?lM-2LwI^Jlwao`cry$151Dd zOM1&4tWxFI&pEUP9j;D!iytTthLyHlu!(;CX%*8P(QiJXsvP3AFQYA=U)_AZ$caOP z&t`v`x31E66Ft=Z(#K3^zNss2mW-zz!%uY8iZdkxB&-}^&w{N}XZXr~o57Sr8)e>; zNKUvq2_2yR!C_Rzvp|*%m|>{OcXeMJpBsn(WfLGBtnnzO`*s6uQoZ%tlaL2M2ACA zdh-F8N{ijvxFb!uE-gSB($ixO3yQwq6;F+phV$MpTw?b2nxwmJtyKiGF z{-=V-vq=xA1dyMmivh|{lpuL22`$x43e11|6pPT#aA3h9uM#e2KeSpJ&@S>=~P8xfG}<0^CJltj4nBJ3&R$&jwzMEFVBv ztz37DQ3(jrns;AmEc+Y`g-8=EWzm&FLgA6Y4qGwi_r1BMY3oAMr=#NjRAeL}CWn^xsAPM3VZ5cZUJVm|G^^roOe3Y*{#RcQ)(!Y&7h54lI69l9MOcPxwDV zQUZ2M+oj*YTKFIHDM5J5f2V?TS-y6;pQb3$5s7&i z#UW(*Yz`Gbo`fcrPl%Tw;UxkUdkwJSd!~z6H|q#fINj3b>nR?2KJCUVRSd(UBY)+9 z3f;)WC?m^og!vDJA|S^iz=KiAxwsevcz9SyA25MQIqTk81_*n3dDKK$yS6ya*#P;T! zQ&F9+t%@25YXHRQM-Kgyu5+}Lr}dpva|qKwQr$Fns*CYjapL*R6ya53?-2d@1qEP@S)&x!X;NNZLS^5dj~SR zkgAuF$@9GN$k+dX0Q4aB%c5xtEF6CV00L$IRlhArc{J*$uaD#WWv;N2>CDCM82I~} z!h<8y3VZpG?h{G-sFz`$4kJJ<ZwYAgG2?wzeVJO52Tuu2YLc6|W!282W z%np^#d{K-W_#iz!Z2@kfUjA7$P*W@B{+bUkixQAgk$Fc(KP>t3Y{Mk9)Z84I3Jw8H zK9+Dv&uiNjgsD{+yR&dqe%i(mbH4+lji7QKp1fXMBQkyVm!IF#&;wYp251eV~b}w5u+p3V& z3!g+p$2;|^U9+DlEw!_pg^J%pvu3~E`9KbPn;xuv6QdJ;%!K^T;{2*PY>la?A(`pG21k=?f=~2}KDk{8ve)y(7u_qzyxuYWjH672d_JLDW==op%$wX$okOZuqEl5h zyby!ZfcF4y4JG8gIGj4JKg%#3p}$PGYzGjxj_e$z36 z>sP^rSF}JPbdlgmqHHsy?5Bx2!;cx96URfp^x(+486x0I?SiHhmW=1Pp4wr?q(}dU z&7_O8SWF-1D%kNuS~pkPhWtf(?~J2m&;g&@0zp|7lYl)Ihy*Z;b;;9IAdo%mM#a?< zkbx;_`K2i8AUugcPO+RR^=xgq>Do*Y%rw#!?0dccE_lP0-%IDya@;iA+DkBg+VRqP zv?ngXL^^WeKrB;avx`xy_w~_f=0Z8d+6$grtZODd$#%f^fRqR?ZlJT>_jt@ERiR9a z5lYaH6TKwdae`=;6>)~6Qdeb8dNVVh|Jsb0u-FH8dwmIgLWLkr=n>!J1=FQ z1j)iOEn@sQfVbc!1k8MDFlZrz73fld5AyOhvi~39Uu|r}J(2pKV z_>u?-oILbWC}(13`U7Bxl+UYy3v7R^G$3Ppk=Yy|T)Mbkck>Hldnfc!u&QO99Sa|q zdIw%c0(_-LzRvL6+?;}anhKk?94%ix(t8QaFh;BL%uM0jp(HmbuGElUKmfPCleE0d z;c4OaHqS(c){1Xg2+En1sQN zq*1SgZ(OtJ!DIkZKGJta<(XGw%HaD=a;Aj!dT1akb_p;BwbxdbLk2(i>iVEa(yua9 zxIzF&o z&m4XmEt>PlFrw2g`^HoR^y!(>kkd5swU}_{Jkk{MHJFs?EZ6F51W040Y$k~Sa)}gm z>Ikk-_F3P~f*4)$FfWu0==CFmqbOrk03PflAu9MkHsB>3Ol=MZ_%=~1Q%MFgV9~sC z8vsaDL$v!jjAo{7>WNU{A#=bStha%(cG05QB*~2s5L;7rr~%n)F4Ze|a1y9=aU)io z87%M-16H+!O87wQmP;R~9QK;kEs~-Sf%|u)rWQ$=Ql)L`?3D1+MyNIIt%M?!il|n+c)yG}@E-60 zjpAx;M{R`&g(6MHhPgSR#%UYQPaFW+!VQzN;))*IZM|4E^1H0P1c+ptM>^*h9;{8S za4Y=OK7XJA8ERP``OmM1Bn#-kaFdH00Vx1j22miSaiBFK^Sw z-ZXoJkc$%zhMI||tgs&h9Y(=rjbo)1(=k`P1woArrYYXsZ>xOKV=y2}F29>)D#ry- zu`gj%*onkT#nIo?3r^M)!h>JC3kym%53=6Re*KDy zX?hJ`R=R`fCKQi2f)h+9V#h*n@wKQ}x`Pf+cH?Z%*SpN?_4{cG5HQHn78_-af`<0z zyaPWiIW;-7R+K9kJyriI*Pu(2E7I1m*KRc0a}#hdu;3u1OC7TUsHJ>yV?NM}_?Y;z zmy`i3U^CLCO6O0n=V>_D)Q^}=9^VE4G!u2mH-#dFA~nc2hsN@~DhYr8GKDfVh?YZR zoy)v(;Z!S|2w(K*mYcuGJ3vz2vqdB)tbeOc(1?J%doK|LGgVx(NQ$3%y&?Uvv4Pmz zyU|FURhJ1*qZOzyX#vc^Ii>`e(@1l|9u8D9kg$0eJ!Y&HQ-%tCN*Taml`Gmpgd3gadLgP#^gGI8kGV zw|xUiv;RJgQK|Ckh_og;$!s2D=#|^%+2rW{TqyWD#hLm&ZB10&%YOp=A!0Ek83?7o z52!AiOu%TeqWk5q7QZ%W@pYa4!x|F2w8pYVkvECUxnLg%l1R3JW=jt0xewftu;}HG z3+Fm;#GULiJjhcu6vl_!#`|w9Z^eR#(8TTg&ySP^Q+9>x7k}O3Bz7XRd0~<08XIhi zNKx|_*UfpCRPGAnf%9%IpObw^q)qnra``17_5o%0?YcRyt>d|#pO`UUT(UhxYBIID zHtl@KQn58S>i4u&F=_SU6K9WBDDpmCcbr=`4ZJ&q7FYZG2#|7>Ndc8jeBBsn$=Xs$ zmU7J4KagFIRwILz_;Ir3|f*P!8FhUd@t426wa>RB13B-LbfNd%AD6x3#tdCFO9EB=$`d zBmW>>z*<=&_ZL=7x^yA8otMm~I|-hQc!LBP$ebOo1Mp;ZAY=Hc^7_Wc26lWIz)R4e zvQFnSq zku(Q*?Rz$l+wja+5S5|$2#f`+rPd_Cm-L@`2`B*xvB!x=;KT>eyZ~tI42bXhIgo*m zREX~ZR0cJ}^ib(AU?Pf%o|D^gDB-hv)_O zS3Ni4sGuPePdQNQ$wO4)1eHSWnnj;L7uv}i)`0lN15TaF3TF8r6Wk}t>#efi%)*Q^ z#YWW%@2X4X%kzfTzr!K7EvmHO}FLJc-c~!Bl{Z1U_aCl(PugCQD>D18K5%wiW zDJIExj6k%HOaybry492eXXEJdkfpYcN#p_m%1aL-wn= z>-K#9vyJu-OjtiN4DToeymr#px+!BNO)ueTt%uo9JezYI@CVjnGD(?E^ z-}MQtqEl?jHDHhJ^%~l$te5t1p>;Ro3Ec4$0bUs0@S`>Fqx6DQOq)^x+sxua@YMrG zQDcih>f2*+c@=yRT_vMZePR}C(T8ueq7wmEzC8t>-pU$bBj4zZ_v7&L9VfX<&&N0T ze|N=RImz9apb5$ravQCQtsVaQru_+^pj1xgAIgtfar^?zaQt_L5OunGs8 z-L6S~>4@PB?b3JGD$&DGUcuOj$>jgoIDa+G)X=SBRFK|-aHGUoY1fcrGa(!?2umPK+fXU7ASu0MQ$QIAz)U}3{c z1D>FDQNiy>f#lL(>zN5Mg=lCQz};9gKgRZmi8%#HaX!(|#f@2WCEVViE#IVIVs>#Z zmtulIWQ-eg0eNb6uq3X)1&xJ3;<%6tB_FC?i#J3SrY$q>QMVq@d24Q8FJAu-O;;IJ z<@a>22uOE#cXxMpcQ?}Ap$N#2ln`l^GwsOPf*mB22li@z3~fWQFS^y2jGS4rdMMD{*jbzQgFRVi-x+qVDZ* zfIx9d#RS(!MublAECNeEE$n7jj9Wfi8}HRx13uj0Ou4#-1O3efg`xmm04IAh_`{dZ zpG@gN;Kf~4ir9P#Q@}5Fi>(<&A95L}QrM8}_c$t0V8R9*<`qC@!Hqkgd{{v}Yc0P3 zEEF(OQ$HJCgbA^p-Vfp>Ko$SLyb)ZP#qW<(594L!OvjKh{+|xjKQkLvO0>!jr%1Ni zNN)aap0BPFu;w_6G8^;T4a;d}>$fl8RuAucJ^8i5yb1*eI|D~Nm?S61uxD!NV4VU( z-sS+ONXWy*^!@L(W(!Rb4ULT>O0!~wxsNx%<)8bt@avOmUP5XzoV0{^lo}ZZeE8R$ z+1bRHyLsHHzHeW5o;{s?g#cb7VLcyFRTO)4pN$8fk)|b%A)(A>gl<@9=rsRy5rPLv zeT9j-?YgMSJm*0Rc;EltwjC^!w^dnX;R;>8nZz8R%=Eo2$=_qEGX=0C{4#8Dc0As3OUPiBhKM^g6!$p#JY0X zW3~IxTw3f1icEqaudnvn(iJPBs0}M3R{?u-b`%!mdMfihEiJr0IzX}FKgdh-A6`^{=6A!?!^d!Q zYWXSC*QbvQ!=BRzpRD>KI7fp8xd^ndjfp?+i_-JArD?u*6cKxc-u+NX0Zm%)GuPw z+t=fMLbtF1)EI8S{WG8^C&Pt*{f&{A+tR{DDcmSUS5iVZ7uUOe&4iONu(Rmk2zcAT z0bc#GjLe|is5SJrcfK5klVQUZb6a?>pe6^_>@C-y4#3(ZL_n@?di6hj>tprOW)z`K zzQO6mA?tN_%g75SGpn%Kwx$NL@^b2Me0|loDrQD#wwS@4(m@-8RPIhL@nvC^qo8eg%RI%BQ4}ws$J`hdAYsv-LXjbJkTElqJvIMPbe2 zDf=sNed=-`K=)(Yb)Zz}d<2<=ax}OD&pR8^R%?*c_%cr6m`Yn4FBoIUhq!#WrT3)a%SBai>t>wyntUzC5sAn9Vp||M z{EKz8&Su7k?D1(%+rVF6jOdf*|GPOY^t!kmo2{e3i#RFdUin@;fjP-m>tMlfF+QoK?c}*pQI{nvHahmeRe3Njhd{{LT~lKwn9}m`wF7tw#$y_wf>}gG zSve_{Gt?p{r}u$x*5;rq$!2+3;A(ul(&-FsB4*kX4w~2lkw7 z1a5@6#SmL<`GfjlXGePQ16`Pd0}k7ukQtJE4l;@Q#Z=C@0|x> z^H=lLp5G=JUub9U#*Iai7ZVKV=|?betrh;`9FWEza6_GwK!(a@vso^^x{Z|5b4J#`N!>`GjBaOOEqbdw{MR6plo=(N zC-q6te2QOG>y+f|C5duN!$i;E*zX~|?030Ll<;FLz8?A-zBl=u{c|7P`+B7GzZ~9v zL-NA0gFB6>YFjr^4J`8h*?^4-bbhnzC5jj_R+cJ}WI0tjT*OcZ_6<1TMeMLTb6=BK zS*^|9(80lF!AZ$cdP1$QcVg^V5}s<0eg>$mP}=!gcBj05=#+lw?H^pgh)-u3E)^-| zY;@e};95(aWw`7J&imcX4i0KvYi6IPf03|!aY2Gy-QUL!k1BP0QSR+LX%0w-19x%C zdr8FaFI1REP*52yK|VDur>LkrDW@o}tgN7_ym;~1=IDfl-*Awp#scR`w%h*AQ?5kZd!qnuP z9D-W=H6R1c10_)`b9xNUe9oYwrg)H+J3DT4QK{Vazvo3I8gqx=X#sDy+#kq>51K9~ zle%r#^e`Q&i$WZF$Gr2%?JEy^prFsc&OtkTR>Q*7 zH1V|hCPziYL(zgyTUm}FyulM?e)3n;#lvAt5|x#`;THMv8ZCR=Zcsm6&P#hA zT#n0X`YK2+ve=)@8@zJ|WDH$u$IbgC$)kIF-mkyaj~)cr8*fHm`ZS$ znRtfg=hy$tt^#Lvb@0!h)&BVk#)V^Pu}4;bG7*y%fG7B%ro5$v_ri9$pK_Ho2ajcp zdD)BerB|ri+$cWS-Y33bb3KRDZNljf!|g@BV6YPd7mh4DM!CG+Vw2yT9b zdK!%7DU0?YWdpMY_E`q`Kjw$Y;1=VO=M_#(HRS}ryks2upCSj;=&2CWp#1ONWbBg=5Fg!Y)d5=pXC&$xAv|+( z8hmw!&qJ}i*}JmYJ2JkGaXmop>7+)N%%irx_AqC_NAaVkB(xfP`RS=uKkfM8a+86X z`2*;$D4!)DiR_xIsk8vqGAS03Nz`44|(jaR&CPpwK&3qK+fvNDsf|CGJzsE z#@5J-iqwRZZnxl|@n`?M8kKnxUhq)Z!LWGlKRcv*OnYQdNjV0DvXXOPAnmET%HiYl z|JSy5h1?tcRrEj3`OOcp8nq{T$GWzyJ;_h@5Q5d|yX6WX%?%Z81r2o_3K}NlRV9gm zbDF0|f04mQN|MGOh1-6R_kD93-sSK!qSTB-pF^W}+amhsCwc0nTK1*#wJyJ>@y1)& zKPoCJkjaHfoJ zsl*8{EG&{qL?b19pkZL)d3GYRmjeGk7r;?TKMgLjZ$*$V!1q}xgMF!QZs^Y}!H8E( zXm0rba9mZFZd5{t&s44a`hdsrucQH|nj$+(*uyA;HB_lcPtPF3&_Lf{RnK6>PIy`F z+5`F<3S!EL2mITL^?2P)1#c^BRl)jls;fQWP-nIF<;WtWXdqM1&&S&Iv}g9PQ#4=j+HhlDH2S%8+p zuxA;1{AA;dPIJ{x@w|4508++QaFY*{JK{IDsFhmyG&lK`M9qYV8}>M-3UT-9pHx@w8KbPVNa zwpO?{R=AsfM1{mL17^N7O1iR$s88g8YIJ7@Bq3-L4z3b0EARBrG=wd>1t=&O_H3<-YzvAD ziVLMWgZ=LB+`=W|Wb&1jCmhd+03)3fX99KtvRzl-J#&~3c@S~SYaki{hnw1O#r)7c z$5>}xi-WkW7wyjCk|_I9?NWaYPOI~t=hpBGEho}>AoBU9?e?3LL8`UX(oY-^Xj*T* zK8v$~#erZbVzM#Mqe8s|HgVNcex6`rt>EnNhy0Ao+%87FDEt)9bUy!D+KOR@-FqX4 zWqq3eIrgb61;)72FB=-0ukZt zn)Thf*B@V;z?QKpoN#05ZaaNmo- znmF_Wk{N$?uT|YegbAsT=e%x^A$Dib-Tf=g!$^1fBhp((Ga19(La(&U{RR{+X)n4V zvwBmBl<)q{N>T_h13E(6r+b0G*Vn&!l!jf{Paad8@wOz(^-~r6h)@A{GTtr}WDV4M zOpD{|v*YV^TcHmoOzKf=?Bpz*l-!iU;FUR9S=4iFx;;InpMC7LwO&9rUQ^q+^bx1}Tk2LH zp<;tBJ)!#CiUbOU>gkzf=A>j6WVAfY?o$>umUfot-y~%Uqgh6M+P>Y42^g|?f19XV zqPo;KocXo*)E5=y?{#;z`Qqbpd`hU2$>9NDc>vf$jro}?{jud&u{mmA9|=wWkOZ2Q zrNbpD8rR_qX}cGyBl9~CaF69ZTsB}%5)IZ$Z3b;X)7ZxUv%kNBjm*i$^l2pO*`ghn zuTbyg=FG^z#LURT$jHLxOe-?OCOH{dAQV9~Cz#mcM6f`ne+oq~1JhfDybA6;2w`rs zdZ;dGtHE71lA7@>Giplhg?wwNna(=VK)q|xnwfe3meNK3zj|{#D7zTko~_M>uai4R z8R>+-^iOV?YO|Q1VI#Je`zxkp)tgDXCK>5UU7G86?%`cew@>#D&22}IDW(j3iF6n% zZIzEuK?$RKZu0!-E*gCl7$!2sRE7K0h5N)pe$ge8M}$Wr1v!_YWUK;}9)~D)u-_A8 zj#}^tI70Lr-*c=ols%#2r{JaEih!I2&)%6{oz zn6&(PV``$<^;As9d~<@zaxZz<9;3hNnikKZApcoPTBTztW`dMwN1n?m?cy0nt};1! zZ=>C}fr*?5lz{mpM6>6DH=A3lS4KY9GcU0MZ&n)_)9*%u14jq1o9%P)0A%Ep9Pj!{Gl=P|^x8k52K9PFpN`^};p4C(5fy zsn_w@-Ldk+Z4kPf`+PYe6vDr!T;6(9=pWl4KHi#?KrEN!^tgYmw|xUJ9j$WFRho(2 zPTbl5Ruw>@I?@1f&_PRhy|dZTh|_Gkh6Yxye6MlJTZ!_7<0CHVQ~z2;vQGE1aJvw1 z*U%Jg>ji`$BQI)xanVS~=j3R+^XtxUk)Th;ZT{6OQT_9uz1A~IWKl1>eDA5~ubD|y zudYwKu7+|x2Hd-OyUA)e0d?^Q0MMYd<)yW4uH7xRGZcw|?Iv&!UOQ-HLt3I`n|ssK zU!$--0pMwFJ)xPp2dlBoB$(@X%6JIt{@~{Lrx1Q5Q>!_b)sTL{EOh_=;l-t%(cQ5= zK!z*KA=;+>N|Pg^as?JNU81c$0E7K%R9n-MnKKq2{a<^qNu?H0OP8T1_3oTx7|50F z6Qn6sYMEV6pc2Nlx=FKCg7LVMh`@x$90JOtQP~=tQVx*DOZaiSYLL8>**r zO-%I8Lhdqth7N&me2(`o>+GKz>JY9wi(MonOhw@05d-i^?>T~>1}(#0d{yyg%8R?l zx~CRK#J_P#L;{qRv*jSy{sa?Jp5JP8Ks^aDlvdUb`V=buMbBw`hpK;w#ki}8zBtsJ z&f*=awZLNf;3WsEp#=T9uUS=n#Nnm7J2D6d*WFp#?&p-x^S|J?rrt+p z%lI4V5D_2aNjLqT_qKrm&5Ir zx_hv*n?j(z2~LGhPF%29!Hn06qcM$P>VyrOzQ0itjejLKftRv143fAyuSDV>62Ex3 zrn@^>WpB>CJ;ZyGZglsTG>JSY(9x*|ZTty0cT00|J@!udBbsE;bHiVexvwu;S_?*< zgl;#p`NJ)Dio7|-ZBOF^y{|);GO>6^rlzIkr~gC$;+m`9kN(0pyO@-2F;$iqzne$V zq$oiF&H&VmDRJU^r?}8xRUSffi^fSq+{)R=JEl$)sUYz;E-AKyLTmga7h5Wd^1n6gKM4Cnn(SrO zs^5$-=R!nDfQ&R+!uALj`W^u;uz9{ji(z(7BN1~~GZ8Z}afdZqlsR?jhny8HF0U@H zDz6VK@Y@4%j~?wq9=MiNApUq6vQO%<$DIPeY(ORMvHrY_k`6H!FRhYVOzMtmQ;L&S zqy#qrPmVyeq^%nhWE0X>W!i3GoA{u;Byx}X5?vjK3)KcbE4XBE3_ zY9F-*p&TJOJ$5e|Af!dEXJAYm{OtP*SrefgO5@`XS^2eh_xh36#RNVmZ$`|HtIQ>L zZJxbz2nCty&Gt`9Mr0R@*Tvo!4_Z{EDHZ{*rx2e|4V&pXTs*u!} z2N}R2Xw5bT&rvTns&Hokh=}yQ?Bp|uAgtGnn*j#Y)AQ$P1|ldN0CrLkwhG=mpI`g* zYIDg}_hQG({SKbc{S>n2dj~eHA&qv4E5`kr3q)vQff_*`n%RjBhpjwK$%xoNi|!p( zmAnL5Ss9@~*Tczk2Wp8Akq)!v524uQJa=acxLaT4XaR?)LLgC{mho}e0)qNkMNI#< z7T`QK1ACl>%G8GGvC2C0J%Wf@Vk?FJxq|_Wut%!6AxW1=Tf@=BN6l{Y*}6ZphJ%Ew z&wQ~)fM+zRx7ZC}Pm8@xl%djm*DralQv{I+xyUUy%pIz?7&}1e=SDhJ44FJV58#8gY(qL zBoUk4a_n@mNbp8Ru&=iDz!)yD{PLSfi%)xzjD@9xD6mu_81gCL<=Lm!g%r4c7X;X_ z8J($F=URXk10;3^##z76d=BQ-Q#9oBXPnN78-K4ZvGyd}0>TDB2(fUr@{gwuv0i^? zyjb_IIt&%r4Uup6xI4Z~0yA%9$}$7kwS&K%n`{x=LH6&aQ4Tu`!kkno+k_*erYuPN z1DlbiHaQD@DF#BBG2v6UckGKOT8hYfU-Zpn)QU;Uxk!P(Q{+Z!XTAZA!^u-*#-C|7-C#xBMHKq<8r z#q~lH$4>nph#&XiPs^mY1&aw+Us{!oz+Ko8TPDky1pd=Oe;6XS5rL_}LJhZD|KaSc zjOb_tnHU0K2Ol+|;Y)}pKn)R7H}B0_Te{e6MSq|{h#v4lMKb7gR($^;`Qz&p98je} z;Y35!bjPe__xc~dJuU-Zd$x$5>(25Aya;{AxZ>36;?$hT;`r!{Pa53>AM)^*QC?N1 z)}NlTR}vG~v&U3QtrG$CBIi6^p0~Dc$^etm|Ce^XW-d0eJt}Oe5 z_EhNUl}L1KMO&KzRS5=yMs~P;$}MeA0xU=^0n0Q2&*l8^lHbwO-TOMzIsoB6MRmIQ z()>aS-SE7SYJ*I<~hV^IqYk_3fXL>c@@yEwQQ;Ch>_vWeAr3p`ZHM4@(_$$Ngm zFVN`{c(gPh?+gw9NBF!iZ=R32PGaZSoj|aEAev9yq6a%6zzEk1#}vHW*m&1un@wAkDp2<(#dv*aQN_Dt!5>4homBgikQgSL9}%oM?JL%a?(^N&pFT3*Z#E_upnI&)Ldk!t*;(@Q!P0Zf3Z}uuuH3K`ndbvRk7WO zb#)6++k;*f7kFo?0rBPTx3JXL4uKL~QKBwH8w)Wz1cpKl4a%z0(jVW;wHZ>B49cBS zN30YI0SZa4S;_mJCOL+@FVq)_ynk{|v2iWP=msdUGN?y0g1JNOS(&Q>hBNBbzw;>o z9Jfks7+}8unM{0jcXWAVwW$vQL{$Cnrw@5633qysMUwz8SM}w^D3L8Epb3Ll^H|ct z#|R{v-#;QIxtx0tb|>y`Hg`_Ee!ej^?n}aFO3glZ8cq!*Q+Be}w`3py$ir-Sdih_> z@n%cbe=U=d#_t>I95)P2Gzh%sI`d-cDRxFk zX!AdO4wIGKeZuylir7^3L9IMYBye2s@?ZS^7Mz6R93M4x#Q%9ET(bOCD1)GNh5cU+ zIV3@aK||AjjOGdDf3NEp921(=yPY`bRn%!A8IX0skV{0Yv zv`$lDA@JDTTxcpD-0xNIOgX)b(s^O3X##7X``ip{hl2%0kcC1~5g2dv$9(P=z$AF$ z5+Ri?$Xt2xc+bw!>HDcWgq9WT;OdT~qMG&a(9GF|EgyWp_c!Hx@r=IoJ_gp0QTD}V z?;0R^8QS|2XXRP$v?L0F%$kyXZ>XkD*_T!*sg(hV`M5+rM!s|#-VcFas>5tugnZ1T zi&=PMg}Nv`vB*G6^CJ+U^JE0SOY~ko+U5{<=C0zGl538XvdiTWIxK~coi7>R8uSOJ z@xF^0*Em%-sZ*tf_>#efQ&`mQKecK;KgW98!rYMzdLqnwYvUG)LV`H5<%nyxRWNy9 z;r@#Tma+x`*xg6Tz7z)@mF)YCRL*aQhxK(;?BcG}a^^E)6du-SE)4F(uB%e?BfE)=^K z`K-o#`D(*pFmh+$Yv5~JK!A^j*R2$V0~*?9m_%!wp$a!ov_PAZf%=(Xz$b#R!df8q zkv5L`5r(*(?#BM>i}@-&YcGu-Z`nGyls(cfgdca+H#awvze}X3l>~iRB0q6!eJ0X0 z#*vNho3VDQf&MB{O2BVvtOd{+^xm%rn2kADc`JT68?{($oUcD9|5tW*Qg(ND287?U zcXQR9^hJHp0^L}!ua*MGRgkN7UQQti&Vrq#aGU37N`85WUhVtx(+lQ-QTRN1GY zU2OeSq)6pS6!%+Qc!lfdWaDw`om9}T2V68P-1Dt=$m>dyjM71oQ^26|uZX^F0zxAS zto1f@_ubV(Aoe36#YDs+y#+0Oa3Kxp7hVRdl`jAYNi`)UP>z&STVTPC)z$2*E(1H8 z0CCg-GeSs0g8&|rO1yo=5Z7A)@vPmbBD6HWe(FUy&iPiMIzuT{U4B@7PIY&AJFSKq za^7*xa%NtiEGn@G0WiZ?nuxL06%|ZOjP2(8o*iq=2%rK$l>-FN&904(&h{DnwsR*| zD2W%#8B3xs}{Y3t(Gd9*I z=!q6!nQ8Jm*R}?Qq~fzVdt4vkx9Z`g&d@5Smzey^`%+y>$d22mK_ao@o7oyWCRD{; z*ZL#59oNb5C1RAoqp0e7`b)PktMdgr$5HZH_`eoekr)~l$vxZN?8-Ig!PR;P12zIR zbP!+9=*sz8mT{!iJ;KQ$_BczLsj%Tj34^dJVqOM1YIl7;~7w<45vD5hK^eOD@ z)uu8+stPKhAT|Kqb$=ibHlvGDaB!I;0LAv=xhci)(U815e$^g6eZ(*2H5G#FPMhTF ztgHw;`XC-1kjhc~SX6=)w*X)1sJnE)TxHoB1N@BZk($n+9a? zFOOai_t!4+6Q5&c!oFRRd4A^0h6Gf%;dNO)&p9RezXl?x`uh}{wL;ediz+EyhD?_| z9qfIEwh_-GC;R>i?Cj7WNj_CO>%l6YJxX_YuB;C(UXch#3wmFWe28!Nb_Azt-*szr z4?Vg>$1Hqu77a`?jih+GgIjI3{mJ>1^=Fn&Dk=DplUY_zgQYaNj1I}z7By8mx|{Iu zzVuIgYk)^z?F(xn3;|T7Z1;zNW|fB7r`c4K{#ZssmGDj#OgZw7l(3DnOIsHFSLdPM z1y_sXgiuIvZqM64Mi$@K=W3+@&3#S8TXM=zAspHl<+Ky^rf97{F^LdCasqYGUeF*= zjBs$YvDeG3%r^6-s>**7d2f26yv?~(cW!rQh3(ZjugGD?fx$FDg4IBe{-e4`g=qWl zc`9Wo`TRm-Ge59%iroXVl#8MkuTWC{E*d1z+%4T`GWyGWN8NC|NLCOFAJER}sYNmzOg!lpVh9e6_HgA!rxOIKO*JR_ z;#>S9H1Y4)^5WQXS`a8=dndC(*KMYFGE2%nH}pdI`GIu3fBY5>4h-;y00I;~j|CDa zx9<0=vXYgjm6YdQxgl>AT?#@G``FOZ*4oh4P<4BL(y1=|F4!UU^yGxusDnuVhtyFA z-pcd6X@IcfT7S*N?sG-kod^m__>LE$^Nujv>C7<@W%c8yTH;LY(ec)2?#k%EDHR&S zr#!zqk?lo*0qK!8Nj9X*N3ftz@nY+cwaKz`)-S})=zJ{E_5e;g!Ya5IleKbn9g|=z zQ&Bx5_4}KdBwba?QwkN;L$uSir1*;K5ypUrqN*F`;qc*ph3#F^>)1f(HuOybcrx%jS3SZ?&cR0fzG+Hk^mCUd?!xoY)Du(@G6>w-$eR0845< zSyDz;0QN_2N_BU+Kdl2zY=A5M9-5mKLWIxf%hxE`Mvb1X9Hr(8J{iD8pE{ONDh|!1 zKW)P3YGLp40CL(E9UddbjIQ0H678}EUiEgAOU(U4e}CUt%2eJhTEzOg01TEJ;G?CECV6X_r|=$UHw+8zDU zS4^BKaOx}o4INP$^bT&$aU{C6({u%%)9d7iU`;L@7eTwY(ygn<=nPX*lT5c&I(FZD)U9A=Ah0&}*N zXrK{OS>K!s;y-3E$;F$pS*~rwe5$7?&OBcfvjZA8Wqoo(Fd zdHi~8J+?Id7Cdu^A;8T2G+I~>EbKu`ffMe8EWS2*J$^Sc7KYrj5p5fir!1Ou2S2@q z2}%j{`CMI*4k?R!ftfD=rG{3+P>*JyM)%fuos$1DV0}Lal>3c0| zftD?B>bp&$`&?!GPfm5G@=dxQU*>C#*LV};AK|?`?}nISYCTDLwUXmio00(aM*p7-7h1 z=fX!P*uX=Md)rKu!p@3H*?bMG{&g?>&H}(W(aD>0K7xLZ<1d^!(d6uQIqE*DUgF>? zoe4ioaa^xw1mr7KVgDxm`ez4uW&JW_<7&>dcLBc@)PXy@>A-uDVe>o4>0mGDVB9S1 zZ7JJ%3VI15BD&j(Z4O;#ytCrxi3Dhvx?07P1hHHob7tUoHy1cFM`AH+=c|?E#n9{r zIby#U{@GI(?{?(>@l!h?`RAeIRyw$I6$HGeftbKZLutvkKU|Zki=*@D_dLb?0F=to z7d90`;F4dg+S7$9UQtzs)EUGK#Nl5hx=cK@zU#?RNw#Dx?NzeDCX+LkpKcHyyTWA0 zAwgRqoanVF^%*JkgatEH(p|6DA<=hq^Q|5SfAdrYC zs{jWD&B;O`VzG~-Vf=svF_AG;!2OJWStB=$X=fm?RDc|AwqyYmD(daj>UKW+)>mx2 zA++{nfrge20~qGAdWpn^2x2w%IMv7nK%TQfJPTfz`Q^7 zwfRY#LH7IbJ$F7eo%RWDRGJ;vXFbsz8j{&$D@y@b((q#ZC-xo_veb@{JMA$AR#SiX zcP|+k@zN3{Bl0S3F*fnrnR}V}p@9-lr$H#!$|5%OP}pyGZ%}CxKPLZj|J90T(S|~i zCoJ6PFZ`-g+f8j&`-?m%P{kPvJ(l(*K(&H$ z+3}VxgpJ!Dm~e4OyYGCCo4{KWnQO(Dx%W+od5k@~X}7)yz*d_NAOJ3)H0|~!zGk{R zNck9Y0gORZU6=%KK-F{10c`s_RU1HFw{L2Sc((hcBV6&l*@8GR5-N{Vf@kkuKj>*D zVrF}-_+B6LD|KL#E?jus5&O^6nTPXm=4w<{mhT<=+?JdJ!wteQFrd(#qy zDhzMd3JQ$a2-xusQpLf2ndy3?vMZ!z9668ikDQ${5bdPgS}qELLUmoJBG+f^@B+S#n#vc3IZQB6fcg|yl-cvFh;~L9&i(haYN@nO4 zJeKti(;8#w%xi~&u(5c|Y>vkehgwg16GWKPd<<95$rz2m=N*T%8{tq50-c;-fj}Ik z%AyNnw8RS4>Yri=>dgv@DW}wO#1{&GEb~z2vXT`3#9b0+i|uhP!JO#ND{O-}>;Rh@ zAE9MWR%~yOX&?Jio48Es{O&`Tu{h8{WR*$HClyW~0Ov5k#EZBsnEe;XJ-=tM$6w>Z znY2{Y)lrDj2mk%MJzOunl;6>D*Sw`8A<%CgoyvKKytbB!f{YS>DePUhmAlP5MI`#R zv<*IOzV^*x!a>a21vG+XKB*EB3#qFa?d^Y_`HL4TquDb>C_t7=U3Gj?HhOZxP}^c) zWK4|{U0%je-oIcW-`LV-z*Gf*=xCw9U@0(i9APd-rRgdlAV8If67`kxFT54P7pcK* zcq!qJby1}(U+lzb^3~`tVo^YVI<0ROif4Di!lD>jfqLm42R%~XEJ0LVRh3RDntXp* zodz(;O#6c_#XZG{B}Fb7p;h4@AcK&r2Ef-K7&R%1A1b!M03U2tUU~Ug?&<6iFmW$l ze0p+xN;z=bg~KpLVK>l9OBe>^6=&UMq6iDFC@26>*tbK3ttN)X73l~yy^0>LWDjs z3HhaCnfJ6jjxo?31Jr}^+4o`8(Q@bK&XDdmkFWa3A)TIvOP}t#@VYOXZ~Nj^>OS|H zT6>(o8%S9L#2jH*a7OmNVJJYU(vkewm&VP#pg{d&{Y{_UfEXj?el8B85mg{p*wo|G zkd6h%ymK&-;DI{@%WC3mVZFB5IypDGA%X`8?ZVc z$=(w|GF2)cz0{K;MPY_>nzx>AWf#vtZm*BBkJaYzi|bfR{5a1sXo*V;o76N?2`UKx9 z)#+x}^XuD@;x(FG`nF9@9$p@#*a5+Klg~SxR3}%7?Tjz0$ZwloXYbR?JPMoYSP$Pv z_h$Hsd5Mv}++B>+SIHz2-wJSYK;?#tWH{{Xjn?|GaWsqNv&+CDNe21rhw}-VnprRA z);Bkbn@_+Wb(}PZ$leV3rdep$jVI50;5y55{Z0C`zjJkkYXa%0j8Pj+|NiO0mIWXk zx)}!Bw}>redTnOdMyejSXLkDyK4#xL3aA*VqZ4L$f=7jODh+K2Fzy_SobN+gp0)QI zf;~(jTuujUF0z`&4F>A!20t?sgWt`iV&3)+9n!D5SFBzPhfkNeK%x1S`sI_WIG&|~ z&=P{bzvgO1wIm&2I|x`2RBEy4N+xipM94IF9u~KixsS~H9guX1o(nJT&$)#ldLpNZ zI<66duO^e}^L@^RdbsVIApvm4DL^ZI#!ksn!T=H4-rb`v0vXBE9sKv#l@A;qvU=T860|tO`$tCae}myF zN;}WxH^m$IyL!LnDtJD*4b05~fXSQane`RXYR{kF%b$p*zBsx5wh5!{-m*fmAM5YQ z{oPWdK=(Za?Y~}&G#niw!J)hjN7V?KoOYZp=i`DRrM2W6UDJbprc;tnbHy-IIXW&3 z3(zksLzyA(67es%B98cPW0(1N1SWLb$gfXRe}9u!TfKK&E#-(_+^m)g(>IBN`9A&&~-&LgAd3^#qw0fCellq zrCJB`i+bv%?*oLvxD>R49{VTOmZ=qgDdLWPZm)%WZ_HTQvAzv4swuFY5;=E5kw~R@ zJ*EUOi6KlfxLLdT)ye@7K#B|>*an89(`52b@u!iIkoAZxH93Ji#E<7)qZKO;x##o< zuZ9nnNyYNx9*2FanwmDlf6Po+Lj&K(6w1fO)YxKV^6a!2;%%LsZ6-OndH2&eWA%+q z%x+(06&PV^ZI|Zw7MW6WS!1N~*nxpi*G^a&5`BM{39_Z@Zh&BxSNrQqCl44AGfF<@ z_84mxlpZ5b5E)y9{Wr-C!0@pK%;S@2Hnsv{(OHpRZZ>O5iZ-FPfenukk;)6}#&s;U;F zOZuyv&CUP)O0&9!(L~%*p;a0QzU7>^ZP=`Ef@YwnKStabORau9y*zcY0an>cY&V?0^v5}=@E zV+(xlz$xgA3XB@S^!!d`Oj-0Hx{sroqqYfPGB0sjc>B45a|%@q3=OpO42<;Djr2^6 z^t2fyK8A|t0aOhpri!!kv&xEdB_-b@7F-!DKP!82t)o!nJmnQAt zbxwEA=w1+I`M(*Swl;_HAA7KKdE7q~4^<DG|DCgp> z`NFE`@qPa0VkwI?X2r$y^E!u#b$ul&Do)7r?C)3Nm$h;M&&hnvW)@>rWfk0|VK!)v zFze5s4-bfzSynbLWpyrWLxr_wmt<`#&Av_e<*FQtlm0` z8s8*oY5&C9leV$l@V_ZBQv3GRoEWNieSLOwadU8Ra&|OA?rgn$ZL_}Vzi5u^%WUp{ zt;Z)*96xos2H>?*D(?9XLA^M^h0Ox3P{oK{{ALomNxMA%!DN2BHo_LnIz4Mu9$T1@+?_ttK68M9Gm=m&7ceBii~Ic?^KFf`79W>~`Eq4hUH;Eb!8GA5 zE|WbXCb~gX@?L*dK!|BgXQx)f!Q#|M)ySfb5Z0vR1FF;ms_s?~o)H%N!mMCILamJ3 zfH*B_GYstCztFm@zT#I>*DD(}ojkg9vw4D_@9?J$a40ZS*MnU{;^Sh`dFUZI@p9 ztid-dc0>X6)Y%xjcRy40X|4QZ#zKqm1_N!w%4B)0#svm@?&PO+4Q*ea7lVH$GR#kz zs5@bJ++B6i`?oLcSj}Dm<{MO~`8W+Ho-YNuDi!81)j#Vb!AoI$QR+1lO<{X-*`nL` zB5lr70~ATZYVYnn&K7i+9ybonFAtvPaGl;k!Ryv2rnR!M z<~Fj^WHMJEe0S<9-oaTM7N47) z+GHH7DsOwZ361Ok$Vn_O#`pz{oPBhDIl#5J@EwL-*ZX3_gBmjL`SzQMq;@-eIVQP4 z`84?Y{sw#xc3H6|Z$M`#bl-SRxox`aLr>SFFWyg%WaT4HmtZ^Nu{`Hsb zg+UV_0AwZj=|#xNS;)7Y?EUb2a`kO~5*dDqSKozoSN^f=_zmal!1h0|vHao7^yic^ zGDcwm;r)}&X@(zYk-fh%4BJ}U0$Ktx(s(mJwn~c6Ti@&X@60@_)AK&?#~Q6COS18O z1(>lwM;sVOLNVSPbGcxNla1~g6qWjghGO=8pWrS}=%;q-Xt_cIg+6_y&cc7#9JLw- zl@-{GpUcU>vH=h_KB(;RQ0`EKF)VHjC}2~Qn^y@JF@kh?niriGR7#O#-VgBI=@Lpq z-o^*gZ{F{Wz7(}4at`?|BW*~LJ)2D*zCiEDQs+j1Zw=c$MDW(a?x0u=Eem9mldNgz6L;Pfm80m8yVvdJ{eRDgPltZ$q zYoaAKJ9B+=cYS?)uyZnF&UlZn=hvcY1O_H2in4O@jPqZ{M0%Im&4%xbU8bCnw%8|x z*p_VEl$<)9N?Axi6IdLIab>_RI6E9g@Fi>e4hT5gEJ3LKwUMCwlr+=51KX0gd z$j+7gA7Nh=7H1bUIRp((fZz_n-Q9w_I|O%kC%C(7aCevB?(Q1g-EH6R-)Hx77y1I` zig`KHr@Okks$d@{hF0C1fr;*YdJ)p-TU|s!l-u3gdBZ@vQU=bvX;&gy6z7(`Wn|@am|P`7*r>P8b!x^^25fb#2h7cz z?__aSKiLdQ)j*h$n_fe+;r;htX(`!I6fxgk2%8Q*|%jLaZ*+EBN(@kH~A<_Ri1M56BNl68oxZth< zjn*2Eh*$7vZeCdp^63>S1S&}-5oH)n1soM2MNsxOg~)LdrV9hczW_ZE2%3#`Fc2;q zH#z4{ZqC$jnS*8Rluyyw====#!dS59e&^$Y&v=}x865QoCa(vH2iLU2QLW#0X8b)R9L`q2H9 z2f>%L$ew>JG}bTNT>AEbnW>?x@p+f+*DbhwF>s)1lHd9DR$D=XYUIK6nelCQ_XgBB zySk4rTX{i!I$e*eBjr=SFkPCM+Z>!&gVvj!5n=_fb5G~(xm8aN*c}iCty4Kn{lhEN z-OmD|m=_uAz0@JxV=C8z+qh@0GE1l(KV7N%T}_VyUjh0vrox=qFA5Bt7k)G> zG6UGNP2m52W<|O=sYTP$vNzz~D0mrRC6Np7!omc_<~;5^#d!lW?AaMsOm3g>p<#P? z^E9^ii>=27JVsH>2-e@#tm|sBS{y1e8rTtEKz?lo`hU$o*Gg*KC}28}yG;5QM5rsz zDic|hL;2M(EVq<(?wS&sNysXT>9twaw3JXLY^g%;TN?~?wwuzJLtY|a$g#gS@nc4* zWm-;xK*N!%5o_!WHd~fgM~*$>cD6&_Fv5BcJL#plY$y}ulTuPJSBN*Zmtr&FyUP;n zHh^&dXDWjY;ho5nmyefrLv@avfg(@Xk0NXH)23foGD0V=uR(rSN_G(bO{GCirI7!7 z&`Q&F66rqipmKlew$f2M(K@IGo4L%M2G( z?b1&)5$rN>40v1tO&%VRIvK0C-BQDF2tb?RWIWs-K4*-JBzdNh#`7K730t^1_gnp5 z4FoaBZ>=}lduIRx=Ferp1`%d=j!g^${MyLQ6GKamwk5y&P{nnX=aO6s+GQVVfiII! z&-GYSmfRRs|DTz1jA)H^GhEn(!D?jjNU@Wa4nz;aJ6Ilk zVC5)1zQy#gC~IvI3p*_umsfu;_3O8s>@)B$TeN&Gx|mAgxAGYI4Csq~?o0z1+8yr(tQ}bN7WuZS?1_lwnyS0%*n9l zsqf>J>9@3riXAA5GJ+P82FJIKB;9f9c-=IGnp3l32}r$e2lxE({X6yv3oJ91yXf8^ zgoA_3%BeFsYv$#Pkzl^VfPVvcpmE8zLEn9$RR3joS(!tj>@DP8>(R*}Yf66$soGue zwb`i;-{ki|#=z22RMu8gSy+~zLhr`(Nx0I=O_%U@^jmwnK9Nw}YI5>;Ska1cjdBY_ z9e{;s#6bFf-|SG=z})+`M~CI(^i~Re3q?Jc0q^#t^^C zlKTUf@wAqJjw>pMV`IP?Cf!dgH>i#En^Ajq^WsM{3g}noU2h{}SPx&Px&8HXn)v|1 zx4t^m-fZn#WrBv?56J!MWPxVe6BU$%wQtNShtRembyUj&p#p9H?%AS2E_#+Ptpg5g ze`*_2BgjSCv@P`Ww_ZSZCB16c0wRGgw-7`d9(!z;o)bZw%;%RGj3P(Iv% zJn+kJD}nrTfe8lzPiM$xnTVL`j2#SY2MJn?5ObLedztGCh$c0{Z5G#$>4HFoTPRRT`{W-> zt&nWpJBNI&rEtTfqCjzTtvm+ry7A)lRuvmcg%nl$1=zv-l;vY7n2EKz?YI7L(27UJvF@cK-{6 zIAPSZ2*;O}UD>VQKL9%MRdYN#DVj1gUlT+9=NgN?HDkhSKu@o2(ELNhdCPUtKtn;O z>&MrRC80b?a9ey&?{gRt$Khzt!&TU@o^|$iQN0!%>$a=W!F}0YtLUM9e9nefVG~VP zFVQ0=Ku3q)3d74|3H5`Il!gV^*q<@pH~jJjZ;dzI^#}i8>gi(*21Gb~)IK@yngx&s z7>fD0M?atAXmd;Xpw*tU`1#d2l-|OVb2`lqSz+(tJe-LE(Zdym_nYQ(4Kd!HY1+z9 zam6&0|HB1n;(BoEoouAfhU(xUc>M-cw+*?kXZb^sug-*q;GjP)E3u;?JqntdNFI2*~WvXRBd&78ax4nnOUf(Xs@3TOiyQf`k`^Kd#rTl=>9On!~ zJy*}(C1KExd(pKV?wGW>LlTtLf|f%wH@Ep1IgD*9Y`kw7Ig%68)e(8oIZO1^yf4gNNz(1YkUj2+B61|r^C>ABa9dU zrYoqbTK*X!9c!bV17W<*hV?H3uL$Teq*bEzytp zWFGZUaT09ROvd_yg9Ox%YdvkER&;YxFmn=cGqykXyq_Za3^|*Ht6kkt{Jdha~!Z=DC-RmaV8N{S9OA58fP$)=(*B=Yj6~)1~Ul z!cUoO?uDF-o9*>uI=bm6eAVk7%1QFXln&00pUsWN4XV)3l6jItfoM%uWJ8ZH^{;Y@ z33I1788dF*WJCo8$KNmTm^72*z>;GDzD6?E zA`=re0^noZXtfn|nPZ&>BR~n|O-K zn$E8h-H=l$t&sa5kis|n8;at6M={B{&&e``|4A7Ka=11Ze4{>YG0E~Ft(R2kSKoFY z-fX4h(%%tT;&vMTt+tM(M}>ufygDRmZr%|mwG%Z(vOV~Q`*a1}EE|*dSGhbes@C6G zCyAZ9&yEcfzU_9}iseotL;S*QYG}gaw{I(7nE*L6&>>G7amv9xitGgQ1#|#ePl}pS0n1B!&SSy9Y==$qO zzGf%*Nq?bVI{E_<2)a47QBL!BwVMNBW;K<9fG}^>*>-_068f5N-#lca@s*sMqiS0C z(ukjs{_WnrjV{1(u^}=);u3{AWqMzo`aL5cEk$-dQteAANr~8di`bhO+|{2}oBZWz zlP#Hb^<{fAwS?MmyEZ0xoTUf+&|EH8wUJj^Iuo>A6O&dDGkuzU@_aRtS^rtM*KQJ+ zYsr2lFVMe$VEY)kfXlJwcC(0x+BB9BP)l0Y5^uBA^we%vQXviZbr>FL$C2}W{uQI> zhtE4DY}DZPHJ#)4k+(PaJo)KAU?u@jsgS{Bx*hxHIGCpxxR)5X^whMB_JMsRJ#61a z(|vzSs!l2DYCPV_JiVI=g6W5S0fPt0t0bneO*#*{vDcYxE$-V8kOEua#EmK{?#HFP zxZ=X_UfI8M?Qv=u z1>wZH58+y++YsFBT|v5NTUt1~_G98Yd3^MYR~N0G&8S?KhsWYeNQ0B2$*Q9#7Eb1r zU-0K<<>!c_M^=COlhxB54^A^Nz2=+J$I6qcOP_ScwGzZ#NM#GX)xCr6iCEfey7 zU&rSk+6Qjwsk8pt*!HY;P*8vACd0{s<{rII_`;*=ts&^+pq$y|dJ$8X-#=l)FZsD2 z?M=r3SjIM>MY7hAj#gaV=`BGjsenb;c8K>#X-q6PtbWpcK#l}_rP_L12yc;?|XJUzaWW9a~!UEXE>o(mS(uBC4Il-cM(ukwAg5?%==4* z`iI-WU9kVQq#Osj;_<8wg(l3R{Vp>y+j~698r@ufF+y%`uW|JlST-fz*uoaNPvcy! z%d8;P%jumbjZbaqyd{*e)bgiz{)mnmKPg*8q(DoTG;N_(2LyfQGbo{{y`ib!Z$?)= zb-}V@HV^iaaQQx;uAYb9G5_I%SBfGuxzx-K7!aSl|5_5*Heylt%Y6#oqbZ+>l`kAAOBFg1&fGx*v? z01wr-d;M~H^jYz?01`XwfBYTnB1G$L3oh%`60$g0d`$Vu!*`M*ge<9{cP1=!=mXgi z+#9<_E^L$Y_CbObVytD-_^3VyMVX>hFSe(BE!k0P@-NDkUvXno5SzPvPg~m?Zo?V+ zqJ8Pa%zxBKWpzP1C&gGsxIm)u7|hk>dF#0;rYHV25AU5u>V|JvYVLI{vS+S<8nzw| zb!*o$LfMW7W)kcJ`tLhpB5RLyc=&NBq>ZrH{pu}+(5rTb8y6{))$G9ri$oj4dj>3< zjAMIME3;XGL{DWtIWh6K^wwo#Fp0JxN7EQzOFK@FjPsPY!*A6nQtUrhJEe6>gv5iEMf6J2-NV+Yy*s51#F8d8kR>(9tQUJ9 zqJa1{n6fUsAL0%J#v`?x{0J+J|1nvPF|ePrd0sQijp|10c2L2CVm()_?~1ucc9y;N zqvM(Qh<|l;)qW1-r?^AzQ{=UTm(E=ouSv6Zb@Wkj5CFwrhs(;jlDm5cg^K8$xai!l z!(Ij3VBktzwcOAd4l}(h53RZ9b+7Sb_4&LgeFpP>?&?W1G(TS9q^9ooSfk!H+Ow}G zM}%IR{n{hjpH-ekq^7qu|F~pPO)k_oV*J2BEEt)YCoTf(|N0AY47)bt%Kkv!9`ep< zf7)z~$1KUEs(F*uWfs&eY8%E?KE>5MW~6zgu%%SQ|C;h#y7)m>#9j+&goRG)2ptj@ zG49N*`$bOlxCz)#qml=9JA6)y9u^5Nqz()8KH`-!0F49vDJfubc}tATC#NVcd9T=N zu}{FLR-bMZzy>iqSEc;AE$Z$*`oX8GyXA7^PpgSeo&4jc%V_AUHGOcGt+Jo5tck3Q z3|>gzPy*S$^The!I2KcXM*_S4d@ML$8DdH{uUmR{=E`#a;9Nmcl+`)U;7X&`8z9)> z+>Z+S)qXN0B15yNsh#zDvJe(X^ji6t&3p3NPfbZz+t!A^J^bDveg1$o>1Ycv8XkEJRyj+f zGnXqovIh))OtZy;P+QStFE}|Dchk+rCS<#p1_2zggC;~)%dZqZ?G6sk=Y%iD&Z8M) zYkb}8x@R`;ET`MXAivr53_bq_I+PaA{*kpD-?Gd+w@;iga9G4(8vGCA9oN@vC-9#9 z0a@3#TR!U!;{Ef#4c$v~myoTeKAGS96l;N74=GBZ5}b%a-=$#UxO>skUP0AoHCd^AQEu16z}Zb_~5~CN?!LmyiDJN?{$SXgqd}VTFy~RmP=8yu>Fj zKZ2`hp|&aog2v^Y)^?JP9myUhvwKU_R3l^+jaCn#xc0^abhC4@IHqfd_(;DdUfg>9+8dOv%EujJ&kvfJ&AXeM;O@vOMZMQ;GY)O=u zZ}pzVx^7~iK;jbe))OyUn3icc7O5xY2_oDraF0X~UpPpLDVX?}nfORps8}g^<*p=b zQ$zHv5ERGFqrN2GDV@dx-N=!_gpBy?}v~F=Ym8fj6fAXOm0cCl~$;sD7_{;4c9b(C{qDgSyMzv24NGx-{ z6xjhWvBZ?5@Nd_MqMA_Qits#g@)<*xHvI_$h0fMkTx<&qNmzn%Pf4wAiNL*v-W?<@ zPH4+$d@s15tL+~OI0n`kHAT+}2)|DLHL=JNfdHAcRA)BXm8I9QdMvMYjjk#amVNx{v#XvzEtw%V4yM|Utm})l zlN+)-?H07HWkguIN(mPaXTzO2aSKlwKZwo5G37cja9-106x++ce4o(U7WuVI&sW#i zFQ7B6j^<;!mBviZU{s#5gQO)jv_yW9$$IexmYmmZMv~f-nhXK`U(EbK;CkGpoY>}b zPk9Wvx=yt2?XlCruS-k4A}p+2I}=?{5ziB}EF^&!N#lw9RPC~fr` zhT3#vUuv6HEO3y#lkMIO9!eSY8=|+O-LI65^s^S-^|Pl!tzACbNzcHGDD9ht<;Og; z&?(7m1FqPT#?O;{`ng?l>v?~i;Rt$dX4d&1dF~7D=3l`!1wS;~FP$$|0LtYQIJZuP zwOCa4bm?!M02Q@sgT}13HR--<9FP8AI{F^VE5-<9E5WGjmWY}6jVzk!kI(bP#bSEm zC!M;Q)Q^|zZilbiEAVJn)BP{evA|s(QLbRz?=vTXVtE5uczEmz|1{91fQqF0*|jmXRdfrip6AtGGL_yt{8qnmOXvgtgxcu1Ct& zzG&G}n?5c=%IQ>Eda@5Dj9BO}Svk{bcWL+t8wW5$JQVo!;JyV14{6&{dSYQhLWR3a z<5V&7?}?;mb&{Gjo-2oCGlyVwJ_fte)8=g!Ni*$Z2#6OSGOV ze-(;xd|wqw`*_KU%Hz-Hxa|2*(U~7o)qU|=%8Rk>A!UUgPb=$u(3bpZ>}dIvzR@2< zm`K^Eg^DM*MqnT!6RopKKAXNCQCOlLqvd=x;~&(si9TMNLsiv$DUtGZ`4!RskNab_ zx>N!%>esgKj)$|W7)g7)s$u*CKh&m_rWTd1 z_3oAaDJ@BxxyCRm>A0Yoi1%)OVFI5lmE>t_We1P-!7$v&5NfwIJIHT5G@yS&7BYq1 z4$%FK+CzQJgaUD#Ki$|Q{y)HLVOydIxZJQ86OTM~7LZ$8QE7Qm>FL{p>py4#WESJT z2c>chtc+A@%2Fo}FLI*UqZh-){*8_D3zi_#`#AuLFuTzNf9#NcpBp16lKdIN6^36=E5?To9n zbK@37rs5v74?qvCLB_``A`-{$oX>?`AM9Zw4ovZbFDFG%*n=J?KcG&YWQ&GA2mY%< zn&pv+7VKN>*iT{aHLlDO;jb@8HlH!N4Qkt6aF;vX_y2unJ);IDe(?SJy*(O@aD2^( zItb5LU&Gd1V{ebgW3p}p67bfsR#sM57oTSSWCw)8@_zmkpawS#9Srl%c(?&%+0>Y8 z5*VFEB_k;!ybEQme~-RzRz6PH_6~DSWp(_D8n#`C{)pId;Goy*Qg?r`NTEeG;&zL* zhOX#mHx?;1iQmTEX7j0t+w`zJKB#{yC;rh)W>OY?_DEo?QqxmRQR^+&7O5w~9Bg$; z_&(9R#)9GLTXEYx75-VJm(1x>U z@a27rr>Aww!}x)`ne^w5RKY!7?^Lx{>x_!;oke9X9Pp~KYUE;fmGat4q4NHrhzBpl z#H8}{3_-0=c}s;n_CXg#xJ^K~e`L7-xEm6H{lJA}BqrmeWM(C6#AfTHW~->{tYKni zqhWr?e6PV&QP%iPL`^#qTQI`VUr1Uqt7rg(;x}a~k)O(e%kOV?bTLcAMhmPg3-heW zYKtn$3rT?Br1FBA@)CNA>LG?2T9RsGSQ;3x(4Z--BCDk%2!x#0%1=GK(t>y9|Awtv zp}(eYNaOsA2-Nc5!Q&eKy7m>DN(+KY!sFwPkN84dd^eoS+1_p6>jpl#qm&I#>@V6(|yuo2r76DhrdcqACL-PGc*%k$?*x3K&>-cslMKx2K;_ zvAU=2sJ_?kiwv+g{jrCTDeswWd!W?!sUYP?fQ63c^5s0TN(+6NmoaVd74+ETmj$Fj z+rpkNAO4Y;&9cXkjS?>leP?gV9f%CSER*mN8IudxaiQvKzAh;5UclvxUR7-YBmaQ} zGNXJiS_c;t-EuDKJOx~B{W$Me6h5Y6tiHz zmR4^oST9Q)1k!dU^)dL&7fVUa z&Q2Q7;c{)$UD#+)mMr#C)3qy_;HDB5cd3(UE%BRw{_<(qRt;>e<>0*Z|62D@l}RfI zHXkDKgmWB76z(_vC zP}##s!a!4-Uu3pSNUfFNJWu_WA096fmPbk)=htVzkXI0c3L^gbc4)q{>S1!q-=fV| zp9a}yr{k>zUZ1woZ_?}(%Mvb{zh^{>zK;o8=LE^w)>c<_k% zwf302E=-_bXHS$Mzmt>ElF*u~n(g7MX{{xCScoq=yuzMh7@p9@fFlYpJCh+qCM6sE zd+&XJ6QpJ#nfFE5qM#C+i~cX+8z;8dbQ6~3Qe%XNPn2pr4cOt&Gi;}bu*US(CGYV> z-`pzEOL-+Fks{|jzg9Z|fzYEWVXMXgf1z}ObxC%u*?kNOGwkmZMKT?DUL_fmPG7~p zgj5-tHk$9xqX7;}v;0{${&vdF87NZs$GIkkC%czm3@sVl#3r3F(Y|rMI}oWZP1`s2 zAitrLDa`<#W}5Y{C;tRNpsN)PTrlZ=-;wn1DjJ4DyaXAyU017|wsNEbW~2TydVA9? z&eeL!?@tqa<$GRUeO$t@h#-)D;m}1ZtBI$#u7Q`VgO&eh!s8A-V$A+J;@{1IF<6Km zhIMWXGWYr(CxqM7wRWfrx5a?cB?=Z%$180t;o_@^@_^_`U|&L}3RQ*F2k#3XKkJos z<`f*w?;{Sws&IST;etmFCU|?S;FkP*cK(F2^x)oq;dP^{;bp5gqirYY!NAX>CvCv% zq9)AsVGHx)Rh6bb(FyIK?*ZS*P)gChMG;G;Bqb-Fk_Qdk zrNNr|68;CP>kxvJ!}^oj+1sTv=_>!+wQn3F7zAu)X?9tyjNVs?6K_ zMhyx5i2_Hh#SKkvn$lCgXrs~SB6SgBb$J-`H;11Sg@A;bjBQpFE-5P$<0X)$vVzNA zNk&B_`H~fns`z83?JxTxHIf#u{e`4*_1@Y0MoCEt|Gno%J=+W^z}84phJ&K^vDuq< zdGRhk2(ImZce@BO?-BMtS8gk@+?FQirTa^u+SDi6hNC$|0jRQS&CIUY(>cYp2N7LL zrpmr|7DS5?L_mVfIGp4q@q~5&RP$xmGWy~SCa`G2HF@oQ_SE_L_w=X3Rs62bv0kLp zN?j~@$ryC*x+ytG;9o{Lti|Y;tkeL;6g8RBN>eFyf+P|z_e9zbd(7Y+{V64r65srD z)gKqyua16+H~vTg&sqMvNKiw77IBW0p1_ZeJ}-n(a6Uwv=Zn2z*t| z;3X4(T3Mrzp^T6c0R!psCF}Q% zXhJ7A71k&z44ckQr-S=*OFL882f_xTvxR!CcJ?eDk183o4Jf8GCcCSeztD0JA>?8M zhi5CkfWmebr~C5EVE3xB<X<>qwX*Y5NivZ)kg`8^YCe z+%|*t-A)dk;Q37Cm$MEk%{Egx+&Aw_J#DTt9abrEx#|87ke@>ic-nw-)+%I3R5ZwM zY}YjSXJPXdL`C|WYw z#9Z)9Owd~IT4qcSG}m4%Few0-k;4xgiO+YWZr*Bna6tt>c!mL>TXCHZBfQ?Y2pgbGgden9Vb2O^C> zdKarsrcaZ3hIV=@2ySsAtgcISIh{qje|@|SYN+E%wMRg9i+C zArAj?)gCOkl2xG}R`FQO0d^>aAc>!X%E#0GiDRWJBo0+>WSi>D*MrRjr8XFBh&?k< zni64wD#12R9~_159Bg_Tp(|39#r3=AyBE+w_!%!`djZq)VJUR~ zzl(rwx5jFWrV@VzC2t&8>-wGO5}c^vh{tuHn*Su)SYI}l0XjDcc8es#JH~6np!J|M zXqmk?)-3PB%6p{V9^K9Ukx_48ry}0b{+`xp3D4T<3uqc5X{4;7JdKZjEIn8}!D0^l z;_RmD)|w!I>``PU>*HfdMeSv)>)8EN-xS&fHNYN6x5||+@*$2LXT3hzopu7i)80eq zRU2;P@faviPM|JX5rN+quhqkQ?-VIsiI^I;H|@bfSpQ5NIFP)N5Hiog@PY>k{dKwB z`K1ImxK$nq4D6Oqo10wi!FL3jt-3^#$x!}WaFq7 z83F(9{QByeUu?=@Q1jZTlL6u7Be#<2wPd-Bj05{M=7)UZcnD3~w>k#{wY%T)Ek4Zj zL1)~JTbnD%f+^kl@@AQ#1@X}Xz(011pT9vewQ;V52-@obZ_V7?S~@>8Zw3?PD<@vc zS2$VTCR7YvG>pc(9u-eZUKF11Q6w`9ks^VW+2Pope82Y7SFp>N+-RWW;%4y~d^Q3e z@uA{#JX^LNG+Vv%D+3B6Bhm0{c_#V=m*#A}`pC8q+==53hYqk6xUhKo)rA@XiC70ktZ0)zDwwrZ}oE+scFTmI+i zy+$;e;2$5Z$ibc*WW`+My4{Bo=BYqWv#JUZSRWqM<8RLH#-geUzkcwxS6-Uyvvu+` zoL?s!_xptBvEhrOMO}q}laY}%-d?vk<5aDC%vx>|zTwT=ad1lixV#)~Ce52UL1X$F zMQZ;xQBX*V$Lk~TGoI1uL5NAFVi)X_l(ynvDSPQAVK;?V!`j>!4zzvy4CqV6?c^%N zU4nyevdu3^NHEe=T2G8u0y*;TE{cnLN<&ZW^!DVLxf;6Xx2-)#$7y#iiD(qT_L-`l z-s5)XVO06yDYaA)!nB&GS{_kiCH0ZhT!`FOspXqG zZ^(d!ZoSn*l@7P&=g+(^f!SiXAtZBV?lR+L(MFG-Udt0QKjTZ_e^by4{UmB#_vHrY z6Df2X(GgKxe|@<{6VF)m%f93ZKcJ%z1leA0R8Z2S@>+iQMXm8S=g*jVgByB-?{eOz zG(jx@Pn4u@i-51CJU2I6Hl?YiuGZ0xjk$So{$wlqeG16fyX3Ms{PvnM&I=KTF*$r6 zwhwo;c}An#M14bY>3qIB;jTV>#j?0<*lHZ3(kp}~WLOd3=IrUDVWtCNZDp1SSLicq z9fqp8V14NWppfQf7gt*B3$ydfcZco&DtV!U<<>VSZ~7`u6Po*8yNb+=2fqvz$AqH5 zG~4i=y|*4s0R*W34lO@tmD$c_z|F>jMy=u&dgr%7YL1Fd)nsgJPsjGhHZUqgRQMlO zgt25E7WtrH5`uO3Rv*=oWrOKe9b#q8_@xYd=4ijGF#($dm@Wt!*h1N&Bl*&fL8vZh zSGVNet_$)h?_w8;M5NPWx}%cWgUaX|s|~ z-ZPM|p1%@-nJ&^@ce&{I?4@OA$3StkzE?O}%Kvp+S;cY9CN)id=|IS7|3#TGu=&@! z52Phbf;aG7PwuhVp&gq;K3+6HMp`_P`goM4=hPdrVA%|qV?<&foc*fINsIG%etBP$ z+f-F_Zu(34mEvED>Ce#kpEd9Zu=qh?9W{ojlIG?LF?jyIP-J9DYt1!hJl zmzv!4#T2}*!EZjUS}p$0OI?~$TQPppM!E9XKCWu5dYDNz&Rv>XnbPF4c>Ib|@PkZf z3+!tFiVqPQ;6=)Md{ZSO1--IYSo~q*$|dGvv^<#0MCnB=X>xroM z*C_%Kj?P-!$NBZ8;3^hhTX2}+uJGyji#38j+hMu$(1TB@tl zNW~TV=I81X{*IjJw4&XE4vMZpVhC<4d-GUDwWrJTc-jJ-we$VuhNp?y)2@7dN-pKe z9kZRJyGL0uJQFpX7Iqn#GJ@|Sm{9IQ<`2(Im?dl$?u*Hb!*Z*-E%#pkDm~&+CPf>% zOm(G1{+(s?IYuQ9I}1FpTnvFlagsL&$?ym|Jsw`u{a{TH>s|lYm>w+bmzG)SuPman za}A|o51__Q7C)FCO|C?CE)(o?34*Uf*b2-MeL*OH9)1It0^vuB)i| zeWO_wc?ZwI;iIKI4by7~eE`UxVMw1T7&oa!%UgDD!9Ky0=T09x*vEI>?0g}v!>1W- zwyPoJVLtBw3lhgDibd%0dBL*aKcc#t{`K>|m5Z^|7y+3GR38I`AOu>tETK3G%-1D$ z~p-CcQ1S4=~#dbs7~CR9aLxGHX010=3)#NdMl<@yOKS zaeyobzqST|G>8iF$|pfG^(z(qPs=64kAlB1iF<`OGQW$67;{6LGQ(MFwSzIe8?6y! zr#$Xd9kNbkq-12Ii$-M~u}!~U_iIN~iu2UhBbJ1~84eKq=bK@c87YJ=S_8(kt-e&R!ib8NX^wqhA z7G`C6<@Bp!r1>ioGOgy68ul}g<|BSnON)!OwRMdRb!6YTvqPUmSlHP`f6#jE%mw%JRZ>S)E~xwOE+BuCXTVVL-Q{gHMU7TM4p=pY0sOXk= zWv2hoQN_PKZ$51%+`cWBjEHckgJo8fa$thgrqf8QsJ3JnH2(8(61B|V4ai@I!i>y} z0QNEnpl%~J(ZCR(Ob-f%SnqHF3)TmKLL4nI9BwfH44Q40@Z-Ss0U$-gL74~N*O!0K z39l};3Q9{21U#>+IMrZ^6BaCJ-yyd{$HbERtNGsF*w5FuK;I*ropJu1uobknQgRG$ zJ)W%mi#G_aE31kMNUp`gz7_L|Kt|?*tM8;^WT7CVNmbFa{A0_qXdSxqVqMaiuSsvq zmngoLw(mM;Hk)jdUN#~%i&NVH2TsO1uHDQ}8Rm=Q`|0-xW$HdB=#j4)MtSVBmC$G5 zQ|Ih%Y%`hqZi)sU`;#cJ6M=~&>gsi5TwF;(MNEHMM%xE9XQ_Xe)!u!=iw}O=HRdux zVrGAVh18g9`09;_GVYSUfRqvEq_{$z-oM9=nIx1V(Z2^o3`JXzDdK+e8aigFby9ve zR563eg5&=(o`t@{-n)AZIOxVF?9R>3-P}5^WPay^S0XDox(R0qW|0Xek~IyLV6+R& z)@vEtbvP}fDjOR+p`t#a8l{4}wH%e2K@RNuwZDhP!oqTY58v3}Y{%ghWBal+Gv6N> z6%7OHg@OCTM#+d6By@a)z0Aq6#?6tYwd&RN!O2Uz|L++!2I#ruRCRT9%IOw-6WOp3 zo+x1UZU@-br7nbHhJE>fhO4u)y0=$YpG8t+OMPSbj$ZxD?`mmo+-f{BW+W_za$GtA z4b>HY`-G!grDLi}L)^!KXX3SYn3=J+!ukVCCP_qhY`m>~9XmK;_bncupmH)SWwD+e zvsqVh0@Eu!&d2U>IG=XxL^5LVf}grDZ!;RpNEAC)OhB<6L78lm3P{#_uLxbQDP7S6VezzAai|kA>2F5 z$jI=|jOj{r(6((hazZ^eN2Q53u{0dVfSKV=m3e*?*?e|#43)12(l zP@Ad&1S)|Gwm;5027es|6_pv?kehNF1VOcOB;s1{D)2>5^H zhuHsAZ>RDlEU-xreKF&-)&)50WUVDv~GG6Mk~1U7ctYrvRi3`6d6qftXS(aOkR6I+>p*WG+!wX!&xpu_W3(}#pb z1czE=TQ9wW=iCA|Egbhs?+a|u?Cj#q>|z?9BR=R)Z7mTk86_Xz!9cm`f-@^mr+})A zaBf$2M>>?S?zJm-#MPs`l0tSyygCZbFy+X&A*#7S{9y2p{4D5`>P>M%WZ!1juJ7kW zw||!qDCEBCAGt6-RXoQMRvAp!>yBW;$1-Bdqn)EVdEtW{{0l9pi$n`Y+x1Mdfe7q` z0m_g&>l$K$1Sm)zI?x{~63xYB)`?dyLk&8O7w7>hQe}7`>qd7q%Snz20piz6YeKn< z=>dnM>F|-AO~>aSU#VOSql&CZV#(S7njj3!#!m$W4g1whpnCO_6LbcikP`Vvv+I%x zC1r47V`WxA{p;1t;Uq5aw}Y;Jf9bwlo2kVt&uUPV;6*?eE>oI;jk%$X`P>V6$XtAO za(pZ%hR30Yy9lQoAz?h_>?qZ&WLX`Rg%hW{Q5dUGNJC9}grlRRgX5@U{TSTMFMNUk zq0+K4oFkmHqtdbNFQu{+kamz1+14Nzp&*vvufV{l1cz~7OU)y zGaIPw)D%8=w-W~j=aLD+LUOd&4&BXg#(5&gu+gWy5r*FRRn}fjvxC3xEPetI-cHOv zNBN1vTfkMwAACzRxNED?nm1u(_}6d=jz*T8Y*tlI3UMyIw7m9R&6Dfv>(uYQoqL2x zAo!bESmqA_u^p2FvaY+)sWIyv2N1S!ic)N%T5Nn$@ffAJ_!!~LJ--xOhKho+ysomm zj<&KwteToebTFX;N_=pesxJa9k`#`y@d6vQHaxV<*j;%)S( z-cQHr%vjXhRCGw4l7Izejrm!5+N#w)=GhuQ0tYW$LkYxH3mci#&sgVntD=b*cQ5v* z)sr<id#-Cj3X1+TMKASPyLdpU~WZUpdcTk3q4q=^U#--rQ`Ld)(ZH!L%A z{h^;?fl$za5U*;0sR80{RYQS9gnt5wk;%IF>&gpC;3go~i;b0mg_YrLvvchR`P}N> z$_beLGNR-T42WpstAW6Q+h;{iR$En9QZ<{7TrMHj|D{tAO^A9uIk_xzzHGEC{ART5 zpMTk`LF$l*AaaN9QXWW={vkRr4=r4wsPi4 z7C+^@>y3V++mnX=)_=6};R-)wdvvy(-a!f@6b3Y?6;juaNQq?7?N+`wY{a#VK~%J- z4Q5djcaW5}*&-jV%sT_ZGGgqv*K=g(DxNNLFfe~X|NE2qM86u3*&!}G0uA!Z4AWYE zMqe-Tpb2~FQvm*$@*wgrh%!ktjYAUwcP2zgb-s#-Lb>exY7E0-TLiLc%ydn(xJ`MV;%a zJgt4gDTHfHbM$YvJPY~w4I8&x3d&HP(8Qbl$;18^Pj3MfM;mMnFHUd>?(XjH?ykWd zg1ZN|;O_43E`i_{+#v*acl+nP_q#v!)a+Jm6}3Av&vf@Wr%&U?Wfu#%%2#ejmxs66 zPiEzt7~Aq%RCf1X&s38TzXkp$PTD@W{mBjqiUoXv(jY)DI0zu-Z;9x|Ry=2x5ax(E z9N$VMzHJg0*pt#yY@5SaMe#y-@V}zGF)z7DiR{5ARdlVbQiFpJPjkVP7CWvt&J(@mJ)^D?5A*r>*!_T ztKz?wa^D$zWZf3JLRstk@OrTqAt*aRNz?CXffujcG)(yhZF;{9U$2B1V;xI&RssB7YHa*qX&}= z8jb$QtG@njRbB^}#?)3;S5(xNS5l9S$pa=b6}2|j)`29%|BZyjh89<0jg%)*r6x6l z6GeaTci13ekZ!OUDw>RJ;&eV6c4FeYhB`R~LrF3AKQy!fI*VQLA#{dt8eODdsJFGZ zGiKqK&3V6=_V7f!K*`- zR;%;MhMI6hRdktt9?;bk=xQgD**I06>nzs48K@1L4wpR#K(c$fx}6`#~%svYCST3 zR=ayDu}LrshC)EFRLDYsOMpbV1o%#>|3hnqVcDL&A{$okHlWjR#r(Jm7b8z#SQh#z z$Um$T`9#d%a#^e3^GGD*dUs}de7U*K#m>n|O-s8DR93)R;1j*#Q!kGae)mI_eam$b$lX9<#n+C zj?(X#B?%TcVq@ZeJZJ_7=_?pFVQ&Kss?SXK6;$d!Y-8sF{^!(`FJs!sZfkv}jyxqW zD6uJ%1XdUX4$22CBz}N^Y9)LqG9tcQ9XCc6K=-56St_GwQ)G*jtFj4jx$+4SfCX`Kx@h-`Yv{+-pCyx~^~ONBW&RgBIrl0Czzt`Zr z*K}PXi>=#?`fo2BTB>y`9)$6;=Jb~36{tNwBBR0gXZQrw7~f(!ys$Du!6d<0qh3L0w7{F(l>3X~libI@_0BIUta8FLPzhh=i*_YP^8>dg1v^3X)fdE(<1agOu)|iI{l}}HE8Ml{|gf4Ep zd3`5qN|@PgVHrKV#lyo}V=tVwV$HaDU-}|Wx>Hq08Y2rq4I4L9J<8v!%=D@g*i8C7@J4-$Hhh6IS)bH?c znZ!otVSDG&;G;Fo9DOu-wX@6i14#|{?*joaejY!SoAE8Ut!+J)yxw{4*qlkCSQ;TN zzA*7<8m5B{f@gMX#&Ij>Vy1qaBrXPh9gw;)BoqD0MkG`O$)tvM0h1}`$CO(jJnxWb^C^oVD+ zdOh?mKIVEA6;yN#l>|-llnZ-KBZSmTqFq3%nY{G+el^1V$TQ$j@ToZ>}po zxr(ui9A+8;-qQvfIAEoyTVp05aGZO&9^6!XkB@M0{vK?AJ{YYrao`sbNBEuYSPpaH z|Fi%`M*etCUn)jOE;lsKc+fuOgLHN(qJ^+0qT-@kn>e}sJ~}&wtkB`^Kj*ejD;5rZ zhde!^Iska~OpajC(7&HQrzCN*VpuuZINBtCF;sjSdp1+=pTSWwZz~l z;?!hbh9RZ&>FTF9>TSz0BB7h4>47BvIZ<9)dv%j}@YjfCC9J>y4O&O%Ig68Mr`N#! zWAnb_#20%SPA$PyWl^>hdVVvT)9zlU)tTV#vkeM7a1`+hy1%WnlU0xtaMXXBuBieB zlmk=VyrGNQHO6^8q{9LOk9~-xrDe2$weCmIQrb*18#_HMjdS6eE`Yk*HwEo58P{d~pfKE%MInTk!xX7f#HZ;T?tm(|8k)tlk| zSAnK%&HF?DR@FaJat2eL`N2^)XLtF9!!~2DFGS=T3k#DB5*Qld=KCrubqbgW`jjb_ zC4F5xT>kgozqbLv#R3+bZ;pA85Iwd(ALs`7F?fI)Po8Gx%>5l!bQGJXBs`le&Fq6! z_sayGS?|po-gZSsL0Z6q-^&aNk@ZFMrH10leKJfqd=a=?soljr;rSm46_uqwDE6g@ zY}vx3eg3QeNN#K<1+<+#f{6=WdF_% zIqgMd-EEPz(MYX-%ZO2^)Xgv4Oi=KT$*(Y`)3wwQ-d4?j`>$f|4p0-57YK814>XYp zj>G=_6qJdl#4522GvL&%&y%W;+kSL}ENl%fii&(Ldhd!5CG9lL=}QwSROWOM$irXF zdi$60(f-BH7K9+*_GahyY5XDb=c(?CDWnPxQr7A>9as>GCd*&cWa{UqZYtT|lIb=| zI(e=h4hl=*y&TAaqE$Rzo%qq{^UQHQ^(QTt>ay1E+gsq!(4|WCxy)r@`IBJ6oeY+> zufO@)>T2}+7$}bCpBgZMk)lEw)Kq26>!!0qbRKbTX^$T$epgAiNu=ym%#r1?MYC#eQfi8>o*gN2}Qm$-;E{pN8cvD zpig&6+uORbU;X_E^n|@&3a%iqd~G6u5!2a(V8N;$E_hhD4sPAvfXA1#`2=Zlt}I?+ zW_GeRT4Lsf)kOgg3a7Ec3|!iOvF?<;f_h|R12{i-Ue58MEslbJ|1G{F_$h#_#G7T+ zMj`B5>}9O}w`%iiux1wd=Bi#=-p%dtK&7POtD&{L_Vx2vMcVpElAM2QB&S)zoJap{ z^nn!Qn`&c<>inAa`m3y|1dCE7+doML{*}7Tj(y;yPF5E}*aJ^654wC~b20(Z-JDMh zNxB-n!1nM*+FR$B8PW6rxRr!3oQHfT@e6p^Kv7~9kRxrMxU-bm&um;cAucVfM`={Z z3`U+n;X;$?x_^!<@5YtonGH#oa_>5Pw`4>io_ZKV{LlN)JO~Jr!ldMsk&79lV4x|W z6I07`Qm@;z>M=-SVuYJ_CRcFhWf5LLYiLlczPWY1bMR5Z^P98x^=dR%i`!iue<#<} zly!0A3OiR>QyEfODfz>;u94A)6AE>6duqzgn_tqjuk!{Tt>uaC4awe+=19KAu#AV_ zDZFX`KWfqbfxw3mH+Zm5!y?P=bBXbzag1;wdQItmPtTx*8w2b%l(Q2r=!cTMnFBDM zs*Q5%K?PqxUs|S(%iB9B@|B%G;qg6&F5CW7g?Q9ti66R$;lh|J3-&HG_2*HW*k(~js$xEsN~FQ*2eU`-tJOadZ;*S|Pl&+% zm5f;ov3&*mzmv8P1_J*vXzXI;hQV#Hb8tf1zXO65&Htn7?M^`?x;Wx>ubdU1So=|Z zo@alCt~rOX+;~Bi<nqWy1E4?6a|ks`G_ASW1=vI-#e(Edy}rvvLrS&0GmH5)yo+-s{fqf<+4! zsC<@%)@Q(oZ?3X8xo$Hvak0GRz0mO)>+<({)~Z@dPmadqa^O?mF`b>^oC%{XeCSOY zv<(Hz9Qo88)|)LL{4%n$!P{utTVe#5m<+dT;h~|SLH$fM!%V=fcc8#HMH`7s69G5r zy(5K^kjm+p%;t`%g16Y=1rs71n_VxeKFEJ?7Im0)7K24_Vf+k`ohs^@^7EuzZ>h<@ z((@uzWSgGN7Q9`^cvG?oo&7^@=W?}VFDXbHonLmp35D{fs^gK6GXUOWKrzfXTE#e7 zH9likPJLLv3hDoAviwoUNd=A3hRJ8Rq0xpaEW=rNnpR`+k_4XX-MhIq3@v((@pws>CXxH5l#fq|qU`Jsa; zQGt>TlkaZn$piGiK|2*jR2ZKV#*usK-u!Kj79+1Hvoc!71TZtiDRN4n;M4t(?bNL#mi}GQX+i@2$b} zLjaP~t}Q+icWLo?&gW^O%GKR}%J9;hWTIwJ| z96s`BX`ZDsYniHII{`bODwJ4|Yz|Lze1E`bn42vr9D%y)<83laWyQyxYVPara}VAZ zqOKugV5>%k7K)abkfx4TakxiXnjdnwZ`wQugffdE$?#l3Sv0hS*+1oU49}H8gEWeA zNP=FYPGhq8k&h#7CwRD7y0n!im8aDAh%xtjrO>i25FL^7*7o`AE&(O8Yrw}=cEF#X zp*Tbku^<{)w8ZV-hBsevFu_6)kxYCZdB4)$AsO6N0_0N!si-fSNf4>%n>0Co{f1iD z2p$;1q>}IsU?2uEa^cQSU30d6X92G2>8)COY;#C0B3dw=5`tP|&Z0}sa5Pe=z1vU0 zo(1>Q_m7Y62(qvC;Wi9*0_Abun}hxRj@FOmRCP5|N{q37x^E=pr=dhLqAI_98@r#)65D|; zz0iG@2Yyn{Ir@*e&b1BlXbmiwv%3~9Ahk4!1b;?-Y~JV&AfMOHEwkddk8_w^(oQ3A z*Y_FsX3xDFk^KO{237N8_Hz5+2mOfcDJl;NivP)vc0Yy1$&OTKVNqgXAyH8|85{S3 zb`32`%=29{9F#R>Lrv$^9PqeeUe!Uh-V?Gmr>hOLc&h4r(^S*c(NmLStg5c5BuN9B zignk$Yr{|P(7YVQ!3kp|Nl{@9(3D0N8T;mN3N{r>$FGaDDyJBSGa%Ht#fTO|mQ0aW8e>3s!E<>febF``@wy#*o3pu$V?x;E zU9wp;H`W;Z#rc9otc)#DMbqJM2~@C%B%NcD1qoHa53Vb|A=)NAUF3kotuo;%!?O4w z5eE}_wDa*M9iyVG724vUqb-b4ymXEPP>B|0u~>q7og<2>g3a5mdENEK8(B6N*_&uu zI5}E)xymTnDw`8(p+u^yzh>m2Lm^NhP+p;s(xTwqL2u+D{)NOsGRi;5N0t8lGKG4I z&_>9Fi97GW5eS(&P|hr8Xl}*S)f4DA{uG+JM>I6lT3XOj=TKkdRM%YA(p-l4(-Mk} z8J(JhnUsc_lm;9zw6s!Hv{F&AFwR_T!%_b?n>D`v(Iqkr1_H4sAUkp|t{R@QjN|f+ z=zkM)uL&hsK`WB{j4~cD-~_um82=f9iUQ zsBxtJ8e=1)UMbs~wXpaeY!#@Tlc4BztQub5*MrTnuQ_(zT3$IFe?R}u%00@M9!$C4 z_Pv*rCbZ;sb%pH+7!-ktsX zdG-%@^E3Nj;T$bzmu(FzK4uX$RV_6guoxLg=t(H4DHzE~XsH=U#L4fjQ%@ZNg@wU^ zhhncG6*6l^b)~MewS=9yo0yE30^k#5EaT?yB;oI5u7SwISI5p**WAP}#H6AxA*rt; zsV|`k94(7Ui7u5tO^?Kkq;M@(f(Ov@AI1UGL=YIPDDl`3&W5)s2xL9j@WOJ_d_g@C?cZjp;KIVpp4(@&`Yy#(Dv#UMZ#v$Rh0K!PD5zztH8XMoWgfD*9!n)Jy@6U;LH z-~xP=qM6$KrBs{t53ZHe4}`>!!jM$A>8jIB-nryPd;}HH2;H0IxQoHIQOoSY@Z@Dq z41|d0ck&Qn*Vxkwgf?)UjlmybH>^$8O(?MBAmYAuQW^#>76z_o7lZM%w^WCBM|L<4 zRS8)!1x0J z5TESmVN?pY?@|AP0+th?LD&rZ+J;X&FU4ttwN$VR{XJOHcmPh?GWDe^7tNEM>TMW^ z?h7Lfgwha3{xXtRQ+8695)_Ba94ykLiK&c9v3a@`A)iB8w2)&S-IDp9IzMA2OV1u3 z-)5e}hbhdp7C8zceBsDiC?_*pydojMz`#J0&+4YQeUUP|Nrr}b92k)tC)hmtslB3! zFplXnb=h6MRB!WXK_}3(Fri7R>a45;`$zo4o2wBaXOzE=XO?c3Aw=TSBl)B|$%^eY zvv6J=x51~vaWsq0m+dwhY+qjzGS`MFF}W_GryPmeEJ_YD;6ETz`IjgPczJI&Uq7kT zzru>EvC+xd>Q&7?*qrp(AOKLtAXMZqfMAbiv^R4sruq8jetwAjPVfQ{s_O*IibrHF z4a`_wPn1C1PK|`c;mH6GR|8WC!nzREG&$gI5Tr>FQk$@tW6L#EZ_NtcKi4>|2Fni> zWt^A<@=RrF`w2SEET~RvzoD@xz~ExS*Kp=*Qu3zoGi8Ogh^D-unpbfp(8`+~mRVg{ zh>m;j;3tdb>8N{h1FRevI$PXcGYr3J+LuI)>{OlfHwvM;dj7ilH<2qJ5C|@EK{<&H zuf*88+S;OgmZ#5k$C>p#EW2;#TOA|)l|>c< zdAp21ow_>^3Zd_+*ZlG5)m6to^I&Dn(0O-ypP{mVtZm42^IBS6AHh0uMR3+uI33|5 z^3#C?VIRAd|NH&>#v`p|gg_=bvK^C|Z@(pu85dPyj1gIg_S7+KXa@v>l$2*u)C&_9 zZO&XLGds}L_uaoN7+u6{A64@DVj*%ai(t>uABF)(TFQkDPIqJJt|5@mbKwuHqAYN@}vHWnffOr1l#Xl ziI6FFmUQdWrO6gp;!v29FpaB|-4Q-59bbyLHV7L9=qc{cBS~3-Gy!{Zb#q_UR0ruY zk9Q90lBk(u3E8pXLa3-FwDRz1((KPFJ!Vl0B1qVw1Pm#BR@RgS2WaYx*&9wx)x<1{ z8QjUo)^MJxer(2cLIoq!*B~Rn0FGjI7{&^u5QL#`_uu$up{_KB@8?g#mV*1IC zJ*Q{q#An{}R8dn12vG=pzTF#o#kh(e`0%3!{JW(yqv_Mq#HFpGqX5Y z4~`zN50rdd`7i!uo@r^hS=xUkvKH*O=yweqwAkuCpqYt=7WO~4*{`xq1Ost=vD{YC zj5&DSu^em)uG;iXjO{@%w76H$YZ<*)>o8yk{hj<3`NoaVx9hBQ?Se&HzJKYkT8oqB zJ&XV%wmu|iWSl#8WCi7u?B*`wb}5ZarDiZmbY2`^74lStIFA4(^%d^X?_IM~_* zy&lG$nUGnWzRXYrk?EUquBk}rm;to8H1sQFMeGE;wzj ziSDQ03rs9PuuLzsP_hYL4B!gVEDF_*&Ek26kjDrhSMe~s;Cr(B#&rRh)JHV|xHB$< z!xscBbc3zzHi7s!;>UX*8Q-r(dWT7a_B_Wtrc;aPkNxG02JC;CvA&J&^okckeg6>J z)JZ)Qg~9;E`+I3@MtYK<17bH%;=g^%rDcgHV4yKeOeOj>pLvr+4;S5VR?eo3htC@- zs!7V_Ng@Y3mhpi(Wf}C(*z8Rz+vjCRgH9^v!xe8_T*nnz-w3vKEW%FI>4}j`4~G7s zv6CN{v37iq9g3N{n!4RSBhWfLp$&?R!FH^|#3({1$}#^#zx=h(WoGVy2|_U;oBA!8 z$${?Yb*Lu>Ok3~bWe1%iN~ZOxW94Bz zFmW(GFnj872P6Yv(L?@tIrvZXH;Y|L1PSW{LEW)Mh~KB&zE3vq1FdkiUUMpXYXa z(QjTpaVt4d%Jx%C!l)O(UZh)z@EVUe%Eom+0+`NrJhWP10g^g=&1=*F$ntdX1V3;%pxi-+ZIsF?dkU~0s zo^(JA3`EA!@<_nzwsY2yegq5ZZ%jG0n9S^RKJKoby!*xZjMx5UQP1NEz}w|sR9$b* zGkgH;uz(%HJt8i)1oXH5CH%H{~U1H}Gtki`?yduTm#rquF5!A^+F>%X-(7 ze?4F#sEElH5<1tPnDVe)r+T@bw+9t&w`Dy22CjVr!6R#WColGQPfu^+8aH;IUv0~{ z_5M1oAj@RvA%DZOZn2sR(tphDeys^x4@NqZ2DmbStH|n=x4?^06+=%JC!VGErYm8u z+D$CZB>+%`kE^qpiy+|w1}#IA))w(Ry|EpH(r}Ve>*KxGfww+*Hz@00TdCJ+%Wa&C zh=l^5w0%yoBUWQE$?3*afRi<|uJgB;Zn{1v)xKT}Wi}G&+*i}r_F~gFF_xBHj?DZ* zsy7by$Mnl}#Vh%x|4LUSJAT7nue&R#ti)Z0^my-iwp`H5*m4ADKJGI zcb5Z3jo?9~XQkhnaXz8dl+OqNAYxyLD{q z3NUstpR0kv;_8a!5D|`uNMA6|Qnc3fvEK}6DSktq>4C=nA7;QcHrIp==f_}yij6cH z94vY%=b_pN1v)f9z#8Je-o-hD?0#*~J=aRWO~CZ5*1~)wgiT~~a^kt!vg&m>E=&7m zOFx&FYdqWK5D&|CWF)Oi^Qb8#!%Y$@0bm*MqCcth%>sHV>7s2v(WQ3wxw8i@14J46 z?309a_CMlF`+ju`c$`LWN2MtB@+gWM{a(Ts$k58lO?$fU~`eaQI}r zXBzUl$b8XMoa-_okstsDC~+2CAKb%l$ic*BTbH!FoUOougo|de>b8uVRwugod1;A} zbQTt*7(X5SgpI5u4K##}%A2ZuY-Il>O0aRL|0Xz>k0o47%1q?G(*lEFbN!p9(zgEa z<69=iWt)N98Tj(o253S-a~WeLtt^Vo`w}iLgjz4~o6LdAFrKm#vnNFg$x)kM z;Ko&!Cm4%N&xIZ%GHPZ;Gd!0l0)8svrY9>6Lt318`mP0@`!d(=W+*_pR?vPtJb=ju z2$TQa9MR+NXzZcge;5j;n~IU-RL-1v4L@3C%4jg#E=#^pn+rqwUqE1o?_S%Y2?Uzr z7y@7sD?(L$dlO3;9<}9@Nl)Fuyh}v*Dr{`er(ywK&6}NPBD!NbfLCceKl?ILq%rbe zF7tM*d%MBawjw`lv<@|o0XrZJLNO=U4Nfg2fdwhQo#nsRrhghr8s;*L_>C1~NGSIn zJGEGbFoqqi{0>Tx8UH^mfDQ669pa|YzRBuPx=U}JJ??dD9*<$V;J(D-XPe539SV6L zZ3Ce&wFJQ+k6hX}ue+<<816?>aE>>$_%LvONKysiP?h9-6QQyg)uCvyFvD94t_28C zNQgKR0iVa~K?+x$AqW%_DpB_&6cHWC@8k*u_DwaQ14Qb~LsoL^f9WKk?me-xEEFgd zc<5?|oF)azUXC}`6HYvPjnZDF?jD%HfpXr-9M6;Bz>$lf$48<%cG=ETIR~7{2;}<) zcsao^PK}o3*6*}4yD6$4`V`+O1%yb2$1EtpdBl;Ot!wOHW+1I%A2u2m0795%U+?HmAu^f2s9*eg`58RwtgzTC(A$2|6}(vUa%U6A3{SsR!yzSH#h-%tHv z|L0k#tW5~O1jN8If5(xTzk6YgRnVFPDNAGiSR5BbTwxnM{55)4%-e-eBfLYFlg)Id z?jI!9HMVF_?;m)2)l9gI@nbHp};U)(hL$ zrbqs%wV7;7MP8IVwL!Bc8jNQwuIcRz1wFr4+O}sGTfgl4Jvy~%q3jxQ@#}J-fG*VN zA0W_VYt*qt)@Tk|KGQ1Golokw?SZ}eqfiyp+ z6Z5l6JGi+$PM9C(w5hO`Wz>4Kd{jmeK_EMV_Z&f(ID)O$kIhpNj%OtlOw9dZ{{UHr zi1*|c>ndbWzvalViuX7{!*)zeuqG8aK#`Ia7uz=8nQ0#FpQUMmfnd=kSKV7Du8$HJ zC!7tpVGZn3A1~|=#rFfnmwtyzY4eip;Xi80nseop1jvkqAKFbJ$`)DPwYd2WMz;|u z06o;6l=%%6LmO6m^R|3*12fZk2R{Y}TG+y2I&q`86uq$mx_e#D<-r91tsm{pCiSG* z^XsTd5q_WV1pA+=0VPD(lF)~R;4ipaiDXQkmczAR-M+$-QDK8+lS5 zE;t+kM0v^Mucq+W&7}sFCv;bDCX(~;C} zFc{K0tORV2wsdbr2`OU}`S2BY9z=r-zfCxwL$1YQ`o@*FSiaGn`q=hNQyF0V5~Spw zs`>(3Urf^3o$v`n6>5>EC%dGsrvOu0z#GXyd=)t`4tMWbbpBQ^mu=Om%ur)%r74fyfq_zX!wn zvvT-X&D}DMx%_0T580)8YebB0ZZn(FlFIQ1S zkl830oO-h=PWzg??cXzbbS_|(B6b_2fb-0GS#NduG>6f0MguiHNhIAzZDRISmg>tx zK)lZ8_8x}D&#V@=gSq!1^Tn_=T9r6tDFMN=e?|yIBFIv|B_Q2va#DzV+|K{WNJFv` zQ=25uk5_pZBDCu32Lcdz9~gTqZ2kiZ8G=fFM`yZ{ZpxrB1X39zS4C5C_UiAZ*uQ>YYRI?)C?dhUn;@T|ICR>wpK(1rb`1`OgoB|FPv>v9-$d2s z%!Cihkb%OEzu5~i=`nobT1&kf5)M+GR{%!csqO|I_ToXn`|~2E_;=h!0vQ$KzpHk) zsx*Y$F+a()l}nd2d+XC9A*61;|6}5*`l8DK3IS$a9y^^RiUnZ=X)&m`E>&(w@ZXyAC8 z59jv8w&gXFT&RV`gN}b+3_1N8nT(PAs6}($;gR<4ey#~THMw$*f*}|9P}sd%NjR%I z9JEM8w%abN=E7h&9VipX79I!z z?A8xxWo|;q${tikxahK_lrxNvF5+F79Lo?sJ01s3 zBvzY(-e!rXn0{n$W6|REE^8mih!**H*KxXIT;O4EK%idricLa-YJcV-D(in%R-NO6 zbbWhEBv`-xTeyYnAq(#x62xtsY4a7ah&1g>u~ym|#hWv(sk!a}mKKAn z1ZkI(qhOCGr^}MJbqx(R4;EodMHJ^}M>V(KKM`N^wj2^45z{e5;Jkk{boXlTfqY|O z4O{0dL$2`?6Y1&>&QKq!DBnCT=5A-y-3Ld;ql{3D(oBG+&waH|0bEA?tdt!7qn-ZSQxRuJ2K^RlRne%_>@wd7N9ew#rETb- z1&WVlbRP5t{CUlaieYEFx{^WU*IkH~{re81B0juwd-Wvd0EN-K%UJ8xJ6lW5=qa6( zhwSHz!A>H*HP>fUkBDO?Xy+b8>}4F27Hl_4%(mv`O%RiWeNty6&_c;4@@;TKGtl$o zDG({J2S%|tK*rDUlJZfD%#^Lp+}7P*PfPs{7`^27+dp8e!WWg0%jcr7y85mpw~2j` zyl>cl{pvL-X<1cG(r`$vvd9|jufts{VG0db3%mvazS;3a4^6j#klPsJCv_gXXvXO>`gfn z@L1Vgf{6rfb-QO>4f8ahOlECULo{w-@uYgY#;Co9Y5d$J5?0QQ(jx75C)Ea~u}>@Z zF;e65dh8<5?+9r>zZw~NL*Ocfd>9HOuF95hs5fM|`df3r2HCiL?edI+!?agOfzro6 z6B1iA&W+m4ZkMwilQ`~KULv}ZrOjgC6ZrUx2j(?(q$ZbZ7qoe7NNjz+P0`Kcd~s>F z^67_thJ1b_e^LG!z1TNv7pZ(^XKb&dCB;!}_4?o8iCl7{Pn@5reiPzIrno6K)yPv`Px zXC^+`N&s6D%Xh94+Qn}!SW&CA=ktR$v){7WsBgCy>#p?05>K)WiqM=5#$@+P=)Q_u zx>gFR9D34cO{7L%k=1>Qv&Glfky;_+#nvVg<7-jy;?a?CO$OKZ1nuk7!PDHm+Xx%| zD?a7ahj^X0nShoyAS!% zjQt6HH!qPqfx_0|8COoJF}u#tMq;>^)xVFUGSR(0p8bB^P$dbxQxjZ$?S*yKFQx!- zbl?DrArt*%;*=~?;lX#8^P|XX*42|E>**+{xXIcjCZW&=R69ZCTaq3wEZJRJ+A5Em zvmG@tEq;adLVuGqIrQAutUu|3BIFln>eBeKC(s6sJaC~8JXBcnq{aVK!L#oD%&~3! z`eY`xLVIn{>scvgG-{n=x9@y3dh zPS*qB!Qr8h-@o{xoXFg;jev;*7#JvLzVKiDZ}0#hl*&O!H`oGyd2qa%5aX7^QUXiXugi8Gjl`%nhs%i$I+VQQvJUeM9!dKtUHF|7*CtZdqLP z@^y@pS*A!c5zHipYfHzo4fF|!Pj5@>8DOr=mOg_d8k9^N(N~pu9l_UM(9+&-lN*#E;jMWE-%>zHT5S3$GPm0yBy*0-J!Ai* zw>CvKszhu(MbPz6Rr}mSkLvr&dvw~Q-61Ll)s@XOVb7JBX4$0>m3hyr%J0Cj)>0Z5xE9^yA}mWYVe#9F%Dr zp(t@YK$GL9_v{Ht3M-o4@dk|a6lfb1 zct{-xu3PD$V8CiUgasb+EG1zn<7Btz)4^$~jSd~NhQ*$M|NT`nfp~w85&ZN7wPd&9 zG<5l0YS&!AuZYJ*z~lRUZB^BC!@s^H#)j?aZcTL!jau!01tpA&sILlTZTI3B!M{B3 zt}aw(R;NuFD0$bv8}zXi{fUWh#ImMJMEINl0uNovZXbXCqsQO3LYF7Q za;P~ss_|}v7DoMJ;D$Z*un}9}1sN7(#CA+UB(^_AbzfyHP*xh-eR~C%F{F@HxpMfc zup$nIgM-iyTJOYN9yY~j=VP~{M=Q!$t)`MA4n>OeYwxyZw-pV@62apRTN#*LYH zHiiOUcr)iqp5ZOG2h8UmAcxGBm5-|_oyC4nXeDLyD;2l$6;gL^u#?D}t|rCOHZG1W z>uG0qp5YN>Y{d-CfPr)kZUhV$!UaS?pqza^%L)|#j;OpUliAbDaEh{htwr`ZZFpsteoo}%jL?f$Q!(vi~tJpsVQedu9>mm&sknirC9 zgu-E}>1LhM&5^$BT>!e;`%b*Q!n-FryjOAKKGNcHHt%;t`+AR! z&_$)?bc;{}i@Db`L?q|~CP`)O=1hs|=Nm=}hq8CdrwL2B!VEeXovDNVpOl3uvErssuj*nx5 z=RzQoSFAyxo|ZE1l9_fPZ%B28lNKnjXY9m*=Tl(!DII$uvx@qrjr;AkWA+Jlb5sXW z*J7b~#_FPMq&x4g>B4hXdEMTr-zhL4AC~2xBiaT|65YStMf2eOxeNtLSPq2Z6{Hd^3|Y z!9bFeJmV=9o;C~Te`oB7(XI|301;ny59Y!eZ+f^k0O{Ov{TTkr*ZZSkO&5@pEp)O1 z3MTN-U+~fkd*rSOR1wnAm9Zy-su>$A$3YRVtH#T(vX*@VOhxvsXLljH4Rg@3V~-Co zHOzpJdadJ-69LeP$0x^J*R%jN@y&t#(Dkpz;ptY|0e`HS=GN9r$%5IVPfZ87_S5ZI z)F|}H|P1Q0%pW05r7uX=Yb&lHJRX*#sr)6nm1@nr`;alDZ z^|h&HLA;(ic@j354c-iBEwj<}vAzm+s{?`7i7pIH>ZZfR3LE%OIy-9<+oxH%+{uMe zTp2x2)lGQ_*@MW*1s%>0=u$;%Vyv^^vpQJGFsr~pwNz>#5I(1$3#){~y9ER(?VB>R z7V$p~hE#TEdZNz5=oevgQIx&OxZ^QV?+;&MbV+g5HQO#^Ot6Hen}A*8dk`PIK7`%= z+RO0hQ{K7KJ=gzU_yJT<*LzR=lo^`1Sp^3LEPAHaH?YWG3DIoW>auAxaGDnYJL&!O zJo~j6am1#>C!n*Th*hAo&h>!{64iRJ!{^(KuQ~yr5Zl7#HQXTN=XvwX_^(!Y08c5r zWRHdrUdw`s(p0lT)Bv!`qa|I^E}o;=cccuO`9o=0**xCsd*wB+0kiOiU9K9v*`=j* z2h)JB04kH$G;SC&;>D;VLz&cOuUk__!?pG;9Picd?8*S}t~vCNsLu91>;TjV@3k=9 z2#Ef8TM7ctsi`CjR_M^sK`6uUNbKnT7h_0*aKX#Dja$#7K0qFD#5R#^Lnm~7ll|n#iy*!?Lx{o(2pfa%p(FzcwJ`55(~*Rx&q{e|jlbqJl1K}iD`=&UKFW`K;! zWA^Pi?>j@=O?J%JaZEpYa5Gu?kj^dC!}yw2RqNphkLO4Zmw+ZPKT*+ z3BFeErj_r!Sqi2N&u@)V5Qm@azW4^t+JkP~3t$a^CD|hm9e%w;i zlLExaQSk2TOfOO>CCLIk7MtzObkFbisT)4mZCvv6do?prIqh%ZB{d)rHECnp0ib>y zwKFyLOb(zOpebom;m%+z;uc{6fm*5s+;OLhm?couvL4_-@!q_+Ojak15iH*Gdb5&fSq%oQMdqdeM7rJpdTs)zL<$%gMC3`Dr zilq6`Jy%&%-jW8~n4IGt^ZmdivNM9FEL>o*;o)_p&C$dhqr>Sc{#x@Z9jBfbg?&-h z!qU@wEvOYN=oRcJ*kKDzTwH1Ye$4+m8)pA?WT~}91=|%jdI;L^{k*kxsc{aCv+Hs& z%-BC)cPZXQf7G4pSgrKJz#R-hwODD>W!^l>Hi z`W0rugc>sG<2ErVo*nvEF@^_@T@4T*uB1))Br&sK|D2dQudnzRE>SCF!hukfGs%KQ z1o;yT^Kg(r+BSDS476po@gR_()@y#ob6Cb9TUI(|(#FNhrJSEf2mP~w+=tpnUUTya zlo=cbNSO3*0L^N^e@cdJ5U$kOH%9o#;g*GzCLMYIjD#r;iUHb}#SEwI8P$5nI@vhu z3c5=%xp=EHtIN~>+@M+=Be1S7Fd^ZJtT=}Dt%~nEPuXSfqwN&y+&eIbpdJ?)xe+D} zf7C~j(|96|26;-j|j9b&$QWGfRV8W`m zdIq)rVBg_rdOiKVc{1`f0!htMuR}gn?Of1PLt(}-@$hDKOYb>Uyq%05DeITTymmDu zbWyJ2wjb4ztJU7P>7jFGCUB39AtGM4xDlP6s*UYU4i9S){rl;fl5F-=_i7lHMS_F? zX-s3Dg_B1_^to9F zkAZ)H^?{eO-*0Sha`&sVpR_3gdVrF?yS@MQzJoR*fqZT6zb=37P0#~G9f;XLpulI% zW>+i)C_2z@hP}*wL9MqYT?1qZkf8MfM{we2X4~iyd)zLZQ`DL+3HYVeG^d8!Osd1J zPnsYQns#0c3Id}lV%S+GKE7Dq)E&Sx5|nrq((T+)Z*sOvF@TXm`|Oo;wjOvS#{&|) zKGJn}@=itXGt{fFA`f2{&Cz25%ZW>CDk-J?9J-x|e}536Ec^tTS2cN&^q2oX+>R`# z+mMy#nnz=t9YEWyOLtNUAUN@ZYGicvt{+0mfTlTSk#~Onq%R<#AG729OA8t6`}K3@ z0d!g^^Wev(udItfdD zss1_3DV#hM_>hs&>DT6z%N~`QdNJ4_O+czaXE)}y3H@N_#@`nD1pDI$i3VL2vA}~k zq-V>DXvh#n1B3|QbY0d50wuv&* zQuOCUj2$?$%$$73*Em=y&mcjE-g2i;m7YJxAwZfO@&aR}#4Cea9Zzc1Iwy?sx1xl%bVujXhOt7hhdp*$CuB4!;J2Yb&_FL)VG{^c z>RLonE=Gk95i(ete%sn^Qj1cYZT?LG+f#W7;3ndtsewuv`{V$&8ohdszx#49SzalZ zqbiXVp#rgl(vqCgQdJp=z{x^Gp>|v1#WRhTJRY+jtdNFPO>}S|4ja5orE%newKCz7H&%`CwnQ`wkV(p016UO6_2pg3Xf((Q<@e1?dL{3 zVm7ONOdFAZ7Q+@m+~?^n-1Lh+5+Q;0WUz?t?Uoa~3rKeS-;4kykpbi}+S|7xA(M!( zo4&Z=MD-v{8KQ!G;wNWAFXIL934}XfTKy#l+*WVwwHZF}+v65m;}2pA4|sU$o8SY8 zCFE0+(r#U`Fc=MX7$UtjvaNtV7@mYQjKaSjnH{+YCxr)QDN`Q;D0zcXqlG?v1u1xc z4O3+otD4GK*Hc{KNfi3|nmBe*^gpzwd8O=v(!xU62CfJRN;>kr;3S5Jv($#9Rh?5Iq;^Dzo0@gv%Ft!1oPukx~x&59AN8w2aCD`q*=T2;p&m& z3?Z;LnTrhoe@V3X*DyUh=F$=wNT5cBIzPzpzBv|-)$KHIl~~IZ$T3t&#p2ks85n$l zCM1OXOg*iU1__E|cFJE&x|XZ}T)r$m>+@BgJz~Z_qmEP_+fQEKd1gqVX}MhCTILIV zUVrXsHzavAZ~G@?BH!ET90uKDKzw0O&-v-`Q9kRc&5iX^T5hjk>vH6rb$2&k<4;wC zZJLajtn6J^3VDqo+Bb#;NTuD&Rw_qQ_$A7+DgerUWT$xPih;<$*Ax2rTGvE=Puuqn#Y zOj>>$s=uzUs%v%c*&y%Pdb5oB0V&znOO(_d?MbGRdap*4jQJ@B1;SHyU}g@@{)I^^ zvkeBI`qdRWSdtFuX|2&Ov}itE@%bXw58CIK-PI?V%hlyI%u+I}&n@3Zeau%75_JBx zKZnKC!d%^|d; z8ax5qA;?_u#BkoVrSWs)g)Z2nl$86#F+6sgRww7>HV7tvKA?I7K!ABnoS4Cr+cf}a zGCRBg)H)i#O9Q&s#cEi)kD_ZC$F>}sZ+_=D6No`hxD?WIw_%2`?`uwd_AB;C=xWS| zNN=BzG9?*fkVd>*E7^Gh<+W57{HlT$(Ajd>`g~7k$?fKf5%Tb9fQG(=q+8RVilwl^ zO@_bz4h!gI<)vkQN7#@byUC%EYIDG6lBn9G5Vd1JP-}~+RSC~pZ~w~g4Z_;qwE0JW zmz53Fau{fEqMtfs8vPS_II8Wmx_YOFT~da6QApV=E9-wE)vCWuHY#YJf97ABo-cfAb^DAX8l>@Z}H82F6<9ruo8LKO|_FFMZ3rb4b>GOA)Wwt7m+rVv{W z9#G^zlUzcQT%PvWpiIPoT7L>Pr~+kM>d99v3S^p zW3B^lC|T7sULWN7V;8LV<*lW6Ib7zzEAkeR^9gF^h)NTVb(;&{R8#U(F0ZF*V(Rv} z%?h)V`w2I%Kv!K4l_#HYegH9`E?G8UxH_2iS~pXy)wAS|3f*vsJ|5us_I@IIB44+H z-&J5u8O{39a=9aWK*)Rl(jtQ;B8outr9)9s_2Ql;da>@jD}-h{+5U8tOOIR}W5GE1eH=JI?Py?9`J1d;OKv!uPK;oybGQ4_U zhP0Bk^gkr>K&JZD{`9Z5EjT;29c!sxsqE%5b>$$aBRB;2$VQN$H0JnV6cDkH@U|^p==@$ z>HP70MQdp>Wo99ljC3=%JYpB1u%?Lrn2Y1o#(B=YqhL;92 z;Q*2blvt?vn`uZJlV|nBam7(*b30gH_8L}C?Kl2Nq3Hp5{oQQTIb>1Y>H9Oeqx&n} zK0|iv&6c>(2KvWwuF)yj>FvjXs(GuZC=a*t&1~lq$5(i`Mck8)4TSEv$`BJnwJnDTnL{h9j z*ewR1LG4(P;Z#Fs%>l?T#A+(C>w+3VjI^$UOK|)&>qGZ%O zCi-Hg@7&wxickX`e62sQhGh#`a3~t#jkSx*2-r_KE##`#80?w9jiJU666C+C~d@lyBAH8wu4 zV`N}5q6;(3&JR$)!F+tR9dM<0b0;y0fu1l}<-}2?%=t6q0iU1!u13@K{26_pS)=v$gAOz(wL0IiJEb zIc{oiZ8{IOGdf+_8l>bQA56F9g3nOw~1p$j$kn>G!!_%E|JPVy7_8$s?SV8RTp|t&c02`Cc`KdRKMSCU#&NI9Eg4b z1&Y|+tR)3%-(&2V5#bZO9^dADWwj%rQlhwon6vs0A|9QP^?P>+NH#JxN7E<#mD_3f zcuSwo^;w^N>1H>7!6@v#Wp~B%x})UcQD?F%EQJG^5%-p7)(aOFCWune5sD-T;>+)u z@*^E-O`%4$O0vJrz`HZl`W0W`ZZ|HSO1Rr)W4mNH4OZ>xO?t4QZECHF>D_M1b>CUM z)|+ydx8*Z!vP*7K3?%l%2G@YAJ6fSdz#W8+yFdCTqC!*H&vm_8>o24@c6{w$ZV#UZ ze^W))$~5%4z|ZA-KyFqh6EplYwXzQwZPt08I7y|DOV`zEvH!@!TcYoBKQLQ5=aXi{ z#m0@!FH zlOVzEOKSYi+LID`9r!u1Eb#054q_}nE7Npw*n0oA_4x|DiZ%Rq>D{_`M~sejSVLbpt-vY#y@lC4LI*XnEWsfjp3eUV9F z*e~qMI$edP^hD@*NiUR0qMVZIf?~!sJXAs?knLN>>6&=(f|9Zq<+%&wNn%z#%w>E`{ zt}9EJ4K3E7CR%l~lKa^jI4o!RZy%+kH*=n@zMb*7b-LbIX^O8d_s=geZk-AYjdIU| znCy0L`=IYnS35nAMiK7p{B{e?FTSFdniZD3)p~+!ES*{QSX%b2-DYp+Q_Rk|-#u@R zqS3;V#a@k)GlZt6*vI7s%A~t_6AN_!g^_MMRIiFzd3AhneBh|xMc2@S~_V7rNHH+YL_)bA-AkdZ?+%~7;%7Fg>a@~Jz!+z&W_r1K_!{u1_egsBeXE%ogxw9r z_;-MVjhn27c+TN*ekvLA`3XN*zD2{5?Rg&OMy*=oacz0TY#$Q?A^)K3daA6z*<6lo z>nhv(mW74+Wn=$Uy>sD?1nT6d?zIqDzywfFaP%WPPCa9(bAa~RtWk5QS6=w{}s zhoX6$S!xA_*iHmmk1I`=zNu+9E@y#-Y5zu|+!fv%O4CVv0>y+l z@4TVe(5geGGlY9;29hEeEV&6ju58Zzu+w^auRi}(e|V#o=nb2VJZ)SRDoiI$d4l=7w%+1VkT^0CO~z?xEU)f6mO!W`QLOK_QVmB z8Vx|`vd3grla3--sA5cC(s*zHe6la;YSoX{#@^#n^?9ye?i-3_l9N2NGd`mK#redR zU$8Xo!{O6dujgEqeg~(;VQF19JRbA?1>YKny;g(i+J;wG@L;S;WgZVFQf5=Va@RMH z4w%IU;X)TXO~SERHGp__AN;5&yCytGH$OGha{Z|K0%H(j7m$kcN$vy zt%e1}qxn7~w0T@1DyfL%`*;cGQE8o51m~BkMWINLt?lz8(!V~skrQ@yeS7G6noz&! zT(7v1yE9k~)<%LmU!K{#iL$$8L!V{&EItM1@!7Z20Y=k0Xxu7(YKtLQ z?GPGpN)^74IQic_PyV6wTua3o*wcW1ka8GZhM@$wTEM@`-8zSL8|t%{U}I;p+vYxQ znPdZ&ackANuAb>&Wl|D71!bwlG&^R&fp`YTE<0$Q`*Va7%Pt`}+S}(~)09<`t+hj6 zdnh1gapKKEf7}sGpI;35-&)UZc`1K3^*Dp@q9F$yp6O(>s7M86m_$NT# z*1G!u&zBlpIMg%q^jjk{Qz5^?d}rm`!J9HkHmPjvy)A~r!Qw()3|sc3#az{Hv~}tz z*DMr?<9)j+Yw<5a0msmSMCpzV!GbS+#L^71$-|s#?BGA0ru&3^`p{qENK>(Bk{eyT z+xq8vlug1vQ3hb(4xalBu>rP9J&E0t-}G)}0eO%M?ozv)tS!GyNImh* zc8X$ls=i6a>e7)00s`jde947EZl`e6XRa&x^FjVrZ^IQj-gt|nquphS>6xxifj>Tj zDz)CW?^prZ8%GvDjeE^+zcDC++JImbMUsoblmO5ZzL>@0h zSg5ch%9*m1(tSxD`R%0Pf*Cw$qLA)FlP+VzTuK#Lm(B(y#7V~;1j>{g+ExI2Lx$z+ zcQSF(d9~2y8%3zSXb!5?iWDnZOZh2SMv}8MXepDWSg~mt#$)&WRv=R=o6k3rRIII6 zAY-6OiHs}~H7YBWP$Emgj57WFxi<*X(8fl|^g)z(D>}Lb6SLUNY|zZiM_QUyS-G>N zr8Xp_EFGtdU0y7PFW)k53TyRH_*jgT@$+coI-7TZL%3i>wCOoR56 z=U>XGfq}hi-8WR;%j#@xj!OOahn~4RKeTAHWHmfx6*9Z-gqei-kUnlAC#@?B+mCAh z&k}QL@MrZyc8lO>W1Y^|$B7Yd7K6oO{xJL755{b&hSj*+`YSM`9|B>$TOYd*Ld+AJ zkp%pwm}G6We+AF3g^5Qxa8Q-+EtL!9uquOdXS+Of&(LpThEHVN1vj^%RRnFD>#f&Y z%YL@v@(ot!-n$QbIPn)g&~N)3k4-f2!mby%P`~JGvb3Jo*sSI9r+e-6_&QuVr5Kd` z^N7QL!vy7n!f^s>aZs2fFbmA}_RIPh?0Fnk7H2uBYD71QKh!p=p81Y1e)t()Ewohw zuFG||C)21F9wZ_1W5`YKlULKpOd0t*bh_5-d@K`RG%RF#71eXnrC<`uSgp&1-v>JA z(gZi#`kPD?`@O}@`K_0sm`=zH*ldD3UQ;XrN&Y)*&YS5G2b9pXTHyIdNrL)4-$BKti*lL&QERsW`DZRh5n+EHN?|#Uc$~37f4}UYnOK%v0qfK-}&K8LZB|!QM^5UhhhcXy~E` z3>y4K!;JPn^w=NXHS<-D5zDmDl&{*TNXG-#KVl#8l`8;w@~@q@~T}V*}*g zg$Pz2y^zkkRh&D{(8y^Z`wku}qMErKaP+>k*vpg>ZzH!I&AgTHq_jzx*A?5Ywzw`r zbuHRHzh39AUyB9Qif4{b^W1Uei^OT6Wnb=`BB2U-Ra~v<5u|+pFRxlCsw)p+pHQ#Q zE!)G%;^FM<1fqL-)NMF7x6V-Y%h2-t`T)2ygz@h-rx^ctC<4hs7AkY{Z7L>AMJWAI^O5Li7Ba|-BO#iHRcWU3+43xQcb9@1fS?ZzhTM;>WzdlTHMvIf|Xm9 zQbPVR(GONGp_4>sqdhhM5XT+ZwtWpwB+R*fG!>J@wElqeASnW$_BE;Bw>0?~loTC| z5t2Wz{H|MWEwz^v(pyjTc8tAPUv5tjDai8(Qmdq?3^iOGKfDY!esRtH+dElpTN$cA zqdGGKtEhMtA7A^w-Em~(2qV<+ro~2DIj5{Pu!wqTetCL)dAc{rdX%GvX-{c5dX7~@ zu|KYl=^s-O1V6#o5`xv9@Fe*DGLAz1!U)bU+ltFZ{PNy@LqL)QUPaM#QWUcPocs-SSi} zKi!FhGdz5U@2j0&m&#=Pmw-v#U>~hUtv08b7U?_gB0CckQ?sqodGu(tXv2l2Dq6Nw zGj~3py|z-8*)3+57biVi@;I`pZl6moFZlzj(Y4iCXcQ zN=i+1-f*5y?oNBlZvr#zPZ$y;pf>jzbXPqePEXCPbT*L&?L#)=7w04Z5w3}B(Kb#SePL7l_fzb|A+8}E~-CL3A5ANXQ&?e5AVg$oC+d4 z4=w}u60Pq;YzZaejq5E=Jj~xTi+#A~?fJsYtK^ zt5u*yMrEgs=dL8O*H{J_Y8hU?c+JV6m{V#$yHqr4ne_{Iwh2U1YBZfEqTQYDZKT^s zn-@obo4ybBk4*HBR6cvD?riX1ZpZunm)-|K)Sq)KuYCLk&NSkk?fK5yy6MWFJd_zC zyLF_N54KZV4<8jBD;1sNja`mQkF3;8T{uSZ+~OF1S%R!H`rGZz29mCt$Gf)XB}2#R z%>e?>Q<`!st6y82=08fJCp%#0U!X4Oys2fws`469W`} zGt0$>In>Mbd@Wb0Ww}F$>}Hj%R{4W=Hp=X>@>gbkbcb)LA0nM1{4XAc*8>14L*j_F z5qPiwn{GVUDvT8F_y~oFwvr#DK{wUqlfE~Z7+aF1NvPnXqP{=7KAtRH{P@wUtjs#r z*t@MDuFZ;MZmljZ?M_Jx?7)xt{MAQI0Wu`5Tv{z$eiWbzHEaIDJ&}Gg@u3n?U>_(N zq$s8&FQOnX((BZz+Z{c?^YrGpy0Y9k1NRS=P{%$9SBdd(wzN|#nGbc%`2K6F|H{*V zh%AzXvRUrBMzF?igssMYWO`5~M4K{+;CoXZVt?YK+i+I+K zAOUgd>HN0h12;!XQb?4HHaT7{V~wedo06(O%aBOc=LTOFKkVjwze&Fd&|jJ89rBsJ z(|%Yhvf8YeuF3sHWHRP;6zgc@GSDR13k~-FBg!m2a@y$NtYNaLP9_t_Z zZ#7MoGL8pkrJB>6NQsXx=pMvm%je?Z{r_Bmh^RN>rG)70Oz0S`*RIJ1PRQu8n}@E^ zyp>7IZO)lZgPR-ksQwJW=Ywr5pC7{R%dfmd8#+kcyy2Bb<(S zPs%GS7s}Tkrg)+0XMJx8YqipF?+kXQ8EC8Hun`y{l1vkep;$Dj6O-Fwep3YrzHA%Y zw6|ASoNpWLZX2WhVn^>_JUJv{4XRUrn;S)LnS>>e$TgEt0x zdIx%b2!v3Hd#ULG$K1okNy6jxq^7xW{B&Jj<=8}`dRYg7e1|D4Yw=q zmBCH;&L6VS2wT3i38qF%j)P(Ff^Y6w&Z5`#Bsa#~v!aC06L!xwQ*?3NSFLERq-;l< zYh<@EhCI*VH)zKE{GD2so~)t^UU?2}b!cfUXgE~G+^6FA?p;Sj_F`aNI<5&9sSQz@ zcE(C0#J(e6GrR+rGApaSLj6Lw!%JShXL7RKb}i*>^{LVJtoQT%g zFK#(dECfOdj&@FPn~R^NZxRH^R+s&h66nrkkN3sSBFW`# z+6tE-kYKozU&$vL3n&FGuEBQ@Llmmm>-;3HM{* z4fOkh?18dEj|hG&d-he?Me_ViRJnwZ#@FxbT)uvxsCZ|ijiWVCQ0p_(MVR=0&hNaF zW?;6zK9K467HedzpYSaaH$h^aNJOKQVQZP4S|X-2w>HvQ8Pw;p2Co{I`lv>ZmC0^d z@)AxOw>rV)}sPGBuFX!Ro3H&g-HAP2N2L8<%sio=v`0!9NImtlwHTKT+gBd<5y;# zO`QFa!8J?SZ3W~_ip}>1{D*yrQc*EdfuU-^PD7WFR4H5(m)X4P;knFlQ}bYVY+<@# zF%WPYQ~%%58tLdJ*a$peAXFbB{^@N+mhK7-OI+^BM>WMUiaz+qMf32*O?rZM%F ze+9XhNX{qY_k~lJV)sJba%}hUTf6KOhI>T$3lKg%4&+^g0!BRysr=6fr3Qm>BK~b<>tHaVwKi>gSR~Dk$HNe zFB%hkKU99Sw5+iR9N~rwd>KdvMtSM0KV z#2eAeyH&yA`1RkRJ5m*YtG?5)D0&7A$PP`sZRPLHb%o}E?&gLnb@J}8OI1UZdTL-# zL2&wa1+_k=;e?UXLxBrVmBtojyW5**9O;BaNRUgF=)yuBDWNig?3h(Td|IfjIZ;bX z`@vsb<+qa4DyBP0-+aX~;~ajNE@$O$7(CC@u%8aTiRG#8kyVv zw*$|1Mkc)nasDPp6ZnBlv`xfZ^pw=!d6>y*smXbO2QGT?GMZ`@<8HHNP7Q7z4Ug6p zPtRqZ70oRNfq}`m|BEn{(s7Hj1dIBHl3g2qh#hE3IswC@2GG)q-FoXS0{92dAy(q$ z*I&jFQAW#fKRkR8?yB(nVM8Bn zOCSC6VDkxt8_iC^e0Fql$P+7k!SDI7Exa0rWC@Lw0|8Q35BqpyWTGk+K3UvAVBJdZ zX8CN}$jKp^IvR6untAhHMn)MTLB_??)&b`|_u{O(6TnU|naf8VA8uLyl{f4uO0B_e zyVd_97p-L8_B=o=RH8^_(M)~C>NMSzl@{h}DJ;7(Lv_|+*~`js+1p_rqO)6UO9ZB#NAlzp&ePBg?ATl2V~02yu2;Ah9*L{aK;=TPFR}zG4F}) ze6PM9|3YlfeT$dUqZa}!8?LHzLiF0`u%fa*t$sgRPVY5=2q+Sts~>i#6bs&QaQW0{ zr))OEwMq9i+j{tXcCt;nEdc>LLmmSV+EL7>pRfexcfIv~$${YvLdsb~cc!fu0ZU*?gnj8ogETx%jiceHaJ{R`)I z2ECB^w!fk4D^}^i`s+HU@1iwj%n=un13}c!huTPGz;Y9nGGlr6o*jl0a+@ zE_EoM6x;gp`S23J2)HB8ihV*1J4V!sC0JLj7}yXc=kq~vys&%(QyKz!II!^8PaEr4 z;JzMXe_GjT|D##SsYpRm*-9Tp3A=&$SJWXr(aaBC_ib* ztT;1qzFtMI&Ey$UJI>%pZcm|Y@O?aNF^5%+$zRk`J43Y|S5=insYY@LgJ~QLcAfVW zK8bTb>?;*v!e!i0zmB?FE_J-coONY()`vBmOXaE!W?qoVAFWpiS69gq%G!WCWS(-p z%sAc>POS)#O;j3cb$UZg72zM^i_!@#`P z4bT4-zS#z%3>^u>n`7r76{+jCCi^NKD%5}6&rja22>EsVro4`}Ys`DPR6+S)%u;kI zWl0rJrg_LwU|SOxiqx6l$0q4zSulObGSTYLLCHrHyS* z6Z?U-Huj0k?5F<{uYy1cQ%H~$ahZw}2p;5QtT*GS_7q{*`W0U~^|4JHqI;Q7utE{m zNH2rUR^L#atT@kf?Duje^zjql_OxSZKGny>%$^DR)M&N3FCy4MP(jB|?p@$Rhs)*Q!NOT!XA?leju8D1=0m|cNfFP2&Q1{g9MeU_klqJ z(-v&aEC&KDI-LcHV~OGqv@V4Z2EG5%hhk4Zb{`t7*=;IvwJo4ZJM}wh@hgKo(N_v3 zOX6j@qoF|EN%=pQ9vJQQUfGTZL(|>gpDUDl{!O*b{-dGMB~ZYsprNH1yR*Fj8R+wb zIeoRc(vA^|O{nko(`H1}U_KZffL?m{@&=T#e(?qSt<^Q8TaF|)f`dru!$jNL-9Nx@ z!SZ_Me7tpc`#lpfCFf)EXN~zuxiX}jyx`${&FY9oOxP|2?qnxURI4qCq0o@5^}6#C z*Fw!fH;_V7whB>oNgM}zfXkD4_6?@S^B-)CCHZ1_`+M>)2f zxhQ;ub5OLa8I|e(U+xYZp&S`S^n*`dKniJ?w%cIUtjw?2UtoG09pe9)QWc4!Bj%d! z#}PagvH+nRK2LOW%c;MoXP0U(5a?mQ| z=DUN%49SKp<-b7&fwq>RvaQZnPQ;dr36+^$kUx`O-x|f-r-=>O=^7 z6jF#t(!YFO&fmMH^mLv&s;?jCgp0bABh$s(@(9n_r#8&)xi0P7pxY=eo?li6MH$`g zsEOXRzYdg>cT-pDXrL+YDZw@{JRsq5q9YQClSMfzdCIvmtm|fF8rfc`x@KoR$d`o{ zt3Iv~c1&-|Sqc^Wk8;UcIZO5};OkpoI0O7tnig>?yMri$@}ER+LD$te;mii>cfw&7o!#bA<2!kuunvpgk?!+0uK)$5_P!N&BKE!8C5Pi`HQYxk<>m7`I58hTc-7JRcCol=#YF~Y4L%%U=wLHX9l%LPu{;f$rvfp#!66rmj6~g398TBHT_$0r?&U|K;VylH*#;WKm~J1d%U}P;KCWvcYEc;xUG!DE`D}%W z{AOY%Slf)vwP9prM7wqeNqa4zNV*9fbJ5)bAC#7%`A>>Xl*qjhLXZQR{uNoSU`AGE zVrMsh?E977c8O9M$wr9UA|+y&_Fu!bjy8@e-4+FLGY*z;8qW$R1Ie{;jG1`HgBsM-*isrEKkbskn99xBq!rWlCg`EqnwP0vccRIRG{S;Z0(yW zZu-M;OVu^6`xciy!%l@DOVyp%`OCGE2f3%sj@N5y=PnSBBMF4K8@7qMpPSvX*Js$U zVuE+w2ghE<;Hm89$8F)1A7wrBb*H7`jz*s&4=yD=K;gQp-gC1J@Q8$UIh?0Ls0G0MLm=daJJmn_n0-Qx>Q>#S6Zsa17Q>ljsWdOgCDkp$6K@k$CPYT~M`A=H!c7aE} zM%Txa2tt zH@+<^?ix!6PwoW_E(WNe0J(x+hgh8X`df+W7aXVD-g}c3suhhF>z*dy))wPI_&@UB zS(I6w14RnrF~*{c~(H zmc5c*>IxNp^P-mWG4}pWJ};@F6t*P{gsM@#>ULW(n_iUXUC4eO_uYNDSS$1u`!daR z&hDiWJty^9kD?@k_$zKT1TTW?(bg*o=Y#dVY0#8v8v<9J*~N+SC-aRB?@v3q z0s<+#I4gvpfPQN}=anG`dYMFr50l=v#Jw-qxbFFhlF^;5^y|Ew{khy{kOSQsYH7Ml z1>v8|Knkv?NA3Lz4N8OVm3ni8LXPjsZUWE7<6zfMYZH9W2oFUIQhPVX-bz#W1I!3s z6Ph*##s1YShvvt~Qr0@Bj@ zDHzz*5gGm6U#1Lu2x#x~nHyrA8T;FzS4?A`E6_tCXJd%>`7&%J|8yQ7z~rlu?DP4! z`99Vi&J;3-d&Uk}&Q>#*4i1M@qudY{eQf{nn$3ddbkFVD>UK7@^}{fI5uy(oMtsBP zo=9)KGiy9J?QvAEFU2S1yyR}?_M)7_&0DO(lr&9!PK`qzPdgo@6Fk?1)7F2ovl2kwS5+E}y` zY@h4ikJcu$SqV;-xmMAKh?m@PY>g4i@ljZAKf}Sg&+oRrvNFwNs1QO5EQtrxG#2wI za6I?pluL9^H{#RhC-#59t-VdEtn7&~ecNTB`*wk!1}`{?3>2>N0+e<*h(3Wn(kE!> zY`IFveUeDD|5{6zFxUb~FC-$lf`*zNL6}W@vx^g)u58q9R)%d2~3RD z=^@y(H{+~He#J)xw*Wgfx6#0COpV_RlY$H~r=O|j=8WI$06f6Dy6}%e6RKDK9AHa_ z^rgZ&pLit!)*e4z#xObch(@{rx^OILC&Jd8u;%jo+2CypAYE_v4`=;MGfoWssrMRo zvKhQlR{@yux$c?&C|kV9RPeg1WcY!9)TEf<$vkmfa*{RTiYvNnU1Zz+QTys)f^gfK zBt6|aj{(Wx*k2v*?q-L&fA_Ob)}I*#uYR)6efZUT&Vw7?cT3D=fUm7hK4Vw7$>mtSnWZNNUi0nCyG_fNDK_rZlj#^kyeS& z$2`7SyMdVCm50e-XB2tz3u3Z-F}&>K5st$26>ZOUy*|cUNzE@NG&?>vI?QD=-QG^B z8~VaNv;+!RJ@>IQXh&p&V|z$BQCp~JVL>)$_>;NxUCPj)4gOC5kA{L{I|TUXeR`c* zi;a5y7X&9~`{#)XJDDwq=B|5!A&YverdZ1q>#2c1mCb08ec|-xVm@wXy)7FH^`;zr zURC2tup`SW{=ffzbW`gainUa^aJu5LmL&WPSBWw`FiKHZ;2S5l%f%RCmjT2gN;@bpKiKbNydt5T%rz9@r+kGj;W22IA zX{>9msS=OhFPdw?RE3r}5b4@d&tKC01`~OcS%V`b+1y~y%^obMDE9imvWr(|J{3X8 zCx(d*)8>8|(fYA;dex zrS>3*Om=*lVkCQZpD1weEQ;&;x-ydoEV0s-F_%7%vC!9y?&M!ibYo~tsn^om}>$DcTJA!*g_%O(eCV2=j2o#kA=&7 z+f=N#0Wfpt{gV8qm2qO^807X-Fz2gh_GWK%yT65_MM;X>p(zqiFH1>gOY??1D<7)T zL|cA8etqQdG2hg3jrz^Gd8KU&8AN1{m-&2sytG0wI>O7f+hjg;--yF!y0z$Qqa0Oz zA|9LLCHC<;JLl1@oDM?_3ZP83c#fLgJ>r!Hw*ce)GI_pHRT1y;fgA`ruE?z1l4rm` zQsSzj)-P=6^`sng_a#Qcj^}_W+uqgQ_M;s99y-+%Y)&DgQMh0QTo#|bOBU(B$IfO} z3;EPjH(d9@-dxZ~Ok_m@&lQ(9m*=O`dw_YJL=u?$8O6hj#eBg`m4^*NWt=d7%Kj2C zO|LB7mnlr1i&{^?*T&;;=^|XRp>iN}Hh3N#r;^duV6{WIj?LuoWoi#A$dxEjEzvK# zK_uQ)# z*!%0X;nMY^*A^6Qe-8~Z!{C0GV6d1m!I)&nv7HZFcNFdZNBS+I;wPq zCH%*lA!%Wb%HB*(xE-*T)|R$IG~DR3|Did6dv+4j2lh>3s@#Kx?~hAL`=hg7#9bWH zQaFG{&sNzYgu1JA+Z={tM_l$hzfn+_3|ORdG3MRDhx~-~-5=;;XRQP5T*B|{<@osc z&>(>Uo3d6@3^7it7giF!yZ#!8&9yV}5bgvExx8cY5L^LB3@76n9CtA(Kz^NGk~UxG zo#8HFvr$F1_&MUyAY!pMm)pos3VXtP;1b-OqtF-;(NR7oZA1FqJWs z_Q|5*!lMwCNeKR)q^hv%Cs`1H1p&g)-;uTJAjPpZi7CtbmKhD*hs|pj%@{aM!o8Yc%-pklcBzaFq^^7L{M5mzZWwHX$ z`ltzVX%4>1Ls=I~!U{tfIGDjPB5wnU%gd_m*H0`L`@HX;6-5Mt*pezNHAmYGVdo!B zpR_Mhot>-3M_EOLLvW#(77Z-C?9Xo{x1^Nbv1kIVu9csA0gEC^@Z>ZFvS02G#>?%L z#WN=9R;5NN0v0loF555@7}ZJ=Sj>&nqLV4)O30bl(*JRR3^eaiIEaip*6t5($$iHW zHnO=!E{IJMmSuOFpg|F}s35ixe;=D*F|vKw&|kQKuFB|Y|9a8AVT5e@&%!=HHGYR$ z?HwsZ>?^i(0V8pc!(N$Y7cPQy>70uB3Mz4f=9 zgQwm6C#3PSwZS2)4?SQwW4Z9=_Hfpa%K66Q>bVPEqDAtwM~_}23!adI{W&K`UNbZETlVj#)3@*cW3*8q;gu_Zl_LJW z6AHAFUJ8erhRJHF`i#X0S^w7yuv7E9d<|Y%x;H?sgU2LDaPE02!JlYieaPF@UY?@- zb`C>TD7yw6J1eK!)kW+SI`Tv zf$ZFLg-33wX~zvIv|qZ{VRYXh1ht#kEJ8^d9jkYkk)t=iU7>(=A-lRhM)N%zo}4Fm zBZ>&G74(4v2L2%50)$H<*NJU(Z3M$lRq{-^*7w&;H!nU!84Sl-{flqTM;*pOQFx0F zp@KSUWN)_z{bPxUZ#8aZqQ<>-tQQ@>k#Mh`KG57wRO#MNY<29Pe==DM9|Tv(V7JHR z+&+%ccC_0^cBqjOc6}OtNf(tuO=E+64Y%MxqJLzL870!*Y%j|A z+lHFW=VSN7@+^UvN{Tc$&Q|;Nd21K&emy7&J|J6$H5o;<>?g$&2LdVc%iP?-_M$}c zWQhJ+IuoeZO#UsE;!5!{k_xBRz>Bw87Iv9vY{Z0^#$v2#SCg-1Z5f7^l%z}+2P@z< zN|h<})6QX6uWkt+I^cO95apXaT-Dl0D~vXBF|iUC;wTXp%{l|Fwxj-n#T)?^#n-Mu z?JI1G?k5S+FiqIVN5g=f&mLo@tspbk7fjIH2+v!q#XODXPvnk~Z|1^lmX&#rKEo{g zbJpRX_55%yQ34-E;o{U)t+lc$Pm^ocRg?I~JRX{lEwpfZ7G!sKN9Ml&<9T4f6G~!3 z&>(x5=t1D1FT$x84T^8m&wHL27tkQqDtU_*QPkVo6C3N*JJJ~qyC!6H-HJ-$DUEaN z%v{{$HLVSqc!Ec-h!Xn6DnVF;u-eA0stm#Qg9?=ylv|_FiZ(fxZc>m?_KLN$(SC;@ zD(R=mMc`ujILZgk%wUL2?=HPg>L>RIIEVqZ)a~78*rNouCx+)`*}+VdFT`+nhsAm1 zC>WdfSUPI5OTv&Vm@sXsAmnR=@0a0v6KkH#m4m|A0-MnfHU|q9^YvT7;3r<3MD))Q zg(ZzI@iy0jeOPg(1fI654LDJ=E_TACknij7edERc zJV*6J2DQ>7QK^S-h3F{X+R3QJ{t(4UQ;EYXZ=EwPCk5fdql1A8RT*H>-NrSi(j&Xt zYWih-Txp~Ff1mf#pn(anzG8vsxZ7+zvsuH!Nu!G=GBZ15E&0zg*+~9%1!+4sZgu<3 zHdt%ZHtTq+`H99RfoTla!ut2cX@~<;PYt*YH6i9|YJ*7?Yy5nqy|i-Vx>zJJ^$wFU z|E{XfwHJM4+VI#__$DHTU%b|)#%G7%SZFo=O(}my|2FHAUvIp4dYx-I#fRv-w3dee z4<-fqs;TBd(CG)W2|~#F^>=XCn|%<%)LMO=v-!9_dsMirz$?a3#}!UYO8;#& za<#LT-m{9_>IDB16>u_r+wp(NMwgsk*yLYX?g0A4Tgf_85`flLryDlTPYSv!m@Xd6z<~A#L3pBtJN!Q^Y3jeP&nR9 zgeciuyXwt+2MaxiSB%VYg8t%*1$%7?XP0IwYVEY?j3}Qz2k2jz#d+~00+Y&UUHZGJ z!n*6h-uTqg*<>e;PoXsC0JBwDc5O>}xx^o^?y@xnR?5~OVWeQ0cIWz%$$zSkGV*_R zsS|m%ai~J`iaO~bK@EHkci+H*X6=LeOr>-LdG>@6AAe?0oQFjhr`-{F)GJHTU^K8j z_V>i~4Kmm+JLNjv_Q(!>z|$Ab|L?n#gv<3HhDLT^Km+=#Bu_!j=HNfR(8xUE?IlzQ z1v;OwYKb{zEVy^^j{aiq9Jb!+mv~vf>E1h3rN7>@e+~Z&w?c~=J>e~kh$>Rnv}8Xv zH{2BhBG2FdjZwRW^IBF$j+&-)x<``IbP*~{-TK{YJT2M+>*FroKlfkya@dT~2BA*N zmB;E$UBGu#1eylwv_8|CfLEl-N!d$5NU9h}kXA$K#h)qja+MlVdfI=92d22(&u@=4 z;kw!`dd|Xhk{zARZA=y5{G%vUSsCfqc;nq>R}X#S9LS$uqWtci*#9X800uFpDG=l0 zQ!JbB9=a_69uj&}`psNo1qlSNEYsLK#s|SFa;dUf_x%tJw}9?=I)$gEjRUo044^8f zp4D8`A1kij=a@pGJ^|~&@eIp(i^D=!Q1ThN&WYzufDNd-?4I+aR}$1cD;S3=aqSA4 z`bWccT99ZC@_k{ZwYs{HqlI}vb=Y;W5@b7S8kpGdI`^n(%dET=X&4Tb=65hwyk{*^ znzx~Q52bnDOjq}ir$_3w6r~-a`}gcR);zQ#5BlwWK@a*X_%6|@wd%R>4?gP>)<4<| zk+aIgvau5GwJxbr{^y!*)PWH+Be(P2%Bgw`H8r3PF>T)_go z-Z?rDpxE}<3tE2BlEVt{yEr%)YI~BrylqA}SlH;QeTw2yX)}$wMbx{&VFL|Z z3?Ff`jb24VlcW!4JX7)G%w+Fp!=YUWu>M!WzZj8+(xnHE-w&mQu0=sp#TH(r#Rq?( z%pqAa`imV~I5;23L;LWS-M!%XFt&03?DN6^H#z*U3IzI>*&oSDEN<-g zCmQi7Kh8^xSo)?0KNpiNJuHf|6pMhrJQ6{nZVdmT@`6_Oow=4SmkJ)FWlcZBK8&Dm zHCf8l-%9nqCZ`zkS(27iV$l_>gMRhP2=osH(_0fGjtB|_V;`~`@dYu-N{ity@AJc3 zX;%`;@!|^K^?2M?wj2%!G(wr}sJA%t{h#q?+kB(@@eK=+D_@MM#fHyWAiWw}1K(*? z`WMp#Bf)%_G!0arJ5N8Wg+f;hh1J>3dL5&T@0D_GBvJgBZf^6votXu7D=h)eLl|Z6 zuW#-*S1VUAKBj>gu@t(7yMp8HW$ir{(qIPVj1p>Bbiz5hUdjfGMTDT=XMeO%?My!< zY5uk#fY3dc3XHC=i?yCp5MR~vMsZaaSM|kp^kQ@nV71h25kX4}Hc(RA(0{~(f-v(r zIhv~TXTR3eush|WK|a4nb%ln8snMmpB87jL6QRQLWin$%Is9VcU$SBd$=^h-uvC%W z?+Y{ie78)4N>~Z+t0|a;d%;&%_3uLm%f=l@{QSeknJ`!-Z7z%Y`Nw+OpK?(?A{Sm# zw(kK!f!mqj*>!bkD$dfet`?i}VRNIVa=yAo*My;G+Y&9OP(qfI3jV-fLJ2I=Q+7R7gO$|#TQ7bO^ebrxG6cTRv1kWCOn5?F^zeGU+<6lA_ZMn79 z#!y+dx4B%P=)*Z4i%5$(FyZKO_1CzBEc$G!Fr&o$P&-#~)Ym#UkaV_3gBgeWUH5F! zBOPmz)U94;LNS;@J+oM>%b^wdDY$;Hd;#L;FuBlzLc;)))lI+gVvw|QmsDlE#TQ2( zaAm@=nAzrUgqJw%*+$AJ9?Ht3&_No)w<9*yD@sjvkvN6A=+4iLlH8u@P#_|%5oiUq zlZxGIiP^twZ5!zdZ9!c)sF-3u9|bncK3mDlv2BgOx_f$FEO8fcDB^-BW6@ZYWA$$u z<}Bu@GR@3Z>xquP1siEZXFVFzLJFUKOEv)GAT!h2<7L|HCV%EI4R_g<3)2HQH%h1~Bv8ShZI_#OSJu3s9? z)B9xCI~}Fz4|X<#Had7Ax-*Ry_d{_jn~lPdi_odCECmGj5kLplLsP#c=Q?*=qg479 zK&T#$L-R+T5o#F;sC9P7xSQYU>}s^t==76mh<{X2TnR}1=0-}9 z93a+I*nsG6ZrA{z%z$<296 z6?4JWS1+2{u+HZqX4k*83Jy`UReKPQYwq`R#V_Dd;FCzja_;Ljb61rHA-+;iq0PJj z&cjeA!qxSudQr886@3ixdoyW7i7Hj5fx&D(K=cHUV}#JCt=ZW-S0n&ovF?8NVtuxk zGCMdZ+Vxo_{#lOtW6odNcn>bpR*$t%u8y}T%F8wk7fuv|z3@ls?!-!~>M^^>KT zL3}#zuq|6*r>N*!D4PWga49h;0Q$7aNB$P2Et$pJ1GU3IHx7ski{XFVKa&3rsC%q# zcl7;s&R(hkO>RPX_p%axLdMnd*JgR7ZGrgKaQ(w=l;9HA-NVTiaEG_-20SlKf#qVO zo}Nuk&gEeh{~aLq&o3}a3;KL7u0Q4|oKvQUQsB_u?M^1R^^{1o3WW!DlGj? zwxx4H8<ln$Fy<_*YXj%{B=gE(@IOUYXHA}1f|XVdtudh?q|1Ty`8@xXBJ?ufoUfmPuW1xr&*kLQ%E|?)o3`U8O9y zBT>hrrS{qe9x4@F(AJ;AddZ|cSI4i4%9iFYq-($Gug%RyY|2m}Go9TSx0-Q{*H=1% zL<+Ow>cAV9)f`!|L>5|E(MSUMR_KZ)w)Y-LRT zuvF*JBbj75F$J3rNAKWl8^ghqUF=tFVELUJ6Ua&@&BU$kWoZSfug{8`jV5lrQfBeoqv;|| zX}}L@+3Dm~YQ5vx5iyUM|NZS*L)X?zHVwJSwo3oqrV3VpIZZxiCZ)2oQ`vOJ)f&Zk z!_za4>vfl%3!7i6FU0emJxSJtpsn{v5fDzzl^Yf_{J3)vCk&|2#f^9qQ5rL=z1?JD z>jxe~#Gs+e(T3Nd-?<>vwVt_z#N=Ds?*V5>VGiq;)IRh2;;z)K>!*E4H3pvpN?9Bv zs-O{G&2i*7GNVN|Gjpd=*d1woI`d?S-rupA_-lhpHpKH3jlTNOgHU&~=DLcU z&|;(tAqULX4{bUc+$Q!f3q>cN z2O4&_4if+IC@P*eT50lIuTb80uF)ivBr+xks?~9*Pr2-J7#c+=w+wp9t4N;&*61u+ z>vdcNF>IpQwqIqQ<8+#ChGBU`X^L)?)3EXeGE$bRrWe?)WBc4+?^IdD!+?11j++W5 zWj?%Hk@2RTlAQv4yHlA!-Ke5yZbcSZjV#)Wzp`;$R?UXgGhuot=%0Y)y-_s!amM@# z4O*|zr?u|_tIjH%594k1KA8;@j((Su+FkE0HwBe#r#7@}wTD^Uqu%Vea{8XkE_20T zP6X;cuAY7iI+d?oVk`NJN-6k|!a)~3#wRE%#4h_$jwh&-rUVv z@>_MU$JM<_!o4mye^9W$U5N@o0`A`S zv{6rN=R1rx@;6Cbcz+NGOl}`FCvgv4xZ2ucE^d^?P)zR}*Gt#G`_f7?+U?dX>Uq_c z3>)!+_6BxMP z6_W>RT&k$ZBMjLx1Cq*>bZV4cH`{}q?5iD5*}}=~CAn8?MY?{3uUJ1&R1w(f=nIm* zpZFbM6^U#t>KU`Pq80a zbGl^QFq_Wpda?L8)l3@NEpc>hdD9GX_}((|g@)wD2IYpYZrQ5(p#J#e1ZYxWol!31 z?1;bmTdeQ$_B?dC+GzDrLL3{X5j6BmAbj%8`Z1@(Rz4gf$J%MmWC zi-F8{h6EkHdfV4UnOP%3*b+8%EZV=5VP8VNLxQ_-XiMhNzrUrW)E&6JK6Q99#PawG z&AxD#k#hrbeHrs|G8@0z+EFN*@Y?c+`9g&eKlX)Vq^tML2@WdDeo{x}ISGmv$LpHH zCa_gfTrVkbk6najhRhlUJ|WVOEgaYxOA}yJV%NL3N`0%$?R=47sROqbKywoT=Bxa= zp=BS<2BawsP6XdKbK!_SHD3d$>T6E z(wo~z;UPhSK?jlK&R*^GZmKcRO3OQfllV?L{H%FW!PSIng%d^v38m7B=LcJAqwzIy%C6RaG=qstwBc1K{b$zpa@@@1)jwYdn2MZ zgs$h?Nux0J^EHR3nbHAUl=IaXx{DRmv6mf}$%JZa55SGZ!bUUI56=ZXsdCxtTpk>B zce?0xdr(D>xu}QdnMp*h2?IVgOs)bwR6P451s{a!)&Q}#_pd;MMoWEYbd{6;-MnMb z%V*)OeJy?YvTJ9>h$FF5^v$ltk8wlt?J6Igd>kvU#Afwd{Bs?Y3GME^3=v&bQ+Pg~9qnaanGnDx# z{Jk`F1|>Am0F$vYfWgvC*dRDB zD7^1?HxL$qQgLJBpzShIHihNjJ`7;{q%pKmg<5h0iR(#!*9|=NIb4Yx)2Zu4bcStg zcrR9Vwnuu=dv=__RH)rf?A3UD@+_A)+yNPx4f+F27&w@=+>9H|chG%Bl#vIACPRq$ zGi45(5H=jCaOi$`uxo+nCjS5A-EOu{peWL2i3_VT>M)Tcisk{Ac1To?N$FI6f1>uRwwujYi&-~H!>=-34=C_`KLY>cs$di-Q#oQ3C{ito8Mgh4%*@=_ zz^7G{j;H&0b2mS6_|-rbtQ$s>@pY)t&g9Ap*Rmy^m3JrVZOZ(`bE+$(pk+axJlPaF} zyP#q}S!kS|d(amF#7K|@RR4xGzaP$;4#(3dP}{ZaF9-dHc9Z_a|D`O@Q5)M^1p_IY z0c~eQY&F3MO@r-gdK;Z>-meKnf87P8NMUc*TgPizj#uNv2?e|bxbm-Ap<~)<9C6QI zy6iyNi>F79;t6W_u*cty?@3|UaGe&XoV~$%OuEOp{Llk|Q2{3Or{0vfOP!8?zv?E* z_Eh$=MZkp7AVKxG_e&SsASTbZJ;ntaAv6rAKz||}cnqN*kn^<~E}(Ys@4Z&%o{(xb zMOh4*8-cHsCD@{In)&nOEyz9WnYB{0MgtLtiy3aaSMTeiBoto%B^w^(>*JMKa=N#d zNTi}gPc)Yo$*kotD?U#>f$+e5sQ>?63Nxi965gU98Uq<{oWO!NU+bw^C-X}P|Y&8V$k z4Njw~FIBLo2QZ|7?M6L{V0x|X<~6&ex16+eMwjR6kpAV-JiFCkzA!1YW1-@(2gb0& z@APIT!Q-gDqz8hw(uH^k-++Mgv6Q%jNuQ+2CW4Pg_pNIv`yl_G+nHgR`dX6WANgQr zjhPH@PpQ!E&rcQ&sXMtMFcL-XRY1pX)#_(D-_Jd~Jm@n)N1pO^A2#_;C?(x6Ks}Gn z`7Vz9O)0I$W+16-ua*V=&$E5S+t0L=u|6MtgF0?-zkea-C--6xiMsZSB`pGEFjxE|9AJ@tgcpAJ?AQQK22dmRSt{)X zHLe^RXizmy_ce$F%-U5nmc!Jwx+E}ny3WmH&l5paLq{qz0MOwmR3I3R5TVk0FDKoiiV-LYEE5mvKO@Zm-}% z-+S}vr;fw%XI_O+J;UO z!t$lezl7B*0*`FWJ|LMiDpPM9WLPC$Ejj8CSM`2XX*rkuu$wez3+<8R3nzGS#A|vT zC-eF1QrGmK0;$D624RsI5h6@;Ac;f_uv)0XLiI(wn2O~)Spd+G?~{6UP*XKtaawtg zfNoN{oNuA!dzZfiHr$#{QcyCu2Y?PK2(+Wp5F=Ux2Kxt_`noYGol0vRM*kFtvZQIJ zC;8?c{Y88K`0((syAGh&RudBqj8CNIyx^O5c~km1)%;VrYsKp*S2oAShFMCFaG$3y z=(NV6YiS3Uz2LSQYSZS0mQsJ`L;FOyV}yFe0UUMi`?PydH{R^fFcML z6(e=5L0dT;2^h$5DXRd24@_7zGY3f*AVbaXU1Ll&7BvMq$+8iJr>cAM3g4ZRcQI8m zU0;tQMX+JvdqjPVM(ID>+$=Nx8T4!)9b_zRA$R8{i7^-q4`DTt^}M6H-s*{? zl-H4!^>n}KU5~@QFvKbF7~0xcUm0+OJIA?D;PGzaA2WGVG<=!&*=1Z0Z}U90Yq?k! zPADomt^VmX6#jLt!$So@_G+SuEUlmh3ErH$Et%Z0*o;N7MT<0N#0xxUy(04d?q*oF z$`q=cX3FgDybXCQmD}xYsi(_omDOOXT0A8&Ffd=LW^Fe0-%DxY9+-c%ReD8ZqVb^J z*_t{2&+my$Cv)nZSt5s_9t=y=q4T| zOill&A3|My`nW%hcWSDq!``{Nrf*pyHa!E2f`W{KqSxWBsHV2j;;<;6-t2m@)-c+% z!>}0&0ip=NLOVhKhB?>d;p#X<1l>UnT^2V7RrggvezL>uayaNT3dkK5SG+=s_1}Z1 za=yPJ;w?~;kmN(1Ok)0a^8|HMBW9GM#$mGtI%CSY2MFj#jMiDQm9kZXt6>(ityHZ( zdUv{R+?CjRcf1Uh%<9oA#RLZK-3Rd1NpePz=*EuktuCni5>0(5_DdOr1@CIP{+^NR zxW)N7r&8MLoo%IeX~!BiqkKv5etLP?X?J(OSQ;O?Ljpcj;`nE2V1A;Hm8i97X*t4Q zF|tbctIKxQ1H>PWTo4%? zwKM>YQ;8>-QmRq`wt~3qRIdv)f15hXckPKu4>Q^cGCU6VWGwmE7;!S@Z+CScy|wMn zUtLIwD(_AoogHNEEL>fiHLT|BTW)p+($uRqT0EaO`}>PHFUi;2lj==wiFqPc82+)A zcIf{~wpH=i1lg*?2Zd{!Pv;wBu7$~U5GJ{Q+MVAQHm zikJPH0er#eKtxQf!t}I5#X!ShC`E_7dbwEs*Cg4xMcezZeT^?ZsnO)TrbMb>p#` zOeHf1fU@iB&rarfu?l#osqbyhX4`5e$K3HbSV{VMYcp)yh$amLABhAxDFW)%IVqv@ zsLA;mkIg4`^JT+sbja5_MBE}nj?Z>>mUQeF@NgrLL0p4O#lM75A9~hlQXSoOOTd&5 zic%bL!+Rm|SKwkgmTn#J%$#7cTUgtV$jM=KNeUk?5eKOzdn-o9X_~Uk=|o^b7qh?o!ow`!=*JclnoRZp6YWFm)!1Qs>6$Hv(~`|CERDq>dN8b>}fIe zk9SgIk;T$w9t{sqF-WQ6M=^nbY_rSdb%%%DXC@xE?b-0$;=I(>#v5qQ0^ zx$H`_+w@|fC{#TbMiO!q4^6BG4@YT@HO-=pRHXwFv95879jre*zsL!vgQm&a z`gs;4QpWzWmlXtLIj!)zQSC0F?x(}zl|rIY>A);8?2Ok=e4eEmnGO%(g6)=NbZ{V~ zq*!Wxgs_nv9Qcri&YD%>ZU6qwm$hF%Fpc4K!AJJVVf|^sYH2Xcb0j1;`feG+B~X)) z-)}FnkiOMbN7CM8cV0BA(*=k9&z*GY^OeSN`O5h;0q#RBU0gT!LAt=pCk zcc+5UkkPw9|fpN)E8sKm_ALz@#Knm;NTeq)&Yv;%BSpWRo z-=^A%QEOBGo;P1$id|@mU0{j{T>p144=^NU3$bfAm8mcY38SWdd~O+ZA%7DgCH=0Q zx7>nN43O{1s5CYlU+YIk7$T*Ez<-7n%jzWF_Lq`am-r^cWUc_*5XkWa-|JxK++2AO z`DD>}G_qrQ-Glw*3y>j@V1%O!YbCJ{e_IxNk;_HxbGvD;-RWTlXgR+ZJzBl-F0?Jp z(*_Vt?@|(KzN@aa`1Dp7EA6dviz4EGT;16%PBG;KDBmNO)+)h=)0`bWmq>uG<~|gm1S7#0neCd87&N4a=QFaX0)p|g_!ew25HXvnpJTr|f3?DYTYF=^y1jlR<6$dgrOyx#EKhYHVgd z#vq>mco2cc+)^p#_ka%%^cmX&A(}T;xXD7dQ zcg%KwF*-Xm8Z#e{SH~s#$=m*8j6J}Xa=0OX7MpqNok<6m5?0i-@ynMaDci^r$#HdW zg@$>B`rrBQ2Kt35C47v2iPD@O?C!0__^)h71AxVOs=-uD9r4VKT{0;-kV-5-*Y9|1&iMllQ2G7&uNs~hg; zwC3Vg?{BSez=ziy*@i>R=MKTYQ$Wz7a;dQ|8p!+K>=Dcvog3_VP*;k44t8M{Ki|BT z-ozvu@N{) zel#qd^rcYut#5%+L^WP@TJs1ikf@lBHm8=vnh;;k`1Y1C^OlgSBQgwrEkJkWQI6}z z$Wk#M%=h$&-C!WZ^3*g_Um*8(jF7K2!p0^f6_o}P0qzZ##NSH;%6hbGD^Wh; ztXW(Xmk5eDotzj+Od!TZOMzII8I6x+5i?K8Ef!VNDx`~{k(S1tP0wmCljf;(q z#7p3EK|sJjpWl9a8YrHZ<_izPpvf@4UBk)!@$bpAb85V!99j$)#Mj})!irl2o~XKH zHLEK7*&-H*f30_1zUGB+T z#VVQS$JSx9H;?sFzq*5EcUSg|=oNciX?Jf6aXo1*JuMS&dv_Z(`IzZn?~k-wHRskr zjfR~Se-8~PYwNaexqw}d)O!wGR?uk!Th+Z;^+9n+~} zqb z4$pTk&vy>@clNGYeWoj*lwv5%mHCwO>5u!1*&ty-Q^PV)Ho_(Wk%Q=EVRbY-$|*XH z8EJI9J>>R617a9?JPoG_E}vHGnC2i@0@ly7!vH`qa_y`ahwNiwWaMOIZ1QG=j>N=HIyk_>z`!syJ;cVqINZnF-`m5+hzA^_ zM=(xko@+|K7b!mTaYXg)+-isj1Wy{@Hq!|t4eZux$U>({6-^i8a|DF`)Imni`|-qw z6`Bn$uzK@z(r~7%c!v+U%>Km=AmkGG+JHe|wvtaD40?4lpec=dF44w>wNk}Wj-n1o zqqAS*Ehtt(A}uZ>L2P#R2Vik1mKU^W2eCYr}LtJuz#MGnYog`Lk!De zIWeT0XC#m;P+}{)cTnNucwyL4$qolMd>Slbl#Fy=PrKmXN(M7fY*m9PXzC=@C`?}# zEY`}k?cO_`mAmoY=;u^-0^?7#PTAq*I3D^GX1aQhhX^X2Q8L$SWMfoF&7vP4ogdi; zp}Jh_yu5n|^LsoyUkn;JfQarVx|*jUA%D)DDpcsNn!W^A_S^#$O5}!ttn7q)d^AB? z^aB+!KRN%Rm3L2I{Pqs#+kY>>Ct$AoLy^veu@@GuBKK*DQ|I*Z zY@{LkwoRxNLju@uLLp>T$6H?7*&dpn?36PQmJc13A7GVo*EBVilx)O`Dyb24WJ=F1v?vq0ZU)C&dqfvlnE30=`IbWlwvQYM*L$k} zuYd`iX5vBUDFz88hc{Q^gJfUq;UjvSuGsL9R%XEK6hD3B@B%N06(%oBSwb8{^)d4H z*LinmJ(Sjykn!ra&XW2Nb}PC546u#p>EQ`OKYim!- zu*#e|x&y5bDy10k2|AVWqY2UlS~)+cfvhiIrDho}9w%MEkunA!^koRHMMnxXP`0od zanWM*-u?SNT!M5%i_#s2KM^=sl|2k%-tU%4&yFWghR|GaFhEMniMBls&xOsJ%$qLu z6aYj@SV%rU-=V`>S3cyd$^F|FIxKWaTnL^F8@8`#kPY~UszlTbjSUTe20{W$GbvSD zDhb%@931YS-1G2s43iE+iA>wJp`33t+^6l!Ol0vk{G6T0j;=1$1I(xMotgeqi8x;B zPhxc{JA&sa%m&obfErFtf0b%yJ}p}BUD~0R8M=>^Pw8xj#NK}3 zh;fhkr#+Wq-%ub5eya1M^Gw4irT5cA&^06~tew}UO@xjOyRD{N^7vCm@bF=!K(ieu zF#~fRNqdTjaKQT->FTrSpJ(xgM@#Iz;q0azR%rl4aGI`u@RQP1{yM3fOtN=!$q-+zS-rH zV07gN5!K3R##hGkKhsBG)BF&*9+_|3+EUIGdfbdW!l3THSxQG-xkKh%i^tX(Gp8gQ zzL!J5+f|()epodzOa<{2_v=!fgV`iQ&N>MM?W=kdKi~Qp|N7Y`4lWWPn~@b9=(J$^ z+&jO`ufhcl7-JQriU{YeyrP_ZV=s1zk1D#AIkduy4rPq1*m_P;vUI??3 zUp(AB2rIIY^55T6&0y)Qub~j|x1BF$EtbFByv&DfzE^XX>-LWZ$3#c7fdLYz$_80z zJs^9l;lhd}W*jXTyRH{0?G*{EbkY2p*Y;F^D0W_n)lV-XhR!>r_NBsUpFI-D2}Xxa222h0+$VIvsjrF*3kWc zJP3q}E0wuKs!~N|{97zlI;8C@A70^9XL%~gIsOKAj=}Ter2Av4#$$mPL5|Hg7(s!j z3Ws3t3T8X(L4!w~EA5#Oxf+s`i1-=hd(o^gDHsU;VXa=9h8hf{ zt?dCqZH6+|;Wu!i3+QqD?KmRo^P)xOg&dm8YC3*8Yde)2M2LL6X?@a0NcVC^iyTbn zDI#*yn!~azo^i1Mt_QXDYc3H}Q*OC}W|-M5f#k8(WVLs^aJ6e}pZ6I$>Zw@K*z+6N zX0v}TmEQLRYH&&xf{j_4{dbeG!Vkgb13RU`PSPagtXAR#YB1m{pT`T0a=B>k`Y8|4 z5>*O!SPDT({I3~50pV`B3`IV@%j0Bc9rz4XExcdfM|rqABI9wAnDqNHAd1sII8_BL zJeDhnDDko(Z)PWwVw7s?BZCr8U`O8Aa!jd+U?WWPXxxaWyOv1H=~z2Q$Z!JAaj@bX z9_Pv`33wjR#k?&h&e4&UgzNl?0CMF~)BQ*40}!7u!*y|~+C*Ps7r-LKB^s3A6ZD3$ zp>J;O(ID*{?V&+A+SOXI0Q;!R_fG+0r+w~|PZsNhz#BbIZ?yaUKVk}r zN84bIiixH#e=!>;LL?8&x0Wem5bL*JS|A9Dm^ z4l4`^1pY`w1nU;*WX;XQv?mptfH!>#^n`N`b~xQH>?Uu#|5w-EJfR(%SFQ5Ni`?i# z8&yX{oUd4yJesrn71Qy?>~8rnFFB=1WM(A)cJu+tA76sp9$jqTZRAyWyJlGSU#ulaUwoKcmJjaEdJnLwnTd7VfHzj9QAjabJcl)6 z--1Wt?=Hm@FiH4dcg3G!hd9-Nl!R9VevvPcAHQbIOFeVBT#llM%q{{PHu#4+VnIKR z1O=|`qRLN$+YJXfJ$c8W0!(K;t~dIPPA_frRboAhcJD5kw6x{(0r^V^#}Rsz%Jil~ zHepPfn_JU{ATx0h9}k-*jd9e?kiD0Qi0ao+qZ~yXTwm(BgC<$yvt8c)siI|Kx#c}$aercChucCYN z32DB246lPXD^>vcv_EKH(WzrewTN4<6;P>DHBC{JzuAdyI(Mw0;^^7@ zkH7WvbyggJpFGAyC4kfH`$oUtr5yef5rg%6#jsLOY|3=$(S&mkc$K??_WtouXm z%wdtGo$pY~vc8^0J>yFxk_2)?dL9H15J80YQZsq6L~U?xbv(DbxLLpSS+T#H`k06T zTWzvpO3|wEK?2rq`I6hu4a?xV$jeC~FKYR+f&SH@L)kbmd!?NkR`4|jqyO1)x-vPUv+^F_B%x#I2q;Iu5Mm?zW zc<-fDZ*1qy5tK*mBILtn|NWq#9i_t1xh`#f|A|RPrkY&`1s&l(xRV;e1Fdc)^`^|g z2n~vnDArT`lZKc&^A`F6L<6pb*?ik-#cXx&lcjjXj;b*%-fM^+xre)rDa6CH(r>s+ zPP6^5;S)Ts15;-Uc&~CIGyPYv?BI}#8|xY+f8^BETHAuv2eflMqUjb}Et|4@i2nQ> zKU&xQiXpa%^SE%&3%5(z{(i46^D-cs$$L8@5ekrtPQldmoMs7y;z)67GPM<0m7EqB zK+AkJGS;!ZrX3(q1^k)BYKGy=HJ}HJTW&Ym^%F)H^tgH|iR&;MP35jR$nrIBWj8(gKI=<7Q-5uT-FW-IocZIeFP(@8^G5h|h;2GYi>vkkA$WgJ@gg=oysY z@X#Qh21HQ*Cu2%6jjV?NNLUnTdR)LTUo7^6_1|0LeJ^EU3VQem*pT6B?VRRsNQH{b z(EhCYcsSv{7<~EK#4*XtAzUE?BzNSbDS%{M9V{T3iXr;DmTuJqAI9d}&99M}A&TmH zzYRc;zFFR9sjwgU^jEHLjB4dAp6@YL`rW*7Lx_ZHw+~&5Y1&j@VjJOPjzFOO+8yz9 zW!3cYMw6IC6H1Wq-!;8Tyv=uO<_t>YuiQ;&1r~68a+9a8gGH7cfHe?#-KM9z*J`*F z1arB?Gi_`kQTNdPR+S9Hnf~$qLG&G4+h(&^*M)$T2BZ7}{C{eABXq*}keoPfm;$N^ zu8c1*m6`0M1?&aur>j91H!Xu_r9nY+4~#cfm0LpssZcD|=vI|$51kT=U;SOCf|B8@ zY0*nFv&+Vzzd5h+7~535db&AQ@JJ%t{C|)OOGl(kxCQ6djd>}z7raC7@Ip~D2ASo! zAvG4ij1>|(h)=54p439Gz1^$nqw#aDB~8T7?5zcXxMpcXxMp zcmL+S_x}F-s-}ji*`l^~x954fPoHzzsp2oSLy?!;_p|)AS2G@2Et%~4V#{HmpY}l1 z$;CiD+dKa;(>-5`*}0B7@_n?HgOuS%%lU9=ek6$*?+y!@rK2gmSBm*@i*M@QCcV}^ z+6TqFHMZc{Ipb{|yAFh}!1Vbpqs@o;ie3B0({jnCfObu{@(-^X%>TiY*^hpK0Un6I zKv^u@P17)-re$M}BaqM@j$}5ovMA$P5YS-{Z7XaVmiOX_tjG;TvpqtOQNsur*@B2n zO23)pD6h-%#1 zbD_f!i(h^^~lsT-B&l zR_uE{`}CIPa%bTLq0`?8cUbxW=Sal-*MH6@e7SQZ_O}0z3-CBsZ}qSqom`S44QJ!y z*93o^LimW=UrG5@jd3ESmZWOdxZ)8;cSy_6>k#qN{B~jXD{dR}c~|G8c9r?zxKqf$ zpWTs~89s2`Sy4DT3a@v-8nJ=iq!#-%QYZOkS~I=ko?j*A|H=XoD0~9o;N_}5eFLZ; zz!!}YntB&XgK6;yFk$5P3RN@5$sIsqX7iN{b$Xw!>LkGc4RF!uS6EtV8> z0Dt2xkcZ7Hj|TtQ6NI#3sS0sG2>fYe59-QO0vB>orAVKss`asX$ezN+_jGkfFqrZC zo(=4ixH6*%=|@Y=tJ7$SE^i-d1_mEn-a3UH>?z8H65_aU83BbgRns#FB~lI`U+Y7K z_F_8P?{_sxhkLB6>@#nFCGO z^m*=y@6Rl=J8gNAwcMw8)kHG81F|4?b7U~AFn>d?{$5_d)qOHr_$(y z@PB320XS#?=)3w8W3cPchqMBG>wi4qHCKV2(38V>xy++1<@mIUMNWr*y^|Xw=6|4~ z=LSZ+lkKj2ch{BV4{9_9_Dp8uadMgf$AjDN5^OVOV4515WjkY_4*k;GP?in(`+237gr$hP*->Fq;5;C)ns(cPR@6)R_SD> zn~!y$R4oS77*(XjVJ(%ZzoAYX{)$V6g*1!yu?o?dnw}#U4(<{?+e87ulMN?08-qC&IQqZ-t6@{ZXXc6J1h^~?2}3?)>yP7GD0**hFU@=-Yn_|iszTYY-hz!Ly=mUtgd|WwQ_0etjFaC; zp>5adZUzoJ;tNNbob7w^+zmgY%X~waSsMndGOz^7bUyr7^{Q5VkU-a32U_^M1i_oN z9@Pap5HBqs&D&_`q8;m1p9}4ID~)S8|GPPcDlqfF0W5E(V`q@Bq6H|62B5)1sg0p> ze?eC1&Epp?Q|6%u3zt@g0+AKlO$osz7A^U>^$I`{+WA|1r*X)wdOHiwT z8Fz$T0*R0=joWM`+N{|9!rKcUwBq%&Pqvwu*zetP$-8MUc+r`nS-_l7ilHV)6p7Q2 zn^PZg!}-UXzeg~WcjMQ9pjLY>2KhC`f9w*N@bSU%|1hIEkngm{)u-DxP}Oy~2q;bk z%{BPHmS+nUph{r3v{P+wYX$52R#)igwh3&0WLK)mQCIm(PcGPR=Ye0+7~36=hH9E= zB#cxqiN9H3h-Yjlk!XXmT4k zsW~I_vl4Qaa)yk2sN7otI8{WeREBlP-pkHkK&tfKT3w#ak`@@~Xk~c%(4bU84Q5jC zF04!)A*St1PairdZcAywIQx%R`Y^G;P>TdrT+XN=UX$mZ+K7a;^_x-8?k0)aw_7ay zxVk{5*V*PsoA=^Lo&5lZ_@TesVLoKmXxV#B32=zt}*&5|xmEoCFSJ zIb1vT!O?-@n^ls7MH2mo@Eb+Cm`p`#U@u4_S<(_ONK{HVU0v zyE8uF@}qzn_SPqras% z0IMP0TWXP<#Vu@0YvBqrI@Nq{;p44Nh+ChzTUzt{tjnx}&({wp5tAZjClx%lXh;v= z3eTQKNFL13#0E(cQI|JRSjxZzZWM+^M#=OZNl$il;W!rP@o!Xm$U)>T^E8iXH~2@8 z+{9u1<5AH2-M*dsalQ`0_U{A*wchhlAJp`gejhw3h^3d~2)^_1n~8WVSw_?X-bEx* z;B^riZ`5%CD;~T{C;aR8sO&GAIxbipcI)w(8zTaxqx*YEwj#;@Mx*9Q(Cs)XvJR65oA6>9nj|VP0&(b-|x#~p^ zrAfY7&`By@kWh*GIehicn$q}>5uQm#4iJA&m}dZ*PTIRMI~nmA^761bQ{P}eNAr|S z5FjiAz-s`Y|NJPV=hjFj4eEnGTDREDNT=t<syS^0m;HMUUo3E=Z7vD_pLjj2ll?QR`A3E&Sh)r`*er71sv^$>;`2 z=-3A1%Ly+fQ@TqwyM&*?5`3NZ9%)_Uj7?&sj0HkyFYREU67AD#0X)Y#50#oOFLTjh zhCY+OgS^!syT(2c2=noXho^@1mwNo>iZdo)N&CD;rHJ*6H_?@Z2(tUM&n1U5xBRbt zfFQhkb&ty(It`D@oleHAzs7HpBMM3Qfa`!2zJM!!s?V4rYk&{4Eh9Z68>3 zoWF9{@iGBP?9*ex3xX}ZKAYye{Esfr+d7t$@*6y#~+tZ@zC4C{7Z@r zl4rv8&!TAOc$V<@5kd|WF5bwz#3i1TY2b-(4NesQb$iskUJ&1OoIQPH`_J?A?pcd+ zLi_RhUhn4k=Xt;y=2-f*BKZ9{o>~G!2B-Jg*0m8dqYmHYK{#!t=*GeJc0eoEL}thD z>$3TUnVA?ltTB(zc8S4A!n&31h4E5aHM;e?+m#)|nXr!VE##SYu4C1GXU2~lTy@fZr|MQ+Mp^nW~k^Gz(GWjC11z%+%ra5Kvj`DfCl$< zbOi$~$DF(v&wGRYdVLa{Wb+EA`X#f?%%kA!xPJ=qQbx1kFmm?sg2LDgYjmC`cHW&P zz>tq3G)cz6D%>rhLu^qnU^bP5lu+zLC1hU zd0%jU7R5?Yu>~oV7C4Hc|3d_szSquv|2JR^^NSs5>xhM{{TN{>*UAH|fnJv=3%%p> z*6IC3{I^gX35lK-3LnWzH&m^^;>m4ZpEi)|@Oe4Ez7#GpI{O^%mP&@dX134P5>BttEM7Dd_{`%SbD)YhUF1)IYC~w zxOctjj3jz7T5Lf1VF;ATKf`eZy?2z&60t7+z&4-tK5lk6ZA-U45C{vef_L@4y1LkG zuC-ovg?FBz!ibL71-!(*uss96;j??QQepe$)|p}7S5iNqiDgb94Pnz45-FG*i~l&( z-ETcPAI!C7>fdGWFVrOh0uANOJk=G#W73LdKQ-2&gXD#1;8kI|?)(1KCQew!NnRdp zTu5_3g2DPLA_MvoWr%KhrMF|Nz@mBiP&$6HX0OM3TqvNFAc(2kGV^W{(Uo=;ykQ(oqxUxxLN=sF8j zomxr$XHiV2mp>>pbSjW2JmB`g8J!0SZ8a(6X4O1{h@If*+2Y5M%S~qH!=Iihj9&7O1WgVlc7zl>H??HGR_*7V%b8+|5_0K#7uX`WU|rM&0rLyTh+`_xScn)MoD0zg^*<6BUxhB;tML*p2|Ao} zr*F@fM?&ZSx*tk>kzpuI*kG^8YZI?KK|GJIRM#PdI;+2232>eduq`Swr{R zWc*ARU+29{f9q4lf0GbaOrNO>ZW`9##exJu03y@u8I>Ewkh~_30%kZM{{+d;ZLP1f zx0reB+PJtB%r7iN_y|qSFscgt9er}Yl?CP?xY;Ty^IqC^y!^TyaJH{TdVF_osR7ip z1iY@RkBi4mOTn*?7nT&!RwB8KNY}2g502V(P6jo?&qZZt5z4ru=?FpyXeO;Rf$tn-q=&oaUC04iHj#z(HdW73|3-Vn3o~6LaSaN|d=N zVzt!WR3+?x8%!(3)5w+5&!4hWpndrCrfaSz#Cp`J`Qk>6ouAuEhxH-I>uO* z5U1PSQ8tv9Y88G%&~Aa8scshpX}3HtnR~F?8t3XJX2yD%Z)SUYZDjbcMUFTKUTJ-% z@OUD=8SY;$66Pmb0+BmY*e}>p&Z5XvftCIR=0M`7^UY76wTXokm>SiQ&n)~^=&_)MqqVgvtq8qAezb{9rzHqkBKh8Q25*`eX*sqbrqU&)v zZU-F0xk}!Fh;LHcYD$NG#mOCW8a=$!BC(7(QS@ZZVjS#cd>+2_Jdb+*j@2wA5=q~; z4l8ik^IxPoIhN!@)vFO$g5@_PwlV6~! zh3vSX+}60CD%+FEKMUZ*Ck#!W)Mc!T4PIy^e;)a36=vU~jgdQKDYfdl`e^Z)-#<6R zq1L*HFkJKsd~&dGZ=W<|KF}v!Y_{7zS`fjetu*=Y4*Ng=3vj|vwDs;UHr!-sOpv_! zznnHY5DZLB25w?^qsi5;z2@PEZ|kLvVj@n))k}>PdiJi5za+a;(Rk9CEytb|j0UhU z_lUUb9wRp!r_JwBayPE-;fgkv7a8^UjyREs)?OFlj#W|`Y?r4RKlPF1PUVurMQvmo zVr$_7g_(DnR*Ywoq%~`c*NhiZ#&-`HtAV!X{dJ-SD|MsYS(;8EgRYG`5GDDaoe`iZ zg}4v{y>>zJhl|ehUeZTGJ_(PYPL4HR1Q~&L(S&sM*a0mpWlSX>t3J~^kGD%9&gOU_tdJ<^udo=2`kt;9mg z3fEnTo~|d2ZUuPa9IH2zwVZ>hG-54RWHC;t ze88y}aT+f9;Xt`ijkwTa|2djKWdrS)a{mdGq;WBxpZYI86~CM%D)s}r=walQZ|)5C z6_hCwtq)bDzWywj+W3~|IdI>JOQN;6x=97cI>T^oF+^65GUyuxBpjX99KTie96IWf^aFi=tOAJ&wD>Z)W>hp3Rg z>Jn29i=Un*_;wVl^%#?%9|PR9I>B77mU3{IugT$x_`G@_5#T3@z+W+QR_^6~TkQBN zKPijS@wwLSrKjoASw^Q(JT`Bc?-8)@3(8l(h_dc8Cn_oLVWlNBhRw5lS?fO7(Tv-jb*BI@e5;1YpX6|5`$6FP5&UlSc2<=+KpT z_Xt(cwUB!{6hyZYlg#eS1)|frZIxD7ya9vpmp_L0q%2J8XkVy!E!i62>|NKWzw7+} z_gUFmwh(_Lw|bz%-m)DOQwS}uUF~z-3~6nRR+0H?)u=!43LbFY>;xy>& zSoT`0Zk%>I`;yu@hP}SNnK9W%h29aaGuHK?)mWZPRiNb|Z{8qyvFu{?TGj|vcUyDF z$_$aqyw=tx*3SHUvBLQ=VUFFU1;8$%=JAjKF83<5r)yZrC-scgL8l=a>9ZU_EwYP^ z9ss;A^rb7lmqI{*`O9PSm%0XLq4R`Q7CjKtK3GzYR_U5{`I|jf1A=8WB|9UXEgm;0 z__U9wF5Je6UhFkhG>94Xrk_qJHSTh6f`hi_%Q3(Ae+_bOMqso14V0bthV1#ArJHCg zYv6Td@~*QovB9qc8XOqIu=VxolZy8imvSAei;C8kmX@Vzm&Pytf5B#E)|q>qHXp&o z2eZ_f|MunHcY#7zYQD(Zq}7)5J)E`TBM< zUAa*Z>LtY6AHL*oe1Na5@z+0`EcDN~x>;^DKcFrA&ho+*4Gc_%&us~Ha##HlTB32_ zjKNx*#m0Wsb{HpvohAku+$lN$fBbOS>{*!`Q}AJX8SZ-@?qw)J$H;cr5ah@*ZkEkG zZ^J_1@k(^D?zYSX!D%s^BO!%3|7+KDt>h)sgd1r*8JIxVi`)9T*lY;d@gwLN5oaMU z@2}kFcY$|2=aowPW6OVh968+dQJE#1SmVW~j~n_%Mr%l+OAmwYbeOf)_y25<5_0Or ztt$^Z^vWZBY`ehkreVsLAzi7*Nk)IghbdQg!Ew;b@F?TkZ}`PqYhb}(&Ew8t zy+TP(6QABWL~10hPCrpIyyAURBr_s>f%_A7nr23Gg%|=C4s>OV3(`jhm=zXuAmnz} zb0|YA$BlLvi{&O0^2EHy_%_+x zSo+OwA{{5zPuW~7`|59lDUrM#>>{h`o}@7w|Mn$B zq~ha(Zjva-tWh@@T<@~^C2D!%mc5Zqh6C=I!E7Eq#;b20o z##H56_&H8^o!@VPqbaH>h4)9uHNt5psT*Pl1Z^UHla^-<$Ajd_tJmM;Rv+I=41l~>FjQt*4; zP0oEo@?NE&VtAWzu$az45&dc)#^8oyjS?@~z$%;prX8A^y3m~tZ2w`0$F=V;m`z_#cws%z( zb)5@sYMM8HR;)}DFS$RUmmrtUm8PW%JFZY6p9d4jX4R^3+DOzy1Z&MaIAhi|G8`yG zLOp*XT+G(c#uqa>jv1D3$sU@slDA0|aGRBRlMC*i?5qTC?w>_W@G~do6f(=c7WG6e zY9bO59X)ULA>+-@-&^VK#>(gIabJYwW70Pj?ckFJS+b)}M04w;9q4~ACR{@VythZ5 zYrP3<~y6%Db8VZa_{{bX!>R3umEt}a9!@J&ysZn4 zjx{NSDk<>{2lj%Ie>Cgne&$ETlXWuNJ(Rl@$GiP-D!LlaQ5`kZtpLewzYYpU6ObI=zx` zgp-2!zT)YmUG1@(o3$90P-aRhSLzkZU=p`23U|sdnJ#oNoRN_+LDCC4 z@`&A%FMfJ1HDA;*k47az{jH(w>@Gbuf%C>h)GpG zN|qCtC+2>zPqu&*CF|idGc_CxyxN`Ptp$Iw>-BsD1(klYIc{e2aU0NU)LAF8$@nFE zuP`23Y+{85Rf-b+^7+zs^lx8*rISy(IfezjH8MP6B&ha?V zlaU%%D^-vfky2L-6Sv zv@;IwftG3m`zI$=DFhR2j$7=8z>K^Nua{gZT>Ph|`n>lS947On_29{6kC!m4v9p8O zid4DQemK*UW4tx5r{7&!EyYef!v4x7K~_mL=%E0HH{JX8c(I~5Px*~OtU}c+RHRa> znfi;L`t#S5OiOnpSpB^{7Ke+SRaYCb15+yxfGU%ru=T||rjNk27xZ#Du$e3fZ|wD|8!M+0o-6-U5?G<8MtYCr+tARz_n z&b$(&WD8=dv7%fgVBJnF@>TIuX{=`Pw$Qb1yh7^oT9brFB(k?T{W&q4(6w`A1OD^P z?(D{QKh+Jg*$nH`&SQJ-Y0y=VWOu3IBNlxlQSb2jHU`eReRw(P(*3_j=|D4TJilGNR-a0qKd+d5`^N2gmPYVS z@g9?*ax^``aWt|)M2Ylvz}HebmC!je!vXm4(*)v!^4?fTeqbTz87`7sX}S?XQZq! zA2J%pjFy@h>79Fr_F)Ml^>il=Zv#o9MHmuqpM~Qk`}Y%Q<7xbasA7lv4XHtYMGTwU z7Tm!i2P<>wtJMFcbaJZG1$AeEgF-~eVndW^0)@I*v7PV{M-7?nxbV|u^A)M-Fa!Dx zqs03rYj!RJ{h#D}arLwU75#d5(Kh>~_8oZQ7tZVmB8+;*JLe?bjmXV_wTSdAklf?bHtA%ZciSLWt0K5v+F0H zmVtsyRU7(yAtr24RPmgJuz{blp+q)I{qrO{RJZv()!9K zjcYc3R=#B2`5aa1*vzzsbM9&cwRX!d_?WMq%cLzHtrg2CS1dQ{I|x4`(wZCXhx4Mr ze^;xQ$6v=r#U-@fR)$eB@~allNkcgg%jF)(65WL3=9EtTmjh9Vz$#H67*%mKSN#*8 z4SZ~6kk9~AZ&rDmY_P~ALQ{@;swp5TH=0Kb=#S4AWzQA|_mz3PHVDQ9ax!Cr-pJ_L zHP5QzpP7k+s)!r+cdu{ER=7WS3;k$0Tr=-Gi&hg!ZQmXbZg8|V2?>76gtmBTgy(>K zOB6tN*LtmCv$3yq+JW8P9iA!TWDIn4)KpXq3=FiunU3zi3)ih4goDay~U-at}fs5%1I7p=Db<0LTuYrv2Pd&1tMHea+Q_}G;wbD0ypDQ z5CN1ZDM)vQ4*2sl=Ef(XqQC$`5o{b4h)&WUJ;t|c{fUrishzvEP zyfAVQjS8J6Tx<{x1|BLvgal23j3i#SKovY%BuDX=&Z>_^ai?paqzYf=Bn9d(KtKoz zm_DHyH(JTA%#M}YYqs{{)Go!lU4t>S`5sVT>4rhwY86F9K(&pz^6wa`%_gX^3=&^kZqK8A`{Xq0stF5`%J z!_yP4_9jxTuqNJYJ=z(}$KFrhdfu`-&q(AoZwD*$^5}SZ1$lWHSy>x*GRw-^{QY-& zdQhXq%ZA~(@Duv8YOvWT0)#10Bt-bqB?q>v=%5gSds)nlzktc*M}d4LDNrqG^`&|8 zCtP9&u@=}A{(F$cfhi%y(lqgKz^GZ_;oUH08s}yqvP4=@)M6p3?Q7Bf-_go6|HTKD zdBFg7hzJ{#erghSN(!z$*8nD_>A?X7egt!{k)g3NC&HPll){>0y`;sFrgd}z?H(7O z0Le~1;wngmHZ|SP;8#F5irexfu2NpP_1W60Ym>*mziMJz`mlhp! zK;>MvdR)D!<>oG8s()i-?faHQ-*Rff6H$Z4i`(L_!WSg1^q8n?sm2H{`^((lK9VLk zsNNqz)TE0Qt24Q3n+q}J2)oSgz3+NZ`F#9Vt5z`-?~stkQ}XAuHl}T&huQ2}ESY+< zwWsO|?U%fTK5~^CI{cHm?r&;c<8gOuDy!fw_)oSkO9DziA0K|1-R9@N25l$6F|NS~ zcwBs>9-)JXqhVry-m9}&HN`hiCt{Y*|L>Cxfh#pa+k+}D8R9EGi-E3OkcYabc36;u zrv)C0Nf9)UQ(F2xi47>8PFP6DuhMR#o^dnKIH6P~>(+-da~Uo;F8Tf#l(n01!bXVy z;?x&u1tYbw(TTs|tCF2#D^WD-@Nxz=$Z6gWL+rXI!gAHp+S=RLn3 z*yff3q*I86n^hfPFQk-slWMp(?q*M?*T71h+nvQ<_?2HbW z5>9|$c78@jPd|=3mbun29QJjl-j1C4u0%5q77|Pj1_>^CZ(MqwNgB zS8UW207ASkE9h5!-qS@$8Y9*=!KgwDU;@cmma*c#-EUvxVO0zacFzH+K$Wvn#P5=2Ll@pce6+IW9zRDgsew}cnn9GSN| zs{1+{w1cNviuxVi`n*sY|KoBv?86JXzJ<*i9w;?uv$$<#D>$95bMZ9UR`r&Eu!z^D zp%SmeAqG-B2U5b8aE*-@RG-u>`y~sbS6PBxB7Dr-$6>8UaJ^6OvzN=k3f^V=0mNe- zFKHsFiJ#3x-fBh4Cxw%_a=ISBpJj{GNx(r~9F99fx`Hw|#>QE%`T15R9j)t;36~Hg z@%@t$J<&z5#Zg20iFqRWb`bT76O%H(!&xe!xg2|e!bubtafGhczlgU>Ra<@8)it`?K7rmZ+2CowE8 zG3<6nl~*F@=i6Ab!^O44#iicb%-zz=&CR{Mb8Y=Lm`}{}ch*9G95Yb(TeReiVyujq zvkDexif9=HT?8p3ZFUG^uUN!-jr}|@N*)@K@Izt8n<$H_1nQ1JuS@N>vP59y4`(Bd zPqaqBJiDatEoW{CI2Ie_2Dt{xT#S88{r(hp7KEaU{HQ6rn(vqXa2r*vxDTWWRU6mR z%>5pfi0s1ujqXjQTMyc&Y?DZicnoMkt@MwNjn_JpTa-3M>O^DR@9hhYdQ`qwE(g5c zw4n!8%cR@1rHLq)&lGR3q(44{2$Qf~&cz+ByTSkpX|MH`*OvZ{Q7+H@;r-P~)R zK_JQK5M6oF{W``E>>06-^x$HRc|-q}o@niHNEQZuX7ydX%a zr?-I&720@~?5(v)L3s7*{_3Cgn^{7{p@08|N67w-@P2%-{;jPYBSKQnx*)DM*gY_| zu`)L?(g&OuMv{!mCbN_T<|R8+sf=^#o1^QSQG|4$6+)CVqIHs@m6DQDV&i~uLm8=Y z2|$#@0CAS2etzmVxSN)KzP6UOwuZmHp3cXwv-~T4vh}ZASP@rnW~Sv_h1R%OzG8HA zMrgm`_!zz8O=^j#9%R^V+}n`|8UZ{)xYxUfcKdJHQgN%El6^S8ZhV2uLq@6}5?gO* zjXQr|1ZEc*&yV&e43RMm0Xq&&)8EE>v3Na<(a9VxhwKpD^dDx&l|LGx-f;y!qI|-F za%mKfhP@(f_@!lrqlSJIKAp`mGch}wFZ!&Ta*CPgBJnqRgNsEvJzf}F<^&J9U&}GR zHJkqIjtzGWr9faaCtiU19t9R_dIf?dLnXc8bRl_u?%sk)_gVP_=CAg>e)8O9E<2fh z*9Bx(6;^nRw1iT`(+KpXnk>B)cw8Q_&Z`l@)~7os=FMK?NU5sQo^NzJZ}nZTew9D; z`hz<{_3HV%7G{ji^)3Z;R$twle>)x?mjl|p>X2kP;anR*Zwz!yQZ?luc7V6&g!ER>|7Z1Zmb^>YO61kP zQMtlPeYtWKSgQN79`d=IqT+b=Nk=+K`21*X?2n(l>Wstec*uwuCuthOS%$^oZ0a!B`NvBG0ClP) z5PE8e*XwQ!duL=`Y*Zau1(pcZtz4|TPs(N@abcmo%aWb|`!8u*aC)ht?tDG*T`@jo;bKS}tZt)HhHhZLz zA)UWz>{nsk@Ed>(=!3sq#PB$Fs_`+i%^UfShn&=QGrIIOLc4#vieP2g<=oC7U7wxiV(QxVm3iYlOF_jh5ID zMyr65pss1;SF2kRqIOvIS?6m(B0;TGk+IzaN{THQk-)lRFuqx^{urkyp&R$l(g2u6AS**Bu(5J&D<)PJRyBEOMPQSPk;&E9dQ1e6bBo7 zKOCC~<|~%#=HBdjdazz7mpGBm-_iec^0uT8Znl|X@sO|h6_i&%hKSGh!nO+Kf@ zEp?A&e4`TfhH*TT2=BFnLC0b(Aop~33azn0nJ>(22P}(A2GlT4^qY+z0|a4>^D&s5 zcu6$uxFNuQ-Pu*9_u~M``XH(i_9E5U#36pOr5eO!+F>=6pay0ehUroi@j&O%{PY+3uAdQ==7?;?aZ~ibDXg1Tz6c*E~O~mLBXD*H_rx&*GBcrXxmC9FXv9Q zBm;XTL0V4!*CO;88a`5b&G`zD)pIQ+IXl&! zZkeu5k5BZ@2MOEo-cu-`%M1_s5X8SxQ0zM^JBa)W6;f}9W@TTvJ>8qBm3kFe=X2J$ zqd2gL{q4z%O|Qx3CuCBjBKai{5(JY00&&3-d}p$ZSER<+7LS)iUmv2O-0>?SQyXC{ zPUie;eXhHp-N6h3X7?VX2b1yhOw)w2MTlR2*kA5i8`bvMrg~Z_Rk48r^J}+ec1wa; zvO$n+l%%IBPpgODwzDUDn)6NE;Qhb*{{7*U%;pJKi@^WOtL4S%+JPdrZoXdtO&NB0 zwYPh?(E!ehLy{a7G&C`C_i+7ViVuBWoH@5j=1Q3YNQ%CSrikT667o`SEoCPQ zGEAw$TYjhD!avF zB<2c$32@-9i5@kCACUJB_)qNjaIZLY#LK{h=4dqcUn)B8pt7RH)S@ZY?4q)||5g|mz(@1a zV>IiOtRPGYoER6UJ8wSBe0H(ep@#LypgVC;u%gqW28J1CU)^X|-I&DF!U;mh zyajqcp7=Kp3PYLkpCgg_&dzv2`bL;!-ohycLb$j~6{_35WFFN{^FLvIt_$yAF zCi0Ni{S~vl4Hj36%Xuti7!bV7noaPd*m03PNi-6A2?%Xnf>kS$D|6^Ml);7(FuP(&+VAG&VU-hY_oBb8$*^RyK{o{ zRN9k>C*_iU(f2`VAXVX%LtX6fnn%=oIM)9T zv>z_@{_ENis|%2#(>XCWWoeh2bgi&W%dI#5?M6-a*DG^87a=J#Ts$+JqRlPDxzOSOuDu)2(>=HiMDHOBR= zVzTLjjGp*pM{Y#E)yS?=c@BUS9>#?~Py0m|az2l}=c-WrG6GUGoi?|_vt_H{VH^y4 zHk#(z!XKFxgkEneu6D0iIc1sxNI@@U2Jbvbr;9is*f96*?dr%3QJ|ke!Atqs<+lrs zh;LTw425{cZ93NF{oaDs(ZQDqyoqrF*yvccsZpR+V}5*i1VgL3(SMM9GOvB@PU?lx z<<{Q%@})?ZK{?4f_HTrf@cBQ+FWVI8e66Zt@CAv4_+J9EG{Z0JuI##wj?5kjDMUKP zr6q@C!VslGU|VtRRw_OR;DXC7{|IsN&#&WW3qP2KN`b@va)?G}lg|sgs7x%K?j9{= z#dXr%{2W@E9V9#~BQn;QX6acpzs&s?=oNgAyRey^o?2fT9Aa=k=G1x*SD25_=WKF& zH41^NTYf_$Q9uf9i9SIeC0=uT!$q+vCBHu?#9DXO zyfe2;u=@jP>|X26HNDo`TNhSzGB2V!B@qV+q;h`}hN??tVu<#rn<;a^0g4v(^4cv? z{Pq(WzC=|eP#BnyhYZo}l=;$&t`^xhm$rA8))$wSSC?A$wdVt{0kW^9Y-t6$Gm%DvT8Me#v8RI1C->YMLn zKu=H1?jYmG?d0>^+*l~47e}p6B%%@2>;2_2*eAlkvLzVkhu1<NMPOh{YtpkM17 zmJLLw)G)X6$w;x18a%>%fgBO5=Ytzw>OpCtHwUbtfB3q`Ts59@lZ&UD2N+1d3b(}t z95lK{{l1)Uihwff{bT{qTDX@rO!04#;#y@$ttFxyPyO>b>~6o|v_4PT-DZM;d`Cu= zbotwxU3JXg+Vv9oUS2Q3?q50C;!DIAio$iMr;0ij*Ee$kQzE3+-1^nn$Mm4@r!*gr z%RXLj1^bN^&>PRZJBT0WG6lC)PH&$Tn_D$8m}voRa~_tcu+sHYGkg^p)LXHL9-(>S6f80qlQPFb0hP( z?r6zrQKMO70i>Q2{*uu67*f|*?`DtL(x~rzKpGDkRk`-${vZ)0BEiXL|ELnJ$;!c>sj%ZrwmQ2rL|9E@50sf5jQ6V``ju&dTX|^%fLPGgIGPbEQsg z)st-2Dsa{UyYbEonFEy>v-kd<(3#_9GGU#|tR)w|A)kTr&cV(>a&kO>$Y^tpLn?^o z(RQLjp4xEAoS$AgfBUx$k%hV8Zh4upLa-JaCNhyO>x4Gl7QOT)lyJC+dtb1jvh!2pq z$6YAg@42N~YpNFmW#NI<;eqz$s^~JXK7=mEZHg5AN=I6a6ErmY z7>NmRqNslIJy@Y4hQ;D!7$N!lUr<7GNUEi;J38Xz$rL&&MTH9$sxDd0nU2ump}xib zRfY|bB(KJ1!wnS4j{+t`Y9$UYWS`b1LwWFcw7}~SKoLIPiz#@~{%;orBA{O>xdAP1`d+uyW!s8Lr&&-QphC3sv(TVdQ36E#Z@b6W z@)4T5(S&eU##jF@$X8!WUa`Ir>|XLCu*yGNK#T}gFwM&lDKzJY&45f}>AfGd2cOBs z+o0KGL0zU&`T$NhYdMco8N3o}d8z0q(|t!@(eeM|0vzo&Uda#nHM4wAzFga+4TZV7oh@sL zsF;mS#j)MlsNL}a8jp;W3V6itU{lWbTodOGXomCm6A~zNK|%%a>Qy3(akgzQAIuXPR!-5RGzlKbx4%0YN!obY{^?l09 zS6EgcL+QV+Z)*j3M{YRPGELWWec6{z-nxywvgze zmH!`2Ul|ow+XQ(bKnM^lxJz&i5Zr^iySonV4#6$B1q<%(?(XjH?hZTex4Y-uGiQFn zb9h7x2^*KD^Fgu)72fs?ZZ*O!X1x6j5PnWCpKLXxrHEth%eP&zf>7XC=cG`Xz z^#sQ`Qp^}hhHFgYqE$I;fv z+@T^f%$BTDIDpA$YA^+I6v0!CF{%$C<0Vwyc22~Q&{`Mp$HV(6trxORqf6Su!Fr`s zx#cIPWZBRi%KJ;hDS{_fd`b*W%&@!?9UX%dLVK;xHX2Zwu?|^5_A%EcU$^~`O$u6t zquvXZs}od9MSr{OjtTsg5zngqfdov}m?~C&ZwX~};wf3uW<{w2n`nDb6O7|?99=J+ z934F|HNh!Mz-Jh@4k$gt5B^$F@@{U9AyeSTqnbJ9 z^Rl~@I0cT2cwG`q`;*yrg_8K!*7#!JsI`znjeDxI>L%&WgXM2sEm}${KM{kB61k%I zqnL_7Ui#M*q@zVK`-arc%16E-1$`hy3=YAeOkts32WqY@NYh6_2kk$>mT|b{d#YC zvbwP`1*1QcQMG!Hhb_YaXQy+mh0rTSMPz)l<0bxm|HZ=wfd6|e03b)~tG7V-4w>`X zu>o>Lwb;xD?>7&G;C7DzV=cC#<<;SSg6@39&HIx_+?KCazSLSj>#%kNC*?PhC8QK_H-3*EegXJd4y%oR86z^Ip^NHp;kljJro*Q^R-{}Q<_<{|$fTPK&YPUQBS-vg zd9-Opc|6GtP7`g6R7V7)b~M6R_}J9T;!kX;(T`pa`AHAx)gX`H2cPe<|45wUEs}00 zZiyRde^b;}WY$(hT$z;`SVR*oErp~*zx*cXk1FVIB$yr85-dpnEg?aL47W$G(vj!Q z4?amDIdy-VdT7Yq`B)buKu}!%jxlq0>m*%=8*PL7|ANJE=rK0Ft3 zUJtKT{@#=b=P8^mIrR1z>X{u{8h%;>8(8K3CP-(qmiwf^QhaNV7nJ;!go93%wI zpH$1<*`&&^B;_4~U_KVt2)u`dJz=pBn7q{*76*dIUz=9fmsxmumnLj(ulH8SP>)RG z1hf)$Gt#V9%Qe&QV`KlVu3AC*$;p4l4d}7}fgAFPO%87LB412QCe)!|?U}O5`~T%h zHV`PpY))@<_>6v!8`s8Vs)P@a=#9lnOotig!nnTqjiCyG<+;B+fvfW3bYW#xD*JsK z1?rap*5VW5yZ%Pqr(o3>7Mk~0g3-?Ohx&_+*`{+ z*XuLDWGr&X51v}q zki`{N1aZ-m{fq`qfbssM%ZxNsfR~*sRTMw@$?UM0Zbn=Pcw(Gi4`iuO-56$Iw>&&D z`Fne{wtB0V{XtR#yRTnPHRqccH*qjj=(JY33=HkTGk`Q+9v3&*9xk{$yoEg{zrBpN z8?u2e?s{a;-{&|G8P!VL^Y$k5ELmp%CBQwEoFr9TEDzHRRul;vR;qE?Y|QIsBu@Cx zgC{9tf<~2jtp<28rO5DN2=z*G5^S}*n7JhhaCHhgC~{B$f+80{H0?BNp=`HJ6L+5= z&W?aj#DNlNVNiW5VO&s$;o0V$Q@e1+?kkub@o_Wyzt5b5eytg$LVceA2thIyn+YHP(>YB3Y z?nXk+8CODQM@Vk->^y~`$hKwG@@~lP3I=&(>aMRG&fPT=lr;a5j<#dv>Hj$&*XfMY zsCUx|4FF`sJ4qn?tA)ts^eUy13}%)4zg5*!CqF~KMh3k_)H$qtN7LSE$F11VUeW!N zN#JqDmbCRzB2llAh%&-hSJK#US^aI7BqQ5$fr0vTLC{-bx@B@RW5y(fojrxUwPGgd zpa1mq^eQb#2Q(TNtVUaZ6JqC_{#JPb|6|$t`1N|3EKtc`fYC&TzRf#1d~Vc`o`#369>kFO#FoTCNEN5jwN#JGndL9aL9`0heNTXafzkD2s>8$mri$moQZO9Gw^LdG)}P12odo#1jQY~l`x>UVQqJ!H z%He2GPFZl1AE>a#|4k(Jn&$Ptg zPAw12Qj(MB^F|6gJ5?lQC!wCE1YpM7@7hQ*q4~CKX$N;DN^t!36{N4JhI>DG_=M&9B(&!I*`PmUW5K7AZr^c z26Y9i)-PNe|BqKdE7Tk%B^OjMnZWcVG`mD$5S9fWsteLLm$t)1HYk*ik6~%DNmAcR zY|Od7j*E?1r)-wRuEc8td-^)|RMkbp@(X%nq_((m+V8hFzOnEb?_at3CeJUj<3m)3 z`)4?AAN(EXUtdU6vQ-ip5NPJA(pg6BZe3Y_P(0dztRK$(2O~q4vf2gue&WW_m-COp zNK2sr{Kt{XQkn1oa+8gG0<%MIA*Y-2^3A|Eayk<(gaUS%)2p2rtf|lYbrNu`Y~I}y zFfyc9iKG!;2hkeNr|v8jCc%@INibhC3r-mSnz79rFFwDy6!Y|hOB`@Y(v~@}jnkQU z*Kf+$v2DFObjWk!3j;4h56u&@dadhW=#-%yP|X5z8Ez0iaE(~+?b64WWL-#10z9LQ z{Pzp@KJa;`^A;Ra@8p6`b_tk$I#P(t+x#z^z~8b)Ko_VD2)i{q?$!H`Es|wwD!Vq2nPcNWWdfMUEmU><9 zSw&#exWA?t?I?HQ`5qtTD<0c2w+%@9TT+q>Hd|ho=^m>1;gjP1dV9VM{avQh`TR_o z><1_=-;fa}k5{=U-hZ0}DnI~N!aS%;&#G;ukw$$*uQ*3xIMk69 z*bD{RFapR9@D}$*sf&pR5-roZCM-o8pPHK$vR=V}W=7bIs z0KzGr=^snjkDOj3>k}(gsS_e`ep2vt6v{5#BaK@dpG>CVD_mY*a5pt?B=Q24@20qU zrDk?e4NLN=agLy*wZ^xDfY=csxX?=O!|^+UUr}D2+}JKi9MVrW-8H!eeo{s8m`280 z96rYVt&_!w1@mQ>n#i^XPUNb&eSd$A17QRf<4eQgbw5mD!s}B{lGa!v!~0HW{yI!*#chv{GgGMT`{pqA&TF9HRiV5? zSeV359gXlUlYVjNy#8`0^rPC@-P2O3Z{HA~+9Z7S7=f%N`pB;BS=({^nHS} zxw*v!G+p`O0*xr}7YpI-A=JONmc-rrKz7w~_KTJSn*CE-4TOpkT=2iSf0|#LLMXN{ zn555^SkFG6y6Wj&+!-D8ns$sOUcxOUmZN)x#pxU^xx7}}dw-4JHyVKEy(ajPx-3T3 zbyt|GMop$k$tV!lUuvav0@oF+nB*dP_8)Ae#At^Kd<#wEH%#I{st* zulBa|K)Oy-UTctt^LZTRc)$Rkhr2?m6Yf|Ok79>Tv9gkOVp6-$+cD)Alew*9tiG`k z>pAM9zlL*}4*KtF8xFl9Iu2`8srmhb?zJ9gJ)WsC1A!x-g^$>txGKLa#vP1 zDuzXLm&%z+p;f7~WP^bR%p_4=YDUvtIZ_E0W5jlqEgSywIdF3x&){rz$Rk5l<;~C) zqUCmZl_WAq^tU{slfGoEbi`%Op)O$2jmc-E!vf$HG61=dw&Mf;sA^kDz8f9@JF0v_ zONd7gk-WJ*>v&Mps?)eTwernQhzyYJsoHiM3KeG%^c;}-?rrwP_gU|%u{^HeB{I{$ zOD_f|^cDqbs-ZIfs9N(xP=lB6KUNhO#Lhqf+@XjU4fU`XB`QS_zL}~t+RQz@DjGTw zkj0jBj&#~18voF7Ib8JB*(vy7%@W9Fd+j=-`_FlPeWdDAoIEy!^Ajz1 zd{6?fEiOOO^X2DN0@=Ohxcv5fpPJdBfJ?NrHu}-nMxPCFP2|{R76Qo!n0MBuv;ba| z;2n0S$D7ZHfEEqN&f<{03bhN><7M$!?h8A~((usHKwyo3xoST_ruyA)F_#Fi$YN$1 z6?!!BpTdka_sowqVdA0Zwyb8s(v??yeIJ?o8pCgv8^w}}&dQv54ndV%bZV%`rfWW{ zSO*p!?Q4h72zaOthYUv^*5^|Um=K%6`0J?*Tf5H-u>N?hP0pna(9qG@HIexY>RzQZ zn#0lR>BOZA_-~e1|L6qBau(j)9sfBgmjuzgB`4vB_u*}H{1*EDm&b#Lqsj00ahag^ zD07ap_K7C3pnvA$qjTJd(HzDR+{93#>wn?Um|~auK={L=)l~F?4p+sTch{rmx0Ib> z6__P-aO1(&QA?{){6nAV%=$C~N_3fPmM3od`p2bx+@%qx@Iqs8-)v5_*9W1kki_m% zS#(3>7;H;a*Y@K4xvtz`h2LSY%LqK&8@aUQWNxX_;IDCl21iSqrS@MXy34&?p~X1? z6fr**A9%N54NmgPj^3%R(!af5S+itIvcbb)lUy5sWWgqq#5ik z*X4ulL%^wn?k5A+ZF&rWyRwGPs^$$g)fk0WcnvY4SvA+v#c-PNx8TD~jcz_|i_*1qyp7vLUB=>{(mW2p9SsFek_Ub3y zbVp|{o(x61W7tn#k{e>O%?o!6tDk4Nvo92D2?8H8%*X1-<1(TmDj)&X+ z4?j7QW_zNw$vZD3Y~8(?SETmHfzbcU1L$Ea*ud^9Dr!JvG0ly6xFrQ{&T-0iNc?rH z5h*60x3|UE>!OwA!}VXGgjQ%6ahi@PS0=i>p%fLhU)JFL%!$>F>Ta6?7;Uq=AwE8E z763Lk=6>A}`<%(Z_(JRClqfOvbUgr@d*dFNVq$n@Dy%37h@XMtAnvpTRCGXYeIXRz z%j{wQi_Y(VyPtgUGT9x{4F`VI_c*VP6;*Z>GaE$~huC}HsBe^1JA>{M zhTsC<;X8OF$%a|8yvApn=cMB-UHC}U=7qa4?UyR|O0Pwhgfln7g7FQ1XeZI>Y+aKQ zZSpXI00JGuyp}94*NIjO@GYrwVf)WU7?F?zG&U>@DS&GyZ|(%fvrZG4Z09f^>`wX6 z3IEEfZu5u?e$2C^rXfnEeLkN7U)qB#4uvy=BN3+RjfYFF2#Z&~`8H9-$_j{KR z1}FeSQ4zN&{sru_9wf{1$dPoBBzr#4`$;KCm|6q$YaR-32o{hab-T-SPa=T*GFGm9L8PI^|g%POS}L;oV)b$6<_FiFBe#R3Fz$NWw$- z8Ys}D#1Yl#jn4;mtstH~9r>^}d^}C%4G*=Vt1csO(&7N|Nj|7$Onmp)J-vzDls-|7MdrGWnBIhA&bE9l3rw5Rvic~ z!gc@bTWlc!g%V`+BM%vExWZG5G%wTs49oX_^%h)UN;1yZVEE^b|J}}(HXfcPn}Iuv zp%Tn44~LAdzpL5|6J(u~y&0O+v=Wmv6O+JYk782bV$DCTGN`r5i@ zcGw15n+{k3y@NZExS|d-34Z-8maKRCFhIR7N`}!jRg_{vy@p(?(bhEpTUiU0fLH;t zla{o)aCa(CWE`3|B5YN=(V_;o+93u^kA~m3ZXAhAdmMEkZx|ir8u{~mPxLK~v}noI z!IT7WJXfaS2s^9%8l3-t)Xtjpr5m~@X`>?M`>A4St$+gaHAH9cZk*B%ZOE5$n>IVzD*?C7=?IvtGny~Vb`IT0$i=uBI-0;Pk$5N7Bmsk-T z3CDRQhLQz}w(P)WLcKE(g#q5?YqA`P=HbNC?pRIFGvuGPn99V%?oa|R^9{17K!YPf zqp0xGdFvn#yp5<$!v?1H2Az7%gDKUo$(t)99^9+!+@!b14ed#V{3K}kZEom}*NaO( zC2ij7X-Jv6XNTN6{mH)7UmS7j7Z=4zIvLr2g+&XCDNA=~(DB|WK-8?C|0sY?E!dg= z6Hyq_fCPGpN;k8z)U8=tZwZ$kz%Zhlx_0{CeuVM=CSHjD8(elJUXO@Lc|nCkqa|Eh zSZ9MV&ugm@!03EO6XFGWSRZuuJf8xi<;>B8ePgzaGGMMzyA?yPW$GrYm z>w{|l!|L|*=o6rN5l9uEie@3QkTKX5$FXuO{FLgHDcwhMB}(IUM0H9J{Bb?*Jo~MX zpplY!4O)1%PH!Mv!1FIq`^5h|_Kl%Bttd?EGk2eT8>uw$_$^NRMSqEupH$wT5Rx8$ z(T9&bsnAsCv|rvGrnSc%-YcP-gR`hrT4gH33I-&)uxM&{YpEg7zDu~Ra&`9hndlxB z!n?L)7Im?jT91e8IZZW*Ftv=o8nvj!WhGV{%y&|0Q8EmEEM#%kH1zDcq0zfX;u}X%oSwVF`sP`pOAcuw_`Rq`7AbKG`+yk^V)m|31rLh=P7$L(P*{I(b<7T zBi0gW!06I*x6%7k5UnngDlJBx{DJiwVB#h!S{%(UY zN;FmYk*{gqZ6B1SPY@a!pLAqM07j0w(UH|rc3M9nwrWTKOtOU$)x%l=%L|KEo-jKd zwok5Gj(G83Le1q8#Ge4{j^7}& zu@P_4`5$N)xikXA+xu}&k;U#zQm4O#m#CX&2kTZ=Zn#`ILY0GCtkUkmOv3ux>G5Bf ztGaBJkJ^pxh9{Zq(+G542l%kdYys9QUCo+3d59g}t!*nUjf(?)WN%Kd^V{k@Y3HL8 zP4>|g4LFQxS`*EFq$!}990qSpXCmF|$z&-L7tMW7TUpO#y^kVvd}OFAGuh~n(t7zg zC(dYAB5mrh`>Uect!S}UP+rO+%>-S?l$WH@?TkKY#=KPlc8f08uIgPS5wF48GTVto z^qp?C^5ZI{g;6A1FQeg5~@k~gUyw8)Vq%iLd92orY zajVtnI8a%2IH}N;@9Iyv^z~S2oieFD?I|SJLCrGub>|Enn$r`O1~- zXzE9g_%xVcF*p{yHPOAZXqB$t^ISjwR~fB0hzKjf&p{iVhnrT2I>FJaLQGXXm*y2; z&TQ$}kydNRhCpeUjNM-Z`?O@S>V+Sit{zTTTfJ{8=x`p>cML2aWIF?Ck|wbAkiEdG z5A>?pW%qus>z(?HR*(XjV!1n40He?Qgs#TF3wUrS`3;lQSUm06GVeIC%b=4Y$~gJZJzw{5*j8O9X3WaZ8-8#m8GASFmd*C-|0qUnep?cYYe?f4oB`q0}hB zZc*e2DY<;p3$nc=#xXobc5Y1VYr6lx3ou9)JMCFnB;(M>Socf5j)+fsp%~vUUlIA6 zR-V|&l6$|_It?8I`H#Dw9km&e!5M9;uV)=CK9FEn(^1ZQ2Rz1?xsDRYvbFXpMhXO& z8i#{n;$J4^>vr80GapM_7mxX1C*#c3Q;jwug)`-$9XlxI$R}kT8GW!a-z| zKY70FfH2DNdR}d9o(IG7Y1_q%=yPIh;uNd7WYdQ1hgb&p&Ub5@bGLCfZ;Dn$rAaZ=$@oFSdkno=MQ8l6cL0*s_&_dNk@pii2TE-DcyzOBPtjF zl%B4w>T~<_GJ=VS%}Sje{wDk2q$KwJdU7i#7?IH0%K}2loJ9gbq)4EGO%qI-m&ePO zy@vw*eLFetb6_c+`J4&bj}37oL3zntMh;Z2ez7y^!?wCuw!ss(BVXWZ?P3Q2>H!Y> z*Xj_vi;x=yiHpBfZEp(!Gh9?s?H;d0`eK;+wx-QB(Z3>n$YCNy6x6}Y@*;ZLLi$lv z@m_W){gy_Km*>ET^9vj_L1XSSnxdamVPQU;_Pl)FxBVck@Fh?02^oHQl|W9r-LPL2 ztT2i=O=FCO#j=_0365+G4MN|QkL{pP1Nv-T(0{{t42VFJi+KF_a<=Vbxyt3CgUz-% zm$81fcI|bcVl= zH-D%9obX5Ap^V`RebAB64tcEp^`r6qNMs! zyyqoslDam}7?w~J(&vdxKBs}GfL{gWPZtMwQ~I(Ia7c^wxL(y+v8I_wQ=$qd{I=Jt zt#3DD(N0StyzQh?4v{>ryLMf+nb2lSkgj-1i*rcVPnY$ z^SfSiB;K0!?xBdT0h^=OO{rBs#zgq=e z@az^)+ahjWZmUUWuJRno(q>m121CZXmSL)x^0VB*v!u0s19+mwBn7sksnEw1YzK_joXF^OrJS z$58hwe+jg%U&}ik`x&pIav)VsN#nY+M)IsrT_yI2VCI5~dD9k_k1>M~i|}Qc+D%>N zD7}N`Je{G{bJc)JP7P8(jzYi|l7T334~O66I)h1ez__Wla<@v*jKkQo57Fr)B4TtDb6952?ctbj)6+seXPqupwB;b0{G z=H<4kwtNqtOi!N!&tCH!xw^!ryIj0HIgC_&mmrT9IlK1|^OG3#WR=Eyr z(7>#(zJa32xbUllXfE#-EJsEN-=7YaGIrK^F7K|V0$OV8gz-N+-TB~#&FXmZ!4fs> z5&syl+X2ltE@djKNOHPF@wz*5`7iQe%0E@ADQj<|F3sd?Q==4YbUe&YBLVys3n^0h zqNcfJMQhUBq>(+ucomG|TW=;sePv-*yZ>Wj1f1hTyHt?@FT9w#QE`{Ljo~{$v zDs+iUc6nJ+r;U_wq=S;g&oy(D(0IjM?(TOuTI8-=VPXb}P*b2tu%m&_jt^}LgSyh? z&y*H17^aVR?s?uh8cHC!kwzVTAS*%nWcR04Wk%XaoF;$10~G=&4$mq_B_}q7g(*~pUQx1_+AgxR zT1rKoyn=FW&=~OD`~pReNjxLi?7ZLXZojr>j(2`Dv9X+$*pt@29IGV0CxZ86#17w; zN0C0#TU2o}XS%G|(OI7-asgMg;zMJ&8F+$xxC1 zF&ByS@7{y}GQ{dI0#%eTmmTZjTt4|~I(Dq^dCSFl3~u5O^D6^5^OMk;YXVTt4jFCPEwdE36D!*C2Sh zE}~d5#e%U6PV4%+A{se}PO~brQS!*4Qr47rZtvaoGD`w)zc&gQ=YJi4z6i)d1_zwt zE~v<4hWtBRj?_iU;EkTtvxK?%w}Mn$OcEzE=Em)ysS^8z9dCpN4cN^?0(^H+rXL?E z0+7Z0H=)2+L4+CrSjab3Gs()wR1^-zsqU+;brfQ#&gQKXxk9FN^~4Q+r@+_*%g{uL zm6Y{cOoz|o>YKwKovB#FS5PEvQ zmM`L!G$Fk`TL=%`+|LuRIh@~Wq+@EsBc{|_^qv=qYJ9YD2X=1FaK7Dc;VbVAlX*np zd(Nc)K3jy;i((NO2U!x~OE{!2^inQLR9N{T^UFQI@;M=h1+tDA! z7dWO{eH*7qPvmE(m7czS@W!2gG;=(3WReUpSU#^C-sD3`Ra`kbyVNj^AxSK03Jm(mJ_GoBERKR2Y3AHI~UijK6k+Ob*AUso_Y zNWen9hN0gqlxd25=R9sHrGASAGpK{0w<@$a3DNNf3>*OdJOv0~tv}7;`AQ>7R%pHH zlT#C;G#P98O_=ft@5gS>_?NZHp6Mvx5F*;&y(Ex;>y+67^@yzYqs=^SO{h|FzZF=S z)_sJut2(UPGiowrdHW3gbBsMlQ7aKrom&5>XPp0l;*~2Lfo$Kmzp$|A(MTs#BX^w@ zC^0`&z5o&T5xJE3!JF3OVv=DqN0725)d8*C(cPPM++=C}E(KR>+9Vzeby*lSGQ{&V zWSoIw446k~BsBu2la%takdzj3BV}usM${Q%iN>a?d!|u;StG@=*{e9fKBS>z+12ci zn4XILS;HEhwa8#CwtmfQguF&_^9|5N;Ue}-L3Eqr&E>_%c(FoC>Uo1-o@cL z%D55GSiQ#(kaur@!Z%m3RjUN@Waz&NE_;&6_!3o_Md7l)F$bgEwbF7OP3JtA-G_-d z8q??nVv_ zJx8U8a>CFJN93RGzI)gL+_d z419d-x%HdS&2%^N%g#RfJLc1x-cPSrFt^Urd%6=FvJ*a(@`uQ9eM@s>?GCrQU$njc zA_ISt2#)y}^2!?=P9vb@n>zkVG88H#UkV`+Zivs2ONAI~>RKxtaB>GVc5ci8a`yKj zMqL*41aSmC$KYz#Y*30GKu$jdC@q*!#b%oW!pY0}MZSg{5ty+aEB`bGHZj&zRj&DI zimKat?-9uU6pjs^!}w-(F-y5iZ|&{Sxl_nO2mf-XT@tW2&{<|0F<@c`5sU5|95|h? zZdG)=hfEx3$&TavG}NxRx=8OxU7mN=ujO&MIEYTU6Tj^g9+1(_o+>O+We}I)-IHU$ z0lo)5e5EdO$hCf(sGg4f*ZoS+_N6h6=@4FsXe3P87|vHiawoEfln0O}$1^#Du)_jb8S~L3LE%YSL}!CNKgG@b03$R$*wXk{&XTgpCo z4=1gM=kaDJ;&zq{-jsDEZ@`Qg*8lhKAS5jIQu+Y`2t4fQ$uCf>q2Gz(baA<^GH=*q z|8lccn`RQhFvkx?=vDpWI8~!(OB^}t-4Stf7lwiAg9`k9{iyv^#}~@21DTZ8xknE7 zsJ+ek^_;Cy)71zq4Zq(Yurk>XA)he)Tsp^%odaCh)ZAvXk``3EMC*KqGJhNhp_+EW z`rdc+cObAgf-|AGIsW9EzE^SSsHt95tsy_%^Y^@|XZA$r99rhKk5M*rJo+B4)L%DR zZ+*pMH7%&UXhq!K#IXizI%q*Q8}BzfUjSq(P-Y}tJ}Ppy z&ttH56QDQC{kpxz!&GxNmoXZl`(rRug5Pr+<~bGxs8n)hyUVMEg_6rN7TW@K?mkVR5%!)@+OVn~-gT@DZ`zS~u%Mh82c z9DhuJ)YcYE-U98tNb~4I#5BLaA+A03WShr<&A*fzl~wU_+Pd@@NplP`r}gh!`()h` zgh+hu`{oNA!NuuVEy7NqU;&zC9+I_%(1;{KR$(7bOnq{Mg&lNHA92wdmPx>(kpM(z zCg?U!`-1hzDan@~==`>{;ym7PKQ(_yXA(IaG5uxq$c6y`;$&2PQ1hUj+%2M5EPj;o zXr9a{ELJ%QvuiciZ2H3j2&vm&mxd>LlJ7)0I7H`poXNJ}?=XNr2j)21+ZM{|jv)DAZK)_Z!iv6d*e?HVLz=g;9{dJ_>1R0^v1*k|FcK2h z*gftydqaD^irmN!Ox)o;WH^k*o7-6Py4~jw&DO&G!aB>0_`6-Fi5Ph2#cVS9&*mW` zo@(~$DyGG`jDew}$$X}G{`TLPh?n#^{=p>y>ltO(e=^kc6}Z4GHCd!c#mcIHX5~=N zRcJg~Uc;;4RKZ3TL;Gs|)lD5mR0G4BDgpumm%*A#jrdt2nki}#LNi#qeD-G^MqJEM zGV?T+%HwwjKEHgWKUk}6D3NyBbr8UCWOVs4RG5d?&pt9G0}RMAm&}nb8E^#w$a@Ed|VBo2jhQ5)Fv|bRH!-KNilkYVlsESmXJQYEm%o+ zP_oAQxn}j#9(vRK0O-eCq(&ZP2Wz?}GFG(4=yrGQzB=lUdu#QhfH0-tmj;xaBv-Pi z#^*JXxgHYHiaE~Bt4D}W?sz=U+A=cJp9yI%@0}}9Mvz|Jy=Nnw&eQYTnhaKS4{S<) zE{-3BJY@db)MunMWWZ zrgT*$M*>+WstVx4RFE?Mf`Uf??4m!hrl)`)<`uxppSE{~>>jGCB|PM3y$(6{fBTxo zrf@$2Q7(;OIQv4;Zn3}O>TTOdZ{sbz)1d5FT_H<3I8it9`@ge=1E1{zS9g6C zW!t%LZE^9RVGLBNvs#1|MWQ%y_g@|#tPN_HJ6bj6C0z5{|1TDL550@d7A%3F=iDF6TuM}}?obzzFO^GBe zQoXO4jCp*l7#5U+U5g6~|Llz%=(IgsD$k{7dM`8C?*an}LEbXOH6XZO);&{z?Vf_d z#QNK@vIG8x)hgvdJT`1IqqkRS{i_;go>hJkPVG<(BQudZ6(TQ|`SXflcJ=Wk1LhcusW*?QW+&^prb@p`jNr zn76g8i-kP-#O?QEAoBTk{0yS4OYA#Gy&T7X?HXH3mZ+gD2q3)_jLnbG44C3qp`;H3Sk9X@{tLyo+6G*H*?emep#LUgd;wPH0j4q_nh*+#Y>HBv{o@cjNkbH=3kdemYOr zo*wcg2cw4a#kr>yl+$H<^PG^;_B>~!M7cZa9_2_kHrKP`Dk^ri3s#Vb`*t=tr8qub zz9V|aKt*4@Pz#QEYw&-ptb#F{&{R#rFv5y^r`53>j~&?<(eGjdf1)8_X2vfg;HIg0 z#iB6&m%7oTwmBp?5A z_B_^7GuLA>=F?MfFQs?@4X+cq5BSQfUTtMAY1HI#^1aQZDF8&A92JlD7%j>YoJnum z9(<=$KGX2>LYx#GwBKjz&x5?Wlv;jpvKx`BQebY`hUkzHSGkh61qqp^+~NR}G`Xzl zMOMV2{VMSXO~0K!14)(Vu8>7cXa967Q~_U18(k?3%-ri& zJk1Xbps`(^XMNepZpJacM0as8FiNM~TE8a6Z~&2j%b5{C!%Wg`b=~QYj6YepSntU6 z;`%v&0}Tz3_fRqQQc%ybagMTqKbd;dWIQ11m2`<5-G7NVi!TRs*M1H(M+!SPMiVoN zrZxgY@ySWw-rnSL?H%`fDcG-H&3-9nM&(kj6)OI8%(dBQFP|#(xIfnIkT3efoP0NZ zY@yte<`&m=7dgt^)aGW08#rY2=J{F?YWP_ei+Qs*^MHrjI&SUPBCiH+% zu|r#i-wBhVzB(vhV|4AGD+|Rd^GIR>sVUbE1`5CQLPK#N7lpB zNJmCTru(j5$C~?ZA?N!`f)x(;>&NnT7H)9XMY_vOQeexac2jNm!i#zT_2_sJ6N|%%{SFq3k9qsz5h0s<~Q~@sgY?pq|WnlZ+D2AOd2`WMa
    4. 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 Date: Sun, 19 May 2019 22:30:32 -0700 Subject: [PATCH 012/134] Better error handling (no panic) for client connrefused Server logs error w/o exiting if missing hkexsh.passwd file Signed-off-by: Russ Magee --- hkexauth.go | 3 +-- hkexsh/hkexsh.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hkexauth.go b/hkexauth.go index 438c36e..170a616 100644 --- a/hkexauth.go +++ b/hkexauth.go @@ -37,8 +37,7 @@ func AuthUserByPasswd(username string, auth string, fname string) (valid bool, a b, e := ioutil.ReadFile(fname) // nolint: gosec if e != nil { valid = false - log.Println("ERROR: Cannot read hkexsh.passwd file!") - log.Fatal(e) + log.Printf("ERROR: Cannot read %s!\n", fname) } r := csv.NewReader(bytes.NewReader(b)) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 6891e63..a0462a5 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -781,7 +781,7 @@ func main() { conn, err := hkexnet.Dial("tcp", server, cipherAlg, hmacAlg, kexAlg) if err != nil { fmt.Println(err) - panic(err) + os.Exit(3) } defer conn.Close() // nolint: errcheck // From this point on, conn is a secure encrypted channel From c24529a1d49591a0eb306afa37044349562a8418 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 19 Jun 2019 21:42:34 -0700 Subject: [PATCH 013/134] log of cipher/plaintext disabled (flags unexposed to re-enable); pprof tooling --- hkexnet/hkexnet.go | 30 +++++++++++++++------- hkexsh/hkexsh.go | 63 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 76 insertions(+), 17 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 494568e..077a350 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -40,7 +40,7 @@ import ( "sync" "time" - "blitter.com/go/herradurakex" + hkex "blitter.com/go/herradurakex" "blitter.com/go/hkexsh/logger" kyber "git.schwanenlied.me/yawning/kyber.git" newhope "git.schwanenlied.me/yawning/newhope.git" @@ -70,10 +70,14 @@ type ( // Conn is a connection wrapping net.Conn with KEX & session state Conn struct { - kex KEXAlg // KEX/KEM propsal (client -> server) - m *sync.Mutex // (internal) - c *net.Conn // which also implements io.Reader, io.Writer, ... - immClose bool + kex KEXAlg // KEX/KEM propsal (client -> server) + m *sync.Mutex // (internal) + c *net.Conn // which also implements io.Reader, io.Writer, ... + immClose bool + + logCipherText bool // somewhat expensive, for debugging + logPlainText bool // INSECURE and somewhat expensive, for debugging + cipheropts uint32 // post-KEx cipher/hmac options opts uint32 // post-KEx protocol options (caller-defined) WinCh chan WinSize @@ -998,7 +1002,9 @@ func (hc Conn) Read(b []byte) (n int, err error) { return 0, errors.New(etxt) } - log.Printf(" <:ctext:\r\n%s\r\n", hex.Dump(payloadBytes[:n])) + if hc.logCipherText { + log.Printf(" <:ctext:\r\n%s\r\n", hex.Dump(payloadBytes[:n])) + } db := bytes.NewBuffer(payloadBytes[:n]) //copying payloadBytes to db // The StreamReader acts like a pipe, decrypting @@ -1008,7 +1014,9 @@ func (hc Conn) Read(b []byte) (n int, err error) { // The caller isn't necessarily reading the full payload so we need // to decrypt to an intermediate buffer, draining it on demand of caller decryptN, err := rs.Read(payloadBytes) - log.Printf(" <-ptext:\r\n%s\r\n", hex.Dump(payloadBytes[:n])) + if hc.logPlainText { + log.Printf(" <-ptext:\r\n%s\r\n", hex.Dump(payloadBytes[:n])) + } if err != nil { log.Println("hkexnet.Read():", err) //panic(err) @@ -1203,7 +1211,9 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { hc.m.Lock() payloadLen = uint32(len(b)) //!fmt.Printf(" --== payloadLen:%d\n", payloadLen) - log.Printf(" :>ptext:\r\n%s\r\n", hex.Dump(b[0:payloadLen])) + if hc.logPlainText { + log.Printf(" :>ptext:\r\n%s\r\n", hex.Dump(b[0:payloadLen])) + } // Calculate hmac on payload hc.wm.Write(b[0:payloadLen]) @@ -1219,7 +1229,9 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { if err != nil { panic(err) } - log.Printf(" ->ctext:\r\n%s\r\n", hex.Dump(wb.Bytes())) + if hc.logCipherText { + log.Printf(" ->ctext:\r\n%s\r\n", hex.Dump(wb.Bytes())) + } err = binary.Write(*hc.c, binary.BigEndian, &ctrlStatOp) if err == nil { diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index a0462a5..509b341 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -23,11 +23,15 @@ import ( "path" "path/filepath" "runtime" + "runtime/pprof" "strings" "sync" "syscall" "time" + "net/http" + _ "net/http/pprof" + hkexsh "blitter.com/go/hkexsh" "blitter.com/go/hkexsh/hkexnet" "blitter.com/go/hkexsh/logger" @@ -40,6 +44,9 @@ var ( wg sync.WaitGroup // Log defaults to regular syslog output (no -d) Log *logger.Writer + + cpuprofile string + memprofile string ) //////////////////////////////////////////////////// @@ -412,7 +419,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, // gracefully here if !strings.HasSuffix(inerr.Error(), "use of closed network connection") { log.Println(inerr) - os.Exit(1) + exitWithStatus(1) } } @@ -422,7 +429,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, if isInteractive { log.Println("[* Got EOF *]") _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // #nosec - os.Exit(int(rec.Status())) + exitWithStatus(int(rec.Status())) } } go shellRemoteToStdin() @@ -451,7 +458,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, fmt.Println(outerr) _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // #nosec log.Println("[Hanging up]") - os.Exit(0) + exitWithStatus(0) } } go shellStdinToRemote() @@ -621,6 +628,9 @@ func main() { flag.UintVar(&chaffFreqMax, "F", 5000, "`msecs-max` chaff pkt freq max (msecs)") flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") + flag.StringVar(&cpuprofile, "cpuprofile", "", "write cpu profile to `file`") + flag.StringVar(&memprofile, "memprofile", "", "write memory profile to `file`") + // Find out what program we are (shell or copier) myPath := strings.Split(os.Args[0], string(os.PathSeparator)) if myPath[len(myPath)-1] != "hkexcp" && myPath[len(myPath)-1] != "hkexcp.exe" { @@ -636,6 +646,22 @@ func main() { } flag.Parse() + if cpuprofile != "" { + f, err := os.Create(cpuprofile) + if err != nil { + log.Fatal("could not create CPU profile: ", err) + } + defer f.Close() + fmt.Println("StartCPUProfile()") + if err := pprof.StartCPUProfile(f); err != nil { + log.Fatal("could not start CPU profile: ", err) + } else { + defer pprof.StopCPUProfile() + } + + go func() { http.ListenAndServe("localhost:6060", nil) }() + } + remoteUser, remoteHost, tmpPath, pathIsDest, otherArgs := parseNonSwitchArgs(flag.Args()) //fmt.Println("otherArgs:", otherArgs) @@ -692,12 +718,12 @@ func main() { //fmt.Println("server finally is:", server) if flag.NFlag() == 0 && server == "" { flag.Usage() - os.Exit(0) + exitWithStatus(0) } if vopt { fmt.Printf("version v%s\n", version) - os.Exit(0) + exitWithStatus(0) } if len(cmdStr) != 0 && (len(copySrc) != 0 || len(copyDst) != 0) { @@ -781,7 +807,7 @@ func main() { conn, err := hkexnet.Dial("tcp", server, cipherAlg, hmacAlg, kexAlg) if err != nil { fmt.Println(err) - os.Exit(3) + exitWithStatus(3) } defer conn.Close() // nolint: errcheck // From this point on, conn is a secure encrypted channel @@ -861,7 +887,6 @@ func main() { if shellMode { launchTuns(&conn, remoteHost, tunSpecStr) - doShellMode(isInteractive, &conn, oldState, rec) } else { // copyMode s, _ := doCopyMode(&conn, pathIsDest, fileArgs, rec) // nolint: errcheck,gosec @@ -877,5 +902,27 @@ func main() { if oldState != nil { _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // nolint: gosec } - os.Exit(int(rec.Status())) + + exitWithStatus(int(rec.Status())) +} + +// exitWithStatus wraps os.Exit() plus does any required pprof housekeeping +func exitWithStatus(status int) { + if cpuprofile != "" { + pprof.StopCPUProfile() + } + + if memprofile != "" { + f, err := os.Create(memprofile) + if err != nil { + log.Fatal("could not create memory profile: ", err) + } + defer f.Close() + runtime.GC() // get up-to-date statistics + if err := pprof.WriteHeapProfile(f); err != nil { + log.Fatal("could not write memory profile: ", err) + } + } + + os.Exit(status) } From 54396a4e4bb1da8ee5fba09beabba9d14e76f747 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 20 Jun 2019 22:44:19 -0700 Subject: [PATCH 014/134] BUILDOPTS passed to client/server makes --- Makefile | 8 ++++++++ hkexnet/hkexnet.go | 2 +- hkexnet/hkextun.go | 4 ++-- hkexsh/Makefile | 2 +- hkexshd/Makefile | 2 +- 5 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index ec49fe6..84dc642 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,13 @@ .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall +#ifeq ($(MAKEOPTS),) + MAKEOPTS = $(MAKEOPTS) +#endif + +#ifeq ($(BUILDOPTS),) + BUILDOPTS = $(BUILDOPTS) +#endif + SUBPKGS = logger spinsult hkexnet TOOLS = hkexpasswd hkexsh hkexshd SUBDIRS = $(LIBS) $(TOOLS) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 077a350..66c2adb 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -70,7 +70,7 @@ type ( // Conn is a connection wrapping net.Conn with KEX & session state Conn struct { - kex KEXAlg // KEX/KEM propsal (client -> server) + kex KEXAlg // KEX/KEM proposal (client -> server) m *sync.Mutex // (internal) c *net.Conn // which also implements io.Reader, io.Writer, ... immClose bool diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index 200469e..da22882 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -331,8 +331,8 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { } if (*hc.tuns)[rport].KeepAlive > 50 { - (*hc.tuns)[rport].Died = true - logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") + (*hc.tuns)[rport].Died = true + logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") } else { (*hc.tuns)[rport].KeepAlive += 1 } diff --git a/hkexsh/Makefile b/hkexsh/Makefile index 3aa39a8..ea7eb69 100644 --- a/hkexsh/Makefile +++ b/hkexsh/Makefile @@ -4,7 +4,7 @@ EXTPKGS = bytes,errors,flag,fmt,internal,io,log,net,os,path,runtime,time,strings EXE = $(notdir $(shell pwd)) all: - go build . + go build $(BUILDOPTS) . clean: $(RM) $(EXE) $(EXE).exe diff --git a/hkexshd/Makefile b/hkexshd/Makefile index 69f66d3..9963a7b 100644 --- a/hkexshd/Makefile +++ b/hkexshd/Makefile @@ -4,7 +4,7 @@ EXTPKGS = binary,bytes,crypto,encoding,errors,flag,fmt,internal,io,log,net,os,pa EXE = $(notdir $(shell pwd)) all: - go build . + go build $(BUILDOPTS) . clean: $(RM) $(EXE) $(EXE).exe From 3ae48addbca18af86cfde935d9f79cf6f0e8bc0b Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 22 Jun 2019 00:44:23 -0700 Subject: [PATCH 015/134] Made server keepalive ageing for tunnels to goroutine -- fix for premature tunnel collapses Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 10 +++++++--- hkexnet/hkextun.go | 30 ++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 66c2adb..21da20f 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -75,8 +75,9 @@ type ( c *net.Conn // which also implements io.Reader, io.Writer, ... immClose bool - logCipherText bool // somewhat expensive, for debugging - logPlainText bool // INSECURE and somewhat expensive, for debugging + logCipherText bool // somewhat expensive, for debugging + logPlainText bool // INSECURE and somewhat expensive, for debugging + logTunActivity bool cipheropts uint32 // post-KEx cipher/hmac options opts uint32 // post-KEx protocol options (caller-defined) @@ -1112,8 +1113,11 @@ func (hc Conn) Read(b []byte) (n int, err error) { rport := binary.BigEndian.Uint16(payloadBytes[2:4]) //fmt.Printf("[Got CSOTunData: [lport %d:rport %d] data:%v\n", lport, rport, payloadBytes[4:]) if _, ok := (*hc.tuns)[rport]; ok { - logger.LogDebug(fmt.Sprintf("[Writing data to rport [%d:%d]", lport, rport)) + if hc.logTunActivity { + logger.LogDebug(fmt.Sprintf("[Writing data to rport [%d:%d]", lport, rport)) + } (*hc.tuns)[rport].Data <- payloadBytes[4:] + (*hc.tuns)[rport].KeepAlive = 0 } else { logger.LogDebug(fmt.Sprintf("[Attempt to write data to closed tun [%d:%d]", lport, rport)) } diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index da22882..6503c3f 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -244,6 +244,24 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { go func() { var wg sync.WaitGroup + // + // worker to age server tunnel and kill it if keepalives + // stop from client + // + wg.Add(1) + go func() { + defer wg.Done() + for { + time.Sleep(100 * time.Millisecond) + (*hc.tuns)[rport].KeepAlive += 1 + if (*hc.tuns)[rport].KeepAlive > 25 { + (*hc.tuns)[rport].Died = true + logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") + break + } + } + }() + for cmd := range (*hc.tuns)[rport].Ctl { var c net.Conn logger.LogDebug(fmt.Sprintf("[ServerTun] got Ctl '%c'.", cmd)) @@ -330,12 +348,12 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { hc.WritePacket(rBuf[:n+4], CSOTunData) } - if (*hc.tuns)[rport].KeepAlive > 50 { - (*hc.tuns)[rport].Died = true - logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") - } else { - (*hc.tuns)[rport].KeepAlive += 1 - } + //if (*hc.tuns)[rport].KeepAlive > 50000 { + // (*hc.tuns)[rport].Died = true + // logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") + //} else { + // (*hc.tuns)[rport].KeepAlive += 1 + //} } logger.LogDebug("[ServerTun] worker A: exiting") From 1d4c16dd766bdec3dd4a3a8b78a7f8a3f51c1433 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 22 Jun 2019 00:44:23 -0700 Subject: [PATCH 016/134] Moved server keepalive ageing for tunnels to goroutine -- fix for premature tunnel collapses --- hkexnet/hkexnet.go | 10 +++++++--- hkexnet/hkextun.go | 30 ++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 66c2adb..21da20f 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -75,8 +75,9 @@ type ( c *net.Conn // which also implements io.Reader, io.Writer, ... immClose bool - logCipherText bool // somewhat expensive, for debugging - logPlainText bool // INSECURE and somewhat expensive, for debugging + logCipherText bool // somewhat expensive, for debugging + logPlainText bool // INSECURE and somewhat expensive, for debugging + logTunActivity bool cipheropts uint32 // post-KEx cipher/hmac options opts uint32 // post-KEx protocol options (caller-defined) @@ -1112,8 +1113,11 @@ func (hc Conn) Read(b []byte) (n int, err error) { rport := binary.BigEndian.Uint16(payloadBytes[2:4]) //fmt.Printf("[Got CSOTunData: [lport %d:rport %d] data:%v\n", lport, rport, payloadBytes[4:]) if _, ok := (*hc.tuns)[rport]; ok { - logger.LogDebug(fmt.Sprintf("[Writing data to rport [%d:%d]", lport, rport)) + if hc.logTunActivity { + logger.LogDebug(fmt.Sprintf("[Writing data to rport [%d:%d]", lport, rport)) + } (*hc.tuns)[rport].Data <- payloadBytes[4:] + (*hc.tuns)[rport].KeepAlive = 0 } else { logger.LogDebug(fmt.Sprintf("[Attempt to write data to closed tun [%d:%d]", lport, rport)) } diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index da22882..6503c3f 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -244,6 +244,24 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { go func() { var wg sync.WaitGroup + // + // worker to age server tunnel and kill it if keepalives + // stop from client + // + wg.Add(1) + go func() { + defer wg.Done() + for { + time.Sleep(100 * time.Millisecond) + (*hc.tuns)[rport].KeepAlive += 1 + if (*hc.tuns)[rport].KeepAlive > 25 { + (*hc.tuns)[rport].Died = true + logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") + break + } + } + }() + for cmd := range (*hc.tuns)[rport].Ctl { var c net.Conn logger.LogDebug(fmt.Sprintf("[ServerTun] got Ctl '%c'.", cmd)) @@ -330,12 +348,12 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { hc.WritePacket(rBuf[:n+4], CSOTunData) } - if (*hc.tuns)[rport].KeepAlive > 50 { - (*hc.tuns)[rport].Died = true - logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") - } else { - (*hc.tuns)[rport].KeepAlive += 1 - } + //if (*hc.tuns)[rport].KeepAlive > 50000 { + // (*hc.tuns)[rport].Died = true + // logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") + //} else { + // (*hc.tuns)[rport].KeepAlive += 1 + //} } logger.LogDebug("[ServerTun] worker A: exiting") From c327b2ec7250c9d4626f2940f7a8debbecb571b4 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 27 Jun 2019 01:19:52 -0700 Subject: [PATCH 017/134] Fixed tun reuse hang/error after closure Signed-off-by: Russ Magee --- hkexnet/hkextun.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index 6503c3f..87ef049 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -157,6 +157,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } else if strings.Contains(e.Error(), "i/o timeout") { if (*hc.tuns)[rport].Died { @@ -165,6 +166,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } } else { @@ -177,6 +179,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } } @@ -253,6 +256,10 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { defer wg.Done() for { time.Sleep(100 * time.Millisecond) + if (*hc.tuns)[rport] == nil { + logger.LogDebug("[ServerTun] worker A: Client endpoint removed.") + break + } (*hc.tuns)[rport].KeepAlive += 1 if (*hc.tuns)[rport].KeepAlive > 25 { (*hc.tuns)[rport].Died = true @@ -320,6 +327,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } else if strings.Contains(e.Error(), "i/o timeout") { if (*hc.tuns)[rport].Died { @@ -328,6 +336,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } } else { @@ -340,6 +349,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { close((*hc.tuns)[rport].Data) (*hc.tuns)[rport].Data = nil } + delete((*hc.tuns), rport) break } } From 8f5366fff44f69dcb7b6e23f6efec8886cac3d4f Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 27 Jun 2019 22:10:59 -0700 Subject: [PATCH 018/134] Added locking APIs for most Conn/Tun fields, save <- Data/ShutdownTun() race Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 20 +++++--- hkexnet/hkextun.go | 111 +++++++++++++++++++++++---------------------- 2 files changed, 70 insertions(+), 61 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 21da20f..852d8c5 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -122,6 +122,14 @@ func Init(d bool, c string, f logger.Priority) { _initLogging(d, c, f) } +func (hc *Conn) Lock() { + hc.m.Lock() +} + +func (hc *Conn) Unlock() { + hc.m.Unlock() +} + func (hc Conn) GetStatus() CSOType { return *hc.closeStat } @@ -1084,7 +1092,7 @@ func (hc Conn) Read(b []byte) (n int, err error) { rport := binary.BigEndian.Uint16(payloadBytes[2:4]) logger.LogDebug(fmt.Sprintf("[Client] Got CSOTunRefused [%d:%d]", lport, rport)) if _, ok := (*hc.tuns)[rport]; ok { - (*hc.tuns)[rport].Died = true + hc.MarkTunDead(rport) } else { logger.LogDebug(fmt.Sprintf("[Client] CSOTunRefused on already-closed tun [%d:%d]", lport, rport)) } @@ -1094,7 +1102,7 @@ func (hc Conn) Read(b []byte) (n int, err error) { rport := binary.BigEndian.Uint16(payloadBytes[2:4]) logger.LogDebug(fmt.Sprintf("[Client] Got CSOTunDisconn [%d:%d]", lport, rport)) if _, ok := (*hc.tuns)[rport]; ok { - (*hc.tuns)[rport].Died = true + hc.MarkTunDead(rport) } else { logger.LogDebug(fmt.Sprintf("[Client] CSOTunDisconn on already-closed tun [%d:%d]", lport, rport)) } @@ -1104,7 +1112,7 @@ func (hc Conn) Read(b []byte) (n int, err error) { rport := binary.BigEndian.Uint16(payloadBytes[2:4]) logger.LogDebug(fmt.Sprintf("[Server] Got CSOTunHangup [%d:%d]", lport, rport)) if _, ok := (*hc.tuns)[rport]; ok { - (*hc.tuns)[rport].Died = true + hc.MarkTunDead(rport) } else { logger.LogDebug(fmt.Sprintf("[Server] CSOTunHangup to already-closed tun [%d:%d]", lport, rport)) } @@ -1117,7 +1125,7 @@ func (hc Conn) Read(b []byte) (n int, err error) { logger.LogDebug(fmt.Sprintf("[Writing data to rport [%d:%d]", lport, rport)) } (*hc.tuns)[rport].Data <- payloadBytes[4:] - (*hc.tuns)[rport].KeepAlive = 0 + hc.ResetTunnelAge(rport) } else { logger.LogDebug(fmt.Sprintf("[Attempt to write data to closed tun [%d:%d]", lport, rport)) } @@ -1212,7 +1220,7 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { // // Would be nice to determine if the mutex scope // could be tightened. - hc.m.Lock() + hc.Lock() payloadLen = uint32(len(b)) //!fmt.Printf(" --== payloadLen:%d\n", payloadLen) if hc.logPlainText { @@ -1254,7 +1262,7 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { } else { //fmt.Println("[a]WriteError!") } - hc.m.Unlock() + hc.Unlock() if err != nil { log.Println(err) diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index 87ef049..38fbd0f 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -16,6 +16,7 @@ import ( "net" "strings" "sync" + "sync/atomic" "time" "blitter.com/go/hkexsh/logger" @@ -46,7 +47,7 @@ type ( Lport uint16 // ... ie., RPort is on server, LPort is on client Peer string //net.Addr Died bool // set by client upon receipt of a CSOTunDisconn - KeepAlive uint // must be reset by client to keep server dial() alive + KeepAlive uint32 // must be reset by client to keep server dial() alive Ctl chan rune //See TunCtl_* consts Data chan []byte } @@ -67,6 +68,8 @@ func (hc *Conn) CollapseAllTunnels(client bool) { } func (hc *Conn) InitTunEndpoint(lp uint16, p string /* net.Addr */, rp uint16) { + hc.Lock() + defer hc.Unlock() if (*hc.tuns) == nil { (*hc.tuns) = make(map[uint16]*TunEndpoint) } @@ -87,6 +90,7 @@ func (hc *Conn) InitTunEndpoint(lp uint16, p string /* net.Addr */, rp uint16) { // data channel removed on closure. Re-create it (*hc.tuns)[rp].Data = make(chan []byte, 1) } + (*hc.tuns)[rp].KeepAlive = 0 (*hc.tuns)[rp].Died = false } return @@ -149,37 +153,23 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { if e == io.EOF { logger.LogDebug(fmt.Sprintf("[ClientTun] worker A: lport Disconnected: shutting down tunnel %v", (*hc.tuns)[rport])) // if Died was already set, server-side already is gone. - if !(*hc.tuns)[rport].Died { + if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunHangup) } - (*hc.tuns)[rport].Died = true - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) break } else if strings.Contains(e.Error(), "i/o timeout") { - if (*hc.tuns)[rport].Died { + if !hc.TunIsAlive(rport) { logger.LogDebug(fmt.Sprintf("[ClientTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) break } } else { logger.LogDebug(fmt.Sprintf("[ClientTun] worker A: Read error from lport of tun %v\n%s", (*hc.tuns)[rport], e)) - if !(*hc.tuns)[rport].Died { + if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunHangup) } - (*hc.tuns)[rport].Died = true - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) break } } @@ -232,7 +222,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { // When both workers have exited due to a disconnect or other // condition, it's safe to remove the tunnel descriptor. logger.LogDebug("[ClientTun] workers exited") - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) } // end for-accept } // end Listen() block } @@ -240,6 +230,39 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { }() } +func (hc *Conn) AgeTunnel(endp uint16) uint32 { + return atomic.AddUint32(&(*hc.tuns)[endp].KeepAlive, 1) +} + +func (hc *Conn) ResetTunnelAge(endp uint16) { + atomic.StoreUint32(&(*hc.tuns)[endp].KeepAlive, 0) +} + +func (hc *Conn) TunIsAlive(endp uint16) bool { + hc.Lock() + defer hc.Unlock() + return !(*hc.tuns)[endp].Died +} + +func (hc *Conn) MarkTunDead(endp uint16) { + hc.Lock() + defer hc.Unlock() + (*hc.tuns)[endp].Died = true +} + +func (hc *Conn) ShutdownTun(endp uint16) { + hc.Lock() + defer hc.Unlock() + if (*hc.tuns)[endp] != nil { + (*hc.tuns)[endp].Died = true + if (*hc.tuns)[endp].Data != nil { + close((*hc.tuns)[endp].Data) + (*hc.tuns)[endp].Data = nil + } + } + delete((*hc.tuns), endp) +} + func (hc *Conn) StartServerTunnel(lport, rport uint16) { hc.InitTunEndpoint(lport, "", rport) var err error @@ -260,9 +283,9 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { logger.LogDebug("[ServerTun] worker A: Client endpoint removed.") break } - (*hc.tuns)[rport].KeepAlive += 1 - if (*hc.tuns)[rport].KeepAlive > 25 { - (*hc.tuns)[rport].Died = true + age := hc.AgeTunnel(rport) + if age > 25 { + hc.MarkTunDead(rport) logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") break } @@ -319,37 +342,23 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { if e != nil { if e == io.EOF { logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: rport Disconnected: shutting down tunnel %v", (*hc.tuns)[rport])) - if !(*hc.tuns)[rport].Died { + if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunDisconn) } - (*hc.tuns)[rport].Died = true - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) break } else if strings.Contains(e.Error(), "i/o timeout") { - if (*hc.tuns)[rport].Died { - logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + if !hc.TunIsAlive(rport) { + logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) + hc.ShutdownTun(rport) break } } else { logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: Read error from rport of tun %v: %s", (*hc.tuns)[rport], e)) - if !(*hc.tuns)[rport].Died { + if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunDisconn) } - (*hc.tuns)[rport].Died = true - if (*hc.tuns)[rport].Data != nil { - close((*hc.tuns)[rport].Data) - (*hc.tuns)[rport].Data = nil - } - delete((*hc.tuns), rport) + hc.ShutdownTun(rport) break } } @@ -357,14 +366,6 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { rBuf = append(tunDst.Bytes(), rBuf[:n]...) hc.WritePacket(rBuf[:n+4], CSOTunData) } - - //if (*hc.tuns)[rport].KeepAlive > 50000 { - // (*hc.tuns)[rport].Died = true - // logger.LogDebug("[ServerTun] worker A: Client died, hanging up.") - //} else { - // (*hc.tuns)[rport].KeepAlive += 1 - //} - } logger.LogDebug("[ServerTun] worker A: exiting") }() @@ -382,7 +383,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { logger.LogDebug("[ServerTun] worker B: starting") for { - rData, ok := <-(*hc.tuns)[rport].Data + rData, ok := <-(*hc.tuns)[rport].Data // FIXME: race w/ShutdownTun() calls if ok { c.SetWriteDeadline(time.Now().Add(200 * time.Millisecond)) _, e := c.Write(rData) From 78b2006af6d5a8d46aa18c640423ccd35b1ace7e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 27 Jun 2019 22:28:53 -0700 Subject: [PATCH 019/134] gofmt Signed-off-by: Russ Magee --- hkexnet/hkextun.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index 38fbd0f..1f1133c 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -349,8 +349,8 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { break } else if strings.Contains(e.Error(), "i/o timeout") { if !hc.TunIsAlive(rport) { - logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) - hc.ShutdownTun(rport) + logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) + hc.ShutdownTun(rport) break } } else { From 3a720cfb8e3f9e755d794c2759f262a050bd96e3 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 28 Jun 2019 22:50:58 -0700 Subject: [PATCH 020/134] More race cleanup, (hc.tuns).Data/ShutdownTun() races A,B,C still remain. Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 6 ++++-- hkexnet/hkextun.go | 32 +++++++++++++++++++++----------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 852d8c5..91d8c4e 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -123,11 +123,11 @@ func Init(d bool, c string, f logger.Priority) { } func (hc *Conn) Lock() { - hc.m.Lock() + hc.m.Lock() } func (hc *Conn) Unlock() { - hc.m.Unlock() + hc.m.Unlock() } func (hc Conn) GetStatus() CSOType { @@ -1136,7 +1136,9 @@ func (hc Conn) Read(b []byte) (n int, err error) { _ = binary.BigEndian.Uint16(payloadBytes[0:2]) //logger.LogDebug(fmt.Sprintf("[Server] Got CSOTunKeepAlive")) for _, t := range *hc.tuns { + hc.Lock() t.KeepAlive = 0 + hc.Unlock() } } else if ctrlStatOp == CSONone { hc.dBuf.Write(payloadBytes) diff --git a/hkexnet/hkextun.go b/hkexnet/hkextun.go index 1f1133c..2709aa2 100644 --- a/hkexnet/hkextun.go +++ b/hkexnet/hkextun.go @@ -16,7 +16,6 @@ import ( "net" "strings" "sync" - "sync/atomic" "time" "blitter.com/go/hkexsh/logger" @@ -156,7 +155,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunHangup) } - hc.ShutdownTun(rport) + hc.ShutdownTun(rport) // FIXME: race-C break } else if strings.Contains(e.Error(), "i/o timeout") { if !hc.TunIsAlive(rport) { @@ -200,7 +199,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { logger.LogDebug("[ClientTun] worker B: starting") for { - bytes, ok := <-(*hc.tuns)[rport].Data + bytes, ok := <-(*hc.tuns)[rport].Data // FIXME: race-C w/ShutdownTun calls if ok { c.SetWriteDeadline(time.Now().Add(200 * time.Millisecond)) _, e := c.Write(bytes) @@ -231,11 +230,22 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { } func (hc *Conn) AgeTunnel(endp uint16) uint32 { - return atomic.AddUint32(&(*hc.tuns)[endp].KeepAlive, 1) + hc.Lock() + defer hc.Unlock() + (*hc.tuns)[endp].KeepAlive += 1 + return (*hc.tuns)[endp].KeepAlive } func (hc *Conn) ResetTunnelAge(endp uint16) { - atomic.StoreUint32(&(*hc.tuns)[endp].KeepAlive, 0) + hc.Lock() + defer hc.Unlock() + (*hc.tuns)[endp].KeepAlive = 0 +} + +func (hc *Conn) TunIsNil(endp uint16) bool { + hc.Lock() + defer hc.Unlock() + return (*hc.tuns)[endp] == nil } func (hc *Conn) TunIsAlive(endp uint16) bool { @@ -279,7 +289,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { defer wg.Done() for { time.Sleep(100 * time.Millisecond) - if (*hc.tuns)[rport] == nil { + if hc.TunIsNil(rport) { logger.LogDebug("[ServerTun] worker A: Client endpoint removed.") break } @@ -297,7 +307,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { logger.LogDebug(fmt.Sprintf("[ServerTun] got Ctl '%c'.", cmd)) if cmd == 'd' { // if re-using tunnel, re-init it - if (*hc.tuns)[rport] == nil { + if hc.TunIsNil(rport) { hc.InitTunEndpoint(lport, "", rport) } logger.LogDebug("[ServerTun] dialling...") @@ -345,12 +355,12 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunDisconn) } - hc.ShutdownTun(rport) + hc.ShutdownTun(rport) // FIXME: race-A break } else if strings.Contains(e.Error(), "i/o timeout") { if !hc.TunIsAlive(rport) { logger.LogDebug(fmt.Sprintf("[ServerTun] worker A: timeout: Server side died, hanging up %v", (*hc.tuns)[rport])) - hc.ShutdownTun(rport) + hc.ShutdownTun(rport) // FIXME: race-B break } } else { @@ -358,7 +368,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { if hc.TunIsAlive(rport) { hc.WritePacket(tunDst.Bytes(), CSOTunDisconn) } - hc.ShutdownTun(rport) + hc.ShutdownTun(rport) // FIXME: race-C break } } @@ -383,7 +393,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { logger.LogDebug("[ServerTun] worker B: starting") for { - rData, ok := <-(*hc.tuns)[rport].Data // FIXME: race w/ShutdownTun() calls + rData, ok := <-(*hc.tuns)[rport].Data // FIXME: race-A, race-B, race-C (w/ShutdownTun() calls) if ok { c.SetWriteDeadline(time.Now().Add(200 * time.Millisecond)) _, e := c.Write(rData) From 825429003ba66338d7971eac5a69e08611397838 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 3 Jul 2019 09:50:37 -0700 Subject: [PATCH 021/134] Added enforcement of min/max vals for chaff freq, bytesize Made HerraduraKEx 512 default KEx (was HerraduraKEx 256) Signed-off-by: Russ Magee --- hkexsh/hkexsh.go | 13 ++++++++++++- hkexshd/hkexshd.go | 11 +++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 509b341..72d2707 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -620,7 +620,7 @@ func main() { flag.BoolVar(&dbg, "d", false, "debug logging") flag.StringVar(&cipherAlg, "c", "C_AES_256", "`cipher` [\"C_AES_256\" | \"C_TWOFISH_128\" | \"C_BLOWFISH_64\" | \"C_CRYPTMT1\"]") flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\" | \"H_SHA512\"]") - flag.StringVar(&kexAlg, "k", "KEX_HERRADURA256", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") + flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") flag.UintVar(&port, "p", 2000, "`port`") //flag.StringVar(&authCookie, "a", "", "auth cookie") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") @@ -764,6 +764,17 @@ func main() { } } + // Enforce some sane min/max vals on chaff flags + if chaffFreqMin < 2 { + chaffFreqMin = 2 + } + if chaffFreqMax == 0 { + chaffFreqMax = chaffFreqMin + 1 + } + if chaffBytesMax == 0 || chaffBytesMax > 4096 { + chaffBytesMax = 64 + } + if shellMode { // We must make the decision about interactivity before Dial() // as it affects chaffing behaviour. 20180805 diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 4ee07d8..953ec24 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -406,6 +406,17 @@ func main() { } } + // Enforce some sane min/max vals on chaff flags + if chaffFreqMin < 2 { + chaffFreqMin = 2 + } + if chaffFreqMax == 0 { + chaffFreqMax = chaffFreqMin + 1 + } + if chaffBytesMax == 0 || chaffBytesMax > 4096 { + chaffBytesMax = 64 + } + Log, _ = logger.New(logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR, "hkexshd") // nolint: gosec hkexnet.Init(dbg, "hkexshd", logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR) if dbg { From 9e885d5bd724e520b334b165906fc9e822079a12 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 3 Jul 2019 09:56:53 -0700 Subject: [PATCH 022/134] Bumped version in consts.go Signed-off-by: Russ Magee --- consts.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consts.go b/consts.go index b65c4a9..dc3608b 100644 --- a/consts.go +++ b/consts.go @@ -10,4 +10,4 @@ package hkexsh // common constants for the HKExSh // Version string returned by tools -const Version = "0.8.1 (NO WARRANTY)" +const Version = "0.8.3 (NO WARRANTY)" From 1aa8a1549bf6713926a7a3f1586b8c5a40107c3c Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 4 Jul 2019 20:27:49 -0700 Subject: [PATCH 023/134] Used fixed goutmp pty logging Signed-off-by: Russ Magee --- hkexnet/consts.go | 11 ++++++----- hkexshd/hkexshd.go | 37 ++++++++++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/hkexnet/consts.go b/hkexnet/consts.go index 176b82f..0916090 100644 --- a/hkexnet/consts.go +++ b/hkexnet/consts.go @@ -37,11 +37,12 @@ type KEXAlg uint8 // Extended exit status codes - indicate comm/pty issues // rather than remote end normal UNIX exit codes const ( - CSENone = 1024 + iota - CSETruncCSO // No CSOExitStatus in payload - CSEStillOpen // Channel closed unexpectedly - CSEExecFail // cmd.Start() (exec) failed - CSEPtyExecFail // pty.Start() (exec w/pty) failed + CSENone = 1024 + iota + CSETruncCSO // No CSOExitStatus in payload + CSEStillOpen // Channel closed unexpectedly + CSEExecFail // cmd.Start() (exec) failed + CSEPtyExecFail // pty.Start() (exec w/pty) failed + CSEPtyGetNameFail // failed to obtain pty name ) // Extended (>255 UNIX exit status) codes diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 953ec24..6584740 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -25,6 +25,7 @@ import ( "path" "sync" "syscall" + "unsafe" "blitter.com/go/goutmp" hkexsh "blitter.com/go/hkexsh" @@ -38,6 +39,22 @@ var ( Log *logger.Writer ) +func ioctl(fd, request, argp uintptr) error { + if _, _, e := syscall.Syscall6(syscall.SYS_IOCTL, fd, request, argp, 0, 0, 0); e != 0 { + return e + } + return nil +} + +func ptsName(fd uintptr) (string, error) { + var n uintptr + err := ioctl(fd, syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) + if err != nil { + return "", err + } + return fmt.Sprintf("/dev/pts/%d", n), nil +} + /* -------------------------------------------------------------- */ // Perform a client->server copy func runClientToServerCopyAs(who, ttype string, conn *hkexnet.Conn, fpath string, chaffing bool) (exitStatus uint32, err error) { @@ -230,7 +247,7 @@ func runServerToClientCopyAs(who, ttype string, conn *hkexnet.Conn, srcPath stri // // Uses ptys to support commands which expect a terminal. // nolint: gocyclo -func runShellAs(who, ttype string, cmd string, interactive bool, conn *hkexnet.Conn, chaffing bool) (exitStatus uint32, err error) { +func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.Conn, chaffing bool) (exitStatus uint32, err error) { var wg sync.WaitGroup u, err := user.Lookup(who) if err != nil { @@ -279,6 +296,15 @@ func runShellAs(who, ttype string, cmd string, interactive bool, conn *hkexnet.C // #gv:s/label=\"runShellAs\$1\"/label=\"deferPtmxClose\"/ defer func() { _ = ptmx.Close() }() // nolint: gosec + // get pty info for system accounting (who, lastlog) + pts, pe := ptsName(ptmx.Fd()) + if pe != nil { + return hkexnet.CSEPtyGetNameFail, err + } + utmpx := goutmp.Put_utmp(who, pts, hname) + defer func() { goutmp.Unput_utmp(utmpx) }() + goutmp.Put_lastlog_entry("hkexsh", who, pts, hname) + log.Printf("[%s]\n", cmd) if err != nil { log.Printf("Command finished with error: %v", err) @@ -571,7 +597,7 @@ func main() { logger.LogNotice(fmt.Sprintf("[Generating autologin token for [%s@%s]]\n", rec.Who(), hname)) // nolint: gosec,errcheck token := GenAuthToken(string(rec.Who()), string(rec.ConnHost())) tokenCmd := fmt.Sprintf("echo \"%s\" | tee -a ~/.hkexsh_id", token) - cmdStatus, runErr := runShellAs(string(rec.Who()), string(rec.TermType()), tokenCmd, false, hc, chaffEnabled) + cmdStatus, runErr := runShellAs(string(rec.Who()), hname, string(rec.TermType()), tokenCmd, false, hc, chaffEnabled) // Returned hopefully via an EOF or exit/logout; // Clear current op so user can enter next, or EOF rec.SetOp([]byte{0}) @@ -586,7 +612,7 @@ func main() { addr := hc.RemoteAddr() hname := goutmp.GetHost(addr.String()) logger.LogNotice(fmt.Sprintf("[Running command for [%s@%s]]\n", rec.Who(), hname)) // nolint: gosec,errcheck - cmdStatus, runErr := runShellAs(string(rec.Who()), string(rec.TermType()), string(rec.Cmd()), false, hc, chaffEnabled) + cmdStatus, runErr := runShellAs(string(rec.Who()), hname, string(rec.TermType()), string(rec.Cmd()), false, hc, chaffEnabled) // Returned hopefully via an EOF or exit/logout; // Clear current op so user can enter next, or EOF rec.SetOp([]byte{0}) @@ -602,10 +628,7 @@ func main() { hname := goutmp.GetHost(addr.String()) logger.LogNotice(fmt.Sprintf("[Running shell for [%s@%s]]\n", rec.Who(), hname)) // nolint: gosec,errcheck - utmpx := goutmp.Put_utmp(string(rec.Who()), hname) - defer func() { goutmp.Unput_utmp(utmpx) }() - goutmp.Put_lastlog_entry("hkexsh", string(rec.Who()), hname) - cmdStatus, runErr := runShellAs(string(rec.Who()), string(rec.TermType()), string(rec.Cmd()), true, hc, chaffEnabled) + cmdStatus, runErr := runShellAs(string(rec.Who()), hname, string(rec.TermType()), string(rec.Cmd()), true, hc, chaffEnabled) // Returned hopefully via an EOF or exit/logout; // Clear current op so user can enter next, or EOF rec.SetOp([]byte{0}) From b8d32ed8823f5832ffcb6c67c5beeb68adbdf529 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 4 Jul 2019 21:20:02 -0700 Subject: [PATCH 024/134] Bumped goutmp -> 1.0.1 Signed-off-by: Russ Magee --- consts.go | 2 +- go.mod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/consts.go b/consts.go index dc3608b..527d952 100644 --- a/consts.go +++ b/consts.go @@ -10,4 +10,4 @@ package hkexsh // common constants for the HKExSh // Version string returned by tools -const Version = "0.8.3 (NO WARRANTY)" +const Version = "0.8.4 (NO WARRANTY)" diff --git a/go.mod b/go.mod index a45ad3d..6b9f669 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( blitter.com/go/cryptmt v1.0.0 - blitter.com/go/goutmp v1.0.0 + blitter.com/go/goutmp v1.0.1 blitter.com/go/herradurakex v1.0.0 blitter.com/go/mtwist v1.0.0 // indirect git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 // indirect From 4648188bdc113b2ce3a3ab10682c45e331ef5197 Mon Sep 17 00:00:00 2001 From: Russtopia Date: Fri, 5 Jul 2019 23:56:18 -0700 Subject: [PATCH 025/134] Updated README.md --- README.md | 65 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 26e40f4..7a8852c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![GoDoc](https://godoc.org/blitter.com/go/hkexsh?status.svg)](https://godoc.org/blitter.com/go/hkexsh) -HKExSh +# HKExSh -- HKExSh (**H**erradura**K**yber**Ex** **Sh**ell) is a golang implementation of a simple @@ -19,6 +19,7 @@ and the net.Conn type), which automatically negotiate keying material for secure sockets using one of a selectable set of experimental key exchange (KEX) or key encapsulation mechanisms (KEM). +### Key Exchange Currently supported exchanges are: * The HerraduraKEx key exchange algorithm first released at @@ -40,16 +41,20 @@ Currently supported session algorithms: * HMAC-SHA512 +### Conn Calls to hkexnet.Dial() and hkexnet.Listen()/Accept() are generally the same as calls to the equivalents within the _net_ package; however upon connection a key exchange automatically occurs whereby client and server independently derive the same keying material, and all following traffic is secured by a symmetric encryption algorithm. -Above the hkexnet.Conn layer, the server and client apps in this repository (hkexshd/ and hkexsh/ respectively) negotiate session settings (cipher/hmac algorithms, interactive/non-interactive, tunnels, if any, etc.) to be used for communication. +### Session Negotiation +Above the hkexnet.Conn layer, the server and client apps in this repository (hkexshd/ and hkexsh/ respectively) negotiate session settings (cipher/hmac algorithms, interactive/non-interactive mode, tunnel specifiers, etc.) to be used for communication. -Packets are subject to random padding (size, prefix/postfix), and (optionally) the client and server -channels can both send _chaff_ packets at random defineable intervals to help thwart analysis of session activity (applicable to interactive and non-interactive command sessions, file copies and tunnels). +### Padding and Chaffing +Packets are subject to padding (random size, randomly applied as prefix or postfix), and optionally the client and server channels can both send _chaff_ packets at random defineable intervals to help thwart analysis of session activity (applicable to interactive and non-interactive command sessions, file copies and tunnels). -Tunnels, if specified, are set up during initial client->server connection. Packets from the client local port(s) are sent through the main secured connection to the server's remote port(s), and vice versa, tagged with a tunnel specifier so that they can be de-multiplexed and delivered to the proper tunnel endpoints. +### Mux/Demux of Chaffing and Tunnel Data +Chaffing and tunnels, if specified, are set up during initial client->server connection. Packets from the client local port(s) are sent through the main secured connection to the server's remote port(s), and vice versa, tagged with a chaff or tunnel specifier so that they can be discarded as chaff or de-multiplexed and delivered to the proper tunnel endpoints, respectively. -Finally, within the hkexpasswd/ directory is a password-setting utility. HKExSh uses its own passwd file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. +### Accounts and Passwords +Within the hkexpasswd/ directory is a password-setting utility. HKExSh uses its own password file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. This is currently done to allow alternate login credentials via hkexsh vs. console/ssh login, due to the experimental nature of the program. At some point in the future an option to use the system's /etc/passwd and /etc/shadow may be implemented, making the use of the auxilliary hkexpasswd utility optional or obsolete. HERRADURA KEX @@ -65,51 +70,51 @@ KYBER IND-CCA-2 KEM As of this time (Oct 2018) Kyber is one of the candidate algorithms submitted to the [NIST post-quantum cryptography project](https://csrc.nist.gov/Projects/Post-Quantum-Cryptography). The authors recommend using it in "... so-called hybrid mode in combination with established "pre-quantum" security; for example in combination with elliptic-curve Diffie-Hellman." THIS PROJECT DOES NOT DO THIS (in case you didn't notice yet, THIS PROJECT IS EXPERIMENTAL.) -Dependencies: --- -* Recent version of go (tested, at various times, with go-1.9 to go-1.11.1) +### Dependencies: + +* Recent version of go (tested, at various times, with go-1.9 to go-1.12.4) * [github.com/mattn/go-isatty](http://github.com/mattn/go-isatty) //terminal tty detection * [github.com/kr/pty](http://github.com/kr/pty) //unix pty control (server pty connections) * [github.com/jameskeane/bcrypt](http://github.com/jameskeane/bcrypt) //password storage/auth -* [blitter.com/go/goutmp](https://gogs.blitter.com/RLabs/goutmp) // wtmp/lastlog C bindings +* [blitter.com/go/goutmp](https://gogs.blitter.com/RLabs/goutmp) // wtmp/lastlog C bindings for user accounting * [https://git.schwanenlied.me/yawning/kyber](https://git.schwanenlied.me/yawning/kyber) // golang Kyber KEM * [https://git.schwanenlied.me/yawning/newhope](https://git.schwanenlied.me/yawning/newhope) // golang NEWHOPE,NEWHOPE-SIMPLE KEX * [blitter.com/go/mtwist](https://gogs.blitter.com/RLabs/mtwist) // 64-bit Mersenne Twister PRNG * [blitter.com/go/cryptmt](https://gogs.blitter.com/RLabs/cryptmt) // CryptMTv1 stream cipher -Get source code --- +### Get source code + * $ go get -u blitter.com/go/hkexsh * $ cd $GOPATH/src/blitter.com/go/hkexsh * $ go build ./... # install all dependent go pkgs -To build --- +### To build + * $ cd $GOPATH/src/blitter.com/go/hkexsh * $ make clean all -To install, uninstall, re-install --- +### To install, uninstall, re-install + * $ sudo make [install | uninstall | reinstall] -To manage service (assuming openrc init) --- +### To manage service (assuming openrc init) + * $ sudo rc-config [start | restart | stop] hkexshd An example init script (hkexshd.initrc) is provided. Consult your Linux distribution documentation for proper service/daemon installation. Default assumes installation in /usr/local/sbin (hkexshd, hkexpasswd) and /usr/local/bin (hkexsh/hkexcp symlink). -To set accounts & passwords: --- +### To set accounts & passwords: + * $ sudo touch /etc/hkexsh.passwd * $ sudo hkexpasswd/hkexpasswd -u joebloggs * $ <enter a password, enter again to confirm> -Testing Client and Server from $GOPATH dev tree (w/o 'make install') --- +### Testing Client and Server from $GOPATH dev tree (w/o 'make install') + In separate shells A and B: * [A]$ cd hkexshd && sudo ./hkexshd & # add -d for debugging @@ -126,15 +131,15 @@ NOTE if running client (hkexsh) with -d, one will likely need to run 'reset' aft to fix up the shell tty afterwards, as stty echo may not be restored if client crashes or is interrupted. -Setting up an 'authtoken' for scripted (password-free) logins --- +### Setting up an 'authtoken' for scripted (password-free) logins + Use the -g option of hkexsh to request a token from the remote server, which will return a hostname:token string. Place this string into $HOME/.hkexsh_id to allow logins without entering a password (obviously, $HOME/.hkexsh_id on both server and client for the user should *not* be world-readable.) -File Copying using hkexcp --- +### File Copying using hkexcp + hkexcp is a symlink to hkexsh, and the binary checks its own filename to determine whether it is being invoked in 'shell' or 'copy' mode. Refer to the '-h' output for differences in accepted options. @@ -150,18 +155,18 @@ Local (client) to remote (server) copy: Remote (server) to local (client) copy: * hkexcp joebloggs@host-or-ip:/remoteDirOrFile /some/where/local/Dir +hkexcp uses a 'tarpipe' to send file data over the encrypted channel. Use the -d flag on client or server to see the generated tar commands if you're curious. + NOTE: Renaming while copying (eg., 'cp /foo/bar/fileA ./fileB') is NOT supported. Put another way, the destination (whether local or remote) must ALWAYS be a directory. -hkexcp uses tar (a 'tarpipe') with gzip compression, sending tar data over the hkex encrypted channel. Use the -d flag on client or server to see the generated tar commands if you're curious. +### Tunnels -Tunnels --- Simple tunnels (client -> server, no reverse tunnels for now) are supported. Syntax: hkexsh -T=<tunspec>{,<tunspec>...} .. where <tunspec> is <localport:remoteport> -Example, tunnelling ssh through hkexsh (NOTE [issue #15](https://blitter.com:3000/RLabs/hkexsh/issues/15)) +Example, tunnelling ssh through hkexsh * [server side] $ sudo /usr/sbin/sshd -p 7002 * [client side, term A] $ hkexsh -T=6002:7002 user@server From f5480553dfbde4e640f0b413ee8fe4d5c38b7613 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 10 Jul 2019 01:11:23 -0700 Subject: [PATCH 026/134] Random jitter to tun keepalive timing Signed-off-by: Russ Magee --- hkexsh/hkexsh.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 72d2707..9e177da 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -16,6 +16,7 @@ import ( "io" "io/ioutil" "log" + "math/rand" "net" "os" "os/exec" @@ -888,13 +889,21 @@ func main() { // Keepalive for any tunnels that may exist // #gv:s/label=\"main\$1\"/label=\"tunKeepAlive\"/ // TODO:.gv:main:1:tunKeepAlive + //[1]: better to always send tunnel keepAlives even if client didn't specify + // any, to prevent listeners from knowing this. + //[1] if tunSpecStr != "" { keepAliveWorker := func() { for { - time.Sleep(time.Duration(2) * time.Second) + // Add a bit of jitter to keepAlive so it doesn't stand out quite as much + time.Sleep(time.Duration(2000-rand.Intn(200)) * time.Millisecond) + // FIXME: keepAlives should probably have small random packet len/data as well + // to further obscure them vs. interactive or tunnel data + // ** Min pkt len is 2 due to hkex.Conn.WritePacket() padding logic? I forget. conn.WritePacket([]byte{0, 0}, hkexnet.CSOTunKeepAlive) // nolint: errcheck,gosec } } go keepAliveWorker() + //[1]} if shellMode { launchTuns(&conn, remoteHost, tunSpecStr) From 2087aab2d588041331390bf0b29b82359be12086 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 10 Jul 2019 20:44:02 -0700 Subject: [PATCH 027/134] Minor cleanup to keepalive timing jitter comments --- hkexsh/hkexsh.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 9e177da..c1c58db 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -898,7 +898,7 @@ func main() { time.Sleep(time.Duration(2000-rand.Intn(200)) * time.Millisecond) // FIXME: keepAlives should probably have small random packet len/data as well // to further obscure them vs. interactive or tunnel data - // ** Min pkt len is 2 due to hkex.Conn.WritePacket() padding logic? I forget. + // keepAlives must be >=2 bytes, due to processing elsewhere conn.WritePacket([]byte{0, 0}, hkexnet.CSOTunKeepAlive) // nolint: errcheck,gosec } } From 06854f7a03fb3aa7d0a584d0c05f0d8b27304823 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 11 Jul 2019 10:12:38 -0700 Subject: [PATCH 028/134] Added make-controlled version, gitCommit (thanks to https://preslav.me/2019/07/09/adding-version-information-to-go-binaries/ --- Makefile | 15 +++++++++------ consts.go | 3 --- hkexpasswd/Makefile | 2 +- hkexpasswd/hkexpasswd.go | 12 ++++++++++++ hkexsh/Makefile | 1 + hkexsh/hkexsh.go | 6 ++++-- hkexshd/hkexshd.go | 7 ++++--- 7 files changed, 31 insertions(+), 15 deletions(-) diff --git a/Makefile b/Makefile index 84dc642..6bf12ab 100644 --- a/Makefile +++ b/Makefile @@ -4,8 +4,10 @@ MAKEOPTS = $(MAKEOPTS) #endif +GIT_COMMIT := $(shell git rev-list -1 HEAD) +VERSION := 0.8.4 #ifeq ($(BUILDOPTS),) - BUILDOPTS = $(BUILDOPTS) +BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif SUBPKGS = logger spinsult hkexnet @@ -24,27 +26,28 @@ clean: subpkgs: for d in $(SUBPKGS); do\ - $(MAKE) -C $$d all;\ + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C $$d all;\ done tools: for d in $(TOOLS); do\ - $(MAKE) -C $$d all;\ + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C $$d all;\ done common: + go build . go install . client: common - $(MAKE) -C hkexsh + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexsh ifeq ($(MSYSTEM),) ifneq ($(GOOS),windows) server: common - $(MAKE) -C hkexshd + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexshd else echo "Cross-build of hkexshd server for Windows not yet supported" endif @@ -55,7 +58,7 @@ endif passwd: common - $(MAKE) -C hkexpasswd + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexpasswd vis: @which go-callvis >/dev/null 2>&1; \ diff --git a/consts.go b/consts.go index 527d952..56d54c8 100644 --- a/consts.go +++ b/consts.go @@ -8,6 +8,3 @@ package hkexsh // common constants for the HKExSh - -// Version string returned by tools -const Version = "0.8.4 (NO WARRANTY)" diff --git a/hkexpasswd/Makefile b/hkexpasswd/Makefile index 8300059..0e3475f 100644 --- a/hkexpasswd/Makefile +++ b/hkexpasswd/Makefile @@ -4,7 +4,7 @@ EXTPKGS = bytes,errors,flag,fmt,internal,io,log,net,os,path,runtime,time,strings EXE = $(notdir $(shell pwd)) all: - go build . + go build $(BUILDOPTS) . clean: $(RM) $(EXE) $(EXE).exe diff --git a/hkexpasswd/hkexpasswd.go b/hkexpasswd/hkexpasswd.go index 8e51164..f02028c 100644 --- a/hkexpasswd/hkexpasswd.go +++ b/hkexpasswd/hkexpasswd.go @@ -21,17 +21,29 @@ import ( "github.com/jameskeane/bcrypt" ) +var ( + version string + gitCommit string +) + // nolint: gocyclo func main() { + var vopt bool var pfName string var newpw string var confirmpw string var userName string + flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&userName, "u", "", "username") flag.StringVar(&pfName, "f", "/etc/hkexsh.passwd", "passwd file") flag.Parse() + if vopt { + fmt.Printf("version %s (%s)\n", version, gitCommit) + os.Exit(0) + } + var uname string if len(userName) == 0 { log.Println("specify username with -u") diff --git a/hkexsh/Makefile b/hkexsh/Makefile index ea7eb69..8e2fd39 100644 --- a/hkexsh/Makefile +++ b/hkexsh/Makefile @@ -4,6 +4,7 @@ EXTPKGS = bytes,errors,flag,fmt,internal,io,log,net,os,path,runtime,time,strings EXE = $(notdir $(shell pwd)) all: + echo "BUILDOPTS:" $(BUILDOPTS) go build $(BUILDOPTS) . clean: diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index c1c58db..d8a7f13 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -41,6 +41,9 @@ import ( ) var ( + version string + gitCommit string // set in -ldflags by build + // wg controls when the goroutines handling client I/O complete wg sync.WaitGroup // Log defaults to regular syslog output (no -d) @@ -592,7 +595,6 @@ func sendSessionParams(conn io.Writer /* *hkexnet.Conn*/, rec *hkexsh.Session) ( // TODO: reduce gocyclo func main() { - version := hkexsh.Version var vopt bool var gopt bool //login via password, asking server to generate authToken var dbg bool @@ -723,7 +725,7 @@ func main() { } if vopt { - fmt.Printf("version v%s\n", version) + fmt.Printf("version %s (%s)\n", version, gitCommit) exitWithStatus(0) } diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 6584740..6d14ecc 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -35,6 +35,9 @@ import ( ) var ( + version string + gitCommit string // set in -ldflags by build + // Log - syslog output (with no -d) Log *logger.Writer ) @@ -401,8 +404,6 @@ func GenAuthToken(who string, connhost string) string { // Compare to 'serverp.go' in this directory to see the equivalence. // TODO: reduce gocyclo func main() { - version := hkexsh.Version - var vopt bool var chaffEnabled bool var chaffFreqMin uint @@ -421,7 +422,7 @@ func main() { flag.Parse() if vopt { - fmt.Printf("version v%s\n", version) + fmt.Printf("version %s (%s)\n", version, gitCommit) os.Exit(0) } From 2946618a025ad70402a39f945002513c40ad0336 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 8 Aug 2019 00:21:34 -0700 Subject: [PATCH 029/134] Hopeful fix for issue #18 Signed-off-by: Russ Magee --- go.sum | 38 +------------------------------------- hkexshd/hkexshd.go | 14 +++++++++++++- 2 files changed, 14 insertions(+), 38 deletions(-) diff --git a/go.sum b/go.sum index a3c7775..14ee240 100644 --- a/go.sum +++ b/go.sum @@ -1,50 +1,14 @@ -blitter.com/go/cryptmt v0.0.0-20181209042848-f3e54a9d98fa h1:M9Ewnr7XZYJANeUj9Jm1ucMwL8rEyHgXcHhIw3RQtB8= -blitter.com/go/cryptmt v0.0.0-20181209042848-f3e54a9d98fa/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= -blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= -blitter.com/go/goutmp v0.0.0-20181114075424-907ffc4058d9 h1:kcFQxwfPpVMBcLg9GIcHJmSW4ZNrcpeTUFD8wpIwu9Y= -blitter.com/go/goutmp v0.0.0-20181114075424-907ffc4058d9/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= -blitter.com/go/goutmp v1.0.0 h1:9BPQTnahoMHyF+IC8gj/Em+i2RDZtVSupoEgRhmaJg4= -blitter.com/go/goutmp v1.0.0/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= -blitter.com/go/herradurakex v0.0.0-20181207001539-873ba2e58872 h1:W0dt8bwmGO7mUr2F5E1R4xjbgYc0xYF/kaAbkVudeNk= -blitter.com/go/herradurakex v0.0.0-20181207001539-873ba2e58872/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= -blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= +blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= -blitter.com/go/mtwist v0.0.0-20181024062339-1a11c643f88c h1:zQ6vgMPQ8J3ZJNYsskpfjeY1eoBbLjCJPeZGCZYdVbI= -blitter.com/go/mtwist v0.0.0-20181024062339-1a11c643f88c/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= -blitter.com/go/mtwist v1.0.0 h1:/Vg6k12+DC+fokeRrLApL22hZS/EqEazJTo/FDdbDog= blitter.com/go/mtwist v1.0.0/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= -git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= -git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= -git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s= -github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk= -github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.4 h1:5Myjjh3JY/NaAi4IsUbHADytDyl1VE1Y9PXDlL+P/VQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 h1:mKdxBk7AujPs8kU4m80U72y/zjbZ3UcXC7dClwKbUI0= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/sys v0.0.0-20181211161752-7da8ea5c8182 h1:3jwI9dC+BuoXWS+QtR/HhfGTGTuB6ZzL6II6S1IuVvo= -golang.org/x/sys v0.0.0-20181211161752-7da8ea5c8182/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06 h1:0oC8rFnE+74kEmuHZ46F6KHsMr5Gx2gUQPuNz28iQZM= -golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 6d14ecc..5776001 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -276,6 +276,7 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C var c *exec.Cmd if interactive { + //c = exec.Command("/bin/login", "-f", "-p", who) // nolint: gosec c = exec.Command("/bin/bash", "-i", "-l") // nolint: gosec } else { c = exec.Command("/bin/bash", "-c", cmd) // nolint: gosec @@ -285,6 +286,7 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C //c.Env = []string{"HOME=" + u.HomeDir, "SUDO_GID=", "SUDO_UID=", "SUDO_USER=", "SUDO_COMMAND=", "MAIL=", "LOGNAME="+who} c.Dir = u.HomeDir c.SysProcAttr = &syscall.SysProcAttr{} + //c.SysProcAttr.Credential = &syscall.Credential{} c.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid} c.Stdin = conn c.Stdout = conn @@ -293,11 +295,15 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C // Start the command with a pty. ptmx, err := pty.Start(c) // returns immediately with ptmx file if err != nil { + log.Println(err) return hkexnet.CSEPtyExecFail, err } // Make sure to close the pty at the end. // #gv:s/label=\"runShellAs\$1\"/label=\"deferPtmxClose\"/ - defer func() { _ = ptmx.Close() }() // nolint: gosec + defer func() { + //logger.LogDebug(fmt.Sprintf("[Exited process was %d]", c.Process.Pid)) + _ = ptmx.Close() + }() // nolint: gosec // get pty info for system accounting (who, lastlog) pts, pe := ptsName(ptmx.Fd()) @@ -377,6 +383,12 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C } } conn.SetStatus(hkexnet.CSOType(exitStatus)) + } else { + logger.LogDebug("*** Main proc has exited. ***") + // Background jobs still may be running; close the + // pty anyway, so the client can return before + // wg.Wait() below completes (Issue #18) + _ = ptmx.Close() } wg.Wait() // Wait on pty->stdout completion to client } From 4c0b3a405d843b0c2b6b2865da4405e60ed4edf4 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 8 Aug 2019 00:32:46 -0700 Subject: [PATCH 030/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6bf12ab..6cb1ee7 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.4 +VERSION := 0.8.5 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From 795adf6aa0d5563dc03f4f0617abd9efa9c73828 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 8 Aug 2019 21:36:37 -0700 Subject: [PATCH 031/134] Added server -L option to use host builtin login Signed-off-by: Russ Magee --- hkexshd/hkexshd.go | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 5776001..05aa355 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -35,9 +35,11 @@ import ( ) var ( - version string - gitCommit string // set in -ldflags by build - + version string + gitCommit string // set in -ldflags by build + + useSysLogin bool + // Log - syslog output (with no -d) Log *logger.Writer ) @@ -276,8 +278,18 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C var c *exec.Cmd if interactive { - //c = exec.Command("/bin/login", "-f", "-p", who) // nolint: gosec - c = exec.Command("/bin/bash", "-i", "-l") // nolint: gosec + if useSysLogin { + // Use the server's login binary (post-auth + // which is still done via our own bcrypt file) + // Things UNIX login does, like print the 'motd', + // and use the shell specified by /etc/passwd, will be done + // automagically, at the cost of another external tool + // dependency. + // + c = exec.Command("/bin/login", "-f", "-p", who) // nolint: gosec + } else { + c = exec.Command("/bin/bash", "-i", "-l") // nolint: gosec + } } else { c = exec.Command("/bin/bash", "-c", cmd) // nolint: gosec } @@ -286,8 +298,13 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C //c.Env = []string{"HOME=" + u.HomeDir, "SUDO_GID=", "SUDO_UID=", "SUDO_USER=", "SUDO_COMMAND=", "MAIL=", "LOGNAME="+who} c.Dir = u.HomeDir c.SysProcAttr = &syscall.SysProcAttr{} - //c.SysProcAttr.Credential = &syscall.Credential{} - c.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid} + if useSysLogin { + // If using server's login binary, drop to user creds + // is taken care of by it. + c.SysProcAttr.Credential = &syscall.Credential{} + } else { + c.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid} + } c.Stdin = conn c.Stdout = conn c.Stderr = conn @@ -426,6 +443,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&laddr, "l", ":2000", "interface[:port] to listen") + flag.BoolVar(&useSysLogin, "L", false, "use system login") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min (msecs)") flag.UintVar(&chaffFreqMax, "F", 5000, "chaff pkt freq max (msecs)") From 35e23b20ce44ce8e7911771e0ec5e3771ef10b7e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 8 Aug 2019 21:38:03 -0700 Subject: [PATCH 032/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6cb1ee7..22ed554 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.5 +VERSION := 0.8.6 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From c9d478ff3071d253bfed406813a60582ddd1bbd2 Mon Sep 17 00:00:00 2001 From: Russtopia Date: Thu, 8 Aug 2019 22:34:28 -0700 Subject: [PATCH 033/134] Update 'README.md' --- README.md | 64 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 7a8852c..e00f8c6 100644 --- a/README.md +++ b/README.md @@ -84,45 +84,65 @@ As of this time (Oct 2018) Kyber is one of the candidate algorithms submitted to ### Get source code -* $ go get -u blitter.com/go/hkexsh -* $ cd $GOPATH/src/blitter.com/go/hkexsh -* $ go build ./... # install all dependent go pkgs +``` +$ go get -u blitter.com/go/hkexsh +$ cd $GOPATH/src/blitter.com/go/hkexsh +$ go build ./... # install all dependent go pkgs +``` ### To build -* $ cd $GOPATH/src/blitter.com/go/hkexsh -* $ make clean all +``` +$ cd $GOPATH/src/blitter.com/go/hkexsh +$ make clean all +``` ### To install, uninstall, re-install -* $ sudo make [install | uninstall | reinstall] +``` +$ sudo make [install | uninstall | reinstall] +``` ### To manage service (assuming openrc init) -* $ sudo rc-config [start | restart | stop] hkexshd +An example init script (hkexshd.initrc) is provided. Consult your Linux distribution documentation for proper service/daemon installation. For openrc, +``` +$ sudo cp hkexshd.initrc /etc/init.d/hkexshd +$ sudo rc-config add hkexshd default +``` -An example init script (hkexshd.initrc) is provided. Consult your Linux distribution documentation for proper service/daemon installation. Default assumes installation in /usr/local/sbin (hkexshd, hkexpasswd) and /usr/local/bin (hkexsh/hkexcp symlink). +The make system assumes installation in /usr/local/sbin (hkexshd, hkexpasswd) and /usr/local/bin (hkexsh/hkexcp symlink). +``` +$ sudo rc-config [start | restart | stop] hkexshd +``` ### To set accounts & passwords: -* $ sudo touch /etc/hkexsh.passwd -* $ sudo hkexpasswd/hkexpasswd -u joebloggs -* $ <enter a password, enter again to confirm> - +``` +$ sudo touch /etc/hkexsh.passwd +$ sudo hkexpasswd/hkexpasswd -u joebloggs +$ +``` ### Testing Client and Server from $GOPATH dev tree (w/o 'make install') In separate shells A and B: -* [A]$ cd hkexshd && sudo ./hkexshd & # add -d for debugging +``` +[A]$ cd hkexshd && sudo ./hkexshd & # add -d for debugging +``` Interactive shell -* [B]$ cd hkexsh && ./hkexsh joebloggs@host-or-ip # add -d for debugging +``` +[B]$ cd hkexsh && ./hkexsh joebloggs@host-or-ip # add -d for debugging +``` One-shot command -* [B]$ cd hkexsh && ./hkexsh -x "ls /tmp" joebloggs@host-or-ip +``` +[B]$ cd hkexsh && ./hkexsh -x "ls /tmp" joebloggs@host-or-ip +``` WARNING WARNING WARNING: the -d debug flag will echo passwords to the log/console! Logging on Linux usually goes to /var/log/syslog and/or /var/log/debug, /var/log/daemon.log. @@ -150,10 +170,14 @@ remote user. File operations are all performed as the remote user, so account pe as expected. Local (client) to remote (server) copy: -* hkexcp fileA /some/where/fileB /some/where/else/dirC joebloggs@host-or-ip:remoteDir +``` +$ hkexcp fileA /some/where/fileB /some/where/else/dirC joebloggs@host-or-ip:remoteDir +``` Remote (server) to local (client) copy: -* hkexcp joebloggs@host-or-ip:/remoteDirOrFile /some/where/local/Dir +``` +$ hkexcp joebloggs@host-or-ip:/remoteDirOrFile /some/where/local/Dir +``` hkexcp uses a 'tarpipe' to send file data over the encrypted channel. Use the -d flag on client or server to see the generated tar commands if you're curious. @@ -168,7 +192,7 @@ Syntax: hkexsh -T=<tunspec>{,<tunspec>...} Example, tunnelling ssh through hkexsh -* [server side] $ sudo /usr/sbin/sshd -p 7002 -* [client side, term A] $ hkexsh -T=6002:7002 user@server -* [client side, term B] $ ssh user@localhost -p 6002 +* [server side] ```$ sudo /usr/sbin/sshd -p 7002``` +* [client side, term A] ```$ hkexsh -T=6002:7002 user@server``` +* [client side, term B] ```$ ssh user@localhost -p 6002``` From d7dbcd8fdf3bec4f4eba42d42b4b65d812279672 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 13 Aug 2019 20:54:58 -0700 Subject: [PATCH 034/134] Added experimental support (-K) for kcp-go reliable-UDP instead of TCP github.com/xtaci/kcp-go ** Note: hkexcp appears to hang (client-side) on completion w/complete file copy (Note server-side logs on final missed ctrlStatOp msg) Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 69 ++++++++++++++++++++++++++++++++++------------ hkexsh/hkexsh.go | 10 ++++++- hkexshd/hkexshd.go | 10 +++++-- 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 91d8c4e..c557589 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -25,6 +25,7 @@ package hkexnet import ( "bytes" "crypto/cipher" + "crypto/sha1" "encoding/binary" "encoding/hex" "errors" @@ -40,6 +41,9 @@ import ( "sync" "time" + kcp "github.com/xtaci/kcp-go" + "golang.org/x/crypto/pbkdf2" + hkex "blitter.com/go/herradurakex" "blitter.com/go/hkexsh/logger" kyber "git.schwanenlied.me/yawning/kyber.git" @@ -693,12 +697,21 @@ func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err er Init(false, "client", logger.LOG_DAEMON|logger.LOG_DEBUG) } - // Open raw Conn c - c, err := net.Dial(protocol, ipport) - if err != nil { - return Conn{}, err + var c net.Conn + if protocol == "kcp" { + kcpKey := pbkdf2.Key([]byte("demo pass"), []byte("demo salt"), 1024, 32, sha1.New) + block, _ := kcp.NewNoneBlockCrypt(kcpKey) + c, err = kcp.DialWithOptions(ipport, block, 10, 3) + if err != nil { + return Conn{}, err + } + } else { + // Open raw Conn c + c, err = net.Dial(protocol, ipport) + if err != nil { + return Conn{}, err + } } - // Init hkexnet.Conn hc over net.Conn c ret, err := _new(getkexalgnum(extensions...), &c) if err != nil { @@ -819,23 +832,35 @@ func (hc *Conn) SetReadDeadline(t time.Time) error { // // See go doc net.Listener type HKExListener struct { - l net.Listener + l net.Listener + proto string } // Listen for a connection // // See go doc net.Listen -func Listen(protocol string, ipport string) (hl HKExListener, e error) { +func Listen(proto string, ipport string) (hl HKExListener, e error) { if Log == nil { Init(false, "server", logger.LOG_DAEMON|logger.LOG_DEBUG) } - l, err := net.Listen(protocol, ipport) - if err != nil { - return HKExListener{nil}, err + kcpKey := pbkdf2.Key([]byte("demo pass"), []byte("demo salt"), 1024, 32, sha1.New) + //var block kcp.BlockCrypt + var lErr error + var l net.Listener + + if proto == "kcp" { + block, _ := kcp.NewNoneBlockCrypt(kcpKey) + l, lErr = kcp.ListenWithOptions(ipport, block, 10, 3) + } else { + l, lErr = net.Listen(proto, ipport) } - logger.LogDebug(fmt.Sprintf("[Listening on %s]\n", ipport)) + if lErr != nil { + return HKExListener{nil, proto}, lErr + } + logger.LogDebug(fmt.Sprintf("[Listening (proto '%s') on %s]\n", proto, ipport)) hl.l = l + hl.proto = proto return } @@ -859,13 +884,23 @@ func (hl HKExListener) Addr() net.Addr { // // See go doc net.Listener.Accept func (hl *HKExListener) Accept() (hc Conn, err error) { - // Open raw Conn c - c, err := hl.l.Accept() - if err != nil { - return Conn{}, err - } - logger.LogDebug(fmt.Sprintln("[net.Listener Accepted]")) + var c net.Conn + if hl.proto == "kcp" { + c, err = hl.l.(*kcp.Listener).AcceptKCP() + if err != nil { + return Conn{}, err + } + logger.LogDebug(fmt.Sprintln("[kcp.Listener Accepted]")) + } else { + // Open raw Conn c + c, err = hl.l.Accept() + if err != nil { + return Conn{}, err + } + + logger.LogDebug(fmt.Sprintln("[net.Listener Accepted]")) + } // Read KEx alg proposed by client var kexAlg KEXAlg //! NB. Was using fmt.FScanln() here, but integers with a leading zero diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index d8a7f13..597559e 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -46,6 +46,9 @@ var ( // wg controls when the goroutines handling client I/O complete wg sync.WaitGroup + + kopt bool // set to use kcp (encrypted reliable UDP) instead of TCP + // Log defaults to regular syslog output (no -d) Log *logger.Writer @@ -624,6 +627,7 @@ func main() { flag.StringVar(&cipherAlg, "c", "C_AES_256", "`cipher` [\"C_AES_256\" | \"C_TWOFISH_128\" | \"C_BLOWFISH_64\" | \"C_CRYPTMT1\"]") flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\" | \"H_SHA512\"]") flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") + flag.BoolVar(&kopt, "K", false, "set true to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") flag.UintVar(&port, "p", 2000, "`port`") //flag.StringVar(&authCookie, "a", "", "auth cookie") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") @@ -818,7 +822,11 @@ func main() { } } - conn, err := hkexnet.Dial("tcp", server, cipherAlg, hmacAlg, kexAlg) + proto := "tcp" + if kopt { + proto = "kcp" + } + conn, err := hkexnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg) if err != nil { fmt.Println(err) exitWithStatus(3) diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 05aa355..b4ae354 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -39,6 +39,7 @@ var ( gitCommit string // set in -ldflags by build useSysLogin bool + kopt bool // set to use kcp (encrypted reliable UDP) instead of TCP // Log - syslog output (with no -d) Log *logger.Writer @@ -443,6 +444,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&laddr, "l", ":2000", "interface[:port] to listen") + flag.BoolVar(&kopt, "K", false, "set true to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") flag.BoolVar(&useSysLogin, "L", false, "use system login") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min (msecs)") @@ -505,9 +507,11 @@ func main() { } }() - // Listen on TCP port 2000 on all available unicast and - // anycast IP addresses of the local system. - l, err := hkexnet.Listen("tcp", laddr) + proto := "tcp" + if kopt { + proto = "kcp" + } + l, err := hkexnet.Listen(proto, laddr) if err != nil { log.Fatal(err) } From c95794da1fb493788a8392a7b231856c1e1044d7 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 16 Aug 2019 23:16:40 -0700 Subject: [PATCH 035/134] Uncoupled kcp-go UDP support by moving into hkexnet/kcp.go TODO: cmdline param to set KCP symmetric key & salt at launch (consider also from a file to avoid putting inline in invocations, eg., init scripts) Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 20 ++----- hkexnet/kcp.go | 129 +++++++++++++++++++++++++++++++++++++++++++++ hkexsh/hkexsh.go | 12 ++--- hkexshd/hkexshd.go | 8 +-- 4 files changed, 144 insertions(+), 25 deletions(-) create mode 100644 hkexnet/kcp.go diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index c557589..5d38bc0 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -25,7 +25,6 @@ package hkexnet import ( "bytes" "crypto/cipher" - "crypto/sha1" "encoding/binary" "encoding/hex" "errors" @@ -41,9 +40,6 @@ import ( "sync" "time" - kcp "github.com/xtaci/kcp-go" - "golang.org/x/crypto/pbkdf2" - hkex "blitter.com/go/herradurakex" "blitter.com/go/hkexsh/logger" kyber "git.schwanenlied.me/yawning/kyber.git" @@ -699,9 +695,7 @@ func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err er var c net.Conn if protocol == "kcp" { - kcpKey := pbkdf2.Key([]byte("demo pass"), []byte("demo salt"), 1024, 32, sha1.New) - block, _ := kcp.NewNoneBlockCrypt(kcpKey) - c, err = kcp.DialWithOptions(ipport, block, 10, 3) + c, err = kcpDial(ipport, extensions) if err != nil { return Conn{}, err } @@ -839,19 +833,16 @@ type HKExListener struct { // Listen for a connection // // See go doc net.Listen -func Listen(proto string, ipport string) (hl HKExListener, e error) { +func Listen(proto string, ipport string, extensions ...string) (hl HKExListener, e error) { if Log == nil { Init(false, "server", logger.LOG_DAEMON|logger.LOG_DEBUG) } - kcpKey := pbkdf2.Key([]byte("demo pass"), []byte("demo salt"), 1024, 32, sha1.New) - //var block kcp.BlockCrypt var lErr error var l net.Listener - + if proto == "kcp" { - block, _ := kcp.NewNoneBlockCrypt(kcpKey) - l, lErr = kcp.ListenWithOptions(ipport, block, 10, 3) + l, lErr = kcpListen(ipport, extensions) } else { l, lErr = net.Listen(proto, ipport) } @@ -886,11 +877,10 @@ func (hl HKExListener) Addr() net.Addr { func (hl *HKExListener) Accept() (hc Conn, err error) { var c net.Conn if hl.proto == "kcp" { - c, err = hl.l.(*kcp.Listener).AcceptKCP() + c, err = hl.AcceptKCP() if err != nil { return Conn{}, err } - logger.LogDebug(fmt.Sprintln("[kcp.Listener Accepted]")) } else { // Open raw Conn c diff --git a/hkexnet/kcp.go b/hkexnet/kcp.go new file mode 100644 index 0000000..be52650 --- /dev/null +++ b/hkexnet/kcp.go @@ -0,0 +1,129 @@ +package hkexnet + +import ( + "crypto/sha1" + "errors" + "fmt" + "net" + + "blitter.com/go/hkexsh/logger" + kcp "github.com/xtaci/kcp-go" + "golang.org/x/crypto/pbkdf2" +) + +const ( + KCP_NONE = iota + KCP_AES + KCP_BLOWFISH + KCP_CAST5 + KCP_SM4 + KCP_SALSA20 + KCP_SIMPLEXOR + KCP_TEA + KCP_3DES + KCP_TWOFISH + KCP_XTEA +) + +// for github.com/xtaci/kcp-go BlockCrypt alg selection +type KCPAlg uint8 + +var ( + kcpKeyBytes []byte = []byte("SET THIS") // symmetric crypto key for KCP (github.com/xtaci/kcp-go) if used + kcpSaltBytes []byte = []byte("ALSO SET THIS") +) + +func getKCPalgnum(extensions []string) (k KCPAlg) { + k = KCP_AES // default + var s string + for _, s = range extensions { + switch s { + case "KCP_NONE": + k = KCP_NONE + break //out of for + case "KCP_AES": + k = KCP_AES + break //out of for + case "KCP_BLOWFISH": + k = KCP_BLOWFISH + break //out of for + case "KCP_CAST5": + k = KCP_CAST5 + break //out of for + case "KCP_SM4": + k = KCP_SM4 + break //out of for + case "KCP_SALSA20": + k = KCP_SALSA20 + break //out of for + case "KCP_SIMPLEXOR": + k = KCP_SIMPLEXOR + break //out of for + case "KCP_TEA": + k = KCP_TEA + break //out of for + case "KCP_3DES": + k = KCP_3DES + break //out of for + case "KCP_TWOFISH": + k = KCP_TWOFISH + break //out of for + case "KCP_XTEA": + k = KCP_XTEA + break //out of for + } + } + logger.LogDebug(fmt.Sprintf("[KCP BlockCrypt '%s' activated]", s)) + return +} + +func SetKCPKeyAndSalt(key []byte, salt []byte) { + kcpKeyBytes = key + kcpSaltBytes = salt +} + +func _newKCPBlockCrypt(key []byte, extensions []string) (b kcp.BlockCrypt, e error) { + switch getKCPalgnum(extensions) { + case KCP_NONE: + return kcp.NewNoneBlockCrypt(key) + case KCP_AES: + return kcp.NewAESBlockCrypt(key) + case KCP_BLOWFISH: + return kcp.NewBlowfishBlockCrypt(key) + case KCP_CAST5: + return kcp.NewCast5BlockCrypt(key) + case KCP_SM4: + return kcp.NewSM4BlockCrypt(key) + case KCP_SALSA20: + return kcp.NewSalsa20BlockCrypt(key) + case KCP_SIMPLEXOR: + return kcp.NewSimpleXORBlockCrypt(key) + case KCP_TEA: + return kcp.NewTEABlockCrypt(key) + case KCP_3DES: + return kcp.NewTripleDESBlockCrypt(key) + case KCP_TWOFISH: + return kcp.NewTwofishBlockCrypt(key) + case KCP_XTEA: + return kcp.NewXTEABlockCrypt(key) + } + return nil, errors.New("Invalid KCP BlockCrypto specified") +} + +func kcpDial(ipport string, extensions []string) (c net.Conn, err error) { + kcpKey := pbkdf2.Key(kcpKeyBytes, kcpSaltBytes, 1024, 32, sha1.New) + block, be := _newKCPBlockCrypt([]byte(kcpKey), extensions) + _ = be + return kcp.DialWithOptions(ipport, block, 10, 3) +} + +func kcpListen(ipport string, extensions []string) (l net.Listener, err error) { + kcpKey := pbkdf2.Key(kcpKeyBytes, kcpSaltBytes, 1024, 32, sha1.New) + block, be := _newKCPBlockCrypt([]byte(kcpKey), extensions) + _ = be + return kcp.ListenWithOptions(ipport, block, 10, 3) +} + +func (hl *HKExListener) AcceptKCP() (c net.Conn, e error) { + return hl.l.(*kcp.Listener).AcceptKCP() +} diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 597559e..2492240 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -47,7 +47,7 @@ var ( // wg controls when the goroutines handling client I/O complete wg sync.WaitGroup - kopt bool // set to use kcp (encrypted reliable UDP) instead of TCP + kcpMode string // set to a valid KCP BlockCrypt alg tag to use rather than TCP // Log defaults to regular syslog output (no -d) Log *logger.Writer @@ -627,7 +627,7 @@ func main() { flag.StringVar(&cipherAlg, "c", "C_AES_256", "`cipher` [\"C_AES_256\" | \"C_TWOFISH_128\" | \"C_BLOWFISH_64\" | \"C_CRYPTMT1\"]") flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\" | \"H_SHA512\"]") flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") - flag.BoolVar(&kopt, "K", false, "set true to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") + flag.StringVar(&kcpMode, "K", "unused", `set to one of ["KCP_NONE","KCP_AES", "KCP_BLOWFISH", "KCP_CAST5", "KCP_SM4", "KCP_SALSA20", "KCP_SIMPLEXOR", "KCP_TEA", "KCP_3DES", "KCP_TWOFISH", "KCP_XTEA"] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP`) flag.UintVar(&port, "p", 2000, "`port`") //flag.StringVar(&authCookie, "a", "", "auth cookie") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") @@ -821,12 +821,12 @@ func main() { cmdStr = string(copySrc) } } - + proto := "tcp" - if kopt { - proto = "kcp" + if kcpMode != "unused" { + proto = "kcp" } - conn, err := hkexnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg) + conn, err := hkexnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg, kcpMode) if err != nil { fmt.Println(err) exitWithStatus(3) diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index b4ae354..ae75617 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -39,7 +39,7 @@ var ( gitCommit string // set in -ldflags by build useSysLogin bool - kopt bool // set to use kcp (encrypted reliable UDP) instead of TCP + kcpMode string // set to a valid KCP BlockCrypt alg tag to use rather than TCP // Log - syslog output (with no -d) Log *logger.Writer @@ -444,7 +444,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&laddr, "l", ":2000", "interface[:port] to listen") - flag.BoolVar(&kopt, "K", false, "set true to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") + flag.StringVar(&kcpMode, "K", "unused", `set to one of ["KCP_NONE","KCP_AES", "KCP_BLOWFISH", "KCP_CAST5", "KCP_SM4", "KCP_SALSA20", "KCP_SIMPLEXOR", "KCP_TEA", "KCP_3DES", "KCP_TWOFISH", "KCP_XTEA"] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP`) flag.BoolVar(&useSysLogin, "L", false, "use system login") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min (msecs)") @@ -508,10 +508,10 @@ func main() { }() proto := "tcp" - if kopt { + if kcpMode != "unused" { proto = "kcp" } - l, err := hkexnet.Listen(proto, laddr) + l, err := hkexnet.Listen(proto, laddr, kcpMode) if err != nil { log.Fatal(err) } From c354036952e50a77b4d607359bbdc8d78b240fa3 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 22 Aug 2019 23:18:20 -0700 Subject: [PATCH 036/134] Fixed incomplete -x cmd output due to premature ptmx.Close for non-interactive sessions Signed-off-by: Russ Magee --- hkexnet/hkexnet.go | 20 ++++---------------- hkexshd/hkexshd.go | 4 +++- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 91d8c4e..a085a12 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -70,10 +70,9 @@ type ( // Conn is a connection wrapping net.Conn with KEX & session state Conn struct { - kex KEXAlg // KEX/KEM proposal (client -> server) - m *sync.Mutex // (internal) - c *net.Conn // which also implements io.Reader, io.Writer, ... - immClose bool + kex KEXAlg // KEX/KEM proposal (client -> server) + m *sync.Mutex // (internal) + c *net.Conn // which also implements io.Reader, io.Writer, ... logCipherText bool // somewhat expensive, for debugging logPlainText bool // INSECURE and somewhat expensive, for debugging @@ -139,10 +138,6 @@ func (hc *Conn) SetStatus(stat CSOType) { log.Println("closeStat:", *hc.closeStat) } -func (hc *Conn) SetImmClose() { - hc.immClose = true -} - // ConnOpts returns the cipher/hmac options value, which is sent to the // peer but is not itself part of the KEx. // @@ -757,13 +752,7 @@ func (hc *Conn) Close() (err error) { log.Printf("** Writing closeStat %d at Close()\n", *hc.closeStat) //(*hc.c).SetWriteDeadline(time.Now().Add(500 * time.Millisecond)) hc.WritePacket(s, CSOExitStatus) - // This avoids a bug where server side may not get its last packet of - // data through to a client for non-interactive commands which exit - // immediately. Avoiding the immediate close lets the client close its - // side first. - if hc.immClose { - err = (*hc.c).Close() - } + err = (*hc.c).Close() logger.LogDebug(fmt.Sprintln("[Conn Closing]")) return } @@ -1059,7 +1048,6 @@ func (hc Conn) Read(b []byte) (n int, err error) { logger.LogDebug(fmt.Sprintln("[truncated payload, cannot determine CSOExitStatus]")) hc.SetStatus(CSETruncCSO) } - hc.SetImmClose() // clients can immediately close their end hc.Close() } else if ctrlStatOp == CSOTunSetup { // server side tunnel setup in response to client diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 05aa355..0a19c24 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -405,7 +405,9 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C // Background jobs still may be running; close the // pty anyway, so the client can return before // wg.Wait() below completes (Issue #18) - _ = ptmx.Close() + if interactive { + _ = ptmx.Close() + } } wg.Wait() // Wait on pty->stdout completion to client } From dc3f6f9bd511bd2ec47e9e3115f425a0574a1866 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 22 Aug 2019 23:29:22 -0700 Subject: [PATCH 037/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 22ed554..876aeba 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.6 +VERSION := 0.8.7 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From 6483c8cc33360f42435e3b0059eb4543f77a17cc Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 22 Aug 2019 23:32:56 -0700 Subject: [PATCH 038/134] Version -kcp Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 876aeba..d88f4d5 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.7 +VERSION := 0.8.7-kcp #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From ba52356e6c477d51c3bfd2dea948c822760be89c Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 14 Sep 2019 22:56:03 -0700 Subject: [PATCH 039/134] Made default deeper in init funcs HERRADURAKEX512 Signed-off-by: Russ Magee --- hkexnet/consts.go | 1 + hkexnet/hkexnet.go | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hkexnet/consts.go b/hkexnet/consts.go index 0916090..cd90130 100644 --- a/hkexnet/consts.go +++ b/hkexnet/consts.go @@ -11,6 +11,7 @@ package hkexnet // // Specified (in string form) as the extensions parameter // to hkexnet.Dial() +// Alg is sent in a uint8 so there are up to 256 possible const ( KEX_HERRADURA256 = iota // this MUST be first for default if omitted in ctor KEX_HERRADURA512 diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index a085a12..a4e4a65 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -213,7 +213,7 @@ func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { log.Printf("[KEx alg %d accepted]\n", kexAlg) default: // UNREACHABLE: _getkexalgnum() guarantees a valid KEX value - hc.kex = KEX_HERRADURA256 + hc.kex = KEX_HERRADURA512 log.Printf("[KEx alg %d ?? defaults to %d]\n", kexAlg, hc.kex) } return @@ -273,7 +273,7 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { } func getkexalgnum(extensions ...string) (k KEXAlg) { - k = KEX_HERRADURA256 // default + k = KEX_HERRADURA512 // default for _, s := range extensions { switch s { case "KEX_HERRADURA256": From a990c5e1f33f16094503dd2446bd077b75ad8ac4 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 14 Sep 2019 23:47:41 -0700 Subject: [PATCH 040/134] Cleaned up flag strings Signed-off-by: Russ Magee --- hkexsh/hkexsh.go | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 2492240..8a69f89 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -624,27 +624,27 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.BoolVar(&dbg, "d", false, "debug logging") - flag.StringVar(&cipherAlg, "c", "C_AES_256", "`cipher` [\"C_AES_256\" | \"C_TWOFISH_128\" | \"C_BLOWFISH_64\" | \"C_CRYPTMT1\"]") - flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\" | \"H_SHA512\"]") - flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") - flag.StringVar(&kcpMode, "K", "unused", `set to one of ["KCP_NONE","KCP_AES", "KCP_BLOWFISH", "KCP_CAST5", "KCP_SM4", "KCP_SALSA20", "KCP_SIMPLEXOR", "KCP_TEA", "KCP_3DES", "KCP_TWOFISH", "KCP_XTEA"] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP`) - flag.UintVar(&port, "p", 2000, "`port`") + flag.StringVar(&cipherAlg, "c", "C_AES_256", "session `cipher` [C_AES_256 | C_TWOFISH_128 | C_BLOWFISH_64 | C_CRYPTMT1]") + flag.StringVar(&hmacAlg, "m", "H_SHA256", "session `HMAC` [H_SHA256 | H_SHA512]") + flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "KEx `alg` [KEX_HERRADURA{256/512/1024/2048} | KEX_KYBER{512/768/1024} | KEX_NEWHOPE | KEX_NEWHOPE_SIMPLE]") + flag.StringVar(&kcpMode, "K", "unused", "KCP `alg`, one of [KCP_NONE | KCP_AES | KCP_BLOWFISH | KCP_CAST5 | KCP_SM4 | KCP_SALSA20 | KCP_SIMPLEXOR | KCP_TEA | KCP_3DES | KCP_TWOFISH | KCP_XTEA] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") + flag.UintVar(&port, "p", 2000, "``port") //flag.StringVar(&authCookie, "a", "", "auth cookie") flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") - flag.UintVar(&chaffFreqMin, "f", 100, "`msecs-min` chaff pkt freq min (msecs)") - flag.UintVar(&chaffFreqMax, "F", 5000, "`msecs-max` chaff pkt freq max (msecs)") - flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") + flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min `msecs`") + flag.UintVar(&chaffFreqMax, "F", 5000, "chaff pkt freq max `msecs`") + flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max `bytes`") - flag.StringVar(&cpuprofile, "cpuprofile", "", "write cpu profile to `file`") - flag.StringVar(&memprofile, "memprofile", "", "write memory profile to `file`") + flag.StringVar(&cpuprofile, "cpuprofile", "", "write cpu profile to <`file`>") + flag.StringVar(&memprofile, "memprofile", "", "write memory profile to <`file`>") // Find out what program we are (shell or copier) myPath := strings.Split(os.Args[0], string(os.PathSeparator)) if myPath[len(myPath)-1] != "hkexcp" && myPath[len(myPath)-1] != "hkexcp.exe" { // hkexsh accepts a command (-x) but not // a srcpath (-r) or dstpath (-t) - flag.StringVar(&cmdStr, "x", "", "`command` to run (if not specified run interactive shell)") - flag.StringVar(&tunSpecStr, "T", "", "`tunnelspec` localPort:remotePort[,localPort:remotePort,...]") + flag.StringVar(&cmdStr, "x", "", "run <`command`> (if not specified, run interactive shell)") + flag.StringVar(&tunSpecStr, "T", "", "``tunnelspec - localPort:remotePort[,localPort:remotePort,...]") flag.BoolVar(&gopt, "g", false, "ask server to generate authtoken") shellMode = true flag.Usage = usageShell From 423410bb406889022f22f8ebf043a66cfdc1e51e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 27 Sep 2019 09:44:57 -0700 Subject: [PATCH 041/134] WIP integrating experimental WANDERER alg --- hkexnet/consts.go | 1 + hkexnet/hkexchan.go | 13 ++++++------- hkexnet/hkexnet.go | 4 ++++ hkexshd/hkexshd.go | 10 +++++----- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/hkexnet/consts.go b/hkexnet/consts.go index cd90130..1bfbda0 100644 --- a/hkexnet/consts.go +++ b/hkexnet/consts.go @@ -95,6 +95,7 @@ const ( CAlgTwofish128 // golang.org/x/crypto/twofish CAlgBlowfish64 // golang.org/x/crypto/blowfish CAlgCryptMT1 //cryptmt using mtwist64 + CAlgWanderer // inhouse experimental crypto alg CAlgNoneDisallowed ) diff --git a/hkexnet/hkexchan.go b/hkexnet/hkexchan.go index 8fbf47b..fafb96e 100644 --- a/hkexnet/hkexchan.go +++ b/hkexnet/hkexchan.go @@ -20,9 +20,11 @@ import ( "hash" "log" + "blitter.com/go/cryptmt" + "blitter.com/go/wanderer" "golang.org/x/crypto/blowfish" "golang.org/x/crypto/twofish" - "blitter.com/go/cryptmt" + // hash algos must be manually imported thusly: // (Would be nice if the golang pkg docs were more clear // on this...) @@ -75,7 +77,6 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err iv = keymat[aes.BlockSize : aes.BlockSize+ivlen] rc = cipher.NewOFB(block, iv) log.Printf("[cipher AES_256 (%d)]\n", copts) - break case CAlgTwofish128: keymat = expandKeyMat(keymat, twofish.BlockSize) key = keymat[0:twofish.BlockSize] @@ -84,7 +85,6 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err iv = keymat[twofish.BlockSize : twofish.BlockSize+ivlen] rc = cipher.NewOFB(block, iv) log.Printf("[cipher TWOFISH_128 (%d)]\n", copts) - break case CAlgBlowfish64: keymat = expandKeyMat(keymat, blowfish.BlockSize) key = keymat[0:blowfish.BlockSize] @@ -102,11 +102,12 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err iv = keymat[blowfish.BlockSize : blowfish.BlockSize+ivlen] rc = cipher.NewOFB(block, iv) log.Printf("[cipher BLOWFISH_64 (%d)]\n", copts) - break case CAlgCryptMT1: rc = cryptmt.NewCipher(keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) - break + case CAlgWanderer: + rc = wanderer.NewCodec(nil, nil, keymat, 3, 3) + log.Printf("[cipher WANDERER (%d)]\n", copts) default: log.Printf("[invalid cipher (%d)]\n", copts) fmt.Printf("DOOFUS SET A VALID CIPHER ALG (%d)\n", copts) @@ -123,7 +124,6 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err if !halg.Available() { log.Fatal("hash not available!") } - break case HmacSHA512: log.Printf("[hash HmacSHA512 (%d)]\n", hopts) halg := crypto.SHA512 @@ -131,7 +131,6 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err if !halg.Available() { log.Fatal("hash not available!") } - break default: log.Printf("[invalid hmac (%d)]\n", hopts) fmt.Printf("DOOFUS SET A VALID HMAC ALG (%d)\n", hopts) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index ec1d7e1..7209a4e 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -258,6 +258,10 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { log.Println("[extension arg = C_CRYPTMT1]") hc.cipheropts &= (0xFFFFFF00) hc.cipheropts |= CAlgCryptMT1 + case "C_WANDERER": + log.Println("[extension arg = C_WANDERER]") + hc.cipheropts &= (0xFFFFFF00) + hc.cipheropts |= CAlgWanderer case "H_SHA256": log.Println("[extension arg = H_SHA256]") hc.cipheropts &= (0xFFFF00FF) diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 441c0d9..f780a0b 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -35,12 +35,12 @@ import ( ) var ( - version string - gitCommit string // set in -ldflags by build - + version string + gitCommit string // set in -ldflags by build + useSysLogin bool - kcpMode string // set to a valid KCP BlockCrypt alg tag to use rather than TCP - + kcpMode string // set to a valid KCP BlockCrypt alg tag to use rather than TCP + // Log - syslog output (with no -d) Log *logger.Writer ) From b19687c80b706b36712642b3943ee19c448f39e4 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 29 Oct 2019 20:34:09 -0700 Subject: [PATCH 042/134] The Great Renaming: hkexsh -> xs (Xperimental Shell) Signed-off-by: Russ Magee --- LICENSE.mit | 2 +- Makefile | 46 +- README.md | 68 +-- hkexauth.go => auth.go | 14 +- consts.go | 8 +- go.mod | 2 +- grml.yaml | 4 +- hkexpasswd/hkexpasswd-vis.gv | 63 -- hkexsh/hkexcp | 1 - hkexsh/hkexsh-vis-fixedup.png | Bin 697628 -> 0 bytes hkexsh/hkexsh-vis.gv | 263 --------- hkexsh/hkexsh_seq.png | Bin 69430 -> 0 bytes hkexshd/hkexshd-vis-fixedup.png | Bin 600193 -> 0 bytes hkexshd/hkexshd-vis.gv | 281 --------- hkexsession.go => session.go | 8 +- termmode_unix.go | 4 +- termmode_windows.go | 4 +- viz_hkexsh_dot.png => viz_xs_dot.png | Bin {hkexsh => xs}/Makefile | 4 +- {hkexsh => xs}/mintty_wrapper.sh | 0 {hkexsh => xs}/termsize_linux.go | 6 +- {hkexsh => xs}/termsize_windows.go | 6 +- xs/xs-vis-fixedup.png | Bin 0 -> 1155846 bytes xs/xs-vis.gv | 549 ++++++++++++++++++ hkexsh/hkexsh.go => xs/xs.go | 70 +-- xs/xs_seq.png | Bin 0 -> 68489 bytes hkexshd.initrc => xsd.initrc | 16 +- {hkexshd => xsd}/Makefile | 4 +- {hkexshd => xsd}/hkexshd-vis.png | Bin xsd/xsd-vis-fixedup.png | Bin 0 -> 800476 bytes xsd/xsd-vis.gv | 347 +++++++++++ hkexshd/hkexshd.go => xsd/xsd.go | 80 +-- {hkexnet => xsnet}/Makefile | 0 hkexnet/hkexchan.go => xsnet/chan.go | 6 +- {hkexnet => xsnet}/consts.go | 10 +- {hkexnet => xsnet}/kcp.go | 4 +- hkexnet/hkexnet.go => xsnet/net.go | 28 +- hkexnet/hkextun.go => xsnet/tun.go | 8 +- {hkexpasswd => xspasswd}/Makefile | 2 +- .../xspasswd-vis.png | Bin 35199 -> 34803 bytes .../hkexpasswd.go => xspasswd/xspasswd.go | 6 +- 41 files changed, 1101 insertions(+), 813 deletions(-) rename hkexauth.go => auth.go (86%) delete mode 100755 hkexpasswd/hkexpasswd-vis.gv delete mode 120000 hkexsh/hkexcp delete mode 100644 hkexsh/hkexsh-vis-fixedup.png delete mode 100755 hkexsh/hkexsh-vis.gv delete mode 100644 hkexsh/hkexsh_seq.png delete mode 100644 hkexshd/hkexshd-vis-fixedup.png delete mode 100755 hkexshd/hkexshd-vis.gv rename hkexsession.go => session.go (93%) rename viz_hkexsh_dot.png => viz_xs_dot.png (100%) rename {hkexsh => xs}/Makefile (65%) rename {hkexsh => xs}/mintty_wrapper.sh (100%) rename {hkexsh => xs}/termsize_linux.go (79%) rename {hkexsh => xs}/termsize_windows.go (88%) create mode 100644 xs/xs-vis-fixedup.png create mode 100755 xs/xs-vis.gv rename hkexsh/hkexsh.go => xs/xs.go (92%) create mode 100644 xs/xs_seq.png rename hkexshd.initrc => xsd.initrc (63%) rename {hkexshd => xsd}/Makefile (63%) rename {hkexshd => xsd}/hkexshd-vis.png (100%) create mode 100644 xsd/xsd-vis-fixedup.png create mode 100755 xsd/xsd-vis.gv rename hkexshd/hkexshd.go => xsd/xsd.go (90%) rename {hkexnet => xsnet}/Makefile (100%) rename hkexnet/hkexchan.go => xsnet/chan.go (98%) rename {hkexnet => xsnet}/consts.go (95%) rename {hkexnet => xsnet}/kcp.go (98%) rename hkexnet/hkexnet.go => xsnet/net.go (98%) rename hkexnet/hkextun.go => xsnet/tun.go (98%) rename {hkexpasswd => xspasswd}/Makefile (77%) rename hkexpasswd/hkexpasswd-vis.png => xspasswd/xspasswd-vis.png (54%) rename hkexpasswd/hkexpasswd.go => xspasswd/xspasswd.go (95%) diff --git a/LICENSE.mit b/LICENSE.mit index 0cd89ee..83c90e7 100644 --- a/LICENSE.mit +++ b/LICENSE.mit @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2017 - 2018 Russell Magee (hkexsh/hkexshd/hkexnet/hkexpasswd) +Copyright (c) 2017 - 2019 Russell Magee (xs/xsd/xsnet/xspasswd) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Makefile b/Makefile index d88f4d5..a7b2ddc 100644 --- a/Makefile +++ b/Makefile @@ -5,13 +5,13 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.7-kcp +VERSION := 0.8.8 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif -SUBPKGS = logger spinsult hkexnet -TOOLS = hkexpasswd hkexsh hkexshd +SUBPKGS = logger spinsult xsnet +TOOLS = xspasswd xs xsd SUBDIRS = $(LIBS) $(TOOLS) INSTPREFIX = /usr/local @@ -41,63 +41,63 @@ common: client: common - $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexsh + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C xs ifeq ($(MSYSTEM),) ifneq ($(GOOS),windows) server: common - $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexshd + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C xsd else - echo "Cross-build of hkexshd server for Windows not yet supported" + echo "Cross-build of xsd server for Windows not yet supported" endif else server: common - echo "hkexshd server not (yet) supported on Windows" + echo "xsd server not (yet) supported on Windows" endif passwd: common - $(MAKE) BUILDOPTS=$(BUILDOPTS) -C hkexpasswd + $(MAKE) BUILDOPTS=$(BUILDOPTS) -C xspasswd vis: @which go-callvis >/dev/null 2>&1; \ stat=$$?; if [ $$stat -ne "0" ]; then \ /bin/echo "go-callvis not found. Run go get github.com/Russtopia/go-callvis to install."; \ else \ - make -C hkexsh vis;\ - make -C hkexshd vis;\ - make -C hkexpasswd vis; \ + make -C xs vis;\ + make -C xsd vis;\ + make -C xspasswd vis; \ fi lint: - make -C hkexpasswd lint - make -C hkexshd lint - make -C hkexsh lint + make -C xspasswd lint + make -C xsd lint + make -C xs lint reinstall: uninstall install install: - cp hkexsh/hkexsh $(INSTPREFIX)/bin + cp xs/xs $(INSTPREFIX)/bin ifeq ($(MSYSTEM),) ifneq ($(GOOS),windows) - cp hkexshd/hkexshd hkexpasswd/hkexpasswd $(INSTPREFIX)/sbin + cp xsd/xsd xspasswd/xspasswd $(INSTPREFIX)/sbin else - mv $(INSTPREFIX)/bin/hkexsh $(INSTPREFIX)/bin/_hkexsh - cp hkexsh/mintty_wrapper.sh $(INSTPREFIX)/bin/hkexsh - echo "Cross-build of hkexshd server for Windows not yet supported" + mv $(INSTPREFIX)/bin/xs $(INSTPREFIX)/bin/_xs + cp xs/mintty_wrapper.sh $(INSTPREFIX)/bin/xs + echo "Cross-build of xsd server for Windows not yet supported" endif else - echo "Cross-build of hkexshd server for Windows not yet supported" + echo "Cross-build of xsd server for Windows not yet supported" endif - cd $(INSTPREFIX)/bin && ln -s hkexsh hkexcp && cd - + cd $(INSTPREFIX)/bin && ln -s xs xc && cd - uninstall: - rm -f $(INSTPREFIX)/bin/hkexsh $(INSTPREFIX)/bin/hkexcp $(INSTPREFIX)/bin/_hkexsh + rm -f $(INSTPREFIX)/bin/xs $(INSTPREFIX)/bin/xc $(INSTPREFIX)/bin/_xs ifeq ($(MSYSTEM),) ifneq ($(GOOS),windows) - rm -f $(INSTPREFIX)/sbin/hkexshd $(INSTPREFIX)/sbin/hkexpasswd + rm -f $(INSTPREFIX)/sbin/xsd $(INSTPREFIX)/sbin/xspasswd else endif else diff --git a/README.md b/README.md index e00f8c6..7b59dba 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,19 @@ -[![GoDoc](https://godoc.org/blitter.com/go/hkexsh?status.svg)](https://godoc.org/blitter.com/go/hkexsh) +[![GoDoc](https://godoc.org/blitter.com/go/xs?status.svg)](https://godoc.org/blitter.com/go/xs) -# HKExSh +# XS -- -HKExSh (**H**erradura**K**yber**Ex** **Sh**ell) is a golang implementation of a simple -remote shell client and server, similar in role to ssh, offering -encrypted interactive and non-interactive sessions, file copying and tunnels with traffic obfuscation ('chaffing'). +XS (**X**perimental **S**hell) is a golang implementation of a simple remote shell client and +server, similar in role to ssh, offering encrypted interactive and non-interactive sessions, +file copying and tunnels with traffic obfuscation ('chaffing'). *** **NOTE: Due to the experimental nature of the KEX/KEM algorithms used, and the novelty of the overall codebase, this package SHOULD BE CONSIDERED EXTREMELY EXPERIMENTAL and USED WITH CAUTION. It DEFINITELY SHOULD NOT be used for any sensitive applications. USE AT YOUR OWN RISK. NEITHER WARRANTY NOR CLAIM OF FITNESS FOR PURPOSE IS EXPRESSED OR IMPLIED.** *** -The client and server programs (hkexsh and hkexshd) use a mostly drop-in +The client and server programs (xs and xsd) use a mostly drop-in replacement for golang's standard golang/pkg/net facilities (net.Dial(), net.Listen(), net.Accept() and the net.Conn type), which automatically negotiate keying material for secure sockets using one of a selectable set of experimental key exchange (KEX) or @@ -42,10 +42,10 @@ Currently supported session algorithms: ### Conn -Calls to hkexnet.Dial() and hkexnet.Listen()/Accept() are generally the same as calls to the equivalents within the _net_ package; however upon connection a key exchange automatically occurs whereby client and server independently derive the same keying material, and all following traffic is secured by a symmetric encryption algorithm. +Calls to xsnet.Dial() and xsnet.Listen()/Accept() are generally the same as calls to the equivalents within the _net_ package; however upon connection a key exchange automatically occurs whereby client and server independently derive the same keying material, and all following traffic is secured by a symmetric encryption algorithm. ### Session Negotiation -Above the hkexnet.Conn layer, the server and client apps in this repository (hkexshd/ and hkexsh/ respectively) negotiate session settings (cipher/hmac algorithms, interactive/non-interactive mode, tunnel specifiers, etc.) to be used for communication. +Above the xsnet.Conn layer, the server and client apps in this repository (xsd/ and xs/ respectively) negotiate session settings (cipher/hmac algorithms, interactive/non-interactive mode, tunnel specifiers, etc.) to be used for communication. ### Padding and Chaffing Packets are subject to padding (random size, randomly applied as prefix or postfix), and optionally the client and server channels can both send _chaff_ packets at random defineable intervals to help thwart analysis of session activity (applicable to interactive and non-interactive command sessions, file copies and tunnels). @@ -54,7 +54,7 @@ Packets are subject to padding (random size, randomly applied as prefix or postf Chaffing and tunnels, if specified, are set up during initial client->server connection. Packets from the client local port(s) are sent through the main secured connection to the server's remote port(s), and vice versa, tagged with a chaff or tunnel specifier so that they can be discarded as chaff or de-multiplexed and delivered to the proper tunnel endpoints, respectively. ### Accounts and Passwords -Within the hkexpasswd/ directory is a password-setting utility. HKExSh uses its own password file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. This is currently done to allow alternate login credentials via hkexsh vs. console/ssh login, due to the experimental nature of the program. At some point in the future an option to use the system's /etc/passwd and /etc/shadow may be implemented, making the use of the auxilliary hkexpasswd utility optional or obsolete. +Within the xspasswd/ directory is a password-setting utility. XS uses its own password file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. This is currently done to allow alternate login credentials via xs vs. console/ssh login, due to the experimental nature of the program. At some point in the future an option to use the system's /etc/passwd and /etc/shadow may be implemented, making the use of the auxilliary xspasswd utility optional or obsolete. HERRADURA KEX @@ -85,8 +85,8 @@ As of this time (Oct 2018) Kyber is one of the candidate algorithms submitted to ### Get source code ``` -$ go get -u blitter.com/go/hkexsh -$ cd $GOPATH/src/blitter.com/go/hkexsh +$ go get -u blitter.com/go/xs +$ cd $GOPATH/src/blitter.com/go/xs $ go build ./... # install all dependent go pkgs ``` @@ -94,7 +94,7 @@ $ go build ./... # install all dependent go pkgs ### To build ``` -$ cd $GOPATH/src/blitter.com/go/hkexsh +$ cd $GOPATH/src/blitter.com/go/xs $ make clean all ``` @@ -106,24 +106,24 @@ $ sudo make [install | uninstall | reinstall] ### To manage service (assuming openrc init) -An example init script (hkexshd.initrc) is provided. Consult your Linux distribution documentation for proper service/daemon installation. For openrc, +An example init script (xsd.initrc) is provided. Consult your Linux distribution documentation for proper service/daemon installation. For openrc, ``` -$ sudo cp hkexshd.initrc /etc/init.d/hkexshd -$ sudo rc-config add hkexshd default +$ sudo cp xsd.initrc /etc/init.d/xsd +$ sudo rc-config add xsd default ``` -The make system assumes installation in /usr/local/sbin (hkexshd, hkexpasswd) and /usr/local/bin (hkexsh/hkexcp symlink). +The make system assumes installation in /usr/local/sbin (xsd, xspasswd) and /usr/local/bin (xs/xc symlink). ``` -$ sudo rc-config [start | restart | stop] hkexshd +$ sudo rc-config [start | restart | stop] xsd ``` ### To set accounts & passwords: ``` -$ sudo touch /etc/hkexsh.passwd -$ sudo hkexpasswd/hkexpasswd -u joebloggs +$ sudo touch /etc/xs.passwd +$ sudo xspasswd/xspasswd -u joebloggs $ ``` @@ -131,36 +131,36 @@ $ In separate shells A and B: ``` -[A]$ cd hkexshd && sudo ./hkexshd & # add -d for debugging +[A]$ cd xsd && sudo ./xsd & # add -d for debugging ``` Interactive shell ``` -[B]$ cd hkexsh && ./hkexsh joebloggs@host-or-ip # add -d for debugging +[B]$ cd xs && ./xs joebloggs@host-or-ip # add -d for debugging ``` One-shot command ``` -[B]$ cd hkexsh && ./hkexsh -x "ls /tmp" joebloggs@host-or-ip +[B]$ cd xs && ./xs -x "ls /tmp" joebloggs@host-or-ip ``` WARNING WARNING WARNING: the -d debug flag will echo passwords to the log/console! Logging on Linux usually goes to /var/log/syslog and/or /var/log/debug, /var/log/daemon.log. -NOTE if running client (hkexsh) with -d, one will likely need to run 'reset' afterwards +NOTE if running client (xs) with -d, one will likely need to run 'reset' afterwards to fix up the shell tty afterwards, as stty echo may not be restored if client crashes or is interrupted. ### Setting up an 'authtoken' for scripted (password-free) logins -Use the -g option of hkexsh to request a token from the remote server, which will return a -hostname:token string. Place this string into $HOME/.hkexsh_id to allow logins without -entering a password (obviously, $HOME/.hkexsh_id on both server and client for the user +Use the -g option of xs to request a token from the remote server, which will return a +hostname:token string. Place this string into $HOME/.xs_id to allow logins without +entering a password (obviously, $HOME/.xs_id on both server and client for the user should *not* be world-readable.) -### File Copying using hkexcp +### File Copying using xc -hkexcp is a symlink to hkexsh, and the binary checks its own filename to determine whether +xc is a symlink to xs, and the binary checks its own filename to determine whether it is being invoked in 'shell' or 'copy' mode. Refer to the '-h' output for differences in accepted options. @@ -171,15 +171,15 @@ as expected. Local (client) to remote (server) copy: ``` -$ hkexcp fileA /some/where/fileB /some/where/else/dirC joebloggs@host-or-ip:remoteDir +$ xc fileA /some/where/fileB /some/where/else/dirC joebloggs@host-or-ip:remoteDir ``` Remote (server) to local (client) copy: ``` -$ hkexcp joebloggs@host-or-ip:/remoteDirOrFile /some/where/local/Dir +$ xc joebloggs@host-or-ip:/remoteDirOrFile /some/where/local/Dir ``` -hkexcp uses a 'tarpipe' to send file data over the encrypted channel. Use the -d flag on client or server to see the generated tar commands if you're curious. +xc uses a 'tarpipe' to send file data over the encrypted channel. Use the -d flag on client or server to see the generated tar commands if you're curious. NOTE: Renaming while copying (eg., 'cp /foo/bar/fileA ./fileB') is NOT supported. Put another way, the destination (whether local or remote) must ALWAYS be a directory. @@ -187,12 +187,12 @@ NOTE: Renaming while copying (eg., 'cp /foo/bar/fileA ./fileB') is NOT supported Simple tunnels (client -> server, no reverse tunnels for now) are supported. -Syntax: hkexsh -T=<tunspec>{,<tunspec>...} +Syntax: xs -T=<tunspec>{,<tunspec>...} .. where <tunspec> is <localport:remoteport> -Example, tunnelling ssh through hkexsh +Example, tunnelling ssh through xs * [server side] ```$ sudo /usr/sbin/sshd -p 7002``` -* [client side, term A] ```$ hkexsh -T=6002:7002 user@server``` +* [client side, term A] ```$ xs -T=6002:7002 user@server``` * [client side, term B] ```$ ssh user@localhost -p 6002``` diff --git a/hkexauth.go b/auth.go similarity index 86% rename from hkexauth.go rename to auth.go index 170a616..f3c396c 100644 --- a/hkexauth.go +++ b/auth.go @@ -1,8 +1,8 @@ -package hkexsh +package xs -// Package hkexsh - a secure terminal client/server written from scratch in Go +// Package xs - a secure terminal client/server written from scratch in Go // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -30,7 +30,7 @@ func userExistsOnSystem(who string) bool { } // AuthUserByPasswd checks user login information using a password. -// This checks /etc/hkexsh.passwd for auth info, and system /etc/passwd +// This checks /etc/xs.passwd for auth info, and system /etc/passwd // to cross-check the user actually exists. // nolint: gocyclo func AuthUserByPasswd(username string, auth string, fname string) (valid bool, allowedCmds string) { @@ -85,7 +85,7 @@ func AuthUserByPasswd(username string, auth string, fname string) (valid bool, a } // AuthUserByToken checks user login information against an auth token. -// Auth tokens are stored in each user's $HOME/.hkexsh_id and are requested +// Auth tokens are stored in each user's $HOME/.xs_id and are requested // via the -g option. // The function also check system /etc/passwd to cross-check the user // actually exists. @@ -96,9 +96,9 @@ func AuthUserByToken(username string, connhostname string, auth string) (valid b return false } - b, e := ioutil.ReadFile(fmt.Sprintf("%s/.hkexsh_id", u.HomeDir)) + b, e := ioutil.ReadFile(fmt.Sprintf("%s/.xs_id", u.HomeDir)) if e != nil { - log.Printf("INFO: Cannot read %s/.hkexsh_id\n", u.HomeDir) + log.Printf("INFO: Cannot read %s/.xs_id\n", u.HomeDir) return false } diff --git a/consts.go b/consts.go index 56d54c8..f774e8e 100644 --- a/consts.go +++ b/consts.go @@ -1,10 +1,10 @@ -// Package hkexsh - a secure terminal client/server written from scratch in Go +// Package xs - a secure terminal client/server written from scratch in Go // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // // golang implementation by Russ Magee (rmagee_at_gmail.com) -package hkexsh +package xs -// common constants for the HKExSh +// common constants for the XS (Xperimental Shell) diff --git a/go.mod b/go.mod index 6b9f669..6be7ad1 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module blitter.com/go/hkexsh +module blitter.com/go/xs go 1.12 diff --git a/grml.yaml b/grml.yaml index 0df2761..246eb52 100644 --- a/grml.yaml +++ b/grml.yaml @@ -1,5 +1,5 @@ env: - project: hkexsh + project: xs version: 0.8.0 buildDir: build/ docDir: doc/ @@ -38,7 +38,7 @@ commands: app: aliases: [ build ] - help: build the hkexsh tools + help: build the xs tools exec: | make clean make all diff --git a/hkexpasswd/hkexpasswd-vis.gv b/hkexpasswd/hkexpasswd-vis.gv deleted file mode 100755 index 380724f..0000000 --- a/hkexpasswd/hkexpasswd-vis.gv +++ /dev/null @@ -1,63 +0,0 @@ -digraph gocallvis { - label="blitter.com/go/hkexsh/hkexpasswd"; - labeljust="l"; - fontname="Arial"; - fontsize="14"; - rankdir="LR"; - bgcolor="lightgray"; - style="solid"; - penwidth="0.5"; - pad="0.0"; - nodesep="0.35"; - - node [shape="ellipse" style="filled" fillcolor="honeydew" fontname="Verdana" penwidth="1.0" margin="0.05,0.0"]; - edge [minlen="2"] - - subgraph "cluster_focus" { - label="main"; -labelloc="t"; -labeljust="c"; -fontsize="18"; -bgcolor="#e6ecfa"; - - "blitter.com/go/hkexsh/hkexpasswd.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ] - - subgraph "cluster_blitter.com/go/hkexsh" { - label="[hkexsh]"; -penwidth="0.8"; -style="filled"; -rank="sink"; -URL="/?f=blitter.com/go/hkexsh"; -tooltip="package: blitter.com/go/hkexsh"; -fontsize="16"; -fillcolor="lightyellow"; -fontname="bold"; - - "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ] - - } - - subgraph "cluster_github.com/jameskeane/bcrypt" { - fontsize="16"; -rank="sink"; -label="[bcrypt]"; -URL="/?f=github.com/jameskeane/bcrypt"; -tooltip="package: github.com/jameskeane/bcrypt"; -penwidth="0.8"; -style="filled"; -fillcolor="lightyellow"; -fontname="bold"; - - "github.com/jameskeane/bcrypt.Salt" [ fillcolor="moccasin" label="Salt" penwidth="1.5" ] - "github.com/jameskeane/bcrypt.Hash" [ fillcolor="moccasin" label="Hash" penwidth="1.5" ] - "github.com/jameskeane/bcrypt.Match" [ fillcolor="moccasin" label="Match" penwidth="1.5" ] - - } - - } - - "blitter.com/go/hkexsh/hkexpasswd.main" -> "blitter.com/go/hkexsh.ReadPassword" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexpasswd.main" -> "github.com/jameskeane/bcrypt.Salt" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexpasswd.main" -> "github.com/jameskeane/bcrypt.Hash" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexpasswd.main" -> "github.com/jameskeane/bcrypt.Match" [ color="saddlebrown" ] -} diff --git a/hkexsh/hkexcp b/hkexsh/hkexcp deleted file mode 120000 index cf0eb1c..0000000 --- a/hkexsh/hkexcp +++ /dev/null @@ -1 +0,0 @@ -hkexsh \ No newline at end of file diff --git a/hkexsh/hkexsh-vis-fixedup.png b/hkexsh/hkexsh-vis-fixedup.png deleted file mode 100644 index 312e863944ca6bbd5a4dfb0ea3a25521bee37b9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 697628 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 z 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�*pkYr7dN%L{vdMz7zhTRT{q5D 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
      1. 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%0AbBH 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
        FS8tvOe&(d)Nb4wtoAdz&dhdq#1I`D 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
      2. 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 "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2$1" -> "blitter.com/go/goutmp.Unput_utmp" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$4" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$1" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexnet.Listen" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "(blitter.com/go/hkexsh/hkexnet.HKExListener).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.HKExListener).Accept" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetOp" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetWho" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetConnHost" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetTermType" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetCmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).SetAuthCookie" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).Op" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).Who" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).ConnHost" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).AuthCookie" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh.AuthUserByToken" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh.Session).ClearAuthCookie" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh.AuthUserByPasswd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/logger.LogNotice" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).RemoteAddr" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.GetHost" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.GenAuthToken" [ ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs$2" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$3" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$4" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "blitter.com/go/hkexsh/hkexshd.runShellAs$5" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexshd.runShellAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runShellAs" [ ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/logger.LogErr" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.Put_utmp" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.main$2$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/goutmp.Put_lastlog_entry" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runClientToServerCopyAs" [ ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexshd.main$2" -> "blitter.com/go/hkexsh/hkexshd.runServerToClientCopyAs" [ ] - "blitter.com/go/hkexsh/hkexshd.main" -> "blitter.com/go/hkexsh/hkexshd.main$2" [ arrowhead="normalnoneodot" ] -} diff --git a/hkexsession.go b/session.go similarity index 93% rename from hkexsession.go rename to session.go index 8b4183f..49fbc57 100644 --- a/hkexsession.go +++ b/session.go @@ -1,8 +1,8 @@ -package hkexsh +package xs -// Package hkexsh - a secure terminal client/server written from scratch in Go +// Package xs - a secure terminal client/server written from scratch in Go // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -28,7 +28,7 @@ type Session struct { // Output Session record as a string. Implements Stringer interface. func (h *Session) String() string { - return fmt.Sprintf("hkexsh.Session:\nOp:%v\nWho:%v\nCmd:%v\nAuthCookie:%v\nStatus:%v", + return fmt.Sprintf("xs.Session:\nOp:%v\nWho:%v\nCmd:%v\nAuthCookie:%v\nStatus:%v", h.op, h.who, h.cmd, h.AuthCookie(false), h.status) } diff --git a/termmode_unix.go b/termmode_unix.go index e1b4cd1..84538f9 100644 --- a/termmode_unix.go +++ b/termmode_unix.go @@ -1,6 +1,6 @@ // +build linux -package hkexsh +package xs import ( "errors" @@ -12,7 +12,7 @@ import ( /* ------------- * minimal terminal APIs brought in from ssh/terminal * (they have no real business being there as they aren't specific to - * ssh, but as of Go v1.10, early 2018, core go stdlib hasn't yet done + * ssh, but as of Go v1.10, late 2019, core go stdlib hasn't yet done * the planned terminal lib reorgs.) * ------------- */ diff --git a/termmode_windows.go b/termmode_windows.go index 6254ece..1df01fe 100644 --- a/termmode_windows.go +++ b/termmode_windows.go @@ -1,7 +1,7 @@ // +build windows // // Note the terminal manipulation functions herein are mostly stubs. They -// don't really do anything and the hkexsh demo client depends on a wrapper +// don't really do anything and the xs demo client depends on a wrapper // script using the 'stty' tool to actually set the proper mode for // password login and raw mode required, then restoring it upon logout/exit. // @@ -12,7 +12,7 @@ // here; the wrapper does the bare minimum to make the client workable // under MSYS+mintty which is what I use. -package hkexsh +package xs import ( "io" diff --git a/viz_hkexsh_dot.png b/viz_xs_dot.png similarity index 100% rename from viz_hkexsh_dot.png rename to viz_xs_dot.png diff --git a/hkexsh/Makefile b/xs/Makefile similarity index 65% rename from hkexsh/Makefile rename to xs/Makefile index 8e2fd39..9527cea 100644 --- a/hkexsh/Makefile +++ b/xs/Makefile @@ -11,8 +11,8 @@ clean: $(RM) $(EXE) $(EXE).exe vis: - go-callvis -file hkexsh-vis -format png -ignore $(EXTPKGS) -group pkg,type . - ../fixup-gv.sh hkexsh.go && cat hkexsh-vis.gv | dot -Tpng -ohkexsh-vis-fixedup.png + go-callvis -file xs-vis -format png -ignore $(EXTPKGS) -group pkg,type . + ../fixup-gv.sh xs.go && cat xs-vis.gv | dot -Tpng -oxs-vis-fixedup.png lint: -gometalinter --deadline=60s | sort diff --git a/hkexsh/mintty_wrapper.sh b/xs/mintty_wrapper.sh similarity index 100% rename from hkexsh/mintty_wrapper.sh rename to xs/mintty_wrapper.sh diff --git a/hkexsh/termsize_linux.go b/xs/termsize_linux.go similarity index 79% rename from hkexsh/termsize_linux.go rename to xs/termsize_linux.go index 2ee0d7c..b195339 100644 --- a/hkexsh/termsize_linux.go +++ b/xs/termsize_linux.go @@ -9,11 +9,11 @@ import ( "os/signal" "syscall" - "blitter.com/go/hkexsh/hkexnet" + "blitter.com/go/xs/xsnet" ) // Handle pty resizes (notify server side) -func handleTermResizes(conn *hkexnet.Conn) { +func handleTermResizes(conn *xsnet.Conn) { ch := make(chan os.Signal, 1) signal.Notify(ch, syscall.SIGWINCH) wg.Add(1) @@ -30,7 +30,7 @@ func handleTermResizes(conn *hkexnet.Conn) { log.Println(err) } termSzPacket := fmt.Sprintf("%d %d", rows, cols) - conn.WritePacket([]byte(termSzPacket), hkexnet.CSOTermSize) // nolint: errcheck,gosec + conn.WritePacket([]byte(termSzPacket), xsnet.CSOTermSize) // nolint: errcheck,gosec } }() ch <- syscall.SIGWINCH // Initial resize. diff --git a/hkexsh/termsize_windows.go b/xs/termsize_windows.go similarity index 88% rename from hkexsh/termsize_windows.go rename to xs/termsize_windows.go index 47f6b17..6131093 100644 --- a/hkexsh/termsize_windows.go +++ b/xs/termsize_windows.go @@ -6,11 +6,11 @@ import ( "log" "time" - "blitter.com/go/hkexsh/hkexnet" + "blitter.com/go/xs/xsnet" ) // Handle pty resizes (notify server side) -func handleTermResizes(conn *hkexnet.Conn) { +func handleTermResizes(conn *xsnet.Conn) { var hasStty bool curCols, curRows := 0, 0 _, _, err := GetSize() @@ -57,7 +57,7 @@ func handleTermResizes(conn *hkexnet.Conn) { log.Println(err) } termSzPacket := fmt.Sprintf("%d %d", curRows, curCols) - conn.WritePacket([]byte(termSzPacket), hkexnet.CSOTermSize) + conn.WritePacket([]byte(termSzPacket), xsnet.CSOTermSize) } } }() diff --git a/xs/xs-vis-fixedup.png b/xs/xs-vis-fixedup.png new file mode 100644 index 0000000000000000000000000000000000000000..4101969c6cac5616aa58eba137f24a54105836d0 GIT binary patch literal 1155846 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 z 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

        wNg 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%0DU{ACCt$>^ibesk1bE<1fKUhi*IuQW{P1+E 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

        Z0l3LvA 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 z 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\U0FGn;S#jQ$`d3|BiZ@dG~IbT2_# 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

        PYdYaQ&YilXvX!o4W%d*N6Xl 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
        vqK#nUs?e^B#`r2Z`7ZQ21MPthzv#w3;mMO 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

        ZCAeiqfbgAH268bgI){tf$XX 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

          ;#bs2VTq>z=X}0{b?}+Yv3`U#Dq;;=E`Rvu> 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 v=WjLg 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≺amr17$4RQ@v-#YATR?Dm) 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 YY;r-JW?EqW_$SQD0(7b3!p*z?0*wDEG5`Po literal 0 HcmV?d00001 diff --git a/xs/xs-vis.gv b/xs/xs-vis.gv new file mode 100755 index 0000000..d75b9be --- /dev/null +++ b/xs/xs-vis.gv @@ -0,0 +1,549 @@ +digraph gocallvis { + label="blitter.com/go/xs/xs"; + labeljust="l"; + fontname="Arial"; + fontsize="14"; + rankdir="LR"; + bgcolor="lightgray"; + style="solid"; + penwidth="0.5"; + pad="0.0"; + nodesep="0.35"; + + node [shape="ellipse" style="filled" fillcolor="honeydew" fontname="Verdana" penwidth="1.0" margin="0.05,0.0"]; + edge [minlen="2"] + + subgraph "cluster_focus" { + bgcolor="#e6ecfa"; +label="main"; +labelloc="t"; +labeljust="c"; +fontsize="18"; + + "blitter.com/go/xs/xs.reqTunnel" [ fillcolor="lightblue" label="reqTunnel" penwidth="0.5" ] + "blitter.com/go/xs/xs.launchTuns" [ label="launchTuns" penwidth="0.5" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.main$3" [ fillcolor="lightblue" label="main$3" style="dotted,filled" ] + "blitter.com/go/xs/xs.doCopyMode" [ fillcolor="lightblue" label="doCopyMode" penwidth="0.5" ] + "blitter.com/go/xs/xs.copyBuffer" [ fillcolor="lightblue" label="copyBuffer" penwidth="0.5" ] + "blitter.com/go/xs/xs.copyBuffer$1" [ label="copyBuffer$1" style="dotted,filled" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.copyBuffer$2" [ label="copyBuffer$2" style="dotted,filled" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.copyBuffer$3" [ fillcolor="lightblue" label="copyBuffer$3" style="dotted,filled" ] + "blitter.com/go/xs/xs.Copy" [ label="Copy" penwidth="1.5" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.doShellMode$1" [ fillcolor="lightblue" label="shellRemoteToStdin" style="dotted,filled" ] + "blitter.com/go/xs/xs.doShellMode$1$1" [ fillcolor="lightblue" label="doShellMode$1$1" style="dotted,filled" ] + "blitter.com/go/xs/xs.exitWithStatus" [ fillcolor="lightblue" label="exitWithStatus" penwidth="0.5" ] + "blitter.com/go/xs/xs.doShellMode" [ label="doShellMode" penwidth="0.5" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.handleTermResizes$1" [ fillcolor="lightblue" label="handleTermResizes$1" style="dotted,filled" ] + "blitter.com/go/xs/xs.GetSize" [ fillcolor="lightblue" label="GetSize" penwidth="1.5" ] + "blitter.com/go/xs/xs.handleTermResizes" [ label="handleTermResizes" penwidth="0.5" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.doShellMode$2$1" [ fillcolor="lightblue" label="doShellMode$2$1" style="dotted,filled" ] + "blitter.com/go/xs/xs.doShellMode$2" [ fillcolor="lightblue" label="shellStdinToRemote" style="dotted,filled" ] + "blitter.com/go/xs/xs.sendSessionParams" [ fillcolor="lightblue" label="sendSessionParams" penwidth="0.5" ] + "blitter.com/go/xs/xs.main" [ label="main" penwidth="0.5" fillcolor="lightblue" ] + "blitter.com/go/xs/xs.parseNonSwitchArgs" [ fillcolor="lightblue" label="parseNonSwitchArgs" penwidth="0.5" ] + "blitter.com/go/xs/xs.main$1" [ fillcolor="lightblue" label="deferRestore" style="dotted,filled" ] + "blitter.com/go/xs/xs.main$2" [ fillcolor="lightblue" label="deferCloseChaff" style="dotted,filled" ] + "blitter.com/go/xs/xs.rejectUserMsg" [ fillcolor="lightblue" label="rejectUserMsg" penwidth="0.5" ] + "blitter.com/go/xs/xs.usageShell" [ fillcolor="lightblue" label="usageShell" penwidth="0.5" ] + "blitter.com/go/xs/xs.usageCp" [ label="usageCp" penwidth="0.5" fillcolor="lightblue" ] + + subgraph "cluster_blitter.com/go/xs" { + penwidth="0.8"; +style="filled"; +rank="sink"; +tooltip="package: blitter.com/go/xs"; +fontsize="16"; +fillcolor="lightyellow"; +fontname="bold"; +label="[xs]"; +URL="/?f=blitter.com/go/xs"; + + "blitter.com/go/xs.Restore" [ fillcolor="moccasin" label="Restore" penwidth="1.5" ] + "blitter.com/go/xs.MakeRaw" [ penwidth="1.5" fillcolor="moccasin" label="MakeRaw" ] + "blitter.com/go/xs.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ] + "blitter.com/go/xs.NewSession" [ fillcolor="moccasin" label="NewSession" penwidth="1.5" ] + + subgraph "cluster_*blitter.com/go/xs.Session" { + fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="wheat2"; +label="(*Session)"; +tooltip="type: *blitter.com/go/xs.Session"; +penwidth="0.5"; + + "(*blitter.com/go/xs.Session).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ] + + } + + subgraph "cluster_blitter.com/go/xs.Session" { + style="rounded,filled"; +fillcolor="wheat2"; +label="(Session)"; +tooltip="type: blitter.com/go/xs.Session"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; + + "(blitter.com/go/xs.Session).Cmd" [ fillcolor="moccasin" label="Cmd" penwidth="1.5" ] + "(blitter.com/go/xs.Session).Status" [ penwidth="1.5" fillcolor="moccasin" label="Status" ] + "(blitter.com/go/xs.Session).Op" [ fillcolor="moccasin" label="Op" penwidth="1.5" ] + "(blitter.com/go/xs.Session).Who" [ fillcolor="moccasin" label="Who" penwidth="1.5" ] + "(blitter.com/go/xs.Session).ConnHost" [ fillcolor="moccasin" label="ConnHost" penwidth="1.5" ] + "(blitter.com/go/xs.Session).TermType" [ fillcolor="moccasin" label="TermType" penwidth="1.5" ] + "(blitter.com/go/xs.Session).AuthCookie" [ label="AuthCookie" penwidth="1.5" fillcolor="moccasin" ] + + } + + } + + subgraph "cluster_blitter.com/go/xs/logger" { + fontsize="16"; +URL="/?f=blitter.com/go/xs/logger"; +penwidth="0.8"; +style="filled"; +fillcolor="lightyellow"; +fontname="bold"; +rank="sink"; +label="[logger]"; +tooltip="package: blitter.com/go/xs/logger"; + + "blitter.com/go/xs/logger.LogDebug" [ fillcolor="moccasin" label="LogDebug" penwidth="1.5" ] + "blitter.com/go/xs/logger.New" [ fillcolor="moccasin" label="New" penwidth="1.5" ] + + } + + subgraph "cluster_blitter.com/go/xs/spinsult" { + fillcolor="lightyellow"; +fontname="bold"; +label="[spinsult]"; +URL="/?f=blitter.com/go/xs/spinsult"; +tooltip="package: blitter.com/go/xs/spinsult"; +penwidth="0.8"; +fontsize="16"; +style="filled"; +rank="sink"; + + "blitter.com/go/xs/spinsult.GetSentence" [ fillcolor="moccasin" label="GetSentence" penwidth="1.5" ] + + } + + subgraph "cluster_blitter.com/go/xs/xsnet" { + penwidth="0.8"; +fillcolor="lightyellow"; +fontname="bold"; +rank="sink"; +URL="/?f=blitter.com/go/xs/xsnet"; +fontsize="16"; +style="filled"; +label="[xsnet]"; +tooltip="package: blitter.com/go/xs/xsnet"; + + "blitter.com/go/xs/xsnet.Init" [ fillcolor="moccasin" label="Init" penwidth="1.5" ] + "blitter.com/go/xs/xsnet.Dial" [ label="Dial" penwidth="1.5" fillcolor="moccasin" ] + + subgraph "cluster_*blitter.com/go/xs/xsnet.Conn" { + fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="wheat2"; +label="(*Conn)"; +tooltip="type: *blitter.com/go/xs/xsnet.Conn"; +penwidth="0.5"; +fontsize="15"; + + "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ penwidth="1.5" fillcolor="moccasin" label="WritePacket" ] + "(*blitter.com/go/xs/xsnet.Conn).SetStatus" [ fillcolor="moccasin" label="SetStatus" penwidth="1.5" ] + "(*blitter.com/go/xs/xsnet.Conn).Close" [ penwidth="1.5" fillcolor="moccasin" label="Close" ] + "(*blitter.com/go/xs/xsnet.Conn).SetupChaff" [ penwidth="1.5" fillcolor="moccasin" label="SetupChaff" ] + "(*blitter.com/go/xs/xsnet.Conn).EnableChaff" [ fillcolor="moccasin" label="EnableChaff" penwidth="1.5" ] + "(*blitter.com/go/xs/xsnet.Conn).DisableChaff" [ fillcolor="moccasin" label="DisableChaff" penwidth="1.5" ] + "(*blitter.com/go/xs/xsnet.Conn).ShutdownChaff" [ fillcolor="moccasin" label="ShutdownChaff" penwidth="1.5" ] + + } + + subgraph "cluster_blitter.com/go/xs/xsnet.Conn" { + labelloc="b"; +style="rounded,filled"; +fillcolor="wheat2"; +label="(Conn)"; +tooltip="type: blitter.com/go/xs/xsnet.Conn"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; + + "(blitter.com/go/xs/xsnet.Conn).Read" [ label="Read" penwidth="1.5" fillcolor="moccasin" ] + "(blitter.com/go/xs/xsnet.Conn).GetStatus" [ fillcolor="moccasin" label="GetStatus" penwidth="1.5" ] + "(blitter.com/go/xs/xsnet.Conn).Write" [ label="Write" penwidth="1.5" fillcolor="moccasin" ] + + } + + } + + subgraph "cluster_compress/flate" { + fontsize="16"; +fillcolor="#E0FFE1"; +label="[compress/flate]"; +URL="/?f=compress/flate"; +penwidth="0.8"; +style="filled"; +fontname="bold"; +rank="sink"; +tooltip="package: compress/flate"; + + + subgraph "cluster_compress/flate.CorruptInputError" { + tooltip="type: compress/flate.CorruptInputError"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(CorruptInputError)"; + + "(compress/flate.CorruptInputError).Error" [ penwidth="1.5" fillcolor="#adedad" label="Error" ] + + } + + subgraph "cluster_compress/flate.InternalError" { + fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(InternalError)"; +tooltip="type: compress/flate.InternalError"; +penwidth="0.5"; + + "(compress/flate.InternalError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + } + + subgraph "cluster_context" { + fontsize="16"; +style="filled"; +penwidth="0.8"; +fontname="bold"; +rank="sink"; +label="[context]"; +URL="/?f=context"; +tooltip="package: context"; +fillcolor="#E0FFE1"; + + + subgraph "cluster_context.deadlineExceededError" { + fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(deadlineExceededError)"; +tooltip="type: context.deadlineExceededError"; +penwidth="0.5"; + + "(context.deadlineExceededError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + } + + subgraph "cluster_crypto/aes" { + style="filled"; +fillcolor="#E0FFE1"; +rank="sink"; +label="[crypto/aes]"; +penwidth="0.8"; +fontsize="16"; +fontname="bold"; +URL="/?f=crypto/aes"; +tooltip="package: crypto/aes"; + + + subgraph "cluster_crypto/aes.KeySizeError" { + fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(KeySizeError)"; +tooltip="type: crypto/aes.KeySizeError"; +penwidth="0.5"; +fontsize="15"; + + "(crypto/aes.KeySizeError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + } + + subgraph "cluster_crypto/tls" { + tooltip="package: crypto/tls"; +fontsize="16"; +style="filled"; +fontname="bold"; +rank="sink"; +label="[crypto/tls]"; +URL="/?f=crypto/tls"; +penwidth="0.8"; +fillcolor="#E0FFE1"; + + + subgraph "cluster_crypto/tls.RecordHeaderError" { + fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(RecordHeaderError)"; +tooltip="type: crypto/tls.RecordHeaderError"; +penwidth="0.5"; +fontsize="15"; + + "(crypto/tls.RecordHeaderError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + subgraph "cluster_crypto/tls.alert" { + penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(alert)"; +tooltip="type: crypto/tls.alert"; + + "(crypto/tls.alert).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + } + + subgraph "cluster_crypto/x509" { + penwidth="0.8"; +tooltip="package: crypto/x509"; +fontsize="16"; +style="filled"; +fillcolor="#E0FFE1"; +fontname="bold"; +rank="sink"; +label="[crypto/x509]"; +URL="/?f=crypto/x509"; + + + subgraph "cluster_crypto/x509.CertificateInvalidError" { + penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(CertificateInvalidError)"; +tooltip="type: crypto/x509.CertificateInvalidError"; + + "(crypto/x509.CertificateInvalidError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + subgraph "cluster_crypto/x509.HostnameError" { + labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(HostnameError)"; +tooltip="type: crypto/x509.HostnameError"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; + + "(crypto/x509.HostnameError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + subgraph "cluster_crypto/x509.SystemRootsError" { + fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(SystemRootsError)"; +tooltip="type: crypto/x509.SystemRootsError"; +penwidth="0.5"; + + "(crypto/x509.SystemRootsError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + subgraph "cluster_crypto/x509.UnhandledCriticalExtension" { + style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(UnhandledCriticalExtension)"; +tooltip="type: crypto/x509.UnhandledCriticalExtension"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; + + "(crypto/x509.UnhandledCriticalExtension).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + subgraph "cluster_crypto/x509.UnknownAuthorityError" { + style="rounded,filled"; +fillcolor="#c2e3c2"; +label="(UnknownAuthorityError)"; +tooltip="type: crypto/x509.UnknownAuthorityError"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; + + "(crypto/x509.UnknownAuthorityError).Error" [ fillcolor="#adedad" label="Error" penwidth="1.5" ] + + } + + } + + subgraph "cluster_github.com/mattn/go-isatty" { + fontname="bold"; +penwidth="0.8"; +fillcolor="lightyellow"; +rank="sink"; +label="[isatty]"; +URL="/?f=github.com/mattn/go-isatty"; +tooltip="package: github.com/mattn/go-isatty"; +fontsize="16"; +style="filled"; + + "github.com/mattn/go-isatty.IsTerminal" [ label="IsTerminal" penwidth="1.5" fillcolor="moccasin" ] + + } + + subgraph "cluster_github.com/pkg/errors" { + style="filled"; +fillcolor="lightyellow"; +URL="/?f=github.com/pkg/errors"; +rank="sink"; +label="[errors]"; +tooltip="package: github.com/pkg/errors"; +penwidth="0.8"; +fontsize="16"; +fontname="bold"; + + + subgraph "cluster_*github.com/pkg/errors.fundamental" { + label="(*fundamental)"; +tooltip="type: *github.com/pkg/errors.fundamental"; +penwidth="0.5"; +fontsize="15"; +fontcolor="#222222"; +labelloc="b"; +style="rounded,filled"; +fillcolor="wheat2"; + + "(*github.com/pkg/errors.fundamental).Error" [ penwidth="1.5" fillcolor="moccasin" label="Error" ] + + } + + } + + subgraph "cluster_math/rand" { + penwidth="0.8"; +fillcolor="#E0FFE1"; +rank="sink"; +URL="/?f=math/rand"; +fontsize="16"; +style="filled"; +fontname="bold"; +label="[math/rand]"; +tooltip="package: math/rand"; + + "math/rand.Intn" [ fillcolor="#adedad" label="Intn" penwidth="1.5" ] + + } + + } + + "blitter.com/go/xs/xs.reqTunnel" -> "blitter.com/go/xs/logger.LogDebug" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.reqTunnel" -> "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.launchTuns" -> "blitter.com/go/xs/xs.reqTunnel" [ ] + "blitter.com/go/xs/xs.main$3" -> "math/rand.Intn" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main$3" -> "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doCopyMode" -> "(blitter.com/go/xs.Session).Cmd" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doCopyMode" -> "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doCopyMode" -> "(blitter.com/go/xs/xsnet.Conn).Read" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doCopyMode" -> "(*blitter.com/go/xs/xsnet.Conn).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doCopyMode" -> "(blitter.com/go/xs/xsnet.Conn).GetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.copyBuffer" -> "(blitter.com/go/xs/xsnet.Conn).Write" [ color="saddlebrown" style="dashed" ] + "blitter.com/go/xs/xs.copyBuffer" -> "blitter.com/go/xs/xs.copyBuffer$1" [ style="dashed" ] + "blitter.com/go/xs/xs.copyBuffer" -> "blitter.com/go/xs/xs.copyBuffer$2" [ style="dashed" ] + "blitter.com/go/xs/xs.copyBuffer" -> "blitter.com/go/xs/xs.copyBuffer$3" [ style="dashed" ] + "blitter.com/go/xs/xs.Copy" -> "blitter.com/go/xs/xs.copyBuffer" [ ] + "blitter.com/go/xs/xs.doShellMode$1" -> "blitter.com/go/xs/xs.doShellMode$1$1" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "blitter.com/go/xs.Restore" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(blitter.com/go/xs/xsnet.Conn).GetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(*blitter.com/go/xs.Session).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(blitter.com/go/xs.Session).Status" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "blitter.com/go/xs/xs.exitWithStatus" [ ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/x509.CertificateInvalidError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/aes.KeySizeError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/x509.HostnameError).Error" [ color="saddlebrown" style="dashed" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/x509.UnhandledCriticalExtension).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(context.deadlineExceededError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(compress/flate.CorruptInputError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/tls.RecordHeaderError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/x509.UnknownAuthorityError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/x509.SystemRootsError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(compress/flate.InternalError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(crypto/tls.alert).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$1" -> "(*github.com/pkg/errors.fundamental).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode" -> "blitter.com/go/xs/xs.doShellMode$1" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xs.handleTermResizes$1" -> "blitter.com/go/xs/xs.GetSize" [ ] + "blitter.com/go/xs/xs.handleTermResizes$1" -> "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.handleTermResizes" -> "blitter.com/go/xs/xs.handleTermResizes$1" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xs.doShellMode" -> "blitter.com/go/xs/xs.handleTermResizes" [ ] + "blitter.com/go/xs/xs.doShellMode$2$1" -> "blitter.com/go/xs/xs.Copy" [ ] + "blitter.com/go/xs/xs.doShellMode$2" -> "blitter.com/go/xs/xs.doShellMode$2$1" [ ] + "blitter.com/go/xs/xs.doShellMode$2" -> "blitter.com/go/xs.Restore" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.doShellMode$2" -> "blitter.com/go/xs/xs.exitWithStatus" [ ] + "blitter.com/go/xs/xs.doShellMode" -> "blitter.com/go/xs/xs.doShellMode$2" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).Op" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).Who" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).ConnHost" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).TermType" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).Cmd" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs.Session).AuthCookie" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.sendSessionParams" -> "(blitter.com/go/xs/xsnet.Conn).Write" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.parseNonSwitchArgs" [ ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.main$1" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.exitWithStatus" [ ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/logger.New" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xsnet.Init" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xsnet.Dial" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs/xsnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs.MakeRaw" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main$2" -> "blitter.com/go/xs.Restore" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.main$2" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs.ReadPassword" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs.NewSession" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.sendSessionParams" [ ] + "blitter.com/go/xs/xs.main" -> "(blitter.com/go/xs/xsnet.Conn).Read" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs.Session).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.rejectUserMsg" -> "blitter.com/go/xs/spinsult.GetSentence" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.rejectUserMsg" [ ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs/xsnet.Conn).SetupChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs/xsnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs/xsnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "(*blitter.com/go/xs/xsnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.main$3" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.launchTuns" [ ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.doShellMode" [ ] + "blitter.com/go/xs/xs.main" -> "(blitter.com/go/xs.Session).Status" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.doCopyMode" [ ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs.Restore" [ color="saddlebrown" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.usageShell" [ style="dashed" ] + "blitter.com/go/xs/xs.main" -> "blitter.com/go/xs/xs.usageCp" [ style="dashed" ] +} diff --git a/hkexsh/hkexsh.go b/xs/xs.go similarity index 92% rename from hkexsh/hkexsh.go rename to xs/xs.go index 8a69f89..66f923a 100755 --- a/hkexsh/hkexsh.go +++ b/xs/xs.go @@ -1,4 +1,4 @@ -// hkexsh client +// xs client // // Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this @@ -33,10 +33,10 @@ import ( "net/http" _ "net/http/pprof" - hkexsh "blitter.com/go/hkexsh" - "blitter.com/go/hkexsh/hkexnet" - "blitter.com/go/hkexsh/logger" - "blitter.com/go/hkexsh/spinsult" + xs "blitter.com/go/xs" + "blitter.com/go/xs/xsnet" + "blitter.com/go/xs/logger" + "blitter.com/go/xs/spinsult" isatty "github.com/mattn/go-isatty" ) @@ -110,7 +110,7 @@ type ( // some client escape sequences to trigger special actions during // interactive sessions. // -// (See go doc hkexsh/hkexsh.{escSeqs,escHandler}) +// (See go doc xs/xs.{escSeqs,escHandler}) func Copy(dst io.Writer, src io.Reader) (written int64, err error) { written, err = copyBuffer(dst, src, nil) return @@ -123,7 +123,7 @@ func Copy(dst io.Writer, src io.Reader) (written int64, err error) { // go stdlib pkg/io, with escape sequence interpretation to trigger // some special client-side actions. // -// (See go doc hkexsh/hkexsh.{escSeqs,escHandler}) +// (See go doc xs/xs.{escSeqs,escHandler}) func copyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err error) { // NOTE: using dst.Write() in these esc funcs will cause the output // to function as a 'macro', outputting as if user typed the sequence @@ -240,10 +240,10 @@ func GetSize() (cols, rows int, err error) { return } -// doCopyMode begins a secure hkexsh local<->remote file copy operation. +// doCopyMode begins a secure xs local<->remote file copy operation. // // TODO: reduce gocyclo -func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.Session) (exitStatus uint32, err error) { +func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, rec *xs.Session) (exitStatus uint32, err error) { if remoteDest { log.Println("local files:", files, "remote filepath:", string(rec.Cmd())) @@ -328,7 +328,7 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S log.Println("Sending local exitStatus:", exitStatus) r := make([]byte, 4) binary.BigEndian.PutUint32(r, exitStatus) - _, we := conn.WritePacket(r, hkexnet.CSOExitStatus) + _, we := conn.WritePacket(r, xsnet.CSOExitStatus) if we != nil { fmt.Println("Error:", we) } @@ -398,9 +398,9 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S return } -// doShellMode begins an hkexsh shell session (one-shot command or +// doShellMode begins an xs shell session (one-shot command or // interactive). -func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, rec *hkexsh.Session) { +func doShellMode(isInteractive bool, conn *xsnet.Conn, oldState *xs.State, rec *xs.Session) { //client reader (from server) goroutine //Read remote end's stdout @@ -420,7 +420,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, // exit with inerr == nil _, inerr := io.Copy(os.Stdout, conn) if inerr != nil { - _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // #nosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec // Copy operations and user logging off will cause // a "use of closed network connection" so handle that // gracefully here @@ -435,7 +435,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, if isInteractive { log.Println("[* Got EOF *]") - _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // #nosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec exitWithStatus(int(rec.Status())) } } @@ -453,7 +453,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, // TODO:.gv:doShellMode:2:shellStdinToRemote shellStdinToRemote := func() { defer wg.Done() - _, outerr := func(conn *hkexnet.Conn, r io.Reader) (w int64, e error) { + _, outerr := func(conn *xsnet.Conn, r io.Reader) (w int64, e error) { // Copy() expects EOF so this will // exit with outerr == nil w, e = Copy(conn, r) @@ -463,7 +463,7 @@ func doShellMode(isInteractive bool, conn *hkexnet.Conn, oldState *hkexsh.State, if outerr != nil { log.Println(outerr) fmt.Println(outerr) - _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // #nosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec log.Println("[Hanging up]") exitWithStatus(0) } @@ -500,8 +500,8 @@ func rejectUserMsg() string { // Transmit request to server for it to set up the remote end of a tunnel // // Server responds with [CSOTunAck:rport] or [CSOTunRefused:rport] -// (handled in hkexnet.Read()) -func reqTunnel(hc *hkexnet.Conn, lp uint16, p string /*net.Addr*/, rp uint16) { +// (handled in xsnet.Read()) +func reqTunnel(hc *xsnet.Conn, lp uint16, p string /*net.Addr*/, rp uint16) { // Write request to server so it can attempt to set up its end var bTmp bytes.Buffer if e := binary.Write(&bTmp, binary.BigEndian, lp); e != nil { @@ -511,7 +511,7 @@ func reqTunnel(hc *hkexnet.Conn, lp uint16, p string /*net.Addr*/, rp uint16) { fmt.Fprintln(os.Stderr, "reqTunnel:", e) // nolint: errcheck } _ = logger.LogDebug(fmt.Sprintln("[Client sending CSOTunSetup]")) // nolint: gosec - if n, e := hc.WritePacket(bTmp.Bytes(), hkexnet.CSOTunSetup); e != nil || n != len(bTmp.Bytes()) { + if n, e := hc.WritePacket(bTmp.Bytes(), xsnet.CSOTunSetup); e != nil || n != len(bTmp.Bytes()) { fmt.Fprintln(os.Stderr, "reqTunnel:", e) // nolint: errcheck } } @@ -551,7 +551,7 @@ func parseNonSwitchArgs(a []string) (user, host, path string, isDest bool, other return fancyUser, fancyHost, fancyPath, isDest, otherArgs } -func launchTuns(conn *hkexnet.Conn, remoteHost string, tuns string) { +func launchTuns(conn *xsnet.Conn, remoteHost string, tuns string) { remAddrs, _ := net.LookupHost(remoteHost) // nolint: gosec if tuns == "" { @@ -566,7 +566,7 @@ func launchTuns(conn *hkexnet.Conn, remoteHost string, tuns string) { } } -func sendSessionParams(conn io.Writer /* *hkexnet.Conn*/, rec *hkexsh.Session) (e error) { +func sendSessionParams(conn io.Writer /* *xsnet.Conn*/, rec *xs.Session) (e error) { _, e = fmt.Fprintf(conn, "%d %d %d %d %d %d\n", len(rec.Op()), len(rec.Who()), len(rec.ConnHost()), len(rec.TermType()), len(rec.Cmd()), len(rec.AuthCookie(true))) if e != nil { @@ -641,7 +641,7 @@ func main() { // Find out what program we are (shell or copier) myPath := strings.Split(os.Args[0], string(os.PathSeparator)) if myPath[len(myPath)-1] != "hkexcp" && myPath[len(myPath)-1] != "hkexcp.exe" { - // hkexsh accepts a command (-x) but not + // xs accepts a command (-x) but not // a srcpath (-r) or dstpath (-t) flag.StringVar(&cmdStr, "x", "", "run <`command`> (if not specified, run interactive shell)") flag.StringVar(&tunSpecStr, "T", "", "``tunnelspec - localPort:remotePort[,localPort:remotePort,...]") @@ -742,8 +742,8 @@ func main() { // either the shell session or copy operation. _ = shellMode - Log, _ = logger.New(logger.LOG_USER|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR, "hkexsh") // nolint: errcheck,gosec - hkexnet.Init(dbg, "hkexsh", logger.LOG_USER|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR) + Log, _ = logger.New(logger.LOG_USER|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR, "xs") // nolint: errcheck,gosec + xsnet.Init(dbg, "xs", logger.LOG_USER|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR) if dbg { log.SetOutput(Log) } else { @@ -753,7 +753,7 @@ func main() { if !gopt { // See if we can log in via an auth token u, _ := user.Current() // nolint: gosec - ab, aerr := ioutil.ReadFile(fmt.Sprintf("%s/.hkexsh_id", u.HomeDir)) + ab, aerr := ioutil.ReadFile(fmt.Sprintf("%s/.xs_id", u.HomeDir)) if aerr == nil { idx := strings.Index(string(ab), remoteHost) if idx >= 0 { @@ -767,7 +767,7 @@ func main() { _, _ = fmt.Fprintln(os.Stderr, "[no authtoken, use -g to request one from server]") } } else { - log.Printf("[cannot read %s/.hkexsh_id]\n", u.HomeDir) + log.Printf("[cannot read %s/.xs_id]\n", u.HomeDir) } } @@ -826,7 +826,7 @@ func main() { if kcpMode != "unused" { proto = "kcp" } - conn, err := hkexnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg, kcpMode) + conn, err := xsnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg, kcpMode) if err != nil { fmt.Println(err) exitWithStatus(3) @@ -837,16 +837,16 @@ func main() { // Set stdin in raw mode if it's an interactive session // TODO: send flag to server side indicating this // affects shell command used - var oldState *hkexsh.State + var oldState *xs.State if shellMode { if isatty.IsTerminal(os.Stdin.Fd()) { - oldState, err = hkexsh.MakeRaw(int(os.Stdin.Fd())) + oldState, err = xs.MakeRaw(int(os.Stdin.Fd())) if err != nil { panic(err) } // #gv:s/label=\"main\$1\"/label=\"deferRestore\"/ // TODO:.gv:main:1:deferRestore - defer func() { _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) }() // nolint: errcheck,gosec + defer func() { _ = xs.Restore(int(os.Stdin.Fd()), oldState) }() // nolint: errcheck,gosec } else { log.Println("NOT A TTY") } @@ -855,7 +855,7 @@ func main() { if len(authCookie) == 0 { //No auth token, prompt for password fmt.Printf("Gimme cookie:") - ab, e := hkexsh.ReadPassword(int(os.Stdin.Fd())) + ab, e := xs.ReadPassword(int(os.Stdin.Fd())) fmt.Printf("\r\n") if e != nil { panic(e) @@ -866,7 +866,7 @@ func main() { runtime.GC() // Set up session params and send over to server - rec := hkexsh.NewSession(op, []byte(uname), []byte(remoteHost), []byte(os.Getenv("TERM")), []byte(cmdStr), []byte(authCookie), 0) + rec := xs.NewSession(op, []byte(uname), []byte(remoteHost), []byte(os.Getenv("TERM")), []byte(cmdStr), []byte(authCookie), 0) sendErr := sendSessionParams(&conn, rec) if sendErr != nil { log.Fatal(sendErr) @@ -909,7 +909,7 @@ func main() { // FIXME: keepAlives should probably have small random packet len/data as well // to further obscure them vs. interactive or tunnel data // keepAlives must be >=2 bytes, due to processing elsewhere - conn.WritePacket([]byte{0, 0}, hkexnet.CSOTunKeepAlive) // nolint: errcheck,gosec + conn.WritePacket([]byte{0, 0}, xsnet.CSOTunKeepAlive) // nolint: errcheck,gosec } } go keepAliveWorker() @@ -924,13 +924,13 @@ func main() { } if rec.Status() != 0 { - _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec fmt.Fprintln(os.Stderr, "Session exited with status:", rec.Status()) // nolint: errcheck } } if oldState != nil { - _ = hkexsh.Restore(int(os.Stdin.Fd()), oldState) // nolint: gosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: gosec } exitWithStatus(int(rec.Status())) diff --git a/xs/xs_seq.png b/xs/xs_seq.png new file mode 100644 index 0000000000000000000000000000000000000000..859f6463c15d3057d279a94f092352bbaa346a1d GIT binary patch literal 68489 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 z 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 literal 0 HcmV?d00001 diff --git a/hkexshd.initrc b/xsd.initrc similarity index 63% rename from hkexshd.initrc rename to xsd.initrc index 80b8bed..f76a9af 100755 --- a/hkexshd.initrc +++ b/xsd.initrc @@ -1,11 +1,11 @@ #!/sbin/openrc-run -SVCNAME=hkexshd -HKEXSHD_PIDFILE=/var/run/hkexshd.pid -HKEXSHD_USER=root -HKEXSHD_HOME=/var/run +SVCNAME=xsd +XSD_PIDFILE=/var/run/xsd.pid +XSD_USER=root +XSD_HOME=/var/run INST_PREFIX=/usr/local -COMMAND=$INST_PREFIX/sbin/hkexshd +COMMAND=$INST_PREFIX/sbin/xsd ARGS="" depend() { @@ -25,8 +25,8 @@ start() { ebegin "Starting ${SVCNAME}" start-stop-daemon \ - -d ${HKEXSHD_HOME} \ - --make-pidfile --pidfile ${HKEXSHD_PIDFILE} \ + -d ${XSD_HOME} \ + --make-pidfile --pidfile ${XSD_PIDFILE} \ --start --quiet --background \ --exec "${COMMAND}" "${ARGS}" eend $? @@ -34,6 +34,6 @@ start() { stop() { ebegin "Stopping ${SVCNAME}" - start-stop-daemon --stop --quiet --pidfile $HKEXSHD_PIDFILE + start-stop-daemon --stop --quiet --pidfile $XSD_PIDFILE eend $? } diff --git a/hkexshd/Makefile b/xsd/Makefile similarity index 63% rename from hkexshd/Makefile rename to xsd/Makefile index 9963a7b..f36bc82 100644 --- a/hkexshd/Makefile +++ b/xsd/Makefile @@ -10,8 +10,8 @@ clean: $(RM) $(EXE) $(EXE).exe vis: - go-callvis -file hkexshd-vis -format png -ignore $(EXTPKGS) -group pkg,type . - ../fixup-gv.sh hkexshd.go && cat hkexshd-vis.gv | dot -Tpng -ohkexshd-vis-fixedup.png + go-callvis -file xsd-vis -format png -ignore $(EXTPKGS) -group pkg,type . + ../fixup-gv.sh xsd.go && cat xsd-vis.gv | dot -Tpng -oxsd-vis-fixedup.png lint: -gometalinter --deadline=60s | sort diff --git a/hkexshd/hkexshd-vis.png b/xsd/hkexshd-vis.png similarity index 100% rename from hkexshd/hkexshd-vis.png rename to xsd/hkexshd-vis.png diff --git a/xsd/xsd-vis-fixedup.png b/xsd/xsd-vis-fixedup.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4b3207dc9a8368a2aef831ef535b1c35984fbe GIT binary patch literal 800476 zcmdpdRa9GD6ej&Ew6s)#;hiW5B0;_iXsZK2R2p}1@CkWeH9Pl2MrJ!o+W z?#^8L%e>5*wPqgXVJ>9dlS{(gXWQB5`}X~&sw_uLL`g(IKtL@2=CwKj!SzrAf}007 zZva=qQVc18(+y)qxz_|2mp|#XxlsfJPYC2+ztH@UygK3jLBnjec}v{NtuH~j-4aJd z@j3k~(F_5)2oL%6JN0+>x6I56Li=knO|`;AH;F#qr1vV~8|$l08azFJ!@2!gl_Icw zsvF|OB)Ta2%-z|Ew8EpynS|KQSJ)xpYGlwGWk~m#x|1m%kgvY;9MD9 z8H4aREAZ~)t00Qze?CGWPjWfTgYikxrOR%S5z}JS>oUzet>=zb2A|3(X=D!UR7CBr zw%oR9J{R){?OGetLr{timMhtSoyJ~`uHIVRtAXdJ^x0`A7fjNq4{+de%)^WaVcOgi zo)`UkMk`}>tCK@K=lsJ~-P{^mRrysGhwt`m;|k5&)K>aXaQmvoTXrl5XB%UG0dmM) zi_HQ~&r=pyQ;S@}>tt^4uv?eg>7Rw9)*#W_#=^@L32|0ShemER-{Uf@qUeS;{79^u zy1Q51klh;+YQi;Ai++nn@L>cd$9|Mw&8`&F+rz}`N*u#q}(g0j=sbl5+o&z$}o)q#;V0&c&KoD zc+Ljj<%}?_RenTEm+>Y_jZ~B$(vPM58qA?-|7QmdG(+NQ_K4yDxl!8?3*xowXIHprGl2- zmE}%Gc?vr70kN^G8Wu|{E>P{{etLb^;2TCKHK}V9Y^B}mj!{OIpF*i-mQddEnUWGL=H|^aSeaK{^A9duxrN2To|J=oL^D~H) zQf!4?UOha5ZY8R^D`MWybLo0oOknd3Yc%7f2~{6Ey`ToploEbN>UR5wO!BXgQjqYH z5&g2~?miJuYT%B-|n3U`fdY#mJz4&W0g!w;zf|w^*x& zpX-6vV;HYXBus~1<`QbHe$%ii(#}H8)$*(g)>_xE~%dEBU}f+5|-7E$g5za z)g$Lv6Dhm$fN%YLFLSAOf;VE;zl4uX$1V3H3&QBv$P#QLtozE*f#X}jzF;B6$El7X z^h&ZGAvrdBFU%@tFQ*>#*LgPN3J^akiw_*pl{O4$RH`qSk@n2dEP`&h- zKL_I<_xUp{_@Bf7Pp-=6I1>In&7WL2T!I*W*O!lle4T}WF|5L*?A&EKdm6e`l<|*V zL_S|Ty|UKPHL!}K3lb;l`5i{N7pf2((m*q7^tV-ja0}q23|r}ixm1`C5E~j8yscn3 z#p^VZ|9uyNC*KFK;QTbFd?_K{7NoRI7~P4_w+-8h$J^ zMEv*ty@uMPSa$M`o>lg~Mw(G{Y`nYtUyP| z9g7*KQ3UD2g~`v-|@U!qs{@R<%_)nZtj}+2pZnxzK9ican@WqG9V5 zR#v|gUuLgFXc*scjhm3mYWW5Fq0y3jPf8$W!XZ5hjgCP>h0r9#86xtHTEP3!5 zDRIGvQdm#lwU1l+w8cMvZ^c0-e%5VjQ<~UdZ{^{3ECjQTYHD6-wN7w#5c-a%BarD3uQV;8UArT$NYwcPfiMroR^{WLAi1Gf6S zTe1_oP34l!l$`QaYs*ff->cQB$ow+VMs

          x|fT`I(K3*dz&vTN?y}u=ahqmi}-O# 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

          ^6z^4KI{O$~ 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­0Y|k^{u|op%+Y8 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

          @h-Lrk3$Rnp8 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�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%0DBR2?;n#pk$dlu^=>0BvG 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 "(*blitter.com/go/xs/xsnet.Conn).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetOp" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetWho" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetConnHost" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetTermType" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetCmd" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).SetAuthCookie" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).Op" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).Who" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).ConnHost" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).Cmd" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).AuthCookie" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs.AuthUserByToken" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs.Session).ClearAuthCookie" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs.AuthUserByPasswd" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs/xsnet.Conn).Write" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/logger.LogNotice" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs/xsnet.Conn).RemoteAddr" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/goutmp.GetHost" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/xsd.GenAuthToken" [ ] + "blitter.com/go/xs/xsd.main$2" -> "(blitter.com/go/xs.Session).TermType" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "github.com/kr/pty.Start" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$1" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xsd.ptsName" -> "blitter.com/go/xs/xsd.ioctl" [ ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.ptsName" [ ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/goutmp.Put_utmp" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs$2" -> "blitter.com/go/goutmp.Unput_utmp" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$2" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/goutmp.Put_lastlog_entry" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs$3" -> "github.com/kr/pty.Setsize" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$3" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xsd.runShellAs$4" -> "(context.deadlineExceededError).Error" [ color="saddlebrown" style="dashed" ] + "blitter.com/go/xs/xsd.runShellAs$4" -> "(*github.com/pkg/errors.fundamental).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$4" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xsd.runShellAs" -> "(*blitter.com/go/xs/xsnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs$5" -> "(*blitter.com/go/xs/xsnet.Conn).DisableChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs$5" -> "(*blitter.com/go/xs/xsnet.Conn).ShutdownChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$5" [ arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xsd.runShellAs$6" -> "(context.deadlineExceededError).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs$6" -> "(*github.com/pkg/errors.fundamental).Error" [ style="dashed" color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/xsd.runShellAs$6" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xsd.runShellAs" -> "blitter.com/go/xs/logger.LogDebug" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runShellAs" -> "(*blitter.com/go/xs/xsnet.Conn).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/xsd.runShellAs" [ ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/logger.LogErr" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs/xsnet.Conn).SetStatus" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runClientToServerCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runClientToServerCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xsd.runClientToServerCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/xsd.runClientToServerCopyAs" [ ] + "blitter.com/go/xs/xsd.main$2" -> "(*blitter.com/go/xs/xsnet.Conn).WritePacket" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runServerToClientCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).EnableChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.runServerToClientCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xsd.runServerToClientCopyAs" -> "(*blitter.com/go/xs/xsnet.Conn).ShutdownChaff" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] + "blitter.com/go/xs/xsd.main$2" -> "blitter.com/go/xs/xsd.runServerToClientCopyAs" [ ] + "blitter.com/go/xs/xsd.main" -> "blitter.com/go/xs/logger.New" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "blitter.com/go/xs/xsnet.Init" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main$1" -> "blitter.com/go/xs/logger.LogNotice" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "blitter.com/go/xs/xsd.main$1" [ arrowhead="normalnoneodot" ] + "blitter.com/go/xs/xsd.main" -> "blitter.com/go/xs/xsnet.Listen" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "(blitter.com/go/xs/xsnet.HKExListener).Close" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "(*blitter.com/go/xs/xsnet.HKExListener).Accept" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "(*blitter.com/go/xs/xsnet.Conn).SetupChaff" [ color="saddlebrown" ] + "blitter.com/go/xs/xsd.main" -> "blitter.com/go/xs/xsd.main$2" [ arrowhead="normalnoneodot" ] +} diff --git a/hkexshd/hkexshd.go b/xsd/xsd.go similarity index 90% rename from hkexshd/hkexshd.go rename to xsd/xsd.go index f780a0b..0860049 100755 --- a/hkexshd/hkexshd.go +++ b/xsd/xsd.go @@ -1,6 +1,6 @@ -// hkexshd server +// xsd server // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -28,9 +28,9 @@ import ( "unsafe" "blitter.com/go/goutmp" - hkexsh "blitter.com/go/hkexsh" - "blitter.com/go/hkexsh/hkexnet" - "blitter.com/go/hkexsh/logger" + xs "blitter.com/go/xs" + "blitter.com/go/xs/xsnet" + "blitter.com/go/xs/logger" "github.com/kr/pty" ) @@ -63,7 +63,7 @@ func ptsName(fd uintptr) (string, error) { /* -------------------------------------------------------------- */ // Perform a client->server copy -func runClientToServerCopyAs(who, ttype string, conn *hkexnet.Conn, fpath string, chaffing bool) (exitStatus uint32, err error) { +func runClientToServerCopyAs(who, ttype string, conn *xsnet.Conn, fpath string, chaffing bool) (exitStatus uint32, err error) { u, _ := user.Lookup(who) // nolint: gosec var uid, gid uint32 fmt.Sscanf(u.Uid, "%d", &uid) // nolint: gosec,errcheck @@ -139,7 +139,7 @@ func runClientToServerCopyAs(who, ttype string, conn *hkexnet.Conn, fpath string log.Println("cmd exited immediately. Cannot get cmd.Wait().ExitStatus()") err = errors.New("cmd exited prematurely") //exitStatus = uint32(254) - exitStatus = hkexnet.CSEExecFail + exitStatus = xsnet.CSEExecFail } else { if err := c.Wait(); err != nil { //fmt.Println("*** c.Wait() done ***") @@ -163,7 +163,7 @@ func runClientToServerCopyAs(who, ttype string, conn *hkexnet.Conn, fpath string } // Perform a server->client copy -func runServerToClientCopyAs(who, ttype string, conn *hkexnet.Conn, srcPath string, chaffing bool) (exitStatus uint32, err error) { +func runServerToClientCopyAs(who, ttype string, conn *xsnet.Conn, srcPath string, chaffing bool) (exitStatus uint32, err error) { u, err := user.Lookup(who) if err != nil { exitStatus = 1 @@ -225,7 +225,7 @@ func runServerToClientCopyAs(who, ttype string, conn *hkexnet.Conn, srcPath stri err = c.Start() // returns immediately if err != nil { log.Printf("Command finished with error: %v", err) - return hkexnet.CSEExecFail, err // !? + return xsnet.CSEExecFail, err // !? } if err := c.Wait(); err != nil { //fmt.Println("*** c.Wait() done ***") @@ -253,7 +253,7 @@ func runServerToClientCopyAs(who, ttype string, conn *hkexnet.Conn, srcPath stri // // Uses ptys to support commands which expect a terminal. // nolint: gocyclo -func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.Conn, chaffing bool) (exitStatus uint32, err error) { +func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *xsnet.Conn, chaffing bool) (exitStatus uint32, err error) { var wg sync.WaitGroup u, err := user.Lookup(who) if err != nil { @@ -314,7 +314,7 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C ptmx, err := pty.Start(c) // returns immediately with ptmx file if err != nil { log.Println(err) - return hkexnet.CSEPtyExecFail, err + return xsnet.CSEPtyExecFail, err } // Make sure to close the pty at the end. // #gv:s/label=\"runShellAs\$1\"/label=\"deferPtmxClose\"/ @@ -326,11 +326,11 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C // get pty info for system accounting (who, lastlog) pts, pe := ptsName(ptmx.Fd()) if pe != nil { - return hkexnet.CSEPtyGetNameFail, err + return xsnet.CSEPtyGetNameFail, err } utmpx := goutmp.Put_utmp(who, pts, hname) defer func() { goutmp.Unput_utmp(utmpx) }() - goutmp.Put_lastlog_entry("hkexsh", who, pts, hname) + goutmp.Put_lastlog_entry("xs", who, pts, hname) log.Printf("[%s]\n", cmd) if err != nil { @@ -400,7 +400,7 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *hkexnet.C log.Printf("Exit Status: %d", exitStatus) } } - conn.SetStatus(hkexnet.CSOType(exitStatus)) + conn.SetStatus(xsnet.CSOType(exitStatus)) } else { logger.LogDebug("*** Main proc has exited. ***") // Background jobs still may be running; close the @@ -431,7 +431,7 @@ func GenAuthToken(who string, connhost string) string { // Demo of a simple server that listens and spawns goroutines for each // connecting client. Note this code is identical to standard tcp -// server code, save for declaring 'hkex' rather than 'net' +// server code, save for declaring 'xsnet' rather than 'net' // Listener and Conns. The KEx and encrypt/decrypt is done within the type. // Compare to 'serverp.go' in this directory to see the equivalence. // TODO: reduce gocyclo @@ -478,8 +478,8 @@ func main() { chaffBytesMax = 64 } - Log, _ = logger.New(logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR, "hkexshd") // nolint: gosec - hkexnet.Init(dbg, "hkexshd", logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR) + Log, _ = logger.New(logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR, "xsd") // nolint: gosec + xsnet.Init(dbg, "xsd", logger.LOG_DAEMON|logger.LOG_DEBUG|logger.LOG_NOTICE|logger.LOG_ERR) if dbg { log.SetOutput(Log) } else { @@ -513,7 +513,7 @@ func main() { if kcpMode != "unused" { proto = "kcp" } - l, err := hkexnet.Listen(proto, laddr, kcpMode) + l, err := xsnet.Listen(proto, laddr, kcpMode) if err != nil { log.Fatal(err) } @@ -536,28 +536,28 @@ func main() { // Handle the connection in a new goroutine. // The loop then returns to accepting, so that // multiple connections may be served concurrently. - go func(hc *hkexnet.Conn) (e error) { + go func(hc *xsnet.Conn) (e error) { defer hc.Close() // nolint: errcheck //We use io.ReadFull() here to guarantee we consume - //just the data we want for the hkexsh.Session, and no more. + //just the data we want for the xs.Session, and no more. //Otherwise data will be sitting in the channel that isn't //passed down to the command handlers. - var rec hkexsh.Session + var rec xs.Session var len1, len2, len3, len4, len5, len6 uint32 n, err := fmt.Fscanf(hc, "%d %d %d %d %d %d\n", &len1, &len2, &len3, &len4, &len5, &len6) - log.Printf("hkexsh.Session read:%d %d %d %d %d %d\n", len1, len2, len3, len4, len5, len6) + log.Printf("xs.Session read:%d %d %d %d %d %d\n", len1, len2, len3, len4, len5, len6) if err != nil || n < 6 { - log.Println("[Bad hkexsh.Session fmt]") + log.Println("[Bad xs.Session fmt]") return err } tmp := make([]byte, len1) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.Op]") + log.Println("[Bad xs.Session.Op]") return err } rec.SetOp(tmp) @@ -565,7 +565,7 @@ func main() { tmp = make([]byte, len2) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.Who]") + log.Println("[Bad xs.Session.Who]") return err } rec.SetWho(tmp) @@ -573,7 +573,7 @@ func main() { tmp = make([]byte, len3) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.ConnHost]") + log.Println("[Bad xs.Session.ConnHost]") return err } rec.SetConnHost(tmp) @@ -581,7 +581,7 @@ func main() { tmp = make([]byte, len4) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.TermType]") + log.Println("[Bad xs.Session.TermType]") return err } rec.SetTermType(tmp) @@ -589,7 +589,7 @@ func main() { tmp = make([]byte, len5) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.Cmd]") + log.Println("[Bad xs.Session.Cmd]") return err } rec.SetCmd(tmp) @@ -597,20 +597,20 @@ func main() { tmp = make([]byte, len6) _, err = io.ReadFull(hc, tmp) if err != nil { - log.Println("[Bad hkexsh.Session.AuthCookie]") + log.Println("[Bad xs.Session.AuthCookie]") return err } rec.SetAuthCookie(tmp) - log.Printf("[hkexsh.Session: op:%c who:%s connhost:%s cmd:%s auth:****]\n", + log.Printf("[xs.Session: op:%c who:%s connhost:%s cmd:%s auth:****]\n", rec.Op()[0], string(rec.Who()), string(rec.ConnHost()), string(rec.Cmd())) var valid bool var allowedCmds string // Currently unused - if hkexsh.AuthUserByToken(string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { + if xs.AuthUserByToken(string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { valid = true } else { - valid, allowedCmds = hkexsh.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/hkexsh.passwd") + valid, allowedCmds = xs.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") } // Security scrub @@ -633,7 +633,7 @@ func main() { hname := goutmp.GetHost(addr.String()) logger.LogNotice(fmt.Sprintf("[Generating autologin token for [%s@%s]]\n", rec.Who(), hname)) // nolint: gosec,errcheck token := GenAuthToken(string(rec.Who()), string(rec.ConnHost())) - tokenCmd := fmt.Sprintf("echo \"%s\" | tee -a ~/.hkexsh_id", token) + tokenCmd := fmt.Sprintf("echo \"%s\" | tee -a ~/.xs_id", token) cmdStatus, runErr := runShellAs(string(rec.Who()), hname, string(rec.TermType()), tokenCmd, false, hc, chaffEnabled) // Returned hopefully via an EOF or exit/logout; // Clear current op so user can enter next, or EOF @@ -642,7 +642,7 @@ func main() { logger.LogErr(fmt.Sprintf("[Error generating autologin token for %s@%s]\n", rec.Who(), hname)) // nolint: gosec,errcheck } else { log.Printf("[Autologin token generation completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus) - hc.SetStatus(hkexnet.CSOType(cmdStatus)) + hc.SetStatus(xsnet.CSOType(cmdStatus)) } } else if rec.Op()[0] == 'c' { // Non-interactive command @@ -657,7 +657,7 @@ func main() { logger.LogErr(fmt.Sprintf("[Error spawning cmd for %s@%s]\n", rec.Who(), hname)) // nolint: gosec,errcheck } else { logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck - hc.SetStatus(hkexnet.CSOType(cmdStatus)) + hc.SetStatus(xsnet.CSOType(cmdStatus)) } } else if rec.Op()[0] == 's' { // Interactive session @@ -673,7 +673,7 @@ func main() { Log.Err(fmt.Sprintf("[Error spawning shell for %s@%s]\n", rec.Who(), hname)) // nolint: gosec,errcheck } else { logger.LogNotice(fmt.Sprintf("[Shell completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck - hc.SetStatus(hkexnet.CSOType(cmdStatus)) + hc.SetStatus(xsnet.CSOType(cmdStatus)) } } else if rec.Op()[0] == 'D' { // File copy (destination) operation - client copy to server @@ -690,13 +690,13 @@ func main() { } else { logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck } - hc.SetStatus(hkexnet.CSOType(cmdStatus)) + hc.SetStatus(xsnet.CSOType(cmdStatus)) // Send CSOExitStatus *before* client closes channel s := make([]byte, 4) binary.BigEndian.PutUint32(s, cmdStatus) log.Printf("** cp writing closeStat %d at Close()\n", cmdStatus) - hc.WritePacket(s, hkexnet.CSOExitStatus) // nolint: gosec,errcheck + hc.WritePacket(s, xsnet.CSOExitStatus) // nolint: gosec,errcheck } else if rec.Op()[0] == 'S' { // File copy (src) operation - server copy to client log.Printf("[Server->Client copy]\n") @@ -712,12 +712,12 @@ func main() { } // Clear current op so user can enter next, or EOF rec.SetOp([]byte{0}) - hc.SetStatus(hkexnet.CSOType(cmdStatus)) + hc.SetStatus(xsnet.CSOType(cmdStatus)) //fmt.Println("Waiting for EOF from other end.") //_, _ = hc.Read(nil /*ackByte*/) //fmt.Println("Got remote end ack.") } else { - logger.LogErr(fmt.Sprintln("[Bad hkexsh.Session]")) // nolint: gosec,errcheck + logger.LogErr(fmt.Sprintln("[Bad xs.Session]")) // nolint: gosec,errcheck } return }(&conn) // nolint: errcheck diff --git a/hkexnet/Makefile b/xsnet/Makefile similarity index 100% rename from hkexnet/Makefile rename to xsnet/Makefile diff --git a/hkexnet/hkexchan.go b/xsnet/chan.go similarity index 98% rename from hkexnet/hkexchan.go rename to xsnet/chan.go index fafb96e..56cb7b7 100644 --- a/hkexnet/hkexchan.go +++ b/xsnet/chan.go @@ -1,6 +1,6 @@ -package hkexnet +package xsnet -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -57,7 +57,7 @@ func expandKeyMat(keymat []byte, blocksize int) []byte { } /* Support functionality to set up encryption after a channel has -been negotiated via hkexnet.go +been negotiated via xsnet.go */ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err error) { var key []byte diff --git a/hkexnet/consts.go b/xsnet/consts.go similarity index 95% rename from hkexnet/consts.go rename to xsnet/consts.go index 1bfbda0..aac023e 100644 --- a/hkexnet/consts.go +++ b/xsnet/consts.go @@ -1,16 +1,16 @@ -// consts.go - consts for hkexnet +// consts.go - consts for xsnet -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // // golang implementation by Russ Magee (rmagee_at_gmail.com) -package hkexnet +package xsnet // KEX algorithm values // // Specified (in string form) as the extensions parameter -// to hkexnet.Dial() +// to xsnet.Dial() // Alg is sent in a uint8 so there are up to 256 possible const ( KEX_HERRADURA256 = iota // this MUST be first for default if omitted in ctor @@ -32,7 +32,7 @@ const ( ) // Sent from client to server in order to specify which -// algo shall be used (see hkexnet.KEX_HERRADURA256, ...) +// algo shall be used (see xsnet.KEX_HERRADURA256, ...) type KEXAlg uint8 // Extended exit status codes - indicate comm/pty issues diff --git a/hkexnet/kcp.go b/xsnet/kcp.go similarity index 98% rename from hkexnet/kcp.go rename to xsnet/kcp.go index be52650..c7b99a2 100644 --- a/hkexnet/kcp.go +++ b/xsnet/kcp.go @@ -1,4 +1,4 @@ -package hkexnet +package xsnet import ( "crypto/sha1" @@ -6,7 +6,7 @@ import ( "fmt" "net" - "blitter.com/go/hkexsh/logger" + "blitter.com/go/xs/logger" kcp "github.com/xtaci/kcp-go" "golang.org/x/crypto/pbkdf2" ) diff --git a/hkexnet/hkexnet.go b/xsnet/net.go similarity index 98% rename from hkexnet/hkexnet.go rename to xsnet/net.go index 7209a4e..c2edde9 100644 --- a/hkexnet/hkexnet.go +++ b/xsnet/net.go @@ -1,13 +1,13 @@ -// hkexnet.go - net.Conn compatible channel setup with encrypted/HMAC +// xsnet.go - net.Conn compatible channel setup with encrypted/HMAC // negotiation -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // // golang implementation by Russ Magee (rmagee_at_gmail.com) -package hkexnet +package xsnet // Implementation of HKEx-wrapped versions of the golang standard // net package interfaces, allowing clients and servers to simply replace @@ -41,7 +41,7 @@ import ( "time" hkex "blitter.com/go/herradurakex" - "blitter.com/go/hkexsh/logger" + "blitter.com/go/xs/logger" kyber "git.schwanenlied.me/yawning/kyber.git" newhope "git.schwanenlied.me/yawning/newhope.git" ) @@ -107,7 +107,7 @@ func (t *TunEndpoint) String() string { func _initLogging(d bool, c string, f logger.Priority) { if Log == nil { - Log, _ = logger.New(f, fmt.Sprintf("%s:hkexnet", c)) + Log, _ = logger.New(f, fmt.Sprintf("%s:xsnet", c)) } if d { log.SetFlags(0) // syslog will have date,time @@ -175,7 +175,7 @@ func (hc *Conn) SetOpts(opts uint32) { hc.opts = opts } -// Return a new hkexnet.Conn +// Return a new xsnet.Conn // // Note this is internal: use Dial() or Accept() func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { @@ -323,7 +323,7 @@ func (r randReader) Read(b []byte) (n int, e error) { } func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { - // Send hkexnet.Conn parameters to remote side + // Send xsnet.Conn parameters to remote side // Alice, step 1: Generate a key pair. r := new(randReader) @@ -368,7 +368,7 @@ func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { } func NewHopeSimpleDialSetup(c io.ReadWriter, hc *Conn) (err error) { - // Send hkexnet.Conn parameters to remote side + // Send xsnet.Conn parameters to remote side // Alice, step 1: Generate a key pair. r := new(randReader) @@ -412,7 +412,7 @@ func NewHopeSimpleDialSetup(c io.ReadWriter, hc *Conn) (err error) { } func KyberDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { - // Send hkexnet.Conn parameters to remote side + // Send xsnet.Conn parameters to remote side // Alice, step 1: Generate a key pair. r := new(randReader) @@ -477,7 +477,7 @@ func HKExDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { h = hkex.New(256, 64) } - // Send hkexnet.Conn parameters to remote side + // Send xsnet.Conn parameters to remote side // d is value for Herradura key exchange fmt.Fprintf(c, "0x%s\n0x%x:0x%x\n", h.D().Text(16), hc.cipheropts, hc.opts) @@ -647,7 +647,7 @@ func HKExAcceptSetup(c *net.Conn, hc *Conn) (err error) { h = hkex.New(256, 64) } - // Read in hkexnet.Conn parameters over raw Conn c + // Read in xsnet.Conn parameters over raw Conn c // d is value for Herradura key exchange d := big.NewInt(0) _, err = fmt.Fscanln(*c, d) @@ -686,7 +686,7 @@ func HKExAcceptSetup(c *net.Conn, hc *Conn) (err error) { // // "H_SHA256" | "H_SHA512" | ... // -// See go doc -u hkexnet.applyConnExtensions +// See go doc -u xsnet.applyConnExtensions func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err error) { if Log == nil { Init(false, "client", logger.LOG_DAEMON|logger.LOG_DEBUG) @@ -705,7 +705,7 @@ func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err er return Conn{}, err } } - // Init hkexnet.Conn hc over net.Conn c + // Init xsnet.Conn hc over net.Conn c ret, err := _new(getkexalgnum(extensions...), &c) if err != nil { return Conn{}, err @@ -1045,7 +1045,7 @@ func (hc Conn) Read(b []byte) (n int, err error) { log.Printf(" <-ptext:\r\n%s\r\n", hex.Dump(payloadBytes[:n])) } if err != nil { - log.Println("hkexnet.Read():", err) + log.Println("xsnet.Read():", err) //panic(err) } else { hc.rm.Write(payloadBytes) // Calc hmac on received data diff --git a/hkexnet/hkextun.go b/xsnet/tun.go similarity index 98% rename from hkexnet/hkextun.go rename to xsnet/tun.go index 2709aa2..2b341e4 100644 --- a/hkexnet/hkextun.go +++ b/xsnet/tun.go @@ -1,12 +1,12 @@ -// hkextun.go - Tunnel setup using an established hkexnet.Conn +// hkextun.go - Tunnel setup using an established xsnet.Conn -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // // golang implementation by Russ Magee (rmagee_at_gmail.com) -package hkexnet +package xsnet import ( "bytes" @@ -18,7 +18,7 @@ import ( "sync" "time" - "blitter.com/go/hkexsh/logger" + "blitter.com/go/xs/logger" ) type ( diff --git a/hkexpasswd/Makefile b/xspasswd/Makefile similarity index 77% rename from hkexpasswd/Makefile rename to xspasswd/Makefile index 0e3475f..99e709b 100644 --- a/hkexpasswd/Makefile +++ b/xspasswd/Makefile @@ -10,7 +10,7 @@ clean: $(RM) $(EXE) $(EXE).exe vis: - go-callvis -format png -file hkexpasswd-vis -ignore $(EXTPKGS) -group pkg,type . + go-callvis -format png -file xspasswd-vis -ignore $(EXTPKGS) -group pkg,type . lint: -gometalinter --deadline=60s | sort diff --git a/hkexpasswd/hkexpasswd-vis.png b/xspasswd/xspasswd-vis.png similarity index 54% rename from hkexpasswd/hkexpasswd-vis.png rename to xspasswd/xspasswd-vis.png index d33146adeb6e76b2d322544045988396d23cff59..46d8088a265ec190445cde0bd317ba2d84796b4b 100644 GIT binary patch delta 15536 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 diff --git a/hkexpasswd/hkexpasswd.go b/xspasswd/xspasswd.go similarity index 95% rename from hkexpasswd/hkexpasswd.go rename to xspasswd/xspasswd.go index f02028c..56bf5ec 100644 --- a/hkexpasswd/hkexpasswd.go +++ b/xspasswd/xspasswd.go @@ -1,7 +1,7 @@ // Util to generate/store passwords for users in a file akin to /etc/passwd // suitable for the demo hkexsh server, using bcrypt. // -// Copyright (c) 2017-2018 Russell Magee +// Copyright (c) 2017-2019 Russell Magee // Licensed under the terms of the MIT license (see LICENSE.mit in this // distribution) // @@ -36,7 +36,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&userName, "u", "", "username") - flag.StringVar(&pfName, "f", "/etc/hkexsh.passwd", "passwd file") + flag.StringVar(&pfName, "f", "/etc/xs.passwd", "passwd file") flag.Parse() if vopt { @@ -130,7 +130,7 @@ func main() { records = append(records, newRec) } - outFile, err := ioutil.TempFile("", "hkexsh-passwd") + outFile, err := ioutil.TempFile("", "xs-passwd") if err != nil { log.Fatal(err) } From 8dbb10f324cc3608f5eb80016214e87b6e08cda6 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 29 Oct 2019 23:50:27 -0700 Subject: [PATCH 043/134] Fixed xc mode detection Signed-off-by: Russ Magee --- xs/xs.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xs/xs.go b/xs/xs.go index 66f923a..f385bbe 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -640,7 +640,7 @@ func main() { // Find out what program we are (shell or copier) myPath := strings.Split(os.Args[0], string(os.PathSeparator)) - if myPath[len(myPath)-1] != "hkexcp" && myPath[len(myPath)-1] != "hkexcp.exe" { + if myPath[len(myPath)-1] != "xc" && myPath[len(myPath)-1] != "xc.exe" { // xs accepts a command (-x) but not // a srcpath (-r) or dstpath (-t) flag.StringVar(&cmdStr, "x", "", "run <`command`> (if not specified, run interactive shell)") From 9b90c0558e1ef4819cc48683b5a1c93cfa7afa74 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 11 Dec 2019 17:37:56 -0800 Subject: [PATCH 044/134] Fixed leftover hkexsh -> xs refs in xspasswd --- xspasswd/xspasswd.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xspasswd/xspasswd.go b/xspasswd/xspasswd.go index 56bf5ec..abdb3eb 100644 --- a/xspasswd/xspasswd.go +++ b/xspasswd/xspasswd.go @@ -17,7 +17,7 @@ import ( "log" "os" - hkexsh "blitter.com/go/hkexsh" + xs "blitter.com/go/xs" "github.com/jameskeane/bcrypt" ) @@ -59,7 +59,7 @@ func main() { uname = userName fmt.Printf("New Password:") - ab, err := hkexsh.ReadPassword(int(os.Stdin.Fd())) + ab, err := xs.ReadPassword(int(os.Stdin.Fd())) fmt.Printf("\r\n") if err != nil { log.Fatal(err) @@ -68,7 +68,7 @@ func main() { newpw = string(ab) fmt.Printf("Confirm:") - ab, err = hkexsh.ReadPassword(int(os.Stdin.Fd())) + ab, err = xs.ReadPassword(int(os.Stdin.Fd())) fmt.Printf("\r\n") if err != nil { log.Fatal(err) From d4f50bfdc0add54a5aaeb8c7d28cacb941655c96 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sun, 15 Dec 2019 11:38:04 -0800 Subject: [PATCH 045/134] xsd: Added -aK,-aC,-aH to control accepted client proposals --- xs/xs.go | 21 ++++++---- xsd/xsd.go | 107 ++++++++++++++++++++++++++++++++++++++++++++++-- xsnet/consts.go | 16 +++++--- xsnet/net.go | 75 +++++++++++++++++++++++++++++++-- 4 files changed, 199 insertions(+), 20 deletions(-) diff --git a/xs/xs.go b/xs/xs.go index f385bbe..c670e25 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -34,9 +34,9 @@ import ( _ "net/http/pprof" xs "blitter.com/go/xs" - "blitter.com/go/xs/xsnet" "blitter.com/go/xs/logger" "blitter.com/go/xs/spinsult" + "blitter.com/go/xs/xsnet" isatty "github.com/mattn/go-isatty" ) @@ -821,23 +821,25 @@ func main() { cmdStr = string(copySrc) } } - + proto := "tcp" if kcpMode != "unused" { - proto = "kcp" + proto = "kcp" } conn, err := xsnet.Dial(proto, server, cipherAlg, hmacAlg, kexAlg, kcpMode) if err != nil { fmt.Println(err) exitWithStatus(3) } - defer conn.Close() // nolint: errcheck - // From this point on, conn is a secure encrypted channel // Set stdin in raw mode if it's an interactive session // TODO: send flag to server side indicating this // affects shell command used var oldState *xs.State + defer conn.Close() // nolint: errcheck + + // From this point on, conn is a secure encrypted channel + if shellMode { if isatty.IsTerminal(os.Stdin.Fd()) { oldState, err = xs.MakeRaw(int(os.Stdin.Fd())) @@ -869,7 +871,11 @@ func main() { rec := xs.NewSession(op, []byte(uname), []byte(remoteHost), []byte(os.Getenv("TERM")), []byte(cmdStr), []byte(authCookie), 0) sendErr := sendSessionParams(&conn, rec) if sendErr != nil { - log.Fatal(sendErr) + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec + rec.SetStatus(254) + fmt.Fprintln(os.Stderr, "Error: server rejected secure proposal params") // nolint: errcheck + exitWithStatus(int(rec.Status())) + //log.Fatal(sendErr) } //Security scrub @@ -924,13 +930,14 @@ func main() { } if rec.Status() != 0 { - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec fmt.Fprintln(os.Stderr, "Session exited with status:", rec.Status()) // nolint: errcheck } } if oldState != nil { _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: gosec + oldState = nil } exitWithStatus(int(rec.Status())) diff --git a/xsd/xsd.go b/xsd/xsd.go index 0860049..a7ac458 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -23,14 +23,15 @@ import ( "os/signal" "os/user" "path" + "strings" "sync" "syscall" "unsafe" "blitter.com/go/goutmp" xs "blitter.com/go/xs" - "blitter.com/go/xs/xsnet" "blitter.com/go/xs/logger" + "blitter.com/go/xs/xsnet" "github.com/kr/pty" ) @@ -429,9 +430,73 @@ func GenAuthToken(who string, connhost string) string { return fmt.Sprintf("%s:%s", tokenA, hex.EncodeToString(tokenB)) } -// Demo of a simple server that listens and spawns goroutines for each -// connecting client. Note this code is identical to standard tcp -// server code, save for declaring 'xsnet' rather than 'net' +var ( + aKEXAlgs allowedKEXAlgs + aCipherAlgs allowedCipherAlgs + aHMACAlgs allowedHMACAlgs +) + +type allowedKEXAlgs []string // TODO +type allowedCipherAlgs []string // TODO +type allowedHMACAlgs []string // TODO + +func (a allowedKEXAlgs) allowed(k xsnet.KEXAlg) bool { + for i := 0; i < len(a); i++ { + if a[i] == "KEX_all" || a[i] == k.String() { + return true + } + } + return false +} + +func (a *allowedKEXAlgs) String() string { + return fmt.Sprintf("allowedKEXAlgs: %v", *a) +} + +func (a *allowedKEXAlgs) Set(value string) error { + *a = append(*a, strings.TrimSpace(value)) + return nil +} + +func (a allowedCipherAlgs) allowed(c xsnet.CSCipherAlg) bool { + for i := 0; i < len(a); i++ { + if a[i] == "C_all" || a[i] == c.String() { + return true + } + } + return false +} + +func (a *allowedCipherAlgs) String() string { + return fmt.Sprintf("allowedCipherAlgs: %v", *a) +} + +func (a *allowedCipherAlgs) Set(value string) error { + *a = append(*a, strings.TrimSpace(value)) + return nil +} + +func (a allowedHMACAlgs) allowed(h xsnet.CSHmacAlg) bool { + for i := 0; i < len(a); i++ { + if a[i] == "H_all" || a[i] == h.String() { + return true + } + } + return false +} + +func (a *allowedHMACAlgs) String() string { + return fmt.Sprintf("allowedHMACAlgs: %v", *a) +} + +func (a *allowedHMACAlgs) Set(value string) error { + *a = append(*a, strings.TrimSpace(value)) + return nil +} + +// Main server that listens and spawns goroutines for each +// connecting client. Note this code is mostly identical to standard +// tcp server code, save for declaring 'xsnet' rather than 'net' // Listener and Conns. The KEx and encrypt/decrypt is done within the type. // Compare to 'serverp.go' in this directory to see the equivalence. // TODO: reduce gocyclo @@ -453,6 +518,11 @@ func main() { flag.UintVar(&chaffFreqMax, "F", 5000, "chaff pkt freq max (msecs)") flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") flag.BoolVar(&dbg, "d", false, "debug logging") + + flag.Var(&aKEXAlgs, "aK", `List of allowed KEX algs (eg. 'KEXAlgA KEXAlgB ... KEXAlgN') (default allow all)`) + flag.Var(&aCipherAlgs, "aC", `List of allowed ciphers (eg. 'CipherAlgA CipherAlgB ... CipherAlgN') (default allow all)`) + flag.Var(&aHMACAlgs, "aH", `List of allowed HMACs (eg. 'HMACAlgA HMACAlgB ... HMACAlgN') (default allow all)`) + flag.Parse() if vopt { @@ -486,6 +556,22 @@ func main() { log.SetOutput(ioutil.Discard) } + // Set up allowed algs, if specified (default allow all) + if len(aKEXAlgs) == 0 { + aKEXAlgs = []string{"KEX_all"} + } + logger.LogNotice(fmt.Sprintf("Allowed KEXAlgs: %v\n", aKEXAlgs)) // nolint: gosec,errcheck + + if len(aCipherAlgs) == 0 { + aCipherAlgs = []string{"C_all"} + } + logger.LogNotice(fmt.Sprintf("Allowed CipherAlgs: %v\n", aCipherAlgs)) // nolint: gosec,errcheck + + if len(aHMACAlgs) == 0 { + aHMACAlgs = []string{"H_all"} + } + logger.LogNotice(fmt.Sprintf("Allowed HMACAlgs: %v\n", aHMACAlgs)) // nolint: gosec,errcheck + // Set up handler for daemon signalling exitCh := make(chan os.Signal, 1) signal.Notify(exitCh, os.Signal(syscall.SIGTERM), os.Signal(syscall.SIGINT), os.Signal(syscall.SIGHUP), os.Signal(syscall.SIGUSR1), os.Signal(syscall.SIGUSR2)) @@ -522,9 +608,22 @@ func main() { log.Println("Serving on", laddr) for { // Wait for a connection. + // Then check if client-proposed algs are allowed conn, err := l.Accept() if err != nil { log.Printf("Accept() got error(%v), hanging up.\n", err) + } else if !aKEXAlgs.allowed(conn.KEX()) { + log.Printf("Accept() rejected for banned KEX alg %d, hanging up.\n", conn.KEX()) + conn.SetStatus(xsnet.CSEKEXAlgDenied) + conn.Close() + } else if !aCipherAlgs.allowed(conn.CAlg()) { + log.Printf("Accept() rejected for banned Cipher alg %d, hanging up.\n", conn.CAlg()) + conn.SetStatus(xsnet.CSECipherAlgDenied) + conn.Close() + } else if !aHMACAlgs.allowed(conn.HAlg()) { + log.Printf("Accept() rejected for banned HMAC alg %d, hanging up.\n", conn.HAlg()) + conn.SetStatus(xsnet.CSEHMACAlgDenied) + conn.Close() } else { log.Println("Accepted client") diff --git a/xsnet/consts.go b/xsnet/consts.go index aac023e..a32d501 100644 --- a/xsnet/consts.go +++ b/xsnet/consts.go @@ -29,6 +29,7 @@ const ( KEX_NEWHOPE_SIMPLE // 'NewHopeLP-Simple' - https://eprint.iacr.org/2016/1157 KEX_resvd14 KEX_resvd15 + KEX_invalid = 255 ) // Sent from client to server in order to specify which @@ -38,12 +39,15 @@ type KEXAlg uint8 // Extended exit status codes - indicate comm/pty issues // rather than remote end normal UNIX exit codes const ( - CSENone = 1024 + iota - CSETruncCSO // No CSOExitStatus in payload - CSEStillOpen // Channel closed unexpectedly - CSEExecFail // cmd.Start() (exec) failed - CSEPtyExecFail // pty.Start() (exec w/pty) failed - CSEPtyGetNameFail // failed to obtain pty name + CSENone = 1024 + iota + CSETruncCSO // No CSOExitStatus in payload + CSEStillOpen // Channel closed unexpectedly + CSEExecFail // cmd.Start() (exec) failed + CSEPtyExecFail // pty.Start() (exec w/pty) failed + CSEPtyGetNameFail // failed to obtain pty name + CSEKEXAlgDenied // server rejected proposed KEX alg + CSECipherAlgDenied // server rejected proposed Cipher alg + CSEHMACAlgDenied // server rejected proposed HMAC alg ) // Extended (>255 UNIX exit status) codes diff --git a/xsnet/net.go b/xsnet/net.go index c2edde9..cc5b238 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -70,9 +70,10 @@ type ( // Conn is a connection wrapping net.Conn with KEX & session state Conn struct { - kex KEXAlg // KEX/KEM proposal (client -> server) - m *sync.Mutex // (internal) - c *net.Conn // which also implements io.Reader, io.Writer, ... + kex KEXAlg // KEX/KEM proposal (client -> server) + + m *sync.Mutex // (internal) + c *net.Conn // which also implements io.Reader, io.Writer, ... logCipherText bool // somewhat expensive, for debugging logPlainText bool // INSECURE and somewhat expensive, for debugging @@ -105,6 +106,67 @@ func (t *TunEndpoint) String() string { return fmt.Sprintf("[%d:%s:%d]", t.Lport, t.Peer, t.Rport) } +func (k *KEXAlg) String() string { + switch *k { + case KEX_HERRADURA256: + return "KEX_HERRADURA256" + case KEX_HERRADURA512: + return "KEX_HERRADURA512" + case KEX_HERRADURA1024: + return "KEX_HERRADURA1024" + case KEX_HERRADURA2048: + return "KEX_HERRADURA2048" + case KEX_KYBER512: + return "KEX_KYBER512" + case KEX_KYBER768: + return "KEX_KYBER768" + case KEX_KYBER1024: + return "KEX_KYBER1024" + case KEX_NEWHOPE: + return "KEX_NEWHOPE" + case KEX_NEWHOPE_SIMPLE: + return "KEX_NEWHOPE_SIMPLE" + default: + return "KEX_ERR_UNK" + } +} + +func (hc *Conn) CAlg() CSCipherAlg { + return CSCipherAlg(hc.cipheropts & 0x0FF) +} + +func (c *CSCipherAlg) String() string { + switch *c & 0x0FF { + case CAlgAES256: + return "C_AES_256" + case CAlgTwofish128: + return "C_TWOFISH_128" + case CAlgBlowfish64: + return "C_BLOWFISH_64" + case CAlgCryptMT1: + return "C_CRYPTMT1" + case CAlgWanderer: + return "C_WANDERER" + default: + return "C_ERR_UNK" + } +} + +func (hc *Conn) HAlg() CSHmacAlg { + return CSHmacAlg((hc.cipheropts >> 8) & 0x0FF) +} + +func (h *CSHmacAlg) String() string { + switch (*h >> 8) & 0x0FF { + case HmacSHA256: + return "H_SHA256" + case HmacSHA512: + return "C_SHA512" + default: + return "H_ERR_UNK" + } +} + func _initLogging(d bool, c string, f logger.Priority) { if Log == nil { Log, _ = logger.New(f, fmt.Sprintf("%s:xsnet", c)) @@ -129,6 +191,10 @@ func (hc *Conn) Unlock() { hc.m.Unlock() } +func (hc Conn) KEX() KEXAlg { + return hc.kex +} + func (hc Conn) GetStatus() CSOType { return *hc.closeStat } @@ -935,6 +1001,9 @@ func (hl *HKExListener) Accept() (hc Conn, err error) { default: return Conn{}, err } + + // Finally, ensure alg proposed by client is allowed by server config + //if hc.kex.String() { log.Println("[hc.Accept successful]") return } From 1f84bc95ffa4aee5ed4cdada4cfa35c80ba0983e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sun, 15 Dec 2019 12:27:50 -0800 Subject: [PATCH 046/134] Bumped version --- Makefile | 2 +- go.mod | 11 ++++++++++- go.sum | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a7b2ddc..0601659 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.8 +VERSION := 0.8.9 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif diff --git a/go.mod b/go.mod index 6be7ad1..e8aff52 100644 --- a/go.mod +++ b/go.mod @@ -6,13 +6,22 @@ require ( blitter.com/go/cryptmt v1.0.0 blitter.com/go/goutmp v1.0.1 blitter.com/go/herradurakex v1.0.0 - blitter.com/go/mtwist v1.0.0 // indirect + blitter.com/go/mtwist v1.0.1 // indirect + blitter.com/go/wanderer v0.8.0 git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 // indirect git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f + github.com/klauspost/cpuid v1.2.2 // indirect + github.com/klauspost/reedsolomon v1.9.3 // indirect github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 + github.com/pkg/errors v0.8.1 // indirect + github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect + github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect + github.com/tjfoc/gmsm v1.0.1 // indirect + github.com/xtaci/kcp-go v5.4.19+incompatible golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af + golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190416152802-12500544f89f ) diff --git a/go.sum b/go.sum index 14ee240..f823f58 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,47 @@ +blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= +blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= +blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= +blitter.com/go/mtwist v1.0.0 h1:/Vg6k12+DC+fokeRrLApL22hZS/EqEazJTo/FDdbDog= blitter.com/go/mtwist v1.0.0/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= +blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= +blitter.com/go/mtwist v1.0.1/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= +blitter.com/go/wanderer v0.8.0 h1:xT7lKdKLSyonVf0vZW6R46E3gz3B5pJ1VDBlsa4ULDI= +blitter.com/go/wanderer v0.8.0/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= +git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= +git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s= +github.com/klauspost/cpuid v1.2.2 h1:1xAgYebNnsb9LKCdLOvFWtAxGU/33mjJtyOVbmUa0Us= +github.com/klauspost/cpuid v1.2.2/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/reedsolomon v1.9.3 h1:N/VzgeMfHmLc+KHMD1UL/tNkfXAt8FnUqlgXGIduwAY= +github.com/klauspost/reedsolomon v1.9.3/go.mod h1:CwCi+NUr9pqSVktrkN+Ondf06rkhYZ/pcNv7fu+8Un4= +github.com/kr/pty v1.1.4 h1:5Myjjh3JY/NaAi4IsUbHADytDyl1VE1Y9PXDlL+P/VQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 h1:89CEmDvlq/F7SJEOqkIdNDGJXrQIhuIx9D2DBXjavSU= +github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= +github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b h1:mnG1fcsIB1d/3vbkBak2MM0u+vhGhlQwpeimUi7QncM= +github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b/go.mod h1:5XA7W9S6mni3h5uvOC75dA3m9CCCaS83lltmc0ukdi4= +github.com/tjfoc/gmsm v1.0.1 h1:R11HlqhXkDospckjZEihx9SW/2VW0RgdwrykyWMFOQU= +github.com/tjfoc/gmsm v1.0.1/go.mod h1:XxO4hdhhrzAd+G4CjDqaOkd0hUzmtPR/d3EiBBMn/wc= +github.com/xtaci/kcp-go v5.4.19+incompatible h1:vv7Ar1D9WZGiv6deIOluxrC26Oin/2jFtx8sFU5tlvw= +github.com/xtaci/kcp-go v5.4.19+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From faf4d5c50a2eb14857937586383e30603bdafca9 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 19 Dec 2019 20:01:39 -0800 Subject: [PATCH 047/134] Add (as default) option to use system shadow passwds --- TODO.txt | 1 + auth.go | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- xsd/xsd.go | 10 +++++++++- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/TODO.txt b/TODO.txt index 771a484..9a621fe 100644 --- a/TODO.txt +++ b/TODO.txt @@ -18,6 +18,7 @@ Architecture (parts split out into hkexnet/*, hkexsession.go) (DONE) - Make KEx fully-pluggable: isolate all code to do with Herradura into a KEx-neutral pkg so it can be swapped out for other methods (eg., DH etc.) +(DONE - test branch) - Use system password db (/etc/{passwd,shadow}) Features (DONE) - Support for hkcp (hkex-cp) - secure file copy protocol diff --git a/auth.go b/auth.go index f3c396c..6e0adcb 100644 --- a/auth.go +++ b/auth.go @@ -13,6 +13,7 @@ package xs import ( "bytes" "encoding/csv" + "errors" "fmt" "io" "io/ioutil" @@ -22,13 +23,49 @@ import ( "strings" "github.com/jameskeane/bcrypt" + passlib "gopkg.in/hlandau/passlib.v1" ) -func userExistsOnSystem(who string) bool { - _, userErr := user.Lookup(who) - return userErr == nil +// --------- System passwd/shadow auth routine(s) -------------- +// Verify a password against system standard shadow file +// Note auxilliary fields for expiry policy are *not* inspected. +func VerifyPass(user, password string) (bool, error) { + passlib.UseDefaults(passlib.Defaults20180601) + pwFileData, e := ioutil.ReadFile("/etc/shadow") + if e != nil { + return false, e + } + pwLines := strings.Split(string(pwFileData), "\n") + if len(pwLines) < 1 { + return false, errors.New("Empty shadow file!") + } else { + var line string + var hash string + var idx int + for idx = range pwLines { + line = pwLines[idx] + lFields := strings.Split(line, ":") + if lFields[0] == user { + hash = lFields[1] + break + } + } + if len(hash) == 0 { + return false, errors.New("nil hash!") + } else { + pe := passlib.VerifyNoUpgrade(password, hash) + if pe != nil { + return false, pe + } + } + } + return true, nil } +// --------- End System passwd/shadow auth routine(s) ---------- + +// ------------- xs-local passwd auth routine(s) --------------- + // AuthUserByPasswd checks user login information using a password. // This checks /etc/xs.passwd for auth info, and system /etc/passwd // to cross-check the user actually exists. @@ -84,6 +121,13 @@ func AuthUserByPasswd(username string, auth string, fname string) (valid bool, a return } +// ------------- End xs-local passwd auth routine(s) ----------- + +func userExistsOnSystem(who string) bool { + _, userErr := user.Lookup(who) + return userErr == nil +} + // AuthUserByToken checks user login information against an auth token. // Auth tokens are stored in each user's $HOME/.xs_id and are requested // via the -g option. diff --git a/xsd/xsd.go b/xsd/xsd.go index a7ac458..b1c1e98 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -509,6 +509,8 @@ func main() { var dbg bool var laddr string + var useSystemPasswd bool + flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&laddr, "l", ":2000", "interface[:port] to listen") flag.StringVar(&kcpMode, "K", "unused", `set to one of ["KCP_NONE","KCP_AES", "KCP_BLOWFISH", "KCP_CAST5", "KCP_SM4", "KCP_SALSA20", "KCP_SIMPLEXOR", "KCP_TEA", "KCP_3DES", "KCP_TWOFISH", "KCP_XTEA"] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP`) @@ -517,6 +519,7 @@ func main() { flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min (msecs)") flag.UintVar(&chaffFreqMax, "F", 5000, "chaff pkt freq max (msecs)") flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") + flag.BoolVar(&useSystemPasswd, "s", true, "use system shadow passwds") flag.BoolVar(&dbg, "d", false, "debug logging") flag.Var(&aKEXAlgs, "aK", `List of allowed KEX algs (eg. 'KEXAlgA KEXAlgB ... KEXAlgN') (default allow all)`) @@ -709,7 +712,12 @@ func main() { if xs.AuthUserByToken(string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { valid = true } else { - valid, allowedCmds = xs.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") + if useSystemPasswd { + //var passErr error + valid, _ /*passErr*/ = xs.VerifyPass(string(rec.Who()), string(rec.AuthCookie(true))) + } else { + valid, allowedCmds = xs.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") + } } // Security scrub From f8f4bcbe775fee62d5114e2530d9415c73975b5b Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 19 Dec 2019 20:03:15 -0800 Subject: [PATCH 048/134] go.mod updates for gopkg.in/hlandau/passlib.v1 --- go.mod | 3 +++ go.sum | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/go.mod b/go.mod index e8aff52..2a27aa2 100644 --- a/go.mod +++ b/go.mod @@ -24,4 +24,7 @@ require ( golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190416152802-12500544f89f + gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect + gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect + gopkg.in/hlandau/passlib.v1 v1.0.10 ) diff --git a/go.sum b/go.sum index f823f58..57ef2f3 100644 --- a/go.sum +++ b/go.sum @@ -45,3 +45,9 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/hlandau/easymetric.v1 v1.0.0 h1:ZbfbH7W3giuVDjWUoFhDOjjv20hiPr5HZ2yMV5f9IeE= +gopkg.in/hlandau/easymetric.v1 v1.0.0/go.mod h1:yh75hypuFzAxmvECh3ZKGCvFnIfapYJh2wv7ASaX2RE= +gopkg.in/hlandau/measurable.v1 v1.0.1 h1:wH5UZKCRUnRr1iD+xIZfwhtxhmr+bprRJttqA1Rklf4= +gopkg.in/hlandau/measurable.v1 v1.0.1/go.mod h1:6N+SYJGMTmetsx7wskULP+juuO+++tsHJkAgzvzsbuM= +gopkg.in/hlandau/passlib.v1 v1.0.10 h1:q5xh9ZHp907XTjVw8/EqG03//fnlITnIYQmv4Gn7TpE= +gopkg.in/hlandau/passlib.v1 v1.0.10/go.mod h1:wxGAv2CtQHlzWY8NJp+p045yl4WHyX7v2T6XbOcmqjM= From 9f956cff620f219f582c03d3c2bdb67050e69ed6 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 19 Dec 2019 20:04:22 -0800 Subject: [PATCH 049/134] branch temp version --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 0601659..5c95d6a 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.9 +VERSION := 0.8.9-sys-passwd #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From 4e0ddf282a36a0becc2853e855593c657adc118c Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 19 Dec 2019 20:34:05 -0800 Subject: [PATCH 050/134] Comments on main() xsd --- xsd/xsd.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/xsd/xsd.go b/xsd/xsd.go index b1c1e98..e83ae9d 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -495,10 +495,12 @@ func (a *allowedHMACAlgs) Set(value string) error { } // Main server that listens and spawns goroutines for each -// connecting client. Note this code is mostly identical to standard -// tcp server code, save for declaring 'xsnet' rather than 'net' -// Listener and Conns. The KEx and encrypt/decrypt is done within the type. -// Compare to 'serverp.go' in this directory to see the equivalence. +// connecting client to serve interactive or file copy sessions +// and any requested tunnels. +// Note that this server does not do UNIX forks of itself to give +// each client its own separate manager process, so if the main +// daemon dies, all clients will be rudely disconnected. +// Consider this when planning to restart or upgrade in-place an installation. // TODO: reduce gocyclo func main() { var vopt bool From 7ce725c7d2fea2bb51cd230fd1d6e1dbae36e730 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 8 Jan 2020 17:16:24 -0800 Subject: [PATCH 051/134] Bumped version -> v0.8.10 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 5c95d6a..c48c8cd 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.9-sys-passwd +VERSION := 0.8.10 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif From 3be1243bf9ef0d6c8db7d4b6c0715c7068f3b65c Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 24 Jan 2020 18:49:34 -0800 Subject: [PATCH 052/134] Updated parms to test WANDERER alg to set sboxUpdate mode --- xsnet/chan.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xsnet/chan.go b/xsnet/chan.go index 56cb7b7..cfc3722 100644 --- a/xsnet/chan.go +++ b/xsnet/chan.go @@ -106,8 +106,8 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err rc = cryptmt.NewCipher(keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) case CAlgWanderer: - rc = wanderer.NewCodec(nil, nil, keymat, 3, 3) - log.Printf("[cipher WANDERER (%d)]\n", copts) + rc = wanderer.NewCodec(nil, nil, 1, keymat, 3, 3) + log.Printf("[cipher WANDERER mode 1 (%d)]\n", copts) default: log.Printf("[invalid cipher (%d)]\n", copts) fmt.Printf("DOOFUS SET A VALID CIPHER ALG (%d)\n", copts) From 7fe915450b4a2be831c99783775cc207f1786c3d Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 24 Jan 2020 18:50:33 -0800 Subject: [PATCH 053/134] Bumped tag --- Makefile | 2 +- go.mod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c48c8cd..67462ed 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.10 +VERSION := 0.8.11 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" #endif diff --git a/go.mod b/go.mod index 2a27aa2..4332d9d 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( blitter.com/go/goutmp v1.0.1 blitter.com/go/herradurakex v1.0.0 blitter.com/go/mtwist v1.0.1 // indirect - blitter.com/go/wanderer v0.8.0 + blitter.com/go/wanderer v0.8.1 git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 // indirect git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 From caac02a77b80e794fc705852b929c97d9a204332 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 29 Jan 2020 13:25:14 -0800 Subject: [PATCH 054/134] 1/2 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2/2 Added vendor/ dir to lock down dependent pkg versions. The author of git.schwanenlied.me/yawning/{chacha20,newhope,kyber}.git has copied their repos to gitlab.com/yawning/ but some imports of chacha20 from newhope still inconsistently refer to git.schwanenlied.me/, breaking build. Licenses for chacha20 also changed from CC0 to AGPL, which may or may not be an issue. Until the two aforementioned issues are resolved, locking to last-good versions is probably the best way forward for now. To build with vendored deps, use make VENDOR=1 clean all --- Makefile | 13 +- go.mod | 2 + go.sum | 21 +- vendor/blitter.com/go/cryptmt/README.md | 6 + vendor/blitter.com/go/cryptmt/cryptmt.go | 60 + vendor/blitter.com/go/goutmp/LICENSE.mit | 21 + vendor/blitter.com/go/goutmp/README.md | 17 + vendor/blitter.com/go/goutmp/goutmp.go | 130 + .../blitter.com/go/herradurakex/LICENSE.gpl | 674 ++ .../blitter.com/go/herradurakex/LICENSE.mit | 22 + vendor/blitter.com/go/herradurakex/Makefile | 17 + vendor/blitter.com/go/herradurakex/README.md | 1 + .../go/herradurakex/herradurakex.go | 182 + vendor/blitter.com/go/mtwist/mtwist.go | 125 + vendor/blitter.com/go/wanderer/wanderer.go | 210 + .../yawning/chacha20.git/LICENSE | 122 + .../yawning/chacha20.git/README.md | 14 + .../yawning/chacha20.git/chacha20.go | 273 + .../yawning/chacha20.git/chacha20_amd64.go | 95 + .../yawning/chacha20.git/chacha20_amd64.py | 1295 ++++ .../yawning/chacha20.git/chacha20_amd64.s | 1180 +++ .../yawning/chacha20.git/chacha20_ref.go | 394 + .../yawning/chacha20.git/chacha20_ref_go19.go | 395 + .../yawning/kyber.git/.gitignore | 2 + .../yawning/kyber.git/LICENSE | 122 + .../yawning/kyber.git/README.md | 24 + .../yawning/kyber.git/cbd.go | 100 + .../yawning/kyber.git/doc.go | 27 + .../yawning/kyber.git/hwaccel.go | 46 + .../yawning/kyber.git/hwaccel_amd64.go | 256 + .../yawning/kyber.git/hwaccel_amd64.s | 2749 +++++++ .../yawning/kyber.git/hwaccel_ref.go | 14 + .../yawning/kyber.git/indcpa.go | 279 + .../yawning/kyber.git/kem.go | 187 + .../yawning/kyber.git/kex.go | 249 + .../yawning/kyber.git/ntt.go | 65 + .../yawning/kyber.git/params.go | 116 + .../yawning/kyber.git/poly.go | 146 + .../yawning/kyber.git/polyvec.go | 115 + .../yawning/kyber.git/precomp.go | 87 + .../yawning/kyber.git/reduce.go | 43 + .../yawning/newhope.git/LICENSE | 122 + .../yawning/newhope.git/batcher.go | 929 +++ .../yawning/newhope.git/error_correction.go | 135 + .../yawning/newhope.git/newhope.go | 220 + .../yawning/newhope.git/newhope_simple.go | 166 + .../yawning/newhope.git/ntt.go | 131 + .../yawning/newhope.git/params.go | 17 + .../yawning/newhope.git/poly.go | 212 + .../yawning/newhope.git/poly_simple.go | 99 + .../yawning/newhope.git/precomp.go | 287 + .../yawning/newhope.git/reduce.go | 32 + .../github.com/jameskeane/bcrypt/.gitignore | 5 + vendor/github.com/jameskeane/bcrypt/LICENSE | 29 + vendor/github.com/jameskeane/bcrypt/README | 46 + vendor/github.com/jameskeane/bcrypt/bcrypt.go | 190 + vendor/github.com/jameskeane/bcrypt/cipher.go | 415 + vendor/github.com/klauspost/cpuid/.gitignore | 24 + vendor/github.com/klauspost/cpuid/.travis.yml | 23 + .../klauspost/cpuid/CONTRIBUTING.txt | 35 + vendor/github.com/klauspost/cpuid/LICENSE | 22 + vendor/github.com/klauspost/cpuid/README.md | 148 + vendor/github.com/klauspost/cpuid/cpuid.go | 1069 +++ vendor/github.com/klauspost/cpuid/cpuid_386.s | 42 + .../github.com/klauspost/cpuid/cpuid_amd64.s | 42 + .../klauspost/cpuid/detect_intel.go | 17 + .../github.com/klauspost/cpuid/detect_ref.go | 23 + vendor/github.com/klauspost/cpuid/generate.go | 4 + .../github.com/klauspost/cpuid/private-gen.go | 476 ++ .../klauspost/reedsolomon/.gitignore | 26 + .../klauspost/reedsolomon/.travis.yml | 32 + .../github.com/klauspost/reedsolomon/LICENSE | 23 + .../klauspost/reedsolomon/README.md | 321 + .../klauspost/reedsolomon/appveyor.yml | 20 + .../klauspost/reedsolomon/galois.go | 905 +++ .../reedsolomon/galoisAvx512_amd64.go | 188 + .../reedsolomon/galoisAvx512_amd64.s | 590 ++ .../klauspost/reedsolomon/galois_amd64.go | 92 + .../klauspost/reedsolomon/galois_amd64.s | 236 + .../klauspost/reedsolomon/galois_arm64.go | 52 + .../klauspost/reedsolomon/galois_arm64.s | 141 + .../klauspost/reedsolomon/galois_noasm.go | 34 + .../klauspost/reedsolomon/galois_ppc64le.go | 70 + .../klauspost/reedsolomon/galois_ppc64le.s | 126 + .../klauspost/reedsolomon/gentables.go | 132 + .../klauspost/reedsolomon/inversion_tree.go | 160 + .../klauspost/reedsolomon/matrix.go | 279 + .../klauspost/reedsolomon/options.go | 118 + .../klauspost/reedsolomon/reedsolomon.go | 900 +++ .../klauspost/reedsolomon/streaming.go | 582 ++ vendor/github.com/kr/pty/.gitignore | 4 + vendor/github.com/kr/pty/License | 23 + vendor/github.com/kr/pty/README.md | 100 + vendor/github.com/kr/pty/doc.go | 16 + vendor/github.com/kr/pty/go.mod | 1 + vendor/github.com/kr/pty/ioctl.go | 13 + vendor/github.com/kr/pty/ioctl_bsd.go | 39 + vendor/github.com/kr/pty/mktypes.bash | 19 + vendor/github.com/kr/pty/pty_darwin.go | 65 + vendor/github.com/kr/pty/pty_dragonfly.go | 80 + vendor/github.com/kr/pty/pty_freebsd.go | 78 + vendor/github.com/kr/pty/pty_linux.go | 51 + vendor/github.com/kr/pty/pty_openbsd.go | 33 + vendor/github.com/kr/pty/pty_unsupported.go | 11 + vendor/github.com/kr/pty/run.go | 56 + vendor/github.com/kr/pty/types.go | 10 + vendor/github.com/kr/pty/types_dragonfly.go | 17 + vendor/github.com/kr/pty/types_freebsd.go | 15 + vendor/github.com/kr/pty/types_openbsd.go | 14 + vendor/github.com/kr/pty/util.go | 64 + vendor/github.com/kr/pty/ztypes_386.go | 9 + vendor/github.com/kr/pty/ztypes_amd64.go | 9 + vendor/github.com/kr/pty/ztypes_arm.go | 9 + vendor/github.com/kr/pty/ztypes_arm64.go | 11 + .../kr/pty/ztypes_dragonfly_amd64.go | 14 + .../github.com/kr/pty/ztypes_freebsd_386.go | 13 + .../github.com/kr/pty/ztypes_freebsd_amd64.go | 14 + .../github.com/kr/pty/ztypes_freebsd_arm.go | 13 + vendor/github.com/kr/pty/ztypes_mipsx.go | 12 + .../github.com/kr/pty/ztypes_openbsd_386.go | 13 + .../github.com/kr/pty/ztypes_openbsd_amd64.go | 13 + vendor/github.com/kr/pty/ztypes_ppc64.go | 11 + vendor/github.com/kr/pty/ztypes_ppc64le.go | 11 + vendor/github.com/kr/pty/ztypes_s390x.go | 11 + vendor/github.com/mattn/go-isatty/.travis.yml | 13 + vendor/github.com/mattn/go-isatty/LICENSE | 9 + vendor/github.com/mattn/go-isatty/README.md | 50 + vendor/github.com/mattn/go-isatty/doc.go | 2 + vendor/github.com/mattn/go-isatty/go.mod | 3 + vendor/github.com/mattn/go-isatty/go.sum | 2 + .../mattn/go-isatty/isatty_android.go | 23 + .../github.com/mattn/go-isatty/isatty_bsd.go | 24 + .../mattn/go-isatty/isatty_linux.go | 19 + .../mattn/go-isatty/isatty_others.go | 15 + .../mattn/go-isatty/isatty_solaris.go | 22 + .../mattn/go-isatty/isatty_windows.go | 94 + vendor/github.com/pkg/errors/.gitignore | 24 + vendor/github.com/pkg/errors/.travis.yml | 15 + vendor/github.com/pkg/errors/LICENSE | 23 + vendor/github.com/pkg/errors/README.md | 52 + vendor/github.com/pkg/errors/appveyor.yml | 32 + vendor/github.com/pkg/errors/errors.go | 282 + vendor/github.com/pkg/errors/stack.go | 147 + .../github.com/templexxx/cpufeat/.gitignore | 15 + vendor/github.com/templexxx/cpufeat/LICENSE | 27 + vendor/github.com/templexxx/cpufeat/README.md | 1 + vendor/github.com/templexxx/cpufeat/cpu.go | 33 + .../github.com/templexxx/cpufeat/cpu_arm.go | 7 + .../github.com/templexxx/cpufeat/cpu_arm64.go | 7 + .../github.com/templexxx/cpufeat/cpu_mips.go | 7 + .../templexxx/cpufeat/cpu_mips64.go | 7 + .../templexxx/cpufeat/cpu_mips64le.go | 7 + .../templexxx/cpufeat/cpu_mipsle.go | 7 + .../github.com/templexxx/cpufeat/cpu_ppc64.go | 7 + .../templexxx/cpufeat/cpu_ppc64le.go | 7 + .../github.com/templexxx/cpufeat/cpu_s390x.go | 7 + .../github.com/templexxx/cpufeat/cpu_x86.go | 70 + vendor/github.com/templexxx/cpufeat/cpu_x86.s | 32 + .../github.com/templexxx/xor/.gitattributes | 1 + vendor/github.com/templexxx/xor/.gitignore | 18 + vendor/github.com/templexxx/xor/LICENSE | 21 + vendor/github.com/templexxx/xor/README.md | 50 + vendor/github.com/templexxx/xor/avx2_amd64.s | 438 ++ vendor/github.com/templexxx/xor/nosimd.go | 116 + vendor/github.com/templexxx/xor/sse2_amd64.s | 574 ++ vendor/github.com/templexxx/xor/xor.go | 49 + vendor/github.com/templexxx/xor/xor_amd64.go | 120 + vendor/github.com/templexxx/xor/xor_other.go | 19 + vendor/github.com/tjfoc/gmsm/LICENSE | 201 + vendor/github.com/tjfoc/gmsm/sm4/sm4.go | 342 + vendor/github.com/xtaci/kcp-go/.gitignore | 24 + vendor/github.com/xtaci/kcp-go/.travis.yml | 17 + vendor/github.com/xtaci/kcp-go/LICENSE | 22 + vendor/github.com/xtaci/kcp-go/README.md | 229 + vendor/github.com/xtaci/kcp-go/batchconn.go | 12 + vendor/github.com/xtaci/kcp-go/crypt.go | 785 ++ vendor/github.com/xtaci/kcp-go/donate.png | Bin 0 -> 4420 bytes vendor/github.com/xtaci/kcp-go/entropy.go | 52 + vendor/github.com/xtaci/kcp-go/fec.go | 337 + vendor/github.com/xtaci/kcp-go/flame.png | Bin 0 -> 57142 bytes vendor/github.com/xtaci/kcp-go/frame.png | Bin 0 -> 36006 bytes vendor/github.com/xtaci/kcp-go/kcp-go.png | Bin 0 -> 9153 bytes vendor/github.com/xtaci/kcp-go/kcp.go | 1069 +++ vendor/github.com/xtaci/kcp-go/readloop.go | 48 + .../xtaci/kcp-go/readloop_generic.go | 11 + .../github.com/xtaci/kcp-go/readloop_linux.go | 120 + vendor/github.com/xtaci/kcp-go/sess.go | 1047 +++ vendor/github.com/xtaci/kcp-go/snmp.go | 164 + vendor/github.com/xtaci/kcp-go/tx.go | 24 + vendor/github.com/xtaci/kcp-go/tx_generic.go | 11 + vendor/github.com/xtaci/kcp-go/tx_linux.go | 51 + .../github.com/xtaci/kcp-go/wechat_donate.jpg | Bin 0 -> 35307 bytes vendor/golang.org/x/crypto/AUTHORS | 3 + vendor/golang.org/x/crypto/CONTRIBUTORS | 3 + vendor/golang.org/x/crypto/LICENSE | 27 + vendor/golang.org/x/crypto/PATENTS | 22 + vendor/golang.org/x/crypto/argon2/argon2.go | 285 + vendor/golang.org/x/crypto/argon2/blake2b.go | 53 + .../x/crypto/argon2/blamka_amd64.go | 60 + .../golang.org/x/crypto/argon2/blamka_amd64.s | 243 + .../x/crypto/argon2/blamka_generic.go | 163 + .../golang.org/x/crypto/argon2/blamka_ref.go | 15 + vendor/golang.org/x/crypto/bcrypt/base64.go | 35 + vendor/golang.org/x/crypto/bcrypt/bcrypt.go | 295 + vendor/golang.org/x/crypto/blake2b/blake2b.go | 289 + .../x/crypto/blake2b/blake2bAVX2_amd64.go | 37 + .../x/crypto/blake2b/blake2bAVX2_amd64.s | 750 ++ .../x/crypto/blake2b/blake2b_amd64.go | 24 + .../x/crypto/blake2b/blake2b_amd64.s | 281 + .../x/crypto/blake2b/blake2b_generic.go | 179 + .../x/crypto/blake2b/blake2b_ref.go | 11 + vendor/golang.org/x/crypto/blake2b/blake2x.go | 177 + .../golang.org/x/crypto/blake2b/register.go | 32 + vendor/golang.org/x/crypto/blowfish/block.go | 159 + vendor/golang.org/x/crypto/blowfish/cipher.go | 99 + vendor/golang.org/x/crypto/blowfish/const.go | 199 + vendor/golang.org/x/crypto/cast5/cast5.go | 533 ++ .../x/crypto/internal/subtle/aliasing.go | 32 + .../internal/subtle/aliasing_appengine.go | 35 + vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go | 77 + .../x/crypto/salsa20/salsa/hsalsa20.go | 144 + .../x/crypto/salsa20/salsa/salsa208.go | 199 + .../x/crypto/salsa20/salsa/salsa20_amd64.go | 23 + .../x/crypto/salsa20/salsa/salsa20_amd64.s | 883 +++ .../x/crypto/salsa20/salsa/salsa20_noasm.go | 14 + .../x/crypto/salsa20/salsa/salsa20_ref.go | 231 + vendor/golang.org/x/crypto/salsa20/salsa20.go | 58 + vendor/golang.org/x/crypto/scrypt/scrypt.go | 244 + vendor/golang.org/x/crypto/sha3/doc.go | 66 + vendor/golang.org/x/crypto/sha3/hashes.go | 97 + .../x/crypto/sha3/hashes_generic.go | 27 + vendor/golang.org/x/crypto/sha3/keccakf.go | 412 + .../golang.org/x/crypto/sha3/keccakf_amd64.go | 13 + .../golang.org/x/crypto/sha3/keccakf_amd64.s | 390 + vendor/golang.org/x/crypto/sha3/register.go | 18 + vendor/golang.org/x/crypto/sha3/sha3.go | 192 + vendor/golang.org/x/crypto/sha3/sha3_s390x.go | 284 + vendor/golang.org/x/crypto/sha3/sha3_s390x.s | 33 + vendor/golang.org/x/crypto/sha3/shake.go | 173 + .../golang.org/x/crypto/sha3/shake_generic.go | 19 + vendor/golang.org/x/crypto/sha3/xor.go | 16 + .../golang.org/x/crypto/sha3/xor_generic.go | 28 + .../golang.org/x/crypto/sha3/xor_unaligned.go | 58 + vendor/golang.org/x/crypto/tea/cipher.go | 116 + vendor/golang.org/x/crypto/twofish/twofish.go | 348 + vendor/golang.org/x/crypto/xtea/block.go | 66 + vendor/golang.org/x/crypto/xtea/cipher.go | 90 + vendor/golang.org/x/net/AUTHORS | 3 + vendor/golang.org/x/net/CONTRIBUTORS | 3 + vendor/golang.org/x/net/LICENSE | 27 + vendor/golang.org/x/net/PATENTS | 22 + vendor/golang.org/x/net/bpf/asm.go | 41 + vendor/golang.org/x/net/bpf/constants.go | 222 + vendor/golang.org/x/net/bpf/doc.go | 82 + vendor/golang.org/x/net/bpf/instructions.go | 726 ++ vendor/golang.org/x/net/bpf/setter.go | 10 + vendor/golang.org/x/net/bpf/vm.go | 150 + .../golang.org/x/net/bpf/vm_instructions.go | 182 + .../golang.org/x/net/internal/iana/const.go | 223 + vendor/golang.org/x/net/internal/iana/gen.go | 383 + .../x/net/internal/socket/cmsghdr.go | 11 + .../x/net/internal/socket/cmsghdr_bsd.go | 13 + .../internal/socket/cmsghdr_linux_32bit.go | 14 + .../internal/socket/cmsghdr_linux_64bit.go | 14 + .../internal/socket/cmsghdr_solaris_64bit.go | 14 + .../x/net/internal/socket/cmsghdr_stub.go | 17 + .../x/net/internal/socket/defs_aix.go | 38 + .../x/net/internal/socket/defs_darwin.go | 36 + .../x/net/internal/socket/defs_dragonfly.go | 36 + .../x/net/internal/socket/defs_freebsd.go | 36 + .../x/net/internal/socket/defs_linux.go | 40 + .../x/net/internal/socket/defs_netbsd.go | 38 + .../x/net/internal/socket/defs_openbsd.go | 36 + .../x/net/internal/socket/defs_solaris.go | 36 + .../golang.org/x/net/internal/socket/empty.s | 7 + .../x/net/internal/socket/error_unix.go | 31 + .../x/net/internal/socket/error_windows.go | 26 + .../x/net/internal/socket/iovec_32bit.go | 19 + .../x/net/internal/socket/iovec_64bit.go | 19 + .../internal/socket/iovec_solaris_64bit.go | 19 + .../x/net/internal/socket/iovec_stub.go | 11 + .../x/net/internal/socket/mmsghdr_stub.go | 21 + .../x/net/internal/socket/mmsghdr_unix.go | 42 + .../x/net/internal/socket/msghdr_bsd.go | 39 + .../x/net/internal/socket/msghdr_bsdvar.go | 16 + .../x/net/internal/socket/msghdr_linux.go | 36 + .../net/internal/socket/msghdr_linux_32bit.go | 24 + .../net/internal/socket/msghdr_linux_64bit.go | 24 + .../x/net/internal/socket/msghdr_openbsd.go | 14 + .../internal/socket/msghdr_solaris_64bit.go | 36 + .../x/net/internal/socket/msghdr_stub.go | 14 + .../x/net/internal/socket/norace.go | 12 + .../golang.org/x/net/internal/socket/race.go | 37 + .../x/net/internal/socket/rawconn.go | 64 + .../x/net/internal/socket/rawconn_mmsg.go | 79 + .../x/net/internal/socket/rawconn_msg.go | 78 + .../x/net/internal/socket/rawconn_nommsg.go | 15 + .../x/net/internal/socket/rawconn_nomsg.go | 15 + .../x/net/internal/socket/socket.go | 288 + .../golang.org/x/net/internal/socket/sys.go | 33 + .../x/net/internal/socket/sys_bsd.go | 15 + .../x/net/internal/socket/sys_bsdvar.go | 23 + .../x/net/internal/socket/sys_const_unix.go | 17 + .../x/net/internal/socket/sys_darwin.go | 7 + .../x/net/internal/socket/sys_dragonfly.go | 32 + .../net/internal/socket/sys_go1_11_darwin.go | 33 + .../x/net/internal/socket/sys_linkname.go | 42 + .../x/net/internal/socket/sys_linux.go | 27 + .../x/net/internal/socket/sys_linux_386.go | 55 + .../x/net/internal/socket/sys_linux_386.s | 11 + .../x/net/internal/socket/sys_linux_amd64.go | 10 + .../x/net/internal/socket/sys_linux_arm.go | 10 + .../x/net/internal/socket/sys_linux_arm64.go | 10 + .../x/net/internal/socket/sys_linux_mips.go | 10 + .../x/net/internal/socket/sys_linux_mips64.go | 10 + .../net/internal/socket/sys_linux_mips64le.go | 10 + .../x/net/internal/socket/sys_linux_mipsle.go | 10 + .../x/net/internal/socket/sys_linux_ppc64.go | 10 + .../net/internal/socket/sys_linux_ppc64le.go | 10 + .../net/internal/socket/sys_linux_riscv64.go | 12 + .../x/net/internal/socket/sys_linux_s390x.go | 55 + .../x/net/internal/socket/sys_linux_s390x.s | 11 + .../x/net/internal/socket/sys_netbsd.go | 25 + .../x/net/internal/socket/sys_posix.go | 183 + .../x/net/internal/socket/sys_solaris.go | 70 + .../x/net/internal/socket/sys_solaris_amd64.s | 11 + .../x/net/internal/socket/sys_stub.go | 63 + .../x/net/internal/socket/sys_unix.go | 33 + .../x/net/internal/socket/sys_windows.go | 71 + .../x/net/internal/socket/zsys_aix_ppc64.go | 60 + .../x/net/internal/socket/zsys_darwin_386.go | 51 + .../net/internal/socket/zsys_darwin_amd64.go | 53 + .../x/net/internal/socket/zsys_darwin_arm.go | 51 + .../net/internal/socket/zsys_darwin_arm64.go | 53 + .../internal/socket/zsys_dragonfly_amd64.go | 53 + .../x/net/internal/socket/zsys_freebsd_386.go | 51 + .../net/internal/socket/zsys_freebsd_amd64.go | 53 + .../x/net/internal/socket/zsys_freebsd_arm.go | 51 + .../net/internal/socket/zsys_freebsd_arm64.go | 53 + .../x/net/internal/socket/zsys_linux_386.go | 54 + .../x/net/internal/socket/zsys_linux_amd64.go | 57 + .../x/net/internal/socket/zsys_linux_arm.go | 55 + .../x/net/internal/socket/zsys_linux_arm64.go | 58 + .../x/net/internal/socket/zsys_linux_mips.go | 55 + .../net/internal/socket/zsys_linux_mips64.go | 58 + .../internal/socket/zsys_linux_mips64le.go | 58 + .../net/internal/socket/zsys_linux_mipsle.go | 55 + .../x/net/internal/socket/zsys_linux_ppc64.go | 58 + .../net/internal/socket/zsys_linux_ppc64le.go | 58 + .../net/internal/socket/zsys_linux_riscv64.go | 59 + .../x/net/internal/socket/zsys_linux_s390x.go | 58 + .../x/net/internal/socket/zsys_netbsd_386.go | 57 + .../net/internal/socket/zsys_netbsd_amd64.go | 60 + .../x/net/internal/socket/zsys_netbsd_arm.go | 57 + .../net/internal/socket/zsys_netbsd_arm64.go | 59 + .../x/net/internal/socket/zsys_openbsd_386.go | 51 + .../net/internal/socket/zsys_openbsd_amd64.go | 53 + .../x/net/internal/socket/zsys_openbsd_arm.go | 51 + .../net/internal/socket/zsys_openbsd_arm64.go | 53 + .../net/internal/socket/zsys_solaris_amd64.go | 52 + vendor/golang.org/x/net/ipv4/batch.go | 194 + vendor/golang.org/x/net/ipv4/control.go | 144 + vendor/golang.org/x/net/ipv4/control_bsd.go | 41 + .../golang.org/x/net/ipv4/control_pktinfo.go | 39 + vendor/golang.org/x/net/ipv4/control_stub.go | 13 + vendor/golang.org/x/net/ipv4/control_unix.go | 73 + .../golang.org/x/net/ipv4/control_windows.go | 12 + vendor/golang.org/x/net/ipv4/defs_aix.go | 39 + vendor/golang.org/x/net/ipv4/defs_darwin.go | 77 + .../golang.org/x/net/ipv4/defs_dragonfly.go | 38 + vendor/golang.org/x/net/ipv4/defs_freebsd.go | 75 + vendor/golang.org/x/net/ipv4/defs_linux.go | 113 + vendor/golang.org/x/net/ipv4/defs_netbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_openbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_solaris.go | 84 + vendor/golang.org/x/net/ipv4/dgramopt.go | 264 + vendor/golang.org/x/net/ipv4/doc.go | 244 + vendor/golang.org/x/net/ipv4/endpoint.go | 186 + vendor/golang.org/x/net/ipv4/gen.go | 199 + vendor/golang.org/x/net/ipv4/genericopt.go | 55 + vendor/golang.org/x/net/ipv4/header.go | 173 + vendor/golang.org/x/net/ipv4/helper.go | 80 + vendor/golang.org/x/net/ipv4/iana.go | 38 + vendor/golang.org/x/net/ipv4/icmp.go | 57 + vendor/golang.org/x/net/ipv4/icmp_linux.go | 25 + vendor/golang.org/x/net/ipv4/icmp_stub.go | 25 + vendor/golang.org/x/net/ipv4/packet.go | 117 + vendor/golang.org/x/net/ipv4/payload.go | 23 + vendor/golang.org/x/net/ipv4/payload_cmsg.go | 84 + .../golang.org/x/net/ipv4/payload_nocmsg.go | 39 + vendor/golang.org/x/net/ipv4/sockopt.go | 44 + vendor/golang.org/x/net/ipv4/sockopt_posix.go | 71 + vendor/golang.org/x/net/ipv4/sockopt_stub.go | 42 + vendor/golang.org/x/net/ipv4/sys_aix.go | 38 + vendor/golang.org/x/net/ipv4/sys_asmreq.go | 119 + .../golang.org/x/net/ipv4/sys_asmreq_stub.go | 25 + vendor/golang.org/x/net/ipv4/sys_asmreqn.go | 42 + .../golang.org/x/net/ipv4/sys_asmreqn_stub.go | 21 + vendor/golang.org/x/net/ipv4/sys_bpf.go | 24 + vendor/golang.org/x/net/ipv4/sys_bpf_stub.go | 16 + vendor/golang.org/x/net/ipv4/sys_bsd.go | 37 + vendor/golang.org/x/net/ipv4/sys_darwin.go | 65 + vendor/golang.org/x/net/ipv4/sys_dragonfly.go | 35 + vendor/golang.org/x/net/ipv4/sys_freebsd.go | 76 + vendor/golang.org/x/net/ipv4/sys_linux.go | 60 + vendor/golang.org/x/net/ipv4/sys_solaris.go | 57 + vendor/golang.org/x/net/ipv4/sys_ssmreq.go | 52 + .../golang.org/x/net/ipv4/sys_ssmreq_stub.go | 21 + vendor/golang.org/x/net/ipv4/sys_stub.go | 13 + vendor/golang.org/x/net/ipv4/sys_windows.go | 67 + .../golang.org/x/net/ipv4/zsys_aix_ppc64.go | 33 + vendor/golang.org/x/net/ipv4/zsys_darwin.go | 99 + .../golang.org/x/net/ipv4/zsys_dragonfly.go | 31 + .../golang.org/x/net/ipv4/zsys_freebsd_386.go | 93 + .../x/net/ipv4/zsys_freebsd_amd64.go | 95 + .../golang.org/x/net/ipv4/zsys_freebsd_arm.go | 95 + .../x/net/ipv4/zsys_freebsd_arm64.go | 93 + .../golang.org/x/net/ipv4/zsys_linux_386.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_amd64.go | 132 + .../golang.org/x/net/ipv4/zsys_linux_arm.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_arm64.go | 132 + .../golang.org/x/net/ipv4/zsys_linux_mips.go | 130 + .../x/net/ipv4/zsys_linux_mips64.go | 132 + .../x/net/ipv4/zsys_linux_mips64le.go | 132 + .../x/net/ipv4/zsys_linux_mipsle.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_ppc.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_ppc64.go | 132 + .../x/net/ipv4/zsys_linux_ppc64le.go | 132 + .../x/net/ipv4/zsys_linux_riscv64.go | 134 + .../golang.org/x/net/ipv4/zsys_linux_s390x.go | 132 + vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_solaris.go | 100 + vendor/golang.org/x/net/ipv6/batch.go | 116 + vendor/golang.org/x/net/ipv6/control.go | 187 + .../x/net/ipv6/control_rfc2292_unix.go | 48 + .../x/net/ipv6/control_rfc3542_unix.go | 94 + vendor/golang.org/x/net/ipv6/control_stub.go | 13 + vendor/golang.org/x/net/ipv6/control_unix.go | 55 + .../golang.org/x/net/ipv6/control_windows.go | 12 + vendor/golang.org/x/net/ipv6/defs_aix.go | 82 + vendor/golang.org/x/net/ipv6/defs_darwin.go | 112 + .../golang.org/x/net/ipv6/defs_dragonfly.go | 82 + vendor/golang.org/x/net/ipv6/defs_freebsd.go | 105 + vendor/golang.org/x/net/ipv6/defs_linux.go | 138 + vendor/golang.org/x/net/ipv6/defs_netbsd.go | 80 + vendor/golang.org/x/net/ipv6/defs_openbsd.go | 89 + vendor/golang.org/x/net/ipv6/defs_solaris.go | 114 + vendor/golang.org/x/net/ipv6/dgramopt.go | 301 + vendor/golang.org/x/net/ipv6/doc.go | 243 + vendor/golang.org/x/net/ipv6/endpoint.go | 127 + vendor/golang.org/x/net/ipv6/gen.go | 199 + vendor/golang.org/x/net/ipv6/genericopt.go | 56 + vendor/golang.org/x/net/ipv6/header.go | 55 + vendor/golang.org/x/net/ipv6/helper.go | 59 + vendor/golang.org/x/net/ipv6/iana.go | 86 + vendor/golang.org/x/net/ipv6/icmp.go | 60 + vendor/golang.org/x/net/ipv6/icmp_bsd.go | 29 + vendor/golang.org/x/net/ipv6/icmp_linux.go | 27 + vendor/golang.org/x/net/ipv6/icmp_solaris.go | 27 + vendor/golang.org/x/net/ipv6/icmp_stub.go | 23 + vendor/golang.org/x/net/ipv6/icmp_windows.go | 22 + vendor/golang.org/x/net/ipv6/payload.go | 23 + vendor/golang.org/x/net/ipv6/payload_cmsg.go | 70 + .../golang.org/x/net/ipv6/payload_nocmsg.go | 38 + vendor/golang.org/x/net/ipv6/sockopt.go | 43 + vendor/golang.org/x/net/ipv6/sockopt_posix.go | 89 + vendor/golang.org/x/net/ipv6/sockopt_stub.go | 46 + vendor/golang.org/x/net/ipv6/sys_aix.go | 77 + vendor/golang.org/x/net/ipv6/sys_asmreq.go | 24 + .../golang.org/x/net/ipv6/sys_asmreq_stub.go | 17 + vendor/golang.org/x/net/ipv6/sys_bpf.go | 24 + vendor/golang.org/x/net/ipv6/sys_bpf_stub.go | 16 + vendor/golang.org/x/net/ipv6/sys_bsd.go | 57 + vendor/golang.org/x/net/ipv6/sys_darwin.go | 78 + vendor/golang.org/x/net/ipv6/sys_freebsd.go | 92 + vendor/golang.org/x/net/ipv6/sys_linux.go | 75 + vendor/golang.org/x/net/ipv6/sys_solaris.go | 74 + vendor/golang.org/x/net/ipv6/sys_ssmreq.go | 54 + .../golang.org/x/net/ipv6/sys_ssmreq_stub.go | 21 + vendor/golang.org/x/net/ipv6/sys_stub.go | 13 + vendor/golang.org/x/net/ipv6/sys_windows.go | 75 + .../golang.org/x/net/ipv6/zsys_aix_ppc64.go | 103 + vendor/golang.org/x/net/ipv6/zsys_darwin.go | 131 + .../golang.org/x/net/ipv6/zsys_dragonfly.go | 88 + .../golang.org/x/net/ipv6/zsys_freebsd_386.go | 122 + .../x/net/ipv6/zsys_freebsd_amd64.go | 124 + .../golang.org/x/net/ipv6/zsys_freebsd_arm.go | 124 + .../x/net/ipv6/zsys_freebsd_arm64.go | 122 + .../golang.org/x/net/ipv6/zsys_linux_386.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_amd64.go | 154 + .../golang.org/x/net/ipv6/zsys_linux_arm.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_arm64.go | 154 + .../golang.org/x/net/ipv6/zsys_linux_mips.go | 152 + .../x/net/ipv6/zsys_linux_mips64.go | 154 + .../x/net/ipv6/zsys_linux_mips64le.go | 154 + .../x/net/ipv6/zsys_linux_mipsle.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_ppc.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_ppc64.go | 154 + .../x/net/ipv6/zsys_linux_ppc64le.go | 154 + .../x/net/ipv6/zsys_linux_riscv64.go | 156 + .../golang.org/x/net/ipv6/zsys_linux_s390x.go | 154 + vendor/golang.org/x/net/ipv6/zsys_netbsd.go | 84 + vendor/golang.org/x/net/ipv6/zsys_openbsd.go | 93 + vendor/golang.org/x/net/ipv6/zsys_solaris.go | 131 + vendor/golang.org/x/sys/AUTHORS | 3 + vendor/golang.org/x/sys/CONTRIBUTORS | 3 + vendor/golang.org/x/sys/LICENSE | 27 + vendor/golang.org/x/sys/PATENTS | 22 + vendor/golang.org/x/sys/cpu/byteorder.go | 30 + vendor/golang.org/x/sys/cpu/cpu.go | 126 + vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go | 30 + vendor/golang.org/x/sys/cpu/cpu_arm.go | 9 + vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go | 21 + vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 16 + vendor/golang.org/x/sys/cpu/cpu_gccgo.c | 43 + vendor/golang.org/x/sys/cpu/cpu_gccgo.go | 26 + .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 22 + vendor/golang.org/x/sys/cpu/cpu_linux.go | 59 + .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 67 + .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 33 + .../golang.org/x/sys/cpu/cpu_linux_s390x.go | 161 + vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 11 + vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 11 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 11 + vendor/golang.org/x/sys/cpu/cpu_s390x.s | 57 + vendor/golang.org/x/sys/cpu/cpu_wasm.go | 15 + vendor/golang.org/x/sys/cpu/cpu_x86.go | 59 + vendor/golang.org/x/sys/cpu/cpu_x86.s | 27 + vendor/golang.org/x/sys/unix/.gitignore | 2 + vendor/golang.org/x/sys/unix/README.md | 173 + .../golang.org/x/sys/unix/affinity_linux.go | 124 + vendor/golang.org/x/sys/unix/aliases.go | 14 + vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 17 + vendor/golang.org/x/sys/unix/asm_darwin_386.s | 29 + .../golang.org/x/sys/unix/asm_darwin_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_darwin_arm.s | 30 + .../golang.org/x/sys/unix/asm_darwin_arm64.s | 30 + .../x/sys/unix/asm_dragonfly_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_386.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm64.s | 29 + vendor/golang.org/x/sys/unix/asm_linux_386.s | 65 + .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 + vendor/golang.org/x/sys/unix/asm_linux_arm.s | 56 + .../golang.org/x/sys/unix/asm_linux_arm64.s | 52 + .../golang.org/x/sys/unix/asm_linux_mips64x.s | 56 + .../golang.org/x/sys/unix/asm_linux_mipsx.s | 54 + .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 44 + .../golang.org/x/sys/unix/asm_linux_s390x.s | 56 + vendor/golang.org/x/sys/unix/asm_netbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_netbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_arm64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_solaris_amd64.s | 17 + .../golang.org/x/sys/unix/bluetooth_linux.go | 35 + vendor/golang.org/x/sys/unix/cap_freebsd.go | 195 + vendor/golang.org/x/sys/unix/constants.go | 13 + vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 27 + vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 29 + vendor/golang.org/x/sys/unix/dev_darwin.go | 24 + vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 + vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 + vendor/golang.org/x/sys/unix/dev_linux.go | 42 + vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 + vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 + vendor/golang.org/x/sys/unix/dirent.go | 17 + vendor/golang.org/x/sys/unix/endian_big.go | 9 + vendor/golang.org/x/sys/unix/endian_little.go | 9 + vendor/golang.org/x/sys/unix/env_unix.go | 31 + .../x/sys/unix/errors_freebsd_386.go | 227 + .../x/sys/unix/errors_freebsd_amd64.go | 227 + .../x/sys/unix/errors_freebsd_arm.go | 226 + vendor/golang.org/x/sys/unix/fcntl.go | 32 + vendor/golang.org/x/sys/unix/fcntl_darwin.go | 18 + .../x/sys/unix/fcntl_linux_32bit.go | 13 + vendor/golang.org/x/sys/unix/gccgo.go | 62 + vendor/golang.org/x/sys/unix/gccgo_c.c | 39 + .../x/sys/unix/gccgo_linux_amd64.go | 20 + vendor/golang.org/x/sys/unix/ioctl.go | 30 + vendor/golang.org/x/sys/unix/mkall.sh | 212 + vendor/golang.org/x/sys/unix/mkasm_darwin.go | 61 + vendor/golang.org/x/sys/unix/mkerrors.sh | 659 ++ vendor/golang.org/x/sys/unix/mkpost.go | 106 + vendor/golang.org/x/sys/unix/mksyscall.go | 407 + .../x/sys/unix/mksyscall_aix_ppc.go | 404 + .../x/sys/unix/mksyscall_aix_ppc64.go | 602 ++ .../x/sys/unix/mksyscall_solaris.go | 335 + .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 265 + vendor/golang.org/x/sys/unix/mksysnum.go | 190 + .../golang.org/x/sys/unix/openbsd_pledge.go | 166 + .../golang.org/x/sys/unix/openbsd_unveil.go | 44 + vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 + vendor/golang.org/x/sys/unix/race.go | 30 + vendor/golang.org/x/sys/unix/race0.go | 25 + .../golang.org/x/sys/unix/sockcmsg_linux.go | 36 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 120 + vendor/golang.org/x/sys/unix/str.go | 26 + vendor/golang.org/x/sys/unix/syscall.go | 54 + vendor/golang.org/x/sys/unix/syscall_aix.go | 549 ++ .../golang.org/x/sys/unix/syscall_aix_ppc.go | 34 + .../x/sys/unix/syscall_aix_ppc64.go | 34 + vendor/golang.org/x/sys/unix/syscall_bsd.go | 624 ++ .../golang.org/x/sys/unix/syscall_darwin.go | 706 ++ .../x/sys/unix/syscall_darwin_386.go | 63 + .../x/sys/unix/syscall_darwin_amd64.go | 63 + .../x/sys/unix/syscall_darwin_arm.go | 64 + .../x/sys/unix/syscall_darwin_arm64.go | 66 + .../x/sys/unix/syscall_darwin_libSystem.go | 31 + .../x/sys/unix/syscall_dragonfly.go | 539 ++ .../x/sys/unix/syscall_dragonfly_amd64.go | 52 + .../golang.org/x/sys/unix/syscall_freebsd.go | 824 ++ .../x/sys/unix/syscall_freebsd_386.go | 52 + .../x/sys/unix/syscall_freebsd_amd64.go | 52 + .../x/sys/unix/syscall_freebsd_arm.go | 52 + .../x/sys/unix/syscall_freebsd_arm64.go | 52 + vendor/golang.org/x/sys/unix/syscall_linux.go | 1771 +++++ .../x/sys/unix/syscall_linux_386.go | 386 + .../x/sys/unix/syscall_linux_amd64.go | 190 + .../x/sys/unix/syscall_linux_amd64_gc.go | 13 + .../x/sys/unix/syscall_linux_arm.go | 274 + .../x/sys/unix/syscall_linux_arm64.go | 223 + .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 + .../x/sys/unix/syscall_linux_gc_386.go | 16 + .../x/sys/unix/syscall_linux_gccgo_386.go | 30 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 + .../x/sys/unix/syscall_linux_mips64x.go | 222 + .../x/sys/unix/syscall_linux_mipsx.go | 234 + .../x/sys/unix/syscall_linux_ppc64x.go | 152 + .../x/sys/unix/syscall_linux_riscv64.go | 226 + .../x/sys/unix/syscall_linux_s390x.go | 338 + .../x/sys/unix/syscall_linux_sparc64.go | 147 + .../golang.org/x/sys/unix/syscall_netbsd.go | 622 ++ .../x/sys/unix/syscall_netbsd_386.go | 33 + .../x/sys/unix/syscall_netbsd_amd64.go | 33 + .../x/sys/unix/syscall_netbsd_arm.go | 33 + .../x/sys/unix/syscall_netbsd_arm64.go | 33 + .../golang.org/x/sys/unix/syscall_openbsd.go | 416 + .../x/sys/unix/syscall_openbsd_386.go | 37 + .../x/sys/unix/syscall_openbsd_amd64.go | 37 + .../x/sys/unix/syscall_openbsd_arm.go | 37 + .../golang.org/x/sys/unix/syscall_solaris.go | 737 ++ .../x/sys/unix/syscall_solaris_amd64.go | 23 + vendor/golang.org/x/sys/unix/syscall_unix.go | 431 ++ .../golang.org/x/sys/unix/syscall_unix_gc.go | 15 + .../x/sys/unix/syscall_unix_gc_ppc64x.go | 24 + vendor/golang.org/x/sys/unix/timestruct.go | 82 + vendor/golang.org/x/sys/unix/types_aix.go | 236 + vendor/golang.org/x/sys/unix/types_darwin.go | 283 + .../golang.org/x/sys/unix/types_dragonfly.go | 263 + vendor/golang.org/x/sys/unix/types_freebsd.go | 356 + vendor/golang.org/x/sys/unix/types_netbsd.go | 289 + vendor/golang.org/x/sys/unix/types_openbsd.go | 282 + vendor/golang.org/x/sys/unix/types_solaris.go | 266 + vendor/golang.org/x/sys/unix/xattr_bsd.go | 240 + .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1372 ++++ .../x/sys/unix/zerrors_aix_ppc64.go | 1373 ++++ .../x/sys/unix/zerrors_darwin_386.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_amd64.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_arm.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_arm64.go | 1783 +++++ .../x/sys/unix/zerrors_dragonfly_amd64.go | 1650 ++++ .../x/sys/unix/zerrors_freebsd_386.go | 1793 +++++ .../x/sys/unix/zerrors_freebsd_amd64.go | 1794 +++++ .../x/sys/unix/zerrors_freebsd_arm.go | 1802 +++++ .../x/sys/unix/zerrors_freebsd_arm64.go | 1794 +++++ .../x/sys/unix/zerrors_linux_386.go | 2835 +++++++ .../x/sys/unix/zerrors_linux_amd64.go | 2835 +++++++ .../x/sys/unix/zerrors_linux_arm.go | 2841 +++++++ .../x/sys/unix/zerrors_linux_arm64.go | 2826 +++++++ .../x/sys/unix/zerrors_linux_mips.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mips64.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mips64le.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mipsle.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_ppc64.go | 2897 +++++++ .../x/sys/unix/zerrors_linux_ppc64le.go | 2897 +++++++ .../x/sys/unix/zerrors_linux_riscv64.go | 2822 +++++++ .../x/sys/unix/zerrors_linux_s390x.go | 2895 +++++++ .../x/sys/unix/zerrors_linux_sparc64.go | 2891 +++++++ .../x/sys/unix/zerrors_netbsd_386.go | 1772 +++++ .../x/sys/unix/zerrors_netbsd_amd64.go | 1762 +++++ .../x/sys/unix/zerrors_netbsd_arm.go | 1751 +++++ .../x/sys/unix/zerrors_netbsd_arm64.go | 1762 +++++ .../x/sys/unix/zerrors_openbsd_386.go | 1654 ++++ .../x/sys/unix/zerrors_openbsd_amd64.go | 1765 +++++ .../x/sys/unix/zerrors_openbsd_arm.go | 1656 ++++ .../x/sys/unix/zerrors_solaris_amd64.go | 1532 ++++ .../golang.org/x/sys/unix/zptrace386_linux.go | 80 + .../golang.org/x/sys/unix/zptracearm_linux.go | 41 + .../x/sys/unix/zptracemips_linux.go | 50 + .../x/sys/unix/zptracemipsle_linux.go | 50 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1450 ++++ .../x/sys/unix/zsyscall_aix_ppc64.go | 1416 ++++ .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1172 +++ .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1051 +++ .../x/sys/unix/zsyscall_darwin_386.1_11.go | 1810 +++++ .../x/sys/unix/zsyscall_darwin_386.go | 2505 ++++++ .../x/sys/unix/zsyscall_darwin_386.s | 284 + .../x/sys/unix/zsyscall_darwin_amd64.1_11.go | 1810 +++++ .../x/sys/unix/zsyscall_darwin_amd64.go | 2520 ++++++ .../x/sys/unix/zsyscall_darwin_amd64.s | 286 + .../x/sys/unix/zsyscall_darwin_arm.1_11.go | 1793 +++++ .../x/sys/unix/zsyscall_darwin_arm.go | 2483 ++++++ .../x/sys/unix/zsyscall_darwin_arm.s | 282 + .../x/sys/unix/zsyscall_darwin_arm64.1_11.go | 1793 +++++ .../x/sys/unix/zsyscall_darwin_arm64.go | 2483 ++++++ .../x/sys/unix/zsyscall_darwin_arm64.s | 282 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1659 ++++ .../x/sys/unix/zsyscall_freebsd_386.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_amd64.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_arm.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_arm64.go | 2015 +++++ .../x/sys/unix/zsyscall_linux_386.go | 2220 ++++++ .../x/sys/unix/zsyscall_linux_amd64.go | 2387 ++++++ .../x/sys/unix/zsyscall_linux_arm.go | 2342 ++++++ .../x/sys/unix/zsyscall_linux_arm64.go | 2244 ++++++ .../x/sys/unix/zsyscall_linux_mips.go | 2400 ++++++ .../x/sys/unix/zsyscall_linux_mips64.go | 2371 ++++++ .../x/sys/unix/zsyscall_linux_mips64le.go | 2371 ++++++ .../x/sys/unix/zsyscall_linux_mipsle.go | 2400 ++++++ .../x/sys/unix/zsyscall_linux_ppc64.go | 2449 ++++++ .../x/sys/unix/zsyscall_linux_ppc64le.go | 2449 ++++++ .../x/sys/unix/zsyscall_linux_riscv64.go | 2224 ++++++ .../x/sys/unix/zsyscall_linux_s390x.go | 2219 ++++++ .../x/sys/unix/zsyscall_linux_sparc64.go | 2382 ++++++ .../x/sys/unix/zsyscall_netbsd_386.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_amd64.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_arm.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_arm64.go | 1826 +++++ .../x/sys/unix/zsyscall_openbsd_386.go | 1692 ++++ .../x/sys/unix/zsyscall_openbsd_amd64.go | 1692 ++++ .../x/sys/unix/zsyscall_openbsd_arm.go | 1692 ++++ .../x/sys/unix/zsyscall_solaris_amd64.go | 1953 +++++ .../x/sys/unix/zsysctl_openbsd_386.go | 270 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 270 + .../x/sys/unix/zsysctl_openbsd_arm.go | 270 + .../x/sys/unix/zsysnum_darwin_386.go | 436 ++ .../x/sys/unix/zsysnum_darwin_amd64.go | 438 ++ .../x/sys/unix/zsysnum_darwin_arm.go | 436 ++ .../x/sys/unix/zsysnum_darwin_arm64.go | 436 ++ .../x/sys/unix/zsysnum_dragonfly_amd64.go | 315 + .../x/sys/unix/zsysnum_freebsd_386.go | 403 + .../x/sys/unix/zsysnum_freebsd_amd64.go | 403 + .../x/sys/unix/zsysnum_freebsd_arm.go | 403 + .../x/sys/unix/zsysnum_freebsd_arm64.go | 395 + .../x/sys/unix/zsysnum_linux_386.go | 392 + .../x/sys/unix/zsysnum_linux_amd64.go | 344 + .../x/sys/unix/zsysnum_linux_arm.go | 364 + .../x/sys/unix/zsysnum_linux_arm64.go | 289 + .../x/sys/unix/zsysnum_linux_mips.go | 377 + .../x/sys/unix/zsysnum_linux_mips64.go | 337 + .../x/sys/unix/zsysnum_linux_mips64le.go | 337 + .../x/sys/unix/zsysnum_linux_mipsle.go | 377 + .../x/sys/unix/zsysnum_linux_ppc64.go | 375 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 375 + .../x/sys/unix/zsysnum_linux_riscv64.go | 288 + .../x/sys/unix/zsysnum_linux_s390x.go | 337 + .../x/sys/unix/zsysnum_linux_sparc64.go | 351 + .../x/sys/unix/zsysnum_netbsd_386.go | 274 + .../x/sys/unix/zsysnum_netbsd_amd64.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm64.go | 274 + .../x/sys/unix/zsysnum_openbsd_386.go | 218 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 218 + .../x/sys/unix/zsysnum_openbsd_arm.go | 218 + .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 345 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 354 + .../x/sys/unix/ztypes_darwin_386.go | 499 ++ .../x/sys/unix/ztypes_darwin_amd64.go | 509 ++ .../x/sys/unix/ztypes_darwin_arm.go | 500 ++ .../x/sys/unix/ztypes_darwin_arm64.go | 509 ++ .../x/sys/unix/ztypes_dragonfly_amd64.go | 469 ++ .../x/sys/unix/ztypes_freebsd_386.go | 603 ++ .../x/sys/unix/ztypes_freebsd_amd64.go | 602 ++ .../x/sys/unix/ztypes_freebsd_arm.go | 602 ++ .../x/sys/unix/ztypes_freebsd_arm64.go | 602 ++ .../golang.org/x/sys/unix/ztypes_linux_386.go | 2135 +++++ .../x/sys/unix/ztypes_linux_amd64.go | 2148 ++++++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2126 +++++ .../x/sys/unix/ztypes_linux_arm64.go | 2127 +++++ .../x/sys/unix/ztypes_linux_mips.go | 2132 +++++ .../x/sys/unix/ztypes_linux_mips64.go | 2129 +++++ .../x/sys/unix/ztypes_linux_mips64le.go | 2129 +++++ .../x/sys/unix/ztypes_linux_mipsle.go | 2132 +++++ .../x/sys/unix/ztypes_linux_ppc64.go | 2137 +++++ .../x/sys/unix/ztypes_linux_ppc64le.go | 2137 +++++ .../x/sys/unix/ztypes_linux_riscv64.go | 2154 ++++++ .../x/sys/unix/ztypes_linux_s390x.go | 2151 ++++++ .../x/sys/unix/ztypes_linux_sparc64.go | 2132 +++++ .../x/sys/unix/ztypes_netbsd_386.go | 465 ++ .../x/sys/unix/ztypes_netbsd_amd64.go | 472 ++ .../x/sys/unix/ztypes_netbsd_arm.go | 470 ++ .../x/sys/unix/ztypes_netbsd_arm64.go | 472 ++ .../x/sys/unix/ztypes_openbsd_386.go | 570 ++ .../x/sys/unix/ztypes_openbsd_amd64.go | 570 ++ .../x/sys/unix/ztypes_openbsd_arm.go | 571 ++ .../x/sys/unix/ztypes_solaris_amd64.go | 442 ++ vendor/golang.org/x/sys/windows/aliases.go | 13 + .../x/sys/windows/asm_windows_386.s | 13 + .../x/sys/windows/asm_windows_amd64.s | 13 + .../x/sys/windows/asm_windows_arm.s | 11 + .../golang.org/x/sys/windows/dll_windows.go | 378 + .../golang.org/x/sys/windows/env_windows.go | 29 + vendor/golang.org/x/sys/windows/eventlog.go | 20 + .../golang.org/x/sys/windows/exec_windows.go | 97 + .../x/sys/windows/memory_windows.go | 26 + vendor/golang.org/x/sys/windows/mkerrors.bash | 64 + vendor/golang.org/x/sys/windows/mkerrors.go | 7 + vendor/golang.org/x/sys/windows/mksyscall.go | 7 + vendor/golang.org/x/sys/windows/race.go | 30 + vendor/golang.org/x/sys/windows/race0.go | 25 + .../x/sys/windows/security_windows.go | 649 ++ vendor/golang.org/x/sys/windows/service.go | 181 + vendor/golang.org/x/sys/windows/str.go | 22 + vendor/golang.org/x/sys/windows/syscall.go | 74 + .../x/sys/windows/syscall_windows.go | 1220 +++ .../golang.org/x/sys/windows/types_windows.go | 1441 ++++ .../x/sys/windows/types_windows_386.go | 22 + .../x/sys/windows/types_windows_amd64.go | 22 + .../x/sys/windows/types_windows_arm.go | 22 + .../x/sys/windows/zerrors_windows.go | 6853 +++++++++++++++++ .../x/sys/windows/zsyscall_windows.go | 2779 +++++++ .../hlandau/easymetric.v1/cexp/cexp.go | 97 + .../gopkg.in/hlandau/measurable.v1/README.md | 82 + .../hlandau/measurable.v1/measurable.go | 189 + .../gopkg.in/hlandau/passlib.v1/.travis.yml | 12 + vendor/gopkg.in/hlandau/passlib.v1/COPYING | 39 + vendor/gopkg.in/hlandau/passlib.v1/README.md | 100 + .../hlandau/passlib.v1/abstract/compare.go | 11 + .../hlandau/passlib.v1/abstract/errors.go | 15 + .../hlandau/passlib.v1/abstract/scheme.go | 34 + vendor/gopkg.in/hlandau/passlib.v1/default.go | 141 + .../hlandau/passlib.v1/hash/argon2/argon2.go | 115 + .../passlib.v1/hash/argon2/raw/argon2.go | 186 + .../hlandau/passlib.v1/hash/bcrypt/bcrypt.go | 72 + .../hash/bcryptsha256/bcryptsha256.go | 96 + .../hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go | 94 + .../passlib.v1/hash/pbkdf2/raw/base64.go | 20 + .../passlib.v1/hash/pbkdf2/raw/parse.go | 62 + .../passlib.v1/hash/pbkdf2/raw/pbkdf2.go | 15 + .../hlandau/passlib.v1/hash/pbkdf2/test.py | 30 + .../passlib.v1/hash/scrypt/raw/scrypt.go | 95 + .../hlandau/passlib.v1/hash/scrypt/scrypt.go | 113 + .../passlib.v1/hash/sha2crypt/raw/base64.go | 34 + .../passlib.v1/hash/sha2crypt/raw/parse.go | 82 + .../hash/sha2crypt/raw/sha2crypt.go | 187 + .../passlib.v1/hash/sha2crypt/sha2crypt.go | 147 + vendor/gopkg.in/hlandau/passlib.v1/passlib.go | 174 + vendor/modules.txt | 78 + 853 files changed, 287342 insertions(+), 6 deletions(-) create mode 100644 vendor/blitter.com/go/cryptmt/README.md create mode 100644 vendor/blitter.com/go/cryptmt/cryptmt.go create mode 100644 vendor/blitter.com/go/goutmp/LICENSE.mit create mode 100644 vendor/blitter.com/go/goutmp/README.md create mode 100644 vendor/blitter.com/go/goutmp/goutmp.go create mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.gpl create mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.mit create mode 100644 vendor/blitter.com/go/herradurakex/Makefile create mode 100644 vendor/blitter.com/go/herradurakex/README.md create mode 100644 vendor/blitter.com/go/herradurakex/herradurakex.go create mode 100644 vendor/blitter.com/go/mtwist/mtwist.go create mode 100644 vendor/blitter.com/go/wanderer/wanderer.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/README.md create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/README.md create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/doc.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/kem.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/kex.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/params.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/poly.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/params.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/poly.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go create mode 100644 vendor/github.com/jameskeane/bcrypt/.gitignore create mode 100644 vendor/github.com/jameskeane/bcrypt/LICENSE create mode 100644 vendor/github.com/jameskeane/bcrypt/README create mode 100644 vendor/github.com/jameskeane/bcrypt/bcrypt.go create mode 100644 vendor/github.com/jameskeane/bcrypt/cipher.go create mode 100644 vendor/github.com/klauspost/cpuid/.gitignore create mode 100644 vendor/github.com/klauspost/cpuid/.travis.yml create mode 100644 vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt create mode 100644 vendor/github.com/klauspost/cpuid/LICENSE create mode 100644 vendor/github.com/klauspost/cpuid/README.md create mode 100644 vendor/github.com/klauspost/cpuid/cpuid.go create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_386.s create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_amd64.s create mode 100644 vendor/github.com/klauspost/cpuid/detect_intel.go create mode 100644 vendor/github.com/klauspost/cpuid/detect_ref.go create mode 100644 vendor/github.com/klauspost/cpuid/generate.go create mode 100644 vendor/github.com/klauspost/cpuid/private-gen.go create mode 100644 vendor/github.com/klauspost/reedsolomon/.gitignore create mode 100644 vendor/github.com/klauspost/reedsolomon/.travis.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/LICENSE create mode 100644 vendor/github.com/klauspost/reedsolomon/README.md create mode 100644 vendor/github.com/klauspost/reedsolomon/appveyor.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/galois.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_noasm.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s create mode 100644 vendor/github.com/klauspost/reedsolomon/gentables.go create mode 100644 vendor/github.com/klauspost/reedsolomon/inversion_tree.go create mode 100644 vendor/github.com/klauspost/reedsolomon/matrix.go create mode 100644 vendor/github.com/klauspost/reedsolomon/options.go create mode 100644 vendor/github.com/klauspost/reedsolomon/reedsolomon.go create mode 100644 vendor/github.com/klauspost/reedsolomon/streaming.go create mode 100644 vendor/github.com/kr/pty/.gitignore create mode 100644 vendor/github.com/kr/pty/License create mode 100644 vendor/github.com/kr/pty/README.md create mode 100644 vendor/github.com/kr/pty/doc.go create mode 100644 vendor/github.com/kr/pty/go.mod create mode 100644 vendor/github.com/kr/pty/ioctl.go create mode 100644 vendor/github.com/kr/pty/ioctl_bsd.go create mode 100644 vendor/github.com/kr/pty/mktypes.bash create mode 100644 vendor/github.com/kr/pty/pty_darwin.go create mode 100644 vendor/github.com/kr/pty/pty_dragonfly.go create mode 100644 vendor/github.com/kr/pty/pty_freebsd.go create mode 100644 vendor/github.com/kr/pty/pty_linux.go create mode 100644 vendor/github.com/kr/pty/pty_openbsd.go create mode 100644 vendor/github.com/kr/pty/pty_unsupported.go create mode 100644 vendor/github.com/kr/pty/run.go create mode 100644 vendor/github.com/kr/pty/types.go create mode 100644 vendor/github.com/kr/pty/types_dragonfly.go create mode 100644 vendor/github.com/kr/pty/types_freebsd.go create mode 100644 vendor/github.com/kr/pty/types_openbsd.go create mode 100644 vendor/github.com/kr/pty/util.go create mode 100644 vendor/github.com/kr/pty/ztypes_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_arm.go create mode 100644 vendor/github.com/kr/pty/ztypes_arm64.go create mode 100644 vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_arm.go create mode 100644 vendor/github.com/kr/pty/ztypes_mipsx.go create mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_ppc64.go create mode 100644 vendor/github.com/kr/pty/ztypes_ppc64le.go create mode 100644 vendor/github.com/kr/pty/ztypes_s390x.go create mode 100644 vendor/github.com/mattn/go-isatty/.travis.yml create mode 100644 vendor/github.com/mattn/go-isatty/LICENSE create mode 100644 vendor/github.com/mattn/go-isatty/README.md create mode 100644 vendor/github.com/mattn/go-isatty/doc.go create mode 100644 vendor/github.com/mattn/go-isatty/go.mod create mode 100644 vendor/github.com/mattn/go-isatty/go.sum create mode 100644 vendor/github.com/mattn/go-isatty/isatty_android.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_bsd.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_linux.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_others.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_solaris.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_windows.go create mode 100644 vendor/github.com/pkg/errors/.gitignore create mode 100644 vendor/github.com/pkg/errors/.travis.yml create mode 100644 vendor/github.com/pkg/errors/LICENSE create mode 100644 vendor/github.com/pkg/errors/README.md create mode 100644 vendor/github.com/pkg/errors/appveyor.yml create mode 100644 vendor/github.com/pkg/errors/errors.go create mode 100644 vendor/github.com/pkg/errors/stack.go create mode 100644 vendor/github.com/templexxx/cpufeat/.gitignore create mode 100644 vendor/github.com/templexxx/cpufeat/LICENSE create mode 100644 vendor/github.com/templexxx/cpufeat/README.md create mode 100644 vendor/github.com/templexxx/cpufeat/cpu.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64le.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mipsle.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_s390x.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.s create mode 100644 vendor/github.com/templexxx/xor/.gitattributes create mode 100644 vendor/github.com/templexxx/xor/.gitignore create mode 100644 vendor/github.com/templexxx/xor/LICENSE create mode 100644 vendor/github.com/templexxx/xor/README.md create mode 100644 vendor/github.com/templexxx/xor/avx2_amd64.s create mode 100644 vendor/github.com/templexxx/xor/nosimd.go create mode 100644 vendor/github.com/templexxx/xor/sse2_amd64.s create mode 100644 vendor/github.com/templexxx/xor/xor.go create mode 100644 vendor/github.com/templexxx/xor/xor_amd64.go create mode 100644 vendor/github.com/templexxx/xor/xor_other.go create mode 100644 vendor/github.com/tjfoc/gmsm/LICENSE create mode 100644 vendor/github.com/tjfoc/gmsm/sm4/sm4.go create mode 100644 vendor/github.com/xtaci/kcp-go/.gitignore create mode 100644 vendor/github.com/xtaci/kcp-go/.travis.yml create mode 100644 vendor/github.com/xtaci/kcp-go/LICENSE create mode 100644 vendor/github.com/xtaci/kcp-go/README.md create mode 100644 vendor/github.com/xtaci/kcp-go/batchconn.go create mode 100644 vendor/github.com/xtaci/kcp-go/crypt.go create mode 100644 vendor/github.com/xtaci/kcp-go/donate.png create mode 100644 vendor/github.com/xtaci/kcp-go/entropy.go create mode 100644 vendor/github.com/xtaci/kcp-go/fec.go create mode 100644 vendor/github.com/xtaci/kcp-go/flame.png create mode 100644 vendor/github.com/xtaci/kcp-go/frame.png create mode 100644 vendor/github.com/xtaci/kcp-go/kcp-go.png create mode 100644 vendor/github.com/xtaci/kcp-go/kcp.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop_generic.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop_linux.go create mode 100644 vendor/github.com/xtaci/kcp-go/sess.go create mode 100644 vendor/github.com/xtaci/kcp-go/snmp.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx_generic.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx_linux.go create mode 100644 vendor/github.com/xtaci/kcp-go/wechat_donate.jpg create mode 100644 vendor/golang.org/x/crypto/AUTHORS create mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS create mode 100644 vendor/golang.org/x/crypto/LICENSE create mode 100644 vendor/golang.org/x/crypto/PATENTS create mode 100644 vendor/golang.org/x/crypto/argon2/argon2.go create mode 100644 vendor/golang.org/x/crypto/argon2/blake2b.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.s create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_generic.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_ref.go create mode 100644 vendor/golang.org/x/crypto/bcrypt/base64.go create mode 100644 vendor/golang.org/x/crypto/bcrypt/bcrypt.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_generic.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_ref.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2x.go create mode 100644 vendor/golang.org/x/crypto/blake2b/register.go create mode 100644 vendor/golang.org/x/crypto/blowfish/block.go create mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go create mode 100644 vendor/golang.org/x/crypto/blowfish/const.go create mode 100644 vendor/golang.org/x/crypto/cast5/cast5.go create mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing.go create mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go create mode 100644 vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa20.go create mode 100644 vendor/golang.org/x/crypto/scrypt/scrypt.go create mode 100644 vendor/golang.org/x/crypto/sha3/doc.go create mode 100644 vendor/golang.org/x/crypto/sha3/hashes.go create mode 100644 vendor/golang.org/x/crypto/sha3/hashes_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.s create mode 100644 vendor/golang.org/x/crypto/sha3/register.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.s create mode 100644 vendor/golang.org/x/crypto/sha3/shake.go create mode 100644 vendor/golang.org/x/crypto/sha3/shake_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor_unaligned.go create mode 100644 vendor/golang.org/x/crypto/tea/cipher.go create mode 100644 vendor/golang.org/x/crypto/twofish/twofish.go create mode 100644 vendor/golang.org/x/crypto/xtea/block.go create mode 100644 vendor/golang.org/x/crypto/xtea/cipher.go create mode 100644 vendor/golang.org/x/net/AUTHORS create mode 100644 vendor/golang.org/x/net/CONTRIBUTORS create mode 100644 vendor/golang.org/x/net/LICENSE create mode 100644 vendor/golang.org/x/net/PATENTS create mode 100644 vendor/golang.org/x/net/bpf/asm.go create mode 100644 vendor/golang.org/x/net/bpf/constants.go create mode 100644 vendor/golang.org/x/net/bpf/doc.go create mode 100644 vendor/golang.org/x/net/bpf/instructions.go create mode 100644 vendor/golang.org/x/net/bpf/setter.go create mode 100644 vendor/golang.org/x/net/bpf/vm.go create mode 100644 vendor/golang.org/x/net/bpf/vm_instructions.go create mode 100644 vendor/golang.org/x/net/internal/iana/const.go create mode 100644 vendor/golang.org/x/net/internal/iana/gen.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_aix.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_solaris.go create mode 100644 vendor/golang.org/x/net/internal/socket/empty.s create mode 100644 vendor/golang.org/x/net/internal/socket/error_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/error_windows.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/norace.go create mode 100644 vendor/golang.org/x/net/internal/socket/race.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_msg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/socket.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsdvar.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_const_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_dragonfly.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linkname.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_netbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_posix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_windows.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/batch.go create mode 100644 vendor/golang.org/x/net/ipv4/control.go create mode 100644 vendor/golang.org/x/net/ipv4/control_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/control_pktinfo.go create mode 100644 vendor/golang.org/x/net/ipv4/control_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/control_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/control_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_aix.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/dgramopt.go create mode 100644 vendor/golang.org/x/net/ipv4/doc.go create mode 100644 vendor/golang.org/x/net/ipv4/endpoint.go create mode 100644 vendor/golang.org/x/net/ipv4/gen.go create mode 100644 vendor/golang.org/x/net/ipv4/genericopt.go create mode 100644 vendor/golang.org/x/net/ipv4/header.go create mode 100644 vendor/golang.org/x/net/ipv4/helper.go create mode 100644 vendor/golang.org/x/net/ipv4/iana.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/packet.go create mode 100644 vendor/golang.org/x/net/ipv4/payload.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_nocmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_aix.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/batch.go create mode 100644 vendor/golang.org/x/net/ipv6/control.go create mode 100644 vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/control_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_aix.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/dgramopt.go create mode 100644 vendor/golang.org/x/net/ipv6/doc.go create mode 100644 vendor/golang.org/x/net/ipv6/endpoint.go create mode 100644 vendor/golang.org/x/net/ipv6/gen.go create mode 100644 vendor/golang.org/x/net/ipv6/genericopt.go create mode 100644 vendor/golang.org/x/net/ipv6/header.go create mode 100644 vendor/golang.org/x/net/ipv6/helper.go create mode 100644 vendor/golang.org/x/net/ipv6/iana.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_bsd.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/payload.go create mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg.go create mode 100644 vendor/golang.org/x/net/ipv6/payload_nocmsg.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_aix.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bsd.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_solaris.go create mode 100644 vendor/golang.org/x/sys/AUTHORS create mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sys/LICENSE create mode 100644 vendor/golang.org/x/sys/PATENTS create mode 100644 vendor/golang.org/x/sys/cpu/byteorder.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.c create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mips64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mipsx.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.s create mode 100644 vendor/golang.org/x/sys/cpu/cpu_wasm.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.s create mode 100644 vendor/golang.org/x/sys/unix/.gitignore create mode 100644 vendor/golang.org/x/sys/unix/README.md create mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go create mode 100644 vendor/golang.org/x/sys/unix/aliases.go create mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mips64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mipsx.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_solaris_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/bluetooth_linux.go create mode 100644 vendor/golang.org/x/sys/unix/cap_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/constants.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_linux.go create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dirent.go create mode 100644 vendor/golang.org/x/sys/unix/endian_big.go create mode 100644 vendor/golang.org/x/sys/unix/endian_little.go create mode 100644 vendor/golang.org/x/sys/unix/env_unix.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo_c.c create mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go create mode 100644 vendor/golang.org/x/sys/unix/mkall.sh create mode 100644 vendor/golang.org/x/sys/unix/mkasm_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/mkerrors.sh create mode 100644 vendor/golang.org/x/sys/unix/mkpost.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl create mode 100644 vendor/golang.org/x/sys/unix/mksysnum.go create mode 100644 vendor/golang.org/x/sys/unix/openbsd_pledge.go create mode 100644 vendor/golang.org/x/sys/unix/openbsd_unveil.go create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go create mode 100644 vendor/golang.org/x/sys/unix/race.go create mode 100644 vendor/golang.org/x/sys/unix/race0.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_linux.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix.go create mode 100644 vendor/golang.org/x/sys/unix/str.go create mode 100644 vendor/golang.org/x/sys/unix/syscall.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go create mode 100644 vendor/golang.org/x/sys/unix/types_aix.go create mode 100644 vendor/golang.org/x/sys/unix/types_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/types_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/types_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zptrace386_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracearm_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemips_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemipsle_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/windows/aliases.go create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_386.s create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_amd64.s create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_arm.s create mode 100644 vendor/golang.org/x/sys/windows/dll_windows.go create mode 100644 vendor/golang.org/x/sys/windows/env_windows.go create mode 100644 vendor/golang.org/x/sys/windows/eventlog.go create mode 100644 vendor/golang.org/x/sys/windows/exec_windows.go create mode 100644 vendor/golang.org/x/sys/windows/memory_windows.go create mode 100644 vendor/golang.org/x/sys/windows/mkerrors.bash create mode 100644 vendor/golang.org/x/sys/windows/mkerrors.go create mode 100644 vendor/golang.org/x/sys/windows/mksyscall.go create mode 100644 vendor/golang.org/x/sys/windows/race.go create mode 100644 vendor/golang.org/x/sys/windows/race0.go create mode 100644 vendor/golang.org/x/sys/windows/security_windows.go create mode 100644 vendor/golang.org/x/sys/windows/service.go create mode 100644 vendor/golang.org/x/sys/windows/str.go create mode 100644 vendor/golang.org/x/sys/windows/syscall.go create mode 100644 vendor/golang.org/x/sys/windows/syscall_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_386.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_amd64.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm.go create mode 100644 vendor/golang.org/x/sys/windows/zerrors_windows.go create mode 100644 vendor/golang.org/x/sys/windows/zsyscall_windows.go create mode 100644 vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go create mode 100644 vendor/gopkg.in/hlandau/measurable.v1/README.md create mode 100644 vendor/gopkg.in/hlandau/measurable.v1/measurable.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/.travis.yml create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/COPYING create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/README.md create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/default.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/passlib.go create mode 100644 vendor/modules.txt diff --git a/Makefile b/Makefile index 67462ed..a10c759 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,17 @@ GIT_COMMIT := $(shell git rev-list -1 HEAD) VERSION := 0.8.11 + +ifneq ($(VENDOR),) +GOBUILDOPTS :=-v -mod vendor +VTAG = "-vendor" +else +GOBUILDOPTS= +VTAG = +endif + #ifeq ($(BUILDOPTS),) -BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" +BUILDOPTS :=$(BUILDOPTS)"$(GOBUILDOPTS) -ldflags \"-X main.version=$(VERSION)$(VTAG) -X main.gitCommit=$(GIT_COMMIT)\"" #endif SUBPKGS = logger spinsult xsnet @@ -63,7 +72,7 @@ passwd: common vis: @which go-callvis >/dev/null 2>&1; \ stat=$$?; if [ $$stat -ne "0" ]; then \ - /bin/echo "go-callvis not found. Run go get github.com/Russtopia/go-callvis to install."; \ + /bin/echo "go-callvis not found. Run go get https://github.com/TrueFurby/go-callvis to install."; \ else \ make -C xs vis;\ make -C xsd vis;\ diff --git a/go.mod b/go.mod index 4332d9d..6f3a987 100644 --- a/go.mod +++ b/go.mod @@ -17,10 +17,12 @@ require ( github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 github.com/pkg/errors v0.8.1 // indirect + github.com/stretchr/testify v1.4.0 // indirect github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible + github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190416152802-12500544f89f diff --git a/go.sum b/go.sum index 57ef2f3..9474418 100644 --- a/go.sum +++ b/go.sum @@ -4,17 +4,19 @@ blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= -blitter.com/go/mtwist v1.0.0 h1:/Vg6k12+DC+fokeRrLApL22hZS/EqEazJTo/FDdbDog= -blitter.com/go/mtwist v1.0.0/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= blitter.com/go/mtwist v1.0.1/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= -blitter.com/go/wanderer v0.8.0 h1:xT7lKdKLSyonVf0vZW6R46E3gz3B5pJ1VDBlsa4ULDI= -blitter.com/go/wanderer v0.8.0/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= +blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= +blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= +git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s= github.com/klauspost/cpuid v1.2.2 h1:1xAgYebNnsb9LKCdLOvFWtAxGU/33mjJtyOVbmUa0Us= github.com/klauspost/cpuid v1.2.2/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -26,6 +28,11 @@ github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 h1:89CEmDvlq/F7SJEOqkIdNDGJXrQIhuIx9D2DBXjavSU= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b h1:mnG1fcsIB1d/3vbkBak2MM0u+vhGhlQwpeimUi7QncM= @@ -34,6 +41,8 @@ github.com/tjfoc/gmsm v1.0.1 h1:R11HlqhXkDospckjZEihx9SW/2VW0RgdwrykyWMFOQU= github.com/tjfoc/gmsm v1.0.1/go.mod h1:XxO4hdhhrzAd+G4CjDqaOkd0hUzmtPR/d3EiBBMn/wc= github.com/xtaci/kcp-go v5.4.19+incompatible h1:vv7Ar1D9WZGiv6deIOluxrC26Oin/2jFtx8sFU5tlvw= github.com/xtaci/kcp-go v5.4.19+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -45,9 +54,13 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/hlandau/easymetric.v1 v1.0.0 h1:ZbfbH7W3giuVDjWUoFhDOjjv20hiPr5HZ2yMV5f9IeE= gopkg.in/hlandau/easymetric.v1 v1.0.0/go.mod h1:yh75hypuFzAxmvECh3ZKGCvFnIfapYJh2wv7ASaX2RE= gopkg.in/hlandau/measurable.v1 v1.0.1 h1:wH5UZKCRUnRr1iD+xIZfwhtxhmr+bprRJttqA1Rklf4= gopkg.in/hlandau/measurable.v1 v1.0.1/go.mod h1:6N+SYJGMTmetsx7wskULP+juuO+++tsHJkAgzvzsbuM= gopkg.in/hlandau/passlib.v1 v1.0.10 h1:q5xh9ZHp907XTjVw8/EqG03//fnlITnIYQmv4Gn7TpE= gopkg.in/hlandau/passlib.v1 v1.0.10/go.mod h1:wxGAv2CtQHlzWY8NJp+p045yl4WHyX7v2T6XbOcmqjM= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/blitter.com/go/cryptmt/README.md b/vendor/blitter.com/go/cryptmt/README.md new file mode 100644 index 0000000..2f1e323 --- /dev/null +++ b/vendor/blitter.com/go/cryptmt/README.md @@ -0,0 +1,6 @@ +[![GoDoc](https://godoc.org/blitter.com/go/cryptmt?status.svg)](https://godoc.org/blitter.com/go/cryptmt) + +Implementation of cryptMTv1 stream cipher (but with mtwist64 as base accum) +https://eprint.iacr.org/2005/165.pdf + +Uses Mersenne Twister 64 golang implementation supplied by [cuixin](https://gist.github.com/cuixin): [gist](https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8) diff --git a/vendor/blitter.com/go/cryptmt/cryptmt.go b/vendor/blitter.com/go/cryptmt/cryptmt.go new file mode 100644 index 0000000..6b3960f --- /dev/null +++ b/vendor/blitter.com/go/cryptmt/cryptmt.go @@ -0,0 +1,60 @@ +// Package CryptMT - implementation of cryptMTv1 stream cipher +// (but with mtwist64 as base accum) +// https://eprint.iacr.org/2005/165.pdf +package cryptmt + +// TODO rlm: according to go docs, stream ciphers do not implement the +// cipher.Block interface at all (thus do not support Encrypt() or +// Decrypt() .. cipher.StreamReader/StreamWriter() only call +// XORKeyStream() anyhow and for my own purposes this is all that is +// required. + +import ( + "errors" + + mtwist "blitter.com/go/mtwist" +) + +type Cipher struct { + accum uint64 + m *mtwist.MT19937_64 +} + +func (c *Cipher) yield8() (r byte) { + c.accum = c.accum * (c.m.Int63() | 1) + r = byte(c.accum>>56) & 0xFF + return +} + +// NewCipher creates and returns a Cipher. The key argument should be the +// CryptMT key, 64 bytes. +func NewCipher(key []byte) (c *Cipher) { + c = &Cipher{m: mtwist.New()} + c.m.SeedFullState(key) + c.accum = 1 + // from paper, discard first 64 bytes of output + for idx := 0; idx < 64; idx++ { + _ = c.yield8() + } + return c +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream should panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Stream +// maintains state and does not reset at each XORKeyStream call. +func (c *Cipher) XORKeyStream(dst, src []byte) { + if len(dst) < len(src) { + panic(errors.New("len(dst) < len(src)")) + } + + for i, b := range src { + dst[i] = b ^ c.yield8() + } +} diff --git a/vendor/blitter.com/go/goutmp/LICENSE.mit b/vendor/blitter.com/go/goutmp/LICENSE.mit new file mode 100644 index 0000000..8d5754c --- /dev/null +++ b/vendor/blitter.com/go/goutmp/LICENSE.mit @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 - 2018 Russell Magee + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/blitter.com/go/goutmp/README.md b/vendor/blitter.com/go/goutmp/README.md new file mode 100644 index 0000000..ec6fe95 --- /dev/null +++ b/vendor/blitter.com/go/goutmp/README.md @@ -0,0 +1,17 @@ +goutmp - Minimal bindings to C stdlib pututmpx(), getutmpx() (/var/log/wtmp) and /var/log/lastlog + +Any Go program which allows user shell access should update the standard UNIX files which track user sessions: /var/log/wtmp (for the 'w' and 'who' commands), and /var/log/lastlog (the 'last' and 'lastlog' commands). + +``` +go doc +package goutmp // import "blitter.com/go/goutmp" + +Golang bindings for basic login/utmp accounting + +type UtmpEntry struct{ ... } + +func Put_lastlog_entry(app string, usr string, host string) +func Unput_utmp(entry UtmpEntry) +func Put_utmp(user string, host string) UtmpEntry +``` + diff --git a/vendor/blitter.com/go/goutmp/goutmp.go b/vendor/blitter.com/go/goutmp/goutmp.go new file mode 100644 index 0000000..2d7721b --- /dev/null +++ b/vendor/blitter.com/go/goutmp/goutmp.go @@ -0,0 +1,130 @@ +// Golang bindings for basic login/utmp accounting +package goutmp + +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +// +//#include +//#include +// +//typedef char char_t; +// +// +//void pututmp(struct utmp* entry, char* uname, char* ptsname, char* host) { +// entry->ut_type = USER_PROCESS; +// entry->ut_pid = getpid(); +// strcpy(entry->ut_line, ptsname + strlen("/dev/")); +// +// strcpy(entry->ut_id, ptsname + strlen("/dev/pts/")); +// +// entry->ut_time = time(NULL); +// strcpy(entry->ut_user, uname); +// strcpy(entry->ut_host, host); +// entry->ut_addr = 0; +// setutent(); +// pututline(entry); +//} +// +//void unpututmp(struct utmp* entry) { +// entry->ut_type = DEAD_PROCESS; +// memset(entry->ut_line, 0, UT_LINESIZE); +// entry->ut_time = 0; +// memset(entry->ut_user, 0, UT_NAMESIZE); +// setutent(); +// pututline(entry); +// +// endutent(); +//} +// +//int putlastlogentry(int64_t t, int uid, char* line, char* host) { +// int retval = 0; +// FILE *f; +// struct lastlog l; +// +// strncpy(l.ll_line, line, UT_LINESIZE); +// l.ll_line[UT_LINESIZE-1] = '\0'; +// strncpy(l.ll_host, host, UT_HOSTSIZE); +// l.ll_host[UT_HOSTSIZE-1] = '\0'; +// +// l.ll_time = (time_t)t; +// //printf("l: ll_line '%s', ll_host '%s', ll_time %d\n", l.ll_line, l.ll_host, l.ll_time); +// +// /* Write lastlog entry at fixed offset (uid * sizeof(struct lastlog) */ +// if( NULL != (f = fopen("/var/log/lastlog", "rw+")) ) { +// if( !fseek(f, (uid * sizeof(struct lastlog)), SEEK_SET) ) { +// int fd = fileno(f); +// if( write(fd, &l, sizeof(l)) == sizeof(l) ) { +// retval = 1; +// //int32_t stat = system("echo ---- lastlog ----; lastlog"); +// } +// } +// fclose(f); +// } +// return retval; +//} +import "C" + +import ( + "fmt" + "net" + "os/user" + "strings" + "time" +) + +// UtmpEntry wraps the C struct utmp +type UtmpEntry struct { + entry C.struct_utmp +} + +// return remote client hostname or IP if host lookup fails +// addr is expected to be of the format given by net.Addr.String() +// eg., "127.0.0.1:80" or "[::1]:80" +func GetHost(addr string) (h string) { + if !strings.Contains(addr, "[") { + h = strings.Split(addr, ":")[0] + } else { + h = strings.Split(strings.Split(addr, "[")[1], "]")[0] + } + hList, e := net.LookupAddr(h) + //fmt.Printf("lookupAddr:%v\n", hList) + if e == nil { + h = hList[0] + } + return +} + +// Put a username and the originating host/IP to utmp +func Put_utmp(user, ptsName, host string) UtmpEntry { + var entry UtmpEntry + + //log.Println("Put_utmp:host ", host, " user ", user) + C.pututmp(&entry.entry, C.CString(user), C.CString(ptsName), C.CString(host)) + return entry +} + +// Remove a username/host entry from utmp +func Unput_utmp(entry UtmpEntry) { + C.unpututmp(&entry.entry) +} + +// Put the login app, username and originating host/IP to lastlog +func Put_lastlog_entry(app, usr, ptsname, host string) { + u, e := user.Lookup(usr) + if e != nil { + return + } + var uid uint32 + fmt.Sscanf(u.Uid, "%d", &uid) + + t := time.Now().Unix() + _ = C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) + //stat := C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) + //fmt.Println("stat was:",stat) +} diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.gpl b/vendor/blitter.com/go/herradurakex/LICENSE.gpl new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/LICENSE.gpl @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.mit b/vendor/blitter.com/go/herradurakex/LICENSE.mit new file mode 100644 index 0000000..4acc92f --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/LICENSE.mit @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017 - 2018 Omar Alejandro Herrera Reyna (core HerraduraKEx) +Copyright (c) 2017 - 2018 Russell Magee (hkexsh/hkexshd/hkexpasswd) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/blitter.com/go/herradurakex/Makefile b/vendor/blitter.com/go/herradurakex/Makefile new file mode 100644 index 0000000..e59fbc7 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/Makefile @@ -0,0 +1,17 @@ +.PHONY: info clean all lib + +all: lib + +clean: + go clean . + +lib: info + go install . + +ifneq ($(MSYSTEM),) +info: + @echo "building for Windows (MSYS)" +else +info: + @echo "building for Linux" +endif diff --git a/vendor/blitter.com/go/herradurakex/README.md b/vendor/blitter.com/go/herradurakex/README.md new file mode 100644 index 0000000..82b7368 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/README.md @@ -0,0 +1 @@ +HerraduraKEx - an experimental Key Encapsulation Mechanism diff --git a/vendor/blitter.com/go/herradurakex/herradurakex.go b/vendor/blitter.com/go/herradurakex/herradurakex.go new file mode 100644 index 0000000..9621e94 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/herradurakex.go @@ -0,0 +1,182 @@ +// Package hkex - an experimental key exchange algorithm +// by Omar Alejandro Herrera Reyna. +// +// (https://github.com/Caume/HerraduraKEx) +// +// The core HerraduraKEx algorithm is dual-licensed +// by the author (Omar Alejandro Herrera Reyna) +// under GPL3 and MIT licenses. +// See LICENSE.gpl and LICENSE.mit in this distribution +// +// Go implementation Copyright (c) 2017-2018 Russell Magee +// (rmagee_at_gmail_com) +// Licensed under the terms of the MIT license +// See LICENSE.mit in this distribution +package hkex + +/* Herradura - a Key exchange scheme in the style of Diffie-Hellman Key Exchange. + Copyright (C) 2017 Omar Alejandro Herrera Reyna + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + golang implementation by Russ Magee (rmagee_at_gmail.com) */ + +/* This is the core KEx algorithm. For client/server net support code, +See the hkexnet package (currently a sub-package of hkexsh) for a +golang/pkg/net compatible Conn interface using this to negotiate keys and +secure a network channel. */ + +import ( + "fmt" + "math/big" + "math/rand" + "time" +) + +// HerraduraKEx holds the session state for a key exchange. +type HerraduraKEx struct { + intSz, pubSz int + randctx *rand.Rand + a *big.Int + b *big.Int + d, peerD *big.Int + fa *big.Int +} + +// New returns a HerraduraKEx struct. +// +// i - internal (private) random nonce +// p - public (exchanged) random nonce (typically 1/4 bitsize of i) +// +// If i or p are passed as zero, they will default to 256 and 64, +// respectively. +func New(i int, p int) (h *HerraduraKEx) { + h = new(HerraduraKEx) + + if i == 0 { + i = 256 + } + if p == 0 { + p = 64 + } + + h.intSz = i + h.pubSz = p + + h.seed() + h.a = h.rand() + h.b = h.rand() + + h.d = h.fscxRevolve(h.a, h.b, h.pubSz) + return h +} + +func (h *HerraduraKEx) seed() { + r := rand.New(rand.NewSource(time.Now().UnixNano())) + h.randctx = r +} + +func (h *HerraduraKEx) rand() (v *big.Int) { + v = big.NewInt(0) + v.Rand(h.randctx, h.getMax()) + return v +} + +// getMax returns the max value for an n-bit big.Int +func (h *HerraduraKEx) getMax() (n *big.Int) { + n = big.NewInt(0) + var max big.Int + + for i := 0; i < h.intSz; i++ { + max.SetBit(n, i, 1) + } + n = &max + return n +} + +func (h *HerraduraKEx) bitX(x *big.Int, pos int) (ret int64) { + if pos < 0 { + pos = h.intSz - pos + } + + if pos == 0 { + ret = int64(x.Bit(1) ^ x.Bit(0) ^ x.Bit(h.intSz-1)) + } else if pos == h.intSz-1 { + ret = int64(x.Bit(0) ^ x.Bit(pos) ^ x.Bit(pos-1)) + } else { + ret = int64(x.Bit((pos+1)%h.intSz) ^ x.Bit(pos) ^ x.Bit(pos-1)) + } + return ret +} + +func (h *HerraduraKEx) bit(up, down *big.Int, posU, posD int) (ret *big.Int) { + return big.NewInt(h.bitX(up, posU) ^ h.bitX(down, posD)) +} + +func (h *HerraduraKEx) fscx(up, down *big.Int) (result *big.Int) { + result = big.NewInt(0) + + for count := 0; count < h.intSz; count++ { + result.Lsh(result, 1) + result.Add(result, h.bit(up, down, count, count)) + } + return result +} + +// This is the iteration function using the result of the previous iteration +// as the first parameter and the second parameter of the first iteration. +func (h *HerraduraKEx) fscxRevolve(x, y *big.Int, passes int) (result *big.Int) { + result = x + for count := 0; count < passes; count++ { + result = h.fscx(result, y) + } + return result +} + +// D returns the D (FSCX Revolved) value, input to generate FA +// (the value for peer KEx) +func (h HerraduraKEx) D() *big.Int { + return h.d +} + +// PeerD returns the peer D value +func (h HerraduraKEx) PeerD() *big.Int { + return h.peerD +} + +// SetPeerD stores the received peer's D value (contents, not ptr) +func (h *HerraduraKEx) SetPeerD(pd *big.Int) { + h.peerD = new(big.Int).Set(pd) +} + +// ComputeFA computes the FA value, which must be sent to peer for KEx. +func (h *HerraduraKEx) ComputeFA() { + h.fa = h.fscxRevolve(h.peerD, h.b, h.intSz-h.pubSz) + h.fa.Xor(h.fa, h.a) +} + +// FA returns the computed FA value +func (h HerraduraKEx) FA() *big.Int { + return h.fa +} + +// Output HerraduraKEx type value as a string. Implements Stringer interface. +func (h *HerraduraKEx) String() string { + return fmt.Sprintf("s:%d p:%d\na:%s\nb:%s\nd:->%s\n<-peerD:%s\nfa:%s", + h.intSz, h.pubSz, + h.a.Text(16), h.b.Text(16), + h.d.Text(16), + h.peerD.Text(16), + h.fa.Text(16)) +} diff --git a/vendor/blitter.com/go/mtwist/mtwist.go b/vendor/blitter.com/go/mtwist/mtwist.go new file mode 100644 index 0000000..4527525 --- /dev/null +++ b/vendor/blitter.com/go/mtwist/mtwist.go @@ -0,0 +1,125 @@ +// MersenneTwister +// From https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8 +package MersenneTwister + +import ( + "crypto" + + _ "crypto/sha512" +) + +const N = 312 +const M = 156 +const MATRIX_A = 0xB5026F5AA96619E9 +const UPPER_MASK = 0xFFFFFFFF80000000 +const LOWER_MASK = 0x7FFFFFFF + +type MT19937_64 struct { + array [N]uint64 //state vector + index uint64 // array index +} + +func New() *MT19937_64 { + return &MT19937_64{ + index: N + 1, + } +} + +func (m *MT19937_64) _initstate() { + // Recommendations abound that mtwist should throw away 1st 10000 or so + // of initial state + for i := 0; i < 10000; i++ { + _ = m.Int63() + } +} + +func (m *MT19937_64) Seed(seed int64) { + m.array[0] = uint64(seed) + for m.index = 1; m.index < N; m.index++ { + m.array[m.index] = (6364136223846793005*(m.array[m.index-1]^(m.array[m.index-1]>>62)) + m.index) + } + m._initstate() + //fmt.Printf("final array(s):%v\n", m.array) +} + +func _bytesToUint64(b []byte) (r uint64) { + r = uint64(b[0])<<56 + + uint64(b[1])<<48 + + uint64(b[2])<<40 + + uint64(b[3])<<32 + + uint64(b[4])<<24 + + uint64(b[5])<<16 + + uint64(b[6])<<8 + + uint64(b[7]) + return +} + +func (m *MT19937_64) SeedFullState(s []byte) { + //fmt.Printf("s:%v\n", s) + if len(s) < N*8 { + // Expand s if shorter than mtwist array state + ha := crypto.SHA512 + h := ha.New() + shortfallChunks := ((N * 8) - len(s)) / h.Size() + //shortfallRem := ((N * 8) - len(s)) % h.Size() + //fmt.Printf("chunks, rem:%d,%d\n", shortfallChunks, shortfallRem) + idx := 0 + for idx < shortfallChunks { + _, _ = h.Write(s) + s = h.Sum(s) + idx += 1 + } + _, _ = h.Write(s) + s = h.Sum(s) + //fmt.Printf("exp s:%v\n", s) + } + + for idx := 0; idx < N; { + m.array[idx] = _bytesToUint64(s[idx*8 : (idx*8)+8]) + idx += 1 + } + //fmt.Printf("final array(xs):%v\n", m.array) + m.index = 0 + m._initstate() +} + +func (m *MT19937_64) Int63() uint64 { + var i int + var x uint64 + mag01 := []uint64{0, MATRIX_A} + if m.index >= N { + if m.index == N+1 { + m.Seed(int64(5489)) + } + + for i = 0; i < N-M; i++ { + x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) + m.array[i] = m.array[i+(M)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + } + for ; i < N-1; i++ { + x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) + m.array[i] = m.array[i+(M-N)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + } + x = (m.array[N-1] & UPPER_MASK) | (m.array[0] & LOWER_MASK) + m.array[N-1] = m.array[M-1] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + m.index = 0 + } + x = m.array[m.index] + m.index++ + x ^= (x >> 29) & 0x5555555555555555 + x ^= (x << 17) & 0x71D67FFFEDA60000 + x ^= (x << 37) & 0xFFF7EEE000000000 + x ^= (x >> 43) + return x +} + +func (m *MT19937_64) IntN(value uint64) uint64 { + return m.Int63() % value +} + +func (m *MT19937_64) Read(p []byte) (n int, err error) { + for idx := 0; idx < len(p); idx++ { + p[idx] = byte( (m.Int63()>>47) % 256) + } + return n, nil +} diff --git a/vendor/blitter.com/go/wanderer/wanderer.go b/vendor/blitter.com/go/wanderer/wanderer.go new file mode 100644 index 0000000..fe24277 --- /dev/null +++ b/vendor/blitter.com/go/wanderer/wanderer.go @@ -0,0 +1,210 @@ +// WANDERER - a crypto doodle that appears to give adequate +// protection to data in a stream cipher context +// +// Properties visualized using https://github.com/circulosmeos/circle +package wanderer + +// TODOs: +// -define s-box rotation/shuffle schema +// -devise p-box schema (? Meh. Need to blockify & re-streamify to do this) +// ... + +import ( + "errors" + "fmt" + "io" + "time" + + mtwist "blitter.com/go/mtwist" +) + +const ( + keylen = 512 + sboxCount = keylen / 8 +) + +// Given input byte x (treated as 2-bit dirs), +// 'walk' box applying XOR of each position (E/S/W/N) given box +// dimensions w,h +// NOTE to ensure reachability of all values within a box, w,h +// should not each exceed 3 and should probably stay at 2, to +// give more even coverage given random input. +func walkingXOR(key, s []byte, w, h int, x byte) (r byte) { + i := 0 + r = x + for sidx := range key { + ktemp := key[sidx] + r = r ^ (s[i]) + for shift := uint(0); shift < 8; shift += 2 { + // fmt.Println("i:", i, "r:", r) + dir := (ktemp >> shift) & 0x03 + switch dir { + case 0: + i = i + 1 + i = i % len(s) + case 1: + i = i + w + i = i % len(s) + case 2: + if i%w != 0 { + i = i - 1 + } else { + i = i + w - 1 + } + case 3: + if i >= w { + i = i - w + } else { + i = len(s) + i - w + } + } + r = r ^ (s[i]) + } + } + return +} + +func (c *Cipher) genSBoxen(n uint) { + c.sboxen = make([][]byte, n) + var idx uint + for ; idx < n; idx++ { + c.sboxen[idx] = make([]byte, c.sw*c.sh) + _, _ = c.prng.Read(c.sboxen[idx]) + } + //fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) +} + +// Mutate the session key (intended to be called as encryption +// proceeds), so that the 'walk path' through sboxes also does so. +func (c *Cipher) keyUpdate(perturb byte) { + c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] + c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) + c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) +} + +// slow - perturb a single octet of a single sbox for each octet +// (CV = ~8.725% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateA(perturb byte) { + c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + perturb +} + +// slower - perturb a single sbox for each octet +// (CV = ~?% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateB(perturb byte) { + lim := c.sw * c.sh + for idx := 0; idx < lim; idx++ { + c.sboxen[perturb%sboxCount][idx] ^= perturb + } +} + +// slowest -- full sbox re-gen after each octet +// (but lowest CV, ~0.05% over 700MiB of 0-byte pt) +func (c *Cipher) sboxUpdateC(perturb byte) { + c.genSBoxen(sboxCount) + //c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + // perturb +} + +type Cipher struct { + prng *mtwist.MT19937_64 + r io.Reader + w io.Writer + k []byte + kidx uint + sboxen [][]byte + sw int + sh int + sctr int // TODO: used to count down to re-keying & sbox regen + mode int + n byte +} + +func NewCodec(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { + c = &Cipher{} + c.prng = mtwist.New() + if len(key) == 0 { + c.k = []byte(fmt.Sprintf("%s", time.Now())) + } else { + c.k = key + } + c.prng.SeedFullState(c.k) + + // Discard first 64 bytes of MT output + for idx := 0; idx < 64; idx++ { + _ = c.prng.Int63() + } + c.mode = mode + c.r = r + c.w = w + c.sw = width + c.sh = height + c.sctr = c.sw // sbox ctr: countdown to regen sboxes + c.n = 0 + c.genSBoxen(sboxCount) + + // fmt.Printf("%+v\n", sboxen) + // c.buf = make([]byte, 4) + return c +} + +func (c *Cipher) Read(p []byte) (n int, err error) { + n, err = c.r.Read(p) + if err == nil { + for idx := 0; idx < n; idx++ { + p[idx] = c.yield(p[idx]) + } + } + return n, err +} + +func (c *Cipher) Write(p []byte) (n int, err error) { + n, err = c.w.Write(p) + return n, err +} + +func (c *Cipher) yield(pt byte) (ct byte) { + ct = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, pt) + c.n = (c.n + 1) % byte(len(c.sboxen)) + c.keyUpdate(ct ^ pt) // must be equal in either encrypt/decrypt dirs + switch c.mode { + case 0: + // [nothing - varA] + break + case 1: + c.sboxUpdateA(ct ^ pt) // varA + case 2: + c.sboxUpdateB(ct ^ pt) // varB + case 3: + c.sboxUpdateC(ct ^ pt) // varC + default: + // [nothing] + } + // c.sctr = c.sctr - 1 + // if c.sctr == 0 { + // c.genSBoxen(sboxCount) + // c.sctr = c.sw + // } + return ct +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream should panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Stream +// maintains state and does not reset at each XORKeyStream call. +func (c *Cipher) XORKeyStream(dst, src []byte) { + //fmt.Printf("len dst:%d len src:%d\n", len(dst), len(src)) + if len(dst) < len(src) { + panic(errors.New("len(dst) < len(src)")) + } + + for idx, v := range src { + dst[idx] = c.yield(v) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE b/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md b/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md new file mode 100644 index 0000000..9080a84 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md @@ -0,0 +1,14 @@ +### chacha20 - ChaCha20 +#### Yawning Angel (yawning at schwanenlied dot me) + +Yet another Go ChaCha20 implementation. Everything else I found was slow, +didn't support all the variants I need to use, or relied on cgo to go fast. + +Features: + + * 20 round, 256 bit key only. Everything else is pointless and stupid. + * IETF 96 bit nonce variant. + * XChaCha 24 byte nonce variant. + * SSE2 and AVX2 support on amd64 targets. + * Incremental encrypt/decrypt support, unlike golang.org/x/crypto/salsa20. + diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go new file mode 100644 index 0000000..07d5e4b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go @@ -0,0 +1,273 @@ +// chacha20.go - A ChaCha stream cipher implementation. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package chacha20 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "math" + "runtime" +) + +const ( + // KeySize is the ChaCha20 key size in bytes. + KeySize = 32 + + // NonceSize is the ChaCha20 nonce size in bytes. + NonceSize = 8 + + // INonceSize is the IETF ChaCha20 nonce size in bytes. + INonceSize = 12 + + // XNonceSize is the XChaCha20 nonce size in bytes. + XNonceSize = 24 + + // HNonceSize is the HChaCha20 nonce size in bytes. + HNonceSize = 16 + + // BlockSize is the ChaCha20 block size in bytes. + BlockSize = 64 + + stateSize = 16 + chachaRounds = 20 + + // The constant "expand 32-byte k" as little endian uint32s. + sigma0 = uint32(0x61707865) + sigma1 = uint32(0x3320646e) + sigma2 = uint32(0x79622d32) + sigma3 = uint32(0x6b206574) +) + +var ( + // ErrInvalidKey is the error returned when the key is invalid. + ErrInvalidKey = errors.New("key length must be KeySize bytes") + + // ErrInvalidNonce is the error returned when the nonce is invalid. + ErrInvalidNonce = errors.New("nonce length must be NonceSize/INonceSize/XNonceSize bytes") + + // ErrInvalidCounter is the error returned when the counter is invalid. + ErrInvalidCounter = errors.New("block counter is invalid (out of range)") + + useUnsafe = false + usingVectors = false + blocksFn = blocksRef +) + +// A Cipher is an instance of ChaCha20/XChaCha20 using a particular key and +// nonce. +type Cipher struct { + state [stateSize]uint32 + + buf [BlockSize]byte + off int + ietf bool +} + +// Reset zeros the key data so that it will no longer appear in the process's +// memory. +func (c *Cipher) Reset() { + for i := range c.state { + c.state[i] = 0 + } + for i := range c.buf { + c.buf[i] = 0 + } +} + +// XORKeyStream sets dst to the result of XORing src with the key stream. Dst +// and src may be the same slice but otherwise should not overlap. +func (c *Cipher) XORKeyStream(dst, src []byte) { + if len(dst) < len(src) { + src = src[:len(dst)] + } + + for remaining := len(src); remaining > 0; { + // Process multiple blocks at once. + if c.off == BlockSize { + nrBlocks := remaining / BlockSize + directBytes := nrBlocks * BlockSize + if nrBlocks > 0 { + blocksFn(&c.state, src, dst, nrBlocks, c.ietf) + remaining -= directBytes + if remaining == 0 { + return + } + dst = dst[directBytes:] + src = src[directBytes:] + } + + // If there's a partial block, generate 1 block of keystream into + // the internal buffer. + blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.off = 0 + } + + // Process partial blocks from the buffered keystream. + toXor := BlockSize - c.off + if remaining < toXor { + toXor = remaining + } + if toXor > 0 { + for i, v := range src[:toXor] { + dst[i] = v ^ c.buf[c.off+i] + } + dst = dst[toXor:] + src = src[toXor:] + + remaining -= toXor + c.off += toXor + } + } +} + +// KeyStream sets dst to the raw keystream. +func (c *Cipher) KeyStream(dst []byte) { + for remaining := len(dst); remaining > 0; { + // Process multiple blocks at once. + if c.off == BlockSize { + nrBlocks := remaining / BlockSize + directBytes := nrBlocks * BlockSize + if nrBlocks > 0 { + blocksFn(&c.state, nil, dst, nrBlocks, c.ietf) + remaining -= directBytes + if remaining == 0 { + return + } + dst = dst[directBytes:] + } + + // If there's a partial block, generate 1 block of keystream into + // the internal buffer. + blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.off = 0 + } + + // Process partial blocks from the buffered keystream. + toCopy := BlockSize - c.off + if remaining < toCopy { + toCopy = remaining + } + if toCopy > 0 { + copy(dst[:toCopy], c.buf[c.off:c.off+toCopy]) + dst = dst[toCopy:] + remaining -= toCopy + c.off += toCopy + } + } +} + +// ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key +// and nonce. +func (c *Cipher) ReKey(key, nonce []byte) error { + if len(key) != KeySize { + return ErrInvalidKey + } + + switch len(nonce) { + case NonceSize: + case INonceSize: + case XNonceSize: + var subkey [KeySize]byte + var subnonce [HNonceSize]byte + copy(subnonce[:], nonce[0:16]) + HChaCha(key, &subnonce, &subkey) + key = subkey[:] + nonce = nonce[16:24] + defer func() { + for i := range subkey { + subkey[i] = 0 + } + }() + default: + return ErrInvalidNonce + } + + c.Reset() + c.state[0] = sigma0 + c.state[1] = sigma1 + c.state[2] = sigma2 + c.state[3] = sigma3 + c.state[4] = binary.LittleEndian.Uint32(key[0:4]) + c.state[5] = binary.LittleEndian.Uint32(key[4:8]) + c.state[6] = binary.LittleEndian.Uint32(key[8:12]) + c.state[7] = binary.LittleEndian.Uint32(key[12:16]) + c.state[8] = binary.LittleEndian.Uint32(key[16:20]) + c.state[9] = binary.LittleEndian.Uint32(key[20:24]) + c.state[10] = binary.LittleEndian.Uint32(key[24:28]) + c.state[11] = binary.LittleEndian.Uint32(key[28:32]) + c.state[12] = 0 + if len(nonce) == INonceSize { + c.state[13] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[14] = binary.LittleEndian.Uint32(nonce[4:8]) + c.state[15] = binary.LittleEndian.Uint32(nonce[8:12]) + c.ietf = true + } else { + c.state[13] = 0 + c.state[14] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[15] = binary.LittleEndian.Uint32(nonce[4:8]) + c.ietf = false + } + c.off = BlockSize + return nil + +} + +// Seek sets the block counter to a given offset. +func (c *Cipher) Seek(blockCounter uint64) error { + if c.ietf { + if blockCounter > math.MaxUint32 { + return ErrInvalidCounter + } + c.state[12] = uint32(blockCounter) + } else { + c.state[12] = uint32(blockCounter) + c.state[13] = uint32(blockCounter >> 32) + } + c.off = BlockSize + return nil +} + +// NewCipher returns a new ChaCha20/XChaCha20 instance. +func NewCipher(key, nonce []byte) (*Cipher, error) { + c := new(Cipher) + if err := c.ReKey(key, nonce); err != nil { + return nil, err + } + return c, nil +} + +// HChaCha is the HChaCha20 hash function used to make XChaCha. +func HChaCha(key []byte, nonce *[HNonceSize]byte, out *[32]byte) { + var x [stateSize]uint32 // Last 4 slots unused, sigma hardcoded. + x[0] = binary.LittleEndian.Uint32(key[0:4]) + x[1] = binary.LittleEndian.Uint32(key[4:8]) + x[2] = binary.LittleEndian.Uint32(key[8:12]) + x[3] = binary.LittleEndian.Uint32(key[12:16]) + x[4] = binary.LittleEndian.Uint32(key[16:20]) + x[5] = binary.LittleEndian.Uint32(key[20:24]) + x[6] = binary.LittleEndian.Uint32(key[24:28]) + x[7] = binary.LittleEndian.Uint32(key[28:32]) + x[8] = binary.LittleEndian.Uint32(nonce[0:4]) + x[9] = binary.LittleEndian.Uint32(nonce[4:8]) + x[10] = binary.LittleEndian.Uint32(nonce[8:12]) + x[11] = binary.LittleEndian.Uint32(nonce[12:16]) + hChaChaRef(&x, out) +} + +func init() { + switch runtime.GOARCH { + case "386", "amd64": + // Abuse unsafe to skip calling binary.LittleEndian.PutUint32 + // in the critical path. This is a big boost on systems that are + // little endian and not overly picky about alignment. + useUnsafe = true + } +} + +var _ cipher.Stream = (*Cipher)(nil) diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go new file mode 100644 index 0000000..05adad1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go @@ -0,0 +1,95 @@ +// chacha20_amd64.go - AMD64 optimized chacha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build amd64,!gccgo,!appengine + +package chacha20 + +import ( + "math" +) + +var usingAVX2 = false + +func blocksAmd64SSE2(x *uint32, inp, outp *byte, nrBlocks uint) + +func blocksAmd64AVX2(x *uint32, inp, outp *byte, nrBlocks uint) + +func cpuidAmd64(cpuidParams *uint32) + +func xgetbv0Amd64(xcrVec *uint32) + +func blocksAmd64(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + // Probably unneeded, but stating this explicitly simplifies the assembly. + if nrBlocks == 0 { + return + } + + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + if in == nil { + for i := range out { + out[i] = 0 + } + in = out + } + + // Pointless to call the AVX2 code for just a single block, since half of + // the output gets discarded... + if usingAVX2 && nrBlocks > 1 { + blocksAmd64AVX2(&x[0], &in[0], &out[0], uint(nrBlocks)) + } else { + blocksAmd64SSE2(&x[0], &in[0], &out[0], uint(nrBlocks)) + } +} + +func supportsAVX2() bool { + // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family + const ( + osXsaveBit = 1 << 27 + avx2Bit = 1 << 5 + ) + + // Check to see if CPUID actually supports the leaf that indicates AVX2. + // CPUID.(EAX=0H, ECX=0H) >= 7 + regs := [4]uint32{0x00} + cpuidAmd64(®s[0]) + if regs[0] < 7 { + return false + } + + // Check to see if the OS knows how to save/restore XMM/YMM state. + // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 + regs = [4]uint32{0x01} + cpuidAmd64(®s[0]) + if regs[2]&osXsaveBit == 0 { + return false + } + xcrRegs := [2]uint32{} + xgetbv0Amd64(&xcrRegs[0]) + if xcrRegs[0]&6 != 6 { + return false + } + + // Check for AVX2 support. + // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 + regs = [4]uint32{0x07} + cpuidAmd64(®s[0]) + return regs[1]&avx2Bit != 0 +} + +func init() { + blocksFn = blocksAmd64 + usingVectors = true + usingAVX2 = supportsAVX2() +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py new file mode 100644 index 0000000..3bfebf4 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py @@ -0,0 +1,1295 @@ +#!/usr/bin/env python3 +# +# To the extent possible under law, Yawning Angel has waived all copyright +# and related or neighboring rights to chacha20, using the Creative +# Commons "CC0" public domain dedication. See LICENSE or +# for full details. + +# +# cgo sucks. Plan 9 assembly sucks. Real languages have SIMD intrinsics. +# The least terrible/retarded option is to use a Python code generator, so +# that's what I did. +# +# Code based on Ted Krovetz's vec128 C implementation, with corrections +# to use a 64 bit counter instead of 32 bit, and to allow unaligned input and +# output pointers. +# +# Dependencies: https://github.com/Maratyszcza/PeachPy +# +# python3 -m peachpy.x86_64 -mabi=goasm -S -o chacha20_amd64.s chacha20_amd64.py +# + +from peachpy import * +from peachpy.x86_64 import * + +x = Argument(ptr(uint32_t)) +inp = Argument(ptr(const_uint8_t)) +outp = Argument(ptr(uint8_t)) +nrBlocks = Argument(ptr(size_t)) + +# +# SSE2 helper functions. A temporary register is explicitly passed in because +# the main fast loop uses every single register (and even spills) so manual +# control is needed. +# +# This used to also have a DQROUNDS helper that did 2 rounds of ChaCha like +# in the C code, but the C code has the luxury of an optimizer reordering +# everything, while this does not. +# + +def ROTW16_sse2(tmp, d): + MOVDQA(tmp, d) + PSLLD(tmp, 16) + PSRLD(d, 16) + PXOR(d, tmp) + +def ROTW12_sse2(tmp, b): + MOVDQA(tmp, b) + PSLLD(tmp, 12) + PSRLD(b, 20) + PXOR(b, tmp) + +def ROTW8_sse2(tmp, d): + MOVDQA(tmp, d) + PSLLD(tmp, 8) + PSRLD(d, 24) + PXOR(d, tmp) + +def ROTW7_sse2(tmp, b): + MOVDQA(tmp, b) + PSLLD(tmp, 7) + PSRLD(b, 25) + PXOR(b, tmp) + +def WriteXor_sse2(tmp, inp, outp, d, v0, v1, v2, v3): + MOVDQU(tmp, [inp+d]) + PXOR(tmp, v0) + MOVDQU([outp+d], tmp) + MOVDQU(tmp, [inp+d+16]) + PXOR(tmp, v1) + MOVDQU([outp+d+16], tmp) + MOVDQU(tmp, [inp+d+32]) + PXOR(tmp, v2) + MOVDQU([outp+d+32], tmp) + MOVDQU(tmp, [inp+d+48]) + PXOR(tmp, v3) + MOVDQU([outp+d+48], tmp) + +# SSE2 ChaCha20 (aka vec128). Does not handle partial blocks, and will +# process 4/2/1 blocks at a time. +with Function("blocksAmd64SSE2", (x, inp, outp, nrBlocks)): + reg_x = GeneralPurposeRegister64() + reg_inp = GeneralPurposeRegister64() + reg_outp = GeneralPurposeRegister64() + reg_blocks = GeneralPurposeRegister64() + reg_sp_save = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_x, x) + LOAD.ARGUMENT(reg_inp, inp) + LOAD.ARGUMENT(reg_outp, outp) + LOAD.ARGUMENT(reg_blocks, nrBlocks) + + # Align the stack to a 32 byte boundary. + MOV(reg_sp_save, registers.rsp) + AND(registers.rsp, 0xffffffffffffffe0) + SUB(registers.rsp, 0x20) + + # Build the counter increment vector on the stack, and allocate the scratch + # space + xmm_v0 = XMMRegister() + PXOR(xmm_v0, xmm_v0) + SUB(registers.rsp, 16+16) + MOVDQA([registers.rsp], xmm_v0) + reg_tmp = GeneralPurposeRegister32() + MOV(reg_tmp, 0x00000001) + MOV([registers.rsp], reg_tmp) + mem_one = [registers.rsp] # (Stack) Counter increment vector + mem_tmp0 = [registers.rsp+16] # (Stack) Scratch space. + + mem_s0 = [reg_x] # (Memory) Cipher state [0..3] + mem_s1 = [reg_x+16] # (Memory) Cipher state [4..7] + mem_s2 = [reg_x+32] # (Memory) Cipher state [8..11] + mem_s3 = [reg_x+48] # (Memory) Cipher state [12..15] + + # xmm_v0 allocated above... + xmm_v1 = XMMRegister() + xmm_v2 = XMMRegister() + xmm_v3 = XMMRegister() + + xmm_v4 = XMMRegister() + xmm_v5 = XMMRegister() + xmm_v6 = XMMRegister() + xmm_v7 = XMMRegister() + + xmm_v8 = XMMRegister() + xmm_v9 = XMMRegister() + xmm_v10 = XMMRegister() + xmm_v11 = XMMRegister() + + xmm_v12 = XMMRegister() + xmm_v13 = XMMRegister() + xmm_v14 = XMMRegister() + xmm_v15 = XMMRegister() + + xmm_tmp = xmm_v12 + + # + # 4 blocks at a time. + # + + reg_rounds = GeneralPurposeRegister64() + + vector_loop4 = Loop() + SUB(reg_blocks, 4) + JB(vector_loop4.end) + with vector_loop4: + MOVDQU(xmm_v0, mem_s0) + MOVDQU(xmm_v1, mem_s1) + MOVDQU(xmm_v2, mem_s2) + MOVDQU(xmm_v3, mem_s3) + + MOVDQA(xmm_v4, xmm_v0) + MOVDQA(xmm_v5, xmm_v1) + MOVDQA(xmm_v6, xmm_v2) + MOVDQA(xmm_v7, xmm_v3) + PADDQ(xmm_v7, mem_one) + + MOVDQA(xmm_v8, xmm_v0) + MOVDQA(xmm_v9, xmm_v1) + MOVDQA(xmm_v10, xmm_v2) + MOVDQA(xmm_v11, xmm_v7) + PADDQ(xmm_v11, mem_one) + + MOVDQA(xmm_v12, xmm_v0) + MOVDQA(xmm_v13, xmm_v1) + MOVDQA(xmm_v14, xmm_v2) + MOVDQA(xmm_v15, xmm_v11) + PADDQ(xmm_v15, mem_one) + + MOV(reg_rounds, 20) + rounds_loop4 = Loop() + with rounds_loop4: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + ROTW16_sse2(xmm_tmp, xmm_v11) + ROTW16_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + ROTW12_sse2(xmm_tmp, xmm_v9) + ROTW12_sse2(xmm_tmp, xmm_v13) + + # a += b; d ^= a; d = ROTW8(d); + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + ROTW8_sse2(xmm_tmp, xmm_v11) + ROTW8_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + ROTW7_sse2(xmm_tmp, xmm_v9) + ROTW7_sse2(xmm_tmp, xmm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v5, xmm_v5, 0x39) + PSHUFD(xmm_v9, xmm_v9, 0x39) + PSHUFD(xmm_v13, xmm_v13, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v10, xmm_v10, 0x4e) + PSHUFD(xmm_v14, xmm_v14, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + PSHUFD(xmm_v7, xmm_v7, 0x93) + PSHUFD(xmm_v11, xmm_v11, 0x93) + PSHUFD(xmm_v15, xmm_v15, 0x93) + + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + ROTW16_sse2(xmm_tmp, xmm_v11) + ROTW16_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + ROTW12_sse2(xmm_tmp, xmm_v9) + ROTW12_sse2(xmm_tmp, xmm_v13) + + # a += b; d ^= a; d = ROTW8(d); + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + ROTW8_sse2(xmm_tmp, xmm_v11) + ROTW8_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + ROTW7_sse2(xmm_tmp, xmm_v9) + ROTW7_sse2(xmm_tmp, xmm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v5, xmm_v5, 0x93) + PSHUFD(xmm_v9, xmm_v9, 0x93) + PSHUFD(xmm_v13, xmm_v13, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v10, xmm_v10, 0x4e) + PSHUFD(xmm_v14, xmm_v14, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + PSHUFD(xmm_v7, xmm_v7, 0x39) + PSHUFD(xmm_v11, xmm_v11, 0x39) + PSHUFD(xmm_v15, xmm_v15, 0x39) + + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + SUB(reg_rounds, 2) + JNZ(rounds_loop4.begin) + + MOVDQA(mem_tmp0, xmm_tmp) + + PADDD(xmm_v0, mem_s0) + PADDD(xmm_v1, mem_s1) + PADDD(xmm_v2, mem_s2) + PADDD(xmm_v3, mem_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + MOVDQU(xmm_v3, mem_s3) + PADDQ(xmm_v3, mem_one) + + PADDD(xmm_v4, mem_s0) + PADDD(xmm_v5, mem_s1) + PADDD(xmm_v6, mem_s2) + PADDD(xmm_v7, xmm_v3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) + PADDQ(xmm_v3, mem_one) + + PADDD(xmm_v8, mem_s0) + PADDD(xmm_v9, mem_s1) + PADDD(xmm_v10, mem_s2) + PADDD(xmm_v11, xmm_v3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 128, xmm_v8, xmm_v9, xmm_v10, xmm_v11) + PADDQ(xmm_v3, mem_one) + + MOVDQA(xmm_tmp, mem_tmp0) + + PADDD(xmm_v12, mem_s0) + PADDD(xmm_v13, mem_s1) + PADDD(xmm_v14, mem_s2) + PADDD(xmm_v15, xmm_v3) + WriteXor_sse2(xmm_v0, reg_inp, reg_outp, 192, xmm_v12, xmm_v13, xmm_v14, xmm_v15) + PADDQ(xmm_v3, mem_one) + + MOVDQU(mem_s3, xmm_v3) + + ADD(reg_inp, 4 * 64) + ADD(reg_outp, 4 * 64) + + SUB(reg_blocks, 4) + JAE(vector_loop4.begin) + + ADD(reg_blocks, 4) + out = Label() + JZ(out) + + # Past this point, we no longer need to use every single register to hold + # the in progress state. + + xmm_s0 = xmm_v8 + xmm_s1 = xmm_v9 + xmm_s2 = xmm_v10 + xmm_s3 = xmm_v11 + xmm_one = xmm_v13 + MOVDQU(xmm_s0, mem_s0) + MOVDQU(xmm_s1, mem_s1) + MOVDQU(xmm_s2, mem_s2) + MOVDQU(xmm_s3, mem_s3) + MOVDQA(xmm_one, mem_one) + + # + # 2 blocks at a time. + # + + process_1_block = Label() + SUB(reg_blocks, 2) + JB(process_1_block) # < 2 blocks remaining. + + MOVDQA(xmm_v0, xmm_s0) + MOVDQA(xmm_v1, xmm_s1) + MOVDQA(xmm_v2, xmm_s2) + MOVDQA(xmm_v3, xmm_s3) + + MOVDQA(xmm_v4, xmm_v0) + MOVDQA(xmm_v5, xmm_v1) + MOVDQA(xmm_v6, xmm_v2) + MOVDQA(xmm_v7, xmm_v3) + PADDQ(xmm_v7, xmm_one) + + MOV(reg_rounds, 20) + rounds_loop2 = Loop() + with rounds_loop2: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v5, xmm_v5, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + PSHUFD(xmm_v7, xmm_v7, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v5, xmm_v5, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + PSHUFD(xmm_v7, xmm_v7, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop2.begin) + + PADDD(xmm_v0, xmm_s0) + PADDD(xmm_v1, xmm_s1) + PADDD(xmm_v2, xmm_s2) + PADDD(xmm_v3, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + PADDQ(xmm_s3, xmm_one) + + PADDD(xmm_v4, xmm_s0) + PADDD(xmm_v5, xmm_s1) + PADDD(xmm_v6, xmm_s2) + PADDD(xmm_v7, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) + PADDQ(xmm_s3, xmm_one) + + ADD(reg_inp, 2 * 64) + ADD(reg_outp, 2 * 64) + SUB(reg_blocks, 2) + + LABEL(process_1_block) + ADD(reg_blocks, 2) + out_serial = Label() + JZ(out_serial) + + # + # 1 block at a time. Only executed once, because if there was > 1, + # the parallel code would have processed it already. + # + + MOVDQA(xmm_v0, xmm_s0) + MOVDQA(xmm_v1, xmm_s1) + MOVDQA(xmm_v2, xmm_s2) + MOVDQA(xmm_v3, xmm_s3) + + MOV(reg_rounds, 20) + rounds_loop1 = Loop() + with rounds_loop1: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW16_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW12_sse2(xmm_tmp, xmm_v1) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW8_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW7_sse2(xmm_tmp, xmm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW16_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW12_sse2(xmm_tmp, xmm_v1) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW8_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW7_sse2(xmm_tmp, xmm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop1.begin) + + PADDD(xmm_v0, xmm_s0) + PADDD(xmm_v1, xmm_s1) + PADDD(xmm_v2, xmm_s2) + PADDD(xmm_v3, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + PADDQ(xmm_s3, xmm_one) + + LABEL(out_serial) + + # Write back the updated counter. Stoping at 2^70 bytes is the user's + # problem, not mine. (Skipped if there's exactly a multiple of 4 blocks + # because the counter is incremented in memory while looping.) + MOVDQU(mem_s3, xmm_s3) + + LABEL(out) + + # Paranoia, cleanse the scratch space. + PXOR(xmm_v0, xmm_v0) + MOVDQA(mem_tmp0, xmm_v0) + + # Remove our stack allocation. + MOV(registers.rsp, reg_sp_save) + + RETURN() + +# +# AVX2 helpers. Like the SSE2 equivalents, the scratch register is explicit, +# and more helpers are used to increase readability for destructive operations. +# +# XXX/Performance: ROTW16_avx2/ROTW8_avx2 both can use VPSHUFFB. +# + +def ADD_avx2(dst, src): + VPADDD(dst, dst, src) + +def XOR_avx2(dst, src): + VPXOR(dst, dst, src) + +def ROTW16_avx2(tmp, d): + VPSLLD(tmp, d, 16) + VPSRLD(d, d, 16) + XOR_avx2(d, tmp) + +def ROTW12_avx2(tmp, b): + VPSLLD(tmp, b, 12) + VPSRLD(b, b, 20) + XOR_avx2(b, tmp) + +def ROTW8_avx2(tmp, d): + VPSLLD(tmp, d, 8) + VPSRLD(d, d, 24) + XOR_avx2(d, tmp) + +def ROTW7_avx2(tmp, b): + VPSLLD(tmp, b, 7) + VPSRLD(b, b, 25) + XOR_avx2(b, tmp) + +def WriteXor_avx2(tmp, inp, outp, d, v0, v1, v2, v3): + # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); + VPERM2I128(tmp, v0, v1, 0x20) + VPXOR(tmp, tmp, [inp+d]) + VMOVDQU([outp+d], tmp) + + # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); + VPERM2I128(tmp, v2, v3, 0x20) + VPXOR(tmp, tmp, [inp+d+32]) + VMOVDQU([outp+d+32], tmp) + + # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); + VPERM2I128(tmp, v0, v1, 0x31) + VPXOR(tmp, tmp, [inp+d+64]) + VMOVDQU([outp+d+64], tmp) + + # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); + VPERM2I128(tmp, v2, v3, 0x31) + VPXOR(tmp, tmp, [inp+d+96]) + VMOVDQU([outp+d+96], tmp) + +# AVX2 ChaCha20 (aka avx2). Does not handle partial blocks, will process +# 8/4/2 blocks at a time. +with Function("blocksAmd64AVX2", (x, inp, outp, nrBlocks), target=uarch.broadwell): + reg_x = GeneralPurposeRegister64() + reg_inp = GeneralPurposeRegister64() + reg_outp = GeneralPurposeRegister64() + reg_blocks = GeneralPurposeRegister64() + reg_sp_save = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_x, x) + LOAD.ARGUMENT(reg_inp, inp) + LOAD.ARGUMENT(reg_outp, outp) + LOAD.ARGUMENT(reg_blocks, nrBlocks) + + # Align the stack to a 32 byte boundary. + MOV(reg_sp_save, registers.rsp) + AND(registers.rsp, 0xffffffffffffffe0) + SUB(registers.rsp, 0x20) + + x_s0 = [reg_x] # (Memory) Cipher state [0..3] + x_s1 = [reg_x+16] # (Memory) Cipher state [4..7] + x_s2 = [reg_x+32] # (Memory) Cipher state [8..11] + x_s3 = [reg_x+48] # (Memory) Cipher state [12..15] + + ymm_v0 = YMMRegister() + ymm_v1 = YMMRegister() + ymm_v2 = YMMRegister() + ymm_v3 = YMMRegister() + + ymm_v4 = YMMRegister() + ymm_v5 = YMMRegister() + ymm_v6 = YMMRegister() + ymm_v7 = YMMRegister() + + ymm_v8 = YMMRegister() + ymm_v9 = YMMRegister() + ymm_v10 = YMMRegister() + ymm_v11 = YMMRegister() + + ymm_v12 = YMMRegister() + ymm_v13 = YMMRegister() + ymm_v14 = YMMRegister() + ymm_v15 = YMMRegister() + + ymm_tmp0 = ymm_v12 + + # Allocate the neccecary stack space for the counter vector and two ymm + # registers that we will spill. + SUB(registers.rsp, 96) + mem_tmp0 = [registers.rsp+64] # (Stack) Scratch space. + mem_s3 = [registers.rsp+32] # (Stack) Working copy of s3. (8x) + mem_inc = [registers.rsp] # (Stack) Counter increment vector. + + # Increment the counter for one side of the state vector. + VPXOR(ymm_tmp0, ymm_tmp0, ymm_tmp0) + VMOVDQU(mem_inc, ymm_tmp0) + reg_tmp = GeneralPurposeRegister32() + MOV(reg_tmp, 0x00000001) + MOV([registers.rsp+16], reg_tmp) + VBROADCASTI128(ymm_v3, x_s3) + VPADDQ(ymm_v3, ymm_v3, [registers.rsp]) + VMOVDQA(mem_s3, ymm_v3) + + # As we process 2xN blocks at a time, so the counter increment for both + # sides of the state vector is 2. + MOV(reg_tmp, 0x00000002) + MOV([registers.rsp], reg_tmp) + MOV([registers.rsp+16], reg_tmp) + + out_write_even = Label() + out_write_odd = Label() + + # + # 8 blocks at a time. Ted Krovetz's avx2 code does not do this, but it's + # a decent gain despite all the pain... + # + + reg_rounds = GeneralPurposeRegister64() + + vector_loop8 = Loop() + SUB(reg_blocks, 8) + JB(vector_loop8.end) + with vector_loop8: + VBROADCASTI128(ymm_v0, x_s0) + VBROADCASTI128(ymm_v1, x_s1) + VBROADCASTI128(ymm_v2, x_s2) + VMOVDQA(ymm_v3, mem_s3) + + VMOVDQA(ymm_v4, ymm_v0) + VMOVDQA(ymm_v5, ymm_v1) + VMOVDQA(ymm_v6, ymm_v2) + VPADDQ(ymm_v7, ymm_v3, mem_inc) + + VMOVDQA(ymm_v8, ymm_v0) + VMOVDQA(ymm_v9, ymm_v1) + VMOVDQA(ymm_v10, ymm_v2) + VPADDQ(ymm_v11, ymm_v7, mem_inc) + + VMOVDQA(ymm_v12, ymm_v0) + VMOVDQA(ymm_v13, ymm_v1) + VMOVDQA(ymm_v14, ymm_v2) + VPADDQ(ymm_v15, ymm_v11, mem_inc) + + MOV(reg_rounds, 20) + rounds_loop8 = Loop() + with rounds_loop8: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + ROTW16_avx2(ymm_tmp0, ymm_v11) + ROTW16_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + ROTW12_avx2(ymm_tmp0, ymm_v9) + ROTW12_avx2(ymm_tmp0, ymm_v13) + + # a += b; d ^= a; d = ROTW8(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + ROTW8_avx2(ymm_tmp0, ymm_v11) + ROTW8_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + ROTW7_avx2(ymm_tmp0, ymm_v9) + ROTW7_avx2(ymm_tmp0, ymm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v5, ymm_v5, 0x39) + VPSHUFD(ymm_v9, ymm_v9, 0x39) + VPSHUFD(ymm_v13, ymm_v13, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v10, ymm_v10, 0x4e) + VPSHUFD(ymm_v14, ymm_v14, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + VPSHUFD(ymm_v7, ymm_v7, 0x93) + VPSHUFD(ymm_v11, ymm_v11, 0x93) + VPSHUFD(ymm_v15, ymm_v15, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + ROTW16_avx2(ymm_tmp0, ymm_v11) + ROTW16_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + ROTW12_avx2(ymm_tmp0, ymm_v9) + ROTW12_avx2(ymm_tmp0, ymm_v13) + + # a += b; d ^= a; d = ROTW8(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + ROTW8_avx2(ymm_tmp0, ymm_v11) + ROTW8_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + ROTW7_avx2(ymm_tmp0, ymm_v9) + ROTW7_avx2(ymm_tmp0, ymm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v5, ymm_v5, 0x93) + VPSHUFD(ymm_v9, ymm_v9, 0x93) + VPSHUFD(ymm_v13, ymm_v13, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v10, ymm_v10, 0x4e) + VPSHUFD(ymm_v14, ymm_v14, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + VPSHUFD(ymm_v7, ymm_v7, 0x39) + VPSHUFD(ymm_v11, ymm_v11, 0x39) + VPSHUFD(ymm_v15, ymm_v15, 0x39) + + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + SUB(reg_rounds, 2) + JNZ(rounds_loop8.begin) + + # ymm_v12 is in mem_tmp0 and is current.... + + # XXX: I assume VBROADCASTI128 is about as fast as VMOVDQA.... + VBROADCASTI128(ymm_tmp0, x_s0) + ADD_avx2(ymm_v0, ymm_tmp0) + ADD_avx2(ymm_v4, ymm_tmp0) + ADD_avx2(ymm_v8, ymm_tmp0) + ADD_avx2(ymm_tmp0, mem_tmp0) + VMOVDQA(mem_tmp0, ymm_tmp0) + + VBROADCASTI128(ymm_tmp0, x_s1) + ADD_avx2(ymm_v1, ymm_tmp0) + ADD_avx2(ymm_v5, ymm_tmp0) + ADD_avx2(ymm_v9, ymm_tmp0) + ADD_avx2(ymm_v13, ymm_tmp0) + + VBROADCASTI128(ymm_tmp0, x_s2) + ADD_avx2(ymm_v2, ymm_tmp0) + ADD_avx2(ymm_v6, ymm_tmp0) + ADD_avx2(ymm_v10, ymm_tmp0) + ADD_avx2(ymm_v14, ymm_tmp0) + + ADD_avx2(ymm_v3, mem_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) + VMOVDQA(ymm_v3, mem_s3) + ADD_avx2(ymm_v3, mem_inc) + + ADD_avx2(ymm_v7, ymm_v3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) + ADD_avx2(ymm_v3, mem_inc) + + ADD_avx2(ymm_v11, ymm_v3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 256, ymm_v8, ymm_v9, ymm_v10, ymm_v11) + ADD_avx2(ymm_v3, mem_inc) + + VMOVDQA(ymm_v12, mem_tmp0) + ADD_avx2(ymm_v15, ymm_v3) + WriteXor_avx2(ymm_v0, reg_inp, reg_outp, 384, ymm_v12, ymm_v13, ymm_v14, ymm_v15) + ADD_avx2(ymm_v3, mem_inc) + + VMOVDQA(mem_s3, ymm_v3) + + ADD(reg_inp, 8 * 64) + ADD(reg_outp, 8 * 64) + + SUB(reg_blocks, 8) + JAE(vector_loop8.begin) + + # ymm_v3 contains a current copy of mem_s3 either from when it was built, + # or because the loop updates it. Copy this before we mess with the block + # counter in case we need to write it back and return. + ymm_s3 = ymm_v11 + VMOVDQA(ymm_s3, ymm_v3) + + ADD(reg_blocks, 8) + JZ(out_write_even) + + # We now actually can do everything in registers. + ymm_s0 = ymm_v8 + VBROADCASTI128(ymm_s0, x_s0) + ymm_s1 = ymm_v9 + VBROADCASTI128(ymm_s1, x_s1) + ymm_s2 = ymm_v10 + VBROADCASTI128(ymm_s2, x_s2) + ymm_inc = ymm_v14 + VMOVDQA(ymm_inc, mem_inc) + + # + # 4 blocks at a time. + # + + process_2_blocks = Label() + SUB(reg_blocks, 4) + JB(process_2_blocks) # < 4 blocks remaining. + + VMOVDQA(ymm_v0, ymm_s0) + VMOVDQA(ymm_v1, ymm_s1) + VMOVDQA(ymm_v2, ymm_s2) + VMOVDQA(ymm_v3, ymm_s3) + + VMOVDQA(ymm_v4, ymm_v0) + VMOVDQA(ymm_v5, ymm_v1) + VMOVDQA(ymm_v6, ymm_v2) + VPADDQ(ymm_v7, ymm_v3, ymm_inc) + + MOV(reg_rounds, 20) + rounds_loop4 = Loop() + with rounds_loop4: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v5, ymm_v5, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + VPSHUFD(ymm_v7, ymm_v7, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v5, ymm_v5, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + VPSHUFD(ymm_v7, ymm_v7, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop4.begin) + + ADD_avx2(ymm_v0, ymm_s0) + ADD_avx2(ymm_v1, ymm_s1) + ADD_avx2(ymm_v2, ymm_s2) + ADD_avx2(ymm_v3, ymm_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) + ADD_avx2(ymm_s3, ymm_inc) + + ADD_avx2(ymm_v4, ymm_s0) + ADD_avx2(ymm_v5, ymm_s1) + ADD_avx2(ymm_v6, ymm_s2) + ADD_avx2(ymm_v7, ymm_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) + ADD_avx2(ymm_s3, ymm_inc) + + ADD(reg_inp, 4 * 64) + ADD(reg_outp, 4 * 64) + SUB(reg_blocks, 4) + + LABEL(process_2_blocks) + ADD(reg_blocks, 4) + JZ(out_write_even) # 0 blocks left. + + # + # 2/1 blocks at a time. The two codepaths are unified because + # with AVX2 we do 2 blocks at a time anyway, and this only gets called + # if 3/2/1 blocks are remaining, so the extra branches don't hurt that + # much. + # + + vector_loop2 = Loop() + with vector_loop2: + VMOVDQA(ymm_v0, ymm_s0) + VMOVDQA(ymm_v1, ymm_s1) + VMOVDQA(ymm_v2, ymm_s2) + VMOVDQA(ymm_v3, ymm_s3) + + MOV(reg_rounds, 20) + rounds_loop2 = Loop() + with rounds_loop2: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW16_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW12_avx2(ymm_tmp0, ymm_v1) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW8_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW7_avx2(ymm_tmp0, ymm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW16_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW12_avx2(ymm_tmp0, ymm_v1) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW8_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW7_avx2(ymm_tmp0, ymm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop2.begin) + + ADD_avx2(ymm_v0, ymm_s0) + ADD_avx2(ymm_v1, ymm_s1) + ADD_avx2(ymm_v2, ymm_s2) + ADD_avx2(ymm_v3, ymm_s3) + + # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); + VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x20) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp]) + VMOVDQU([reg_outp], ymm_tmp0) + + # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); + VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x20) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+32]) + VMOVDQU([reg_outp+32], ymm_tmp0) + + SUB(reg_blocks, 1) + JZ(out_write_odd) + + ADD_avx2(ymm_s3, ymm_inc) + + # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); + VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x31) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+64]) + VMOVDQU([reg_outp+64], ymm_tmp0) + + # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); + VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x31) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+96]) + VMOVDQU([reg_outp+96], ymm_tmp0) + + SUB(reg_blocks, 1) + JZ(out_write_even) + + ADD(reg_inp, 2 * 64) + ADD(reg_outp, 2 * 64) + JMP(vector_loop2.begin) + + LABEL(out_write_odd) + VPERM2I128(ymm_s3, ymm_s3, ymm_s3, 0x01) # Odd number of blocks. + + LABEL(out_write_even) + VMOVDQU(x_s3, ymm_s3.as_xmm) # Write back ymm_s3 to x_v3 + + # Paranoia, cleanse the scratch space. + VPXOR(ymm_v0, ymm_v0, ymm_v0) + VMOVDQA(mem_tmp0, ymm_v0) + VMOVDQA(mem_s3, ymm_v0) + + # Clear all YMM (and XMM) registers. + VZEROALL() + + # Remove our stack allocation. + MOV(registers.rsp, reg_sp_save) + + RETURN() + +# +# CPUID +# + +cpuidParams = Argument(ptr(uint32_t)) + +with Function("cpuidAmd64", (cpuidParams,)): + reg_params = registers.r15 + LOAD.ARGUMENT(reg_params, cpuidParams) + + MOV(registers.eax, [reg_params]) + MOV(registers.ecx, [reg_params+8]) + + CPUID() + + MOV([reg_params], registers.eax) + MOV([reg_params+4], registers.ebx) + MOV([reg_params+8], registers.ecx) + MOV([reg_params+12], registers.edx) + + RETURN() + +# +# XGETBV (ECX = 0) +# + +xcrVec = Argument(ptr(uint32_t)) + +with Function("xgetbv0Amd64", (xcrVec,)): + reg_vec = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_vec, xcrVec) + + XOR(registers.ecx, registers.ecx) + + XGETBV() + + MOV([reg_vec], registers.eax) + MOV([reg_vec+4], registers.edx) + + RETURN() diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s new file mode 100644 index 0000000..e3792af --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s @@ -0,0 +1,1180 @@ +// +build !noasm +// Generated by PeachPy 0.2.0 from chacha20_amd64.py + + +// func blocksAmd64SSE2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) +TEXT ·blocksAmd64SSE2(SB),4,$0-32 + MOVQ x+0(FP), AX + MOVQ inp+8(FP), BX + MOVQ outp+16(FP), CX + MOVQ nrBlocks+24(FP), DX + MOVQ SP, DI + ANDQ $18446744073709551584, SP + SUBQ $32, SP + PXOR X0, X0 + SUBQ $32, SP + MOVO X0, 0(SP) + MOVL $1, SI + MOVL SI, 0(SP) + SUBQ $4, DX + JCS vector_loop4_end +vector_loop4_begin: + MOVOU 0(AX), X0 + MOVOU 16(AX), X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ 0(SP), X7 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X7, X11 + PADDQ 0(SP), X11 + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X11, X15 + PADDQ 0(SP), X15 + MOVQ $20, SI +rounds_loop4_begin: + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $16, X12 + PSRLL $16, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $16, X12 + PSRLL $16, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $12, X12 + PSRLL $20, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $12, X12 + PSRLL $20, X13 + PXOR X12, X13 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $8, X12 + PSRLL $24, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $8, X12 + PSRLL $24, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $7, X12 + PSRLL $25, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $7, X12 + PSRLL $25, X13 + PXOR X12, X13 + PSHUFL $57, X1, X1 + PSHUFL $57, X5, X5 + PSHUFL $57, X9, X9 + PSHUFL $57, X13, X13 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $78, X10, X10 + PSHUFL $78, X14, X14 + PSHUFL $147, X3, X3 + PSHUFL $147, X7, X7 + PSHUFL $147, X11, X11 + PSHUFL $147, X15, X15 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $16, X12 + PSRLL $16, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $16, X12 + PSRLL $16, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $12, X12 + PSRLL $20, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $12, X12 + PSRLL $20, X13 + PXOR X12, X13 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $8, X12 + PSRLL $24, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $8, X12 + PSRLL $24, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $7, X12 + PSRLL $25, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $7, X12 + PSRLL $25, X13 + PXOR X12, X13 + PSHUFL $147, X1, X1 + PSHUFL $147, X5, X5 + PSHUFL $147, X9, X9 + PSHUFL $147, X13, X13 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $78, X10, X10 + PSHUFL $78, X14, X14 + PSHUFL $57, X3, X3 + PSHUFL $57, X7, X7 + PSHUFL $57, X11, X11 + PSHUFL $57, X15, X15 + MOVO 16(SP), X12 + SUBQ $2, SI + JNE rounds_loop4_begin + MOVO X12, 16(SP) + PADDL 0(AX), X0 + PADDL 16(AX), X1 + PADDL 32(AX), X2 + PADDL 48(AX), X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + MOVOU 48(AX), X3 + PADDQ 0(SP), X3 + PADDL 0(AX), X4 + PADDL 16(AX), X5 + PADDL 32(AX), X6 + PADDL X3, X7 + MOVOU 64(BX), X12 + PXOR X4, X12 + MOVOU X12, 64(CX) + MOVOU 80(BX), X12 + PXOR X5, X12 + MOVOU X12, 80(CX) + MOVOU 96(BX), X12 + PXOR X6, X12 + MOVOU X12, 96(CX) + MOVOU 112(BX), X12 + PXOR X7, X12 + MOVOU X12, 112(CX) + PADDQ 0(SP), X3 + PADDL 0(AX), X8 + PADDL 16(AX), X9 + PADDL 32(AX), X10 + PADDL X3, X11 + MOVOU 128(BX), X12 + PXOR X8, X12 + MOVOU X12, 128(CX) + MOVOU 144(BX), X12 + PXOR X9, X12 + MOVOU X12, 144(CX) + MOVOU 160(BX), X12 + PXOR X10, X12 + MOVOU X12, 160(CX) + MOVOU 176(BX), X12 + PXOR X11, X12 + MOVOU X12, 176(CX) + PADDQ 0(SP), X3 + MOVO 16(SP), X12 + PADDL 0(AX), X12 + PADDL 16(AX), X13 + PADDL 32(AX), X14 + PADDL X3, X15 + MOVOU 192(BX), X0 + PXOR X12, X0 + MOVOU X0, 192(CX) + MOVOU 208(BX), X0 + PXOR X13, X0 + MOVOU X0, 208(CX) + MOVOU 224(BX), X0 + PXOR X14, X0 + MOVOU X0, 224(CX) + MOVOU 240(BX), X0 + PXOR X15, X0 + MOVOU X0, 240(CX) + PADDQ 0(SP), X3 + MOVOU X3, 48(AX) + ADDQ $256, BX + ADDQ $256, CX + SUBQ $4, DX + JCC vector_loop4_begin +vector_loop4_end: + ADDQ $4, DX + JEQ out + MOVOU 0(AX), X8 + MOVOU 16(AX), X9 + MOVOU 32(AX), X10 + MOVOU 48(AX), X11 + MOVO 0(SP), X13 + SUBQ $2, DX + JCS process_1_block + MOVO X8, X0 + MOVO X9, X1 + MOVO X10, X2 + MOVO X11, X3 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ X13, X7 + MOVQ $20, SI +rounds_loop2_begin: + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + PSHUFL $57, X1, X1 + PSHUFL $57, X5, X5 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $147, X3, X3 + PSHUFL $147, X7, X7 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + PSHUFL $147, X1, X1 + PSHUFL $147, X5, X5 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $57, X3, X3 + PSHUFL $57, X7, X7 + SUBQ $2, SI + JNE rounds_loop2_begin + PADDL X8, X0 + PADDL X9, X1 + PADDL X10, X2 + PADDL X11, X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + PADDQ X13, X11 + PADDL X8, X4 + PADDL X9, X5 + PADDL X10, X6 + PADDL X11, X7 + MOVOU 64(BX), X12 + PXOR X4, X12 + MOVOU X12, 64(CX) + MOVOU 80(BX), X12 + PXOR X5, X12 + MOVOU X12, 80(CX) + MOVOU 96(BX), X12 + PXOR X6, X12 + MOVOU X12, 96(CX) + MOVOU 112(BX), X12 + PXOR X7, X12 + MOVOU X12, 112(CX) + PADDQ X13, X11 + ADDQ $128, BX + ADDQ $128, CX + SUBQ $2, DX +process_1_block: + ADDQ $2, DX + JEQ out_serial + MOVO X8, X0 + MOVO X9, X1 + MOVO X10, X2 + MOVO X11, X3 + MOVQ $20, SI +rounds_loop1_begin: + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + PSHUFL $57, X1, X1 + PSHUFL $78, X2, X2 + PSHUFL $147, X3, X3 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + PSHUFL $147, X1, X1 + PSHUFL $78, X2, X2 + PSHUFL $57, X3, X3 + SUBQ $2, SI + JNE rounds_loop1_begin + PADDL X8, X0 + PADDL X9, X1 + PADDL X10, X2 + PADDL X11, X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + PADDQ X13, X11 +out_serial: + MOVOU X11, 48(AX) +out: + PXOR X0, X0 + MOVO X0, 16(SP) + MOVQ DI, SP + RET + +// func blocksAmd64AVX2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) +TEXT ·blocksAmd64AVX2(SB),4,$0-32 + MOVQ x+0(FP), AX + MOVQ inp+8(FP), BX + MOVQ outp+16(FP), CX + MOVQ nrBlocks+24(FP), DX + MOVQ SP, DI + ANDQ $18446744073709551584, SP + SUBQ $32, SP + SUBQ $96, SP + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm0, ymm0, ymm0 + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x04; BYTE $0x24 // VMOVDQU [rsp], ymm0 + MOVL $1, SI + MOVL SI, 16(SP) + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x48; BYTE $0x30 // VBROADCASTI128 ymm1, [rax + 48] + BYTE $0xC5; BYTE $0xF5; BYTE $0xD4; BYTE $0x0C; BYTE $0x24 // VPADDQ ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 + MOVL $2, SI + MOVL SI, 0(SP) + MOVL SI, 16(SP) + SUBQ $8, DX + JCS vector_loop8_end +vector_loop8_begin: + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x10 // VBROADCASTI128 ymm2, [rax] + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x10 // VBROADCASTI128 ymm3, [rax + 16] + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x60; BYTE $0x20 // VBROADCASTI128 ymm4, [rax + 32] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 + BYTE $0xC5; BYTE $0x75; BYTE $0xD4; BYTE $0x04; BYTE $0x24 // VPADDQ ymm8, ymm1, [rsp] + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xCA // VMOVDQA ymm9, ymm2 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xD3 // VMOVDQA ymm10, ymm3 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xDC // VMOVDQA ymm11, ymm4 + BYTE $0xC5; BYTE $0x3D; BYTE $0xD4; BYTE $0x24; BYTE $0x24 // VPADDQ ymm12, ymm8, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xC2 // VMOVDQA ymm0, ymm2 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xEB // VMOVDQA ymm13, ymm3 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xF4 // VMOVDQA ymm14, ymm4 + BYTE $0xC5; BYTE $0x1D; BYTE $0xD4; BYTE $0x3C; BYTE $0x24 // VPADDQ ymm15, ymm12, [rsp] + MOVQ $20, SI +rounds_loop8_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x39 // VPSHUFD ymm10, ymm10, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x39 // VPSHUFD ymm13, ymm13, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x93 // VPSHUFD ymm12, ymm12, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x93 // VPSHUFD ymm15, ymm15, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x93 // VPSHUFD ymm10, ymm10, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x93 // VPSHUFD ymm13, ymm13, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x39 // VPSHUFD ymm12, ymm12, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x39 // VPSHUFD ymm15, ymm15, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + SUBQ $2, SI + JNE rounds_loop8_begin + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x00 // VBROADCASTI128 ymm0, [rax] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm2, ymm2, ymm0 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm5, ymm5, ymm0 + BYTE $0xC5; BYTE $0x35; BYTE $0xFE; BYTE $0xC8 // VPADDD ymm9, ymm9, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0xFE; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VPADDD ymm0, ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x10 // VBROADCASTI128 ymm0, [rax + 16] + BYTE $0xC5; BYTE $0xE5; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xCD; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0x2D; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm10, ymm10, ymm0 + BYTE $0xC5; BYTE $0x15; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm13, ymm13, ymm0 + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x20 // VBROADCASTI128 ymm0, [rax + 32] + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE0 // VPADDD ymm4, ymm4, ymm0 + BYTE $0xC5; BYTE $0xC5; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm0 + BYTE $0xC5; BYTE $0x25; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm11, ymm11, ymm0 + BYTE $0xC5; BYTE $0x0D; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm14, ymm14, ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VPADDD ymm1, ymm1, [rsp + 32] + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0x3D; BYTE $0xFE; BYTE $0xC1 // VPADDD ymm8, ymm8, ymm1 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0x1D; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm12, ymm12, ymm1 + BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x20 // VPERM2I128 ymm0, ymm9, ymm10, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 256] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 256], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x20 // VPERM2I128 ymm0, ymm11, ymm12, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 288] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 288], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x31 // VPERM2I128 ymm0, ymm9, ymm10, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 320] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 320], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x31 // VPERM2I128 ymm0, ymm11, ymm12, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 352] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 352], ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0x05; BYTE $0xFE; BYTE $0xF9 // VPADDD ymm15, ymm15, ymm1 + BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x20 // VPERM2I128 ymm2, ymm0, ymm13, 32 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 384] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 384], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x20 // VPERM2I128 ymm2, ymm14, ymm15, 32 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 416] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 416], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x31 // VPERM2I128 ymm2, ymm0, ymm13, 49 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 448] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 448], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x31 // VPERM2I128 ymm2, ymm14, ymm15, 49 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 480] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 480], ymm2 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 + ADDQ $512, BX + ADDQ $512, CX + SUBQ $8, DX + JCC vector_loop8_begin +vector_loop8_end: + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xE1 // VMOVDQA ymm12, ymm1 + ADDQ $8, DX + JEQ out_write_even + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x08 // VBROADCASTI128 ymm9, [rax] + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x50; BYTE $0x10 // VBROADCASTI128 ymm10, [rax + 16] + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x20 // VBROADCASTI128 ymm11, [rax + 32] + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0x34; BYTE $0x24 // VMOVDQA ymm14, [rsp] + SUBQ $4, DX + JCS process_2_blocks + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 + BYTE $0xC4; BYTE $0x41; BYTE $0x75; BYTE $0xD4; BYTE $0xC6 // VPADDQ ymm8, ymm1, ymm14 + MOVQ $20, SI +rounds_loop4_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 + SUBQ $2, SI + JNE rounds_loop4_begin + BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 + BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + BYTE $0xC4; BYTE $0xC1; BYTE $0x55; BYTE $0xFE; BYTE $0xE9 // VPADDD ymm5, ymm5, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x4D; BYTE $0xFE; BYTE $0xF2 // VPADDD ymm6, ymm6, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xFB // VPADDD ymm7, ymm7, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x3D; BYTE $0xFE; BYTE $0xC4 // VPADDD ymm8, ymm8, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + ADDQ $256, BX + ADDQ $256, CX + SUBQ $4, DX +process_2_blocks: + ADDQ $4, DX + JEQ out_write_even +vector_loop2_begin: + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 + MOVQ $20, SI +rounds_loop2_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + SUBQ $2, SI + JNE rounds_loop2_begin + BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 + BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + SUBQ $1, DX + JEQ out_write_odd + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + SUBQ $1, DX + JEQ out_write_even + ADDQ $128, BX + ADDQ $128, CX + JMP vector_loop2_begin +out_write_odd: + BYTE $0xC4; BYTE $0x43; BYTE $0x1D; BYTE $0x46; BYTE $0xE4; BYTE $0x01 // VPERM2I128 ymm12, ymm12, ymm12, 1 +out_write_even: + BYTE $0xC5; BYTE $0x7A; BYTE $0x7F; BYTE $0x60; BYTE $0x30 // VMOVDQU [rax + 48], xmm12 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0xD2 // VPXOR ymm2, ymm2, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm2 + BYTE $0xC5; BYTE $0xFC; BYTE $0x77 // VZEROALL + MOVQ DI, SP + RET + +// func cpuidAmd64(cpuidParams *uint32) +TEXT ·cpuidAmd64(SB),4,$0-8 + MOVQ cpuidParams+0(FP), R15 + MOVL 0(R15), AX + MOVL 8(R15), CX + CPUID + MOVL AX, 0(R15) + MOVL BX, 4(R15) + MOVL CX, 8(R15) + MOVL DX, 12(R15) + RET + +// func xgetbv0Amd64(xcrVec *uint32) +TEXT ·xgetbv0Amd64(SB),4,$0-8 + MOVQ xcrVec+0(FP), BX + XORL CX, CX + BYTE $0x0F; BYTE $0x01; BYTE $0xD0 // XGETBV + MOVL AX, 0(BX) + MOVL DX, 4(BX) + RET diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go new file mode 100644 index 0000000..fcdc8c6 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go @@ -0,0 +1,394 @@ +// chacha20_ref.go - Reference ChaCha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build !go1.9 + +package chacha20 + +import ( + "encoding/binary" + "math" + "unsafe" +) + +func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + // This routine ignores x[0]...x[4] in favor the const values since it's + // ever so slightly faster. + + for n := 0; n < nrBlocks; n++ { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 16) | (x12 >> 16) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 12) | (x4 >> 20) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 8) | (x12 >> 24) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 7) | (x4 >> 25) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 16) | (x13 >> 16) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 12) | (x5 >> 20) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 8) | (x13 >> 24) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 16) | (x14 >> 16) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 12) | (x6 >> 20) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 8) | (x14 >> 24) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 16) | (x15 >> 16) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 12) | (x7 >> 20) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 8) | (x15 >> 24) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 16) | (x15 >> 16) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 12) | (x5 >> 20) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 8) | (x15 >> 24) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 16) | (x12 >> 16) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 12) | (x6 >> 20) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 8) | (x12 >> 24) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 16) | (x13 >> 16) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 12) | (x7 >> 20) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 8) | (x13 >> 24) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 16) | (x14 >> 16) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 12) | (x4 >> 20) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 8) | (x14 >> 24) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 7) | (x4 >> 25) + } + + // On amd64 at least, this is a rather big boost. + if useUnsafe { + if in != nil { + inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = inArr[0] ^ (x0 + sigma0) + outArr[1] = inArr[1] ^ (x1 + sigma1) + outArr[2] = inArr[2] ^ (x2 + sigma2) + outArr[3] = inArr[3] ^ (x3 + sigma3) + outArr[4] = inArr[4] ^ (x4 + x[4]) + outArr[5] = inArr[5] ^ (x5 + x[5]) + outArr[6] = inArr[6] ^ (x6 + x[6]) + outArr[7] = inArr[7] ^ (x7 + x[7]) + outArr[8] = inArr[8] ^ (x8 + x[8]) + outArr[9] = inArr[9] ^ (x9 + x[9]) + outArr[10] = inArr[10] ^ (x10 + x[10]) + outArr[11] = inArr[11] ^ (x11 + x[11]) + outArr[12] = inArr[12] ^ (x12 + x[12]) + outArr[13] = inArr[13] ^ (x13 + x[13]) + outArr[14] = inArr[14] ^ (x14 + x[14]) + outArr[15] = inArr[15] ^ (x15 + x[15]) + } else { + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = x0 + sigma0 + outArr[1] = x1 + sigma1 + outArr[2] = x2 + sigma2 + outArr[3] = x3 + sigma3 + outArr[4] = x4 + x[4] + outArr[5] = x5 + x[5] + outArr[6] = x6 + x[6] + outArr[7] = x7 + x[7] + outArr[8] = x8 + x[8] + outArr[9] = x9 + x[9] + outArr[10] = x10 + x[10] + outArr[11] = x11 + x[11] + outArr[12] = x12 + x[12] + outArr[13] = x13 + x[13] + outArr[14] = x14 + x[14] + outArr[15] = x15 + x[15] + } + } else { + // Slow path, either the architecture cares about alignment, or is not little endian. + x0 += sigma0 + x1 += sigma1 + x2 += sigma2 + x3 += sigma3 + x4 += x[4] + x5 += x[5] + x6 += x[6] + x7 += x[7] + x8 += x[8] + x9 += x[9] + x10 += x[10] + x11 += x[11] + x12 += x[12] + x13 += x[13] + x14 += x[14] + x15 += x[15] + if in != nil { + binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) + binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) + binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) + binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) + binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) + binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) + binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) + binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) + binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) + binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) + binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) + binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) + binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) + binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) + binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) + binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) + in = in[BlockSize:] + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x4) + binary.LittleEndian.PutUint32(out[20:24], x5) + binary.LittleEndian.PutUint32(out[24:28], x6) + binary.LittleEndian.PutUint32(out[28:32], x7) + binary.LittleEndian.PutUint32(out[32:36], x8) + binary.LittleEndian.PutUint32(out[36:40], x9) + binary.LittleEndian.PutUint32(out[40:44], x10) + binary.LittleEndian.PutUint32(out[44:48], x11) + binary.LittleEndian.PutUint32(out[48:52], x12) + binary.LittleEndian.PutUint32(out[52:56], x13) + binary.LittleEndian.PutUint32(out[56:60], x14) + binary.LittleEndian.PutUint32(out[60:64], x15) + } + out = out[BlockSize:] + } + + // Stoping at 2^70 bytes per nonce is the user's responsibility. + ctr := uint64(x[13])<<32 | uint64(x[12]) + ctr++ + x[12] = uint32(ctr) + x[13] = uint32(ctr >> 32) + } +} + +func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 16) | (x12 >> 16) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 12) | (x4 >> 20) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 8) | (x12 >> 24) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 7) | (x4 >> 25) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 16) | (x13 >> 16) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 12) | (x5 >> 20) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 8) | (x13 >> 24) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 16) | (x14 >> 16) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 12) | (x6 >> 20) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 8) | (x14 >> 24) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 16) | (x15 >> 16) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 12) | (x7 >> 20) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 8) | (x15 >> 24) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 16) | (x15 >> 16) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 12) | (x5 >> 20) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 8) | (x15 >> 24) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 16) | (x12 >> 16) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 12) | (x6 >> 20) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 8) | (x12 >> 24) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 16) | (x13 >> 16) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 12) | (x7 >> 20) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 8) | (x13 >> 24) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 16) | (x14 >> 16) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 12) | (x4 >> 20) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 8) | (x14 >> 24) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 7) | (x4 >> 25) + } + + // HChaCha returns x0...x3 | x12...x15, which corresponds to the + // indexes of the ChaCha constant and the indexes of the IV. + if useUnsafe { + outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) + outArr[0] = x0 + outArr[1] = x1 + outArr[2] = x2 + outArr[3] = x3 + outArr[4] = x12 + outArr[5] = x13 + outArr[6] = x14 + outArr[7] = x15 + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + } + return +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go new file mode 100644 index 0000000..8405c22 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go @@ -0,0 +1,395 @@ +// chacha20_ref.go - Reference ChaCha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build go1.9 + +package chacha20 + +import ( + "encoding/binary" + "math" + "math/bits" + "unsafe" +) + +func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + // This routine ignores x[0]...x[4] in favor the const values since it's + // ever so slightly faster. + + for n := 0; n < nrBlocks; n++ { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + // On amd64 at least, this is a rather big boost. + if useUnsafe { + if in != nil { + inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = inArr[0] ^ (x0 + sigma0) + outArr[1] = inArr[1] ^ (x1 + sigma1) + outArr[2] = inArr[2] ^ (x2 + sigma2) + outArr[3] = inArr[3] ^ (x3 + sigma3) + outArr[4] = inArr[4] ^ (x4 + x[4]) + outArr[5] = inArr[5] ^ (x5 + x[5]) + outArr[6] = inArr[6] ^ (x6 + x[6]) + outArr[7] = inArr[7] ^ (x7 + x[7]) + outArr[8] = inArr[8] ^ (x8 + x[8]) + outArr[9] = inArr[9] ^ (x9 + x[9]) + outArr[10] = inArr[10] ^ (x10 + x[10]) + outArr[11] = inArr[11] ^ (x11 + x[11]) + outArr[12] = inArr[12] ^ (x12 + x[12]) + outArr[13] = inArr[13] ^ (x13 + x[13]) + outArr[14] = inArr[14] ^ (x14 + x[14]) + outArr[15] = inArr[15] ^ (x15 + x[15]) + } else { + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = x0 + sigma0 + outArr[1] = x1 + sigma1 + outArr[2] = x2 + sigma2 + outArr[3] = x3 + sigma3 + outArr[4] = x4 + x[4] + outArr[5] = x5 + x[5] + outArr[6] = x6 + x[6] + outArr[7] = x7 + x[7] + outArr[8] = x8 + x[8] + outArr[9] = x9 + x[9] + outArr[10] = x10 + x[10] + outArr[11] = x11 + x[11] + outArr[12] = x12 + x[12] + outArr[13] = x13 + x[13] + outArr[14] = x14 + x[14] + outArr[15] = x15 + x[15] + } + } else { + // Slow path, either the architecture cares about alignment, or is not little endian. + x0 += sigma0 + x1 += sigma1 + x2 += sigma2 + x3 += sigma3 + x4 += x[4] + x5 += x[5] + x6 += x[6] + x7 += x[7] + x8 += x[8] + x9 += x[9] + x10 += x[10] + x11 += x[11] + x12 += x[12] + x13 += x[13] + x14 += x[14] + x15 += x[15] + if in != nil { + binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) + binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) + binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) + binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) + binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) + binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) + binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) + binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) + binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) + binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) + binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) + binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) + binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) + binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) + binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) + binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) + in = in[BlockSize:] + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x4) + binary.LittleEndian.PutUint32(out[20:24], x5) + binary.LittleEndian.PutUint32(out[24:28], x6) + binary.LittleEndian.PutUint32(out[28:32], x7) + binary.LittleEndian.PutUint32(out[32:36], x8) + binary.LittleEndian.PutUint32(out[36:40], x9) + binary.LittleEndian.PutUint32(out[40:44], x10) + binary.LittleEndian.PutUint32(out[44:48], x11) + binary.LittleEndian.PutUint32(out[48:52], x12) + binary.LittleEndian.PutUint32(out[52:56], x13) + binary.LittleEndian.PutUint32(out[56:60], x14) + binary.LittleEndian.PutUint32(out[60:64], x15) + } + out = out[BlockSize:] + } + + // Stoping at 2^70 bytes per nonce is the user's responsibility. + ctr := uint64(x[13])<<32 | uint64(x[12]) + ctr++ + x[12] = uint32(ctr) + x[13] = uint32(ctr >> 32) + } +} + +func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + // HChaCha returns x0...x3 | x12...x15, which corresponds to the + // indexes of the ChaCha constant and the indexes of the IV. + if useUnsafe { + outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) + outArr[0] = x0 + outArr[1] = x1 + outArr[2] = x2 + outArr[3] = x3 + outArr[4] = x12 + outArr[5] = x13 + outArr[6] = x14 + outArr[7] = x15 + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + } + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore b/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore new file mode 100644 index 0000000..d38c149 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore @@ -0,0 +1,2 @@ +*.swp +*~ diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE b/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/README.md b/vendor/git.schwanenlied.me/yawning/kyber.git/README.md new file mode 100644 index 0000000..634901c --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/README.md @@ -0,0 +1,24 @@ +### Kyber - IND-CCA2-secure Key Encapsulation Mechanism +#### Yawning Angel (yawning at schwanenlied dot me) + +[![GoDoc](https://godoc.org/git.schwanenlied.me/yawning/kyber.git?status.svg)](https://godoc.org/git.schwanenlied.me/yawning/kyber.git) + +This package implements the Kyber IND-CCA2-secure key encapsulation +mechanism (KEM), based on the hardness of solving the learning-with-errors +(LWE) problem over module lattices as submitted to the NIST Post-Quantum +Cryptography project. + +This implementation is a port of the Public Domain reference implementation +by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, +John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. + +Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in +the Kyber paper are included for users that seek an authenticated key +exchange. + +Note that the algorithm is not finalized yet, and may change in a backward +incompatible manner in the future. The designers currently recommend +combining Kyber with an established pre-quantum algorithm like ECDH, and +using the Kyber-768 parameter set. + +For more information, see the [project home page](https://pq-crystals.org/kyber/index.shtml). diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go b/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go new file mode 100644 index 0000000..31ca4fd --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go @@ -0,0 +1,100 @@ +// cbd.go - Centered binomial distribution. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Load bytes into a 64-bit integer in little-endian order. +func loadLittleEndian(x []byte, bytes int) uint64 { + var r uint64 + for i, v := range x[:bytes] { + r |= uint64(v) << (8 * uint(i)) + } + return r +} + +// Given an array of uniformly random bytes, compute polynomial with +// coefficients distributed according to a centered binomial distribution +// with parameter eta. +func (p *poly) cbd(buf []byte, eta int) { + hardwareAccelImpl.cbdFn(p, buf, eta) +} + +func cbdRef(p *poly, buf []byte, eta int) { + switch eta { + case 3: + var a, b [4]uint32 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[3*i:], 3) + var d uint32 + for j := 0; j < 3; j++ { + d += uint32((t >> uint(j)) & 0x249249) + } + + a[0] = d & 0x7 + b[0] = (d >> 3) & 0x7 + a[1] = (d >> 6) & 0x7 + b[1] = (d >> 9) & 0x7 + a[2] = (d >> 12) & 0x7 + b[2] = (d >> 15) & 0x7 + a[3] = (d >> 18) & 0x7 + b[3] = (d >> 21) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + case 4: + var a, b [4]uint32 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[4*i:], 4) + var d uint32 + for j := 0; j < 4; j++ { + d += uint32((t >> uint(j)) & 0x11111111) + } + + a[0] = d & 0xf + b[0] = (d >> 4) & 0xf + a[1] = (d >> 8) & 0xf + b[1] = (d >> 12) & 0xf + a[2] = (d >> 16) & 0xf + b[2] = (d >> 20) & 0xf + a[3] = (d >> 24) & 0xf + b[3] = (d >> 28) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + case 5: + var a, b [4]uint64 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[5*i:], 5) + var d uint64 + for j := 0; j < 5; j++ { + d += (t >> uint(j)) & 0x0842108421 + } + + a[0] = d & 0x1f + b[0] = (d >> 5) & 0x1f + a[1] = (d >> 10) & 0x1f + b[1] = (d >> 15) & 0x1f + a[2] = (d >> 20) & 0x1f + b[2] = (d >> 25) & 0x1f + a[3] = (d >> 30) & 0x1f + b[3] = (d >> 35) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + default: + panic("kyber: eta must be in {3,4,5}") + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go b/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go new file mode 100644 index 0000000..8789ad4 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go @@ -0,0 +1,27 @@ +// doc.go - Kyber godoc extras. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// Package kyber implements the Kyber IND-CCA2-secure key encapsulation +// mechanism (KEM), based on the hardness of solving the learning-with-errors +// (LWE) problem over module lattices as submitted to the NIST Post-Quantum +// Cryptography project. +// +// This implementation is a port of the Public Domain reference implementation +// by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, +// John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. +// +// Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in +// the Kyber paper are included for users that seek an authenticated key +// exchange. +// +// Note that the algorithm is not finalized yet, and may change in a backward +// incompatible manner in the future. The designers currently recommend +// combining Kyber with an established pre-quantum algorithm like ECDH, and +// using the Kyber-768 parameter set. +// +// For more information, see https://pq-crystals.org/kyber/index.shtml. +package kyber diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go new file mode 100644 index 0000000..80ec831 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go @@ -0,0 +1,46 @@ +// hwaccel.go - Hardware acceleration hooks. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +var ( + isHardwareAccelerated = false + hardwareAccelImpl = implReference + + implReference = &hwaccelImpl{ + name: "Reference", + nttFn: nttRef, + invnttFn: invnttRef, + pointwiseAccFn: pointwiseAccRef, + cbdFn: cbdRef, + } +) + +type hwaccelImpl struct { + name string + nttFn func(*[kyberN]uint16) + invnttFn func(*[kyberN]uint16) + pointwiseAccFn func(*poly, *polyVec, *polyVec) + cbdFn func(*poly, []byte, int) +} + +func forceDisableHardwareAcceleration() { + // This is for the benefit of testing, so that it's possible to test + // all versions that are supported by the host. + isHardwareAccelerated = false + hardwareAccelImpl = implReference +} + +// IsHardwareAccelerated returns true iff the Kyber implementation will use +// hardware acceleration (eg: AVX2). +func IsHardwareAccelerated() bool { + return isHardwareAccelerated +} + +func init() { + initHardwareAcceleration() +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go new file mode 100644 index 0000000..6413187 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go @@ -0,0 +1,256 @@ +// hwaccel_amd64.go - AMD64 optimized routines. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build amd64,!gccgo,!noasm,go1.10 + +package kyber + +var zetasExp = [752]uint16{ + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 3625, 3625, 3625, 3625, + 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, + 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, + 2194, 2194, 2194, 2194, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 5431, 5431, 5431, 5431, 5431, 5431, + 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, + 5186, 5186, 5186, 5186, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, + 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, + 5980, 5980, 5980, 5980, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, + 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 1986, 1986, 1986, 1986, + 1986, 1986, 1986, 1986, 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, + 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 3706, 3706, 3706, 3706, + 3706, 3706, 3706, 3706, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, + 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, 5124, 5124, 5124, 5124, + 5124, 5124, 5124, 5124, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, + 617, 617, 617, 617, 617, 617, 617, 617, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 1921, 3992, 3992, 3992, 3992, 5943, 5943, 5943, 5943, 3266, + 3266, 3266, 3266, 4081, 4081, 4081, 4081, 810, 810, 810, 810, 1887, + 1887, 1887, 1887, 7043, 7043, 7043, 7043, 7674, 7674, 7674, 7674, 7243, + 7243, 7243, 7243, 7002, 7002, 7002, 7002, 6376, 6376, 6376, 6376, 5921, + 5921, 5921, 5921, 396, 396, 396, 396, 4507, 4507, 4507, 4507, 4126, + 4126, 4126, 4126, 5800, 5800, 5800, 5800, 3772, 3772, 3772, 3772, 5146, + 5146, 5146, 5146, 5241, 5241, 5241, 5241, 5126, 5126, 5126, 5126, 1535, + 1535, 1535, 1535, 7132, 7132, 7132, 7132, 3153, 3153, 3153, 3153, 2310, + 2310, 2310, 2310, 6282, 6282, 6282, 6282, 1321, 1321, 1321, 1321, 514, + 514, 514, 514, 4725, 4725, 4725, 4725, 7578, 7578, 7578, 7578, 2804, + 2804, 2804, 2804, 5638, 5638, 5638, 5638, 6250, 6250, 6250, 6250, 6627, + 6627, 1698, 1698, 4225, 4225, 1166, 1166, 2426, 2426, 3831, 3831, 915, + 915, 7679, 7679, 4264, 4264, 7487, 7487, 2919, 2919, 2789, 2789, 3405, + 3405, 2385, 2385, 5568, 5568, 4949, 4949, 2175, 2175, 373, 373, 3692, + 3692, 6951, 6951, 5925, 5925, 3135, 3135, 5290, 5290, 660, 660, 6184, + 6184, 2572, 2572, 4536, 4536, 1350, 1350, 5457, 5457, 4093, 4093, 6000, + 6000, 2883, 2883, 6291, 6291, 1598, 1598, 3750, 3750, 2762, 2762, 2835, + 2835, 2764, 2764, 5448, 5448, 3816, 3816, 6148, 6148, 1464, 1464, 6954, + 6954, 1521, 1521, 1386, 1386, 4253, 4253, 6760, 6760, 4938, 4938, 5521, + 5521, 2649, 2649, 6822, 6822, 2579, 2579, 1532, 1532, 1919, 1919, 7195, + 7195, 404, 404, 6625, 6625, 783, 783, 1799, 1799, 5016, 5016, 3480, + 3480, 2133, 2133, 4371, 4371, 6513, 6513, 7664, 3744, 2422, 2001, 1278, + 929, 6333, 5451, 7502, 6439, 5622, 6611, 2161, 1649, 2072, 3177, 5610, + 1121, 7245, 236, 715, 670, 7023, 6205, 5303, 2767, 3542, 7455, 1203, + 1181, 7530, 3887, 1712, 7459, 2786, 7230, 4134, 1779, 6530, 7247, 3568, + 3988, 3581, 6095, 1509, 2918, 2339, 6274, 3434, 4131, 2340, 2891, 2998, + 4367, 3461, 4962, 5434, 5092, 1144, 1072, 1295, 4866, 3911, 3450, 3781, + 5423, 796, 3163, 4473, 7092, 2963, 7557, 3214, 3334, 4315, 3936, 3723, + 1931, 7252, 7279, 4273, 83, 6155, 826, 6343, 2345, 5378, 2515, 7039, + 5844, 4716, 6890, 370, 293, 3312, 2083, 5992, 6904, 2070, 2262, 6788, + 2386, 7493, 6162, 4807, 6277, 1012, 2130, 1441, 2532, 4346, 6597, 4338, + 2937, 509, 6278, 2812, 3763, 592, 2005, 3657, 2460, 4004, 3752, 692, + 1669, 2167, 4394, +} + +var zetasInvExp = [752]uint16{ + 3287, 5514, 6012, 6989, 3929, 3677, 5221, 4024, 5676, 7089, 3918, 4869, + 1403, 7172, 4744, 3343, 1084, 3335, 5149, 6240, 5551, 6669, 1404, 2874, + 1519, 188, 5295, 893, 5419, 5611, 777, 1689, 5598, 4369, 7388, 7311, + 791, 2965, 1837, 642, 5166, 2303, 5336, 1338, 6855, 1526, 7598, 3408, + 402, 429, 5750, 3958, 3745, 3366, 4347, 4467, 124, 4718, 589, 3208, + 4518, 6885, 2258, 3900, 4231, 3770, 2815, 6386, 6609, 6537, 2589, 2247, + 2719, 4220, 3314, 4683, 4790, 5341, 3550, 4247, 1407, 5342, 4763, 6172, + 1586, 4100, 3693, 4113, 434, 1151, 5902, 3547, 451, 4895, 222, 5969, + 3794, 151, 6500, 6478, 226, 4139, 4914, 2378, 1476, 658, 7011, 6966, + 7445, 436, 6560, 2071, 4504, 5609, 6032, 5520, 1070, 2059, 1242, 179, + 2230, 1348, 6752, 6403, 5680, 5259, 3937, 17, 1168, 1168, 3310, 3310, + 5548, 5548, 4201, 4201, 2665, 2665, 5882, 5882, 6898, 6898, 1056, 1056, + 7277, 7277, 486, 486, 5762, 5762, 6149, 6149, 5102, 5102, 859, 859, + 5032, 5032, 2160, 2160, 2743, 2743, 921, 921, 3428, 3428, 6295, 6295, + 6160, 6160, 727, 727, 6217, 6217, 1533, 1533, 3865, 3865, 2233, 2233, + 4917, 4917, 4846, 4846, 4919, 4919, 3931, 3931, 6083, 6083, 1390, 1390, + 4798, 4798, 1681, 1681, 3588, 3588, 2224, 2224, 6331, 6331, 3145, 3145, + 5109, 5109, 1497, 1497, 7021, 7021, 2391, 2391, 4546, 4546, 1756, 1756, + 730, 730, 3989, 3989, 7308, 7308, 5506, 5506, 2732, 2732, 2113, 2113, + 5296, 5296, 4276, 4276, 4892, 4892, 4762, 4762, 194, 194, 3417, 3417, 2, + 2, 6766, 6766, 3850, 3850, 5255, 5255, 6515, 6515, 3456, 3456, 5983, + 5983, 1054, 1054, 1431, 1431, 1431, 1431, 2043, 2043, 2043, 2043, 4877, + 4877, 4877, 4877, 103, 103, 103, 103, 2956, 2956, 2956, 2956, 7167, + 7167, 7167, 7167, 6360, 6360, 6360, 6360, 1399, 1399, 1399, 1399, 5371, + 5371, 5371, 5371, 4528, 4528, 4528, 4528, 549, 549, 549, 549, 6146, + 6146, 6146, 6146, 2555, 2555, 2555, 2555, 2440, 2440, 2440, 2440, 2535, + 2535, 2535, 2535, 3909, 3909, 3909, 3909, 1881, 1881, 1881, 1881, 3555, + 3555, 3555, 3555, 3174, 3174, 3174, 3174, 7285, 7285, 7285, 7285, 1760, + 1760, 1760, 1760, 1305, 1305, 1305, 1305, 679, 679, 679, 679, 438, 438, + 438, 438, 7, 7, 7, 7, 638, 638, 638, 638, 5794, 5794, 5794, 5794, 6871, + 6871, 6871, 6871, 3600, 3600, 3600, 3600, 4415, 4415, 4415, 4415, 1738, + 1738, 1738, 1738, 3689, 3689, 3689, 3689, 5760, 5760, 5760, 5760, 5760, + 5760, 5760, 5760, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 4317, + 4317, 4317, 4317, 4317, 4317, 4317, 4317, 2830, 2830, 2830, 2830, 2830, + 2830, 2830, 2830, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6385, + 6385, 6385, 6385, 6385, 6385, 6385, 6385, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 1599, + 1599, 1599, 1599, 1599, 1599, 1599, 1599, 5695, 5695, 5695, 5695, 5695, + 5695, 5695, 5695, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2088, + 2088, 2088, 2088, 2088, 2088, 2088, 2088, 4865, 4865, 4865, 4865, 4865, + 4865, 4865, 4865, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, + 6267, 6267, 6267, 6267, 6267, 6267, 6267, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2495, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 6847, + 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, + 6847, 6847, 6847, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 7560, 7560, 7560, 7560, 7560, + 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 5487, + 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, + 5487, 5487, 5487, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, + 5225, 5225, 5225, 5225, 5225, 5225, 5225, 1100, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 3696, + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3696, 3696, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 4056, 4056, 4056, 4056, 4056, 4056, 4056, 3182, 3182, 3182, 3182, 3182, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 5776, + 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, + 5776, 5776, 5776, +} + +//go:noescape +func cpuidAmd64(cpuidParams *uint32) + +//go:noescape +func xgetbv0Amd64(xcrVec *uint32) + +//go:noescape +func nttAVX2(inout, zetas *uint16) + +//go:noescape +func invnttAVX2(inout, omegas *uint16) + +//go:noescape +func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func pointwiseAccK3AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func pointwiseAccK4AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func cbdEta4AVX2(dst *uint16, buf *byte) + +func supportsAVX2() bool { + // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family + const ( + osXsaveBit = 1 << 27 + avx2Bit = 1 << 5 + ) + + // Check to see if CPUID actually supports the leaf that indicates AVX2. + // CPUID.(EAX=0H, ECX=0H) >= 7 + regs := [4]uint32{0x00} + cpuidAmd64(®s[0]) + if regs[0] < 7 { + return false + } + + // Check to see if the OS knows how to save/restore XMM/YMM state. + // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 + regs = [4]uint32{0x01} + cpuidAmd64(®s[0]) + if regs[2]&osXsaveBit == 0 { + return false + } + xcrRegs := [2]uint32{} + xgetbv0Amd64(&xcrRegs[0]) + if xcrRegs[0]&6 != 6 { + return false + } + + // Check for AVX2 support. + // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 + regs = [4]uint32{0x07} + cpuidAmd64(®s[0]) + return regs[1]&avx2Bit != 0 +} + +var implAVX2 = &hwaccelImpl{ + name: "AVX2", + nttFn: nttYMM, + invnttFn: invnttYMM, + pointwiseAccFn: pointwiseAccYMM, + cbdFn: cbdYMM, +} + +func nttYMM(p *[kyberN]uint16) { + nttAVX2(&p[0], &zetasExp[0]) +} + +func invnttYMM(a *[kyberN]uint16) { + invnttAVX2(&a[0], &zetasInvExp[0]) +} + +func pointwiseAccYMM(p *poly, a, b *polyVec) { + // Unlike the C code, a polyVec won't have the polys in contigious + // memory. So each assembly function takes vectors of pointers to + // each polyvec's polys. + // + // Kind of ugly, but it's the price to pay for flexibility... + + var aVec, bVec [4]*uint16 // k is in {2,3,4}. + for i := range a.vec { + aVec[i] = &a.vec[i].coeffs[0] + bVec[i] = &b.vec[i].coeffs[0] + } + + switch len(a.vec) { + case 2: + pointwiseAccK2AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + case 3: + pointwiseAccK3AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + case 4: + pointwiseAccK4AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + } +} + +func cbdYMM(p *poly, buf []byte, eta int) { + switch eta { + case 4: + cbdEta4AVX2(&p.coeffs[0], &buf[0]) + default: + cbdRef(p, buf, eta) + } +} + +func initHardwareAcceleration() { + if supportsAVX2() { + isHardwareAccelerated = true + hardwareAccelImpl = implAVX2 + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s new file mode 100644 index 0000000..a98dc72 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s @@ -0,0 +1,2749 @@ +// +build !noasm,go1.10 +// hwaccel_amd64.s - AMD64 optimized routines. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +#include "textflag.h" + +// func cpuidAmd64(cpuidParams *uint32) +TEXT ·cpuidAmd64(SB), NOSPLIT, $0-8 + MOVQ cpuidParams+0(FP), R15 + MOVL 0(R15), AX + MOVL 8(R15), CX + CPUID + MOVL AX, 0(R15) + MOVL BX, 4(R15) + MOVL CX, 8(R15) + MOVL DX, 12(R15) + RET + +// func xgetbv0Amd64(xcrVec *uint32) +TEXT ·xgetbv0Amd64(SB), NOSPLIT, $0-8 + MOVQ xcrVec+0(FP), BX + XORL CX, CX + XGETBV + MOVL AX, 0(BX) + MOVL DX, 4(BX) + RET + +// Routines taken from the `avx2` implementation, converted to Go's assembly +// dialect. I do this in lieu of cutting myself to see if I still can feel +// pain. +// +// The conversion is mostly direct except: +// * Instead of aligned loads, unaligned loads are used, as there is no +// meaningful difference on modern Intel systems, and it's not immediately +// obvious to me how Go will align global data. +// * The polyvec_pointwise_acc family of routines take vectors of pointers +// due to the different internal memory layout of a polyvec. +// * The constants are renamed slightly. + +// Note: +// * These must be kept in sync with the values in params.go. +// Currently assumes Q = 7681, Q_INV = 57857. +// * Caution, Little endian so things will look different from avx2/consts.c. +DATA ·vpshufb_idx<>+0x00(SB)/8, $0x0504070601000302 +DATA ·vpshufb_idx<>+0x08(SB)/8, $0x0d0c0f0e09080b0a +DATA ·vpshufb_idx<>+0x10(SB)/8, $0x0504070601000302 +DATA ·vpshufb_idx<>+0x18(SB)/8, $0x0d0c0f0e09080b0a +GLOBL ·vpshufb_idx<>(SB), (NOPTR+RODATA), $32 + +DATA ·low_mask<>+0x00(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x08(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x10(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x18(SB)/8, $0x1fff1fff1fff1fff +GLOBL ·low_mask<>(SB), (NOPTR+RODATA), $32 + +DATA ·lowdword<>+0x00(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x08(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x10(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x18(SB)/8, $0x0000ffff0000ffff +GLOBL ·lowdword<>(SB), (NOPTR+RODATA), $32 + +DATA ·q_x16<>+0x00(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x08(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x10(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x18(SB)/8, $0x1e011e011e011e01 +GLOBL ·q_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·q2_x16<>+0x00(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x08(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x10(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x18(SB)/8, $0x3c023c023c023c02 +GLOBL ·q2_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·qinv_x16<>+0x00(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x08(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x10(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x18(SB)/8, $0xe201e201e201e201 +GLOBL ·qinv_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·f_x16<>+0x00(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x08(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x10(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x18(SB)/8, $0x0100010001000100 +GLOBL ·f_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·v_x16<>+0x00(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x08(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x10(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x18(SB)/8, $0x4442444244424442 +GLOBL ·v_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·montsq_x16<>+0x00(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x08(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x10(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x18(SB)/8, $0x15c115c115c115c1 +GLOBL ·montsq_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·mask11<>+0x00(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x08(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x10(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x18(SB)/8, $0x1111111111111111 +GLOBL ·mask11<>(SB), (NOPTR+RODATA), $32 + +DATA ·mask0f<>+0x00(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x08(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f +GLOBL ·mask0f<>(SB), (NOPTR+RODATA), $32 + +// func nttAVX2(inout, zetas *uint16) +TEXT ·nttAVX2(SB), NOSPLIT, $0-16 + MOVQ inout+0(FP), DI + MOVQ zetas+8(FP), SI + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·low_mask<>(SB), Y2 + + // zetas + VMOVDQU (SI), Y3 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 0 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + ADDQ $128, DI + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 0 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + SUBQ $128, DI + + // first round + // zetas + VMOVDQU 32(SI), Y3 + + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // level 1 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // level 2 + // zetas + VMOVDQU 96(SI), Y15 + VMOVDQU 128(SI), Y3 + + // mul + VPMULLW Y15, Y6, Y12 + VPMULHW Y15, Y6, Y6 + VPMULLW Y15, Y7, Y13 + VPMULHW Y15, Y7, Y7 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y6 + VPSUBW Y13, Y5, Y7 + VPSUBW Y14, Y8, Y10 + VPSUBW Y15, Y9, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y9, Y9 + + // level 3 + // zetas + VMOVDQU 224(SI), Y13 + VMOVDQU 256(SI), Y14 + VMOVDQU 288(SI), Y15 + VMOVDQU 320(SI), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + VPSUBW Y15, Y11, Y15 + + // reduce 2 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPSRAW $13, Y10, Y11 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPAND Y2, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSUBW Y11, Y10, Y10 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPSLLW $9, Y11, Y11 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + VPADDW Y11, Y10, Y10 + + // update + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPSUBW Y15, Y10, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y10, Y10 + + // level 4 + // zetas + VMOVDQU 480(SI), Y12 + VMOVDQU 512(SI), Y13 + VMOVDQU 544(SI), Y14 + VMOVDQU 576(SI), Y15 + + // shuffle + VPERM2I128 $0x02, Y4, Y5, Y3 + VPERM2I128 $0x13, Y4, Y5, Y4 + VPERM2I128 $0x02, Y6, Y7, Y5 + VPERM2I128 $0x13, Y6, Y7, Y6 + VPERM2I128 $0x02, Y8, Y9, Y7 + VPERM2I128 $0x13, Y8, Y9, Y8 + VPERM2I128 $0x02, Y10, Y11, Y9 + VPERM2I128 $0x13, Y10, Y11, Y10 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y11 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y8, Y13 + VPSUBW Y14, Y10, Y14 + + // update + VPSUBW Y11, Y3, Y4 + VPSUBW Y12, Y5, Y6 + VPSUBW Y13, Y7, Y8 + VPSUBW Y14, Y9, Y10 + VPADDW Y11, Y3, Y3 + VPADDW Y12, Y5, Y5 + VPADDW Y13, Y7, Y7 + VPADDW Y14, Y9, Y9 + + // level 5 + // zetas + VMOVDQU 736(SI), Y12 + VMOVDQU 768(SI), Y13 + VMOVDQU 800(SI), Y14 + VMOVDQU 832(SI), Y15 + + // shuffle + VSHUFPD $0x00, Y4, Y3, Y11 + VSHUFPD $0x0F, Y4, Y3, Y3 + VSHUFPD $0x00, Y6, Y5, Y4 + VSHUFPD $0x0F, Y6, Y5, Y5 + VSHUFPD $0x00, Y8, Y7, Y6 + VSHUFPD $0x0F, Y8, Y7, Y7 + VSHUFPD $0x00, Y10, Y9, Y8 + VSHUFPD $0x0F, Y10, Y9, Y9 + + // mul + VPMULLW Y12, Y3, Y10 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y10, Y10 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y10, Y10 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y10, Y3, Y10 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // update + VPSUBW Y10, Y11, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y10, Y11, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 6 + // shuffle + VPSHUFD $0xB1, Y10, Y12 + VPSHUFD $0xB1, Y3, Y13 + VPSHUFD $0xB1, Y4, Y14 + VPSHUFD $0xB1, Y5, Y15 + VPBLENDD $0x55, Y10, Y13, Y10 + VPBLENDD $0xAA, Y3, Y12, Y3 + VPBLENDD $0x55, Y4, Y15, Y4 + VPBLENDD $0xAA, Y5, Y14, Y5 + VPSHUFD $0xB1, Y6, Y12 + VPSHUFD $0xB1, Y7, Y13 + VPSHUFD $0xB1, Y8, Y14 + VPSHUFD $0xB1, Y9, Y15 + VPBLENDD $0x55, Y6, Y13, Y6 + VPBLENDD $0xAA, Y7, Y12, Y7 + VPBLENDD $0x55, Y8, Y15, Y8 + VPBLENDD $0xAA, Y9, Y14, Y9 + + // zetas + VMOVDQU 992(SI), Y12 + VMOVDQU 1024(SI), Y13 + VMOVDQU 1056(SI), Y14 + VMOVDQU 1088(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 2 + VPSRAW $13, Y10, Y3 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPAND Y2, Y10, Y10 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPSUBW Y3, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSLLW $9, Y3, Y3 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 7 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y15 + VPSHUFB Y15, Y10, Y11 + VPSHUFB Y15, Y3, Y12 + VPSHUFB Y15, Y4, Y13 + VPSHUFB Y15, Y5, Y14 + VPBLENDW $0x55, Y10, Y12, Y10 + VPBLENDW $0xAA, Y3, Y11, Y3 + VPBLENDW $0x55, Y4, Y14, Y4 + VPBLENDW $0xAA, Y5, Y13, Y5 + VPSHUFB Y15, Y6, Y11 + VPSHUFB Y15, Y7, Y12 + VPSHUFB Y15, Y8, Y13 + VPSHUFB Y15, Y9, Y14 + VPBLENDW $0x55, Y6, Y12, Y6 + VPBLENDW $0xAA, Y7, Y11, Y7 + VPBLENDW $0x55, Y8, Y14, Y8 + VPBLENDW $0xAA, Y9, Y13, Y9 + + // zetas + VMOVDQU 1248(SI), Y12 + VMOVDQU 1280(SI), Y13 + VMOVDQU 1312(SI), Y14 + VMOVDQU 1344(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 3 + VMOVDQU ·q2_x16<>(SB), Y15 + VPSRAW $15, Y10, Y3 + VPSRAW $15, Y4, Y5 + VPSRAW $15, Y6, Y7 + VPSRAW $15, Y8, Y9 + VPAND Y15, Y3, Y3 + VPAND Y15, Y5, Y5 + VPAND Y15, Y7, Y7 + VPAND Y15, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y8, Y8 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // reorder + VPUNPCKLWD Y3, Y10, Y12 + VPUNPCKHWD Y3, Y10, Y13 + VPUNPCKLWD Y5, Y4, Y14 + VPUNPCKHWD Y5, Y4, Y15 + VPUNPCKLWD Y7, Y6, Y3 + VPUNPCKHWD Y7, Y6, Y4 + VPUNPCKLWD Y9, Y8, Y5 + VPUNPCKHWD Y9, Y8, Y6 + VPERM2I128 $0x20, Y13, Y12, Y11 + VPERM2I128 $0x31, Y13, Y12, Y12 + VPERM2I128 $0x20, Y15, Y14, Y13 + VPERM2I128 $0x31, Y15, Y14, Y14 + VPERM2I128 $0x20, Y4, Y3, Y15 + VPERM2I128 $0x31, Y4, Y3, Y3 + VPERM2I128 $0x20, Y6, Y5, Y4 + VPERM2I128 $0x31, Y6, Y5, Y5 + + // store + VMOVDQU Y11, (DI) + VMOVDQU Y12, 32(DI) + VMOVDQU Y13, 64(DI) + VMOVDQU Y14, 96(DI) + VMOVDQU Y15, 128(DI) + VMOVDQU Y3, 160(DI) + VMOVDQU Y4, 192(DI) + VMOVDQU Y5, 224(DI) + + ADDQ $256, DI + + // second round + // zetas + VMOVDQU 64(SI), Y3 + + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // level 1 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // level 2 + // zetas + VMOVDQU 160(SI), Y15 + VMOVDQU 192(SI), Y3 + + // mul + VPMULLW Y15, Y6, Y12 + VPMULHW Y15, Y6, Y6 + VPMULLW Y15, Y7, Y13 + VPMULHW Y15, Y7, Y7 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y6 + VPSUBW Y13, Y5, Y7 + VPSUBW Y14, Y8, Y10 + VPSUBW Y15, Y9, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y9, Y9 + + // level 3 + // zetas + VMOVDQU 352(SI), Y13 + VMOVDQU 384(SI), Y14 + VMOVDQU 416(SI), Y15 + VMOVDQU 448(SI), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + VPSUBW Y15, Y11, Y15 + + // reduce 2 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPSRAW $13, Y10, Y11 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPAND Y2, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSUBW Y11, Y10, Y10 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPSLLW $9, Y11, Y11 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + VPADDW Y11, Y10, Y10 + + // update + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPSUBW Y15, Y10, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y10, Y10 + + // level 4 + // zetas + VMOVDQU 608(SI), Y12 + VMOVDQU 640(SI), Y13 + VMOVDQU 672(SI), Y14 + VMOVDQU 704(SI), Y15 + + // shuffle + VPERM2I128 $0x02, Y4, Y5, Y3 + VPERM2I128 $0x13, Y4, Y5, Y4 + VPERM2I128 $0x02, Y6, Y7, Y5 + VPERM2I128 $0x13, Y6, Y7, Y6 + VPERM2I128 $0x02, Y8, Y9, Y7 + VPERM2I128 $0x13, Y8, Y9, Y8 + VPERM2I128 $0x02, Y10, Y11, Y9 + VPERM2I128 $0x13, Y10, Y11, Y10 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y11 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y8, Y13 + VPSUBW Y14, Y10, Y14 + + // update + VPSUBW Y11, Y3, Y4 + VPSUBW Y12, Y5, Y6 + VPSUBW Y13, Y7, Y8 + VPSUBW Y14, Y9, Y10 + VPADDW Y11, Y3, Y3 + VPADDW Y12, Y5, Y5 + VPADDW Y13, Y7, Y7 + VPADDW Y14, Y9, Y9 + + // level 5 + // zetas + VMOVDQU 864(SI), Y12 + VMOVDQU 896(SI), Y13 + VMOVDQU 928(SI), Y14 + VMOVDQU 960(SI), Y15 + + // shuffle + VSHUFPD $0x00, Y4, Y3, Y11 + VSHUFPD $0x0F, Y4, Y3, Y3 + VSHUFPD $0x00, Y6, Y5, Y4 + VSHUFPD $0x0F, Y6, Y5, Y5 + VSHUFPD $0x00, Y8, Y7, Y6 + VSHUFPD $0x0F, Y8, Y7, Y7 + VSHUFPD $0x00, Y10, Y9, Y8 + VSHUFPD $0x0F, Y10, Y9, Y9 + + // mul + VPMULLW Y12, Y3, Y10 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y10, Y10 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y10, Y10 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y10, Y3, Y10 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // update + VPSUBW Y10, Y11, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y10, Y11, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 6 + // shuffle + VPSHUFD $0xB1, Y10, Y12 + VPSHUFD $0xB1, Y3, Y13 + VPSHUFD $0xB1, Y4, Y14 + VPSHUFD $0xB1, Y5, Y15 + VPBLENDD $0x55, Y10, Y13, Y10 + VPBLENDD $0xAA, Y3, Y12, Y3 + VPBLENDD $0x55, Y4, Y15, Y4 + VPBLENDD $0xAA, Y5, Y14, Y5 + VPSHUFD $0xB1, Y6, Y12 + VPSHUFD $0xB1, Y7, Y13 + VPSHUFD $0xB1, Y8, Y14 + VPSHUFD $0xB1, Y9, Y15 + VPBLENDD $0x55, Y6, Y13, Y6 + VPBLENDD $0xAA, Y7, Y12, Y7 + VPBLENDD $0x55, Y8, Y15, Y8 + VPBLENDD $0xAA, Y9, Y14, Y9 + + // zetas + VMOVDQU 1120(SI), Y12 + VMOVDQU 1152(SI), Y13 + VMOVDQU 1184(SI), Y14 + VMOVDQU 1216(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 2 + VPSRAW $13, Y10, Y3 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPAND Y2, Y10, Y10 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPSUBW Y3, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSLLW $9, Y3, Y3 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 7 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y15 + VPSHUFB Y15, Y10, Y11 + VPSHUFB Y15, Y3, Y12 + VPSHUFB Y15, Y4, Y13 + VPSHUFB Y15, Y5, Y14 + VPBLENDW $0x55, Y10, Y12, Y10 + VPBLENDW $0xAA, Y3, Y11, Y3 + VPBLENDW $0x55, Y4, Y14, Y4 + VPBLENDW $0xAA, Y5, Y13, Y5 + VPSHUFB Y15, Y6, Y11 + VPSHUFB Y15, Y7, Y12 + VPSHUFB Y15, Y8, Y13 + VPSHUFB Y15, Y9, Y14 + VPBLENDW $0x55, Y6, Y12, Y6 + VPBLENDW $0xAA, Y7, Y11, Y7 + VPBLENDW $0x55, Y8, Y14, Y8 + VPBLENDW $0xAA, Y9, Y13, Y9 + + // zetas + VMOVDQU 1376(SI), Y12 + VMOVDQU 1408(SI), Y13 + VMOVDQU 1440(SI), Y14 + VMOVDQU 1472(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 3 + VMOVDQU ·q2_x16<>(SB), Y15 + VPSRAW $15, Y10, Y3 + VPSRAW $15, Y4, Y5 + VPSRAW $15, Y6, Y7 + VPSRAW $15, Y8, Y9 + VPAND Y15, Y3, Y3 + VPAND Y15, Y5, Y5 + VPAND Y15, Y7, Y7 + VPAND Y15, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y8, Y8 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // reorder + VPUNPCKLWD Y3, Y10, Y12 + VPUNPCKHWD Y3, Y10, Y13 + VPUNPCKLWD Y5, Y4, Y14 + VPUNPCKHWD Y5, Y4, Y15 + VPUNPCKLWD Y7, Y6, Y3 + VPUNPCKHWD Y7, Y6, Y4 + VPUNPCKLWD Y9, Y8, Y5 + VPUNPCKHWD Y9, Y8, Y6 + VPERM2I128 $0x20, Y13, Y12, Y11 + VPERM2I128 $0x31, Y13, Y12, Y12 + VPERM2I128 $0x20, Y15, Y14, Y13 + VPERM2I128 $0x31, Y15, Y14, Y14 + VPERM2I128 $0x20, Y4, Y3, Y15 + VPERM2I128 $0x31, Y4, Y3, Y3 + VPERM2I128 $0x20, Y6, Y5, Y4 + VPERM2I128 $0x31, Y6, Y5, Y5 + + // store + VMOVDQU Y11, (DI) + VMOVDQU Y12, 32(DI) + VMOVDQU Y13, 64(DI) + VMOVDQU Y14, 96(DI) + VMOVDQU Y15, 128(DI) + VMOVDQU Y3, 160(DI) + VMOVDQU Y4, 192(DI) + VMOVDQU Y5, 224(DI) + + VZEROUPPER + RET + +// Go 1.10's VPERMQ support expects the imm8 to be a `int8`, instead of a +// `uint8`. While this is fixed in master, use the signed representation +// for now till it's reasonable to expect versions with the fix to be widely +// available. +// +// See: https://github.com/golang/go/issues/24378 +#define invntt_VPERMQ_IDX $-40 // $0xd8 + +// func invnttAVX2(inout, omegas *uint16) +TEXT ·invnttAVX2(SB), NOSPLIT, $0-16 + MOVQ inout+0(FP), DI + MOVQ omegas+8(FP), SI + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·v_x16<>(SB), Y2 + + MOVQ SI, R8 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // reorder + VMOVDQU ·lowdword<>(SB), Y3 + VPAND Y3, Y4, Y12 + VPAND Y3, Y5, Y13 + VPAND Y3, Y6, Y14 + VPAND Y3, Y7, Y15 + VPSRLD $16, Y4, Y4 + VPSRLD $16, Y5, Y5 + VPSRLD $16, Y6, Y6 + VPSRLD $16, Y7, Y7 + VPACKUSDW Y5, Y4, Y5 + VPACKUSDW Y13, Y12, Y4 + VPACKUSDW Y7, Y6, Y7 + VPACKUSDW Y15, Y14, Y6 + VPERMQ invntt_VPERMQ_IDX, Y4, Y4 + VPERMQ invntt_VPERMQ_IDX, Y5, Y5 + VPERMQ invntt_VPERMQ_IDX, Y6, Y6 + VPERMQ invntt_VPERMQ_IDX, Y7, Y7 + VPAND Y3, Y8, Y12 + VPAND Y3, Y9, Y13 + VPAND Y3, Y10, Y14 + VPAND Y3, Y11, Y15 + VPSRLD $16, Y8, Y8 + VPSRLD $16, Y9, Y9 + VPSRLD $16, Y10, Y10 + VPSRLD $16, Y11, Y11 + VPACKUSDW Y9, Y8, Y9 + VPACKUSDW Y13, Y12, Y8 + VPACKUSDW Y11, Y10, Y11 + VPACKUSDW Y15, Y14, Y10 + VPERMQ invntt_VPERMQ_IDX, Y8, Y8 + VPERMQ invntt_VPERMQ_IDX, Y9, Y9 + VPERMQ invntt_VPERMQ_IDX, Y10, Y10 + VPERMQ invntt_VPERMQ_IDX, Y11, Y11 + + // level 0 + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU (R8), Y7 + VMOVDQU 32(R8), Y9 + VMOVDQU 64(R8), Y11 + VMOVDQU 96(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // level 1 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y3 + VPSHUFB Y3, Y4, Y12 + VPSHUFB Y3, Y5, Y13 + VPSHUFB Y3, Y6, Y14 + VPSHUFB Y3, Y7, Y15 + VPBLENDW $0x55, Y4, Y13, Y4 + VPBLENDW $0xAA, Y5, Y12, Y5 + VPBLENDW $0x55, Y6, Y15, Y6 + VPBLENDW $0xAA, Y7, Y14, Y7 + VPSHUFB Y3, Y8, Y12 + VPSHUFB Y3, Y9, Y13 + VPSHUFB Y3, Y10, Y14 + VPSHUFB Y3, Y11, Y15 + VPBLENDW $0x55, Y8, Y13, Y8 + VPBLENDW $0xAA, Y9, Y12, Y9 + VPBLENDW $0x55, Y10, Y15, Y10 + VPBLENDW $0xAA, Y11, Y14, Y11 + + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU 256(R8), Y7 + VMOVDQU 288(R8), Y9 + VMOVDQU 320(R8), Y11 + VMOVDQU 352(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // reduce 2 + VPMULHW Y2, Y4, Y12 + VPMULHW Y2, Y6, Y13 + VPMULHW Y2, Y8, Y14 + VPMULHW Y2, Y10, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y6, Y6 + VPSUBW Y14, Y8, Y8 + VPSUBW Y15, Y10, Y10 + + // level 2 + // shuffle + VPSHUFD $0xB1, Y4, Y12 + VPSHUFD $0xB1, Y5, Y13 + VPSHUFD $0xB1, Y6, Y14 + VPSHUFD $0xB1, Y7, Y15 + VPBLENDD $0x55, Y4, Y13, Y4 + VPBLENDD $0xAA, Y5, Y12, Y5 + VPBLENDD $0x55, Y6, Y15, Y6 + VPBLENDD $0xAA, Y7, Y14, Y7 + VPSHUFD $0xB1, Y8, Y12 + VPSHUFD $0xB1, Y9, Y13 + VPSHUFD $0xB1, Y10, Y14 + VPSHUFD $0xB1, Y11, Y15 + VPBLENDD $0x55, Y8, Y13, Y8 + VPBLENDD $0xAA, Y9, Y12, Y9 + VPBLENDD $0x55, Y10, Y15, Y10 + VPBLENDD $0xAA, Y11, Y14, Y11 + + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU 512(R8), Y7 + VMOVDQU 544(R8), Y9 + VMOVDQU 576(R8), Y11 + VMOVDQU 608(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // level 3 + // shuffle + VSHUFPD $0x00, Y5, Y4, Y3 + VSHUFPD $0x0F, Y5, Y4, Y4 + VSHUFPD $0x00, Y7, Y6, Y5 + VSHUFPD $0x0F, Y7, Y6, Y6 + VSHUFPD $0x00, Y9, Y8, Y7 + VSHUFPD $0x0F, Y9, Y8, Y8 + VSHUFPD $0x00, Y11, Y10, Y9 + VSHUFPD $0x0F, Y11, Y10, Y10 + + // update + VPSUBW Y4, Y3, Y12 + VPSUBW Y6, Y5, Y13 + VPSUBW Y8, Y7, Y14 + VPSUBW Y10, Y9, Y15 + VPADDW Y3, Y4, Y3 + VPADDW Y5, Y6, Y5 + VPADDW Y7, Y8, Y7 + VPADDW Y9, Y10, Y9 + + // zetas + VMOVDQU 768(R8), Y6 + VMOVDQU 800(R8), Y8 + VMOVDQU 832(R8), Y10 + VMOVDQU 864(R8), Y11 + + // mul + VPMULLW Y6, Y12, Y4 + VPMULHW Y6, Y12, Y12 + VPMULLW Y8, Y13, Y6 + VPMULHW Y8, Y13, Y13 + VPMULLW Y10, Y14, Y8 + VPMULHW Y10, Y14, Y14 + VPMULLW Y11, Y15, Y10 + VPMULHW Y11, Y15, Y15 + + // reduce + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y8, Y8 + VPMULLW Y0, Y10, Y10 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y8, Y8 + VPMULHW Y1, Y10, Y10 + VPSUBW Y4, Y12, Y4 + VPSUBW Y6, Y13, Y6 + VPSUBW Y8, Y14, Y8 + VPSUBW Y10, Y15, Y10 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPMULHW Y2, Y5, Y13 + VPMULHW Y2, Y7, Y14 + VPMULHW Y2, Y9, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y3, Y3 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y7, Y7 + VPSUBW Y15, Y9, Y9 + + // level 4 + // shuffle + VPERM2I128 $0x02, Y3, Y4, Y11 + VPERM2I128 $0x13, Y3, Y4, Y3 + VPERM2I128 $0x02, Y5, Y6, Y4 + VPERM2I128 $0x13, Y5, Y6, Y5 + VPERM2I128 $0x02, Y7, Y8, Y6 + VPERM2I128 $0x13, Y7, Y8, Y7 + VPERM2I128 $0x02, Y9, Y10, Y8 + VPERM2I128 $0x13, Y9, Y10, Y9 + + // update + VMOVDQA Y11, Y12 + VMOVDQA Y4, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y8, Y15 + VPADDW Y11, Y3, Y10 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPSUBW Y3, Y12, Y3 + VPSUBW Y5, Y13, Y5 + VPSUBW Y7, Y14, Y7 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1024(R8), Y12 + VMOVDQU 1056(R8), Y13 + VMOVDQU 1088(R8), Y14 + VMOVDQU 1120(R8), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y3 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + + // level 5 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y10, Y4, Y10 + VPADDW Y3, Y5, Y3 + VPADDW Y6, Y8, Y6 + VPADDW Y7, Y9, Y7 + VPSUBW Y4, Y12, Y4 + VPSUBW Y5, Y13, Y5 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1280(SI), Y14 + VMOVDQU 1312(SI), Y15 + + // mul + VPMULLW Y14, Y4, Y11 + VPMULLW Y14, Y5, Y12 + VPMULLW Y15, Y8, Y13 + VPMULHW Y14, Y4, Y4 + VPMULHW Y14, Y5, Y5 + VPMULHW Y15, Y8, Y8 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y10, Y12 + VPMULHW Y2, Y6, Y13 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPSUBW Y12, Y10, Y10 + VPSUBW Y13, Y6, Y6 + + // level 6 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y4, Y14 + VMOVDQA Y5, Y15 + VPADDW Y10, Y6, Y10 + VPADDW Y3, Y7, Y3 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPSUBW Y6, Y12, Y6 + VPSUBW Y7, Y13, Y7 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1408(SI), Y15 + + // mul + VPMULLW Y15, Y6, Y11 + VPMULLW Y15, Y7, Y12 + VPMULLW Y15, Y8, Y13 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y6, Y6 + VPMULHW Y15, Y7, Y7 + VPMULHW Y15, Y8, Y8 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y6, Y6 + VPSUBW Y12, Y7, Y7 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPSRAW $11, Y12, Y12 + VPMULLW Y1, Y12, Y12 + VPSUBW Y12, Y3, Y3 + + // store + VMOVDQU Y10, (DI) + VMOVDQU Y3, 32(DI) + VMOVDQU Y4, 64(DI) + VMOVDQU Y5, 96(DI) + VMOVDQU Y6, 128(DI) + VMOVDQU Y7, 160(DI) + VMOVDQU Y8, 192(DI) + VMOVDQU Y9, 224(DI) + + ADDQ $256, DI + ADDQ $128, R8 + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // reorder + VMOVDQU ·lowdword<>(SB), Y3 + VPAND Y3, Y4, Y12 + VPAND Y3, Y5, Y13 + VPAND Y3, Y6, Y14 + VPAND Y3, Y7, Y15 + VPSRLD $16, Y4, Y4 + VPSRLD $16, Y5, Y5 + VPSRLD $16, Y6, Y6 + VPSRLD $16, Y7, Y7 + VPACKUSDW Y5, Y4, Y5 + VPACKUSDW Y13, Y12, Y4 + VPACKUSDW Y7, Y6, Y7 + VPACKUSDW Y15, Y14, Y6 + VPERMQ invntt_VPERMQ_IDX, Y4, Y4 + VPERMQ invntt_VPERMQ_IDX, Y5, Y5 + VPERMQ invntt_VPERMQ_IDX, Y6, Y6 + VPERMQ invntt_VPERMQ_IDX, Y7, Y7 + VPAND Y3, Y8, Y12 + VPAND Y3, Y9, Y13 + VPAND Y3, Y10, Y14 + VPAND Y3, Y11, Y15 + VPSRLD $16, Y8, Y8 + VPSRLD $16, Y9, Y9 + VPSRLD $16, Y10, Y10 + VPSRLD $16, Y11, Y11 + VPACKUSDW Y9, Y8, Y9 + VPACKUSDW Y13, Y12, Y8 + VPACKUSDW Y11, Y10, Y11 + VPACKUSDW Y15, Y14, Y10 + VPERMQ invntt_VPERMQ_IDX, Y8, Y8 + VPERMQ invntt_VPERMQ_IDX, Y9, Y9 + VPERMQ invntt_VPERMQ_IDX, Y10, Y10 + VPERMQ invntt_VPERMQ_IDX, Y11, Y11 + + // level 0 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU (R8), Y13 + VMOVDQU 32(R8), Y14 + VMOVDQU 64(R8), Y15 + VMOVDQU 96(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // level 1 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y3 + VPSHUFB Y3, Y4, Y12 + VPSHUFB Y3, Y5, Y13 + VPSHUFB Y3, Y6, Y14 + VPSHUFB Y3, Y7, Y15 + VPBLENDW $0x55, Y4, Y13, Y4 + VPBLENDW $0xAA, Y5, Y12, Y5 + VPBLENDW $0x55, Y6, Y15, Y6 + VPBLENDW $0xAA, Y7, Y14, Y7 + VPSHUFB Y3, Y8, Y12 + VPSHUFB Y3, Y9, Y13 + VPSHUFB Y3, Y10, Y14 + VPSHUFB Y3, Y11, Y15 + VPBLENDW $0x55, Y8, Y13, Y8 + VPBLENDW $0xAA, Y9, Y12, Y9 + VPBLENDW $0x55, Y10, Y15, Y10 + VPBLENDW $0xAA, Y11, Y14, Y11 + + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU 256(R8), Y13 + VMOVDQU 288(R8), Y14 + VMOVDQU 320(R8), Y15 + VMOVDQU 352(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // reduce 2 + VPMULHW Y2, Y4, Y12 + VPMULHW Y2, Y6, Y13 + VPMULHW Y2, Y8, Y14 + VPMULHW Y2, Y10, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y6, Y6 + VPSUBW Y14, Y8, Y8 + VPSUBW Y15, Y10, Y10 + + // level 2 + // shuffle + VPSHUFD $0xB1, Y4, Y12 + VPSHUFD $0xB1, Y5, Y13 + VPSHUFD $0xB1, Y6, Y14 + VPSHUFD $0xB1, Y7, Y15 + VPBLENDD $0x55, Y4, Y13, Y4 + VPBLENDD $0xAA, Y5, Y12, Y5 + VPBLENDD $0x55, Y6, Y15, Y6 + VPBLENDD $0xAA, Y7, Y14, Y7 + VPSHUFD $0xB1, Y8, Y12 + VPSHUFD $0xB1, Y9, Y13 + VPSHUFD $0xB1, Y10, Y14 + VPSHUFD $0xB1, Y11, Y15 + VPBLENDD $0x55, Y8, Y13, Y8 + VPBLENDD $0xAA, Y9, Y12, Y9 + VPBLENDD $0x55, Y10, Y15, Y10 + VPBLENDD $0xAA, Y11, Y14, Y11 + + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU 512(R8), Y13 + VMOVDQU 544(R8), Y14 + VMOVDQU 576(R8), Y15 + VMOVDQU 608(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // level 3 + // shuffle + VSHUFPD $0x00, Y5, Y4, Y3 + VSHUFPD $0x0F, Y5, Y4, Y4 + VSHUFPD $0x00, Y7, Y6, Y5 + VSHUFPD $0x0F, Y7, Y6, Y6 + VSHUFPD $0x00, Y9, Y8, Y7 + VSHUFPD $0x0F, Y9, Y8, Y8 + VSHUFPD $0x00, Y11, Y10, Y9 + VSHUFPD $0x0F, Y11, Y10, Y10 + + // update + VMOVDQA Y3, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y7, Y14 + VMOVDQA Y9, Y15 + VPADDW Y3, Y4, Y3 + VPADDW Y5, Y6, Y5 + VPADDW Y7, Y8, Y7 + VPADDW Y9, Y10, Y9 + VPSUBW Y4, Y12, Y4 + VPSUBW Y6, Y13, Y6 + VPSUBW Y8, Y14, Y8 + VPSUBW Y10, Y15, Y10 + + // zetas + VMOVDQU 768(R8), Y12 + VMOVDQU 800(R8), Y13 + VMOVDQU 832(R8), Y14 + VMOVDQU 864(R8), Y15 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y6, Y6 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y10, Y10 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPMULHW Y2, Y5, Y13 + VPMULHW Y2, Y7, Y14 + VPMULHW Y2, Y9, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y3, Y3 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y7, Y7 + VPSUBW Y15, Y9, Y9 + + // level 4 + // shuffle + VPERM2I128 $0x02, Y3, Y4, Y11 + VPERM2I128 $0x13, Y3, Y4, Y3 + VPERM2I128 $0x02, Y5, Y6, Y4 + VPERM2I128 $0x13, Y5, Y6, Y5 + VPERM2I128 $0x02, Y7, Y8, Y6 + VPERM2I128 $0x13, Y7, Y8, Y7 + VPERM2I128 $0x02, Y9, Y10, Y8 + VPERM2I128 $0x13, Y9, Y10, Y9 + + // update + VMOVDQA Y11, Y12 + VMOVDQA Y4, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y8, Y15 + VPADDW Y11, Y3, Y10 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPSUBW Y3, Y12, Y3 + VPSUBW Y5, Y13, Y5 + VPSUBW Y7, Y14, Y7 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1024(R8), Y12 + VMOVDQU 1056(R8), Y13 + VMOVDQU 1088(R8), Y14 + VMOVDQU 1120(R8), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y3 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + + // level 5 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y10, Y4, Y10 + VPADDW Y3, Y5, Y3 + VPADDW Y6, Y8, Y6 + VPADDW Y7, Y9, Y7 + VPSUBW Y4, Y12, Y4 + VPSUBW Y5, Y13, Y5 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1344(SI), Y14 + VMOVDQU 1376(SI), Y15 + + // mul + VPMULLW Y14, Y4, Y11 + VPMULLW Y14, Y5, Y12 + VPMULLW Y15, Y8, Y13 + VPMULHW Y14, Y4, Y4 + VPMULHW Y14, Y5, Y5 + VPMULHW Y15, Y8, Y8 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y10, Y12 + VPMULHW Y2, Y6, Y13 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPSUBW Y12, Y10, Y10 + VPSUBW Y13, Y6, Y6 + + // level 6 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y4, Y14 + VMOVDQA Y5, Y15 + VPADDW Y10, Y6, Y10 + VPADDW Y3, Y7, Y3 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPSUBW Y6, Y12, Y6 + VPSUBW Y7, Y13, Y7 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1440(SI), Y15 + + // mul + VPMULLW Y15, Y6, Y11 + VPMULLW Y15, Y7, Y12 + VPMULLW Y15, Y8, Y13 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y6, Y6 + VPMULHW Y15, Y7, Y7 + VPMULHW Y15, Y8, Y8 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y6, Y6 + VPSUBW Y12, Y7, Y7 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPSRAW $11, Y12, Y12 + VPMULLW Y1, Y12, Y12 + VPSUBW Y12, Y3, Y3 + + // store + VMOVDQU Y10, (DI) + VMOVDQU Y3, 32(DI) + VMOVDQU Y4, 64(DI) + VMOVDQU Y5, 96(DI) + VMOVDQU Y6, 128(DI) + VMOVDQU Y7, 160(DI) + VMOVDQU Y8, 192(DI) + VMOVDQU Y9, 224(DI) + + SUBQ $256, DI + + // f + VMOVDQU ·f_x16<>(SB), Y2 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 7 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPADDW Y6, Y10, Y6 + VPADDW Y7, Y11, Y7 + VPSUBW Y8, Y12, Y8 + VPSUBW Y9, Y13, Y9 + VPSUBW Y10, Y14, Y10 + VPSUBW Y11, Y15, Y11 + + // zeta + VMOVDQU 1472(SI), Y3 + + // mul + VPMULLW Y3, Y8, Y12 + VPMULLW Y3, Y9, Y13 + VPMULLW Y3, Y10, Y14 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y8, Y8 + VPMULHW Y3, Y9, Y9 + VPMULHW Y3, Y10, Y10 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y8 + VPSUBW Y13, Y9, Y9 + VPSUBW Y14, Y10, Y10 + VPSUBW Y15, Y11, Y11 + VPADDW Y1, Y8, Y8 + VPADDW Y1, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y11, Y11 + + // mul + VPMULLW Y2, Y4, Y12 + VPMULLW Y2, Y5, Y13 + VPMULLW Y2, Y6, Y14 + VPMULLW Y2, Y7, Y15 + VPMULHW Y2, Y4, Y4 + VPMULHW Y2, Y5, Y5 + VPMULHW Y2, Y6, Y6 + VPMULHW Y2, Y7, Y7 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y6, Y6 + VPSUBW Y15, Y7, Y7 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y5, Y5 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + ADDQ $128, DI + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // zeta + VMOVDQU 1472(SI), Y3 + + // level 7 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPADDW Y6, Y10, Y6 + VPADDW Y7, Y11, Y7 + VPSUBW Y8, Y12, Y8 + VPSUBW Y9, Y13, Y9 + VPSUBW Y10, Y14, Y10 + VPSUBW Y11, Y15, Y11 + + // mul + VPMULLW Y3, Y8, Y12 + VPMULLW Y3, Y9, Y13 + VPMULLW Y3, Y10, Y14 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y8, Y8 + VPMULHW Y3, Y9, Y9 + VPMULHW Y3, Y10, Y10 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y8 + VPSUBW Y13, Y9, Y9 + VPSUBW Y14, Y10, Y10 + VPSUBW Y15, Y11, Y11 + VPADDW Y1, Y8, Y8 + VPADDW Y1, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y11, Y11 + + // mul + VPMULLW Y2, Y4, Y12 + VPMULLW Y2, Y5, Y13 + VPMULLW Y2, Y6, Y14 + VPMULLW Y2, Y7, Y15 + VPMULHW Y2, Y4, Y4 + VPMULHW Y2, Y5, Y5 + VPMULHW Y2, Y6, Y6 + VPMULHW Y2, Y7, Y7 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y6, Y6 + VPSUBW Y15, Y7, Y7 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y5, Y5 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK2AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + + XORQ AX, AX + XORQ BX, BX + + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop2: + // load a + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU 32(SI)(BX*1), Y5 + VMOVDQU 64(SI)(BX*1), Y6 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU 32(R8)(BX*1), Y8 + VMOVDQU 64(R8)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y5, Y4 + VPMULHW Y2, Y5, Y11 + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y12 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y14 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y15 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + VPSUBW Y8, Y15, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU 32(DX)(BX*1), Y10 + VMOVDQU 64(DX)(BX*1), Y11 + VMOVDQU (R11)(BX*1), Y12 + VMOVDQU 32(R11)(BX*1), Y13 + VMOVDQU 64(R11)(BX*1), Y14 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y4, Y10, Y3 + VPMULHW Y4, Y10, Y10 + VPMULLW Y5, Y11, Y4 + VPMULHW Y5, Y11, Y11 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + VPMULLW Y7, Y13, Y6 + VPMULHW Y7, Y13, Y13 + VPMULLW Y8, Y14, Y7 + VPMULHW Y8, Y14, Y14 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y15, Y9, Y15 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + + // add + VPADDW Y15, Y5, Y5 + VPADDW Y3, Y6, Y6 + VPADDW Y4, Y7, Y7 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y5, Y8 + VPMULHW Y3, Y6, Y9 + VPMULHW Y3, Y7, Y10 + VPSRAW $11, Y8, Y8 + VPSRAW $11, Y9, Y9 + VPSRAW $11, Y10, Y10 + VPMULLW Y1, Y8, Y8 + VPMULLW Y1, Y9, Y9 + VPMULLW Y1, Y10, Y10 + VPSUBW Y8, Y5, Y5 + VPSUBW Y9, Y6, Y6 + VPSUBW Y10, Y7, Y7 + + // store + VMOVDQU Y5, (DI)(BX*1) + VMOVDQU Y6, 32(DI)(BX*1) + VMOVDQU Y7, 64(DI)(BX*1) + + ADDQ $1, AX + ADDQ $96, BX + CMPQ AX, $5 + JB looptop2 + + // load + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU (R11)(BX*1), Y12 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y6, Y6 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y6, Y6 + VPSUBW Y3, Y10, Y3 + VPSUBW Y6, Y13, Y6 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y5, Y5 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y5, Y5 + VPSUBW Y15, Y9, Y15 + VPSUBW Y5, Y12, Y5 + + // add + VPADDW Y15, Y5, Y5 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y5, Y8 + VPSRAW $11, Y8, Y8 + VPMULLW Y1, Y8, Y8 + VPSUBW Y8, Y5, Y5 + + // store + VMOVDQU Y5, (DI)(BX*1) + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK3AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + + XORQ AX, AX + XORQ BX, BX + + MOVQ (16)(SI), R9 // a[2] + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 16(DX), R12 // b[2] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop3: + // load a + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU 32(SI)(BX*1), Y5 + VMOVDQU (R8)(BX*1), Y6 + VMOVDQU 32(R8)(BX*1), Y7 + VMOVDQU (R9)(BX*1), Y8 + VMOVDQU 32(R9)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y5, Y4 + VPMULHW Y2, Y5, Y11 + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y12 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y14 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y15 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + VPSUBW Y8, Y15, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU 32(DX)(BX*1), Y10 + VMOVDQU (R11)(BX*1), Y11 + VMOVDQU 32(R11)(BX*1), Y12 + VMOVDQU (R12)(BX*1), Y13 + VMOVDQU 32(R12)(BX*1), Y14 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y4, Y10, Y3 + VPMULHW Y4, Y10, Y10 + VPMULLW Y5, Y11, Y4 + VPMULHW Y5, Y11, Y11 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + VPMULLW Y7, Y13, Y6 + VPMULHW Y7, Y13, Y13 + VPMULLW Y8, Y14, Y7 + VPMULHW Y8, Y14, Y14 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y15, Y9, Y15 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + + // add + VPADDW Y15, Y4, Y4 + VPADDW Y3, Y5, Y5 + VPADDW Y4, Y6, Y6 + VPADDW Y5, Y7, Y7 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y6, Y8 + VPMULHW Y3, Y7, Y9 + VPSRAW $11, Y8, Y8 + VPSRAW $11, Y9, Y9 + VPMULLW Y1, Y8, Y8 + VPMULLW Y1, Y9, Y9 + VPSUBW Y8, Y6, Y6 + VPSUBW Y9, Y7, Y7 + + // store + VMOVDQU Y6, (DI)(BX*1) + VMOVDQU Y7, 32(DI)(BX*1) + + ADDQ $1, AX + ADDQ $64, BX + CMPQ AX, $8 + JB looptop3 + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK4AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + VMOVDQU ·v_x16<>(SB), Y3 + + XORQ AX, AX + XORQ BX, BX + + MOVQ 24(SI), R10 // a[3] + MOVQ 16(SI), R9 // a[2] + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 24(DX), R13 // b[3] + MOVQ 16(DX), R12 // b[2] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop4: + // load a + VMOVDQU (SI)(BX*1), Y6 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU (R9)(BX*1), Y8 + VMOVDQU (R10)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y10 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y11 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y12 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y13 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y5, Y10, Y5 + VPSUBW Y6, Y11, Y6 + VPSUBW Y7, Y12, Y7 + VPSUBW Y8, Y13, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU (R11)(BX*1), Y10 + VMOVDQU (R12)(BX*1), Y11 + VMOVDQU (R13)(BX*1), Y12 + + // mul + VPMULLW Y5, Y9, Y4 + VPMULHW Y5, Y9, Y9 + VPMULLW Y6, Y10, Y5 + VPMULHW Y6, Y10, Y10 + VPMULLW Y7, Y11, Y6 + VPMULHW Y7, Y11, Y11 + VPMULLW Y8, Y12, Y7 + VPMULHW Y8, Y12, Y12 + + // reduce + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y4, Y9, Y4 + VPSUBW Y5, Y10, Y5 + VPSUBW Y6, Y11, Y6 + VPSUBW Y7, Y12, Y7 + + // add + VPADDW Y4, Y5, Y5 + VPADDW Y5, Y6, Y6 + VPADDW Y6, Y7, Y7 + + // reduce 2 + VPMULHW Y3, Y7, Y8 + VPSRAW $11, Y8, Y8 + VPMULLW Y1, Y8, Y8 + VPSUBW Y8, Y7, Y8 + + // store + VMOVDQU Y8, (DI)(BX*1) + + ADDQ $1, AX + ADDQ $32, BX + CMPQ AX, $16 + JB looptop4 + + VZEROUPPER + RET + +// func cbdEta4AVX2(dst *uint16, b *byte) +TEXT ·cbdEta4AVX2(SB), NOSPLIT, $0-16 + MOVQ dst+0(FP), DI + MOVQ b+8(FP), SI + + VMOVDQU ·mask11<>(SB), Y0 + VMOVDQU ·mask0f<>(SB), Y1 + VMOVDQU ·q_x16<>(SB), Y2 + + MOVQ $256, DX + +looptop: + VMOVUPD 0(SI), Y3 + VPAND Y3, Y0, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y5 + VPADDB Y5, Y4, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y5 + VPADDB Y5, Y4, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y3 + VPADDB Y3, Y4, Y3 + VPSRLW $4, Y3, Y4 + VPAND Y3, Y1, Y3 + VPAND Y4, Y1, Y4 + VPSUBB Y4, Y3, Y3 + VPMOVSXBW X3, Y4 + VPADDW Y2, Y4, Y4 + VMOVUPD Y4, 0(DI) + VPERM2F128 $0x21, Y3, Y3, Y3 + VPMOVSXBW X3, Y4 + VPADDW Y2, Y4, Y4 + VMOVUPD Y4, 32(DI) + + ADDQ $64, DI + ADDQ $32, SI + SUBQ $32, DX + JA looptop + + VZEROUPPER + RET diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go new file mode 100644 index 0000000..4b58010 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go @@ -0,0 +1,14 @@ +// hwaccel_ref.go - Unaccelerated stubs. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build !amd64 gccgo noasm !go1.10 + +package kyber + +func initHardwareAcceleration() { + forceDisableHardwareAcceleration() +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go b/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go new file mode 100644 index 0000000..5c4186f --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go @@ -0,0 +1,279 @@ +// indcpa.go - Kyber IND-CPA encryption. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +// Serialize the public key as concatenation of the compressed and serialized +// vector of polynomials pk and the public seed used to generate the matrix A. +func packPublicKey(r []byte, pk *polyVec, seed []byte) { + pk.compress(r) + copy(r[pk.compressedSize():], seed[:SymSize]) +} + +// De-serialize and decompress public key from a byte array; approximate +// inverse of packPublicKey. +func unpackPublicKey(pk *polyVec, seed, packedPk []byte) { + pk.decompress(packedPk) + + off := pk.compressedSize() + copy(seed, packedPk[off:off+SymSize]) +} + +// Serialize the ciphertext as concatenation of the compressed and serialized +// vector of polynomials b and the compressed and serialized polynomial v. +func packCiphertext(r []byte, b *polyVec, v *poly) { + b.compress(r) + v.compress(r[b.compressedSize():]) +} + +// De-serialize and decompress ciphertext from a byte array; approximate +// inverse of packCiphertext. +func unpackCiphertext(b *polyVec, v *poly, c []byte) { + b.decompress(c) + v.decompress(c[b.compressedSize():]) +} + +// Serialize the secret key. +func packSecretKey(r []byte, sk *polyVec) { + sk.toBytes(r) +} + +// De-serialize the secret key; inverse of packSecretKey. +func unpackSecretKey(sk *polyVec, packedSk []byte) { + sk.fromBytes(packedSk) +} + +// Deterministically generate matrix A (or the transpose of A) from a seed. +// Entries of the matrix are polynomials that look uniformly random. Performs +// rejection sampling on output of SHAKE-128. +func genMatrix(a []polyVec, seed []byte, transposed bool) { + const ( + shake128Rate = 168 // xof.BlockSize() is not a constant. + maxBlocks = 4 + ) + var buf [shake128Rate * maxBlocks]byte + + var extSeed [SymSize + 2]byte + copy(extSeed[:SymSize], seed) + + xof := sha3.NewShake128() + + for i, v := range a { + for j, p := range v.vec { + if transposed { + extSeed[SymSize] = byte(i) + extSeed[SymSize+1] = byte(j) + } else { + extSeed[SymSize] = byte(j) + extSeed[SymSize+1] = byte(i) + } + + xof.Write(extSeed[:]) + xof.Read(buf[:]) + + for ctr, pos, maxPos := 0, 0, len(buf); ctr < kyberN; { + val := (uint16(buf[pos]) | (uint16(buf[pos+1]) << 8)) & 0x1fff + if val < kyberQ { + p.coeffs[ctr] = val + ctr++ + } + if pos += 2; pos == maxPos { + // On the unlikely chance 4 blocks is insufficient, + // incrementally squeeze out 1 block at a time. + xof.Read(buf[:shake128Rate]) + pos, maxPos = 0, shake128Rate + } + } + + xof.Reset() + } + } +} + +type indcpaPublicKey struct { + packed []byte + h [32]byte +} + +func (pk *indcpaPublicKey) toBytes() []byte { + return pk.packed +} + +func (pk *indcpaPublicKey) fromBytes(p *ParameterSet, b []byte) error { + if len(b) != p.indcpaPublicKeySize { + return ErrInvalidKeySize + } + + pk.packed = make([]byte, len(b)) + copy(pk.packed, b) + pk.h = sha3.Sum256(b) + + return nil +} + +type indcpaSecretKey struct { + packed []byte +} + +func (sk *indcpaSecretKey) fromBytes(p *ParameterSet, b []byte) error { + if len(b) != p.indcpaSecretKeySize { + return ErrInvalidKeySize + } + + sk.packed = make([]byte, len(b)) + copy(sk.packed, b) + + return nil +} + +// Generates public and private key for the CPA-secure public-key encryption +// scheme underlying Kyber. +func (p *ParameterSet) indcpaKeyPair(rng io.Reader) (*indcpaPublicKey, *indcpaSecretKey, error) { + buf := make([]byte, SymSize+SymSize) + if _, err := io.ReadFull(rng, buf[:SymSize]); err != nil { + return nil, nil, err + } + + sk := &indcpaSecretKey{ + packed: make([]byte, p.indcpaSecretKeySize), + } + pk := &indcpaPublicKey{ + packed: make([]byte, p.indcpaPublicKeySize), + } + + h := sha3.New512() + h.Write(buf[:SymSize]) + buf = buf[:0] // Reuse the backing store. + buf = h.Sum(buf) + publicSeed, noiseSeed := buf[:SymSize], buf[SymSize:] + + a := p.allocMatrix() + genMatrix(a, publicSeed, false) + + var nonce byte + skpv := p.allocPolyVec() + for _, pv := range skpv.vec { + pv.getNoise(noiseSeed, nonce, p.eta) + nonce++ + } + + skpv.ntt() + + e := p.allocPolyVec() + for _, pv := range e.vec { + pv.getNoise(noiseSeed, nonce, p.eta) + nonce++ + } + + // matrix-vector multiplication + pkpv := p.allocPolyVec() + for i, pv := range pkpv.vec { + pv.pointwiseAcc(&skpv, &a[i]) + } + + pkpv.invntt() + pkpv.add(&pkpv, &e) + + packSecretKey(sk.packed, &skpv) + packPublicKey(pk.packed, &pkpv, publicSeed) + pk.h = sha3.Sum256(pk.packed) + + return pk, sk, nil +} + +// Encryption function of the CPA-secure public-key encryption scheme +// underlying Kyber. +func (p *ParameterSet) indcpaEncrypt(c, m []byte, pk *indcpaPublicKey, coins []byte) { + var k, v, epp poly + var seed [SymSize]byte + + pkpv := p.allocPolyVec() + unpackPublicKey(&pkpv, seed[:], pk.packed) + + k.fromMsg(m) + + pkpv.ntt() + + at := p.allocMatrix() + genMatrix(at, seed[:], true) + + var nonce byte + sp := p.allocPolyVec() + for _, pv := range sp.vec { + pv.getNoise(coins, nonce, p.eta) + nonce++ + } + + sp.ntt() + + ep := p.allocPolyVec() + for _, pv := range ep.vec { + pv.getNoise(coins, nonce, p.eta) + nonce++ + } + + // matrix-vector multiplication + bp := p.allocPolyVec() + for i, pv := range bp.vec { + pv.pointwiseAcc(&sp, &at[i]) + } + + bp.invntt() + bp.add(&bp, &ep) + + v.pointwiseAcc(&pkpv, &sp) + v.invntt() + + epp.getNoise(coins, nonce, p.eta) // Don't need to increment nonce. + + v.add(&v, &epp) + v.add(&v, &k) + + packCiphertext(c, &bp, &v) +} + +// Decryption function of the CPA-secure public-key encryption scheme +// underlying Kyber. +func (p *ParameterSet) indcpaDecrypt(m, c []byte, sk *indcpaSecretKey) { + var v, mp poly + + skpv, bp := p.allocPolyVec(), p.allocPolyVec() + unpackCiphertext(&bp, &v, c) + unpackSecretKey(&skpv, sk.packed) + + bp.ntt() + + mp.pointwiseAcc(&skpv, &bp) + mp.invntt() + + mp.sub(&mp, &v) + + mp.toMsg(m) +} + +func (p *ParameterSet) allocMatrix() []polyVec { + m := make([]polyVec, 0, p.k) + for i := 0; i < p.k; i++ { + m = append(m, p.allocPolyVec()) + } + return m +} + +func (p *ParameterSet) allocPolyVec() polyVec { + vec := make([]*poly, 0, p.k) + for i := 0; i < p.k; i++ { + vec = append(vec, new(poly)) + } + + return polyVec{vec} +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go b/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go new file mode 100644 index 0000000..363040c --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go @@ -0,0 +1,187 @@ +// kem.go - Kyber key encapsulation mechanism. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "bytes" + "crypto/subtle" + "errors" + "io" + + "golang.org/x/crypto/sha3" +) + +var ( + // ErrInvalidKeySize is the error returned when a byte serailized key is + // an invalid size. + ErrInvalidKeySize = errors.New("kyber: invalid key size") + + // ErrInvalidCipherTextSize is the error thrown via a panic when a byte + // serialized ciphertext is an invalid size. + ErrInvalidCipherTextSize = errors.New("kyber: invalid ciphertext size") + + // ErrInvalidPrivateKey is the error returned when a byte serialized + // private key is malformed. + ErrInvalidPrivateKey = errors.New("kyber: invalid private key") +) + +// PrivateKey is a Kyber private key. +type PrivateKey struct { + PublicKey + sk *indcpaSecretKey + z []byte +} + +// Bytes returns the byte serialization of a PrivateKey. +func (sk *PrivateKey) Bytes() []byte { + p := sk.PublicKey.p + + b := make([]byte, 0, p.secretKeySize) + b = append(b, sk.sk.packed...) + b = append(b, sk.PublicKey.pk.packed...) + b = append(b, sk.PublicKey.pk.h[:]...) + b = append(b, sk.z...) + + return b +} + +// PrivateKeyFromBytes deserializes a byte serialized PrivateKey. +func (p *ParameterSet) PrivateKeyFromBytes(b []byte) (*PrivateKey, error) { + if len(b) != p.secretKeySize { + return nil, ErrInvalidKeySize + } + + sk := new(PrivateKey) + sk.sk = new(indcpaSecretKey) + sk.z = make([]byte, SymSize) + sk.PublicKey.pk = new(indcpaPublicKey) + sk.PublicKey.p = p + + // De-serialize the public key first. + off := p.indcpaSecretKeySize + if err := sk.PublicKey.pk.fromBytes(p, b[off:off+p.publicKeySize]); err != nil { + return nil, err + } + off += p.publicKeySize + if !bytes.Equal(sk.PublicKey.pk.h[:], b[off:off+SymSize]) { + return nil, ErrInvalidPrivateKey + } + off += SymSize + copy(sk.z, b[off:]) + + // Then go back to de-serialize the private key. + if err := sk.sk.fromBytes(p, b[:p.indcpaSecretKeySize]); err != nil { + return nil, err + } + + return sk, nil +} + +// PublicKey is a Kyber public key. +type PublicKey struct { + pk *indcpaPublicKey + p *ParameterSet +} + +// Bytes returns the byte serialization of a PublicKey. +func (pk *PublicKey) Bytes() []byte { + return pk.pk.toBytes() +} + +// PublicKeyFromBytes deserializes a byte serialized PublicKey. +func (p *ParameterSet) PublicKeyFromBytes(b []byte) (*PublicKey, error) { + pk := &PublicKey{ + pk: new(indcpaPublicKey), + p: p, + } + + if err := pk.pk.fromBytes(p, b); err != nil { + return nil, err + } + + return pk, nil +} + +// GenerateKeyPair generates a private and public key parameterized with the +// given ParameterSet. +func (p *ParameterSet) GenerateKeyPair(rng io.Reader) (*PublicKey, *PrivateKey, error) { + kp := new(PrivateKey) + + var err error + if kp.PublicKey.pk, kp.sk, err = p.indcpaKeyPair(rng); err != nil { + return nil, nil, err + } + + kp.PublicKey.p = p + kp.z = make([]byte, SymSize) + if _, err := io.ReadFull(rng, kp.z); err != nil { + return nil, nil, err + } + + return &kp.PublicKey, kp, nil +} + +// KEMEncrypt generates cipher text and shared secret via the CCA-secure Kyber +// key encapsulation mechanism. +func (pk *PublicKey) KEMEncrypt(rng io.Reader) (cipherText []byte, sharedSecret []byte, err error) { + var buf [SymSize]byte + if _, err = io.ReadFull(rng, buf[:]); err != nil { + return nil, nil, err + } + buf = sha3.Sum256(buf[:]) // Don't release system RNG output + + hKr := sha3.New512() + hKr.Write(buf[:]) + hKr.Write(pk.pk.h[:]) // Multitarget countermeasures for coins + contributory KEM + kr := hKr.Sum(nil) + + cipherText = make([]byte, pk.p.cipherTextSize) + pk.p.indcpaEncrypt(cipherText, buf[:], pk.pk, kr[SymSize:]) // coins are in kr[SymSize:] + + hc := sha3.Sum256(cipherText) + copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) + hSs := sha3.New256() + hSs.Write(kr) + sharedSecret = hSs.Sum(nil) // hash concatenation of pre-k and H(c) to k + + return +} + +// KEMDecrypt generates shared secret for given cipher text via the CCA-secure +// Kyber key encapsulation mechanism. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (sk *PrivateKey) KEMDecrypt(cipherText []byte) (sharedSecret []byte) { + var buf [2 * SymSize]byte + + p := sk.PublicKey.p + if len(cipherText) != p.CipherTextSize() { + panic(ErrInvalidCipherTextSize) + } + p.indcpaDecrypt(buf[:SymSize], cipherText, sk.sk) + + copy(buf[SymSize:], sk.PublicKey.pk.h[:]) // Multitarget countermeasure for coins + contributory KEM + kr := sha3.Sum512(buf[:]) + + cmp := make([]byte, p.cipherTextSize) + p.indcpaEncrypt(cmp, buf[:SymSize], sk.PublicKey.pk, kr[SymSize:]) // coins are in kr[SymSize:] + + hc := sha3.Sum256(cipherText) + copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) + + fail := subtle.ConstantTimeSelect(subtle.ConstantTimeCompare(cipherText, cmp), 0, 1) + subtle.ConstantTimeCopy(fail, kr[SymSize:], sk.z) // Overwrite pre-k with z on re-encryption failure + + h := sha3.New256() + h.Write(kr[:]) + sharedSecret = h.Sum(nil) + + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go b/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go new file mode 100644 index 0000000..f6b56c1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go @@ -0,0 +1,249 @@ +// kex.go - Kyber key exchange. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "errors" + "io" + + "golang.org/x/crypto/sha3" +) + +var ( + // ErrInvalidMessageSize is the error thrown via a panic when a initator + // or responder message is an invalid size. + ErrInvalidMessageSize = errors.New("kyber: invalid message size") + + // ErrParameterSetMismatch is the error thrown via a panic when there + // is a mismatch between parameter sets. + ErrParameterSetMismatch = errors.New("kyber: parameter set mismatch") +) + +// UAKEInitiatorMessageSize returns the size of the initiator UAKE message +// in bytes. +func (p *ParameterSet) UAKEInitiatorMessageSize() int { + return p.PublicKeySize() + p.CipherTextSize() +} + +// UAKEResponderMessageSize returns the size of the responder UAKE message +// in bytes. +func (p *ParameterSet) UAKEResponderMessageSize() int { + return p.CipherTextSize() +} + +// UAKEInitiatorState is a initiator UAKE instance. Each instance MUST only +// be used for one key exchange and never reused. +type UAKEInitiatorState struct { + // Message is the UAKE message to send to the responder. + Message []byte + + eSk *PrivateKey + tk []byte +} + +// Shared generates a shared secret for the given UAKE instance and responder +// message. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (s *UAKEInitiatorState) Shared(recv []byte) (sharedSecret []byte) { + xof := sha3.NewShake256() + var tk []byte + + tk = s.eSk.KEMDecrypt(recv) + xof.Write(tk) + xof.Write(s.tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// NewUAKEInitiatorState creates a new initiator UAKE instance. +func (pk *PublicKey) NewUAKEInitiatorState(rng io.Reader) (*UAKEInitiatorState, error) { + s := new(UAKEInitiatorState) + s.Message = make([]byte, 0, pk.p.UAKEInitiatorMessageSize()) + + var err error + _, s.eSk, err = pk.p.GenerateKeyPair(rng) + if err != nil { + return nil, err + } + s.Message = append(s.Message, s.eSk.PublicKey.Bytes()...) + + var ct []byte + ct, s.tk, err = pk.KEMEncrypt(rng) + if err != nil { + return nil, err + } + + s.Message = append(s.Message, ct...) + + return s, nil +} + +// UAKEResponderShared generates a responder message and shared secret given +// a initiator UAKE message. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (sk *PrivateKey) UAKEResponderShared(rng io.Reader, recv []byte) (message, sharedSecret []byte) { + p := sk.PublicKey.p + pkLen := p.PublicKeySize() + + // Deserialize the peer's ephemeral public key. + if len(recv) != p.UAKEInitiatorMessageSize() { + panic(ErrInvalidMessageSize) + } + rawPk, ct := recv[:pkLen], recv[pkLen:] + pk, err := p.PublicKeyFromBytes(rawPk) + if err != nil { + panic(err) + } + + xof := sha3.NewShake256() + var tk []byte + + message, tk, err = pk.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + + tk = sk.KEMDecrypt(ct) + xof.Write(tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// AKEInitiatorMessageSize returns the size of the initiator AKE message +// in bytes. +func (p *ParameterSet) AKEInitiatorMessageSize() int { + return p.PublicKeySize() + p.CipherTextSize() +} + +// AKEResponderMessageSize returns the size of the responder AKE message +// in bytes. +func (p *ParameterSet) AKEResponderMessageSize() int { + return 2 * p.CipherTextSize() +} + +// AKEInitiatorState is a initiator AKE instance. Each instance MUST only be +// used for one key exchange and never reused. +type AKEInitiatorState struct { + // Message is the AKE message to send to the responder. + Message []byte + + eSk *PrivateKey + tk []byte +} + +// Shared generates a shared secret for the given AKE instance, responder +// message, and long term initiator private key. +// +// On failures sharedSecret will contain a randomized value. Providing a +// malformed responder message, or a private key that uses a different +// ParamterSet than the AKEInitiatorState will result in a panic. +func (s *AKEInitiatorState) Shared(recv []byte, initiatorPrivateKey *PrivateKey) (sharedSecret []byte) { + p := s.eSk.PublicKey.p + + if initiatorPrivateKey.PublicKey.p != p { + panic(ErrParameterSetMismatch) + } + if len(recv) != p.AKEResponderMessageSize() { + panic(ErrInvalidMessageSize) + } + ctLen := p.CipherTextSize() + + xof := sha3.NewShake256() + var tk []byte + + tk = s.eSk.KEMDecrypt(recv[:ctLen]) + xof.Write(tk) + + tk = initiatorPrivateKey.KEMDecrypt(recv[ctLen:]) + xof.Write(tk) + + xof.Write(s.tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// NewAKEInitiatorState creates a new initiator AKE instance. +func (pk *PublicKey) NewAKEInitiatorState(rng io.Reader) (*AKEInitiatorState, error) { + s := new(AKEInitiatorState) + + // This is identical to the UAKE case, so just reuse the code. + us, err := pk.NewUAKEInitiatorState(rng) + if err != nil { + return nil, err + } + + s.Message = us.Message + s.eSk = us.eSk + s.tk = us.tk + + return s, nil +} + +// AKEResponderShared generates a responder message and shared secret given +// a initiator AKE message and long term initiator public key. +// +// On failures sharedSecret will contain a randomized value. Providing a +// malformed responder message, or a private key that uses a different +// ParamterSet than the AKEInitiatorState will result in a panic. +func (sk *PrivateKey) AKEResponderShared(rng io.Reader, recv []byte, peerPublicKey *PublicKey) (message, sharedSecret []byte) { + p := sk.PublicKey.p + pkLen := p.PublicKeySize() + + if peerPublicKey.p != p { + panic(ErrParameterSetMismatch) + } + + // Deserialize the peer's ephemeral public key. + if len(recv) != p.AKEInitiatorMessageSize() { + panic(ErrInvalidMessageSize) + } + rawPk, ct := recv[:pkLen], recv[pkLen:] + pk, err := p.PublicKeyFromBytes(rawPk) + if err != nil { + panic(err) + } + + message = make([]byte, 0, p.AKEResponderMessageSize()) + + xof := sha3.NewShake256() + var tk, tmp []byte + + tmp, tk, err = pk.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + message = append(message, tmp...) + + tmp, tk, err = peerPublicKey.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + message = append(message, tmp...) + + tk = sk.KEMDecrypt(ct) + xof.Write(tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go b/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go new file mode 100644 index 0000000..5fb9580 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go @@ -0,0 +1,65 @@ +// ntt.go - Number-Theoretic Transform. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Computes negacyclic number-theoretic transform (NTT) of a polynomial (vector +// of 256 coefficients) in place; inputs assumed to be in normal order, output +// in bitreversed order. +func nttRef(p *[kyberN]uint16) { + var j int + k := 1 + for level := 7; level >= 0; level-- { + distance := 1 << uint(level) + for start := 0; start < kyberN; start = j + distance { + zeta := zetas[k] + k++ + for j = start; j < start+distance; j++ { + t := montgomeryReduce(uint32(zeta) * uint32(p[j+distance])) + p[j+distance] = barrettReduce(p[j] + 4*kyberQ - t) + + if level&1 == 1 { // odd level + p[j] = p[j] + t // Omit reduction (be lazy) + } else { + p[j] = barrettReduce(p[j] + t) + } + } + } + } +} + +// Computes inverse of negacyclic number-theoretic transform (NTT) of a +// polynomial (vector of 256 coefficients) in place; inputs assumed to be in +// bitreversed order, output in normal order. +func invnttRef(a *[kyberN]uint16) { + for level := 0; level < 8; level++ { + distance := 1 << uint(level) + for start := 0; start < distance; start++ { + var jTwiddle int + for j := start; j < kyberN-1; j += 2 * distance { + w := uint32(omegasInvBitrevMontgomery[jTwiddle]) + jTwiddle++ + + temp := a[j] + + if level&1 == 1 { // odd level + a[j] = barrettReduce(temp + a[j+distance]) + } else { + a[j] = temp + a[j+distance] // Omit reduction (be lazy) + } + + t := w * (uint32(temp) + 4*kyberQ - uint32(a[j+distance])) + + a[j+distance] = montgomeryReduce(t) + } + } + } + + for i, v := range psisInvMontgomery { + a[i] = montgomeryReduce(uint32(a[i]) * uint32(v)) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/params.go b/vendor/git.schwanenlied.me/yawning/kyber.git/params.go new file mode 100644 index 0000000..32bcabd --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/params.go @@ -0,0 +1,116 @@ +// params.go - Kyber parameterization. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +const ( + // SymSize is the size of the shared key (and certain internal parameters + // such as hashes and seeds) in bytes. + SymSize = 32 + + kyberN = 256 + kyberQ = 7681 + + polySize = 416 + polyCompressedSize = 96 + + compressedCoeffSize = 352 +) + +var ( + // Kyber512 is the Kyber-512 parameter set, which aims to provide security + // equivalent to AES-128. + // + // This parameter set has a 1632 byte private key, 736 byte public key, + // and a 800 byte cipher text. + Kyber512 = newParameterSet("Kyber-512", 2) + + // Kyber768 is the Kyber-768 parameter set, which aims to provide security + // equivalent to AES-192. + // + // This parameter set has a 2400 byte private key, 1088 byte public key, + // and a 1152 byte cipher text. + Kyber768 = newParameterSet("Kyber-768", 3) + + // Kyber1024 is the Kyber-1024 parameter set, which aims to provide + // security equivalent to AES-256. + // + // This parameter set has a 3168 byte private key, 1440 byte public key, + // and a 1504 byte cipher text. + Kyber1024 = newParameterSet("Kyber-1024", 4) +) + +// ParameterSet is a Kyber parameter set. +type ParameterSet struct { + name string + + k int + eta int + + polyVecSize int + polyVecCompressedSize int + + indcpaMsgSize int + indcpaPublicKeySize int + indcpaSecretKeySize int + indcpaSize int + + publicKeySize int + secretKeySize int + cipherTextSize int +} + +// Name returns the name of a given ParameterSet. +func (p *ParameterSet) Name() string { + return p.name +} + +// PublicKeySize returns the size of a public key in bytes. +func (p *ParameterSet) PublicKeySize() int { + return p.publicKeySize +} + +// PrivateKeySize returns the size of a private key in bytes. +func (p *ParameterSet) PrivateKeySize() int { + return p.secretKeySize +} + +// CipherTextSize returns the size of a cipher text in bytes. +func (p *ParameterSet) CipherTextSize() int { + return p.cipherTextSize +} + +func newParameterSet(name string, k int) *ParameterSet { + var p ParameterSet + + p.name = name + p.k = k + switch k { + case 2: + p.eta = 5 + case 3: + p.eta = 4 + case 4: + p.eta = 3 + default: + panic("kyber: k must be in {2,3,4}") + } + + p.polyVecSize = k * polySize + p.polyVecCompressedSize = k * compressedCoeffSize + + p.indcpaMsgSize = SymSize + p.indcpaPublicKeySize = p.polyVecCompressedSize + SymSize + p.indcpaSecretKeySize = p.polyVecSize + p.indcpaSize = p.polyVecCompressedSize + polyCompressedSize + + p.publicKeySize = p.indcpaPublicKeySize + p.secretKeySize = p.indcpaSecretKeySize + p.indcpaPublicKeySize + 2*SymSize // 32 bytes of additional space to save H(pk) + p.cipherTextSize = p.indcpaSize + + return &p +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go b/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go new file mode 100644 index 0000000..85f27b1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go @@ -0,0 +1,146 @@ +// poly.go - Kyber polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import "golang.org/x/crypto/sha3" + +// Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial coeffs[0] + +// X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1]. +type poly struct { + coeffs [kyberN]uint16 +} + +// Compression and subsequent serialization of a polynomial. +func (p *poly) compress(r []byte) { + var t [8]uint32 + + for i, k := 0, 0; i < kyberN; i, k = i+8, k+3 { + for j := 0; j < 8; j++ { + t[j] = uint32((((freeze(p.coeffs[i+j]) << 3) + kyberQ/2) / kyberQ) & 7) + } + + r[k] = byte(t[0] | (t[1] << 3) | (t[2] << 6)) + r[k+1] = byte((t[2] >> 2) | (t[3] << 1) | (t[4] << 4) | (t[5] << 7)) + r[k+2] = byte((t[5] >> 1) | (t[6] << 2) | (t[7] << 5)) + } +} + +// De-serialization and subsequent decompression of a polynomial; approximate +// inverse of poly.compress(). +func (p *poly) decompress(a []byte) { + for i, off := 0, 0; i < kyberN; i, off = i+8, off+3 { + p.coeffs[i+0] = ((uint16(a[off]&7) * kyberQ) + 4) >> 3 + p.coeffs[i+1] = (((uint16(a[off]>>3) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+2] = (((uint16(a[off]>>6) | (uint16(a[off+1]<<2) & 4)) * kyberQ) + 4) >> 3 + p.coeffs[i+3] = (((uint16(a[off+1]>>1) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+4] = (((uint16(a[off+1]>>4) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+5] = (((uint16(a[off+1]>>7) | (uint16(a[off+2]<<1) & 6)) * kyberQ) + 4) >> 3 + p.coeffs[i+6] = (((uint16(a[off+2]>>2) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+7] = (((uint16(a[off+2] >> 5)) * kyberQ) + 4) >> 3 + } +} + +// Serialization of a polynomial. +func (p *poly) toBytes(r []byte) { + var t [8]uint16 + + for i := 0; i < kyberN/8; i++ { + for j := 0; j < 8; j++ { + t[j] = freeze(p.coeffs[8*i+j]) + } + + r[13*i+0] = byte(t[0] & 0xff) + r[13*i+1] = byte((t[0] >> 8) | ((t[1] & 0x07) << 5)) + r[13*i+2] = byte((t[1] >> 3) & 0xff) + r[13*i+3] = byte((t[1] >> 11) | ((t[2] & 0x3f) << 2)) + r[13*i+4] = byte((t[2] >> 6) | ((t[3] & 0x01) << 7)) + r[13*i+5] = byte((t[3] >> 1) & 0xff) + r[13*i+6] = byte((t[3] >> 9) | ((t[4] & 0x0f) << 4)) + r[13*i+7] = byte((t[4] >> 4) & 0xff) + r[13*i+8] = byte((t[4] >> 12) | ((t[5] & 0x7f) << 1)) + r[13*i+9] = byte((t[5] >> 7) | ((t[6] & 0x03) << 6)) + r[13*i+10] = byte((t[6] >> 2) & 0xff) + r[13*i+11] = byte((t[6] >> 10) | ((t[7] & 0x1f) << 3)) + r[13*i+12] = byte(t[7] >> 5) + } +} + +// De-serialization of a polynomial; inverse of poly.toBytes(). +func (p *poly) fromBytes(a []byte) { + for i := 0; i < kyberN/8; i++ { + p.coeffs[8*i+0] = uint16(a[13*i+0]) | ((uint16(a[13*i+1]) & 0x1f) << 8) + p.coeffs[8*i+1] = (uint16(a[13*i+1]) >> 5) | (uint16(a[13*i+2]) << 3) | ((uint16(a[13*i+3]) & 0x03) << 11) + p.coeffs[8*i+2] = (uint16(a[13*i+3]) >> 2) | ((uint16(a[13*i+4]) & 0x7f) << 6) + p.coeffs[8*i+3] = (uint16(a[13*i+4]) >> 7) | (uint16(a[13*i+5]) << 1) | ((uint16(a[13*i+6]) & 0x0f) << 9) + p.coeffs[8*i+4] = (uint16(a[13*i+6]) >> 4) | (uint16(a[13*i+7]) << 4) | ((uint16(a[13*i+8]) & 0x01) << 12) + p.coeffs[8*i+5] = (uint16(a[13*i+8]) >> 1) | ((uint16(a[13*i+9]) & 0x3f) << 7) + p.coeffs[8*i+6] = (uint16(a[13*i+9]) >> 6) | (uint16(a[13*i+10]) << 2) | ((uint16(a[13*i+11]) & 0x07) << 10) + p.coeffs[8*i+7] = (uint16(a[13*i+11]) >> 3) | (uint16(a[13*i+12]) << 5) + } +} + +// Convert 32-byte message to polynomial. +func (p *poly) fromMsg(msg []byte) { + for i, v := range msg[:SymSize] { + for j := 0; j < 8; j++ { + mask := -((uint16(v) >> uint(j)) & 1) + p.coeffs[8*i+j] = mask & ((kyberQ + 1) / 2) + } + } +} + +// Convert polynomial to 32-byte message. +func (p *poly) toMsg(msg []byte) { + for i := 0; i < SymSize; i++ { + msg[i] = 0 + for j := 0; j < 8; j++ { + t := (((freeze(p.coeffs[8*i+j]) << 1) + kyberQ/2) / kyberQ) & 1 + msg[i] |= byte(t << uint(j)) + } + } +} + +// Sample a polynomial deterministically from a seed and a nonce, with output +// polynomial close to centered binomial distribution with parameter eta. +func (p *poly) getNoise(seed []byte, nonce byte, eta int) { + extSeed := make([]byte, 0, SymSize+1) + extSeed = append(extSeed, seed...) + extSeed = append(extSeed, nonce) + + buf := make([]byte, eta*kyberN/4) + sha3.ShakeSum256(buf, extSeed) + + p.cbd(buf, eta) +} + +// Computes negacyclic number-theoretic transform (NTT) of a polynomial in +// place; inputs assumed to be in normal order, output in bitreversed order. +func (p *poly) ntt() { + hardwareAccelImpl.nttFn(&p.coeffs) +} + +// Computes inverse of negacyclic number-theoretic transform (NTT) of a +// polynomial in place; inputs assumed to be in bitreversed order, output in +// normal order. +func (p *poly) invntt() { + hardwareAccelImpl.invnttFn(&p.coeffs) +} + +// Add two polynomials. +func (p *poly) add(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) + } +} + +// Subtract two polynomials. +func (p *poly) sub(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*kyberQ - b.coeffs[i]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go b/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go new file mode 100644 index 0000000..f4c4b4a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go @@ -0,0 +1,115 @@ +// polyvec.go - Vector of Kyber polynomials. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +type polyVec struct { + vec []*poly +} + +// Compress and serialize vector of polynomials. +func (v *polyVec) compress(r []byte) { + var off int + for _, vec := range v.vec { + for j := 0; j < kyberN/8; j++ { + var t [8]uint16 + for k := 0; k < 8; k++ { + t[k] = uint16((((uint32(freeze(vec.coeffs[8*j+k])) << 11) + kyberQ/2) / kyberQ) & 0x7ff) + } + + r[off+11*j+0] = byte(t[0] & 0xff) + r[off+11*j+1] = byte((t[0] >> 8) | ((t[1] & 0x1f) << 3)) + r[off+11*j+2] = byte((t[1] >> 5) | ((t[2] & 0x03) << 6)) + r[off+11*j+3] = byte((t[2] >> 2) & 0xff) + r[off+11*j+4] = byte((t[2] >> 10) | ((t[3] & 0x7f) << 1)) + r[off+11*j+5] = byte((t[3] >> 7) | ((t[4] & 0x0f) << 4)) + r[off+11*j+6] = byte((t[4] >> 4) | ((t[5] & 0x01) << 7)) + r[off+11*j+7] = byte((t[5] >> 1) & 0xff) + r[off+11*j+8] = byte((t[5] >> 9) | ((t[6] & 0x3f) << 2)) + r[off+11*j+9] = byte((t[6] >> 6) | ((t[7] & 0x07) << 5)) + r[off+11*j+10] = byte((t[7] >> 3)) + } + off += compressedCoeffSize + } +} + +// De-serialize and decompress vector of polynomials; approximate inverse of +// polyVec.compress(). +func (v *polyVec) decompress(a []byte) { + var off int + for _, vec := range v.vec { + for j := 0; j < kyberN/8; j++ { + vec.coeffs[8*j+0] = uint16((((uint32(a[off+11*j+0]) | ((uint32(a[off+11*j+1]) & 0x07) << 8)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+1] = uint16(((((uint32(a[off+11*j+1]) >> 3) | ((uint32(a[off+11*j+2]) & 0x3f) << 5)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+2] = uint16(((((uint32(a[off+11*j+2]) >> 6) | ((uint32(a[off+11*j+3]) & 0xff) << 2) | ((uint32(a[off+11*j+4]) & 0x01) << 10)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+3] = uint16(((((uint32(a[off+11*j+4]) >> 1) | ((uint32(a[off+11*j+5]) & 0x0f) << 7)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+4] = uint16(((((uint32(a[off+11*j+5]) >> 4) | ((uint32(a[off+11*j+6]) & 0x7f) << 4)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+5] = uint16(((((uint32(a[off+11*j+6]) >> 7) | ((uint32(a[off+11*j+7]) & 0xff) << 1) | ((uint32(a[off+11*j+8]) & 0x03) << 9)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+6] = uint16(((((uint32(a[off+11*j+8]) >> 2) | ((uint32(a[off+11*j+9]) & 0x1f) << 6)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+7] = uint16(((((uint32(a[off+11*j+9]) >> 5) | ((uint32(a[off+11*j+10]) & 0xff) << 3)) * kyberQ) + 1024) >> 11) + } + off += compressedCoeffSize + } +} + +// Serialize vector of polynomials. +func (v *polyVec) toBytes(r []byte) { + for i, p := range v.vec { + p.toBytes(r[i*polySize:]) + } +} + +// De-serialize vector of polynomials; inverse of polyVec.toBytes(). +func (v *polyVec) fromBytes(a []byte) { + for i, p := range v.vec { + p.fromBytes(a[i*polySize:]) + } +} + +// Apply forward NTT to all elements of a vector of polynomials. +func (v *polyVec) ntt() { + for _, p := range v.vec { + p.ntt() + } +} + +// Apply inverse NTT to all elements of a vector of polynomials. +func (v *polyVec) invntt() { + for _, p := range v.vec { + p.invntt() + } +} + +// Pointwise multiply elements of a and b and accumulate into p. +func (p *poly) pointwiseAcc(a, b *polyVec) { + hardwareAccelImpl.pointwiseAccFn(p, a, b) +} + +// Add vectors of polynomials. +func (v *polyVec) add(a, b *polyVec) { + for i, p := range v.vec { + p.add(a.vec[i], b.vec[i]) + } +} + +// Get compressed and serialized size in bytes. +func (v *polyVec) compressedSize() int { + return len(v.vec) * compressedCoeffSize +} + +func pointwiseAccRef(p *poly, a, b *polyVec) { + for j := 0; j < kyberN; j++ { + t := montgomeryReduce(4613 * uint32(b.vec[0].coeffs[j])) // 4613 = 2^{2*18} % q + p.coeffs[j] = montgomeryReduce(uint32(a.vec[0].coeffs[j]) * uint32(t)) + for i := 1; i < len(a.vec); i++ { // len(a.vec) == kyberK + t = montgomeryReduce(4613 * uint32(b.vec[i].coeffs[j])) + p.coeffs[j] += montgomeryReduce(uint32(a.vec[i].coeffs[j]) * uint32(t)) + } + + p.coeffs[j] = barrettReduce(p.coeffs[j]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go b/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go new file mode 100644 index 0000000..a18cd8f --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go @@ -0,0 +1,87 @@ +// precomp.go - Precomputed NTT constants. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Precomputed constants for the forward NTT and inverse NTT. +// Computed using Pari/GP as follows: +// +// brv=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240, \ +// 8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248, \ +// 4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244, \ +// 12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252, \ +// 2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242, \ +// 10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250, \ +// 6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246, \ +// 14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254, \ +// 1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241, \ +// 9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249, \ +// 5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245, \ +// 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253, \ +// 3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243, \ +// 11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251, \ +// 7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247, \ +// 15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255]; +// +// q = 7681; +// n = 256; +// mont = Mod(2^18,q); +// +// g=0; for(i=2,q-1,if(znorder(Mod(i,q)) == 2*n, g=Mod(i,q); break)) +// +// zetas = lift(vector(n, i, g^(brv[i])*mont)) +// omegas_inv_bitrev_montgomery = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont)) +// psis_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont)) + +var zetas = [kyberN]uint16{ + 990, 7427, 2634, 6819, 578, 3281, 2143, 1095, 484, 6362, 3336, 5382, 6086, 3823, 877, 5656, + 3583, 7010, 6414, 263, 1285, 291, 7143, 7338, 1581, 5134, 5184, 5932, 4042, 5775, 2468, 3, + 606, 729, 5383, 962, 3240, 7548, 5129, 7653, 5929, 4965, 2461, 641, 1584, 2666, 1142, 157, + 7407, 5222, 5602, 5142, 6140, 5485, 4931, 1559, 2085, 5284, 2056, 3538, 7269, 3535, 7190, 1957, + 3465, 6792, 1538, 4664, 2023, 7643, 3660, 7673, 1694, 6905, 3995, 3475, 5939, 1859, 6910, 4434, + 1019, 1492, 7087, 4761, 657, 4859, 5798, 2640, 1693, 2607, 2782, 5400, 6466, 1010, 957, 3851, + 2121, 6392, 7319, 3367, 3659, 3375, 6430, 7583, 1549, 5856, 4773, 6084, 5544, 1650, 3997, 4390, + 6722, 2915, 4245, 2635, 6128, 7676, 5737, 1616, 3457, 3132, 7196, 4702, 6239, 851, 2122, 3009, + 7613, 7295, 2007, 323, 5112, 3716, 2289, 6442, 6965, 2713, 7126, 3401, 963, 6596, 607, 5027, + 7078, 4484, 5937, 944, 2860, 2680, 5049, 1777, 5850, 3387, 6487, 6777, 4812, 4724, 7077, 186, + 6848, 6793, 3463, 5877, 1174, 7116, 3077, 5945, 6591, 590, 6643, 1337, 6036, 3991, 1675, 2053, + 6055, 1162, 1679, 3883, 4311, 2106, 6163, 4486, 6374, 5006, 4576, 4288, 5180, 4102, 282, 6119, + 7443, 6330, 3184, 4971, 2530, 5325, 4171, 7185, 5175, 5655, 1898, 382, 7211, 43, 5965, 6073, + 1730, 332, 1577, 3304, 2329, 1699, 6150, 2379, 5113, 333, 3502, 4517, 1480, 1172, 5567, 651, + 925, 4573, 599, 1367, 4109, 1863, 6929, 1605, 3866, 2065, 4048, 839, 5764, 2447, 2022, 3345, + 1990, 4067, 2036, 2069, 3567, 7371, 2368, 339, 6947, 2159, 654, 7327, 2768, 6676, 987, 2214, +} + +var omegasInvBitrevMontgomery = [kyberN / 2]uint16{ + 990, 254, 862, 5047, 6586, 5538, 4400, 7103, 2025, 6804, 3858, 1595, 2299, 4345, 1319, 7197, + 7678, 5213, 1906, 3639, 1749, 2497, 2547, 6100, 343, 538, 7390, 6396, 7418, 1267, 671, 4098, + 5724, 491, 4146, 412, 4143, 5625, 2397, 5596, 6122, 2750, 2196, 1541, 2539, 2079, 2459, 274, + 7524, 6539, 5015, 6097, 7040, 5220, 2716, 1752, 28, 2552, 133, 4441, 6719, 2298, 6952, 7075, + 4672, 5559, 6830, 1442, 2979, 485, 4549, 4224, 6065, 1944, 5, 1553, 5046, 3436, 4766, 959, + 3291, 3684, 6031, 2137, 1597, 2908, 1825, 6132, 98, 1251, 4306, 4022, 4314, 362, 1289, 5560, + 3830, 6724, 6671, 1215, 2281, 4899, 5074, 5988, 5041, 1883, 2822, 7024, 2920, 594, 6189, 6662, + 3247, 771, 5822, 1742, 4206, 3686, 776, 5987, 8, 4021, 38, 5658, 3017, 6143, 889, 4216, +} + +var psisInvMontgomery = [kyberN]uint16{ + 1024, 4972, 5779, 6907, 4943, 4168, 315, 5580, 90, 497, 1123, 142, 4710, 5527, 2443, 4871, + 698, 2489, 2394, 4003, 684, 2241, 2390, 7224, 5072, 2064, 4741, 1687, 6841, 482, 7441, 1235, + 2126, 4742, 2802, 5744, 6287, 4933, 699, 3604, 1297, 2127, 5857, 1705, 3868, 3779, 4397, 2177, + 159, 622, 2240, 1275, 640, 6948, 4572, 5277, 209, 2605, 1157, 7328, 5817, 3191, 1662, 2009, + 4864, 574, 2487, 164, 6197, 4436, 7257, 3462, 4268, 4281, 3414, 4515, 3170, 1290, 2003, 5855, + 7156, 6062, 7531, 1732, 3249, 4884, 7512, 3590, 1049, 2123, 1397, 6093, 3691, 6130, 6541, 3946, + 6258, 3322, 1788, 4241, 4900, 2309, 1400, 1757, 400, 502, 6698, 2338, 3011, 668, 7444, 4580, + 6516, 6795, 2959, 4136, 3040, 2279, 6355, 3943, 2913, 6613, 7416, 4084, 6508, 5556, 4054, 3782, + 61, 6567, 2212, 779, 632, 5709, 5667, 4923, 4911, 6893, 4695, 4164, 3536, 2287, 7594, 2848, + 3267, 1911, 3128, 546, 1991, 156, 4958, 5531, 6903, 483, 875, 138, 250, 2234, 2266, 7222, + 2842, 4258, 812, 6703, 232, 5207, 6650, 2585, 1900, 6225, 4932, 7265, 4701, 3173, 4635, 6393, + 227, 7313, 4454, 4284, 6759, 1224, 5223, 1447, 395, 2608, 4502, 4037, 189, 3348, 54, 6443, + 2210, 6230, 2826, 1780, 3002, 5995, 1955, 6102, 6045, 3938, 5019, 4417, 1434, 1262, 1507, 5847, + 5917, 7157, 7177, 6434, 7537, 741, 4348, 1309, 145, 374, 2236, 4496, 5028, 6771, 6923, 7421, + 1978, 1023, 3857, 6876, 1102, 7451, 4704, 6518, 1344, 765, 384, 5705, 1207, 1630, 4734, 1563, + 6839, 5933, 1954, 4987, 7142, 5814, 7527, 4953, 7637, 4707, 2182, 5734, 2818, 541, 4097, 5641, +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go b/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go new file mode 100644 index 0000000..ada3eec --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go @@ -0,0 +1,43 @@ +// reduce.go - Montgomery, Barret, and Full reduction. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +const ( + qinv = 7679 // -inverse_mod(q,2^18) + rlog = 18 +) + +// Montgomery reduction; given a 32-bit integer a, computes 16-bit integer +// congruent to a * R^-1 mod q, where R=2^18 (see value of rlog). +func montgomeryReduce(a uint32) uint16 { + u := a * qinv + u &= (1 << rlog) - 1 + u *= kyberQ + a += u + return uint16(a >> rlog) +} + +// Barrett reduction; given a 16-bit integer a, computes 16-bit integer +// congruent to a mod q in {0,...,11768}. +func barrettReduce(a uint16) uint16 { + u := uint32(a >> 13) // ((uint32_t) a * sinv) >> 16 + u *= kyberQ + a -= uint16(u) + return a +} + +// Full reduction; given a 16-bit integer a, computes unsigned integer a mod q. +func freeze(x uint16) uint16 { + r := barrettReduce(x) + + m := r - kyberQ + c := int16(m) + c >>= 15 + r = m ^ ((r ^ m) & uint16(c)) + return r +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE b/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go b/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go new file mode 100644 index 0000000..2f99489 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go @@ -0,0 +1,929 @@ +// batcher.go - Constant time polynomial sampler. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +func batcher84(x []uint16) { + // In theory this should probably be inlined. + compareAndSwap := func(x []uint16, i, j int) { + const _5q = 5 * paramQ + var c int32 + var t uint16 + + c = _5q - 1 - int32(x[16*i]) + c >>= 31 + t = x[16*i] ^ x[16*j] + t &= uint16(c) + x[16*i] ^= t + x[16*j] ^= t + } + + compareAndSwap(x, 0, 1) + compareAndSwap(x, 2, 3) + compareAndSwap(x, 0, 2) + compareAndSwap(x, 1, 3) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 4, 5) + compareAndSwap(x, 6, 7) + compareAndSwap(x, 4, 6) + compareAndSwap(x, 5, 7) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 0, 4) + compareAndSwap(x, 2, 6) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 1, 5) + compareAndSwap(x, 3, 7) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 8, 9) + compareAndSwap(x, 10, 11) + compareAndSwap(x, 8, 10) + compareAndSwap(x, 9, 11) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 12, 13) + compareAndSwap(x, 14, 15) + compareAndSwap(x, 12, 14) + compareAndSwap(x, 13, 15) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 8, 12) + compareAndSwap(x, 10, 14) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 9, 13) + compareAndSwap(x, 11, 15) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 0, 8) + compareAndSwap(x, 4, 12) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 2, 10) + compareAndSwap(x, 6, 14) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 1, 9) + compareAndSwap(x, 5, 13) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 3, 11) + compareAndSwap(x, 7, 15) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 16, 17) + compareAndSwap(x, 18, 19) + compareAndSwap(x, 16, 18) + compareAndSwap(x, 17, 19) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 20, 21) + compareAndSwap(x, 22, 23) + compareAndSwap(x, 20, 22) + compareAndSwap(x, 21, 23) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 16, 20) + compareAndSwap(x, 18, 22) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 17, 21) + compareAndSwap(x, 19, 23) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 24, 25) + compareAndSwap(x, 26, 27) + compareAndSwap(x, 24, 26) + compareAndSwap(x, 25, 27) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 28, 29) + compareAndSwap(x, 30, 31) + compareAndSwap(x, 28, 30) + compareAndSwap(x, 29, 31) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 24, 28) + compareAndSwap(x, 26, 30) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 25, 29) + compareAndSwap(x, 27, 31) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 16, 24) + compareAndSwap(x, 20, 28) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 18, 26) + compareAndSwap(x, 22, 30) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 17, 25) + compareAndSwap(x, 21, 29) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 19, 27) + compareAndSwap(x, 23, 31) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 0, 16) + compareAndSwap(x, 8, 24) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 4, 20) + compareAndSwap(x, 12, 28) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 2, 18) + compareAndSwap(x, 10, 26) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 6, 22) + compareAndSwap(x, 14, 30) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 1, 17) + compareAndSwap(x, 9, 25) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 5, 21) + compareAndSwap(x, 13, 29) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 3, 19) + compareAndSwap(x, 11, 27) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 7, 23) + compareAndSwap(x, 15, 31) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 32, 33) + compareAndSwap(x, 34, 35) + compareAndSwap(x, 32, 34) + compareAndSwap(x, 33, 35) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 36, 37) + compareAndSwap(x, 38, 39) + compareAndSwap(x, 36, 38) + compareAndSwap(x, 37, 39) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 32, 36) + compareAndSwap(x, 34, 38) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 33, 37) + compareAndSwap(x, 35, 39) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 40, 41) + compareAndSwap(x, 42, 43) + compareAndSwap(x, 40, 42) + compareAndSwap(x, 41, 43) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 44, 45) + compareAndSwap(x, 46, 47) + compareAndSwap(x, 44, 46) + compareAndSwap(x, 45, 47) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 40, 44) + compareAndSwap(x, 42, 46) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 41, 45) + compareAndSwap(x, 43, 47) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 32, 40) + compareAndSwap(x, 36, 44) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 34, 42) + compareAndSwap(x, 38, 46) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 33, 41) + compareAndSwap(x, 37, 45) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 35, 43) + compareAndSwap(x, 39, 47) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 48, 49) + compareAndSwap(x, 50, 51) + compareAndSwap(x, 48, 50) + compareAndSwap(x, 49, 51) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 52, 53) + compareAndSwap(x, 54, 55) + compareAndSwap(x, 52, 54) + compareAndSwap(x, 53, 55) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 48, 52) + compareAndSwap(x, 50, 54) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 49, 53) + compareAndSwap(x, 51, 55) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 56, 57) + compareAndSwap(x, 58, 59) + compareAndSwap(x, 56, 58) + compareAndSwap(x, 57, 59) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 60, 61) + compareAndSwap(x, 62, 63) + compareAndSwap(x, 60, 62) + compareAndSwap(x, 61, 63) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 56, 60) + compareAndSwap(x, 58, 62) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 57, 61) + compareAndSwap(x, 59, 63) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 48, 56) + compareAndSwap(x, 52, 60) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 50, 58) + compareAndSwap(x, 54, 62) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 49, 57) + compareAndSwap(x, 53, 61) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 51, 59) + compareAndSwap(x, 55, 63) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 32, 48) + compareAndSwap(x, 40, 56) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 36, 52) + compareAndSwap(x, 44, 60) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 34, 50) + compareAndSwap(x, 42, 58) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 38, 54) + compareAndSwap(x, 46, 62) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 33, 49) + compareAndSwap(x, 41, 57) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 37, 53) + compareAndSwap(x, 45, 61) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 35, 51) + compareAndSwap(x, 43, 59) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 39, 55) + compareAndSwap(x, 47, 63) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 0, 32) + compareAndSwap(x, 16, 48) + compareAndSwap(x, 16, 32) + compareAndSwap(x, 8, 40) + compareAndSwap(x, 24, 56) + compareAndSwap(x, 24, 40) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 24, 32) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 4, 36) + compareAndSwap(x, 20, 52) + compareAndSwap(x, 20, 36) + compareAndSwap(x, 12, 44) + compareAndSwap(x, 28, 60) + compareAndSwap(x, 28, 44) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 28, 36) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 28, 32) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 2, 34) + compareAndSwap(x, 18, 50) + compareAndSwap(x, 18, 34) + compareAndSwap(x, 10, 42) + compareAndSwap(x, 26, 58) + compareAndSwap(x, 26, 42) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 26, 34) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 6, 38) + compareAndSwap(x, 22, 54) + compareAndSwap(x, 22, 38) + compareAndSwap(x, 14, 46) + compareAndSwap(x, 30, 62) + compareAndSwap(x, 30, 46) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 30, 38) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 30, 34) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 30, 32) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 1, 33) + compareAndSwap(x, 17, 49) + compareAndSwap(x, 17, 33) + compareAndSwap(x, 9, 41) + compareAndSwap(x, 25, 57) + compareAndSwap(x, 25, 41) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 25, 33) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 5, 37) + compareAndSwap(x, 21, 53) + compareAndSwap(x, 21, 37) + compareAndSwap(x, 13, 45) + compareAndSwap(x, 29, 61) + compareAndSwap(x, 29, 45) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 29, 37) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 29, 33) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 3, 35) + compareAndSwap(x, 19, 51) + compareAndSwap(x, 19, 35) + compareAndSwap(x, 11, 43) + compareAndSwap(x, 27, 59) + compareAndSwap(x, 27, 43) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 27, 35) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 7, 39) + compareAndSwap(x, 23, 55) + compareAndSwap(x, 23, 39) + compareAndSwap(x, 15, 47) + compareAndSwap(x, 31, 63) + compareAndSwap(x, 31, 47) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 31, 39) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 31, 35) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 31, 33) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 31, 32) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 64, 65) + compareAndSwap(x, 66, 67) + compareAndSwap(x, 64, 66) + compareAndSwap(x, 65, 67) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 68, 69) + compareAndSwap(x, 70, 71) + compareAndSwap(x, 68, 70) + compareAndSwap(x, 69, 71) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 64, 68) + compareAndSwap(x, 66, 70) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 65, 69) + compareAndSwap(x, 67, 71) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 72, 73) + compareAndSwap(x, 74, 75) + compareAndSwap(x, 72, 74) + compareAndSwap(x, 73, 75) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 76, 77) + compareAndSwap(x, 78, 79) + compareAndSwap(x, 76, 78) + compareAndSwap(x, 77, 79) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 72, 76) + compareAndSwap(x, 74, 78) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 73, 77) + compareAndSwap(x, 75, 79) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 64, 72) + compareAndSwap(x, 68, 76) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 66, 74) + compareAndSwap(x, 70, 78) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 65, 73) + compareAndSwap(x, 69, 77) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 67, 75) + compareAndSwap(x, 71, 79) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 80, 81) + compareAndSwap(x, 82, 83) + compareAndSwap(x, 80, 82) + compareAndSwap(x, 81, 83) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 64, 80) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 66, 82) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 65, 81) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 67, 83) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 0, 64) + compareAndSwap(x, 32, 64) + compareAndSwap(x, 16, 80) + compareAndSwap(x, 48, 80) + compareAndSwap(x, 16, 32) + compareAndSwap(x, 48, 64) + compareAndSwap(x, 8, 72) + compareAndSwap(x, 40, 72) + compareAndSwap(x, 24, 40) + compareAndSwap(x, 56, 72) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 24, 32) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 56, 64) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 4, 68) + compareAndSwap(x, 36, 68) + compareAndSwap(x, 20, 36) + compareAndSwap(x, 52, 68) + compareAndSwap(x, 12, 76) + compareAndSwap(x, 44, 76) + compareAndSwap(x, 28, 44) + compareAndSwap(x, 60, 76) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 28, 36) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 60, 68) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 28, 32) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 60, 64) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 2, 66) + compareAndSwap(x, 34, 66) + compareAndSwap(x, 18, 82) + compareAndSwap(x, 50, 82) + compareAndSwap(x, 18, 34) + compareAndSwap(x, 50, 66) + compareAndSwap(x, 10, 74) + compareAndSwap(x, 42, 74) + compareAndSwap(x, 26, 42) + compareAndSwap(x, 58, 74) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 26, 34) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 58, 66) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 6, 70) + compareAndSwap(x, 38, 70) + compareAndSwap(x, 22, 38) + compareAndSwap(x, 54, 70) + compareAndSwap(x, 14, 78) + compareAndSwap(x, 46, 78) + compareAndSwap(x, 30, 46) + compareAndSwap(x, 62, 78) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 30, 38) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 62, 70) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 30, 34) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 62, 66) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 30, 32) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 62, 64) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 1, 65) + compareAndSwap(x, 33, 65) + compareAndSwap(x, 17, 81) + compareAndSwap(x, 49, 81) + compareAndSwap(x, 17, 33) + compareAndSwap(x, 49, 65) + compareAndSwap(x, 9, 73) + compareAndSwap(x, 41, 73) + compareAndSwap(x, 25, 41) + compareAndSwap(x, 57, 73) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 25, 33) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 57, 65) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 5, 69) + compareAndSwap(x, 37, 69) + compareAndSwap(x, 21, 37) + compareAndSwap(x, 53, 69) + compareAndSwap(x, 13, 77) + compareAndSwap(x, 45, 77) + compareAndSwap(x, 29, 45) + compareAndSwap(x, 61, 77) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 29, 37) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 61, 69) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 29, 33) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 61, 65) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 3, 67) + compareAndSwap(x, 35, 67) + compareAndSwap(x, 19, 83) + compareAndSwap(x, 51, 83) + compareAndSwap(x, 19, 35) + compareAndSwap(x, 51, 67) + compareAndSwap(x, 11, 75) + compareAndSwap(x, 43, 75) + compareAndSwap(x, 27, 43) + compareAndSwap(x, 59, 75) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 27, 35) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 59, 67) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 7, 71) + compareAndSwap(x, 39, 71) + compareAndSwap(x, 23, 39) + compareAndSwap(x, 55, 71) + compareAndSwap(x, 15, 79) + compareAndSwap(x, 47, 79) + compareAndSwap(x, 31, 47) + compareAndSwap(x, 63, 79) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 31, 39) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 63, 71) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 31, 35) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 63, 67) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 31, 33) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 63, 65) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 31, 32) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 63, 64) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go b/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go new file mode 100644 index 0000000..5b7e228 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go @@ -0,0 +1,135 @@ +// error_correction.go - NewHope key exchange error correction. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import "git.schwanenlied.me/yawning/chacha20.git" + +func abs(v int32) int32 { + mask := v >> 31 + return (v ^ mask) - mask +} + +func f(v0, v1 *int32, x int32) int32 { + // The`ref` code uses uint32 for x, but none of the values ever get large + // enough for that, and that would be cast-tastic due to Go being Go. + + // Next 6 lines compute t = x/PARAM_Q + b := x * 2730 + t := b >> 25 + b = x - t*paramQ + b = (paramQ - 1) - b + b >>= 31 + t -= b + + r := t & 1 + xit := t >> 1 + *v0 = xit + r // v0 = round(x/(2*PARAM_Q)) + + t-- + r = t & 1 + *v1 = (t >> 1) + r + + return abs(x - ((*v0) * 2 * paramQ)) +} + +func g(x int32) int32 { + // Next 6 lines compute t = x/(4 *PARAMQ) + b := x * 2730 + t := b >> 27 + b = x - t*(paramQ*4) + b = (paramQ * 4) - b + b >>= 31 + t -= b + + c := t & 1 + t = (t >> 1) + c // t = round(x/(8*PARAM_Q)) + + t *= 8 * paramQ + + return abs(t - x) +} + +func llDecode(xi0, xi1, xi2, xi3 int32) int16 { + t := g(xi0) + t += g(xi1) + t += g(xi2) + t += g(xi3) + + t -= 8 * paramQ + t >>= 31 + return int16(t & 1) +} + +func (c *poly) helpRec(v *poly, seed *[SeedBytes]byte, nonce byte) { + var v0, v1, vTmp [4]int32 + var k int32 + var rand [32]byte + var n [8]byte + + n[7] = nonce + + stream, err := chacha20.NewCipher(seed[:], n[:]) + if err != nil { + panic(err) + } + stream.KeyStream(rand[:]) + stream.Reset() + defer memwipe(rand[:]) + + for i := uint(0); i < 256; i++ { + rBit := int32((rand[i>>3] >> (i & 7)) & 1) + + vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) + + // newhope-20151209 - New version of the reconciliation. + k = f(&v0[0], &v1[0], 8*vTmp[0]+4*rBit) + k += f(&v0[1], &v1[1], 8*vTmp[1]+4*rBit) + k += f(&v0[2], &v1[2], 8*vTmp[2]+4*rBit) + k += f(&v0[3], &v1[3], 8*vTmp[3]+4*rBit) + + k = (2*paramQ - 1 - k) >> 31 + + vTmp[0] = ((^k) & v0[0]) ^ (k & v1[0]) + vTmp[1] = ((^k) & v0[1]) ^ (k & v1[1]) + vTmp[2] = ((^k) & v0[2]) ^ (k & v1[2]) + vTmp[3] = ((^k) & v0[3]) ^ (k & v1[3]) + + c.coeffs[0+i] = uint16((vTmp[0] - vTmp[3]) & 3) + c.coeffs[256+i] = uint16((vTmp[1] - vTmp[3]) & 3) + c.coeffs[512+i] = uint16((vTmp[2] - vTmp[3]) & 3) + c.coeffs[768+i] = uint16((-k + 2*vTmp[3]) & 3) + } + + for i := range vTmp { + vTmp[i] = 0 + } +} + +func rec(key *[32]byte, v, c *poly) { + var tmp, vTmp, cTmp [4]int32 + for i := range key { + key[i] = 0 + } + + for i := uint(0); i < 256; i++ { + vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) + cTmp[0], cTmp[1], cTmp[2], cTmp[3] = int32(c.coeffs[i]), int32(c.coeffs[256+i]), int32(c.coeffs[512+i]), int32(c.coeffs[768+i]) + tmp[0] = 16*paramQ + 8*vTmp[0] - paramQ*(2*cTmp[0]+cTmp[3]) + tmp[1] = 16*paramQ + 8*vTmp[1] - paramQ*(2*cTmp[1]+cTmp[3]) + tmp[2] = 16*paramQ + 8*vTmp[2] - paramQ*(2*cTmp[2]+cTmp[3]) + tmp[3] = 16*paramQ + 8*vTmp[3] - paramQ*(cTmp[3]) + + key[i>>3] |= byte(llDecode(tmp[0], tmp[1], tmp[2], tmp[3]) << (i & 7)) + } + + for i := 0; i < 4; i++ { + tmp[i] = 0 + vTmp[i] = 0 + cTmp[i] = 0 + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go new file mode 100644 index 0000000..380d943 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go @@ -0,0 +1,220 @@ +// newhope.go - NewHope interface. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// Package newhope implements a key exchange based on the Ring Learning with +// Errors Problem. It is a mechanical port of the Public Domain implementation +// by Erdem Alkim, Léo Ducas, Thomas Pöppelmann, and Peter Schwabe. +// +// For more information see: +// https://cryptojedi.org/papers/newhope-20161119.pdf +// https://cryptojedi.org/papers/newhopesimple-20161217.pdf +// +package newhope + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +const ( + // SharedSecretSize is the length of a Shared Secret in bytes. + SharedSecretSize = 32 + + // UpstreamVersion is the version of the upstream package this + // implementation is compatible with. + UpstreamVersion = "20160815" + + // RecBytes is the length of the reconciliation data in bytes. + RecBytes = 256 + + // SendASize is the length of Alice's public key in bytes. + SendASize = PolyBytes + SeedBytes + + // SendBSize is the length of Bob's public key in bytes. + SendBSize = PolyBytes + RecBytes +) + +// TorSampling enables the constant time generation of the `a` parameter, +// where every successful `a` generation will take the same amount of time. +// Most users will probably not want to enable this as it does come with a +// performance penalty. Alice and Bob *MUST* agree on the sampling method, +// or the key exchange will fail. +var TorSampling = false + +func encodeA(r []byte, pk *poly, seed *[SeedBytes]byte) { + pk.toBytes(r) + for i := 0; i < SeedBytes; i++ { + r[PolyBytes+i] = seed[i] + } +} + +func decodeA(pk *poly, seed *[SeedBytes]byte, r []byte) { + pk.fromBytes(r) + for i := range seed { + seed[i] = r[PolyBytes+i] + } +} + +func encodeB(r []byte, b *poly, c *poly) { + b.toBytes(r) + for i := 0; i < paramN/4; i++ { + r[PolyBytes+i] = byte(c.coeffs[4*i]) | byte(c.coeffs[4*i+1]<<2) | byte(c.coeffs[4*i+2]<<4) | byte(c.coeffs[4*i+3]<<6) + } +} + +func decodeB(b *poly, c *poly, r []byte) { + b.fromBytes(r) + for i := 0; i < paramN/4; i++ { + c.coeffs[4*i+0] = uint16(r[PolyBytes+i]) & 0x03 + c.coeffs[4*i+1] = uint16(r[PolyBytes+i]>>2) & 0x03 + c.coeffs[4*i+2] = uint16(r[PolyBytes+i]>>4) & 0x03 + c.coeffs[4*i+3] = uint16(r[PolyBytes+i] >> 6) + } +} + +func memwipe(b []byte) { + for i := range b { + b[i] = 0 + } +} + +// PublicKeyAlice is Alice's NewHope public key. +type PublicKeyAlice struct { + Send [SendASize]byte +} + +// PrivateKeyAlice is Alice's NewHope private key. +type PrivateKeyAlice struct { + sk poly +} + +// Reset clears all sensitive information such that it no longer appears in +// memory. +func (k *PrivateKeyAlice) Reset() { + k.sk.reset() +} + +// GenerateKeyPairAlice returns a private/public key pair. The private key is +// generated using the given reader, which must return random data. The +// receiver side of the key exchange (aka "Bob") MUST use KeyExchangeBob() +// instead of this routine. +func GenerateKeyPairAlice(rand io.Reader) (*PrivateKeyAlice, *PublicKeyAlice, error) { + var a, e, pk, r poly + var seed, noiseSeed [SeedBytes]byte + + // seed <- Sample({0, 1}^256) + if _, err := io.ReadFull(rand, seed[:]); err != nil { + return nil, nil, err + } + seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. + // a <- Parse(SHAKE-128(seed)) + a.uniform(&seed, TorSampling) + + // s, e <- Sample(psi(n, 12)) + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + privKey := new(PrivateKeyAlice) + privKey.sk.getNoise(&noiseSeed, 0) + privKey.sk.ntt() + e.getNoise(&noiseSeed, 1) + e.ntt() + + // b <- as + e + pubKey := new(PublicKeyAlice) + r.pointwise(&privKey.sk, &a) + pk.add(&e, &r) + encodeA(pubKey.Send[:], &pk, &seed) + + return privKey, pubKey, nil +} + +// PublicKeyBob is Bob's NewHope public key. +type PublicKeyBob struct { + Send [SendBSize]byte +} + +// KeyExchangeBob is the Responder side of the NewHope key exchange. The +// shared secret and "public key" (key + reconciliation data) are generated +// using the given reader, which must return random data. +func KeyExchangeBob(rand io.Reader, alicePk *PublicKeyAlice) (*PublicKeyBob, []byte, error) { + var pka, a, sp, ep, u, v, epp, r poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + // a <- Parse(SHAKE-128(seed)) + decodeA(&pka, &seed, alicePk.Send[:]) + a.uniform(&seed, TorSampling) + + // s', e', e'' <- Sample(psi(n, 12)) + sp.getNoise(&noiseSeed, 0) + sp.ntt() + ep.getNoise(&noiseSeed, 1) + ep.ntt() + epp.getNoise(&noiseSeed, 2) + + // u <- as' + e' + u.pointwise(&a, &sp) + u.add(&u, &ep) + + // v <- bs' + e'' + v.pointwise(&pka, &sp) + v.invNtt() + v.add(&v, &epp) + + // r <- Sample(HelpRec(v)) + r.helpRec(&v, &noiseSeed, 3) + + pubKey := new(PublicKeyBob) + encodeB(pubKey.Send[:], &u, &r) + + // nu <- Rec(v, r) + var nu [SharedSecretSize]byte + rec(&nu, &v, &r) + + // mu <- SHA3-256(nu) + mu := sha3.Sum256(nu[:]) + + // Scrub the sensitive stuff... + memwipe(nu[:]) + sp.reset() + v.reset() + + return pubKey, mu[:], nil +} + +// KeyExchangeAlice is the Initiaitor side of the NewHope key exchange. The +// provided private key is obliterated prior to returning. +func KeyExchangeAlice(bobPk *PublicKeyBob, aliceSk *PrivateKeyAlice) ([]byte, error) { + var u, r, vp poly + + decodeB(&u, &r, bobPk.Send[:]) + + // v' <- us + vp.pointwise(&aliceSk.sk, &u) + vp.invNtt() + + // nu <- Rec(v', r) + var nu [SharedSecretSize]byte + rec(&nu, &vp, &r) + + // mu <- Sha3-256(nu) + mu := sha3.Sum256(nu[:]) + + // Scrub the sensitive stuff... + memwipe(nu[:]) + vp.reset() + aliceSk.Reset() + + return mu[:], nil +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go new file mode 100644 index 0000000..4c4774b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go @@ -0,0 +1,166 @@ +// newhope_simple.go - NewHope-Simple interface. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +const ( + // HighBytes is the length of the encoded secret in bytes. + HighBytes = 384 + + // SendASimpleSize is the length of Alice's NewHope-Simple public key in + // bytes. + SendASimpleSize = PolyBytes + SeedBytes + + // SendBSimpleSize is the length of Bob's NewHope-Simple public key in + // bytes. + SendBSimpleSize = PolyBytes + HighBytes +) + +func encodeBSimple(r []byte, b *poly, v *poly) { + b.toBytes(r) + v.compress(r[PolyBytes:]) +} + +func decodeBSimple(b *poly, v *poly, r []byte) { + b.fromBytes(r) + v.decompress(r[PolyBytes:]) +} + +// PublicKeySimpleAlice is Alice's NewHope-Simple public key. +type PublicKeySimpleAlice struct { + Send [SendASimpleSize]byte +} + +// PrivateKeySimpleAlice is Alice's NewHope-Simple private key. +type PrivateKeySimpleAlice struct { + sk poly +} + +// Reset clears all sensitive information such that it no longer appears in +// memory. +func (k *PrivateKeySimpleAlice) Reset() { + k.sk.reset() +} + +// GenerateKeyPairSimpleAlice returns a NewHope-Simple private/public key pair. +// The private key is generated using the given reader, which must return +// random data. The receiver side of the key exchange (aka "Bob") MUST use +// KeyExchangeSimpleBob() instead of this routine. +func GenerateKeyPairSimpleAlice(rand io.Reader) (*PrivateKeySimpleAlice, *PublicKeySimpleAlice, error) { + var a, e, pk, r poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, seed[:]); err != nil { + return nil, nil, err + } + seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. + a.uniform(&seed, TorSampling) + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + privKey := new(PrivateKeySimpleAlice) + privKey.sk.getNoise(&noiseSeed, 0) + privKey.sk.ntt() + e.getNoise(&noiseSeed, 1) + e.ntt() + + pubKey := new(PublicKeySimpleAlice) + r.pointwise(&privKey.sk, &a) + pk.add(&e, &r) + encodeA(pubKey.Send[:], &pk, &seed) + + return privKey, pubKey, nil +} + +// PublicKeySimpleBob is Bob's NewHope-Simple public key. +type PublicKeySimpleBob struct { + Send [SendBSimpleSize]byte +} + +// KeyExchangeSimpleBob is the Responder side of the NewHope-Simple key +// exchange. The shared secret and "public key" are generated using the +// given reader, which must return random data. +func KeyExchangeSimpleBob(rand io.Reader, alicePk *PublicKeySimpleAlice) (*PublicKeySimpleBob, []byte, error) { + var pka, a, sp, ep, bp, v, epp, m poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + var sharedKey [SharedSecretSize]byte + if _, err := io.ReadFull(rand, sharedKey[:]); err != nil { + return nil, nil, err + } + defer memwipe(sharedKey[:]) + sharedKey = sha3.Sum256(sharedKey[:]) + m.fromMsg(sharedKey[:]) + + decodeA(&pka, &seed, alicePk.Send[:]) + a.uniform(&seed, TorSampling) + + sp.getNoise(&noiseSeed, 0) + sp.ntt() + ep.getNoise(&noiseSeed, 1) + ep.ntt() + + bp.pointwise(&a, &sp) + bp.add(&bp, &ep) + + v.pointwise(&pka, &sp) + v.invNtt() + + epp.getNoise(&noiseSeed, 2) + v.add(&v, &epp) + v.add(&v, &m) // add key + + pubKey := new(PublicKeySimpleBob) + encodeBSimple(pubKey.Send[:], &bp, &v) + mu := sha3.Sum256(sharedKey[:]) + + // Scrub the sensitive stuff... + sp.reset() + v.reset() + m.reset() + + return pubKey, mu[:], nil +} + +// KeyExchangeSimpleAlice is the Initiaitor side of the NewHope-Simple key +// exchange. The provided private key is obliterated prior to returning. +func KeyExchangeSimpleAlice(bobPk *PublicKeySimpleBob, aliceSk *PrivateKeySimpleAlice) ([]byte, error) { + var v, bp, k poly + + decodeBSimple(&bp, &v, bobPk.Send[:]) + k.pointwise(&aliceSk.sk, &bp) + k.invNtt() + + k.sub(&k, &v) + + var sharedKey [SharedSecretSize]byte + k.toMsg(sharedKey[:]) + + // mu <- Sha3-256(v') + mu := sha3.Sum256(sharedKey[:]) + + // Scrub the sensitive stuff... + memwipe(sharedKey[:]) + k.reset() + aliceSk.Reset() + + return mu[:], nil +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go b/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go new file mode 100644 index 0000000..58d1f2a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go @@ -0,0 +1,131 @@ +// ntt.go - NewHope Number Theoretic Transform. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +var bitrevTable = [paramN]uint16{ + 0, 512, 256, 768, 128, 640, 384, 896, 64, 576, 320, 832, 192, 704, 448, 960, + 32, 544, 288, 800, 160, 672, 416, 928, 96, 608, 352, 864, 224, 736, 480, + 992, 16, 528, 272, 784, 144, 656, 400, 912, 80, 592, 336, 848, 208, 720, + 464, 976, 48, 560, 304, 816, 176, 688, 432, 944, 112, 624, 368, 880, + 240, 752, 496, 1008, 8, 520, 264, 776, 136, 648, 392, 904, 72, 584, 328, + 840, 200, 712, 456, 968, 40, 552, 296, 808, 168, 680, 424, 936, 104, + 616, 360, 872, 232, 744, 488, 1000, 24, 536, 280, 792, 152, 664, 408, + 920, 88, 600, 344, 856, 216, 728, 472, 984, 56, 568, 312, 824, 184, 696, + 440, 952, 120, 632, 376, 888, 248, 760, 504, 1016, 4, 516, 260, 772, + 132, 644, 388, 900, 68, 580, 324, 836, 196, 708, 452, 964, 36, 548, 292, + 804, 164, 676, 420, 932, 100, 612, 356, 868, 228, 740, 484, 996, 20, + 532, 276, 788, 148, 660, 404, 916, 84, 596, 340, 852, 212, 724, 468, + 980, 52, 564, 308, 820, 180, 692, 436, 948, 116, 628, 372, 884, 244, + 756, 500, 1012, 12, 524, 268, 780, 140, 652, 396, 908, 76, 588, 332, + 844, 204, 716, 460, 972, 44, 556, 300, 812, 172, 684, 428, 940, 108, + 620, 364, 876, 236, 748, 492, 1004, 28, 540, 284, 796, 156, 668, 412, + 924, 92, 604, 348, 860, 220, 732, 476, 988, 60, 572, 316, 828, 188, 700, + 444, 956, 124, 636, 380, 892, 252, 764, 508, 1020, 2, 514, 258, 770, + 130, 642, 386, 898, 66, 578, 322, 834, 194, 706, 450, 962, 34, 546, 290, + 802, 162, 674, 418, 930, 98, 610, 354, 866, 226, 738, 482, 994, 18, 530, + 274, 786, 146, 658, 402, 914, 82, 594, 338, 850, 210, 722, 466, 978, 50, + 562, 306, 818, 178, 690, 434, 946, 114, 626, 370, 882, 242, 754, 498, + 1010, 10, 522, 266, 778, 138, 650, 394, 906, 74, 586, 330, 842, 202, + 714, 458, 970, 42, 554, 298, 810, 170, 682, 426, 938, 106, 618, 362, + 874, 234, 746, 490, 1002, 26, 538, 282, 794, 154, 666, 410, 922, 90, + 602, 346, 858, 218, 730, 474, 986, 58, 570, 314, 826, 186, 698, 442, + 954, 122, 634, 378, 890, 250, 762, 506, 1018, 6, 518, 262, 774, 134, + 646, 390, 902, 70, 582, 326, 838, 198, 710, 454, 966, 38, 550, 294, 806, + 166, 678, 422, 934, 102, 614, 358, 870, 230, 742, 486, 998, 22, 534, + 278, 790, 150, 662, 406, 918, 86, 598, 342, 854, 214, 726, 470, 982, 54, + 566, 310, 822, 182, 694, 438, 950, 118, 630, 374, 886, 246, 758, 502, + 1014, 14, 526, 270, 782, 142, 654, 398, 910, 78, 590, 334, 846, 206, + 718, 462, 974, 46, 558, 302, 814, 174, 686, 430, 942, 110, 622, 366, + 878, 238, 750, 494, 1006, 30, 542, 286, 798, 158, 670, 414, 926, 94, + 606, 350, 862, 222, 734, 478, 990, 62, 574, 318, 830, 190, 702, 446, + 958, 126, 638, 382, 894, 254, 766, 510, 1022, 1, 513, 257, 769, 129, + 641, 385, 897, 65, 577, 321, 833, 193, 705, 449, 961, 33, 545, 289, 801, + 161, 673, 417, 929, 97, 609, 353, 865, 225, 737, 481, 993, 17, 529, 273, + 785, 145, 657, 401, 913, 81, 593, 337, 849, 209, 721, 465, 977, 49, 561, + 305, 817, 177, 689, 433, 945, 113, 625, 369, 881, 241, 753, 497, 1009, + 9, 521, 265, 777, 137, 649, 393, 905, 73, 585, 329, 841, 201, 713, 457, + 969, 41, 553, 297, 809, 169, 681, 425, 937, 105, 617, 361, 873, 233, + 745, 489, 1001, 25, 537, 281, 793, 153, 665, 409, 921, 89, 601, 345, + 857, 217, 729, 473, 985, 57, 569, 313, 825, 185, 697, 441, 953, 121, + 633, 377, 889, 249, 761, 505, 1017, 5, 517, 261, 773, 133, 645, 389, + 901, 69, 581, 325, 837, 197, 709, 453, 965, 37, 549, 293, 805, 165, 677, + 421, 933, 101, 613, 357, 869, 229, 741, 485, 997, 21, 533, 277, 789, + 149, 661, 405, 917, 85, 597, 341, 853, 213, 725, 469, 981, 53, 565, 309, + 821, 181, 693, 437, 949, 117, 629, 373, 885, 245, 757, 501, 1013, 13, + 525, 269, 781, 141, 653, 397, 909, 77, 589, 333, 845, 205, 717, 461, + 973, 45, 557, 301, 813, 173, 685, 429, 941, 109, 621, 365, 877, 237, + 749, 493, 1005, 29, 541, 285, 797, 157, 669, 413, 925, 93, 605, 349, + 861, 221, 733, 477, 989, 61, 573, 317, 829, 189, 701, 445, 957, 125, + 637, 381, 893, 253, 765, 509, 1021, 3, 515, 259, 771, 131, 643, 387, + 899, 67, 579, 323, 835, 195, 707, 451, 963, 35, 547, 291, 803, 163, 675, + 419, 931, 99, 611, 355, 867, 227, 739, 483, 995, 19, 531, 275, 787, 147, + 659, 403, 915, 83, 595, 339, 851, 211, 723, 467, 979, 51, 563, 307, 819, + 179, 691, 435, 947, 115, 627, 371, 883, 243, 755, 499, 1011, 11, 523, + 267, 779, 139, 651, 395, 907, 75, 587, 331, 843, 203, 715, 459, 971, 43, + 555, 299, 811, 171, 683, 427, 939, 107, 619, 363, 875, 235, 747, 491, + 1003, 27, 539, 283, 795, 155, 667, 411, 923, 91, 603, 347, 859, 219, + 731, 475, 987, 59, 571, 315, 827, 187, 699, 443, 955, 123, 635, 379, + 891, 251, 763, 507, 1019, 7, 519, 263, 775, 135, 647, 391, 903, 71, 583, + 327, 839, 199, 711, 455, 967, 39, 551, 295, 807, 167, 679, 423, 935, + 103, 615, 359, 871, 231, 743, 487, 999, 23, 535, 279, 791, 151, 663, + 407, 919, 87, 599, 343, 855, 215, 727, 471, 983, 55, 567, 311, 823, 183, + 695, 439, 951, 119, 631, 375, 887, 247, 759, 503, 1015, 15, 527, 271, + 783, 143, 655, 399, 911, 79, 591, 335, 847, 207, 719, 463, 975, 47, 559, + 303, 815, 175, 687, 431, 943, 111, 623, 367, 879, 239, 751, 495, 1007, + 31, 543, 287, 799, 159, 671, 415, 927, 95, 607, 351, 863, 223, 735, 479, + 991, 63, 575, 319, 831, 191, 703, 447, 959, 127, 639, 383, 895, 255, + 767, 511, 1023, +} + +func (p *poly) bitrev() { + for i, v := range p.coeffs { + r := bitrevTable[i] + if uint16(i) < r { + p.coeffs[i] = p.coeffs[r] + p.coeffs[r] = v + } + } +} + +func (p *poly) mulCoefficients(factors *[paramN]uint16) { + for i, v := range factors { + p.coeffs[i] = montgomeryReduce(uint32(p.coeffs[i]) * uint32(v)) + } +} + +func ntt(a *[paramN]uint16, omega *[paramN / 2]uint16) { + var distance uint + + for i := uint(0); i < 10; i += 2 { + // Even level. + distance = (1 << i) + for start := uint(0); start < distance; start++ { + jTwiddle := 0 + for j := start; j < paramN-1; j += 2 * distance { + w := uint32(omega[jTwiddle]) + jTwiddle++ + tmp := a[j] + a[j] = tmp + a[j+distance] + a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) + } + } + + // Odd level. + distance <<= 1 + for start := uint(0); start < distance; start++ { + jTwiddle := 0 + for j := start; j < paramN-1; j += 2 * distance { + w := uint32(omega[jTwiddle]) + jTwiddle++ + tmp := a[j] + a[j] = barrettReduce(tmp + a[j+distance]) + a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) + } + } + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/params.go b/vendor/git.schwanenlied.me/yawning/newhope.git/params.go new file mode 100644 index 0000000..572236b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/params.go @@ -0,0 +1,17 @@ +// params.go - NewHope parameters. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +const ( + paramN = 1024 + paramK = 16 // used in sampler + paramQ = 12289 + + // SeedBytes is the size of the seed in bytes. + SeedBytes = 32 +) diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go b/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go new file mode 100644 index 0000000..bd1816e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go @@ -0,0 +1,212 @@ +// poly.go - NewHope polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import ( + "encoding/binary" + + "git.schwanenlied.me/yawning/chacha20.git" + "golang.org/x/crypto/sha3" +) + +const ( + // PolyBytes is the length of an encoded polynomial in bytes. + PolyBytes = 1792 + + shake128Rate = 168 // Stupid that this isn't exposed. +) + +type poly struct { + coeffs [paramN]uint16 +} + +func (p *poly) reset() { + for i := range p.coeffs { + p.coeffs[i] = 0 + } +} + +func (p *poly) fromBytes(a []byte) { + for i := 0; i < paramN/4; i++ { + p.coeffs[4*i+0] = uint16(a[7*i+0]) | ((uint16(a[7*i+1]) & 0x3f) << 8) + p.coeffs[4*i+1] = (uint16(a[7*i+1]) >> 6) | (uint16(a[7*i+2]) << 2) | ((uint16(a[7*i+3]) & 0x0f) << 10) + + p.coeffs[4*i+2] = (uint16(a[7*i+3]) >> 4) | (uint16(a[7*i+4]) << 4) | ((uint16(a[7*i+5]) & 0x03) << 12) + p.coeffs[4*i+3] = (uint16(a[7*i+5]) >> 2) | (uint16(a[7*i+6]) << 6) + } +} + +func (p *poly) toBytes(r []byte) { + for i := 0; i < paramN/4; i++ { + // Make sure that coefficients have only 14 bits. + t0 := barrettReduce(p.coeffs[4*i+0]) + t1 := barrettReduce(p.coeffs[4*i+1]) + t2 := barrettReduce(p.coeffs[4*i+2]) + t3 := barrettReduce(p.coeffs[4*i+3]) + + // Make sure that coefficients are in [0,q] + m := t0 - paramQ + c := int16(m) + c >>= 15 + t0 = m ^ ((t0 ^ m) & uint16(c)) + + m = t1 - paramQ + c = int16(m) + c >>= 15 + t1 = m ^ ((t1 ^ m) & uint16(c)) + + m = t2 - paramQ + c = int16(m) + c >>= 15 + t2 = m ^ ((t2 ^ m) & uint16(c)) + + m = t3 - paramQ + c = int16(m) + c >>= 15 + t3 = m ^ ((t3 ^ m) & uint16(c)) + + r[7*i+0] = byte(t0 & 0xff) + r[7*i+1] = byte(t0>>8) | byte(t1<<6) + r[7*i+2] = byte(t1 >> 2) + r[7*i+3] = byte(t1>>10) | byte(t2<<4) + r[7*i+4] = byte(t2 >> 4) + r[7*i+5] = byte(t2>>12) | byte(t3<<2) + r[7*i+6] = byte(t3 >> 6) + } +} + +func (p *poly) discardTo(xbuf []byte) bool { + var x [shake128Rate * 16 / 2]uint16 + for i := range x { + x[i] = binary.LittleEndian.Uint16(xbuf[i*2:]) + } + + for i := 0; i < 16; i++ { + batcher84(x[i:]) + } + + // Check whether we're safe: + r := int(0) + for i := 1000; i < 1024; i++ { + r |= 61444 - int(x[i]) + } + if r>>31 != 0 { + return true + } + + // If we are, copy coefficients to polynomial: + for i := range p.coeffs { + p.coeffs[i] = x[i] + } + + return false +} + +func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { + if !torSampling { + // Reference version, vartime. + nBlocks := 14 + var buf [shake128Rate * 14]byte + + // h and buf are left unscrubbed because the output is public. + h := sha3.NewShake128() + h.Write(seed[:]) + h.Read(buf[:]) + + for ctr, pos := 0, 0; ctr < paramN; { + val := binary.LittleEndian.Uint16(buf[pos:]) + + if val < 5*paramQ { + p.coeffs[ctr] = val + ctr++ + } + pos += 2 + if pos > shake128Rate*nBlocks-2 { + nBlocks = 1 + h.Read(buf[:shake128Rate]) + pos = 0 + } + } + } else { + // `torref` version, every valid `a` is generate in constant time, + // though the number of attempts varies. + const nBlocks = 16 + var buf [shake128Rate * nBlocks]byte + + // h and buf are left unscrubbed because the output is public. + h := sha3.NewShake128() + h.Write(seed[:]) + + for { + h.Read(buf[:]) + if !p.discardTo(buf[:]) { + break + } + } + + } +} + +func (p *poly) getNoise(seed *[SeedBytes]byte, nonce byte) { + // The `ref` code uses a uint32 vector instead of a byte vector, + // but converting between the two in Go is cumbersome. + var buf [4 * paramN]byte + var n [8]byte + + n[0] = nonce + stream, err := chacha20.NewCipher(seed[:], n[:]) + if err != nil { + panic(err) + } + stream.KeyStream(buf[:]) + stream.Reset() + + for i := 0; i < paramN; i++ { + t := binary.LittleEndian.Uint32(buf[4*i:]) + d := uint32(0) + for j := uint(0); j < 8; j++ { + d += (t >> j) & 0x01010101 + } + a := ((d >> 8) & 0xff) + (d & 0xff) + b := (d >> 24) + ((d >> 16) & 0xff) + p.coeffs[i] = uint16(a) + paramQ - uint16(b) + } + + // Scrub the random bits... + memwipe(buf[:]) +} + +func (p *poly) pointwise(a, b *poly) { + for i := range p.coeffs { + t := montgomeryReduce(3186 * uint32(b.coeffs[i])) // t is now in Montgomery domain + p.coeffs[i] = montgomeryReduce(uint32(a.coeffs[i]) * uint32(t)) // p.coeffs[i] is back in normal domain + } +} + +func (p *poly) add(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) + } +} + +func (p *poly) ntt() { + p.mulCoefficients(&psisBitrevMontgomery) + ntt(&p.coeffs, &omegasMontgomery) +} + +func (p *poly) invNtt() { + p.bitrev() + ntt(&p.coeffs, &omegasInvMontgomery) + p.mulCoefficients(&psisInvMontgomery) +} + +func init() { + if paramK != 16 { + panic("poly.getNoise() only supports k=16") + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go b/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go new file mode 100644 index 0000000..59ebec1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go @@ -0,0 +1,99 @@ +// poly_simple.go - NewHope-Simple polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +func coeffFreeze(x uint16) uint16 { + var c int16 + + r := barrettReduce(x) + m := r - paramQ + c = int16(m) + c >>= 15 + r = m ^ ((r ^ m) & uint16(c)) + + return r +} + +// Computes abs(x-Q/2) +func flipAbs(x uint16) uint16 { + r := int16(coeffFreeze(x)) + r = r - paramQ/2 + m := r >> 15 + return uint16((r + m) ^ m) +} + +func (p *poly) compress(r []byte) { + var t [8]uint32 + + for i, k := 0, 0; i < paramN; i, k = i+8, k+3 { + for j := range t { + t[j] = uint32(coeffFreeze(p.coeffs[i+j])) + t[j] = (((t[j] << 3) + paramQ/2) / paramQ) & 0x7 + } + + r[k] = byte(t[0]) | byte(t[1]<<3) | byte(t[2]<<6) + r[k+1] = byte(t[2]>>2) | byte(t[3]<<1) | byte(t[4]<<4) | byte(t[5]<<7) + r[k+2] = byte(t[5]>>1) | byte(t[6]<<2) | byte(t[7]<<5) + } + + for i := range t { + t[i] = 0 + } +} + +func (p *poly) decompress(a []byte) { + for i := 0; i < paramN; i += 8 { + a0, a1, a2 := uint16(a[0]), uint16(a[1]), uint16(a[2]) + p.coeffs[i+0] = a0 & 7 + p.coeffs[i+1] = (a0 >> 3) & 7 + p.coeffs[i+2] = (a0 >> 6) | ((a1 << 2) & 4) + p.coeffs[i+3] = (a1 >> 1) & 7 + p.coeffs[i+4] = (a1 >> 4) & 7 + p.coeffs[i+5] = (a1 >> 7) | ((a2 << 1) & 6) + p.coeffs[i+6] = (a2 >> 2) & 7 + p.coeffs[i+7] = (a2 >> 5) + a = a[3:] + for j := 0; j < 8; j++ { + p.coeffs[i+j] = uint16((uint32(p.coeffs[i+j])*paramQ + 4) >> 3) + } + } +} + +func (p *poly) fromMsg(msg []byte) { + for i := uint(0); i < 32; i++ { // XXX: const for 32 + for j := uint(0); j < 8; j++ { + mask := -(uint16((msg[i] >> j) & 1)) + p.coeffs[8*i+j+0] = mask & (paramQ / 2) + p.coeffs[8*i+j+256] = mask & (paramQ / 2) + p.coeffs[8*i+j+512] = mask & (paramQ / 2) + p.coeffs[8*i+j+768] = mask & (paramQ / 2) + } + } +} + +func (p *poly) toMsg(msg []byte) { + memwipe(msg[0:32]) + + for i := uint(0); i < 256; i++ { + t := flipAbs(p.coeffs[i+0]) + t += flipAbs(p.coeffs[i+256]) + t += flipAbs(p.coeffs[i+512]) + t += flipAbs(p.coeffs[i+768]) + + //t = (~(t - PARAM_Q)); + t = (t - paramQ) + t >>= 15 + msg[i>>3] |= byte(t << (i & 7)) + } +} + +func (p *poly) sub(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*paramQ - b.coeffs[i]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go b/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go new file mode 100644 index 0000000..4d61c81 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go @@ -0,0 +1,287 @@ +// precomp.go - NewHope precomputed tables. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +var omegasMontgomery = [paramN / 2]uint16{ + 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, + 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, + 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, + 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, + 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, + 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, + 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, + 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, + 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, + 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, + 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, + 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, + 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, + 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, + 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, + 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, + 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, + 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, + 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, + 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, + 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, + 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, + 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, + 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, + 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, + 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, + 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, + 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, + 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, + 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, + 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, + 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, + 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, + 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, + 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, + 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, + 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, + 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, + 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, + 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, + 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, + 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, + 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, + 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, +} + +var omegasInvMontgomery = [paramN / 2]uint16{ + 4075, 5315, 4324, 4916, 10120, 11767, 7210, 9027, 10316, 6715, 1278, 9945, + 3514, 11248, 11271, 5925, 147, 8500, 7840, 6833, 5537, 4749, 4467, 7500, + 11099, 9606, 6171, 8471, 8429, 5445, 11239, 7753, 9090, 12233, 5529, + 5206, 10587, 1987, 11635, 3565, 5415, 8646, 6153, 6427, 7341, 6152, + 10561, 400, 8410, 1922, 2033, 8291, 1359, 6854, 11035, 973, 8579, 6093, + 6950, 5446, 11821, 8301, 11907, 316, 52, 3174, 10966, 9523, 6055, 8953, + 11612, 6415, 2505, 5906, 10710, 11858, 8332, 9450, 10162, 151, 3482, + 787, 5468, 1010, 4169, 9162, 5241, 9369, 7509, 8844, 7232, 4698, 192, + 1321, 10240, 4912, 885, 6281, 10333, 7280, 8757, 11286, 58, 12048, + 12147, 11184, 8812, 6608, 2844, 3438, 4212, 11314, 8687, 6068, 421, + 8209, 3600, 3263, 7665, 6077, 7507, 5886, 3029, 6695, 4213, 504, 11684, + 2302, 1962, 1594, 6328, 7183, 168, 2692, 8960, 4298, 5184, 11089, 6122, + 9734, 10929, 3956, 5297, 6170, 3762, 9370, 4016, 4077, 6523, 652, 11994, + 6099, 1146, 11341, 11964, 10885, 6299, 1159, 8240, 8561, 11177, 2078, + 10331, 4322, 11367, 441, 4079, 11231, 3150, 1319, 8243, 709, 8049, 8719, + 11454, 6224, 3054, 6803, 3123, 10542, 4433, 6370, 7032, 3834, 8633, + 12225, 9830, 683, 1566, 5782, 9786, 9341, 12115, 723, 3009, 1693, 5735, + 2655, 2738, 6421, 11942, 2925, 1975, 8532, 3315, 11863, 4754, 1858, + 1583, 6347, 2500, 10800, 6374, 1483, 12240, 1263, 1815, 5383, 10777, + 350, 6920, 10232, 4493, 9087, 8855, 8760, 9381, 218, 9928, 10446, 9259, + 4115, 6147, 9842, 8326, 576, 10335, 10238, 10484, 9407, 6381, 11836, + 8517, 418, 6860, 7515, 1293, 7552, 2767, 156, 8298, 8320, 10008, 5876, + 5333, 10258, 10115, 4372, 2847, 7875, 8232, 9018, 8925, 1689, 8236, + 2645, 5042, 9984, 7094, 9509, 1484, 7394, 3, 4437, 160, 3149, 113, 7370, + 10123, 3915, 6998, 2704, 8653, 4938, 1426, 7635, 10512, 1663, 6957, + 3510, 2370, 2865, 3978, 9320, 3247, 9603, 6882, 3186, 10659, 10163, + 1153, 9405, 8241, 10040, 2178, 1544, 5559, 420, 8304, 4905, 476, 3531, + 5191, 9153, 2399, 8889, 3000, 671, 243, 3016, 3763, 10849, 12262, 9223, + 10657, 7205, 11272, 7404, 7575, 8146, 10752, 242, 2678, 3704, 11744, + 5019, 3833, 3778, 11899, 773, 5101, 11222, 9888, 442, 2912, 5698, 11935, + 4861, 7277, 9808, 11244, 2859, 3780, 11414, 4976, 10682, 7201, 8005, + 11287, 5011, 6267, 2987, 2437, 3646, 2566, 10102, 9867, 6250, 5444, + 2381, 11796, 8193, 4337, 11854, 1912, 1378, 404, 7644, 1065, 2143, + 11121, 5277, 3248, 11082, 2548, 8058, 8907, 11934, 1759, 8582, 3694, + 7110, 12144, 6747, 8652, 3459, 2731, 8357, 6378, 7399, 10861, 1696, + 9863, 334, 7657, 6534, 11029, 4388, 11560, 3241, 10276, 9000, 9408, + 3284, 10200, 7197, 6498, 544, 2468, 339, 11267, 9, 2842, 480, 5331, + 7300, 1673, 4278, 4177, 8705, 9764, 1381, 7837, 2396, 8340, 8993, 4354, + 130, 6915, 2837, 11462, 5767, 953, 8541, 9813, 118, 7222, 2197, 3006, + 9545, 563, 9314, 2625, 11340, 4821, 2639, 7266, 5828, 6561, 7698, 3328, + 6512, 1351, 7311, 6553, 8155, 1305, 722, 5146, 4043, 12288, 10810, 2545, + 3621, 8747, 8785, 1646, 1212, 5860, 3195, 7203, 10963, 3201, 3014, 955, + 11499, 9970, 11119, 3135, 3712, 7443, 9542, 7484, 8736, 9995, 11227, + 1635, 9521, 1177, 8034, 140, 10436, 11563, 7678, 4320, 11289, 9198, + 12208, 2963, 7393, 2366, 9238, +} + +var psisBitrevMontgomery = [paramN]uint16{ + 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, + 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, + 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, + 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, + 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, + 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, + 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, + 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, + 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, + 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, + 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, + 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, + 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, + 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, + 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, + 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, + 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, + 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, + 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, + 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, + 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, + 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, + 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, + 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, + 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, + 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, + 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, + 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, + 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, + 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, + 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, + 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, + 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, + 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, + 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, + 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, + 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, + 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, + 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, + 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, + 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, + 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, + 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, + 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, + 3947, 11951, 2455, 6599, 10545, 10975, 3654, 2894, 7681, 7126, 7287, + 12269, 4119, 3343, 2151, 1522, 7174, 7350, 11041, 2442, 2148, 5959, + 6492, 8330, 8945, 5598, 3624, 10397, 1325, 6565, 1945, 11260, 10077, + 2674, 3338, 3276, 11034, 506, 6505, 1392, 5478, 8778, 1178, 2776, 3408, + 10347, 11124, 2575, 9489, 12096, 6092, 10058, 4167, 6085, 923, 11251, + 11912, 4578, 10669, 11914, 425, 10453, 392, 10104, 8464, 4235, 8761, + 7376, 2291, 3375, 7954, 8896, 6617, 7790, 1737, 11667, 3982, 9342, 6680, + 636, 6825, 7383, 512, 4670, 2900, 12050, 7735, 994, 1687, 11883, 7021, + 146, 10485, 1403, 5189, 6094, 2483, 2054, 3042, 10945, 3981, 10821, + 11826, 8882, 8151, 180, 9600, 7684, 5219, 10880, 6780, 204, 11232, 2600, + 7584, 3121, 3017, 11053, 7814, 7043, 4251, 4739, 11063, 6771, 7073, + 9261, 2360, 11925, 1928, 11825, 8024, 3678, 3205, 3359, 11197, 5209, + 8581, 3238, 8840, 1136, 9363, 1826, 3171, 4489, 7885, 346, 2068, 1389, + 8257, 3163, 4840, 6127, 8062, 8921, 612, 4238, 10763, 8067, 125, 11749, + 10125, 5416, 2110, 716, 9839, 10584, 11475, 11873, 3448, 343, 1908, + 4538, 10423, 7078, 4727, 1208, 11572, 3589, 2982, 1373, 1721, 10753, + 4103, 2429, 4209, 5412, 5993, 9011, 438, 3515, 7228, 1218, 8347, 5232, + 8682, 1327, 7508, 4924, 448, 1014, 10029, 12221, 4566, 5836, 12229, + 2717, 1535, 3200, 5588, 5845, 412, 5102, 7326, 3744, 3056, 2528, 7406, + 8314, 9202, 6454, 6613, 1417, 10032, 7784, 1518, 3765, 4176, 5063, 9828, + 2275, 6636, 4267, 6463, 2065, 7725, 3495, 8328, 8755, 8144, 10533, 5966, + 12077, 9175, 9520, 5596, 6302, 8400, 579, 6781, 11014, 5734, 11113, + 11164, 4860, 1131, 10844, 9068, 8016, 9694, 3837, 567, 9348, 7000, 6627, + 7699, 5082, 682, 11309, 5207, 4050, 7087, 844, 7434, 3769, 293, 9057, + 6940, 9344, 10883, 2633, 8190, 3944, 5530, 5604, 3480, 2171, 9282, + 11024, 2213, 8136, 3805, 767, 12239, 216, 11520, 6763, 10353, 7, 8566, + 845, 7235, 3154, 4360, 3285, 10268, 2832, 3572, 1282, 7559, 3229, 8360, + 10583, 6105, 3120, 6643, 6203, 8536, 8348, 6919, 3536, 9199, 10891, + 11463, 5043, 1658, 5618, 8787, 5789, 4719, 751, 11379, 6389, 10783, + 3065, 7806, 6586, 2622, 5386, 510, 7628, 6921, 578, 10345, 11839, 8929, + 4684, 12226, 7154, 9916, 7302, 8481, 3670, 11066, 2334, 1590, 7878, + 10734, 1802, 1891, 5103, 6151, 8820, 3418, 7846, 9951, 4693, 417, 9996, + 9652, 4510, 2946, 5461, 365, 881, 1927, 1015, 11675, 11009, 1371, 12265, + 2485, 11385, 5039, 6742, 8449, 1842, 12217, 8176, 9577, 4834, 7937, + 9461, 2643, 11194, 3045, 6508, 4094, 3451, 7911, 11048, 5406, 4665, + 3020, 6616, 11345, 7519, 3669, 5287, 1790, 7014, 5410, 11038, 11249, + 2035, 6125, 10407, 4565, 7315, 5078, 10506, 2840, 2478, 9270, 4194, + 9195, 4518, 7469, 1160, 6878, 2730, 10421, 10036, 1734, 3815, 10939, + 5832, 10595, 10759, 4423, 8420, 9617, 7119, 11010, 11424, 9173, 189, + 10080, 10526, 3466, 10588, 7592, 3578, 11511, 7785, 9663, 530, 12150, + 8957, 2532, 3317, 9349, 10243, 1481, 9332, 3454, 3758, 7899, 4218, 2593, + 11410, 2276, 982, 6513, 1849, 8494, 9021, 4523, 7988, 8, 457, 648, 150, + 8000, 2307, 2301, 874, 5650, 170, 9462, 2873, 9855, 11498, 2535, 11169, + 5808, 12268, 9687, 1901, 7171, 11787, 3846, 1573, 6063, 3793, 466, + 11259, 10608, 3821, 6320, 4649, 6263, 2929, +} + +var psisInvMontgomery = [paramN]uint16{ + 256, 10570, 1510, 7238, 1034, 7170, 6291, 7921, 11665, 3422, 4000, 2327, + 2088, 5565, 795, 10647, 1521, 5484, 2539, 7385, 1055, 7173, 8047, 11683, + 1669, 1994, 3796, 5809, 4341, 9398, 11876, 12230, 10525, 12037, 12253, + 3506, 4012, 9351, 4847, 2448, 7372, 9831, 3160, 2207, 5582, 2553, 7387, + 6322, 9681, 1383, 10731, 1533, 219, 5298, 4268, 7632, 6357, 9686, 8406, + 4712, 9451, 10128, 4958, 5975, 11387, 8649, 11769, 6948, 11526, 12180, + 1740, 10782, 6807, 2728, 7412, 4570, 4164, 4106, 11120, 12122, 8754, + 11784, 3439, 5758, 11356, 6889, 9762, 11928, 1704, 1999, 10819, 12079, + 12259, 7018, 11536, 1648, 1991, 2040, 2047, 2048, 10826, 12080, 8748, + 8272, 8204, 1172, 1923, 7297, 2798, 7422, 6327, 4415, 7653, 6360, 11442, + 12168, 7005, 8023, 9924, 8440, 8228, 2931, 7441, 1063, 3663, 5790, 9605, + 10150, 1450, 8985, 11817, 10466, 10273, 12001, 3470, 7518, 1074, 1909, + 7295, 9820, 4914, 702, 5367, 7789, 8135, 9940, 1420, 3714, 11064, 12114, + 12264, 1752, 5517, 9566, 11900, 1700, 3754, 5803, 829, 1874, 7290, 2797, + 10933, 5073, 7747, 8129, 6428, 6185, 11417, 1631, 233, 5300, 9535, + 10140, 11982, 8734, 8270, 2937, 10953, 8587, 8249, 2934, 9197, 4825, + 5956, 4362, 9401, 1343, 3703, 529, 10609, 12049, 6988, 6265, 895, 3639, + 4031, 4087, 4095, 585, 10617, 8539, 4731, 4187, 9376, 3095, 9220, 10095, + 10220, 1460, 10742, 12068, 1724, 5513, 11321, 6884, 2739, 5658, 6075, + 4379, 11159, 10372, 8504, 4726, 9453, 3106, 7466, 11600, 10435, 8513, + 9994, 8450, 9985, 3182, 10988, 8592, 2983, 9204, 4826, 2445, 5616, 6069, + 867, 3635, 5786, 11360, 5134, 2489, 10889, 12089, 1727, 7269, 2794, + 9177, 1311, 5454, 9557, 6632, 2703, 9164, 10087, 1441, 3717, 531, 3587, + 2268, 324, 5313, 759, 1864, 5533, 2546, 7386, 9833, 8427, 4715, 11207, + 1601, 7251, 4547, 11183, 12131, 1733, 10781, 10318, 1474, 10744, 5046, + 4232, 11138, 10369, 6748, 964, 7160, 4534, 7670, 8118, 8182, 4680, + 11202, 6867, 981, 8918, 1274, 182, 26, 7026, 8026, 11680, 12202, 10521, + 1503, 7237, 4545, 5916, 9623, 8397, 11733, 10454, 3249, 9242, 6587, 941, + 1890, 270, 10572, 6777, 9746, 6659, 6218, 6155, 6146, 878, 1881, 7291, + 11575, 12187, 1741, 7271, 8061, 11685, 6936, 4502, 9421, 4857, 4205, + 7623, 1089, 10689, 1527, 8996, 10063, 11971, 10488, 6765, 2722, 3900, + 9335, 11867, 6962, 11528, 5158, 4248, 4118, 5855, 2592, 5637, 6072, + 2623, 7397, 8079, 9932, 4930, 5971, 853, 3633, 519, 8852, 11798, 3441, + 11025, 1575, 225, 8810, 11792, 12218, 3501, 9278, 3081, 9218, 4828, + 7712, 8124, 11694, 12204, 3499, 4011, 573, 3593, 5780, 7848, 9899, + 10192, 1456, 208, 7052, 2763, 7417, 11593, 10434, 12024, 8740, 11782, + 10461, 3250, 5731, 7841, 9898, 1414, 202, 3540, 7528, 2831, 2160, 10842, + 5060, 4234, 4116, 588, 84, 12, 7024, 2759, 9172, 6577, 11473, 1639, + 9012, 3043, 7457, 6332, 11438, 1634, 1989, 9062, 11828, 8712, 11778, + 12216, 10523, 6770, 9745, 10170, 4964, 9487, 6622, 946, 8913, 6540, + 6201, 4397, 9406, 8366, 9973, 8447, 8229, 11709, 8695, 10020, 3187, + 5722, 2573, 10901, 6824, 4486, 4152, 9371, 8361, 2950, 2177, 311, 1800, + 9035, 8313, 11721, 3430, 490, 70, 10, 1757, 251, 3547, 7529, 11609, + 3414, 7510, 4584, 4166, 9373, 1339, 5458, 7802, 11648, 1664, 7260, 9815, + 10180, 6721, 9738, 10169, 8475, 8233, 9954, 1422, 8981, 1283, 5450, + 11312, 1616, 3742, 11068, 10359, 4991, 713, 3613, 9294, 8350, 4704, 672, + 96, 7036, 9783, 11931, 3460, 5761, 823, 10651, 12055, 10500, 1500, 5481, + 783, 3623, 11051, 8601, 8251, 8201, 11705, 10450, 5004, 4226, 7626, + 2845, 2162, 3820, 7568, 9859, 3164, 452, 10598, 1514, 5483, 6050, 6131, + 4387, 7649, 8115, 6426, 918, 8909, 8295, 1185, 5436, 11310, 8638, 1234, + 5443, 11311, 5127, 2488, 2111, 10835, 5059, 7745, 2862, 3920, 560, 80, + 1767, 2008, 3798, 11076, 6849, 2734, 10924, 12094, 8750, 1250, 10712, + 6797, 971, 7161, 1023, 8924, 4786, 7706, 4612, 4170, 7618, 6355, 4419, + 5898, 11376, 10403, 10264, 6733, 4473, 639, 5358, 2521, 9138, 3061, + 5704, 4326, 618, 5355, 765, 5376, 768, 7132, 4530, 9425, 3102, 9221, + 6584, 11474, 10417, 10266, 12000, 6981, 6264, 4406, 2385, 7363, 4563, + 4163, 7617, 9866, 3165, 9230, 11852, 10471, 5007, 5982, 11388, 5138, + 734, 3616, 11050, 12112, 6997, 11533, 12181, 10518, 12036, 3475, 2252, + 7344, 9827, 4915, 9480, 6621, 4457, 7659, 9872, 6677, 4465, 4149, 7615, + 4599, 657, 3605, 515, 10607, 6782, 4480, 640, 1847, 3775, 5806, 2585, + 5636, 9583, 1369, 10729, 8555, 10000, 11962, 5220, 7768, 8132, 8184, + 9947, 1421, 203, 29, 8782, 11788, 1684, 10774, 10317, 4985, 9490, 8378, + 4708, 11206, 5112, 5997, 7879, 11659, 12199, 8765, 10030, 4944, 5973, + 6120, 6141, 6144, 7900, 11662, 1666, 238, 34, 3516, 5769, 9602, 8394, + 9977, 6692, 956, 10670, 6791, 9748, 11926, 8726, 11780, 5194, 742, 106, + 8793, 10034, 3189, 10989, 5081, 4237, 5872, 4350, 2377, 10873, 6820, + 6241, 11425, 10410, 10265, 3222, 5727, 9596, 4882, 2453, 2106, 3812, + 11078, 12116, 5242, 4260, 11142, 8614, 11764, 12214, 5256, 4262, 4120, + 11122, 5100, 11262, 5120, 2487, 5622, 9581, 8391, 8221, 2930, 10952, + 12098, 6995, 6266, 9673, 4893, 699, 3611, 4027, 5842, 11368, 1624, 232, + 8811, 8281, 1183, 169, 8802, 3013, 2186, 5579, 797, 3625, 4029, 11109, + 1587, 7249, 11569, 8675, 6506, 2685, 10917, 12093, 12261, 12285, 1755, + 7273, 1039, 1904, 272, 3550, 9285, 3082, 5707, 6082, 4380, 7648, 11626, + 5172, 4250, 9385, 8363, 8217, 4685, 5936, 848, 8899, 6538, 934, 1889, + 3781, 9318, 10109, 10222, 6727, 961, 5404, 772, 5377, 9546, 8386, 1198, + 8949, 3034, 2189, 7335, 4559, 5918, 2601, 10905, 5069, 9502, 3113, 7467, + 8089, 11689, 5181, 9518, 8382, 2953, 3933, 4073, 4093, 7607, 8109, 2914, + 5683, 4323, 11151, 1593, 10761, 6804, 972, 3650, 2277, 5592, 4310, 7638, + 9869, 4921, 703, 1856, 9043, 4803, 9464, 1352, 8971, 11815, 5199, 7765, + 6376, 4422, 7654, 2849, 407, 8836, 6529, 7955, 2892, 9191, 1313, 10721, + 12065, 12257, 1751, 9028, 8312, 2943, 2176, 3822, 546, 78, 8789, 11789, + 10462, 12028, 6985, 4509, 9422, 1346, 5459, 4291, 613, 10621, 6784, + 9747, 3148, 7472, 2823, 5670, 810, 7138, 8042, 4660, 7688, 6365, 6176, + 6149, 2634, 5643, 9584, 10147, 11983, 5223, 9524, 11894, 10477, 8519, + 1217, 3685, 2282, 326, 10580, 3267, 7489, 4581, 2410, 5611, 11335, 6886, + 8006, 8166, 11700, 3427, 11023, 8597, 10006, 3185, 455, 65, 5276, 7776, + 4622, 5927, 7869, 9902, 11948, 5218, 2501, 5624, 2559, 10899, 1557, + 1978, 10816, 10323, 8497, 4725, 675, 1852, 10798, 12076, 10503, 3256, + 9243, 3076, 2195, 10847, 12083, 10504, 12034, 10497, +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go b/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go new file mode 100644 index 0000000..26df25a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go @@ -0,0 +1,32 @@ +// poly.go - NewHope reductions. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +// Incomplete-reduction routines; for details on allowed input ranges +// and produced output ranges, see the description in the paper: +// https://cryptojedi.org/papers/#newhope + +const ( + qinv = 12287 // -inverse_mod(p,2^18) + rlog = 18 +) + +func montgomeryReduce(a uint32) uint16 { + u := a * qinv + u &= ((1 << rlog) - 1) + u *= paramQ + a = (a + u) >> 18 + return uint16(a) +} + +func barrettReduce(a uint16) uint16 { + u := (uint32(a) * 5) >> 16 + u *= paramQ + a -= uint16(u) + return a +} diff --git a/vendor/github.com/jameskeane/bcrypt/.gitignore b/vendor/github.com/jameskeane/bcrypt/.gitignore new file mode 100644 index 0000000..c1e1c06 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/.gitignore @@ -0,0 +1,5 @@ +6.out +*.6 +_obj +_test +_testmain.go diff --git a/vendor/github.com/jameskeane/bcrypt/LICENSE b/vendor/github.com/jameskeane/bcrypt/LICENSE new file mode 100644 index 0000000..555bb71 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/LICENSE @@ -0,0 +1,29 @@ +Copyright (c) 2011 James Keane . All rights reserved. +Copyright (c) 2006 Damien Miller . +Copyright (c) 2011 ZooWar.com, All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of weekendlogic nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/jameskeane/bcrypt/README b/vendor/github.com/jameskeane/bcrypt/README new file mode 100644 index 0000000..a4d638a --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/README @@ -0,0 +1,46 @@ +Installation: + goinstall github.com/jameskeane/bcrypt + +Example use: + package main + + import ( + "fmt" + "github.com/jameskeane/bcrypt" + ) + + var password = "WyWihatdyd?frub1" + var bad_password = "just a wild guess" + + func main() { + // generate a random salt with default rounds of complexity + salt, _ := bcrypt.Salt() + + // generate a random salt with 10 rounds of complexity + salt, _ = bcrypt.Salt(10) + + // hash and verify a password with random salt + hash, _ := bcrypt.Hash(password) + if bcrypt.Match(password, hash) { + fmt.Println("They match") + } + + // hash and verify a password with a static salt + hash, _ = bcrypt.Hash(password, salt) + if bcrypt.Match(password, hash) { + fmt.Println("They match") + } + + // verify a random password fails to match the hashed password + if !bcrypt.Match(bad_password, hash) { + fmt.Println("They don't match") + } + } + +Todo: + grep 'TODO' * -r + +Notes: + * This library is derived from jBcrypt by Damien Miller + * bcrypt_test.go is from ZooWar.com + diff --git a/vendor/github.com/jameskeane/bcrypt/bcrypt.go b/vendor/github.com/jameskeane/bcrypt/bcrypt.go new file mode 100644 index 0000000..fe84921 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/bcrypt.go @@ -0,0 +1,190 @@ +package bcrypt + +import ( + "bytes" + "crypto/rand" + "crypto/subtle" + "encoding/base64" + "errors" + "strconv" + "strings" +) + +var ( + InvalidRounds = errors.New("bcrypt: Invalid rounds parameter") + InvalidSalt = errors.New("bcrypt: Invalid salt supplied") +) + +const ( + MaxRounds = 31 + MinRounds = 4 + DefaultRounds = 12 + SaltLen = 16 + BlowfishRounds = 16 +) + +var enc = base64.NewEncoding("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") + +// Helper function to build the bcrypt hash string +// payload takes : +// * []byte -> which it base64 encodes it (trims padding "=") and writes it to the buffer +// * string -> which it writes straight to the buffer +func build_bcrypt_str(minor byte, rounds uint, payload ...interface{}) []byte { + rs := bytes.NewBuffer(make([]byte, 0, 61)) + rs.WriteString("$2") + if minor >= 'a' { + rs.WriteByte(minor) + } + + rs.WriteByte('$') + if rounds < 10 { + rs.WriteByte('0') + } + + rs.WriteString(strconv.FormatUint(uint64(rounds), 10)) + rs.WriteByte('$') + for _, p := range payload { + if pb, ok := p.([]byte); ok { + rs.WriteString(strings.TrimRight(enc.EncodeToString(pb), "=")) + } else if ps, ok := p.(string); ok { + rs.WriteString(ps) + } + } + return rs.Bytes() +} + +// Salt generation +func Salt(rounds ...int) (string, error) { + rb, err := SaltBytes(rounds...) + return string(rb), err +} + +func SaltBytes(rounds ...int) (salt []byte, err error) { + r := DefaultRounds + if len(rounds) > 0 { + r = rounds[0] + if r < MinRounds || r > MaxRounds { + return nil, InvalidRounds + } + } + + rnd := make([]byte, SaltLen) + read, err := rand.Read(rnd) + if read != SaltLen || err != nil { + return nil, err + } + + return build_bcrypt_str('a', uint(r), rnd), nil +} + +func consume(r *bytes.Buffer, b byte) bool { + got, err := r.ReadByte() + if err != nil { + return false + } + if got != b { + r.UnreadByte() + return false + } + + return true +} + +func Hash(password string, salt ...string) (ps string, err error) { + var s []byte + var pb []byte + + if len(salt) == 0 { + s, err = SaltBytes() + if err != nil { + return + } + } else if len(salt) > 0 { + s = []byte(salt[0]) + } + + pb, err = HashBytes([]byte(password), s) + return string(pb), err +} + +func HashBytes(password []byte, salt ...[]byte) (hash []byte, err error) { + var s []byte + + if len(salt) == 0 { + s, err = SaltBytes() + if err != nil { + return + } + } else if len(salt) > 0 { + s = salt[0] + } + + // TODO: use a regex? I hear go has bad regex performance a simple FSM seems faster + // "^\\$2([a-z]?)\\$([0-3][0-9])\\$([\\./A-Za-z0-9]{22}+)" + + // Ok, extract the required information + minor := byte(0) + sr := bytes.NewBuffer(s) + + if !consume(sr, '$') || !consume(sr, '2') { + return nil, InvalidSalt + } + + if !consume(sr, '$') { + minor, _ = sr.ReadByte() + if minor != 'a' || !consume(sr, '$') { + return nil, InvalidSalt + } + } + + rounds_bytes := make([]byte, 2) + read, err := sr.Read(rounds_bytes) + if err != nil || read != 2 { + return nil, InvalidSalt + } + + if !consume(sr, '$') { + return nil, InvalidSalt + } + + var rounds64 uint64 + rounds64, err = strconv.ParseUint(string(rounds_bytes), 10, 0) + if err != nil { + return nil, InvalidSalt + } + + rounds := uint(rounds64) + + // TODO: can't we use base64.NewDecoder(enc, sr) ? + salt_bytes := make([]byte, 22) + read, err = sr.Read(salt_bytes) + if err != nil || read != 22 { + return nil, InvalidSalt + } + + var saltb []byte + // encoding/base64 expects 4 byte blocks padded, since bcrypt uses only 22 bytes we need to go up + saltb, err = enc.DecodeString(string(salt_bytes) + "==") + if err != nil { + return nil, err + } + + // cipher expects null terminated input (go initializes everything with zero values so this works) + password_term := make([]byte, len(password)+1) + copy(password_term, password) + + hashed := crypt_raw(password_term, saltb[:SaltLen], rounds) + return build_bcrypt_str(minor, rounds, string(salt_bytes), hashed[:len(bf_crypt_ciphertext)*4-1]), nil +} + +func Match(password, hash string) bool { + return MatchBytes([]byte(password), []byte(hash)) +} + +func MatchBytes(password []byte, hash []byte) bool { + h, err := HashBytes(password, hash) + if err != nil { + return false + } + return subtle.ConstantTimeCompare(h, hash) == 1 +} diff --git a/vendor/github.com/jameskeane/bcrypt/cipher.go b/vendor/github.com/jameskeane/bcrypt/cipher.go new file mode 100644 index 0000000..00724e4 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/cipher.go @@ -0,0 +1,415 @@ +package bcrypt + +var p_orig = [18]uint{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b, +} + +var s_orig = [1024]uint{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var bf_crypt_ciphertext = [6]uint{ + 0x4f727068, 0x65616e42, 0x65686f6c, + 0x64657253, 0x63727944, 0x6f756274, +} + + +type cipher struct { + P [18]uint + S [1024]uint + data [6]uint +} + +func (c *cipher) encipher(lr []uint, off int) { + l := lr[off] ^ c.P[0] + r := lr[off+1] + + for i := 0; i <= BlowfishRounds-2; i += 2{ + // Feistel substitution on left and right word respectively + r ^= (((c.S[(l>>24)&0xff] + c.S[0x100|((l>>16)&0xff)]) ^ c.S[0x200|((l>>8)&0xff)]) + c.S[0x300|(l&0xff)]) ^ c.P[i+1] + l ^= (((c.S[(r>>24)&0xff] + c.S[0x100|((r>>16)&0xff)]) ^ c.S[0x200|((r>>8)&0xff)]) + c.S[0x300|(r&0xff)]) ^ c.P[i+2] + } + + lr[off] = r ^ c.P[BlowfishRounds+1] + lr[off+1] = l +} +/** + * Cycically extract a word of key material + * @param data the string to extract the data from + * @param off the current offset into the data + * @return the next word of material from data and the next offset into the data + */ +func streamtoword(data []byte, off int) (uint, int) { + var word uint + for i := 0; i < 4; i++ { + word = (word << 8) | uint(data[off]&0xff) + off = (off + 1) % len(data) + } + + return word, off +} + +/** + * Key the Blowfish cipher + * @param key an array containing the key + */ +func (c *cipher) key(key []byte) { + var word uint + off := 0 + lr := []uint{0, 0} + plen := len(c.P) + slen := len(c.S) + + for i := 0; i < plen; i++ { + word, off = streamtoword(key, off) + c.P[i] = c.P[i] ^ word + } + + for i := 0; i < plen; i += 2 { + c.encipher(lr, 0) + c.P[i] = lr[0] + c.P[i+1] = lr[1] + } + + for i := 0; i < slen; i += 2 { + c.encipher(lr, 0) + c.S[i] = lr[0] + c.S[i+1] = lr[1] + } +} + +/** + * Perform the "enhanced key schedule" step described by + * Provos and Mazieres in "A Future-Adaptable Password Scheme" + * http://www.openbsd.org/papers/bcrypt-paper.ps + * @param data salt information + * @param key password information + */ +func (c *cipher) ekskey(data []byte, key []byte) { + var word uint + koff := 0 + doff := 0 + lr := []uint{0, 0} + plen := len(c.P) + slen := len(c.S) + + for i := 0; i < plen; i++ { + word, koff = streamtoword(key, koff) + c.P[i] = c.P[i] ^ word + } + + for i := 0; i < plen; i += 2 { + word, doff = streamtoword(data, doff) + lr[0] ^= word + word, doff = streamtoword(data, doff) + lr[1] ^= word + c.encipher(lr, 0) + c.P[i] = lr[0] + c.P[i+1] = lr[1] + } + + for i := 0; i < slen; i += 2 { + word, doff = streamtoword(data, doff) + lr[0] ^= word + word, doff = streamtoword(data, doff) + lr[1] ^= word + c.encipher(lr, 0) + c.S[i] = lr[0] + c.S[i+1] = lr[1] + } +} + +/** + * Perform the central password hashing step in the + * bcrypt scheme + * @param password the password to hash + * @param salt the binary salt to hash with the password + * @param log_rounds the binary logarithm of the number + * of rounds of hashing to apply + * @return an array containing the binary hashed password + */ +func crypt_raw(password []byte, salt []byte, log_rounds uint) []byte { + c := &cipher{P:p_orig, S:s_orig, data:bf_crypt_ciphertext} + + rounds := 1 << log_rounds + c.ekskey(salt, password) + for i := 0; i < rounds; i++ { + c.key(password) + c.key(salt) + } + + for i := 0; i < 64; i++ { + for j := 0; j < (6 >> 1); j++ { + c.encipher(c.data[:], j<<1) + } + } + + ret := make([]byte, 24) + for i := 0; i < 6; i++ { + k := i<<2 + ret[k] = (byte)((c.data[i] >> 24) & 0xff) + ret[k+1] = (byte)((c.data[i] >> 16) & 0xff) + ret[k+2] = (byte)((c.data[i] >> 8) & 0xff) + ret[k+3] = (byte)(c.data[i] & 0xff) + } + return ret +} diff --git a/vendor/github.com/klauspost/cpuid/.gitignore b/vendor/github.com/klauspost/cpuid/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/klauspost/cpuid/.travis.yml b/vendor/github.com/klauspost/cpuid/.travis.yml new file mode 100644 index 0000000..630192d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.travis.yml @@ -0,0 +1,23 @@ +language: go + +sudo: false + +os: + - linux + - osx +go: + - 1.8.x + - 1.9.x + - 1.10.x + - master + +script: + - go vet ./... + - go test -v ./... + - go test -race ./... + - diff <(gofmt -d .) <("") + +matrix: + allow_failures: + - go: 'master' + fast_finish: true diff --git a/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt b/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt new file mode 100644 index 0000000..2ef4714 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt @@ -0,0 +1,35 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2015- Klaus Post & Contributors. +Email: klauspost@gmail.com + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/vendor/github.com/klauspost/cpuid/LICENSE b/vendor/github.com/klauspost/cpuid/LICENSE new file mode 100644 index 0000000..5cec7ee --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/klauspost/cpuid/README.md b/vendor/github.com/klauspost/cpuid/README.md new file mode 100644 index 0000000..b36e504 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/README.md @@ -0,0 +1,148 @@ +# cpuid +Package cpuid provides information about the CPU running the current program. + +CPU features are detected on startup, and kept for fast access through the life of the application. +Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use. + +You can access the CPU information by accessing the shared CPU variable of the cpuid library. + +Package home: https://github.com/klauspost/cpuid + +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg +[2]: https://godoc.org/github.com/klauspost/cpuid +[3]: https://travis-ci.org/klauspost/cpuid.svg +[4]: https://travis-ci.org/klauspost/cpuid + +# features +## CPU Instructions +* **CMOV** (i686 CMOV) +* **NX** (NX (No-Execute) bit) +* **AMD3DNOW** (AMD 3DNOW) +* **AMD3DNOWEXT** (AMD 3DNowExt) +* **MMX** (standard MMX) +* **MMXEXT** (SSE integer functions or AMD MMX ext) +* **SSE** (SSE functions) +* **SSE2** (P4 SSE functions) +* **SSE3** (Prescott SSE3 functions) +* **SSSE3** (Conroe SSSE3 functions) +* **SSE4** (Penryn SSE4.1 functions) +* **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions) +* **SSE42** (Nehalem SSE4.2 functions) +* **AVX** (AVX functions) +* **AVX2** (AVX2 functions) +* **FMA3** (Intel FMA 3) +* **FMA4** (Bulldozer FMA4 functions) +* **XOP** (Bulldozer XOP functions) +* **F16C** (Half-precision floating-point conversion) +* **BMI1** (Bit Manipulation Instruction Set 1) +* **BMI2** (Bit Manipulation Instruction Set 2) +* **TBM** (AMD Trailing Bit Manipulation) +* **LZCNT** (LZCNT instruction) +* **POPCNT** (POPCNT instruction) +* **AESNI** (Advanced Encryption Standard New Instructions) +* **CLMUL** (Carry-less Multiplication) +* **HTT** (Hyperthreading (enabled)) +* **HLE** (Hardware Lock Elision) +* **RTM** (Restricted Transactional Memory) +* **RDRAND** (RDRAND instruction is available) +* **RDSEED** (RDSEED instruction is available) +* **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions)) +* **SHA** (Intel SHA Extensions) +* **AVX512F** (AVX-512 Foundation) +* **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions) +* **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions) +* **AVX512PF** (AVX-512 Prefetch Instructions) +* **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions) +* **AVX512CD** (AVX-512 Conflict Detection Instructions) +* **AVX512BW** (AVX-512 Byte and Word Instructions) +* **AVX512VL** (AVX-512 Vector Length Extensions) +* **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions) +* **MPX** (Intel MPX (Memory Protection Extensions)) +* **ERMS** (Enhanced REP MOVSB/STOSB) +* **RDTSCP** (RDTSCP Instruction) +* **CX16** (CMPXCHG16B Instruction) +* **SGX** (Software Guard Extensions, with activation details) +* **VMX** (Virtual Machine Extensions) + +## Performance +* **RDTSCP()** Returns current cycle count. Can be used for benchmarking. +* **SSE2SLOW** (SSE2 is supported, but usually not faster) +* **SSE3SLOW** (SSE3 is supported, but usually not faster) +* **ATOM** (Atom processor, some SSSE3 instructions are slower) +* **Cache line** (Probable size of a cache line). +* **L1, L2, L3 Cache size** on newer Intel/AMD CPUs. + +## Cpu Vendor/VM +* **Intel** +* **AMD** +* **VIA** +* **Transmeta** +* **NSC** +* **KVM** (Kernel-based Virtual Machine) +* **MSVM** (Microsoft Hyper-V or Windows Virtual PC) +* **VMware** +* **XenHVM** +* **Bhyve** +* **Hygon** + +# installing + +```go get github.com/klauspost/cpuid``` + +# example + +```Go +package main + +import ( + "fmt" + "github.com/klauspost/cpuid" +) + +func main() { + // Print basic CPU information: + fmt.Println("Name:", cpuid.CPU.BrandName) + fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores) + fmt.Println("ThreadsPerCore:", cpuid.CPU.ThreadsPerCore) + fmt.Println("LogicalCores:", cpuid.CPU.LogicalCores) + fmt.Println("Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model) + fmt.Println("Features:", cpuid.CPU.Features) + fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine) + fmt.Println("L1 Data Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L1 Instruction Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L2 Cache:", cpuid.CPU.Cache.L2, "bytes") + fmt.Println("L3 Cache:", cpuid.CPU.Cache.L3, "bytes") + + // Test if we have a specific feature: + if cpuid.CPU.SSE() { + fmt.Println("We have Streaming SIMD Extensions") + } +} +``` + +Sample output: +``` +>go run main.go +Name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz +PhysicalCores: 2 +ThreadsPerCore: 2 +LogicalCores: 4 +Family 6 Model: 42 +Features: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL +Cacheline bytes: 64 +We have Streaming SIMD Extensions +``` + +# private package + +In the "private" folder you can find an autogenerated version of the library you can include in your own packages. + +For this purpose all exports are removed, and functions and constants are lowercased. + +This is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages. + +# license + +This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/cpuid.go b/vendor/github.com/klauspost/cpuid/cpuid.go new file mode 100644 index 0000000..0a6af40 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid.go @@ -0,0 +1,1069 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// Package cpuid provides information about the CPU running the current program. +// +// CPU features are detected on startup, and kept for fast access through the life of the application. +// Currently x86 / x64 (AMD64) is supported. +// +// You can access the CPU information by accessing the shared CPU variable of the cpuid library. +// +// Package home: https://github.com/klauspost/cpuid +package cpuid + +import "strings" + +// Vendor is a representation of a CPU vendor. +type Vendor int + +const ( + Other Vendor = iota + Intel + AMD + VIA + Transmeta + NSC + KVM // Kernel-based Virtual Machine + MSVM // Microsoft Hyper-V or Windows Virtual PC + VMware + XenHVM + Bhyve + Hygon +) + +const ( + CMOV = 1 << iota // i686 CMOV + NX // NX (No-Execute) bit + AMD3DNOW // AMD 3DNOW + AMD3DNOWEXT // AMD 3DNowExt + MMX // standard MMX + MMXEXT // SSE integer functions or AMD MMX ext + SSE // SSE functions + SSE2 // P4 SSE functions + SSE3 // Prescott SSE3 functions + SSSE3 // Conroe SSSE3 functions + SSE4 // Penryn SSE4.1 functions + SSE4A // AMD Barcelona microarchitecture SSE4a instructions + SSE42 // Nehalem SSE4.2 functions + AVX // AVX functions + AVX2 // AVX2 functions + FMA3 // Intel FMA 3 + FMA4 // Bulldozer FMA4 functions + XOP // Bulldozer XOP functions + F16C // Half-precision floating-point conversion + BMI1 // Bit Manipulation Instruction Set 1 + BMI2 // Bit Manipulation Instruction Set 2 + TBM // AMD Trailing Bit Manipulation + LZCNT // LZCNT instruction + POPCNT // POPCNT instruction + AESNI // Advanced Encryption Standard New Instructions + CLMUL // Carry-less Multiplication + HTT // Hyperthreading (enabled) + HLE // Hardware Lock Elision + RTM // Restricted Transactional Memory + RDRAND // RDRAND instruction is available + RDSEED // RDSEED instruction is available + ADX // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA // Intel SHA Extensions + AVX512F // AVX-512 Foundation + AVX512DQ // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF // AVX-512 Prefetch Instructions + AVX512ER // AVX-512 Exponential and Reciprocal Instructions + AVX512CD // AVX-512 Conflict Detection Instructions + AVX512BW // AVX-512 Byte and Word Instructions + AVX512VL // AVX-512 Vector Length Extensions + AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions + AVX512VNNI // AVX-512 Vector Neural Network Instructions + MPX // Intel MPX (Memory Protection Extensions) + ERMS // Enhanced REP MOVSB/STOSB + RDTSCP // RDTSCP Instruction + CX16 // CMPXCHG16B Instruction + SGX // Software Guard Extensions + IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB) + STIBP // Single Thread Indirect Branch Predictors + VMX // Virtual Machine Extensions + + // Performance indicators + SSE2SLOW // SSE2 is supported, but usually not faster + SSE3SLOW // SSE3 is supported, but usually not faster + ATOM // Atom processor, some SSSE3 instructions are slower +) + +var flagNames = map[Flags]string{ + CMOV: "CMOV", // i686 CMOV + NX: "NX", // NX (No-Execute) bit + AMD3DNOW: "AMD3DNOW", // AMD 3DNOW + AMD3DNOWEXT: "AMD3DNOWEXT", // AMD 3DNowExt + MMX: "MMX", // Standard MMX + MMXEXT: "MMXEXT", // SSE integer functions or AMD MMX ext + SSE: "SSE", // SSE functions + SSE2: "SSE2", // P4 SSE2 functions + SSE3: "SSE3", // Prescott SSE3 functions + SSSE3: "SSSE3", // Conroe SSSE3 functions + SSE4: "SSE4.1", // Penryn SSE4.1 functions + SSE4A: "SSE4A", // AMD Barcelona microarchitecture SSE4a instructions + SSE42: "SSE4.2", // Nehalem SSE4.2 functions + AVX: "AVX", // AVX functions + AVX2: "AVX2", // AVX functions + FMA3: "FMA3", // Intel FMA 3 + FMA4: "FMA4", // Bulldozer FMA4 functions + XOP: "XOP", // Bulldozer XOP functions + F16C: "F16C", // Half-precision floating-point conversion + BMI1: "BMI1", // Bit Manipulation Instruction Set 1 + BMI2: "BMI2", // Bit Manipulation Instruction Set 2 + TBM: "TBM", // AMD Trailing Bit Manipulation + LZCNT: "LZCNT", // LZCNT instruction + POPCNT: "POPCNT", // POPCNT instruction + AESNI: "AESNI", // Advanced Encryption Standard New Instructions + CLMUL: "CLMUL", // Carry-less Multiplication + HTT: "HTT", // Hyperthreading (enabled) + HLE: "HLE", // Hardware Lock Elision + RTM: "RTM", // Restricted Transactional Memory + RDRAND: "RDRAND", // RDRAND instruction is available + RDSEED: "RDSEED", // RDSEED instruction is available + ADX: "ADX", // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA: "SHA", // Intel SHA Extensions + AVX512F: "AVX512F", // AVX-512 Foundation + AVX512DQ: "AVX512DQ", // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA: "AVX512IFMA", // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF: "AVX512PF", // AVX-512 Prefetch Instructions + AVX512ER: "AVX512ER", // AVX-512 Exponential and Reciprocal Instructions + AVX512CD: "AVX512CD", // AVX-512 Conflict Detection Instructions + AVX512BW: "AVX512BW", // AVX-512 Byte and Word Instructions + AVX512VL: "AVX512VL", // AVX-512 Vector Length Extensions + AVX512VBMI: "AVX512VBMI", // AVX-512 Vector Bit Manipulation Instructions + AVX512VNNI: "AVX512VNNI", // AVX-512 Vector Neural Network Instructions + MPX: "MPX", // Intel MPX (Memory Protection Extensions) + ERMS: "ERMS", // Enhanced REP MOVSB/STOSB + RDTSCP: "RDTSCP", // RDTSCP Instruction + CX16: "CX16", // CMPXCHG16B Instruction + SGX: "SGX", // Software Guard Extensions + IBPB: "IBPB", // Indirect Branch Restricted Speculation and Indirect Branch Predictor Barrier + STIBP: "STIBP", // Single Thread Indirect Branch Predictors + VMX: "VMX", // Virtual Machine Extensions + + // Performance indicators + SSE2SLOW: "SSE2SLOW", // SSE2 supported, but usually not faster + SSE3SLOW: "SSE3SLOW", // SSE3 supported, but usually not faster + ATOM: "ATOM", // Atom processor, some SSSE3 instructions are slower + +} + +// CPUInfo contains information about the detected system CPU. +type CPUInfo struct { + BrandName string // Brand name reported by the CPU + VendorID Vendor // Comparable CPU vendor ID + Features Flags // Features of the CPU + PhysicalCores int // Number of physical processor cores in your CPU. Will be 0 if undetectable. + ThreadsPerCore int // Number of threads per physical core. Will be 1 if undetectable. + LogicalCores int // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable. + Family int // CPU family number + Model int // CPU model number + CacheLine int // Cache line size in bytes. Will be 0 if undetectable. + Cache struct { + L1I int // L1 Instruction Cache (per core or shared). Will be -1 if undetected + L1D int // L1 Data Cache (per core or shared). Will be -1 if undetected + L2 int // L2 Cache (per core or shared). Will be -1 if undetected + L3 int // L3 Instruction Cache (per core or shared). Will be -1 if undetected + } + SGX SGXSupport + maxFunc uint32 + maxExFunc uint32 +} + +var cpuid func(op uint32) (eax, ebx, ecx, edx uint32) +var cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32) +var xgetbv func(index uint32) (eax, edx uint32) +var rdtscpAsm func() (eax, ebx, ecx, edx uint32) + +// CPU contains information about the CPU as detected on startup, +// or when Detect last was called. +// +// Use this as the primary entry point to you data, +// this way queries are +var CPU CPUInfo + +func init() { + initCPU() + Detect() +} + +// Detect will re-detect current CPU info. +// This will replace the content of the exported CPU variable. +// +// Unless you expect the CPU to change while you are running your program +// you should not need to call this function. +// If you call this, you must ensure that no other goroutine is accessing the +// exported CPU variable. +func Detect() { + CPU.maxFunc = maxFunctionID() + CPU.maxExFunc = maxExtendedFunction() + CPU.BrandName = brandName() + CPU.CacheLine = cacheLine() + CPU.Family, CPU.Model = familyModel() + CPU.Features = support() + CPU.SGX = hasSGX(CPU.Features&SGX != 0) + CPU.ThreadsPerCore = threadsPerCore() + CPU.LogicalCores = logicalCores() + CPU.PhysicalCores = physicalCores() + CPU.VendorID = vendorID() + CPU.cacheSize() +} + +// Generated here: http://play.golang.org/p/BxFH2Gdc0G + +// Cmov indicates support of CMOV instructions +func (c CPUInfo) Cmov() bool { + return c.Features&CMOV != 0 +} + +// Amd3dnow indicates support of AMD 3DNOW! instructions +func (c CPUInfo) Amd3dnow() bool { + return c.Features&AMD3DNOW != 0 +} + +// Amd3dnowExt indicates support of AMD 3DNOW! Extended instructions +func (c CPUInfo) Amd3dnowExt() bool { + return c.Features&AMD3DNOWEXT != 0 +} + +// VMX indicates support of VMX +func (c CPUInfo) VMX() bool { + return c.Features&VMX != 0 +} + +// MMX indicates support of MMX instructions +func (c CPUInfo) MMX() bool { + return c.Features&MMX != 0 +} + +// MMXExt indicates support of MMXEXT instructions +// (SSE integer functions or AMD MMX ext) +func (c CPUInfo) MMXExt() bool { + return c.Features&MMXEXT != 0 +} + +// SSE indicates support of SSE instructions +func (c CPUInfo) SSE() bool { + return c.Features&SSE != 0 +} + +// SSE2 indicates support of SSE 2 instructions +func (c CPUInfo) SSE2() bool { + return c.Features&SSE2 != 0 +} + +// SSE3 indicates support of SSE 3 instructions +func (c CPUInfo) SSE3() bool { + return c.Features&SSE3 != 0 +} + +// SSSE3 indicates support of SSSE 3 instructions +func (c CPUInfo) SSSE3() bool { + return c.Features&SSSE3 != 0 +} + +// SSE4 indicates support of SSE 4 (also called SSE 4.1) instructions +func (c CPUInfo) SSE4() bool { + return c.Features&SSE4 != 0 +} + +// SSE42 indicates support of SSE4.2 instructions +func (c CPUInfo) SSE42() bool { + return c.Features&SSE42 != 0 +} + +// AVX indicates support of AVX instructions +// and operating system support of AVX instructions +func (c CPUInfo) AVX() bool { + return c.Features&AVX != 0 +} + +// AVX2 indicates support of AVX2 instructions +func (c CPUInfo) AVX2() bool { + return c.Features&AVX2 != 0 +} + +// FMA3 indicates support of FMA3 instructions +func (c CPUInfo) FMA3() bool { + return c.Features&FMA3 != 0 +} + +// FMA4 indicates support of FMA4 instructions +func (c CPUInfo) FMA4() bool { + return c.Features&FMA4 != 0 +} + +// XOP indicates support of XOP instructions +func (c CPUInfo) XOP() bool { + return c.Features&XOP != 0 +} + +// F16C indicates support of F16C instructions +func (c CPUInfo) F16C() bool { + return c.Features&F16C != 0 +} + +// BMI1 indicates support of BMI1 instructions +func (c CPUInfo) BMI1() bool { + return c.Features&BMI1 != 0 +} + +// BMI2 indicates support of BMI2 instructions +func (c CPUInfo) BMI2() bool { + return c.Features&BMI2 != 0 +} + +// TBM indicates support of TBM instructions +// (AMD Trailing Bit Manipulation) +func (c CPUInfo) TBM() bool { + return c.Features&TBM != 0 +} + +// Lzcnt indicates support of LZCNT instruction +func (c CPUInfo) Lzcnt() bool { + return c.Features&LZCNT != 0 +} + +// Popcnt indicates support of POPCNT instruction +func (c CPUInfo) Popcnt() bool { + return c.Features&POPCNT != 0 +} + +// HTT indicates the processor has Hyperthreading enabled +func (c CPUInfo) HTT() bool { + return c.Features&HTT != 0 +} + +// SSE2Slow indicates that SSE2 may be slow on this processor +func (c CPUInfo) SSE2Slow() bool { + return c.Features&SSE2SLOW != 0 +} + +// SSE3Slow indicates that SSE3 may be slow on this processor +func (c CPUInfo) SSE3Slow() bool { + return c.Features&SSE3SLOW != 0 +} + +// AesNi indicates support of AES-NI instructions +// (Advanced Encryption Standard New Instructions) +func (c CPUInfo) AesNi() bool { + return c.Features&AESNI != 0 +} + +// Clmul indicates support of CLMUL instructions +// (Carry-less Multiplication) +func (c CPUInfo) Clmul() bool { + return c.Features&CLMUL != 0 +} + +// NX indicates support of NX (No-Execute) bit +func (c CPUInfo) NX() bool { + return c.Features&NX != 0 +} + +// SSE4A indicates support of AMD Barcelona microarchitecture SSE4a instructions +func (c CPUInfo) SSE4A() bool { + return c.Features&SSE4A != 0 +} + +// HLE indicates support of Hardware Lock Elision +func (c CPUInfo) HLE() bool { + return c.Features&HLE != 0 +} + +// RTM indicates support of Restricted Transactional Memory +func (c CPUInfo) RTM() bool { + return c.Features&RTM != 0 +} + +// Rdrand indicates support of RDRAND instruction is available +func (c CPUInfo) Rdrand() bool { + return c.Features&RDRAND != 0 +} + +// Rdseed indicates support of RDSEED instruction is available +func (c CPUInfo) Rdseed() bool { + return c.Features&RDSEED != 0 +} + +// ADX indicates support of Intel ADX (Multi-Precision Add-Carry Instruction Extensions) +func (c CPUInfo) ADX() bool { + return c.Features&ADX != 0 +} + +// SHA indicates support of Intel SHA Extensions +func (c CPUInfo) SHA() bool { + return c.Features&SHA != 0 +} + +// AVX512F indicates support of AVX-512 Foundation +func (c CPUInfo) AVX512F() bool { + return c.Features&AVX512F != 0 +} + +// AVX512DQ indicates support of AVX-512 Doubleword and Quadword Instructions +func (c CPUInfo) AVX512DQ() bool { + return c.Features&AVX512DQ != 0 +} + +// AVX512IFMA indicates support of AVX-512 Integer Fused Multiply-Add Instructions +func (c CPUInfo) AVX512IFMA() bool { + return c.Features&AVX512IFMA != 0 +} + +// AVX512PF indicates support of AVX-512 Prefetch Instructions +func (c CPUInfo) AVX512PF() bool { + return c.Features&AVX512PF != 0 +} + +// AVX512ER indicates support of AVX-512 Exponential and Reciprocal Instructions +func (c CPUInfo) AVX512ER() bool { + return c.Features&AVX512ER != 0 +} + +// AVX512CD indicates support of AVX-512 Conflict Detection Instructions +func (c CPUInfo) AVX512CD() bool { + return c.Features&AVX512CD != 0 +} + +// AVX512BW indicates support of AVX-512 Byte and Word Instructions +func (c CPUInfo) AVX512BW() bool { + return c.Features&AVX512BW != 0 +} + +// AVX512VL indicates support of AVX-512 Vector Length Extensions +func (c CPUInfo) AVX512VL() bool { + return c.Features&AVX512VL != 0 +} + +// AVX512VBMI indicates support of AVX-512 Vector Bit Manipulation Instructions +func (c CPUInfo) AVX512VBMI() bool { + return c.Features&AVX512VBMI != 0 +} + +// AVX512VNNI indicates support of AVX-512 Vector Neural Network Instructions +func (c CPUInfo) AVX512VNNI() bool { + return c.Features&AVX512VNNI != 0 +} + +// MPX indicates support of Intel MPX (Memory Protection Extensions) +func (c CPUInfo) MPX() bool { + return c.Features&MPX != 0 +} + +// ERMS indicates support of Enhanced REP MOVSB/STOSB +func (c CPUInfo) ERMS() bool { + return c.Features&ERMS != 0 +} + +// RDTSCP Instruction is available. +func (c CPUInfo) RDTSCP() bool { + return c.Features&RDTSCP != 0 +} + +// CX16 indicates if CMPXCHG16B instruction is available. +func (c CPUInfo) CX16() bool { + return c.Features&CX16 != 0 +} + +// TSX is split into HLE (Hardware Lock Elision) and RTM (Restricted Transactional Memory) detection. +// So TSX simply checks that. +func (c CPUInfo) TSX() bool { + return c.Features&(HLE|RTM) == HLE|RTM +} + +// Atom indicates an Atom processor +func (c CPUInfo) Atom() bool { + return c.Features&ATOM != 0 +} + +// Intel returns true if vendor is recognized as Intel +func (c CPUInfo) Intel() bool { + return c.VendorID == Intel +} + +// AMD returns true if vendor is recognized as AMD +func (c CPUInfo) AMD() bool { + return c.VendorID == AMD +} + +// Hygon returns true if vendor is recognized as Hygon +func (c CPUInfo) Hygon() bool { + return c.VendorID == Hygon +} + +// Transmeta returns true if vendor is recognized as Transmeta +func (c CPUInfo) Transmeta() bool { + return c.VendorID == Transmeta +} + +// NSC returns true if vendor is recognized as National Semiconductor +func (c CPUInfo) NSC() bool { + return c.VendorID == NSC +} + +// VIA returns true if vendor is recognized as VIA +func (c CPUInfo) VIA() bool { + return c.VendorID == VIA +} + +// RTCounter returns the 64-bit time-stamp counter +// Uses the RDTSCP instruction. The value 0 is returned +// if the CPU does not support the instruction. +func (c CPUInfo) RTCounter() uint64 { + if !c.RDTSCP() { + return 0 + } + a, _, _, d := rdtscpAsm() + return uint64(a) | (uint64(d) << 32) +} + +// Ia32TscAux returns the IA32_TSC_AUX part of the RDTSCP. +// This variable is OS dependent, but on Linux contains information +// about the current cpu/core the code is running on. +// If the RDTSCP instruction isn't supported on the CPU, the value 0 is returned. +func (c CPUInfo) Ia32TscAux() uint32 { + if !c.RDTSCP() { + return 0 + } + _, _, ecx, _ := rdtscpAsm() + return ecx +} + +// LogicalCPU will return the Logical CPU the code is currently executing on. +// This is likely to change when the OS re-schedules the running thread +// to another CPU. +// If the current core cannot be detected, -1 will be returned. +func (c CPUInfo) LogicalCPU() int { + if c.maxFunc < 1 { + return -1 + } + _, ebx, _, _ := cpuid(1) + return int(ebx >> 24) +} + +// VM Will return true if the cpu id indicates we are in +// a virtual machine. This is only a hint, and will very likely +// have many false negatives. +func (c CPUInfo) VM() bool { + switch c.VendorID { + case MSVM, KVM, VMware, XenHVM, Bhyve: + return true + } + return false +} + +// Flags contains detected cpu features and caracteristics +type Flags uint64 + +// String returns a string representation of the detected +// CPU features. +func (f Flags) String() string { + return strings.Join(f.Strings(), ",") +} + +// Strings returns and array of the detected features. +func (f Flags) Strings() []string { + s := support() + r := make([]string, 0, 20) + for i := uint(0); i < 64; i++ { + key := Flags(1 << i) + val := flagNames[key] + if s&key != 0 { + r = append(r, val) + } + } + return r +} + +func maxExtendedFunction() uint32 { + eax, _, _, _ := cpuid(0x80000000) + return eax +} + +func maxFunctionID() uint32 { + a, _, _, _ := cpuid(0) + return a +} + +func brandName() string { + if maxExtendedFunction() >= 0x80000004 { + v := make([]uint32, 0, 48) + for i := uint32(0); i < 3; i++ { + a, b, c, d := cpuid(0x80000002 + i) + v = append(v, a, b, c, d) + } + return strings.Trim(string(valAsString(v...)), " ") + } + return "unknown" +} + +func threadsPerCore() int { + mfi := maxFunctionID() + if mfi < 0x4 || vendorID() != Intel { + return 1 + } + + if mfi < 0xb { + _, b, _, d := cpuid(1) + if (d & (1 << 28)) != 0 { + // v will contain logical core count + v := (b >> 16) & 255 + if v > 1 { + a4, _, _, _ := cpuid(4) + // physical cores + v2 := (a4 >> 26) + 1 + if v2 > 0 { + return int(v) / int(v2) + } + } + } + return 1 + } + _, b, _, _ := cpuidex(0xb, 0) + if b&0xffff == 0 { + return 1 + } + return int(b & 0xffff) +} + +func logicalCores() int { + mfi := maxFunctionID() + switch vendorID() { + case Intel: + // Use this on old Intel processors + if mfi < 0xb { + if mfi < 1 { + return 0 + } + // CPUID.1:EBX[23:16] represents the maximum number of addressable IDs (initial APIC ID) + // that can be assigned to logical processors in a physical package. + // The value may not be the same as the number of logical processors that are present in the hardware of a physical package. + _, ebx, _, _ := cpuid(1) + logical := (ebx >> 16) & 0xff + return int(logical) + } + _, b, _, _ := cpuidex(0xb, 1) + return int(b & 0xffff) + case AMD, Hygon: + _, b, _, _ := cpuid(1) + return int((b >> 16) & 0xff) + default: + return 0 + } +} + +func familyModel() (int, int) { + if maxFunctionID() < 0x1 { + return 0, 0 + } + eax, _, _, _ := cpuid(1) + family := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff) + model := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0) + return int(family), int(model) +} + +func physicalCores() int { + switch vendorID() { + case Intel: + return logicalCores() / threadsPerCore() + case AMD, Hygon: + if maxExtendedFunction() >= 0x80000008 { + _, _, c, _ := cpuid(0x80000008) + return int(c&0xff) + 1 + } + } + return 0 +} + +// Except from http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID +var vendorMapping = map[string]Vendor{ + "AMDisbetter!": AMD, + "AuthenticAMD": AMD, + "CentaurHauls": VIA, + "GenuineIntel": Intel, + "TransmetaCPU": Transmeta, + "GenuineTMx86": Transmeta, + "Geode by NSC": NSC, + "VIA VIA VIA ": VIA, + "KVMKVMKVMKVM": KVM, + "Microsoft Hv": MSVM, + "VMwareVMware": VMware, + "XenVMMXenVMM": XenHVM, + "bhyve bhyve ": Bhyve, + "HygonGenuine": Hygon, +} + +func vendorID() Vendor { + _, b, c, d := cpuid(0) + v := valAsString(b, d, c) + vend, ok := vendorMapping[string(v)] + if !ok { + return Other + } + return vend +} + +func cacheLine() int { + if maxFunctionID() < 0x1 { + return 0 + } + + _, ebx, _, _ := cpuid(1) + cache := (ebx & 0xff00) >> 5 // cflush size + if cache == 0 && maxExtendedFunction() >= 0x80000006 { + _, _, ecx, _ := cpuid(0x80000006) + cache = ecx & 0xff // cacheline size + } + // TODO: Read from Cache and TLB Information + return int(cache) +} + +func (c *CPUInfo) cacheSize() { + c.Cache.L1D = -1 + c.Cache.L1I = -1 + c.Cache.L2 = -1 + c.Cache.L3 = -1 + vendor := vendorID() + switch vendor { + case Intel: + if maxFunctionID() < 4 { + return + } + for i := uint32(0); ; i++ { + eax, ebx, ecx, _ := cpuidex(4, i) + cacheType := eax & 15 + if cacheType == 0 { + break + } + cacheLevel := (eax >> 5) & 7 + coherency := int(ebx&0xfff) + 1 + partitions := int((ebx>>12)&0x3ff) + 1 + associativity := int((ebx>>22)&0x3ff) + 1 + sets := int(ecx) + 1 + size := associativity * partitions * coherency * sets + switch cacheLevel { + case 1: + if cacheType == 1 { + // 1 = Data Cache + c.Cache.L1D = size + } else if cacheType == 2 { + // 2 = Instruction Cache + c.Cache.L1I = size + } else { + if c.Cache.L1D < 0 { + c.Cache.L1I = size + } + if c.Cache.L1I < 0 { + c.Cache.L1I = size + } + } + case 2: + c.Cache.L2 = size + case 3: + c.Cache.L3 = size + } + } + case AMD, Hygon: + // Untested. + if maxExtendedFunction() < 0x80000005 { + return + } + _, _, ecx, edx := cpuid(0x80000005) + c.Cache.L1D = int(((ecx >> 24) & 0xFF) * 1024) + c.Cache.L1I = int(((edx >> 24) & 0xFF) * 1024) + + if maxExtendedFunction() < 0x80000006 { + return + } + _, _, ecx, _ = cpuid(0x80000006) + c.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024) + } + + return +} + +type SGXSupport struct { + Available bool + SGX1Supported bool + SGX2Supported bool + MaxEnclaveSizeNot64 int64 + MaxEnclaveSize64 int64 +} + +func hasSGX(available bool) (rval SGXSupport) { + rval.Available = available + + if !available { + return + } + + a, _, _, d := cpuidex(0x12, 0) + rval.SGX1Supported = a&0x01 != 0 + rval.SGX2Supported = a&0x02 != 0 + rval.MaxEnclaveSizeNot64 = 1 << (d & 0xFF) // pow 2 + rval.MaxEnclaveSize64 = 1 << ((d >> 8) & 0xFF) // pow 2 + + return +} + +func support() Flags { + mfi := maxFunctionID() + vend := vendorID() + if mfi < 0x1 { + return 0 + } + rval := uint64(0) + _, _, c, d := cpuid(1) + if (d & (1 << 15)) != 0 { + rval |= CMOV + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 25)) != 0 { + rval |= MMXEXT + } + if (d & (1 << 25)) != 0 { + rval |= SSE + } + if (d & (1 << 26)) != 0 { + rval |= SSE2 + } + if (c & 1) != 0 { + rval |= SSE3 + } + if (c & (1 << 5)) != 0 { + rval |= VMX + } + if (c & 0x00000200) != 0 { + rval |= SSSE3 + } + if (c & 0x00080000) != 0 { + rval |= SSE4 + } + if (c & 0x00100000) != 0 { + rval |= SSE42 + } + if (c & (1 << 25)) != 0 { + rval |= AESNI + } + if (c & (1 << 1)) != 0 { + rval |= CLMUL + } + if c&(1<<23) != 0 { + rval |= POPCNT + } + if c&(1<<30) != 0 { + rval |= RDRAND + } + if c&(1<<29) != 0 { + rval |= F16C + } + if c&(1<<13) != 0 { + rval |= CX16 + } + if vend == Intel && (d&(1<<28)) != 0 && mfi >= 4 { + if threadsPerCore() > 1 { + rval |= HTT + } + } + + // Check XGETBV, OXSAVE and AVX bits + if c&(1<<26) != 0 && c&(1<<27) != 0 && c&(1<<28) != 0 { + // Check for OS support + eax, _ := xgetbv(0) + if (eax & 0x6) == 0x6 { + rval |= AVX + if (c & 0x00001000) != 0 { + rval |= FMA3 + } + } + } + + // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. + if mfi >= 7 { + _, ebx, ecx, edx := cpuidex(7, 0) + if (rval&AVX) != 0 && (ebx&0x00000020) != 0 { + rval |= AVX2 + } + if (ebx & 0x00000008) != 0 { + rval |= BMI1 + if (ebx & 0x00000100) != 0 { + rval |= BMI2 + } + } + if ebx&(1<<2) != 0 { + rval |= SGX + } + if ebx&(1<<4) != 0 { + rval |= HLE + } + if ebx&(1<<9) != 0 { + rval |= ERMS + } + if ebx&(1<<11) != 0 { + rval |= RTM + } + if ebx&(1<<14) != 0 { + rval |= MPX + } + if ebx&(1<<18) != 0 { + rval |= RDSEED + } + if ebx&(1<<19) != 0 { + rval |= ADX + } + if ebx&(1<<29) != 0 { + rval |= SHA + } + if edx&(1<<26) != 0 { + rval |= IBPB + } + if edx&(1<<27) != 0 { + rval |= STIBP + } + + // Only detect AVX-512 features if XGETBV is supported + if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { + // Check for OS support + eax, _ := xgetbv(0) + + // Verify that XCR0[7:5] = ‘111b’ (OPMASK state, upper 256-bit of ZMM0-ZMM15 and + // ZMM16-ZMM31 state are enabled by OS) + /// and that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS). + if (eax>>5)&7 == 7 && (eax>>1)&3 == 3 { + if ebx&(1<<16) != 0 { + rval |= AVX512F + } + if ebx&(1<<17) != 0 { + rval |= AVX512DQ + } + if ebx&(1<<21) != 0 { + rval |= AVX512IFMA + } + if ebx&(1<<26) != 0 { + rval |= AVX512PF + } + if ebx&(1<<27) != 0 { + rval |= AVX512ER + } + if ebx&(1<<28) != 0 { + rval |= AVX512CD + } + if ebx&(1<<30) != 0 { + rval |= AVX512BW + } + if ebx&(1<<31) != 0 { + rval |= AVX512VL + } + // ecx + if ecx&(1<<1) != 0 { + rval |= AVX512VBMI + } + if ecx&(1<<11) != 0 { + rval |= AVX512VNNI + } + } + } + } + + if maxExtendedFunction() >= 0x80000001 { + _, _, c, d := cpuid(0x80000001) + if (c & (1 << 5)) != 0 { + rval |= LZCNT + rval |= POPCNT + } + if (d & (1 << 31)) != 0 { + rval |= AMD3DNOW + } + if (d & (1 << 30)) != 0 { + rval |= AMD3DNOWEXT + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 22)) != 0 { + rval |= MMXEXT + } + if (c & (1 << 6)) != 0 { + rval |= SSE4A + } + if d&(1<<20) != 0 { + rval |= NX + } + if d&(1<<27) != 0 { + rval |= RDTSCP + } + + /* Allow for selectively disabling SSE2 functions on AMD processors + with SSE2 support but not SSE4a. This includes Athlon64, some + Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster + than SSE2 often enough to utilize this special-case flag. + AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case + so that SSE2 is used unless explicitly disabled by checking + AV_CPU_FLAG_SSE2SLOW. */ + if vendorID() != Intel && + rval&SSE2 != 0 && (c&0x00000040) == 0 { + rval |= SSE2SLOW + } + + /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be + * used unless the OS has AVX support. */ + if (rval & AVX) != 0 { + if (c & 0x00000800) != 0 { + rval |= XOP + } + if (c & 0x00010000) != 0 { + rval |= FMA4 + } + } + + if vendorID() == Intel { + family, model := familyModel() + if family == 6 && (model == 9 || model == 13 || model == 14) { + /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and + * 6/14 (core1 "yonah") theoretically support sse2, but it's + * usually slower than mmx. */ + if (rval & SSE2) != 0 { + rval |= SSE2SLOW + } + if (rval & SSE3) != 0 { + rval |= SSE3SLOW + } + } + /* The Atom processor has SSSE3 support, which is useful in many cases, + * but sometimes the SSSE3 version is slower than the SSE2 equivalent + * on the Atom, but is generally faster on other processors supporting + * SSSE3. This flag allows for selectively disabling certain SSSE3 + * functions on the Atom. */ + if family == 6 && model == 28 { + rval |= ATOM + } + } + } + return Flags(rval) +} + +func valAsString(values ...uint32) []byte { + r := make([]byte, 4*len(values)) + for i, v := range values { + dst := r[i*4:] + dst[0] = byte(v & 0xff) + dst[1] = byte((v >> 8) & 0xff) + dst[2] = byte((v >> 16) & 0xff) + dst[3] = byte((v >> 24) & 0xff) + switch { + case dst[0] == 0: + return r[:i*4] + case dst[1] == 0: + return r[:i*4+1] + case dst[2] == 0: + return r[:i*4+2] + case dst[3] == 0: + return r[:i*4+3] + } + } + return r +} diff --git a/vendor/github.com/klauspost/cpuid/cpuid_386.s b/vendor/github.com/klauspost/cpuid/cpuid_386.s new file mode 100644 index 0000000..4d73171 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_386.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORL CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+4(FP) + MOVL BX, ebx+8(FP) + MOVL CX, ecx+12(FP) + MOVL DX, edx+16(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func xgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+4(FP) + MOVL DX, edx+8(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/cpuid_amd64.s b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s new file mode 100644 index 0000000..3c1d60e --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +//+build amd64,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORQ CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmXgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+8(FP) + MOVL DX, edx+12(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/detect_intel.go b/vendor/github.com/klauspost/cpuid/detect_intel.go new file mode 100644 index 0000000..a5f04dd --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_intel.go @@ -0,0 +1,17 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo amd64,!gccgo + +package cpuid + +func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +func asmXgetbv(index uint32) (eax, edx uint32) +func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) + +func initCPU() { + cpuid = asmCpuid + cpuidex = asmCpuidex + xgetbv = asmXgetbv + rdtscpAsm = asmRdtscpAsm +} diff --git a/vendor/github.com/klauspost/cpuid/detect_ref.go b/vendor/github.com/klauspost/cpuid/detect_ref.go new file mode 100644 index 0000000..909c5d9 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_ref.go @@ -0,0 +1,23 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build !amd64,!386 gccgo + +package cpuid + +func initCPU() { + cpuid = func(op uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + cpuidex = func(op, op2 uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + xgetbv = func(index uint32) (eax, edx uint32) { + return 0, 0 + } + + rdtscpAsm = func() (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } +} diff --git a/vendor/github.com/klauspost/cpuid/generate.go b/vendor/github.com/klauspost/cpuid/generate.go new file mode 100644 index 0000000..90e7a98 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/generate.go @@ -0,0 +1,4 @@ +package cpuid + +//go:generate go run private-gen.go +//go:generate gofmt -w ./private diff --git a/vendor/github.com/klauspost/cpuid/private-gen.go b/vendor/github.com/klauspost/cpuid/private-gen.go new file mode 100644 index 0000000..437333d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/private-gen.go @@ -0,0 +1,476 @@ +// +build ignore + +package main + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "io" + "io/ioutil" + "log" + "os" + "reflect" + "strings" + "unicode" + "unicode/utf8" +) + +var inFiles = []string{"cpuid.go", "cpuid_test.go"} +var copyFiles = []string{"cpuid_amd64.s", "cpuid_386.s", "detect_ref.go", "detect_intel.go"} +var fileSet = token.NewFileSet() +var reWrites = []rewrite{ + initRewrite("CPUInfo -> cpuInfo"), + initRewrite("Vendor -> vendor"), + initRewrite("Flags -> flags"), + initRewrite("Detect -> detect"), + initRewrite("CPU -> cpu"), +} +var excludeNames = map[string]bool{"string": true, "join": true, "trim": true, + // cpuid_test.go + "t": true, "println": true, "logf": true, "log": true, "fatalf": true, "fatal": true, +} + +var excludePrefixes = []string{"test", "benchmark"} + +func main() { + Package := "private" + parserMode := parser.ParseComments + exported := make(map[string]rewrite) + for _, file := range inFiles { + in, err := os.Open(file) + if err != nil { + log.Fatalf("opening input", err) + } + + src, err := ioutil.ReadAll(in) + if err != nil { + log.Fatalf("reading input", err) + } + + astfile, err := parser.ParseFile(fileSet, file, src, parserMode) + if err != nil { + log.Fatalf("parsing input", err) + } + + for _, rw := range reWrites { + astfile = rw(astfile) + } + + // Inspect the AST and print all identifiers and literals. + var startDecl token.Pos + var endDecl token.Pos + ast.Inspect(astfile, func(n ast.Node) bool { + var s string + switch x := n.(type) { + case *ast.Ident: + if x.IsExported() { + t := strings.ToLower(x.Name) + for _, pre := range excludePrefixes { + if strings.HasPrefix(t, pre) { + return true + } + } + if excludeNames[t] != true { + //if x.Pos() > startDecl && x.Pos() < endDecl { + exported[x.Name] = initRewrite(x.Name + " -> " + t) + } + } + + case *ast.GenDecl: + if x.Tok == token.CONST && x.Lparen > 0 { + startDecl = x.Lparen + endDecl = x.Rparen + // fmt.Printf("Decl:%s -> %s\n", fileSet.Position(startDecl), fileSet.Position(endDecl)) + } + } + if s != "" { + fmt.Printf("%s:\t%s\n", fileSet.Position(n.Pos()), s) + } + return true + }) + + for _, rw := range exported { + astfile = rw(astfile) + } + + var buf bytes.Buffer + + printer.Fprint(&buf, fileSet, astfile) + + // Remove package documentation and insert information + s := buf.String() + ind := strings.Index(buf.String(), "\npackage cpuid") + s = s[ind:] + s = "// Generated, DO NOT EDIT,\n" + + "// but copy it to your own project and rename the package.\n" + + "// See more at http://github.com/klauspost/cpuid\n" + + s + + outputName := Package + string(os.PathSeparator) + file + + err = ioutil.WriteFile(outputName, []byte(s), 0644) + if err != nil { + log.Fatalf("writing output: %s", err) + } + log.Println("Generated", outputName) + } + + for _, file := range copyFiles { + dst := "" + if strings.HasPrefix(file, "cpuid") { + dst = Package + string(os.PathSeparator) + file + } else { + dst = Package + string(os.PathSeparator) + "cpuid_" + file + } + err := copyFile(file, dst) + if err != nil { + log.Fatalf("copying file: %s", err) + } + log.Println("Copied", dst) + } +} + +// CopyFile copies a file from src to dst. If src and dst files exist, and are +// the same, then return success. Copy the file contents from src to dst. +func copyFile(src, dst string) (err error) { + sfi, err := os.Stat(src) + if err != nil { + return + } + if !sfi.Mode().IsRegular() { + // cannot copy non-regular files (e.g., directories, + // symlinks, devices, etc.) + return fmt.Errorf("CopyFile: non-regular source file %s (%q)", sfi.Name(), sfi.Mode().String()) + } + dfi, err := os.Stat(dst) + if err != nil { + if !os.IsNotExist(err) { + return + } + } else { + if !(dfi.Mode().IsRegular()) { + return fmt.Errorf("CopyFile: non-regular destination file %s (%q)", dfi.Name(), dfi.Mode().String()) + } + if os.SameFile(sfi, dfi) { + return + } + } + err = copyFileContents(src, dst) + return +} + +// copyFileContents copies the contents of the file named src to the file named +// by dst. The file will be created if it does not already exist. If the +// destination file exists, all it's contents will be replaced by the contents +// of the source file. +func copyFileContents(src, dst string) (err error) { + in, err := os.Open(src) + if err != nil { + return + } + defer in.Close() + out, err := os.Create(dst) + if err != nil { + return + } + defer func() { + cerr := out.Close() + if err == nil { + err = cerr + } + }() + if _, err = io.Copy(out, in); err != nil { + return + } + err = out.Sync() + return +} + +type rewrite func(*ast.File) *ast.File + +// Mostly copied from gofmt +func initRewrite(rewriteRule string) rewrite { + f := strings.Split(rewriteRule, "->") + if len(f) != 2 { + fmt.Fprintf(os.Stderr, "rewrite rule must be of the form 'pattern -> replacement'\n") + os.Exit(2) + } + pattern := parseExpr(f[0], "pattern") + replace := parseExpr(f[1], "replacement") + return func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) } +} + +// parseExpr parses s as an expression. +// It might make sense to expand this to allow statement patterns, +// but there are problems with preserving formatting and also +// with what a wildcard for a statement looks like. +func parseExpr(s, what string) ast.Expr { + x, err := parser.ParseExpr(s) + if err != nil { + fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) + os.Exit(2) + } + return x +} + +// Keep this function for debugging. +/* +func dump(msg string, val reflect.Value) { + fmt.Printf("%s:\n", msg) + ast.Print(fileSet, val.Interface()) + fmt.Println() +} +*/ + +// rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file. +func rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File { + cmap := ast.NewCommentMap(fileSet, p, p.Comments) + m := make(map[string]reflect.Value) + pat := reflect.ValueOf(pattern) + repl := reflect.ValueOf(replace) + + var rewriteVal func(val reflect.Value) reflect.Value + rewriteVal = func(val reflect.Value) reflect.Value { + // don't bother if val is invalid to start with + if !val.IsValid() { + return reflect.Value{} + } + for k := range m { + delete(m, k) + } + val = apply(rewriteVal, val) + if match(m, pat, val) { + val = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos())) + } + return val + } + + r := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File) + r.Comments = cmap.Filter(r).Comments() // recreate comments list + return r +} + +// set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y. +func set(x, y reflect.Value) { + // don't bother if x cannot be set or y is invalid + if !x.CanSet() || !y.IsValid() { + return + } + defer func() { + if x := recover(); x != nil { + if s, ok := x.(string); ok && + (strings.Contains(s, "type mismatch") || strings.Contains(s, "not assignable")) { + // x cannot be set to y - ignore this rewrite + return + } + panic(x) + } + }() + x.Set(y) +} + +// Values/types for special cases. +var ( + objectPtrNil = reflect.ValueOf((*ast.Object)(nil)) + scopePtrNil = reflect.ValueOf((*ast.Scope)(nil)) + + identType = reflect.TypeOf((*ast.Ident)(nil)) + objectPtrType = reflect.TypeOf((*ast.Object)(nil)) + positionType = reflect.TypeOf(token.NoPos) + callExprType = reflect.TypeOf((*ast.CallExpr)(nil)) + scopePtrType = reflect.TypeOf((*ast.Scope)(nil)) +) + +// apply replaces each AST field x in val with f(x), returning val. +// To avoid extra conversions, f operates on the reflect.Value form. +func apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value { + if !val.IsValid() { + return reflect.Value{} + } + + // *ast.Objects introduce cycles and are likely incorrect after + // rewrite; don't follow them but replace with nil instead + if val.Type() == objectPtrType { + return objectPtrNil + } + + // similarly for scopes: they are likely incorrect after a rewrite; + // replace them with nil + if val.Type() == scopePtrType { + return scopePtrNil + } + + switch v := reflect.Indirect(val); v.Kind() { + case reflect.Slice: + for i := 0; i < v.Len(); i++ { + e := v.Index(i) + set(e, f(e)) + } + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + e := v.Field(i) + set(e, f(e)) + } + case reflect.Interface: + e := v.Elem() + set(v, f(e)) + } + return val +} + +func isWildcard(s string) bool { + rune, size := utf8.DecodeRuneInString(s) + return size == len(s) && unicode.IsLower(rune) +} + +// match returns true if pattern matches val, +// recording wildcard submatches in m. +// If m == nil, match checks whether pattern == val. +func match(m map[string]reflect.Value, pattern, val reflect.Value) bool { + // Wildcard matches any expression. If it appears multiple + // times in the pattern, it must match the same expression + // each time. + if m != nil && pattern.IsValid() && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) && val.IsValid() { + // wildcards only match valid (non-nil) expressions. + if _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() { + if old, ok := m[name]; ok { + return match(nil, old, val) + } + m[name] = val + return true + } + } + } + + // Otherwise, pattern and val must match recursively. + if !pattern.IsValid() || !val.IsValid() { + return !pattern.IsValid() && !val.IsValid() + } + if pattern.Type() != val.Type() { + return false + } + + // Special cases. + switch pattern.Type() { + case identType: + // For identifiers, only the names need to match + // (and none of the other *ast.Object information). + // This is a common case, handle it all here instead + // of recursing down any further via reflection. + p := pattern.Interface().(*ast.Ident) + v := val.Interface().(*ast.Ident) + return p == nil && v == nil || p != nil && v != nil && p.Name == v.Name + case objectPtrType, positionType: + // object pointers and token positions always match + return true + case callExprType: + // For calls, the Ellipsis fields (token.Position) must + // match since that is how f(x) and f(x...) are different. + // Check them here but fall through for the remaining fields. + p := pattern.Interface().(*ast.CallExpr) + v := val.Interface().(*ast.CallExpr) + if p.Ellipsis.IsValid() != v.Ellipsis.IsValid() { + return false + } + } + + p := reflect.Indirect(pattern) + v := reflect.Indirect(val) + if !p.IsValid() || !v.IsValid() { + return !p.IsValid() && !v.IsValid() + } + + switch p.Kind() { + case reflect.Slice: + if p.Len() != v.Len() { + return false + } + for i := 0; i < p.Len(); i++ { + if !match(m, p.Index(i), v.Index(i)) { + return false + } + } + return true + + case reflect.Struct: + for i := 0; i < p.NumField(); i++ { + if !match(m, p.Field(i), v.Field(i)) { + return false + } + } + return true + + case reflect.Interface: + return match(m, p.Elem(), v.Elem()) + } + + // Handle token integers, etc. + return p.Interface() == v.Interface() +} + +// subst returns a copy of pattern with values from m substituted in place +// of wildcards and pos used as the position of tokens from the pattern. +// if m == nil, subst returns a copy of pattern and doesn't change the line +// number information. +func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value { + if !pattern.IsValid() { + return reflect.Value{} + } + + // Wildcard gets replaced with map value. + if m != nil && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) { + if old, ok := m[name]; ok { + return subst(nil, old, reflect.Value{}) + } + } + } + + if pos.IsValid() && pattern.Type() == positionType { + // use new position only if old position was valid in the first place + if old := pattern.Interface().(token.Pos); !old.IsValid() { + return pattern + } + return pos + } + + // Otherwise copy. + switch p := pattern; p.Kind() { + case reflect.Slice: + v := reflect.MakeSlice(p.Type(), p.Len(), p.Len()) + for i := 0; i < p.Len(); i++ { + v.Index(i).Set(subst(m, p.Index(i), pos)) + } + return v + + case reflect.Struct: + v := reflect.New(p.Type()).Elem() + for i := 0; i < p.NumField(); i++ { + v.Field(i).Set(subst(m, p.Field(i), pos)) + } + return v + + case reflect.Ptr: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos).Addr()) + } + return v + + case reflect.Interface: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos)) + } + return v + } + + return pattern +} diff --git a/vendor/github.com/klauspost/reedsolomon/.gitignore b/vendor/github.com/klauspost/reedsolomon/.gitignore new file mode 100644 index 0000000..59610b5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.gitignore @@ -0,0 +1,26 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +.idea \ No newline at end of file diff --git a/vendor/github.com/klauspost/reedsolomon/.travis.yml b/vendor/github.com/klauspost/reedsolomon/.travis.yml new file mode 100644 index 0000000..10d09e8 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.travis.yml @@ -0,0 +1,32 @@ +language: go + +sudo: false + +os: + - linux + - osx + +go: + - 1.11.x + - 1.12.x + - 1.13.x + - master + +install: + - go get ./... + +script: + - go vet ./... + - go test -v -cpu=1,2,4 . + - go test -v -cpu=1,2,4 -short -race . + - go test -tags=noasm -v -cpu=1,2,4 -short -race . + - go build examples/simple-decoder.go + - go build examples/simple-encoder.go + - go build examples/stream-decoder.go + - go build examples/stream-encoder.go + - diff <(gofmt -d .) <("") + +matrix: + allow_failures: + - go: 'master' + fast_finish: true diff --git a/vendor/github.com/klauspost/reedsolomon/LICENSE b/vendor/github.com/klauspost/reedsolomon/LICENSE new file mode 100644 index 0000000..a947e16 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post +Copyright (c) 2015 Backblaze + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/klauspost/reedsolomon/README.md b/vendor/github.com/klauspost/reedsolomon/README.md new file mode 100644 index 0000000..28b3173 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/README.md @@ -0,0 +1,321 @@ +# Reed-Solomon +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/reedsolomon?status.svg +[2]: https://godoc.org/github.com/klauspost/reedsolomon +[3]: https://travis-ci.org/klauspost/reedsolomon.svg?branch=master +[4]: https://travis-ci.org/klauspost/reedsolomon + +Reed-Solomon Erasure Coding in Go, with speeds exceeding 1GB/s/cpu core implemented in pure Go. + +This is a Go port of the [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) library released by [Backblaze](http://backblaze.com), with some additional optimizations. + +For an introduction on erasure coding, see the post on the [Backblaze blog](https://www.backblaze.com/blog/reed-solomon/). + +Package home: https://github.com/klauspost/reedsolomon + +Godoc: https://godoc.org/github.com/klauspost/reedsolomon + +# Installation +To get the package use the standard: +```bash +go get -u github.com/klauspost/reedsolomon +``` + +# Changes + +## March 6, 2019 + +The pure Go implementation is about 30% faster. Minor tweaks to assembler implementations. + +## February 8, 2019 + +AVX512 accelerated version added for Intel Skylake CPUs. This can give up to a 4x speed improvement as compared to AVX2. See [here](https://github.com/klauspost/reedsolomon#performance-on-avx512) for more details. + +## December 18, 2018 + +Assembly code for ppc64le has been contributed, this boosts performance by about 10x on this platform. + +## November 18, 2017 + +Added [WithAutoGoroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithAutoGoroutines) which will attempt to calculate the optimal number of goroutines to use based on your expected shard size and detected CPU. + +## October 1, 2017 + +* [Cauchy Matrix](https://godoc.org/github.com/klauspost/reedsolomon#WithCauchyMatrix) is now an option. Thanks to [templexxx](https://github.com/templexxx) for the basis of this. +* Default maximum number of [goroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithMaxGoroutines) has been increased for better multi-core scaling. +* After several requests the Reconstruct and ReconstructData now slices of zero length but sufficient capacity to be used instead of allocating new memory. + +## August 26, 2017 + +* The [`Encoder()`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) now contains an `Update` function contributed by [chenzhongtao](https://github.com/chenzhongtao). +* [Frank Wessels](https://github.com/fwessels) kindly contributed ARM 64 bit assembly, which gives a huge performance boost on this platform. + +## July 20, 2017 + +`ReconstructData` added to [`Encoder`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) interface. This can cause compatibility issues if you implement your own Encoder. A simple workaround can be added: +```Go +func (e *YourEnc) ReconstructData(shards [][]byte) error { + return ReconstructData(shards) +} +``` + +You can of course also do your own implementation. The [`StreamEncoder`](https://godoc.org/github.com/klauspost/reedsolomon#StreamEncoder) handles this without modifying the interface. This is a good lesson on why returning interfaces is not a good design. + +# Usage + +This section assumes you know the basics of Reed-Solomon encoding. A good start is this [Backblaze blog post](https://www.backblaze.com/blog/reed-solomon/). + +This package performs the calculation of the parity sets. The usage is therefore relatively simple. + +First of all, you need to choose your distribution of data and parity shards. A 'good' distribution is very subjective, and will depend a lot on your usage scenario. A good starting point is above 5 and below 257 data shards (the maximum supported number), and the number of parity shards to be 2 or above, and below the number of data shards. + +To create an encoder with 10 data shards (where your data goes) and 3 parity shards (calculated): +```Go + enc, err := reedsolomon.New(10, 3) +``` +This encoder will work for all parity sets with this distribution of data and parity shards. The error will only be set if you specify 0 or negative values in any of the parameters, or if you specify more than 256 data shards. + +The you send and receive data is a simple slice of byte slices; `[][]byte`. In the example above, the top slice must have a length of 13. +```Go + data := make([][]byte, 13) +``` +You should then fill the 10 first slices with *equally sized* data, and create parity shards that will be populated with parity data. In this case we create the data in memory, but you could for instance also use [mmap](https://github.com/edsrzf/mmap-go) to map files. + +```Go + // Create all shards, size them at 50000 each + for i := range input { + data[i] := make([]byte, 50000) + } + + + // Fill some data into the data shards + for i, in := range data[:10] { + for j:= range in { + in[j] = byte((i+j)&0xff) + } + } +``` + +To populate the parity shards, you simply call `Encode()` with your data. +```Go + err = enc.Encode(data) +``` +The only cases where you should get an error is, if the data shards aren't of equal size. The last 3 shards now contain parity data. You can verify this by calling `Verify()`: + +```Go + ok, err = enc.Verify(data) +``` + +The final (and important) part is to be able to reconstruct missing shards. For this to work, you need to know which parts of your data is missing. The encoder *does not know which parts are invalid*, so if data corruption is a likely scenario, you need to implement a hash check for each shard. If a byte has changed in your set, and you don't know which it is, there is no way to reconstruct the data set. + +To indicate missing data, you set the shard to nil before calling `Reconstruct()`: + +```Go + // Delete two data shards + data[3] = nil + data[7] = nil + + // Reconstruct the missing shards + err := enc.Reconstruct(data) +``` +The missing data and parity shards will be recreated. If more than 3 shards are missing, the reconstruction will fail. + +If you are only interested in the data shards (for reading purposes) you can call `ReconstructData()`: + +```Go + // Delete two data shards + data[3] = nil + data[7] = nil + + // Reconstruct just the missing data shards + err := enc.ReconstructData(data) +``` + +So to sum up reconstruction: +* The number of data/parity shards must match the numbers used for encoding. +* The order of shards must be the same as used when encoding. +* You may only supply data you know is valid. +* Invalid shards should be set to nil. + +For complete examples of an encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + +# Splitting/Joining Data + +You might have a large slice of data. To help you split this, there are some helper functions that can split and join a single byte slice. + +```Go + bigfile, _ := ioutil.Readfile("myfile.data") + + // Split the file + split, err := enc.Split(bigfile) +``` +This will split the file into the number of data shards set when creating the encoder and create empty parity shards. + +An important thing to note is that you have to *keep track of the exact input size*. If the size of the input isn't divisible by the number of data shards, extra zeros will be inserted in the last shard. + +To join a data set, use the `Join()` function, which will join the shards and write it to the `io.Writer` you supply: +```Go + // Join a data set and write it to io.Discard. + err = enc.Join(io.Discard, data, len(bigfile)) +``` + +# Streaming/Merging + +It might seem like a limitation that all data should be in memory, but an important property is that *as long as the number of data/parity shards are the same, you can merge/split data sets*, and they will remain valid as a separate set. + +```Go + // Split the data set of 50000 elements into two of 25000 + splitA := make([][]byte, 13) + splitB := make([][]byte, 13) + + // Merge into a 100000 element set + merged := make([][]byte, 13) + + for i := range data { + splitA[i] = data[i][:25000] + splitB[i] = data[i][25000:] + + // Concatenate it to itself + merged[i] = append(make([]byte, 0, len(data[i])*2), data[i]...) + merged[i] = append(merged[i], data[i]...) + } + + // Each part should still verify as ok. + ok, err := enc.Verify(splitA) + if ok && err == nil { + log.Println("splitA ok") + } + + ok, err = enc.Verify(splitB) + if ok && err == nil { + log.Println("splitB ok") + } + + ok, err = enc.Verify(merge) + if ok && err == nil { + log.Println("merge ok") + } +``` + +This means that if you have a data set that may not fit into memory, you can split processing into smaller blocks. For the best throughput, don't use too small blocks. + +This also means that you can divide big input up into smaller blocks, and do reconstruction on parts of your data. This doesn't give the same flexibility of a higher number of data shards, but it will be much more performant. + +# Streaming API + +There has been added support for a streaming API, to help perform fully streaming operations, which enables you to do the same operations, but on streams. To use the stream API, use [`NewStream`](https://godoc.org/github.com/klauspost/reedsolomon#NewStream) function to create the encoding/decoding interfaces. You can use [`NewStreamC`](https://godoc.org/github.com/klauspost/reedsolomon#NewStreamC) to ready an interface that reads/writes concurrently from the streams. + +Input is delivered as `[]io.Reader`, output as `[]io.Writer`, and functionality corresponds to the in-memory API. Each stream must supply the same amount of data, similar to how each slice must be similar size with the in-memory API. +If an error occurs in relation to a stream, a [`StreamReadError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamReadError) or [`StreamWriteError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamWriteError) will help you determine which stream was the offender. + +There is no buffering or timeouts/retry specified. If you want to add that, you need to add it to the Reader/Writer. + +For complete examples of a streaming encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + +# Advanced Options + +You can modify internal options which affects how jobs are split between and processed by goroutines. + +To create options, use the WithXXX functions. You can supply options to `New`, `NewStream` and `NewStreamC`. If no Options are supplied, default options are used. + +Example of how to supply options: + + ```Go + enc, err := reedsolomon.New(10, 3, WithMaxGoroutines(25)) + ``` + + +# Performance +Performance depends mainly on the number of parity shards. In rough terms, doubling the number of parity shards will double the encoding time. + +Here are the throughput numbers with some different selections of data and parity shards. For reference each shard is 1MB random data, and 2 CPU cores are used for encoding. + +| Data | Parity | Parity | MB/s | SSSE3 MB/s | SSSE3 Speed | Rel. Speed | +|------|--------|--------|--------|-------------|-------------|------------| +| 5 | 2 | 40% | 576,11 | 2599,2 | 451% | 100,00% | +| 10 | 2 | 20% | 587,73 | 3100,28 | 528% | 102,02% | +| 10 | 4 | 40% | 298,38 | 2470,97 | 828% | 51,79% | +| 50 | 20 | 40% | 59,81 | 713,28 | 1193% | 10,38% | + +If `runtime.GOMAXPROCS()` is set to a value higher than 1, the encoder will use multiple goroutines to perform the calculations in `Verify`, `Encode` and `Reconstruct`. + +Example of performance scaling on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz - 4 physical cores, 8 logical cores. The example uses 10 blocks with 16MB data each and 4 parity blocks. + +| Threads | MB/s | Speed | +|---------|---------|-------| +| 1 | 1355,11 | 100% | +| 2 | 2339,78 | 172% | +| 4 | 3179,33 | 235% | +| 8 | 4346,18 | 321% | + +Benchmarking `Reconstruct()` followed by a `Verify()` (=`all`) versus just calling `ReconstructData()` (=`data`) gives the following result: +``` +benchmark all MB/s data MB/s speedup +BenchmarkReconstruct10x2x10000-8 2011.67 10530.10 5.23x +BenchmarkReconstruct50x5x50000-8 4585.41 14301.60 3.12x +BenchmarkReconstruct10x2x1M-8 8081.15 28216.41 3.49x +BenchmarkReconstruct5x2x1M-8 5780.07 28015.37 4.85x +BenchmarkReconstruct10x4x1M-8 4352.56 14367.61 3.30x +BenchmarkReconstruct50x20x1M-8 1364.35 4189.79 3.07x +BenchmarkReconstruct10x4x16M-8 1484.35 5779.53 3.89x +``` + +# Performance on AVX512 + +The performance on AVX512 has been accelerated for Intel CPUs. This gives speedups on a per-core basis of up to 4x compared to AVX2 as can be seen in the following table: + +``` +$ benchcmp avx2.txt avx512.txt +benchmark AVX2 MB/s AVX512 MB/s speedup +BenchmarkEncode8x8x1M-72 1681.35 4125.64 2.45x +BenchmarkEncode8x4x8M-72 1529.36 5507.97 3.60x +BenchmarkEncode8x8x8M-72 791.16 2952.29 3.73x +BenchmarkEncode8x8x32M-72 573.26 2168.61 3.78x +BenchmarkEncode12x4x12M-72 1234.41 4912.37 3.98x +BenchmarkEncode16x4x16M-72 1189.59 5138.01 4.32x +BenchmarkEncode24x8x24M-72 690.68 2583.70 3.74x +BenchmarkEncode24x8x48M-72 674.20 2643.31 3.92x +``` + +This speedup has been achieved by computing multiple parity blocks in parallel as opposed to one after the other. In doing so it is possible to minimize the memory bandwidth required for loading all data shards. At the same time the calculations are performed in the 512-bit wide ZMM registers and the surplus of ZMM registers (32 in total) is used to keep more data around (most notably the matrix coefficients). + +# Performance on ARM64 NEON + +By exploiting NEON instructions the performance for ARM has been accelerated. Below are the performance numbers for a single core on an ARM Cortex-A53 CPU @ 1.2GHz (Debian 8.0 Jessie running Go: 1.7.4): + +| Data | Parity | Parity | ARM64 Go MB/s | ARM64 NEON MB/s | NEON Speed | +|------|--------|--------|--------------:|----------------:|-----------:| +| 5 | 2 | 40% | 189 | 1304 | 588% | +| 10 | 2 | 20% | 188 | 1738 | 925% | +| 10 | 4 | 40% | 96 | 839 | 877% | + +# Performance on ppc64le + +The performance for ppc64le has been accelerated. This gives roughly a 10x performance improvement on this architecture as can been seen below: + +``` +benchmark old MB/s new MB/s speedup +BenchmarkGalois128K-160 948.87 8878.85 9.36x +BenchmarkGalois1M-160 968.85 9041.92 9.33x +BenchmarkGaloisXor128K-160 862.02 7905.00 9.17x +BenchmarkGaloisXor1M-160 784.60 6296.65 8.03x +``` + +# asm2plan9s + +[asm2plan9s](https://github.com/fwessels/asm2plan9s) is used for assembling the AVX2 instructions into their BYTE/WORD/LONG equivalents. + +# Links +* [Backblaze Open Sources Reed-Solomon Erasure Coding Source Code](https://www.backblaze.com/blog/reed-solomon/). +* [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon). Compatible java library by Backblaze. +* [ocaml-reed-solomon-erasure](https://gitlab.com/darrenldl/ocaml-reed-solomon-erasure). Compatible OCaml implementation. +* [reedsolomon-c](https://github.com/jannson/reedsolomon-c). C version, compatible with output from this package. +* [Reed-Solomon Erasure Coding in Haskell](https://github.com/NicolasT/reedsolomon). Haskell port of the package with similar performance. +* [reed-solomon-erasure](https://github.com/darrenldl/reed-solomon-erasure). Compatible Rust implementation. +* [go-erasure](https://github.com/somethingnew2-0/go-erasure). A similar library using cgo, slower in my tests. +* [Screaming Fast Galois Field Arithmetic](http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf). Basis for SSE3 optimizations. + +# License + +This code, as the original [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/reedsolomon/appveyor.yml b/vendor/github.com/klauspost/reedsolomon/appveyor.yml new file mode 100644 index 0000000..9bb067f --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/appveyor.yml @@ -0,0 +1,20 @@ +os: Visual Studio 2015 + +platform: x64 + +clone_folder: c:\gopath\src\github.com\klauspost\reedsolomon + +# environment variables +environment: + GOPATH: c:\gopath + +install: + - echo %PATH% + - echo %GOPATH% + - go version + - go env + - go get -d ./... + +build_script: + - go test -v -cpu=2 ./... + - go test -cpu=1,2,4 -short -race ./... diff --git a/vendor/github.com/klauspost/reedsolomon/galois.go b/vendor/github.com/klauspost/reedsolomon/galois.go new file mode 100644 index 0000000..7a855fc --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois.go @@ -0,0 +1,905 @@ +/** + * 8-bit Galois Field + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. All rights reserved. + */ + +package reedsolomon + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +var logTable = [fieldSize]byte{ + 0, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +/** + * Inverse of the logarithm table. Maps integer logarithms + * to members of the field. There is no entry for 255 + * because the highest log is 254. + * + * This table was generated by `go run gentables.go` + */ +var expTable = []byte{0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e} + +func galAdd(a, b byte) byte { + return a ^ b +} + +func galSub(a, b byte) byte { + return a ^ b +} + +// Table from https://github.com/templexxx/reedsolomon +var invTable = [256]byte{0x0, 0x1, 0x8e, 0xf4, 0x47, 0xa7, 0x7a, 0xba, 0xad, 0x9d, 0xdd, 0x98, 0x3d, 0xaa, 0x5d, 0x96, 0xd8, 0x72, 0xc0, 0x58, 0xe0, 0x3e, 0x4c, 0x66, 0x90, 0xde, 0x55, 0x80, 0xa0, 0x83, 0x4b, 0x2a, 0x6c, 0xed, 0x39, 0x51, 0x60, 0x56, 0x2c, 0x8a, 0x70, 0xd0, 0x1f, 0x4a, 0x26, 0x8b, 0x33, 0x6e, 0x48, 0x89, 0x6f, 0x2e, 0xa4, 0xc3, 0x40, 0x5e, 0x50, 0x22, 0xcf, 0xa9, 0xab, 0xc, 0x15, 0xe1, 0x36, 0x5f, 0xf8, 0xd5, 0x92, 0x4e, 0xa6, 0x4, 0x30, 0x88, 0x2b, 0x1e, 0x16, 0x67, 0x45, 0x93, 0x38, 0x23, 0x68, 0x8c, 0x81, 0x1a, 0x25, 0x61, 0x13, 0xc1, 0xcb, 0x63, 0x97, 0xe, 0x37, 0x41, 0x24, 0x57, 0xca, 0x5b, 0xb9, 0xc4, 0x17, 0x4d, 0x52, 0x8d, 0xef, 0xb3, 0x20, 0xec, 0x2f, 0x32, 0x28, 0xd1, 0x11, 0xd9, 0xe9, 0xfb, 0xda, 0x79, 0xdb, 0x77, 0x6, 0xbb, 0x84, 0xcd, 0xfe, 0xfc, 0x1b, 0x54, 0xa1, 0x1d, 0x7c, 0xcc, 0xe4, 0xb0, 0x49, 0x31, 0x27, 0x2d, 0x53, 0x69, 0x2, 0xf5, 0x18, 0xdf, 0x44, 0x4f, 0x9b, 0xbc, 0xf, 0x5c, 0xb, 0xdc, 0xbd, 0x94, 0xac, 0x9, 0xc7, 0xa2, 0x1c, 0x82, 0x9f, 0xc6, 0x34, 0xc2, 0x46, 0x5, 0xce, 0x3b, 0xd, 0x3c, 0x9c, 0x8, 0xbe, 0xb7, 0x87, 0xe5, 0xee, 0x6b, 0xeb, 0xf2, 0xbf, 0xaf, 0xc5, 0x64, 0x7, 0x7b, 0x95, 0x9a, 0xae, 0xb6, 0x12, 0x59, 0xa5, 0x35, 0x65, 0xb8, 0xa3, 0x9e, 0xd2, 0xf7, 0x62, 0x5a, 0x85, 0x7d, 0xa8, 0x3a, 0x29, 0x71, 0xc8, 0xf6, 0xf9, 0x43, 0xd7, 0xd6, 0x10, 0x73, 0x76, 0x78, 0x99, 0xa, 0x19, 0x91, 0x14, 0x3f, 0xe6, 0xf0, 0x86, 0xb1, 0xe2, 0xf1, 0xfa, 0x74, 0xf3, 0xb4, 0x6d, 0x21, 0xb2, 0x6a, 0xe3, 0xe7, 0xb5, 0xea, 0x3, 0x8f, 0xd3, 0xc9, 0x42, 0xd4, 0xe8, 0x75, 0x7f, 0xff, 0x7e, 0xfd} + +var mulTable = [256][256]uint8{[256]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2}} + +var mulTableLow = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}} +var mulTableHigh = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}} + +// galMultiply multiplies to elements of the field. +// Uses lookup table ~40% faster +func galMultiply(a, b byte) byte { + return mulTable[a][b] +} + +// amd64 indicates whether we are on an amd64 platform. +var amd64 bool + +// Original function: +/* +// galMultiply multiplies to elements of the field. +func galMultiply(a, b byte) byte { + if a == 0 || b == 0 { + return 0 + } + logA := int(logTable[a]) + logB := int(logTable[b]) + return expTable[logA+logB] +} +*/ + +// galDivide is inverse of galMultiply. +func galDivide(a, b byte) byte { + if a == 0 { + return 0 + } + if b == 0 { + panic("Argument 'divisor' is 0") + } + logA := int(logTable[a]) + logB := int(logTable[b]) + logResult := logA - logB + if logResult < 0 { + logResult += 255 + } + return expTable[logResult] +} + +// Computes a**n. +// +// The result will be the same as multiplying a times itself n times. +func galExp(a byte, n int) byte { + if n == 0 { + return 1 + } + if a == 0 { + return 0 + } + + logA := logTable[a] + logResult := int(logA) * n + for logResult >= 255 { + logResult -= 255 + } + return expTable[logResult] +} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go new file mode 100644 index 0000000..4c1dc75 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go @@ -0,0 +1,188 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2019, Minio, Inc. + +package reedsolomon + +//go:noescape +func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) + +//go:noescape +func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) + +func init() { + amd64 = true +} + +const ( + dimIn = 8 // Number of input rows processed simultaneously + dimOut82 = 2 // Number of output rows processed simultaneously for x2 routine + dimOut84 = 4 // Number of output rows processed simultaneously for x4 routine + matrixSize82 = (16 + 16) * dimIn * dimOut82 // Dimension of slice of matrix coefficient passed into x2 routine + matrixSize84 = (16 + 16) * dimIn * dimOut84 // Dimension of slice of matrix coefficient passed into x4 routine +) + +// Construct block of matrix coefficients for 2 outputs rows in parallel +func setupMatrix82(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize82]byte) { + offset := 0 + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { + if c < len(matrixRows[iRow]) { + coeff := matrixRows[iRow][c] + copy(matrix[offset*32:], mulTableLow[coeff][:]) + copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) + } else { + // coefficients not used for this input shard (so null out) + v := matrix[offset*32 : offset*32+32] + for i := range v { + v[i] = 0 + } + } + offset += dimIn + if offset >= dimIn*dimOut82 { + offset -= dimIn*dimOut82 - 1 + } + } + } +} + +// Construct block of matrix coefficients for 4 outputs rows in parallel +func setupMatrix84(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize84]byte) { + offset := 0 + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { + if c < len(matrixRows[iRow]) { + coeff := matrixRows[iRow][c] + copy(matrix[offset*32:], mulTableLow[coeff][:]) + copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) + } else { + // coefficients not used for this input shard (so null out) + v := matrix[offset*32 : offset*32+32] + for i := range v { + v[i] = 0 + } + } + offset += dimIn + if offset >= dimIn*dimOut84 { + offset -= dimIn*dimOut84 - 1 + } + } + } +} + +// Invoke AVX512 routine for 2 output rows in parallel +func galMulAVX512Parallel82(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { + done := len(in[0]) + if done == 0 { + return + } + + inputEnd := inputOffset + dimIn + if inputEnd > len(in) { + inputEnd = len(in) + } + outputEnd := outputOffset + dimOut82 + if outputEnd > len(out) { + outputEnd = len(out) + } + + matrix82 := [matrixSize82]byte{} + setupMatrix82(matrixRows, inputOffset, outputOffset, &matrix82) + addTo := inputOffset != 0 // Except for the first input column, add to previous results + _galMulAVX512Parallel82(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix82, addTo) + + done = (done >> 6) << 6 + if len(in[0])-done == 0 { + return + } + + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { + if c < len(matrixRows[iRow]) { + mt := mulTable[matrixRows[iRow][c]][:256] + for i := done; i < len(in[0]); i++ { + if c == 0 { // only set value for first input column + out[iRow][i] = mt[in[c][i]] + } else { // and add for all others + out[iRow][i] ^= mt[in[c][i]] + } + } + } + } + } +} + +// Invoke AVX512 routine for 4 output rows in parallel +func galMulAVX512Parallel84(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { + done := len(in[0]) + if done == 0 { + return + } + + inputEnd := inputOffset + dimIn + if inputEnd > len(in) { + inputEnd = len(in) + } + outputEnd := outputOffset + dimOut84 + if outputEnd > len(out) { + outputEnd = len(out) + } + + matrix84 := [matrixSize84]byte{} + setupMatrix84(matrixRows, inputOffset, outputOffset, &matrix84) + addTo := inputOffset != 0 // Except for the first input column, add to previous results + _galMulAVX512Parallel84(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix84, addTo) + + done = (done >> 6) << 6 + if len(in[0])-done == 0 { + return + } + + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { + if c < len(matrixRows[iRow]) { + mt := mulTable[matrixRows[iRow][c]][:256] + for i := done; i < len(in[0]); i++ { + if c == 0 { // only set value for first input column + out[iRow][i] = mt[in[c][i]] + } else { // and add for all others + out[iRow][i] ^= mt[in[c][i]] + } + } + } + } + } +} + +// Perform the same as codeSomeShards, but taking advantage of +// AVX512 parallelism for up to 4x faster execution as compared to AVX2 +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + outputRow := 0 + // First process (multiple) batches of 4 output rows in parallel + for ; outputRow+dimOut84 <= len(outputs); outputRow += dimOut84 { + for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { + galMulAVX512Parallel84(inputs, outputs, matrixRows, inputRow, outputRow) + } + } + // Then process a (single) batch of 2 output rows in parallel + if outputRow+dimOut82 <= len(outputs) { + // fmt.Println(outputRow, len(outputs)) + for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { + galMulAVX512Parallel82(inputs, outputs, matrixRows, inputRow, outputRow) + } + outputRow += dimOut82 + } + // Lastly, we may have a single output row left (for uneven parity) + if outputRow < len(outputs) { + for c := 0; c < r.DataShards; c++ { + if c == 0 { + galMulSlice(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) + } else { + galMulSliceXor(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) + } + } + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s new file mode 100644 index 0000000..ce611cc --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s @@ -0,0 +1,590 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2019, Minio, Inc. + +// +// Process 2 output rows in parallel from a total of 8 input rows +// +// func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) +TEXT ·_galMulAVX512Parallel82(SB), 7, $0 + MOVQ in+0(FP), SI // + MOVQ 8(SI), R9 // R9: len(in) + SHRQ $6, R9 // len(in) / 64 + TESTQ R9, R9 + JZ done_avx512_parallel82 + + MOVQ matrix+48(FP), SI + LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] + LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] + LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] + LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] + LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] + LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] + LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] + LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] + + MOVQ $15, BX + MOVQ BX, X5 + LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 + + MOVB addTo+56(FP), AX + LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 + WORD $0xf749; BYTE $0xe0 // mul r8 + LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), AX // number of inputs + XORQ R11, R11 + MOVQ out+24(FP), DX + MOVQ 24(DX), CX // CX: &out[1][0] + MOVQ (DX), DX // DX: &out[0][0] + +loopback_avx512_parallel82: + LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] + LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] + + MOVQ (SI), BX // BX: &in[0][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 + LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 + LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $1 + JE skip_avx512_parallel82 + + MOVQ 24(SI), BX // BX: &in[1][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa + LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa + LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $2 + JE skip_avx512_parallel82 + + MOVQ 48(SI), BX // BX: &in[2][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 + LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 + LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $3 + JE skip_avx512_parallel82 + + MOVQ 72(SI), BX // BX: &in[3][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa + LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa + LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $4 + JE skip_avx512_parallel82 + + MOVQ 96(SI), BX // BX: &in[4][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 + LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 + LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $5 + JE skip_avx512_parallel82 + + MOVQ 120(SI), BX // BX: &in[5][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa + LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa + LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $6 + JE skip_avx512_parallel82 + + MOVQ 144(SI), BX // BX: &in[6][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 + LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 + LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $7 + JE skip_avx512_parallel82 + + MOVQ 168(SI), BX // BX: &in[7][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa + LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa + LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + +skip_avx512_parallel82: + LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 + LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 + + ADDQ $64, R11 // in4+=64 + + ADDQ $64, DX // out+=64 + ADDQ $64, CX // out2+=64 + + SUBQ $1, R9 + JNZ loopback_avx512_parallel82 + +done_avx512_parallel82: + VZEROUPPER + RET + +// +// Process 4 output rows in parallel from a total of 8 input rows +// +// func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) +TEXT ·_galMulAVX512Parallel84(SB), 7, $0 + MOVQ in+0(FP), SI // + MOVQ 8(SI), R9 // R9: len(in) + SHRQ $6, R9 // len(in) / 64 + TESTQ R9, R9 + JZ done_avx512_parallel84 + + MOVQ matrix+48(FP), SI + LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] + LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] + LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] + LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] + LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] + LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] + LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] + LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] + LONG $0x48fe6162; WORD $0x466f; BYTE $0x08 // VMOVDQU64 ZMM24, 0x200[rsi] + LONG $0x48fe6162; WORD $0x4e6f; BYTE $0x09 // VMOVDQU64 ZMM25, 0x240[rsi] + LONG $0x48fe6162; WORD $0x566f; BYTE $0x0a // VMOVDQU64 ZMM26, 0x280[rsi] + LONG $0x48fe6162; WORD $0x5e6f; BYTE $0x0b // VMOVDQU64 ZMM27, 0x2c0[rsi] + LONG $0x48fe6162; WORD $0x666f; BYTE $0x0c // VMOVDQU64 ZMM28, 0x300[rsi] + LONG $0x48fe6162; WORD $0x6e6f; BYTE $0x0d // VMOVDQU64 ZMM29, 0x340[rsi] + LONG $0x48fe6162; WORD $0x766f; BYTE $0x0e // VMOVDQU64 ZMM30, 0x380[rsi] + LONG $0x48fe6162; WORD $0x7e6f; BYTE $0x0f // VMOVDQU64 ZMM31, 0x3c0[rsi] + + MOVQ $15, BX + MOVQ BX, X5 + LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 + + MOVB addTo+56(FP), AX + LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 + WORD $0xf749; BYTE $0xe0 // mul r8 + LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), AX // number of inputs + XORQ R11, R11 + MOVQ out+24(FP), DX + MOVQ 24(DX), CX // CX: &out[1][0] + MOVQ 48(DX), R10 // R10: &out[2][0] + MOVQ 72(DX), R12 // R12: &out[3][0] + MOVQ (DX), DX // DX: &out[0][0] + +loopback_avx512_parallel84: + LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] + LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] + LONG $0xc9fed162; WORD $0x326f // VMOVDQU64 ZMM6{k1}{z}, [r10] + LONG $0xc9fed162; WORD $0x3c6f; BYTE $0x24 // VMOVDQU64 ZMM7{k1}{z}, [r12] + + MOVQ (SI), BX // BX: &in[0][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 + LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 + LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40bd1362; WORD $0xd043; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0x00 + LONG $0x40bd1362; WORD $0xd843; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x409d1362; WORD $0xc443; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0x00 + LONG $0x409d1362; WORD $0xcc43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $1 + JE skip_avx512_parallel84 + + MOVQ 24(SI), BX // BX: &in[1][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa + LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa + LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40bd1362; WORD $0xd043; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0xaa + LONG $0x40bd1362; WORD $0xd843; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x409d1362; WORD $0xc443; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0xaa + LONG $0x409d1362; WORD $0xcc43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $2 + JE skip_avx512_parallel84 + + MOVQ 48(SI), BX // BX: &in[2][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 + LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 + LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40b51362; WORD $0xd143; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0x00 + LONG $0x40b51362; WORD $0xd943; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40951362; WORD $0xc543; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0x00 + LONG $0x40951362; WORD $0xcd43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $3 + JE skip_avx512_parallel84 + + MOVQ 72(SI), BX // BX: &in[3][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa + LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa + LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40b51362; WORD $0xd143; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0xaa + LONG $0x40b51362; WORD $0xd943; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40951362; WORD $0xc543; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0xaa + LONG $0x40951362; WORD $0xcd43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $4 + JE skip_avx512_parallel84 + + MOVQ 96(SI), BX // BX: &in[4][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 + LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 + LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40ad1362; WORD $0xd243; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0x00 + LONG $0x40ad1362; WORD $0xda43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x408d1362; WORD $0xc643; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0x00 + LONG $0x408d1362; WORD $0xce43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $5 + JE skip_avx512_parallel84 + + MOVQ 120(SI), BX // BX: &in[5][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa + LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa + LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40ad1362; WORD $0xd243; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0xaa + LONG $0x40ad1362; WORD $0xda43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x408d1362; WORD $0xc643; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0xaa + LONG $0x408d1362; WORD $0xce43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $6 + JE skip_avx512_parallel84 + + MOVQ 144(SI), BX // BX: &in[6][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 + LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 + LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40a51362; WORD $0xd343; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0x00 + LONG $0x40a51362; WORD $0xdb43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40851362; WORD $0xc743; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0x00 + LONG $0x40851362; WORD $0xcf43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $7 + JE skip_avx512_parallel84 + + MOVQ 168(SI), BX // BX: &in[7][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa + LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa + LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40a51362; WORD $0xd343; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0xaa + LONG $0x40a51362; WORD $0xdb43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40851362; WORD $0xc743; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0xaa + LONG $0x40851362; WORD $0xcf43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + +skip_avx512_parallel84: + LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 + LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 + LONG $0x48fed162; WORD $0x327f // VMOVDQU64 [r10], ZMM6 + LONG $0x48fed162; WORD $0x3c7f; BYTE $0x24 // VMOVDQU64 [r12], ZMM7 + + ADDQ $64, R11 // in4+=64 + + ADDQ $64, DX // out+=64 + ADDQ $64, CX // out2+=64 + ADDQ $64, R10 // out3+=64 + ADDQ $64, R12 // out4+=64 + + SUBQ $1, R9 + JNZ loopback_avx512_parallel84 + +done_avx512_parallel84: + VZEROUPPER + RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.go b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go new file mode 100644 index 0000000..7515ec5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go @@ -0,0 +1,92 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +//go:noescape +func galMulSSSE3(low, high, in, out []byte) + +//go:noescape +func galMulSSSE3Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2(low, high, in, out []byte) + +//go:noescape +func sSE2XorSlice(in, out []byte) + +// This is what the assembler routines do in blocks of 16 bytes: +/* +func galMulSSSE3(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] = low[l] ^ high[h] + } +} + +func galMulSSSE3Xor(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] ^= low[l] ^ high[h] + } +} +*/ + +func galMulSlice(c byte, in, out []byte, o *options) { + var done int + if o.useAVX2 { + galMulAVX2(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if o.useSSSE3 { + galMulSSSE3(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + var done int + if o.useAVX2 { + galMulAVX2Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if o.useSSSE3 { + galMulSSSE3Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + var done int + if sse2 { + sSE2XorSlice(in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + for i := done; i < len(in); i++ { + out[i] ^= in[i] + } + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.s b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s new file mode 100644 index 0000000..b768028 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s @@ -0,0 +1,236 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +// Based on http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf +// and http://jerasure.org/jerasure/gf-complete/tree/master + +// func galMulSSSE3Xor(low, high, in, out []byte) +TEXT ·galMulSSSE3Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + SHRQ $4, R9 // len(in) / 16 + MOVQ SI, AX + MOVQ DX, BX + ANDQ $15, AX + ANDQ $15, BX + CMPQ R9, $0 + JEQ done_xor + ORQ AX, BX + CMPQ BX, $0 + JNZ loopback_xor + +loopback_xor_aligned: + MOVOA (SI), X0 // in[x] + MOVOA (DX), X4 // out[x] + MOVOA X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + PXOR X4, X3 // X3: Result xor existing out + MOVOA X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor_aligned + JMP done_xor + +loopback_xor: + MOVOU (SI), X0 // in[x] + MOVOU (DX), X4 // out[x] + MOVOU X0, X1 // in[x] + MOVOU X6, X2 // low copy + MOVOU X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + PXOR X4, X3 // X3: Result xor existing out + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor + +done_xor: + RET + +// func galMulSSSE3(low, high, in, out []byte) +TEXT ·galMulSSSE3(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + MOVQ SI, AX + MOVQ DX, BX + SHRQ $4, R9 // len(in) / 16 + ANDQ $15, AX + ANDQ $15, BX + CMPQ R9, $0 + JEQ done + ORQ AX, BX + CMPQ BX, $0 + JNZ loopback + +loopback_aligned: + MOVOA (SI), X0 // in[x] + MOVOA X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + MOVOA X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_aligned + JMP done + +loopback: + MOVOU (SI), X0 // in[x] + MOVOU X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback + +done: + RET + +// func galMulAVX2Xor(low, high, in, out []byte) +TEXT ·galMulAVX2Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6: low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + VINSERTI128 $1, X6, Y6, Y6 // low + VINSERTI128 $1, X7, Y7, Y7 // high + VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) + + SHRQ $5, R9 // len(in) / 32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // SI: &in + TESTQ R9, R9 + JZ done_xor_avx2 + +loopback_xor_avx2: + VMOVDQU (SI), Y0 + VMOVDQU (DX), Y4 + VPSRLQ $4, Y0, Y1 // Y1: high input + VPAND Y8, Y0, Y0 // Y0: low input + VPAND Y8, Y1, Y1 // Y1: high input + VPSHUFB Y0, Y6, Y2 // Y2: mul low part + VPSHUFB Y1, Y7, Y3 // Y3: mul high part + VPXOR Y3, Y2, Y3 // Y3: Result + VPXOR Y4, Y3, Y4 // Y4: Result + VMOVDQU Y4, (DX) + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_xor_avx2 + +done_xor_avx2: + VZEROUPPER + RET + +// func galMulAVX2(low, high, in, out []byte) +TEXT ·galMulAVX2(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6: low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + VINSERTI128 $1, X6, Y6, Y6 // low + VINSERTI128 $1, X7, Y7, Y7 // high + VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) + + SHRQ $5, R9 // len(in) / 32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // SI: &in + TESTQ R9, R9 + JZ done_avx2 + +loopback_avx2: + VMOVDQU (SI), Y0 + VPSRLQ $4, Y0, Y1 // Y1: high input + VPAND Y8, Y0, Y0 // Y0: low input + VPAND Y8, Y1, Y1 // Y1: high input + VPSHUFB Y0, Y6, Y2 // Y2: mul low part + VPSHUFB Y1, Y7, Y3 // Y3: mul high part + VPXOR Y3, Y2, Y4 // Y4: Result + VMOVDQU Y4, (DX) + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_avx2 + +done_avx2: + VZEROUPPER + RET + +// func sSE2XorSlice(in, out []byte) +TEXT ·sSE2XorSlice(SB), 7, $0 + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), R9 // R9: len(in) + MOVQ out+24(FP), DX // DX: &out + SHRQ $4, R9 // len(in) / 16 + CMPQ R9, $0 + JEQ done_xor_sse2 + +loopback_xor_sse2: + MOVOU (SI), X0 // in[x] + MOVOU (DX), X1 // out[x] + PXOR X0, X1 + MOVOU X1, (DX) + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor_sse2 + +done_xor_sse2: + RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.go b/vendor/github.com/klauspost/reedsolomon/galois_arm64.go new file mode 100644 index 0000000..9224ff7 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_arm64.go @@ -0,0 +1,52 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2017, Minio, Inc. + +package reedsolomon + +//go:noescape +func galMulNEON(c uint64, in, out []byte) + +//go:noescape +func galMulXorNEON(c uint64, in, out []byte) + +func galMulSlice(c byte, in, out []byte, o *options) { + var done int + galMulNEON(uint64(c), in, out) + done = (len(in) >> 5) << 5 + + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + var done int + galMulXorNEON(uint64(c), in, out) + done = (len(in) >> 5) << 5 + + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.s b/vendor/github.com/klauspost/reedsolomon/galois_arm64.s new file mode 100644 index 0000000..0c43f6d --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_arm64.s @@ -0,0 +1,141 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2017, Minio, Inc. + +// Use github.com/minio/asm2plan9s on this file to assemble ARM instructions to +// the opcodes of their Plan9 equivalents + +// polynomial multiplication +#define POLYNOMIAL_MULTIPLICATION \ + WORD $0x0e3ce340 \ // pmull v0.8h,v26.8b,v28.8b + WORD $0x4e3ce346 \ // pmull2 v6.8h,v26.16b,v28.16b + WORD $0x0e3ce36c \ // pmull v12.8h,v27.8b,v28.8b + WORD $0x4e3ce372 // pmull2 v18.8h,v27.16b,v28.16b + +// first reduction +#define FIRST_REDUCTION \ + WORD $0x0f088402 \ // shrn v2.8b, v0.8h, #8 + WORD $0x0f0884c8 \ // shrn v8.8b, v6.8h, #8 + WORD $0x0f08858e \ // shrn v14.8b, v12.8h, #8 + WORD $0x0f088654 \ // shrn v20.8b, v18.8h, #8 + WORD $0x0e22e3c3 \ // pmull v3.8h,v30.8b,v2.8b + WORD $0x0e28e3c9 \ // pmull v9.8h,v30.8b,v8.8b + WORD $0x0e2ee3cf \ // pmull v15.8h,v30.8b,v14.8b + WORD $0x0e34e3d5 \ // pmull v21.8h,v30.8b,v20.8b + WORD $0x6e201c60 \ // eor v0.16b,v3.16b,v0.16b + WORD $0x6e261d26 \ // eor v6.16b,v9.16b,v6.16b + WORD $0x6e2c1dec \ // eor v12.16b,v15.16b,v12.16b + WORD $0x6e321eb2 // eor v18.16b,v21.16b,v18.16b + +// second reduction +#define SECOND_REDUCTION \ + WORD $0x0f088404 \ // shrn v4.8b, v0.8h, #8 + WORD $0x0f0884ca \ // shrn v10.8b, v6.8h, #8 + WORD $0x0f088590 \ // shrn v16.8b, v12.8h, #8 + WORD $0x0f088656 \ // shrn v22.8b, v18.8h, #8 + WORD $0x6e241c44 \ // eor v4.16b,v2.16b,v4.16b + WORD $0x6e2a1d0a \ // eor v10.16b,v8.16b,v10.16b + WORD $0x6e301dd0 \ // eor v16.16b,v14.16b,v16.16b + WORD $0x6e361e96 \ // eor v22.16b,v20.16b,v22.16b + WORD $0x0e24e3c5 \ // pmull v5.8h,v30.8b,v4.8b + WORD $0x0e2ae3cb \ // pmull v11.8h,v30.8b,v10.8b + WORD $0x0e30e3d1 \ // pmull v17.8h,v30.8b,v16.8b + WORD $0x0e36e3d7 \ // pmull v23.8h,v30.8b,v22.8b + WORD $0x6e201ca0 \ // eor v0.16b,v5.16b,v0.16b + WORD $0x6e261d61 \ // eor v1.16b,v11.16b,v6.16b + WORD $0x6e2c1e22 \ // eor v2.16b,v17.16b,v12.16b + WORD $0x6e321ee3 // eor v3.16b,v23.16b,v18.16b + +// func galMulNEON(c uint64, in, out []byte) +TEXT ·galMulNEON(SB), 7, $0 + MOVD c+0(FP), R0 + MOVD in_base+8(FP), R1 + MOVD in_len+16(FP), R2 // length of message + MOVD out_base+32(FP), R5 + SUBS $32, R2 + BMI complete + + // Load constants table pointer + MOVD $·constants(SB), R3 + + // and load constants into v30 & v31 + WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] + + WORD $0x4e010c1c // dup v28.16b, w0 + +loop: + // Main loop + WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 + + POLYNOMIAL_MULTIPLICATION + + FIRST_REDUCTION + + SECOND_REDUCTION + + // combine results + WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b + WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b + + // Store result + WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 + + SUBS $32, R2 + BPL loop + +complete: + RET + +// func galMulXorNEON(c uint64, in, out []byte) +TEXT ·galMulXorNEON(SB), 7, $0 + MOVD c+0(FP), R0 + MOVD in_base+8(FP), R1 + MOVD in_len+16(FP), R2 // length of message + MOVD out_base+32(FP), R5 + SUBS $32, R2 + BMI completeXor + + // Load constants table pointer + MOVD $·constants(SB), R3 + + // and load constants into v30 & v31 + WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] + + WORD $0x4e010c1c // dup v28.16b, w0 + +loopXor: + // Main loop + WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 + WORD $0x4c40a8b8 // ld1 {v24.4s-v25.4s}, [x5] + + POLYNOMIAL_MULTIPLICATION + + FIRST_REDUCTION + + SECOND_REDUCTION + + // combine results + WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b + WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b + + // Xor result and store + WORD $0x6e381c00 // eor v0.16b,v0.16b,v24.16b + WORD $0x6e391c21 // eor v1.16b,v1.16b,v25.16b + WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 + + SUBS $32, R2 + BPL loopXor + +completeXor: + RET + +// Constants table +// generating polynomial is 29 (= 0x1d) +DATA ·constants+0x0(SB)/8, $0x1d1d1d1d1d1d1d1d +DATA ·constants+0x8(SB)/8, $0x1d1d1d1d1d1d1d1d +// constant for TBL instruction +DATA ·constants+0x10(SB)/8, $0x0e0c0a0806040200 +DATA ·constants+0x18(SB)/8, $0x1e1c1a1816141210 + +GLOBL ·constants(SB), 8, $32 diff --git a/vendor/github.com/klauspost/reedsolomon/galois_noasm.go b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go new file mode 100644 index 0000000..cc43658 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go @@ -0,0 +1,34 @@ +//+build !amd64 noasm appengine gccgo +//+build !arm64 noasm appengine gccgo +//+build !ppc64le noasm appengine gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +func galMulSlice(c byte, in, out []byte, o *options) { + mt := mulTable[c][:256] + out = out[:len(in)] + for n, input := range in { + out[n] = mt[input] + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + mt := mulTable[c][:256] + out = out[:len(in)] + for n, input := range in { + out[n] ^= mt[input] + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + panic("unreachable") +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go new file mode 100644 index 0000000..42314a5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go @@ -0,0 +1,70 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2018, Minio, Inc. + +package reedsolomon + +//go:noescape +func galMulPpc(low, high, in, out []byte) + +//go:noescape +func galMulPpcXor(low, high, in, out []byte) + +// This is what the assembler routines do in blocks of 16 bytes: +/* +func galMulPpc(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] = low[l] ^ high[h] + } +} +func galMulPpcXor(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] ^= low[l] ^ high[h] + } +} +*/ + +func galMulSlice(c byte, in, out []byte, o *options) { + done := (len(in) >> 4) << 4 + if done > 0 { + galMulPpc(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + done := (len(in) >> 4) << 4 + if done > 0 { + galMulPpcXor(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s new file mode 100644 index 0000000..960087c --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s @@ -0,0 +1,126 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2018, Minio, Inc. + +#include "textflag.h" + +#define LOW R3 +#define HIGH R4 +#define IN R5 +#define LEN R6 +#define OUT R7 +#define CONSTANTS R8 +#define OFFSET R9 +#define OFFSET1 R10 +#define OFFSET2 R11 + +#define X6 VS34 +#define X6_ V2 +#define X7 VS35 +#define X7_ V3 +#define MSG VS36 +#define MSG_ V4 +#define MSG_HI VS37 +#define MSG_HI_ V5 +#define RESULT VS38 +#define RESULT_ V6 +#define ROTATE VS39 +#define ROTATE_ V7 +#define MASK VS40 +#define MASK_ V8 +#define FLIP VS41 +#define FLIP_ V9 + + +// func galMulPpc(low, high, in, out []byte) +TEXT ·galMulPpc(SB), NOFRAME|NOSPLIT, $0-96 + MOVD low+0(FP), LOW + MOVD high+24(FP), HIGH + MOVD in+48(FP), IN + MOVD in_len+56(FP), LEN + MOVD out+72(FP), OUT + + MOVD $16, OFFSET1 + MOVD $32, OFFSET2 + + MOVD $·constants(SB), CONSTANTS + LXVD2X (CONSTANTS)(R0), ROTATE + LXVD2X (CONSTANTS)(OFFSET1), MASK + LXVD2X (CONSTANTS)(OFFSET2), FLIP + + LXVD2X (LOW)(R0), X6 + LXVD2X (HIGH)(R0), X7 + VPERM X6_, V31, FLIP_, X6_ + VPERM X7_, V31, FLIP_, X7_ + + MOVD $0, OFFSET + +loop: + LXVD2X (IN)(OFFSET), MSG + + VSRB MSG_, ROTATE_, MSG_HI_ + VAND MSG_, MASK_, MSG_ + VPERM X6_, V31, MSG_, MSG_ + VPERM X7_, V31, MSG_HI_, MSG_HI_ + + VXOR MSG_, MSG_HI_, MSG_ + + STXVD2X MSG, (OUT)(OFFSET) + + ADD $16, OFFSET, OFFSET + CMP LEN, OFFSET + BGT loop + RET + + +// func galMulPpcXorlow, high, in, out []byte) +TEXT ·galMulPpcXor(SB), NOFRAME|NOSPLIT, $0-96 + MOVD low+0(FP), LOW + MOVD high+24(FP), HIGH + MOVD in+48(FP), IN + MOVD in_len+56(FP), LEN + MOVD out+72(FP), OUT + + MOVD $16, OFFSET1 + MOVD $32, OFFSET2 + + MOVD $·constants(SB), CONSTANTS + LXVD2X (CONSTANTS)(R0), ROTATE + LXVD2X (CONSTANTS)(OFFSET1), MASK + LXVD2X (CONSTANTS)(OFFSET2), FLIP + + LXVD2X (LOW)(R0), X6 + LXVD2X (HIGH)(R0), X7 + VPERM X6_, V31, FLIP_, X6_ + VPERM X7_, V31, FLIP_, X7_ + + MOVD $0, OFFSET + +loopXor: + LXVD2X (IN)(OFFSET), MSG + LXVD2X (OUT)(OFFSET), RESULT + + VSRB MSG_, ROTATE_, MSG_HI_ + VAND MSG_, MASK_, MSG_ + VPERM X6_, V31, MSG_, MSG_ + VPERM X7_, V31, MSG_HI_, MSG_HI_ + + VXOR MSG_, MSG_HI_, MSG_ + VXOR MSG_, RESULT_, RESULT_ + + STXVD2X RESULT, (OUT)(OFFSET) + + ADD $16, OFFSET, OFFSET + CMP LEN, OFFSET + BGT loopXor + RET + +DATA ·constants+0x0(SB)/8, $0x0404040404040404 +DATA ·constants+0x8(SB)/8, $0x0404040404040404 +DATA ·constants+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·constants+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·constants+0x20(SB)/8, $0x0706050403020100 +DATA ·constants+0x28(SB)/8, $0x0f0e0d0c0b0a0908 + +GLOBL ·constants(SB), 8, $48 diff --git a/vendor/github.com/klauspost/reedsolomon/gentables.go b/vendor/github.com/klauspost/reedsolomon/gentables.go new file mode 100644 index 0000000..843aade --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/gentables.go @@ -0,0 +1,132 @@ +//+build ignore + +package main + +import ( + "fmt" +) + +var logTable = [fieldSize]int16{ + -1, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +func main() { + t := generateExpTable() + fmt.Printf("var expTable = %#v\n", t) + //t2 := generateMulTableSplit(t) + //fmt.Printf("var mulTable = %#v\n", t2) + low, high := generateMulTableHalf(t) + fmt.Printf("var mulTableLow = %#v\n", low) + fmt.Printf("var mulTableHigh = %#v\n", high) +} + +/** + * Generates the inverse log table. + */ +func generateExpTable() []byte { + result := make([]byte, fieldSize*2-2) + for i := 1; i < fieldSize; i++ { + log := logTable[i] + result[log] = byte(i) + result[log+fieldSize-1] = byte(i) + } + return result +} + +func generateMulTable(expTable []byte) []byte { + result := make([]byte, 256*256) + for v := range result { + a := byte(v & 0xff) + b := byte(v >> 8) + if a == 0 || b == 0 { + result[v] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[v] = expTable[logA+logB] + } + return result +} + +func generateMulTableSplit(expTable []byte) [256][256]byte { + var result [256][256]byte + for a := range result { + for b := range result[a] { + if a == 0 || b == 0 { + result[a][b] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[a][b] = expTable[logA+logB] + } + } + return result +} + +func generateMulTableHalf(expTable []byte) (low [256][16]byte, high [256][16]byte) { + for a := range low { + for b := range low { + result := 0 + if !(a == 0 || b == 0) { + logA := int(logTable[a]) + logB := int(logTable[b]) + result = int(expTable[logA+logB]) + } + if (b & 0xf) == b { + low[a][b] = byte(result) + } + if (b & 0xf0) == b { + high[a][b>>4] = byte(result) + } + } + } + return +} diff --git a/vendor/github.com/klauspost/reedsolomon/inversion_tree.go b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go new file mode 100644 index 0000000..c9d8ab2 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go @@ -0,0 +1,160 @@ +/** + * A thread-safe tree which caches inverted matrices. + * + * Copyright 2016, Peter Collins + */ + +package reedsolomon + +import ( + "errors" + "sync" +) + +// The tree uses a Reader-Writer mutex to make it thread-safe +// when accessing cached matrices and inserting new ones. +type inversionTree struct { + mutex *sync.RWMutex + root inversionNode +} + +type inversionNode struct { + matrix matrix + children []*inversionNode +} + +// newInversionTree initializes a tree for storing inverted matrices. +// Note that the root node is the identity matrix as it implies +// there were no errors with the original data. +func newInversionTree(dataShards, parityShards int) inversionTree { + identity, _ := identityMatrix(dataShards) + root := inversionNode{ + matrix: identity, + children: make([]*inversionNode, dataShards+parityShards), + } + return inversionTree{ + mutex: &sync.RWMutex{}, + root: root, + } +} + +// GetInvertedMatrix returns the cached inverted matrix or nil if it +// is not found in the tree keyed on the indices of invalid rows. +func (t inversionTree) GetInvertedMatrix(invalidIndices []int) matrix { + // Lock the tree for reading before accessing the tree. + t.mutex.RLock() + defer t.mutex.RUnlock() + + // If no invalid indices were give we should return the root + // identity matrix. + if len(invalidIndices) == 0 { + return t.root.matrix + } + + // Recursively search for the inverted matrix in the tree, passing in + // 0 as the parent index as we start at the root of the tree. + return t.root.getInvertedMatrix(invalidIndices, 0) +} + +// errAlreadySet is returned if the root node matrix is overwritten +var errAlreadySet = errors.New("the root node identity matrix is already set") + +// InsertInvertedMatrix inserts a new inverted matrix into the tree +// keyed by the indices of invalid rows. The total number of shards +// is required for creating the proper length lists of child nodes for +// each node. +func (t inversionTree) InsertInvertedMatrix(invalidIndices []int, matrix matrix, shards int) error { + // If no invalid indices were given then we are done because the + // root node is already set with the identity matrix. + if len(invalidIndices) == 0 { + return errAlreadySet + } + + if !matrix.IsSquare() { + return errNotSquare + } + + // Lock the tree for writing and reading before accessing the tree. + t.mutex.Lock() + defer t.mutex.Unlock() + + // Recursively create nodes for the inverted matrix in the tree until + // we reach the node to insert the matrix to. We start by passing in + // 0 as the parent index as we start at the root of the tree. + t.root.insertInvertedMatrix(invalidIndices, matrix, shards, 0) + + return nil +} + +func (n inversionNode) getInvertedMatrix(invalidIndices []int, parent int) matrix { + // Get the child node to search next from the list of children. The + // list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, fail fast by + // returning, so we can construct and insert the proper inverted matrix. + if node == nil { + return nil + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively. + if len(invalidIndices) > 1 { + // Search recursively on the child node by passing in the invalid indices + // with the first index popped off the front. Also the parent index to + // pass down is the first index plus one. + return node.getInvertedMatrix(invalidIndices[1:], firstIndex+1) + } + // If there aren't any more invalid indices to search, we've found our + // node. Return it, however keep in mind that the matrix could still be + // nil because intermediary nodes in the tree are created sometimes with + // their inversion matrices uninitialized. + return node.matrix +} + +func (n inversionNode) insertInvertedMatrix(invalidIndices []int, matrix matrix, shards, parent int) { + // As above, get the child node to search next from the list of children. + // The list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, create a new + // node because we have the writer lock and add it to the list + // of children. + if node == nil { + // Make the length of the list of children equal to the number + // of shards minus the first invalid index because the list of + // invalid indices is sorted, so only this length of errors + // are possible in the tree. + node = &inversionNode{ + children: make([]*inversionNode, shards-firstIndex), + } + // Insert the new node into the tree at the first index relative + // to the parent index that was given in this recursive call. + n.children[firstIndex-parent] = node + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively in order to find the node to add our + // matrix. + if len(invalidIndices) > 1 { + // As above, search recursively on the child node by passing in + // the invalid indices with the first index popped off the front. + // Also the total number of shards and parent index are passed down + // which is equal to the first index plus one. + node.insertInvertedMatrix(invalidIndices[1:], matrix, shards, firstIndex+1) + } else { + // If there aren't any more invalid indices to search, we've found our + // node. Cache the inverted matrix in this node. + node.matrix = matrix + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/matrix.go b/vendor/github.com/klauspost/reedsolomon/matrix.go new file mode 100644 index 0000000..a6b9730 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/matrix.go @@ -0,0 +1,279 @@ +/** + * Matrix Algebra over an 8-bit Galois Field + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "errors" + "fmt" + "strconv" + "strings" +) + +// byte[row][col] +type matrix [][]byte + +// newMatrix returns a matrix of zeros. +func newMatrix(rows, cols int) (matrix, error) { + if rows <= 0 { + return nil, errInvalidRowSize + } + if cols <= 0 { + return nil, errInvalidColSize + } + + m := matrix(make([][]byte, rows)) + for i := range m { + m[i] = make([]byte, cols) + } + return m, nil +} + +// NewMatrixData initializes a matrix with the given row-major data. +// Note that data is not copied from input. +func newMatrixData(data [][]byte) (matrix, error) { + m := matrix(data) + err := m.Check() + if err != nil { + return nil, err + } + return m, nil +} + +// IdentityMatrix returns an identity matrix of the given size. +func identityMatrix(size int) (matrix, error) { + m, err := newMatrix(size, size) + if err != nil { + return nil, err + } + for i := range m { + m[i][i] = 1 + } + return m, nil +} + +// errInvalidRowSize will be returned if attempting to create a matrix with negative or zero row number. +var errInvalidRowSize = errors.New("invalid row size") + +// errInvalidColSize will be returned if attempting to create a matrix with negative or zero column number. +var errInvalidColSize = errors.New("invalid column size") + +// errColSizeMismatch is returned if the size of matrix columns mismatch. +var errColSizeMismatch = errors.New("column size is not the same for all rows") + +func (m matrix) Check() error { + rows := len(m) + if rows <= 0 { + return errInvalidRowSize + } + cols := len(m[0]) + if cols <= 0 { + return errInvalidColSize + } + + for _, col := range m { + if len(col) != cols { + return errColSizeMismatch + } + } + return nil +} + +// String returns a human-readable string of the matrix contents. +// +// Example: [[1, 2], [3, 4]] +func (m matrix) String() string { + rowOut := make([]string, 0, len(m)) + for _, row := range m { + colOut := make([]string, 0, len(row)) + for _, col := range row { + colOut = append(colOut, strconv.Itoa(int(col))) + } + rowOut = append(rowOut, "["+strings.Join(colOut, ", ")+"]") + } + return "[" + strings.Join(rowOut, ", ") + "]" +} + +// Multiply multiplies this matrix (the one on the left) by another +// matrix (the one on the right) and returns a new matrix with the result. +func (m matrix) Multiply(right matrix) (matrix, error) { + if len(m[0]) != len(right) { + return nil, fmt.Errorf("columns on left (%d) is different than rows on right (%d)", len(m[0]), len(right)) + } + result, _ := newMatrix(len(m), len(right[0])) + for r, row := range result { + for c := range row { + var value byte + for i := range m[0] { + value ^= galMultiply(m[r][i], right[i][c]) + } + result[r][c] = value + } + } + return result, nil +} + +// Augment returns the concatenation of this matrix and the matrix on the right. +func (m matrix) Augment(right matrix) (matrix, error) { + if len(m) != len(right) { + return nil, errMatrixSize + } + + result, _ := newMatrix(len(m), len(m[0])+len(right[0])) + for r, row := range m { + for c := range row { + result[r][c] = m[r][c] + } + cols := len(m[0]) + for c := range right[0] { + result[r][cols+c] = right[r][c] + } + } + return result, nil +} + +// errMatrixSize is returned if matrix dimensions are doesn't match. +var errMatrixSize = errors.New("matrix sizes do not match") + +func (m matrix) SameSize(n matrix) error { + if len(m) != len(n) { + return errMatrixSize + } + for i := range m { + if len(m[i]) != len(n[i]) { + return errMatrixSize + } + } + return nil +} + +// SubMatrix returns a part of this matrix. Data is copied. +func (m matrix) SubMatrix(rmin, cmin, rmax, cmax int) (matrix, error) { + result, err := newMatrix(rmax-rmin, cmax-cmin) + if err != nil { + return nil, err + } + // OPTME: If used heavily, use copy function to copy slice + for r := rmin; r < rmax; r++ { + for c := cmin; c < cmax; c++ { + result[r-rmin][c-cmin] = m[r][c] + } + } + return result, nil +} + +// SwapRows Exchanges two rows in the matrix. +func (m matrix) SwapRows(r1, r2 int) error { + if r1 < 0 || len(m) <= r1 || r2 < 0 || len(m) <= r2 { + return errInvalidRowSize + } + m[r2], m[r1] = m[r1], m[r2] + return nil +} + +// IsSquare will return true if the matrix is square +// and nil if the matrix is square +func (m matrix) IsSquare() bool { + return len(m) == len(m[0]) +} + +// errSingular is returned if the matrix is singular and cannot be inversed +var errSingular = errors.New("matrix is singular") + +// errNotSquare is returned if attempting to inverse a non-square matrix. +var errNotSquare = errors.New("only square matrices can be inverted") + +// Invert returns the inverse of this matrix. +// Returns ErrSingular when the matrix is singular and doesn't have an inverse. +// The matrix must be square, otherwise ErrNotSquare is returned. +func (m matrix) Invert() (matrix, error) { + if !m.IsSquare() { + return nil, errNotSquare + } + + size := len(m) + work, _ := identityMatrix(size) + work, _ = m.Augment(work) + + err := work.gaussianElimination() + if err != nil { + return nil, err + } + + return work.SubMatrix(0, size, size, size*2) +} + +func (m matrix) gaussianElimination() error { + rows := len(m) + columns := len(m[0]) + // Clear out the part below the main diagonal and scale the main + // diagonal to be 1. + for r := 0; r < rows; r++ { + // If the element on the diagonal is 0, find a row below + // that has a non-zero and swap them. + if m[r][r] == 0 { + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + m.SwapRows(r, rowBelow) + break + } + } + } + // If we couldn't find one, the matrix is singular. + if m[r][r] == 0 { + return errSingular + } + // Scale to 1. + if m[r][r] != 1 { + scale := galDivide(1, m[r][r]) + for c := 0; c < columns; c++ { + m[r][c] = galMultiply(m[r][c], scale) + } + } + // Make everything below the 1 be a 0 by subtracting + // a multiple of it. (Subtraction and addition are + // both exclusive or in the Galois field.) + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + scale := m[rowBelow][r] + for c := 0; c < columns; c++ { + m[rowBelow][c] ^= galMultiply(scale, m[r][c]) + } + } + } + } + + // Now clear the part above the main diagonal. + for d := 0; d < rows; d++ { + for rowAbove := 0; rowAbove < d; rowAbove++ { + if m[rowAbove][d] != 0 { + scale := m[rowAbove][d] + for c := 0; c < columns; c++ { + m[rowAbove][c] ^= galMultiply(scale, m[d][c]) + } + + } + } + } + return nil +} + +// Create a Vandermonde matrix, which is guaranteed to have the +// property that any subset of rows that forms a square matrix +// is invertible. +func vandermonde(rows, cols int) (matrix, error) { + result, err := newMatrix(rows, cols) + if err != nil { + return nil, err + } + for r, row := range result { + for c := range row { + result[r][c] = galExp(byte(r), c) + } + } + return result, nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/options.go b/vendor/github.com/klauspost/reedsolomon/options.go new file mode 100644 index 0000000..0c01d44 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/options.go @@ -0,0 +1,118 @@ +package reedsolomon + +import ( + "runtime" + + "github.com/klauspost/cpuid" +) + +// Option allows to override processing parameters. +type Option func(*options) + +type options struct { + maxGoroutines int + minSplitSize int + useAVX512, useAVX2, useSSSE3, useSSE2 bool + usePAR1Matrix bool + useCauchy bool + shardSize int +} + +var defaultOptions = options{ + maxGoroutines: 384, + minSplitSize: 1024, +} + +func init() { + if runtime.GOMAXPROCS(0) <= 1 { + defaultOptions.maxGoroutines = 1 + } + // Detect CPU capabilities. + defaultOptions.useSSSE3 = cpuid.CPU.SSSE3() + defaultOptions.useSSE2 = cpuid.CPU.SSE2() + defaultOptions.useAVX2 = cpuid.CPU.AVX2() + defaultOptions.useAVX512 = cpuid.CPU.AVX512F() && cpuid.CPU.AVX512BW() && amd64 +} + +// WithMaxGoroutines is the maximum number of goroutines number for encoding & decoding. +// Jobs will be split into this many parts, unless each goroutine would have to process +// less than minSplitSize bytes (set with WithMinSplitSize). +// For the best speed, keep this well above the GOMAXPROCS number for more fine grained +// scheduling. +// If n <= 0, it is ignored. +func WithMaxGoroutines(n int) Option { + return func(o *options) { + if n > 0 { + o.maxGoroutines = n + } + } +} + +// WithAutoGoroutines will adjust the number of goroutines for optimal speed with a +// specific shard size. +// Send in the shard size you expect to send. Other shard sizes will work, but may not +// run at the optimal speed. +// Overwrites WithMaxGoroutines. +// If shardSize <= 0, it is ignored. +func WithAutoGoroutines(shardSize int) Option { + return func(o *options) { + o.shardSize = shardSize + } +} + +// WithMinSplitSize is the minimum encoding size in bytes per goroutine. +// See WithMaxGoroutines on how jobs are split. +// If n <= 0, it is ignored. +func WithMinSplitSize(n int) Option { + return func(o *options) { + if n > 0 { + o.minSplitSize = n + } + } +} + +func withSSE3(enabled bool) Option { + return func(o *options) { + o.useSSSE3 = enabled + } +} + +func withAVX2(enabled bool) Option { + return func(o *options) { + o.useAVX2 = enabled + } +} + +func withSSE2(enabled bool) Option { + return func(o *options) { + o.useSSE2 = enabled + } +} + +func withAVX512(enabled bool) Option { + return func(o *options) { + o.useAVX512 = enabled + } +} + +// WithPAR1Matrix causes the encoder to build the matrix how PARv1 +// does. Note that the method they use is buggy, and may lead to cases +// where recovery is impossible, even if there are enough parity +// shards. +func WithPAR1Matrix() Option { + return func(o *options) { + o.usePAR1Matrix = true + o.useCauchy = false + } +} + +// WithCauchyMatrix will make the encoder build a Cauchy style matrix. +// The output of this is not compatible with the standard output. +// A Cauchy matrix is faster to generate. This does not affect data throughput, +// but will result in slightly faster start-up time. +func WithCauchyMatrix() Option { + return func(o *options) { + o.useCauchy = true + o.usePAR1Matrix = false + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/reedsolomon.go b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go new file mode 100644 index 0000000..3d4d7da --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go @@ -0,0 +1,900 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +// Package reedsolomon enables Erasure Coding in Go +// +// For usage and examples, see https://github.com/klauspost/reedsolomon +// +package reedsolomon + +import ( + "bytes" + "errors" + "io" + "runtime" + "sync" + + "github.com/klauspost/cpuid" +) + +// Encoder is an interface to encode Reed-Salomon parity sets for your data. +type Encoder interface { + // Encode parity for a set of data shards. + // Input is 'shards' containing data shards followed by parity shards. + // The number of shards must match the number given to New(). + // Each shard is a byte array, and they must all be the same size. + // The parity shards will always be overwritten and the data shards + // will remain the same, so it is safe for you to read from the + // data shards while this is running. + Encode(shards [][]byte) error + + // Verify returns true if the parity shards contain correct data. + // The data is the same format as Encode. No data is modified, so + // you are allowed to read from data while this is running. + Verify(shards [][]byte) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of shards, some of which contain data, fills in the + // ones that don't have data. + // + // The length of the array must be equal to the total number of shards. + // You indicate that a shard is missing by setting it to nil or zero-length. + // If a shard is zero-length but has sufficient capacity, that memory will + // be used, otherwise a new []byte will be allocated. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(shards [][]byte) error + + // ReconstructData will recreate any missing data shards, if possible. + // + // Given a list of shards, some of which contain data, fills in the + // data shards that don't have data. + // + // The length of the array must be equal to Shards. + // You indicate that a shard is missing by setting it to nil or zero-length. + // If a shard is zero-length but has sufficient capacity, that memory will + // be used, otherwise a new []byte will be allocated. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // As the reconstructed shard set may contain missing parity shards, + // calling the Verify function is likely to fail. + ReconstructData(shards [][]byte) error + + // Update parity is use for change a few data shards and update it's parity. + // Input 'newDatashards' containing data shards changed. + // Input 'shards' containing old data shards (if data shard not changed, it can be nil) and old parity shards. + // new parity shards will in shards[DataShards:] + // Update is very useful if DataShards much larger than ParityShards and changed data shards is few. It will + // faster than Encode and not need read all data shards to encode. + Update(shards [][]byte, newDatashards [][]byte) error + + // Split a data slice into the number of shards given to the encoder, + // and create empty parity shards. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // There must be at least 1 byte otherwise ErrShortData will be + // returned. + // + // The data will not be copied, except for the last shard, so you + // should not modify the data of the input slice afterwards. + Split(data []byte) ([][]byte, error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards [][]byte, outSize int) error +} + +// reedSolomon contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using New() +type reedSolomon struct { + DataShards int // Number of data shards, should not be modified. + ParityShards int // Number of parity shards, should not be modified. + Shards int // Total number of shards. Calculated, and should not be modified. + m matrix + tree inversionTree + parity [][]byte + o options +} + +// ErrInvShardNum will be returned by New, if you attempt to create +// an Encoder where either data or parity shards is zero or less. +var ErrInvShardNum = errors.New("cannot create Encoder with zero or less data/parity shards") + +// ErrMaxShardNum will be returned by New, if you attempt to create an +// Encoder where data and parity shards are bigger than the order of +// GF(2^8). +var ErrMaxShardNum = errors.New("cannot create Encoder with more than 256 data+parity shards") + +// buildMatrix creates the matrix to use for encoding, given the +// number of data shards and the number of total shards. +// +// The top square of the matrix is guaranteed to be an identity +// matrix, which means that the data shards are unchanged after +// encoding. +func buildMatrix(dataShards, totalShards int) (matrix, error) { + // Start with a Vandermonde matrix. This matrix would work, + // in theory, but doesn't have the property that the data + // shards are unchanged after encoding. + vm, err := vandermonde(totalShards, dataShards) + if err != nil { + return nil, err + } + + // Multiply by the inverse of the top square of the matrix. + // This will make the top square be the identity matrix, but + // preserve the property that any square subset of rows is + // invertible. + top, err := vm.SubMatrix(0, 0, dataShards, dataShards) + if err != nil { + return nil, err + } + + topInv, err := top.Invert() + if err != nil { + return nil, err + } + + return vm.Multiply(topInv) +} + +// buildMatrixPAR1 creates the matrix to use for encoding according to +// the PARv1 spec, given the number of data shards and the number of +// total shards. Note that the method they use is buggy, and may lead +// to cases where recovery is impossible, even if there are enough +// parity shards. +// +// The top square of the matrix is guaranteed to be an identity +// matrix, which means that the data shards are unchanged after +// encoding. +func buildMatrixPAR1(dataShards, totalShards int) (matrix, error) { + result, err := newMatrix(totalShards, dataShards) + if err != nil { + return nil, err + } + + for r, row := range result { + // The top portion of the matrix is the identity + // matrix, and the bottom is a transposed Vandermonde + // matrix starting at 1 instead of 0. + if r < dataShards { + result[r][r] = 1 + } else { + for c := range row { + result[r][c] = galExp(byte(c+1), r-dataShards) + } + } + } + return result, nil +} + +func buildMatrixCauchy(dataShards, totalShards int) (matrix, error) { + result, err := newMatrix(totalShards, dataShards) + if err != nil { + return nil, err + } + + for r, row := range result { + // The top portion of the matrix is the identity + // matrix, and the bottom is a transposed Cauchy matrix. + if r < dataShards { + result[r][r] = 1 + } else { + for c := range row { + result[r][c] = invTable[(byte(r ^ c))] + } + } + } + return result, nil +} + +// New creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of total shards is 256. +// If no options are supplied, default options are used. +func New(dataShards, parityShards int, opts ...Option) (Encoder, error) { + r := reedSolomon{ + DataShards: dataShards, + ParityShards: parityShards, + Shards: dataShards + parityShards, + o: defaultOptions, + } + + for _, opt := range opts { + opt(&r.o) + } + if dataShards <= 0 || parityShards <= 0 { + return nil, ErrInvShardNum + } + + if dataShards+parityShards > 256 { + return nil, ErrMaxShardNum + } + + var err error + switch { + case r.o.useCauchy: + r.m, err = buildMatrixCauchy(dataShards, r.Shards) + case r.o.usePAR1Matrix: + r.m, err = buildMatrixPAR1(dataShards, r.Shards) + default: + r.m, err = buildMatrix(dataShards, r.Shards) + } + if err != nil { + return nil, err + } + if r.o.shardSize > 0 { + cacheSize := cpuid.CPU.Cache.L2 + if cacheSize <= 0 { + // Set to 128K if undetectable. + cacheSize = 128 << 10 + } + p := runtime.NumCPU() + + // 1 input + parity must fit in cache, and we add one more to be safer. + shards := 1 + parityShards + g := (r.o.shardSize * shards) / (cacheSize - (cacheSize >> 4)) + + if cpuid.CPU.ThreadsPerCore > 1 { + // If multiple threads per core, make sure they don't contend for cache. + g *= cpuid.CPU.ThreadsPerCore + } + g *= 2 + if g < p { + g = p + } + + // Have g be multiple of p + g += p - 1 + g -= g % p + + r.o.maxGoroutines = g + } + + // Inverted matrices are cached in a tree keyed by the indices + // of the invalid rows of the data to reconstruct. + // The inversion root node will have the identity matrix as + // its inversion matrix because it implies there are no errors + // with the original data. + r.tree = newInversionTree(dataShards, parityShards) + + r.parity = make([][]byte, parityShards) + for i := range r.parity { + r.parity[i] = r.m[dataShards+i] + } + + return &r, err +} + +// ErrTooFewShards is returned if too few shards where given to +// Encode/Verify/Reconstruct/Update. It will also be returned from Reconstruct +// if there were too few shards to reconstruct the missing data. +var ErrTooFewShards = errors.New("too few shards given") + +// Encodes parity for a set of data shards. +// An array 'shards' containing data shards followed by parity shards. +// The number of shards must match the number given to New. +// Each shard is a byte array, and they must all be the same size. +// The parity shards will always be overwritten and the data shards +// will remain the same. +func (r reedSolomon) Encode(shards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + + err := checkShards(shards, false) + if err != nil { + return err + } + + // Get the slice of output buffers. + output := shards[r.DataShards:] + + // Do the coding. + r.codeSomeShards(r.parity, shards[0:r.DataShards], output, r.ParityShards, len(shards[0])) + return nil +} + +// ErrInvalidInput is returned if invalid input parameter of Update. +var ErrInvalidInput = errors.New("invalid input") + +func (r reedSolomon) Update(shards [][]byte, newDatashards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + + if len(newDatashards) != r.DataShards { + return ErrTooFewShards + } + + err := checkShards(shards, true) + if err != nil { + return err + } + + err = checkShards(newDatashards, true) + if err != nil { + return err + } + + for i := range newDatashards { + if newDatashards[i] != nil && shards[i] == nil { + return ErrInvalidInput + } + } + for _, p := range shards[r.DataShards:] { + if p == nil { + return ErrInvalidInput + } + } + + shardSize := shardSize(shards) + + // Get the slice of output buffers. + output := shards[r.DataShards:] + + // Do the coding. + r.updateParityShards(r.parity, shards[0:r.DataShards], newDatashards[0:r.DataShards], output, r.ParityShards, shardSize) + return nil +} + +func (r reedSolomon) updateParityShards(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { + if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + r.updateParityShardsP(matrixRows, oldinputs, newinputs, outputs, outputCount, byteCount) + return + } + + for c := 0; c < r.DataShards; c++ { + in := newinputs[c] + if in == nil { + continue + } + oldin := oldinputs[c] + // oldinputs data will be change + sliceXor(in, oldin, r.o.useSSE2) + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], oldin, outputs[iRow], &r.o) + } + } +} + +func (r reedSolomon) updateParityShardsP(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, stop int) { + for c := 0; c < r.DataShards; c++ { + in := newinputs[c] + if in == nil { + continue + } + oldin := oldinputs[c] + // oldinputs data will be change + sliceXor(in[start:stop], oldin[start:stop], r.o.useSSE2) + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], oldin[start:stop], outputs[iRow][start:stop], &r.o) + } + } + wg.Done() + }(start, start+do) + start += do + } + wg.Wait() +} + +// Verify returns true if the parity shards contain the right data. +// The data is the same format as Encode. No data is modified. +func (r reedSolomon) Verify(shards [][]byte) (bool, error) { + if len(shards) != r.Shards { + return false, ErrTooFewShards + } + err := checkShards(shards, false) + if err != nil { + return false, err + } + + // Slice of buffers being checked. + toCheck := shards[r.DataShards:] + + // Do the checking. + return r.checkSomeShards(r.parity, shards[0:r.DataShards], toCheck, r.ParityShards, len(shards[0])), nil +} + +// Multiplies a subset of rows from a coding matrix by a full set of +// input shards to produce some output shards. +// 'matrixRows' is The rows from the matrix to use. +// 'inputs' An array of byte arrays, each of which is one input shard. +// The number of inputs used is determined by the length of each matrix row. +// outputs Byte arrays where the computed shards are stored. +// The number of outputs computed, and the +// number of matrix rows used, is determined by +// outputCount, which is the number of outputs to compute. +func (r reedSolomon) codeSomeShards(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + if r.o.useAVX512 && len(inputs) >= 4 && len(outputs) >= 2 { + r.codeSomeShardsAvx512(matrixRows, inputs, outputs, outputCount, byteCount) + return + } else if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + r.codeSomeShardsP(matrixRows, inputs, outputs, outputCount, byteCount) + return + } + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } else { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + } +} + +// Perform the same as codeSomeShards, but split the workload into +// several goroutines. +func (r reedSolomon) codeSomeShardsP(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + // Make sizes divisible by 32 + do = (do + 31) & (^31) + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, stop int) { + for c := 0; c < r.DataShards; c++ { + in := inputs[c][start:stop] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) + } else { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) + } + } + } + wg.Done() + }(start, start+do) + start += do + } + wg.Wait() +} + +// checkSomeShards is mostly the same as codeSomeShards, +// except this will check values and return +// as soon as a difference is found. +func (r reedSolomon) checkSomeShards(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { + if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + return r.checkSomeShardsP(matrixRows, inputs, toCheck, outputCount, byteCount) + } + outputs := make([][]byte, len(toCheck)) + for i := range outputs { + outputs[i] = make([]byte, byteCount) + } + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + + for i, calc := range outputs { + if !bytes.Equal(calc, toCheck[i]) { + return false + } + } + return true +} + +func (r reedSolomon) checkSomeShardsP(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { + same := true + var mu sync.RWMutex // For above + + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + // Make sizes divisible by 32 + do = (do + 31) & (^31) + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, do int) { + defer wg.Done() + outputs := make([][]byte, len(toCheck)) + for i := range outputs { + outputs[i] = make([]byte, do) + } + for c := 0; c < r.DataShards; c++ { + mu.RLock() + if !same { + mu.RUnlock() + return + } + mu.RUnlock() + in := inputs[c][start : start+do] + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + + for i, calc := range outputs { + if !bytes.Equal(calc, toCheck[i][start:start+do]) { + mu.Lock() + same = false + mu.Unlock() + return + } + } + }(start, do) + start += do + } + wg.Wait() + return same +} + +// ErrShardNoData will be returned if there are no shards, +// or if the length of all shards is zero. +var ErrShardNoData = errors.New("no shard data") + +// ErrShardSize is returned if shard length isn't the same for all +// shards. +var ErrShardSize = errors.New("shard sizes do not match") + +// checkShards will check if shards are the same size +// or 0, if allowed. An error is returned if this fails. +// An error is also returned if all shards are size 0. +func checkShards(shards [][]byte, nilok bool) error { + size := shardSize(shards) + if size == 0 { + return ErrShardNoData + } + for _, shard := range shards { + if len(shard) != size { + if len(shard) != 0 || !nilok { + return ErrShardSize + } + } + } + return nil +} + +// shardSize return the size of a single shard. +// The first non-zero size is returned, +// or 0 if all shards are size 0. +func shardSize(shards [][]byte) int { + for _, shard := range shards { + if len(shard) != 0 { + return len(shard) + } + } + return 0 +} + +// Reconstruct will recreate the missing shards, if possible. +// +// Given a list of shards, some of which contain data, fills in the +// ones that don't have data. +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil or zero-length. +// If a shard is zero-length but has sufficient capacity, that memory will +// be used, otherwise a new []byte will be allocated. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete, but integrity is not verified. +// Use the Verify function to check if data set is ok. +func (r reedSolomon) Reconstruct(shards [][]byte) error { + return r.reconstruct(shards, false) +} + +// ReconstructData will recreate any missing data shards, if possible. +// +// Given a list of shards, some of which contain data, fills in the +// data shards that don't have data. +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil or zero-length. +// If a shard is zero-length but has sufficient capacity, that memory will +// be used, otherwise a new []byte will be allocated. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// As the reconstructed shard set may contain missing parity shards, +// calling the Verify function is likely to fail. +func (r reedSolomon) ReconstructData(shards [][]byte) error { + return r.reconstruct(shards, true) +} + +// reconstruct will recreate the missing data shards, and unless +// dataOnly is true, also the missing parity shards +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +func (r reedSolomon) reconstruct(shards [][]byte, dataOnly bool) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + // Check arguments. + err := checkShards(shards, true) + if err != nil { + return err + } + + shardSize := shardSize(shards) + + // Quick check: are all of the shards present? If so, there's + // nothing to do. + numberPresent := 0 + dataPresent := 0 + for i := 0; i < r.Shards; i++ { + if len(shards[i]) != 0 { + numberPresent++ + if i < r.DataShards { + dataPresent++ + } + } + } + if numberPresent == r.Shards || dataOnly && dataPresent == r.DataShards { + // Cool. All of the shards data data. We don't + // need to do anything. + return nil + } + + // More complete sanity check + if numberPresent < r.DataShards { + return ErrTooFewShards + } + + // Pull out an array holding just the shards that + // correspond to the rows of the submatrix. These shards + // will be the input to the decoding process that re-creates + // the missing data shards. + // + // Also, create an array of indices of the valid rows we do have + // and the invalid rows we don't have up until we have enough valid rows. + subShards := make([][]byte, r.DataShards) + validIndices := make([]int, r.DataShards) + invalidIndices := make([]int, 0) + subMatrixRow := 0 + for matrixRow := 0; matrixRow < r.Shards && subMatrixRow < r.DataShards; matrixRow++ { + if len(shards[matrixRow]) != 0 { + subShards[subMatrixRow] = shards[matrixRow] + validIndices[subMatrixRow] = matrixRow + subMatrixRow++ + } else { + invalidIndices = append(invalidIndices, matrixRow) + } + } + + // Attempt to get the cached inverted matrix out of the tree + // based on the indices of the invalid rows. + dataDecodeMatrix := r.tree.GetInvertedMatrix(invalidIndices) + + // If the inverted matrix isn't cached in the tree yet we must + // construct it ourselves and insert it into the tree for the + // future. In this way the inversion tree is lazily loaded. + if dataDecodeMatrix == nil { + // Pull out the rows of the matrix that correspond to the + // shards that we have and build a square matrix. This + // matrix could be used to generate the shards that we have + // from the original data. + subMatrix, _ := newMatrix(r.DataShards, r.DataShards) + for subMatrixRow, validIndex := range validIndices { + for c := 0; c < r.DataShards; c++ { + subMatrix[subMatrixRow][c] = r.m[validIndex][c] + } + } + // Invert the matrix, so we can go from the encoded shards + // back to the original data. Then pull out the row that + // generates the shard that we want to decode. Note that + // since this matrix maps back to the original data, it can + // be used to create a data shard, but not a parity shard. + dataDecodeMatrix, err = subMatrix.Invert() + if err != nil { + return err + } + + // Cache the inverted matrix in the tree for future use keyed on the + // indices of the invalid rows. + err = r.tree.InsertInvertedMatrix(invalidIndices, dataDecodeMatrix, r.Shards) + if err != nil { + return err + } + } + + // Re-create any data shards that were missing. + // + // The input to the coding is all of the shards we actually + // have, and the output is the missing data shards. The computation + // is done using the special decode matrix we just built. + outputs := make([][]byte, r.ParityShards) + matrixRows := make([][]byte, r.ParityShards) + outputCount := 0 + + for iShard := 0; iShard < r.DataShards; iShard++ { + if len(shards[iShard]) == 0 { + if cap(shards[iShard]) >= shardSize { + shards[iShard] = shards[iShard][0:shardSize] + } else { + shards[iShard] = make([]byte, shardSize) + } + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = dataDecodeMatrix[iShard] + outputCount++ + } + } + r.codeSomeShards(matrixRows, subShards, outputs[:outputCount], outputCount, shardSize) + + if dataOnly { + // Exit out early if we are only interested in the data shards + return nil + } + + // Now that we have all of the data shards intact, we can + // compute any of the parity that is missing. + // + // The input to the coding is ALL of the data shards, including + // any that we just calculated. The output is whichever of the + // data shards were missing. + outputCount = 0 + for iShard := r.DataShards; iShard < r.Shards; iShard++ { + if len(shards[iShard]) == 0 { + if cap(shards[iShard]) >= shardSize { + shards[iShard] = shards[iShard][0:shardSize] + } else { + shards[iShard] = make([]byte, shardSize) + } + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = r.parity[iShard-r.DataShards] + outputCount++ + } + } + r.codeSomeShards(matrixRows, shards[:r.DataShards], outputs[:outputCount], outputCount, shardSize) + return nil +} + +// ErrShortData will be returned by Split(), if there isn't enough data +// to fill the number of shards. +var ErrShortData = errors.New("not enough data to fill the number of requested shards") + +// Split a data slice into the number of shards given to the encoder, +// and create empty parity shards if necessary. +// +// The data will be split into equally sized shards. +// If the data size isn't divisible by the number of shards, +// the last shard will contain extra zeros. +// +// There must be at least 1 byte otherwise ErrShortData will be +// returned. +// +// The data will not be copied, except for the last shard, so you +// should not modify the data of the input slice afterwards. +func (r reedSolomon) Split(data []byte) ([][]byte, error) { + if len(data) == 0 { + return nil, ErrShortData + } + // Calculate number of bytes per data shard. + perShard := (len(data) + r.DataShards - 1) / r.DataShards + + if cap(data) > len(data) { + data = data[:cap(data)] + } + + // Only allocate memory if necessary + var padding []byte + if len(data) < (r.Shards * perShard) { + // calculate maximum number of full shards in `data` slice + fullShards := len(data) / perShard + padding = make([]byte, r.Shards*perShard-perShard*fullShards) + copy(padding, data[perShard*fullShards:]) + data = data[0 : perShard*fullShards] + } + + // Split into equal-length shards. + dst := make([][]byte, r.Shards) + i := 0 + for ; i < len(dst) && len(data) >= perShard; i++ { + dst[i] = data[:perShard:perShard] + data = data[perShard:] + } + + for j := 0; i+j < len(dst); j++ { + dst[i+j] = padding[:perShard:perShard] + padding = padding[perShard:] + } + + return dst, nil +} + +// ErrReconstructRequired is returned if too few data shards are intact and a +// reconstruction is required before you can successfully join the shards. +var ErrReconstructRequired = errors.New("reconstruction required as one or more required data shards are nil") + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// You must supply the exact output size you want. +// +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +// If one or more required data shards are nil, ErrReconstructRequired will be returned. +func (r reedSolomon) Join(dst io.Writer, shards [][]byte, outSize int) error { + // Do we have enough shards? + if len(shards) < r.DataShards { + return ErrTooFewShards + } + shards = shards[:r.DataShards] + + // Do we have enough data? + size := 0 + for _, shard := range shards { + if shard == nil { + return ErrReconstructRequired + } + size += len(shard) + + // Do we have enough data already? + if size >= outSize { + break + } + } + if size < outSize { + return ErrShortData + } + + // Copy data to dst + write := outSize + for _, shard := range shards { + if write < len(shard) { + _, err := dst.Write(shard[:write]) + return err + } + n, err := dst.Write(shard) + if err != nil { + return err + } + write -= n + } + return nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/streaming.go b/vendor/github.com/klauspost/reedsolomon/streaming.go new file mode 100644 index 0000000..e1a91e2 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/streaming.go @@ -0,0 +1,582 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "bytes" + "errors" + "fmt" + "io" + "sync" +) + +// StreamEncoder is an interface to encode Reed-Salomon parity sets for your data. +// It provides a fully streaming interface, and processes data in blocks of up to 4MB. +// +// For small shard sizes, 10MB and below, it is recommended to use the in-memory interface, +// since the streaming interface has a start up overhead. +// +// For all operations, no readers and writers should not assume any order/size of +// individual reads/writes. +// +// For usage examples, see "stream-encoder.go" and "streamdecoder.go" in the examples +// folder. +type StreamEncoder interface { + // Encode parity shards for a set of data shards. + // + // Input is 'shards' containing readers for data shards followed by parity shards + // io.Writer. + // + // The number of shards must match the number given to NewStream(). + // + // Each reader must supply the same number of bytes. + // + // The parity shards will be written to the writer. + // The number of bytes written will match the input size. + // + // If a data stream returns an error, a StreamReadError type error + // will be returned. If a parity writer returns an error, a + // StreamWriteError will be returned. + Encode(data []io.Reader, parity []io.Writer) error + + // Verify returns true if the parity shards contain correct data. + // + // The number of shards must match the number total data+parity shards + // given to NewStream(). + // + // Each reader must supply the same number of bytes. + // If a shard stream returns an error, a StreamReadError type error + // will be returned. + Verify(shards []io.Reader) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of valid shards (to read) and invalid shards (to write) + // + // You indicate that a shard is missing by setting it to nil in the 'valid' + // slice and at the same time setting a non-nil writer in "fill". + // An index cannot contain both non-nil 'valid' and 'fill' entry. + // If both are provided 'ErrReconstructMismatch' is returned. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(valid []io.Reader, fill []io.Writer) error + + // Split a an input stream into the number of shards given to the encoder. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // You must supply the total size of your input. + // 'ErrShortData' will be returned if it is unable to retrieve the + // number of bytes indicated. + Split(data io.Reader, dst []io.Writer, size int64) (err error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards []io.Reader, outSize int64) error +} + +// StreamReadError is returned when a read error is encountered +// that relates to a supplied stream. +// This will allow you to find out which reader has failed. +type StreamReadError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamReadError) Error() string { + return fmt.Sprintf("error reading stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamReadError) String() string { + return s.Error() +} + +// StreamWriteError is returned when a write error is encountered +// that relates to a supplied stream. This will allow you to +// find out which reader has failed. +type StreamWriteError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamWriteError) Error() string { + return fmt.Sprintf("error writing stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamWriteError) String() string { + return s.Error() +} + +// rsStream contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using NewStream() +type rsStream struct { + r *reedSolomon + bs int // Block size + // Shard reader + readShards func(dst [][]byte, in []io.Reader) error + // Shard writer + writeShards func(out []io.Writer, in [][]byte) error +} + +// NewStream creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of data shards is 256. +func NewStream(dataShards, parityShards int, o ...Option) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards, o...) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + return &r, err +} + +// NewStreamC creates a new encoder and initializes it to +// the number of data shards and parity shards given. +// +// This functions as 'NewStream', but allows you to enable CONCURRENT reads and writes. +func NewStreamC(dataShards, parityShards int, conReads, conWrites bool, o ...Option) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards, o...) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + if conReads { + r.readShards = cReadShards + } + if conWrites { + r.writeShards = cWriteShards + } + return &r, err +} + +func createSlice(n, length int) [][]byte { + out := make([][]byte, n) + for i := range out { + out[i] = make([]byte, length) + } + return out +} + +// Encodes parity shards for a set of data shards. +// +// Input is 'shards' containing readers for data shards followed by parity shards +// io.Writer. +// +// The number of shards must match the number given to NewStream(). +// +// Each reader must supply the same number of bytes. +// +// The parity shards will be written to the writer. +// The number of bytes written will match the input size. +// +// If a data stream returns an error, a StreamReadError type error +// will be returned. If a parity writer returns an error, a +// StreamWriteError will be returned. +func (r rsStream) Encode(data []io.Reader, parity []io.Writer) error { + if len(data) != r.r.DataShards { + return ErrTooFewShards + } + + if len(parity) != r.r.ParityShards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + in := all[:r.r.DataShards] + out := all[r.r.DataShards:] + read := 0 + + for { + err := r.readShards(in, data) + switch err { + case nil: + case io.EOF: + if read == 0 { + return ErrShardNoData + } + return nil + default: + return err + } + out = trimShards(out, shardSize(in)) + read += shardSize(in) + err = r.r.Encode(all) + if err != nil { + return err + } + err = r.writeShards(parity, out) + if err != nil { + return err + } + } +} + +// Trim the shards so they are all the same size +func trimShards(in [][]byte, size int) [][]byte { + for i := range in { + if in[i] != nil { + in[i] = in[i][0:size] + } + if len(in[i]) < size { + in[i] = nil + } + } + return in +} + +func readShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size do not match") + } + size := -1 + for i := range in { + if in[i] == nil { + dst[i] = nil + continue + } + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + switch err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = n + } else if n != size { + // Shard sizes must match. + return ErrShardSize + } + dst[i] = dst[i][0:n] + case nil: + continue + default: + return StreamReadError{Err: err, Stream: i} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +func writeShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size do not match") + } + for i := range in { + if out[i] == nil { + continue + } + n, err := out[i].Write(in[i]) + if err != nil { + return StreamWriteError{Err: err, Stream: i} + } + // + if n != len(in[i]) { + return StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + } + return nil +} + +type readResult struct { + n int + size int + err error +} + +// cReadShards reads shards concurrently +func cReadShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size do not match") + } + var wg sync.WaitGroup + wg.Add(len(in)) + res := make(chan readResult, len(in)) + for i := range in { + if in[i] == nil { + dst[i] = nil + wg.Done() + continue + } + go func(i int) { + defer wg.Done() + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + res <- readResult{size: n, err: err, n: i} + + }(i) + } + wg.Wait() + close(res) + size := -1 + for r := range res { + switch r.err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = r.size + } else if r.size != size { + // Shard sizes must match. + return ErrShardSize + } + dst[r.n] = dst[r.n][0:r.size] + case nil: + default: + return StreamReadError{Err: r.err, Stream: r.n} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +// cWriteShards writes shards concurrently +func cWriteShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size do not match") + } + var errs = make(chan error, len(out)) + var wg sync.WaitGroup + wg.Add(len(out)) + for i := range in { + go func(i int) { + defer wg.Done() + if out[i] == nil { + errs <- nil + return + } + n, err := out[i].Write(in[i]) + if err != nil { + errs <- StreamWriteError{Err: err, Stream: i} + return + } + if n != len(in[i]) { + errs <- StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + }(i) + } + wg.Wait() + close(errs) + for err := range errs { + if err != nil { + return err + } + } + + return nil +} + +// Verify returns true if the parity shards contain correct data. +// +// The number of shards must match the number total data+parity shards +// given to NewStream(). +// +// Each reader must supply the same number of bytes. +// If a shard stream returns an error, a StreamReadError type error +// will be returned. +func (r rsStream) Verify(shards []io.Reader) (bool, error) { + if len(shards) != r.r.Shards { + return false, ErrTooFewShards + } + + read := 0 + all := createSlice(r.r.Shards, r.bs) + for { + err := r.readShards(all, shards) + if err == io.EOF { + if read == 0 { + return false, ErrShardNoData + } + return true, nil + } + if err != nil { + return false, err + } + read += shardSize(all) + ok, err := r.r.Verify(all) + if !ok || err != nil { + return ok, err + } + } +} + +// ErrReconstructMismatch is returned by the StreamEncoder, if you supply +// "valid" and "fill" streams on the same index. +// Therefore it is impossible to see if you consider the shard valid +// or would like to have it reconstructed. +var ErrReconstructMismatch = errors.New("valid shards and fill shards are mutually exclusive") + +// Reconstruct will recreate the missing shards if possible. +// +// Given a list of valid shards (to read) and invalid shards (to write) +// +// You indicate that a shard is missing by setting it to nil in the 'valid' +// slice and at the same time setting a non-nil writer in "fill". +// An index cannot contain both non-nil 'valid' and 'fill' entry. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete when explicitly asked for all missing shards. +// However its integrity is not automatically verified. +// Use the Verify function to check in case the data set is complete. +func (r rsStream) Reconstruct(valid []io.Reader, fill []io.Writer) error { + if len(valid) != r.r.Shards { + return ErrTooFewShards + } + if len(fill) != r.r.Shards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + reconDataOnly := true + for i := range valid { + if valid[i] != nil && fill[i] != nil { + return ErrReconstructMismatch + } + if i >= r.r.DataShards && fill[i] != nil { + reconDataOnly = false + } + } + + read := 0 + for { + err := r.readShards(all, valid) + if err == io.EOF { + if read == 0 { + return ErrShardNoData + } + return nil + } + if err != nil { + return err + } + read += shardSize(all) + all = trimShards(all, shardSize(all)) + + if reconDataOnly { + err = r.r.ReconstructData(all) // just reconstruct missing data shards + } else { + err = r.r.Reconstruct(all) // reconstruct all missing shards + } + if err != nil { + return err + } + err = r.writeShards(fill, all) + if err != nil { + return err + } + } +} + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// +// You must supply the exact output size you want. +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +func (r rsStream) Join(dst io.Writer, shards []io.Reader, outSize int64) error { + // Do we have enough shards? + if len(shards) < r.r.DataShards { + return ErrTooFewShards + } + + // Trim off parity shards if any + shards = shards[:r.r.DataShards] + for i := range shards { + if shards[i] == nil { + return StreamReadError{Err: ErrShardNoData, Stream: i} + } + } + // Join all shards + src := io.MultiReader(shards...) + + // Copy data to dst + n, err := io.CopyN(dst, src, outSize) + if err == io.EOF { + return ErrShortData + } + if err != nil { + return err + } + if n != outSize { + return ErrShortData + } + return nil +} + +// Split a an input stream into the number of shards given to the encoder. +// +// The data will be split into equally sized shards. +// If the data size isn't dividable by the number of shards, +// the last shard will contain extra zeros. +// +// You must supply the total size of your input. +// 'ErrShortData' will be returned if it is unable to retrieve the +// number of bytes indicated. +func (r rsStream) Split(data io.Reader, dst []io.Writer, size int64) error { + if size == 0 { + return ErrShortData + } + if len(dst) != r.r.DataShards { + return ErrInvShardNum + } + + for i := range dst { + if dst[i] == nil { + return StreamWriteError{Err: ErrShardNoData, Stream: i} + } + } + + // Calculate number of bytes per shard. + perShard := (size + int64(r.r.DataShards) - 1) / int64(r.r.DataShards) + + // Pad data to r.Shards*perShard. + padding := make([]byte, (int64(r.r.Shards)*perShard)-size) + data = io.MultiReader(data, bytes.NewBuffer(padding)) + + // Split into equal-length shards and copy. + for i := range dst { + n, err := io.CopyN(dst[i], data, perShard) + if err != io.EOF && err != nil { + return err + } + if n != perShard { + return ErrShortData + } + } + + return nil +} diff --git a/vendor/github.com/kr/pty/.gitignore b/vendor/github.com/kr/pty/.gitignore new file mode 100644 index 0000000..1f0a99f --- /dev/null +++ b/vendor/github.com/kr/pty/.gitignore @@ -0,0 +1,4 @@ +[568].out +_go* +_test* +_obj diff --git a/vendor/github.com/kr/pty/License b/vendor/github.com/kr/pty/License new file mode 100644 index 0000000..6b7558b --- /dev/null +++ b/vendor/github.com/kr/pty/License @@ -0,0 +1,23 @@ +Copyright (c) 2011 Keith Rarick + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/kr/pty/README.md b/vendor/github.com/kr/pty/README.md new file mode 100644 index 0000000..f9bb002 --- /dev/null +++ b/vendor/github.com/kr/pty/README.md @@ -0,0 +1,100 @@ +# pty + +Pty is a Go package for using unix pseudo-terminals. + +## Install + + go get github.com/kr/pty + +## Example + +### Command + +```go +package main + +import ( + "github.com/kr/pty" + "io" + "os" + "os/exec" +) + +func main() { + c := exec.Command("grep", "--color=auto", "bar") + f, err := pty.Start(c) + if err != nil { + panic(err) + } + + go func() { + f.Write([]byte("foo\n")) + f.Write([]byte("bar\n")) + f.Write([]byte("baz\n")) + f.Write([]byte{4}) // EOT + }() + io.Copy(os.Stdout, f) +} +``` + +### Shell + +```go +package main + +import ( + "io" + "log" + "os" + "os/exec" + "os/signal" + "syscall" + + "github.com/kr/pty" + "golang.org/x/crypto/ssh/terminal" +) + +func test() error { + // Create arbitrary command. + c := exec.Command("bash") + + // Start the command with a pty. + ptmx, err := pty.Start(c) + if err != nil { + return err + } + // Make sure to close the pty at the end. + defer func() { _ = ptmx.Close() }() // Best effort. + + // Handle pty size. + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGWINCH) + go func() { + for range ch { + if err := pty.InheritSize(os.Stdin, ptmx); err != nil { + log.Printf("error resizing pty: %s", err) + } + } + }() + ch <- syscall.SIGWINCH // Initial resize. + + // Set stdin in raw mode. + oldState, err := terminal.MakeRaw(int(os.Stdin.Fd())) + if err != nil { + panic(err) + } + defer func() { _ = terminal.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. + + // Copy stdin to the pty and the pty to stdout. + go func() { _, _ = io.Copy(ptmx, os.Stdin) }() + _, _ = io.Copy(os.Stdout, ptmx) + + return nil +} + +func main() { + if err := test(); err != nil { + log.Fatal(err) + } +} +``` diff --git a/vendor/github.com/kr/pty/doc.go b/vendor/github.com/kr/pty/doc.go new file mode 100644 index 0000000..190cfbe --- /dev/null +++ b/vendor/github.com/kr/pty/doc.go @@ -0,0 +1,16 @@ +// Package pty provides functions for working with Unix terminals. +package pty + +import ( + "errors" + "os" +) + +// ErrUnsupported is returned if a function is not +// available on the current platform. +var ErrUnsupported = errors.New("unsupported") + +// Opens a pty and its corresponding tty. +func Open() (pty, tty *os.File, err error) { + return open() +} diff --git a/vendor/github.com/kr/pty/go.mod b/vendor/github.com/kr/pty/go.mod new file mode 100644 index 0000000..4a275a5 --- /dev/null +++ b/vendor/github.com/kr/pty/go.mod @@ -0,0 +1 @@ +module github.com/kr/pty diff --git a/vendor/github.com/kr/pty/ioctl.go b/vendor/github.com/kr/pty/ioctl.go new file mode 100644 index 0000000..c57c19e --- /dev/null +++ b/vendor/github.com/kr/pty/ioctl.go @@ -0,0 +1,13 @@ +// +build !windows + +package pty + +import "syscall" + +func ioctl(fd, cmd, ptr uintptr) error { + _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/github.com/kr/pty/ioctl_bsd.go b/vendor/github.com/kr/pty/ioctl_bsd.go new file mode 100644 index 0000000..73b12c5 --- /dev/null +++ b/vendor/github.com/kr/pty/ioctl_bsd.go @@ -0,0 +1,39 @@ +// +build darwin dragonfly freebsd netbsd openbsd + +package pty + +// from +const ( + _IOC_VOID uintptr = 0x20000000 + _IOC_OUT uintptr = 0x40000000 + _IOC_IN uintptr = 0x80000000 + _IOC_IN_OUT uintptr = _IOC_OUT | _IOC_IN + _IOC_DIRMASK = _IOC_VOID | _IOC_OUT | _IOC_IN + + _IOC_PARAM_SHIFT = 13 + _IOC_PARAM_MASK = (1 << _IOC_PARAM_SHIFT) - 1 +) + +func _IOC_PARM_LEN(ioctl uintptr) uintptr { + return (ioctl >> 16) & _IOC_PARAM_MASK +} + +func _IOC(inout uintptr, group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return inout | (param_len&_IOC_PARAM_MASK)<<16 | uintptr(group)<<8 | ioctl_num +} + +func _IO(group byte, ioctl_num uintptr) uintptr { + return _IOC(_IOC_VOID, group, ioctl_num, 0) +} + +func _IOR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_OUT, group, ioctl_num, param_len) +} + +func _IOW(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_IN, group, ioctl_num, param_len) +} + +func _IOWR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_IN_OUT, group, ioctl_num, param_len) +} diff --git a/vendor/github.com/kr/pty/mktypes.bash b/vendor/github.com/kr/pty/mktypes.bash new file mode 100644 index 0000000..82ee167 --- /dev/null +++ b/vendor/github.com/kr/pty/mktypes.bash @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +GOOSARCH="${GOOS}_${GOARCH}" +case "$GOOSARCH" in +_* | *_ | _) + echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 + exit 1 + ;; +esac + +GODEFS="go tool cgo -godefs" + +$GODEFS types.go |gofmt > ztypes_$GOARCH.go + +case $GOOS in +freebsd|dragonfly|openbsd) + $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go + ;; +esac diff --git a/vendor/github.com/kr/pty/pty_darwin.go b/vendor/github.com/kr/pty/pty_darwin.go new file mode 100644 index 0000000..6344b6b --- /dev/null +++ b/vendor/github.com/kr/pty/pty_darwin.go @@ -0,0 +1,65 @@ +package pty + +import ( + "errors" + "os" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + pFD, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_CLOEXEC, 0) + if err != nil { + return nil, nil, err + } + p := os.NewFile(uintptr(pFD), "/dev/ptmx") + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := grantpt(p); err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func ptsname(f *os.File) (string, error) { + n := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME)) + + err := ioctl(f.Fd(), syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) + if err != nil { + return "", err + } + + for i, c := range n { + if c == 0 { + return string(n[:i]), nil + } + } + return "", errors.New("TIOCPTYGNAME string not NUL-terminated") +} + +func grantpt(f *os.File) error { + return ioctl(f.Fd(), syscall.TIOCPTYGRANT, 0) +} + +func unlockpt(f *os.File) error { + return ioctl(f.Fd(), syscall.TIOCPTYUNLK, 0) +} diff --git a/vendor/github.com/kr/pty/pty_dragonfly.go b/vendor/github.com/kr/pty/pty_dragonfly.go new file mode 100644 index 0000000..b7d1f20 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_dragonfly.go @@ -0,0 +1,80 @@ +package pty + +import ( + "errors" + "os" + "strings" + "syscall" + "unsafe" +) + +// same code as pty_darwin.go +func open() (pty, tty *os.File, err error) { + p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := grantpt(p); err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func grantpt(f *os.File) error { + _, err := isptmaster(f.Fd()) + return err +} + +func unlockpt(f *os.File) error { + _, err := isptmaster(f.Fd()) + return err +} + +func isptmaster(fd uintptr) (bool, error) { + err := ioctl(fd, syscall.TIOCISPTMASTER, 0) + return err == nil, err +} + +var ( + emptyFiodgnameArg fiodgnameArg + ioctl_FIODNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) +) + +func ptsname(f *os.File) (string, error) { + name := make([]byte, _C_SPECNAMELEN) + fa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}} + + err := ioctl(f.Fd(), ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) + if err != nil { + return "", err + } + + for i, c := range name { + if c == 0 { + s := "/dev/" + string(name[:i]) + return strings.Replace(s, "ptm", "pts", -1), nil + } + } + return "", errors.New("TIOCPTYGNAME string not NUL-terminated") +} diff --git a/vendor/github.com/kr/pty/pty_freebsd.go b/vendor/github.com/kr/pty/pty_freebsd.go new file mode 100644 index 0000000..63b6d91 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_freebsd.go @@ -0,0 +1,78 @@ +package pty + +import ( + "errors" + "os" + "syscall" + "unsafe" +) + +func posixOpenpt(oflag int) (fd int, err error) { + r0, _, e1 := syscall.Syscall(syscall.SYS_POSIX_OPENPT, uintptr(oflag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return fd, err +} + +func open() (pty, tty *os.File, err error) { + fd, err := posixOpenpt(syscall.O_RDWR | syscall.O_CLOEXEC) + if err != nil { + return nil, nil, err + } + p := os.NewFile(uintptr(fd), "/dev/pts") + // In case of error after this point, make sure we close the pts fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + t, err := os.OpenFile("/dev/"+sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func isptmaster(fd uintptr) (bool, error) { + err := ioctl(fd, syscall.TIOCPTMASTER, 0) + return err == nil, err +} + +var ( + emptyFiodgnameArg fiodgnameArg + ioctlFIODGNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) +) + +func ptsname(f *os.File) (string, error) { + master, err := isptmaster(f.Fd()) + if err != nil { + return "", err + } + if !master { + return "", syscall.EINVAL + } + + const n = _C_SPECNAMELEN + 1 + var ( + buf = make([]byte, n) + arg = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))} + ) + if err := ioctl(f.Fd(), ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil { + return "", err + } + + for i, c := range buf { + if c == 0 { + return string(buf[:i]), nil + } + } + return "", errors.New("FIODGNAME string not NUL-terminated") +} diff --git a/vendor/github.com/kr/pty/pty_linux.go b/vendor/github.com/kr/pty/pty_linux.go new file mode 100644 index 0000000..4a833de --- /dev/null +++ b/vendor/github.com/kr/pty/pty_linux.go @@ -0,0 +1,51 @@ +package pty + +import ( + "os" + "strconv" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func ptsname(f *os.File) (string, error) { + var n _C_uint + err := ioctl(f.Fd(), syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) + if err != nil { + return "", err + } + return "/dev/pts/" + strconv.Itoa(int(n)), nil +} + +func unlockpt(f *os.File) error { + var u _C_int + // use TIOCSPTLCK with a pointer to zero to clear the lock + return ioctl(f.Fd(), syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) +} diff --git a/vendor/github.com/kr/pty/pty_openbsd.go b/vendor/github.com/kr/pty/pty_openbsd.go new file mode 100644 index 0000000..a6a35d1 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_openbsd.go @@ -0,0 +1,33 @@ +package pty + +import ( + "os" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + /* + * from ptm(4): + * The PTMGET command allocates a free pseudo terminal, changes its + * ownership to the caller, revokes the access privileges for all previous + * users, opens the file descriptors for the pty and tty devices and + * returns them to the caller in struct ptmget. + */ + + p, err := os.OpenFile("/dev/ptm", os.O_RDWR|syscall.O_CLOEXEC, 0) + if err != nil { + return nil, nil, err + } + defer p.Close() + + var ptm ptmget + if err := ioctl(p.Fd(), uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil { + return nil, nil, err + } + + pty = os.NewFile(uintptr(ptm.Cfd), "/dev/ptm") + tty = os.NewFile(uintptr(ptm.Sfd), "/dev/ptm") + + return pty, tty, nil +} diff --git a/vendor/github.com/kr/pty/pty_unsupported.go b/vendor/github.com/kr/pty/pty_unsupported.go new file mode 100644 index 0000000..9a3e721 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_unsupported.go @@ -0,0 +1,11 @@ +// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd + +package pty + +import ( + "os" +) + +func open() (pty, tty *os.File, err error) { + return nil, nil, ErrUnsupported +} diff --git a/vendor/github.com/kr/pty/run.go b/vendor/github.com/kr/pty/run.go new file mode 100644 index 0000000..56a26ad --- /dev/null +++ b/vendor/github.com/kr/pty/run.go @@ -0,0 +1,56 @@ +// +build !windows + +package pty + +import ( + "os" + "os/exec" + "syscall" +) + +// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +func Start(c *exec.Cmd) (pty *os.File, err error) { + return StartWithSize(c, nil) +} + +// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +// +// This will resize the pty to the specified size before starting the command +func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { + pty, tty, err := Open() + if err != nil { + return nil, err + } + defer tty.Close() + if sz != nil { + err = Setsize(pty, sz) + if err != nil { + pty.Close() + return nil, err + } + } + if c.Stdout == nil { + c.Stdout = tty + } + if c.Stderr == nil { + c.Stderr = tty + } + if c.Stdin == nil { + c.Stdin = tty + } + if c.SysProcAttr == nil { + c.SysProcAttr = &syscall.SysProcAttr{} + } + c.SysProcAttr.Setctty = true + c.SysProcAttr.Setsid = true + err = c.Start() + if err != nil { + pty.Close() + return nil, err + } + return pty, err +} diff --git a/vendor/github.com/kr/pty/types.go b/vendor/github.com/kr/pty/types.go new file mode 100644 index 0000000..5aecb6b --- /dev/null +++ b/vendor/github.com/kr/pty/types.go @@ -0,0 +1,10 @@ +// +build ignore + +package pty + +import "C" + +type ( + _C_int C.int + _C_uint C.uint +) diff --git a/vendor/github.com/kr/pty/types_dragonfly.go b/vendor/github.com/kr/pty/types_dragonfly.go new file mode 100644 index 0000000..5c0493b --- /dev/null +++ b/vendor/github.com/kr/pty/types_dragonfly.go @@ -0,0 +1,17 @@ +// +build ignore + +package pty + +/* +#define _KERNEL +#include +#include +#include +*/ +import "C" + +const ( + _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ +) + +type fiodgnameArg C.struct_fiodname_args diff --git a/vendor/github.com/kr/pty/types_freebsd.go b/vendor/github.com/kr/pty/types_freebsd.go new file mode 100644 index 0000000..ce3eb95 --- /dev/null +++ b/vendor/github.com/kr/pty/types_freebsd.go @@ -0,0 +1,15 @@ +// +build ignore + +package pty + +/* +#include +#include +*/ +import "C" + +const ( + _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ +) + +type fiodgnameArg C.struct_fiodgname_arg diff --git a/vendor/github.com/kr/pty/types_openbsd.go b/vendor/github.com/kr/pty/types_openbsd.go new file mode 100644 index 0000000..47701b5 --- /dev/null +++ b/vendor/github.com/kr/pty/types_openbsd.go @@ -0,0 +1,14 @@ +// +build ignore + +package pty + +/* +#include +#include +#include +*/ +import "C" + +type ptmget C.struct_ptmget + +var ioctl_PTMGET = C.PTMGET diff --git a/vendor/github.com/kr/pty/util.go b/vendor/github.com/kr/pty/util.go new file mode 100644 index 0000000..2fa741c --- /dev/null +++ b/vendor/github.com/kr/pty/util.go @@ -0,0 +1,64 @@ +// +build !windows + +package pty + +import ( + "os" + "syscall" + "unsafe" +) + +// InheritSize applies the terminal size of pty to tty. This should be run +// in a signal handler for syscall.SIGWINCH to automatically resize the tty when +// the pty receives a window size change notification. +func InheritSize(pty, tty *os.File) error { + size, err := GetsizeFull(pty) + if err != nil { + return err + } + err = Setsize(tty, size) + if err != nil { + return err + } + return nil +} + +// Setsize resizes t to s. +func Setsize(t *os.File, ws *Winsize) error { + return windowRectCall(ws, t.Fd(), syscall.TIOCSWINSZ) +} + +// GetsizeFull returns the full terminal size description. +func GetsizeFull(t *os.File) (size *Winsize, err error) { + var ws Winsize + err = windowRectCall(&ws, t.Fd(), syscall.TIOCGWINSZ) + return &ws, err +} + +// Getsize returns the number of rows (lines) and cols (positions +// in each line) in terminal t. +func Getsize(t *os.File) (rows, cols int, err error) { + ws, err := GetsizeFull(t) + return int(ws.Rows), int(ws.Cols), err +} + +// Winsize describes the terminal size. +type Winsize struct { + Rows uint16 // ws_row: Number of rows (in cells) + Cols uint16 // ws_col: Number of columns (in cells) + X uint16 // ws_xpixel: Width in pixels + Y uint16 // ws_ypixel: Height in pixels +} + +func windowRectCall(ws *Winsize, fd, a2 uintptr) error { + _, _, errno := syscall.Syscall( + syscall.SYS_IOCTL, + fd, + a2, + uintptr(unsafe.Pointer(ws)), + ) + if errno != 0 { + return syscall.Errno(errno) + } + return nil +} diff --git a/vendor/github.com/kr/pty/ztypes_386.go b/vendor/github.com/kr/pty/ztypes_386.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_386.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_amd64.go b/vendor/github.com/kr/pty/ztypes_amd64.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_amd64.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_arm.go b/vendor/github.com/kr/pty/ztypes_arm.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_arm.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_arm64.go b/vendor/github.com/kr/pty/ztypes_arm64.go new file mode 100644 index 0000000..6c29a4b --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_arm64.go @@ -0,0 +1,11 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +// +build arm64 + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go new file mode 100644 index 0000000..6b0ba03 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go @@ -0,0 +1,14 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_dragonfly.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Name *byte + Len uint32 + Pad_cgo_0 [4]byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_386.go b/vendor/github.com/kr/pty/ztypes_freebsd_386.go new file mode 100644 index 0000000..d997537 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_386.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go new file mode 100644 index 0000000..5fa102f --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go @@ -0,0 +1,14 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Pad_cgo_0 [4]byte + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go new file mode 100644 index 0000000..d997537 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_mipsx.go b/vendor/github.com/kr/pty/ztypes_mipsx.go new file mode 100644 index 0000000..f0ce740 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_mipsx.go @@ -0,0 +1,12 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +// +build linux +// +build mips mipsle mips64 mips64le + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_386.go b/vendor/github.com/kr/pty/ztypes_openbsd_386.go new file mode 100644 index 0000000..ccb3aab --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_openbsd_386.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +package pty + +type ptmget struct { + Cfd int32 + Sfd int32 + Cn [16]int8 + Sn [16]int8 +} + +var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go b/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go new file mode 100644 index 0000000..e670516 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +package pty + +type ptmget struct { + Cfd int32 + Sfd int32 + Cn [16]int8 + Sn [16]int8 +} + +var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_ppc64.go b/vendor/github.com/kr/pty/ztypes_ppc64.go new file mode 100644 index 0000000..4e1af84 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_ppc64.go @@ -0,0 +1,11 @@ +// +build ppc64 + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_ppc64le.go b/vendor/github.com/kr/pty/ztypes_ppc64le.go new file mode 100644 index 0000000..e6780f4 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_ppc64le.go @@ -0,0 +1,11 @@ +// +build ppc64le + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_s390x.go b/vendor/github.com/kr/pty/ztypes_s390x.go new file mode 100644 index 0000000..a7452b6 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_s390x.go @@ -0,0 +1,11 @@ +// +build s390x + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml new file mode 100644 index 0000000..5597e02 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/.travis.yml @@ -0,0 +1,13 @@ +language: go +go: + - tip + +os: + - linux + - osx + +before_install: + - go get github.com/mattn/goveralls + - go get golang.org/x/tools/cmd/cover +script: + - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 diff --git a/vendor/github.com/mattn/go-isatty/LICENSE b/vendor/github.com/mattn/go-isatty/LICENSE new file mode 100644 index 0000000..65dc692 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) Yasuhiro MATSUMOTO + +MIT License (Expat) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md new file mode 100644 index 0000000..1e69004 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/README.md @@ -0,0 +1,50 @@ +# go-isatty + +[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) +[![Build Status](https://travis-ci.org/mattn/go-isatty.svg?branch=master)](https://travis-ci.org/mattn/go-isatty) +[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) +[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) + +isatty for golang + +## Usage + +```go +package main + +import ( + "fmt" + "github.com/mattn/go-isatty" + "os" +) + +func main() { + if isatty.IsTerminal(os.Stdout.Fd()) { + fmt.Println("Is Terminal") + } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { + fmt.Println("Is Cygwin/MSYS2 Terminal") + } else { + fmt.Println("Is Not Terminal") + } +} +``` + +## Installation + +``` +$ go get github.com/mattn/go-isatty +``` + +## License + +MIT + +## Author + +Yasuhiro Matsumoto (a.k.a mattn) + +## Thanks + +* k-takata: base idea for IsCygwinTerminal + + https://github.com/k-takata/go-iscygpty diff --git a/vendor/github.com/mattn/go-isatty/doc.go b/vendor/github.com/mattn/go-isatty/doc.go new file mode 100644 index 0000000..17d4f90 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/doc.go @@ -0,0 +1,2 @@ +// Package isatty implements interface to isatty +package isatty diff --git a/vendor/github.com/mattn/go-isatty/go.mod b/vendor/github.com/mattn/go-isatty/go.mod new file mode 100644 index 0000000..f310320 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.mod @@ -0,0 +1,3 @@ +module github.com/mattn/go-isatty + +require golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 diff --git a/vendor/github.com/mattn/go-isatty/go.sum b/vendor/github.com/mattn/go-isatty/go.sum new file mode 100644 index 0000000..426c897 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/mattn/go-isatty/isatty_android.go b/vendor/github.com/mattn/go-isatty/isatty_android.go new file mode 100644 index 0000000..d3567cb --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_android.go @@ -0,0 +1,23 @@ +// +build android + +package isatty + +import ( + "syscall" + "unsafe" +) + +const ioctlReadTermios = syscall.TCGETS + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go new file mode 100644 index 0000000..07e9303 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -0,0 +1,24 @@ +// +build darwin freebsd openbsd netbsd dragonfly +// +build !appengine + +package isatty + +import ( + "syscall" + "unsafe" +) + +const ioctlReadTermios = syscall.TIOCGETA + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux.go b/vendor/github.com/mattn/go-isatty/isatty_linux.go new file mode 100644 index 0000000..4f8af46 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_linux.go @@ -0,0 +1,19 @@ +// +build linux +// +build !appengine +// +build !android + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go new file mode 100644 index 0000000..f02849c --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -0,0 +1,15 @@ +// +build appengine js + +package isatty + +// IsTerminal returns true if the file descriptor is terminal which +// is always false on js and appengine classic which is a sandboxed PaaS. +func IsTerminal(fd uintptr) bool { + return false +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go new file mode 100644 index 0000000..bdd5c79 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -0,0 +1,22 @@ +// +build solaris +// +build !appengine + +package isatty + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c +func IsTerminal(fd uintptr) bool { + var termio unix.Termio + err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go new file mode 100644 index 0000000..af51cbc --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -0,0 +1,94 @@ +// +build windows +// +build !appengine + +package isatty + +import ( + "strings" + "syscall" + "unicode/utf16" + "unsafe" +) + +const ( + fileNameInfo uintptr = 2 + fileTypePipe = 3 +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") + procGetFileType = kernel32.NewProc("GetFileType") +) + +func init() { + // Check if GetFileInformationByHandleEx is available. + if procGetFileInformationByHandleEx.Find() != nil { + procGetFileInformationByHandleEx = nil + } +} + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} + +// Check pipe name is used for cygwin/msys2 pty. +// Cygwin/MSYS2 PTY has a name like: +// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master +func isCygwinPipeName(name string) bool { + token := strings.Split(name, "-") + if len(token) < 5 { + return false + } + + if token[0] != `\msys` && token[0] != `\cygwin` { + return false + } + + if token[1] == "" { + return false + } + + if !strings.HasPrefix(token[2], "pty") { + return false + } + + if token[3] != `from` && token[3] != `to` { + return false + } + + if token[4] != "master" { + return false + } + + return true +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. +func IsCygwinTerminal(fd uintptr) bool { + if procGetFileInformationByHandleEx == nil { + return false + } + + // Cygwin/msys's pty is a pipe. + ft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0) + if ft != fileTypePipe || e != 0 { + return false + } + + var buf [2 + syscall.MAX_PATH]uint16 + r, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), + 4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)), + uintptr(len(buf)*2), 0, 0) + if r == 0 || e != 0 { + return false + } + + l := *(*uint32)(unsafe.Pointer(&buf)) + return isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2]))) +} diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..d4b9266 --- /dev/null +++ b/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,15 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.4.x + - 1.5.x + - 1.6.x + - 1.7.x + - 1.8.x + - 1.9.x + - 1.10.x + - 1.11.x + - tip + +script: + - go test -v ./... diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..6483ba2 --- /dev/null +++ b/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,52 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Contributing + +We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. + +Before proposing a change, please discuss your change by raising an issue. + +## License + +BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..7421f32 --- /dev/null +++ b/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,282 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which when applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// together with the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required, the errors.WithStack and +// errors.WithMessage functions destructure errors.Wrap into its component +// operations: annotating an error with a stack trace and with a message, +// respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error that does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// Although the causer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported: +// +// %s print the error. If the error has a Cause it will be +// printed recursively. +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface: +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// The returned errors.StackTrace type is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d", f) +// } +// } +// +// Although the stackTracer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is called, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +// WithMessagef annotates err with the format specifier. +// If err is nil, WithMessagef returns nil. +func WithMessagef(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..2874a04 --- /dev/null +++ b/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,147 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strings" +) + +// Frame represents a program counter inside a stack frame. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s function name and path of source file relative to the compile time +// GOPATH separated by \n\t (\n\t) +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + pc := f.pc() + fn := runtime.FuncForPC(pc) + if fn == nil { + io.WriteString(s, "unknown") + } else { + file, _ := fn.FileLine(pc) + fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) + } + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + fmt.Fprintf(s, "%d", f.line()) + case 'n': + name := runtime.FuncForPC(f.pc()).Name() + io.WriteString(s, funcname(name)) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + fmt.Fprintf(s, "\n%+v", f) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + fmt.Fprintf(s, "%v", []Frame(st)) + } + case 's': + fmt.Fprintf(s, "%s", []Frame(st)) + } +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} diff --git a/vendor/github.com/templexxx/cpufeat/.gitignore b/vendor/github.com/templexxx/cpufeat/.gitignore new file mode 100644 index 0000000..08baa1a --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ +.idea diff --git a/vendor/github.com/templexxx/cpufeat/LICENSE b/vendor/github.com/templexxx/cpufeat/LICENSE new file mode 100644 index 0000000..ea5ea89 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/templexxx/cpufeat/README.md b/vendor/github.com/templexxx/cpufeat/README.md new file mode 100644 index 0000000..16afe53 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/README.md @@ -0,0 +1 @@ +see: https://github.com/templexxx/cpu diff --git a/vendor/github.com/templexxx/cpufeat/cpu.go b/vendor/github.com/templexxx/cpufeat/cpu.go new file mode 100644 index 0000000..dd5a949 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection +// used by the Go standard libary. +package cpufeat + +var X86 x86 + +// The booleans in x86 contain the correspondingly named cpuid feature bit. +// HasAVX and HasAVX2 are only set if the OS does support XMM and YMM registers +// in addition to the cpuid feature bit being set. +// The struct is padded to avoid false sharing. +type x86 struct { + _ [CacheLineSize]byte + HasAES bool + HasAVX bool + HasAVX2 bool + HasAVX512 bool + HasBMI1 bool + HasBMI2 bool + HasERMS bool + HasOSXSAVE bool + HasPCLMULQDQ bool + HasPOPCNT bool + HasSSE2 bool + HasSSE3 bool + HasSSSE3 bool + HasSSE41 bool + HasSSE42 bool + _ [CacheLineSize]byte +} diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm.go b/vendor/github.com/templexxx/cpufeat/cpu_arm.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_arm.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm64.go b/vendor/github.com/templexxx/cpufeat/cpu_arm64.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_arm64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips.go b/vendor/github.com/templexxx/cpufeat/cpu_mips.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go b/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go new file mode 100644 index 0000000..1e738e3 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go new file mode 100644 index 0000000..1e738e3 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_s390x.go b/vendor/github.com/templexxx/cpufeat/cpu_s390x.go new file mode 100644 index 0000000..17be8fe --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_s390x.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 256 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_x86.go b/vendor/github.com/templexxx/cpufeat/cpu_x86.go new file mode 100644 index 0000000..19d6d22 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_x86.go @@ -0,0 +1,70 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 + +package cpufeat + +const CacheLineSize = 64 + +// cpuid is implemented in cpu_x86.s. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_x86.s. +func xgetbv() (eax, edx uint32) + +func init() { + maxId, _, _, _ := cpuid(0, 0) + + if maxId < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(26, edx1) + + X86.HasSSE3 = isSet(0, ecx1) + X86.HasPCLMULQDQ = isSet(1, ecx1) + X86.HasSSSE3 = isSet(9, ecx1) + X86.HasSSE41 = isSet(19, ecx1) + X86.HasSSE42 = isSet(20, ecx1) + X86.HasPOPCNT = isSet(23, ecx1) + X86.HasAES = isSet(25, ecx1) + X86.HasOSXSAVE = isSet(27, ecx1) + + osSupportsAVX := false + osSupportAVX512 := false + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(1, eax) && isSet(2, eax) + // Check is ZMM registers have OS support. + osSupportAVX512 = (eax>>5)&7 == 7 && (eax>>1)&3 == 3 + } + + X86.HasAVX = isSet(28, ecx1) && osSupportsAVX + + if maxId < 7 { + return + } + + _, ebx7, _, _ := cpuid(7, 0) + X86.HasBMI1 = isSet(3, ebx7) + X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX + X86.HasBMI2 = isSet(8, ebx7) + X86.HasERMS = isSet(9, ebx7) + X86.HasAVX512 = hasAVX512(ebx7) && osSupportAVX512 +} + +func isSet(bitpos uint, value uint32) bool { + return value&(1< 0 { + wordBytes := w * wordSize + fastXORWords(dst[:wordBytes], a[:wordBytes], b[:wordBytes]) + } + for i := n - n%wordSize; i < n; i++ { + dst[i] = a[i] ^ b[i] + } +} + +func safeXORBytes(dst, a, b []byte, n int) { + ex := n % 8 + for i := 0; i < ex; i++ { + dst[i] = a[i] ^ b[i] + } + + for i := ex; i < n; i += 8 { + _dst := dst[i : i+8] + _a := a[i : i+8] + _b := b[i : i+8] + _dst[0] = _a[0] ^ _b[0] + _dst[1] = _a[1] ^ _b[1] + _dst[2] = _a[2] ^ _b[2] + _dst[3] = _a[3] ^ _b[3] + + _dst[4] = _a[4] ^ _b[4] + _dst[5] = _a[5] ^ _b[5] + _dst[6] = _a[6] ^ _b[6] + _dst[7] = _a[7] ^ _b[7] + } +} + +// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) +// The arguments are assumed to be of equal length. +func fastXORWords(dst, a, b []byte) { + dw := *(*[]uintptr)(unsafe.Pointer(&dst)) + aw := *(*[]uintptr)(unsafe.Pointer(&a)) + bw := *(*[]uintptr)(unsafe.Pointer(&b)) + n := len(b) / wordSize + ex := n % 8 + for i := 0; i < ex; i++ { + dw[i] = aw[i] ^ bw[i] + } + + for i := ex; i < n; i += 8 { + _dw := dw[i : i+8] + _aw := aw[i : i+8] + _bw := bw[i : i+8] + _dw[0] = _aw[0] ^ _bw[0] + _dw[1] = _aw[1] ^ _bw[1] + _dw[2] = _aw[2] ^ _bw[2] + _dw[3] = _aw[3] ^ _bw[3] + _dw[4] = _aw[4] ^ _bw[4] + _dw[5] = _aw[5] ^ _bw[5] + _dw[6] = _aw[6] ^ _bw[6] + _dw[7] = _aw[7] ^ _bw[7] + } +} diff --git a/vendor/github.com/templexxx/xor/sse2_amd64.s b/vendor/github.com/templexxx/xor/sse2_amd64.s new file mode 100644 index 0000000..d7f702b --- /dev/null +++ b/vendor/github.com/templexxx/xor/sse2_amd64.s @@ -0,0 +1,574 @@ +#include "textflag.h" + +// addr of mem +#define DST BX +#define SRC SI +#define SRC0 TMP4 +#define SRC1 TMP5 + +// loop args +// num of vect +#define VECT CX +#define LEN DX +// pos of matrix +#define POS R8 + +// tmp store +// num of vect or ... +#define TMP1 R9 +// pos of matrix or ... +#define TMP2 R10 +// store addr of data/parity or ... +#define TMP3 R11 +#define TMP4 R12 +#define TMP5 R13 +#define TMP6 R14 + +// func bytesSrc0(dst, src0, src1 []byte) +TEXT ·xorSrc0(SB), NOSPLIT, $0 + MOVQ len+32(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSrc1(dst, src0, src1 []byte) +TEXT ·xorSrc1(SB), NOSPLIT, $0 + MOVQ len+56(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2mini(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2mini(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + + // MOVOU (SRC1)(POS*1), X4 + // PXOR X4, X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2small(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2small(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVOU (SRC0)(POS*1), X0 + MOVOU 16(SRC0)(POS*1), X1 + MOVOU 32(SRC0)(POS*1), X2 + MOVOU 48(SRC0)(POS*1), X3 + + MOVOU (SRC1)(POS*1), X4 + MOVOU 16(SRC1)(POS*1), X5 + MOVOU 32(SRC1)(POS*1), X6 + MOVOU 48(SRC1)(POS*1), X7 + + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + + MOVOU X0, (DST)(POS*1) + MOVOU X1, 16(DST)(POS*1) + MOVOU X2, 32(DST)(POS*1) + MOVOU X3, 48(DST)(POS*1) + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $63, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2big(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2big(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVOU (SRC0)(POS*1), X0 + MOVOU 16(SRC0)(POS*1), X1 + MOVOU 32(SRC0)(POS*1), X2 + MOVOU 48(SRC0)(POS*1), X3 + + MOVOU (SRC1)(POS*1), X4 + MOVOU 16(SRC1)(POS*1), X5 + MOVOU 32(SRC1)(POS*1), X6 + MOVOU 48(SRC1)(POS*1), X7 + + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + + LONG $0xe70f4266; WORD $0x0304 // MOVNTDQ + LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 + LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 + LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $63, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func matrixSSE2small(dst []byte, src [][]byte) +TEXT ·matrixSSE2small(SB), NOSPLIT, $0 + MOVQ dst+0(FP), DST + MOVQ src+24(FP), SRC + MOVQ vec+32(FP), VECT + MOVQ len+8(FP), LEN + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVQ VECT, TMP1 + SUBQ $2, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X0 + MOVOU 16(TMP4)(POS*1), X1 + MOVOU 32(TMP3)(POS*1), X2 + MOVOU 48(TMP4)(POS*1), X3 + +next_vect: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X4 + MOVOU 16(TMP4)(POS*1), X5 + MOVOU 32(TMP3)(POS*1), X6 + MOVOU 48(TMP4)(POS*1), X7 + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + SUBQ $1, TMP1 + JGE next_vect + + MOVOU X0, (DST)(POS*1) + MOVOU X1, 16(DST)(POS*1) + MOVOU X2, 32(DST)(POS*1) + MOVOU X3, 48(DST)(POS*1) + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVB -1(TMP3)(LEN*1), TMP5 + +next_vect_1b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVB -1(TMP3)(LEN*1), TMP6 + XORB TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_1b + + MOVB TMP5, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP4 + ANDQ $63, TMP4 + +loop_8b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVQ -8(TMP3)(LEN*1), TMP5 + +next_vect_8b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ -8(TMP3)(LEN*1), TMP6 + XORQ TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_8b + + MOVQ TMP5, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP4 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func matrixSSE2big(dst []byte, src [][]byte) +TEXT ·matrixSSE2big(SB), NOSPLIT, $0 + MOVQ dst+0(FP), DST + MOVQ src+24(FP), SRC + MOVQ vec+32(FP), VECT + MOVQ len+8(FP), LEN + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVQ VECT, TMP1 + SUBQ $2, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X0 + MOVOU 16(TMP4)(POS*1), X1 + MOVOU 32(TMP3)(POS*1), X2 + MOVOU 48(TMP4)(POS*1), X3 + +next_vect: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X4 + MOVOU 16(TMP4)(POS*1), X5 + MOVOU 32(TMP3)(POS*1), X6 + MOVOU 48(TMP4)(POS*1), X7 + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + SUBQ $1, TMP1 + JGE next_vect + + LONG $0xe70f4266; WORD $0x0304 + LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 + LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 + LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVB -1(TMP3)(LEN*1), TMP5 + +next_vect_1b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVB -1(TMP3)(LEN*1), TMP6 + XORB TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_1b + + MOVB TMP5, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP4 + ANDQ $63, TMP4 + +loop_8b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVQ -8(TMP3)(LEN*1), TMP5 + +next_vect_8b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ -8(TMP3)(LEN*1), TMP6 + XORQ TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_8b + + MOVQ TMP5, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP4 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +TEXT ·hasSSE2(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $26, DX + ANDQ $1, DX + MOVB DX, ret+0(FP) + RET + diff --git a/vendor/github.com/templexxx/xor/xor.go b/vendor/github.com/templexxx/xor/xor.go new file mode 100644 index 0000000..2fa5616 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor.go @@ -0,0 +1,49 @@ +package xor + +// SIMD Extensions +const ( + none = iota + avx2 + // first introduced by Intel with the initial version of the Pentium 4 in 2001 + // so I think we can assume all amd64 has sse2 + sse2 +) + +var extension = none + +// Bytes : chose the shortest one as xor size +// it's better to use it for big data ( > 64bytes ) +func Bytes(dst, src0, src1 []byte) { + size := len(dst) + if size > len(src0) { + size = len(src0) + } + if size > len(src1) { + size = len(src1) + } + xorBytes(dst, src0, src1, size) +} + +// BytesSameLen : all slice's length must be equal +// cut size branch, save time for small data +func BytesSameLen(dst, src0, src1 []byte) { + xorSrc1(dst, src0, src1) +} + +// BytesSrc0 : src1 >= src0, dst >= src0 +// xor src0's len bytes +func BytesSrc0(dst, src0, src1 []byte) { + xorSrc0(dst, src0, src1) +} + +// BytesSrc1 : src0 >= src1, dst >= src1 +// xor src1's len bytes +func BytesSrc1(dst, src0, src1 []byte) { + xorSrc1(dst, src0, src1) +} + +// Matrix : all slice's length must be equal && != 0 +// len(src) must >= 2 +func Matrix(dst []byte, src [][]byte) { + xorMatrix(dst, src) +} diff --git a/vendor/github.com/templexxx/xor/xor_amd64.go b/vendor/github.com/templexxx/xor/xor_amd64.go new file mode 100644 index 0000000..b449bc0 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor_amd64.go @@ -0,0 +1,120 @@ +package xor + +import "github.com/templexxx/cpufeat" + +func init() { + getEXT() +} + +func getEXT() { + if cpufeat.X86.HasAVX2 { + extension = avx2 + } else { + extension = sse2 + } + return +} + +func xorBytes(dst, src0, src1 []byte, size int) { + switch extension { + case avx2: + bytesAVX2(dst, src0, src1, size) + default: + bytesSSE2(dst, src0, src1, size) + } +} + +// non-temporal hint store +const nontmp = 8 * 1024 +const avx2loopsize = 128 + +func bytesAVX2(dst, src0, src1 []byte, size int) { + if size < avx2loopsize { + bytesAVX2mini(dst, src0, src1, size) + } else if size >= avx2loopsize && size <= nontmp { + bytesAVX2small(dst, src0, src1, size) + } else { + bytesAVX2big(dst, src0, src1, size) + } +} + +const sse2loopsize = 64 + +func bytesSSE2(dst, src0, src1 []byte, size int) { + if size < sse2loopsize { + bytesSSE2mini(dst, src0, src1, size) + } else if size >= sse2loopsize && size <= nontmp { + bytesSSE2small(dst, src0, src1, size) + } else { + bytesSSE2big(dst, src0, src1, size) + } +} + +func xorMatrix(dst []byte, src [][]byte) { + switch extension { + case avx2: + matrixAVX2(dst, src) + default: + matrixSSE2(dst, src) + } +} + +func matrixAVX2(dst []byte, src [][]byte) { + size := len(dst) + if size > nontmp { + matrixAVX2big(dst, src) + } else { + matrixAVX2small(dst, src) + } +} + +func matrixSSE2(dst []byte, src [][]byte) { + size := len(dst) + if size > nontmp { + matrixSSE2big(dst, src) + } else { + matrixSSE2small(dst, src) + } +} + +//go:noescape +func xorSrc0(dst, src0, src1 []byte) + +//go:noescape +func xorSrc1(dst, src0, src1 []byte) + +//go:noescape +func bytesAVX2mini(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesAVX2big(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesAVX2small(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2mini(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2small(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2big(dst, src0, src1 []byte, size int) + +//go:noescape +func matrixAVX2small(dst []byte, src [][]byte) + +//go:noescape +func matrixAVX2big(dst []byte, src [][]byte) + +//go:noescape +func matrixSSE2small(dst []byte, src [][]byte) + +//go:noescape +func matrixSSE2big(dst []byte, src [][]byte) + +//go:noescape +func hasAVX2() bool + +//go:noescape +func hasSSE2() bool diff --git a/vendor/github.com/templexxx/xor/xor_other.go b/vendor/github.com/templexxx/xor/xor_other.go new file mode 100644 index 0000000..4aa2967 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor_other.go @@ -0,0 +1,19 @@ +// +build !amd64 noasm + +package xor + +func xorBytes(dst, src0, src1 []byte, size int) { + bytesNoSIMD(dst, src0, src1, size) +} + +func xorMatrix(dst []byte, src [][]byte) { + matrixNoSIMD(dst, src) +} + +func xorSrc0(dst, src0, src1 []byte) { + bytesNoSIMD(dst, src0, src1, len(src0)) +} + +func xorSrc1(dst, src0, src1 []byte) { + bytesNoSIMD(dst, src0, src1, len(src1)) +} diff --git a/vendor/github.com/tjfoc/gmsm/LICENSE b/vendor/github.com/tjfoc/gmsm/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/vendor/github.com/tjfoc/gmsm/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/tjfoc/gmsm/sm4/sm4.go b/vendor/github.com/tjfoc/gmsm/sm4/sm4.go new file mode 100644 index 0000000..1742933 --- /dev/null +++ b/vendor/github.com/tjfoc/gmsm/sm4/sm4.go @@ -0,0 +1,342 @@ +/* +Copyright Suzhou Tongji Fintech Research Institute 2017 All Rights Reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +sm4 acceration +modified by Jack, 2017 Oct +*/ + +package sm4 + +import ( + "crypto/cipher" + "crypto/rand" + "crypto/x509" + "encoding/pem" + "errors" + "io/ioutil" + "os" + "strconv" +) + +const BlockSize = 16 + +type SM4Key []byte + +type KeySizeError int + +// Cipher is an instance of SM4 encryption. +type Sm4Cipher struct { + subkeys []uint32 + block1 []uint32 + block2 []byte +} + +// sm4密钥参量 +var fk = [4]uint32{ + 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc, +} + +// sm4密钥参量 +var ck = [32]uint32{ + 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, + 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, + 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, + 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9, + 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229, + 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299, + 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209, + 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279, +} + +// sm4密钥参量 +var sbox = [256]uint8{ + 0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, + 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, + 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, + 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, + 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, + 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, + 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, + 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, + 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, + 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, + 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, + 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, + 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, + 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, + 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, + 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48, +} + +var sbox0 = [256]uint32{ + 0xd55b5b8e, 0x924242d0, 0xeaa7a74d, 0xfdfbfb06, 0xcf3333fc, 0xe2878765, 0x3df4f4c9, 0xb5dede6b, 0x1658584e, 0xb4dada6e, 0x14505044, 0xc10b0bca, 0x28a0a088, 0xf8efef17, 0x2cb0b09c, 0x05141411, + 0x2bacac87, 0x669d9dfb, 0x986a6af2, 0x77d9d9ae, 0x2aa8a882, 0xbcfafa46, 0x04101014, 0xc00f0fcf, 0xa8aaaa02, 0x45111154, 0x134c4c5f, 0x269898be, 0x4825256d, 0x841a1a9e, 0x0618181e, 0x9b6666fd, + 0x9e7272ec, 0x4309094a, 0x51414110, 0xf7d3d324, 0x934646d5, 0xecbfbf53, 0x9a6262f8, 0x7be9e992, 0x33ccccff, 0x55515104, 0x0b2c2c27, 0x420d0d4f, 0xeeb7b759, 0xcc3f3ff3, 0xaeb2b21c, 0x638989ea, + 0xe7939374, 0xb1cece7f, 0x1c70706c, 0xaba6a60d, 0xca2727ed, 0x08202028, 0xeba3a348, 0x975656c1, 0x82020280, 0xdc7f7fa3, 0x965252c4, 0xf9ebeb12, 0x74d5d5a1, 0x8d3e3eb3, 0x3ffcfcc3, 0xa49a9a3e, + 0x461d1d5b, 0x071c1c1b, 0xa59e9e3b, 0xfff3f30c, 0xf0cfcf3f, 0x72cdcdbf, 0x175c5c4b, 0xb8eaea52, 0x810e0e8f, 0x5865653d, 0x3cf0f0cc, 0x1964647d, 0xe59b9b7e, 0x87161691, 0x4e3d3d73, 0xaaa2a208, + 0x69a1a1c8, 0x6aadadc7, 0x83060685, 0xb0caca7a, 0x70c5c5b5, 0x659191f4, 0xd96b6bb2, 0x892e2ea7, 0xfbe3e318, 0xe8afaf47, 0x0f3c3c33, 0x4a2d2d67, 0x71c1c1b0, 0x5759590e, 0x9f7676e9, 0x35d4d4e1, + 0x1e787866, 0x249090b4, 0x0e383836, 0x5f797926, 0x628d8def, 0x59616138, 0xd2474795, 0xa08a8a2a, 0x259494b1, 0x228888aa, 0x7df1f18c, 0x3bececd7, 0x01040405, 0x218484a5, 0x79e1e198, 0x851e1e9b, + 0xd7535384, 0x00000000, 0x4719195e, 0x565d5d0b, 0x9d7e7ee3, 0xd04f4f9f, 0x279c9cbb, 0x5349491a, 0x4d31317c, 0x36d8d8ee, 0x0208080a, 0xe49f9f7b, 0xa2828220, 0xc71313d4, 0xcb2323e8, 0x9c7a7ae6, + 0xe9abab42, 0xbdfefe43, 0x882a2aa2, 0xd14b4b9a, 0x41010140, 0xc41f1fdb, 0x38e0e0d8, 0xb7d6d661, 0xa18e8e2f, 0xf4dfdf2b, 0xf1cbcb3a, 0xcd3b3bf6, 0xfae7e71d, 0x608585e5, 0x15545441, 0xa3868625, + 0xe3838360, 0xacbaba16, 0x5c757529, 0xa6929234, 0x996e6ef7, 0x34d0d0e4, 0x1a686872, 0x54555501, 0xafb6b619, 0x914e4edf, 0x32c8c8fa, 0x30c0c0f0, 0xf6d7d721, 0x8e3232bc, 0xb3c6c675, 0xe08f8f6f, + 0x1d747469, 0xf5dbdb2e, 0xe18b8b6a, 0x2eb8b896, 0x800a0a8a, 0x679999fe, 0xc92b2be2, 0x618181e0, 0xc30303c0, 0x29a4a48d, 0x238c8caf, 0xa9aeae07, 0x0d343439, 0x524d4d1f, 0x4f393976, 0x6ebdbdd3, + 0xd6575781, 0xd86f6fb7, 0x37dcdceb, 0x44151551, 0xdd7b7ba6, 0xfef7f709, 0x8c3a3ab6, 0x2fbcbc93, 0x030c0c0f, 0xfcffff03, 0x6ba9a9c2, 0x73c9c9ba, 0x6cb5b5d9, 0x6db1b1dc, 0x5a6d6d37, 0x50454515, + 0x8f3636b9, 0x1b6c6c77, 0xadbebe13, 0x904a4ada, 0xb9eeee57, 0xde7777a9, 0xbef2f24c, 0x7efdfd83, 0x11444455, 0xda6767bd, 0x5d71712c, 0x40050545, 0x1f7c7c63, 0x10404050, 0x5b696932, 0xdb6363b8, + 0x0a282822, 0xc20707c5, 0x31c4c4f5, 0x8a2222a8, 0xa7969631, 0xce3737f9, 0x7aeded97, 0xbff6f649, 0x2db4b499, 0x75d1d1a4, 0xd3434390, 0x1248485a, 0xbae2e258, 0xe6979771, 0xb6d2d264, 0xb2c2c270, + 0x8b2626ad, 0x68a5a5cd, 0x955e5ecb, 0x4b292962, 0x0c30303c, 0x945a5ace, 0x76ddddab, 0x7ff9f986, 0x649595f1, 0xbbe6e65d, 0xf2c7c735, 0x0924242d, 0xc61717d1, 0x6fb9b9d6, 0xc51b1bde, 0x86121294, + 0x18606078, 0xf3c3c330, 0x7cf5f589, 0xefb3b35c, 0x3ae8e8d2, 0xdf7373ac, 0x4c353579, 0x208080a0, 0x78e5e59d, 0xedbbbb56, 0x5e7d7d23, 0x3ef8f8c6, 0xd45f5f8b, 0xc82f2fe7, 0x39e4e4dd, 0x49212168, +} + +var sbox1 = [256]uint32{ + 0x5b5b8ed5, 0x4242d092, 0xa7a74dea, 0xfbfb06fd, 0x3333fccf, 0x878765e2, 0xf4f4c93d, 0xdede6bb5, 0x58584e16, 0xdada6eb4, 0x50504414, 0x0b0bcac1, 0xa0a08828, 0xefef17f8, 0xb0b09c2c, 0x14141105, + 0xacac872b, 0x9d9dfb66, 0x6a6af298, 0xd9d9ae77, 0xa8a8822a, 0xfafa46bc, 0x10101404, 0x0f0fcfc0, 0xaaaa02a8, 0x11115445, 0x4c4c5f13, 0x9898be26, 0x25256d48, 0x1a1a9e84, 0x18181e06, 0x6666fd9b, + 0x7272ec9e, 0x09094a43, 0x41411051, 0xd3d324f7, 0x4646d593, 0xbfbf53ec, 0x6262f89a, 0xe9e9927b, 0xccccff33, 0x51510455, 0x2c2c270b, 0x0d0d4f42, 0xb7b759ee, 0x3f3ff3cc, 0xb2b21cae, 0x8989ea63, + 0x939374e7, 0xcece7fb1, 0x70706c1c, 0xa6a60dab, 0x2727edca, 0x20202808, 0xa3a348eb, 0x5656c197, 0x02028082, 0x7f7fa3dc, 0x5252c496, 0xebeb12f9, 0xd5d5a174, 0x3e3eb38d, 0xfcfcc33f, 0x9a9a3ea4, + 0x1d1d5b46, 0x1c1c1b07, 0x9e9e3ba5, 0xf3f30cff, 0xcfcf3ff0, 0xcdcdbf72, 0x5c5c4b17, 0xeaea52b8, 0x0e0e8f81, 0x65653d58, 0xf0f0cc3c, 0x64647d19, 0x9b9b7ee5, 0x16169187, 0x3d3d734e, 0xa2a208aa, + 0xa1a1c869, 0xadadc76a, 0x06068583, 0xcaca7ab0, 0xc5c5b570, 0x9191f465, 0x6b6bb2d9, 0x2e2ea789, 0xe3e318fb, 0xafaf47e8, 0x3c3c330f, 0x2d2d674a, 0xc1c1b071, 0x59590e57, 0x7676e99f, 0xd4d4e135, + 0x7878661e, 0x9090b424, 0x3838360e, 0x7979265f, 0x8d8def62, 0x61613859, 0x474795d2, 0x8a8a2aa0, 0x9494b125, 0x8888aa22, 0xf1f18c7d, 0xececd73b, 0x04040501, 0x8484a521, 0xe1e19879, 0x1e1e9b85, + 0x535384d7, 0x00000000, 0x19195e47, 0x5d5d0b56, 0x7e7ee39d, 0x4f4f9fd0, 0x9c9cbb27, 0x49491a53, 0x31317c4d, 0xd8d8ee36, 0x08080a02, 0x9f9f7be4, 0x828220a2, 0x1313d4c7, 0x2323e8cb, 0x7a7ae69c, + 0xabab42e9, 0xfefe43bd, 0x2a2aa288, 0x4b4b9ad1, 0x01014041, 0x1f1fdbc4, 0xe0e0d838, 0xd6d661b7, 0x8e8e2fa1, 0xdfdf2bf4, 0xcbcb3af1, 0x3b3bf6cd, 0xe7e71dfa, 0x8585e560, 0x54544115, 0x868625a3, + 0x838360e3, 0xbaba16ac, 0x7575295c, 0x929234a6, 0x6e6ef799, 0xd0d0e434, 0x6868721a, 0x55550154, 0xb6b619af, 0x4e4edf91, 0xc8c8fa32, 0xc0c0f030, 0xd7d721f6, 0x3232bc8e, 0xc6c675b3, 0x8f8f6fe0, + 0x7474691d, 0xdbdb2ef5, 0x8b8b6ae1, 0xb8b8962e, 0x0a0a8a80, 0x9999fe67, 0x2b2be2c9, 0x8181e061, 0x0303c0c3, 0xa4a48d29, 0x8c8caf23, 0xaeae07a9, 0x3434390d, 0x4d4d1f52, 0x3939764f, 0xbdbdd36e, + 0x575781d6, 0x6f6fb7d8, 0xdcdceb37, 0x15155144, 0x7b7ba6dd, 0xf7f709fe, 0x3a3ab68c, 0xbcbc932f, 0x0c0c0f03, 0xffff03fc, 0xa9a9c26b, 0xc9c9ba73, 0xb5b5d96c, 0xb1b1dc6d, 0x6d6d375a, 0x45451550, + 0x3636b98f, 0x6c6c771b, 0xbebe13ad, 0x4a4ada90, 0xeeee57b9, 0x7777a9de, 0xf2f24cbe, 0xfdfd837e, 0x44445511, 0x6767bdda, 0x71712c5d, 0x05054540, 0x7c7c631f, 0x40405010, 0x6969325b, 0x6363b8db, + 0x2828220a, 0x0707c5c2, 0xc4c4f531, 0x2222a88a, 0x969631a7, 0x3737f9ce, 0xeded977a, 0xf6f649bf, 0xb4b4992d, 0xd1d1a475, 0x434390d3, 0x48485a12, 0xe2e258ba, 0x979771e6, 0xd2d264b6, 0xc2c270b2, + 0x2626ad8b, 0xa5a5cd68, 0x5e5ecb95, 0x2929624b, 0x30303c0c, 0x5a5ace94, 0xddddab76, 0xf9f9867f, 0x9595f164, 0xe6e65dbb, 0xc7c735f2, 0x24242d09, 0x1717d1c6, 0xb9b9d66f, 0x1b1bdec5, 0x12129486, + 0x60607818, 0xc3c330f3, 0xf5f5897c, 0xb3b35cef, 0xe8e8d23a, 0x7373acdf, 0x3535794c, 0x8080a020, 0xe5e59d78, 0xbbbb56ed, 0x7d7d235e, 0xf8f8c63e, 0x5f5f8bd4, 0x2f2fe7c8, 0xe4e4dd39, 0x21216849, +} + +var sbox2 = [256]uint32{ + 0x5b8ed55b, 0x42d09242, 0xa74deaa7, 0xfb06fdfb, 0x33fccf33, 0x8765e287, 0xf4c93df4, 0xde6bb5de, 0x584e1658, 0xda6eb4da, 0x50441450, 0x0bcac10b, 0xa08828a0, 0xef17f8ef, 0xb09c2cb0, 0x14110514, + 0xac872bac, 0x9dfb669d, 0x6af2986a, 0xd9ae77d9, 0xa8822aa8, 0xfa46bcfa, 0x10140410, 0x0fcfc00f, 0xaa02a8aa, 0x11544511, 0x4c5f134c, 0x98be2698, 0x256d4825, 0x1a9e841a, 0x181e0618, 0x66fd9b66, + 0x72ec9e72, 0x094a4309, 0x41105141, 0xd324f7d3, 0x46d59346, 0xbf53ecbf, 0x62f89a62, 0xe9927be9, 0xccff33cc, 0x51045551, 0x2c270b2c, 0x0d4f420d, 0xb759eeb7, 0x3ff3cc3f, 0xb21caeb2, 0x89ea6389, + 0x9374e793, 0xce7fb1ce, 0x706c1c70, 0xa60daba6, 0x27edca27, 0x20280820, 0xa348eba3, 0x56c19756, 0x02808202, 0x7fa3dc7f, 0x52c49652, 0xeb12f9eb, 0xd5a174d5, 0x3eb38d3e, 0xfcc33ffc, 0x9a3ea49a, + 0x1d5b461d, 0x1c1b071c, 0x9e3ba59e, 0xf30cfff3, 0xcf3ff0cf, 0xcdbf72cd, 0x5c4b175c, 0xea52b8ea, 0x0e8f810e, 0x653d5865, 0xf0cc3cf0, 0x647d1964, 0x9b7ee59b, 0x16918716, 0x3d734e3d, 0xa208aaa2, + 0xa1c869a1, 0xadc76aad, 0x06858306, 0xca7ab0ca, 0xc5b570c5, 0x91f46591, 0x6bb2d96b, 0x2ea7892e, 0xe318fbe3, 0xaf47e8af, 0x3c330f3c, 0x2d674a2d, 0xc1b071c1, 0x590e5759, 0x76e99f76, 0xd4e135d4, + 0x78661e78, 0x90b42490, 0x38360e38, 0x79265f79, 0x8def628d, 0x61385961, 0x4795d247, 0x8a2aa08a, 0x94b12594, 0x88aa2288, 0xf18c7df1, 0xecd73bec, 0x04050104, 0x84a52184, 0xe19879e1, 0x1e9b851e, + 0x5384d753, 0x00000000, 0x195e4719, 0x5d0b565d, 0x7ee39d7e, 0x4f9fd04f, 0x9cbb279c, 0x491a5349, 0x317c4d31, 0xd8ee36d8, 0x080a0208, 0x9f7be49f, 0x8220a282, 0x13d4c713, 0x23e8cb23, 0x7ae69c7a, + 0xab42e9ab, 0xfe43bdfe, 0x2aa2882a, 0x4b9ad14b, 0x01404101, 0x1fdbc41f, 0xe0d838e0, 0xd661b7d6, 0x8e2fa18e, 0xdf2bf4df, 0xcb3af1cb, 0x3bf6cd3b, 0xe71dfae7, 0x85e56085, 0x54411554, 0x8625a386, + 0x8360e383, 0xba16acba, 0x75295c75, 0x9234a692, 0x6ef7996e, 0xd0e434d0, 0x68721a68, 0x55015455, 0xb619afb6, 0x4edf914e, 0xc8fa32c8, 0xc0f030c0, 0xd721f6d7, 0x32bc8e32, 0xc675b3c6, 0x8f6fe08f, + 0x74691d74, 0xdb2ef5db, 0x8b6ae18b, 0xb8962eb8, 0x0a8a800a, 0x99fe6799, 0x2be2c92b, 0x81e06181, 0x03c0c303, 0xa48d29a4, 0x8caf238c, 0xae07a9ae, 0x34390d34, 0x4d1f524d, 0x39764f39, 0xbdd36ebd, + 0x5781d657, 0x6fb7d86f, 0xdceb37dc, 0x15514415, 0x7ba6dd7b, 0xf709fef7, 0x3ab68c3a, 0xbc932fbc, 0x0c0f030c, 0xff03fcff, 0xa9c26ba9, 0xc9ba73c9, 0xb5d96cb5, 0xb1dc6db1, 0x6d375a6d, 0x45155045, + 0x36b98f36, 0x6c771b6c, 0xbe13adbe, 0x4ada904a, 0xee57b9ee, 0x77a9de77, 0xf24cbef2, 0xfd837efd, 0x44551144, 0x67bdda67, 0x712c5d71, 0x05454005, 0x7c631f7c, 0x40501040, 0x69325b69, 0x63b8db63, + 0x28220a28, 0x07c5c207, 0xc4f531c4, 0x22a88a22, 0x9631a796, 0x37f9ce37, 0xed977aed, 0xf649bff6, 0xb4992db4, 0xd1a475d1, 0x4390d343, 0x485a1248, 0xe258bae2, 0x9771e697, 0xd264b6d2, 0xc270b2c2, + 0x26ad8b26, 0xa5cd68a5, 0x5ecb955e, 0x29624b29, 0x303c0c30, 0x5ace945a, 0xddab76dd, 0xf9867ff9, 0x95f16495, 0xe65dbbe6, 0xc735f2c7, 0x242d0924, 0x17d1c617, 0xb9d66fb9, 0x1bdec51b, 0x12948612, + 0x60781860, 0xc330f3c3, 0xf5897cf5, 0xb35cefb3, 0xe8d23ae8, 0x73acdf73, 0x35794c35, 0x80a02080, 0xe59d78e5, 0xbb56edbb, 0x7d235e7d, 0xf8c63ef8, 0x5f8bd45f, 0x2fe7c82f, 0xe4dd39e4, 0x21684921, +} + +var sbox3 = [256]uint32{ + 0x8ed55b5b, 0xd0924242, 0x4deaa7a7, 0x06fdfbfb, 0xfccf3333, 0x65e28787, 0xc93df4f4, 0x6bb5dede, 0x4e165858, 0x6eb4dada, 0x44145050, 0xcac10b0b, 0x8828a0a0, 0x17f8efef, 0x9c2cb0b0, 0x11051414, + 0x872bacac, 0xfb669d9d, 0xf2986a6a, 0xae77d9d9, 0x822aa8a8, 0x46bcfafa, 0x14041010, 0xcfc00f0f, 0x02a8aaaa, 0x54451111, 0x5f134c4c, 0xbe269898, 0x6d482525, 0x9e841a1a, 0x1e061818, 0xfd9b6666, + 0xec9e7272, 0x4a430909, 0x10514141, 0x24f7d3d3, 0xd5934646, 0x53ecbfbf, 0xf89a6262, 0x927be9e9, 0xff33cccc, 0x04555151, 0x270b2c2c, 0x4f420d0d, 0x59eeb7b7, 0xf3cc3f3f, 0x1caeb2b2, 0xea638989, + 0x74e79393, 0x7fb1cece, 0x6c1c7070, 0x0daba6a6, 0xedca2727, 0x28082020, 0x48eba3a3, 0xc1975656, 0x80820202, 0xa3dc7f7f, 0xc4965252, 0x12f9ebeb, 0xa174d5d5, 0xb38d3e3e, 0xc33ffcfc, 0x3ea49a9a, + 0x5b461d1d, 0x1b071c1c, 0x3ba59e9e, 0x0cfff3f3, 0x3ff0cfcf, 0xbf72cdcd, 0x4b175c5c, 0x52b8eaea, 0x8f810e0e, 0x3d586565, 0xcc3cf0f0, 0x7d196464, 0x7ee59b9b, 0x91871616, 0x734e3d3d, 0x08aaa2a2, + 0xc869a1a1, 0xc76aadad, 0x85830606, 0x7ab0caca, 0xb570c5c5, 0xf4659191, 0xb2d96b6b, 0xa7892e2e, 0x18fbe3e3, 0x47e8afaf, 0x330f3c3c, 0x674a2d2d, 0xb071c1c1, 0x0e575959, 0xe99f7676, 0xe135d4d4, + 0x661e7878, 0xb4249090, 0x360e3838, 0x265f7979, 0xef628d8d, 0x38596161, 0x95d24747, 0x2aa08a8a, 0xb1259494, 0xaa228888, 0x8c7df1f1, 0xd73becec, 0x05010404, 0xa5218484, 0x9879e1e1, 0x9b851e1e, + 0x84d75353, 0x00000000, 0x5e471919, 0x0b565d5d, 0xe39d7e7e, 0x9fd04f4f, 0xbb279c9c, 0x1a534949, 0x7c4d3131, 0xee36d8d8, 0x0a020808, 0x7be49f9f, 0x20a28282, 0xd4c71313, 0xe8cb2323, 0xe69c7a7a, + 0x42e9abab, 0x43bdfefe, 0xa2882a2a, 0x9ad14b4b, 0x40410101, 0xdbc41f1f, 0xd838e0e0, 0x61b7d6d6, 0x2fa18e8e, 0x2bf4dfdf, 0x3af1cbcb, 0xf6cd3b3b, 0x1dfae7e7, 0xe5608585, 0x41155454, 0x25a38686, + 0x60e38383, 0x16acbaba, 0x295c7575, 0x34a69292, 0xf7996e6e, 0xe434d0d0, 0x721a6868, 0x01545555, 0x19afb6b6, 0xdf914e4e, 0xfa32c8c8, 0xf030c0c0, 0x21f6d7d7, 0xbc8e3232, 0x75b3c6c6, 0x6fe08f8f, + 0x691d7474, 0x2ef5dbdb, 0x6ae18b8b, 0x962eb8b8, 0x8a800a0a, 0xfe679999, 0xe2c92b2b, 0xe0618181, 0xc0c30303, 0x8d29a4a4, 0xaf238c8c, 0x07a9aeae, 0x390d3434, 0x1f524d4d, 0x764f3939, 0xd36ebdbd, + 0x81d65757, 0xb7d86f6f, 0xeb37dcdc, 0x51441515, 0xa6dd7b7b, 0x09fef7f7, 0xb68c3a3a, 0x932fbcbc, 0x0f030c0c, 0x03fcffff, 0xc26ba9a9, 0xba73c9c9, 0xd96cb5b5, 0xdc6db1b1, 0x375a6d6d, 0x15504545, + 0xb98f3636, 0x771b6c6c, 0x13adbebe, 0xda904a4a, 0x57b9eeee, 0xa9de7777, 0x4cbef2f2, 0x837efdfd, 0x55114444, 0xbdda6767, 0x2c5d7171, 0x45400505, 0x631f7c7c, 0x50104040, 0x325b6969, 0xb8db6363, + 0x220a2828, 0xc5c20707, 0xf531c4c4, 0xa88a2222, 0x31a79696, 0xf9ce3737, 0x977aeded, 0x49bff6f6, 0x992db4b4, 0xa475d1d1, 0x90d34343, 0x5a124848, 0x58bae2e2, 0x71e69797, 0x64b6d2d2, 0x70b2c2c2, + 0xad8b2626, 0xcd68a5a5, 0xcb955e5e, 0x624b2929, 0x3c0c3030, 0xce945a5a, 0xab76dddd, 0x867ff9f9, 0xf1649595, 0x5dbbe6e6, 0x35f2c7c7, 0x2d092424, 0xd1c61717, 0xd66fb9b9, 0xdec51b1b, 0x94861212, + 0x78186060, 0x30f3c3c3, 0x897cf5f5, 0x5cefb3b3, 0xd23ae8e8, 0xacdf7373, 0x794c3535, 0xa0208080, 0x9d78e5e5, 0x56edbbbb, 0x235e7d7d, 0xc63ef8f8, 0x8bd45f5f, 0xe7c82f2f, 0xdd39e4e4, 0x68492121, +} + +func rl(x uint32, i uint8) uint32 { return (x << (i % 32)) | (x >> (32 - (i % 32))) } + +func l0(b uint32) uint32 { return b ^ rl(b, 13) ^ rl(b, 23) } + +func feistel0(x0, x1, x2, x3, rk uint32) uint32 { return x0 ^ l0(p(x1^x2^x3^rk)) } + +//非线性变换τ(.) +func p(a uint32) uint32 { + return (uint32(sbox[a>>24]) << 24) ^ (uint32(sbox[(a>>16)&0xff]) << 16) ^ (uint32(sbox[(a>>8)&0xff]) << 8) ^ uint32(sbox[(a)&0xff]) +} + +func permuteInitialBlock(b []uint32, block []byte) { + for i := 0; i < 4; i++ { + b[i] = (uint32(block[i*4]) << 24) | (uint32(block[i*4+1]) << 16) | + (uint32(block[i*4+2]) << 8) | (uint32(block[i*4+3])) + } +} + +func permuteFinalBlock(b []byte, block []uint32) { + for i := 0; i < 4; i++ { + b[i*4] = uint8(block[i] >> 24) + b[i*4+1] = uint8(block[i] >> 16) + b[i*4+2] = uint8(block[i] >> 8) + b[i*4+3] = uint8(block[i]) + } +} + +//修改后的加密核心函数 +func cryptBlock(subkeys []uint32, b []uint32, r []byte, dst, src []byte, decrypt bool) { + var x uint32 + permuteInitialBlock(b, src) + if decrypt { + for i := 0; i < 8; i++ { + x = b[1] ^ b[2] ^ b[3] ^ subkeys[31-4*i] + b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[2] ^ b[3] ^ subkeys[31-4*i-1] + b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[1] ^ b[3] ^ subkeys[31-4*i-2] + b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[1] ^ b[2] ^ b[0] ^ subkeys[31-4*i-3] + b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + } + } else { + for i := 0; i < 8; i++ { + x = b[1] ^ b[2] ^ b[3] ^ subkeys[4*i] + b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[2] ^ b[3] ^ subkeys[4*i+1] + b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[1] ^ b[3] ^ subkeys[4*i+2] + b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[1] ^ b[2] ^ b[0] ^ subkeys[4*i+3] + b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + } + } + b[0], b[1], b[2], b[3] = b[3], b[2], b[1], b[0] + permuteFinalBlock(r, b) + copy(dst, r) +} + +func generateSubKeys(key []byte) []uint32 { + subkeys := make([]uint32, 32) + b := make([]uint32, 4) + permuteInitialBlock(b, key) + b[0] ^= fk[0] + b[1] ^= fk[1] + b[2] ^= fk[2] + b[3] ^= fk[3] + for i := 0; i < 32; i++ { + subkeys[i] = feistel0(b[0], b[1], b[2], b[3], ck[i]) + b[0], b[1], b[2], b[3] = b[1], b[2], b[3], subkeys[i] + } + return subkeys +} + +func EncryptBlock(key SM4Key, dst, src []byte) { + subkeys := generateSubKeys(key) + cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, false) +} + +func DecryptBlock(key SM4Key, dst, src []byte) { + subkeys := generateSubKeys(key) + cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, true) +} + +func ReadKeyFromMem(data []byte, pwd []byte) (SM4Key, error) { + block, _ := pem.Decode(data) + if x509.IsEncryptedPEMBlock(block) { + if block.Type != "SM4 ENCRYPTED KEY" { + return nil, errors.New("SM4: unknown type") + } + if pwd == nil { + return nil, errors.New("SM4: need passwd") + } + data, err := x509.DecryptPEMBlock(block, pwd) + if err != nil { + return nil, err + } + return data, nil + } + if block.Type != "SM4 KEY" { + return nil, errors.New("SM4: unknown type") + } + return block.Bytes, nil +} + +func ReadKeyFromPem(FileName string, pwd []byte) (SM4Key, error) { + data, err := ioutil.ReadFile(FileName) + if err != nil { + return nil, err + } + return ReadKeyFromMem(data, pwd) +} + +func WriteKeytoMem(key SM4Key, pwd []byte) ([]byte, error) { + if pwd != nil { + block, err := x509.EncryptPEMBlock(rand.Reader, + "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) + if err != nil { + return nil, err + } + return pem.EncodeToMemory(block), nil + } else { + block := &pem.Block{ + Type: "SM4 KEY", + Bytes: key, + } + return pem.EncodeToMemory(block), nil + } +} + +func WriteKeyToPem(FileName string, key SM4Key, pwd []byte) (bool, error) { + var block *pem.Block + + if pwd != nil { + var err error + block, err = x509.EncryptPEMBlock(rand.Reader, + "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) + if err != nil { + return false, err + } + } else { + block = &pem.Block{ + Type: "SM4 KEY", + Bytes: key, + } + } + file, err := os.Create(FileName) + if err != nil { + return false, err + } + defer file.Close() + err = pem.Encode(file, block) + if err != nil { + return false, nil + } + return true, nil +} + +func (k KeySizeError) Error() string { + return "SM4: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new cipher.Block. +func NewCipher(key []byte) (cipher.Block, error) { + if len(key) != BlockSize { + return nil, KeySizeError(len(key)) + } + c := new(Sm4Cipher) + c.subkeys = generateSubKeys(key) + c.block1 = make([]uint32, 4) + c.block2 = make([]byte, 16) + return c, nil +} + +func (c *Sm4Cipher) BlockSize() int { + return BlockSize +} + +func (c *Sm4Cipher) Encrypt(dst, src []byte) { + cryptBlock(c.subkeys, c.block1, c.block2, dst, src, false) +} + +func (c *Sm4Cipher) Decrypt(dst, src []byte) { + cryptBlock(c.subkeys, c.block1, c.block2, dst, src, true) +} diff --git a/vendor/github.com/xtaci/kcp-go/.gitignore b/vendor/github.com/xtaci/kcp-go/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/xtaci/kcp-go/.travis.yml b/vendor/github.com/xtaci/kcp-go/.travis.yml new file mode 100644 index 0000000..fb83e80 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/.travis.yml @@ -0,0 +1,17 @@ +language: go +go: + - 1.9.x + - 1.10.x + - 1.11.x + +before_install: + - go get -t -v ./... + +install: + - go get github.com/xtaci/kcp-go + +script: + - go test -coverprofile=coverage.txt -covermode=atomic -bench . + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/xtaci/kcp-go/LICENSE b/vendor/github.com/xtaci/kcp-go/LICENSE new file mode 100644 index 0000000..8294d13 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Daniel Fu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/xtaci/kcp-go/README.md b/vendor/github.com/xtaci/kcp-go/README.md new file mode 100644 index 0000000..629e57a --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/README.md @@ -0,0 +1,229 @@ +kcp-go + + +[![GoDoc][1]][2] [![Powered][9]][10] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Coverage Statusd][7]][8] + +[1]: https://godoc.org/github.com/xtaci/kcp-go?status.svg +[2]: https://godoc.org/github.com/xtaci/kcp-go +[3]: https://travis-ci.org/xtaci/kcp-go.svg?branch=master +[4]: https://travis-ci.org/xtaci/kcp-go +[5]: https://goreportcard.com/badge/github.com/xtaci/kcp-go +[6]: https://goreportcard.com/report/github.com/xtaci/kcp-go +[7]: https://codecov.io/gh/xtaci/kcp-go/branch/master/graph/badge.svg +[8]: https://codecov.io/gh/xtaci/kcp-go +[9]: https://img.shields.io/badge/KCP-Powered-blue.svg +[10]: https://github.com/skywind3000/kcp +[11]: https://img.shields.io/badge/license-MIT-blue.svg +[12]: LICENSE + +## Introduction + +**kcp-go** is a **Production-Grade Reliable-UDP** library for [golang](https://golang.org/). + +This library intents to provide a **smooth, resilient, ordered, error-checked and anonymous** delivery of streams over **UDP** packets, it has been battle-tested with opensource project [kcptun](https://github.com/xtaci/kcptun). Millions of devices(from low-end MIPS routers to high-end servers) have deployed **kcp-go** powered program in a variety of forms like **online games, live broadcasting, file synchronization and network acceleration**. + +[Lastest Release](https://github.com/xtaci/kcp-go/releases) + +## Features + +1. Designed for **Latency-sensitive** scenarios. +1. **Cache friendly** and **Memory optimized** design, offers extremely **High Performance** core. +1. Handles **>5K concurrent connections** on a single commodity server. +1. Compatible with [net.Conn](https://golang.org/pkg/net/#Conn) and [net.Listener](https://golang.org/pkg/net/#Listener), a drop-in replacement for [net.TCPConn](https://golang.org/pkg/net/#TCPConn). +1. [FEC(Forward Error Correction)](https://en.wikipedia.org/wiki/Forward_error_correction) Support with [Reed-Solomon Codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) +1. Packet level encryption support with [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), [TEA](https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm), [3DES](https://en.wikipedia.org/wiki/Triple_DES), [Blowfish](https://en.wikipedia.org/wiki/Blowfish_(cipher)), [Cast5](https://en.wikipedia.org/wiki/CAST-128), [Salsa20]( https://en.wikipedia.org/wiki/Salsa20), etc. in [CFB](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_.28CFB.29) mode, which generates completely anonymous packet. +1. Only **A fixed number of goroutines** will be created for the entire server application, costs in **context switch** between goroutines have been taken into consideration. +1. Compatible with [skywind3000's](https://github.com/skywind3000) C version with various improvements. +1. Platform-dependent optimizations: [sendmmsg](http://man7.org/linux/man-pages/man2/sendmmsg.2.html) and [recvmmsg](http://man7.org/linux/man-pages/man2/recvmmsg.2.html) were expoloited for linux. + +## Documentation + +For complete documentation, see the associated [Godoc](https://godoc.org/github.com/xtaci/kcp-go). + +## Specification + +Frame Format + +``` +NONCE: + 16bytes cryptographically secure random number, nonce changes for every packet. + +CRC32: + CRC-32 checksum of data using the IEEE polynomial + +FEC TYPE: + typeData = 0xF1 + typeParity = 0xF2 + +FEC SEQID: + monotonically increasing in range: [0, (0xffffffff/shardSize) * shardSize - 1] + +SIZE: + The size of KCP frame plus 2 +``` + +``` ++-----------------+ +| SESSION | ++-----------------+ +| KCP(ARQ) | ++-----------------+ +| FEC(OPTIONAL) | ++-----------------+ +| CRYPTO(OPTIONAL)| ++-----------------+ +| UDP(PACKET) | ++-----------------+ +| IP | ++-----------------+ +| LINK | ++-----------------+ +| PHY | ++-----------------+ +(LAYER MODEL OF KCP-GO) +``` + + +## Examples + +1. [simple examples](https://github.com/xtaci/kcp-go/tree/master/examples) +2. [kcptun client](https://github.com/xtaci/kcptun/blob/master/client/main.go) +3. [kcptun server](https://github.com/xtaci/kcptun/blob/master/server/main.go) + +## Benchmark +``` + Model Name: MacBook Pro + Model Identifier: MacBookPro14,1 + Processor Name: Intel Core i5 + Processor Speed: 3.1 GHz + Number of Processors: 1 + Total Number of Cores: 2 + L2 Cache (per Core): 256 KB + L3 Cache: 4 MB + Memory: 8 GB +``` +``` +$ go test -v -run=^$ -bench . +beginning tests, encryption:salsa20, fec:10/3 +goos: darwin +goarch: amd64 +pkg: github.com/xtaci/kcp-go +BenchmarkSM4-4 50000 32180 ns/op 93.23 MB/s 0 B/op 0 allocs/op +BenchmarkAES128-4 500000 3285 ns/op 913.21 MB/s 0 B/op 0 allocs/op +BenchmarkAES192-4 300000 3623 ns/op 827.85 MB/s 0 B/op 0 allocs/op +BenchmarkAES256-4 300000 3874 ns/op 774.20 MB/s 0 B/op 0 allocs/op +BenchmarkTEA-4 100000 15384 ns/op 195.00 MB/s 0 B/op 0 allocs/op +BenchmarkXOR-4 20000000 89.9 ns/op 33372.00 MB/s 0 B/op 0 allocs/op +BenchmarkBlowfish-4 50000 26927 ns/op 111.41 MB/s 0 B/op 0 allocs/op +BenchmarkNone-4 30000000 45.7 ns/op 65597.94 MB/s 0 B/op 0 allocs/op +BenchmarkCast5-4 50000 34258 ns/op 87.57 MB/s 0 B/op 0 allocs/op +Benchmark3DES-4 10000 117149 ns/op 25.61 MB/s 0 B/op 0 allocs/op +BenchmarkTwofish-4 50000 33538 ns/op 89.45 MB/s 0 B/op 0 allocs/op +BenchmarkXTEA-4 30000 45666 ns/op 65.69 MB/s 0 B/op 0 allocs/op +BenchmarkSalsa20-4 500000 3308 ns/op 906.76 MB/s 0 B/op 0 allocs/op +BenchmarkCRC32-4 20000000 65.2 ns/op 15712.43 MB/s +BenchmarkCsprngSystem-4 1000000 1150 ns/op 13.91 MB/s +BenchmarkCsprngMD5-4 10000000 145 ns/op 110.26 MB/s +BenchmarkCsprngSHA1-4 10000000 158 ns/op 126.54 MB/s +BenchmarkCsprngNonceMD5-4 10000000 153 ns/op 104.22 MB/s +BenchmarkCsprngNonceAES128-4 100000000 19.1 ns/op 837.81 MB/s +BenchmarkFECDecode-4 1000000 1119 ns/op 1339.61 MB/s 1606 B/op 2 allocs/op +BenchmarkFECEncode-4 2000000 832 ns/op 1801.83 MB/s 17 B/op 0 allocs/op +BenchmarkFlush-4 5000000 272 ns/op 0 B/op 0 allocs/op +BenchmarkEchoSpeed4K-4 5000 259617 ns/op 15.78 MB/s 5451 B/op 149 allocs/op +BenchmarkEchoSpeed64K-4 1000 1706084 ns/op 38.41 MB/s 56002 B/op 1604 allocs/op +BenchmarkEchoSpeed512K-4 100 14345505 ns/op 36.55 MB/s 482597 B/op 13045 allocs/op +BenchmarkEchoSpeed1M-4 30 34859104 ns/op 30.08 MB/s 1143773 B/op 27186 allocs/op +BenchmarkSinkSpeed4K-4 50000 31369 ns/op 130.57 MB/s 1566 B/op 30 allocs/op +BenchmarkSinkSpeed64K-4 5000 329065 ns/op 199.16 MB/s 21529 B/op 453 allocs/op +BenchmarkSinkSpeed256K-4 500 2373354 ns/op 220.91 MB/s 166332 B/op 3554 allocs/op +BenchmarkSinkSpeed1M-4 300 5117927 ns/op 204.88 MB/s 310378 B/op 6988 allocs/op +PASS +ok github.com/xtaci/kcp-go 50.349s +``` + + +## Typical Flame Graph +![Flame Graph in kcptun](flame.png) + +## Key Design Considerations + +1. slice vs. container/list + +`kcp.flush()` loops through the send queue for retransmission checking for every 20ms(interval). + +I've wrote a benchmark for comparing sequential loop through *slice* and *container/list* here: + +https://github.com/xtaci/notes/blob/master/golang/benchmark2/cachemiss_test.go + +``` +BenchmarkLoopSlice-4 2000000000 0.39 ns/op +BenchmarkLoopList-4 100000000 54.6 ns/op +``` + +List structure introduces **heavy cache misses** compared to slice which owns better **locality**, 5000 connections with 32 window size and 20ms interval will cost 6us/0.03%(cpu) using slice, and 8.7ms/43.5%(cpu) for list for each `kcp.flush()`. + +2. Timing accuracy vs. syscall clock_gettime + +Timing is **critical** to **RTT estimator**, inaccurate timing leads to false retransmissions in KCP, but calling `time.Now()` costs 42 cycles(10.5ns on 4GHz CPU, 15.6ns on my MacBook Pro 2.7GHz). + +The benchmark for time.Now() lies here: + +https://github.com/xtaci/notes/blob/master/golang/benchmark2/syscall_test.go + +``` +BenchmarkNow-4 100000000 15.6 ns/op +``` + +In kcp-go, after each `kcp.output()` function call, current clock time will be updated upon return, and for a single `kcp.flush()` operation, current time will be queried from system once. For most of the time, 5000 connections costs 5000 * 15.6ns = 78us(a fixed cost while no packet needs to be sent), as for 10MB/s data transfering with 1400 MTU, `kcp.output()` will be called around 7500 times and costs 117us for `time.Now()` in **every second**. + +3. Memory management + +Primary memory allocation are done from a global buffer pool xmit.Buf, in kcp-go, when we need to allocate some bytes, we can get from that pool, and a fixed-capacity 1500 bytes(mtuLimit) will be returned, the rx queue, tx queue and fec queue all receive bytes from there, and they will return the bytes to the pool after using to prevent unnecessary zer0ing of bytes. The pool mechanism maintained a high watermark for slice objects, these in-flight objects from the pool will survive from the perodical garbage collection, meanwhile the pool kept the ability to return the memory to runtime if in idle. + +4. Information security + +kcp-go is shipped with builtin packet encryption powered by various block encryption algorithms and works in [Cipher Feedback Mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_(CFB)), for each packet to be sent, the encryption process will start from encrypting a [nonce](https://en.wikipedia.org/wiki/Cryptographic_nonce) from the [system entropy](https://en.wikipedia.org/wiki//dev/random), so encryption to same plaintexts never leads to a same ciphertexts thereafter. + +The contents of the packets are completely anonymous with encryption, including the headers(FEC,KCP), checksums and contents. Note that, no matter which encryption method you choose on you upper layer, if you disable encryption, the transmit will be insecure somehow, since the header is ***PLAINTEXT*** to everyone it would be susceptible to header tampering, such as jamming the *sliding window size*, *round-trip time*, *FEC property* and *checksums*. ```AES-128``` is suggested for minimal encryption since modern CPUs are shipped with [AES-NI](https://en.wikipedia.org/wiki/AES_instruction_set) instructions and performs even better than `salsa20`(check the table above). + +Other possible attacks to kcp-go includes: a) [traffic analysis](https://en.wikipedia.org/wiki/Traffic_analysis), dataflow on specific websites may have pattern while interchanging data, but this type of eavesdropping has been mitigated by adapting [smux](https://github.com/xtaci/smux) to mix data streams so as to introduce noises, perfect solution to this has not appeared yet, theroretically by shuffling/mixing messages on larger scale network may mitigate this problem. b) [replay attack](https://en.wikipedia.org/wiki/Replay_attack), since the asymmetrical encryption has not been introduced into kcp-go for some reason, capturing the packets and replay them on a different machine is possible, (notice: hijacking the session and decrypting the contents is still *impossible*), so upper layers should contain a asymmetrical encryption system to guarantee the authenticity of each message(to process message exactly once), such as HTTPS/OpenSSL/LibreSSL, only by signing the requests with private keys can eliminate this type of attack. + +## Connection Termination + +Control messages like **SYN/FIN/RST** in TCP **are not defined** in KCP, you need some **keepalive/heartbeat mechanism** in the application-level. A real world example is to use some **multiplexing** protocol over session, such as [smux](https://github.com/xtaci/smux)(with embedded keepalive mechanism), see [kcptun](https://github.com/xtaci/kcptun) for example. + +## FAQ + +Q: I'm handling >5K connections on my server, the CPU utilization is so high. + +A: A standalone `agent` or `gate` server for running kcp-go is suggested, not only for CPU utilization, but also important to the **precision** of RTT measurements(timing) which indirectly affects retransmission. By increasing update `interval` with `SetNoDelay` like `conn.SetNoDelay(1, 40, 1, 1)` will dramatically reduce system load, but lower the performance. + +Q: When should I enable FEC? + +A: Forward error correction is critical to long-distance transmission, because a packet loss will lead to a huge penalty in time. And for the complicated packet routing network in modern world, round-trip time based loss check will not always be efficient, the big deviation of RTT samples in the long way usually leads to a larger RTO value in typical rtt estimator, which in other words, slows down the transmission. + +Q: Should I enable encryption? + +A: Yes, for the safety of protocol, even if the upper layer has encrypted. + +## Who is using this? + +1. https://github.com/xtaci/kcptun -- A Secure Tunnel Based On KCP over UDP. +2. https://github.com/getlantern/lantern -- Lantern delivers fast access to the open Internet. +3. https://github.com/smallnest/rpcx -- A RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan. +4. https://github.com/gonet2/agent -- A gateway for games with stream multiplexing. +5. https://github.com/syncthing/syncthing -- Open Source Continuous File Synchronization. + +## Links + +1. https://github.com/xtaci/smux/ -- A Stream Multiplexing Library for golang with least memory +1. https://github.com/xtaci/libkcp -- FEC enhanced KCP session library for iOS/Android in C++ +1. https://github.com/skywind3000/kcp -- A Fast and Reliable ARQ Protocol +1. https://github.com/klauspost/reedsolomon -- Reed-Solomon Erasure Coding in Go + +## Consulting + +WeChat(付费技术咨询) + +kcptun diff --git a/vendor/github.com/xtaci/kcp-go/batchconn.go b/vendor/github.com/xtaci/kcp-go/batchconn.go new file mode 100644 index 0000000..6c30701 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/batchconn.go @@ -0,0 +1,12 @@ +package kcp + +import "golang.org/x/net/ipv4" + +const ( + batchSize = 16 +) + +type batchConn interface { + WriteBatch(ms []ipv4.Message, flags int) (int, error) + ReadBatch(ms []ipv4.Message, flags int) (int, error) +} diff --git a/vendor/github.com/xtaci/kcp-go/crypt.go b/vendor/github.com/xtaci/kcp-go/crypt.go new file mode 100644 index 0000000..958fdea --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/crypt.go @@ -0,0 +1,785 @@ +package kcp + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/sha1" + + "github.com/templexxx/xor" + "github.com/tjfoc/gmsm/sm4" + + "golang.org/x/crypto/blowfish" + "golang.org/x/crypto/cast5" + "golang.org/x/crypto/pbkdf2" + "golang.org/x/crypto/salsa20" + "golang.org/x/crypto/tea" + "golang.org/x/crypto/twofish" + "golang.org/x/crypto/xtea" +) + +var ( + initialVector = []byte{167, 115, 79, 156, 18, 172, 27, 1, 164, 21, 242, 193, 252, 120, 230, 107} + saltxor = `sH3CIVoF#rWLtJo6` +) + +// BlockCrypt defines encryption/decryption methods for a given byte slice. +// Notes on implementing: the data to be encrypted contains a builtin +// nonce at the first 16 bytes +type BlockCrypt interface { + // Encrypt encrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Encrypt(dst, src []byte) + + // Decrypt decrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Decrypt(dst, src []byte) +} + +type salsa20BlockCrypt struct { + key [32]byte +} + +// NewSalsa20BlockCrypt https://en.wikipedia.org/wiki/Salsa20 +func NewSalsa20BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(salsa20BlockCrypt) + copy(c.key[:], key) + return c, nil +} + +func (c *salsa20BlockCrypt) Encrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} +func (c *salsa20BlockCrypt) Decrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} + +type sm4BlockCrypt struct { + encbuf [sm4.BlockSize]byte + decbuf [2 * sm4.BlockSize]byte + block cipher.Block +} + +// NewSM4BlockCrypt https://github.com/tjfoc/gmsm/tree/master/sm4 +func NewSM4BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(sm4BlockCrypt) + block, err := sm4.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *sm4BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *sm4BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type twofishBlockCrypt struct { + encbuf [twofish.BlockSize]byte + decbuf [2 * twofish.BlockSize]byte + block cipher.Block +} + +// NewTwofishBlockCrypt https://en.wikipedia.org/wiki/Twofish +func NewTwofishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(twofishBlockCrypt) + block, err := twofish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *twofishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *twofishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type tripleDESBlockCrypt struct { + encbuf [des.BlockSize]byte + decbuf [2 * des.BlockSize]byte + block cipher.Block +} + +// NewTripleDESBlockCrypt https://en.wikipedia.org/wiki/Triple_DES +func NewTripleDESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(tripleDESBlockCrypt) + block, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *tripleDESBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *tripleDESBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type cast5BlockCrypt struct { + encbuf [cast5.BlockSize]byte + decbuf [2 * cast5.BlockSize]byte + block cipher.Block +} + +// NewCast5BlockCrypt https://en.wikipedia.org/wiki/CAST-128 +func NewCast5BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(cast5BlockCrypt) + block, err := cast5.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *cast5BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *cast5BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type blowfishBlockCrypt struct { + encbuf [blowfish.BlockSize]byte + decbuf [2 * blowfish.BlockSize]byte + block cipher.Block +} + +// NewBlowfishBlockCrypt https://en.wikipedia.org/wiki/Blowfish_(cipher) +func NewBlowfishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(blowfishBlockCrypt) + block, err := blowfish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *blowfishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *blowfishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type aesBlockCrypt struct { + encbuf [aes.BlockSize]byte + decbuf [2 * aes.BlockSize]byte + block cipher.Block +} + +// NewAESBlockCrypt https://en.wikipedia.org/wiki/Advanced_Encryption_Standard +func NewAESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(aesBlockCrypt) + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *aesBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *aesBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type teaBlockCrypt struct { + encbuf [tea.BlockSize]byte + decbuf [2 * tea.BlockSize]byte + block cipher.Block +} + +// NewTEABlockCrypt https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm +func NewTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(teaBlockCrypt) + block, err := tea.NewCipherWithRounds(key, 16) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *teaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *teaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type xteaBlockCrypt struct { + encbuf [xtea.BlockSize]byte + decbuf [2 * xtea.BlockSize]byte + block cipher.Block +} + +// NewXTEABlockCrypt https://en.wikipedia.org/wiki/XTEA +func NewXTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(xteaBlockCrypt) + block, err := xtea.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *xteaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *xteaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type simpleXORBlockCrypt struct { + xortbl []byte +} + +// NewSimpleXORBlockCrypt simple xor with key expanding +func NewSimpleXORBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(simpleXORBlockCrypt) + c.xortbl = pbkdf2.Key(key, []byte(saltxor), 32, mtuLimit, sha1.New) + return c, nil +} + +func (c *simpleXORBlockCrypt) Encrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } +func (c *simpleXORBlockCrypt) Decrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } + +type noneBlockCrypt struct{} + +// NewNoneBlockCrypt does nothing but copying +func NewNoneBlockCrypt(key []byte) (BlockCrypt, error) { + return new(noneBlockCrypt), nil +} + +func (c *noneBlockCrypt) Encrypt(dst, src []byte) { copy(dst, src) } +func (c *noneBlockCrypt) Decrypt(dst, src []byte) { copy(dst, src) } + +// packet encryption with local CFB mode +func encrypt(block cipher.Block, dst, src, buf []byte) { + switch block.BlockSize() { + case 8: + encrypt8(block, dst, src, buf) + case 16: + encrypt16(block, dst, src, buf) + default: + encryptVariant(block, dst, src, buf) + } +} + +// optimized encryption for the ciphers which works in 8-bytes +func encrypt8(block cipher.Block, dst, src, buf []byte) { + tbl := buf[:8] + block.Encrypt(tbl, initialVector) + n := len(src) / 8 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:64] + d := dst[base:][0:64] + // 1 + xor.BytesSrc1(d[0:8], s[0:8], tbl) + block.Encrypt(tbl, d[0:8]) + // 2 + xor.BytesSrc1(d[8:16], s[8:16], tbl) + block.Encrypt(tbl, d[8:16]) + // 3 + xor.BytesSrc1(d[16:24], s[16:24], tbl) + block.Encrypt(tbl, d[16:24]) + // 4 + xor.BytesSrc1(d[24:32], s[24:32], tbl) + block.Encrypt(tbl, d[24:32]) + // 5 + xor.BytesSrc1(d[32:40], s[32:40], tbl) + block.Encrypt(tbl, d[32:40]) + // 6 + xor.BytesSrc1(d[40:48], s[40:48], tbl) + block.Encrypt(tbl, d[40:48]) + // 7 + xor.BytesSrc1(d[48:56], s[48:56], tbl) + block.Encrypt(tbl, d[48:56]) + // 8 + xor.BytesSrc1(d[56:64], s[56:64], tbl) + block.Encrypt(tbl, d[56:64]) + base += 64 + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +// optimized encryption for the ciphers which works in 16-bytes +func encrypt16(block cipher.Block, dst, src, buf []byte) { + tbl := buf[:16] + block.Encrypt(tbl, initialVector) + n := len(src) / 16 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:128] + d := dst[base:][0:128] + // 1 + xor.BytesSrc1(d[0:16], s[0:16], tbl) + block.Encrypt(tbl, d[0:16]) + // 2 + xor.BytesSrc1(d[16:32], s[16:32], tbl) + block.Encrypt(tbl, d[16:32]) + // 3 + xor.BytesSrc1(d[32:48], s[32:48], tbl) + block.Encrypt(tbl, d[32:48]) + // 4 + xor.BytesSrc1(d[48:64], s[48:64], tbl) + block.Encrypt(tbl, d[48:64]) + // 5 + xor.BytesSrc1(d[64:80], s[64:80], tbl) + block.Encrypt(tbl, d[64:80]) + // 6 + xor.BytesSrc1(d[80:96], s[80:96], tbl) + block.Encrypt(tbl, d[80:96]) + // 7 + xor.BytesSrc1(d[96:112], s[96:112], tbl) + block.Encrypt(tbl, d[96:112]) + // 8 + xor.BytesSrc1(d[112:128], s[112:128], tbl) + block.Encrypt(tbl, d[112:128]) + base += 128 + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func encryptVariant(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + // 1 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 2 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 3 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 4 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 5 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 6 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 7 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 8 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +// decryption +func decrypt(block cipher.Block, dst, src, buf []byte) { + switch block.BlockSize() { + case 8: + decrypt8(block, dst, src, buf) + case 16: + decrypt16(block, dst, src, buf) + default: + decryptVariant(block, dst, src, buf) + } +} + +func decrypt8(block cipher.Block, dst, src, buf []byte) { + tbl := buf[0:8] + next := buf[8:16] + block.Encrypt(tbl, initialVector) + n := len(src) / 8 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:64] + d := dst[base:][0:64] + // 1 + block.Encrypt(next, s[0:8]) + xor.BytesSrc1(d[0:8], s[0:8], tbl) + // 2 + block.Encrypt(tbl, s[8:16]) + xor.BytesSrc1(d[8:16], s[8:16], next) + // 3 + block.Encrypt(next, s[16:24]) + xor.BytesSrc1(d[16:24], s[16:24], tbl) + // 4 + block.Encrypt(tbl, s[24:32]) + xor.BytesSrc1(d[24:32], s[24:32], next) + // 5 + block.Encrypt(next, s[32:40]) + xor.BytesSrc1(d[32:40], s[32:40], tbl) + // 6 + block.Encrypt(tbl, s[40:48]) + xor.BytesSrc1(d[40:48], s[40:48], next) + // 7 + block.Encrypt(next, s[48:56]) + xor.BytesSrc1(d[48:56], s[48:56], tbl) + // 8 + block.Encrypt(tbl, s[56:64]) + xor.BytesSrc1(d[56:64], s[56:64], next) + base += 64 + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func decrypt16(block cipher.Block, dst, src, buf []byte) { + tbl := buf[0:16] + next := buf[16:32] + block.Encrypt(tbl, initialVector) + n := len(src) / 16 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:128] + d := dst[base:][0:128] + // 1 + block.Encrypt(next, s[0:16]) + xor.BytesSrc1(d[0:16], s[0:16], tbl) + // 2 + block.Encrypt(tbl, s[16:32]) + xor.BytesSrc1(d[16:32], s[16:32], next) + // 3 + block.Encrypt(next, s[32:48]) + xor.BytesSrc1(d[32:48], s[32:48], tbl) + // 4 + block.Encrypt(tbl, s[48:64]) + xor.BytesSrc1(d[48:64], s[48:64], next) + // 5 + block.Encrypt(next, s[64:80]) + xor.BytesSrc1(d[64:80], s[64:80], tbl) + // 6 + block.Encrypt(tbl, s[80:96]) + xor.BytesSrc1(d[80:96], s[80:96], next) + // 7 + block.Encrypt(next, s[96:112]) + xor.BytesSrc1(d[96:112], s[96:112], tbl) + // 8 + block.Encrypt(tbl, s[112:128]) + xor.BytesSrc1(d[112:128], s[112:128], next) + base += 128 + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func decryptVariant(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + next := buf[blocksize:] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + // 1 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 2 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 3 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 4 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 5 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 6 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 7 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 8 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} diff --git a/vendor/github.com/xtaci/kcp-go/donate.png b/vendor/github.com/xtaci/kcp-go/donate.png new file mode 100644 index 0000000000000000000000000000000000000000..0f353d96e902936aed15a7312a6e8b4b332fe960 GIT binary patch literal 4420 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/entropy.go b/vendor/github.com/xtaci/kcp-go/entropy.go new file mode 100644 index 0000000..156c1cd --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/entropy.go @@ -0,0 +1,52 @@ +package kcp + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/md5" + "crypto/rand" + "io" +) + +// Entropy defines a entropy source +type Entropy interface { + Init() + Fill(nonce []byte) +} + +// nonceMD5 nonce generator for packet header +type nonceMD5 struct { + seed [md5.Size]byte +} + +func (n *nonceMD5) Init() { /*nothing required*/ } + +func (n *nonceMD5) Fill(nonce []byte) { + if n.seed[0] == 0 { // entropy update + io.ReadFull(rand.Reader, n.seed[:]) + } + n.seed = md5.Sum(n.seed[:]) + copy(nonce, n.seed[:]) +} + +// nonceAES128 nonce generator for packet headers +type nonceAES128 struct { + seed [aes.BlockSize]byte + block cipher.Block +} + +func (n *nonceAES128) Init() { + var key [16]byte //aes-128 + io.ReadFull(rand.Reader, key[:]) + io.ReadFull(rand.Reader, n.seed[:]) + block, _ := aes.NewCipher(key[:]) + n.block = block +} + +func (n *nonceAES128) Fill(nonce []byte) { + if n.seed[0] == 0 { // entropy update + io.ReadFull(rand.Reader, n.seed[:]) + } + n.block.Encrypt(n.seed[:], n.seed[:]) + copy(nonce, n.seed[:]) +} diff --git a/vendor/github.com/xtaci/kcp-go/fec.go b/vendor/github.com/xtaci/kcp-go/fec.go new file mode 100644 index 0000000..97cd40b --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/fec.go @@ -0,0 +1,337 @@ +package kcp + +import ( + "encoding/binary" + "sync/atomic" + + "github.com/klauspost/reedsolomon" +) + +const ( + fecHeaderSize = 6 + fecHeaderSizePlus2 = fecHeaderSize + 2 // plus 2B data size + typeData = 0xf1 + typeParity = 0xf2 + fecExpire = 60000 +) + +// fecPacket is a decoded FEC packet +type fecPacket []byte + +func (bts fecPacket) seqid() uint32 { return binary.LittleEndian.Uint32(bts) } +func (bts fecPacket) flag() uint16 { return binary.LittleEndian.Uint16(bts[4:]) } +func (bts fecPacket) data() []byte { return bts[6:] } + +// fecElement has auxcilliary time field +type fecElement struct { + fecPacket + ts uint32 +} + +// fecDecoder for decoding incoming packets +type fecDecoder struct { + rxlimit int // queue size limit + dataShards int + parityShards int + shardSize int + rx []fecElement // ordered receive queue + + // caches + decodeCache [][]byte + flagCache []bool + + // zeros + zeros []byte + + // RS decoder + codec reedsolomon.Encoder +} + +func newFECDecoder(rxlimit, dataShards, parityShards int) *fecDecoder { + if dataShards <= 0 || parityShards <= 0 { + return nil + } + if rxlimit < dataShards+parityShards { + return nil + } + + dec := new(fecDecoder) + dec.rxlimit = rxlimit + dec.dataShards = dataShards + dec.parityShards = parityShards + dec.shardSize = dataShards + parityShards + codec, err := reedsolomon.New(dataShards, parityShards) + if err != nil { + return nil + } + dec.codec = codec + dec.decodeCache = make([][]byte, dec.shardSize) + dec.flagCache = make([]bool, dec.shardSize) + dec.zeros = make([]byte, mtuLimit) + return dec +} + +// decode a fec packet +func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) { + // insertion + n := len(dec.rx) - 1 + insertIdx := 0 + for i := n; i >= 0; i-- { + if in.seqid() == dec.rx[i].seqid() { // de-duplicate + return nil + } else if _itimediff(in.seqid(), dec.rx[i].seqid()) > 0 { // insertion + insertIdx = i + 1 + break + } + } + + // make a copy + pkt := fecPacket(xmitBuf.Get().([]byte)[:len(in)]) + copy(pkt, in) + elem := fecElement{pkt, currentMs()} + + // insert into ordered rx queue + if insertIdx == n+1 { + dec.rx = append(dec.rx, elem) + } else { + dec.rx = append(dec.rx, fecElement{}) + copy(dec.rx[insertIdx+1:], dec.rx[insertIdx:]) // shift right + dec.rx[insertIdx] = elem + } + + // shard range for current packet + shardBegin := pkt.seqid() - pkt.seqid()%uint32(dec.shardSize) + shardEnd := shardBegin + uint32(dec.shardSize) - 1 + + // max search range in ordered queue for current shard + searchBegin := insertIdx - int(pkt.seqid()%uint32(dec.shardSize)) + if searchBegin < 0 { + searchBegin = 0 + } + searchEnd := searchBegin + dec.shardSize - 1 + if searchEnd >= len(dec.rx) { + searchEnd = len(dec.rx) - 1 + } + + // re-construct datashards + if searchEnd-searchBegin+1 >= dec.dataShards { + var numshard, numDataShard, first, maxlen int + + // zero caches + shards := dec.decodeCache + shardsflag := dec.flagCache + for k := range dec.decodeCache { + shards[k] = nil + shardsflag[k] = false + } + + // shard assembly + for i := searchBegin; i <= searchEnd; i++ { + seqid := dec.rx[i].seqid() + if _itimediff(seqid, shardEnd) > 0 { + break + } else if _itimediff(seqid, shardBegin) >= 0 { + shards[seqid%uint32(dec.shardSize)] = dec.rx[i].data() + shardsflag[seqid%uint32(dec.shardSize)] = true + numshard++ + if dec.rx[i].flag() == typeData { + numDataShard++ + } + if numshard == 1 { + first = i + } + if len(dec.rx[i].data()) > maxlen { + maxlen = len(dec.rx[i].data()) + } + } + } + + if numDataShard == dec.dataShards { + // case 1: no loss on data shards + dec.rx = dec.freeRange(first, numshard, dec.rx) + } else if numshard >= dec.dataShards { + // case 2: loss on data shards, but it's recoverable from parity shards + for k := range shards { + if shards[k] != nil { + dlen := len(shards[k]) + shards[k] = shards[k][:maxlen] + copy(shards[k][dlen:], dec.zeros) + } else if k < dec.dataShards { + shards[k] = xmitBuf.Get().([]byte)[:0] + } + } + if err := dec.codec.ReconstructData(shards); err == nil { + for k := range shards[:dec.dataShards] { + if !shardsflag[k] { + // recovered data should be recycled + recovered = append(recovered, shards[k]) + } + } + } + dec.rx = dec.freeRange(first, numshard, dec.rx) + } + } + + // keep rxlimit + if len(dec.rx) > dec.rxlimit { + if dec.rx[0].flag() == typeData { // track the unrecoverable data + atomic.AddUint64(&DefaultSnmp.FECShortShards, 1) + } + dec.rx = dec.freeRange(0, 1, dec.rx) + } + + // timeout policy + current := currentMs() + numExpired := 0 + for k := range dec.rx { + if _itimediff(current, dec.rx[k].ts) > fecExpire { + numExpired++ + continue + } + break + } + if numExpired > 0 { + dec.rx = dec.freeRange(0, numExpired, dec.rx) + } + return +} + +// free a range of fecPacket +func (dec *fecDecoder) freeRange(first, n int, q []fecElement) []fecElement { + for i := first; i < first+n; i++ { // recycle buffer + xmitBuf.Put([]byte(q[i].fecPacket)) + } + + if first == 0 && n < cap(q)/2 { + return q[n:] + } + copy(q[first:], q[first+n:]) + return q[:len(q)-n] +} + +// release all segments back to xmitBuf +func (dec *fecDecoder) release() { + if n := len(dec.rx); n > 0 { + dec.rx = dec.freeRange(0, n, dec.rx) + } +} + +type ( + // fecEncoder for encoding outgoing packets + fecEncoder struct { + dataShards int + parityShards int + shardSize int + paws uint32 // Protect Against Wrapped Sequence numbers + next uint32 // next seqid + + shardCount int // count the number of datashards collected + maxSize int // track maximum data length in datashard + + headerOffset int // FEC header offset + payloadOffset int // FEC payload offset + + // caches + shardCache [][]byte + encodeCache [][]byte + + // zeros + zeros []byte + + // RS encoder + codec reedsolomon.Encoder + } +) + +func newFECEncoder(dataShards, parityShards, offset int) *fecEncoder { + if dataShards <= 0 || parityShards <= 0 { + return nil + } + enc := new(fecEncoder) + enc.dataShards = dataShards + enc.parityShards = parityShards + enc.shardSize = dataShards + parityShards + enc.paws = 0xffffffff / uint32(enc.shardSize) * uint32(enc.shardSize) + enc.headerOffset = offset + enc.payloadOffset = enc.headerOffset + fecHeaderSize + + codec, err := reedsolomon.New(dataShards, parityShards) + if err != nil { + return nil + } + enc.codec = codec + + // caches + enc.encodeCache = make([][]byte, enc.shardSize) + enc.shardCache = make([][]byte, enc.shardSize) + for k := range enc.shardCache { + enc.shardCache[k] = make([]byte, mtuLimit) + } + enc.zeros = make([]byte, mtuLimit) + return enc +} + +// encodes the packet, outputs parity shards if we have collected quorum datashards +// notice: the contents of 'ps' will be re-written in successive calling +func (enc *fecEncoder) encode(b []byte) (ps [][]byte) { + // The header format: + // | FEC SEQID(4B) | FEC TYPE(2B) | SIZE (2B) | PAYLOAD(SIZE-2) | + // |<-headerOffset |<-payloadOffset + enc.markData(b[enc.headerOffset:]) + binary.LittleEndian.PutUint16(b[enc.payloadOffset:], uint16(len(b[enc.payloadOffset:]))) + + // copy data from payloadOffset to fec shard cache + sz := len(b) + enc.shardCache[enc.shardCount] = enc.shardCache[enc.shardCount][:sz] + copy(enc.shardCache[enc.shardCount][enc.payloadOffset:], b[enc.payloadOffset:]) + enc.shardCount++ + + // track max datashard length + if sz > enc.maxSize { + enc.maxSize = sz + } + + // Generation of Reed-Solomon Erasure Code + if enc.shardCount == enc.dataShards { + // fill '0' into the tail of each datashard + for i := 0; i < enc.dataShards; i++ { + shard := enc.shardCache[i] + slen := len(shard) + copy(shard[slen:enc.maxSize], enc.zeros) + } + + // construct equal-sized slice with stripped header + cache := enc.encodeCache + for k := range cache { + cache[k] = enc.shardCache[k][enc.payloadOffset:enc.maxSize] + } + + // encoding + if err := enc.codec.Encode(cache); err == nil { + ps = enc.shardCache[enc.dataShards:] + for k := range ps { + enc.markParity(ps[k][enc.headerOffset:]) + ps[k] = ps[k][:enc.maxSize] + } + } + + // counters resetting + enc.shardCount = 0 + enc.maxSize = 0 + } + + return +} + +func (enc *fecEncoder) markData(data []byte) { + binary.LittleEndian.PutUint32(data, enc.next) + binary.LittleEndian.PutUint16(data[4:], typeData) + enc.next++ +} + +func (enc *fecEncoder) markParity(data []byte) { + binary.LittleEndian.PutUint32(data, enc.next) + binary.LittleEndian.PutUint16(data[4:], typeParity) + // sequence wrap will only happen at parity shard + enc.next = (enc.next + 1) % enc.paws +} diff --git a/vendor/github.com/xtaci/kcp-go/flame.png b/vendor/github.com/xtaci/kcp-go/flame.png new file mode 100644 index 0000000000000000000000000000000000000000..672f649ef9c72635be58e330cc901a8937db0fa8 GIT binary patch literal 57142 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/kcp-go.png b/vendor/github.com/xtaci/kcp-go/kcp-go.png new file mode 100644 index 0000000000000000000000000000000000000000..151b7c4f7c49c1a8382552322787a3e7f04ac3c6 GIT binary patch literal 9153 zcmdUzMOPe5(?HR|H88ll1b5fq65QP-xZB|F?m>dP1P=oQx4~UQa0~9dJiG5Ne2ebe zrx#VVsB^0OMyo2zpdk|?LqS2I$;nEoeQ@MsnIQr`cHFHzAQTiTj;*Ams+^=GxvHy^ zm92v%6qIaqx;BE2`Y5nKUkwrIGbS`ckyokqks)RhI*$Z4c^VXw_+SDHW4q^9XrfM- z;%z-BT_#UUtcE27N=Bv=GiVe>CpEF9rC(mZoX%hP-KMhNCxpE?U_r%bOuW1(nlR+K zg{)D?SC+KYwCr*lAef2xsmCQ}LpkJ2NH^6HjZ zS=_Ki~j=B@q`W;!B2A}>R%92w1dBq zzek*7$m!&PWS_UK!y`v`YZMP6;&w<3OvP@plo(mr;LLPv4`=#svb-5oZv3HHS%}Tx zqXfgUXNowshQp5ncg%TUzNTe0Q~bVAgAe|yMx-dL&zFH`HEAWcAJPi)IVc~7QwV5; zt7D^Zh=YwhAtV0_a%q3jA>c*T%5+MbXyfB$QnN}t+qQz2mRlkaq-KsHy*?X@gr_w` zIF$p~%a=OT?X16y;4|!}5%GGzuPT87pe;KEZE?YDdGjqmR}U=`W5 zU1uJsIM}Eg4J{R9#>Spx!!s3%rfc0t3)LM|f)Xx_XGOQ)Pd2`zFVxQ|LAQgn11!pQ z#`qmvok51dxznmSw4d*dt2y1joKxk27XPT&AC{Bas`T0b7958SH7Lbxju)iYyiq*|sq zW%h&@4CaQW^(3?(T5U)*6EZ?lp-E@s(N7E0r;QsRYHqA-K5Bb>8CYjtdD*?i-gi6L zj}-;<=B@j{80qXww$YgHJ)rVVO=98T)$+Xs0dNnAMTot~Xy0K`K@1ba=zP##+h{Og z98734G0H4>Z6Oj1$tgE5Oal&1s9FQM1K_U--7>5lSlk((EBMnkb30;PFuF5}5XfT& z!6-zW4fP8q90dheSb`0CXB3uM@G=EU6dg7wjN+>-WlCHrg}+o7vsebjj}bsA@k;zW zWiRD$a`Omo>8Fm!8}io?qPe5=viAeyvoFzU}lv?nzdxuQ8^2djwpjKn<^sG=aiy!i6ac71fw0J(jzW=`=hn# zYfMX&UWRol-@=L&*^9hY&FBfzex%i=`HsPlNsj6J`1l0)Xg}Is2|dzW>HozTHO{z5 zewWoO%29u<;H;oLCbZ+eMZG1x{T%;=v&?5M#pbbvyG3u6f7N^y0lqV&RU!&T#<~?6hhp3bc<_z3&_K7D+a`3niXseXn3r7lcIR0J!e%7nV z=+H`A^sg1xbJUYu6<8Ht?O0uFnYP6^WOMKK;BeMilF7MArips}??7dsQ0y5nKLbudTj7^w`d<>Js`Nz7V9k8ZMD78BiO!ME(WeFK z0XezUMU_sjqw4q)rHo0VT!f#DKh+ rPWxmb2Fy&lpd?t7ZrM6=*p4DcCmHBREt%LHs&& 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/kcp.go b/vendor/github.com/xtaci/kcp-go/kcp.go new file mode 100644 index 0000000..c42f7f3 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/kcp.go @@ -0,0 +1,1069 @@ +package kcp + +import ( + "encoding/binary" + "sync/atomic" + "time" +) + +const ( + IKCP_RTO_NDL = 30 // no delay min rto + IKCP_RTO_MIN = 100 // normal min rto + IKCP_RTO_DEF = 200 + IKCP_RTO_MAX = 60000 + IKCP_CMD_PUSH = 81 // cmd: push data + IKCP_CMD_ACK = 82 // cmd: ack + IKCP_CMD_WASK = 83 // cmd: window probe (ask) + IKCP_CMD_WINS = 84 // cmd: window size (tell) + IKCP_ASK_SEND = 1 // need to send IKCP_CMD_WASK + IKCP_ASK_TELL = 2 // need to send IKCP_CMD_WINS + IKCP_WND_SND = 32 + IKCP_WND_RCV = 32 + IKCP_MTU_DEF = 1400 + IKCP_ACK_FAST = 3 + IKCP_INTERVAL = 100 + IKCP_OVERHEAD = 24 + IKCP_DEADLINK = 20 + IKCP_THRESH_INIT = 2 + IKCP_THRESH_MIN = 2 + IKCP_PROBE_INIT = 7000 // 7 secs to probe window size + IKCP_PROBE_LIMIT = 120000 // up to 120 secs to probe window +) + +// monotonic reference time point +var refTime time.Time = time.Now() + +// currentMs returns current elasped monotonic milliseconds since program startup +func currentMs() uint32 { return uint32(time.Now().Sub(refTime) / time.Millisecond) } + +// output_callback is a prototype which ought capture conn and call conn.Write +type output_callback func(buf []byte, size int) + +/* encode 8 bits unsigned int */ +func ikcp_encode8u(p []byte, c byte) []byte { + p[0] = c + return p[1:] +} + +/* decode 8 bits unsigned int */ +func ikcp_decode8u(p []byte, c *byte) []byte { + *c = p[0] + return p[1:] +} + +/* encode 16 bits unsigned int (lsb) */ +func ikcp_encode16u(p []byte, w uint16) []byte { + binary.LittleEndian.PutUint16(p, w) + return p[2:] +} + +/* decode 16 bits unsigned int (lsb) */ +func ikcp_decode16u(p []byte, w *uint16) []byte { + *w = binary.LittleEndian.Uint16(p) + return p[2:] +} + +/* encode 32 bits unsigned int (lsb) */ +func ikcp_encode32u(p []byte, l uint32) []byte { + binary.LittleEndian.PutUint32(p, l) + return p[4:] +} + +/* decode 32 bits unsigned int (lsb) */ +func ikcp_decode32u(p []byte, l *uint32) []byte { + *l = binary.LittleEndian.Uint32(p) + return p[4:] +} + +func _imin_(a, b uint32) uint32 { + if a <= b { + return a + } + return b +} + +func _imax_(a, b uint32) uint32 { + if a >= b { + return a + } + return b +} + +func _ibound_(lower, middle, upper uint32) uint32 { + return _imin_(_imax_(lower, middle), upper) +} + +func _itimediff(later, earlier uint32) int32 { + return (int32)(later - earlier) +} + +// segment defines a KCP segment +type segment struct { + conv uint32 + cmd uint8 + frg uint8 + wnd uint16 + ts uint32 + sn uint32 + una uint32 + rto uint32 + xmit uint32 + resendts uint32 + fastack uint32 + acked uint32 // mark if the seg has acked + data []byte +} + +// encode a segment into buffer +func (seg *segment) encode(ptr []byte) []byte { + ptr = ikcp_encode32u(ptr, seg.conv) + ptr = ikcp_encode8u(ptr, seg.cmd) + ptr = ikcp_encode8u(ptr, seg.frg) + ptr = ikcp_encode16u(ptr, seg.wnd) + ptr = ikcp_encode32u(ptr, seg.ts) + ptr = ikcp_encode32u(ptr, seg.sn) + ptr = ikcp_encode32u(ptr, seg.una) + ptr = ikcp_encode32u(ptr, uint32(len(seg.data))) + atomic.AddUint64(&DefaultSnmp.OutSegs, 1) + return ptr +} + +// KCP defines a single KCP connection +type KCP struct { + conv, mtu, mss, state uint32 + snd_una, snd_nxt, rcv_nxt uint32 + ssthresh uint32 + rx_rttvar, rx_srtt int32 + rx_rto, rx_minrto uint32 + snd_wnd, rcv_wnd, rmt_wnd, cwnd, probe uint32 + interval, ts_flush uint32 + nodelay, updated uint32 + ts_probe, probe_wait uint32 + dead_link, incr uint32 + + fastresend int32 + nocwnd, stream int32 + + snd_queue []segment + rcv_queue []segment + snd_buf []segment + rcv_buf []segment + + acklist []ackItem + + buffer []byte + reserved int + output output_callback +} + +type ackItem struct { + sn uint32 + ts uint32 +} + +// NewKCP create a new kcp state machine +// +// 'conv' must be equal in the connection peers, or else data will be silently rejected. +// +// 'output' function will be called whenever these is data to be sent on wire. +func NewKCP(conv uint32, output output_callback) *KCP { + kcp := new(KCP) + kcp.conv = conv + kcp.snd_wnd = IKCP_WND_SND + kcp.rcv_wnd = IKCP_WND_RCV + kcp.rmt_wnd = IKCP_WND_RCV + kcp.mtu = IKCP_MTU_DEF + kcp.mss = kcp.mtu - IKCP_OVERHEAD + kcp.buffer = make([]byte, kcp.mtu) + kcp.rx_rto = IKCP_RTO_DEF + kcp.rx_minrto = IKCP_RTO_MIN + kcp.interval = IKCP_INTERVAL + kcp.ts_flush = IKCP_INTERVAL + kcp.ssthresh = IKCP_THRESH_INIT + kcp.dead_link = IKCP_DEADLINK + kcp.output = output + return kcp +} + +// newSegment creates a KCP segment +func (kcp *KCP) newSegment(size int) (seg segment) { + seg.data = xmitBuf.Get().([]byte)[:size] + return +} + +// delSegment recycles a KCP segment +func (kcp *KCP) delSegment(seg *segment) { + if seg.data != nil { + xmitBuf.Put(seg.data) + seg.data = nil + } +} + +// ReserveBytes keeps n bytes untouched from the beginning of the buffer, +// the output_callback function should be aware of this. +// +// Return false if n >= mss +func (kcp *KCP) ReserveBytes(n int) bool { + if n >= int(kcp.mtu-IKCP_OVERHEAD) || n < 0 { + return false + } + kcp.reserved = n + kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(n) + return true +} + +// PeekSize checks the size of next message in the recv queue +func (kcp *KCP) PeekSize() (length int) { + if len(kcp.rcv_queue) == 0 { + return -1 + } + + seg := &kcp.rcv_queue[0] + if seg.frg == 0 { + return len(seg.data) + } + + if len(kcp.rcv_queue) < int(seg.frg+1) { + return -1 + } + + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + length += len(seg.data) + if seg.frg == 0 { + break + } + } + return +} + +// Receive data from kcp state machine +// +// Return number of bytes read. +// +// Return -1 when there is no readable data. +// +// Return -2 if len(buffer) is smaller than kcp.PeekSize(). +func (kcp *KCP) Recv(buffer []byte) (n int) { + peeksize := kcp.PeekSize() + if peeksize < 0 { + return -1 + } + + if peeksize > len(buffer) { + return -2 + } + + var fast_recover bool + if len(kcp.rcv_queue) >= int(kcp.rcv_wnd) { + fast_recover = true + } + + // merge fragment + count := 0 + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + copy(buffer, seg.data) + buffer = buffer[len(seg.data):] + n += len(seg.data) + count++ + kcp.delSegment(seg) + if seg.frg == 0 { + break + } + } + if count > 0 { + kcp.rcv_queue = kcp.remove_front(kcp.rcv_queue, count) + } + + // move available data from rcv_buf -> rcv_queue + count = 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { + kcp.rcv_nxt++ + count++ + } else { + break + } + } + + if count > 0 { + kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) + kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) + } + + // fast recover + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) && fast_recover { + // ready to send back IKCP_CMD_WINS in ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } + return +} + +// Send is user/upper level send, returns below zero for error +func (kcp *KCP) Send(buffer []byte) int { + var count int + if len(buffer) == 0 { + return -1 + } + + // append to previous segment in streaming mode (if possible) + if kcp.stream != 0 { + n := len(kcp.snd_queue) + if n > 0 { + seg := &kcp.snd_queue[n-1] + if len(seg.data) < int(kcp.mss) { + capacity := int(kcp.mss) - len(seg.data) + extend := capacity + if len(buffer) < capacity { + extend = len(buffer) + } + + // grow slice, the underlying cap is guaranteed to + // be larger than kcp.mss + oldlen := len(seg.data) + seg.data = seg.data[:oldlen+extend] + copy(seg.data[oldlen:], buffer) + buffer = buffer[extend:] + } + } + + if len(buffer) == 0 { + return 0 + } + } + + if len(buffer) <= int(kcp.mss) { + count = 1 + } else { + count = (len(buffer) + int(kcp.mss) - 1) / int(kcp.mss) + } + + if count > 255 { + return -2 + } + + if count == 0 { + count = 1 + } + + for i := 0; i < count; i++ { + var size int + if len(buffer) > int(kcp.mss) { + size = int(kcp.mss) + } else { + size = len(buffer) + } + seg := kcp.newSegment(size) + copy(seg.data, buffer[:size]) + if kcp.stream == 0 { // message mode + seg.frg = uint8(count - i - 1) + } else { // stream mode + seg.frg = 0 + } + kcp.snd_queue = append(kcp.snd_queue, seg) + buffer = buffer[size:] + } + return 0 +} + +func (kcp *KCP) update_ack(rtt int32) { + // https://tools.ietf.org/html/rfc6298 + var rto uint32 + if kcp.rx_srtt == 0 { + kcp.rx_srtt = rtt + kcp.rx_rttvar = rtt >> 1 + } else { + delta := rtt - kcp.rx_srtt + kcp.rx_srtt += delta >> 3 + if delta < 0 { + delta = -delta + } + if rtt < kcp.rx_srtt-kcp.rx_rttvar { + // if the new RTT sample is below the bottom of the range of + // what an RTT measurement is expected to be. + // give an 8x reduced weight versus its normal weighting + kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 5 + } else { + kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 2 + } + } + rto = uint32(kcp.rx_srtt) + _imax_(kcp.interval, uint32(kcp.rx_rttvar)<<2) + kcp.rx_rto = _ibound_(kcp.rx_minrto, rto, IKCP_RTO_MAX) +} + +func (kcp *KCP) shrink_buf() { + if len(kcp.snd_buf) > 0 { + seg := &kcp.snd_buf[0] + kcp.snd_una = seg.sn + } else { + kcp.snd_una = kcp.snd_nxt + } +} + +func (kcp *KCP) parse_ack(sn uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if sn == seg.sn { + // mark and free space, but leave the segment here, + // and wait until `una` to delete this, then we don't + // have to shift the segments behind forward, + // which is an expensive operation for large window + seg.acked = 1 + kcp.delSegment(seg) + break + } + if _itimediff(sn, seg.sn) < 0 { + break + } + } +} + +func (kcp *KCP) parse_fastack(sn, ts uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(sn, seg.sn) < 0 { + break + } else if sn != seg.sn && _itimediff(seg.ts, ts) <= 0 { + seg.fastack++ + } + } +} + +func (kcp *KCP) parse_una(una uint32) { + count := 0 + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(una, seg.sn) > 0 { + kcp.delSegment(seg) + count++ + } else { + break + } + } + if count > 0 { + kcp.snd_buf = kcp.remove_front(kcp.snd_buf, count) + } +} + +// ack append +func (kcp *KCP) ack_push(sn, ts uint32) { + kcp.acklist = append(kcp.acklist, ackItem{sn, ts}) +} + +// returns true if data has repeated +func (kcp *KCP) parse_data(newseg segment) bool { + sn := newseg.sn + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) >= 0 || + _itimediff(sn, kcp.rcv_nxt) < 0 { + return true + } + + n := len(kcp.rcv_buf) - 1 + insert_idx := 0 + repeat := false + for i := n; i >= 0; i-- { + seg := &kcp.rcv_buf[i] + if seg.sn == sn { + repeat = true + break + } + if _itimediff(sn, seg.sn) > 0 { + insert_idx = i + 1 + break + } + } + + if !repeat { + // replicate the content if it's new + dataCopy := xmitBuf.Get().([]byte)[:len(newseg.data)] + copy(dataCopy, newseg.data) + newseg.data = dataCopy + + if insert_idx == n+1 { + kcp.rcv_buf = append(kcp.rcv_buf, newseg) + } else { + kcp.rcv_buf = append(kcp.rcv_buf, segment{}) + copy(kcp.rcv_buf[insert_idx+1:], kcp.rcv_buf[insert_idx:]) + kcp.rcv_buf[insert_idx] = newseg + } + } + + // move available data from rcv_buf -> rcv_queue + count := 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { + kcp.rcv_nxt++ + count++ + } else { + break + } + } + if count > 0 { + kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) + kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) + } + + return repeat +} + +// Input a packet into kcp state machine. +// +// 'regular' indicates it's a real data packet from remote, and it means it's not generated from ReedSolomon +// codecs. +// +// 'ackNoDelay' will trigger immediate ACK, but surely it will not be efficient in bandwidth +func (kcp *KCP) Input(data []byte, regular, ackNoDelay bool) int { + snd_una := kcp.snd_una + if len(data) < IKCP_OVERHEAD { + return -1 + } + + var latest uint32 // the latest ack packet + var flag int + var inSegs uint64 + + for { + var ts, sn, length, una, conv uint32 + var wnd uint16 + var cmd, frg uint8 + + if len(data) < int(IKCP_OVERHEAD) { + break + } + + data = ikcp_decode32u(data, &conv) + if conv != kcp.conv { + return -1 + } + + data = ikcp_decode8u(data, &cmd) + data = ikcp_decode8u(data, &frg) + data = ikcp_decode16u(data, &wnd) + data = ikcp_decode32u(data, &ts) + data = ikcp_decode32u(data, &sn) + data = ikcp_decode32u(data, &una) + data = ikcp_decode32u(data, &length) + if len(data) < int(length) { + return -2 + } + + if cmd != IKCP_CMD_PUSH && cmd != IKCP_CMD_ACK && + cmd != IKCP_CMD_WASK && cmd != IKCP_CMD_WINS { + return -3 + } + + // only trust window updates from regular packets. i.e: latest update + if regular { + kcp.rmt_wnd = uint32(wnd) + } + kcp.parse_una(una) + kcp.shrink_buf() + + if cmd == IKCP_CMD_ACK { + kcp.parse_ack(sn) + kcp.parse_fastack(sn, ts) + flag |= 1 + latest = ts + } else if cmd == IKCP_CMD_PUSH { + repeat := true + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) < 0 { + kcp.ack_push(sn, ts) + if _itimediff(sn, kcp.rcv_nxt) >= 0 { + var seg segment + seg.conv = conv + seg.cmd = cmd + seg.frg = frg + seg.wnd = wnd + seg.ts = ts + seg.sn = sn + seg.una = una + seg.data = data[:length] // delayed data copying + repeat = kcp.parse_data(seg) + } + } + if regular && repeat { + atomic.AddUint64(&DefaultSnmp.RepeatSegs, 1) + } + } else if cmd == IKCP_CMD_WASK { + // ready to send back IKCP_CMD_WINS in Ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } else if cmd == IKCP_CMD_WINS { + // do nothing + } else { + return -3 + } + + inSegs++ + data = data[length:] + } + atomic.AddUint64(&DefaultSnmp.InSegs, inSegs) + + // update rtt with the latest ts + // ignore the FEC packet + if flag != 0 && regular { + current := currentMs() + if _itimediff(current, latest) >= 0 { + kcp.update_ack(_itimediff(current, latest)) + } + } + + // cwnd update when packet arrived + if kcp.nocwnd == 0 { + if _itimediff(kcp.snd_una, snd_una) > 0 { + if kcp.cwnd < kcp.rmt_wnd { + mss := kcp.mss + if kcp.cwnd < kcp.ssthresh { + kcp.cwnd++ + kcp.incr += mss + } else { + if kcp.incr < mss { + kcp.incr = mss + } + kcp.incr += (mss*mss)/kcp.incr + (mss / 16) + if (kcp.cwnd+1)*mss <= kcp.incr { + kcp.cwnd++ + } + } + if kcp.cwnd > kcp.rmt_wnd { + kcp.cwnd = kcp.rmt_wnd + kcp.incr = kcp.rmt_wnd * mss + } + } + } + } + + if ackNoDelay && len(kcp.acklist) > 0 { // ack immediately + kcp.flush(true) + } + return 0 +} + +func (kcp *KCP) wnd_unused() uint16 { + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) { + return uint16(int(kcp.rcv_wnd) - len(kcp.rcv_queue)) + } + return 0 +} + +// flush pending data +func (kcp *KCP) flush(ackOnly bool) uint32 { + var seg segment + seg.conv = kcp.conv + seg.cmd = IKCP_CMD_ACK + seg.wnd = kcp.wnd_unused() + seg.una = kcp.rcv_nxt + + buffer := kcp.buffer + ptr := buffer[kcp.reserved:] // keep n bytes untouched + + // makeSpace makes room for writing + makeSpace := func(space int) { + size := len(buffer) - len(ptr) + if size+space > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer[kcp.reserved:] + } + } + + // flush bytes in buffer if there is any + flushBuffer := func() { + size := len(buffer) - len(ptr) + if size > kcp.reserved { + kcp.output(buffer, size) + } + } + + // flush acknowledges + for i, ack := range kcp.acklist { + makeSpace(IKCP_OVERHEAD) + // filter jitters caused by bufferbloat + if ack.sn >= kcp.rcv_nxt || len(kcp.acklist)-1 == i { + seg.sn, seg.ts = ack.sn, ack.ts + ptr = seg.encode(ptr) + } + } + kcp.acklist = kcp.acklist[0:0] + + if ackOnly { // flash remain ack segments + flushBuffer() + return kcp.interval + } + + // probe window size (if remote window size equals zero) + if kcp.rmt_wnd == 0 { + current := currentMs() + if kcp.probe_wait == 0 { + kcp.probe_wait = IKCP_PROBE_INIT + kcp.ts_probe = current + kcp.probe_wait + } else { + if _itimediff(current, kcp.ts_probe) >= 0 { + if kcp.probe_wait < IKCP_PROBE_INIT { + kcp.probe_wait = IKCP_PROBE_INIT + } + kcp.probe_wait += kcp.probe_wait / 2 + if kcp.probe_wait > IKCP_PROBE_LIMIT { + kcp.probe_wait = IKCP_PROBE_LIMIT + } + kcp.ts_probe = current + kcp.probe_wait + kcp.probe |= IKCP_ASK_SEND + } + } + } else { + kcp.ts_probe = 0 + kcp.probe_wait = 0 + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_SEND) != 0 { + seg.cmd = IKCP_CMD_WASK + makeSpace(IKCP_OVERHEAD) + ptr = seg.encode(ptr) + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_TELL) != 0 { + seg.cmd = IKCP_CMD_WINS + makeSpace(IKCP_OVERHEAD) + ptr = seg.encode(ptr) + } + + kcp.probe = 0 + + // calculate window size + cwnd := _imin_(kcp.snd_wnd, kcp.rmt_wnd) + if kcp.nocwnd == 0 { + cwnd = _imin_(kcp.cwnd, cwnd) + } + + // sliding window, controlled by snd_nxt && sna_una+cwnd + newSegsCount := 0 + for k := range kcp.snd_queue { + if _itimediff(kcp.snd_nxt, kcp.snd_una+cwnd) >= 0 { + break + } + newseg := kcp.snd_queue[k] + newseg.conv = kcp.conv + newseg.cmd = IKCP_CMD_PUSH + newseg.sn = kcp.snd_nxt + kcp.snd_buf = append(kcp.snd_buf, newseg) + kcp.snd_nxt++ + newSegsCount++ + } + if newSegsCount > 0 { + kcp.snd_queue = kcp.remove_front(kcp.snd_queue, newSegsCount) + } + + // calculate resent + resent := uint32(kcp.fastresend) + if kcp.fastresend <= 0 { + resent = 0xffffffff + } + + // check for retransmissions + current := currentMs() + var change, lostSegs, fastRetransSegs, earlyRetransSegs uint64 + minrto := int32(kcp.interval) + + ref := kcp.snd_buf[:len(kcp.snd_buf)] // for bounds check elimination + for k := range ref { + segment := &ref[k] + needsend := false + if segment.acked == 1 { + continue + } + if segment.xmit == 0 { // initial transmit + needsend = true + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + } else if segment.fastack >= resent { // fast retransmit + needsend = true + segment.fastack = 0 + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + change++ + fastRetransSegs++ + } else if segment.fastack > 0 && newSegsCount == 0 { // early retransmit + needsend = true + segment.fastack = 0 + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + change++ + earlyRetransSegs++ + } else if _itimediff(current, segment.resendts) >= 0 { // RTO + needsend = true + if kcp.nodelay == 0 { + segment.rto += kcp.rx_rto + } else { + segment.rto += kcp.rx_rto / 2 + } + segment.fastack = 0 + segment.resendts = current + segment.rto + lostSegs++ + } + + if needsend { + current = currentMs() + segment.xmit++ + segment.ts = current + segment.wnd = seg.wnd + segment.una = seg.una + + need := IKCP_OVERHEAD + len(segment.data) + makeSpace(need) + ptr = segment.encode(ptr) + copy(ptr, segment.data) + ptr = ptr[len(segment.data):] + + if segment.xmit >= kcp.dead_link { + kcp.state = 0xFFFFFFFF + } + } + + // get the nearest rto + if rto := _itimediff(segment.resendts, current); rto > 0 && rto < minrto { + minrto = rto + } + } + + // flash remain segments + flushBuffer() + + // counter updates + sum := lostSegs + if lostSegs > 0 { + atomic.AddUint64(&DefaultSnmp.LostSegs, lostSegs) + } + if fastRetransSegs > 0 { + atomic.AddUint64(&DefaultSnmp.FastRetransSegs, fastRetransSegs) + sum += fastRetransSegs + } + if earlyRetransSegs > 0 { + atomic.AddUint64(&DefaultSnmp.EarlyRetransSegs, earlyRetransSegs) + sum += earlyRetransSegs + } + if sum > 0 { + atomic.AddUint64(&DefaultSnmp.RetransSegs, sum) + } + + // cwnd update + if kcp.nocwnd == 0 { + // update ssthresh + // rate halving, https://tools.ietf.org/html/rfc6937 + if change > 0 { + inflight := kcp.snd_nxt - kcp.snd_una + kcp.ssthresh = inflight / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = kcp.ssthresh + resent + kcp.incr = kcp.cwnd * kcp.mss + } + + // congestion control, https://tools.ietf.org/html/rfc5681 + if lostSegs > 0 { + kcp.ssthresh = cwnd / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = 1 + kcp.incr = kcp.mss + } + + if kcp.cwnd < 1 { + kcp.cwnd = 1 + kcp.incr = kcp.mss + } + } + + return uint32(minrto) +} + +// (deprecated) +// +// Update updates state (call it repeatedly, every 10ms-100ms), or you can ask +// ikcp_check when to call it again (without ikcp_input/_send calling). +// 'current' - current timestamp in millisec. +func (kcp *KCP) Update() { + var slap int32 + + current := currentMs() + if kcp.updated == 0 { + kcp.updated = 1 + kcp.ts_flush = current + } + + slap = _itimediff(current, kcp.ts_flush) + + if slap >= 10000 || slap < -10000 { + kcp.ts_flush = current + slap = 0 + } + + if slap >= 0 { + kcp.ts_flush += kcp.interval + if _itimediff(current, kcp.ts_flush) >= 0 { + kcp.ts_flush = current + kcp.interval + } + kcp.flush(false) + } +} + +// (deprecated) +// +// Check determines when should you invoke ikcp_update: +// returns when you should invoke ikcp_update in millisec, if there +// is no ikcp_input/_send calling. you can call ikcp_update in that +// time, instead of call update repeatly. +// Important to reduce unnacessary ikcp_update invoking. use it to +// schedule ikcp_update (eg. implementing an epoll-like mechanism, +// or optimize ikcp_update when handling massive kcp connections) +func (kcp *KCP) Check() uint32 { + current := currentMs() + ts_flush := kcp.ts_flush + tm_flush := int32(0x7fffffff) + tm_packet := int32(0x7fffffff) + minimal := uint32(0) + if kcp.updated == 0 { + return current + } + + if _itimediff(current, ts_flush) >= 10000 || + _itimediff(current, ts_flush) < -10000 { + ts_flush = current + } + + if _itimediff(current, ts_flush) >= 0 { + return current + } + + tm_flush = _itimediff(ts_flush, current) + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + diff := _itimediff(seg.resendts, current) + if diff <= 0 { + return current + } + if diff < tm_packet { + tm_packet = diff + } + } + + minimal = uint32(tm_packet) + if tm_packet >= tm_flush { + minimal = uint32(tm_flush) + } + if minimal >= kcp.interval { + minimal = kcp.interval + } + + return current + minimal +} + +// SetMtu changes MTU size, default is 1400 +func (kcp *KCP) SetMtu(mtu int) int { + if mtu < 50 || mtu < IKCP_OVERHEAD { + return -1 + } + if kcp.reserved >= int(kcp.mtu-IKCP_OVERHEAD) || kcp.reserved < 0 { + return -1 + } + + buffer := make([]byte, mtu) + if buffer == nil { + return -2 + } + kcp.mtu = uint32(mtu) + kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(kcp.reserved) + kcp.buffer = buffer + return 0 +} + +// NoDelay options +// fastest: ikcp_nodelay(kcp, 1, 20, 2, 1) +// nodelay: 0:disable(default), 1:enable +// interval: internal update timer interval in millisec, default is 100ms +// resend: 0:disable fast resend(default), 1:enable fast resend +// nc: 0:normal congestion control(default), 1:disable congestion control +func (kcp *KCP) NoDelay(nodelay, interval, resend, nc int) int { + if nodelay >= 0 { + kcp.nodelay = uint32(nodelay) + if nodelay != 0 { + kcp.rx_minrto = IKCP_RTO_NDL + } else { + kcp.rx_minrto = IKCP_RTO_MIN + } + } + if interval >= 0 { + if interval > 5000 { + interval = 5000 + } else if interval < 10 { + interval = 10 + } + kcp.interval = uint32(interval) + } + if resend >= 0 { + kcp.fastresend = int32(resend) + } + if nc >= 0 { + kcp.nocwnd = int32(nc) + } + return 0 +} + +// WndSize sets maximum window size: sndwnd=32, rcvwnd=32 by default +func (kcp *KCP) WndSize(sndwnd, rcvwnd int) int { + if sndwnd > 0 { + kcp.snd_wnd = uint32(sndwnd) + } + if rcvwnd > 0 { + kcp.rcv_wnd = uint32(rcvwnd) + } + return 0 +} + +// WaitSnd gets how many packet is waiting to be sent +func (kcp *KCP) WaitSnd() int { + return len(kcp.snd_buf) + len(kcp.snd_queue) +} + +// remove front n elements from queue +// if the number of elements to remove is more than half of the size. +// just shift the rear elements to front, otherwise just reslice q to q[n:] +// then the cost of runtime.growslice can always be less than n/2 +func (kcp *KCP) remove_front(q []segment, n int) []segment { + if n > cap(q)/2 { + newn := copy(q, q[n:]) + return q[:newn] + } + return q[n:] +} + +// Release all cached outgoing segments +func (kcp *KCP) ReleaseTX() { + for k := range kcp.snd_queue { + if kcp.snd_queue[k].data != nil { + xmitBuf.Put(kcp.snd_queue[k].data) + } + } + for k := range kcp.snd_buf { + if kcp.snd_buf[k].data != nil { + xmitBuf.Put(kcp.snd_buf[k].data) + } + } + kcp.snd_queue = nil + kcp.snd_buf = nil +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop.go b/vendor/github.com/xtaci/kcp-go/readloop.go new file mode 100644 index 0000000..bc48e84 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop.go @@ -0,0 +1,48 @@ +package kcp + +import ( + "sync/atomic" + + "github.com/pkg/errors" +) + +func (s *UDPSession) defaultReadLoop() { + buf := make([]byte, mtuLimit) + var src string + for { + if n, addr, err := s.conn.ReadFrom(buf); err == nil { + // make sure the packet is from the same source + if src == "" { // set source address + src = addr.String() + } else if addr.String() != src { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + if n >= s.headerSize+IKCP_OVERHEAD { + s.packetInput(buf[:n]) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + s.notifyReadError(errors.WithStack(err)) + return + } + } +} + +func (l *Listener) defaultMonitor() { + buf := make([]byte, mtuLimit) + for { + if n, from, err := l.conn.ReadFrom(buf); err == nil { + if n >= l.headerSize+IKCP_OVERHEAD { + l.packetInput(buf[:n], from) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + l.notifyReadError(errors.WithStack(err)) + return + } + } +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_generic.go b/vendor/github.com/xtaci/kcp-go/readloop_generic.go new file mode 100644 index 0000000..5dbe4f4 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop_generic.go @@ -0,0 +1,11 @@ +// +build !linux + +package kcp + +func (s *UDPSession) readLoop() { + s.defaultReadLoop() +} + +func (l *Listener) monitor() { + l.defaultMonitor() +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_linux.go b/vendor/github.com/xtaci/kcp-go/readloop_linux.go new file mode 100644 index 0000000..6226478 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop_linux.go @@ -0,0 +1,120 @@ +// +build linux + +package kcp + +import ( + "net" + "os" + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" +) + +// the read loop for a client session +func (s *UDPSession) readLoop() { + // default version + if s.xconn == nil { + s.defaultReadLoop() + return + } + + // x/net version + var src string + msgs := make([]ipv4.Message, batchSize) + for k := range msgs { + msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} + } + + for { + if count, err := s.xconn.ReadBatch(msgs, 0); err == nil { + for i := 0; i < count; i++ { + msg := &msgs[i] + // make sure the packet is from the same source + if src == "" { // set source address if nil + src = msg.Addr.String() + } else if msg.Addr.String() != src { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + if msg.N < s.headerSize+IKCP_OVERHEAD { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + // source and size has validated + s.packetInput(msg.Buffers[0][:msg.N]) + } + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "recvmmsg" { + s.defaultReadLoop() + return + } + } + } + s.notifyReadError(errors.WithStack(err)) + return + } + } +} + +// monitor incoming data for all connections of server +func (l *Listener) monitor() { + var xconn batchConn + if _, ok := l.conn.(*net.UDPConn); ok { + addr, err := net.ResolveUDPAddr("udp", l.conn.LocalAddr().String()) + if err == nil { + if addr.IP.To4() != nil { + xconn = ipv4.NewPacketConn(l.conn) + } else { + xconn = ipv6.NewPacketConn(l.conn) + } + } + } + + // default version + if xconn == nil { + l.defaultMonitor() + return + } + + // x/net version + msgs := make([]ipv4.Message, batchSize) + for k := range msgs { + msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} + } + + for { + if count, err := xconn.ReadBatch(msgs, 0); err == nil { + for i := 0; i < count; i++ { + msg := &msgs[i] + if msg.N >= l.headerSize+IKCP_OVERHEAD { + l.packetInput(msg.Buffers[0][:msg.N], msg.Addr) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "recvmmsg" { + l.defaultMonitor() + return + } + } + } + l.notifyReadError(errors.WithStack(err)) + return + } + } +} diff --git a/vendor/github.com/xtaci/kcp-go/sess.go b/vendor/github.com/xtaci/kcp-go/sess.go new file mode 100644 index 0000000..13a1a5c --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/sess.go @@ -0,0 +1,1047 @@ +// Package kcp-go is a Reliable-UDP library for golang. +// +// This library intents to provide a smooth, resilient, ordered, +// error-checked and anonymous delivery of streams over UDP packets. +// +// The interfaces of this package aims to be compatible with +// net.Conn in standard library, but offers powerful features for advanced users. +package kcp + +import ( + "crypto/rand" + "encoding/binary" + "hash/crc32" + "io" + "net" + "sync" + "sync/atomic" + "time" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" +) + +const ( + // 16-bytes nonce for each packet + nonceSize = 16 + + // 4-bytes packet checksum + crcSize = 4 + + // overall crypto header size + cryptHeaderSize = nonceSize + crcSize + + // maximum packet size + mtuLimit = 1500 + + // FEC keeps rxFECMulti* (dataShard+parityShard) ordered packets in memory + rxFECMulti = 3 + + // accept backlog + acceptBacklog = 128 +) + +var ( + errInvalidOperation = errors.New("invalid operation") + errTimeout = errors.New("timeout") +) + +var ( + // a system-wide packet buffer shared among sending, receiving and FEC + // to mitigate high-frequency memory allocation for packets + xmitBuf sync.Pool +) + +func init() { + xmitBuf.New = func() interface{} { + return make([]byte, mtuLimit) + } +} + +type ( + // UDPSession defines a KCP session implemented by UDP + UDPSession struct { + conn net.PacketConn // the underlying packet connection + kcp *KCP // KCP ARQ protocol + l *Listener // pointing to the Listener object if it's been accepted by a Listener + block BlockCrypt // block encryption object + + // kcp receiving is based on packets + // recvbuf turns packets into stream + recvbuf []byte + bufptr []byte + + // FEC codec + fecDecoder *fecDecoder + fecEncoder *fecEncoder + + // settings + remote net.Addr // remote peer address + rd time.Time // read deadline + wd time.Time // write deadline + headerSize int // the header size additional to a KCP frame + ackNoDelay bool // send ack immediately for each incoming packet(testing purpose) + writeDelay bool // delay kcp.flush() for Write() for bulk transfer + dup int // duplicate udp packets(testing purpose) + + // notifications + die chan struct{} // notify current session has Closed + dieOnce sync.Once + chReadEvent chan struct{} // notify Read() can be called without blocking + chWriteEvent chan struct{} // notify Write() can be called without blocking + + // socket error handling + socketReadError atomic.Value + socketWriteError atomic.Value + chSocketReadError chan struct{} + chSocketWriteError chan struct{} + socketReadErrorOnce sync.Once + socketWriteErrorOnce sync.Once + + // nonce generator + nonce Entropy + + // packets waiting to be sent on wire + txqueue []ipv4.Message + xconn batchConn // for x/net + xconnWriteError error + + mu sync.Mutex + } + + setReadBuffer interface { + SetReadBuffer(bytes int) error + } + + setWriteBuffer interface { + SetWriteBuffer(bytes int) error + } + + setDSCP interface { + SetDSCP(int) error + } +) + +// newUDPSession create a new udp session for client or server +func newUDPSession(conv uint32, dataShards, parityShards int, l *Listener, conn net.PacketConn, remote net.Addr, block BlockCrypt) *UDPSession { + sess := new(UDPSession) + sess.die = make(chan struct{}) + sess.nonce = new(nonceAES128) + sess.nonce.Init() + sess.chReadEvent = make(chan struct{}, 1) + sess.chWriteEvent = make(chan struct{}, 1) + sess.chSocketReadError = make(chan struct{}) + sess.chSocketWriteError = make(chan struct{}) + sess.remote = remote + sess.conn = conn + sess.l = l + sess.block = block + sess.recvbuf = make([]byte, mtuLimit) + + // cast to writebatch conn + if _, ok := conn.(*net.UDPConn); ok { + addr, err := net.ResolveUDPAddr("udp", conn.LocalAddr().String()) + if err == nil { + if addr.IP.To4() != nil { + sess.xconn = ipv4.NewPacketConn(conn) + } else { + sess.xconn = ipv6.NewPacketConn(conn) + } + } + } + + // FEC codec initialization + sess.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) + if sess.block != nil { + sess.fecEncoder = newFECEncoder(dataShards, parityShards, cryptHeaderSize) + } else { + sess.fecEncoder = newFECEncoder(dataShards, parityShards, 0) + } + + // calculate additional header size introduced by FEC and encryption + if sess.block != nil { + sess.headerSize += cryptHeaderSize + } + if sess.fecEncoder != nil { + sess.headerSize += fecHeaderSizePlus2 + } + + sess.kcp = NewKCP(conv, func(buf []byte, size int) { + if size >= IKCP_OVERHEAD+sess.headerSize { + sess.output(buf[:size]) + } + }) + sess.kcp.ReserveBytes(sess.headerSize) + + if sess.l == nil { // it's a client connection + go sess.readLoop() + atomic.AddUint64(&DefaultSnmp.ActiveOpens, 1) + } else { + atomic.AddUint64(&DefaultSnmp.PassiveOpens, 1) + } + + // start per-session updater + go sess.updater() + + currestab := atomic.AddUint64(&DefaultSnmp.CurrEstab, 1) + maxconn := atomic.LoadUint64(&DefaultSnmp.MaxConn) + if currestab > maxconn { + atomic.CompareAndSwapUint64(&DefaultSnmp.MaxConn, maxconn, currestab) + } + + return sess +} + +// Read implements net.Conn +func (s *UDPSession) Read(b []byte) (n int, err error) { + for { + s.mu.Lock() + if len(s.bufptr) > 0 { // copy from buffer into b + n = copy(b, s.bufptr) + s.bufptr = s.bufptr[n:] + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) + return n, nil + } + + if size := s.kcp.PeekSize(); size > 0 { // peek data size from kcp + if len(b) >= size { // receive data into 'b' directly + s.kcp.Recv(b) + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(size)) + return size, nil + } + + // if necessary resize the stream buffer to guarantee a sufficent buffer space + if cap(s.recvbuf) < size { + s.recvbuf = make([]byte, size) + } + + // resize the length of recvbuf to correspond to data size + s.recvbuf = s.recvbuf[:size] + s.kcp.Recv(s.recvbuf) + n = copy(b, s.recvbuf) // copy to 'b' + s.bufptr = s.recvbuf[n:] // pointer update + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) + return n, nil + } + + // deadline for current reading operation + var timeout *time.Timer + var c <-chan time.Time + if !s.rd.IsZero() { + if time.Now().After(s.rd) { + s.mu.Unlock() + return 0, errors.WithStack(errTimeout) + } + + delay := s.rd.Sub(time.Now()) + timeout = time.NewTimer(delay) + c = timeout.C + } + s.mu.Unlock() + + // wait for read event or timeout or error + select { + case <-s.chReadEvent: + if timeout != nil { + timeout.Stop() + } + case <-c: + return 0, errors.WithStack(errTimeout) + case <-s.chSocketReadError: + return 0, s.socketReadError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + } + } +} + +// Write implements net.Conn +func (s *UDPSession) Write(b []byte) (n int, err error) { return s.WriteBuffers([][]byte{b}) } + +// WriteBuffers write a vector of byte slices to the underlying connection +func (s *UDPSession) WriteBuffers(v [][]byte) (n int, err error) { + for { + select { + case <-s.chSocketWriteError: + return 0, s.socketWriteError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + default: + } + + s.mu.Lock() + + // make sure write do not overflow the max sliding window on both side + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + for _, b := range v { + n += len(b) + for { + if len(b) <= int(s.kcp.mss) { + s.kcp.Send(b) + break + } else { + s.kcp.Send(b[:s.kcp.mss]) + b = b[s.kcp.mss:] + } + } + } + + waitsnd = s.kcp.WaitSnd() + if waitsnd >= int(s.kcp.snd_wnd) || waitsnd >= int(s.kcp.rmt_wnd) || !s.writeDelay { + s.kcp.flush(false) + s.uncork() + } + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesSent, uint64(n)) + return n, nil + } + + var timeout *time.Timer + var c <-chan time.Time + if !s.wd.IsZero() { + if time.Now().After(s.wd) { + s.mu.Unlock() + return 0, errors.WithStack(errTimeout) + } + delay := s.wd.Sub(time.Now()) + timeout = time.NewTimer(delay) + c = timeout.C + } + s.mu.Unlock() + + select { + case <-s.chWriteEvent: + if timeout != nil { + timeout.Stop() + } + case <-c: + return 0, errors.WithStack(errTimeout) + case <-s.chSocketWriteError: + return 0, s.socketWriteError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + } + } +} + +// uncork sends data in txqueue if there is any +func (s *UDPSession) uncork() { + if len(s.txqueue) > 0 { + s.tx(s.txqueue) + // recycle + for k := range s.txqueue { + xmitBuf.Put(s.txqueue[k].Buffers[0]) + s.txqueue[k].Buffers = nil + } + s.txqueue = s.txqueue[:0] + } + return +} + +// Close closes the connection. +func (s *UDPSession) Close() error { + var once bool + s.dieOnce.Do(func() { + close(s.die) + once = true + }) + + if once { + atomic.AddUint64(&DefaultSnmp.CurrEstab, ^uint64(0)) + + // try best to send all queued messages + s.mu.Lock() + s.kcp.flush(false) + s.uncork() + // release pending segments + s.kcp.ReleaseTX() + if s.fecDecoder != nil { + s.fecDecoder.release() + } + s.mu.Unlock() + + if s.l != nil { // belongs to listener + s.l.closeSession(s.remote) + return nil + } else { // client socket close + return s.conn.Close() + } + } else { + return errors.WithStack(io.ErrClosedPipe) + } +} + +// LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it. +func (s *UDPSession) LocalAddr() net.Addr { return s.conn.LocalAddr() } + +// RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it. +func (s *UDPSession) RemoteAddr() net.Addr { return s.remote } + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (s *UDPSession) SetDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + s.wd = t + s.notifyReadEvent() + s.notifyWriteEvent() + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (s *UDPSession) SetReadDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + s.notifyReadEvent() + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (s *UDPSession) SetWriteDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.wd = t + s.notifyWriteEvent() + return nil +} + +// SetWriteDelay delays write for bulk transfer until the next update interval +func (s *UDPSession) SetWriteDelay(delay bool) { + s.mu.Lock() + defer s.mu.Unlock() + s.writeDelay = delay +} + +// SetWindowSize set maximum window size +func (s *UDPSession) SetWindowSize(sndwnd, rcvwnd int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.WndSize(sndwnd, rcvwnd) +} + +// SetMtu sets the maximum transmission unit(not including UDP header) +func (s *UDPSession) SetMtu(mtu int) bool { + if mtu > mtuLimit { + return false + } + + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.SetMtu(mtu) + return true +} + +// SetStreamMode toggles the stream mode on/off +func (s *UDPSession) SetStreamMode(enable bool) { + s.mu.Lock() + defer s.mu.Unlock() + if enable { + s.kcp.stream = 1 + } else { + s.kcp.stream = 0 + } +} + +// SetACKNoDelay changes ack flush option, set true to flush ack immediately, +func (s *UDPSession) SetACKNoDelay(nodelay bool) { + s.mu.Lock() + defer s.mu.Unlock() + s.ackNoDelay = nodelay +} + +// (deprecated) +// +// SetDUP duplicates udp packets for kcp output. +func (s *UDPSession) SetDUP(dup int) { + s.mu.Lock() + defer s.mu.Unlock() + s.dup = dup +} + +// SetNoDelay calls nodelay() of kcp +// https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration +func (s *UDPSession) SetNoDelay(nodelay, interval, resend, nc int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.NoDelay(nodelay, interval, resend, nc) +} + +// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. +// +// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke +// this function instead. +// +// It has no effect if it's accepted from Listener. +func (s *UDPSession) SetDSCP(dscp int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l != nil { + return errInvalidOperation + } + + // interface enabled + if ts, ok := s.conn.(setDSCP); ok { + return ts.SetDSCP(dscp) + } + + if nc, ok := s.conn.(net.Conn); ok { + var succeed bool + if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { + succeed = true + } + if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { + succeed = true + } + + if succeed { + return nil + } + } + return errInvalidOperation +} + +// SetReadBuffer sets the socket read buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetReadBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + } + return errInvalidOperation +} + +// SetWriteBuffer sets the socket write buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetWriteBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + } + return errInvalidOperation +} + +// post-processing for sending a packet from kcp core +// steps: +// 1. FEC packet generation +// 2. CRC32 integrity +// 3. Encryption +// 4. TxQueue +func (s *UDPSession) output(buf []byte) { + var ecc [][]byte + + // 1. FEC encoding + if s.fecEncoder != nil { + ecc = s.fecEncoder.encode(buf) + } + + // 2&3. crc32 & encryption + if s.block != nil { + s.nonce.Fill(buf[:nonceSize]) + checksum := crc32.ChecksumIEEE(buf[cryptHeaderSize:]) + binary.LittleEndian.PutUint32(buf[nonceSize:], checksum) + s.block.Encrypt(buf, buf) + + for k := range ecc { + s.nonce.Fill(ecc[k][:nonceSize]) + checksum := crc32.ChecksumIEEE(ecc[k][cryptHeaderSize:]) + binary.LittleEndian.PutUint32(ecc[k][nonceSize:], checksum) + s.block.Encrypt(ecc[k], ecc[k]) + } + } + + // 4. TxQueue + var msg ipv4.Message + for i := 0; i < s.dup+1; i++ { + bts := xmitBuf.Get().([]byte)[:len(buf)] + copy(bts, buf) + msg.Buffers = [][]byte{bts} + msg.Addr = s.remote + s.txqueue = append(s.txqueue, msg) + } + + for k := range ecc { + bts := xmitBuf.Get().([]byte)[:len(ecc[k])] + copy(bts, ecc[k]) + msg.Buffers = [][]byte{bts} + msg.Addr = s.remote + s.txqueue = append(s.txqueue, msg) + } +} + +// sess updater to trigger protocol +func (s *UDPSession) updater() { + timer := time.NewTimer(0) + for { + select { + case <-timer.C: + s.mu.Lock() + interval := time.Duration(s.kcp.flush(false)) * time.Millisecond + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + s.uncork() + s.mu.Unlock() + timer.Reset(interval) + case <-s.die: + timer.Stop() + return + } + } +} + +// GetConv gets conversation id of a session +func (s *UDPSession) GetConv() uint32 { return s.kcp.conv } + +func (s *UDPSession) notifyReadEvent() { + select { + case s.chReadEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) notifyWriteEvent() { + select { + case s.chWriteEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) notifyReadError(err error) { + s.socketReadErrorOnce.Do(func() { + s.socketReadError.Store(err) + close(s.chSocketReadError) + }) +} + +func (s *UDPSession) notifyWriteError(err error) { + s.socketWriteErrorOnce.Do(func() { + s.socketWriteError.Store(err) + close(s.chSocketWriteError) + }) +} + +// packet input stage +func (s *UDPSession) packetInput(data []byte) { + dataValid := false + if s.block != nil { + s.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if s.block == nil { + dataValid = true + } + + if dataValid { + s.kcpInput(data) + } +} + +func (s *UDPSession) kcpInput(data []byte) { + var kcpInErrors, fecErrs, fecRecovered, fecParityShards uint64 + + if s.fecDecoder != nil { + if len(data) > fecHeaderSize { // must be larger than fec header size + f := fecPacket(data) + if f.flag() == typeData || f.flag() == typeParity { // header check + if f.flag() == typeParity { + fecParityShards++ + } + + // lock + s.mu.Lock() + recovers := s.fecDecoder.decode(f) + if f.flag() == typeData { + if ret := s.kcp.Input(data[fecHeaderSizePlus2:], true, s.ackNoDelay); ret != 0 { + kcpInErrors++ + } + } + + for _, r := range recovers { + if len(r) >= 2 { // must be larger than 2bytes + sz := binary.LittleEndian.Uint16(r) + if int(sz) <= len(r) && sz >= 2 { + if ret := s.kcp.Input(r[2:sz], false, s.ackNoDelay); ret == 0 { + fecRecovered++ + } else { + kcpInErrors++ + } + } else { + fecErrs++ + } + } else { + fecErrs++ + } + // recycle the recovers + xmitBuf.Put(r) + } + + // to notify the readers to receive the data + if n := s.kcp.PeekSize(); n > 0 { + s.notifyReadEvent() + } + // to notify the writers + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + + s.uncork() + s.mu.Unlock() + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + s.mu.Lock() + if ret := s.kcp.Input(data, true, s.ackNoDelay); ret != 0 { + kcpInErrors++ + } + if n := s.kcp.PeekSize(); n > 0 { + s.notifyReadEvent() + } + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + s.uncork() + s.mu.Unlock() + } + + atomic.AddUint64(&DefaultSnmp.InPkts, 1) + atomic.AddUint64(&DefaultSnmp.InBytes, uint64(len(data))) + if fecParityShards > 0 { + atomic.AddUint64(&DefaultSnmp.FECParityShards, fecParityShards) + } + if kcpInErrors > 0 { + atomic.AddUint64(&DefaultSnmp.KCPInErrors, kcpInErrors) + } + if fecErrs > 0 { + atomic.AddUint64(&DefaultSnmp.FECErrs, fecErrs) + } + if fecRecovered > 0 { + atomic.AddUint64(&DefaultSnmp.FECRecovered, fecRecovered) + } + +} + +type ( + // Listener defines a server which will be waiting to accept incoming connections + Listener struct { + block BlockCrypt // block encryption + dataShards int // FEC data shard + parityShards int // FEC parity shard + fecDecoder *fecDecoder // FEC mock initialization + conn net.PacketConn // the underlying packet connection + + sessions map[string]*UDPSession // all sessions accepted by this Listener + sessionLock sync.Mutex + chAccepts chan *UDPSession // Listen() backlog + chSessionClosed chan net.Addr // session close queue + headerSize int // the additional header to a KCP frame + + die chan struct{} // notify the listener has closed + dieOnce sync.Once + + // socket error handling + socketReadError atomic.Value + chSocketReadError chan struct{} + socketReadErrorOnce sync.Once + + rd atomic.Value // read deadline for Accept() + } +) + +// packet input stage +func (l *Listener) packetInput(data []byte, addr net.Addr) { + dataValid := false + if l.block != nil { + l.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if l.block == nil { + dataValid = true + } + + if dataValid { + l.sessionLock.Lock() + s, ok := l.sessions[addr.String()] + l.sessionLock.Unlock() + + if !ok { // new address:port + if len(l.chAccepts) < cap(l.chAccepts) { // do not let the new sessions overwhelm accept queue + var conv uint32 + convValid := false + if l.fecDecoder != nil { + isfec := binary.LittleEndian.Uint16(data[4:]) + if isfec == typeData { + conv = binary.LittleEndian.Uint32(data[fecHeaderSizePlus2:]) + convValid = true + } + } else { + conv = binary.LittleEndian.Uint32(data) + convValid = true + } + + if convValid { // creates a new session only if the 'conv' field in kcp is accessible + s := newUDPSession(conv, l.dataShards, l.parityShards, l, l.conn, addr, l.block) + s.kcpInput(data) + l.sessionLock.Lock() + l.sessions[addr.String()] = s + l.sessionLock.Unlock() + l.chAccepts <- s + } + } + } else { + s.kcpInput(data) + } + } +} + +func (l *Listener) notifyReadError(err error) { + l.socketReadErrorOnce.Do(func() { + l.socketReadError.Store(err) + close(l.chSocketReadError) + + // propagate read error to all sessions + l.sessionLock.Lock() + for _, s := range l.sessions { + s.notifyReadError(err) + } + l.sessionLock.Unlock() + }) +} + +// SetReadBuffer sets the socket read buffer for the Listener +func (l *Listener) SetReadBuffer(bytes int) error { + if nc, ok := l.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + return errInvalidOperation +} + +// SetWriteBuffer sets the socket write buffer for the Listener +func (l *Listener) SetWriteBuffer(bytes int) error { + if nc, ok := l.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + return errInvalidOperation +} + +// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. +// +// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke +// this function instead. +func (l *Listener) SetDSCP(dscp int) error { + // interface enabled + if ts, ok := l.conn.(setDSCP); ok { + return ts.SetDSCP(dscp) + } + + if nc, ok := l.conn.(net.Conn); ok { + var succeed bool + if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { + succeed = true + } + if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { + succeed = true + } + + if succeed { + return nil + } + } + return errInvalidOperation +} + +// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn. +func (l *Listener) Accept() (net.Conn, error) { + return l.AcceptKCP() +} + +// AcceptKCP accepts a KCP connection +func (l *Listener) AcceptKCP() (*UDPSession, error) { + var timeout <-chan time.Time + if tdeadline, ok := l.rd.Load().(time.Time); ok && !tdeadline.IsZero() { + timeout = time.After(tdeadline.Sub(time.Now())) + } + + select { + case <-timeout: + return nil, errors.WithStack(errTimeout) + case c := <-l.chAccepts: + return c, nil + case <-l.chSocketReadError: + return nil, l.socketReadError.Load().(error) + case <-l.die: + return nil, errors.WithStack(io.ErrClosedPipe) + } +} + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (l *Listener) SetDeadline(t time.Time) error { + l.SetReadDeadline(t) + l.SetWriteDeadline(t) + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (l *Listener) SetReadDeadline(t time.Time) error { + l.rd.Store(t) + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (l *Listener) SetWriteDeadline(t time.Time) error { return errInvalidOperation } + +// Close stops listening on the UDP address, and closes the socket +func (l *Listener) Close() error { + var once bool + l.dieOnce.Do(func() { + close(l.die) + once = true + }) + + if once { + return l.conn.Close() + } else { + return errors.WithStack(io.ErrClosedPipe) + } +} + +// closeSession notify the listener that a session has closed +func (l *Listener) closeSession(remote net.Addr) (ret bool) { + l.sessionLock.Lock() + defer l.sessionLock.Unlock() + if _, ok := l.sessions[remote.String()]; ok { + delete(l.sessions, remote.String()) + return true + } + return false +} + +// Addr returns the listener's network address, The Addr returned is shared by all invocations of Addr, so do not modify it. +func (l *Listener) Addr() net.Addr { return l.conn.LocalAddr() } + +// Listen listens for incoming KCP packets addressed to the local address laddr on the network "udp", +func Listen(laddr string) (net.Listener, error) { return ListenWithOptions(laddr, nil, 0, 0) } + +// ListenWithOptions listens for incoming KCP packets addressed to the local address laddr on the network "udp" with packet encryption. +// +// 'block' is the block encryption algorithm to encrypt packets. +// +// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. +// +// Check https://github.com/klauspost/reedsolomon for details +func ListenWithOptions(laddr string, block BlockCrypt, dataShards, parityShards int) (*Listener, error) { + udpaddr, err := net.ResolveUDPAddr("udp", laddr) + if err != nil { + return nil, errors.WithStack(err) + } + conn, err := net.ListenUDP("udp", udpaddr) + if err != nil { + return nil, errors.WithStack(err) + } + + return ServeConn(block, dataShards, parityShards, conn) +} + +// ServeConn serves KCP protocol for a single packet connection. +func ServeConn(block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*Listener, error) { + l := new(Listener) + l.conn = conn + l.sessions = make(map[string]*UDPSession) + l.chAccepts = make(chan *UDPSession, acceptBacklog) + l.chSessionClosed = make(chan net.Addr) + l.die = make(chan struct{}) + l.dataShards = dataShards + l.parityShards = parityShards + l.block = block + l.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) + l.chSocketReadError = make(chan struct{}) + + // calculate header size + if l.block != nil { + l.headerSize += cryptHeaderSize + } + if l.fecDecoder != nil { + l.headerSize += fecHeaderSizePlus2 + } + + go l.monitor() + return l, nil +} + +// Dial connects to the remote address "raddr" on the network "udp" without encryption and FEC +func Dial(raddr string) (net.Conn, error) { return DialWithOptions(raddr, nil, 0, 0) } + +// DialWithOptions connects to the remote address "raddr" on the network "udp" with packet encryption +// +// 'block' is the block encryption algorithm to encrypt packets. +// +// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. +// +// Check https://github.com/klauspost/reedsolomon for details +func DialWithOptions(raddr string, block BlockCrypt, dataShards, parityShards int) (*UDPSession, error) { + // network type detection + udpaddr, err := net.ResolveUDPAddr("udp", raddr) + if err != nil { + return nil, errors.WithStack(err) + } + network := "udp4" + if udpaddr.IP.To4() == nil { + network = "udp" + } + + conn, err := net.ListenUDP(network, nil) + if err != nil { + return nil, errors.WithStack(err) + } + + return NewConn(raddr, block, dataShards, parityShards, conn) +} + +// NewConn3 establishes a session and talks KCP protocol over a packet connection. +func NewConn3(convid uint32, raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + return newUDPSession(convid, dataShards, parityShards, nil, conn, raddr, block), nil +} + +// NewConn2 establishes a session and talks KCP protocol over a packet connection. +func NewConn2(raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + var convid uint32 + binary.Read(rand.Reader, binary.LittleEndian, &convid) + return NewConn3(convid, raddr, block, dataShards, parityShards, conn) +} + +// NewConn establishes a session and talks KCP protocol over a packet connection. +func NewConn(raddr string, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + udpaddr, err := net.ResolveUDPAddr("udp", raddr) + if err != nil { + return nil, errors.WithStack(err) + } + return NewConn2(udpaddr, block, dataShards, parityShards, conn) +} diff --git a/vendor/github.com/xtaci/kcp-go/snmp.go b/vendor/github.com/xtaci/kcp-go/snmp.go new file mode 100644 index 0000000..607118e --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/snmp.go @@ -0,0 +1,164 @@ +package kcp + +import ( + "fmt" + "sync/atomic" +) + +// Snmp defines network statistics indicator +type Snmp struct { + BytesSent uint64 // bytes sent from upper level + BytesReceived uint64 // bytes received to upper level + MaxConn uint64 // max number of connections ever reached + ActiveOpens uint64 // accumulated active open connections + PassiveOpens uint64 // accumulated passive open connections + CurrEstab uint64 // current number of established connections + InErrs uint64 // UDP read errors reported from net.PacketConn + InCsumErrors uint64 // checksum errors from CRC32 + KCPInErrors uint64 // packet iput errors reported from KCP + InPkts uint64 // incoming packets count + OutPkts uint64 // outgoing packets count + InSegs uint64 // incoming KCP segments + OutSegs uint64 // outgoing KCP segments + InBytes uint64 // UDP bytes received + OutBytes uint64 // UDP bytes sent + RetransSegs uint64 // accmulated retransmited segments + FastRetransSegs uint64 // accmulated fast retransmitted segments + EarlyRetransSegs uint64 // accmulated early retransmitted segments + LostSegs uint64 // number of segs infered as lost + RepeatSegs uint64 // number of segs duplicated + FECRecovered uint64 // correct packets recovered from FEC + FECErrs uint64 // incorrect packets recovered from FEC + FECParityShards uint64 // FEC segments received + FECShortShards uint64 // number of data shards that's not enough for recovery +} + +func newSnmp() *Snmp { + return new(Snmp) +} + +// Header returns all field names +func (s *Snmp) Header() []string { + return []string{ + "BytesSent", + "BytesReceived", + "MaxConn", + "ActiveOpens", + "PassiveOpens", + "CurrEstab", + "InErrs", + "InCsumErrors", + "KCPInErrors", + "InPkts", + "OutPkts", + "InSegs", + "OutSegs", + "InBytes", + "OutBytes", + "RetransSegs", + "FastRetransSegs", + "EarlyRetransSegs", + "LostSegs", + "RepeatSegs", + "FECParityShards", + "FECErrs", + "FECRecovered", + "FECShortShards", + } +} + +// ToSlice returns current snmp info as slice +func (s *Snmp) ToSlice() []string { + snmp := s.Copy() + return []string{ + fmt.Sprint(snmp.BytesSent), + fmt.Sprint(snmp.BytesReceived), + fmt.Sprint(snmp.MaxConn), + fmt.Sprint(snmp.ActiveOpens), + fmt.Sprint(snmp.PassiveOpens), + fmt.Sprint(snmp.CurrEstab), + fmt.Sprint(snmp.InErrs), + fmt.Sprint(snmp.InCsumErrors), + fmt.Sprint(snmp.KCPInErrors), + fmt.Sprint(snmp.InPkts), + fmt.Sprint(snmp.OutPkts), + fmt.Sprint(snmp.InSegs), + fmt.Sprint(snmp.OutSegs), + fmt.Sprint(snmp.InBytes), + fmt.Sprint(snmp.OutBytes), + fmt.Sprint(snmp.RetransSegs), + fmt.Sprint(snmp.FastRetransSegs), + fmt.Sprint(snmp.EarlyRetransSegs), + fmt.Sprint(snmp.LostSegs), + fmt.Sprint(snmp.RepeatSegs), + fmt.Sprint(snmp.FECParityShards), + fmt.Sprint(snmp.FECErrs), + fmt.Sprint(snmp.FECRecovered), + fmt.Sprint(snmp.FECShortShards), + } +} + +// Copy make a copy of current snmp snapshot +func (s *Snmp) Copy() *Snmp { + d := newSnmp() + d.BytesSent = atomic.LoadUint64(&s.BytesSent) + d.BytesReceived = atomic.LoadUint64(&s.BytesReceived) + d.MaxConn = atomic.LoadUint64(&s.MaxConn) + d.ActiveOpens = atomic.LoadUint64(&s.ActiveOpens) + d.PassiveOpens = atomic.LoadUint64(&s.PassiveOpens) + d.CurrEstab = atomic.LoadUint64(&s.CurrEstab) + d.InErrs = atomic.LoadUint64(&s.InErrs) + d.InCsumErrors = atomic.LoadUint64(&s.InCsumErrors) + d.KCPInErrors = atomic.LoadUint64(&s.KCPInErrors) + d.InPkts = atomic.LoadUint64(&s.InPkts) + d.OutPkts = atomic.LoadUint64(&s.OutPkts) + d.InSegs = atomic.LoadUint64(&s.InSegs) + d.OutSegs = atomic.LoadUint64(&s.OutSegs) + d.InBytes = atomic.LoadUint64(&s.InBytes) + d.OutBytes = atomic.LoadUint64(&s.OutBytes) + d.RetransSegs = atomic.LoadUint64(&s.RetransSegs) + d.FastRetransSegs = atomic.LoadUint64(&s.FastRetransSegs) + d.EarlyRetransSegs = atomic.LoadUint64(&s.EarlyRetransSegs) + d.LostSegs = atomic.LoadUint64(&s.LostSegs) + d.RepeatSegs = atomic.LoadUint64(&s.RepeatSegs) + d.FECParityShards = atomic.LoadUint64(&s.FECParityShards) + d.FECErrs = atomic.LoadUint64(&s.FECErrs) + d.FECRecovered = atomic.LoadUint64(&s.FECRecovered) + d.FECShortShards = atomic.LoadUint64(&s.FECShortShards) + return d +} + +// Reset values to zero +func (s *Snmp) Reset() { + atomic.StoreUint64(&s.BytesSent, 0) + atomic.StoreUint64(&s.BytesReceived, 0) + atomic.StoreUint64(&s.MaxConn, 0) + atomic.StoreUint64(&s.ActiveOpens, 0) + atomic.StoreUint64(&s.PassiveOpens, 0) + atomic.StoreUint64(&s.CurrEstab, 0) + atomic.StoreUint64(&s.InErrs, 0) + atomic.StoreUint64(&s.InCsumErrors, 0) + atomic.StoreUint64(&s.KCPInErrors, 0) + atomic.StoreUint64(&s.InPkts, 0) + atomic.StoreUint64(&s.OutPkts, 0) + atomic.StoreUint64(&s.InSegs, 0) + atomic.StoreUint64(&s.OutSegs, 0) + atomic.StoreUint64(&s.InBytes, 0) + atomic.StoreUint64(&s.OutBytes, 0) + atomic.StoreUint64(&s.RetransSegs, 0) + atomic.StoreUint64(&s.FastRetransSegs, 0) + atomic.StoreUint64(&s.EarlyRetransSegs, 0) + atomic.StoreUint64(&s.LostSegs, 0) + atomic.StoreUint64(&s.RepeatSegs, 0) + atomic.StoreUint64(&s.FECParityShards, 0) + atomic.StoreUint64(&s.FECErrs, 0) + atomic.StoreUint64(&s.FECRecovered, 0) + atomic.StoreUint64(&s.FECShortShards, 0) +} + +// DefaultSnmp is the global KCP connection statistics collector +var DefaultSnmp *Snmp + +func init() { + DefaultSnmp = newSnmp() +} diff --git a/vendor/github.com/xtaci/kcp-go/tx.go b/vendor/github.com/xtaci/kcp-go/tx.go new file mode 100644 index 0000000..3397b82 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx.go @@ -0,0 +1,24 @@ +package kcp + +import ( + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) defaultTx(txqueue []ipv4.Message) { + nbytes := 0 + npkts := 0 + for k := range txqueue { + if n, err := s.conn.WriteTo(txqueue[k].Buffers[0], txqueue[k].Addr); err == nil { + nbytes += n + npkts++ + } else { + s.notifyWriteError(errors.WithStack(err)) + break + } + } + atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) +} diff --git a/vendor/github.com/xtaci/kcp-go/tx_generic.go b/vendor/github.com/xtaci/kcp-go/tx_generic.go new file mode 100644 index 0000000..0b4f349 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx_generic.go @@ -0,0 +1,11 @@ +// +build !linux + +package kcp + +import ( + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) tx(txqueue []ipv4.Message) { + s.defaultTx(txqueue) +} diff --git a/vendor/github.com/xtaci/kcp-go/tx_linux.go b/vendor/github.com/xtaci/kcp-go/tx_linux.go new file mode 100644 index 0000000..4f19df5 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx_linux.go @@ -0,0 +1,51 @@ +// +build linux + +package kcp + +import ( + "net" + "os" + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) tx(txqueue []ipv4.Message) { + // default version + if s.xconn == nil || s.xconnWriteError != nil { + s.defaultTx(txqueue) + return + } + + // x/net version + nbytes := 0 + npkts := 0 + for len(txqueue) > 0 { + if n, err := s.xconn.WriteBatch(txqueue, 0); err == nil { + for k := range txqueue[:n] { + nbytes += len(txqueue[k].Buffers[0]) + } + npkts += n + txqueue = txqueue[n:] + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "sendmmsg" { + s.xconnWriteError = se + s.defaultTx(txqueue) + return + } + } + } + s.notifyWriteError(errors.WithStack(err)) + break + } + } + + atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) +} diff --git a/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg b/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad72505ce56882faf47353fbc27c54826df29526 GIT binary patch literal 35307 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 F|JmoHbYK7g literal 0 HcmV?d00001 diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS new file mode 100644 index 0000000..2b00ddb --- /dev/null +++ b/vendor/golang.org/x/crypto/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS new file mode 100644 index 0000000..1fbd3e9 --- /dev/null +++ b/vendor/golang.org/x/crypto/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/argon2/argon2.go b/vendor/golang.org/x/crypto/argon2/argon2.go new file mode 100644 index 0000000..b423fea --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/argon2.go @@ -0,0 +1,285 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package argon2 implements the key derivation function Argon2. +// Argon2 was selected as the winner of the Password Hashing Competition and can +// be used to derive cryptographic keys from passwords. +// +// For a detailed specification of Argon2 see [1]. +// +// If you aren't sure which function you need, use Argon2id (IDKey) and +// the parameter recommendations for your scenario. +// +// +// Argon2i +// +// Argon2i (implemented by Key) is the side-channel resistant version of Argon2. +// It uses data-independent memory access, which is preferred for password +// hashing and password-based key derivation. Argon2i requires more passes over +// memory than Argon2id to protect from trade-off attacks. The recommended +// parameters (taken from [2]) for non-interactive operations are time=3 and to +// use the maximum available memory. +// +// +// Argon2id +// +// Argon2id (implemented by IDKey) is a hybrid version of Argon2 combining +// Argon2i and Argon2d. It uses data-independent memory access for the first +// half of the first iteration over the memory and data-dependent memory access +// for the rest. Argon2id is side-channel resistant and provides better brute- +// force cost savings due to time-memory tradeoffs than Argon2i. The recommended +// parameters for non-interactive operations (taken from [2]) are time=1 and to +// use the maximum available memory. +// +// [1] https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf +// [2] https://tools.ietf.org/html/draft-irtf-cfrg-argon2-03#section-9.3 +package argon2 + +import ( + "encoding/binary" + "sync" + + "golang.org/x/crypto/blake2b" +) + +// The Argon2 version implemented by this package. +const Version = 0x13 + +const ( + argon2d = iota + argon2i + argon2id +) + +// Key derives a key from the password, salt, and cost parameters using Argon2i +// returning a byte slice of length keyLen that can be used as cryptographic +// key. The CPU cost and parallelism degree must be greater than zero. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// key := argon2.Key([]byte("some password"), salt, 3, 32*1024, 4, 32) +// +// The draft RFC recommends[2] time=3, and memory=32*1024 is a sensible number. +// If using that amount of memory (32 MB) is not possible in some contexts then +// the time parameter can be increased to compensate. +// +// The time parameter specifies the number of passes over the memory and the +// memory parameter specifies the size of the memory in KiB. For example +// memory=32*1024 sets the memory cost to ~32 MB. The number of threads can be +// adjusted to the number of available CPUs. The cost parameters should be +// increased as memory latency and CPU parallelism increases. Remember to get a +// good random salt. +func Key(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + return deriveKey(argon2i, password, salt, nil, nil, time, memory, threads, keyLen) +} + +// IDKey derives a key from the password, salt, and cost parameters using +// Argon2id returning a byte slice of length keyLen that can be used as +// cryptographic key. The CPU cost and parallelism degree must be greater than +// zero. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// key := argon2.IDKey([]byte("some password"), salt, 1, 64*1024, 4, 32) +// +// The draft RFC recommends[2] time=1, and memory=64*1024 is a sensible number. +// If using that amount of memory (64 MB) is not possible in some contexts then +// the time parameter can be increased to compensate. +// +// The time parameter specifies the number of passes over the memory and the +// memory parameter specifies the size of the memory in KiB. For example +// memory=64*1024 sets the memory cost to ~64 MB. The number of threads can be +// adjusted to the numbers of available CPUs. The cost parameters should be +// increased as memory latency and CPU parallelism increases. Remember to get a +// good random salt. +func IDKey(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + return deriveKey(argon2id, password, salt, nil, nil, time, memory, threads, keyLen) +} + +func deriveKey(mode int, password, salt, secret, data []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + if time < 1 { + panic("argon2: number of rounds too small") + } + if threads < 1 { + panic("argon2: parallelism degree too low") + } + h0 := initHash(password, salt, secret, data, time, memory, uint32(threads), keyLen, mode) + + memory = memory / (syncPoints * uint32(threads)) * (syncPoints * uint32(threads)) + if memory < 2*syncPoints*uint32(threads) { + memory = 2 * syncPoints * uint32(threads) + } + B := initBlocks(&h0, memory, uint32(threads)) + processBlocks(B, time, memory, uint32(threads), mode) + return extractKey(B, memory, uint32(threads), keyLen) +} + +const ( + blockLength = 128 + syncPoints = 4 +) + +type block [blockLength]uint64 + +func initHash(password, salt, key, data []byte, time, memory, threads, keyLen uint32, mode int) [blake2b.Size + 8]byte { + var ( + h0 [blake2b.Size + 8]byte + params [24]byte + tmp [4]byte + ) + + b2, _ := blake2b.New512(nil) + binary.LittleEndian.PutUint32(params[0:4], threads) + binary.LittleEndian.PutUint32(params[4:8], keyLen) + binary.LittleEndian.PutUint32(params[8:12], memory) + binary.LittleEndian.PutUint32(params[12:16], time) + binary.LittleEndian.PutUint32(params[16:20], uint32(Version)) + binary.LittleEndian.PutUint32(params[20:24], uint32(mode)) + b2.Write(params[:]) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(password))) + b2.Write(tmp[:]) + b2.Write(password) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(salt))) + b2.Write(tmp[:]) + b2.Write(salt) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(key))) + b2.Write(tmp[:]) + b2.Write(key) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(data))) + b2.Write(tmp[:]) + b2.Write(data) + b2.Sum(h0[:0]) + return h0 +} + +func initBlocks(h0 *[blake2b.Size + 8]byte, memory, threads uint32) []block { + var block0 [1024]byte + B := make([]block, memory) + for lane := uint32(0); lane < threads; lane++ { + j := lane * (memory / threads) + binary.LittleEndian.PutUint32(h0[blake2b.Size+4:], lane) + + binary.LittleEndian.PutUint32(h0[blake2b.Size:], 0) + blake2bHash(block0[:], h0[:]) + for i := range B[j+0] { + B[j+0][i] = binary.LittleEndian.Uint64(block0[i*8:]) + } + + binary.LittleEndian.PutUint32(h0[blake2b.Size:], 1) + blake2bHash(block0[:], h0[:]) + for i := range B[j+1] { + B[j+1][i] = binary.LittleEndian.Uint64(block0[i*8:]) + } + } + return B +} + +func processBlocks(B []block, time, memory, threads uint32, mode int) { + lanes := memory / threads + segments := lanes / syncPoints + + processSegment := func(n, slice, lane uint32, wg *sync.WaitGroup) { + var addresses, in, zero block + if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { + in[0] = uint64(n) + in[1] = uint64(lane) + in[2] = uint64(slice) + in[3] = uint64(memory) + in[4] = uint64(time) + in[5] = uint64(mode) + } + + index := uint32(0) + if n == 0 && slice == 0 { + index = 2 // we have already generated the first two blocks + if mode == argon2i || mode == argon2id { + in[6]++ + processBlock(&addresses, &in, &zero) + processBlock(&addresses, &addresses, &zero) + } + } + + offset := lane*lanes + slice*segments + index + var random uint64 + for index < segments { + prev := offset - 1 + if index == 0 && slice == 0 { + prev += lanes // last block in lane + } + if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { + if index%blockLength == 0 { + in[6]++ + processBlock(&addresses, &in, &zero) + processBlock(&addresses, &addresses, &zero) + } + random = addresses[index%blockLength] + } else { + random = B[prev][0] + } + newOffset := indexAlpha(random, lanes, segments, threads, n, slice, lane, index) + processBlockXOR(&B[offset], &B[prev], &B[newOffset]) + index, offset = index+1, offset+1 + } + wg.Done() + } + + for n := uint32(0); n < time; n++ { + for slice := uint32(0); slice < syncPoints; slice++ { + var wg sync.WaitGroup + for lane := uint32(0); lane < threads; lane++ { + wg.Add(1) + go processSegment(n, slice, lane, &wg) + } + wg.Wait() + } + } + +} + +func extractKey(B []block, memory, threads, keyLen uint32) []byte { + lanes := memory / threads + for lane := uint32(0); lane < threads-1; lane++ { + for i, v := range B[(lane*lanes)+lanes-1] { + B[memory-1][i] ^= v + } + } + + var block [1024]byte + for i, v := range B[memory-1] { + binary.LittleEndian.PutUint64(block[i*8:], v) + } + key := make([]byte, keyLen) + blake2bHash(key, block[:]) + return key +} + +func indexAlpha(rand uint64, lanes, segments, threads, n, slice, lane, index uint32) uint32 { + refLane := uint32(rand>>32) % threads + if n == 0 && slice == 0 { + refLane = lane + } + m, s := 3*segments, ((slice+1)%syncPoints)*segments + if lane == refLane { + m += index + } + if n == 0 { + m, s = slice*segments, 0 + if slice == 0 || lane == refLane { + m += index + } + } + if index == 0 || lane == refLane { + m-- + } + return phi(rand, uint64(m), uint64(s), refLane, lanes) +} + +func phi(rand, m, s uint64, lane, lanes uint32) uint32 { + p := rand & 0xFFFFFFFF + p = (p * p) >> 32 + p = (p * m) >> 32 + return lane*lanes + uint32((s+m-(p+1))%uint64(lanes)) +} diff --git a/vendor/golang.org/x/crypto/argon2/blake2b.go b/vendor/golang.org/x/crypto/argon2/blake2b.go new file mode 100644 index 0000000..10f4694 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blake2b.go @@ -0,0 +1,53 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package argon2 + +import ( + "encoding/binary" + "hash" + + "golang.org/x/crypto/blake2b" +) + +// blake2bHash computes an arbitrary long hash value of in +// and writes the hash to out. +func blake2bHash(out []byte, in []byte) { + var b2 hash.Hash + if n := len(out); n < blake2b.Size { + b2, _ = blake2b.New(n, nil) + } else { + b2, _ = blake2b.New512(nil) + } + + var buffer [blake2b.Size]byte + binary.LittleEndian.PutUint32(buffer[:4], uint32(len(out))) + b2.Write(buffer[:4]) + b2.Write(in) + + if len(out) <= blake2b.Size { + b2.Sum(out[:0]) + return + } + + outLen := len(out) + b2.Sum(buffer[:0]) + b2.Reset() + copy(out, buffer[:32]) + out = out[32:] + for len(out) > blake2b.Size { + b2.Write(buffer[:]) + b2.Sum(buffer[:0]) + copy(out, buffer[:32]) + out = out[32:] + b2.Reset() + } + + if outLen%blake2b.Size > 0 { // outLen > 64 + r := ((outLen + 31) / 32) - 2 // ⌈τ /32⌉-2 + b2, _ = blake2b.New(outLen-32*r, nil) + } + b2.Write(buffer[:]) + b2.Sum(out[:0]) +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go new file mode 100644 index 0000000..2fc1ec0 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go @@ -0,0 +1,60 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +package argon2 + +import "golang.org/x/sys/cpu" + +func init() { + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func mixBlocksSSE2(out, a, b, c *block) + +//go:noescape +func xorBlocksSSE2(out, a, b, c *block) + +//go:noescape +func blamkaSSE4(b *block) + +func processBlockSSE(out, in1, in2 *block, xor bool) { + var t block + mixBlocksSSE2(&t, in1, in2, &t) + if useSSE4 { + blamkaSSE4(&t) + } else { + for i := 0; i < blockLength; i += 16 { + blamkaGeneric( + &t[i+0], &t[i+1], &t[i+2], &t[i+3], + &t[i+4], &t[i+5], &t[i+6], &t[i+7], + &t[i+8], &t[i+9], &t[i+10], &t[i+11], + &t[i+12], &t[i+13], &t[i+14], &t[i+15], + ) + } + for i := 0; i < blockLength/8; i += 2 { + blamkaGeneric( + &t[i], &t[i+1], &t[16+i], &t[16+i+1], + &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], + &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], + &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], + ) + } + } + if xor { + xorBlocksSSE2(out, in1, in2, &t) + } else { + mixBlocksSSE2(out, in1, in2, &t) + } +} + +func processBlock(out, in1, in2 *block) { + processBlockSSE(out, in1, in2, false) +} + +func processBlockXOR(out, in1, in2 *block) { + processBlockSSE(out, in1, in2, true) +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s new file mode 100644 index 0000000..74a6e73 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s @@ -0,0 +1,243 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 + +#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v6, t1; \ + PUNPCKLQDQ v6, t2; \ + PUNPCKHQDQ v7, v6; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ v7, t2; \ + MOVO t1, v7; \ + MOVO v2, t1; \ + PUNPCKHQDQ t2, v7; \ + PUNPCKLQDQ v3, t2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v3 + +#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v2, t1; \ + PUNPCKLQDQ v2, t2; \ + PUNPCKHQDQ v3, v2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ v3, t2; \ + MOVO t1, v3; \ + MOVO v6, t1; \ + PUNPCKHQDQ t2, v3; \ + PUNPCKLQDQ v7, t2; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v7 + +#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48) \ + MOVO v0, t0; \ + PMULULQ v2, t0; \ + PADDQ v2, v0; \ + PADDQ t0, v0; \ + PADDQ t0, v0; \ + PXOR v0, v6; \ + PSHUFD $0xB1, v6, v6; \ + MOVO v4, t0; \ + PMULULQ v6, t0; \ + PADDQ v6, v4; \ + PADDQ t0, v4; \ + PADDQ t0, v4; \ + PXOR v4, v2; \ + PSHUFB c40, v2; \ + MOVO v0, t0; \ + PMULULQ v2, t0; \ + PADDQ v2, v0; \ + PADDQ t0, v0; \ + PADDQ t0, v0; \ + PXOR v0, v6; \ + PSHUFB c48, v6; \ + MOVO v4, t0; \ + PMULULQ v6, t0; \ + PADDQ v6, v4; \ + PADDQ t0, v4; \ + PADDQ t0, v4; \ + PXOR v4, v2; \ + MOVO v2, t0; \ + PADDQ v2, t0; \ + PSRLQ $63, v2; \ + PXOR t0, v2; \ + MOVO v1, t0; \ + PMULULQ v3, t0; \ + PADDQ v3, v1; \ + PADDQ t0, v1; \ + PADDQ t0, v1; \ + PXOR v1, v7; \ + PSHUFD $0xB1, v7, v7; \ + MOVO v5, t0; \ + PMULULQ v7, t0; \ + PADDQ v7, v5; \ + PADDQ t0, v5; \ + PADDQ t0, v5; \ + PXOR v5, v3; \ + PSHUFB c40, v3; \ + MOVO v1, t0; \ + PMULULQ v3, t0; \ + PADDQ v3, v1; \ + PADDQ t0, v1; \ + PADDQ t0, v1; \ + PXOR v1, v7; \ + PSHUFB c48, v7; \ + MOVO v5, t0; \ + PMULULQ v7, t0; \ + PADDQ v7, v5; \ + PADDQ t0, v5; \ + PADDQ t0, v5; \ + PXOR v5, v3; \ + MOVO v3, t0; \ + PADDQ v3, t0; \ + PSRLQ $63, v3; \ + PXOR t0, v3 + +#define LOAD_MSG_0(block, off) \ + MOVOU 8*(off+0)(block), X0; \ + MOVOU 8*(off+2)(block), X1; \ + MOVOU 8*(off+4)(block), X2; \ + MOVOU 8*(off+6)(block), X3; \ + MOVOU 8*(off+8)(block), X4; \ + MOVOU 8*(off+10)(block), X5; \ + MOVOU 8*(off+12)(block), X6; \ + MOVOU 8*(off+14)(block), X7 + +#define STORE_MSG_0(block, off) \ + MOVOU X0, 8*(off+0)(block); \ + MOVOU X1, 8*(off+2)(block); \ + MOVOU X2, 8*(off+4)(block); \ + MOVOU X3, 8*(off+6)(block); \ + MOVOU X4, 8*(off+8)(block); \ + MOVOU X5, 8*(off+10)(block); \ + MOVOU X6, 8*(off+12)(block); \ + MOVOU X7, 8*(off+14)(block) + +#define LOAD_MSG_1(block, off) \ + MOVOU 8*off+0*8(block), X0; \ + MOVOU 8*off+16*8(block), X1; \ + MOVOU 8*off+32*8(block), X2; \ + MOVOU 8*off+48*8(block), X3; \ + MOVOU 8*off+64*8(block), X4; \ + MOVOU 8*off+80*8(block), X5; \ + MOVOU 8*off+96*8(block), X6; \ + MOVOU 8*off+112*8(block), X7 + +#define STORE_MSG_1(block, off) \ + MOVOU X0, 8*off+0*8(block); \ + MOVOU X1, 8*off+16*8(block); \ + MOVOU X2, 8*off+32*8(block); \ + MOVOU X3, 8*off+48*8(block); \ + MOVOU X4, 8*off+64*8(block); \ + MOVOU X5, 8*off+80*8(block); \ + MOVOU X6, 8*off+96*8(block); \ + MOVOU X7, 8*off+112*8(block) + +#define BLAMKA_ROUND_0(block, off, t0, t1, c40, c48) \ + LOAD_MSG_0(block, off); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ + STORE_MSG_0(block, off) + +#define BLAMKA_ROUND_1(block, off, t0, t1, c40, c48) \ + LOAD_MSG_1(block, off); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ + STORE_MSG_1(block, off) + +// func blamkaSSE4(b *block) +TEXT ·blamkaSSE4(SB), 4, $0-8 + MOVQ b+0(FP), AX + + MOVOU ·c40<>(SB), X10 + MOVOU ·c48<>(SB), X11 + + BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11) + + BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11) + RET + +// func mixBlocksSSE2(out, a, b, c *block) +TEXT ·mixBlocksSSE2(SB), 4, $0-32 + MOVQ out+0(FP), DX + MOVQ a+8(FP), AX + MOVQ b+16(FP), BX + MOVQ a+24(FP), CX + MOVQ $128, BP + +loop: + MOVOU 0(AX), X0 + MOVOU 0(BX), X1 + MOVOU 0(CX), X2 + PXOR X1, X0 + PXOR X2, X0 + MOVOU X0, 0(DX) + ADDQ $16, AX + ADDQ $16, BX + ADDQ $16, CX + ADDQ $16, DX + SUBQ $2, BP + JA loop + RET + +// func xorBlocksSSE2(out, a, b, c *block) +TEXT ·xorBlocksSSE2(SB), 4, $0-32 + MOVQ out+0(FP), DX + MOVQ a+8(FP), AX + MOVQ b+16(FP), BX + MOVQ a+24(FP), CX + MOVQ $128, BP + +loop: + MOVOU 0(AX), X0 + MOVOU 0(BX), X1 + MOVOU 0(CX), X2 + MOVOU 0(DX), X3 + PXOR X1, X0 + PXOR X2, X0 + PXOR X3, X0 + MOVOU X0, 0(DX) + ADDQ $16, AX + ADDQ $16, BX + ADDQ $16, CX + ADDQ $16, DX + SUBQ $2, BP + JA loop + RET diff --git a/vendor/golang.org/x/crypto/argon2/blamka_generic.go b/vendor/golang.org/x/crypto/argon2/blamka_generic.go new file mode 100644 index 0000000..a481b22 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_generic.go @@ -0,0 +1,163 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package argon2 + +var useSSE4 bool + +func processBlockGeneric(out, in1, in2 *block, xor bool) { + var t block + for i := range t { + t[i] = in1[i] ^ in2[i] + } + for i := 0; i < blockLength; i += 16 { + blamkaGeneric( + &t[i+0], &t[i+1], &t[i+2], &t[i+3], + &t[i+4], &t[i+5], &t[i+6], &t[i+7], + &t[i+8], &t[i+9], &t[i+10], &t[i+11], + &t[i+12], &t[i+13], &t[i+14], &t[i+15], + ) + } + for i := 0; i < blockLength/8; i += 2 { + blamkaGeneric( + &t[i], &t[i+1], &t[16+i], &t[16+i+1], + &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], + &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], + &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], + ) + } + if xor { + for i := range t { + out[i] ^= in1[i] ^ in2[i] ^ t[i] + } + } else { + for i := range t { + out[i] = in1[i] ^ in2[i] ^ t[i] + } + } +} + +func blamkaGeneric(t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15 *uint64) { + v00, v01, v02, v03 := *t00, *t01, *t02, *t03 + v04, v05, v06, v07 := *t04, *t05, *t06, *t07 + v08, v09, v10, v11 := *t08, *t09, *t10, *t11 + v12, v13, v14, v15 := *t12, *t13, *t14, *t15 + + v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) + v12 ^= v00 + v12 = v12>>32 | v12<<32 + v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) + v04 ^= v08 + v04 = v04>>24 | v04<<40 + + v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) + v12 ^= v00 + v12 = v12>>16 | v12<<48 + v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) + v04 ^= v08 + v04 = v04>>63 | v04<<1 + + v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) + v13 ^= v01 + v13 = v13>>32 | v13<<32 + v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) + v05 ^= v09 + v05 = v05>>24 | v05<<40 + + v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) + v13 ^= v01 + v13 = v13>>16 | v13<<48 + v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) + v05 ^= v09 + v05 = v05>>63 | v05<<1 + + v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) + v14 ^= v02 + v14 = v14>>32 | v14<<32 + v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) + v06 ^= v10 + v06 = v06>>24 | v06<<40 + + v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) + v14 ^= v02 + v14 = v14>>16 | v14<<48 + v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) + v06 ^= v10 + v06 = v06>>63 | v06<<1 + + v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) + v15 ^= v03 + v15 = v15>>32 | v15<<32 + v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) + v07 ^= v11 + v07 = v07>>24 | v07<<40 + + v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) + v15 ^= v03 + v15 = v15>>16 | v15<<48 + v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) + v07 ^= v11 + v07 = v07>>63 | v07<<1 + + v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) + v15 ^= v00 + v15 = v15>>32 | v15<<32 + v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) + v05 ^= v10 + v05 = v05>>24 | v05<<40 + + v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) + v15 ^= v00 + v15 = v15>>16 | v15<<48 + v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) + v05 ^= v10 + v05 = v05>>63 | v05<<1 + + v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) + v12 ^= v01 + v12 = v12>>32 | v12<<32 + v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) + v06 ^= v11 + v06 = v06>>24 | v06<<40 + + v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) + v12 ^= v01 + v12 = v12>>16 | v12<<48 + v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) + v06 ^= v11 + v06 = v06>>63 | v06<<1 + + v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) + v13 ^= v02 + v13 = v13>>32 | v13<<32 + v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) + v07 ^= v08 + v07 = v07>>24 | v07<<40 + + v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) + v13 ^= v02 + v13 = v13>>16 | v13<<48 + v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) + v07 ^= v08 + v07 = v07>>63 | v07<<1 + + v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) + v14 ^= v03 + v14 = v14>>32 | v14<<32 + v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) + v04 ^= v09 + v04 = v04>>24 | v04<<40 + + v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) + v14 ^= v03 + v14 = v14>>16 | v14<<48 + v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) + v04 ^= v09 + v04 = v04>>63 | v04<<1 + + *t00, *t01, *t02, *t03 = v00, v01, v02, v03 + *t04, *t05, *t06, *t07 = v04, v05, v06, v07 + *t08, *t09, *t10, *t11 = v08, v09, v10, v11 + *t12, *t13, *t14, *t15 = v12, v13, v14, v15 +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_ref.go b/vendor/golang.org/x/crypto/argon2/blamka_ref.go new file mode 100644 index 0000000..baf7b55 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_ref.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package argon2 + +func processBlock(out, in1, in2 *block) { + processBlockGeneric(out, in1, in2, false) +} + +func processBlockXOR(out, in1, in2 *block) { + processBlockGeneric(out, in1, in2, true) +} diff --git a/vendor/golang.org/x/crypto/bcrypt/base64.go b/vendor/golang.org/x/crypto/bcrypt/base64.go new file mode 100644 index 0000000..fc31160 --- /dev/null +++ b/vendor/golang.org/x/crypto/bcrypt/base64.go @@ -0,0 +1,35 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bcrypt + +import "encoding/base64" + +const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + +var bcEncoding = base64.NewEncoding(alphabet) + +func base64Encode(src []byte) []byte { + n := bcEncoding.EncodedLen(len(src)) + dst := make([]byte, n) + bcEncoding.Encode(dst, src) + for dst[n-1] == '=' { + n-- + } + return dst[:n] +} + +func base64Decode(src []byte) ([]byte, error) { + numOfEquals := 4 - (len(src) % 4) + for i := 0; i < numOfEquals; i++ { + src = append(src, '=') + } + + dst := make([]byte, bcEncoding.DecodedLen(len(src))) + n, err := bcEncoding.Decode(dst, src) + if err != nil { + return nil, err + } + return dst[:n], nil +} diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go new file mode 100644 index 0000000..aeb73f8 --- /dev/null +++ b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go @@ -0,0 +1,295 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing +// algorithm. See http://www.usenix.org/event/usenix99/provos/provos.pdf +package bcrypt // import "golang.org/x/crypto/bcrypt" + +// The code is a port of Provos and Mazières's C implementation. +import ( + "crypto/rand" + "crypto/subtle" + "errors" + "fmt" + "io" + "strconv" + + "golang.org/x/crypto/blowfish" +) + +const ( + MinCost int = 4 // the minimum allowable cost as passed in to GenerateFromPassword + MaxCost int = 31 // the maximum allowable cost as passed in to GenerateFromPassword + DefaultCost int = 10 // the cost that will actually be set if a cost below MinCost is passed into GenerateFromPassword +) + +// The error returned from CompareHashAndPassword when a password and hash do +// not match. +var ErrMismatchedHashAndPassword = errors.New("crypto/bcrypt: hashedPassword is not the hash of the given password") + +// The error returned from CompareHashAndPassword when a hash is too short to +// be a bcrypt hash. +var ErrHashTooShort = errors.New("crypto/bcrypt: hashedSecret too short to be a bcrypted password") + +// The error returned from CompareHashAndPassword when a hash was created with +// a bcrypt algorithm newer than this implementation. +type HashVersionTooNewError byte + +func (hv HashVersionTooNewError) Error() string { + return fmt.Sprintf("crypto/bcrypt: bcrypt algorithm version '%c' requested is newer than current version '%c'", byte(hv), majorVersion) +} + +// The error returned from CompareHashAndPassword when a hash starts with something other than '$' +type InvalidHashPrefixError byte + +func (ih InvalidHashPrefixError) Error() string { + return fmt.Sprintf("crypto/bcrypt: bcrypt hashes must start with '$', but hashedSecret started with '%c'", byte(ih)) +} + +type InvalidCostError int + +func (ic InvalidCostError) Error() string { + return fmt.Sprintf("crypto/bcrypt: cost %d is outside allowed range (%d,%d)", int(ic), int(MinCost), int(MaxCost)) +} + +const ( + majorVersion = '2' + minorVersion = 'a' + maxSaltSize = 16 + maxCryptedHashSize = 23 + encodedSaltSize = 22 + encodedHashSize = 31 + minHashSize = 59 +) + +// magicCipherData is an IV for the 64 Blowfish encryption calls in +// bcrypt(). It's the string "OrpheanBeholderScryDoubt" in big-endian bytes. +var magicCipherData = []byte{ + 0x4f, 0x72, 0x70, 0x68, + 0x65, 0x61, 0x6e, 0x42, + 0x65, 0x68, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x53, + 0x63, 0x72, 0x79, 0x44, + 0x6f, 0x75, 0x62, 0x74, +} + +type hashed struct { + hash []byte + salt []byte + cost int // allowed range is MinCost to MaxCost + major byte + minor byte +} + +// GenerateFromPassword returns the bcrypt hash of the password at the given +// cost. If the cost given is less than MinCost, the cost will be set to +// DefaultCost, instead. Use CompareHashAndPassword, as defined in this package, +// to compare the returned hashed password with its cleartext version. +func GenerateFromPassword(password []byte, cost int) ([]byte, error) { + p, err := newFromPassword(password, cost) + if err != nil { + return nil, err + } + return p.Hash(), nil +} + +// CompareHashAndPassword compares a bcrypt hashed password with its possible +// plaintext equivalent. Returns nil on success, or an error on failure. +func CompareHashAndPassword(hashedPassword, password []byte) error { + p, err := newFromHash(hashedPassword) + if err != nil { + return err + } + + otherHash, err := bcrypt(password, p.cost, p.salt) + if err != nil { + return err + } + + otherP := &hashed{otherHash, p.salt, p.cost, p.major, p.minor} + if subtle.ConstantTimeCompare(p.Hash(), otherP.Hash()) == 1 { + return nil + } + + return ErrMismatchedHashAndPassword +} + +// Cost returns the hashing cost used to create the given hashed +// password. When, in the future, the hashing cost of a password system needs +// to be increased in order to adjust for greater computational power, this +// function allows one to establish which passwords need to be updated. +func Cost(hashedPassword []byte) (int, error) { + p, err := newFromHash(hashedPassword) + if err != nil { + return 0, err + } + return p.cost, nil +} + +func newFromPassword(password []byte, cost int) (*hashed, error) { + if cost < MinCost { + cost = DefaultCost + } + p := new(hashed) + p.major = majorVersion + p.minor = minorVersion + + err := checkCost(cost) + if err != nil { + return nil, err + } + p.cost = cost + + unencodedSalt := make([]byte, maxSaltSize) + _, err = io.ReadFull(rand.Reader, unencodedSalt) + if err != nil { + return nil, err + } + + p.salt = base64Encode(unencodedSalt) + hash, err := bcrypt(password, p.cost, p.salt) + if err != nil { + return nil, err + } + p.hash = hash + return p, err +} + +func newFromHash(hashedSecret []byte) (*hashed, error) { + if len(hashedSecret) < minHashSize { + return nil, ErrHashTooShort + } + p := new(hashed) + n, err := p.decodeVersion(hashedSecret) + if err != nil { + return nil, err + } + hashedSecret = hashedSecret[n:] + n, err = p.decodeCost(hashedSecret) + if err != nil { + return nil, err + } + hashedSecret = hashedSecret[n:] + + // The "+2" is here because we'll have to append at most 2 '=' to the salt + // when base64 decoding it in expensiveBlowfishSetup(). + p.salt = make([]byte, encodedSaltSize, encodedSaltSize+2) + copy(p.salt, hashedSecret[:encodedSaltSize]) + + hashedSecret = hashedSecret[encodedSaltSize:] + p.hash = make([]byte, len(hashedSecret)) + copy(p.hash, hashedSecret) + + return p, nil +} + +func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) { + cipherData := make([]byte, len(magicCipherData)) + copy(cipherData, magicCipherData) + + c, err := expensiveBlowfishSetup(password, uint32(cost), salt) + if err != nil { + return nil, err + } + + for i := 0; i < 24; i += 8 { + for j := 0; j < 64; j++ { + c.Encrypt(cipherData[i:i+8], cipherData[i:i+8]) + } + } + + // Bug compatibility with C bcrypt implementations. We only encode 23 of + // the 24 bytes encrypted. + hsh := base64Encode(cipherData[:maxCryptedHashSize]) + return hsh, nil +} + +func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) (*blowfish.Cipher, error) { + csalt, err := base64Decode(salt) + if err != nil { + return nil, err + } + + // Bug compatibility with C bcrypt implementations. They use the trailing + // NULL in the key string during expansion. + // We copy the key to prevent changing the underlying array. + ckey := append(key[:len(key):len(key)], 0) + + c, err := blowfish.NewSaltedCipher(ckey, csalt) + if err != nil { + return nil, err + } + + var i, rounds uint64 + rounds = 1 << cost + for i = 0; i < rounds; i++ { + blowfish.ExpandKey(ckey, c) + blowfish.ExpandKey(csalt, c) + } + + return c, nil +} + +func (p *hashed) Hash() []byte { + arr := make([]byte, 60) + arr[0] = '$' + arr[1] = p.major + n := 2 + if p.minor != 0 { + arr[2] = p.minor + n = 3 + } + arr[n] = '$' + n++ + copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost))) + n += 2 + arr[n] = '$' + n++ + copy(arr[n:], p.salt) + n += encodedSaltSize + copy(arr[n:], p.hash) + n += encodedHashSize + return arr[:n] +} + +func (p *hashed) decodeVersion(sbytes []byte) (int, error) { + if sbytes[0] != '$' { + return -1, InvalidHashPrefixError(sbytes[0]) + } + if sbytes[1] > majorVersion { + return -1, HashVersionTooNewError(sbytes[1]) + } + p.major = sbytes[1] + n := 3 + if sbytes[2] != '$' { + p.minor = sbytes[2] + n++ + } + return n, nil +} + +// sbytes should begin where decodeVersion left off. +func (p *hashed) decodeCost(sbytes []byte) (int, error) { + cost, err := strconv.Atoi(string(sbytes[0:2])) + if err != nil { + return -1, err + } + err = checkCost(cost) + if err != nil { + return -1, err + } + p.cost = cost + return 3, nil +} + +func (p *hashed) String() string { + return fmt.Sprintf("&{hash: %#v, salt: %#v, cost: %d, major: %c, minor: %c}", string(p.hash), p.salt, p.cost, p.major, p.minor) +} + +func checkCost(cost int) error { + if cost < MinCost || cost > MaxCost { + return InvalidCostError(cost) + } + return nil +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b.go b/vendor/golang.org/x/crypto/blake2b/blake2b.go new file mode 100644 index 0000000..c160e1a --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b.go @@ -0,0 +1,289 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blake2b implements the BLAKE2b hash algorithm defined by RFC 7693 +// and the extendable output function (XOF) BLAKE2Xb. +// +// For a detailed specification of BLAKE2b see https://blake2.net/blake2.pdf +// and for BLAKE2Xb see https://blake2.net/blake2x.pdf +// +// If you aren't sure which function you need, use BLAKE2b (Sum512 or New512). +// If you need a secret-key MAC (message authentication code), use the New512 +// function with a non-nil key. +// +// BLAKE2X is a construction to compute hash values larger than 64 bytes. It +// can produce hash values between 0 and 4 GiB. +package blake2b + +import ( + "encoding/binary" + "errors" + "hash" +) + +const ( + // The blocksize of BLAKE2b in bytes. + BlockSize = 128 + // The hash size of BLAKE2b-512 in bytes. + Size = 64 + // The hash size of BLAKE2b-384 in bytes. + Size384 = 48 + // The hash size of BLAKE2b-256 in bytes. + Size256 = 32 +) + +var ( + useAVX2 bool + useAVX bool + useSSE4 bool +) + +var ( + errKeySize = errors.New("blake2b: invalid key size") + errHashSize = errors.New("blake2b: invalid hash size") +) + +var iv = [8]uint64{ + 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, + 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179, +} + +// Sum512 returns the BLAKE2b-512 checksum of the data. +func Sum512(data []byte) [Size]byte { + var sum [Size]byte + checkSum(&sum, Size, data) + return sum +} + +// Sum384 returns the BLAKE2b-384 checksum of the data. +func Sum384(data []byte) [Size384]byte { + var sum [Size]byte + var sum384 [Size384]byte + checkSum(&sum, Size384, data) + copy(sum384[:], sum[:Size384]) + return sum384 +} + +// Sum256 returns the BLAKE2b-256 checksum of the data. +func Sum256(data []byte) [Size256]byte { + var sum [Size]byte + var sum256 [Size256]byte + checkSum(&sum, Size256, data) + copy(sum256[:], sum[:Size256]) + return sum256 +} + +// New512 returns a new hash.Hash computing the BLAKE2b-512 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New512(key []byte) (hash.Hash, error) { return newDigest(Size, key) } + +// New384 returns a new hash.Hash computing the BLAKE2b-384 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New384(key []byte) (hash.Hash, error) { return newDigest(Size384, key) } + +// New256 returns a new hash.Hash computing the BLAKE2b-256 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New256(key []byte) (hash.Hash, error) { return newDigest(Size256, key) } + +// New returns a new hash.Hash computing the BLAKE2b checksum with a custom length. +// A non-nil key turns the hash into a MAC. The key must be between zero and 64 bytes long. +// The hash size can be a value between 1 and 64 but it is highly recommended to use +// values equal or greater than: +// - 32 if BLAKE2b is used as a hash function (The key is zero bytes long). +// - 16 if BLAKE2b is used as a MAC function (The key is at least 16 bytes long). +// When the key is nil, the returned hash.Hash implements BinaryMarshaler +// and BinaryUnmarshaler for state (de)serialization as documented by hash.Hash. +func New(size int, key []byte) (hash.Hash, error) { return newDigest(size, key) } + +func newDigest(hashSize int, key []byte) (*digest, error) { + if hashSize < 1 || hashSize > Size { + return nil, errHashSize + } + if len(key) > Size { + return nil, errKeySize + } + d := &digest{ + size: hashSize, + keyLen: len(key), + } + copy(d.key[:], key) + d.Reset() + return d, nil +} + +func checkSum(sum *[Size]byte, hashSize int, data []byte) { + h := iv + h[0] ^= uint64(hashSize) | (1 << 16) | (1 << 24) + var c [2]uint64 + + if length := len(data); length > BlockSize { + n := length &^ (BlockSize - 1) + if length == n { + n -= BlockSize + } + hashBlocks(&h, &c, 0, data[:n]) + data = data[n:] + } + + var block [BlockSize]byte + offset := copy(block[:], data) + remaining := uint64(BlockSize - offset) + if c[0] < remaining { + c[1]-- + } + c[0] -= remaining + + hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) + + for i, v := range h[:(hashSize+7)/8] { + binary.LittleEndian.PutUint64(sum[8*i:], v) + } +} + +type digest struct { + h [8]uint64 + c [2]uint64 + size int + block [BlockSize]byte + offset int + + key [BlockSize]byte + keyLen int +} + +const ( + magic = "b2b" + marshaledSize = len(magic) + 8*8 + 2*8 + 1 + BlockSize + 1 +) + +func (d *digest) MarshalBinary() ([]byte, error) { + if d.keyLen != 0 { + return nil, errors.New("crypto/blake2b: cannot marshal MACs") + } + b := make([]byte, 0, marshaledSize) + b = append(b, magic...) + for i := 0; i < 8; i++ { + b = appendUint64(b, d.h[i]) + } + b = appendUint64(b, d.c[0]) + b = appendUint64(b, d.c[1]) + // Maximum value for size is 64 + b = append(b, byte(d.size)) + b = append(b, d.block[:]...) + b = append(b, byte(d.offset)) + return b, nil +} + +func (d *digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic) || string(b[:len(magic)]) != magic { + return errors.New("crypto/blake2b: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("crypto/blake2b: invalid hash state size") + } + b = b[len(magic):] + for i := 0; i < 8; i++ { + b, d.h[i] = consumeUint64(b) + } + b, d.c[0] = consumeUint64(b) + b, d.c[1] = consumeUint64(b) + d.size = int(b[0]) + b = b[1:] + copy(d.block[:], b[:BlockSize]) + b = b[BlockSize:] + d.offset = int(b[0]) + return nil +} + +func (d *digest) BlockSize() int { return BlockSize } + +func (d *digest) Size() int { return d.size } + +func (d *digest) Reset() { + d.h = iv + d.h[0] ^= uint64(d.size) | (uint64(d.keyLen) << 8) | (1 << 16) | (1 << 24) + d.offset, d.c[0], d.c[1] = 0, 0, 0 + if d.keyLen > 0 { + d.block = d.key + d.offset = BlockSize + } +} + +func (d *digest) Write(p []byte) (n int, err error) { + n = len(p) + + if d.offset > 0 { + remaining := BlockSize - d.offset + if n <= remaining { + d.offset += copy(d.block[d.offset:], p) + return + } + copy(d.block[d.offset:], p[:remaining]) + hashBlocks(&d.h, &d.c, 0, d.block[:]) + d.offset = 0 + p = p[remaining:] + } + + if length := len(p); length > BlockSize { + nn := length &^ (BlockSize - 1) + if length == nn { + nn -= BlockSize + } + hashBlocks(&d.h, &d.c, 0, p[:nn]) + p = p[nn:] + } + + if len(p) > 0 { + d.offset += copy(d.block[:], p) + } + + return +} + +func (d *digest) Sum(sum []byte) []byte { + var hash [Size]byte + d.finalize(&hash) + return append(sum, hash[:d.size]...) +} + +func (d *digest) finalize(hash *[Size]byte) { + var block [BlockSize]byte + copy(block[:], d.block[:d.offset]) + remaining := uint64(BlockSize - d.offset) + + c := d.c + if c[0] < remaining { + c[1]-- + } + c[0] -= remaining + + h := d.h + hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) + + for i, v := range h { + binary.LittleEndian.PutUint64(hash[8*i:], v) + } +} + +func appendUint64(b []byte, x uint64) []byte { + var a [8]byte + binary.BigEndian.PutUint64(a[:], x) + return append(b, a[:]...) +} + +func appendUint32(b []byte, x uint32) []byte { + var a [4]byte + binary.BigEndian.PutUint32(a[:], x) + return append(b, a[:]...) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + x := binary.BigEndian.Uint64(b) + return b[8:], x +} + +func consumeUint32(b []byte) ([]byte, uint32) { + x := binary.BigEndian.Uint32(b) + return b[4:], x +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go new file mode 100644 index 0000000..4d31dd0 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine + +package blake2b + +import "golang.org/x/sys/cpu" + +func init() { + useAVX2 = cpu.X86.HasAVX2 + useAVX = cpu.X86.HasAVX + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + switch { + case useAVX2: + hashBlocksAVX2(h, c, flag, blocks) + case useAVX: + hashBlocksAVX(h, c, flag, blocks) + case useSSE4: + hashBlocksSSE4(h, c, flag, blocks) + default: + hashBlocksGeneric(h, c, flag, blocks) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s new file mode 100644 index 0000000..5593b1b --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s @@ -0,0 +1,750 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·AVX2_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX2_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +DATA ·AVX2_iv0<>+0x10(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX2_iv0<>+0x18(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX2_iv0<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_iv1<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·AVX2_iv1<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +DATA ·AVX2_iv1<>+0x10(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX2_iv1<>+0x18(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX2_iv1<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +DATA ·AVX2_c40<>+0x10(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+0x18(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX2_c40<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +DATA ·AVX2_c48<>+0x10(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+0x18(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX2_c48<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +GLOBL ·AVX_iv0<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX_iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX_iv1<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv2<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·AVX_iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·AVX_iv2<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX_iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX_iv3<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·AVX_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX_c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·AVX_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX_c48<>(SB), (NOPTR+RODATA), $16 + +#define VPERMQ_0x39_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x39 +#define VPERMQ_0x93_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x93 +#define VPERMQ_0x4E_Y2_Y2 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xd2; BYTE $0x4e +#define VPERMQ_0x93_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x93 +#define VPERMQ_0x39_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x39 + +#define ROUND_AVX2(m0, m1, m2, m3, t, c40, c48) \ + VPADDQ m0, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFD $-79, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPSHUFB c40, Y1, Y1; \ + VPADDQ m1, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFB c48, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPADDQ Y1, Y1, t; \ + VPSRLQ $63, Y1, Y1; \ + VPXOR t, Y1, Y1; \ + VPERMQ_0x39_Y1_Y1; \ + VPERMQ_0x4E_Y2_Y2; \ + VPERMQ_0x93_Y3_Y3; \ + VPADDQ m2, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFD $-79, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPSHUFB c40, Y1, Y1; \ + VPADDQ m3, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFB c48, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPADDQ Y1, Y1, t; \ + VPSRLQ $63, Y1, Y1; \ + VPXOR t, Y1, Y1; \ + VPERMQ_0x39_Y3_Y3; \ + VPERMQ_0x4E_Y2_Y2; \ + VPERMQ_0x93_Y1_Y1 + +#define VMOVQ_SI_X11_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x1E +#define VMOVQ_SI_X12_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x26 +#define VMOVQ_SI_X13_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x2E +#define VMOVQ_SI_X14_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x36 +#define VMOVQ_SI_X15_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x3E + +#define VMOVQ_SI_X11(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x5E; BYTE $n +#define VMOVQ_SI_X12(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x66; BYTE $n +#define VMOVQ_SI_X13(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x6E; BYTE $n +#define VMOVQ_SI_X14(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x76; BYTE $n +#define VMOVQ_SI_X15(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x7E; BYTE $n + +#define VPINSRQ_1_SI_X11_0 BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x1E; BYTE $0x01 +#define VPINSRQ_1_SI_X12_0 BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x26; BYTE $0x01 +#define VPINSRQ_1_SI_X13_0 BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x2E; BYTE $0x01 +#define VPINSRQ_1_SI_X14_0 BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x36; BYTE $0x01 +#define VPINSRQ_1_SI_X15_0 BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x3E; BYTE $0x01 + +#define VPINSRQ_1_SI_X11(n) BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x5E; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X12(n) BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x66; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X13(n) BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x6E; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X14(n) BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x76; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X15(n) BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x7E; BYTE $n; BYTE $0x01 + +#define VMOVQ_R8_X15 BYTE $0xC4; BYTE $0x41; BYTE $0xF9; BYTE $0x6E; BYTE $0xF8 +#define VPINSRQ_1_R9_X15 BYTE $0xC4; BYTE $0x43; BYTE $0x81; BYTE $0x22; BYTE $0xF9; BYTE $0x01 + +// load msg: Y12 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y12(i0, i1, i2, i3) \ + VMOVQ_SI_X12(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X12(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y12, Y12 + +// load msg: Y13 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y13(i0, i1, i2, i3) \ + VMOVQ_SI_X13(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X13(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y13, Y13 + +// load msg: Y14 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y14(i0, i1, i2, i3) \ + VMOVQ_SI_X14(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X14(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y14, Y14 + +// load msg: Y15 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y15(i0, i1, i2, i3) \ + VMOVQ_SI_X15(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X15(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() \ + VMOVQ_SI_X12_0; \ + VMOVQ_SI_X11(4*8); \ + VPINSRQ_1_SI_X12(2*8); \ + VPINSRQ_1_SI_X11(6*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(1, 3, 5, 7); \ + LOAD_MSG_AVX2_Y14(8, 10, 12, 14); \ + LOAD_MSG_AVX2_Y15(9, 11, 13, 15) + +#define LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() \ + LOAD_MSG_AVX2_Y12(14, 4, 9, 13); \ + LOAD_MSG_AVX2_Y13(10, 8, 15, 6); \ + VMOVQ_SI_X11(11*8); \ + VPSHUFD $0x4E, 0*8(SI), X14; \ + VPINSRQ_1_SI_X11(5*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + LOAD_MSG_AVX2_Y15(12, 2, 7, 3) + +#define LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() \ + VMOVQ_SI_X11(5*8); \ + VMOVDQU 11*8(SI), X12; \ + VPINSRQ_1_SI_X11(15*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + VMOVQ_SI_X13(8*8); \ + VMOVQ_SI_X11(2*8); \ + VPINSRQ_1_SI_X13_0; \ + VPINSRQ_1_SI_X11(13*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(10, 3, 7, 9); \ + LOAD_MSG_AVX2_Y15(14, 6, 1, 4) + +#define LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() \ + LOAD_MSG_AVX2_Y12(7, 3, 13, 11); \ + LOAD_MSG_AVX2_Y13(9, 1, 12, 14); \ + LOAD_MSG_AVX2_Y14(2, 5, 4, 15); \ + VMOVQ_SI_X15(6*8); \ + VMOVQ_SI_X11_0; \ + VPINSRQ_1_SI_X15(10*8); \ + VPINSRQ_1_SI_X11(8*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() \ + LOAD_MSG_AVX2_Y12(9, 5, 2, 10); \ + VMOVQ_SI_X13_0; \ + VMOVQ_SI_X11(4*8); \ + VPINSRQ_1_SI_X13(7*8); \ + VPINSRQ_1_SI_X11(15*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(14, 11, 6, 3); \ + LOAD_MSG_AVX2_Y15(1, 12, 8, 13) + +#define LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X11_0; \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X11(8*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(12, 10, 11, 3); \ + LOAD_MSG_AVX2_Y14(4, 7, 15, 1); \ + LOAD_MSG_AVX2_Y15(13, 5, 14, 9) + +#define LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() \ + LOAD_MSG_AVX2_Y12(12, 1, 14, 4); \ + LOAD_MSG_AVX2_Y13(5, 15, 13, 10); \ + VMOVQ_SI_X14_0; \ + VPSHUFD $0x4E, 8*8(SI), X11; \ + VPINSRQ_1_SI_X14(6*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + LOAD_MSG_AVX2_Y15(7, 3, 2, 11) + +#define LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() \ + LOAD_MSG_AVX2_Y12(13, 7, 12, 3); \ + LOAD_MSG_AVX2_Y13(11, 14, 1, 9); \ + LOAD_MSG_AVX2_Y14(5, 15, 8, 2); \ + VMOVQ_SI_X15_0; \ + VMOVQ_SI_X11(6*8); \ + VPINSRQ_1_SI_X15(4*8); \ + VPINSRQ_1_SI_X11(10*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() \ + VMOVQ_SI_X12(6*8); \ + VMOVQ_SI_X11(11*8); \ + VPINSRQ_1_SI_X12(14*8); \ + VPINSRQ_1_SI_X11_0; \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(15, 9, 3, 8); \ + VMOVQ_SI_X11(1*8); \ + VMOVDQU 12*8(SI), X14; \ + VPINSRQ_1_SI_X11(10*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + VMOVQ_SI_X15(2*8); \ + VMOVDQU 4*8(SI), X11; \ + VPINSRQ_1_SI_X15(7*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() \ + LOAD_MSG_AVX2_Y12(10, 8, 7, 1); \ + VMOVQ_SI_X13(2*8); \ + VPSHUFD $0x4E, 5*8(SI), X11; \ + VPINSRQ_1_SI_X13(4*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(15, 9, 3, 13); \ + VMOVQ_SI_X15(11*8); \ + VMOVQ_SI_X11(12*8); \ + VPINSRQ_1_SI_X15(14*8); \ + VPINSRQ_1_SI_X11_0; \ + VINSERTI128 $1, X11, Y15, Y15 + +// func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksAVX2(SB), 4, $320-48 // frame size = 288 + 32 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, DX + MOVQ SP, R9 + ADDQ $31, R9 + ANDQ $~31, R9 + MOVQ R9, SP + + MOVQ CX, 16(SP) + XORQ CX, CX + MOVQ CX, 24(SP) + + VMOVDQU ·AVX2_c40<>(SB), Y4 + VMOVDQU ·AVX2_c48<>(SB), Y5 + + VMOVDQU 0(AX), Y8 + VMOVDQU 32(AX), Y9 + VMOVDQU ·AVX2_iv0<>(SB), Y6 + VMOVDQU ·AVX2_iv1<>(SB), Y7 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + MOVQ R9, 8(SP) + +loop: + ADDQ $128, R8 + MOVQ R8, 0(SP) + CMPQ R8, $128 + JGE noinc + INCQ R9 + MOVQ R9, 8(SP) + +noinc: + VMOVDQA Y8, Y0 + VMOVDQA Y9, Y1 + VMOVDQA Y6, Y2 + VPXOR 0(SP), Y7, Y3 + + LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() + VMOVDQA Y12, 32(SP) + VMOVDQA Y13, 64(SP) + VMOVDQA Y14, 96(SP) + VMOVDQA Y15, 128(SP) + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() + VMOVDQA Y12, 160(SP) + VMOVDQA Y13, 192(SP) + VMOVDQA Y14, 224(SP) + VMOVDQA Y15, 256(SP) + + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + + ROUND_AVX2(32(SP), 64(SP), 96(SP), 128(SP), Y10, Y4, Y5) + ROUND_AVX2(160(SP), 192(SP), 224(SP), 256(SP), Y10, Y4, Y5) + + VPXOR Y0, Y8, Y8 + VPXOR Y1, Y9, Y9 + VPXOR Y2, Y8, Y8 + VPXOR Y3, Y9, Y9 + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + + VMOVDQU Y8, 0(AX) + VMOVDQU Y9, 32(AX) + VZEROUPPER + + MOVQ DX, SP + RET + +#define VPUNPCKLQDQ_X2_X2_X15 BYTE $0xC5; BYTE $0x69; BYTE $0x6C; BYTE $0xFA +#define VPUNPCKLQDQ_X3_X3_X15 BYTE $0xC5; BYTE $0x61; BYTE $0x6C; BYTE $0xFB +#define VPUNPCKLQDQ_X7_X7_X15 BYTE $0xC5; BYTE $0x41; BYTE $0x6C; BYTE $0xFF +#define VPUNPCKLQDQ_X13_X13_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x11; BYTE $0x6C; BYTE $0xFD +#define VPUNPCKLQDQ_X14_X14_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x09; BYTE $0x6C; BYTE $0xFE + +#define VPUNPCKHQDQ_X15_X2_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x69; BYTE $0x6D; BYTE $0xD7 +#define VPUNPCKHQDQ_X15_X3_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xDF +#define VPUNPCKHQDQ_X15_X6_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x49; BYTE $0x6D; BYTE $0xF7 +#define VPUNPCKHQDQ_X15_X7_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xFF +#define VPUNPCKHQDQ_X15_X3_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xD7 +#define VPUNPCKHQDQ_X15_X7_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xF7 +#define VPUNPCKHQDQ_X15_X13_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xDF +#define VPUNPCKHQDQ_X15_X13_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xFF + +#define SHUFFLE_AVX() \ + VMOVDQA X6, X13; \ + VMOVDQA X2, X14; \ + VMOVDQA X4, X6; \ + VPUNPCKLQDQ_X13_X13_X15; \ + VMOVDQA X5, X4; \ + VMOVDQA X6, X5; \ + VPUNPCKHQDQ_X15_X7_X6; \ + VPUNPCKLQDQ_X7_X7_X15; \ + VPUNPCKHQDQ_X15_X13_X7; \ + VPUNPCKLQDQ_X3_X3_X15; \ + VPUNPCKHQDQ_X15_X2_X2; \ + VPUNPCKLQDQ_X14_X14_X15; \ + VPUNPCKHQDQ_X15_X3_X3; \ + +#define SHUFFLE_AVX_INV() \ + VMOVDQA X2, X13; \ + VMOVDQA X4, X14; \ + VPUNPCKLQDQ_X2_X2_X15; \ + VMOVDQA X5, X4; \ + VPUNPCKHQDQ_X15_X3_X2; \ + VMOVDQA X14, X5; \ + VPUNPCKLQDQ_X3_X3_X15; \ + VMOVDQA X6, X14; \ + VPUNPCKHQDQ_X15_X13_X3; \ + VPUNPCKLQDQ_X7_X7_X15; \ + VPUNPCKHQDQ_X15_X6_X6; \ + VPUNPCKLQDQ_X14_X14_X15; \ + VPUNPCKHQDQ_X15_X7_X7; \ + +#define HALF_ROUND_AVX(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ + VPADDQ m0, v0, v0; \ + VPADDQ v2, v0, v0; \ + VPADDQ m1, v1, v1; \ + VPADDQ v3, v1, v1; \ + VPXOR v0, v6, v6; \ + VPXOR v1, v7, v7; \ + VPSHUFD $-79, v6, v6; \ + VPSHUFD $-79, v7, v7; \ + VPADDQ v6, v4, v4; \ + VPADDQ v7, v5, v5; \ + VPXOR v4, v2, v2; \ + VPXOR v5, v3, v3; \ + VPSHUFB c40, v2, v2; \ + VPSHUFB c40, v3, v3; \ + VPADDQ m2, v0, v0; \ + VPADDQ v2, v0, v0; \ + VPADDQ m3, v1, v1; \ + VPADDQ v3, v1, v1; \ + VPXOR v0, v6, v6; \ + VPXOR v1, v7, v7; \ + VPSHUFB c48, v6, v6; \ + VPSHUFB c48, v7, v7; \ + VPADDQ v6, v4, v4; \ + VPADDQ v7, v5, v5; \ + VPXOR v4, v2, v2; \ + VPXOR v5, v3, v3; \ + VPADDQ v2, v2, t0; \ + VPSRLQ $63, v2, v2; \ + VPXOR t0, v2, v2; \ + VPADDQ v3, v3, t0; \ + VPSRLQ $63, v3, v3; \ + VPXOR t0, v3, v3 + +// load msg: X12 = (i0, i1), X13 = (i2, i3), X14 = (i4, i5), X15 = (i6, i7) +// i0, i1, i2, i3, i4, i5, i6, i7 must not be 0 +#define LOAD_MSG_AVX(i0, i1, i2, i3, i4, i5, i6, i7) \ + VMOVQ_SI_X12(i0*8); \ + VMOVQ_SI_X13(i2*8); \ + VMOVQ_SI_X14(i4*8); \ + VMOVQ_SI_X15(i6*8); \ + VPINSRQ_1_SI_X12(i1*8); \ + VPINSRQ_1_SI_X13(i3*8); \ + VPINSRQ_1_SI_X14(i5*8); \ + VPINSRQ_1_SI_X15(i7*8) + +// load msg: X12 = (0, 2), X13 = (4, 6), X14 = (1, 3), X15 = (5, 7) +#define LOAD_MSG_AVX_0_2_4_6_1_3_5_7() \ + VMOVQ_SI_X12_0; \ + VMOVQ_SI_X13(4*8); \ + VMOVQ_SI_X14(1*8); \ + VMOVQ_SI_X15(5*8); \ + VPINSRQ_1_SI_X12(2*8); \ + VPINSRQ_1_SI_X13(6*8); \ + VPINSRQ_1_SI_X14(3*8); \ + VPINSRQ_1_SI_X15(7*8) + +// load msg: X12 = (1, 0), X13 = (11, 5), X14 = (12, 2), X15 = (7, 3) +#define LOAD_MSG_AVX_1_0_11_5_12_2_7_3() \ + VPSHUFD $0x4E, 0*8(SI), X12; \ + VMOVQ_SI_X13(11*8); \ + VMOVQ_SI_X14(12*8); \ + VMOVQ_SI_X15(7*8); \ + VPINSRQ_1_SI_X13(5*8); \ + VPINSRQ_1_SI_X14(2*8); \ + VPINSRQ_1_SI_X15(3*8) + +// load msg: X12 = (11, 12), X13 = (5, 15), X14 = (8, 0), X15 = (2, 13) +#define LOAD_MSG_AVX_11_12_5_15_8_0_2_13() \ + VMOVDQU 11*8(SI), X12; \ + VMOVQ_SI_X13(5*8); \ + VMOVQ_SI_X14(8*8); \ + VMOVQ_SI_X15(2*8); \ + VPINSRQ_1_SI_X13(15*8); \ + VPINSRQ_1_SI_X14_0; \ + VPINSRQ_1_SI_X15(13*8) + +// load msg: X12 = (2, 5), X13 = (4, 15), X14 = (6, 10), X15 = (0, 8) +#define LOAD_MSG_AVX_2_5_4_15_6_10_0_8() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X13(4*8); \ + VMOVQ_SI_X14(6*8); \ + VMOVQ_SI_X15_0; \ + VPINSRQ_1_SI_X12(5*8); \ + VPINSRQ_1_SI_X13(15*8); \ + VPINSRQ_1_SI_X14(10*8); \ + VPINSRQ_1_SI_X15(8*8) + +// load msg: X12 = (9, 5), X13 = (2, 10), X14 = (0, 7), X15 = (4, 15) +#define LOAD_MSG_AVX_9_5_2_10_0_7_4_15() \ + VMOVQ_SI_X12(9*8); \ + VMOVQ_SI_X13(2*8); \ + VMOVQ_SI_X14_0; \ + VMOVQ_SI_X15(4*8); \ + VPINSRQ_1_SI_X12(5*8); \ + VPINSRQ_1_SI_X13(10*8); \ + VPINSRQ_1_SI_X14(7*8); \ + VPINSRQ_1_SI_X15(15*8) + +// load msg: X12 = (2, 6), X13 = (0, 8), X14 = (12, 10), X15 = (11, 3) +#define LOAD_MSG_AVX_2_6_0_8_12_10_11_3() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X13_0; \ + VMOVQ_SI_X14(12*8); \ + VMOVQ_SI_X15(11*8); \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X13(8*8); \ + VPINSRQ_1_SI_X14(10*8); \ + VPINSRQ_1_SI_X15(3*8) + +// load msg: X12 = (0, 6), X13 = (9, 8), X14 = (7, 3), X15 = (2, 11) +#define LOAD_MSG_AVX_0_6_9_8_7_3_2_11() \ + MOVQ 0*8(SI), X12; \ + VPSHUFD $0x4E, 8*8(SI), X13; \ + MOVQ 7*8(SI), X14; \ + MOVQ 2*8(SI), X15; \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X14(3*8); \ + VPINSRQ_1_SI_X15(11*8) + +// load msg: X12 = (6, 14), X13 = (11, 0), X14 = (15, 9), X15 = (3, 8) +#define LOAD_MSG_AVX_6_14_11_0_15_9_3_8() \ + MOVQ 6*8(SI), X12; \ + MOVQ 11*8(SI), X13; \ + MOVQ 15*8(SI), X14; \ + MOVQ 3*8(SI), X15; \ + VPINSRQ_1_SI_X12(14*8); \ + VPINSRQ_1_SI_X13_0; \ + VPINSRQ_1_SI_X14(9*8); \ + VPINSRQ_1_SI_X15(8*8) + +// load msg: X12 = (5, 15), X13 = (8, 2), X14 = (0, 4), X15 = (6, 10) +#define LOAD_MSG_AVX_5_15_8_2_0_4_6_10() \ + MOVQ 5*8(SI), X12; \ + MOVQ 8*8(SI), X13; \ + MOVQ 0*8(SI), X14; \ + MOVQ 6*8(SI), X15; \ + VPINSRQ_1_SI_X12(15*8); \ + VPINSRQ_1_SI_X13(2*8); \ + VPINSRQ_1_SI_X14(4*8); \ + VPINSRQ_1_SI_X15(10*8) + +// load msg: X12 = (12, 13), X13 = (1, 10), X14 = (2, 7), X15 = (4, 5) +#define LOAD_MSG_AVX_12_13_1_10_2_7_4_5() \ + VMOVDQU 12*8(SI), X12; \ + MOVQ 1*8(SI), X13; \ + MOVQ 2*8(SI), X14; \ + VPINSRQ_1_SI_X13(10*8); \ + VPINSRQ_1_SI_X14(7*8); \ + VMOVDQU 4*8(SI), X15 + +// load msg: X12 = (15, 9), X13 = (3, 13), X14 = (11, 14), X15 = (12, 0) +#define LOAD_MSG_AVX_15_9_3_13_11_14_12_0() \ + MOVQ 15*8(SI), X12; \ + MOVQ 3*8(SI), X13; \ + MOVQ 11*8(SI), X14; \ + MOVQ 12*8(SI), X15; \ + VPINSRQ_1_SI_X12(9*8); \ + VPINSRQ_1_SI_X13(13*8); \ + VPINSRQ_1_SI_X14(14*8); \ + VPINSRQ_1_SI_X15_0 + +// func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksAVX(SB), 4, $288-48 // frame size = 272 + 16 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, BP + MOVQ SP, R9 + ADDQ $15, R9 + ANDQ $~15, R9 + MOVQ R9, SP + + VMOVDQU ·AVX_c40<>(SB), X0 + VMOVDQU ·AVX_c48<>(SB), X1 + VMOVDQA X0, X8 + VMOVDQA X1, X9 + + VMOVDQU ·AVX_iv3<>(SB), X0 + VMOVDQA X0, 0(SP) + XORQ CX, 0(SP) // 0(SP) = ·AVX_iv3 ^ (CX || 0) + + VMOVDQU 0(AX), X10 + VMOVDQU 16(AX), X11 + VMOVDQU 32(AX), X2 + VMOVDQU 48(AX), X3 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + +loop: + ADDQ $128, R8 + CMPQ R8, $128 + JGE noinc + INCQ R9 + +noinc: + VMOVQ_R8_X15 + VPINSRQ_1_R9_X15 + + VMOVDQA X10, X0 + VMOVDQA X11, X1 + VMOVDQU ·AVX_iv0<>(SB), X4 + VMOVDQU ·AVX_iv1<>(SB), X5 + VMOVDQU ·AVX_iv2<>(SB), X6 + + VPXOR X15, X6, X6 + VMOVDQA 0(SP), X7 + + LOAD_MSG_AVX_0_2_4_6_1_3_5_7() + VMOVDQA X12, 16(SP) + VMOVDQA X13, 32(SP) + VMOVDQA X14, 48(SP) + VMOVDQA X15, 64(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(8, 10, 12, 14, 9, 11, 13, 15) + VMOVDQA X12, 80(SP) + VMOVDQA X13, 96(SP) + VMOVDQA X14, 112(SP) + VMOVDQA X15, 128(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(14, 4, 9, 13, 10, 8, 15, 6) + VMOVDQA X12, 144(SP) + VMOVDQA X13, 160(SP) + VMOVDQA X14, 176(SP) + VMOVDQA X15, 192(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_1_0_11_5_12_2_7_3() + VMOVDQA X12, 208(SP) + VMOVDQA X13, 224(SP) + VMOVDQA X14, 240(SP) + VMOVDQA X15, 256(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_11_12_5_15_8_0_2_13() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(10, 3, 7, 9, 14, 6, 1, 4) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(7, 3, 13, 11, 9, 1, 12, 14) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_2_5_4_15_6_10_0_8() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_9_5_2_10_0_7_4_15() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(14, 11, 6, 3, 1, 12, 8, 13) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_2_6_0_8_12_10_11_3() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(4, 7, 15, 1, 13, 5, 14, 9) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(12, 1, 14, 4, 5, 15, 13, 10) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_0_6_9_8_7_3_2_11() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(13, 7, 12, 3, 11, 14, 1, 9) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_5_15_8_2_0_4_6_10() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_6_14_11_0_15_9_3_8() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_12_13_1_10_2_7_4_5() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(10, 8, 7, 1, 2, 4, 6, 5) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_15_9_3_13_11_14_12_0() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X15, X8, X9) + SHUFFLE_AVX() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X15, X8, X9) + SHUFFLE_AVX_INV() + + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X15, X8, X9) + SHUFFLE_AVX() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X15, X8, X9) + SHUFFLE_AVX_INV() + + VMOVDQU 32(AX), X14 + VMOVDQU 48(AX), X15 + VPXOR X0, X10, X10 + VPXOR X1, X11, X11 + VPXOR X2, X14, X14 + VPXOR X3, X15, X15 + VPXOR X4, X10, X10 + VPXOR X5, X11, X11 + VPXOR X6, X14, X2 + VPXOR X7, X15, X3 + VMOVDQU X2, 32(AX) + VMOVDQU X3, 48(AX) + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + VMOVDQU X10, 0(AX) + VMOVDQU X11, 16(AX) + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + VZEROUPPER + + MOVQ BP, SP + RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go new file mode 100644 index 0000000..30e2fcd --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go @@ -0,0 +1,24 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.7,amd64,!gccgo,!appengine + +package blake2b + +import "golang.org/x/sys/cpu" + +func init() { + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + if useSSE4 { + hashBlocksSSE4(h, c, flag, blocks) + } else { + hashBlocksGeneric(h, c, flag, blocks) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s new file mode 100644 index 0000000..578e947 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s @@ -0,0 +1,281 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +GLOBL ·iv0<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b +DATA ·iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·iv1<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv2<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·iv2<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b +DATA ·iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 +GLOBL ·iv3<>(SB), (NOPTR+RODATA), $16 + +DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 + +#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v6, t1; \ + PUNPCKLQDQ v6, t2; \ + PUNPCKHQDQ v7, v6; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ v7, t2; \ + MOVO t1, v7; \ + MOVO v2, t1; \ + PUNPCKHQDQ t2, v7; \ + PUNPCKLQDQ v3, t2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v3 + +#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v2, t1; \ + PUNPCKLQDQ v2, t2; \ + PUNPCKHQDQ v3, v2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ v3, t2; \ + MOVO t1, v3; \ + MOVO v6, t1; \ + PUNPCKHQDQ t2, v3; \ + PUNPCKLQDQ v7, t2; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v7 + +#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ + PADDQ m0, v0; \ + PADDQ m1, v1; \ + PADDQ v2, v0; \ + PADDQ v3, v1; \ + PXOR v0, v6; \ + PXOR v1, v7; \ + PSHUFD $0xB1, v6, v6; \ + PSHUFD $0xB1, v7, v7; \ + PADDQ v6, v4; \ + PADDQ v7, v5; \ + PXOR v4, v2; \ + PXOR v5, v3; \ + PSHUFB c40, v2; \ + PSHUFB c40, v3; \ + PADDQ m2, v0; \ + PADDQ m3, v1; \ + PADDQ v2, v0; \ + PADDQ v3, v1; \ + PXOR v0, v6; \ + PXOR v1, v7; \ + PSHUFB c48, v6; \ + PSHUFB c48, v7; \ + PADDQ v6, v4; \ + PADDQ v7, v5; \ + PXOR v4, v2; \ + PXOR v5, v3; \ + MOVOU v2, t0; \ + PADDQ v2, t0; \ + PSRLQ $63, v2; \ + PXOR t0, v2; \ + MOVOU v3, t0; \ + PADDQ v3, t0; \ + PSRLQ $63, v3; \ + PXOR t0, v3 + +#define LOAD_MSG(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7) \ + MOVQ i0*8(src), m0; \ + PINSRQ $1, i1*8(src), m0; \ + MOVQ i2*8(src), m1; \ + PINSRQ $1, i3*8(src), m1; \ + MOVQ i4*8(src), m2; \ + PINSRQ $1, i5*8(src), m2; \ + MOVQ i6*8(src), m3; \ + PINSRQ $1, i7*8(src), m3 + +// func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksSSE4(SB), 4, $288-48 // frame size = 272 + 16 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, BP + MOVQ SP, R9 + ADDQ $15, R9 + ANDQ $~15, R9 + MOVQ R9, SP + + MOVOU ·iv3<>(SB), X0 + MOVO X0, 0(SP) + XORQ CX, 0(SP) // 0(SP) = ·iv3 ^ (CX || 0) + + MOVOU ·c40<>(SB), X13 + MOVOU ·c48<>(SB), X14 + + MOVOU 0(AX), X12 + MOVOU 16(AX), X15 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + +loop: + ADDQ $128, R8 + CMPQ R8, $128 + JGE noinc + INCQ R9 + +noinc: + MOVQ R8, X8 + PINSRQ $1, R9, X8 + + MOVO X12, X0 + MOVO X15, X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVOU ·iv0<>(SB), X4 + MOVOU ·iv1<>(SB), X5 + MOVOU ·iv2<>(SB), X6 + + PXOR X8, X6 + MOVO 0(SP), X7 + + LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7) + MOVO X8, 16(SP) + MOVO X9, 32(SP) + MOVO X10, 48(SP) + MOVO X11, 64(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15) + MOVO X8, 80(SP) + MOVO X9, 96(SP) + MOVO X10, 112(SP) + MOVO X11, 128(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6) + MOVO X8, 144(SP) + MOVO X9, 160(SP) + MOVO X10, 176(SP) + MOVO X11, 192(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3) + MOVO X8, 208(SP) + MOVO X9, 224(SP) + MOVO X10, 240(SP) + MOVO X11, 256(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + MOVOU 32(AX), X10 + MOVOU 48(AX), X11 + PXOR X0, X12 + PXOR X1, X15 + PXOR X2, X10 + PXOR X3, X11 + PXOR X4, X12 + PXOR X5, X15 + PXOR X6, X10 + PXOR X7, X11 + MOVOU X10, 32(AX) + MOVOU X11, 48(AX) + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + MOVOU X12, 0(AX) + MOVOU X15, 16(AX) + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + + MOVQ BP, SP + RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go new file mode 100644 index 0000000..4bd2abc --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go @@ -0,0 +1,179 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blake2b + +import "encoding/binary" + +// the precomputed values for BLAKE2b +// there are 12 16-byte arrays - one for each round +// the entries are calculated from the sigma constants. +var precomputed = [12][16]byte{ + {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, + {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, + {11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4}, + {7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8}, + {9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13}, + {2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9}, + {12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11}, + {13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10}, + {6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5}, + {10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0}, + {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, // equal to the first + {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, // equal to the second +} + +func hashBlocksGeneric(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + var m [16]uint64 + c0, c1 := c[0], c[1] + + for i := 0; i < len(blocks); { + c0 += BlockSize + if c0 < BlockSize { + c1++ + } + + v0, v1, v2, v3, v4, v5, v6, v7 := h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] + v8, v9, v10, v11, v12, v13, v14, v15 := iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7] + v12 ^= c0 + v13 ^= c1 + v14 ^= flag + + for j := range m { + m[j] = binary.LittleEndian.Uint64(blocks[i:]) + i += 8 + } + + for j := range precomputed { + s := &(precomputed[j]) + + v0 += m[s[0]] + v0 += v4 + v12 ^= v0 + v12 = v12<<(64-32) | v12>>32 + v8 += v12 + v4 ^= v8 + v4 = v4<<(64-24) | v4>>24 + v1 += m[s[1]] + v1 += v5 + v13 ^= v1 + v13 = v13<<(64-32) | v13>>32 + v9 += v13 + v5 ^= v9 + v5 = v5<<(64-24) | v5>>24 + v2 += m[s[2]] + v2 += v6 + v14 ^= v2 + v14 = v14<<(64-32) | v14>>32 + v10 += v14 + v6 ^= v10 + v6 = v6<<(64-24) | v6>>24 + v3 += m[s[3]] + v3 += v7 + v15 ^= v3 + v15 = v15<<(64-32) | v15>>32 + v11 += v15 + v7 ^= v11 + v7 = v7<<(64-24) | v7>>24 + + v0 += m[s[4]] + v0 += v4 + v12 ^= v0 + v12 = v12<<(64-16) | v12>>16 + v8 += v12 + v4 ^= v8 + v4 = v4<<(64-63) | v4>>63 + v1 += m[s[5]] + v1 += v5 + v13 ^= v1 + v13 = v13<<(64-16) | v13>>16 + v9 += v13 + v5 ^= v9 + v5 = v5<<(64-63) | v5>>63 + v2 += m[s[6]] + v2 += v6 + v14 ^= v2 + v14 = v14<<(64-16) | v14>>16 + v10 += v14 + v6 ^= v10 + v6 = v6<<(64-63) | v6>>63 + v3 += m[s[7]] + v3 += v7 + v15 ^= v3 + v15 = v15<<(64-16) | v15>>16 + v11 += v15 + v7 ^= v11 + v7 = v7<<(64-63) | v7>>63 + + v0 += m[s[8]] + v0 += v5 + v15 ^= v0 + v15 = v15<<(64-32) | v15>>32 + v10 += v15 + v5 ^= v10 + v5 = v5<<(64-24) | v5>>24 + v1 += m[s[9]] + v1 += v6 + v12 ^= v1 + v12 = v12<<(64-32) | v12>>32 + v11 += v12 + v6 ^= v11 + v6 = v6<<(64-24) | v6>>24 + v2 += m[s[10]] + v2 += v7 + v13 ^= v2 + v13 = v13<<(64-32) | v13>>32 + v8 += v13 + v7 ^= v8 + v7 = v7<<(64-24) | v7>>24 + v3 += m[s[11]] + v3 += v4 + v14 ^= v3 + v14 = v14<<(64-32) | v14>>32 + v9 += v14 + v4 ^= v9 + v4 = v4<<(64-24) | v4>>24 + + v0 += m[s[12]] + v0 += v5 + v15 ^= v0 + v15 = v15<<(64-16) | v15>>16 + v10 += v15 + v5 ^= v10 + v5 = v5<<(64-63) | v5>>63 + v1 += m[s[13]] + v1 += v6 + v12 ^= v1 + v12 = v12<<(64-16) | v12>>16 + v11 += v12 + v6 ^= v11 + v6 = v6<<(64-63) | v6>>63 + v2 += m[s[14]] + v2 += v7 + v13 ^= v2 + v13 = v13<<(64-16) | v13>>16 + v8 += v13 + v7 ^= v8 + v7 = v7<<(64-63) | v7>>63 + v3 += m[s[15]] + v3 += v4 + v14 ^= v3 + v14 = v14<<(64-16) | v14>>16 + v9 += v14 + v4 ^= v9 + v4 = v4<<(64-63) | v4>>63 + + } + + h[0] ^= v0 ^ v8 + h[1] ^= v1 ^ v9 + h[2] ^= v2 ^ v10 + h[3] ^= v3 ^ v11 + h[4] ^= v4 ^ v12 + h[5] ^= v5 ^ v13 + h[6] ^= v6 ^ v14 + h[7] ^= v7 ^ v15 + } + c[0], c[1] = c0, c1 +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go new file mode 100644 index 0000000..da156a1 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go @@ -0,0 +1,11 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package blake2b + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + hashBlocksGeneric(h, c, flag, blocks) +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go new file mode 100644 index 0000000..52c414d --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2x.go @@ -0,0 +1,177 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blake2b + +import ( + "encoding/binary" + "errors" + "io" +) + +// XOF defines the interface to hash functions that +// support arbitrary-length output. +type XOF interface { + // Write absorbs more data into the hash's state. It panics if called + // after Read. + io.Writer + + // Read reads more output from the hash. It returns io.EOF if the limit + // has been reached. + io.Reader + + // Clone returns a copy of the XOF in its current state. + Clone() XOF + + // Reset resets the XOF to its initial state. + Reset() +} + +// OutputLengthUnknown can be used as the size argument to NewXOF to indicate +// the length of the output is not known in advance. +const OutputLengthUnknown = 0 + +// magicUnknownOutputLength is a magic value for the output size that indicates +// an unknown number of output bytes. +const magicUnknownOutputLength = (1 << 32) - 1 + +// maxOutputLength is the absolute maximum number of bytes to produce when the +// number of output bytes is unknown. +const maxOutputLength = (1 << 32) * 64 + +// NewXOF creates a new variable-output-length hash. The hash either produce a +// known number of bytes (1 <= size < 2**32-1), or an unknown number of bytes +// (size == OutputLengthUnknown). In the latter case, an absolute limit of +// 256GiB applies. +// +// A non-nil key turns the hash into a MAC. The key must between +// zero and 32 bytes long. +func NewXOF(size uint32, key []byte) (XOF, error) { + if len(key) > Size { + return nil, errKeySize + } + if size == magicUnknownOutputLength { + // 2^32-1 indicates an unknown number of bytes and thus isn't a + // valid length. + return nil, errors.New("blake2b: XOF length too large") + } + if size == OutputLengthUnknown { + size = magicUnknownOutputLength + } + x := &xof{ + d: digest{ + size: Size, + keyLen: len(key), + }, + length: size, + } + copy(x.d.key[:], key) + x.Reset() + return x, nil +} + +type xof struct { + d digest + length uint32 + remaining uint64 + cfg, root, block [Size]byte + offset int + nodeOffset uint32 + readMode bool +} + +func (x *xof) Write(p []byte) (n int, err error) { + if x.readMode { + panic("blake2b: write to XOF after read") + } + return x.d.Write(p) +} + +func (x *xof) Clone() XOF { + clone := *x + return &clone +} + +func (x *xof) Reset() { + x.cfg[0] = byte(Size) + binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length + binary.LittleEndian.PutUint32(x.cfg[12:], x.length) // XOF length + x.cfg[17] = byte(Size) // inner hash size + + x.d.Reset() + x.d.h[1] ^= uint64(x.length) << 32 + + x.remaining = uint64(x.length) + if x.remaining == magicUnknownOutputLength { + x.remaining = maxOutputLength + } + x.offset, x.nodeOffset = 0, 0 + x.readMode = false +} + +func (x *xof) Read(p []byte) (n int, err error) { + if !x.readMode { + x.d.finalize(&x.root) + x.readMode = true + } + + if x.remaining == 0 { + return 0, io.EOF + } + + n = len(p) + if uint64(n) > x.remaining { + n = int(x.remaining) + p = p[:n] + } + + if x.offset > 0 { + blockRemaining := Size - x.offset + if n < blockRemaining { + x.offset += copy(p, x.block[x.offset:]) + x.remaining -= uint64(n) + return + } + copy(p, x.block[x.offset:]) + p = p[blockRemaining:] + x.offset = 0 + x.remaining -= uint64(blockRemaining) + } + + for len(p) >= Size { + binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) + x.nodeOffset++ + + x.d.initConfig(&x.cfg) + x.d.Write(x.root[:]) + x.d.finalize(&x.block) + + copy(p, x.block[:]) + p = p[Size:] + x.remaining -= uint64(Size) + } + + if todo := len(p); todo > 0 { + if x.remaining < uint64(Size) { + x.cfg[0] = byte(x.remaining) + } + binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) + x.nodeOffset++ + + x.d.initConfig(&x.cfg) + x.d.Write(x.root[:]) + x.d.finalize(&x.block) + + x.offset = copy(p, x.block[:todo]) + x.remaining -= uint64(todo) + } + return +} + +func (d *digest) initConfig(cfg *[Size]byte) { + d.offset, d.c[0], d.c[1] = 0, 0, 0 + for i := range d.h { + d.h[i] = iv[i] ^ binary.LittleEndian.Uint64(cfg[i*8:]) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/register.go b/vendor/golang.org/x/crypto/blake2b/register.go new file mode 100644 index 0000000..efd689a --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/register.go @@ -0,0 +1,32 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.9 + +package blake2b + +import ( + "crypto" + "hash" +) + +func init() { + newHash256 := func() hash.Hash { + h, _ := New256(nil) + return h + } + newHash384 := func() hash.Hash { + h, _ := New384(nil) + return h + } + + newHash512 := func() hash.Hash { + h, _ := New512(nil) + return h + } + + crypto.RegisterHash(crypto.BLAKE2b_256, newHash256) + crypto.RegisterHash(crypto.BLAKE2b_384, newHash384) + crypto.RegisterHash(crypto.BLAKE2b_512, newHash512) +} diff --git a/vendor/golang.org/x/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go new file mode 100644 index 0000000..9d80f19 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/block.go @@ -0,0 +1,159 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blowfish + +// getNextWord returns the next big-endian uint32 value from the byte slice +// at the given position in a circular manner, updating the position. +func getNextWord(b []byte, pos *int) uint32 { + var w uint32 + j := *pos + for i := 0; i < 4; i++ { + w = w<<8 | uint32(b[j]) + j++ + if j >= len(b) { + j = 0 + } + } + *pos = j + return w +} + +// ExpandKey performs a key expansion on the given *Cipher. Specifically, it +// performs the Blowfish algorithm's key schedule which sets up the *Cipher's +// pi and substitution tables for calls to Encrypt. This is used, primarily, +// by the bcrypt package to reuse the Blowfish key schedule during its +// set up. It's unlikely that you need to use this directly. +func ExpandKey(key []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + // Using inlined getNextWord for performance. + var d uint32 + for k := 0; k < 4; k++ { + d = d<<8 | uint32(key[j]) + j++ + if j >= len(key) { + j = 0 + } + } + c.p[i] ^= d + } + + var l, r uint32 + for i := 0; i < 18; i += 2 { + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +// This is similar to ExpandKey, but folds the salt during the key +// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero +// salt passed in, reusing ExpandKey turns out to be a place of inefficiency +// and specializing it here is useful. +func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + c.p[i] ^= getNextWord(key, &j) + } + + j = 0 + var l, r uint32 + for i := 0; i < 18; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[0] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] + xr ^= c.p[17] + return xr, xl +} + +func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[17] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] + xr ^= c.p[0] + return xr, xl +} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go new file mode 100644 index 0000000..213bf20 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/cipher.go @@ -0,0 +1,99 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. +// +// Blowfish is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package blowfish // import "golang.org/x/crypto/blowfish" + +// The code is a port of Bruce Schneier's C implementation. +// See https://www.schneier.com/blowfish.html. + +import "strconv" + +// The Blowfish block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of Blowfish encryption using a particular key. +type Cipher struct { + p [18]uint32 + s0, s1, s2, s3 [256]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Blowfish key, from 1 to 56 bytes. +func NewCipher(key []byte) (*Cipher, error) { + var result Cipher + if k := len(key); k < 1 || k > 56 { + return nil, KeySizeError(k) + } + initCipher(&result) + ExpandKey(key, &result) + return &result, nil +} + +// NewSaltedCipher creates a returns a Cipher that folds a salt into its key +// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is +// sufficient and desirable. For bcrypt compatibility, the key can be over 56 +// bytes. +func NewSaltedCipher(key, salt []byte) (*Cipher, error) { + if len(salt) == 0 { + return NewCipher(key) + } + var result Cipher + if k := len(key); k < 1 { + return nil, KeySizeError(k) + } + initCipher(&result) + expandKeyWithSalt(key, salt, &result) + return &result, nil +} + +// BlockSize returns the Blowfish block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8-byte buffer src using the key k +// and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = encryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +// Decrypt decrypts the 8-byte buffer src using the key k +// and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = decryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +func initCipher(c *Cipher) { + copy(c.p[0:], p[0:]) + copy(c.s0[0:], s0[0:]) + copy(c.s1[0:], s1[0:]) + copy(c.s2[0:], s2[0:]) + copy(c.s3[0:], s3[0:]) +} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go new file mode 100644 index 0000000..d040775 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/const.go @@ -0,0 +1,199 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The startup permutation array and substitution boxes. +// They are the hexadecimal digits of PI; see: +// https://www.schneier.com/code/constants.txt. + +package blowfish + +var s0 = [256]uint32{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, +} + +var s1 = [256]uint32{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, +} + +var s2 = [256]uint32{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, +} + +var s3 = [256]uint32{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var p = [18]uint32{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go new file mode 100644 index 0000000..ddcbeb6 --- /dev/null +++ b/vendor/golang.org/x/crypto/cast5/cast5.go @@ -0,0 +1,533 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cast5 implements CAST5, as defined in RFC 2144. +// +// CAST5 is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package cast5 // import "golang.org/x/crypto/cast5" + +import "errors" + +const BlockSize = 8 +const KeySize = 16 + +type Cipher struct { + masking [16]uint32 + rotate [16]uint8 +} + +func NewCipher(key []byte) (c *Cipher, err error) { + if len(key) != KeySize { + return nil, errors.New("CAST5: keys must be 16 bytes") + } + + c = new(Cipher) + c.keySchedule(key) + return +} + +func (c *Cipher) BlockSize() int { + return BlockSize +} + +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +type keyScheduleA [4][7]uint8 +type keyScheduleB [4][5]uint8 + +// keyScheduleRound contains the magic values for a round of the key schedule. +// The keyScheduleA deals with the lines like: +// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] +// Conceptually, both x and z are in the same array, x first. The first +// element describes which word of this array gets written to and the +// second, which word gets read. So, for the line above, it's "4, 0", because +// it's writing to the first word of z, which, being after x, is word 4, and +// reading from the first word of x: word 0. +// +// Next are the indexes into the S-boxes. Now the array is treated as bytes. So +// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear +// that it's z that we're indexing. +// +// keyScheduleB deals with lines like: +// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] +// "K1" is ignored because key words are always written in order. So the five +// elements are the S-box indexes. They use the same form as in keyScheduleA, +// above. + +type keyScheduleRound struct{} +type keySchedule []keyScheduleRound + +var schedule = []struct { + a keyScheduleA + b keyScheduleB +}{ + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, + {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, + {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, + {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {3, 2, 0xc, 0xd, 8}, + {1, 0, 0xe, 0xf, 0xd}, + {7, 6, 8, 9, 3}, + {5, 4, 0xa, 0xb, 7}, + }, + }, + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, + {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, + {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, + {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {8, 9, 7, 6, 3}, + {0xa, 0xb, 5, 4, 7}, + {0xc, 0xd, 3, 2, 8}, + {0xe, 0xf, 1, 0, 0xd}, + }, + }, +} + +func (c *Cipher) keySchedule(in []byte) { + var t [8]uint32 + var k [32]uint32 + + for i := 0; i < 4; i++ { + j := i * 4 + t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) + } + + x := []byte{6, 7, 4, 5} + ki := 0 + + for half := 0; half < 2; half++ { + for _, round := range schedule { + for j := 0; j < 4; j++ { + var a [7]uint8 + copy(a[:], round.a[j][:]) + w := t[a[1]] + w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] + w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] + w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] + w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] + w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] + t[a[0]] = w + } + + for j := 0; j < 4; j++ { + var b [5]uint8 + copy(b[:], round.b[j][:]) + w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] + w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] + w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] + w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] + w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] + k[ki] = w + ki++ + } + } + } + + for i := 0; i < 16; i++ { + c.masking[i] = k[i] + c.rotate[i] = uint8(k[16+i] & 0x1f) + } +} + +// These are the three 'f' functions. See RFC 2144, section 2.2. +func f1(d, m uint32, r uint8) uint32 { + t := m + d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] +} + +func f2(d, m uint32, r uint8) uint32 { + t := m ^ d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] +} + +func f3(d, m uint32, r uint8) uint32 { + t := m - d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] +} + +var sBox = [8][256]uint32{ + { + 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, + 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, + 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, + 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, + 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, + 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, + 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, + 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, + 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, + 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, + 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, + 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, + 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, + 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, + 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, + 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, + 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, + 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, + 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, + 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, + 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, + 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, + 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, + 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, + 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, + 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, + 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, + 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, + 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, + 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, + 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, + 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, + }, + { + 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, + 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, + 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, + 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, + 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, + 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, + 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, + 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, + 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, + 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, + 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, + 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, + 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, + 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, + 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, + 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, + 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, + 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, + 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, + 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, + 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, + 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, + 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, + 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, + 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, + 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, + 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, + 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, + 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, + 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, + 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, + 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, + }, + { + 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, + 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, + 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, + 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, + 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, + 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, + 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, + 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, + 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, + 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, + 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, + 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, + 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, + 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, + 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, + 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, + 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, + 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, + 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, + 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, + 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, + 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, + 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, + 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, + 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, + 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, + 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, + 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, + 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, + 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, + 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, + 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, + }, + { + 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, + 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, + 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, + 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, + 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, + 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, + 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, + 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, + 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, + 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, + 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, + 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, + 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, + 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, + 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, + 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, + 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, + 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, + 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, + 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, + 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, + 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, + 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, + 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, + 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, + 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, + 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, + 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, + 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, + 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, + 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, + 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, + }, + { + 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, + 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, + 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, + 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, + 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, + 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, + 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, + 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, + 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, + 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, + 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, + 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, + 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, + 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, + 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, + 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, + 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, + 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, + 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, + 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, + 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, + 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, + 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, + 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, + 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, + 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, + 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, + 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, + 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, + 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, + 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, + 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, + }, + { + 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, + 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, + 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, + 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, + 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, + 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, + 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, + 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, + 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, + 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, + 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, + 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, + 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, + 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, + 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, + 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, + 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, + 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, + 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, + 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, + 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, + 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, + 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, + 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, + 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, + 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, + 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, + 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, + 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, + 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, + 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, + 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, + }, + { + 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, + 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, + 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, + 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, + 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, + 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, + 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, + 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, + 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, + 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, + 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, + 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, + 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, + 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, + 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, + 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, + 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, + 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, + 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, + 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, + 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, + 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, + 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, + 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, + 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, + 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, + 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, + 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, + 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, + 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, + 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, + 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, + }, + { + 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, + 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, + 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, + 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, + 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, + 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, + 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, + 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, + 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, + 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, + 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, + 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, + 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, + 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, + 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, + 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, + 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, + 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, + 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, + 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, + 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, + 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, + 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, + 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, + 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, + 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, + 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, + 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, + 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, + 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, + 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, + 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, + }, +} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go new file mode 100644 index 0000000..f38797b --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go @@ -0,0 +1,32 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine + +// Package subtle implements functions that are often useful in cryptographic +// code but require careful thought to use correctly. +package subtle // import "golang.org/x/crypto/internal/subtle" + +import "unsafe" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && + uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go new file mode 100644 index 0000000..0cc4a8a --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go @@ -0,0 +1,35 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build appengine + +// Package subtle implements functions that are often useful in cryptographic +// code but require careful thought to use correctly. +package subtle // import "golang.org/x/crypto/internal/subtle" + +// This is the Google App Engine standard variant based on reflect +// because the unsafe package and cgo are disallowed. + +import "reflect" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && + reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go new file mode 100644 index 0000000..593f653 --- /dev/null +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -0,0 +1,77 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC +2898 / PKCS #5 v2.0. + +A key derivation function is useful when encrypting data based on a password +or any other not-fully-random data. It uses a pseudorandom function to derive +a secure encryption key based on the password. + +While v2.0 of the standard defines only one pseudorandom function to use, +HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved +Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To +choose, you can pass the `New` functions from the different SHA packages to +pbkdf2.Key. +*/ +package pbkdf2 // import "golang.org/x/crypto/pbkdf2" + +import ( + "crypto/hmac" + "hash" +) + +// Key derives a key from the password, salt and iteration count, returning a +// []byte of length keylen that can be used as cryptographic key. The key is +// derived based on the method described as PBKDF2 with the HMAC variant using +// the supplied hash function. +// +// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you +// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by +// doing: +// +// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) +// +// Remember to get a good random salt. At least 8 bytes is recommended by the +// RFC. +// +// Using a higher iteration count will increase the cost of an exhaustive +// search but will also make derivation proportionally slower. +func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { + prf := hmac.New(h, password) + hashLen := prf.Size() + numBlocks := (keyLen + hashLen - 1) / hashLen + + var buf [4]byte + dk := make([]byte, 0, numBlocks*hashLen) + U := make([]byte, hashLen) + for block := 1; block <= numBlocks; block++ { + // N.B.: || means concatenation, ^ means XOR + // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter + // U_1 = PRF(password, salt || uint(i)) + prf.Reset() + prf.Write(salt) + buf[0] = byte(block >> 24) + buf[1] = byte(block >> 16) + buf[2] = byte(block >> 8) + buf[3] = byte(block) + prf.Write(buf[:4]) + dk = prf.Sum(dk) + T := dk[len(dk)-hashLen:] + copy(U, T) + + // U_n = PRF(password, U_(n-1)) + for n := 2; n <= iter; n++ { + prf.Reset() + prf.Write(U) + U = U[:0] + U = prf.Sum(U) + for x := range U { + T[x] ^= U[x] + } + } + } + return dk[:keyLen] +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go new file mode 100644 index 0000000..4c96147 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go @@ -0,0 +1,144 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package salsa provides low-level access to functions in the Salsa family. +package salsa // import "golang.org/x/crypto/salsa20/salsa" + +// Sigma is the Salsa20 constant for 256-bit keys. +var Sigma = [16]byte{'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'} + +// HSalsa20 applies the HSalsa20 core function to a 16-byte input in, 32-byte +// key k, and 16-byte constant c, and puts the result into the 32-byte array +// out. +func HSalsa20(out *[32]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + x0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + x1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + x2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + x3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + x4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + x5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + x6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + x7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + x8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + x9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + x10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + x11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + x12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + x13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + x14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + x15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + for i := 0; i < 20; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x5) + out[5] = byte(x5 >> 8) + out[6] = byte(x5 >> 16) + out[7] = byte(x5 >> 24) + + out[8] = byte(x10) + out[9] = byte(x10 >> 8) + out[10] = byte(x10 >> 16) + out[11] = byte(x10 >> 24) + + out[12] = byte(x15) + out[13] = byte(x15 >> 8) + out[14] = byte(x15 >> 16) + out[15] = byte(x15 >> 24) + + out[16] = byte(x6) + out[17] = byte(x6 >> 8) + out[18] = byte(x6 >> 16) + out[19] = byte(x6 >> 24) + + out[20] = byte(x7) + out[21] = byte(x7 >> 8) + out[22] = byte(x7 >> 16) + out[23] = byte(x7 >> 24) + + out[24] = byte(x8) + out[25] = byte(x8 >> 8) + out[26] = byte(x8 >> 16) + out[27] = byte(x8 >> 24) + + out[28] = byte(x9) + out[29] = byte(x9 >> 8) + out[30] = byte(x9 >> 16) + out[31] = byte(x9 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go new file mode 100644 index 0000000..9bfc092 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go @@ -0,0 +1,199 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package salsa + +// Core208 applies the Salsa20/8 core function to the 64-byte array in and puts +// the result into the 64-byte array out. The input and output may be the same array. +func Core208(out *[64]byte, in *[64]byte) { + j0 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j1 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j2 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j3 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j4 := uint32(in[16]) | uint32(in[17])<<8 | uint32(in[18])<<16 | uint32(in[19])<<24 + j5 := uint32(in[20]) | uint32(in[21])<<8 | uint32(in[22])<<16 | uint32(in[23])<<24 + j6 := uint32(in[24]) | uint32(in[25])<<8 | uint32(in[26])<<16 | uint32(in[27])<<24 + j7 := uint32(in[28]) | uint32(in[29])<<8 | uint32(in[30])<<16 | uint32(in[31])<<24 + j8 := uint32(in[32]) | uint32(in[33])<<8 | uint32(in[34])<<16 | uint32(in[35])<<24 + j9 := uint32(in[36]) | uint32(in[37])<<8 | uint32(in[38])<<16 | uint32(in[39])<<24 + j10 := uint32(in[40]) | uint32(in[41])<<8 | uint32(in[42])<<16 | uint32(in[43])<<24 + j11 := uint32(in[44]) | uint32(in[45])<<8 | uint32(in[46])<<16 | uint32(in[47])<<24 + j12 := uint32(in[48]) | uint32(in[49])<<8 | uint32(in[50])<<16 | uint32(in[51])<<24 + j13 := uint32(in[52]) | uint32(in[53])<<8 | uint32(in[54])<<16 | uint32(in[55])<<24 + j14 := uint32(in[56]) | uint32(in[57])<<8 | uint32(in[58])<<16 | uint32(in[59])<<24 + j15 := uint32(in[60]) | uint32(in[61])<<8 | uint32(in[62])<<16 | uint32(in[63])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < 8; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go new file mode 100644 index 0000000..656e8df --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go @@ -0,0 +1,23 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +package salsa + +//go:noescape + +// salsa2020XORKeyStream is implemented in salsa20_amd64.s. +func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out must overlap entirely or not at all. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + if len(in) == 0 { + return + } + _ = out[len(in)-1] + salsa2020XORKeyStream(&out[0], &in[0], uint64(len(in)), &counter[0], &key[0]) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s new file mode 100644 index 0000000..18085d2 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s @@ -0,0 +1,883 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) +// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size. +TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment + MOVQ out+0(FP),DI + MOVQ in+8(FP),SI + MOVQ n+16(FP),DX + MOVQ nonce+24(FP),CX + MOVQ key+32(FP),R8 + + MOVQ SP,R12 + MOVQ SP,R9 + ADDQ $31, R9 + ANDQ $~31, R9 + MOVQ R9, SP + + MOVQ DX,R9 + MOVQ CX,DX + MOVQ R8,R10 + CMPQ R9,$0 + JBE DONE + START: + MOVL 20(R10),CX + MOVL 0(R10),R8 + MOVL 0(DX),AX + MOVL 16(R10),R11 + MOVL CX,0(SP) + MOVL R8, 4 (SP) + MOVL AX, 8 (SP) + MOVL R11, 12 (SP) + MOVL 8(DX),CX + MOVL 24(R10),R8 + MOVL 4(R10),AX + MOVL 4(DX),R11 + MOVL CX,16(SP) + MOVL R8, 20 (SP) + MOVL AX, 24 (SP) + MOVL R11, 28 (SP) + MOVL 12(DX),CX + MOVL 12(R10),DX + MOVL 28(R10),R8 + MOVL 8(R10),AX + MOVL DX,32(SP) + MOVL CX, 36 (SP) + MOVL R8, 40 (SP) + MOVL AX, 44 (SP) + MOVQ $1634760805,DX + MOVQ $857760878,CX + MOVQ $2036477234,R8 + MOVQ $1797285236,AX + MOVL DX,48(SP) + MOVL CX, 52 (SP) + MOVL R8, 56 (SP) + MOVL AX, 60 (SP) + CMPQ R9,$256 + JB BYTESBETWEEN1AND255 + MOVOA 48(SP),X0 + PSHUFL $0X55,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X3 + PSHUFL $0X00,X0,X0 + MOVOA X1,64(SP) + MOVOA X2,80(SP) + MOVOA X3,96(SP) + MOVOA X0,112(SP) + MOVOA 0(SP),X0 + PSHUFL $0XAA,X0,X1 + PSHUFL $0XFF,X0,X2 + PSHUFL $0X00,X0,X3 + PSHUFL $0X55,X0,X0 + MOVOA X1,128(SP) + MOVOA X2,144(SP) + MOVOA X3,160(SP) + MOVOA X0,176(SP) + MOVOA 16(SP),X0 + PSHUFL $0XFF,X0,X1 + PSHUFL $0X55,X0,X2 + PSHUFL $0XAA,X0,X0 + MOVOA X1,192(SP) + MOVOA X2,208(SP) + MOVOA X0,224(SP) + MOVOA 32(SP),X0 + PSHUFL $0X00,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X0 + MOVOA X1,240(SP) + MOVOA X2,256(SP) + MOVOA X0,272(SP) + BYTESATLEAST256: + MOVL 16(SP),DX + MOVL 36 (SP),CX + MOVL DX,288(SP) + MOVL CX,304(SP) + SHLQ $32,CX + ADDQ CX,DX + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 292 (SP) + MOVL CX, 308 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 296 (SP) + MOVL CX, 312 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 300 (SP) + MOVL CX, 316 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX,16(SP) + MOVL CX, 36 (SP) + MOVQ R9,352(SP) + MOVQ $20,DX + MOVOA 64(SP),X0 + MOVOA 80(SP),X1 + MOVOA 96(SP),X2 + MOVOA 256(SP),X3 + MOVOA 272(SP),X4 + MOVOA 128(SP),X5 + MOVOA 144(SP),X6 + MOVOA 176(SP),X7 + MOVOA 192(SP),X8 + MOVOA 208(SP),X9 + MOVOA 224(SP),X10 + MOVOA 304(SP),X11 + MOVOA 112(SP),X12 + MOVOA 160(SP),X13 + MOVOA 240(SP),X14 + MOVOA 288(SP),X15 + MAINLOOP1: + MOVOA X1,320(SP) + MOVOA X2,336(SP) + MOVOA X13,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X14 + PSRLL $25,X2 + PXOR X2,X14 + MOVOA X7,X1 + PADDL X0,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X11 + PSRLL $25,X2 + PXOR X2,X11 + MOVOA X12,X1 + PADDL X14,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X15 + PSRLL $23,X2 + PXOR X2,X15 + MOVOA X0,X1 + PADDL X11,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X9 + PSRLL $23,X2 + PXOR X2,X9 + MOVOA X14,X1 + PADDL X15,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X13 + PSRLL $19,X2 + PXOR X2,X13 + MOVOA X11,X1 + PADDL X9,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X7 + PSRLL $19,X2 + PXOR X2,X7 + MOVOA X15,X1 + PADDL X13,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA 320(SP),X1 + MOVOA X12,320(SP) + MOVOA X9,X2 + PADDL X7,X2 + MOVOA X2,X12 + PSLLL $18,X2 + PXOR X2,X0 + PSRLL $14,X12 + PXOR X12,X0 + MOVOA X5,X2 + PADDL X1,X2 + MOVOA X2,X12 + PSLLL $7,X2 + PXOR X2,X3 + PSRLL $25,X12 + PXOR X12,X3 + MOVOA 336(SP),X2 + MOVOA X0,336(SP) + MOVOA X6,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X4 + PSRLL $25,X12 + PXOR X12,X4 + MOVOA X1,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X10 + PSRLL $23,X12 + PXOR X12,X10 + MOVOA X2,X0 + PADDL X4,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X8 + PSRLL $23,X12 + PXOR X12,X8 + MOVOA X3,X0 + PADDL X10,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X5 + PSRLL $19,X12 + PXOR X12,X5 + MOVOA X4,X0 + PADDL X8,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X6 + PSRLL $19,X12 + PXOR X12,X6 + MOVOA X10,X0 + PADDL X5,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA 320(SP),X0 + MOVOA X1,320(SP) + MOVOA X4,X1 + PADDL X0,X1 + MOVOA X1,X12 + PSLLL $7,X1 + PXOR X1,X7 + PSRLL $25,X12 + PXOR X12,X7 + MOVOA X8,X1 + PADDL X6,X1 + MOVOA X1,X12 + PSLLL $18,X1 + PXOR X1,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 336(SP),X12 + MOVOA X2,336(SP) + MOVOA X14,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X5 + PSRLL $25,X2 + PXOR X2,X5 + MOVOA X0,X1 + PADDL X7,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X10 + PSRLL $23,X2 + PXOR X2,X10 + MOVOA X12,X1 + PADDL X5,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X8 + PSRLL $23,X2 + PXOR X2,X8 + MOVOA X7,X1 + PADDL X10,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X4 + PSRLL $19,X2 + PXOR X2,X4 + MOVOA X5,X1 + PADDL X8,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X14 + PSRLL $19,X2 + PXOR X2,X14 + MOVOA X10,X1 + PADDL X4,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X0 + PSRLL $14,X2 + PXOR X2,X0 + MOVOA 320(SP),X1 + MOVOA X0,320(SP) + MOVOA X8,X0 + PADDL X14,X0 + MOVOA X0,X2 + PSLLL $18,X0 + PXOR X0,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA X11,X0 + PADDL X1,X0 + MOVOA X0,X2 + PSLLL $7,X0 + PXOR X0,X6 + PSRLL $25,X2 + PXOR X2,X6 + MOVOA 336(SP),X2 + MOVOA X12,336(SP) + MOVOA X3,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X13 + PSRLL $25,X12 + PXOR X12,X13 + MOVOA X1,X0 + PADDL X6,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X15 + PSRLL $23,X12 + PXOR X12,X15 + MOVOA X2,X0 + PADDL X13,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X9 + PSRLL $23,X12 + PXOR X12,X9 + MOVOA X6,X0 + PADDL X15,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X11 + PSRLL $19,X12 + PXOR X12,X11 + MOVOA X13,X0 + PADDL X9,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X3 + PSRLL $19,X12 + PXOR X12,X3 + MOVOA X15,X0 + PADDL X11,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA X9,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 320(SP),X12 + MOVOA 336(SP),X0 + SUBQ $2,DX + JA MAINLOOP1 + PADDL 112(SP),X12 + PADDL 176(SP),X7 + PADDL 224(SP),X10 + PADDL 272(SP),X4 + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 0(SI),DX + XORL 4(SI),CX + XORL 8(SI),R8 + XORL 12(SI),R9 + MOVL DX,0(DI) + MOVL CX,4(DI) + MOVL R8,8(DI) + MOVL R9,12(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 64(SI),DX + XORL 68(SI),CX + XORL 72(SI),R8 + XORL 76(SI),R9 + MOVL DX,64(DI) + MOVL CX,68(DI) + MOVL R8,72(DI) + MOVL R9,76(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 128(SI),DX + XORL 132(SI),CX + XORL 136(SI),R8 + XORL 140(SI),R9 + MOVL DX,128(DI) + MOVL CX,132(DI) + MOVL R8,136(DI) + MOVL R9,140(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + XORL 192(SI),DX + XORL 196(SI),CX + XORL 200(SI),R8 + XORL 204(SI),R9 + MOVL DX,192(DI) + MOVL CX,196(DI) + MOVL R8,200(DI) + MOVL R9,204(DI) + PADDL 240(SP),X14 + PADDL 64(SP),X0 + PADDL 128(SP),X5 + PADDL 192(SP),X8 + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 16(SI),DX + XORL 20(SI),CX + XORL 24(SI),R8 + XORL 28(SI),R9 + MOVL DX,16(DI) + MOVL CX,20(DI) + MOVL R8,24(DI) + MOVL R9,28(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 80(SI),DX + XORL 84(SI),CX + XORL 88(SI),R8 + XORL 92(SI),R9 + MOVL DX,80(DI) + MOVL CX,84(DI) + MOVL R8,88(DI) + MOVL R9,92(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 144(SI),DX + XORL 148(SI),CX + XORL 152(SI),R8 + XORL 156(SI),R9 + MOVL DX,144(DI) + MOVL CX,148(DI) + MOVL R8,152(DI) + MOVL R9,156(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + XORL 208(SI),DX + XORL 212(SI),CX + XORL 216(SI),R8 + XORL 220(SI),R9 + MOVL DX,208(DI) + MOVL CX,212(DI) + MOVL R8,216(DI) + MOVL R9,220(DI) + PADDL 288(SP),X15 + PADDL 304(SP),X11 + PADDL 80(SP),X1 + PADDL 144(SP),X6 + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 32(SI),DX + XORL 36(SI),CX + XORL 40(SI),R8 + XORL 44(SI),R9 + MOVL DX,32(DI) + MOVL CX,36(DI) + MOVL R8,40(DI) + MOVL R9,44(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 96(SI),DX + XORL 100(SI),CX + XORL 104(SI),R8 + XORL 108(SI),R9 + MOVL DX,96(DI) + MOVL CX,100(DI) + MOVL R8,104(DI) + MOVL R9,108(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 160(SI),DX + XORL 164(SI),CX + XORL 168(SI),R8 + XORL 172(SI),R9 + MOVL DX,160(DI) + MOVL CX,164(DI) + MOVL R8,168(DI) + MOVL R9,172(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + XORL 224(SI),DX + XORL 228(SI),CX + XORL 232(SI),R8 + XORL 236(SI),R9 + MOVL DX,224(DI) + MOVL CX,228(DI) + MOVL R8,232(DI) + MOVL R9,236(DI) + PADDL 160(SP),X13 + PADDL 208(SP),X9 + PADDL 256(SP),X3 + PADDL 96(SP),X2 + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 48(SI),DX + XORL 52(SI),CX + XORL 56(SI),R8 + XORL 60(SI),R9 + MOVL DX,48(DI) + MOVL CX,52(DI) + MOVL R8,56(DI) + MOVL R9,60(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 112(SI),DX + XORL 116(SI),CX + XORL 120(SI),R8 + XORL 124(SI),R9 + MOVL DX,112(DI) + MOVL CX,116(DI) + MOVL R8,120(DI) + MOVL R9,124(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 176(SI),DX + XORL 180(SI),CX + XORL 184(SI),R8 + XORL 188(SI),R9 + MOVL DX,176(DI) + MOVL CX,180(DI) + MOVL R8,184(DI) + MOVL R9,188(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + XORL 240(SI),DX + XORL 244(SI),CX + XORL 248(SI),R8 + XORL 252(SI),R9 + MOVL DX,240(DI) + MOVL CX,244(DI) + MOVL R8,248(DI) + MOVL R9,252(DI) + MOVQ 352(SP),R9 + SUBQ $256,R9 + ADDQ $256,SI + ADDQ $256,DI + CMPQ R9,$256 + JAE BYTESATLEAST256 + CMPQ R9,$0 + JBE DONE + BYTESBETWEEN1AND255: + CMPQ R9,$64 + JAE NOCOPY + MOVQ DI,DX + LEAQ 360(SP),DI + MOVQ R9,CX + REP; MOVSB + LEAQ 360(SP),DI + LEAQ 360(SP),SI + NOCOPY: + MOVQ R9,352(SP) + MOVOA 48(SP),X0 + MOVOA 0(SP),X1 + MOVOA 16(SP),X2 + MOVOA 32(SP),X3 + MOVOA X1,X4 + MOVQ $20,CX + MAINLOOP2: + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + SUBQ $4,CX + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PXOR X7,X7 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + JA MAINLOOP2 + PADDL 48(SP),X0 + PADDL 0(SP),X1 + PADDL 16(SP),X2 + PADDL 32(SP),X3 + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 0(SI),CX + XORL 48(SI),R8 + XORL 32(SI),R9 + XORL 16(SI),AX + MOVL CX,0(DI) + MOVL R8,48(DI) + MOVL R9,32(DI) + MOVL AX,16(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 20(SI),CX + XORL 4(SI),R8 + XORL 52(SI),R9 + XORL 36(SI),AX + MOVL CX,20(DI) + MOVL R8,4(DI) + MOVL R9,52(DI) + MOVL AX,36(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 40(SI),CX + XORL 24(SI),R8 + XORL 8(SI),R9 + XORL 56(SI),AX + MOVL CX,40(DI) + MOVL R8,24(DI) + MOVL R9,8(DI) + MOVL AX,56(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + XORL 60(SI),CX + XORL 44(SI),R8 + XORL 28(SI),R9 + XORL 12(SI),AX + MOVL CX,60(DI) + MOVL R8,44(DI) + MOVL R9,28(DI) + MOVL AX,12(DI) + MOVQ 352(SP),R9 + MOVL 16(SP),CX + MOVL 36 (SP),R8 + ADDQ $1,CX + SHLQ $32,R8 + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $32,R8 + MOVL CX,16(SP) + MOVL R8, 36 (SP) + CMPQ R9,$64 + JA BYTESATLEAST65 + JAE BYTESATLEAST64 + MOVQ DI,SI + MOVQ DX,DI + MOVQ R9,CX + REP; MOVSB + BYTESATLEAST64: + DONE: + MOVQ R12,SP + RET + BYTESATLEAST65: + SUBQ $64,R9 + ADDQ $64,DI + ADDQ $64,SI + JMP BYTESBETWEEN1AND255 diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go new file mode 100644 index 0000000..8a46bd2 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go @@ -0,0 +1,14 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package salsa + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out must overlap entirely or not at all. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + genericXORKeyStream(out, in, counter, key) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go new file mode 100644 index 0000000..68169c6 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go @@ -0,0 +1,231 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package salsa + +const rounds = 20 + +// core applies the Salsa20 core function to 16-byte input in, 32-byte key k, +// and 16-byte constant c, and puts the result into 64-byte array out. +func core(out *[64]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + j0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + j1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + j2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + j3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + j4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + j5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + j6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + j11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + j12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + j13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + j14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + j15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < rounds; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} + +// genericXORKeyStream is the generic implementation of XORKeyStream to be used +// when no assembly implementation is available. +func genericXORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + var block [64]byte + var counterCopy [16]byte + copy(counterCopy[:], counter[:]) + + for len(in) >= 64 { + core(&block, &counterCopy, key, &Sigma) + for i, x := range block { + out[i] = in[i] ^ x + } + u := uint32(1) + for i := 8; i < 16; i++ { + u += uint32(counterCopy[i]) + counterCopy[i] = byte(u) + u >>= 8 + } + in = in[64:] + out = out[64:] + } + + if len(in) > 0 { + core(&block, &counterCopy, key, &Sigma) + for i, v := range in { + out[i] = v ^ block[i] + } + } +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa20.go new file mode 100644 index 0000000..6f9bb10 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa20.go @@ -0,0 +1,58 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package salsa20 implements the Salsa20 stream cipher as specified in https://cr.yp.to/snuffle/spec.pdf. + +Salsa20 differs from many other stream ciphers in that it is message orientated +rather than byte orientated. Keystream blocks are not preserved between calls, +therefore each side must encrypt/decrypt data with the same segmentation. + +Another aspect of this difference is that part of the counter is exposed as +a nonce in each call. Encrypting two different messages with the same (key, +nonce) pair leads to trivial plaintext recovery. This is analogous to +encrypting two different messages with the same key with a traditional stream +cipher. + +This package also implements XSalsa20: a version of Salsa20 with a 24-byte +nonce as specified in https://cr.yp.to/snuffle/xsalsa-20081128.pdf. Simply +passing a 24-byte slice as the nonce triggers XSalsa20. +*/ +package salsa20 // import "golang.org/x/crypto/salsa20" + +// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. + +import ( + "golang.org/x/crypto/internal/subtle" + "golang.org/x/crypto/salsa20/salsa" +) + +// XORKeyStream crypts bytes from in to out using the given key and nonce. +// In and out must overlap entirely or not at all. Nonce must +// be either 8 or 24 bytes long. +func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) { + if len(out) < len(in) { + panic("salsa20: output smaller than input") + } + if subtle.InexactOverlap(out[:len(in)], in) { + panic("salsa20: invalid buffer overlap") + } + + var subNonce [16]byte + + if len(nonce) == 24 { + var subKey [32]byte + var hNonce [16]byte + copy(hNonce[:], nonce[:16]) + salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma) + copy(subNonce[:], nonce[16:]) + key = &subKey + } else if len(nonce) == 8 { + copy(subNonce[:], nonce[:]) + } else { + panic("salsa20: nonce must be 8 or 24 bytes") + } + + salsa.XORKeyStream(out, in, &subNonce, key) +} diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go new file mode 100644 index 0000000..3362afd --- /dev/null +++ b/vendor/golang.org/x/crypto/scrypt/scrypt.go @@ -0,0 +1,244 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package scrypt implements the scrypt key derivation function as defined in +// Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard +// Functions" (https://www.tarsnap.com/scrypt/scrypt.pdf). +package scrypt // import "golang.org/x/crypto/scrypt" + +import ( + "crypto/sha256" + "errors" + + "golang.org/x/crypto/pbkdf2" +) + +const maxInt = int(^uint(0) >> 1) + +// blockCopy copies n numbers from src into dst. +func blockCopy(dst, src []uint32, n int) { + copy(dst, src[:n]) +} + +// blockXOR XORs numbers from dst with n numbers from src. +func blockXOR(dst, src []uint32, n int) { + for i, v := range src[:n] { + dst[i] ^= v + } +} + +// salsaXOR applies Salsa20/8 to the XOR of 16 numbers from tmp and in, +// and puts the result into both tmp and out. +func salsaXOR(tmp *[16]uint32, in, out []uint32) { + w0 := tmp[0] ^ in[0] + w1 := tmp[1] ^ in[1] + w2 := tmp[2] ^ in[2] + w3 := tmp[3] ^ in[3] + w4 := tmp[4] ^ in[4] + w5 := tmp[5] ^ in[5] + w6 := tmp[6] ^ in[6] + w7 := tmp[7] ^ in[7] + w8 := tmp[8] ^ in[8] + w9 := tmp[9] ^ in[9] + w10 := tmp[10] ^ in[10] + w11 := tmp[11] ^ in[11] + w12 := tmp[12] ^ in[12] + w13 := tmp[13] ^ in[13] + w14 := tmp[14] ^ in[14] + w15 := tmp[15] ^ in[15] + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := w0, w1, w2, w3, w4, w5, w6, w7, w8 + x9, x10, x11, x12, x13, x14, x15 := w9, w10, w11, w12, w13, w14, w15 + + for i := 0; i < 8; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += w0 + x1 += w1 + x2 += w2 + x3 += w3 + x4 += w4 + x5 += w5 + x6 += w6 + x7 += w7 + x8 += w8 + x9 += w9 + x10 += w10 + x11 += w11 + x12 += w12 + x13 += w13 + x14 += w14 + x15 += w15 + + out[0], tmp[0] = x0, x0 + out[1], tmp[1] = x1, x1 + out[2], tmp[2] = x2, x2 + out[3], tmp[3] = x3, x3 + out[4], tmp[4] = x4, x4 + out[5], tmp[5] = x5, x5 + out[6], tmp[6] = x6, x6 + out[7], tmp[7] = x7, x7 + out[8], tmp[8] = x8, x8 + out[9], tmp[9] = x9, x9 + out[10], tmp[10] = x10, x10 + out[11], tmp[11] = x11, x11 + out[12], tmp[12] = x12, x12 + out[13], tmp[13] = x13, x13 + out[14], tmp[14] = x14, x14 + out[15], tmp[15] = x15, x15 +} + +func blockMix(tmp *[16]uint32, in, out []uint32, r int) { + blockCopy(tmp[:], in[(2*r-1)*16:], 16) + for i := 0; i < 2*r; i += 2 { + salsaXOR(tmp, in[i*16:], out[i*8:]) + salsaXOR(tmp, in[i*16+16:], out[i*8+r*16:]) + } +} + +func integer(b []uint32, r int) uint64 { + j := (2*r - 1) * 16 + return uint64(b[j]) | uint64(b[j+1])<<32 +} + +func smix(b []byte, r, N int, v, xy []uint32) { + var tmp [16]uint32 + x := xy + y := xy[32*r:] + + j := 0 + for i := 0; i < 32*r; i++ { + x[i] = uint32(b[j]) | uint32(b[j+1])<<8 | uint32(b[j+2])<<16 | uint32(b[j+3])<<24 + j += 4 + } + for i := 0; i < N; i += 2 { + blockCopy(v[i*(32*r):], x, 32*r) + blockMix(&tmp, x, y, r) + + blockCopy(v[(i+1)*(32*r):], y, 32*r) + blockMix(&tmp, y, x, r) + } + for i := 0; i < N; i += 2 { + j := int(integer(x, r) & uint64(N-1)) + blockXOR(x, v[j*(32*r):], 32*r) + blockMix(&tmp, x, y, r) + + j = int(integer(y, r) & uint64(N-1)) + blockXOR(y, v[j*(32*r):], 32*r) + blockMix(&tmp, y, x, r) + } + j = 0 + for _, v := range x[:32*r] { + b[j+0] = byte(v >> 0) + b[j+1] = byte(v >> 8) + b[j+2] = byte(v >> 16) + b[j+3] = byte(v >> 24) + j += 4 + } +} + +// Key derives a key from the password, salt, and cost parameters, returning +// a byte slice of length keyLen that can be used as cryptographic key. +// +// N is a CPU/memory cost parameter, which must be a power of two greater than 1. +// r and p must satisfy r * p < 2³⁰. If the parameters do not satisfy the +// limits, the function returns a nil byte slice and an error. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// dk, err := scrypt.Key([]byte("some password"), salt, 32768, 8, 1, 32) +// +// The recommended parameters for interactive logins as of 2017 are N=32768, r=8 +// and p=1. The parameters N, r, and p should be increased as memory latency and +// CPU parallelism increases; consider setting N to the highest power of 2 you +// can derive within 100 milliseconds. Remember to get a good random salt. +func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) { + if N <= 1 || N&(N-1) != 0 { + return nil, errors.New("scrypt: N must be > 1 and a power of 2") + } + if uint64(r)*uint64(p) >= 1<<30 || r > maxInt/128/p || r > maxInt/256 || N > maxInt/128/r { + return nil, errors.New("scrypt: parameters are too large") + } + + xy := make([]uint32, 64*r) + v := make([]uint32, 32*N*r) + b := pbkdf2.Key(password, salt, 1, p*128*r, sha256.New) + + for i := 0; i < p; i++ { + smix(b[i*128*r:], r, N, v, xy) + } + + return pbkdf2.Key(password, b, 1, keyLen, sha256.New), nil +} diff --git a/vendor/golang.org/x/crypto/sha3/doc.go b/vendor/golang.org/x/crypto/sha3/doc.go new file mode 100644 index 0000000..c2fef30 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/doc.go @@ -0,0 +1,66 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package sha3 implements the SHA-3 fixed-output-length hash functions and +// the SHAKE variable-output-length hash functions defined by FIPS-202. +// +// Both types of hash function use the "sponge" construction and the Keccak +// permutation. For a detailed specification see http://keccak.noekeon.org/ +// +// +// Guidance +// +// If you aren't sure what function you need, use SHAKE256 with at least 64 +// bytes of output. The SHAKE instances are faster than the SHA3 instances; +// the latter have to allocate memory to conform to the hash.Hash interface. +// +// If you need a secret-key MAC (message authentication code), prepend the +// secret key to the input, hash with SHAKE256 and read at least 32 bytes of +// output. +// +// +// Security strengths +// +// The SHA3-x (x equals 224, 256, 384, or 512) functions have a security +// strength against preimage attacks of x bits. Since they only produce "x" +// bits of output, their collision-resistance is only "x/2" bits. +// +// The SHAKE-256 and -128 functions have a generic security strength of 256 and +// 128 bits against all attacks, provided that at least 2x bits of their output +// is used. Requesting more than 64 or 32 bytes of output, respectively, does +// not increase the collision-resistance of the SHAKE functions. +// +// +// The sponge construction +// +// A sponge builds a pseudo-random function from a public pseudo-random +// permutation, by applying the permutation to a state of "rate + capacity" +// bytes, but hiding "capacity" of the bytes. +// +// A sponge starts out with a zero state. To hash an input using a sponge, up +// to "rate" bytes of the input are XORed into the sponge's state. The sponge +// is then "full" and the permutation is applied to "empty" it. This process is +// repeated until all the input has been "absorbed". The input is then padded. +// The digest is "squeezed" from the sponge in the same way, except that output +// is copied out instead of input being XORed in. +// +// A sponge is parameterized by its generic security strength, which is equal +// to half its capacity; capacity + rate is equal to the permutation's width. +// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means +// that the security strength of a sponge instance is equal to (1600 - bitrate) / 2. +// +// +// Recommendations +// +// The SHAKE functions are recommended for most new uses. They can produce +// output of arbitrary length. SHAKE256, with an output length of at least +// 64 bytes, provides 256-bit security against all attacks. The Keccak team +// recommends it for most applications upgrading from SHA2-512. (NIST chose a +// much stronger, but much slower, sponge instance for SHA3-512.) +// +// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions. +// They produce output of the same length, with the same security strengths +// against all attacks. This means, in particular, that SHA3-256 only has +// 128-bit collision resistance, because its output length is 32 bytes. +package sha3 // import "golang.org/x/crypto/sha3" diff --git a/vendor/golang.org/x/crypto/sha3/hashes.go b/vendor/golang.org/x/crypto/sha3/hashes.go new file mode 100644 index 0000000..0d8043f --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/hashes.go @@ -0,0 +1,97 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// This file provides functions for creating instances of the SHA-3 +// and SHAKE hash functions, as well as utility functions for hashing +// bytes. + +import ( + "hash" +) + +// New224 creates a new SHA3-224 hash. +// Its generic security strength is 224 bits against preimage attacks, +// and 112 bits against collision attacks. +func New224() hash.Hash { + if h := new224Asm(); h != nil { + return h + } + return &state{rate: 144, outputLen: 28, dsbyte: 0x06} +} + +// New256 creates a new SHA3-256 hash. +// Its generic security strength is 256 bits against preimage attacks, +// and 128 bits against collision attacks. +func New256() hash.Hash { + if h := new256Asm(); h != nil { + return h + } + return &state{rate: 136, outputLen: 32, dsbyte: 0x06} +} + +// New384 creates a new SHA3-384 hash. +// Its generic security strength is 384 bits against preimage attacks, +// and 192 bits against collision attacks. +func New384() hash.Hash { + if h := new384Asm(); h != nil { + return h + } + return &state{rate: 104, outputLen: 48, dsbyte: 0x06} +} + +// New512 creates a new SHA3-512 hash. +// Its generic security strength is 512 bits against preimage attacks, +// and 256 bits against collision attacks. +func New512() hash.Hash { + if h := new512Asm(); h != nil { + return h + } + return &state{rate: 72, outputLen: 64, dsbyte: 0x06} +} + +// NewLegacyKeccak256 creates a new Keccak-256 hash. +// +// Only use this function if you require compatibility with an existing cryptosystem +// that uses non-standard padding. All other users should use New256 instead. +func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} } + +// NewLegacyKeccak512 creates a new Keccak-512 hash. +// +// Only use this function if you require compatibility with an existing cryptosystem +// that uses non-standard padding. All other users should use New512 instead. +func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} } + +// Sum224 returns the SHA3-224 digest of the data. +func Sum224(data []byte) (digest [28]byte) { + h := New224() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum256 returns the SHA3-256 digest of the data. +func Sum256(data []byte) (digest [32]byte) { + h := New256() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum384 returns the SHA3-384 digest of the data. +func Sum384(data []byte) (digest [48]byte) { + h := New384() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum512 returns the SHA3-512 digest of the data. +func Sum512(data []byte) (digest [64]byte) { + h := New512() + h.Write(data) + h.Sum(digest[:0]) + return +} diff --git a/vendor/golang.org/x/crypto/sha3/hashes_generic.go b/vendor/golang.org/x/crypto/sha3/hashes_generic.go new file mode 100644 index 0000000..c4ff3f6 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/hashes_generic.go @@ -0,0 +1,27 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build gccgo appengine !s390x + +package sha3 + +import ( + "hash" +) + +// new224Asm returns an assembly implementation of SHA3-224 if available, +// otherwise it returns nil. +func new224Asm() hash.Hash { return nil } + +// new256Asm returns an assembly implementation of SHA3-256 if available, +// otherwise it returns nil. +func new256Asm() hash.Hash { return nil } + +// new384Asm returns an assembly implementation of SHA3-384 if available, +// otherwise it returns nil. +func new384Asm() hash.Hash { return nil } + +// new512Asm returns an assembly implementation of SHA3-512 if available, +// otherwise it returns nil. +func new512Asm() hash.Hash { return nil } diff --git a/vendor/golang.org/x/crypto/sha3/keccakf.go b/vendor/golang.org/x/crypto/sha3/keccakf.go new file mode 100644 index 0000000..46d03ed --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf.go @@ -0,0 +1,412 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package sha3 + +// rc stores the round constants for use in the ι step. +var rc = [24]uint64{ + 0x0000000000000001, + 0x0000000000008082, + 0x800000000000808A, + 0x8000000080008000, + 0x000000000000808B, + 0x0000000080000001, + 0x8000000080008081, + 0x8000000000008009, + 0x000000000000008A, + 0x0000000000000088, + 0x0000000080008009, + 0x000000008000000A, + 0x000000008000808B, + 0x800000000000008B, + 0x8000000000008089, + 0x8000000000008003, + 0x8000000000008002, + 0x8000000000000080, + 0x000000000000800A, + 0x800000008000000A, + 0x8000000080008081, + 0x8000000000008080, + 0x0000000080000001, + 0x8000000080008008, +} + +// keccakF1600 applies the Keccak permutation to a 1600b-wide +// state represented as a slice of 25 uint64s. +func keccakF1600(a *[25]uint64) { + // Implementation translated from Keccak-inplace.c + // in the keccak reference code. + var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64 + + for i := 0; i < 24; i += 4 { + // Combines the 5 steps in each round into 2 steps. + // Unrolls 4 rounds per loop and spreads some steps across rounds. + + // Round 1 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[6] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[12] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[18] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[24] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i] + a[6] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[16] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[22] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[3] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[10] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[1] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[7] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[19] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[20] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[11] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[23] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[4] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[5] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[2] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[8] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[14] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[15] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + // Round 2 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[16] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[7] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[23] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[14] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1] + a[16] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[11] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[2] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[18] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[20] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[6] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[22] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[4] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[15] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[1] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[8] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[24] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[10] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[12] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[3] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[19] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[5] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + // Round 3 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[11] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[22] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[8] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[19] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2] + a[11] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[1] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[12] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[23] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[15] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[16] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[2] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[24] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[5] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[6] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[3] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[14] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[20] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[7] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[18] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[4] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[10] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + // Round 4 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[1] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[2] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[3] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[4] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3] + a[1] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[6] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[7] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[8] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[5] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[11] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[12] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[14] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[10] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[16] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[18] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[19] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[15] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[22] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[23] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[24] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[20] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + } +} diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go new file mode 100644 index 0000000..7886795 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go @@ -0,0 +1,13 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +package sha3 + +// This function is implemented in keccakf_amd64.s. + +//go:noescape + +func keccakF1600(a *[25]uint64) diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s new file mode 100644 index 0000000..f88533a --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s @@ -0,0 +1,390 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +// This code was translated into a form compatible with 6a from the public +// domain sources at https://github.com/gvanas/KeccakCodePackage + +// Offsets in state +#define _ba (0*8) +#define _be (1*8) +#define _bi (2*8) +#define _bo (3*8) +#define _bu (4*8) +#define _ga (5*8) +#define _ge (6*8) +#define _gi (7*8) +#define _go (8*8) +#define _gu (9*8) +#define _ka (10*8) +#define _ke (11*8) +#define _ki (12*8) +#define _ko (13*8) +#define _ku (14*8) +#define _ma (15*8) +#define _me (16*8) +#define _mi (17*8) +#define _mo (18*8) +#define _mu (19*8) +#define _sa (20*8) +#define _se (21*8) +#define _si (22*8) +#define _so (23*8) +#define _su (24*8) + +// Temporary registers +#define rT1 AX + +// Round vars +#define rpState DI +#define rpStack SP + +#define rDa BX +#define rDe CX +#define rDi DX +#define rDo R8 +#define rDu R9 + +#define rBa R10 +#define rBe R11 +#define rBi R12 +#define rBo R13 +#define rBu R14 + +#define rCa SI +#define rCe BP +#define rCi rBi +#define rCo rBo +#define rCu R15 + +#define MOVQ_RBI_RCE MOVQ rBi, rCe +#define XORQ_RT1_RCA XORQ rT1, rCa +#define XORQ_RT1_RCE XORQ rT1, rCe +#define XORQ_RBA_RCU XORQ rBa, rCu +#define XORQ_RBE_RCU XORQ rBe, rCu +#define XORQ_RDU_RCU XORQ rDu, rCu +#define XORQ_RDA_RCA XORQ rDa, rCa +#define XORQ_RDE_RCE XORQ rDe, rCe + +#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \ + /* Prepare round */ \ + MOVQ rCe, rDa; \ + ROLQ $1, rDa; \ + \ + MOVQ _bi(iState), rCi; \ + XORQ _gi(iState), rDi; \ + XORQ rCu, rDa; \ + XORQ _ki(iState), rCi; \ + XORQ _mi(iState), rDi; \ + XORQ rDi, rCi; \ + \ + MOVQ rCi, rDe; \ + ROLQ $1, rDe; \ + \ + MOVQ _bo(iState), rCo; \ + XORQ _go(iState), rDo; \ + XORQ rCa, rDe; \ + XORQ _ko(iState), rCo; \ + XORQ _mo(iState), rDo; \ + XORQ rDo, rCo; \ + \ + MOVQ rCo, rDi; \ + ROLQ $1, rDi; \ + \ + MOVQ rCu, rDo; \ + XORQ rCe, rDi; \ + ROLQ $1, rDo; \ + \ + MOVQ rCa, rDu; \ + XORQ rCi, rDo; \ + ROLQ $1, rDu; \ + \ + /* Result b */ \ + MOVQ _ba(iState), rBa; \ + MOVQ _ge(iState), rBe; \ + XORQ rCo, rDu; \ + MOVQ _ki(iState), rBi; \ + MOVQ _mo(iState), rBo; \ + MOVQ _su(iState), rBu; \ + XORQ rDe, rBe; \ + ROLQ $44, rBe; \ + XORQ rDi, rBi; \ + XORQ rDa, rBa; \ + ROLQ $43, rBi; \ + \ + MOVQ rBe, rCa; \ + MOVQ rc, rT1; \ + ORQ rBi, rCa; \ + XORQ rBa, rT1; \ + XORQ rT1, rCa; \ + MOVQ rCa, _ba(oState); \ + \ + XORQ rDu, rBu; \ + ROLQ $14, rBu; \ + MOVQ rBa, rCu; \ + ANDQ rBe, rCu; \ + XORQ rBu, rCu; \ + MOVQ rCu, _bu(oState); \ + \ + XORQ rDo, rBo; \ + ROLQ $21, rBo; \ + MOVQ rBo, rT1; \ + ANDQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _bi(oState); \ + \ + NOTQ rBi; \ + ORQ rBa, rBu; \ + ORQ rBo, rBi; \ + XORQ rBo, rBu; \ + XORQ rBe, rBi; \ + MOVQ rBu, _bo(oState); \ + MOVQ rBi, _be(oState); \ + B_RBI_RCE; \ + \ + /* Result g */ \ + MOVQ _gu(iState), rBe; \ + XORQ rDu, rBe; \ + MOVQ _ka(iState), rBi; \ + ROLQ $20, rBe; \ + XORQ rDa, rBi; \ + ROLQ $3, rBi; \ + MOVQ _bo(iState), rBa; \ + MOVQ rBe, rT1; \ + ORQ rBi, rT1; \ + XORQ rDo, rBa; \ + MOVQ _me(iState), rBo; \ + MOVQ _si(iState), rBu; \ + ROLQ $28, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ga(oState); \ + G_RT1_RCA; \ + \ + XORQ rDe, rBo; \ + ROLQ $45, rBo; \ + MOVQ rBi, rT1; \ + ANDQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _ge(oState); \ + G_RT1_RCE; \ + \ + XORQ rDi, rBu; \ + ROLQ $61, rBu; \ + MOVQ rBu, rT1; \ + ORQ rBa, rT1; \ + XORQ rBo, rT1; \ + MOVQ rT1, _go(oState); \ + \ + ANDQ rBe, rBa; \ + XORQ rBu, rBa; \ + MOVQ rBa, _gu(oState); \ + NOTQ rBu; \ + G_RBA_RCU; \ + \ + ORQ rBu, rBo; \ + XORQ rBi, rBo; \ + MOVQ rBo, _gi(oState); \ + \ + /* Result k */ \ + MOVQ _be(iState), rBa; \ + MOVQ _gi(iState), rBe; \ + MOVQ _ko(iState), rBi; \ + MOVQ _mu(iState), rBo; \ + MOVQ _sa(iState), rBu; \ + XORQ rDi, rBe; \ + ROLQ $6, rBe; \ + XORQ rDo, rBi; \ + ROLQ $25, rBi; \ + MOVQ rBe, rT1; \ + ORQ rBi, rT1; \ + XORQ rDe, rBa; \ + ROLQ $1, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ka(oState); \ + K_RT1_RCA; \ + \ + XORQ rDu, rBo; \ + ROLQ $8, rBo; \ + MOVQ rBi, rT1; \ + ANDQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _ke(oState); \ + K_RT1_RCE; \ + \ + XORQ rDa, rBu; \ + ROLQ $18, rBu; \ + NOTQ rBo; \ + MOVQ rBo, rT1; \ + ANDQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _ki(oState); \ + \ + MOVQ rBu, rT1; \ + ORQ rBa, rT1; \ + XORQ rBo, rT1; \ + MOVQ rT1, _ko(oState); \ + \ + ANDQ rBe, rBa; \ + XORQ rBu, rBa; \ + MOVQ rBa, _ku(oState); \ + K_RBA_RCU; \ + \ + /* Result m */ \ + MOVQ _ga(iState), rBe; \ + XORQ rDa, rBe; \ + MOVQ _ke(iState), rBi; \ + ROLQ $36, rBe; \ + XORQ rDe, rBi; \ + MOVQ _bu(iState), rBa; \ + ROLQ $10, rBi; \ + MOVQ rBe, rT1; \ + MOVQ _mi(iState), rBo; \ + ANDQ rBi, rT1; \ + XORQ rDu, rBa; \ + MOVQ _so(iState), rBu; \ + ROLQ $27, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ma(oState); \ + M_RT1_RCA; \ + \ + XORQ rDi, rBo; \ + ROLQ $15, rBo; \ + MOVQ rBi, rT1; \ + ORQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _me(oState); \ + M_RT1_RCE; \ + \ + XORQ rDo, rBu; \ + ROLQ $56, rBu; \ + NOTQ rBo; \ + MOVQ rBo, rT1; \ + ORQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _mi(oState); \ + \ + ORQ rBa, rBe; \ + XORQ rBu, rBe; \ + MOVQ rBe, _mu(oState); \ + \ + ANDQ rBa, rBu; \ + XORQ rBo, rBu; \ + MOVQ rBu, _mo(oState); \ + M_RBE_RCU; \ + \ + /* Result s */ \ + MOVQ _bi(iState), rBa; \ + MOVQ _go(iState), rBe; \ + MOVQ _ku(iState), rBi; \ + XORQ rDi, rBa; \ + MOVQ _ma(iState), rBo; \ + ROLQ $62, rBa; \ + XORQ rDo, rBe; \ + MOVQ _se(iState), rBu; \ + ROLQ $55, rBe; \ + \ + XORQ rDu, rBi; \ + MOVQ rBa, rDu; \ + XORQ rDe, rBu; \ + ROLQ $2, rBu; \ + ANDQ rBe, rDu; \ + XORQ rBu, rDu; \ + MOVQ rDu, _su(oState); \ + \ + ROLQ $39, rBi; \ + S_RDU_RCU; \ + NOTQ rBe; \ + XORQ rDa, rBo; \ + MOVQ rBe, rDa; \ + ANDQ rBi, rDa; \ + XORQ rBa, rDa; \ + MOVQ rDa, _sa(oState); \ + S_RDA_RCA; \ + \ + ROLQ $41, rBo; \ + MOVQ rBi, rDe; \ + ORQ rBo, rDe; \ + XORQ rBe, rDe; \ + MOVQ rDe, _se(oState); \ + S_RDE_RCE; \ + \ + MOVQ rBo, rDi; \ + MOVQ rBu, rDo; \ + ANDQ rBu, rDi; \ + ORQ rBa, rDo; \ + XORQ rBi, rDi; \ + XORQ rBo, rDo; \ + MOVQ rDi, _si(oState); \ + MOVQ rDo, _so(oState) \ + +// func keccakF1600(state *[25]uint64) +TEXT ·keccakF1600(SB), 0, $200-8 + MOVQ state+0(FP), rpState + + // Convert the user state into an internal state + NOTQ _be(rpState) + NOTQ _bi(rpState) + NOTQ _go(rpState) + NOTQ _ki(rpState) + NOTQ _mi(rpState) + NOTQ _sa(rpState) + + // Execute the KeccakF permutation + MOVQ _ba(rpState), rCa + MOVQ _be(rpState), rCe + MOVQ _bu(rpState), rCu + + XORQ _ga(rpState), rCa + XORQ _ge(rpState), rCe + XORQ _gu(rpState), rCu + + XORQ _ka(rpState), rCa + XORQ _ke(rpState), rCe + XORQ _ku(rpState), rCu + + XORQ _ma(rpState), rCa + XORQ _me(rpState), rCe + XORQ _mu(rpState), rCu + + XORQ _sa(rpState), rCa + XORQ _se(rpState), rCe + MOVQ _si(rpState), rDi + MOVQ _so(rpState), rDo + XORQ _su(rpState), rCu + + mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP) + + // Revert the internal state to the user state + NOTQ _be(rpState) + NOTQ _bi(rpState) + NOTQ _go(rpState) + NOTQ _ki(rpState) + NOTQ _mi(rpState) + NOTQ _sa(rpState) + + RET diff --git a/vendor/golang.org/x/crypto/sha3/register.go b/vendor/golang.org/x/crypto/sha3/register.go new file mode 100644 index 0000000..3cf6a22 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/register.go @@ -0,0 +1,18 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.4 + +package sha3 + +import ( + "crypto" +) + +func init() { + crypto.RegisterHash(crypto.SHA3_224, New224) + crypto.RegisterHash(crypto.SHA3_256, New256) + crypto.RegisterHash(crypto.SHA3_384, New384) + crypto.RegisterHash(crypto.SHA3_512, New512) +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go new file mode 100644 index 0000000..b12a35c --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3.go @@ -0,0 +1,192 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// spongeDirection indicates the direction bytes are flowing through the sponge. +type spongeDirection int + +const ( + // spongeAbsorbing indicates that the sponge is absorbing input. + spongeAbsorbing spongeDirection = iota + // spongeSqueezing indicates that the sponge is being squeezed. + spongeSqueezing +) + +const ( + // maxRate is the maximum size of the internal buffer. SHAKE-256 + // currently needs the largest buffer. + maxRate = 168 +) + +type state struct { + // Generic sponge components. + a [25]uint64 // main state of the hash + buf []byte // points into storage + rate int // the number of bytes of state to use + + // dsbyte contains the "domain separation" bits and the first bit of + // the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the + // SHA-3 and SHAKE functions by appending bitstrings to the message. + // Using a little-endian bit-ordering convention, these are "01" for SHA-3 + // and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the + // padding rule from section 5.1 is applied to pad the message to a multiple + // of the rate, which involves adding a "1" bit, zero or more "0" bits, and + // a final "1" bit. We merge the first "1" bit from the padding into dsbyte, + // giving 00000110b (0x06) and 00011111b (0x1f). + // [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf + // "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and + // Extendable-Output Functions (May 2014)" + dsbyte byte + storage [maxRate]byte + + // Specific to SHA-3 and SHAKE. + outputLen int // the default output size in bytes + state spongeDirection // whether the sponge is absorbing or squeezing +} + +// BlockSize returns the rate of sponge underlying this hash function. +func (d *state) BlockSize() int { return d.rate } + +// Size returns the output size of the hash function in bytes. +func (d *state) Size() int { return d.outputLen } + +// Reset clears the internal state by zeroing the sponge state and +// the byte buffer, and setting Sponge.state to absorbing. +func (d *state) Reset() { + // Zero the permutation's state. + for i := range d.a { + d.a[i] = 0 + } + d.state = spongeAbsorbing + d.buf = d.storage[:0] +} + +func (d *state) clone() *state { + ret := *d + if ret.state == spongeAbsorbing { + ret.buf = ret.storage[:len(ret.buf)] + } else { + ret.buf = ret.storage[d.rate-cap(d.buf) : d.rate] + } + + return &ret +} + +// permute applies the KeccakF-1600 permutation. It handles +// any input-output buffering. +func (d *state) permute() { + switch d.state { + case spongeAbsorbing: + // If we're absorbing, we need to xor the input into the state + // before applying the permutation. + xorIn(d, d.buf) + d.buf = d.storage[:0] + keccakF1600(&d.a) + case spongeSqueezing: + // If we're squeezing, we need to apply the permutatin before + // copying more output. + keccakF1600(&d.a) + d.buf = d.storage[:d.rate] + copyOut(d, d.buf) + } +} + +// pads appends the domain separation bits in dsbyte, applies +// the multi-bitrate 10..1 padding rule, and permutes the state. +func (d *state) padAndPermute(dsbyte byte) { + if d.buf == nil { + d.buf = d.storage[:0] + } + // Pad with this instance's domain-separator bits. We know that there's + // at least one byte of space in d.buf because, if it were full, + // permute would have been called to empty it. dsbyte also contains the + // first one bit for the padding. See the comment in the state struct. + d.buf = append(d.buf, dsbyte) + zerosStart := len(d.buf) + d.buf = d.storage[:d.rate] + for i := zerosStart; i < d.rate; i++ { + d.buf[i] = 0 + } + // This adds the final one bit for the padding. Because of the way that + // bits are numbered from the LSB upwards, the final bit is the MSB of + // the last byte. + d.buf[d.rate-1] ^= 0x80 + // Apply the permutation + d.permute() + d.state = spongeSqueezing + d.buf = d.storage[:d.rate] + copyOut(d, d.buf) +} + +// Write absorbs more data into the hash's state. It produces an error +// if more data is written to the ShakeHash after writing +func (d *state) Write(p []byte) (written int, err error) { + if d.state != spongeAbsorbing { + panic("sha3: write to sponge after read") + } + if d.buf == nil { + d.buf = d.storage[:0] + } + written = len(p) + + for len(p) > 0 { + if len(d.buf) == 0 && len(p) >= d.rate { + // The fast path; absorb a full "rate" bytes of input and apply the permutation. + xorIn(d, p[:d.rate]) + p = p[d.rate:] + keccakF1600(&d.a) + } else { + // The slow path; buffer the input until we can fill the sponge, and then xor it in. + todo := d.rate - len(d.buf) + if todo > len(p) { + todo = len(p) + } + d.buf = append(d.buf, p[:todo]...) + p = p[todo:] + + // If the sponge is full, apply the permutation. + if len(d.buf) == d.rate { + d.permute() + } + } + } + + return +} + +// Read squeezes an arbitrary number of bytes from the sponge. +func (d *state) Read(out []byte) (n int, err error) { + // If we're still absorbing, pad and apply the permutation. + if d.state == spongeAbsorbing { + d.padAndPermute(d.dsbyte) + } + + n = len(out) + + // Now, do the squeezing. + for len(out) > 0 { + n := copy(out, d.buf) + d.buf = d.buf[n:] + out = out[n:] + + // Apply the permutation if we've squeezed the sponge dry. + if len(d.buf) == 0 { + d.permute() + } + } + + return +} + +// Sum applies padding to the hash state and then squeezes out the desired +// number of output bytes. +func (d *state) Sum(in []byte) []byte { + // Make a copy of the original hash so that caller can keep writing + // and summing. + dup := d.clone() + hash := make([]byte, dup.outputLen) + dup.Read(hash) + return append(in, hash...) +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go new file mode 100644 index 0000000..b6cbc5c --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go @@ -0,0 +1,284 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !gccgo,!appengine + +package sha3 + +// This file contains code for using the 'compute intermediate +// message digest' (KIMD) and 'compute last message digest' (KLMD) +// instructions to compute SHA-3 and SHAKE hashes on IBM Z. + +import ( + "hash" + + "golang.org/x/sys/cpu" +) + +// codes represent 7-bit KIMD/KLMD function codes as defined in +// the Principles of Operation. +type code uint64 + +const ( + // function codes for KIMD/KLMD + sha3_224 code = 32 + sha3_256 = 33 + sha3_384 = 34 + sha3_512 = 35 + shake_128 = 36 + shake_256 = 37 + nopad = 0x100 +) + +// kimd is a wrapper for the 'compute intermediate message digest' instruction. +// src must be a multiple of the rate for the given function code. +//go:noescape +func kimd(function code, chain *[200]byte, src []byte) + +// klmd is a wrapper for the 'compute last message digest' instruction. +// src padding is handled by the instruction. +//go:noescape +func klmd(function code, chain *[200]byte, dst, src []byte) + +type asmState struct { + a [200]byte // 1600 bit state + buf []byte // care must be taken to ensure cap(buf) is a multiple of rate + rate int // equivalent to block size + storage [3072]byte // underlying storage for buf + outputLen int // output length if fixed, 0 if not + function code // KIMD/KLMD function code + state spongeDirection // whether the sponge is absorbing or squeezing +} + +func newAsmState(function code) *asmState { + var s asmState + s.function = function + switch function { + case sha3_224: + s.rate = 144 + s.outputLen = 28 + case sha3_256: + s.rate = 136 + s.outputLen = 32 + case sha3_384: + s.rate = 104 + s.outputLen = 48 + case sha3_512: + s.rate = 72 + s.outputLen = 64 + case shake_128: + s.rate = 168 + case shake_256: + s.rate = 136 + default: + panic("sha3: unrecognized function code") + } + + // limit s.buf size to a multiple of s.rate + s.resetBuf() + return &s +} + +func (s *asmState) clone() *asmState { + c := *s + c.buf = c.storage[:len(s.buf):cap(s.buf)] + return &c +} + +// copyIntoBuf copies b into buf. It will panic if there is not enough space to +// store all of b. +func (s *asmState) copyIntoBuf(b []byte) { + bufLen := len(s.buf) + s.buf = s.buf[:len(s.buf)+len(b)] + copy(s.buf[bufLen:], b) +} + +// resetBuf points buf at storage, sets the length to 0 and sets cap to be a +// multiple of the rate. +func (s *asmState) resetBuf() { + max := (cap(s.storage) / s.rate) * s.rate + s.buf = s.storage[:0:max] +} + +// Write (via the embedded io.Writer interface) adds more data to the running hash. +// It never returns an error. +func (s *asmState) Write(b []byte) (int, error) { + if s.state != spongeAbsorbing { + panic("sha3: write to sponge after read") + } + length := len(b) + for len(b) > 0 { + if len(s.buf) == 0 && len(b) >= cap(s.buf) { + // Hash the data directly and push any remaining bytes + // into the buffer. + remainder := len(s.buf) % s.rate + kimd(s.function, &s.a, b[:len(b)-remainder]) + if remainder != 0 { + s.copyIntoBuf(b[len(b)-remainder:]) + } + return length, nil + } + + if len(s.buf) == cap(s.buf) { + // flush the buffer + kimd(s.function, &s.a, s.buf) + s.buf = s.buf[:0] + } + + // copy as much as we can into the buffer + n := len(b) + if len(b) > cap(s.buf)-len(s.buf) { + n = cap(s.buf) - len(s.buf) + } + s.copyIntoBuf(b[:n]) + b = b[n:] + } + return length, nil +} + +// Read squeezes an arbitrary number of bytes from the sponge. +func (s *asmState) Read(out []byte) (n int, err error) { + n = len(out) + + // need to pad if we were absorbing + if s.state == spongeAbsorbing { + s.state = spongeSqueezing + + // write hash directly into out if possible + if len(out)%s.rate == 0 { + klmd(s.function, &s.a, out, s.buf) // len(out) may be 0 + s.buf = s.buf[:0] + return + } + + // write hash into buffer + max := cap(s.buf) + if max > len(out) { + max = (len(out)/s.rate)*s.rate + s.rate + } + klmd(s.function, &s.a, s.buf[:max], s.buf) + s.buf = s.buf[:max] + } + + for len(out) > 0 { + // flush the buffer + if len(s.buf) != 0 { + c := copy(out, s.buf) + out = out[c:] + s.buf = s.buf[c:] + continue + } + + // write hash directly into out if possible + if len(out)%s.rate == 0 { + klmd(s.function|nopad, &s.a, out, nil) + return + } + + // write hash into buffer + s.resetBuf() + if cap(s.buf) > len(out) { + s.buf = s.buf[:(len(out)/s.rate)*s.rate+s.rate] + } + klmd(s.function|nopad, &s.a, s.buf, nil) + } + return +} + +// Sum appends the current hash to b and returns the resulting slice. +// It does not change the underlying hash state. +func (s *asmState) Sum(b []byte) []byte { + if s.outputLen == 0 { + panic("sha3: cannot call Sum on SHAKE functions") + } + + // Copy the state to preserve the original. + a := s.a + + // Hash the buffer. Note that we don't clear it because we + // aren't updating the state. + klmd(s.function, &a, nil, s.buf) + return append(b, a[:s.outputLen]...) +} + +// Reset resets the Hash to its initial state. +func (s *asmState) Reset() { + for i := range s.a { + s.a[i] = 0 + } + s.resetBuf() + s.state = spongeAbsorbing +} + +// Size returns the number of bytes Sum will return. +func (s *asmState) Size() int { + return s.outputLen +} + +// BlockSize returns the hash's underlying block size. +// The Write method must be able to accept any amount +// of data, but it may operate more efficiently if all writes +// are a multiple of the block size. +func (s *asmState) BlockSize() int { + return s.rate +} + +// Clone returns a copy of the ShakeHash in its current state. +func (s *asmState) Clone() ShakeHash { + return s.clone() +} + +// new224Asm returns an assembly implementation of SHA3-224 if available, +// otherwise it returns nil. +func new224Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_224) + } + return nil +} + +// new256Asm returns an assembly implementation of SHA3-256 if available, +// otherwise it returns nil. +func new256Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_256) + } + return nil +} + +// new384Asm returns an assembly implementation of SHA3-384 if available, +// otherwise it returns nil. +func new384Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_384) + } + return nil +} + +// new512Asm returns an assembly implementation of SHA3-512 if available, +// otherwise it returns nil. +func new512Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_512) + } + return nil +} + +// newShake128Asm returns an assembly implementation of SHAKE-128 if available, +// otherwise it returns nil. +func newShake128Asm() ShakeHash { + if cpu.S390X.HasSHA3 { + return newAsmState(shake_128) + } + return nil +} + +// newShake256Asm returns an assembly implementation of SHAKE-256 if available, +// otherwise it returns nil. +func newShake256Asm() ShakeHash { + if cpu.S390X.HasSHA3 { + return newAsmState(shake_256) + } + return nil +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s new file mode 100644 index 0000000..b2ef69f --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !gccgo,!appengine + +#include "textflag.h" + +// func kimd(function code, chain *[200]byte, src []byte) +TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40 + MOVD function+0(FP), R0 + MOVD chain+8(FP), R1 + LMG src+16(FP), R2, R3 // R2=base, R3=len + +continue: + WORD $0xB93E0002 // KIMD --, R2 + BVS continue // continue if interrupted + MOVD $0, R0 // reset R0 for pre-go1.8 compilers + RET + +// func klmd(function code, chain *[200]byte, dst, src []byte) +TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64 + // TODO: SHAKE support + MOVD function+0(FP), R0 + MOVD chain+8(FP), R1 + LMG dst+16(FP), R2, R3 // R2=base, R3=len + LMG src+40(FP), R4, R5 // R4=base, R5=len + +continue: + WORD $0xB93F0024 // KLMD R2, R4 + BVS continue // continue if interrupted + MOVD $0, R0 // reset R0 for pre-go1.8 compilers + RET diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go new file mode 100644 index 0000000..a39e5d5 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/shake.go @@ -0,0 +1,173 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// This file defines the ShakeHash interface, and provides +// functions for creating SHAKE and cSHAKE instances, as well as utility +// functions for hashing bytes to arbitrary-length output. +// +// +// SHAKE implementation is based on FIPS PUB 202 [1] +// cSHAKE implementations is based on NIST SP 800-185 [2] +// +// [1] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf +// [2] https://doi.org/10.6028/NIST.SP.800-185 + +import ( + "encoding/binary" + "io" +) + +// ShakeHash defines the interface to hash functions that +// support arbitrary-length output. +type ShakeHash interface { + // Write absorbs more data into the hash's state. It panics if input is + // written to it after output has been read from it. + io.Writer + + // Read reads more output from the hash; reading affects the hash's + // state. (ShakeHash.Read is thus very different from Hash.Sum) + // It never returns an error. + io.Reader + + // Clone returns a copy of the ShakeHash in its current state. + Clone() ShakeHash + + // Reset resets the ShakeHash to its initial state. + Reset() +} + +// cSHAKE specific context +type cshakeState struct { + state // SHA-3 state context and Read/Write operations + + // initBlock is the cSHAKE specific initialization set of bytes. It is initialized + // by newCShake function and stores concatenation of N followed by S, encoded + // by the method specified in 3.3 of [1]. + // It is stored here in order for Reset() to be able to put context into + // initial state. + initBlock []byte +} + +// Consts for configuring initial SHA-3 state +const ( + dsbyteShake = 0x1f + dsbyteCShake = 0x04 + rate128 = 168 + rate256 = 136 +) + +func bytepad(input []byte, w int) []byte { + // leftEncode always returns max 9 bytes + buf := make([]byte, 0, 9+len(input)+w) + buf = append(buf, leftEncode(uint64(w))...) + buf = append(buf, input...) + padlen := w - (len(buf) % w) + return append(buf, make([]byte, padlen)...) +} + +func leftEncode(value uint64) []byte { + var b [9]byte + binary.BigEndian.PutUint64(b[1:], value) + // Trim all but last leading zero bytes + i := byte(1) + for i < 8 && b[i] == 0 { + i++ + } + // Prepend number of encoded bytes + b[i-1] = 9 - i + return b[i-1:] +} + +func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash { + c := cshakeState{state: state{rate: rate, dsbyte: dsbyte}} + + // leftEncode returns max 9 bytes + c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) + c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...) + c.initBlock = append(c.initBlock, N...) + c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...) + c.initBlock = append(c.initBlock, S...) + c.Write(bytepad(c.initBlock, c.rate)) + return &c +} + +// Reset resets the hash to initial state. +func (c *cshakeState) Reset() { + c.state.Reset() + c.Write(bytepad(c.initBlock, c.rate)) +} + +// Clone returns copy of a cSHAKE context within its current state. +func (c *cshakeState) Clone() ShakeHash { + b := make([]byte, len(c.initBlock)) + copy(b, c.initBlock) + return &cshakeState{state: *c.clone(), initBlock: b} +} + +// Clone returns copy of SHAKE context within its current state. +func (c *state) Clone() ShakeHash { + return c.clone() +} + +// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash. +// Its generic security strength is 128 bits against all attacks if at +// least 32 bytes of its output are used. +func NewShake128() ShakeHash { + if h := newShake128Asm(); h != nil { + return h + } + return &state{rate: rate128, dsbyte: dsbyteShake} +} + +// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash. +// Its generic security strength is 256 bits against all attacks if +// at least 64 bytes of its output are used. +func NewShake256() ShakeHash { + if h := newShake256Asm(); h != nil { + return h + } + return &state{rate: rate256, dsbyte: dsbyteShake} +} + +// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash, +// a customizable variant of SHAKE128. +// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is +// desired. S is a customization byte string used for domain separation - two cSHAKE +// computations on same input with different S yield unrelated outputs. +// When N and S are both empty, this is equivalent to NewShake128. +func NewCShake128(N, S []byte) ShakeHash { + if len(N) == 0 && len(S) == 0 { + return NewShake128() + } + return newCShake(N, S, rate128, dsbyteCShake) +} + +// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash, +// a customizable variant of SHAKE256. +// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is +// desired. S is a customization byte string used for domain separation - two cSHAKE +// computations on same input with different S yield unrelated outputs. +// When N and S are both empty, this is equivalent to NewShake256. +func NewCShake256(N, S []byte) ShakeHash { + if len(N) == 0 && len(S) == 0 { + return NewShake256() + } + return newCShake(N, S, rate256, dsbyteCShake) +} + +// ShakeSum128 writes an arbitrary-length digest of data into hash. +func ShakeSum128(hash, data []byte) { + h := NewShake128() + h.Write(data) + h.Read(hash) +} + +// ShakeSum256 writes an arbitrary-length digest of data into hash. +func ShakeSum256(hash, data []byte) { + h := NewShake256() + h.Write(data) + h.Read(hash) +} diff --git a/vendor/golang.org/x/crypto/sha3/shake_generic.go b/vendor/golang.org/x/crypto/sha3/shake_generic.go new file mode 100644 index 0000000..73d0c90 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/shake_generic.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build gccgo appengine !s390x + +package sha3 + +// newShake128Asm returns an assembly implementation of SHAKE-128 if available, +// otherwise it returns nil. +func newShake128Asm() ShakeHash { + return nil +} + +// newShake256Asm returns an assembly implementation of SHAKE-256 if available, +// otherwise it returns nil. +func newShake256Asm() ShakeHash { + return nil +} diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go new file mode 100644 index 0000000..46a0d63 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor.go @@ -0,0 +1,16 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!386,!ppc64le appengine + +package sha3 + +var ( + xorIn = xorInGeneric + copyOut = copyOutGeneric + xorInUnaligned = xorInGeneric + copyOutUnaligned = copyOutGeneric +) + +const xorImplementationUnaligned = "generic" diff --git a/vendor/golang.org/x/crypto/sha3/xor_generic.go b/vendor/golang.org/x/crypto/sha3/xor_generic.go new file mode 100644 index 0000000..fd35f02 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor_generic.go @@ -0,0 +1,28 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +import "encoding/binary" + +// xorInGeneric xors the bytes in buf into the state; it +// makes no non-portable assumptions about memory layout +// or alignment. +func xorInGeneric(d *state, buf []byte) { + n := len(buf) / 8 + + for i := 0; i < n; i++ { + a := binary.LittleEndian.Uint64(buf) + d.a[i] ^= a + buf = buf[8:] + } +} + +// copyOutGeneric copies ulint64s to a byte buffer. +func copyOutGeneric(d *state, b []byte) { + for i := 0; len(b) >= 8; i++ { + binary.LittleEndian.PutUint64(b, d.a[i]) + b = b[8:] + } +} diff --git a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go new file mode 100644 index 0000000..929a486 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go @@ -0,0 +1,58 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 386 ppc64le +// +build !appengine + +package sha3 + +import "unsafe" + +func xorInUnaligned(d *state, buf []byte) { + bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0])) + n := len(buf) + if n >= 72 { + d.a[0] ^= bw[0] + d.a[1] ^= bw[1] + d.a[2] ^= bw[2] + d.a[3] ^= bw[3] + d.a[4] ^= bw[4] + d.a[5] ^= bw[5] + d.a[6] ^= bw[6] + d.a[7] ^= bw[7] + d.a[8] ^= bw[8] + } + if n >= 104 { + d.a[9] ^= bw[9] + d.a[10] ^= bw[10] + d.a[11] ^= bw[11] + d.a[12] ^= bw[12] + } + if n >= 136 { + d.a[13] ^= bw[13] + d.a[14] ^= bw[14] + d.a[15] ^= bw[15] + d.a[16] ^= bw[16] + } + if n >= 144 { + d.a[17] ^= bw[17] + } + if n >= 168 { + d.a[18] ^= bw[18] + d.a[19] ^= bw[19] + d.a[20] ^= bw[20] + } +} + +func copyOutUnaligned(d *state, buf []byte) { + ab := (*[maxRate]uint8)(unsafe.Pointer(&d.a[0])) + copy(buf, ab[:]) +} + +var ( + xorIn = xorInUnaligned + copyOut = copyOutUnaligned +) + +const xorImplementationUnaligned = "unaligned" diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go new file mode 100644 index 0000000..c1ff90e --- /dev/null +++ b/vendor/golang.org/x/crypto/tea/cipher.go @@ -0,0 +1,116 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tea implements the TEA algorithm, as defined in Needham and +// Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See +// http://www.cix.co.uk/~klockstone/tea.pdf for details. +// +// TEA is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package tea + +import ( + "crypto/cipher" + "encoding/binary" + "errors" +) + +const ( + // BlockSize is the size of a TEA block, in bytes. + BlockSize = 8 + + // KeySize is the size of a TEA key, in bytes. + KeySize = 16 + + // delta is the TEA key schedule constant. + delta = 0x9e3779b9 + + // numRounds is the standard number of rounds in TEA. + numRounds = 64 +) + +// tea is an instance of the TEA cipher with a particular key. +type tea struct { + key [16]byte + rounds int +} + +// NewCipher returns an instance of the TEA cipher with the standard number of +// rounds. The key argument must be 16 bytes long. +func NewCipher(key []byte) (cipher.Block, error) { + return NewCipherWithRounds(key, numRounds) +} + +// NewCipherWithRounds returns an instance of the TEA cipher with a given +// number of rounds, which must be even. The key argument must be 16 bytes +// long. +func NewCipherWithRounds(key []byte, rounds int) (cipher.Block, error) { + if len(key) != 16 { + return nil, errors.New("tea: incorrect key size") + } + + if rounds&1 != 0 { + return nil, errors.New("tea: odd number of rounds specified") + } + + c := &tea{ + rounds: rounds, + } + copy(c.key[:], key) + + return c, nil +} + +// BlockSize returns the TEA block size, which is eight bytes. It is necessary +// to satisfy the Block interface in the package "crypto/cipher". +func (*tea) BlockSize() int { + return BlockSize +} + +// Encrypt encrypts the 8 byte buffer src using the key in t and stores the +// result in dst. Note that for amounts of data larger than a block, it is not +// safe to just call Encrypt on successive blocks; instead, use an encryption +// mode like CBC (see crypto/cipher/cbc.go). +func (t *tea) Encrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + sum := uint32(0) + delta := uint32(delta) + + for i := 0; i < t.rounds/2; i++ { + sum += delta + v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} + +// Decrypt decrypts the 8 byte buffer src using the key in t and stores the +// result in dst. +func (t *tea) Decrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + delta := uint32(delta) + sum := delta * uint32(t.rounds/2) // in general, sum = delta * n + + for i := 0; i < t.rounds/2; i++ { + v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + sum -= delta + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} diff --git a/vendor/golang.org/x/crypto/twofish/twofish.go b/vendor/golang.org/x/crypto/twofish/twofish.go new file mode 100644 index 0000000..1197d75 --- /dev/null +++ b/vendor/golang.org/x/crypto/twofish/twofish.go @@ -0,0 +1,348 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package twofish implements Bruce Schneier's Twofish encryption algorithm. +// +// Deprecated: Twofish is a legacy cipher and should not be used for new +// applications. Also, this package does not and will not provide an optimized +// implementation. Instead, use AES (from crypto/aes, if necessary in an AEAD +// mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package twofish // import "golang.org/x/crypto/twofish" + +// Twofish is defined in https://www.schneier.com/paper-twofish-paper.pdf [TWOFISH] + +// This code is a port of the LibTom C implementation. +// See http://libtom.org/?page=features&newsitems=5&whatfile=crypt. +// LibTomCrypt is free for all purposes under the public domain. +// It was heavily inspired by the go blowfish package. + +import "strconv" + +// BlockSize is the constant block size of Twofish. +const BlockSize = 16 + +const mdsPolynomial = 0x169 // x^8 + x^6 + x^5 + x^3 + 1, see [TWOFISH] 4.2 +const rsPolynomial = 0x14d // x^8 + x^6 + x^3 + x^2 + 1, see [TWOFISH] 4.3 + +// A Cipher is an instance of Twofish encryption using a particular key. +type Cipher struct { + s [4][256]uint32 + k [40]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/twofish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Twofish key, 16, 24 or 32 bytes. +func NewCipher(key []byte) (*Cipher, error) { + keylen := len(key) + + if keylen != 16 && keylen != 24 && keylen != 32 { + return nil, KeySizeError(keylen) + } + + // k is the number of 64 bit words in key + k := keylen / 8 + + // Create the S[..] words + var S [4 * 4]byte + for i := 0; i < k; i++ { + // Computes [y0 y1 y2 y3] = rs . [x0 x1 x2 x3 x4 x5 x6 x7] + for j, rsRow := range rs { + for k, rsVal := range rsRow { + S[4*i+j] ^= gfMult(key[8*i+k], rsVal, rsPolynomial) + } + } + } + + // Calculate subkeys + c := new(Cipher) + var tmp [4]byte + for i := byte(0); i < 20; i++ { + // A = h(p * 2x, Me) + for j := range tmp { + tmp[j] = 2 * i + } + A := h(tmp[:], key, 0) + + // B = rolc(h(p * (2x + 1), Mo), 8) + for j := range tmp { + tmp[j] = 2*i + 1 + } + B := h(tmp[:], key, 1) + B = rol(B, 8) + + c.k[2*i] = A + B + + // K[2i+1] = (A + 2B) <<< 9 + c.k[2*i+1] = rol(2*B+A, 9) + } + + // Calculate sboxes + switch k { + case 2: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][byte(i)]^S[0]]^S[4]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][byte(i)]^S[1]]^S[5]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][byte(i)]^S[2]]^S[6]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][byte(i)]^S[3]]^S[7]], 3) + } + case 3: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[1]]^S[5]]^S[9]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[3]]^S[7]]^S[11]], 3) + } + default: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]]^S[12]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[1]]^S[5]]^S[9]]^S[13]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]]^S[14]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][sbox[1][byte(i)]^S[3]]^S[7]]^S[11]]^S[15]], 3) + } + } + + return c, nil +} + +// BlockSize returns the Twofish block size, 16 bytes. +func (c *Cipher) BlockSize() int { return BlockSize } + +// store32l stores src in dst in little-endian form. +func store32l(dst []byte, src uint32) { + dst[0] = byte(src) + dst[1] = byte(src >> 8) + dst[2] = byte(src >> 16) + dst[3] = byte(src >> 24) + return +} + +// load32l reads a little-endian uint32 from src. +func load32l(src []byte) uint32 { + return uint32(src[0]) | uint32(src[1])<<8 | uint32(src[2])<<16 | uint32(src[3])<<24 +} + +// rol returns x after a left circular rotation of y bits. +func rol(x, y uint32) uint32 { + return (x << (y & 31)) | (x >> (32 - (y & 31))) +} + +// ror returns x after a right circular rotation of y bits. +func ror(x, y uint32) uint32 { + return (x >> (y & 31)) | (x << (32 - (y & 31))) +} + +// The RS matrix. See [TWOFISH] 4.3 +var rs = [4][8]byte{ + {0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E}, + {0xA4, 0x56, 0x82, 0xF3, 0x1E, 0xC6, 0x68, 0xE5}, + {0x02, 0xA1, 0xFC, 0xC1, 0x47, 0xAE, 0x3D, 0x19}, + {0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E, 0x03}, +} + +// sbox tables +var sbox = [2][256]byte{ + { + 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, + 0x0d, 0xc6, 0x35, 0x98, 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, 0x94, 0x48, + 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, + 0x63, 0x01, 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, 0x16, 0x0c, 0xe3, 0x61, + 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, + 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, + 0xfb, 0xc3, 0x8e, 0xb5, 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, 0x62, 0x71, + 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, + 0xa1, 0x1d, 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, 0x31, 0xc2, 0x27, 0x90, + 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, + 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, + 0x2a, 0xce, 0xcb, 0x2f, 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, 0xa7, 0x5a, + 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, + 0x57, 0xc7, 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, + 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, + 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0, + }, + { + 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, + 0xd6, 0x32, 0xd8, 0xfd, 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, 0x06, 0x3f, + 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, + 0xa0, 0x84, 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, 0x92, 0x74, 0x36, 0x51, + 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, + 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, + 0xa6, 0x83, 0x20, 0xff, 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, 0x2b, 0xe2, + 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, + 0x66, 0x94, 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, 0xef, 0xd1, 0x53, 0x3e, + 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, + 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, + 0x4f, 0xf2, 0x65, 0x8e, 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, 0x05, 0x64, + 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, + 0x29, 0x2e, 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, 0x35, 0x6a, 0xcf, 0xdc, + 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, + 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91, + }, +} + +// gfMult returns a·b in GF(2^8)/p +func gfMult(a, b byte, p uint32) byte { + B := [2]uint32{0, uint32(b)} + P := [2]uint32{0, p} + var result uint32 + + // branchless GF multiplier + for i := 0; i < 7; i++ { + result ^= B[a&1] + a >>= 1 + B[1] = P[B[1]>>7] ^ (B[1] << 1) + } + result ^= B[a&1] + return byte(result) +} + +// mdsColumnMult calculates y{col} where [y0 y1 y2 y3] = MDS · [x0] +func mdsColumnMult(in byte, col int) uint32 { + mul01 := in + mul5B := gfMult(in, 0x5B, mdsPolynomial) + mulEF := gfMult(in, 0xEF, mdsPolynomial) + + switch col { + case 0: + return uint32(mul01) | uint32(mul5B)<<8 | uint32(mulEF)<<16 | uint32(mulEF)<<24 + case 1: + return uint32(mulEF) | uint32(mulEF)<<8 | uint32(mul5B)<<16 | uint32(mul01)<<24 + case 2: + return uint32(mul5B) | uint32(mulEF)<<8 | uint32(mul01)<<16 | uint32(mulEF)<<24 + case 3: + return uint32(mul5B) | uint32(mul01)<<8 | uint32(mulEF)<<16 | uint32(mul5B)<<24 + } + + panic("unreachable") +} + +// h implements the S-box generation function. See [TWOFISH] 4.3.5 +func h(in, key []byte, offset int) uint32 { + var y [4]byte + for x := range y { + y[x] = in[x] + } + switch len(key) / 8 { + case 4: + y[0] = sbox[1][y[0]] ^ key[4*(6+offset)+0] + y[1] = sbox[0][y[1]] ^ key[4*(6+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(6+offset)+2] + y[3] = sbox[1][y[3]] ^ key[4*(6+offset)+3] + fallthrough + case 3: + y[0] = sbox[1][y[0]] ^ key[4*(4+offset)+0] + y[1] = sbox[1][y[1]] ^ key[4*(4+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(4+offset)+2] + y[3] = sbox[0][y[3]] ^ key[4*(4+offset)+3] + fallthrough + case 2: + y[0] = sbox[1][sbox[0][sbox[0][y[0]]^key[4*(2+offset)+0]]^key[4*(0+offset)+0]] + y[1] = sbox[0][sbox[0][sbox[1][y[1]]^key[4*(2+offset)+1]]^key[4*(0+offset)+1]] + y[2] = sbox[1][sbox[1][sbox[0][y[2]]^key[4*(2+offset)+2]]^key[4*(0+offset)+2]] + y[3] = sbox[0][sbox[1][sbox[1][y[3]]^key[4*(2+offset)+3]]^key[4*(0+offset)+3]] + } + // [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] + var mdsMult uint32 + for i := range y { + mdsMult ^= mdsColumnMult(y[i], i) + } + return mdsMult +} + +// Encrypt encrypts a 16-byte block from src to dst, which may overlap. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ia := load32l(src[0:4]) + ib := load32l(src[4:8]) + ic := load32l(src[8:12]) + id := load32l(src[12:16]) + + // Pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + for i := 0; i < 8; i++ { + k := c.k[8+i*4 : 12+i*4] + t2 := S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 := S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = ror(ic^(t1+k[0]), 1) + id = rol(id, 1) ^ (t2 + t1 + k[1]) + + t2 = S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 = S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = ror(ia^(t1+k[2]), 1) + ib = rol(ib, 1) ^ (t2 + t1 + k[3]) + } + + // Output with "undo last swap" + ta := ic ^ c.k[4] + tb := id ^ c.k[5] + tc := ia ^ c.k[6] + td := ib ^ c.k[7] + + store32l(dst[0:4], ta) + store32l(dst[4:8], tb) + store32l(dst[8:12], tc) + store32l(dst[12:16], td) +} + +// Decrypt decrypts a 16-byte block from src to dst, which may overlap. +func (c *Cipher) Decrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ta := load32l(src[0:4]) + tb := load32l(src[4:8]) + tc := load32l(src[8:12]) + td := load32l(src[12:16]) + + // Undo undo final swap + ia := tc ^ c.k[6] + ib := td ^ c.k[7] + ic := ta ^ c.k[4] + id := tb ^ c.k[5] + + for i := 8; i > 0; i-- { + k := c.k[4+i*4 : 8+i*4] + t2 := S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 := S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = rol(ia, 1) ^ (t1 + k[2]) + ib = ror(ib^(t2+t1+k[3]), 1) + + t2 = S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 = S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = rol(ic, 1) ^ (t1 + k[0]) + id = ror(id^(t2+t1+k[1]), 1) + } + + // Undo pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + store32l(dst[0:4], ia) + store32l(dst[4:8], ib) + store32l(dst[8:12], ic) + store32l(dst[12:16], id) +} diff --git a/vendor/golang.org/x/crypto/xtea/block.go b/vendor/golang.org/x/crypto/xtea/block.go new file mode 100644 index 0000000..fcb4e4d --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/block.go @@ -0,0 +1,66 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* + Implementation adapted from Needham and Wheeler's paper: + http://www.cix.co.uk/~klockstone/xtea.pdf + + A precalculated look up table is used during encryption/decryption for values that are based purely on the key. +*/ + +package xtea + +// XTEA is based on 64 rounds. +const numRounds = 64 + +// blockToUint32 reads an 8 byte slice into two uint32s. +// The block is treated as big endian. +func blockToUint32(src []byte) (uint32, uint32) { + r0 := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r1 := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + return r0, r1 +} + +// uint32ToBlock writes two uint32s into an 8 byte data block. +// Values are written as big endian. +func uint32ToBlock(v0, v1 uint32, dst []byte) { + dst[0] = byte(v0 >> 24) + dst[1] = byte(v0 >> 16) + dst[2] = byte(v0 >> 8) + dst[3] = byte(v0) + dst[4] = byte(v1 >> 24) + dst[5] = byte(v1 >> 16) + dst[6] = byte(v1 >> 8) + dst[7] = byte(v1 >> 0) +} + +// encryptBlock encrypts a single 8 byte block using XTEA. +func encryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + v0 += ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + i++ + v1 += ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i++ + } + + uint32ToBlock(v0, v1, dst) +} + +// decryptBlock decrypts a single 8 byte block using XTEA. +func decryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := numRounds; i > 0; { + i-- + v1 -= ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i-- + v0 -= ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + } + + uint32ToBlock(v0, v1, dst) +} diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go new file mode 100644 index 0000000..a4c2fd0 --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/cipher.go @@ -0,0 +1,90 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package xtea implements XTEA encryption, as defined in Needham and Wheeler's +// 1997 technical report, "Tea extensions." +// +// XTEA is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package xtea // import "golang.org/x/crypto/xtea" + +// For details, see http://www.cix.co.uk/~klockstone/xtea.pdf + +import "strconv" + +// The XTEA block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of an XTEA cipher using a particular key. +type Cipher struct { + // table contains a series of precalculated values that are used each round. + table [64]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/xtea: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new Cipher. +// The key argument should be the XTEA key. +// XTEA only supports 128 bit (16 byte) keys. +func NewCipher(key []byte) (*Cipher, error) { + k := len(key) + switch k { + default: + return nil, KeySizeError(k) + case 16: + break + } + + c := new(Cipher) + initCipher(c, key) + + return c, nil +} + +// BlockSize returns the XTEA block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8 byte buffer src using the key and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { encryptBlock(c, dst, src) } + +// Decrypt decrypts the 8 byte buffer src using the key and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { decryptBlock(c, dst, src) } + +// initCipher initializes the cipher context by creating a look up table +// of precalculated values that are based on the key. +func initCipher(c *Cipher, key []byte) { + // Load the key into four uint32s + var k [4]uint32 + for i := 0; i < len(k); i++ { + j := i << 2 // Multiply by 4 + k[i] = uint32(key[j+0])<<24 | uint32(key[j+1])<<16 | uint32(key[j+2])<<8 | uint32(key[j+3]) + } + + // Precalculate the table + const delta = 0x9E3779B9 + var sum uint32 + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + c.table[i] = sum + k[sum&3] + i++ + sum += delta + c.table[i] = sum + k[(sum>>11)&3] + i++ + } +} diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS new file mode 100644 index 0000000..15167cd --- /dev/null +++ b/vendor/golang.org/x/net/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS new file mode 100644 index 0000000..1c4577e --- /dev/null +++ b/vendor/golang.org/x/net/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/net/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/net/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go new file mode 100644 index 0000000..15e21b1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/asm.go @@ -0,0 +1,41 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// Assemble converts insts into raw instructions suitable for loading +// into a BPF virtual machine. +// +// Currently, no optimization is attempted, the assembled program flow +// is exactly as provided. +func Assemble(insts []Instruction) ([]RawInstruction, error) { + ret := make([]RawInstruction, len(insts)) + var err error + for i, inst := range insts { + ret[i], err = inst.Assemble() + if err != nil { + return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) + } + } + return ret, nil +} + +// Disassemble attempts to parse raw back into +// Instructions. Unrecognized RawInstructions are assumed to be an +// extension not implemented by this package, and are passed through +// unchanged to the output. The allDecoded value reports whether insts +// contains no RawInstructions. +func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { + insts = make([]Instruction, len(raw)) + allDecoded = true + for i, r := range raw { + insts[i] = r.Disassemble() + if _, ok := insts[i].(RawInstruction); ok { + allDecoded = false + } + } + return insts, allDecoded +} diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go new file mode 100644 index 0000000..12f3ee8 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/constants.go @@ -0,0 +1,222 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Register is a register of the BPF virtual machine. +type Register uint16 + +const ( + // RegA is the accumulator register. RegA is always the + // destination register of ALU operations. + RegA Register = iota + // RegX is the indirection register, used by LoadIndirect + // operations. + RegX +) + +// An ALUOp is an arithmetic or logic operation. +type ALUOp uint16 + +// ALU binary operation types. +const ( + ALUOpAdd ALUOp = iota << 4 + ALUOpSub + ALUOpMul + ALUOpDiv + ALUOpOr + ALUOpAnd + ALUOpShiftLeft + ALUOpShiftRight + aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. + ALUOpMod + ALUOpXor +) + +// A JumpTest is a comparison operator used in conditional jumps. +type JumpTest uint16 + +// Supported operators for conditional jumps. +// K can be RegX for JumpIfX +const ( + // K == A + JumpEqual JumpTest = iota + // K != A + JumpNotEqual + // K > A + JumpGreaterThan + // K < A + JumpLessThan + // K >= A + JumpGreaterOrEqual + // K <= A + JumpLessOrEqual + // K & A != 0 + JumpBitsSet + // K & A == 0 + JumpBitsNotSet +) + +// An Extension is a function call provided by the kernel that +// performs advanced operations that are expensive or impossible +// within the BPF virtual machine. +// +// Extensions are only implemented by the Linux kernel. +// +// TODO: should we prune this list? Some of these extensions seem +// either broken or near-impossible to use correctly, whereas other +// (len, random, ifindex) are quite useful. +type Extension int + +// Extension functions available in the Linux kernel. +const ( + // extOffset is the negative maximum number of instructions used + // to load instructions by overloading the K argument. + extOffset = -0x1000 + // ExtLen returns the length of the packet. + ExtLen Extension = 1 + // ExtProto returns the packet's L3 protocol type. + ExtProto Extension = 0 + // ExtType returns the packet's type (skb->pkt_type in the kernel) + // + // TODO: better documentation. How nice an API do we want to + // provide for these esoteric extensions? + ExtType Extension = 4 + // ExtPayloadOffset returns the offset of the packet payload, or + // the first protocol header that the kernel does not know how to + // parse. + ExtPayloadOffset Extension = 52 + // ExtInterfaceIndex returns the index of the interface on which + // the packet was received. + ExtInterfaceIndex Extension = 8 + // ExtNetlinkAttr returns the netlink attribute of type X at + // offset A. + ExtNetlinkAttr Extension = 12 + // ExtNetlinkAttrNested returns the nested netlink attribute of + // type X at offset A. + ExtNetlinkAttrNested Extension = 16 + // ExtMark returns the packet's mark value. + ExtMark Extension = 20 + // ExtQueue returns the packet's assigned hardware queue. + ExtQueue Extension = 24 + // ExtLinkLayerType returns the packet's hardware address type + // (e.g. Ethernet, Infiniband). + ExtLinkLayerType Extension = 28 + // ExtRXHash returns the packets receive hash. + // + // TODO: figure out what this rxhash actually is. + ExtRXHash Extension = 32 + // ExtCPUID returns the ID of the CPU processing the current + // packet. + ExtCPUID Extension = 36 + // ExtVLANTag returns the packet's VLAN tag. + ExtVLANTag Extension = 44 + // ExtVLANTagPresent returns non-zero if the packet has a VLAN + // tag. + // + // TODO: I think this might be a lie: it reads bit 0x1000 of the + // VLAN header, which changed meaning in recent revisions of the + // spec - this extension may now return meaningless information. + ExtVLANTagPresent Extension = 48 + // ExtVLANProto returns 0x8100 if the frame has a VLAN header, + // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some + // other value if no VLAN information is present. + ExtVLANProto Extension = 60 + // ExtRand returns a uniformly random uint32. + ExtRand Extension = 56 +) + +// The following gives names to various bit patterns used in opcode construction. + +const ( + opMaskCls uint16 = 0x7 + // opClsLoad masks + opMaskLoadDest = 0x01 + opMaskLoadWidth = 0x18 + opMaskLoadMode = 0xe0 + // opClsALU & opClsJump + opMaskOperand = 0x08 + opMaskOperator = 0xf0 +) + +const ( + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsLoadA uint16 = iota + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | + // +---------------+-----------------+---+---+---+ + opClsLoadX + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + // +---+---+---+---+---+---+---+---+ + opClsStoreA + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | + // +---+---+---+---+---+---+---+---+ + opClsStoreX + // +---------------+-----------------+---+---+---+ + // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsALU + // +-----------------------------+---+---+---+---+ + // | TestOperator (4b) | 0 | 1 | 0 | 1 | + // +-----------------------------+---+---+---+---+ + opClsJump + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | + // +---+-------------------------+---+---+---+---+ + opClsReturn + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | + // +---+-------------------------+---+---+---+---+ + opClsMisc +) + +const ( + opAddrModeImmediate uint16 = iota << 5 + opAddrModeAbsolute + opAddrModeIndirect + opAddrModeScratch + opAddrModePacketLen // actually an extension, not an addressing mode. + opAddrModeMemShift +) + +const ( + opLoadWidth4 uint16 = iota << 3 + opLoadWidth2 + opLoadWidth1 +) + +// Operand for ALU and Jump instructions +type opOperand uint16 + +// Supported operand sources. +const ( + opOperandConstant opOperand = iota << 3 + opOperandX +) + +// An jumpOp is a conditional jump condition. +type jumpOp uint16 + +// Supported jump conditions. +const ( + opJumpAlways jumpOp = iota << 4 + opJumpEqual + opJumpGT + opJumpGE + opJumpSet +) + +const ( + opRetSrcConstant uint16 = iota << 4 + opRetSrcA +) + +const ( + opMiscTAX = 0x00 + opMiscTXA = 0x80 +) diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go new file mode 100644 index 0000000..ae62feb --- /dev/null +++ b/vendor/golang.org/x/net/bpf/doc.go @@ -0,0 +1,82 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* + +Package bpf implements marshaling and unmarshaling of programs for the +Berkeley Packet Filter virtual machine, and provides a Go implementation +of the virtual machine. + +BPF's main use is to specify a packet filter for network taps, so that +the kernel doesn't have to expensively copy every packet it sees to +userspace. However, it's been repurposed to other areas where running +user code in-kernel is needed. For example, Linux's seccomp uses BPF +to apply security policies to system calls. For simplicity, this +documentation refers only to packets, but other uses of BPF have their +own data payloads. + +BPF programs run in a restricted virtual machine. It has almost no +access to kernel functions, and while conditional branches are +allowed, they can only jump forwards, to guarantee that there are no +infinite loops. + +The virtual machine + +The BPF VM is an accumulator machine. Its main register, called +register A, is an implicit source and destination in all arithmetic +and logic operations. The machine also has 16 scratch registers for +temporary storage, and an indirection register (register X) for +indirect memory access. All registers are 32 bits wide. + +Each run of a BPF program is given one packet, which is placed in the +VM's read-only "main memory". LoadAbsolute and LoadIndirect +instructions can fetch up to 32 bits at a time into register A for +examination. + +The goal of a BPF program is to produce and return a verdict (uint32), +which tells the kernel what to do with the packet. In the context of +packet filtering, the returned value is the number of bytes of the +packet to forward to userspace, or 0 to ignore the packet. Other +contexts like seccomp define their own return values. + +In order to simplify programs, attempts to read past the end of the +packet terminate the program execution with a verdict of 0 (ignore +packet). This means that the vast majority of BPF programs don't need +to do any explicit bounds checking. + +In addition to the bytes of the packet, some BPF programs have access +to extensions, which are essentially calls to kernel utility +functions. Currently, the only extensions supported by this package +are the Linux packet filter extensions. + +Examples + +This packet filter selects all ARP packets. + + bpf.Assemble([]bpf.Instruction{ + // Load "EtherType" field from the ethernet header. + bpf.LoadAbsolute{Off: 12, Size: 2}, + // Skip over the next instruction if EtherType is not ARP. + bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, + // Verdict is "send up to 4k of the packet to userspace." + bpf.RetConstant{Val: 4096}, + // Verdict is "ignore packet." + bpf.RetConstant{Val: 0}, + }) + +This packet filter captures a random 1% sample of traffic. + + bpf.Assemble([]bpf.Instruction{ + // Get a 32-bit random number from the Linux kernel. + bpf.LoadExtension{Num: bpf.ExtRand}, + // 1% dice roll? + bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, + // Capture. + bpf.RetConstant{Val: 4096}, + // Ignore. + bpf.RetConstant{Val: 0}, + }) + +*/ +package bpf // import "golang.org/x/net/bpf" diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go new file mode 100644 index 0000000..3cffcaa --- /dev/null +++ b/vendor/golang.org/x/net/bpf/instructions.go @@ -0,0 +1,726 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// An Instruction is one instruction executed by the BPF virtual +// machine. +type Instruction interface { + // Assemble assembles the Instruction into a RawInstruction. + Assemble() (RawInstruction, error) +} + +// A RawInstruction is a raw BPF virtual machine instruction. +type RawInstruction struct { + // Operation to execute. + Op uint16 + // For conditional jump instructions, the number of instructions + // to skip if the condition is true/false. + Jt uint8 + Jf uint8 + // Constant parameter. The meaning depends on the Op. + K uint32 +} + +// Assemble implements the Instruction Assemble method. +func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } + +// Disassemble parses ri into an Instruction and returns it. If ri is +// not recognized by this package, ri itself is returned. +func (ri RawInstruction) Disassemble() Instruction { + switch ri.Op & opMaskCls { + case opClsLoadA, opClsLoadX: + reg := Register(ri.Op & opMaskLoadDest) + sz := 0 + switch ri.Op & opMaskLoadWidth { + case opLoadWidth4: + sz = 4 + case opLoadWidth2: + sz = 2 + case opLoadWidth1: + sz = 1 + default: + return ri + } + switch ri.Op & opMaskLoadMode { + case opAddrModeImmediate: + if sz != 4 { + return ri + } + return LoadConstant{Dst: reg, Val: ri.K} + case opAddrModeScratch: + if sz != 4 || ri.K > 15 { + return ri + } + return LoadScratch{Dst: reg, N: int(ri.K)} + case opAddrModeAbsolute: + if ri.K > extOffset+0xffffffff { + return LoadExtension{Num: Extension(-extOffset + ri.K)} + } + return LoadAbsolute{Size: sz, Off: ri.K} + case opAddrModeIndirect: + return LoadIndirect{Size: sz, Off: ri.K} + case opAddrModePacketLen: + if sz != 4 { + return ri + } + return LoadExtension{Num: ExtLen} + case opAddrModeMemShift: + return LoadMemShift{Off: ri.K} + default: + return ri + } + + case opClsStoreA: + if ri.Op != opClsStoreA || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegA, N: int(ri.K)} + + case opClsStoreX: + if ri.Op != opClsStoreX || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegX, N: int(ri.K)} + + case opClsALU: + switch op := ALUOp(ri.Op & opMaskOperator); op { + case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return ALUOpX{Op: op} + case opOperandConstant: + return ALUOpConstant{Op: op, Val: ri.K} + default: + return ri + } + case aluOpNeg: + return NegateA{} + default: + return ri + } + + case opClsJump: + switch op := jumpOp(ri.Op & opMaskOperator); op { + case opJumpAlways: + return Jump{Skip: ri.K} + case opJumpEqual, opJumpGT, opJumpGE, opJumpSet: + cond, skipTrue, skipFalse := jumpOpToTest(op, ri.Jt, ri.Jf) + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return JumpIfX{Cond: cond, SkipTrue: skipTrue, SkipFalse: skipFalse} + case opOperandConstant: + return JumpIf{Cond: cond, Val: ri.K, SkipTrue: skipTrue, SkipFalse: skipFalse} + default: + return ri + } + default: + return ri + } + + case opClsReturn: + switch ri.Op { + case opClsReturn | opRetSrcA: + return RetA{} + case opClsReturn | opRetSrcConstant: + return RetConstant{Val: ri.K} + default: + return ri + } + + case opClsMisc: + switch ri.Op { + case opClsMisc | opMiscTAX: + return TAX{} + case opClsMisc | opMiscTXA: + return TXA{} + default: + return ri + } + + default: + panic("unreachable") // switch is exhaustive on the bit pattern + } +} + +func jumpOpToTest(op jumpOp, skipTrue uint8, skipFalse uint8) (JumpTest, uint8, uint8) { + var test JumpTest + + // Decode "fake" jump conditions that don't appear in machine code + // Ensures the Assemble -> Disassemble stage recreates the same instructions + // See https://github.com/golang/go/issues/18470 + if skipTrue == 0 { + switch op { + case opJumpEqual: + test = JumpNotEqual + case opJumpGT: + test = JumpLessOrEqual + case opJumpGE: + test = JumpLessThan + case opJumpSet: + test = JumpBitsNotSet + } + + return test, skipFalse, 0 + } + + switch op { + case opJumpEqual: + test = JumpEqual + case opJumpGT: + test = JumpGreaterThan + case opJumpGE: + test = JumpGreaterOrEqual + case opJumpSet: + test = JumpBitsSet + } + + return test, skipTrue, skipFalse +} + +// LoadConstant loads Val into register Dst. +type LoadConstant struct { + Dst Register + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadConstant) Assemble() (RawInstruction, error) { + return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) +} + +// String returns the instruction in assembler notation. +func (a LoadConstant) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld #%d", a.Val) + case RegX: + return fmt.Sprintf("ldx #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadScratch loads scratch[N] into register Dst. +type LoadScratch struct { + Dst Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) +} + +// String returns the instruction in assembler notation. +func (a LoadScratch) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld M[%d]", a.N) + case RegX: + return fmt.Sprintf("ldx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadAbsolute loads packet[Off:Off+Size] as an integer value into +// register A. +type LoadAbsolute struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadAbsolute) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadAbsolute) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [%d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [%d]", a.Off) + case 4: // word + if a.Off > extOffset+0xffffffff { + return LoadExtension{Num: Extension(a.Off + 0x1000)}.String() + } + return fmt.Sprintf("ld [%d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value +// into register A. +type LoadIndirect struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadIndirect) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadIndirect) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [x + %d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [x + %d]", a.Off) + case 4: // word + return fmt.Sprintf("ld [x + %d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] +// by 4 and stores the result in register X. +// +// This instruction is mainly useful to load into X the length of an +// IPv4 packet header in a single instruction, rather than have to do +// the arithmetic on the header's first byte by hand. +type LoadMemShift struct { + Off uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadMemShift) Assemble() (RawInstruction, error) { + return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadMemShift) String() string { + return fmt.Sprintf("ldx 4*([%d]&0xf)", a.Off) +} + +// LoadExtension invokes a linux-specific extension and stores the +// result in register A. +type LoadExtension struct { + Num Extension +} + +// Assemble implements the Instruction Assemble method. +func (a LoadExtension) Assemble() (RawInstruction, error) { + if a.Num == ExtLen { + return assembleLoad(RegA, 4, opAddrModePacketLen, 0) + } + return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(extOffset+a.Num)) +} + +// String returns the instruction in assembler notation. +func (a LoadExtension) String() string { + switch a.Num { + case ExtLen: + return "ld #len" + case ExtProto: + return "ld #proto" + case ExtType: + return "ld #type" + case ExtPayloadOffset: + return "ld #poff" + case ExtInterfaceIndex: + return "ld #ifidx" + case ExtNetlinkAttr: + return "ld #nla" + case ExtNetlinkAttrNested: + return "ld #nlan" + case ExtMark: + return "ld #mark" + case ExtQueue: + return "ld #queue" + case ExtLinkLayerType: + return "ld #hatype" + case ExtRXHash: + return "ld #rxhash" + case ExtCPUID: + return "ld #cpu" + case ExtVLANTag: + return "ld #vlan_tci" + case ExtVLANTagPresent: + return "ld #vlan_avail" + case ExtVLANProto: + return "ld #vlan_tpid" + case ExtRand: + return "ld #rand" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// StoreScratch stores register Src into scratch[N]. +type StoreScratch struct { + Src Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a StoreScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + var op uint16 + switch a.Src { + case RegA: + op = opClsStoreA + case RegX: + op = opClsStoreX + default: + return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) + } + + return RawInstruction{ + Op: op, + K: uint32(a.N), + }, nil +} + +// String returns the instruction in assembler notation. +func (a StoreScratch) String() string { + switch a.Src { + case RegA: + return fmt.Sprintf("st M[%d]", a.N) + case RegX: + return fmt.Sprintf("stx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpConstant executes A = A Val. +type ALUOpConstant struct { + Op ALUOp + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandConstant) | uint16(a.Op), + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpConstant) String() string { + switch a.Op { + case ALUOpAdd: + return fmt.Sprintf("add #%d", a.Val) + case ALUOpSub: + return fmt.Sprintf("sub #%d", a.Val) + case ALUOpMul: + return fmt.Sprintf("mul #%d", a.Val) + case ALUOpDiv: + return fmt.Sprintf("div #%d", a.Val) + case ALUOpMod: + return fmt.Sprintf("mod #%d", a.Val) + case ALUOpAnd: + return fmt.Sprintf("and #%d", a.Val) + case ALUOpOr: + return fmt.Sprintf("or #%d", a.Val) + case ALUOpXor: + return fmt.Sprintf("xor #%d", a.Val) + case ALUOpShiftLeft: + return fmt.Sprintf("lsh #%d", a.Val) + case ALUOpShiftRight: + return fmt.Sprintf("rsh #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpX executes A = A X +type ALUOpX struct { + Op ALUOp +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandX) | uint16(a.Op), + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpX) String() string { + switch a.Op { + case ALUOpAdd: + return "add x" + case ALUOpSub: + return "sub x" + case ALUOpMul: + return "mul x" + case ALUOpDiv: + return "div x" + case ALUOpMod: + return "mod x" + case ALUOpAnd: + return "and x" + case ALUOpOr: + return "or x" + case ALUOpXor: + return "xor x" + case ALUOpShiftLeft: + return "lsh x" + case ALUOpShiftRight: + return "rsh x" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// NegateA executes A = -A. +type NegateA struct{} + +// Assemble implements the Instruction Assemble method. +func (a NegateA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(aluOpNeg), + }, nil +} + +// String returns the instruction in assembler notation. +func (a NegateA) String() string { + return fmt.Sprintf("neg") +} + +// Jump skips the following Skip instructions in the program. +type Jump struct { + Skip uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a Jump) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsJump | uint16(opJumpAlways), + K: a.Skip, + }, nil +} + +// String returns the instruction in assembler notation. +func (a Jump) String() string { + return fmt.Sprintf("ja %d", a.Skip) +} + +// JumpIf skips the following Skip instructions in the program if A +// Val is true. +type JumpIf struct { + Cond JumpTest + Val uint32 + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIf) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandConstant, a.Val, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIf) String() string { + return jumpToString(a.Cond, fmt.Sprintf("#%d", a.Val), a.SkipTrue, a.SkipFalse) +} + +// JumpIfX skips the following Skip instructions in the program if A +// X is true. +type JumpIfX struct { + Cond JumpTest + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIfX) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandX, 0, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIfX) String() string { + return jumpToString(a.Cond, "x", a.SkipTrue, a.SkipFalse) +} + +// jumpToRaw assembles a jump instruction into a RawInstruction +func jumpToRaw(test JumpTest, operand opOperand, k uint32, skipTrue, skipFalse uint8) (RawInstruction, error) { + var ( + cond jumpOp + flip bool + ) + switch test { + case JumpEqual: + cond = opJumpEqual + case JumpNotEqual: + cond, flip = opJumpEqual, true + case JumpGreaterThan: + cond = opJumpGT + case JumpLessThan: + cond, flip = opJumpGE, true + case JumpGreaterOrEqual: + cond = opJumpGE + case JumpLessOrEqual: + cond, flip = opJumpGT, true + case JumpBitsSet: + cond = opJumpSet + case JumpBitsNotSet: + cond, flip = opJumpSet, true + default: + return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", test) + } + jt, jf := skipTrue, skipFalse + if flip { + jt, jf = jf, jt + } + return RawInstruction{ + Op: opClsJump | uint16(cond) | uint16(operand), + Jt: jt, + Jf: jf, + K: k, + }, nil +} + +// jumpToString converts a jump instruction to assembler notation +func jumpToString(cond JumpTest, operand string, skipTrue, skipFalse uint8) string { + switch cond { + // K == A + case JumpEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jeq", "jneq") + // K != A + case JumpNotEqual: + return fmt.Sprintf("jneq %s,%d", operand, skipTrue) + // K > A + case JumpGreaterThan: + return conditionalJump(operand, skipTrue, skipFalse, "jgt", "jle") + // K < A + case JumpLessThan: + return fmt.Sprintf("jlt %s,%d", operand, skipTrue) + // K >= A + case JumpGreaterOrEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jge", "jlt") + // K <= A + case JumpLessOrEqual: + return fmt.Sprintf("jle %s,%d", operand, skipTrue) + // K & A != 0 + case JumpBitsSet: + if skipFalse > 0 { + return fmt.Sprintf("jset %s,%d,%d", operand, skipTrue, skipFalse) + } + return fmt.Sprintf("jset %s,%d", operand, skipTrue) + // K & A == 0, there is no assembler instruction for JumpBitNotSet, use JumpBitSet and invert skips + case JumpBitsNotSet: + return jumpToString(JumpBitsSet, operand, skipFalse, skipTrue) + default: + return fmt.Sprintf("unknown JumpTest %#v", cond) + } +} + +func conditionalJump(operand string, skipTrue, skipFalse uint8, positiveJump, negativeJump string) string { + if skipTrue > 0 { + if skipFalse > 0 { + return fmt.Sprintf("%s %s,%d,%d", positiveJump, operand, skipTrue, skipFalse) + } + return fmt.Sprintf("%s %s,%d", positiveJump, operand, skipTrue) + } + return fmt.Sprintf("%s %s,%d", negativeJump, operand, skipFalse) +} + +// RetA exits the BPF program, returning the value of register A. +type RetA struct{} + +// Assemble implements the Instruction Assemble method. +func (a RetA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetA) String() string { + return fmt.Sprintf("ret a") +} + +// RetConstant exits the BPF program, returning a constant value. +type RetConstant struct { + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a RetConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcConstant, + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetConstant) String() string { + return fmt.Sprintf("ret #%d", a.Val) +} + +// TXA copies the value of register X to register A. +type TXA struct{} + +// Assemble implements the Instruction Assemble method. +func (a TXA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTXA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TXA) String() string { + return fmt.Sprintf("txa") +} + +// TAX copies the value of register A to register X. +type TAX struct{} + +// Assemble implements the Instruction Assemble method. +func (a TAX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTAX, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TAX) String() string { + return fmt.Sprintf("tax") +} + +func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { + var ( + cls uint16 + sz uint16 + ) + switch dst { + case RegA: + cls = opClsLoadA + case RegX: + cls = opClsLoadX + default: + return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) + } + switch loadSize { + case 1: + sz = opLoadWidth1 + case 2: + sz = opLoadWidth2 + case 4: + sz = opLoadWidth4 + default: + return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) + } + return RawInstruction{ + Op: cls | sz | mode, + K: k, + }, nil +} diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go new file mode 100644 index 0000000..43e35f0 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/setter.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Setter is a type which can attach a compiled BPF filter to itself. +type Setter interface { + SetBPF(filter []RawInstruction) error +} diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go new file mode 100644 index 0000000..73f57f1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm.go @@ -0,0 +1,150 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "errors" + "fmt" +) + +// A VM is an emulated BPF virtual machine. +type VM struct { + filter []Instruction +} + +// NewVM returns a new VM using the input BPF program. +func NewVM(filter []Instruction) (*VM, error) { + if len(filter) == 0 { + return nil, errors.New("one or more Instructions must be specified") + } + + for i, ins := range filter { + check := len(filter) - (i + 1) + switch ins := ins.(type) { + // Check for out-of-bounds jumps in instructions + case Jump: + if check <= int(ins.Skip) { + return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) + } + case JumpIf: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + case JumpIfX: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + // Check for division or modulus by zero + case ALUOpConstant: + if ins.Val != 0 { + break + } + + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return nil, errors.New("cannot divide by zero using ALUOpConstant") + } + // Check for unknown extensions + case LoadExtension: + switch ins.Num { + case ExtLen: + default: + return nil, fmt.Errorf("extension %d not implemented", ins.Num) + } + } + } + + // Make sure last instruction is a return instruction + switch filter[len(filter)-1].(type) { + case RetA, RetConstant: + default: + return nil, errors.New("BPF program must end with RetA or RetConstant") + } + + // Though our VM works using disassembled instructions, we + // attempt to assemble the input filter anyway to ensure it is compatible + // with an operating system VM. + _, err := Assemble(filter) + + return &VM{ + filter: filter, + }, err +} + +// Run runs the VM's BPF program against the input bytes. +// Run returns the number of bytes accepted by the BPF program, and any errors +// which occurred while processing the program. +func (v *VM) Run(in []byte) (int, error) { + var ( + // Registers of the virtual machine + regA uint32 + regX uint32 + regScratch [16]uint32 + + // OK is true if the program should continue processing the next + // instruction, or false if not, causing the loop to break + ok = true + ) + + // TODO(mdlayher): implement: + // - NegateA: + // - would require a change from uint32 registers to int32 + // registers + + // TODO(mdlayher): add interop tests that check signedness of ALU + // operations against kernel implementation, and make sure Go + // implementation matches behavior + + for i := 0; i < len(v.filter) && ok; i++ { + ins := v.filter[i] + + switch ins := ins.(type) { + case ALUOpConstant: + regA = aluOpConstant(ins, regA) + case ALUOpX: + regA, ok = aluOpX(ins, regA, regX) + case Jump: + i += int(ins.Skip) + case JumpIf: + jump := jumpIf(ins, regA) + i += jump + case JumpIfX: + jump := jumpIfX(ins, regA, regX) + i += jump + case LoadAbsolute: + regA, ok = loadAbsolute(ins, in) + case LoadConstant: + regA, regX = loadConstant(ins, regA, regX) + case LoadExtension: + regA = loadExtension(ins, in) + case LoadIndirect: + regA, ok = loadIndirect(ins, in, regX) + case LoadMemShift: + regX, ok = loadMemShift(ins, in) + case LoadScratch: + regA, regX = loadScratch(ins, regScratch, regA, regX) + case RetA: + return int(regA), nil + case RetConstant: + return int(ins.Val), nil + case StoreScratch: + regScratch = storeScratch(ins, regScratch, regA, regX) + case TAX: + regX = regA + case TXA: + regA = regX + default: + return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) + } + } + + return 0, nil +} diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go new file mode 100644 index 0000000..cf8947c --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm_instructions.go @@ -0,0 +1,182 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "encoding/binary" + "fmt" +) + +func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { + return aluOpCommon(ins.Op, regA, ins.Val) +} + +func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { + // Guard against division or modulus by zero by terminating + // the program, as the OS BPF VM does + if regX == 0 { + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return 0, false + } + } + + return aluOpCommon(ins.Op, regA, regX), true +} + +func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { + switch op { + case ALUOpAdd: + return regA + value + case ALUOpSub: + return regA - value + case ALUOpMul: + return regA * value + case ALUOpDiv: + // Division by zero not permitted by NewVM and aluOpX checks + return regA / value + case ALUOpOr: + return regA | value + case ALUOpAnd: + return regA & value + case ALUOpShiftLeft: + return regA << value + case ALUOpShiftRight: + return regA >> value + case ALUOpMod: + // Modulus by zero not permitted by NewVM and aluOpX checks + return regA % value + case ALUOpXor: + return regA ^ value + default: + return regA + } +} + +func jumpIf(ins JumpIf, regA uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, ins.Val) +} + +func jumpIfX(ins JumpIfX, regA uint32, regX uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, regX) +} + +func jumpIfCommon(cond JumpTest, skipTrue, skipFalse uint8, regA uint32, value uint32) int { + var ok bool + + switch cond { + case JumpEqual: + ok = regA == value + case JumpNotEqual: + ok = regA != value + case JumpGreaterThan: + ok = regA > value + case JumpLessThan: + ok = regA < value + case JumpGreaterOrEqual: + ok = regA >= value + case JumpLessOrEqual: + ok = regA <= value + case JumpBitsSet: + ok = (regA & value) != 0 + case JumpBitsNotSet: + ok = (regA & value) == 0 + } + + if ok { + return int(skipTrue) + } + + return int(skipFalse) +} + +func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { + offset := int(ins.Off) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = ins.Val + case RegX: + regX = ins.Val + } + + return regA, regX +} + +func loadExtension(ins LoadExtension, in []byte) uint32 { + switch ins.Num { + case ExtLen: + return uint32(len(in)) + default: + panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) + } +} + +func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { + offset := int(ins.Off) + int(regX) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { + offset := int(ins.Off) + + // Size of LoadMemShift is always 1 byte + if !inBounds(len(in), offset, 1) { + return 0, false + } + + // Mask off high 4 bits and multiply low 4 bits by 4 + return uint32(in[offset]&0x0f) * 4, true +} + +func inBounds(inLen int, offset int, size int) bool { + return offset+size <= inLen +} + +func loadCommon(in []byte, offset int, size int) (uint32, bool) { + if !inBounds(len(in), offset, size) { + return 0, false + } + + switch size { + case 1: + return uint32(in[offset]), true + case 2: + return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true + case 4: + return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true + default: + panic(fmt.Sprintf("invalid load size: %d", size)) + } +} + +func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = regScratch[ins.N] + case RegX: + regX = regScratch[ins.N] + } + + return regA, regX +} + +func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { + switch ins.Src { + case RegA: + regScratch[ins.N] = regA + case RegX: + regScratch[ins.N] = regX + } + + return regScratch +} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go new file mode 100644 index 0000000..cea712f --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/const.go @@ -0,0 +1,223 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). +package iana // import "golang.org/x/net/internal/iana" + +// Differentiated Services Field Codepoints (DSCP), Updated: 2018-05-04 +const ( + DiffServCS0 = 0x00 // CS0 + DiffServCS1 = 0x20 // CS1 + DiffServCS2 = 0x40 // CS2 + DiffServCS3 = 0x60 // CS3 + DiffServCS4 = 0x80 // CS4 + DiffServCS5 = 0xa0 // CS5 + DiffServCS6 = 0xc0 // CS6 + DiffServCS7 = 0xe0 // CS7 + DiffServAF11 = 0x28 // AF11 + DiffServAF12 = 0x30 // AF12 + DiffServAF13 = 0x38 // AF13 + DiffServAF21 = 0x48 // AF21 + DiffServAF22 = 0x50 // AF22 + DiffServAF23 = 0x58 // AF23 + DiffServAF31 = 0x68 // AF31 + DiffServAF32 = 0x70 // AF32 + DiffServAF33 = 0x78 // AF33 + DiffServAF41 = 0x88 // AF41 + DiffServAF42 = 0x90 // AF42 + DiffServAF43 = 0x98 // AF43 + DiffServEF = 0xb8 // EF + DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT + NotECNTransport = 0x00 // Not-ECT (Not ECN-Capable Transport) + ECNTransport1 = 0x01 // ECT(1) (ECN-Capable Transport(1)) + ECNTransport0 = 0x02 // ECT(0) (ECN-Capable Transport(0)) + CongestionExperienced = 0x03 // CE (Congestion Experienced) +) + +// Protocol Numbers, Updated: 2017-10-13 +const ( + ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number + ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option + ProtocolICMP = 1 // Internet Control Message + ProtocolIGMP = 2 // Internet Group Management + ProtocolGGP = 3 // Gateway-to-Gateway + ProtocolIPv4 = 4 // IPv4 encapsulation + ProtocolST = 5 // Stream + ProtocolTCP = 6 // Transmission Control + ProtocolCBT = 7 // CBT + ProtocolEGP = 8 // Exterior Gateway Protocol + ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP) + ProtocolBBNRCCMON = 10 // BBN RCC Monitoring + ProtocolNVPII = 11 // Network Voice Protocol + ProtocolPUP = 12 // PUP + ProtocolEMCON = 14 // EMCON + ProtocolXNET = 15 // Cross Net Debugger + ProtocolCHAOS = 16 // Chaos + ProtocolUDP = 17 // User Datagram + ProtocolMUX = 18 // Multiplexing + ProtocolDCNMEAS = 19 // DCN Measurement Subsystems + ProtocolHMP = 20 // Host Monitoring + ProtocolPRM = 21 // Packet Radio Measurement + ProtocolXNSIDP = 22 // XEROX NS IDP + ProtocolTRUNK1 = 23 // Trunk-1 + ProtocolTRUNK2 = 24 // Trunk-2 + ProtocolLEAF1 = 25 // Leaf-1 + ProtocolLEAF2 = 26 // Leaf-2 + ProtocolRDP = 27 // Reliable Data Protocol + ProtocolIRTP = 28 // Internet Reliable Transaction + ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4 + ProtocolNETBLT = 30 // Bulk Data Transfer Protocol + ProtocolMFENSP = 31 // MFE Network Services Protocol + ProtocolMERITINP = 32 // MERIT Internodal Protocol + ProtocolDCCP = 33 // Datagram Congestion Control Protocol + Protocol3PC = 34 // Third Party Connect Protocol + ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol + ProtocolXTP = 36 // XTP + ProtocolDDP = 37 // Datagram Delivery Protocol + ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto + ProtocolTPPP = 39 // TP++ Transport Protocol + ProtocolIL = 40 // IL Transport Protocol + ProtocolIPv6 = 41 // IPv6 encapsulation + ProtocolSDRP = 42 // Source Demand Routing Protocol + ProtocolIPv6Route = 43 // Routing Header for IPv6 + ProtocolIPv6Frag = 44 // Fragment Header for IPv6 + ProtocolIDRP = 45 // Inter-Domain Routing Protocol + ProtocolRSVP = 46 // Reservation Protocol + ProtocolGRE = 47 // Generic Routing Encapsulation + ProtocolDSR = 48 // Dynamic Source Routing Protocol + ProtocolBNA = 49 // BNA + ProtocolESP = 50 // Encap Security Payload + ProtocolAH = 51 // Authentication Header + ProtocolINLSP = 52 // Integrated Net Layer Security TUBA + ProtocolNARP = 54 // NBMA Address Resolution Protocol + ProtocolMOBILE = 55 // IP Mobility + ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management + ProtocolSKIP = 57 // SKIP + ProtocolIPv6ICMP = 58 // ICMP for IPv6 + ProtocolIPv6NoNxt = 59 // No Next Header for IPv6 + ProtocolIPv6Opts = 60 // Destination Options for IPv6 + ProtocolCFTP = 62 // CFTP + ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK + ProtocolKRYPTOLAN = 65 // Kryptolan + ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol + ProtocolIPPC = 67 // Internet Pluribus Packet Core + ProtocolSATMON = 69 // SATNET Monitoring + ProtocolVISA = 70 // VISA Protocol + ProtocolIPCV = 71 // Internet Packet Core Utility + ProtocolCPNX = 72 // Computer Protocol Network Executive + ProtocolCPHB = 73 // Computer Protocol Heart Beat + ProtocolWSN = 74 // Wang Span Network + ProtocolPVP = 75 // Packet Video Protocol + ProtocolBRSATMON = 76 // Backroom SATNET Monitoring + ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary + ProtocolWBMON = 78 // WIDEBAND Monitoring + ProtocolWBEXPAK = 79 // WIDEBAND EXPAK + ProtocolISOIP = 80 // ISO Internet Protocol + ProtocolVMTP = 81 // VMTP + ProtocolSECUREVMTP = 82 // SECURE-VMTP + ProtocolVINES = 83 // VINES + ProtocolTTP = 84 // Transaction Transport Protocol + ProtocolIPTM = 84 // Internet Protocol Traffic Manager + ProtocolNSFNETIGP = 85 // NSFNET-IGP + ProtocolDGP = 86 // Dissimilar Gateway Protocol + ProtocolTCF = 87 // TCF + ProtocolEIGRP = 88 // EIGRP + ProtocolOSPFIGP = 89 // OSPFIGP + ProtocolSpriteRPC = 90 // Sprite RPC Protocol + ProtocolLARP = 91 // Locus Address Resolution Protocol + ProtocolMTP = 92 // Multicast Transport Protocol + ProtocolAX25 = 93 // AX.25 Frames + ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol + ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro. + ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation + ProtocolENCAP = 98 // Encapsulation Header + ProtocolGMTP = 100 // GMTP + ProtocolIFMP = 101 // Ipsilon Flow Management Protocol + ProtocolPNNI = 102 // PNNI over IP + ProtocolPIM = 103 // Protocol Independent Multicast + ProtocolARIS = 104 // ARIS + ProtocolSCPS = 105 // SCPS + ProtocolQNX = 106 // QNX + ProtocolAN = 107 // Active Networks + ProtocolIPComp = 108 // IP Payload Compression Protocol + ProtocolSNP = 109 // Sitara Networks Protocol + ProtocolCompaqPeer = 110 // Compaq Peer Protocol + ProtocolIPXinIP = 111 // IPX in IP + ProtocolVRRP = 112 // Virtual Router Redundancy Protocol + ProtocolPGM = 113 // PGM Reliable Transport Protocol + ProtocolL2TP = 115 // Layer Two Tunneling Protocol + ProtocolDDX = 116 // D-II Data Exchange (DDX) + ProtocolIATP = 117 // Interactive Agent Transfer Protocol + ProtocolSTP = 118 // Schedule Transfer Protocol + ProtocolSRP = 119 // SpectraLink Radio Protocol + ProtocolUTI = 120 // UTI + ProtocolSMP = 121 // Simple Message Protocol + ProtocolPTP = 123 // Performance Transparency Protocol + ProtocolISIS = 124 // ISIS over IPv4 + ProtocolFIRE = 125 // FIRE + ProtocolCRTP = 126 // Combat Radio Transport Protocol + ProtocolCRUDP = 127 // Combat Radio User Datagram + ProtocolSSCOPMCE = 128 // SSCOPMCE + ProtocolIPLT = 129 // IPLT + ProtocolSPS = 130 // Secure Packet Shield + ProtocolPIPE = 131 // Private IP Encapsulation within IP + ProtocolSCTP = 132 // Stream Control Transmission Protocol + ProtocolFC = 133 // Fibre Channel + ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE + ProtocolMobilityHeader = 135 // Mobility Header + ProtocolUDPLite = 136 // UDPLite + ProtocolMPLSinIP = 137 // MPLS-in-IP + ProtocolMANET = 138 // MANET Protocols + ProtocolHIP = 139 // Host Identity Protocol + ProtocolShim6 = 140 // Shim6 Protocol + ProtocolWESP = 141 // Wrapped Encapsulating Security Payload + ProtocolROHC = 142 // Robust Header Compression + ProtocolReserved = 255 // Reserved +) + +// Address Family Numbers, Updated: 2018-04-02 +const ( + AddrFamilyIPv4 = 1 // IP (IP version 4) + AddrFamilyIPv6 = 2 // IP6 (IP version 6) + AddrFamilyNSAP = 3 // NSAP + AddrFamilyHDLC = 4 // HDLC (8-bit multidrop) + AddrFamilyBBN1822 = 5 // BBN 1822 + AddrFamily802 = 6 // 802 (includes all 802 media plus Ethernet "canonical format") + AddrFamilyE163 = 7 // E.163 + AddrFamilyE164 = 8 // E.164 (SMDS, Frame Relay, ATM) + AddrFamilyF69 = 9 // F.69 (Telex) + AddrFamilyX121 = 10 // X.121 (X.25, Frame Relay) + AddrFamilyIPX = 11 // IPX + AddrFamilyAppletalk = 12 // Appletalk + AddrFamilyDecnetIV = 13 // Decnet IV + AddrFamilyBanyanVines = 14 // Banyan Vines + AddrFamilyE164withSubaddress = 15 // E.164 with NSAP format subaddress + AddrFamilyDNS = 16 // DNS (Domain Name System) + AddrFamilyDistinguishedName = 17 // Distinguished Name + AddrFamilyASNumber = 18 // AS Number + AddrFamilyXTPoverIPv4 = 19 // XTP over IP version 4 + AddrFamilyXTPoverIPv6 = 20 // XTP over IP version 6 + AddrFamilyXTPnativemodeXTP = 21 // XTP native mode XTP + AddrFamilyFibreChannelWorldWidePortName = 22 // Fibre Channel World-Wide Port Name + AddrFamilyFibreChannelWorldWideNodeName = 23 // Fibre Channel World-Wide Node Name + AddrFamilyGWID = 24 // GWID + AddrFamilyL2VPN = 25 // AFI for L2VPN information + AddrFamilyMPLSTPSectionEndpointID = 26 // MPLS-TP Section Endpoint Identifier + AddrFamilyMPLSTPLSPEndpointID = 27 // MPLS-TP LSP Endpoint Identifier + AddrFamilyMPLSTPPseudowireEndpointID = 28 // MPLS-TP Pseudowire Endpoint Identifier + AddrFamilyMTIPv4 = 29 // MT IP: Multi-Topology IP version 4 + AddrFamilyMTIPv6 = 30 // MT IPv6: Multi-Topology IP version 6 + AddrFamilyEIGRPCommonServiceFamily = 16384 // EIGRP Common Service Family + AddrFamilyEIGRPIPv4ServiceFamily = 16385 // EIGRP IPv4 Service Family + AddrFamilyEIGRPIPv6ServiceFamily = 16386 // EIGRP IPv6 Service Family + AddrFamilyLISPCanonicalAddressFormat = 16387 // LISP Canonical Address Format (LCAF) + AddrFamilyBGPLS = 16388 // BGP-LS + AddrFamily48bitMAC = 16389 // 48-bit MAC + AddrFamily64bitMAC = 16390 // 64-bit MAC + AddrFamilyOUI = 16391 // OUI + AddrFamilyMACFinal24bits = 16392 // MAC/24 + AddrFamilyMACFinal40bits = 16393 // MAC/40 + AddrFamilyIPv6Initial64bits = 16394 // IPv6/64 + AddrFamilyRBridgePortID = 16395 // RBridge Port ID + AddrFamilyTRILLNickname = 16396 // TRILL Nickname +) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go new file mode 100644 index 0000000..2a7661c --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/gen.go @@ -0,0 +1,383 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates internet protocol constants and tables by +// reading IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "strconv" + "strings" +) + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml", + parseDSCPRegistry, + }, + { + "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", + parseProtocolNumbers, + }, + { + "https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml", + parseAddrFamilyNumbers, + }, +} + +func main() { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n") + fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url) + os.Exit(1) + } + if err := r.parse(&bb, resp.Body); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := ioutil.WriteFile("const.go", b, 0644); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func parseDSCPRegistry(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var dr dscpRegistry + if err := dec.Decode(&dr); err != nil { + return err + } + fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) + fmt.Fprintf(w, "const (\n") + for _, dr := range dr.escapeDSCP() { + fmt.Fprintf(w, "DiffServ%s = %#02x", dr.Name, dr.Value) + fmt.Fprintf(w, "// %s\n", dr.OrigName) + } + for _, er := range dr.escapeECN() { + fmt.Fprintf(w, "%s = %#02x", er.Descr, er.Value) + fmt.Fprintf(w, "// %s\n", er.OrigDescr) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type dscpRegistry struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Note string `xml:"note"` + Registries []struct { + Title string `xml:"title"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Name string `xml:"name"` + Space string `xml:"space"` + } `xml:"record"` + } `xml:"registry"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonDSCPRecord struct { + OrigName string + Name string + Value int +} + +func (drr *dscpRegistry) escapeDSCP() []canonDSCPRecord { + var drs []canonDSCPRecord + for _, preg := range drr.Registries { + if !strings.Contains(preg.Title, "Differentiated Services Field Codepoints") { + continue + } + for _, reg := range preg.Registries { + if !strings.Contains(reg.Title, "Pool 1 Codepoints") { + continue + } + drs = make([]canonDSCPRecord, len(reg.Records)) + sr := strings.NewReplacer( + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, dr := range reg.Records { + s := strings.TrimSpace(dr.Name) + drs[i].OrigName = s + drs[i].Name = sr.Replace(s) + n, err := strconv.ParseUint(dr.Space, 2, 8) + if err != nil { + continue + } + drs[i].Value = int(n) << 2 + } + } + } + return drs +} + +type canonECNRecord struct { + OrigDescr string + Descr string + Value int +} + +func (drr *dscpRegistry) escapeECN() []canonECNRecord { + var ers []canonECNRecord + for _, reg := range drr.Registries { + if !strings.Contains(reg.Title, "ECN Field") { + continue + } + ers = make([]canonECNRecord, len(reg.Records)) + sr := strings.NewReplacer( + "Capable", "", + "Not-ECT", "", + "ECT(1)", "", + "ECT(0)", "", + "CE", "", + "(", "", + ")", "", + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, er := range reg.Records { + s := strings.TrimSpace(er.Descr) + ers[i].OrigDescr = s + ss := strings.Split(s, " ") + if len(ss) > 1 { + ers[i].Descr = strings.Join(ss[1:], " ") + } else { + ers[i].Descr = ss[0] + } + ers[i].Descr = sr.Replace(er.Descr) + n, err := strconv.ParseUint(er.Value, 2, 8) + if err != nil { + continue + } + ers[i].Value = int(n) + } + } + return ers +} + +func parseProtocolNumbers(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var pn protocolNumbers + if err := dec.Decode(&pn); err != nil { + return err + } + prs := pn.escape() + prs = append([]canonProtocolRecord{{ + Name: "IP", + Descr: "IPv4 encapsulation, pseudo protocol number", + Value: 0, + }}, prs...) + fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value) + s := pr.Descr + if s == "" { + s = pr.OrigName + } + fmt.Fprintf(w, "// %s\n", s) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type protocolNumbers struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + RegTitle string `xml:"registry>title"` + Note string `xml:"registry>note"` + Records []struct { + Value string `xml:"value"` + Name string `xml:"name"` + Descr string `xml:"description"` + } `xml:"registry>record"` +} + +type canonProtocolRecord struct { + OrigName string + Name string + Descr string + Value int +} + +func (pn *protocolNumbers) escape() []canonProtocolRecord { + prs := make([]canonProtocolRecord, len(pn.Records)) + sr := strings.NewReplacer( + "-in-", "in", + "-within-", "within", + "-over-", "over", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range pn.Records { + if strings.Contains(pr.Name, "Deprecated") || + strings.Contains(pr.Name, "deprecated") { + continue + } + prs[i].OrigName = pr.Name + s := strings.TrimSpace(pr.Name) + switch pr.Name { + case "ISIS over IPv4": + prs[i].Name = "ISIS" + case "manet": + prs[i].Name = "MANET" + default: + prs[i].Name = sr.Replace(s) + } + ss := strings.Split(pr.Descr, "\n") + for i := range ss { + ss[i] = strings.TrimSpace(ss[i]) + } + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} + +func parseAddrFamilyNumbers(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var afn addrFamilylNumbers + if err := dec.Decode(&afn); err != nil { + return err + } + afrs := afn.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", afn.Title, afn.Updated) + fmt.Fprintf(w, "const (\n") + for _, afr := range afrs { + if afr.Name == "" { + continue + } + fmt.Fprintf(w, "AddrFamily%s = %d", afr.Name, afr.Value) + fmt.Fprintf(w, "// %s\n", afr.Descr) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type addrFamilylNumbers struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + RegTitle string `xml:"registry>title"` + Note string `xml:"registry>note"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"registry>record"` +} + +type canonAddrFamilyRecord struct { + Name string + Descr string + Value int +} + +func (afn *addrFamilylNumbers) escape() []canonAddrFamilyRecord { + afrs := make([]canonAddrFamilyRecord, len(afn.Records)) + sr := strings.NewReplacer( + "IP version 4", "IPv4", + "IP version 6", "IPv6", + "Identifier", "ID", + "-", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, afr := range afn.Records { + if strings.Contains(afr.Descr, "Unassigned") || + strings.Contains(afr.Descr, "Reserved") { + continue + } + afrs[i].Descr = afr.Descr + s := strings.TrimSpace(afr.Descr) + switch s { + case "IP (IP version 4)": + afrs[i].Name = "IPv4" + case "IP6 (IP version 6)": + afrs[i].Name = "IPv6" + case "AFI for L2VPN information": + afrs[i].Name = "L2VPN" + case "E.164 with NSAP format subaddress": + afrs[i].Name = "E164withSubaddress" + case "MT IP: Multi-Topology IP version 4": + afrs[i].Name = "MTIPv4" + case "MAC/24": + afrs[i].Name = "MACFinal24bits" + case "MAC/40": + afrs[i].Name = "MACFinal40bits" + case "IPv6/64": + afrs[i].Name = "IPv6Initial64bits" + default: + n := strings.Index(s, "(") + if n > 0 { + s = s[:n] + } + n = strings.Index(s, ":") + if n > 0 { + s = s[:n] + } + afrs[i].Name = sr.Replace(s) + } + afrs[i].Value, _ = strconv.Atoi(afr.Value) + } + return afrs +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go new file mode 100644 index 0000000..0a73e27 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr.go @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +func (h *cmsghdr) len() int { return int(h.Len) } +func (h *cmsghdr) lvl() int { return int(h.Level) } +func (h *cmsghdr) typ() int { return int(h.Type) } diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go new file mode 100644 index 0000000..14dbb3a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go @@ -0,0 +1,13 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go new file mode 100644 index 0000000..bac6681 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go new file mode 100644 index 0000000..27be0ef --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint64(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go new file mode 100644 index 0000000..7dedd43 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go new file mode 100644 index 0000000..e581011 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go @@ -0,0 +1,17 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type cmsghdr struct{} + +const sizeofCmsghdr = 0 + +func (h *cmsghdr) len() int { return 0 } +func (h *cmsghdr) lvl() int { return 0 } +func (h *cmsghdr) typ() int { return 0 } + +func (h *cmsghdr) set(l, lvl, typ int) {} diff --git a/vendor/golang.org/x/net/internal/socket/defs_aix.go b/vendor/golang.org/x/net/internal/socket/defs_aix.go new file mode 100644 index 0000000..ae1b21c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_aix.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_darwin.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go new file mode 100644 index 0000000..85bb745 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_linux.go @@ -0,0 +1,40 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include +#include + +#define _GNU_SOURCE +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go new file mode 100644 index 0000000..5bfdd46 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go @@ -0,0 +1,38 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_solaris.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/empty.s b/vendor/golang.org/x/net/internal/socket/empty.s new file mode 100644 index 0000000..bff0231 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/empty.s @@ -0,0 +1,7 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12 + +// This exists solely so we can linkname in symbols from syscall. diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go new file mode 100644 index 0000000..f14872d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_unix.go @@ -0,0 +1,31 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +import "syscall" + +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.EAGAIN: + return errEAGAIN + case syscall.EINVAL: + return errEINVAL + case syscall.ENOENT: + return errENOENT + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go new file mode 100644 index 0000000..6a6379a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import "syscall" + +var ( + errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING + errEINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.ERROR_IO_PENDING: + return errERROR_IO_PENDING + case syscall.EINVAL: + return errEINVAL + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go new file mode 100644 index 0000000..05d6082 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go new file mode 100644 index 0000000..dfeda75 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build aix darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint64(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go new file mode 100644 index 0000000..8d17a40 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*int8)(unsafe.Pointer(&b[0])) + v.Len = uint64(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go new file mode 100644 index 0000000..a746e90 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_stub.go @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type iovec struct{} + +func (v *iovec) set(b []byte) {} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go new file mode 100644 index 0000000..1a7f279 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go @@ -0,0 +1,21 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!linux,!netbsd + +package socket + +import "net" + +type mmsghdr struct{} + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go new file mode 100644 index 0000000..f110068 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix linux netbsd + +package socket + +import "net" + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + for i := range hs { + vs := make([]iovec, len(ms[i].Buffers)) + var sa []byte + if parseFn != nil { + sa = make([]byte, sizeofSockaddrInet6) + } + if marshalFn != nil { + sa = marshalFn(ms[i].Addr) + } + hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa) + } + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + for i := range hs { + ms[i].N = int(hs[i].Len) + ms[i].NN = hs[i].Hdr.controllen() + ms[i].Flags = hs[i].Hdr.flags() + if parseFn != nil { + var err error + ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint) + if err != nil { + return err + } + } + } + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go new file mode 100644 index 0000000..77f44c1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go @@ -0,0 +1,39 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.Control = (*byte)(unsafe.Pointer(&oob[0])) + h.Controllen = uint32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go new file mode 100644 index 0000000..c5562dd --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd + +package socket + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = int32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go new file mode 100644 index 0000000..5a38798 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.setControl(oob) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go new file mode 100644 index 0000000..a7a5987 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint32(l) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint32(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go new file mode 100644 index 0000000..e731833 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint64(l) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint64(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go new file mode 100644 index 0000000..71a69e2 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go new file mode 100644 index 0000000..6465b20 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + if len(vs) > 0 { + h.Iov = &vs[0] + h.Iovlen = int32(len(vs)) + } + if len(oob) > 0 { + h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) + h.Accrightslen = int32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) controllen() int { + return int(h.Accrightslen) +} + +func (h *msghdr) flags() int { + return int(NativeEndian.Uint32(h.Pad_cgo_2[:])) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go new file mode 100644 index 0000000..873490a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type msghdr struct{} + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {} +func (h *msghdr) name() []byte { return nil } +func (h *msghdr) controllen() int { return 0 } +func (h *msghdr) flags() int { return 0 } diff --git a/vendor/golang.org/x/net/internal/socket/norace.go b/vendor/golang.org/x/net/internal/socket/norace.go new file mode 100644 index 0000000..9519ffb --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/norace.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !race + +package socket + +func (m *Message) raceRead() { +} +func (m *Message) raceWrite() { +} diff --git a/vendor/golang.org/x/net/internal/socket/race.go b/vendor/golang.org/x/net/internal/socket/race.go new file mode 100644 index 0000000..df60c62 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/race.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build race + +package socket + +import ( + "runtime" + "unsafe" +) + +// This package reads and writes the Message buffers using a +// direct system call, which the race detector can't see. +// These functions tell the race detector what is going on during the syscall. + +func (m *Message) raceRead() { + for _, b := range m.Buffers { + if len(b) > 0 { + runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) + } + } + if b := m.OOB; len(b) > 0 { + runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) + } +} +func (m *Message) raceWrite() { + for _, b := range m.Buffers { + if len(b) > 0 { + runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) + } + } + if b := m.OOB; len(b) > 0 { + runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) + } +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go new file mode 100644 index 0000000..b07b890 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn.go @@ -0,0 +1,64 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "errors" + "net" + "os" + "syscall" +) + +// A Conn represents a raw connection. +type Conn struct { + network string + c syscall.RawConn +} + +// NewConn returns a new raw connection. +func NewConn(c net.Conn) (*Conn, error) { + var err error + var cc Conn + switch c := c.(type) { + case *net.TCPConn: + cc.network = "tcp" + cc.c, err = c.SyscallConn() + case *net.UDPConn: + cc.network = "udp" + cc.c, err = c.SyscallConn() + case *net.IPConn: + cc.network = "ip" + cc.c, err = c.SyscallConn() + default: + return nil, errors.New("unknown connection type") + } + if err != nil { + return nil, err + } + return &cc, nil +} + +func (o *Option) get(c *Conn, b []byte) (int, error) { + var operr error + var n int + fn := func(s uintptr) { + n, operr = getsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return 0, err + } + return n, os.NewSyscallError("getsockopt", operr) +} + +func (o *Option) set(c *Conn, b []byte) error { + var operr error + fn := func(s uintptr) { + operr = setsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return err + } + return os.NewSyscallError("setsockopt", operr) +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go new file mode 100644 index 0000000..d01fc4c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go @@ -0,0 +1,79 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package socket + +import ( + "net" + "os" + "syscall" +) + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + for i := range ms { + ms[i].raceWrite() + } + hs := make(mmsghdrs, len(ms)) + var parseFn func([]byte, string) (net.Addr, error) + if c.network != "tcp" { + parseFn = parseInetAddr + } + if err := hs.pack(ms, parseFn, nil); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("recvmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { + return n, err + } + return n, nil +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + for i := range ms { + ms[i].raceRead() + } + hs := make(mmsghdrs, len(ms)) + var marshalFn func(net.Addr) []byte + if c.network != "tcp" { + marshalFn = marshalInetAddr + } + if err := hs.pack(ms, nil, marshalFn); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("sendmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { + return n, err + } + return n, nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go new file mode 100644 index 0000000..d5ae3f8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go @@ -0,0 +1,78 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "os" + "syscall" +) + +func (c *Conn) recvMsg(m *Message, flags int) error { + m.raceWrite() + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if c.network != "tcp" { + sa = make([]byte, sizeofSockaddrInet6) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("recvmsg", operr) + } + if c.network != "tcp" { + var err error + m.Addr, err = parseInetAddr(sa[:], c.network) + if err != nil { + return err + } + } + m.N = n + m.NN = h.controllen() + m.Flags = h.flags() + return nil +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + m.raceRead() + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if m.Addr != nil { + sa = marshalInetAddr(m.Addr) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("sendmsg", operr) + } + m.N = n + m.NN = len(m.OOB) + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go new file mode 100644 index 0000000..fe5bb94 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package socket + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + return 0, errNotImplemented +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go new file mode 100644 index 0000000..b8cea6f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +func (c *Conn) recvMsg(m *Message, flags int) error { + return errNotImplemented +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go new file mode 100644 index 0000000..23571b8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/socket.go @@ -0,0 +1,288 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package socket provides a portable interface for socket system +// calls. +package socket // import "golang.org/x/net/internal/socket" + +import ( + "errors" + "net" + "runtime" + "unsafe" +) + +var errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) + +// An Option represents a sticky socket option. +type Option struct { + Level int // level + Name int // name; must be equal or greater than 1 + Len int // length of value in bytes; must be equal or greater than 1 +} + +// Get reads a value for the option from the kernel. +// It returns the number of bytes written into b. +func (o *Option) Get(c *Conn, b []byte) (int, error) { + if o.Name < 1 || o.Len < 1 { + return 0, errors.New("invalid option") + } + if len(b) < o.Len { + return 0, errors.New("short buffer") + } + return o.get(c, b) +} + +// GetInt returns an integer value for the option. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) GetInt(c *Conn) (int, error) { + if o.Len != 1 && o.Len != 4 { + return 0, errors.New("invalid option") + } + var b []byte + var bb [4]byte + if o.Len == 1 { + b = bb[:1] + } else { + b = bb[:4] + } + n, err := o.get(c, b) + if err != nil { + return 0, err + } + if n != o.Len { + return 0, errors.New("invalid option length") + } + if o.Len == 1 { + return int(b[0]), nil + } + return int(NativeEndian.Uint32(b[:4])), nil +} + +// Set writes the option and value to the kernel. +func (o *Option) Set(c *Conn, b []byte) error { + if o.Name < 1 || o.Len < 1 { + return errors.New("invalid option") + } + if len(b) < o.Len { + return errors.New("short buffer") + } + return o.set(c, b) +} + +// SetInt writes the option and value to the kernel. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) SetInt(c *Conn, v int) error { + if o.Len != 1 && o.Len != 4 { + return errors.New("invalid option") + } + var b []byte + if o.Len == 1 { + b = []byte{byte(v)} + } else { + var bb [4]byte + NativeEndian.PutUint32(bb[:o.Len], uint32(v)) + b = bb[:4] + } + return o.set(c, b) +} + +func controlHeaderLen() int { + return roundup(sizeofCmsghdr) +} + +func controlMessageLen(dataLen int) int { + return roundup(sizeofCmsghdr) + dataLen +} + +// ControlMessageSpace returns the whole length of control message. +func ControlMessageSpace(dataLen int) int { + return roundup(sizeofCmsghdr) + roundup(dataLen) +} + +// A ControlMessage represents the head message in a stream of control +// messages. +// +// A control message comprises of a header, data and a few padding +// fields to conform to the interface to the kernel. +// +// See RFC 3542 for further information. +type ControlMessage []byte + +// Data returns the data field of the control message at the head on +// m. +func (m ControlMessage) Data(dataLen int) []byte { + l := controlHeaderLen() + if len(m) < l || len(m) < l+dataLen { + return nil + } + return m[l : l+dataLen] +} + +// Next returns the control message at the next on m. +// +// Next works only for standard control messages. +func (m ControlMessage) Next(dataLen int) ControlMessage { + l := ControlMessageSpace(dataLen) + if len(m) < l { + return nil + } + return m[l:] +} + +// MarshalHeader marshals the header fields of the control message at +// the head on m. +func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error { + if len(m) < controlHeaderLen() { + return errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(dataLen), lvl, typ) + return nil +} + +// ParseHeader parses and returns the header fields of the control +// message at the head on m. +func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) { + l := controlHeaderLen() + if len(m) < l { + return 0, 0, 0, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil +} + +// Marshal marshals the control message at the head on m, and returns +// the next control message. +func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) { + l := len(data) + if len(m) < ControlMessageSpace(l) { + return nil, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(l), lvl, typ) + if l > 0 { + copy(m.Data(l), data) + } + return m.Next(l), nil +} + +// Parse parses m as a single or multiple control messages. +// +// Parse works for both standard and compatible messages. +func (m ControlMessage) Parse() ([]ControlMessage, error) { + var ms []ControlMessage + for len(m) >= controlHeaderLen() { + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + l := h.len() + if l <= 0 { + return nil, errors.New("invalid header length") + } + if uint64(l) < uint64(controlHeaderLen()) { + return nil, errors.New("invalid message length") + } + if uint64(l) > uint64(len(m)) { + return nil, errors.New("short buffer") + } + // On message reception: + // + // |<- ControlMessageSpace --------------->| + // |<- controlMessageLen ---------->| | + // |<- controlHeaderLen ->| | | + // +---------------+------+---------+------+ + // | Header | PadH | Data | PadD | + // +---------------+------+---------+------+ + // + // On compatible message reception: + // + // | ... |<- controlMessageLen ----------->| + // | ... |<- controlHeaderLen ->| | + // +-----+---------------+------+----------+ + // | ... | Header | PadH | Data | + // +-----+---------------+------+----------+ + ms = append(ms, ControlMessage(m[:l])) + ll := l - controlHeaderLen() + if len(m) >= ControlMessageSpace(ll) { + m = m[ControlMessageSpace(ll):] + } else { + m = m[controlMessageLen(ll):] + } + } + return ms, nil +} + +// NewControlMessage returns a new stream of control messages. +func NewControlMessage(dataLen []int) ControlMessage { + var l int + for i := range dataLen { + l += ControlMessageSpace(dataLen[i]) + } + return make([]byte, l) +} + +// A Message represents an IO message. +type Message struct { + // When writing, the Buffers field must contain at least one + // byte to write. + // When reading, the Buffers field will always contain a byte + // to read. + Buffers [][]byte + + // OOB contains protocol-specific control or miscellaneous + // ancillary data known as out-of-band data. + OOB []byte + + // Addr specifies a destination address when writing. + // It can be nil when the underlying protocol of the raw + // connection uses connection-oriented communication. + // After a successful read, it may contain the source address + // on the received packet. + Addr net.Addr + + N int // # of bytes read or written from/to Buffers + NN int // # of bytes read or written from/to OOB + Flags int // protocol-specific information on the received message +} + +// RecvMsg wraps recvmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +func (c *Conn) RecvMsg(m *Message, flags int) error { + return c.recvMsg(m, flags) +} + +// SendMsg wraps sendmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +func (c *Conn) SendMsg(m *Message, flags int) error { + return c.sendMsg(m, flags) +} + +// RecvMsgs wraps recvmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// Only Linux supports this. +func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) { + return c.recvMsgs(ms, flags) +} + +// SendMsgs wraps sendmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// Only Linux supports this. +func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) { + return c.sendMsgs(ms, flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go new file mode 100644 index 0000000..ee492ba --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "encoding/binary" + "unsafe" +) + +var ( + // NativeEndian is the machine native endian implementation of + // ByteOrder. + NativeEndian binary.ByteOrder + + kernelAlign int +) + +func init() { + i := uint32(1) + b := (*[4]byte)(unsafe.Pointer(&i)) + if b[0] == 1 { + NativeEndian = binary.LittleEndian + } else { + NativeEndian = binary.BigEndian + } + kernelAlign = probeProtocolStack() +} + +func roundup(l int) int { + return (l + kernelAlign - 1) &^ (kernelAlign - 1) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go new file mode 100644 index 0000000..d432835 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsd.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd openbsd + +package socket + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go new file mode 100644 index 0000000..b4f41b5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go @@ -0,0 +1,23 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix freebsd netbsd openbsd + +package socket + +import ( + "runtime" + "unsafe" +) + +func probeProtocolStack() int { + if (runtime.GOOS == "netbsd" || runtime.GOOS == "openbsd") && runtime.GOARCH == "arm" { + return 8 + } + if runtime.GOOS == "aix" { + return 1 + } + var p uintptr + return int(unsafe.Sizeof(p)) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go new file mode 100644 index 0000000..43797d6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +import "golang.org/x/sys/unix" + +const ( + sysAF_UNSPEC = unix.AF_UNSPEC + sysAF_INET = unix.AF_INET + sysAF_INET6 = unix.AF_INET6 + + sysSOCK_RAW = unix.SOCK_RAW +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go new file mode 100644 index 0000000..b17d223 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_darwin.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go new file mode 100644 index 0000000..ed0448f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go @@ -0,0 +1,32 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "sync" + "syscall" + "unsafe" +) + +// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// First __DragonFly_version after September 2019 ABI changes +// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html +const _dragonflyABIChangeVersion = 500705 + +func probeProtocolStack() int { + osreldateOnce.Do(func() { osreldate, _ = syscall.SysctlUint32("kern.osreldate") }) + var p uintptr + if int(unsafe.Sizeof(p)) == 8 && osreldate >= _dragonflyABIChangeVersion { + return int(unsafe.Sizeof(p)) + } + // 64-bit Dragonfly before the September 2019 ABI changes still requires + // 32-bit aligned access to network subsystem. + return 4 +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go new file mode 100644 index 0000000..02d2b3c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go @@ -0,0 +1,33 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.12 + +package socket + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linkname.go b/vendor/golang.org/x/net/internal/socket/sys_linkname.go new file mode 100644 index 0000000..61c3f38 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linkname.go @@ -0,0 +1,42 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix go1.12,darwin + +package socket + +import ( + "syscall" + "unsafe" +) + +//go:linkname syscall_getsockopt syscall.getsockopt +func syscall_getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *uint32) error + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + err := syscall_getsockopt(int(s), level, name, unsafe.Pointer(&b[0]), &l) + return int(l), err +} + +//go:linkname syscall_setsockopt syscall.setsockopt +func syscall_setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error + +func setsockopt(s uintptr, level, name int, b []byte) error { + return syscall_setsockopt(int(s), level, name, unsafe.Pointer(&b[0]), uintptr(len(b))) +} + +//go:linkname syscall_recvmsg syscall.recvmsg +func syscall_recvmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return syscall_recvmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) +} + +//go:linkname syscall_sendmsg syscall.sendmsg +func syscall_sendmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return syscall_sendmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go new file mode 100644 index 0000000..1559521 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux.go @@ -0,0 +1,27 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!s390x,!386 + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go new file mode 100644 index 0000000..235b2cc --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go @@ -0,0 +1,55 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 4 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s new file mode 100644 index 0000000..93e7d75 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s @@ -0,0 +1,11 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go new file mode 100644 index 0000000..9decee2 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x12b + sysSENDMMSG = 0x133 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go new file mode 100644 index 0000000..d753b43 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x16d + sysSENDMMSG = 0x176 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go new file mode 100644 index 0000000..b670894 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go new file mode 100644 index 0000000..9c0d740 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go new file mode 100644 index 0000000..071a4ab --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go new file mode 100644 index 0000000..071a4ab --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go new file mode 100644 index 0000000..9c0d740 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go new file mode 100644 index 0000000..21c1e3f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go new file mode 100644 index 0000000..21c1e3f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go new file mode 100644 index 0000000..64f69f1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64 + +package socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go new file mode 100644 index 0000000..327979e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go @@ -0,0 +1,55 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 8 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s new file mode 100644 index 0000000..06d7562 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-72 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-72 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go new file mode 100644 index 0000000..431851c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go @@ -0,0 +1,25 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +const ( + sysRECVMMSG = 0x1db + sysSENDMMSG = 0x1dc +) + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go new file mode 100644 index 0000000..22eae80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go @@ -0,0 +1,183 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "encoding/binary" + "errors" + "net" + "runtime" + "strconv" + "sync" + "time" +) + +func marshalInetAddr(a net.Addr) []byte { + switch a := a.(type) { + case *net.TCPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.UDPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.IPAddr: + return marshalSockaddr(a.IP, 0, a.Zone) + default: + return nil + } +} + +func marshalSockaddr(ip net.IP, port int, zone string) []byte { + if ip4 := ip.To4(); ip4 != nil { + b := make([]byte, sizeofSockaddrInet) + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) + default: + b[0] = sizeofSockaddrInet + b[1] = sysAF_INET + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[4:8], ip4) + return b + } + if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { + b := make([]byte, sizeofSockaddrInet6) + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) + default: + b[0] = sizeofSockaddrInet6 + b[1] = sysAF_INET6 + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[8:24], ip6) + if zone != "" { + NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone))) + } + return b + } + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + if len(b) < 2 { + return nil, errors.New("invalid address") + } + var af int + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + af = int(NativeEndian.Uint16(b[:2])) + default: + af = int(b[1]) + } + var ip net.IP + var zone string + if af == sysAF_INET { + if len(b) < sizeofSockaddrInet { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv4len) + copy(ip, b[4:8]) + } + if af == sysAF_INET6 { + if len(b) < sizeofSockaddrInet6 { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv6len) + copy(ip, b[8:24]) + if id := int(NativeEndian.Uint32(b[24:28])); id > 0 { + zone = zoneCache.name(id) + } + } + switch network { + case "tcp", "tcp4", "tcp6": + return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + case "udp", "udp4", "udp6": + return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + default: + return &net.IPAddr{IP: ip, Zone: zone}, nil + } +} + +// An ipv6ZoneCache represents a cache holding partial network +// interface information. It is used for reducing the cost of IPv6 +// addressing scope zone resolution. +// +// Multiple names sharing the index are managed by first-come +// first-served basis for consistency. +type ipv6ZoneCache struct { + sync.RWMutex // guard the following + lastFetched time.Time // last time routing information was fetched + toIndex map[string]int // interface name to its index + toName map[int]string // interface index to its name +} + +var zoneCache = ipv6ZoneCache{ + toIndex: make(map[string]int), + toName: make(map[int]string), +} + +// update refreshes the network interface information if the cache was last +// updated more than 1 minute ago, or if force is set. It returns whether the +// cache was updated. +func (zc *ipv6ZoneCache) update(ift []net.Interface, force bool) (updated bool) { + zc.Lock() + defer zc.Unlock() + now := time.Now() + if !force && zc.lastFetched.After(now.Add(-60*time.Second)) { + return false + } + zc.lastFetched = now + if len(ift) == 0 { + var err error + if ift, err = net.Interfaces(); err != nil { + return false + } + } + zc.toIndex = make(map[string]int, len(ift)) + zc.toName = make(map[int]string, len(ift)) + for _, ifi := range ift { + zc.toIndex[ifi.Name] = ifi.Index + if _, ok := zc.toName[ifi.Index]; !ok { + zc.toName[ifi.Index] = ifi.Name + } + } + return true +} + +func (zc *ipv6ZoneCache) name(zone int) string { + updated := zoneCache.update(nil, false) + zoneCache.RLock() + name, ok := zoneCache.toName[zone] + zoneCache.RUnlock() + if !ok && !updated { + zoneCache.update(nil, true) + zoneCache.RLock() + name, ok = zoneCache.toName[zone] + zoneCache.RUnlock() + } + if !ok { // last resort + name = strconv.Itoa(zone) + } + return name +} + +func (zc *ipv6ZoneCache) index(zone string) int { + updated := zoneCache.update(nil, false) + zoneCache.RLock() + index, ok := zoneCache.toIndex[zone] + zoneCache.RUnlock() + if !ok && !updated { + zoneCache.update(nil, true) + zoneCache.RLock() + index, ok = zoneCache.toIndex[zone] + zoneCache.RUnlock() + } + if !ok { // last resort + index, _ = strconv.Atoi(zone) + } + return index +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go new file mode 100644 index 0000000..66b5547 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris.go @@ -0,0 +1,70 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "runtime" + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" + +//go:linkname procGetsockopt libc___xnet_getsockopt +//go:linkname procSetsockopt libc_setsockopt +//go:linkname procRecvmsg libc___xnet_recvmsg +//go:linkname procSendmsg libc___xnet_sendmsg + +var ( + procGetsockopt uintptr + procSetsockopt uintptr + procRecvmsg uintptr + procSendmsg uintptr +) + +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s new file mode 100644 index 0000000..a18ac5e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s @@ -0,0 +1,11 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go new file mode 100644 index 0000000..0f61742 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_stub.go @@ -0,0 +1,63 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +import ( + "net" + "runtime" + "unsafe" +) + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64p32", "mips64p32": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +func marshalInetAddr(ip net.IP, port int, zone string) []byte { + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + return nil, errNotImplemented +} + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + return 0, errNotImplemented +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return errNotImplemented +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go new file mode 100644 index 0000000..0eb7128 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_unix.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build dragonfly freebsd linux,!s390x,!386 netbsd openbsd + +package socket + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go new file mode 100644 index 0000000..d556a44 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_windows.go @@ -0,0 +1,71 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +const ( + sysAF_UNSPEC = windows.AF_UNSPEC + sysAF_INET = windows.AF_INET + sysAF_INET6 = windows.AF_INET6 + + sysSOCK_RAW = windows.SOCK_RAW +) + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l))) + return int(l), err +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b))) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go new file mode 100644 index 0000000..e740c8f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go @@ -0,0 +1,60 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go new file mode 100644 index 0000000..083bda5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go new file mode 100644 index 0000000..55c6c9f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go new file mode 100644 index 0000000..083bda5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go new file mode 100644 index 0000000..55c6c9f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go new file mode 100644 index 0000000..8b7d161 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go new file mode 100644 index 0000000..3e71ff5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go new file mode 100644 index 0000000..238d90d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go new file mode 100644 index 0000000..3e71ff5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go new file mode 100644 index 0000000..238d90d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go new file mode 100644 index 0000000..d33025b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go @@ -0,0 +1,54 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go new file mode 100644 index 0000000..b20d216 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go new file mode 100644 index 0000000..f12a1d7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go @@ -0,0 +1,59 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_0 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go new file mode 100644 index 0000000..7e258ce --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go new file mode 100644 index 0000000..b3f9c0d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go @@ -0,0 +1,60 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go new file mode 100644 index 0000000..7e258ce --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go new file mode 100644 index 0000000..da26ef0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go @@ -0,0 +1,59 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go new file mode 100644 index 0000000..73655a1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go new file mode 100644 index 0000000..0a4de80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go new file mode 100644 index 0000000..73655a1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go new file mode 100644 index 0000000..0a4de80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go new file mode 100644 index 0000000..353cd5f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go @@ -0,0 +1,52 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package socket + +type iovec struct { + Base *int8 + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Accrights *int8 + Accrightslen int32 + Pad_cgo_2 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x20 +) diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go new file mode 100644 index 0000000..1a3a4fc --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/batch.go @@ -0,0 +1,194 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// RawConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +// +// Unlike the ReadFrom method, it doesn't strip the IPv4 header +// followed by option headers from the received IPv4 datagram when the +// underlying transport is net.IPConn. Each Buffers field of Message +// must be large enough to accommodate an IPv4 header and option +// headers. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + if compatFreeBSD32 && ms[0].NN > 0 { + adjustFreeBSD32(&ms[0]) + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if compatFreeBSD32 && ms[0].NN > 0 { + adjustFreeBSD32(&ms[0]) + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go new file mode 100644 index 0000000..a2b02ca --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control.go @@ -0,0 +1,144 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "fmt" + "net" + "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +type rawOpt struct { + sync.RWMutex + cflags ControlFlags +} + +func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } +func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } +func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } + +type ControlFlags uint + +const ( + FlagTTL ControlFlags = 1 << iota // pass the TTL on the received packet + FlagSrc // pass the source address on the received packet + FlagDst // pass the destination address on the received packet + FlagInterface // pass the interface index on the received packet +) + +// A ControlMessage represents per packet basis IP-level socket options. +type ControlMessage struct { + // Receiving socket options: SetControlMessage allows to + // receive the options from the protocol stack using ReadFrom + // method of PacketConn or RawConn. + // + // Specifying socket options: ControlMessage for WriteTo + // method of PacketConn or RawConn allows to send the options + // to the protocol stack. + // + TTL int // time-to-live, receiving only + Src net.IP // source address, specifying only + Dst net.IP // destination address, receiving only + IfIndex int // interface index, must be 1 <= value when specifying +} + +func (cm *ControlMessage) String() string { + if cm == nil { + return "" + } + return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) +} + +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var m socket.ControlMessage + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { + m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length}) + } + if len(m) > 0 { + ctlOpts[ctlPacketInfo].marshal(m, cm) + } + return m +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIP { + continue + } + switch { + case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length: + ctlOpts[ctlTTL].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length: + ctlOpts[ctlDst].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length: + ctlOpts[ctlInterface].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length) + } + if ctlOpts[ctlPacketInfo].name > 0 { + if opt.isset(FlagSrc | FlagDst | FlagInterface) { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + } else { + if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlDst].length) + } + if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length) + } + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + +// Ancillary data socket options +const ( + ctlTTL = iota // header field + ctlSrc // header field + ctlDst // header field + ctlInterface // inbound or outbound interface + ctlPacketInfo // inbound or outbound packet path + ctlMax +) + +// A ctlOpt represents a binding for ancillary data socket option. +type ctlOpt struct { + name int // option name, must be equal or greater than 1 + length int // option length + marshal func([]byte, *ControlMessage) []byte + parse func(*ControlMessage, []byte) +} diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go new file mode 100644 index 0000000..69c4f55 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_bsd.go @@ -0,0 +1,41 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalDst(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len) + return m.Next(net.IPv4len) +} + +func parseDst(cm *ControlMessage, b []byte) { + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, b[:net.IPv4len]) +} + +func marshalInterface(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink) + return m.Next(syscall.SizeofSockaddrDatalink) +} + +func parseInterface(cm *ControlMessage, b []byte) { + var sadl syscall.SockaddrDatalink + copy((*[unsafe.Sizeof(sadl)]byte)(unsafe.Pointer(&sadl))[:], b) + cm.IfIndex = int(sadl.Index) +} diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go new file mode 100644 index 0000000..425338f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go @@ -0,0 +1,39 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin linux solaris + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo) + if cm != nil { + pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0])) + if ip := cm.Src.To4(); ip != nil { + copy(pi.Spec_dst[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInetPktinfo) +} + +func parsePacketInfo(cm *ControlMessage, b []byte) { + pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) + cm.IfIndex = int(pi.Ifindex) + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, pi.Addr[:]) +} diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go new file mode 100644 index 0000000..a0c049d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_stub.go @@ -0,0 +1,13 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go new file mode 100644 index 0000000..b27fa49 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_unix.go @@ -0,0 +1,73 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv4 + +import ( + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + opt.Lock() + defer opt.Unlock() + if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagTTL) + } else { + opt.clear(FlagTTL) + } + } + if so, ok := sockOpts[ssoPacketInfo]; ok { + if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(cf & (FlagSrc | FlagDst | FlagInterface)) + } else { + opt.clear(cf & (FlagSrc | FlagDst | FlagInterface)) + } + } + } else { + if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagDst) + } else { + opt.clear(FlagDst) + } + } + if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagInterface) + } else { + opt.clear(FlagInterface) + } + } + } + return nil +} + +func marshalTTL(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1) + return m.Next(1) +} + +func parseTTL(cm *ControlMessage, b []byte) { + cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0]))) +} diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go new file mode 100644 index 0000000..82c6306 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_windows.go @@ -0,0 +1,12 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + // TODO(mikio): implement this + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/defs_aix.go b/vendor/golang.org/x/net/ipv4/defs_aix.go new file mode 100644 index 0000000..0f37211 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_aix.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + // IP_RECVIF is defined on AIX but doesn't work. + // IP_RECVINTERFACE must be used instead. + sysIP_RECVIF = C.IP_RECVINTERFACE + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go new file mode 100644 index 0000000..c8f2e05 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_darwin.go @@ -0,0 +1,77 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_STRIPHDR = C.IP_STRIPHDR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_MULTICAST_IFINDEX = C.IP_MULTICAST_IFINDEX + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go new file mode 100644 index 0000000..f30544e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go @@ -0,0 +1,38 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go new file mode 100644 index 0000000..4dd57d8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_freebsd.go @@ -0,0 +1,75 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_SENDSRCADDR = C.IP_SENDSRCADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_ONESBCAST = C.IP_ONESBCAST + sysIP_BINDANY = C.IP_BINDANY + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_MINTTL = C.IP_MINTTL + sysIP_DONTFRAG = C.IP_DONTFRAG + sysIP_RECVTOS = C.IP_RECVTOS + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go new file mode 100644 index 0000000..7d05c1d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_linux.go @@ -0,0 +1,113 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +#include +#include +#include +#include +*/ +import "C" + +const ( + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_ROUTER_ALERT = C.IP_ROUTER_ALERT + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_PKTOPTIONS = C.IP_PKTOPTIONS + sysIP_MTU_DISCOVER = C.IP_MTU_DISCOVER + sysIP_RECVERR = C.IP_RECVERR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_RECVTOS = C.IP_RECVTOS + sysIP_MTU = C.IP_MTU + sysIP_FREEBIND = C.IP_FREEBIND + sysIP_TRANSPARENT = C.IP_TRANSPARENT + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_ORIGDSTADDR = C.IP_ORIGDSTADDR + sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR + sysIP_MINTTL = C.IP_MINTTL + sysIP_NODEFRAG = C.IP_NODEFRAG + sysIP_UNICAST_IF = C.IP_UNICAST_IF + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_MSFILTER = C.IP_MSFILTER + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_MSFILTER = C.MCAST_MSFILTER + sysIP_MULTICAST_ALL = C.IP_MULTICAST_ALL + + //sysIP_PMTUDISC_DONT = C.IP_PMTUDISC_DONT + //sysIP_PMTUDISC_WANT = C.IP_PMTUDISC_WANT + //sysIP_PMTUDISC_DO = C.IP_PMTUDISC_DO + //sysIP_PMTUDISC_PROBE = C.IP_PMTUDISC_PROBE + //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE + //sysIP_PMTUDISC_OMIT = C.IP_PMTUDISC_OMIT + + sysICMP_FILTER = C.ICMP_FILTER + + sysSO_EE_ORIGIN_NONE = C.SO_EE_ORIGIN_NONE + sysSO_EE_ORIGIN_LOCAL = C.SO_EE_ORIGIN_LOCAL + sysSO_EE_ORIGIN_ICMP = C.SO_EE_ORIGIN_ICMP + sysSO_EE_ORIGIN_ICMP6 = C.SO_EE_ORIGIN_ICMP6 + sysSO_EE_ORIGIN_TXSTATUS = C.SO_EE_ORIGIN_TXSTATUS + sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING + + sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + sizeofSockExtendedErr = C.sizeof_struct_sock_extended_err + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPFilter = C.sizeof_struct_icmp_filter +) + +type kernelSockaddrStorage C.struct___kernel_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type sockExtendedErr C.struct_sock_extended_err + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpFilter C.struct_icmp_filter diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_netbsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_openbsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go new file mode 100644 index 0000000..aeb33e9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_solaris.go @@ -0,0 +1,84 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVSLLA = C.IP_RECVSLLA + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_NEXTHOP = C.IP_NEXTHOP + + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + sysIP_DONTFRAG = C.IP_DONTFRAG + + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_UNSPEC_SRC = C.IP_UNSPEC_SRC + sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL + sysIP_DHCPINIT_IF = C.IP_DHCPINIT_IF + + sysIP_REUSEADDR = C.IP_REUSEADDR + sysIP_DONTROUTE = C.IP_DONTROUTE + sysIP_BROADCAST = C.IP_BROADCAST + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go new file mode 100644 index 0000000..c191c22 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/dgramopt.go @@ -0,0 +1,264 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/bpf" +) + +// MulticastTTL returns the time-to-live field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastTTL() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetMulticastTTL sets the time-to-live field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastTTL(ttl int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, ttl) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errNotImplemented + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errNotImplemented + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errNotImplemented + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ICMPFilter returns an ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errNotImplemented + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errNotImplemented + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errNotImplemented + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go new file mode 100644 index 0000000..2458349 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -0,0 +1,244 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ipv4 implements IP-level socket options for the Internet +// Protocol version 4. +// +// The package provides IP-level socket options that allow +// manipulation of IPv4 facilities. +// +// The IPv4 protocol and basic host requirements for IPv4 are defined +// in RFC 791 and RFC 1122. +// Host extensions for multicasting and socket interface extensions +// for multicast source filters are defined in RFC 1112 and RFC 3678. +// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC +// 3376. +// Source-specific multicast is defined in RFC 4607. +// +// +// Unicasting +// +// The options for unicasting are available for net.TCPConn, +// net.UDPConn and net.IPConn which are created as network connections +// that use the IPv4 transport. When a single TCP connection carrying +// a data flow of multiple packets needs to indicate the flow is +// important, Conn is used to set the type-of-service field on the +// IPv4 header for each packet. +// +// ln, err := net.Listen("tcp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer ln.Close() +// for { +// c, err := ln.Accept() +// if err != nil { +// // error handling +// } +// go func(c net.Conn) { +// defer c.Close() +// +// The outgoing packets will be labeled DiffServ assured forwarding +// class 1 low drop precedence, known as AF11 packets. +// +// if err := ipv4.NewConn(c).SetTOS(0x28); err != nil { +// // error handling +// } +// if _, err := c.Write(data); err != nil { +// // error handling +// } +// }(c) +// } +// +// +// Multicasting +// +// The options for multicasting are available for net.UDPConn and +// net.IPConn which are created as network connections that use the +// IPv4 transport. A few network facilities must be prepared before +// you begin multicasting, at a minimum joining network interfaces and +// multicast groups. +// +// en0, err := net.InterfaceByName("en0") +// if err != nil { +// // error handling +// } +// en1, err := net.InterfaceByIndex(911) +// if err != nil { +// // error handling +// } +// group := net.IPv4(224, 0, 0, 250) +// +// First, an application listens to an appropriate address with an +// appropriate service port. +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// +// Second, the application joins multicast groups, starts listening to +// the groups on the specified network interfaces. Note that the +// service port for transport layer protocol does not matter with this +// operation as joining groups affects only network and link layer +// protocols, such as IPv4 and Ethernet. +// +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// +// The application might set per packet control message transmissions +// between the protocol stack within the kernel. When the application +// needs a destination address on an incoming packet, +// SetControlMessage of PacketConn is used to enable control message +// transmissions. +// +// if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { +// // error handling +// } +// +// The application could identify whether the received packets are +// of interest by using the control message that contains the +// destination address of the received packet. +// +// b := make([]byte, 1500) +// for { +// n, cm, src, err := p.ReadFrom(b) +// if err != nil { +// // error handling +// } +// if cm.Dst.IsMulticast() { +// if cm.Dst.Equal(group) { +// // joined group, do something +// } else { +// // unknown group, discard +// continue +// } +// } +// +// The application can also send both unicast and multicast packets. +// +// p.SetTOS(0x0) +// p.SetTTL(16) +// if _, err := p.WriteTo(data, nil, src); err != nil { +// // error handling +// } +// dst := &net.UDPAddr{IP: group, Port: 1024} +// for _, ifi := range []*net.Interface{en0, en1} { +// if err := p.SetMulticastInterface(ifi); err != nil { +// // error handling +// } +// p.SetMulticastTTL(2) +// if _, err := p.WriteTo(data, nil, dst); err != nil { +// // error handling +// } +// } +// } +// +// +// More multicasting +// +// An application that uses PacketConn or RawConn may join multiple +// multicast groups. For example, a UDP listener with port 1024 might +// join two different groups across over two different network +// interfaces by using: +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// +// It is possible for multiple UDP listeners that listen on the same +// UDP port to join the same multicast group. The net package will +// provide a socket that listens to a wildcard address with reusable +// UDP port when an appropriate multicast address prefix is passed to +// the net.ListenPacket or net.ListenUDP. +// +// c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c1.Close() +// c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c2.Close() +// p1 := ipv4.NewPacketConn(c1) +// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// p2 := ipv4.NewPacketConn(c2) +// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// +// Also it is possible for the application to leave or rejoin a +// multicast group on the network interface. +// +// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil { +// // error handling +// } +// +// +// Source-specific multicasting +// +// An application that uses PacketConn or RawConn on IGMPv3 supported +// platform is able to join source-specific multicast groups. +// The application may use JoinSourceSpecificGroup and +// LeaveSourceSpecificGroup for the operation known as "include" mode, +// +// ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)} +// ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)} +// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// +// or JoinGroup, ExcludeSourceSpecificGroup, +// IncludeSourceSpecificGroup and LeaveGroup for the operation known +// as "exclude" mode. +// +// exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)} +// if err := p.JoinGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { +// // error handling +// } +// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// +// Note that it depends on each platform implementation what happens +// when an application which runs on IGMPv3 unsupported platform uses +// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. +// In general the platform tries to fall back to conversations using +// IGMPv1 or IGMPv2 and starts to listen to multicast traffic. +// In the fallback case, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup may return an error. +package ipv4 // import "golang.org/x/net/ipv4" + +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go new file mode 100644 index 0000000..4a6d7a8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/endpoint.go @@ -0,0 +1,186 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "time" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the JoinSourceSpecificGroup, +// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup methods of PacketConn and RawConn are +// not implemented. + +// A Conn represents a network endpoint that uses the IPv4 transport. +// It is used to control basic IP-level socket options such as TOS and +// TTL. +type Conn struct { + genericOpt +} + +type genericOpt struct { + *socket.Conn +} + +func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } + +// NewConn returns a new Conn. +func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) + return &Conn{ + genericOpt: genericOpt{Conn: cc}, + } +} + +// A PacketConn represents a packet network endpoint that uses the +// IPv4 transport. It is used to control several IP-level socket +// options including multicasting. It also provides datagram based +// network I/O methods specific to the IPv4 and higher layer protocols +// such as UDP. +type PacketConn struct { + genericOpt + dgramOpt + payloadHandler +} + +type dgramOpt struct { + *socket.Conn +} + +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } + +// SetControlMessage sets the per packet IP-level socket options. +func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *PacketConn) SetDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *PacketConn) SetReadDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *PacketConn) SetWriteDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *PacketConn) Close() error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.Close() +} + +// NewPacketConn returns a new PacketConn using c as its underlying +// transport. +func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) + p := &PacketConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, + } + return p +} + +// A RawConn represents a packet network endpoint that uses the IPv4 +// transport. It is used to control several IP-level socket options +// including IPv4 header manipulation. It also provides datagram +// based network I/O methods specific to the IPv4 and higher layer +// protocols that handle IPv4 datagram directly such as OSPF, GRE. +type RawConn struct { + genericOpt + dgramOpt + packetHandler +} + +// SetControlMessage sets the per packet IP-level socket options. +func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *RawConn) SetDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *RawConn) SetReadDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *RawConn) SetWriteDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *RawConn) Close() error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.Close() +} + +// NewRawConn returns a new RawConn using c as its underlying +// transport. +func NewRawConn(c net.PacketConn) (*RawConn, error) { + cc, err := socket.NewConn(c.(net.Conn)) + if err != nil { + return nil, err + } + r := &RawConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc}, + } + so, ok := sockOpts[ssoHeaderPrepend] + if !ok { + return nil, errNotImplemented + } + if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go new file mode 100644 index 0000000..1bb1737 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/gen.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates system adaptation constants and types, +// internet protocol constants and tables by reading template files +// and IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" +) + +func main() { + if err := genzsys(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := geniana(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func genzsys() error { + defs := "defs_" + runtime.GOOS + ".go" + f, err := os.Open(defs) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + f.Close() + cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) + b, err := cmd.Output() + if err != nil { + return err + } + b, err = format.Source(b) + if err != nil { + return err + } + zsys := "zsys_" + runtime.GOOS + ".go" + switch runtime.GOOS { + case "freebsd", "linux": + zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" + } + if err := ioutil.WriteFile(zsys, b, 0644); err != nil { + return err + } + return nil +} + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml", + parseICMPv4Parameters, + }, +} + +func geniana() error { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "package ipv4\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) + } + if err := r.parse(&bb, resp.Body); err != nil { + return err + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + return err + } + if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { + return err + } + return nil +} + +func parseICMPv4Parameters(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var icp icmpv4Parameters + if err := dec.Decode(&icp); err != nil { + return err + } + prs := icp.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value) + fmt.Fprintf(w, "// %s\n", pr.OrigDescr) + } + fmt.Fprintf(w, ")\n\n") + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr)) + } + fmt.Fprintf(w, "}\n") + return nil +} + +type icmpv4Parameters struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonICMPv4ParamRecord struct { + OrigDescr string + Descr string + Value int +} + +func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord { + id := -1 + for i, r := range icp.Registries { + if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { + id = i + break + } + } + if id < 0 { + return nil + } + prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records)) + sr := strings.NewReplacer( + "Messages", "", + "Message", "", + "ICMP", "", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range icp.Registries[id].Records { + if strings.Contains(pr.Descr, "Reserved") || + strings.Contains(pr.Descr, "Unassigned") || + strings.Contains(pr.Descr, "Deprecated") || + strings.Contains(pr.Descr, "Experiment") || + strings.Contains(pr.Descr, "experiment") { + continue + } + ss := strings.Split(pr.Descr, "\n") + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + s := strings.TrimSpace(prs[i].Descr) + prs[i].OrigDescr = s + prs[i].Descr = sr.Replace(s) + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go new file mode 100644 index 0000000..51c1237 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/genericopt.go @@ -0,0 +1,55 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +// TOS returns the type-of-service field value for outgoing packets. +func (c *genericOpt) TOS() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTOS] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTOS sets the type-of-service field value for future outgoing +// packets. +func (c *genericOpt) SetTOS(tos int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTOS] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, tos) +} + +// TTL returns the time-to-live field value for outgoing packets. +func (c *genericOpt) TTL() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTTL] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTTL sets the time-to-live field value for future outgoing +// packets. +func (c *genericOpt) SetTTL(ttl int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTTL] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, ttl) +} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go new file mode 100644 index 0000000..701bd4b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/header.go @@ -0,0 +1,173 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "encoding/binary" + "fmt" + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +const ( + Version = 4 // protocol version + HeaderLen = 20 // header length without extension headers + maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields +) + +type HeaderFlags int + +const ( + MoreFragments HeaderFlags = 1 << iota // more fragments flag + DontFragment // don't fragment flag +) + +// A Header represents an IPv4 header. +type Header struct { + Version int // protocol version + Len int // header length + TOS int // type-of-service + TotalLen int // packet total length + ID int // identification + Flags HeaderFlags // flags + FragOff int // fragment offset + TTL int // time-to-live + Protocol int // next protocol + Checksum int // checksum + Src net.IP // source address + Dst net.IP // destination address + Options []byte // options, extension headers +} + +func (h *Header) String() string { + if h == nil { + return "" + } + return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) +} + +// Marshal returns the binary encoding of h. +// +// The returned slice is in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func (h *Header) Marshal() ([]byte, error) { + if h == nil { + return nil, errNilHeader + } + if h.Len < HeaderLen { + return nil, errHeaderTooShort + } + hdrlen := HeaderLen + len(h.Options) + b := make([]byte, hdrlen) + b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f)) + b[1] = byte(h.TOS) + flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + case "freebsd": + if freebsdVersion < 1100000 { + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } else { + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + default: + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + binary.BigEndian.PutUint16(b[4:6], uint16(h.ID)) + b[8] = byte(h.TTL) + b[9] = byte(h.Protocol) + binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum)) + if ip := h.Src.To4(); ip != nil { + copy(b[12:16], ip[:net.IPv4len]) + } + if ip := h.Dst.To4(); ip != nil { + copy(b[16:20], ip[:net.IPv4len]) + } else { + return nil, errMissingAddress + } + if len(h.Options) > 0 { + copy(b[HeaderLen:], h.Options) + } + return b, nil +} + +// Parse parses b as an IPv4 header and stores the result in h. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func (h *Header) Parse(b []byte) error { + if h == nil || b == nil { + return errNilHeader + } + if len(b) < HeaderLen { + return errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + if len(b) < hdrlen { + return errExtHeaderTooShort + } + h.Version = int(b[0] >> 4) + h.Len = hdrlen + h.TOS = int(b[1]) + h.ID = int(binary.BigEndian.Uint16(b[4:6])) + h.TTL = int(b[8]) + h.Protocol = int(b[9]) + h.Checksum = int(binary.BigEndian.Uint16(b[10:12])) + h.Src = net.IPv4(b[12], b[13], b[14], b[15]) + h.Dst = net.IPv4(b[16], b[17], b[18], b[19]) + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) + case "freebsd": + if freebsdVersion < 1100000 { + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + if freebsdVersion < 1000000 { + h.TotalLen += hdrlen + } + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) + } else { + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + default: + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 + h.FragOff = h.FragOff & 0x1fff + optlen := hdrlen - HeaderLen + if optlen > 0 && len(b) >= hdrlen { + if cap(h.Options) < optlen { + h.Options = make([]byte, optlen) + } else { + h.Options = h.Options[:optlen] + } + copy(h.Options, b[HeaderLen:hdrlen]) + } + return nil +} + +// ParseHeader parses b as an IPv4 header. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func ParseHeader(b []byte) (*Header, error) { + h := new(Header) + if err := h.Parse(b); err != nil { + return nil, err + } + return h, nil +} diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go new file mode 100644 index 0000000..b494a2c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -0,0 +1,80 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "errors" + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +var ( + errInvalidConn = errors.New("invalid connection") + errMissingAddress = errors.New("missing address") + errMissingHeader = errors.New("missing header") + errNilHeader = errors.New("nil header") + errHeaderTooShort = errors.New("header too short") + errExtHeaderTooShort = errors.New("extension header too short") + errInvalidConnType = errors.New("invalid conn type") + errNoSuchInterface = errors.New("no such interface") + errNoSuchMulticastInterface = errors.New("no such multicast interface") + errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) + + // See https://www.freebsd.org/doc/en/books/porters-handbook/versions.html. + freebsdVersion uint32 + compatFreeBSD32 bool // 386 emulation on amd64 +) + +// See golang.org/issue/30899. +func adjustFreeBSD32(m *socket.Message) { + // FreeBSD 12.0-RELEASE is affected by https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236737 + if 1200086 <= freebsdVersion && freebsdVersion < 1201000 { + l := (m.NN + 4 - 1) &^ (4 - 1) + if m.NN < l && l <= len(m.OOB) { + m.NN = l + } + } +} + +func boolint(b bool) int { + if b { + return 1 + } + return 0 +} + +func netAddrToIP4(a net.Addr) net.IP { + switch v := a.(type) { + case *net.UDPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + case *net.IPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + } + return nil +} + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go new file mode 100644 index 0000000..4375b40 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/iana.go @@ -0,0 +1,38 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +package ipv4 + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 +const ( + ICMPTypeEchoReply ICMPType = 0 // Echo Reply + ICMPTypeDestinationUnreachable ICMPType = 3 // Destination Unreachable + ICMPTypeRedirect ICMPType = 5 // Redirect + ICMPTypeEcho ICMPType = 8 // Echo + ICMPTypeRouterAdvertisement ICMPType = 9 // Router Advertisement + ICMPTypeRouterSolicitation ICMPType = 10 // Router Solicitation + ICMPTypeTimeExceeded ICMPType = 11 // Time Exceeded + ICMPTypeParameterProblem ICMPType = 12 // Parameter Problem + ICMPTypeTimestamp ICMPType = 13 // Timestamp + ICMPTypeTimestampReply ICMPType = 14 // Timestamp Reply + ICMPTypePhoturis ICMPType = 40 // Photuris + ICMPTypeExtendedEchoRequest ICMPType = 42 // Extended Echo Request + ICMPTypeExtendedEchoReply ICMPType = 43 // Extended Echo Reply +) + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 +var icmpTypes = map[ICMPType]string{ + 0: "echo reply", + 3: "destination unreachable", + 5: "redirect", + 8: "echo", + 9: "router advertisement", + 10: "router solicitation", + 11: "time exceeded", + 12: "parameter problem", + 13: "timestamp", + 14: "timestamp reply", + 40: "photuris", + 42: "extended echo request", + 43: "extended echo reply", +} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go new file mode 100644 index 0000000..9902bb3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp.go @@ -0,0 +1,57 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/iana" + +// An ICMPType represents a type of ICMP message. +type ICMPType int + +func (typ ICMPType) String() string { + s, ok := icmpTypes[typ] + if !ok { + return "" + } + return s +} + +// Protocol returns the ICMPv4 protocol number. +func (typ ICMPType) Protocol() int { + return iana.ProtocolICMP +} + +// An ICMPFilter represents an ICMP message filter for incoming +// packets. The filter belongs to a packet delivery path on a host and +// it cannot interact with forwarding packets or tunnel-outer packets. +// +// Note: RFC 8200 defines a reasonable role model and it works not +// only for IPv6 but IPv4. A node means a device that implements IP. +// A router means a node that forwards IP packets not explicitly +// addressed to itself, and a host means a node that is not a router. +type ICMPFilter struct { + icmpFilter +} + +// Accept accepts incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Accept(typ ICMPType) { + f.accept(typ) +} + +// Block blocks incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Block(typ ICMPType) { + f.block(typ) +} + +// SetAll sets the filter action to the filter. +func (f *ICMPFilter) SetAll(block bool) { + f.setAll(block) +} + +// WillBlock reports whether the ICMP type will be blocked. +func (f *ICMPFilter) WillBlock(typ ICMPType) bool { + return f.willBlock(typ) +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go new file mode 100644 index 0000000..6e1c5c8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_linux.go @@ -0,0 +1,25 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +func (f *icmpFilter) accept(typ ICMPType) { + f.Data &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) block(typ ICMPType) { + f.Data |= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) setAll(block bool) { + if block { + f.Data = 1<<32 - 1 + } else { + f.Data = 0 + } +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return f.Data&(1<<(uint32(typ)&31)) != 0 +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go new file mode 100644 index 0000000..21bb29a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_stub.go @@ -0,0 +1,25 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv4 + +const sizeofICMPFilter = 0x0 + +type icmpFilter struct { +} + +func (f *icmpFilter) accept(typ ICMPType) { +} + +func (f *icmpFilter) block(typ ICMPType) { +} + +func (f *icmpFilter) setAll(block bool) { +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return false +} diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go new file mode 100644 index 0000000..7d784e0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/packet.go @@ -0,0 +1,117 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn +// are not implemented. + +// A packetHandler represents the IPv4 datagram handler. +type packetHandler struct { + *net.IPConn + *socket.Conn + rawOpt +} + +func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil } + +// ReadFrom reads an IPv4 datagram from the endpoint c, copying the +// datagram into b. It returns the received datagram as the IPv4 +// header h, the payload p and the control message cm. +func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { + if !c.ok() { + return nil, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + if err := c.RecvMsg(&m, 0); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + var hs []byte + if hs, p, err = slicePacket(b[:m.N]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if h, err = ParseHeader(hs); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if m.NN > 0 { + if compatFreeBSD32 { + adjustFreeBSD32(&m) + } + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + } + if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil { + cm.Src = src.IP + } + return +} + +func slicePacket(b []byte) (h, p []byte, err error) { + if len(b) < HeaderLen { + return nil, nil, errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + return b[:hdrlen], b[hdrlen:], nil +} + +// WriteTo writes an IPv4 datagram through the endpoint c, copying the +// datagram from the IPv4 header h and the payload p. The control +// message cm allows the datagram path and the outgoing interface to be +// specified. Currently only Darwin and Linux support this. The cm +// may be nil if control of the outgoing datagram is not required. +// +// The IPv4 header h must contain appropriate fields that include: +// +// Version = +// Len = +// TOS = +// TotalLen = +// ID = platform sets an appropriate value if ID is zero +// FragOff = +// TTL = +// Protocol = +// Checksum = platform sets an appropriate value if Checksum is zero +// Src = platform sets an appropriate value if Src is nil +// Dst = +// Options = optional +func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { + if !c.ok() { + return errInvalidConn + } + m := socket.Message{ + OOB: cm.Marshal(), + } + wh, err := h.Marshal() + if err != nil { + return err + } + m.Buffers = [][]byte{wh, p} + dst := new(net.IPAddr) + if cm != nil { + if ip := cm.Dst.To4(); ip != nil { + dst.IP = ip + } + } + if dst.IP == nil { + dst.IP = h.Dst + } + m.Addr = dst + if err := c.SendMsg(&m, 0); err != nil { + return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go new file mode 100644 index 0000000..f95f811 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload.go @@ -0,0 +1,23 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo +// methods of PacketConn is not implemented. + +// A payloadHandler represents the IPv4 datagram payload handler. +type payloadHandler struct { + net.PacketConn + *socket.Conn + rawOpt +} + +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go new file mode 100644 index 0000000..e761466 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go @@ -0,0 +1,84 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + m.Buffers = [][]byte{b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + h := make([]byte, HeaderLen) + m.Buffers = [][]byte{h, b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + hdrlen := int(h[0]&0x0f) << 2 + if hdrlen > len(h) { + d := hdrlen - len(h) + copy(b, b[d:]) + m.N -= d + } else { + m.N -= hdrlen + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + if m.NN > 0 { + if compatFreeBSD32 { + adjustFreeBSD32(&m) + } + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP4(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err = c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go new file mode 100644 index 0000000..1116256 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go @@ -0,0 +1,39 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package ipv4 + +import "net" + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + if n, src, err = c.PacketConn.ReadFrom(b); err != nil { + return 0, nil, nil, err + } + return +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + if dst == nil { + return 0, errMissingAddress + } + return c.PacketConn.WriteTo(b, dst) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go new file mode 100644 index 0000000..22e90c0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt.go @@ -0,0 +1,44 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/socket" + +// Sticky socket options +const ( + ssoTOS = iota // header field for unicast packet + ssoTTL // header field for unicast packet + ssoMulticastTTL // header field for multicast packet + ssoMulticastInterface // outbound interface for multicast packet + ssoMulticastLoopback // loopback for multicast packet + ssoReceiveTTL // header field on received packet + ssoReceiveDst // header field on received packet + ssoReceiveInterface // inbound interface on received packet + ssoPacketInfo // incbound or outbound packet path + ssoHeaderPrepend // ipv4 header prepend + ssoStripHeader // strip ipv4 header + ssoICMPFilter // icmp filter + ssoJoinGroup // any-source multicast + ssoLeaveGroup // any-source multicast + ssoJoinSourceGroup // source-specific multicast + ssoLeaveSourceGroup // source-specific multicast + ssoBlockSourceGroup // any-source or source-specific multicast + ssoUnblockSourceGroup // any-source or source-specific multicast + ssoAttachFilter // attach BPF for filtering inbound traffic +) + +// Sticky socket option value types +const ( + ssoTypeIPMreq = iota + 1 + ssoTypeIPMreqn + ssoTypeGroupReq + ssoTypeGroupSourceReq +) + +// A sockOpt represents a binding for sticky socket option. +type sockOpt struct { + socket.Option + typ int // hint for option value type; optional +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go new file mode 100644 index 0000000..dea6451 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_posix.go @@ -0,0 +1,71 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + switch so.typ { + case ssoTypeIPMreqn: + return so.getIPMreqn(c) + default: + return so.getMulticastIf(c) + } +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + switch so.typ { + case ssoTypeIPMreqn: + return so.setIPMreqn(c, ifi, nil) + default: + return so.setMulticastIf(c, ifi) + } +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err + } + if n != sizeofICMPFilter { + return nil, errNotImplemented + } + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter] + return so.Set(c, b) +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { + case ssoTypeIPMreq: + return so.setIPMreq(c, ifi, grp) + case ssoTypeIPMreqn: + return so.setIPMreqn(c, ifi, grp) + case ssoTypeGroupReq: + return so.setGroupReq(c, ifi, grp) + default: + return errNotImplemented + } +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go new file mode 100644 index 0000000..37d4806 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_stub.go @@ -0,0 +1,42 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errNotImplemented +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_aix.go b/vendor/golang.org/x/net/ipv4/sys_aix.go new file mode 100644 index 0000000..3d1201e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_aix.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Added for go1.11 compatibility +// +build aix + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go new file mode 100644 index 0000000..c5eaafe --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq.go @@ -0,0 +1,119 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} + if err := setIPMreqInterface(&mreq, ifi); err != nil { + return err + } + b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq] + return so.Set(c, b) +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + var b [4]byte + if _, err := so.Get(c, b[:]); err != nil { + return nil, err + } + ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + ip, err := netInterfaceToIP4(ifi) + if err != nil { + return err + } + var b [4]byte + copy(b[:], ip) + return so.Set(c, b[:]) +} + +func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { + if ifi == nil { + return nil + } + ifat, err := ifi.Addrs() + if err != nil { + return err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + } + } + return errNoSuchInterface +} + +func netIP4ToInterface(ip net.IP) (*net.Interface, error) { + ift, err := net.Interfaces() + if err != nil { + return nil, err + } + for _, ifi := range ift { + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + case *net.IPNet: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + } + } + } + return nil, errNoSuchInterface +} + +func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { + if ifi == nil { + return net.IPv4zero.To4(), nil + } + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + } + } + return nil, errNoSuchInterface +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go new file mode 100644 index 0000000..6dc339c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go @@ -0,0 +1,25 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go new file mode 100644 index 0000000..1f24f69 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go @@ -0,0 +1,42 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin freebsd linux + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + b := make([]byte, so.Len) + if _, err := so.Get(c, b); err != nil { + return nil, err + } + mreqn := (*ipMreqn)(unsafe.Pointer(&b[0])) + if mreqn.Ifindex == 0 { + return nil, nil + } + ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreqn ipMreqn + if ifi != nil { + mreqn.Ifindex = int32(ifi.Index) + } + if grp != nil { + mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} + } + b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go new file mode 100644 index 0000000..48ef556 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !darwin,!freebsd,!linux + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go new file mode 100644 index 0000000..5c03dce --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package ipv4 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := unix.SockFprog{ + Len: uint16(len(f)), + Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go new file mode 100644 index 0000000..5c98642 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv4 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go new file mode 100644 index 0000000..58256dd --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build netbsd openbsd + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go new file mode 100644 index 0000000..ac213c7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go @@ -0,0 +1,65 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go new file mode 100644 index 0000000..859764f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go @@ -0,0 +1,35 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go new file mode 100644 index 0000000..482873d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go @@ -0,0 +1,76 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "runtime" + "strings" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func init() { + freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") + if freebsdVersion >= 1000000 { + sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} + } + if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { + archs, _ := syscall.Sysctl("kern.supported_archs") + for _, s := range strings.Fields(archs) { + if s == "amd64" { + compatFreeBSD32 = true + break + } + } + } +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go new file mode 100644 index 0000000..cf755c7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_linux.go @@ -0,0 +1,60 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go new file mode 100644 index 0000000..832fef1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go @@ -0,0 +1,57 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go new file mode 100644 index 0000000..eeced7f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go @@ -0,0 +1,52 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin freebsd linux solaris + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go new file mode 100644 index 0000000..c092167 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !darwin,!freebsd,!linux,!solaris + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go new file mode 100644 index 0000000..b9c85b3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_stub.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{} +) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go new file mode 100644 index 0000000..b0913d5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_windows.go @@ -0,0 +1,67 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +const ( + // See ws2tcpip.h. + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_DONTFRAGMENT = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0xf + sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 + sysIP_PKTINFO = 0x13 + + sizeofInetPktinfo = 0x8 + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc +) + +type inetPktinfo struct { + Addr [4]byte + Ifindex int32 +} + +type ipMreq struct { + Multiaddr [4]byte + Interface [4]byte +} + +type ipMreqSource struct { + Multiaddr [4]byte + Sourceaddr [4]byte + Interface [4]byte +} + +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go new file mode 100644 index 0000000..c741d5c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go @@ -0,0 +1,33 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x20 + sysIP_RECVTTL = 0x22 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go new file mode 100644 index 0000000..e05a251 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_darwin.go @@ -0,0 +1,99 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_STRIPHDR = 0x17 + sysIP_RECVTTL = 0x18 + sysIP_BOUND_IF = 0x19 + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_MULTICAST_IFINDEX = 0x42 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [128]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [128]byte + Pad_cgo_1 [128]byte +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go new file mode 100644 index 0000000..6d65e9f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go @@ -0,0 +1,31 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x41 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go new file mode 100644 index 0000000..136e2b8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go new file mode 100644 index 0000000..4f730f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go @@ -0,0 +1,95 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go new file mode 100644 index 0000000..4f730f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go @@ -0,0 +1,95 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go new file mode 100644 index 0000000..ecebf32 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go new file mode 100644 index 0000000..3c5ea54 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]uint8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go new file mode 100644 index 0000000..e626134 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go @@ -0,0 +1,134 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go new file mode 100644 index 0000000..8cfc648 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go @@ -0,0 +1,30 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x17 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go new file mode 100644 index 0000000..37629cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go @@ -0,0 +1,30 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x1e + sysIP_RECVTTL = 0x1f + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go new file mode 100644 index 0000000..cb80a30 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_solaris.go @@ -0,0 +1,100 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x9 + sysIP_RECVSLLA = 0xa + sysIP_RECVTTL = 0xb + + sysIP_MULTICAST_IF = 0x10 + sysIP_MULTICAST_TTL = 0x11 + sysIP_MULTICAST_LOOP = 0x12 + sysIP_ADD_MEMBERSHIP = 0x13 + sysIP_DROP_MEMBERSHIP = 0x14 + sysIP_BLOCK_SOURCE = 0x15 + sysIP_UNBLOCK_SOURCE = 0x16 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x17 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x18 + sysIP_NEXTHOP = 0x19 + + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + sysIP_DONTFRAG = 0x1b + + sysIP_BOUND_IF = 0x41 + sysIP_UNSPEC_SRC = 0x42 + sysIP_BROADCAST_TTL = 0x43 + sysIP_DHCPINIT_IF = 0x45 + + sysIP_REUSEADDR = 0x104 + sysIP_DONTROUTE = 0x105 + sysIP_BROADCAST = 0x106 + + sysMCAST_JOIN_GROUP = 0x29 + sysMCAST_LEAVE_GROUP = 0x2a + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_JOIN_SOURCE_GROUP = 0x2d + sysMCAST_LEAVE_SOURCE_GROUP = 0x2e + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x104 + sizeofGroupSourceReq = 0x204 +) + +type sockaddrStorage struct { + Family uint16 + X_ss_pad1 [6]int8 + X_ss_align float64 + X_ss_pad2 [240]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [256]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [256]byte + Pad_cgo_1 [256]byte +} diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go new file mode 100644 index 0000000..2ccb984 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/batch.go @@ -0,0 +1,116 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go new file mode 100644 index 0000000..2da6444 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control.go @@ -0,0 +1,187 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "fmt" + "net" + "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the +// former still support RFC 2292 only. Please be aware that almost +// all protocol implementations prohibit using a combination of RFC +// 2292 and RFC 3542 for some practical reasons. + +type rawOpt struct { + sync.RWMutex + cflags ControlFlags +} + +func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } +func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } +func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } + +// A ControlFlags represents per packet basis IP-level socket option +// control flags. +type ControlFlags uint + +const ( + FlagTrafficClass ControlFlags = 1 << iota // pass the traffic class on the received packet + FlagHopLimit // pass the hop limit on the received packet + FlagSrc // pass the source address on the received packet + FlagDst // pass the destination address on the received packet + FlagInterface // pass the interface index on the received packet + FlagPathMTU // pass the path MTU on the received packet path +) + +const flagPacketInfo = FlagDst | FlagInterface + +// A ControlMessage represents per packet basis IP-level socket +// options. +type ControlMessage struct { + // Receiving socket options: SetControlMessage allows to + // receive the options from the protocol stack using ReadFrom + // method of PacketConn. + // + // Specifying socket options: ControlMessage for WriteTo + // method of PacketConn allows to send the options to the + // protocol stack. + // + TrafficClass int // traffic class, must be 1 <= value <= 255 when specifying + HopLimit int // hop limit, must be 1 <= value <= 255 when specifying + Src net.IP // source address, specifying only + Dst net.IP // destination address, receiving only + IfIndex int // interface index, must be 1 <= value when specifying + NextHop net.IP // next hop address, specifying only + MTU int // path MTU, receiving only +} + +func (cm *ControlMessage) String() string { + if cm == nil { + return "" + } + return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU) +} + +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var l int + tclass := false + if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { + tclass = true + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + hoplimit := false + if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { + hoplimit = true + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + pktinfo := false + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { + pktinfo = true + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + nexthop := false + if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { + nexthop = true + l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + bb := b + if tclass { + bb = ctlOpts[ctlTrafficClass].marshal(bb, cm) + } + if hoplimit { + bb = ctlOpts[ctlHopLimit].marshal(bb, cm) + } + if pktinfo { + bb = ctlOpts[ctlPacketInfo].marshal(bb, cm) + } + if nexthop { + bb = ctlOpts[ctlNextHop].marshal(bb, cm) + } + } + return b +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIPv6 { + continue + } + switch { + case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length: + ctlOpts[ctlTrafficClass].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length: + ctlOpts[ctlHopLimit].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length: + ctlOpts[ctlPathMTU].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + +// Ancillary data socket options +const ( + ctlTrafficClass = iota // header field + ctlHopLimit // header field + ctlPacketInfo // inbound or outbound packet path + ctlNextHop // nexthop + ctlPathMTU // path mtu + ctlMax +) + +// A ctlOpt represents a binding for ancillary data socket option. +type ctlOpt struct { + name int // option name, must be equal or greater than 1 + length int // option length + marshal func([]byte, *ControlMessage) []byte + parse func(*ControlMessage, []byte) +} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go new file mode 100644 index 0000000..9fd9eb1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go @@ -0,0 +1,48 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin + +package ipv6 + +import ( + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) + } + return m.Next(4) +} + +func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo) + if cm != nil { + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) + if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { + copy(pi.Addr[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInet6Pktinfo) +} + +func marshal2292NextHop(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6) + if cm != nil { + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) + sa.setSockaddr(cm.NextHop, cm.IfIndex) + } + return m.Next(sizeofSockaddrInet6) +} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go new file mode 100644 index 0000000..8c221b5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go @@ -0,0 +1,94 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalTrafficClass(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass)) + } + return m.Next(4) +} + +func parseTrafficClass(cm *ControlMessage, b []byte) { + cm.TrafficClass = int(socket.NativeEndian.Uint32(b[:4])) +} + +func marshalHopLimit(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) + } + return m.Next(4) +} + +func parseHopLimit(cm *ControlMessage, b []byte) { + cm.HopLimit = int(socket.NativeEndian.Uint32(b[:4])) +} + +func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo) + if cm != nil { + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) + if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { + copy(pi.Addr[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInet6Pktinfo) +} + +func parsePacketInfo(cm *ControlMessage, b []byte) { + pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0])) + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, pi.Addr[:]) + cm.IfIndex = int(pi.Ifindex) +} + +func marshalNextHop(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6) + if cm != nil { + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) + sa.setSockaddr(cm.NextHop, cm.IfIndex) + } + return m.Next(sizeofSockaddrInet6) +} + +func parseNextHop(cm *ControlMessage, b []byte) { +} + +func marshalPathMTU(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo) + return m.Next(sizeofIPv6Mtuinfo) +} + +func parsePathMTU(cm *ControlMessage, b []byte) { + mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, mi.Addr.Addr[:]) + cm.IfIndex = int(mi.Addr.Scope_id) + cm.MTU = int(mi.Mtu) +} diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go new file mode 100644 index 0000000..1d773cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_stub.go @@ -0,0 +1,13 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go new file mode 100644 index 0000000..0971a00 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_unix.go @@ -0,0 +1,55 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + opt.Lock() + defer opt.Unlock() + if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagTrafficClass) + } else { + opt.clear(FlagTrafficClass) + } + } + if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagHopLimit) + } else { + opt.clear(FlagHopLimit) + } + } + if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(cf & flagPacketInfo) + } else { + opt.clear(cf & flagPacketInfo) + } + } + if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagPathMTU) + } else { + opt.clear(FlagPathMTU) + } + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go new file mode 100644 index 0000000..8882d81 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_windows.go @@ -0,0 +1,12 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + // TODO(mikio): implement this + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/defs_aix.go b/vendor/golang.org/x/net/ipv6/defs_aix.go new file mode 100644 index 0000000..ea396a3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_aix.go @@ -0,0 +1,82 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_darwin.go b/vendor/golang.org/x/net/ipv6/defs_darwin.go new file mode 100644 index 0000000..55ddc11 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_darwin.go @@ -0,0 +1,112 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#define __APPLE_USE_RFC_3542 +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO + sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT + sysIPV6_2292NEXTHOP = C.IPV6_2292NEXTHOP + sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS + sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS + sysIPV6_2292RTHDR = C.IPV6_2292RTHDR + + sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_TCLASS = C.IPV6_TCLASS + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_MSFILTER = C.IPV6_MSFILTER + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sysIPV6_BOUND_IF = C.IPV6_BOUND_IF + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go new file mode 100644 index 0000000..27a1d1d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go @@ -0,0 +1,82 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_freebsd.go b/vendor/golang.org/x/net/ipv6/defs_freebsd.go new file mode 100644 index 0000000..53e6253 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_freebsd.go @@ -0,0 +1,105 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_BINDANY = C.IPV6_BINDANY + + sysIPV6_MSFILTER = C.IPV6_MSFILTER + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go new file mode 100644 index 0000000..3b697be --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_linux.go @@ -0,0 +1,138 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include +#include +#include +#include +#include +*/ +import "C" + +const ( + sysIPV6_ADDRFORM = C.IPV6_ADDRFORM + sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO + sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS + sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS + sysIPV6_2292RTHDR = C.IPV6_2292RTHDR + sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_FLOWINFO = C.IPV6_FLOWINFO + + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_ADD_MEMBERSHIP = C.IPV6_ADD_MEMBERSHIP + sysIPV6_DROP_MEMBERSHIP = C.IPV6_DROP_MEMBERSHIP + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_MSFILTER = C.MCAST_MSFILTER + sysIPV6_ROUTER_ALERT = C.IPV6_ROUTER_ALERT + sysIPV6_MTU_DISCOVER = C.IPV6_MTU_DISCOVER + sysIPV6_MTU = C.IPV6_MTU + sysIPV6_RECVERR = C.IPV6_RECVERR + sysIPV6_V6ONLY = C.IPV6_V6ONLY + sysIPV6_JOIN_ANYCAST = C.IPV6_JOIN_ANYCAST + sysIPV6_LEAVE_ANYCAST = C.IPV6_LEAVE_ANYCAST + + //sysIPV6_PMTUDISC_DONT = C.IPV6_PMTUDISC_DONT + //sysIPV6_PMTUDISC_WANT = C.IPV6_PMTUDISC_WANT + //sysIPV6_PMTUDISC_DO = C.IPV6_PMTUDISC_DO + //sysIPV6_PMTUDISC_PROBE = C.IPV6_PMTUDISC_PROBE + //sysIPV6_PMTUDISC_INTERFACE = C.IPV6_PMTUDISC_INTERFACE + //sysIPV6_PMTUDISC_OMIT = C.IPV6_PMTUDISC_OMIT + + sysIPV6_FLOWLABEL_MGR = C.IPV6_FLOWLABEL_MGR + sysIPV6_FLOWINFO_SEND = C.IPV6_FLOWINFO_SEND + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + sysIPV6_XFRM_POLICY = C.IPV6_XFRM_POLICY + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RTHDR = C.IPV6_RTHDR + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_TCLASS = C.IPV6_TCLASS + + sysIPV6_ADDR_PREFERENCES = C.IPV6_ADDR_PREFERENCES + + sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP + sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = C.IPV6_PREFER_SRC_PUBTMP_DEFAULT + sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA + sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME + sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA + sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA + + sysIPV6_MINHOPCOUNT = C.IPV6_MINHOPCOUNT + + sysIPV6_ORIGDSTADDR = C.IPV6_ORIGDSTADDR + sysIPV6_RECVORIGDSTADDR = C.IPV6_RECVORIGDSTADDR + sysIPV6_TRANSPARENT = C.IPV6_TRANSPARENT + sysIPV6_UNICAST_IF = C.IPV6_UNICAST_IF + + sysICMPV6_FILTER = C.ICMPV6_FILTER + + sysICMPV6_FILTER_BLOCK = C.ICMPV6_FILTER_BLOCK + sysICMPV6_FILTER_PASS = C.ICMPV6_FILTER_PASS + sysICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS + sysICMPV6_FILTER_PASSONLY = C.ICMPV6_FILTER_PASSONLY + + sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + sizeofIPv6FlowlabelReq = C.sizeof_struct_in6_flowlabel_req + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type kernelSockaddrStorage C.struct___kernel_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6FlowlabelReq C.struct_in6_flowlabel_req + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_netbsd.go b/vendor/golang.org/x/net/ipv6/defs_netbsd.go new file mode 100644 index 0000000..be9ceb9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_netbsd.go @@ -0,0 +1,80 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_openbsd.go b/vendor/golang.org/x/net/ipv6/defs_openbsd.go new file mode 100644 index 0000000..177ddf8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_openbsd.go @@ -0,0 +1,89 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_AUTH_LEVEL = C.IPV6_AUTH_LEVEL + sysIPV6_ESP_TRANS_LEVEL = C.IPV6_ESP_TRANS_LEVEL + sysIPV6_ESP_NETWORK_LEVEL = C.IPV6_ESP_NETWORK_LEVEL + sysIPSEC6_OUTSA = C.IPSEC6_OUTSA + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + sysIPV6_IPCOMP_LEVEL = C.IPV6_IPCOMP_LEVEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + sysIPV6_PIPEX = C.IPV6_PIPEX + + sysIPV6_RTABLE = C.IPV6_RTABLE + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_solaris.go b/vendor/golang.org/x/net/ipv6/defs_solaris.go new file mode 100644 index 0000000..0f8ce2b --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_solaris.go @@ -0,0 +1,114 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + + sysIPV6_RTHDR = C.IPV6_RTHDR + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + + sysIPV6_RECVRTHDRDSTOPTS = C.IPV6_RECVRTHDRDSTOPTS + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + sysIPV6_SEC_OPT = C.IPV6_SEC_OPT + sysIPV6_SRC_PREFERENCES = C.IPV6_SRC_PREFERENCES + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + + sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME + sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA + sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC + sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP + sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA + sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA + + sysIPV6_PREFER_SRC_MIPMASK = C.IPV6_PREFER_SRC_MIPMASK + sysIPV6_PREFER_SRC_MIPDEFAULT = C.IPV6_PREFER_SRC_MIPDEFAULT + sysIPV6_PREFER_SRC_TMPMASK = C.IPV6_PREFER_SRC_TMPMASK + sysIPV6_PREFER_SRC_TMPDEFAULT = C.IPV6_PREFER_SRC_TMPDEFAULT + sysIPV6_PREFER_SRC_CGAMASK = C.IPV6_PREFER_SRC_CGAMASK + sysIPV6_PREFER_SRC_CGADEFAULT = C.IPV6_PREFER_SRC_CGADEFAULT + + sysIPV6_PREFER_SRC_MASK = C.IPV6_PREFER_SRC_MASK + + sysIPV6_PREFER_SRC_DEFAULT = C.IPV6_PREFER_SRC_DEFAULT + + sysIPV6_BOUND_IF = C.IPV6_BOUND_IF + sysIPV6_UNSPEC_SRC = C.IPV6_UNSPEC_SRC + + sysICMP6_FILTER = C.ICMP6_FILTER + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go new file mode 100644 index 0000000..1f422e7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/dgramopt.go @@ -0,0 +1,301 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + + "golang.org/x/net/bpf" +) + +// MulticastHopLimit returns the hop limit field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastHopLimit() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetMulticastHopLimit sets the hop limit field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, hoplim) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errNotImplemented + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errNotImplemented + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errNotImplemented + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// Checksum reports whether the kernel will compute, store or verify a +// checksum for both incoming and outgoing packets. If on is true, it +// returns an offset in bytes into the data of where the checksum +// field is located. +func (c *dgramOpt) Checksum() (on bool, offset int, err error) { + if !c.ok() { + return false, 0, errInvalidConn + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return false, 0, errNotImplemented + } + offset, err = so.GetInt(c.Conn) + if err != nil { + return false, 0, err + } + if offset < 0 { + return false, 0, nil + } + return true, offset, nil +} + +// SetChecksum enables the kernel checksum processing. If on is ture, +// the offset should be an offset in bytes into the data of where the +// checksum field is located. +func (c *dgramOpt) SetChecksum(on bool, offset int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return errNotImplemented + } + if !on { + offset = -1 + } + return so.SetInt(c.Conn, offset) +} + +// ICMPFilter returns an ICMP filter. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errNotImplemented + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errNotImplemented + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errNotImplemented + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go new file mode 100644 index 0000000..e0be9d5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/doc.go @@ -0,0 +1,243 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ipv6 implements IP-level socket options for the Internet +// Protocol version 6. +// +// The package provides IP-level socket options that allow +// manipulation of IPv6 facilities. +// +// The IPv6 protocol is defined in RFC 8200. +// Socket interface extensions are defined in RFC 3493, RFC 3542 and +// RFC 3678. +// MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810. +// Source-specific multicast is defined in RFC 4607. +// +// On Darwin, this package requires OS X Mavericks version 10.9 or +// above, or equivalent. +// +// +// Unicasting +// +// The options for unicasting are available for net.TCPConn, +// net.UDPConn and net.IPConn which are created as network connections +// that use the IPv6 transport. When a single TCP connection carrying +// a data flow of multiple packets needs to indicate the flow is +// important, Conn is used to set the traffic class field on the IPv6 +// header for each packet. +// +// ln, err := net.Listen("tcp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer ln.Close() +// for { +// c, err := ln.Accept() +// if err != nil { +// // error handling +// } +// go func(c net.Conn) { +// defer c.Close() +// +// The outgoing packets will be labeled DiffServ assured forwarding +// class 1 low drop precedence, known as AF11 packets. +// +// if err := ipv6.NewConn(c).SetTrafficClass(0x28); err != nil { +// // error handling +// } +// if _, err := c.Write(data); err != nil { +// // error handling +// } +// }(c) +// } +// +// +// Multicasting +// +// The options for multicasting are available for net.UDPConn and +// net.IPConn which are created as network connections that use the +// IPv6 transport. A few network facilities must be prepared before +// you begin multicasting, at a minimum joining network interfaces and +// multicast groups. +// +// en0, err := net.InterfaceByName("en0") +// if err != nil { +// // error handling +// } +// en1, err := net.InterfaceByIndex(911) +// if err != nil { +// // error handling +// } +// group := net.ParseIP("ff02::114") +// +// First, an application listens to an appropriate address with an +// appropriate service port. +// +// c, err := net.ListenPacket("udp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// +// Second, the application joins multicast groups, starts listening to +// the groups on the specified network interfaces. Note that the +// service port for transport layer protocol does not matter with this +// operation as joining groups affects only network and link layer +// protocols, such as IPv6 and Ethernet. +// +// p := ipv6.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// +// The application might set per packet control message transmissions +// between the protocol stack within the kernel. When the application +// needs a destination address on an incoming packet, +// SetControlMessage of PacketConn is used to enable control message +// transmissions. +// +// if err := p.SetControlMessage(ipv6.FlagDst, true); err != nil { +// // error handling +// } +// +// The application could identify whether the received packets are +// of interest by using the control message that contains the +// destination address of the received packet. +// +// b := make([]byte, 1500) +// for { +// n, rcm, src, err := p.ReadFrom(b) +// if err != nil { +// // error handling +// } +// if rcm.Dst.IsMulticast() { +// if rcm.Dst.Equal(group) { +// // joined group, do something +// } else { +// // unknown group, discard +// continue +// } +// } +// +// The application can also send both unicast and multicast packets. +// +// p.SetTrafficClass(0x0) +// p.SetHopLimit(16) +// if _, err := p.WriteTo(data[:n], nil, src); err != nil { +// // error handling +// } +// dst := &net.UDPAddr{IP: group, Port: 1024} +// wcm := ipv6.ControlMessage{TrafficClass: 0xe0, HopLimit: 1} +// for _, ifi := range []*net.Interface{en0, en1} { +// wcm.IfIndex = ifi.Index +// if _, err := p.WriteTo(data[:n], &wcm, dst); err != nil { +// // error handling +// } +// } +// } +// +// +// More multicasting +// +// An application that uses PacketConn may join multiple multicast +// groups. For example, a UDP listener with port 1024 might join two +// different groups across over two different network interfaces by +// using: +// +// c, err := net.ListenPacket("udp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// p := ipv6.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { +// // error handling +// } +// +// It is possible for multiple UDP listeners that listen on the same +// UDP port to join the same multicast group. The net package will +// provide a socket that listens to a wildcard address with reusable +// UDP port when an appropriate multicast address prefix is passed to +// the net.ListenPacket or net.ListenUDP. +// +// c1, err := net.ListenPacket("udp6", "[ff02::]:1024") +// if err != nil { +// // error handling +// } +// defer c1.Close() +// c2, err := net.ListenPacket("udp6", "[ff02::]:1024") +// if err != nil { +// // error handling +// } +// defer c2.Close() +// p1 := ipv6.NewPacketConn(c1) +// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// p2 := ipv6.NewPacketConn(c2) +// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// +// Also it is possible for the application to leave or rejoin a +// multicast group on the network interface. +// +// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff01::114")}); err != nil { +// // error handling +// } +// +// +// Source-specific multicasting +// +// An application that uses PacketConn on MLDv2 supported platform is +// able to join source-specific multicast groups. +// The application may use JoinSourceSpecificGroup and +// LeaveSourceSpecificGroup for the operation known as "include" mode, +// +// ssmgroup := net.UDPAddr{IP: net.ParseIP("ff32::8000:9")} +// ssmsource := net.UDPAddr{IP: net.ParseIP("fe80::cafe")} +// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// +// or JoinGroup, ExcludeSourceSpecificGroup, +// IncludeSourceSpecificGroup and LeaveGroup for the operation known +// as "exclude" mode. +// +// exclsource := net.UDPAddr{IP: net.ParseIP("fe80::dead")} +// if err := p.JoinGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { +// // error handling +// } +// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// +// Note that it depends on each platform implementation what happens +// when an application which runs on MLDv2 unsupported platform uses +// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. +// In general the platform tries to fall back to conversations using +// MLDv1 and starts to listen to multicast traffic. +// In the fallback case, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup may return an error. +package ipv6 // import "golang.org/x/net/ipv6" + +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go new file mode 100644 index 0000000..f534a0b --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/endpoint.go @@ -0,0 +1,127 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "time" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the JoinSourceSpecificGroup, +// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup methods of PacketConn are not +// implemented. + +// A Conn represents a network endpoint that uses IPv6 transport. +// It allows to set basic IP-level socket options such as traffic +// class and hop limit. +type Conn struct { + genericOpt +} + +type genericOpt struct { + *socket.Conn +} + +func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } + +// PathMTU returns a path MTU value for the destination associated +// with the endpoint. +func (c *Conn) PathMTU() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoPathMTU] + if !ok { + return 0, errNotImplemented + } + _, mtu, err := so.getMTUInfo(c.Conn) + if err != nil { + return 0, err + } + return mtu, nil +} + +// NewConn returns a new Conn. +func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) + return &Conn{ + genericOpt: genericOpt{Conn: cc}, + } +} + +// A PacketConn represents a packet network endpoint that uses IPv6 +// transport. It is used to control several IP-level socket options +// including IPv6 header manipulation. It also provides datagram +// based network I/O methods specific to the IPv6 and higher layer +// protocols such as OSPF, GRE, and UDP. +type PacketConn struct { + genericOpt + dgramOpt + payloadHandler +} + +type dgramOpt struct { + *socket.Conn +} + +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } + +// SetControlMessage allows to receive the per packet basis IP-level +// socket options. +func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *PacketConn) SetDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *PacketConn) SetReadDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *PacketConn) SetWriteDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *PacketConn) Close() error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.Close() +} + +// NewPacketConn returns a new PacketConn using c as its underlying +// transport. +func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) + return &PacketConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, + } +} diff --git a/vendor/golang.org/x/net/ipv6/gen.go b/vendor/golang.org/x/net/ipv6/gen.go new file mode 100644 index 0000000..5885664 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/gen.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates system adaptation constants and types, +// internet protocol constants and tables by reading template files +// and IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" +) + +func main() { + if err := genzsys(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := geniana(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func genzsys() error { + defs := "defs_" + runtime.GOOS + ".go" + f, err := os.Open(defs) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + f.Close() + cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) + b, err := cmd.Output() + if err != nil { + return err + } + b, err = format.Source(b) + if err != nil { + return err + } + zsys := "zsys_" + runtime.GOOS + ".go" + switch runtime.GOOS { + case "freebsd", "linux": + zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" + } + if err := ioutil.WriteFile(zsys, b, 0644); err != nil { + return err + } + return nil +} + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml", + parseICMPv6Parameters, + }, +} + +func geniana() error { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "package ipv6\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) + } + if err := r.parse(&bb, resp.Body); err != nil { + return err + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + return err + } + if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { + return err + } + return nil +} + +func parseICMPv6Parameters(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var icp icmpv6Parameters + if err := dec.Decode(&icp); err != nil { + return err + } + prs := icp.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Name, pr.Value) + fmt.Fprintf(w, "// %s\n", pr.OrigName) + } + fmt.Fprintf(w, ")\n\n") + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigName)) + } + fmt.Fprintf(w, "}\n") + return nil +} + +type icmpv6Parameters struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Value string `xml:"value"` + Name string `xml:"name"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonICMPv6ParamRecord struct { + OrigName string + Name string + Value int +} + +func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord { + id := -1 + for i, r := range icp.Registries { + if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { + id = i + break + } + } + if id < 0 { + return nil + } + prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records)) + sr := strings.NewReplacer( + "Messages", "", + "Message", "", + "ICMP", "", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range icp.Registries[id].Records { + if strings.Contains(pr.Name, "Reserved") || + strings.Contains(pr.Name, "Unassigned") || + strings.Contains(pr.Name, "Deprecated") || + strings.Contains(pr.Name, "Experiment") || + strings.Contains(pr.Name, "experiment") { + continue + } + ss := strings.Split(pr.Name, "\n") + if len(ss) > 1 { + prs[i].Name = strings.Join(ss, " ") + } else { + prs[i].Name = ss[0] + } + s := strings.TrimSpace(prs[i].Name) + prs[i].OrigName = s + prs[i].Name = sr.Replace(s) + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go new file mode 100644 index 0000000..0326aed --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/genericopt.go @@ -0,0 +1,56 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +// TrafficClass returns the traffic class field value for outgoing +// packets. +func (c *genericOpt) TrafficClass() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTrafficClass sets the traffic class field value for future +// outgoing packets. +func (c *genericOpt) SetTrafficClass(tclass int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, tclass) +} + +// HopLimit returns the hop limit field value for outgoing packets. +func (c *genericOpt) HopLimit() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetHopLimit sets the hop limit field value for future outgoing +// packets. +func (c *genericOpt) SetHopLimit(hoplim int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, hoplim) +} diff --git a/vendor/golang.org/x/net/ipv6/header.go b/vendor/golang.org/x/net/ipv6/header.go new file mode 100644 index 0000000..e05cb08 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/header.go @@ -0,0 +1,55 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "encoding/binary" + "fmt" + "net" +) + +const ( + Version = 6 // protocol version + HeaderLen = 40 // header length +) + +// A Header represents an IPv6 base header. +type Header struct { + Version int // protocol version + TrafficClass int // traffic class + FlowLabel int // flow label + PayloadLen int // payload length + NextHeader int // next header + HopLimit int // hop limit + Src net.IP // source address + Dst net.IP // destination address +} + +func (h *Header) String() string { + if h == nil { + return "" + } + return fmt.Sprintf("ver=%d tclass=%#x flowlbl=%#x payloadlen=%d nxthdr=%d hoplim=%d src=%v dst=%v", h.Version, h.TrafficClass, h.FlowLabel, h.PayloadLen, h.NextHeader, h.HopLimit, h.Src, h.Dst) +} + +// ParseHeader parses b as an IPv6 base header. +func ParseHeader(b []byte) (*Header, error) { + if len(b) < HeaderLen { + return nil, errHeaderTooShort + } + h := &Header{ + Version: int(b[0]) >> 4, + TrafficClass: int(b[0]&0x0f)<<4 | int(b[1])>>4, + FlowLabel: int(b[1]&0x0f)<<16 | int(b[2])<<8 | int(b[3]), + PayloadLen: int(binary.BigEndian.Uint16(b[4:6])), + NextHeader: int(b[6]), + HopLimit: int(b[7]), + } + h.Src = make(net.IP, net.IPv6len) + copy(h.Src, b[8:24]) + h.Dst = make(net.IP, net.IPv6len) + copy(h.Dst, b[24:40]) + return h, nil +} diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go new file mode 100644 index 0000000..f767b1f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/helper.go @@ -0,0 +1,59 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "errors" + "net" + "runtime" +) + +var ( + errInvalidConn = errors.New("invalid connection") + errMissingAddress = errors.New("missing address") + errHeaderTooShort = errors.New("header too short") + errInvalidConnType = errors.New("invalid conn type") + errNoSuchInterface = errors.New("no such interface") + errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) +) + +func boolint(b bool) int { + if b { + return 1 + } + return 0 +} + +func netAddrToIP16(a net.Addr) net.IP { + switch v := a.(type) { + case *net.UDPAddr: + if ip := v.IP.To16(); ip != nil && ip.To4() == nil { + return ip + } + case *net.IPAddr: + if ip := v.IP.To16(); ip != nil && ip.To4() == nil { + return ip + } + } + return nil +} + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv6/iana.go b/vendor/golang.org/x/net/ipv6/iana.go new file mode 100644 index 0000000..32db1aa --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/iana.go @@ -0,0 +1,86 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +package ipv6 + +// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 +const ( + ICMPTypeDestinationUnreachable ICMPType = 1 // Destination Unreachable + ICMPTypePacketTooBig ICMPType = 2 // Packet Too Big + ICMPTypeTimeExceeded ICMPType = 3 // Time Exceeded + ICMPTypeParameterProblem ICMPType = 4 // Parameter Problem + ICMPTypeEchoRequest ICMPType = 128 // Echo Request + ICMPTypeEchoReply ICMPType = 129 // Echo Reply + ICMPTypeMulticastListenerQuery ICMPType = 130 // Multicast Listener Query + ICMPTypeMulticastListenerReport ICMPType = 131 // Multicast Listener Report + ICMPTypeMulticastListenerDone ICMPType = 132 // Multicast Listener Done + ICMPTypeRouterSolicitation ICMPType = 133 // Router Solicitation + ICMPTypeRouterAdvertisement ICMPType = 134 // Router Advertisement + ICMPTypeNeighborSolicitation ICMPType = 135 // Neighbor Solicitation + ICMPTypeNeighborAdvertisement ICMPType = 136 // Neighbor Advertisement + ICMPTypeRedirect ICMPType = 137 // Redirect Message + ICMPTypeRouterRenumbering ICMPType = 138 // Router Renumbering + ICMPTypeNodeInformationQuery ICMPType = 139 // ICMP Node Information Query + ICMPTypeNodeInformationResponse ICMPType = 140 // ICMP Node Information Response + ICMPTypeInverseNeighborDiscoverySolicitation ICMPType = 141 // Inverse Neighbor Discovery Solicitation Message + ICMPTypeInverseNeighborDiscoveryAdvertisement ICMPType = 142 // Inverse Neighbor Discovery Advertisement Message + ICMPTypeVersion2MulticastListenerReport ICMPType = 143 // Version 2 Multicast Listener Report + ICMPTypeHomeAgentAddressDiscoveryRequest ICMPType = 144 // Home Agent Address Discovery Request Message + ICMPTypeHomeAgentAddressDiscoveryReply ICMPType = 145 // Home Agent Address Discovery Reply Message + ICMPTypeMobilePrefixSolicitation ICMPType = 146 // Mobile Prefix Solicitation + ICMPTypeMobilePrefixAdvertisement ICMPType = 147 // Mobile Prefix Advertisement + ICMPTypeCertificationPathSolicitation ICMPType = 148 // Certification Path Solicitation Message + ICMPTypeCertificationPathAdvertisement ICMPType = 149 // Certification Path Advertisement Message + ICMPTypeMulticastRouterAdvertisement ICMPType = 151 // Multicast Router Advertisement + ICMPTypeMulticastRouterSolicitation ICMPType = 152 // Multicast Router Solicitation + ICMPTypeMulticastRouterTermination ICMPType = 153 // Multicast Router Termination + ICMPTypeFMIPv6 ICMPType = 154 // FMIPv6 Messages + ICMPTypeRPLControl ICMPType = 155 // RPL Control Message + ICMPTypeILNPv6LocatorUpdate ICMPType = 156 // ILNPv6 Locator Update Message + ICMPTypeDuplicateAddressRequest ICMPType = 157 // Duplicate Address Request + ICMPTypeDuplicateAddressConfirmation ICMPType = 158 // Duplicate Address Confirmation + ICMPTypeMPLControl ICMPType = 159 // MPL Control Message + ICMPTypeExtendedEchoRequest ICMPType = 160 // Extended Echo Request + ICMPTypeExtendedEchoReply ICMPType = 161 // Extended Echo Reply +) + +// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 +var icmpTypes = map[ICMPType]string{ + 1: "destination unreachable", + 2: "packet too big", + 3: "time exceeded", + 4: "parameter problem", + 128: "echo request", + 129: "echo reply", + 130: "multicast listener query", + 131: "multicast listener report", + 132: "multicast listener done", + 133: "router solicitation", + 134: "router advertisement", + 135: "neighbor solicitation", + 136: "neighbor advertisement", + 137: "redirect message", + 138: "router renumbering", + 139: "icmp node information query", + 140: "icmp node information response", + 141: "inverse neighbor discovery solicitation message", + 142: "inverse neighbor discovery advertisement message", + 143: "version 2 multicast listener report", + 144: "home agent address discovery request message", + 145: "home agent address discovery reply message", + 146: "mobile prefix solicitation", + 147: "mobile prefix advertisement", + 148: "certification path solicitation message", + 149: "certification path advertisement message", + 151: "multicast router advertisement", + 152: "multicast router solicitation", + 153: "multicast router termination", + 154: "fmipv6 messages", + 155: "rpl control message", + 156: "ilnpv6 locator update message", + 157: "duplicate address request", + 158: "duplicate address confirmation", + 159: "mpl control message", + 160: "extended echo request", + 161: "extended echo reply", +} diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go new file mode 100644 index 0000000..b7f48e2 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp.go @@ -0,0 +1,60 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/iana" + +// BUG(mikio): On Windows, methods related to ICMPFilter are not +// implemented. + +// An ICMPType represents a type of ICMP message. +type ICMPType int + +func (typ ICMPType) String() string { + s, ok := icmpTypes[typ] + if !ok { + return "" + } + return s +} + +// Protocol returns the ICMPv6 protocol number. +func (typ ICMPType) Protocol() int { + return iana.ProtocolIPv6ICMP +} + +// An ICMPFilter represents an ICMP message filter for incoming +// packets. The filter belongs to a packet delivery path on a host and +// it cannot interact with forwarding packets or tunnel-outer packets. +// +// Note: RFC 8200 defines a reasonable role model. A node means a +// device that implements IP. A router means a node that forwards IP +// packets not explicitly addressed to itself, and a host means a node +// that is not a router. +type ICMPFilter struct { + icmpv6Filter +} + +// Accept accepts incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Accept(typ ICMPType) { + f.accept(typ) +} + +// Block blocks incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Block(typ ICMPType) { + f.block(typ) +} + +// SetAll sets the filter action to the filter. +func (f *ICMPFilter) SetAll(block bool) { + f.setAll(block) +} + +// WillBlock reports whether the ICMP type will be blocked. +func (f *ICMPFilter) WillBlock(typ ICMPType) bool { + return f.willBlock(typ) +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_bsd.go b/vendor/golang.org/x/net/ipv6/icmp_bsd.go new file mode 100644 index 0000000..b03025c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_bsd.go @@ -0,0 +1,29 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.Filt[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.Filt { + if block { + f.Filt[i] = 0 + } else { + f.Filt[i] = 1<<32 - 1 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_linux.go b/vendor/golang.org/x/net/ipv6/icmp_linux.go new file mode 100644 index 0000000..647f6b4 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_linux.go @@ -0,0 +1,27 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.Data[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.Data[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.Data { + if block { + f.Data[i] = 1<<32 - 1 + } else { + f.Data[i] = 0 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.Data[typ>>5]&(1<<(uint32(typ)&31)) != 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_solaris.go b/vendor/golang.org/x/net/ipv6/icmp_solaris.go new file mode 100644 index 0000000..7c23bb1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_solaris.go @@ -0,0 +1,27 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.X__icmp6_filt[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.X__icmp6_filt[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.X__icmp6_filt { + if block { + f.X__icmp6_filt[i] = 0 + } else { + f.X__icmp6_filt[i] = 1<<32 - 1 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.X__icmp6_filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go new file mode 100644 index 0000000..370e51a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_stub.go @@ -0,0 +1,23 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +type icmpv6Filter struct { +} + +func (f *icmpv6Filter) accept(typ ICMPType) { +} + +func (f *icmpv6Filter) block(typ ICMPType) { +} + +func (f *icmpv6Filter) setAll(block bool) { +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return false +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_windows.go b/vendor/golang.org/x/net/ipv6/icmp_windows.go new file mode 100644 index 0000000..443cd07 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_windows.go @@ -0,0 +1,22 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) block(typ ICMPType) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) setAll(block bool) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + // TODO(mikio): implement this + return false +} diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go new file mode 100644 index 0000000..a8197f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload.go @@ -0,0 +1,23 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo +// methods of PacketConn is not implemented. + +// A payloadHandler represents the IPv6 datagram payload handler. +type payloadHandler struct { + net.PacketConn + *socket.Conn + rawOpt +} + +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go new file mode 100644 index 0000000..284a042 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg.go @@ -0,0 +1,70 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// ReadFrom reads a payload of the received IPv6 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + if m.NN > 0 { + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP16(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +// WriteTo writes a payload of the IPv6 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The +// cm may be nil if control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err = c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go new file mode 100644 index 0000000..c5a4c96 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go @@ -0,0 +1,38 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package ipv6 + +import "net" + +// ReadFrom reads a payload of the received IPv6 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + if n, src, err = c.PacketConn.ReadFrom(b); err != nil { + return 0, nil, nil, err + } + return +} + +// WriteTo writes a payload of the IPv6 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The +// cm may be nil if control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + if dst == nil { + return 0, errMissingAddress + } + return c.PacketConn.WriteTo(b, dst) +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go new file mode 100644 index 0000000..cc3907d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt.go @@ -0,0 +1,43 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/socket" + +// Sticky socket options +const ( + ssoTrafficClass = iota // header field for unicast packet, RFC 3542 + ssoHopLimit // header field for unicast packet, RFC 3493 + ssoMulticastInterface // outbound interface for multicast packet, RFC 3493 + ssoMulticastHopLimit // header field for multicast packet, RFC 3493 + ssoMulticastLoopback // loopback for multicast packet, RFC 3493 + ssoReceiveTrafficClass // header field on received packet, RFC 3542 + ssoReceiveHopLimit // header field on received packet, RFC 2292 or 3542 + ssoReceivePacketInfo // incbound or outbound packet path, RFC 2292 or 3542 + ssoReceivePathMTU // path mtu, RFC 3542 + ssoPathMTU // path mtu, RFC 3542 + ssoChecksum // packet checksum, RFC 2292 or 3542 + ssoICMPFilter // icmp filter, RFC 2292 or 3542 + ssoJoinGroup // any-source multicast, RFC 3493 + ssoLeaveGroup // any-source multicast, RFC 3493 + ssoJoinSourceGroup // source-specific multicast + ssoLeaveSourceGroup // source-specific multicast + ssoBlockSourceGroup // any-source or source-specific multicast + ssoUnblockSourceGroup // any-source or source-specific multicast + ssoAttachFilter // attach BPF for filtering inbound traffic +) + +// Sticky socket option value types +const ( + ssoTypeIPMreq = iota + 1 + ssoTypeGroupReq + ssoTypeGroupSourceReq +) + +// A sockOpt represents a binding for sticky socket option. +type sockOpt struct { + socket.Option + typ int // hint for option value type; optional +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go new file mode 100644 index 0000000..824c623 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt_posix.go @@ -0,0 +1,89 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv6 + +import ( + "net" + "runtime" + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + n, err := so.GetInt(c) + if err != nil { + return nil, err + } + return net.InterfaceByIndex(n) +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + var n int + if ifi != nil { + n = ifi.Index + } + return so.SetInt(c, n) +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err + } + if n != sizeofICMPv6Filter { + return nil, errNotImplemented + } + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter] + return so.Set(c, b) +} + +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, 0, err + } + if n != sizeofIPv6Mtuinfo { + return nil, 0, errNotImplemented + } + mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) + if mi.Addr.Scope_id == 0 || runtime.GOOS == "aix" { + // AIX kernel might return a wrong address. + return nil, int(mi.Mtu), nil + } + ifi, err := net.InterfaceByIndex(int(mi.Addr.Scope_id)) + if err != nil { + return nil, 0, err + } + return ifi, int(mi.Mtu), nil +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { + case ssoTypeIPMreq: + return so.setIPMreq(c, ifi, grp) + case ssoTypeGroupReq: + return so.setGroupReq(c, ifi, grp) + default: + return errNotImplemented + } +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go new file mode 100644 index 0000000..0a87a93 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt_stub.go @@ -0,0 +1,46 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errNotImplemented +} + +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { + return nil, 0, errNotImplemented +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_aix.go b/vendor/golang.org/x/net/ipv6/sys_aix.go new file mode 100644 index 0000000..bce7091 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_aix.go @@ -0,0 +1,77 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Added for go1.11 compatibility +// +build aix + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go new file mode 100644 index 0000000..8c3934c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq.go @@ -0,0 +1,24 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreq ipv6Mreq + copy(mreq.Multiaddr[:], grp) + if ifi != nil { + mreq.setIfindex(ifi.Index) + } + b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go new file mode 100644 index 0000000..87ae481 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go @@ -0,0 +1,17 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go new file mode 100644 index 0000000..90ef4df --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package ipv6 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := unix.SockFprog{ + Len: uint16(len(f)), + Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go new file mode 100644 index 0000000..eb9f831 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv6 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go new file mode 100644 index 0000000..e416eaa --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bsd.go @@ -0,0 +1,57 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build dragonfly netbsd openbsd + +package ipv6 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go new file mode 100644 index 0000000..12cc5cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_darwin.go @@ -0,0 +1,78 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go new file mode 100644 index 0000000..85a9f5d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_freebsd.go @@ -0,0 +1,92 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "runtime" + "strings" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func init() { + if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { + archs, _ := syscall.Sysctl("kern.supported_archs") + for _, s := range strings.Fields(archs) { + if s == "amd64" { + compatFreeBSD32 = true + break + } + } + } +} + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go new file mode 100644 index 0000000..96e8093 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_linux.go @@ -0,0 +1,75 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Ifindex = int32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go new file mode 100644 index 0000000..d348b5f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_solaris.go @@ -0,0 +1,74 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go new file mode 100644 index 0000000..9b52e97 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go @@ -0,0 +1,54 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin freebsd linux solaris + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +var compatFreeBSD32 bool // 386 emulation on amd64 + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go new file mode 100644 index 0000000..d5bc110 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!freebsd,!linux,!solaris + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go new file mode 100644 index 0000000..4f252d0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_stub.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{} +) diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go new file mode 100644 index 0000000..fc36b01 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_windows.go @@ -0,0 +1,75 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +const ( + // See ws2tcpip.h. + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PKTINFO = 0x13 + + sizeofSockaddrInet6 = 0x1c + + sizeofIPv6Mreq = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofICMPv6Filter = 0 +) + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type icmpv6Filter struct { + // TODO(mikio): implement this +} + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go new file mode 100644 index 0000000..bf44e33 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go @@ -0,0 +1,103 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysICMP6_FILTER = 0x26 + + sysIPV6_CHECKSUM = 0x27 + sysIPV6_V6ONLY = 0x25 + + sysIPV6_RTHDRDSTOPTS = 0x37 + + sysIPV6_RECVPKTINFO = 0x23 + sysIPV6_RECVHOPLIMIT = 0x29 + sysIPV6_RECVRTHDR = 0x33 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_RECVDSTOPTS = 0x38 + + sysIPV6_USE_MIN_MTU = 0x2c + sysIPV6_RECVPATHMTU = 0x2f + sysIPV6_PATHMTU = 0x2e + + sysIPV6_PKTINFO = 0x21 + sysIPV6_HOPLIMIT = 0x28 + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x34 + sysIPV6_DSTOPTS = 0x36 + sysIPV6_RTHDR = 0x32 + + sysIPV6_RECVTCLASS = 0x2a + + sysIPV6_TCLASS = 0x2b + sysIPV6_DONTFRAG = 0x2d + + sizeofSockaddrStorage = 0x508 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x510 + sizeofGroupSourceReq = 0xa18 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + X__ss_len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [1265]uint8 + Pad_cgo_0 [7]byte +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_darwin.go b/vendor/golang.org/x/net/ipv6/zsys_darwin.go new file mode 100644 index 0000000..555744a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_darwin.go @@ -0,0 +1,131 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + sysIPV6_2292PKTINFO = 0x13 + sysIPV6_2292HOPLIMIT = 0x14 + sysIPV6_2292NEXTHOP = 0x15 + sysIPV6_2292HOPOPTS = 0x16 + sysIPV6_2292DSTOPTS = 0x17 + sysIPV6_2292RTHDR = 0x18 + + sysIPV6_2292PKTOPTIONS = 0x19 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RECVTCLASS = 0x23 + sysIPV6_TCLASS = 0x24 + + sysIPV6_RTHDRDSTOPTS = 0x39 + + sysIPV6_RECVPKTINFO = 0x3d + + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_MSFILTER = 0x4a + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_BOUND_IF = 0x7d + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [128]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [128]byte + Pad_cgo_1 [128]byte +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go new file mode 100644 index 0000000..cf3cc10 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go @@ -0,0 +1,88 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go new file mode 100644 index 0000000..73f31b2 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go @@ -0,0 +1,122 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go new file mode 100644 index 0000000..490ce7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go @@ -0,0 +1,124 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go new file mode 100644 index 0000000..490ce7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go @@ -0,0 +1,124 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go new file mode 100644 index 0000000..47e99ac --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go @@ -0,0 +1,122 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go new file mode 100644 index 0000000..66fd236 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go new file mode 100644 index 0000000..6083ddc --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go @@ -0,0 +1,156 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go new file mode 100644 index 0000000..e39571e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go @@ -0,0 +1,84 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go new file mode 100644 index 0000000..cc1899a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_AUTH_LEVEL = 0x35 + sysIPV6_ESP_TRANS_LEVEL = 0x36 + sysIPV6_ESP_NETWORK_LEVEL = 0x37 + sysIPSEC6_OUTSA = 0x38 + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + sysIPV6_IPCOMP_LEVEL = 0x3c + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + sysIPV6_PIPEX = 0x3f + + sysIPV6_RTABLE = 0x1021 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_solaris.go b/vendor/golang.org/x/net/ipv6/zsys_solaris.go new file mode 100644 index 0000000..690eef9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_solaris.go @@ -0,0 +1,131 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x5 + sysIPV6_MULTICAST_IF = 0x6 + sysIPV6_MULTICAST_HOPS = 0x7 + sysIPV6_MULTICAST_LOOP = 0x8 + sysIPV6_JOIN_GROUP = 0x9 + sysIPV6_LEAVE_GROUP = 0xa + + sysIPV6_PKTINFO = 0xb + + sysIPV6_HOPLIMIT = 0xc + sysIPV6_NEXTHOP = 0xd + sysIPV6_HOPOPTS = 0xe + sysIPV6_DSTOPTS = 0xf + + sysIPV6_RTHDR = 0x10 + sysIPV6_RTHDRDSTOPTS = 0x11 + + sysIPV6_RECVPKTINFO = 0x12 + sysIPV6_RECVHOPLIMIT = 0x13 + sysIPV6_RECVHOPOPTS = 0x14 + + sysIPV6_RECVRTHDR = 0x16 + + sysIPV6_RECVRTHDRDSTOPTS = 0x17 + + sysIPV6_CHECKSUM = 0x18 + sysIPV6_RECVTCLASS = 0x19 + sysIPV6_USE_MIN_MTU = 0x20 + sysIPV6_DONTFRAG = 0x21 + sysIPV6_SEC_OPT = 0x22 + sysIPV6_SRC_PREFERENCES = 0x23 + sysIPV6_RECVPATHMTU = 0x24 + sysIPV6_PATHMTU = 0x25 + sysIPV6_TCLASS = 0x26 + sysIPV6_V6ONLY = 0x27 + + sysIPV6_RECVDSTOPTS = 0x28 + + sysMCAST_JOIN_GROUP = 0x29 + sysMCAST_LEAVE_GROUP = 0x2a + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_JOIN_SOURCE_GROUP = 0x2d + sysMCAST_LEAVE_SOURCE_GROUP = 0x2e + + sysIPV6_PREFER_SRC_HOME = 0x1 + sysIPV6_PREFER_SRC_COA = 0x2 + sysIPV6_PREFER_SRC_PUBLIC = 0x4 + sysIPV6_PREFER_SRC_TMP = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x10 + sysIPV6_PREFER_SRC_CGA = 0x20 + + sysIPV6_PREFER_SRC_MIPMASK = 0x3 + sysIPV6_PREFER_SRC_MIPDEFAULT = 0x1 + sysIPV6_PREFER_SRC_TMPMASK = 0xc + sysIPV6_PREFER_SRC_TMPDEFAULT = 0x4 + sysIPV6_PREFER_SRC_CGAMASK = 0x30 + sysIPV6_PREFER_SRC_CGADEFAULT = 0x10 + + sysIPV6_PREFER_SRC_MASK = 0x3f + + sysIPV6_PREFER_SRC_DEFAULT = 0x15 + + sysIPV6_BOUND_IF = 0x41 + sysIPV6_UNSPEC_SRC = 0x42 + + sysICMP6_FILTER = 0x1 + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet6 = 0x20 + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x24 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x104 + sizeofGroupSourceReq = 0x204 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Family uint16 + X_ss_pad1 [6]int8 + X_ss_align float64 + X_ss_pad2 [240]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [256]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [256]byte + Pad_cgo_1 [256]byte +} + +type icmpv6Filter struct { + X__icmp6_filt [8]uint32 +} diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS new file mode 100644 index 0000000..15167cd --- /dev/null +++ b/vendor/golang.org/x/sys/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS new file mode 100644 index 0000000..1c4577e --- /dev/null +++ b/vendor/golang.org/x/sys/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/sys/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/sys/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go new file mode 100644 index 0000000..da6b9e4 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/byteorder.go @@ -0,0 +1,30 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "encoding/binary" + "runtime" +) + +// hostByteOrder returns binary.LittleEndian on little-endian machines and +// binary.BigEndian on big-endian machines. +func hostByteOrder() binary.ByteOrder { + switch runtime.GOARCH { + case "386", "amd64", "amd64p32", + "arm", "arm64", + "mipsle", "mips64le", "mips64p32le", + "ppc64le", + "riscv", "riscv64": + return binary.LittleEndian + case "armbe", "arm64be", + "mips", "mips64", "mips64p32", + "ppc", "ppc64", + "s390", "s390x", + "sparc", "sparc64": + return binary.BigEndian + } + panic("unknown architecture") +} diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go new file mode 100644 index 0000000..679e78c --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -0,0 +1,126 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection for +// various CPU architectures. +package cpu + +// Initialized reports whether the CPU features were initialized. +// +// For some GOOS/GOARCH combinations initialization of the CPU features depends +// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm +// Initialized will report false if reading the file fails. +var Initialized bool + +// CacheLinePad is used to pad structs to avoid false sharing. +type CacheLinePad struct{ _ [cacheLineSize]byte } + +// X86 contains the supported CPU features of the +// current X86/AMD64 platform. If the current platform +// is not X86/AMD64 then all feature flags are false. +// +// X86 is padded to avoid false sharing. Further the HasAVX +// and HasAVX2 are only set if the OS supports XMM and YMM +// registers in addition to the CPUID feature bit being set. +var X86 struct { + _ CacheLinePad + HasAES bool // AES hardware implementation (AES NI) + HasADX bool // Multi-precision add-carry instruction extensions + HasAVX bool // Advanced vector extension + HasAVX2 bool // Advanced vector extension 2 + HasBMI1 bool // Bit manipulation instruction set 1 + HasBMI2 bool // Bit manipulation instruction set 2 + HasERMS bool // Enhanced REP for MOVSB and STOSB + HasFMA bool // Fused-multiply-add instructions + HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. + HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM + HasPOPCNT bool // Hamming weight instruction POPCNT. + HasRDRAND bool // RDRAND instruction (on-chip random number generator) + HasRDSEED bool // RDSEED instruction (on-chip random number generator) + HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) + HasSSE3 bool // Streaming SIMD extension 3 + HasSSSE3 bool // Supplemental streaming SIMD extension 3 + HasSSE41 bool // Streaming SIMD extension 4 and 4.1 + HasSSE42 bool // Streaming SIMD extension 4 and 4.2 + _ CacheLinePad +} + +// ARM64 contains the supported CPU features of the +// current ARMv8(aarch64) platform. If the current platform +// is not arm64 then all feature flags are false. +var ARM64 struct { + _ CacheLinePad + HasFP bool // Floating-point instruction set (always available) + HasASIMD bool // Advanced SIMD (always available) + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + HasATOMICS bool // Atomic memory operation instruction set + HasFPHP bool // Half precision floating-point instruction set + HasASIMDHP bool // Advanced SIMD half precision instruction set + HasCPUID bool // CPUID identification scheme registers + HasASIMDRDM bool // Rounding double multiply add/subtract instruction set + HasJSCVT bool // Javascript conversion from floating-point to integer + HasFCMA bool // Floating-point multiplication and addition of complex numbers + HasLRCPC bool // Release Consistent processor consistent support + HasDCPOP bool // Persistent memory support + HasSHA3 bool // SHA3 hardware implementation + HasSM3 bool // SM3 hardware implementation + HasSM4 bool // SM4 hardware implementation + HasASIMDDP bool // Advanced SIMD double precision instruction set + HasSHA512 bool // SHA512 hardware implementation + HasSVE bool // Scalable Vector Extensions + HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 + _ CacheLinePad +} + +// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. +// If the current platform is not ppc64/ppc64le then all feature flags are false. +// +// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, +// since there are no optional categories. There are some exceptions that also +// require kernel support to work (DARN, SCV), so there are feature bits for +// those as well. The minimum processor requirement is POWER8 (ISA 2.07). +// The struct is padded to avoid false sharing. +var PPC64 struct { + _ CacheLinePad + HasDARN bool // Hardware random number generator (requires kernel enablement) + HasSCV bool // Syscall vectored (requires kernel enablement) + IsPOWER8 bool // ISA v2.07 (POWER8) + IsPOWER9 bool // ISA v3.00 (POWER9) + _ CacheLinePad +} + +// S390X contains the supported CPU features of the current IBM Z +// (s390x) platform. If the current platform is not IBM Z then all +// feature flags are false. +// +// S390X is padded to avoid false sharing. Further HasVX is only set +// if the OS supports vector registers in addition to the STFLE +// feature bit being set. +var S390X struct { + _ CacheLinePad + HasZARCH bool // z/Architecture mode is active [mandatory] + HasSTFLE bool // store facility list extended + HasLDISP bool // long (20-bit) displacements + HasEIMM bool // 32-bit immediates + HasDFP bool // decimal floating point + HasETF3EH bool // ETF-3 enhanced + HasMSA bool // message security assist (CPACF) + HasAES bool // KM-AES{128,192,256} functions + HasAESCBC bool // KMC-AES{128,192,256} functions + HasAESCTR bool // KMCTR-AES{128,192,256} functions + HasAESGCM bool // KMA-GCM-AES{128,192,256} functions + HasGHASH bool // KIMD-GHASH function + HasSHA1 bool // K{I,L}MD-SHA-1 functions + HasSHA256 bool // K{I,L}MD-SHA-256 functions + HasSHA512 bool // K{I,L}MD-SHA-512 functions + HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions + HasVX bool // vector facility + HasVXE bool // vector-enhancements facility 1 + _ CacheLinePad +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go new file mode 100644 index 0000000..d8c26a0 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go @@ -0,0 +1,30 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix,ppc64 + +package cpu + +import "golang.org/x/sys/unix" + +const cacheLineSize = 128 + +const ( + // getsystemcfg constants + _SC_IMPL = 2 + _IMPL_POWER8 = 0x10000 + _IMPL_POWER9 = 0x20000 +) + +func init() { + impl := unix.Getsystemcfg(_SC_IMPL) + if impl&_IMPL_POWER8 != 0 { + PPC64.IsPOWER8 = true + } + if impl&_IMPL_POWER9 != 0 { + PPC64.IsPOWER9 = true + } + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go new file mode 100644 index 0000000..7f2348b --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -0,0 +1,9 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go new file mode 100644 index 0000000..568bcd0 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return true } + +// The following feature detection functions are defined in cpu_s390x.s. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList +func kmQuery() queryResult +func kmcQuery() queryResult +func kmctrQuery() queryResult +func kmaQuery() queryResult +func kimdQuery() queryResult +func klmdQuery() queryResult diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go new file mode 100644 index 0000000..f7cb469 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build !gccgo + +package cpu + +// cpuid is implemented in cpu_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func xgetbv() (eax, edx uint32) diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.c b/vendor/golang.org/x/sys/cpu/cpu_gccgo.c new file mode 100644 index 0000000..e363c7d --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo.c @@ -0,0 +1,43 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build gccgo + +#include +#include + +// Need to wrap __get_cpuid_count because it's declared as static. +int +gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); +} + +// xgetbv reads the contents of an XCR (Extended Control Register) +// specified in the ECX register into registers EDX:EAX. +// Currently, the only supported value for XCR is 0. +// +// TODO: Replace with a better alternative: +// +// #include +// +// #pragma GCC target("xsave") +// +// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { +// unsigned long long x = _xgetbv(0); +// *eax = x & 0xffffffff; +// *edx = (x >> 32) & 0xffffffff; +// } +// +// Note that _xgetbv is defined starting with GCC 8. +void +gccgoXgetbv(uint32_t *eax, uint32_t *edx) +{ + __asm(" xorl %%ecx, %%ecx\n" + " xgetbv" + : "=a"(*eax), "=d"(*edx)); +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo.go new file mode 100644 index 0000000..ba49b91 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build gccgo + +package cpu + +//extern gccgoGetCpuidCount +func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) + +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { + var a, b, c, d uint32 + gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) + return a, b, c, d +} + +//extern gccgoXgetbv +func gccgoXgetbv(eax, edx *uint32) + +func xgetbv() (eax, edx uint32) { + var a, d uint32 + gccgoXgetbv(&a, &d) + return a, d +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go new file mode 100644 index 0000000..aa986f7 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return false } + +// TODO(mundaym): the following feature detection functions are currently +// stubs. See https://golang.org/cl/162887 for how to fix this. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList { panic("not implemented for gccgo") } +func kmQuery() queryResult { panic("not implemented for gccgo") } +func kmcQuery() queryResult { panic("not implemented for gccgo") } +func kmctrQuery() queryResult { panic("not implemented for gccgo") } +func kmaQuery() queryResult { panic("not implemented for gccgo") } +func kimdQuery() queryResult { panic("not implemented for gccgo") } +func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go new file mode 100644 index 0000000..76b5f50 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -0,0 +1,59 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !amd64,!amd64p32,!386 + +package cpu + +import ( + "io/ioutil" +) + +const ( + _AT_HWCAP = 16 + _AT_HWCAP2 = 26 + + procAuxv = "/proc/self/auxv" + + uintSize = int(32 << (^uint(0) >> 63)) +) + +// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 +// These are initialized in cpu_$GOARCH.go +// and should not be changed after they are initialized. +var hwCap uint +var hwCap2 uint + +func init() { + buf, err := ioutil.ReadFile(procAuxv) + if err != nil { + // e.g. on android /proc/self/auxv is not accessible, so silently + // ignore the error and leave Initialized = false + return + } + + bo := hostByteOrder() + for len(buf) >= 2*(uintSize/8) { + var tag, val uint + switch uintSize { + case 32: + tag = uint(bo.Uint32(buf[0:])) + val = uint(bo.Uint32(buf[4:])) + buf = buf[8:] + case 64: + tag = uint(bo.Uint64(buf[0:])) + val = uint(bo.Uint64(buf[8:])) + buf = buf[16:] + } + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + doinit() + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go new file mode 100644 index 0000000..fa7fb1b --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go @@ -0,0 +1,67 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 64 + +// HWCAP/HWCAP2 bits. These are exposed by Linux. +const ( + hwcap_FP = 1 << 0 + hwcap_ASIMD = 1 << 1 + hwcap_EVTSTRM = 1 << 2 + hwcap_AES = 1 << 3 + hwcap_PMULL = 1 << 4 + hwcap_SHA1 = 1 << 5 + hwcap_SHA2 = 1 << 6 + hwcap_CRC32 = 1 << 7 + hwcap_ATOMICS = 1 << 8 + hwcap_FPHP = 1 << 9 + hwcap_ASIMDHP = 1 << 10 + hwcap_CPUID = 1 << 11 + hwcap_ASIMDRDM = 1 << 12 + hwcap_JSCVT = 1 << 13 + hwcap_FCMA = 1 << 14 + hwcap_LRCPC = 1 << 15 + hwcap_DCPOP = 1 << 16 + hwcap_SHA3 = 1 << 17 + hwcap_SM3 = 1 << 18 + hwcap_SM4 = 1 << 19 + hwcap_ASIMDDP = 1 << 20 + hwcap_SHA512 = 1 << 21 + hwcap_SVE = 1 << 22 + hwcap_ASIMDFHM = 1 << 23 +) + +func doinit() { + // HWCAP feature bits + ARM64.HasFP = isSet(hwCap, hwcap_FP) + ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) + ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM64.HasAES = isSet(hwCap, hwcap_AES) + ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) + ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) + ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) + ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) + ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) + ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) + ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) + ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) + ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) + ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) + ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) + ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) + ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) + ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) + ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) + ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) + ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) + ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) + ARM64.HasSVE = isSet(hwCap, hwcap_SVE) + ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go new file mode 100644 index 0000000..6c8d975 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go @@ -0,0 +1,33 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le + +package cpu + +const cacheLineSize = 128 + +// HWCAP/HWCAP2 bits. These are exposed by the kernel. +const ( + // ISA Level + _PPC_FEATURE2_ARCH_2_07 = 0x80000000 + _PPC_FEATURE2_ARCH_3_00 = 0x00800000 + + // CPU features + _PPC_FEATURE2_DARN = 0x00200000 + _PPC_FEATURE2_SCV = 0x00100000 +) + +func doinit() { + // HWCAP2 feature bits + PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) + PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) + PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) + PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go new file mode 100644 index 0000000..d579eae --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go @@ -0,0 +1,161 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 256 + +const ( + // bit mask values from /usr/include/bits/hwcap.h + hwcap_ZARCH = 2 + hwcap_STFLE = 4 + hwcap_MSA = 8 + hwcap_LDISP = 16 + hwcap_EIMM = 32 + hwcap_DFP = 64 + hwcap_ETF3EH = 256 + hwcap_VX = 2048 + hwcap_VXE = 8192 +) + +// bitIsSet reports whether the bit at index is set. The bit index +// is in big endian order, so bit index 0 is the leftmost bit. +func bitIsSet(bits []uint64, index uint) bool { + return bits[index/64]&((1<<63)>>(index%64)) != 0 +} + +// function is the code for the named cryptographic function. +type function uint8 + +const ( + // KM{,A,C,CTR} function codes + aes128 function = 18 // AES-128 + aes192 function = 19 // AES-192 + aes256 function = 20 // AES-256 + + // K{I,L}MD function codes + sha1 function = 1 // SHA-1 + sha256 function = 2 // SHA-256 + sha512 function = 3 // SHA-512 + sha3_224 function = 32 // SHA3-224 + sha3_256 function = 33 // SHA3-256 + sha3_384 function = 34 // SHA3-384 + sha3_512 function = 35 // SHA3-512 + shake128 function = 36 // SHAKE-128 + shake256 function = 37 // SHAKE-256 + + // KLMD function codes + ghash function = 65 // GHASH +) + +// queryResult contains the result of a Query function +// call. Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type queryResult struct { + bits [2]uint64 +} + +// Has reports whether the given functions are present. +func (q *queryResult) Has(fns ...function) bool { + if len(fns) == 0 { + panic("no function codes provided") + } + for _, f := range fns { + if !bitIsSet(q.bits[:], uint(f)) { + return false + } + } + return true +} + +// facility is a bit index for the named facility. +type facility uint8 + +const ( + // cryptography facilities + msa4 facility = 77 // message-security-assist extension 4 + msa8 facility = 146 // message-security-assist extension 8 +) + +// facilityList contains the result of an STFLE call. +// Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type facilityList struct { + bits [4]uint64 +} + +// Has reports whether the given facilities are present. +func (s *facilityList) Has(fs ...facility) bool { + if len(fs) == 0 { + panic("no facility bits provided") + } + for _, f := range fs { + if !bitIsSet(s.bits[:], uint(f)) { + return false + } + } + return true +} + +func doinit() { + // test HWCAP bit vector + has := func(featureMask uint) bool { + return hwCap&featureMask == featureMask + } + + // mandatory + S390X.HasZARCH = has(hwcap_ZARCH) + + // optional + S390X.HasSTFLE = has(hwcap_STFLE) + S390X.HasLDISP = has(hwcap_LDISP) + S390X.HasEIMM = has(hwcap_EIMM) + S390X.HasETF3EH = has(hwcap_ETF3EH) + S390X.HasDFP = has(hwcap_DFP) + S390X.HasMSA = has(hwcap_MSA) + S390X.HasVX = has(hwcap_VX) + if S390X.HasVX { + S390X.HasVXE = has(hwcap_VXE) + } + + // We need implementations of stfle, km and so on + // to detect cryptographic features. + if !haveAsmFunctions() { + return + } + + // optional cryptographic functions + if S390X.HasMSA { + aes := []function{aes128, aes192, aes256} + + // cipher message + km, kmc := kmQuery(), kmcQuery() + S390X.HasAES = km.Has(aes...) + S390X.HasAESCBC = kmc.Has(aes...) + if S390X.HasSTFLE { + facilities := stfle() + if facilities.Has(msa4) { + kmctr := kmctrQuery() + S390X.HasAESCTR = kmctr.Has(aes...) + } + if facilities.Has(msa8) { + kma := kmaQuery() + S390X.HasAESGCM = kma.Has(aes...) + } + } + + // compute message digest + kimd := kimdQuery() // intermediate (no padding) + klmd := klmdQuery() // last (padding) + S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) + S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) + S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) + S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist + sha3 := []function{ + sha3_224, sha3_256, sha3_384, sha3_512, + shake128, shake256, + } + S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) + } +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go new file mode 100644 index 0000000..f55e0c8 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build mips64 mips64le + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go new file mode 100644 index 0000000..cda87b1 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build mips mipsle + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go new file mode 100644 index 0000000..dd1e76d --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux,arm64 + +package cpu + +const cacheLineSize = 64 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/vendor/golang.org/x/sys/cpu/cpu_s390x.s new file mode 100644 index 0000000..e5037d9 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_s390x.s @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// func stfle() facilityList +TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 + MOVD $ret+0(FP), R1 + MOVD $3, R0 // last doubleword index to store + XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) + WORD $0xb2b01000 // store facility list extended (STFLE) + RET + +// func kmQuery() queryResult +TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KM-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92E0024 // cipher message (KM) + RET + +// func kmcQuery() queryResult +TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMC-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92F0024 // cipher message with chaining (KMC) + RET + +// func kmctrQuery() queryResult +TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMCTR-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92D4024 // cipher message with counter (KMCTR) + RET + +// func kmaQuery() queryResult +TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMA-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xb9296024 // cipher message with authentication (KMA) + RET + +// func kimdQuery() queryResult +TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KIMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93E0024 // compute intermediate message digest (KIMD) + RET + +// func klmdQuery() queryResult +TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KLMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93F0024 // compute last message digest (KLMD) + RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go new file mode 100644 index 0000000..bd9bbda --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_wasm.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build wasm + +package cpu + +// We're compiling the cpu package for an unknown (software-abstracted) CPU. +// Make CacheLinePad an empty struct and hope that the usual struct alignment +// rules are good enough. + +const cacheLineSize = 0 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go new file mode 100644 index 0000000..d70d317 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -0,0 +1,59 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 + +package cpu + +const cacheLineSize = 64 + +func init() { + Initialized = true + + maxID, _, _, _ := cpuid(0, 0) + + if maxID < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(26, edx1) + + X86.HasSSE3 = isSet(0, ecx1) + X86.HasPCLMULQDQ = isSet(1, ecx1) + X86.HasSSSE3 = isSet(9, ecx1) + X86.HasFMA = isSet(12, ecx1) + X86.HasSSE41 = isSet(19, ecx1) + X86.HasSSE42 = isSet(20, ecx1) + X86.HasPOPCNT = isSet(23, ecx1) + X86.HasAES = isSet(25, ecx1) + X86.HasOSXSAVE = isSet(27, ecx1) + X86.HasRDRAND = isSet(30, ecx1) + + osSupportsAVX := false + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(1, eax) && isSet(2, eax) + } + + X86.HasAVX = isSet(28, ecx1) && osSupportsAVX + + if maxID < 7 { + return + } + + _, ebx7, _, _ := cpuid(7, 0) + X86.HasBMI1 = isSet(3, ebx7) + X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX + X86.HasBMI2 = isSet(8, ebx7) + X86.HasERMS = isSet(9, ebx7) + X86.HasRDSEED = isSet(18, ebx7) + X86.HasADX = isSet(19, ebx7) +} + +func isSet(bitpos uint, value uint32) bool { + return value&(1<

          ) { + if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || + $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || + $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { + if ($1 eq 'CTL_NAMES') { + # Top level. + $node = \%mib; + } else { + # Node. + my $nodename = lc($2); + if ($header =~ /^netinet\//) { + $ctlname = "net.inet.$nodename"; + } elsif ($header =~ /^netinet6\//) { + $ctlname = "net.inet6.$nodename"; + } elsif ($header =~ /^net\//) { + $ctlname = "net.$nodename"; + } else { + $ctlname = "$nodename"; + $ctlname =~ s/^(fs|net|kern)_/$1\./; + } + if (exists $ctl_map{$ctlname}) { + $ctlname = $ctl_map{$ctlname}; + } + if (not exists $ctls{$ctlname}) { + &debug("Ignoring $ctlname..."); + next; + } + + # Walk down from the top of the MIB. + $node = \%mib; + foreach my $part (split /\./, $ctlname) { + if (not exists $$node{$part}) { + &debug("Missing node $part"); + $$node{$part} = [ 0, '', {} ]; + } + $node = \%{@{$$node{$part}}[2]}; + } + } + + # Populate current node with entries. + my $i = -1; + while (defined($_) && $_ !~ /^}/) { + $_ =
          ; + $i++ if $_ =~ /{.*}/; + next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; + $$node{$1} = [ $i, $2, {} ]; + } + } + } + close HEADER; +} + +&build_sysctl(\%mib, "", []); + +print < 6.2, pass execpromises to the syscall. + if maj > 6 || (maj == 6 && min > 2) { + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + expr = unsafe.Pointer(exptr) + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgePromises implements the pledge syscall. +// +// This changes the promises and leaves the execpromises untouched. +// +// For more information see pledge(2). +func PledgePromises(promises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, "") + if err != nil { + return err + } + + // This variable holds the execpromises and is always nil. + var expr unsafe.Pointer + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgeExecpromises implements the pledge syscall. +// +// This changes the execpromises and leaves the promises untouched. +// +// For more information see pledge(2). +func PledgeExecpromises(execpromises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, execpromises) + if err != nil { + return err + } + + // This variable holds the promises and is always nil. + var pptr unsafe.Pointer + + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0) + if e != 0 { + return e + } + + return nil +} + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} + +// pledgeAvailable checks for availability of the pledge(2) syscall +// based on the running OpenBSD version. +func pledgeAvailable(maj, min int, execpromises string) error { + // If OpenBSD <= 5.9, pledge is not available. + if (maj == 5 && min != 9) || maj < 5 { + return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) + } + + // If OpenBSD <= 6.2 and execpromises is not empty, + // return an error - execpromises is not available before 6.3 + if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { + return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/vendor/golang.org/x/sys/unix/openbsd_unveil.go b/vendor/golang.org/x/sys/unix/openbsd_unveil.go new file mode 100644 index 0000000..aebc2dc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/openbsd_unveil.go @@ -0,0 +1,44 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build openbsd + +package unix + +import ( + "syscall" + "unsafe" +) + +// Unveil implements the unveil syscall. +// For more information see unveil(2). +// Note that the special case of blocking further +// unveil calls is handled by UnveilBlock. +func Unveil(path string, flags string) error { + pathPtr, err := syscall.BytePtrFromString(path) + if err != nil { + return err + } + flagsPtr, err := syscall.BytePtrFromString(flags) + if err != nil { + return err + } + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0) + if e != 0 { + return e + } + return nil +} + +// UnveilBlock blocks future unveil calls. +// For more information see unveil(2). +func UnveilBlock() error { + // Both pointers must be nil. + var pathUnsafe, flagsUnsafe unsafe.Pointer + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 0000000..bc2f362 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go new file mode 100644 index 0000000..61712b5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,race linux,race freebsd,race + +package unix + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go new file mode 100644 index 0000000..ad02667 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly + +package unix + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go new file mode 100644 index 0000000..6079eb4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -0,0 +1,36 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *((*Ucred)(cmsgData(h))) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go new file mode 100644 index 0000000..723b7f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -0,0 +1,120 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Socket control messages + +package unix + +import ( + "runtime" + "unsafe" +) + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + + switch runtime.GOOS { + case "aix": + // There is no alignment on AIX. + salign = 1 + case "darwin", "dragonfly", "solaris": + // NOTE: It seems like 64-bit Darwin, DragonFly BSD and + // Solaris kernels still require 32-bit aligned access to + // network subsystem. + if SizeofPtr == 8 { + salign = 4 + } + case "netbsd", "openbsd": + // NetBSD and OpenBSD armv7 require 64-bit alignment. + if runtime.GOARCH == "arm" { + salign = 8 + } + } + + return (salen + salign - 1) & ^(salign - 1) +} + +// CmsgLen returns the value to store in the Len field of the Cmsghdr +// structure, taking into account any necessary alignment. +func CmsgLen(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + datalen +} + +// CmsgSpace returns the number of bytes an ancillary element with +// payload of the passed data length occupies. +func CmsgSpace(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen) +} + +func cmsgData(h *Cmsghdr) unsafe.Pointer { + return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr))) +} + +// SocketControlMessage represents a socket control message. +type SocketControlMessage struct { + Header Cmsghdr + Data []byte +} + +// ParseSocketControlMessage parses b as an array of socket control +// messages. +func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) { + var msgs []SocketControlMessage + i := 0 + for i+CmsgLen(0) <= len(b) { + h, dbuf, err := socketControlMessageHeaderAndData(b[i:]) + if err != nil { + return nil, err + } + m := SocketControlMessage{Header: *h, Data: dbuf} + msgs = append(msgs, m) + i += cmsgAlignOf(int(h.Len)) + } + return msgs, nil +} + +func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) { + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) { + return nil, nil, EINVAL + } + return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil +} + +// UnixRights encodes a set of open file descriptors into a socket +// control message for sending to another process. +func UnixRights(fds ...int) []byte { + datalen := len(fds) * 4 + b := make([]byte, CmsgSpace(datalen)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_RIGHTS + h.SetLen(CmsgLen(datalen)) + data := cmsgData(h) + for _, fd := range fds { + *(*int32)(data) = int32(fd) + data = unsafe.Pointer(uintptr(data) + 4) + } + return b +} + +// ParseUnixRights decodes a socket control message that contains an +// integer array of open file descriptors from another process. +func ParseUnixRights(m *SocketControlMessage) ([]int, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_RIGHTS { + return nil, EINVAL + } + fds := make([]int, len(m.Data)>>2) + for i, j := 0, 0; i < len(m.Data); i += 4 { + fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i]))) + j++ + } + return fds, nil +} diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go new file mode 100644 index 0000000..17fb698 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/str.go @@ -0,0 +1,26 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + uitoa(uint(-val)) + } + return uitoa(uint(val)) +} + +func uitoa(val uint) string { + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go new file mode 100644 index 0000000..0d4b1d7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -0,0 +1,54 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Package unix contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display OS-specific documentation for the current +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package unix // import "golang.org/x/sys/unix" + +import "strings" + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mkunix.pl. +var _zero uintptr diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 0000000..fd83d87 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,549 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import "unsafe" + +/* + * Wrapped + */ + +//sys utimes(path string, times *[2]Timeval) (err error) +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + // Recvmsg not implemented on AIX + sa := new(SockaddrUnix) + return -1, -1, -1, sa, ENOSYS +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + // SendmsgN not implemented on AIX + return -1, ENOSYS +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys getdirent(fd int, buf []byte) (n int, err error) +func ReadDirent(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the processus is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Fsync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdir(dirfd int, path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//TODO umount +// //sys Unmount(target string, flags int) (err error) = umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys readlen(fd int, p *byte, np int) (n int, err error) = read +//sys writelen(fd int, p *byte, np int) (n int, err error) = write + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//TODO Select +// //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) + +//sys Getsystemcfg(label int) (n uint64) diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 0000000..c28af1f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 0000000..881cacc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go new file mode 100644 index 0000000..33c8b5f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -0,0 +1,624 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd netbsd openbsd + +// BSD system call wrappers shared by *BSD based systems +// including OS X (Darwin) and FreeBSD. Like the other +// syscall_*.go files it is compiled as Go code but also +// used as input to mksyscall which parses the //sys +// lines and generates system call stubs. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. + // TODO(rsc): Can we use a single global basep for all calls? + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys Shutdown(s int, how int) (err error) + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Index == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = sa.Len + sa.raw.Family = AF_LINK + sa.raw.Index = sa.Index + sa.raw.Type = sa.Type + sa.raw.Nlen = sa.Nlen + sa.raw.Alen = sa.Alen + sa.raw.Slen = sa.Slen + for i := 0; i < len(sa.raw.Data); i++ { + sa.raw.Data[i] = sa.Data[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_LINK: + pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) + sa := new(SockaddrDatalink) + sa.Len = pp.Len + sa.Family = pp.Family + sa.Index = pp.Index + sa.Type = pp.Type + sa.Nlen = pp.Nlen + sa.Alen = pp.Alen + sa.Slen = pp.Slen + for i := 0; i < len(sa.Data); i++ { + sa.Data[i] = pp.Data[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + if pp.Len < 2 || pp.Len > SizeofSockaddrUnix { + return nil, EINVAL + } + sa := new(SockaddrUnix) + + // Some BSDs include the trailing NUL in the length, whereas + // others do not. Work around this by subtracting the leading + // family and len. The path is then scanned to see if a NUL + // terminator still exists within the length. + n := int(pp.Len) - 2 // subtract leading Family, Len + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + // found early NUL; assume Len included the NUL + // or was overestimating. + n = i + break + } + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + if runtime.GOOS == "darwin" && len == 0 { + // Accepted socket has no address. + // This is likely due to a bug in xnu kernels, + // where instead of ECONNABORTED error socket + // is accepted, but has no address. + Close(nfd) + return 0, nil, ECONNABORTED + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be + // reported upstream. + if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 { + rsa.Addr.Family = AF_UNIX + rsa.Addr.Len = SizeofSockaddrUnix + } + return anyToSockaddr(fd, &rsa) +} + +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) + +func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) { + var change, event unsafe.Pointer + if len(changes) > 0 { + change = unsafe.Pointer(&changes[0]) + } + if len(events) > 0 { + event = unsafe.Pointer(&events[0]) + } + return kevent(kq, change, len(changes), event, len(events), timeout) +} + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +// sysctlmib translates name to mib number and appends any additional args. +func sysctlmib(name string, args ...int) ([]_C_int, error) { + // Translate name to mib number. + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + for _, a := range args { + mib = append(mib, _C_int(a)) + } + + return mib, nil +} + +func Sysctl(name string) (string, error) { + return SysctlArgs(name) +} + +func SysctlArgs(name string, args ...int) (string, error) { + buf, err := SysctlRaw(name, args...) + if err != nil { + return "", err + } + n := len(buf) + + // Throw away terminating NUL. + if n > 0 && buf[n-1] == '\x00' { + n-- + } + return string(buf[0:n]), nil +} + +func SysctlUint32(name string) (uint32, error) { + return SysctlUint32Args(name) +} + +func SysctlUint32Args(name string, args ...int) (uint32, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(4) + buf := make([]byte, 4) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 4 { + return 0, EIO + } + return *(*uint32)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlUint64(name string, args ...int) (uint64, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(8) + buf := make([]byte, 8) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 8 { + return 0, EIO + } + return *(*uint64)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlRaw(name string, args ...int) ([]byte, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Read into buffer of that size. + buf := make([]byte, n) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return nil, err + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n], nil +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + // Darwin setattrlist can set nanosecond timestamps + err := setattrlistTimes(path, ts, 0) + if err != ENOSYS { + return err + } + err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + err := setattrlistTimes(path, ts, flags) + if err != ENOSYS { + return err + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys futimes(fd int, timeval *[2]Timeval) (err error) + +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimes(fd, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +// TODO: wrap +// Acct(name nil-string) (err error) +// Gethostuuid(uuid *byte, timeout *Timespec) (err error) +// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go new file mode 100644 index 0000000..2120091 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -0,0 +1,706 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Darwin system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "errors" + "syscall" + "unsafe" +) + +const ImplementsGetwd = true + +func Getwd() (string, error) { + buf := make([]byte, 2048) + attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0) + if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 { + wd := string(attrs[0]) + // Sanity check that it's an absolute path and ends + // in a null byte, which we then strip. + if wd[0] == '/' && wd[len(wd)-1] == 0 { + return wd[:len(wd)-1], nil + } + } + // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the + // slow algorithm. + return "", ENOTSUP +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } +func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } + +const ( + attrBitMapCount = 5 + attrCmnFullpath = 0x08000000 +) + +type attrList struct { + bitmapCount uint16 + _ uint16 + CommonAttr uint32 + VolAttr uint32 + DirAttr uint32 + FileAttr uint32 + Forkattr uint32 +} + +func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) { + if len(attrBuf) < 4 { + return nil, errors.New("attrBuf too small") + } + attrList.bitmapCount = attrBitMapCount + + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return nil, err + } + + if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil { + return nil, err + } + size := *(*uint32)(unsafe.Pointer(&attrBuf[0])) + + // dat is the section of attrBuf that contains valid data, + // without the 4 byte length header. All attribute offsets + // are relative to dat. + dat := attrBuf + if int(size) < len(attrBuf) { + dat = dat[:size] + } + dat = dat[4:] // remove length prefix + + for i := uint32(0); int(i) < len(dat); { + header := dat[i:] + if len(header) < 8 { + return attrs, errors.New("truncated attribute header") + } + datOff := *(*int32)(unsafe.Pointer(&header[0])) + attrLen := *(*uint32)(unsafe.Pointer(&header[4])) + if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) { + return attrs, errors.New("truncated results; attrBuf too small") + } + end := uint32(datOff) + attrLen + attrs = append(attrs, dat[datOff:end]) + i = end + if r := i % 4; r != 0 { + i += (4 - r) + } + } + return +} + +//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(_p0, bufsize, flags) +} + +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + _p0, err := BytePtrFromString(path) + if err != nil { + return err + } + + var attrList attrList + attrList.bitmapCount = ATTR_BIT_MAP_COUNT + attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME + + // order is mtime, atime: the opposite of Chtimes + attributes := [2]Timespec{times[1], times[0]} + options := 0 + if flags&AT_SYMLINK_NOFOLLOW != 0 { + options |= FSOPT_NOFOLLOW + } + return setattrlist( + _p0, + unsafe.Pointer(&attrList), + unsafe.Pointer(&attributes), + unsafe.Sizeof(attributes), + options) +} + +//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { + // Darwin doesn't support SYS_UTIMENSAT + return ENOSYS +} + +/* + * Wrapped + */ + +//sys kill(pid int, signum int, posix int) (err error) + +func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var length = int64(count) + err = sendfile(infd, outfd, *offset, &length, nil, 0) + written = int(length) + return +} + +//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exchangedata(path1 string, path2 string, options int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Getuid() (uid int) +//sysnb Issetugid() (tainted bool) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setprivexec(flag int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// sendfile +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go new file mode 100644 index 0000000..489726f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go new file mode 100644 index 0000000..914b89b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go new file mode 100644 index 0000000..4a284cf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -0,0 +1,64 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go new file mode 100644 index 0000000..52dcd88 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -0,0 +1,66 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go new file mode 100644 index 0000000..4b4ae46 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -0,0 +1,31 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12 + +package unix + +import "unsafe" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall6X syscall.syscall6X +//go:linkname syscall_syscall9 syscall.syscall9 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +// Find the entry point for f. See comments in runtime/proc.go for the +// function of the same name. +//go:nosplit +func funcPC(f func()) uintptr { + return **(**uintptr)(unsafe.Pointer(&f)) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go new file mode 100644 index 0000000..962eee3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -0,0 +1,539 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// DragonFly BSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import "unsafe" + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pread(fd int, p []byte, offset int64) (n int, err error) { + return extpread(fd, p, 0, offset) +} + +//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + return extpwrite(fd, p, 0, offset) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { + err := sysctl(mib, old, oldlen, nil, 0) + if err != nil { + // Utsname members on Dragonfly are only 32 bytes and + // the syscall returns ENOMEM in case the actual value + // is longer. + if err == ENOMEM { + err = nil + } + } + return err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil { + return err + } + uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil { + return err + } + uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctlUname(mib, &uname.Release[0], &n); err != nil { + return err + } + uname.Release[unsafe.Sizeof(uname.Release)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctlUname(mib, &uname.Version[0], &n); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil { + return err + } + uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0 + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + * TODO(jsing): Update this list for DragonFly. + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Getxattr +// Fgetxattr +// Setxattr +// Fsetxattr +// Removexattr +// Fremovexattr +// Listxattr +// Flistxattr +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go new file mode 100644 index 0000000..9babb31 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,dragonfly + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go new file mode 100644 index 0000000..a7ca1eb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -0,0 +1,824 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// FreeBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sync" + "unsafe" +) + +const ( + SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } + SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ + SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ + SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ + SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ + SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ + SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ +) + +// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h +const _ino64First = 1200031 + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + oldBuf []statfs_freebsd11_t + needsConvert bool + ) + + if len(buf) > 0 { + if supportsABI(_ino64First) { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } else { + n := len(buf) + oldBuf = make([]statfs_freebsd11_t, n) + _p0 = unsafe.Pointer(&oldBuf[0]) + bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n) + needsConvert = true + } + } + var sysno uintptr = SYS_GETFSSTAT + if supportsABI(_ino64First) { + sysno = SYS_GETFSSTAT_FREEBSD12 + } + r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + if e1 == 0 && needsConvert { + for i := range oldBuf { + buf[i].convertFrom(&oldBuf[i]) + } + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Stat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, 0) + } + err = stat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Lstat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) + } + err = lstat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstat(fd int, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstat_freebsd12(fd, st) + } + err = fstat(fd, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(fd, path, st, flags) + } + err = fstatat(fd, path, &oldStat, flags) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Statfs(path string, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return statfs_freebsd12(path, st) + } + err = statfs(path, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Fstatfs(fd int, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return fstatfs_freebsd12(fd, st) + } + err = fstatfs(fd, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Getdents(fd int, buf []byte) (n int, err error) { + return Getdirentries(fd, buf, nil) +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + if supportsABI(_ino64First) { + return getdirentries_freebsd12(fd, buf, basep) + } + + // The old syscall entries are smaller than the new. Use 1/4 of the original + // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c). + oldBufLen := roundup(len(buf)/4, _dirblksiz) + oldBuf := make([]byte, oldBufLen) + n, err = getdirentries(fd, oldBuf, basep) + if err == nil && n > 0 { + n = convertFromDirents11(buf, oldBuf[:n]) + } + return +} + +func Mknod(path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(AT_FDCWD, path, mode, dev) + } + oldDev = int(dev) + return mknod(path, mode, oldDev) +} + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(fd, path, mode, dev) + } + oldDev = int(dev) + return mknodat(fd, path, mode, oldDev) +} + +// round x to the nearest multiple of y, larger or equal to x. +// +// from /usr/include/sys/param.h Macros for counting and rounding. +// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +func roundup(x, y int) int { + return ((x + y - 1) / y) * y +} + +func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { + *s = Stat_t{ + Dev: uint64(old.Dev), + Ino: uint64(old.Ino), + Nlink: uint64(old.Nlink), + Mode: old.Mode, + Uid: old.Uid, + Gid: old.Gid, + Rdev: uint64(old.Rdev), + Atim: old.Atim, + Mtim: old.Mtim, + Ctim: old.Ctim, + Birthtim: old.Birthtim, + Size: old.Size, + Blocks: old.Blocks, + Blksize: old.Blksize, + Flags: old.Flags, + Gen: uint64(old.Gen), + } +} + +func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) { + *s = Statfs_t{ + Version: _statfsVersion, + Type: old.Type, + Flags: old.Flags, + Bsize: old.Bsize, + Iosize: old.Iosize, + Blocks: old.Blocks, + Bfree: old.Bfree, + Bavail: old.Bavail, + Files: old.Files, + Ffree: old.Ffree, + Syncwrites: old.Syncwrites, + Asyncwrites: old.Asyncwrites, + Syncreads: old.Syncreads, + Asyncreads: old.Asyncreads, + // Spare + Namemax: old.Namemax, + Owner: old.Owner, + Fsid: old.Fsid, + // Charspare + // Fstypename + // Mntfromname + // Mntonname + } + + sl := old.Fstypename[:] + n := clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Fstypename[:], old.Fstypename[:n]) + + sl = old.Mntfromname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntfromname[:], old.Mntfromname[:n]) + + sl = old.Mntonname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntonname[:], old.Mntonname[:n]) +} + +func convertFromDirents11(buf []byte, old []byte) int { + const ( + fixedSize = int(unsafe.Offsetof(Dirent{}.Name)) + oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name)) + ) + + dstPos := 0 + srcPos := 0 + for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { + dstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos])) + srcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos])) + + reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) + if dstPos+reclen > len(buf) { + break + } + + dstDirent.Fileno = uint64(srcDirent.Fileno) + dstDirent.Off = 0 + dstDirent.Reclen = uint16(reclen) + dstDirent.Type = srcDirent.Type + dstDirent.Pad0 = 0 + dstDirent.Namlen = uint16(srcDirent.Namlen) + dstDirent.Pad1 = 0 + + copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) + padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] + for i := range padding { + padding[i] = 0 + } + + dstPos += int(dstDirent.Reclen) + srcPos += int(srcDirent.Reclen) + } + + return dstPos +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys fstat(fd int, stat *stat_freebsd11_t) (err error) +//sys fstat_freebsd12(fd int, stat *Stat_t) (err error) +//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) +//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) +//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error) +//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys lstat(path string, stat *stat_freebsd11_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys mknod(path string, mode uint32, dev int) (err error) +//sys mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys stat(path string, stat *stat_freebsd11_t) (err error) +//sys statfs(path string, stat *statfs_freebsd11_t) (err error) +//sys statfs_freebsd12(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdents +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go new file mode 100644 index 0000000..21e0395 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go new file mode 100644 index 0000000..9c945a6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go new file mode 100644 index 0000000..5cd6243 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -0,0 +1,52 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go new file mode 100644 index 0000000..a318054 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go new file mode 100644 index 0000000..7e429ab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -0,0 +1,1771 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Linux system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "encoding/binary" + "net" + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) +//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) + +func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) { + if pathname == "" { + return fanotifyMark(fd, flags, mask, dirFd, nil) + } + p, err := BytePtrFromString(pathname) + if err != nil { + return err + } + return fanotifyMark(fd, flags, mask, dirFd, p) +} + +//sys fchmodat(dirfd int, path string, mode uint32) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior + // and check the flags. Otherwise the mode would be applied to the symlink + // destination which is not what the user expects. + if flags&^AT_SYMLINK_NOFOLLOW != 0 { + return EINVAL + } else if flags&AT_SYMLINK_NOFOLLOW != 0 { + return EOPNOTSUPP + } + return fchmodat(dirfd, path, mode) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req uint, value int) error { + v := int32(value) + return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) +} + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetRTCTime(fd int, value *RTCTime) error { + err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetRTCTime(fd int) (*RTCTime, error) { + var value RTCTime + err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) + +func Link(oldpath string, newpath string) (err error) { + return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0) +} + +func Mkdir(path string, mode uint32) (err error) { + return Mkdirat(AT_FDCWD, path, mode) +} + +func Mknod(path string, mode uint32, dev int) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + return openat(dirfd, path, flags|O_LARGEFILE, mode) +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) + +func Readlink(path string, buf []byte) (n int, err error) { + return Readlinkat(AT_FDCWD, path, buf) +} + +func Rename(oldpath string, newpath string) (err error) { + return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath) +} + +func Rmdir(path string) error { + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) +} + +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) + +func Symlink(oldpath string, newpath string) (err error) { + return Symlinkat(oldpath, AT_FDCWD, newpath) +} + +func Unlink(path string) error { + return Unlinkat(AT_FDCWD, path, 0) +} + +//sys Unlinkat(dirfd int, path string, flags int) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + var ts [2]Timespec + ts[0] = NsecToTimespec(TimevalToNsec(tv[0])) + ts[1] = NsecToTimespec(TimevalToNsec(tv[1])) + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // If the utimensat syscall isn't available (utimensat was added to Linux + // in 2.6.22, Released, 8 July 2007) then fall back to utimes + var tv [2]Timeval + for i := 0; i < 2; i++ { + tv[i] = NsecToTimeval(TimespecToNsec(ts[i])) + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func Futimesat(dirfd int, path string, tv []Timeval) error { + if tv == nil { + return futimesat(dirfd, path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Futimes(fd int, tv []Timeval) (err error) { + // Believe it or not, this is the best we can do on Linux + // (and is what glibc does). + return Utimes("/proc/self/fd/"+itoa(fd), tv) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w & mask) +} + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { + if w.StopSignal() != SIGTRAP { + return -1 + } + return int(w>>shift) >> 8 +} + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +func Mkfifo(path string, mode uint32) error { + return Mknod(path, mode|S_IFIFO, 0) +} + +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets. +type SockaddrLinklayer struct { + Protocol uint16 + Ifindex int + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]byte + raw RawSockaddrLinklayer +} + +func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_PACKET + sa.raw.Protocol = sa.Protocol + sa.raw.Ifindex = int32(sa.Ifindex) + sa.raw.Hatype = sa.Hatype + sa.raw.Pkttype = sa.Pkttype + sa.raw.Halen = sa.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil +} + +// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets. +type SockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 + raw RawSockaddrNetlink +} + +func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_NETLINK + sa.raw.Pad = sa.Pad + sa.raw.Pid = sa.Pid + sa.raw.Groups = sa.Groups + return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil +} + +// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the HCI protocol. +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + +// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the L2CAP protocol. +type SockaddrL2 struct { + PSM uint16 + CID uint16 + Addr [6]uint8 + AddrType uint8 + raw RawSockaddrL2 +} + +func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) + psm[0] = byte(sa.PSM) + psm[1] = byte(sa.PSM >> 8) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] + } + cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) + cid[0] = byte(sa.CID) + cid[1] = byte(sa.CID >> 8) + sa.raw.Bdaddr_type = sa.AddrType + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil +} + +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > 13 { + return nil, 0, EINVAL + } + if len(sa.Name) > 63 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + typ, err := ByteSliceFromString(sa.Type) + if err != nil { + return nil, 0, err + } + name, err := ByteSliceFromString(sa.Name) + if err != nil { + return nil, 0, err + } + + copy(sa.raw.Type[:], typ) + copy(sa.raw.Name[:], name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +type SockaddrXDP struct { + Flags uint16 + Ifindex uint32 + QueueID uint32 + SharedUmemFD uint32 + raw RawSockaddrXDP +} + +func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_XDP + sa.raw.Flags = sa.Flags + sa.raw.Ifindex = sa.Ifindex + sa.raw.Queue_id = sa.QueueID + sa.raw.Shared_umem_fd = sa.SharedUmemFD + + return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil +} + +// This constant mirrors the #define of PX_PROTO_OE in +// linux/if_pppox.h. We're defining this by hand here instead of +// autogenerating through mkerrors.sh because including +// linux/if_pppox.h causes some declaration conflicts with other +// includes (linux/if_pppox.h includes linux/in.h, which conflicts +// with netinet/in.h). Given that we only need a single zero constant +// out of that file, it's cleaner to just define it by hand here. +const px_proto_oe = 0 + +type SockaddrPPPoE struct { + SID uint16 + Remote net.HardwareAddr + Dev string + raw RawSockaddrPPPoX +} + +func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { + if len(sa.Remote) != 6 { + return nil, 0, EINVAL + } + if len(sa.Dev) > IFNAMSIZ-1 { + return nil, 0, EINVAL + } + + *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX + // This next field is in host-endian byte order. We can't use the + // same unsafe pointer cast as above, because this value is not + // 32-bit aligned and some architectures don't allow unaligned + // access. + // + // However, the value of px_proto_oe is 0, so we can use + // encoding/binary helpers to write the bytes without worrying + // about the ordering. + binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe) + // This field is deliberately big-endian, unlike the previous + // one. The kernel expects SID to be in network byte order. + binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID) + copy(sa.raw[8:14], sa.Remote) + for i := 14; i < 14+IFNAMSIZ; i++ { + sa.raw[i] = 0 + } + copy(sa.raw[14:], sa.Dev) + return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_NETLINK: + pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) + sa := new(SockaddrNetlink) + sa.Family = pp.Family + sa.Pad = pp.Pad + sa.Pid = pp.Pid + sa.Groups = pp.Groups + return sa, nil + + case AF_PACKET: + pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa)) + sa := new(SockaddrLinklayer) + sa.Protocol = pp.Protocol + sa.Ifindex = int(pp.Ifindex) + sa.Hatype = pp.Hatype + sa.Pkttype = pp.Pkttype + sa.Halen = pp.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil + case AF_BLUETOOTH: + proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } + case AF_XDP: + pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa)) + sa := &SockaddrXDP{ + Flags: pp.Flags, + Ifindex: pp.Ifindex, + QueueID: pp.Queue_id, + SharedUmemFD: pp.Shared_umem_fd, + } + return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe { + return nil, EINVAL + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: net.HardwareAddr(pp[8:14]), + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { + var value Ucred + vallen := _Socklen(SizeofUcred) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + if err == ERANGE { + buf = make([]byte, vallen) + err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + } + if err != nil { + return "", err + } + } + return string(buf[:vallen-1]), nil +} + +func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { + var value TpacketStats + vallen := _Socklen(SizeofTpacketStats) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) { + var value TpacketStatsV3 + vallen := _Socklen(SizeofTpacketStatsV3) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a +// socket to filter incoming packets. See 'man 7 socket' for usage information. +func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error { + return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog)) +} + +func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error { + var p unsafe.Pointer + if len(filter) > 0 { + p = unsafe.Pointer(&filter[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter)) +} + +func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } + // receive at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(ptr) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } + // send at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +// BindToDevice binds the socket associated with fd to device. +func BindToDevice(fd int, device string) (err error) { + return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + +func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { + // The peek requests are machine-size oriented, so we wrap it + // to retrieve arbitrary-length data. + + // The ptrace syscall differs from glibc's ptrace. + // Peeks returns the word in *data, not as the return value. + + var buf [SizeofPtr]byte + + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // access (PEEKUSER warns that it might), but if we don't + // align our reads, we might straddle an unmapped page + // boundary and not get the bytes leading up to the page + // boundary. + n := 0 + if addr%SizeofPtr != 0 { + err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(out, buf[addr%SizeofPtr:]) + out = out[n:] + } + + // Remainder. + for len(out) > 0 { + // We use an internal buffer to guarantee alignment. + // It's not documented if this is necessary, but we're paranoid. + err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copied := copy(out, buf[0:]) + n += copied + out = out[copied:] + } + + return n, nil +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) +} + +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + +func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { + // As for ptracePeek, we need to align our accesses to deal + // with the possibility of straddling an invalid page. + + // Leading edge. + n := 0 + if addr%SizeofPtr != 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(buf[addr%SizeofPtr:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word) + if err != nil { + return 0, err + } + data = data[n:] + } + + // Interior. + for len(data) > SizeofPtr { + word := *((*uintptr)(unsafe.Pointer(&data[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += SizeofPtr + data = data[SizeofPtr:] + } + + // Trailing edge. + if len(data) > 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copy(buf[0:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += len(data) + } + + return n, nil +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) +} + +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + +func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +func PtraceSetOptions(pid int, options int) (err error) { + return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) +} + +func PtraceGetEventMsg(pid int) (msg uint, err error) { + var data _C_long + err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data))) + msg = uint(data) + return +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 0, uintptr(signal)) +} + +func PtraceSyscall(pid int, signal int) (err error) { + return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal)) +} + +func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } + +func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } + +func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } + +//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) + +func Reboot(cmd int) (err error) { + return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + return Getdents(fd, buf) +} + +//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + // Certain file systems get rather angry and EINVAL if you give + // them an empty string of data, rather than NULL. + if data == "" { + return mount(source, target, fstype, flags, nil) + } + datap, err := BytePtrFromString(data) + if err != nil { + return err + } + return mount(source, target, fstype, flags, datap) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// Sendto +// Recvfrom +// Socketpair + +/* + * Direct access + */ +//sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) +//sys Adjtimex(buf *Timex) (state int, err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys ClockGetres(clockid int32, res *Timespec) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) +//sys Close(fd int) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys DeleteModule(name string, flags int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sysnb EpollCreate1(flag int) (fd int, err error) +//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 +//sys Exit(code int) = SYS_EXIT_GROUP +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys FinitModule(fd int, params string, flags int) (err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) +//sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 +//sysnb Getpgid(pid int) (pgid int, err error) + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettid() (tid int) +//sys Getxattr(path string, attr string, dest []byte) (sz int, err error) +//sys InitModule(moduleImage []byte, params string) (err error) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) +//sysnb InotifyInit1(flags int) (fd int, err error) +//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) +//sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) +//sys MemfdCreate(name string, flags int) (fd int, err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) +//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 +//sys read(fd int, p []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) +//sys Setns(fd int, nstype int) (err error) + +// issue 1435. +// On linux Setuid and Setgid only affects the current thread, not the process. +// This does not match what most callers expect so we must return an error +// here rather than letting the caller think that the call succeeded. + +func Setuid(uid int) (err error) { + return EOPNOTSUPP +} + +func Setgid(uid int) (err error) { + return EOPNOTSUPP +} + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setxattr(path string, attr string, data []byte, flags int) (err error) +//sys Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4 +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Syncfs(fd int) (err error) +//sysnb Sysinfo(info *Sysinfo_t) (err error) +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 +//sys Unshare(flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys exitThread(code int) (err error) = SYS_EXIT +//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ +//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE + +// mmap varies by architecture; see syscall_linux_*.go. +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + var p unsafe.Pointer + if len(iovs) > 0 { + p = unsafe.Pointer(&iovs[0]) + } + + n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + +//sys faccessat(dirfd int, path string, mode uint32) (err error) + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { + return EINVAL + } + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + +/* + * Unimplemented + */ +// AfsSyscall +// Alarm +// ArchPrctl +// Brk +// Capget +// Capset +// ClockNanosleep +// ClockSettime +// Clone +// EpollCtlOld +// EpollPwait +// EpollWaitOld +// Execve +// Fork +// Futex +// GetKernelSyms +// GetMempolicy +// GetRobustList +// GetThreadArea +// Getitimer +// Getpmsg +// IoCancel +// IoDestroy +// IoGetevents +// IoSetup +// IoSubmit +// IoprioGet +// IoprioSet +// KexecLoad +// LookupDcookie +// Mbind +// MigratePages +// Mincore +// ModifyLdt +// Mount +// MovePages +// MqGetsetattr +// MqNotify +// MqOpen +// MqTimedreceive +// MqTimedsend +// MqUnlink +// Mremap +// Msgctl +// Msgget +// Msgrcv +// Msgsnd +// Nfsservctl +// Personality +// Pselect6 +// Ptrace +// Putpmsg +// Quotactl +// Readahead +// Readv +// RemapFilePages +// RestartSyscall +// RtSigaction +// RtSigpending +// RtSigprocmask +// RtSigqueueinfo +// RtSigreturn +// RtSigsuspend +// RtSigtimedwait +// SchedGetPriorityMax +// SchedGetPriorityMin +// SchedGetparam +// SchedGetscheduler +// SchedRrGetInterval +// SchedSetparam +// SchedYield +// Security +// Semctl +// Semget +// Semop +// Semtimedop +// SetMempolicy +// SetRobustList +// SetThreadArea +// SetTidAddress +// Shmat +// Shmctl +// Shmdt +// Shmget +// Sigaltstack +// Swapoff +// Swapon +// Sysfs +// TimerCreate +// TimerDelete +// TimerGetoverrun +// TimerGettime +// TimerSettime +// Timerfd +// Tkill (obsolete) +// Tuxcall +// Umount2 +// Uselib +// Utimensat +// Vfork +// Vhangup +// Vserver +// Waitid +// _Sysctl diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go new file mode 100644 index 0000000..e2f8cf6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -0,0 +1,386 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP) +// so that go vet can check that they are correct. + +// +build 386,linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) +//sys Pause() (err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +// On x86 Linux, all the socket calls go through an extra indirection, +// I think because the 5-register system call interface can't handle +// the 6-argument calls like sendto and recvfrom. Instead the +// arguments to the underlying system call are the number below +// and a pointer to an array of uintptr. We hide the pointer in the +// socketcall assembly to avoid allocation on every system call. + +const ( + // see linux/net.h + _SOCKET = 1 + _BIND = 2 + _CONNECT = 3 + _LISTEN = 4 + _ACCEPT = 5 + _GETSOCKNAME = 6 + _GETPEERNAME = 7 + _SOCKETPAIR = 8 + _SEND = 9 + _RECV = 10 + _SENDTO = 11 + _RECVFROM = 12 + _SHUTDOWN = 13 + _SETSOCKOPT = 14 + _GETSOCKOPT = 15 + _SENDMSG = 16 + _RECVMSG = 17 + _ACCEPT4 = 18 + _RECVMMSG = 19 + _SENDMMSG = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e != 0 { + err = e + } + return +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socket(domain int, typ int, proto int) (fd int, err error) { + fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e != 0 { + err = e + } + return +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0) + if e != 0 { + err = e + } + return +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + if e != 0 { + err = e + } + return +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e != 0 { + err = e + } + return +} + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Listen(s int, n int) (err error) { + _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Shutdown(s, how int) (err error) { + _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go new file mode 100644 index 0000000..87a3074 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -0,0 +1,190 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb inotifyInit() (fd int, err error) + +func InotifyInit() (fd int, err error) { + // First try inotify_init1, because Android's seccomp policy blocks the latter. + fd, err = InotifyInit1(0) + if err == ENOSYS { + fd, err = inotifyInit() + } + return +} + +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + // Use fstatat, because Android's seccomp policy blocks stat. + return Fstatat(AT_FDCWD, path, stat, 0) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + errno := gettimeofday(tv) + if errno != 0 { + return errno + } + return nil +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + errno := gettimeofday(&tv) + if errno != 0 { + return 0, errno + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Rip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 0000000..21a4946 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,13 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux +// +build !gccgo + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go new file mode 100644 index 0000000..3a3c37b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -0,0 +1,274 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,linux + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + // Try pipe2 first for Android O, then try pipe for kernel 2.6.23. + err = pipe2(&pp, 0) + if err == ENOSYS { + err = pipe(&pp) + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +// 64-bit file system and 32-bit uid calls +// (16-bit uid calls are not always supported in newer kernels) +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and arm_sync_file_range syscalls differ only in the + // order of their arguments. + return armSyncFileRange(fd, flags, off, n) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go new file mode 100644 index 0000000..cb20b15 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -0,0 +1,223 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go new file mode 100644 index 0000000..c26e6ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo + +package unix + +// SyscallNoError may be used instead of Syscall for syscalls that don't fail. +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) + +// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't +// fail. +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 0000000..070bd38 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo,386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 0000000..308eb7a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go new file mode 100644 index 0000000..aa7fc9e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -0,0 +1,20 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go new file mode 100644 index 0000000..b3b21ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -0,0 +1,222 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips64 mips64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +type stat_t struct { + Dev uint32 + Pad0 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad1 [3]uint32 + Size int64 + Atime uint32 + Atime_nsec uint32 + Mtime uint32 + Mtime_nsec uint32 + Ctime uint32 + Ctime_nsec uint32 + Blksize uint32 + Pad2 uint32 + Blocks int64 +} + +//sys fstat(fd int, st *stat_t) (err error) +//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys lstat(path string, st *stat_t) (err error) +//sys stat(path string, st *stat_t) (err error) + +func Fstat(fd int, s *Stat_t) (err error) { + st := &stat_t{} + err = fstat(fd, st) + fillStat_t(s, st) + return +} + +func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) { + st := &stat_t{} + err = fstatat(dirfd, path, st, flags) + fillStat_t(s, st) + return +} + +func Lstat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = lstat(path, st) + fillStat_t(s, st) + return +} + +func Stat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = stat(path, st) + fillStat_t(s, st) + return +} + +func fillStat_t(s *Stat_t, st *stat_t) { + s.Dev = st.Dev + s.Ino = st.Ino + s.Mode = st.Mode + s.Nlink = st.Nlink + s.Uid = st.Uid + s.Gid = st.Gid + s.Rdev = st.Rdev + s.Size = st.Size + s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)} + s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)} + s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)} + s.Blksize = st.Blksize + s.Blocks = st.Blocks +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 0000000..5144d4e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,234 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe() (p1 int, p2 int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go new file mode 100644 index 0000000..0a100b6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -0,0 +1,152 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 0000000..6230f64 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,226 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go new file mode 100644 index 0000000..f81dbdc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -0,0 +1,338 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build s390x,linux + +package unix + +import ( + "unsafe" +) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0. + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct. +// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in . +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} + r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// On s390x Linux, all the socket calls go through an extra indirection. +// The arguments to the underlying system call (SYS_SOCKETCALL) are the +// number below and a pointer to an array of uintptr. +const ( + // see linux/net.h + netSocket = 1 + netBind = 2 + netConnect = 3 + netListen = 4 + netAccept = 5 + netGetSockName = 6 + netGetPeerName = 7 + netSocketPair = 8 + netSend = 9 + netRecv = 10 + netSendTo = 11 + netRecvFrom = 12 + netShutdown = 13 + netSetSockOpt = 14 + netGetSockOpt = 15 + netSendMsg = 16 + netRecvMsg = 17 + netAccept4 = 18 + netRecvMMsg = 19 + netSendMMsg = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) { + args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) error { + args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socket(domain int, typ int, proto int) (int, error) { + args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)} + fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))} + _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { + args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)} + _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func Listen(s int, n int) error { + args := [2]uintptr{uintptr(s), uintptr(n)} + _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func Shutdown(s, how int) error { + args := [2]uintptr{uintptr(s), uintptr(how)} + _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 0000000..b695656 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,147 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build sparc64,linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go new file mode 100644 index 0000000..5240e16 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -0,0 +1,622 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// NetBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, CTL_QUERY) + qnode := Sysctlnode{Flags: SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err = sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes = make([]Sysctlnode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err = sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) (mib []_C_int, err error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, _C_int(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, EINVAL + } + } + + return mib, nil +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (fd1 int, fd2 int, err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { + var value Ptmget + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + runtime.KeepAlive(value) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// ____semctl13 +// __clone +// __fhopen40 +// __fhstat40 +// __fhstatvfs140 +// __fstat30 +// __getcwd +// __getfh30 +// __getlogin +// __lstat30 +// __mount50 +// __msgctl13 +// __msync13 +// __ntp_gettime30 +// __posix_chown +// __posix_fchown +// __posix_lchown +// __posix_rename +// __setlogin +// __shmctl13 +// __sigaction_sigtramp +// __sigaltstack14 +// __sigpending14 +// __sigprocmask14 +// __sigsuspend14 +// __sigtimedwait +// __stat30 +// __syscall +// __vfork14 +// _ksem_close +// _ksem_destroy +// _ksem_getvalue +// _ksem_init +// _ksem_open +// _ksem_post +// _ksem_trywait +// _ksem_unlink +// _ksem_wait +// _lwp_continue +// _lwp_create +// _lwp_ctl +// _lwp_detach +// _lwp_exit +// _lwp_getname +// _lwp_getprivate +// _lwp_kill +// _lwp_park +// _lwp_self +// _lwp_setname +// _lwp_setprivate +// _lwp_suspend +// _lwp_unpark +// _lwp_unpark_all +// _lwp_wait +// _lwp_wakeup +// _pset_bind +// _sched_getaffinity +// _sched_getparam +// _sched_setaffinity +// _sched_setparam +// acct +// aio_cancel +// aio_error +// aio_fsync +// aio_read +// aio_return +// aio_suspend +// aio_write +// break +// clock_getres +// clock_gettime +// clock_settime +// compat_09_ogetdomainname +// compat_09_osetdomainname +// compat_09_ouname +// compat_10_omsgsys +// compat_10_osemsys +// compat_10_oshmsys +// compat_12_fstat12 +// compat_12_getdirentries +// compat_12_lstat12 +// compat_12_msync +// compat_12_oreboot +// compat_12_oswapon +// compat_12_stat12 +// compat_13_sigaction13 +// compat_13_sigaltstack13 +// compat_13_sigpending13 +// compat_13_sigprocmask13 +// compat_13_sigreturn13 +// compat_13_sigsuspend13 +// compat_14___semctl +// compat_14_msgctl +// compat_14_shmctl +// compat_16___sigaction14 +// compat_16___sigreturn14 +// compat_20_fhstatfs +// compat_20_fstatfs +// compat_20_getfsstat +// compat_20_statfs +// compat_30___fhstat30 +// compat_30___fstat13 +// compat_30___lstat13 +// compat_30___stat13 +// compat_30_fhopen +// compat_30_fhstat +// compat_30_fhstatvfs1 +// compat_30_getdents +// compat_30_getfh +// compat_30_ntp_gettime +// compat_30_socket +// compat_40_mount +// compat_43_fstat43 +// compat_43_lstat43 +// compat_43_oaccept +// compat_43_ocreat +// compat_43_oftruncate +// compat_43_ogetdirentries +// compat_43_ogetdtablesize +// compat_43_ogethostid +// compat_43_ogethostname +// compat_43_ogetkerninfo +// compat_43_ogetpagesize +// compat_43_ogetpeername +// compat_43_ogetrlimit +// compat_43_ogetsockname +// compat_43_okillpg +// compat_43_olseek +// compat_43_ommap +// compat_43_oquota +// compat_43_orecv +// compat_43_orecvfrom +// compat_43_orecvmsg +// compat_43_osend +// compat_43_osendmsg +// compat_43_osethostid +// compat_43_osethostname +// compat_43_osetrlimit +// compat_43_osigblock +// compat_43_osigsetmask +// compat_43_osigstack +// compat_43_osigvec +// compat_43_otruncate +// compat_43_owait +// compat_43_stat43 +// execve +// extattr_delete_fd +// extattr_delete_file +// extattr_delete_link +// extattr_get_fd +// extattr_get_file +// extattr_get_link +// extattr_list_fd +// extattr_list_file +// extattr_list_link +// extattr_set_fd +// extattr_set_file +// extattr_set_link +// extattrctl +// fchroot +// fdatasync +// fgetxattr +// fktrace +// flistxattr +// fork +// fremovexattr +// fsetxattr +// fstatvfs1 +// fsync_range +// getcontext +// getitimer +// getvfsstat +// getxattr +// ktrace +// lchflags +// lchmod +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// lgetxattr +// lio_listio +// listxattr +// llistxattr +// lremovexattr +// lseek +// lsetxattr +// lutimes +// madvise +// mincore +// minherit +// modctl +// mq_close +// mq_getattr +// mq_notify +// mq_open +// mq_receive +// mq_send +// mq_setattr +// mq_timedreceive +// mq_timedsend +// mq_unlink +// mremap +// msgget +// msgrcv +// msgsnd +// nfssvc +// ntp_adjtime +// pmc_control +// pmc_get_info +// pollts +// preadv +// profil +// pselect +// pset_assign +// pset_create +// pset_destroy +// ptrace +// pwritev +// quotactl +// rasctl +// readv +// reboot +// removexattr +// sa_enable +// sa_preempt +// sa_register +// sa_setconcurrency +// sa_stacks +// sa_yield +// sbrk +// sched_yield +// semconfig +// semget +// semop +// setcontext +// setitimer +// setxattr +// shmat +// shmdt +// shmget +// sstk +// statvfs1 +// swapctl +// sysarch +// syscall +// timer_create +// timer_delete +// timer_getoverrun +// timer_gettime +// timer_settime +// undelete +// utrace +// uuidgen +// vadvise +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go new file mode 100644 index 0000000..24f74e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go new file mode 100644 index 0000000..6878bf7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go new file mode 100644 index 0000000..dbbfcf7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -0,0 +1,33 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go new file mode 100644 index 0000000..f343446 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go new file mode 100644 index 0000000..c8648ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -0,0 +1,416 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// OpenBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sort" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func nametomib(name string) (mib []_C_int, err error) { + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil + } + return nil, EINVAL +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofUvmexp { + return nil, EIO + } + return &u, nil +} + +//sysnb pipe(p *[2]_C_int) (err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrtable() (rtable int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setrtable(rtable int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// __getcwd +// __semctl +// __syscall +// __sysctl +// adjfreq +// break +// clock_getres +// clock_gettime +// clock_settime +// closefrom +// execve +// fcntl +// fhopen +// fhstat +// fhstatfs +// fork +// futimens +// getfh +// getgid +// getitimer +// getlogin +// getresgid +// getresuid +// getthrid +// ktrace +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// mincore +// minherit +// mount +// mquery +// msgctl +// msgget +// msgrcv +// msgsnd +// nfssvc +// nnpfspioctl +// preadv +// profil +// pwritev +// quotactl +// readv +// reboot +// renameat +// rfork +// sched_yield +// semget +// semop +// setgroups +// setitimer +// setsockopt +// shmat +// shmctl +// shmdt +// shmget +// sigaction +// sigaltstack +// sigpending +// sigprocmask +// sigreturn +// sigsuspend +// sysarch +// syscall +// threxit +// thrsigdivert +// thrsleep +// thrwakeup +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go new file mode 100644 index 0000000..d62da60 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go new file mode 100644 index 0000000..9a35334 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 0000000..5d812aa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,37 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go new file mode 100644 index 0000000..e478012 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -0,0 +1,737 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Solaris system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_solaris.go or syscall_unix.go. + +package unix + +import ( + "syscall" + "unsafe" +) + +// Implemented in runtime/syscall_solaris.go. +type syscallFunc uintptr + +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 + raw RawSockaddrDatalink +} + +//sysnb pipe(p *[2]_C_int) (n int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + n, err := pipe(&pp) + if n != 0 { + return err + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return nil +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + // Getcwd will return an error if it failed for any reason. + _, err = Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + // Check for error and sanity check group count. Newer versions of + // Solaris allow up to 1024 (NGROUPS_MAX). + if n < 0 || n > 1024 { + if err != nil { + return nil, err + } + return nil, EINVAL + } else if n == 0 { + return nil, nil + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if n == -1 { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // TODO(rsc): Can we use a single global basep for all calls? + return Getdents(fd, buf, new(uintptr)) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) { + var status _C_int + rpid, err := wait4(int32(pid), &status, options, rusage) + wpid := int(rpid) + if wpid == -1 { + return wpid, err + } + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return wpid, nil +} + +//sys gethostname(buf []byte) (n int, err error) + +func Gethostname() (name string, err error) { + var buf [MaxHostNameLen]byte + n, err := gethostname(buf[:]) + if n != 0 { + return "", err + } + n = clen(buf[:]) + if n < 1 { + return "", EFAULT + } + return string(buf[:n]), nil +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0) + if e1 != 0 { + return e1 + } + return nil +} + +//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error) + +func Futimesat(dirfd int, path string, tv []Timeval) error { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + if tv == nil { + return futimesat(dirfd, pathp, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// Solaris doesn't have an futimes function because it allows NULL to be +// specified as the path for futimesat. However, Go doesn't like +// NULL-style string interfaces, so this simple wrapper is provided. +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimesat(fd, nil, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // Assume path ends at NUL. + // This is not technically the Solaris semantics for + // abstract Unix domain sockets -- they are supposed + // to be uninterpreted fixed-size binary blobs -- but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Accrightslen) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys acct(path *byte) (err error) + +func Acct(path string) (err error) { + if len(path) == 0 { + // Assume caller wants to disable accounting. + return acct(nil) + } + + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + return acct(pathp) +} + +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + +/* + * Expose the ioctl function + */ + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +func IoctlSetInt(fd int, req uint, value int) (err error) { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermio(fd int, req uint) (*Termio, error) { + var value Termio + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Creat(path string, mode uint32) (fd int, err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) +//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgid int, err error) +//sys Geteuid() (euid int) +//sys Getegid() (egid int) +//sys Getppid() (ppid int) +//sys Getpriority(which int, who int) (n int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Setuid(uid int) (err error) +//sys Shutdown(s int, how int) (err error) = libsocket.shutdown +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Sync() (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sys Truncate(path string, length int64) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = libc.umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair +//sys write(fd int, p []byte) (n int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go new file mode 100644 index 0000000..91c32dd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -0,0 +1,23 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,solaris + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go new file mode 100644 index 0000000..3de3756 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -0,0 +1,431 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import ( + "bytes" + "sort" + "sync" + "syscall" + "unsafe" +) + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +// Lutimes sets the access and modification times tv on path. If path refers to +// a symlink, it is not dereferenced and the timestamps are set on the symlink. +// If tv is nil, the access and modification times are set to the current time. +// Otherwise tv must contain exactly 2 elements, with access time as the first +// element and modification time as the second element. +func Lutimes(path string, tv []Timeval) error { + if tv == nil { + return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW) + } + if len(tv) != 2 { + return EINVAL + } + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 0000000..1c70d1b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build !gccgo,!ppc64le,!ppc64 + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go new file mode 100644 index 0000000..86dc765 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -0,0 +1,24 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64le ppc64 +// +build !gccgo + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall(trap, a1, a2, a3) +} +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) +} +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall(trap, a1, a2, a3) +} +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 0000000..4a672f5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,82 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "time" + +// TimespecToNsec converts a Timespec value into a number of +// nanoseconds since the Unix epoch. +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +// NsecToTimespec takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timespec value. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + +// TimevalToNsec converts a Timeval value into a number of nanoseconds +// since the Unix epoch. +func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } + +// NsecToTimeval takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timeval value. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns ts as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns tv as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/unix/types_aix.go b/vendor/golang.org/x/sys/unix/types_aix.go new file mode 100644 index 0000000..25e8349 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_aix.go @@ -0,0 +1,236 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore +// +build aix + +/* +Input to cgo -godefs. See also mkerrors.sh and mkall.sh +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + + +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +type off64 C.off64_t +type off C.off_t +type Mode_t C.mode_t + +// Time + +type Timespec C.struct_timespec + +type StTimespec C.struct_st_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Timex C.struct_timex + +type Time_t C.time_t + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +type Timezone C.struct_timezone + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit64 + +type Pid_t C.pid_t + +type _Gid_t C.gid_t + +type dev_t C.dev_t + +// Files + +type Stat_t C.struct_stat + +type StatxTimestamp C.struct_statx_timestamp + +type Statx_t C.struct_statx + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Cmsghdr C.struct_cmsghdr + +type ICMPv6Filter C.struct_icmp6_filter + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type Linger C.struct_linger + +type Msghdr C.struct_msghdr + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr +) + +type IfMsgHdr C.struct_if_msghdr + +// Misc + +type FdSet C.fd_set + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +type Sigset_t C.sigset_t + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +//poll + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +//flock_t + +type Flock_t C.struct_flock64 + +// Statfs + +type Fsid_t C.struct_fsid_t +type Fsid64_t C.struct_fsid64_t + +type Statfs_t C.struct_statfs + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go new file mode 100644 index 0000000..155c2e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_darwin.go @@ -0,0 +1,283 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define __DARWIN_UNIX03 0 +#define KERNEL +#define _DARWIN_USE_64_BIT_INODE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat64 + +type Statfs_t C.struct_statfs64 + +type Flock_t C.struct_flock + +type Fstore_t C.struct_fstore + +type Radvisory_t C.struct_radvisory + +type Fbootstraptransfer_t C.struct_fbootstraptransfer + +type Log2phys_t C.struct_log2phys + +type Fsid C.struct_fsid + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet4Pktinfo C.struct_in_pktinfo + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2 + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfmaMsghdr2 C.struct_ifma_msghdr2 + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// uname + +type Utsname C.struct_utsname + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go new file mode 100644 index 0000000..3365dd7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -0,0 +1,263 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.struct_fsid + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go new file mode 100644 index 0000000..7470798 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -0,0 +1,356 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define _WANT_FREEBSD11_STAT 1 +#define _WANT_FREEBSD11_STATFS 1 +#define _WANT_FREEBSD11_DIRENT 1 +#define _WANT_FREEBSD11_KEVENT 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +// This structure is a duplicate of if_data on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_data8 { + u_char ifi_type; + u_char ifi_physical; + u_char ifi_addrlen; + u_char ifi_hdrlen; + u_char ifi_link_state; + u_char ifi_spare_char1; + u_char ifi_spare_char2; + u_char ifi_datalen; + u_long ifi_mtu; + u_long ifi_metric; + u_long ifi_baudrate; + u_long ifi_ipackets; + u_long ifi_ierrors; + u_long ifi_opackets; + u_long ifi_oerrors; + u_long ifi_collisions; + u_long ifi_ibytes; + u_long ifi_obytes; + u_long ifi_imcasts; + u_long ifi_omcasts; + u_long ifi_iqdrops; + u_long ifi_noproto; + u_long ifi_hwassist; +// FIXME: these are now unions, so maybe need to change definitions? +#undef ifi_epoch + time_t ifi_epoch; +#undef ifi_lastchange + struct timeval ifi_lastchange; +}; + +// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_msghdr8 { + u_short ifm_msglen; + u_char ifm_version; + u_char ifm_type; + int ifm_addrs; + int ifm_flags; + u_short ifm_index; + struct if_data8 ifm_data; +}; +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +const ( + _statfsVersion = C.STATFS_VERSION + _dirblksiz = C.DIRBLKSIZ +) + +type Stat_t C.struct_stat + +type stat_freebsd11_t C.struct_freebsd11_stat + +type Statfs_t C.struct_statfs + +type statfs_freebsd11_t C.struct_freebsd11_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type dirent_freebsd11 C.struct_freebsd11_dirent + +type Fsid C.struct_fsid + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Advice to Fadvise + +const ( + FADV_NORMAL = C.POSIX_FADV_NORMAL + FADV_RANDOM = C.POSIX_FADV_RANDOM + FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL + FADV_WILLNEED = C.POSIX_FADV_WILLNEED + FADV_DONTNEED = C.POSIX_FADV_DONTNEED + FADV_NOREUSE = C.POSIX_FADV_NOREUSE +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPMreqn C.struct_ip_mreqn + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPMreqn = C.sizeof_struct_ip_mreqn + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent_freebsd11 + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + sizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfMsghdr = C.sizeof_struct_if_msghdr8 + sizeofIfData = C.sizeof_struct_if_data + SizeofIfData = C.sizeof_struct_if_data8 + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type ifMsghdr C.struct_if_msghdr + +type IfMsghdr C.struct_if_msghdr8 + +type ifData C.struct_if_data + +type IfData C.struct_if_data8 + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfZbuf = C.sizeof_struct_bpf_zbuf + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr + SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfZbuf C.struct_bpf_zbuf + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfZbufHeader C.struct_bpf_zbuf_header + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLINIGNEOF = C.POLLINIGNEOF + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Capabilities + +type CapRights C.struct_cap_rights + +// Uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go new file mode 100644 index 0000000..2dd4f95 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_netbsd.go @@ -0,0 +1,289 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.fsid_t + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Advice to Fadvise + +const ( + FADV_NORMAL = C.POSIX_FADV_NORMAL + FADV_RANDOM = C.POSIX_FADV_RANDOM + FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL + FADV_WILLNEED = C.POSIX_FADV_WILLNEED + FADV_DONTNEED = C.POSIX_FADV_DONTNEED + FADV_NOREUSE = C.POSIX_FADV_NOREUSE +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +type Mclpool C.struct_mclpool + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfTimeval C.struct_bpf_timeval + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +type Ptmget C.struct_ptmget + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Sysctl + +type Sysctlnode C.struct_sysctlnode + +// Uname + +type Utsname C.struct_utsname + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go new file mode 100644 index 0000000..8aafbe4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -0,0 +1,282 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.fsid_t + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +type Mclpool C.struct_mclpool + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfTimeval C.struct_bpf_timeval + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Signal Sets + +type Sigset_t C.sigset_t + +// Uname + +type Utsname C.struct_utsname + +// Uvmexp + +const SizeofUvmexp = C.sizeof_struct_uvmexp + +type Uvmexp C.struct_uvmexp + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go new file mode 100644 index 0000000..2b716f9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -0,0 +1,266 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +// These defines ensure that builds done on newer versions of Solaris are +// backwards-compatible with older versions of Solaris and +// OpenSolaris-based derivatives. +#define __USE_SUNOS_SOCKETS__ // msghdr +#define __USE_LEGACY_PROTOTYPES__ // iovec +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX + MaxHostNameLen = C.MAXHOSTNAMELEN +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +// Filesystems + +type _Fsblkcnt_t C.fsblkcnt_t + +type Statvfs_t C.struct_statvfs + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Select + +type FdSet C.fd_set + +// Misc + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_EACCESS = C.AT_EACCESS +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfTimeval C.struct_bpf_timeval + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 0000000..30c1d71 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,240 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } else { + return unsafe.Pointer(_zero) + } +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 0000000..4b7b965 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1372 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 0000000..ed04fd1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1373 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go new file mode 100644 index 0000000..3b39d74 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x8008427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc0086924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6981 + SIOCRSLVMULTI = 0xc008693b + SIOCSDRVSPEC = 0x801c697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40087458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x20 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go new file mode 100644 index 0000000..8fe5547 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go new file mode 100644 index 0000000..7a97777 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -0,0 +1,1783 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go new file mode 100644 index 0000000..6d56d8a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go new file mode 100644 index 0000000..bbe6089 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -0,0 +1,1650 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x21 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x23 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x22 + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DEFAULTBUFSIZE = 0x1000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MAX_CLONES = 0x80 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DBF = 0xf + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa + EVFILT_MARKER = 0xf + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xa + EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_NODATA = 0x1000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTEXIT_LWP = 0x10000 + EXTEXIT_PROC = 0x0 + EXTEXIT_SETINT = 0x1 + EXTEXIT_SIMPLE = 0x0 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x118e72 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NPOLLING = 0x100000 + IFF_OACTIVE = 0x400 + IFF_OACTIVE_COMPAT = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_POLLING = 0x10000 + IFF_POLLING_COMPAT = 0x10000 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SMART = 0x20 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xf3 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SKIP = 0x39 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UNKNOWN = 0x102 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PKTOPTIONS = 0x34 + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_RESETLOG = 0x37 + IP_FW_X = 0x31 + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CONTROL_END = 0xb + MADV_CONTROL_START = 0xa + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_INVAL = 0xa + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SETMAP = 0xb + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_NOCORE = 0x20000 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_NOSYNC = 0x800 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SIZEALIGN = 0x40000 + MAP_STACK = 0x400 + MAP_TRYFIXED = 0x10000 + MAP_VPAGETABLE = 0x2000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x20 + MNT_CMDFLAGS = 0xf0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x4 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_TRIM = 0x1000000 + MNT_UPDATE = 0x10000 + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0xf1f0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x1000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FBLOCKING = 0x10000 + MSG_FMASK = 0xffff0000 + MSG_FNONBLOCKING = 0x20000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_SYNC = 0x800 + MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x20000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x8000000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FAPPEND = 0x100000 + O_FASYNCWRITE = 0x800000 + O_FBLOCKING = 0x40000 + O_FMASK = 0xfc0000 + O_FNONBLOCKING = 0x80000 + O_FOFFSET = 0x200000 + O_FSYNC = 0x80 + O_FSYNCWRITE = 0x400000 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0xb + RTAX_MPLS1 = 0x8 + RTAX_MPLS2 = 0x9 + RTAX_MPLS3 = 0xa + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_MPLS1 = 0x100 + RTA_MPLS2 = 0x200 + RTA_MPLS3 = 0x400 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPLSOPS = 0x1000000 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x6 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_IWCAPSEGS = 0x400 + RTV_IWMAXSEGS = 0x200 + RTV_MSL = 0x100 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCADDRT = 0x8040720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691b + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDELRT = 0x8040720b + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8118691d + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc0206926 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPOLLCPU = 0xc020697e + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFTSOLEN = 0xc0206980 + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFPOLLCPU = 0x8020697d + SIOCSIFTSOLEN = 0x8020697f + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDSPACE = 0x100a + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_FASTKEEP = 0x80 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x20 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0x100 + TCP_MIN_WINSHIFT = 0x5 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_SIGNATURE_ENABLE = 0x10 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCISPTMASTER = 0x20007455 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VCHECKPT = 0x13 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EASYNC = syscall.Errno(0x63) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x63) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEDIUM = syscall.Errno(0x5d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUNUSED94 = syscall.Errno(0x5e) + EUNUSED95 = syscall.Errno(0x5f) + EUNUSED96 = syscall.Errno(0x60) + EUNUSED97 = syscall.Errno(0x61) + EUNUSED98 = syscall.Errno(0x62) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCKPT = syscall.Signal(0x21) + SIGCKPTEXIT = syscall.Signal(0x22) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {94, "EUNUSED94", "unknown error: 94"}, + {95, "EUNUSED95", "unknown error: 95"}, + {96, "EUNUSED96", "unknown error: 96"}, + {97, "EUNUSED97", "unknown error: 97"}, + {98, "EUNUSED98", "unknown error: 98"}, + {99, "ELAST", "unknown error: 99"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go new file mode 100644 index 0000000..d2bbaab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -0,0 +1,1793 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go new file mode 100644 index 0000000..4f8db78 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go new file mode 100644 index 0000000..53e5de6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -0,0 +1,1802 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go new file mode 100644 index 0000000..d4a192f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go new file mode 100644 index 0000000..9e99d67 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -0,0 +1,2835 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + X86_FXSR_MAGIC = 0x0 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go new file mode 100644 index 0000000..e3091f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -0,0 +1,2835 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go new file mode 100644 index 0000000..a75dfeb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -0,0 +1,2841 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFDPIC = 0x1f + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go new file mode 100644 index 0000000..393ad7c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -0,0 +1,2826 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ESR_MAGIC = 0x45535201 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FPSIMD_MAGIC = 0x46508001 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SVE_MAGIC = 0x53564501 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 0000000..ba1beb9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go new file mode 100644 index 0000000..efba3e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go new file mode 100644 index 0000000..d3f6e90 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 0000000..7275cd8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go new file mode 100644 index 0000000..7586a13 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -0,0 +1,2897 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go new file mode 100644 index 0000000..b861ec7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -0,0 +1,2897 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 0000000..a321ec2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,2822 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go new file mode 100644 index 0000000..f6c9916 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -0,0 +1,2895 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR = 0x3 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR = 0x6 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TE_ABORT_RAND = 0x5011 + PTRACE_TRACEME = 0x0 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 0000000..c1e95e2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,2891 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x400000 + EFD_NONBLOCK = 0x4000 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + EMT_TAGOVF = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x400000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x400000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x4000 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SPARC_DETACH = 0xb + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x6 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c + SCM_TIMESTAMPNS = 0x21 + SCM_TXTIME = 0x3f + SCM_WIFI_STATUS = 0x25 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x400000 + SFD_NONBLOCK = 0x4000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x400000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x4000 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUSY_POLL = 0x30 + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x33 + SO_INCOMING_NAPI_ID = 0x3a + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_MEMINFO = 0x39 + SO_NOFCS = 0x27 + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERGROUPS = 0x3d + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVTIMEO = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TXTIME = 0x3f + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x25 + SO_ZEROCOPY = 0x3e + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285443 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGPTPEER = 0x20007489 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSISO7816 = 0xc0285444 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x73) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + EROFS = syscall.Errno(0x1e) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x1d) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "cannot assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "transport endpoint is already connected"}, + {57, "ENOTCONN", "transport endpoint is not connected"}, + {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {59, "ETOOMANYREFS", "too many references: cannot splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale file handle"}, + {71, "EREMOTE", "object is remote"}, + {72, "ENOSTR", "device not a stream"}, + {73, "ETIME", "timer expired"}, + {74, "ENOSR", "out of streams resources"}, + {75, "ENOMSG", "no message of desired type"}, + {76, "EBADMSG", "bad message"}, + {77, "EIDRM", "identifier removed"}, + {78, "EDEADLK", "resource deadlock avoided"}, + {79, "ENOLCK", "no locks available"}, + {80, "ENONET", "machine is not on the network"}, + {81, "ERREMOTE", "unknown error 81"}, + {82, "ENOLINK", "link has been severed"}, + {83, "EADV", "advertise error"}, + {84, "ESRMNT", "srmount error"}, + {85, "ECOMM", "communication error on send"}, + {86, "EPROTO", "protocol error"}, + {87, "EMULTIHOP", "multihop attempted"}, + {88, "EDOTDOT", "RFS specific error"}, + {89, "EREMCHG", "remote address changed"}, + {90, "ENOSYS", "function not implemented"}, + {91, "ESTRPIPE", "streams pipe error"}, + {92, "EOVERFLOW", "value too large for defined data type"}, + {93, "EBADFD", "file descriptor in bad state"}, + {94, "ECHRNG", "channel number out of range"}, + {95, "EL2NSYNC", "level 2 not synchronized"}, + {96, "EL3HLT", "level 3 halted"}, + {97, "EL3RST", "level 3 reset"}, + {98, "ELNRNG", "link number out of range"}, + {99, "EUNATCH", "protocol driver not attached"}, + {100, "ENOCSI", "no CSI structure available"}, + {101, "EL2HLT", "level 2 halted"}, + {102, "EBADE", "invalid exchange"}, + {103, "EBADR", "invalid request descriptor"}, + {104, "EXFULL", "exchange full"}, + {105, "ENOANO", "no anode"}, + {106, "EBADRQC", "invalid request code"}, + {107, "EBADSLT", "invalid slot"}, + {108, "EDEADLOCK", "file locking deadlock error"}, + {109, "EBFONT", "bad font file format"}, + {110, "ELIBEXEC", "cannot exec a shared library directly"}, + {111, "ENODATA", "no data available"}, + {112, "ELIBBAD", "accessing a corrupted shared library"}, + {113, "ENOPKG", "package not installed"}, + {114, "ELIBACC", "can not access a needed shared library"}, + {115, "ENOTUNIQ", "name not unique on network"}, + {116, "ERESTART", "interrupted system call should be restarted"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {123, "ELIBMAX", "attempting to link in too many shared libraries"}, + {124, "ELIBSCN", ".lib section in a.out corrupted"}, + {125, "ENOMEDIUM", "no medium found"}, + {126, "EMEDIUMTYPE", "wrong medium type"}, + {127, "ECANCELED", "operation canceled"}, + {128, "ENOKEY", "required key not available"}, + {129, "EKEYEXPIRED", "key has expired"}, + {130, "EKEYREVOKED", "key has been revoked"}, + {131, "EKEYREJECTED", "key was rejected by service"}, + {132, "EOWNERDEAD", "owner died"}, + {133, "ENOTRECOVERABLE", "state not recoverable"}, + {134, "ERFKILL", "operation not possible due to RF-kill"}, + {135, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGLOST", "power failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go new file mode 100644 index 0000000..78cc04e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -0,0 +1,1772 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + EN_SW_CTL_INF = 0x1000 + EN_SW_CTL_PREC = 0x300 + EN_SW_CTL_ROUND = 0xc00 + EN_SW_DATACHAIN = 0x80 + EN_SW_DENORM = 0x2 + EN_SW_INVOP = 0x1 + EN_SW_OVERFLOW = 0x8 + EN_SW_PRECLOSS = 0x20 + EN_SW_UNDERFLOW = 0x10 + EN_SW_ZERODIV = 0x4 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go new file mode 100644 index 0000000..92185e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go new file mode 100644 index 0000000..373ad45 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -0,0 +1,1751 @@ +// mkerrors.sh -marm +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -marm _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PRI_IOFLUSH = 0x7c + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x48087446 + TIOCPTSNAME = 0x48087448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go new file mode 100644 index 0000000..fb6c604 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go new file mode 100644 index 0000000..d8be045 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -0,0 +1,1654 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_COPY = 0x4 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x1ff7 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_MASK = 0x3ff000 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x10f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_SOURCE = 0x20000 + RTF_STATIC = 0x800 + RTF_TUNNEL = 0x100000 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go new file mode 100644 index 0000000..1f9e8a2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -0,0 +1,1765 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x7ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MAXID = 0xc + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 0000000..79d5695 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1656 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +// +build arm,openbsd + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x3ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x70f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go new file mode 100644 index 0000000..22569db --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -0,0 +1,1532 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_802 = 0x12 + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_FILE = 0x1 + AF_GOSIP = 0x16 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1a + AF_INET_OFFLOAD = 0x1e + AF_IPX = 0x17 + AF_KEY = 0x1b + AF_LAT = 0xe + AF_LINK = 0x19 + AF_LOCAL = 0x1 + AF_MAX = 0x20 + AF_NBS = 0x7 + AF_NCA = 0x1c + AF_NIT = 0x11 + AF_NS = 0x6 + AF_OSI = 0x13 + AF_OSINET = 0x15 + AF_PACKET = 0x20 + AF_POLICY = 0x1d + AF_PUP = 0x4 + AF_ROUTE = 0x18 + AF_SNA = 0xb + AF_TRILL = 0x1f + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_X25 = 0x14 + ARPHRD_ARCNET = 0x7 + ARPHRD_ATM = 0x10 + ARPHRD_AX25 = 0x3 + ARPHRD_CHAOS = 0x5 + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_FC = 0x12 + ARPHRD_FRAME = 0xf + ARPHRD_HDLC = 0x11 + ARPHRD_IB = 0x20 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IPATM = 0x13 + ARPHRD_METRICOM = 0x17 + ARPHRD_TUNNEL = 0x1f + B0 = 0x0 + B110 = 0x3 + B115200 = 0x12 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B153600 = 0x13 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B230400 = 0x14 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x15 + B38400 = 0xf + B460800 = 0x16 + B4800 = 0xc + B50 = 0x1 + B57600 = 0x10 + B600 = 0x8 + B75 = 0x2 + B76800 = 0x11 + B921600 = 0x17 + B9600 = 0xd + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = -0x3fefbd89 + BIOCGDLTLIST32 = -0x3ff7bd89 + BIOCGETIF = 0x4020426b + BIOCGETLIF = 0x4078426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGRTIMEOUT32 = 0x4008427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = -0x7ffbbd90 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = -0x3ffbbd9a + BIOCSDLT = -0x7ffbbd8a + BIOCSETF = -0x7fefbd99 + BIOCSETF32 = -0x7ff7bd99 + BIOCSETIF = -0x7fdfbd94 + BIOCSETLIF = -0x7f87bd94 + BIOCSHDRCMPLT = -0x7ffbbd8b + BIOCSRTIMEOUT = -0x7fefbd86 + BIOCSRTIMEOUT32 = -0x7ff7bd86 + BIOCSSEESENT = -0x7ffbbd87 + BIOCSTCPF = -0x7fefbd8e + BIOCSUDPF = -0x7fefbd8d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_HIGHRES = 0x4 + CLOCK_LEVEL = 0xa + CLOCK_MONOTONIC = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x5 + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x3 + CLOCK_THREAD_CPUTIME_ID = 0x2 + CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + CSWTCH = 0x1a + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_BACNET_MS_TP = 0xa5 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FRELAY = 0x6b + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xa2 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_PPPD = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMPTY_SET = 0x0 + EMT_CPCOVF = 0x1 + EQUALITY_CHECK = 0x0 + EXTA = 0xe + EXTB = 0xf + FD_CLOEXEC = 0x1 + FD_NFDBITS = 0x40 + FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHALL = 0x1 + FLUSHDATA = 0x0 + FLUSHO = 0x2000 + F_ALLOCSP = 0xa + F_ALLOCSP64 = 0xa + F_BADFD = 0x2e + F_BLKSIZE = 0x13 + F_BLOCKS = 0x12 + F_CHKFL = 0x8 + F_COMPAT = 0x8 + F_DUP2FD = 0x9 + F_DUP2FD_CLOEXEC = 0x24 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 + F_FREESP = 0xb + F_FREESP64 = 0xb + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETXFL = 0x2d + F_HASREMOTELOCKS = 0x1a + F_ISSTREAM = 0xd + F_MANDDNY = 0x10 + F_MDACC = 0x20 + F_NODNY = 0x0 + F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 + F_PRIV = 0xf + F_QUOTACTL = 0x11 + F_RDACC = 0x1 + F_RDDNY = 0x1 + F_RDLCK = 0x1 + F_REVOKE = 0x19 + F_RMACC = 0x4 + F_RMDNY = 0x4 + F_RWACC = 0x3 + F_RWDNY = 0x3 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLK64_NBMAND = 0x2a + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETLK_NBMAND = 0x2a + F_SETOWN = 0x18 + F_SHARE = 0x28 + F_SHARE_NBMAND = 0x2b + F_UNLCK = 0x3 + F_UNLKSYS = 0x4 + F_UNSHARE = 0x29 + F_WRACC = 0x2 + F_WRDNY = 0x2 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFF_ADDRCONF = 0x80000 + IFF_ALLMULTI = 0x200 + IFF_ANYCAST = 0x400000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x7f203003b5a + IFF_COS_ENABLED = 0x200000000 + IFF_DEBUG = 0x4 + IFF_DEPRECATED = 0x40000 + IFF_DHCPRUNNING = 0x4000 + IFF_DUPLICATE = 0x4000000000 + IFF_FAILED = 0x10000000 + IFF_FIXEDMTU = 0x1000000000 + IFF_INACTIVE = 0x40000000 + IFF_INTELLIGENT = 0x400 + IFF_IPMP = 0x8000000000 + IFF_IPMP_CANTCHANGE = 0x10000000 + IFF_IPMP_INVALID = 0x1ec200080 + IFF_IPV4 = 0x1000000 + IFF_IPV6 = 0x2000000 + IFF_L3PROTECT = 0x40000000000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x800 + IFF_MULTI_BCAST = 0x1000 + IFF_NOACCEPT = 0x4000000 + IFF_NOARP = 0x80 + IFF_NOFAILOVER = 0x8000000 + IFF_NOLINKLOCAL = 0x20000000000 + IFF_NOLOCAL = 0x20000 + IFF_NONUD = 0x200000 + IFF_NORTEXCH = 0x800000 + IFF_NOTRAILERS = 0x20 + IFF_NOXMIT = 0x10000 + IFF_OFFLINE = 0x80000000 + IFF_POINTOPOINT = 0x10 + IFF_PREFERRED = 0x400000000 + IFF_PRIVATE = 0x8000 + IFF_PROMISC = 0x100 + IFF_ROUTER = 0x100000 + IFF_RUNNING = 0x40 + IFF_STANDBY = 0x20000000 + IFF_TEMPORARY = 0x800000000 + IFF_UNNUMBERED = 0x2000 + IFF_UP = 0x1 + IFF_VIRTUAL = 0x2000000000 + IFF_VRRP = 0x10000000000 + IFF_XRESOLV = 0x100000000 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6TO4 = 0xca + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_IPV4 = 0xc8 + IFT_IPV6 = 0xc9 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_AUTOCONF_MASK = 0xffff0000 + IN_AUTOCONF_NET = 0xa9fe0000 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_CLASSE_NET = 0xffffffff + IN_LOOPBACKNET = 0x7f + IN_PRIVATE12_MASK = 0xfff00000 + IN_PRIVATE12_NET = 0xac100000 + IN_PRIVATE16_MASK = 0xffff0000 + IN_PRIVATE16_NET = 0xc0a80000 + IN_PRIVATE8_MASK = 0xff000000 + IN_PRIVATE8_NET = 0xa000000 + IPPROTO_AH = 0x33 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x4 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_HELLO = 0x3f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_ND = 0x4d + IPPROTO_NONE = 0x3b + IPPROTO_OSPF = 0x59 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_UDP = 0x11 + IPV6_ADD_MEMBERSHIP = 0x9 + IPV6_BOUND_IF = 0x41 + IPV6_CHECKSUM = 0x18 + IPV6_DONTFRAG = 0x21 + IPV6_DROP_MEMBERSHIP = 0xa + IPV6_DSTOPTS = 0xf + IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00 + IPV6_FLOWINFO_TCLASS = 0xf00f + IPV6_HOPLIMIT = 0xc + IPV6_HOPOPTS = 0xe + IPV6_JOIN_GROUP = 0x9 + IPV6_LEAVE_GROUP = 0xa + IPV6_MULTICAST_HOPS = 0x7 + IPV6_MULTICAST_IF = 0x6 + IPV6_MULTICAST_LOOP = 0x8 + IPV6_NEXTHOP = 0xd + IPV6_PAD1_OPT = 0x0 + IPV6_PATHMTU = 0x25 + IPV6_PKTINFO = 0xb + IPV6_PREFER_SRC_CGA = 0x20 + IPV6_PREFER_SRC_CGADEFAULT = 0x10 + IPV6_PREFER_SRC_CGAMASK = 0x30 + IPV6_PREFER_SRC_COA = 0x2 + IPV6_PREFER_SRC_DEFAULT = 0x15 + IPV6_PREFER_SRC_HOME = 0x1 + IPV6_PREFER_SRC_MASK = 0x3f + IPV6_PREFER_SRC_MIPDEFAULT = 0x1 + IPV6_PREFER_SRC_MIPMASK = 0x3 + IPV6_PREFER_SRC_NONCGA = 0x10 + IPV6_PREFER_SRC_PUBLIC = 0x4 + IPV6_PREFER_SRC_TMP = 0x8 + IPV6_PREFER_SRC_TMPDEFAULT = 0x4 + IPV6_PREFER_SRC_TMPMASK = 0xc + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x13 + IPV6_RECVHOPOPTS = 0x14 + IPV6_RECVPATHMTU = 0x24 + IPV6_RECVPKTINFO = 0x12 + IPV6_RECVRTHDR = 0x16 + IPV6_RECVRTHDRDSTOPTS = 0x17 + IPV6_RECVTCLASS = 0x19 + IPV6_RTHDR = 0x10 + IPV6_RTHDRDSTOPTS = 0x11 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SEC_OPT = 0x22 + IPV6_SRC_PREFERENCES = 0x23 + IPV6_TCLASS = 0x26 + IPV6_UNICAST_HOPS = 0x5 + IPV6_UNSPEC_SRC = 0x42 + IPV6_USE_MIN_MTU = 0x20 + IPV6_V6ONLY = 0x27 + IP_ADD_MEMBERSHIP = 0x13 + IP_ADD_SOURCE_MEMBERSHIP = 0x17 + IP_BLOCK_SOURCE = 0x15 + IP_BOUND_IF = 0x41 + IP_BROADCAST = 0x106 + IP_BROADCAST_TTL = 0x43 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPINIT_IF = 0x45 + IP_DONTFRAG = 0x1b + IP_DONTROUTE = 0x105 + IP_DROP_MEMBERSHIP = 0x14 + IP_DROP_SOURCE_MEMBERSHIP = 0x18 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x10 + IP_MULTICAST_LOOP = 0x12 + IP_MULTICAST_TTL = 0x11 + IP_NEXTHOP = 0x19 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x9 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVSLLA = 0xa + IP_RECVTTL = 0xb + IP_RETOPTS = 0x8 + IP_REUSEADDR = 0x104 + IP_SEC_OPT = 0x22 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x16 + IP_UNSPEC_SRC = 0x42 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_ACCESS_DEFAULT = 0x6 + MADV_ACCESS_LWP = 0x7 + MADV_ACCESS_MANY = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80 + MAP_ALIGN = 0x200 + MAP_ANON = 0x100 + MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_INITDATA = 0x800 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TEXT = 0x400 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CTRUNC = 0x10 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_DUPCTRL = 0x800 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 0x10 + MSG_NOTIFICATION = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x20 + MSG_WAITALL = 0x40 + MSG_XPG4_2 = 0x8000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_OLDSYNC = 0x0 + MS_SYNC = 0x4 + M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENFAIL = -0x1 + OPOST = 0x1 + O_ACCMODE = 0x600003 + O_APPEND = 0x8 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DSYNC = 0x40 + O_EXCL = 0x400 + O_EXEC = 0x400000 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x4 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NOLINKS = 0x40000 + O_NONBLOCK = 0x80 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x8000 + O_SEARCH = 0x200000 + O_SIOCGIFCONF = -0x3ff796ec + O_SIOCGLIFCONF = -0x3fef9688 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + O_XATTR = 0x4000 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x3 + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_NUMBITS = 0x9 + RTA_SRC = 0x100 + RTF_BLACKHOLE = 0x1000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INDIRECT = 0x40000 + RTF_KERNEL = 0x80000 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTIRT = 0x10000 + RTF_PRIVATE = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SETSRC = 0x20000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTF_ZONE = 0x100000 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0xf + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_FREEADDR = 0x10 + RTM_GET = 0x4 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_VERSION = 0x3 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_AWARE = 0x1 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_RIGHTS = 0x1010 + SCM_TIMESTAMP = 0x1013 + SCM_UCRED = 0x1012 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIG2STR_MAX = 0x20 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDRT = -0x7fcf8df6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fdb96e0 + SIOCDELMULTI = -0x7fdf96ce + SIOCDELRT = -0x7fcf8df5 + SIOCDXARP = -0x7fff9658 + SIOCGARP = -0x3fdb96e1 + SIOCGDSTINFO = -0x3fff965c + SIOCGENADDR = -0x3fdf96ab + SIOCGENPSTATS = -0x3fdf96c7 + SIOCGETLSGCNT = -0x3fef8deb + SIOCGETNAME = 0x40107334 + SIOCGETPEER = 0x40107335 + SIOCGETPROP = -0x3fff8f44 + SIOCGETSGCNT = -0x3feb8deb + SIOCGETSYNC = -0x3fdf96d3 + SIOCGETVIFCNT = -0x3feb8dec + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fdf96f3 + SIOCGIFBRDADDR = -0x3fdf96e9 + SIOCGIFCONF = -0x3ff796a4 + SIOCGIFDSTADDR = -0x3fdf96f1 + SIOCGIFFLAGS = -0x3fdf96ef + SIOCGIFHWADDR = -0x3fdf9647 + SIOCGIFINDEX = -0x3fdf96a6 + SIOCGIFMEM = -0x3fdf96ed + SIOCGIFMETRIC = -0x3fdf96e5 + SIOCGIFMTU = -0x3fdf96ea + SIOCGIFMUXID = -0x3fdf96a8 + SIOCGIFNETMASK = -0x3fdf96e7 + SIOCGIFNUM = 0x40046957 + SIOCGIP6ADDRPOLICY = -0x3fff965e + SIOCGIPMSFILTER = -0x3ffb964c + SIOCGLIFADDR = -0x3f87968f + SIOCGLIFBINDING = -0x3f879666 + SIOCGLIFBRDADDR = -0x3f879685 + SIOCGLIFCONF = -0x3fef965b + SIOCGLIFDADSTATE = -0x3f879642 + SIOCGLIFDSTADDR = -0x3f87968d + SIOCGLIFFLAGS = -0x3f87968b + SIOCGLIFGROUPINFO = -0x3f4b9663 + SIOCGLIFGROUPNAME = -0x3f879664 + SIOCGLIFHWADDR = -0x3f879640 + SIOCGLIFINDEX = -0x3f87967b + SIOCGLIFLNKINFO = -0x3f879674 + SIOCGLIFMETRIC = -0x3f879681 + SIOCGLIFMTU = -0x3f879686 + SIOCGLIFMUXID = -0x3f87967d + SIOCGLIFNETMASK = -0x3f879683 + SIOCGLIFNUM = -0x3ff3967e + SIOCGLIFSRCOF = -0x3fef964f + SIOCGLIFSUBNET = -0x3f879676 + SIOCGLIFTOKEN = -0x3f879678 + SIOCGLIFUSESRC = -0x3f879651 + SIOCGLIFZONE = -0x3f879656 + SIOCGLOWAT = 0x40047303 + SIOCGMSFILTER = -0x3ffb964e + SIOCGPGRP = 0x40047309 + SIOCGSTAMP = -0x3fef9646 + SIOCGXARP = -0x3fff9659 + SIOCIFDETACH = -0x7fdf96c8 + SIOCILB = -0x3ffb9645 + SIOCLIFADDIF = -0x3f879691 + SIOCLIFDELND = -0x7f879673 + SIOCLIFGETND = -0x3f879672 + SIOCLIFREMOVEIF = -0x7f879692 + SIOCLIFSETND = -0x7f879671 + SIOCLOWER = -0x7fdf96d7 + SIOCSARP = -0x7fdb96e2 + SIOCSCTPGOPT = -0x3fef9653 + SIOCSCTPPEELOFF = -0x3ffb9652 + SIOCSCTPSOPT = -0x7fef9654 + SIOCSENABLESDP = -0x3ffb9649 + SIOCSETPROP = -0x7ffb8f43 + SIOCSETSYNC = -0x7fdf96d4 + SIOCSHIWAT = -0x7ffb8d00 + SIOCSIFADDR = -0x7fdf96f4 + SIOCSIFBRDADDR = -0x7fdf96e8 + SIOCSIFDSTADDR = -0x7fdf96f2 + SIOCSIFFLAGS = -0x7fdf96f0 + SIOCSIFINDEX = -0x7fdf96a5 + SIOCSIFMEM = -0x7fdf96ee + SIOCSIFMETRIC = -0x7fdf96e4 + SIOCSIFMTU = -0x7fdf96eb + SIOCSIFMUXID = -0x7fdf96a7 + SIOCSIFNAME = -0x7fdf96b7 + SIOCSIFNETMASK = -0x7fdf96e6 + SIOCSIP6ADDRPOLICY = -0x7fff965d + SIOCSIPMSFILTER = -0x7ffb964b + SIOCSLGETREQ = -0x3fdf96b9 + SIOCSLIFADDR = -0x7f879690 + SIOCSLIFBRDADDR = -0x7f879684 + SIOCSLIFDSTADDR = -0x7f87968e + SIOCSLIFFLAGS = -0x7f87968c + SIOCSLIFGROUPNAME = -0x7f879665 + SIOCSLIFINDEX = -0x7f87967a + SIOCSLIFLNKINFO = -0x7f879675 + SIOCSLIFMETRIC = -0x7f879680 + SIOCSLIFMTU = -0x7f879687 + SIOCSLIFMUXID = -0x7f87967c + SIOCSLIFNAME = -0x3f87967f + SIOCSLIFNETMASK = -0x7f879682 + SIOCSLIFPREFIX = -0x3f879641 + SIOCSLIFSUBNET = -0x7f879677 + SIOCSLIFTOKEN = -0x7f879679 + SIOCSLIFUSESRC = -0x7f879650 + SIOCSLIFZONE = -0x7f879655 + SIOCSLOWAT = -0x7ffb8cfe + SIOCSLSTAT = -0x7fdf96b8 + SIOCSMSFILTER = -0x7ffb964d + SIOCSPGRP = -0x7ffb8cf8 + SIOCSPROMISC = -0x7ffb96d0 + SIOCSQPTR = -0x3ffb9648 + SIOCSSDSTATS = -0x3fdf96d2 + SIOCSSESTATS = -0x3fdf96d1 + SIOCSXARP = -0x7fff965a + SIOCTMYADDR = -0x3ff79670 + SIOCTMYSITE = -0x3ff7966e + SIOCTONLINK = -0x3ff7966f + SIOCUPPER = -0x7fdf96d8 + SIOCX25RCV = -0x3fdf96c4 + SIOCX25TBL = -0x3fdf96c3 + SIOCX25XMT = -0x3fdf96c5 + SIOCXPROTO = 0x20007337 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NDELAY = 0x200000 + SOCK_NONBLOCK = 0x100000 + SOCK_RAW = 0x4 + SOCK_RDM = 0x5 + SOCK_SEQPACKET = 0x6 + SOCK_STREAM = 0x2 + SOCK_TYPE_MASK = 0xffff + SOL_FILTER = 0xfffc + SOL_PACKET = 0xfffd + SOL_ROUTE = 0xfffe + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ALL = 0x3f + SO_ALLZONES = 0x1014 + SO_ANON_MLP = 0x100a + SO_ATTACH_FILTER = 0x40000001 + SO_BAND = 0x4000 + SO_BROADCAST = 0x20 + SO_COPYOPT = 0x80000 + SO_DEBUG = 0x1 + SO_DELIM = 0x8000 + SO_DETACH_FILTER = 0x40000002 + SO_DGRAM_ERRIND = 0x200 + SO_DOMAIN = 0x100c + SO_DONTLINGER = -0x81 + SO_DONTROUTE = 0x10 + SO_ERROPT = 0x40000 + SO_ERROR = 0x1007 + SO_EXCLBIND = 0x1015 + SO_HIWAT = 0x10 + SO_ISNTTY = 0x800 + SO_ISTTY = 0x400 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOWAT = 0x20 + SO_MAC_EXEMPT = 0x100b + SO_MAC_IMPLICIT = 0x1016 + SO_MAXBLK = 0x100000 + SO_MAXPSZ = 0x8 + SO_MINPSZ = 0x4 + SO_MREADOFF = 0x80 + SO_MREADON = 0x40 + SO_NDELOFF = 0x200 + SO_NDELON = 0x100 + SO_NODELIM = 0x10000 + SO_OOBINLINE = 0x100 + SO_PROTOTYPE = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVPSH = 0x100d + SO_RCVTIMEO = 0x1006 + SO_READOPT = 0x1 + SO_RECVUCRED = 0x400 + SO_REUSEADDR = 0x4 + SO_SECATTR = 0x1011 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STRHOLD = 0x20000 + SO_TAIL = 0x200000 + SO_TIMESTAMP = 0x1013 + SO_TONSTOP = 0x2000 + SO_TOSTOP = 0x1000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_VRRP = 0x1017 + SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_ABORT_THRESHOLD = 0x11 + TCP_ANONPRIVBIND = 0x20 + TCP_CONN_ABORT_THRESHOLD = 0x13 + TCP_CONN_NOTIFY_THRESHOLD = 0x12 + TCP_CORK = 0x18 + TCP_EXCLBIND = 0x21 + TCP_INIT_CWND = 0x15 + TCP_KEEPALIVE = 0x8 + TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17 + TCP_KEEPALIVE_THRESHOLD = 0x16 + TCP_KEEPCNT = 0x23 + TCP_KEEPIDLE = 0x22 + TCP_KEEPINTVL = 0x24 + TCP_LINGER2 = 0x1c + TCP_MAXSEG = 0x2 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOTIFY_THRESHOLD = 0x10 + TCP_RECVDSTADDR = 0x14 + TCP_RTO_INITIAL = 0x19 + TCP_RTO_MAX = 0x1b + TCP_RTO_MIN = 0x1a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETSF = 0x5410 + TCSETSW = 0x540f + TCXONC = 0x5406 + TIOC = 0x5400 + TIOCCBRK = 0x747a + TIOCCDTR = 0x7478 + TIOCCILOOP = 0x746c + TIOCEXCL = 0x740d + TIOCFLUSH = 0x7410 + TIOCGETC = 0x7412 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x7414 + TIOCGPPS = 0x547d + TIOCGPPSEV = 0x547f + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5469 + TIOCGWINSZ = 0x5468 + TIOCHPCL = 0x7402 + TIOCKBOF = 0x5409 + TIOCKBON = 0x5408 + TIOCLBIC = 0x747e + TIOCLBIS = 0x747f + TIOCLGET = 0x747c + TIOCLSET = 0x747d + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMSET = 0x741a + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x7471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7473 + TIOCREMOTE = 0x741e + TIOCSBRK = 0x747b + TIOCSCTTY = 0x7484 + TIOCSDTR = 0x7479 + TIOCSETC = 0x7411 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIGNAL = 0x741f + TIOCSILOOP = 0x746d + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x7415 + TIOCSPPS = 0x547e + TIOCSSOFTCAR = 0x546a + TIOCSTART = 0x746e + TIOCSTI = 0x7417 + TIOCSTOP = 0x746f + TIOCSWINSZ = 0x5467 + TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCEOF = 0x8 + VCEOL = 0x9 + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VERASE2 = 0x11 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTATUS = 0x10 + VSTOP = 0x9 + VSUSP = 0xa + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WCONTFLG = 0xffff + WCONTINUED = 0x8 + WCOREFLG = 0x80 + WEXITED = 0x1 + WNOHANG = 0x40 + WNOWAIT = 0x80 + WOPTMASK = 0xcf + WRAP = 0x20000 + WSIGMASK = 0x7f + WSTOPFLG = 0x7f + WSTOPPED = 0x4 + WTRAPPED = 0x2 + WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x39) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x2f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x31) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOCKUNMAPPED = syscall.Errno(0x48) + ELOOP = syscall.Errno(0x5a) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTACTIVE = syscall.Errno(0x49) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTRECOVERABLE = syscall.Errno(0x3b) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x30) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0x3a) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMOTE = syscall.Errno(0x42) + ERESTART = syscall.Errno(0x5b) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCANCEL = syscall.Signal(0x24) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGFREEZE = syscall.Signal(0x22) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x29) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGJVM1 = syscall.Signal(0x27) + SIGJVM2 = syscall.Signal(0x28) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x25) + SIGLWP = syscall.Signal(0x21) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHAW = syscall.Signal(0x23) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWAITING = syscall.Signal(0x20) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) + SIGXRES = syscall.Signal(0x26) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, +} diff --git a/vendor/golang.org/x/sys/unix/zptrace386_linux.go b/vendor/golang.org/x/sys/unix/zptrace386_linux.go new file mode 100644 index 0000000..2d21c49 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptrace386_linux.go @@ -0,0 +1,80 @@ +// Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT. + +// +build linux +// +build 386 amd64 + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracearm_linux.go b/vendor/golang.org/x/sys/unix/zptracearm_linux.go new file mode 100644 index 0000000..faf23bb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracearm_linux.go @@ -0,0 +1,41 @@ +// Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT. + +// +build linux +// +build arm arm64 + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemips_linux.go b/vendor/golang.org/x/sys/unix/zptracemips_linux.go new file mode 100644 index 0000000..c431131 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemips_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT. + +// +build linux +// +build mips mips64 + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go new file mode 100644 index 0000000..dc3d6d3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT. + +// +build linux +// +build mipsle mips64le + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 0000000..79f6e05 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1450 @@ +// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc + +package unix + +/* +#include +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit64(int, uintptr_t); +int setrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 0000000..52802bf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1416 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage))) + wpid = Pid_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, e1 := callioctl(fd, int(req), arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, e1 := callfcntl(fd, cmd, uintptr(arg)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callacct(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchdir(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchroot(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, e1 := callclose(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, e1 := calldup(oldfd) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + callexit(code) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, e1 := callfchdir(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, e1 := callfchmod(fd, mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, e1 := callfdatasync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, e1 := callfsync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e1 := callgetpgid(pid) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := callgetpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := callgetpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := callgetppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, e1 := callgetpriority(which, who) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e1 := callgetsid(pid) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, e1 := callkill(pid, int(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, e1 := callsetpgid(pid, pgid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e1 := callsetsid() + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, e1 := callsetuid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, e1 := callsetgid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, e1 := callsetpriority(which, who, prio) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + callsync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, e1 := calltimes(uintptr(unsafe.Pointer(tms))) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := callumask(mask) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, e1 := calluname(uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlink(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, e1 := calldup2(oldfd, newfd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, e1 := callposix_fadvise64(fd, offset, length, advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, e1 := callfchown(fd, uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, e1 := callftruncate(fd, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := callgetegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := callgeteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := callgetgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := callgetuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, e1 := calllisten(s, n) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, e1 := callpause() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, e1 := callsetregid(rgid, egid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, e1 := callsetreuid(ruid, euid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, e1 := callshutdown(fd, how) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callbind(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list))) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e1 := callsocket(domain, typ, proto) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, e1 := callmunmap(addr, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, e1 := callmlockall(flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, e1 := callmunlockall() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, e1 := callpipe(uintptr(unsafe.Pointer(p))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, e1 := calltime(uintptr(unsafe.Pointer(t))) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, e1 := calllseek(fd, offset, whence) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, e1 := callmmap64(addr, length, prot, flags, fd, offset) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go new file mode 100644 index 0000000..a2b24e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -0,0 +1,1172 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build !gccgo + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fsync fsync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" + +//go:linkname libc_utimes libc_utimes +//go:linkname libc_utimensat libc_utimensat +//go:linkname libc_getcwd libc_getcwd +//go:linkname libc_accept libc_accept +//go:linkname libc_getdirent libc_getdirent +//go:linkname libc_wait4 libc_wait4 +//go:linkname libc_ioctl libc_ioctl +//go:linkname libc_fcntl libc_fcntl +//go:linkname libc_acct libc_acct +//go:linkname libc_chdir libc_chdir +//go:linkname libc_chroot libc_chroot +//go:linkname libc_close libc_close +//go:linkname libc_dup libc_dup +//go:linkname libc_exit libc_exit +//go:linkname libc_faccessat libc_faccessat +//go:linkname libc_fchdir libc_fchdir +//go:linkname libc_fchmod libc_fchmod +//go:linkname libc_fchmodat libc_fchmodat +//go:linkname libc_fchownat libc_fchownat +//go:linkname libc_fdatasync libc_fdatasync +//go:linkname libc_fsync libc_fsync +//go:linkname libc_getpgid libc_getpgid +//go:linkname libc_getpgrp libc_getpgrp +//go:linkname libc_getpid libc_getpid +//go:linkname libc_getppid libc_getppid +//go:linkname libc_getpriority libc_getpriority +//go:linkname libc_getrusage libc_getrusage +//go:linkname libc_getsid libc_getsid +//go:linkname libc_kill libc_kill +//go:linkname libc_syslog libc_syslog +//go:linkname libc_mkdir libc_mkdir +//go:linkname libc_mkdirat libc_mkdirat +//go:linkname libc_mkfifo libc_mkfifo +//go:linkname libc_mknod libc_mknod +//go:linkname libc_mknodat libc_mknodat +//go:linkname libc_nanosleep libc_nanosleep +//go:linkname libc_open64 libc_open64 +//go:linkname libc_openat libc_openat +//go:linkname libc_read libc_read +//go:linkname libc_readlink libc_readlink +//go:linkname libc_renameat libc_renameat +//go:linkname libc_setdomainname libc_setdomainname +//go:linkname libc_sethostname libc_sethostname +//go:linkname libc_setpgid libc_setpgid +//go:linkname libc_setsid libc_setsid +//go:linkname libc_settimeofday libc_settimeofday +//go:linkname libc_setuid libc_setuid +//go:linkname libc_setgid libc_setgid +//go:linkname libc_setpriority libc_setpriority +//go:linkname libc_statx libc_statx +//go:linkname libc_sync libc_sync +//go:linkname libc_times libc_times +//go:linkname libc_umask libc_umask +//go:linkname libc_uname libc_uname +//go:linkname libc_unlink libc_unlink +//go:linkname libc_unlinkat libc_unlinkat +//go:linkname libc_ustat libc_ustat +//go:linkname libc_write libc_write +//go:linkname libc_dup2 libc_dup2 +//go:linkname libc_posix_fadvise64 libc_posix_fadvise64 +//go:linkname libc_fchown libc_fchown +//go:linkname libc_fstat libc_fstat +//go:linkname libc_fstatat libc_fstatat +//go:linkname libc_fstatfs libc_fstatfs +//go:linkname libc_ftruncate libc_ftruncate +//go:linkname libc_getegid libc_getegid +//go:linkname libc_geteuid libc_geteuid +//go:linkname libc_getgid libc_getgid +//go:linkname libc_getuid libc_getuid +//go:linkname libc_lchown libc_lchown +//go:linkname libc_listen libc_listen +//go:linkname libc_lstat libc_lstat +//go:linkname libc_pause libc_pause +//go:linkname libc_pread64 libc_pread64 +//go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_pselect libc_pselect +//go:linkname libc_setregid libc_setregid +//go:linkname libc_setreuid libc_setreuid +//go:linkname libc_shutdown libc_shutdown +//go:linkname libc_splice libc_splice +//go:linkname libc_stat libc_stat +//go:linkname libc_statfs libc_statfs +//go:linkname libc_truncate libc_truncate +//go:linkname libc_bind libc_bind +//go:linkname libc_connect libc_connect +//go:linkname libc_getgroups libc_getgroups +//go:linkname libc_setgroups libc_setgroups +//go:linkname libc_getsockopt libc_getsockopt +//go:linkname libc_setsockopt libc_setsockopt +//go:linkname libc_socket libc_socket +//go:linkname libc_socketpair libc_socketpair +//go:linkname libc_getpeername libc_getpeername +//go:linkname libc_getsockname libc_getsockname +//go:linkname libc_recvfrom libc_recvfrom +//go:linkname libc_sendto libc_sendto +//go:linkname libc_recvmsg libc_recvmsg +//go:linkname libc_sendmsg libc_sendmsg +//go:linkname libc_munmap libc_munmap +//go:linkname libc_madvise libc_madvise +//go:linkname libc_mprotect libc_mprotect +//go:linkname libc_mlock libc_mlock +//go:linkname libc_mlockall libc_mlockall +//go:linkname libc_msync libc_msync +//go:linkname libc_munlock libc_munlock +//go:linkname libc_munlockall libc_munlockall +//go:linkname libc_pipe libc_pipe +//go:linkname libc_poll libc_poll +//go:linkname libc_gettimeofday libc_gettimeofday +//go:linkname libc_time libc_time +//go:linkname libc_utime libc_utime +//go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_getrlimit libc_getrlimit +//go:linkname libc_setrlimit libc_setrlimit +//go:linkname libc_lseek libc_lseek +//go:linkname libc_mmap64 libc_mmap64 + +type syscallFunc uintptr + +var ( + libc_utimes, + libc_utimensat, + libc_getcwd, + libc_accept, + libc_getdirent, + libc_wait4, + libc_ioctl, + libc_fcntl, + libc_acct, + libc_chdir, + libc_chroot, + libc_close, + libc_dup, + libc_exit, + libc_faccessat, + libc_fchdir, + libc_fchmod, + libc_fchmodat, + libc_fchownat, + libc_fdatasync, + libc_fsync, + libc_getpgid, + libc_getpgrp, + libc_getpid, + libc_getppid, + libc_getpriority, + libc_getrusage, + libc_getsid, + libc_kill, + libc_syslog, + libc_mkdir, + libc_mkdirat, + libc_mkfifo, + libc_mknod, + libc_mknodat, + libc_nanosleep, + libc_open64, + libc_openat, + libc_read, + libc_readlink, + libc_renameat, + libc_setdomainname, + libc_sethostname, + libc_setpgid, + libc_setsid, + libc_settimeofday, + libc_setuid, + libc_setgid, + libc_setpriority, + libc_statx, + libc_sync, + libc_times, + libc_umask, + libc_uname, + libc_unlink, + libc_unlinkat, + libc_ustat, + libc_write, + libc_dup2, + libc_posix_fadvise64, + libc_fchown, + libc_fstat, + libc_fstatat, + libc_fstatfs, + libc_ftruncate, + libc_getegid, + libc_geteuid, + libc_getgid, + libc_getuid, + libc_lchown, + libc_listen, + libc_lstat, + libc_pause, + libc_pread64, + libc_pwrite64, + libc_pselect, + libc_setregid, + libc_setreuid, + libc_shutdown, + libc_splice, + libc_stat, + libc_statfs, + libc_truncate, + libc_bind, + libc_connect, + libc_getgroups, + libc_setgroups, + libc_getsockopt, + libc_setsockopt, + libc_socket, + libc_socketpair, + libc_getpeername, + libc_getsockname, + libc_recvfrom, + libc_sendto, + libc_recvmsg, + libc_sendmsg, + libc_munmap, + libc_madvise, + libc_mprotect, + libc_mlock, + libc_mlockall, + libc_msync, + libc_munlock, + libc_munlockall, + libc_pipe, + libc_poll, + libc_gettimeofday, + libc_time, + libc_utime, + libc_getsystemcfg, + libc_getrlimit, + libc_setrlimit, + libc_lseek, + libc_mmap64 syscallFunc +) + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go new file mode 100644 index 0000000..5491c89 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -0,0 +1,1051 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build gccgo + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int getrlimit(int, uintptr_t); +int setrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.acct(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chdir(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chroot(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.close(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup(C.int(oldfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.exit(C.int(code))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchdir(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fdatasync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fsync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgrp()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getppid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpriority(C.int(which), C.int(who))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.kill(C.int(pid), C.int(sig))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.settimeofday(C.uintptr_t(tv))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setuid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sync()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.times(C.uintptr_t(tms))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umask(C.int(mask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.uname(C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlink(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getegid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.geteuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.listen(C.int(s), C.int(n))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pause()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setregid(C.int(rgid), C.int(egid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.shutdown(C.int(fd), C.int(how))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlockall(C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlockall()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pipe(C.uintptr_t(p))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.time(C.uintptr_t(t))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsystemcfg(C.int(label))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go new file mode 100644 index 0000000..c4ec7ff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go new file mode 100644 index 0000000..23346dc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -0,0 +1,2505 @@ +// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s new file mode 100644 index 0000000..37b85b4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -0,0 +1,284 @@ +// go run mkasm_darwin.go 386 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go new file mode 100644 index 0000000..2581e89 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go new file mode 100644 index 0000000..c142e33 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -0,0 +1,2520 @@ +// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s new file mode 100644 index 0000000..1a39151 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -0,0 +1,286 @@ +// go run mkasm_darwin.go amd64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go new file mode 100644 index 0000000..f8caece --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go new file mode 100644 index 0000000..01cffbf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s new file mode 100644 index 0000000..994056f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go new file mode 100644 index 0000000..3fd0f3c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go new file mode 100644 index 0000000..8f2691d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s new file mode 100644 index 0000000..61dc0d4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go new file mode 100644 index 0000000..ae9f1a2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -0,0 +1,1659 @@ +// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build dragonfly,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go new file mode 100644 index 0000000..80903e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go new file mode 100644 index 0000000..cd250ff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go new file mode 100644 index 0000000..290a9c2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go new file mode 100644 index 0000000..c6df9d2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,arm64 -- syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go new file mode 100644 index 0000000..9855afa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -0,0 +1,2220 @@ +// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go new file mode 100644 index 0000000..773e251 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -0,0 +1,2387 @@ +// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func inotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go new file mode 100644 index 0000000..ccea621 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -0,0 +1,2342 @@ +// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go new file mode 100644 index 0000000..712c7a3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -0,0 +1,2244 @@ +// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 0000000..68b3251 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,2400 @@ +// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go new file mode 100644 index 0000000..a8be407 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -0,0 +1,2371 @@ +// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go new file mode 100644 index 0000000..1351028 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -0,0 +1,2371 @@ +// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 0000000..327b4f9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,2400 @@ +// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go new file mode 100644 index 0000000..c145bd3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -0,0 +1,2449 @@ +// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go new file mode 100644 index 0000000..cd8179c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -0,0 +1,2449 @@ +// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 0000000..2e90cf0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,2224 @@ +// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go new file mode 100644 index 0000000..fe9c7e1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -0,0 +1,2219 @@ +// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,s390x + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 0000000..d4a2100 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,2382 @@ +// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go new file mode 100644 index 0000000..642db76 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go new file mode 100644 index 0000000..59585fe --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go new file mode 100644 index 0000000..6ec3143 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go new file mode 100644 index 0000000..603d144 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go new file mode 100644 index 0000000..6a489fa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go new file mode 100644 index 0000000..30cba43 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 0000000..fa1beda --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go new file mode 100644 index 0000000..5f61476 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -0,0 +1,1953 @@ +// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build solaris,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" +//go:cgo_import_dynamic libc_gethostname gethostname "libc.so" +//go:cgo_import_dynamic libc_utimes utimes "libc.so" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" +//go:cgo_import_dynamic libc_futimesat futimesat "libc.so" +//go:cgo_import_dynamic libc_accept accept "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" +//go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" +//go:cgo_import_dynamic libc_access access "libc.so" +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" +//go:cgo_import_dynamic libc_chdir chdir "libc.so" +//go:cgo_import_dynamic libc_chmod chmod "libc.so" +//go:cgo_import_dynamic libc_chown chown "libc.so" +//go:cgo_import_dynamic libc_chroot chroot "libc.so" +//go:cgo_import_dynamic libc_close close "libc.so" +//go:cgo_import_dynamic libc_creat creat "libc.so" +//go:cgo_import_dynamic libc_dup dup "libc.so" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" +//go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" +//go:cgo_import_dynamic libc_fchown fchown "libc.so" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" +//go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" +//go:cgo_import_dynamic libc_getdents getdents "libc.so" +//go:cgo_import_dynamic libc_getgid getgid "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" +//go:cgo_import_dynamic libc_getegid getegid "libc.so" +//go:cgo_import_dynamic libc_getppid getppid "libc.so" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" +//go:cgo_import_dynamic libc_getuid getuid "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" +//go:cgo_import_dynamic libc_lchown lchown "libc.so" +//go:cgo_import_dynamic libc_link link "libc.so" +//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" +//go:cgo_import_dynamic libc_lstat lstat "libc.so" +//go:cgo_import_dynamic libc_madvise madvise "libc.so" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" +//go:cgo_import_dynamic libc_mknod mknod "libc.so" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" +//go:cgo_import_dynamic libc_mlock mlock "libc.so" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" +//go:cgo_import_dynamic libc_munlock munlock "libc.so" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" +//go:cgo_import_dynamic libc_open open "libc.so" +//go:cgo_import_dynamic libc_openat openat "libc.so" +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" +//go:cgo_import_dynamic libc_pause pause "libc.so" +//go:cgo_import_dynamic libc_pread pread "libc.so" +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" +//go:cgo_import_dynamic libc_read read "libc.so" +//go:cgo_import_dynamic libc_readlink readlink "libc.so" +//go:cgo_import_dynamic libc_rename rename "libc.so" +//go:cgo_import_dynamic libc_renameat renameat "libc.so" +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" +//go:cgo_import_dynamic libc_lseek lseek "libc.so" +//go:cgo_import_dynamic libc_select select "libc.so" +//go:cgo_import_dynamic libc_setegid setegid "libc.so" +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" +//go:cgo_import_dynamic libc_setgid setgid "libc.so" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.so" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" +//go:cgo_import_dynamic libc_setregid setregid "libc.so" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" +//go:cgo_import_dynamic libc_setsid setsid "libc.so" +//go:cgo_import_dynamic libc_setuid setuid "libc.so" +//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" +//go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" +//go:cgo_import_dynamic libc_symlink symlink "libc.so" +//go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_times times "libc.so" +//go:cgo_import_dynamic libc_truncate truncate "libc.so" +//go:cgo_import_dynamic libc_fsync fsync "libc.so" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" +//go:cgo_import_dynamic libc_umask umask "libc.so" +//go:cgo_import_dynamic libc_uname uname "libc.so" +//go:cgo_import_dynamic libc_umount umount "libc.so" +//go:cgo_import_dynamic libc_unlink unlink "libc.so" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" +//go:cgo_import_dynamic libc_ustat ustat "libc.so" +//go:cgo_import_dynamic libc_utime utime "libc.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" +//go:cgo_import_dynamic libc_mmap mmap "libc.so" +//go:cgo_import_dynamic libc_munmap munmap "libc.so" +//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" +//go:cgo_import_dynamic libc_write write "libc.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" + +//go:linkname procpipe libc_pipe +//go:linkname procgetsockname libc_getsockname +//go:linkname procGetcwd libc_getcwd +//go:linkname procgetgroups libc_getgroups +//go:linkname procsetgroups libc_setgroups +//go:linkname procwait4 libc_wait4 +//go:linkname procgethostname libc_gethostname +//go:linkname procutimes libc_utimes +//go:linkname procutimensat libc_utimensat +//go:linkname procfcntl libc_fcntl +//go:linkname procfutimesat libc_futimesat +//go:linkname procaccept libc_accept +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg +//go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor +//go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll +//go:linkname procAccess libc_access +//go:linkname procAdjtime libc_adjtime +//go:linkname procChdir libc_chdir +//go:linkname procChmod libc_chmod +//go:linkname procChown libc_chown +//go:linkname procChroot libc_chroot +//go:linkname procClose libc_close +//go:linkname procCreat libc_creat +//go:linkname procDup libc_dup +//go:linkname procDup2 libc_dup2 +//go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat +//go:linkname procFchdir libc_fchdir +//go:linkname procFchmod libc_fchmod +//go:linkname procFchmodat libc_fchmodat +//go:linkname procFchown libc_fchown +//go:linkname procFchownat libc_fchownat +//go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock +//go:linkname procFpathconf libc_fpathconf +//go:linkname procFstat libc_fstat +//go:linkname procFstatat libc_fstatat +//go:linkname procFstatvfs libc_fstatvfs +//go:linkname procGetdents libc_getdents +//go:linkname procGetgid libc_getgid +//go:linkname procGetpid libc_getpid +//go:linkname procGetpgid libc_getpgid +//go:linkname procGetpgrp libc_getpgrp +//go:linkname procGeteuid libc_geteuid +//go:linkname procGetegid libc_getegid +//go:linkname procGetppid libc_getppid +//go:linkname procGetpriority libc_getpriority +//go:linkname procGetrlimit libc_getrlimit +//go:linkname procGetrusage libc_getrusage +//go:linkname procGettimeofday libc_gettimeofday +//go:linkname procGetuid libc_getuid +//go:linkname procKill libc_kill +//go:linkname procLchown libc_lchown +//go:linkname procLink libc_link +//go:linkname proc__xnet_llisten libc___xnet_llisten +//go:linkname procLstat libc_lstat +//go:linkname procMadvise libc_madvise +//go:linkname procMkdir libc_mkdir +//go:linkname procMkdirat libc_mkdirat +//go:linkname procMkfifo libc_mkfifo +//go:linkname procMkfifoat libc_mkfifoat +//go:linkname procMknod libc_mknod +//go:linkname procMknodat libc_mknodat +//go:linkname procMlock libc_mlock +//go:linkname procMlockall libc_mlockall +//go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync +//go:linkname procMunlock libc_munlock +//go:linkname procMunlockall libc_munlockall +//go:linkname procNanosleep libc_nanosleep +//go:linkname procOpen libc_open +//go:linkname procOpenat libc_openat +//go:linkname procPathconf libc_pathconf +//go:linkname procPause libc_pause +//go:linkname procPread libc_pread +//go:linkname procPwrite libc_pwrite +//go:linkname procread libc_read +//go:linkname procReadlink libc_readlink +//go:linkname procRename libc_rename +//go:linkname procRenameat libc_renameat +//go:linkname procRmdir libc_rmdir +//go:linkname proclseek libc_lseek +//go:linkname procSelect libc_select +//go:linkname procSetegid libc_setegid +//go:linkname procSeteuid libc_seteuid +//go:linkname procSetgid libc_setgid +//go:linkname procSethostname libc_sethostname +//go:linkname procSetpgid libc_setpgid +//go:linkname procSetpriority libc_setpriority +//go:linkname procSetregid libc_setregid +//go:linkname procSetreuid libc_setreuid +//go:linkname procSetrlimit libc_setrlimit +//go:linkname procSetsid libc_setsid +//go:linkname procSetuid libc_setuid +//go:linkname procshutdown libc_shutdown +//go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs +//go:linkname procSymlink libc_symlink +//go:linkname procSync libc_sync +//go:linkname procTimes libc_times +//go:linkname procTruncate libc_truncate +//go:linkname procFsync libc_fsync +//go:linkname procFtruncate libc_ftruncate +//go:linkname procUmask libc_umask +//go:linkname procUname libc_uname +//go:linkname procumount libc_umount +//go:linkname procUnlink libc_unlink +//go:linkname procUnlinkat libc_unlinkat +//go:linkname procUstat libc_ustat +//go:linkname procUtime libc_utime +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect +//go:linkname procmmap libc_mmap +//go:linkname procmunmap libc_munmap +//go:linkname procsendfile libc_sendfile +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair +//go:linkname procwrite libc_write +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt +//go:linkname procgetpeername libc_getpeername +//go:linkname procsetsockopt libc_setsockopt +//go:linkname procrecvfrom libc_recvfrom + +var ( + procpipe, + procgetsockname, + procGetcwd, + procgetgroups, + procsetgroups, + procwait4, + procgethostname, + procutimes, + procutimensat, + procfcntl, + procfutimesat, + procaccept, + proc__xnet_recvmsg, + proc__xnet_sendmsg, + procacct, + proc__makedev, + proc__major, + proc__minor, + procioctl, + procpoll, + procAccess, + procAdjtime, + procChdir, + procChmod, + procChown, + procChroot, + procClose, + procCreat, + procDup, + procDup2, + procExit, + procFaccessat, + procFchdir, + procFchmod, + procFchmodat, + procFchown, + procFchownat, + procFdatasync, + procFlock, + procFpathconf, + procFstat, + procFstatat, + procFstatvfs, + procGetdents, + procGetgid, + procGetpid, + procGetpgid, + procGetpgrp, + procGeteuid, + procGetegid, + procGetppid, + procGetpriority, + procGetrlimit, + procGetrusage, + procGettimeofday, + procGetuid, + procKill, + procLchown, + procLink, + proc__xnet_llisten, + procLstat, + procMadvise, + procMkdir, + procMkdirat, + procMkfifo, + procMkfifoat, + procMknod, + procMknodat, + procMlock, + procMlockall, + procMprotect, + procMsync, + procMunlock, + procMunlockall, + procNanosleep, + procOpen, + procOpenat, + procPathconf, + procPause, + procPread, + procPwrite, + procread, + procReadlink, + procRename, + procRenameat, + procRmdir, + proclseek, + procSelect, + procSetegid, + procSeteuid, + procSetgid, + procSethostname, + procSetpgid, + procSetpriority, + procSetregid, + procSetreuid, + procSetrlimit, + procSetsid, + procSetuid, + procshutdown, + procStat, + procStatvfs, + procSymlink, + procSync, + procTimes, + procTruncate, + procFsync, + procFtruncate, + procUmask, + procUname, + procumount, + procUnlink, + procUnlinkat, + procUstat, + procUtime, + proc__xnet_bind, + proc__xnet_connect, + procmmap, + procmunmap, + procsendfile, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, + procwrite, + proc__xnet_getsockopt, + procgetpeername, + procsetsockopt, + procrecvfrom syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int32(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gethostname(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func acct(path *byte) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) + nfd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go new file mode 100644 index 0000000..b005031 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 0000000..d014451 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.dnsjackport", []_C_int{1, 13}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 0000000..b005031 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go new file mode 100644 index 0000000..f336145 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go new file mode 100644 index 0000000..654dd3d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -0,0 +1,438 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_KQUEUE_WORKLOOP_CTL = 530 + SYS___MACH_BRIDGE_REMOTE_TIME = 531 + SYS_MAXSYSCALL = 532 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go new file mode 100644 index 0000000..103a72e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go new file mode 100644 index 0000000..7ab2130 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go new file mode 100644 index 0000000..464c9a9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -0,0 +1,315 @@ +// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void exit(int rval); } + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); } + SYS_ACCESS = 33 // { int access(char *path, int flags); } + SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { pid_t vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); } + SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); } + SYS_UNAME = 164 // { int uname(struct utsname *name); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int + SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); } + SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); } + SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); } + SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); } + SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); } + SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); } + SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); } + SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); } + SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); } + SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); } + SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); } + SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); } + SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); } + SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_CLOSEFROM = 474 // { int closefrom(int fd); } + SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); } + SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); } + SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); } + SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); } + SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); } + SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); } + SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); } + SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); } + SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); } + SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); } + SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); } + SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); } + SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); } + SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); } + SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); } + SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); } + SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); } + SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); } + SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); } + SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); } + SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); } + SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); } + SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); } + SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); } + SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); } + SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); } + SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); } + SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); } + SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); } + SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); } + SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); } + SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); } + SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); } + SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); } + SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); } + SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); } + SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); } + SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); } + SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_SWAPOFF = 529 // { int swapoff(char *name); } + SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); } + SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); } + SYS_EACCESS = 532 // { int eaccess(char *path, int flags); } + SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } + SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } + SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); } + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go new file mode 100644 index 0000000..55c3a32 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go new file mode 100644 index 0000000..b39be6c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go new file mode 100644 index 0000000..44ffd4c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go new file mode 100644 index 0000000..9f21e95 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -0,0 +1,395 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, \ + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, \ + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go new file mode 100644 index 0000000..8d17873 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -0,0 +1,392 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go new file mode 100644 index 0000000..b3d8ad7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -0,0 +1,344 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go new file mode 100644 index 0000000..e092822 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -0,0 +1,364 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go new file mode 100644 index 0000000..b81d508 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -0,0 +1,289 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 0000000..6893a5b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go new file mode 100644 index 0000000..40164ca --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go new file mode 100644 index 0000000..8a90973 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 0000000..8d78184 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go new file mode 100644 index 0000000..ec5bde3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go new file mode 100644 index 0000000..bdbabdb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 0000000..2c8c46a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,288 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go new file mode 100644 index 0000000..6eb7c25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 0000000..6ed3063 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,351 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go new file mode 100644 index 0000000..e66a8c9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go new file mode 100644 index 0000000..42c788f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go new file mode 100644 index 0000000..0a07571 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go new file mode 100644 index 0000000..0291c09 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go new file mode 100644 index 0000000..b0207d1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go new file mode 100644 index 0000000..f0dec6f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 0000000..33d1dc5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 0000000..cedc9b0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,345 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type StTimespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint32 + Blocks uint32 + Bfree uint32 + Bavail uint32 + Files uint32 + Ffree uint32 + Fsid Fsid_t + Vfstype int32 + Fsize uint32 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 0000000..f46482d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,354 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type StTimespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + _ [4]byte + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid64_t + Vfstype int32 + _ [4]byte + Fsize uint64 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 + _ [4]byte +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go new file mode 100644 index 0000000..cefe2f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -0,0 +1,499 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct{} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go new file mode 100644 index 0000000..c6bb883 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go new file mode 100644 index 0000000..94c23bc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -0,0 +1,500 @@ +// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_darwin.go + +// +build arm,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 [0]byte + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go new file mode 100644 index 0000000..c82a930 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go new file mode 100644 index 0000000..7b34e2e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -0,0 +1,469 @@ +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + Padding1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare1 int64 + Qspare2 int64 +} + +type Statfs_t struct { + Spare2 int64 + Bsize int64 + Iosize int64 + Blocks int64 + Bfree int64 + Bavail int64 + Files int64 + Ffree int64 + Fsid Fsid + Owner uint32 + Type int32 + Flags int32 + _ [4]byte + Syncwrites int64 + Asyncwrites int64 + Fstypename [16]int8 + Mntonname [80]int8 + Syncreads int64 + Asyncreads int64 + Spares1 int16 + Mntfromname [80]int8 + Spares2 int16 + _ [4]byte + Spare [2]int64 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Namlen uint16 + Type uint8 + Unused1 uint8 + Unused2 uint32 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + SizeofIfMsghdr = 0xb0 + SizeofIfData = 0xa0 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + _ [2]byte + Mtu uint64 + Metric uint64 + Link_state uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Oqdrops uint64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Pksent uint64 + Expire uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Recvpipe uint64 + Hopcount uint64 + Mssopt uint16 + Pad uint16 + _ [4]byte + Msl uint64 + Iwmaxsegs uint64 + Iwcapsegs uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go new file mode 100644 index 0000000..c146c1a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -0,0 +1,603 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim_ext int32 + Atim Timespec + Mtim_ext int32 + Mtim Timespec + Ctim_ext int32 + Ctim Timespec + Btim_ext int32 + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec + _ [8]byte +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x60 + sizeofIfData = 0x98 + SizeofIfData = 0x50 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + Epoch int32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go new file mode 100644 index 0000000..ac33a8d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go new file mode 100644 index 0000000..e27511a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -0,0 +1,602 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x70 + sizeofIfData = 0x98 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + _ [4]byte + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go new file mode 100644 index 0000000..2aadc1a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go new file mode 100644 index 0000000..a908f25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -0,0 +1,2135 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [1]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go new file mode 100644 index 0000000..e63fa74 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -0,0 +1,2148 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go new file mode 100644 index 0000000..34e4e6d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -0,0 +1,2126 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Uregs [18]uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]uint8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go new file mode 100644 index 0000000..7f2e26f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -0,0 +1,2127 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 0000000..66e408f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go new file mode 100644 index 0000000..e60575a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -0,0 +1,2129 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go new file mode 100644 index 0000000..af5836a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -0,0 +1,2129 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 0000000..471706a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go new file mode 100644 index 0000000..6cfa149 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -0,0 +1,2137 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go new file mode 100644 index 0000000..acb3773 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -0,0 +1,2137 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 0000000..9735b25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,2154 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go new file mode 100644 index 0000000..5369f65 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -0,0 +1,2151 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x6 + FADV_NOREUSE = 0x7 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Psw PtracePsw + Gprs [16]uint64 + Acrs [16]uint32 + Orig_gpr2 uint64 + Fp_regs PtraceFpregs + Per_info PtracePer + Ieee_instruction_pointer uint64 +} + +type PtracePsw struct { + Mask uint64 + Addr uint64 +} + +type PtraceFpregs struct { + Fpc uint32 + Fprs [16]float64 +} + +type PtracePer struct { + _ [0]uint64 + _ [32]byte + Starting_addr uint64 + Ending_addr uint64 + Perc_atmid uint16 + Address uint64 + Access_id uint8 + _ [7]byte +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 0000000..552dbe5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ int16 + _ [2]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x800 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go new file mode 100644 index 0000000..2dae0c1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -0,0 +1,465 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x84 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData + Pad_cgo_1 [4]byte +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go new file mode 100644 index 0000000..1f0e76c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go new file mode 100644 index 0000000..53f2159 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -0,0 +1,470 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + Pad_cgo_0 [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 + Pad_cgo_0 [4]byte +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go new file mode 100644 index 0000000..43da2c4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go new file mode 100644 index 0000000..900fb44 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + X__st_birthtim Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + Pad_cgo_0 [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + X__d_padding [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xec + SizeofIfData = 0xd4 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Pad uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval + Mclpool [7]Mclpool +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct { + Grown int32 + Alive uint16 + Hwm uint16 + Cwm uint16 + Lwm uint16 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go new file mode 100644 index 0000000..028fa78 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen uint32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 0000000..b45d5ee --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,571 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go new file mode 100644 index 0000000..8531a19 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -0,0 +1,442 @@ +// cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x400 + MaxHostNameLen = 0x100 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + _ [4]byte + Blocks int64 + Fstype [16]int8 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Sysid int32 + Pid int32 + Pad [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Name [1]int8 + _ [5]byte +} + +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [236]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *int8 + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Accrights *int8 + Accrightslen int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + X__icmp6_filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x20 + SizeofSockaddrAny = 0xfc + SizeofSockaddrUnix = 0x6e + SizeofSockaddrDatalink = 0xfc + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x24 + SizeofICMPv6Filter = 0x20 +) + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte +} + +type Ustat_t struct { + Tfree int64 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +const ( + AT_FDCWD = 0xffd19553 + AT_SYMLINK_NOFOLLOW = 0x1000 + AT_SYMLINK_FOLLOW = 0x2000 + AT_REMOVEDIR = 0x1 + AT_EACCESS = 0x4 +) + +const ( + SizeofIfMsghdr = 0x54 + SizeofIfData = 0x44 + SizeofIfaMsghdr = 0x14 + SizeofRtMsghdr = 0x4c + SizeofRtMetrics = 0x28 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + _ [1]byte + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + _ [1]byte +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line int8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go new file mode 100644 index 0000000..af3af60 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows +// +build go1.9 + +package windows + +import "syscall" + +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s new file mode 100644 index 0000000..21d994d --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_386.s @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +// System calls for 386, Windows are implemented in runtime/syscall_windows.goc +// + +TEXT ·getprocaddress(SB), 7, $0-16 + JMP syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB), 7, $0-12 + JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s new file mode 100644 index 0000000..5bfdf79 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc +// + +TEXT ·getprocaddress(SB), 7, $0-32 + JMP syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB), 7, $0-24 + JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_arm.s b/vendor/golang.org/x/sys/windows/asm_windows_arm.s new file mode 100644 index 0000000..55d8b91 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_arm.s @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·getprocaddress(SB),NOSPLIT,$0 + B syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB),NOSPLIT,$0 + B syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go new file mode 100644 index 0000000..ba67658 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -0,0 +1,378 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "sync" + "sync/atomic" + "syscall" + "unsafe" +) + +// DLLError describes reasons for DLL load failures. +type DLLError struct { + Err error + ObjName string + Msg string +} + +func (e *DLLError) Error() string { return e.Msg } + +// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file. +func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno) +func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno) + +// A DLL implements access to a single DLL. +type DLL struct { + Name string + Handle Handle +} + +// LoadDLL loads DLL file into memory. +// +// Warning: using LoadDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use LazyDLL +// with System set to true, or use LoadLibraryEx directly. +func LoadDLL(name string) (dll *DLL, err error) { + namep, err := UTF16PtrFromString(name) + if err != nil { + return nil, err + } + h, e := loadlibrary(namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to load " + name + ": " + e.Error(), + } + } + d := &DLL{ + Name: name, + Handle: Handle(h), + } + return d, nil +} + +// MustLoadDLL is like LoadDLL but panics if load operation failes. +func MustLoadDLL(name string) *DLL { + d, e := LoadDLL(name) + if e != nil { + panic(e) + } + return d +} + +// FindProc searches DLL d for procedure named name and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProc(name string) (proc *Proc, err error) { + namep, err := BytePtrFromString(name) + if err != nil { + return nil, err + } + a, e := getprocaddress(uintptr(d.Handle), namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProc is like FindProc but panics if search fails. +func (d *DLL) MustFindProc(name string) *Proc { + p, e := d.FindProc(name) + if e != nil { + panic(e) + } + return p +} + +// Release unloads DLL d from memory. +func (d *DLL) Release() (err error) { + return FreeLibrary(d.Handle) +} + +// A Proc implements access to a procedure inside a DLL. +type Proc struct { + Dll *DLL + Name string + addr uintptr +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +func (p *Proc) Addr() uintptr { + return p.addr +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + switch len(a) { + case 0: + return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0) + case 1: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0) + case 2: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0) + case 3: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2]) + case 4: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0) + case 5: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0) + case 6: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5]) + case 7: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0) + case 8: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0) + case 9: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]) + case 10: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0) + case 11: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0) + case 12: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11]) + case 13: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0) + case 14: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0) + case 15: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14]) + default: + panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".") + } +} + +// A LazyDLL implements access to a single DLL. +// It will delay the load of the DLL until the first +// call to its Handle method or to one of its +// LazyProc's Addr method. +type LazyDLL struct { + Name string + + // System determines whether the DLL must be loaded from the + // Windows System directory, bypassing the normal DLL search + // path. + System bool + + mu sync.Mutex + dll *DLL // non nil once DLL is loaded +} + +// Load loads DLL file d.Name into memory. It returns an error if fails. +// Load will not try to load DLL, if it is already loaded into memory. +func (d *LazyDLL) Load() error { + // Non-racy version of: + // if d.dll != nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil { + return nil + } + d.mu.Lock() + defer d.mu.Unlock() + if d.dll != nil { + return nil + } + + // kernel32.dll is special, since it's where LoadLibraryEx comes from. + // The kernel already special-cases its name, so it's always + // loaded from system32. + var dll *DLL + var err error + if d.Name == "kernel32.dll" { + dll, err = LoadDLL(d.Name) + } else { + dll, err = loadLibraryEx(d.Name, d.System) + } + if err != nil { + return err + } + + // Non-racy version of: + // d.dll = dll + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll)) + return nil +} + +// mustLoad is like Load but panics if search fails. +func (d *LazyDLL) mustLoad() { + e := d.Load() + if e != nil { + panic(e) + } +} + +// Handle returns d's module handle. +func (d *LazyDLL) Handle() uintptr { + d.mustLoad() + return uintptr(d.dll.Handle) +} + +// NewProc returns a LazyProc for accessing the named procedure in the DLL d. +func (d *LazyDLL) NewProc(name string) *LazyProc { + return &LazyProc{l: d, Name: name} +} + +// NewLazyDLL creates new LazyDLL associated with DLL file. +func NewLazyDLL(name string) *LazyDLL { + return &LazyDLL{Name: name} +} + +// NewLazySystemDLL is like NewLazyDLL, but will only +// search Windows System directory for the DLL if name is +// a base name (like "advapi32.dll"). +func NewLazySystemDLL(name string) *LazyDLL { + return &LazyDLL{Name: name, System: true} +} + +// A LazyProc implements access to a procedure inside a LazyDLL. +// It delays the lookup until the Addr method is called. +type LazyProc struct { + Name string + + mu sync.Mutex + l *LazyDLL + proc *Proc +} + +// Find searches DLL for procedure named p.Name. It returns +// an error if search fails. Find will not search procedure, +// if it is already found and loaded into memory. +func (p *LazyProc) Find() error { + // Non-racy version of: + // if p.proc == nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil { + p.mu.Lock() + defer p.mu.Unlock() + if p.proc == nil { + e := p.l.Load() + if e != nil { + return e + } + proc, e := p.l.dll.FindProc(p.Name) + if e != nil { + return e + } + // Non-racy version of: + // p.proc = proc + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc)) + } + } + return nil +} + +// mustFind is like Find but panics if search fails. +func (p *LazyProc) mustFind() { + e := p.Find() + if e != nil { + panic(e) + } +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +// It will panic if the procedure cannot be found. +func (p *LazyProc) Addr() uintptr { + p.mustFind() + return p.proc.Addr() +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. It will also panic if the procedure cannot be found. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + p.mustFind() + return p.proc.Call(a...) +} + +var canDoSearchSystem32Once struct { + sync.Once + v bool +} + +func initCanDoSearchSystem32() { + // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says: + // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows + // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on + // systems that have KB2533623 installed. To determine whether the + // flags are available, use GetProcAddress to get the address of the + // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories + // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_* + // flags can be used with LoadLibraryEx." + canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil) +} + +func canDoSearchSystem32() bool { + canDoSearchSystem32Once.Do(initCanDoSearchSystem32) + return canDoSearchSystem32Once.v +} + +func isBaseName(name string) bool { + for _, c := range name { + if c == ':' || c == '/' || c == '\\' { + return false + } + } + return true +} + +// loadLibraryEx wraps the Windows LoadLibraryEx function. +// +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx +// +// If name is not an absolute path, LoadLibraryEx searches for the DLL +// in a variety of automatic locations unless constrained by flags. +// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx +func loadLibraryEx(name string, system bool) (*DLL, error) { + loadDLL := name + var flags uintptr + if system { + if canDoSearchSystem32() { + const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 + flags = LOAD_LIBRARY_SEARCH_SYSTEM32 + } else if isBaseName(name) { + // WindowsXP or unpatched Windows machine + // trying to load "foo.dll" out of the system + // folder, but LoadLibraryEx doesn't support + // that yet on their system, so emulate it. + systemdir, err := GetSystemDirectory() + if err != nil { + return nil, err + } + loadDLL = systemdir + "\\" + name + } + } + h, err := LoadLibraryEx(loadDLL, 0, flags) + if err != nil { + return nil, err + } + return &DLL{Name: name, Handle: h}, nil +} + +type errString string + +func (s errString) Error() string { return string(s) } diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go new file mode 100644 index 0000000..bdc71e2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -0,0 +1,29 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows environment variables. + +package windows + +import "syscall" + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go new file mode 100644 index 0000000..40af946 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/eventlog.go @@ -0,0 +1,20 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +const ( + EVENTLOG_SUCCESS = 0 + EVENTLOG_ERROR_TYPE = 1 + EVENTLOG_WARNING_TYPE = 2 + EVENTLOG_INFORMATION_TYPE = 4 + EVENTLOG_AUDIT_SUCCESS = 8 + EVENTLOG_AUDIT_FAILURE = 16 +) + +//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW +//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource +//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go new file mode 100644 index 0000000..3606c3a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -0,0 +1,97 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Fork, exec, wait, etc. + +package windows + +// EscapeArg rewrites command line argument s as prescribed +// in http://msdn.microsoft.com/en-us/library/ms880421. +// This function returns "" (2 double quotes) if s is empty. +// Alternatively, these transformations are done: +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. +func EscapeArg(s string) string { + if len(s) == 0 { + return "\"\"" + } + n := len(s) + hasSpace := false + for i := 0; i < len(s); i++ { + switch s[i] { + case '"', '\\': + n++ + case ' ', '\t': + hasSpace = true + } + } + if hasSpace { + n += 2 + } + if n == len(s) { + return s + } + + qs := make([]byte, n) + j := 0 + if hasSpace { + qs[j] = '"' + j++ + } + slashes := 0 + for i := 0; i < len(s); i++ { + switch s[i] { + default: + slashes = 0 + qs[j] = s[i] + case '\\': + slashes++ + qs[j] = s[i] + case '"': + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '\\' + j++ + qs[j] = s[i] + } + j++ + } + if hasSpace { + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '"' + j++ + } + return string(qs[:j]) +} + +func CloseOnExec(fd Handle) { + SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) +} + +// FullPath retrieves the full path of the specified file. +func FullPath(name string) (path string, err error) { + p, err := UTF16PtrFromString(name) + if err != nil { + return "", err + } + n := uint32(100) + for { + buf := make([]uint16, n) + n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil) + if err != nil { + return "", err + } + if n <= uint32(len(buf)) { + return UTF16ToString(buf[:n]), nil + } + } +} diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go new file mode 100644 index 0000000..f80a420 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/memory_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +const ( + MEM_COMMIT = 0x00001000 + MEM_RESERVE = 0x00002000 + MEM_DECOMMIT = 0x00004000 + MEM_RELEASE = 0x00008000 + MEM_RESET = 0x00080000 + MEM_TOP_DOWN = 0x00100000 + MEM_WRITE_WATCH = 0x00200000 + MEM_PHYSICAL = 0x00400000 + MEM_RESET_UNDO = 0x01000000 + MEM_LARGE_PAGES = 0x20000000 + + PAGE_NOACCESS = 0x01 + PAGE_READONLY = 0x02 + PAGE_READWRITE = 0x04 + PAGE_WRITECOPY = 0x08 + PAGE_EXECUTE_READ = 0x20 + PAGE_EXECUTE_READWRITE = 0x40 + PAGE_EXECUTE_WRITECOPY = 0x80 +) diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash new file mode 100644 index 0000000..a70b24f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +[[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; } +winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" +[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } + +declare -A errors + +{ + echo "// Code generated by 'go generate'; DO NOT EDIT." + echo + echo "package windows" + echo "import \"syscall\"" + echo "const (" + + while read -r line; do + unset vtype + if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + else + continue + fi + [[ -n $key && -n $value ]] || continue + [[ -z ${errors["$key"]} ]] || continue + errors["$key"]="$value" + if [[ -v vtype ]]; then + if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then + vtype="" + elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then + vtype="Handle" + else + vtype="syscall.Errno" + fi + last_vtype="$vtype" + else + vtype="" + if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then + value="S_OK" + elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then + value="ERROR_SUCCESS" + fi + fi + + echo "$key $vtype = $value" + done < "$winerror" + + echo ")" +} | gofmt > "$1" diff --git a/vendor/golang.org/x/sys/windows/mkerrors.go b/vendor/golang.org/x/sys/windows/mkerrors.go new file mode 100644 index 0000000..cbf123e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkerrors.go @@ -0,0 +1,7 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +//go:generate ./mkerrors.bash zerrors_windows.go diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go new file mode 100644 index 0000000..fb7db0e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -0,0 +1,7 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go new file mode 100644 index 0000000..a74e3e2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows,race + +package windows + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go new file mode 100644 index 0000000..e44a3cb --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows,!race + +package windows + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go new file mode 100644 index 0000000..da06406 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -0,0 +1,649 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "syscall" + "unsafe" +) + +const ( + STANDARD_RIGHTS_REQUIRED = 0xf0000 + STANDARD_RIGHTS_READ = 0x20000 + STANDARD_RIGHTS_WRITE = 0x20000 + STANDARD_RIGHTS_EXECUTE = 0x20000 + STANDARD_RIGHTS_ALL = 0x1F0000 +) + +const ( + NameUnknown = 0 + NameFullyQualifiedDN = 1 + NameSamCompatible = 2 + NameDisplay = 3 + NameUniqueId = 6 + NameCanonical = 7 + NameUserPrincipal = 8 + NameCanonicalEx = 9 + NameServicePrincipal = 10 + NameDnsDomain = 12 +) + +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx +//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW +//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW + +// TranslateAccountName converts a directory service +// object name from one format to another. +func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { + u, e := UTF16PtrFromString(username) + if e != nil { + return "", e + } + n := uint32(50) + for { + b := make([]uint16, n) + e = TranslateName(u, from, to, &b[0], &n) + if e == nil { + return UTF16ToString(b[:n]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +const ( + // do not reorder + NetSetupUnknownStatus = iota + NetSetupUnjoined + NetSetupWorkgroupName + NetSetupDomainName +) + +type UserInfo10 struct { + Name *uint16 + Comment *uint16 + UsrComment *uint16 + FullName *uint16 +} + +//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo +//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation +//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree + +const ( + // do not reorder + SidTypeUser = 1 + iota + SidTypeGroup + SidTypeDomain + SidTypeAlias + SidTypeWellKnownGroup + SidTypeDeletedAccount + SidTypeInvalid + SidTypeUnknown + SidTypeComputer + SidTypeLabel +) + +type SidIdentifierAuthority struct { + Value [6]byte +} + +var ( + SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}} + SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}} + SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}} + SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}} + SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}} + SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}} + SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}} +) + +const ( + SECURITY_NULL_RID = 0 + SECURITY_WORLD_RID = 0 + SECURITY_LOCAL_RID = 0 + SECURITY_CREATOR_OWNER_RID = 0 + SECURITY_CREATOR_GROUP_RID = 1 + SECURITY_DIALUP_RID = 1 + SECURITY_NETWORK_RID = 2 + SECURITY_BATCH_RID = 3 + SECURITY_INTERACTIVE_RID = 4 + SECURITY_LOGON_IDS_RID = 5 + SECURITY_SERVICE_RID = 6 + SECURITY_LOCAL_SYSTEM_RID = 18 + SECURITY_BUILTIN_DOMAIN_RID = 32 + SECURITY_PRINCIPAL_SELF_RID = 10 + SECURITY_CREATOR_OWNER_SERVER_RID = 0x2 + SECURITY_CREATOR_GROUP_SERVER_RID = 0x3 + SECURITY_LOGON_IDS_RID_COUNT = 0x3 + SECURITY_ANONYMOUS_LOGON_RID = 0x7 + SECURITY_PROXY_RID = 0x8 + SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9 + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID + SECURITY_AUTHENTICATED_USER_RID = 0xb + SECURITY_RESTRICTED_CODE_RID = 0xc + SECURITY_NT_NON_UNIQUE_RID = 0x15 +) + +// Predefined domain-relative RIDs for local groups. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx +const ( + DOMAIN_ALIAS_RID_ADMINS = 0x220 + DOMAIN_ALIAS_RID_USERS = 0x221 + DOMAIN_ALIAS_RID_GUESTS = 0x222 + DOMAIN_ALIAS_RID_POWER_USERS = 0x223 + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 + DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 + DOMAIN_ALIAS_RID_REPLICATOR = 0x228 + DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 + DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a + DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b + DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c + DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d + DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e + DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f + DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 + DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 + DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 + DOMAIN_ALIAS_RID_IUSERS = 0x238 + DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 + DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b + DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c + DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d + DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e +) + +//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW +//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW +//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW +//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW +//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid +//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid +//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid +//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid +//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid + +// The security identifier (SID) structure is a variable-length +// structure used to uniquely identify users or groups. +type SID struct{} + +// StringToSid converts a string-format security identifier +// sid into a valid, functional sid. +func StringToSid(s string) (*SID, error) { + var sid *SID + p, e := UTF16PtrFromString(s) + if e != nil { + return nil, e + } + e = ConvertStringSidToSid(p, &sid) + if e != nil { + return nil, e + } + defer LocalFree((Handle)(unsafe.Pointer(sid))) + return sid.Copy() +} + +// LookupSID retrieves a security identifier sid for the account +// and the name of the domain on which the account was found. +// System specify target computer to search. +func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { + if len(account) == 0 { + return nil, "", 0, syscall.EINVAL + } + acc, e := UTF16PtrFromString(account) + if e != nil { + return nil, "", 0, e + } + var sys *uint16 + if len(system) > 0 { + sys, e = UTF16PtrFromString(system) + if e != nil { + return nil, "", 0, e + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]byte, n) + db := make([]uint16, dn) + sid = (*SID)(unsafe.Pointer(&b[0])) + e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) + if e == nil { + return sid, UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, "", 0, e + } + if n <= uint32(len(b)) { + return nil, "", 0, e + } + } +} + +// String converts sid to a string format +// suitable for display, storage, or transmission. +func (sid *SID) String() (string, error) { + var s *uint16 + e := ConvertSidToStringSid(sid, &s) + if e != nil { + return "", e + } + defer LocalFree((Handle)(unsafe.Pointer(s))) + return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil +} + +// Len returns the length, in bytes, of a valid security identifier sid. +func (sid *SID) Len() int { + return int(GetLengthSid(sid)) +} + +// Copy creates a duplicate of security identifier sid. +func (sid *SID) Copy() (*SID, error) { + b := make([]byte, sid.Len()) + sid2 := (*SID)(unsafe.Pointer(&b[0])) + e := CopySid(uint32(len(b)), sid2, sid) + if e != nil { + return nil, e + } + return sid2, nil +} + +// LookupAccount retrieves the name of the account for this sid +// and the name of the first domain on which this sid is found. +// System specify target computer to search for. +func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { + var sys *uint16 + if len(system) > 0 { + sys, err = UTF16PtrFromString(system) + if err != nil { + return "", "", 0, err + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]uint16, n) + db := make([]uint16, dn) + e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType) + if e == nil { + return UTF16ToString(b), UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", "", 0, e + } + if n <= uint32(len(b)) { + return "", "", 0, e + } + } +} + +// Various types of pre-specified sids that can be synthesized at runtime. +type WELL_KNOWN_SID_TYPE uint32 + +const ( + WinNullSid = 0 + WinWorldSid = 1 + WinLocalSid = 2 + WinCreatorOwnerSid = 3 + WinCreatorGroupSid = 4 + WinCreatorOwnerServerSid = 5 + WinCreatorGroupServerSid = 6 + WinNtAuthoritySid = 7 + WinDialupSid = 8 + WinNetworkSid = 9 + WinBatchSid = 10 + WinInteractiveSid = 11 + WinServiceSid = 12 + WinAnonymousSid = 13 + WinProxySid = 14 + WinEnterpriseControllersSid = 15 + WinSelfSid = 16 + WinAuthenticatedUserSid = 17 + WinRestrictedCodeSid = 18 + WinTerminalServerSid = 19 + WinRemoteLogonIdSid = 20 + WinLogonIdsSid = 21 + WinLocalSystemSid = 22 + WinLocalServiceSid = 23 + WinNetworkServiceSid = 24 + WinBuiltinDomainSid = 25 + WinBuiltinAdministratorsSid = 26 + WinBuiltinUsersSid = 27 + WinBuiltinGuestsSid = 28 + WinBuiltinPowerUsersSid = 29 + WinBuiltinAccountOperatorsSid = 30 + WinBuiltinSystemOperatorsSid = 31 + WinBuiltinPrintOperatorsSid = 32 + WinBuiltinBackupOperatorsSid = 33 + WinBuiltinReplicatorSid = 34 + WinBuiltinPreWindows2000CompatibleAccessSid = 35 + WinBuiltinRemoteDesktopUsersSid = 36 + WinBuiltinNetworkConfigurationOperatorsSid = 37 + WinAccountAdministratorSid = 38 + WinAccountGuestSid = 39 + WinAccountKrbtgtSid = 40 + WinAccountDomainAdminsSid = 41 + WinAccountDomainUsersSid = 42 + WinAccountDomainGuestsSid = 43 + WinAccountComputersSid = 44 + WinAccountControllersSid = 45 + WinAccountCertAdminsSid = 46 + WinAccountSchemaAdminsSid = 47 + WinAccountEnterpriseAdminsSid = 48 + WinAccountPolicyAdminsSid = 49 + WinAccountRasAndIasServersSid = 50 + WinNTLMAuthenticationSid = 51 + WinDigestAuthenticationSid = 52 + WinSChannelAuthenticationSid = 53 + WinThisOrganizationSid = 54 + WinOtherOrganizationSid = 55 + WinBuiltinIncomingForestTrustBuildersSid = 56 + WinBuiltinPerfMonitoringUsersSid = 57 + WinBuiltinPerfLoggingUsersSid = 58 + WinBuiltinAuthorizationAccessSid = 59 + WinBuiltinTerminalServerLicenseServersSid = 60 + WinBuiltinDCOMUsersSid = 61 + WinBuiltinIUsersSid = 62 + WinIUserSid = 63 + WinBuiltinCryptoOperatorsSid = 64 + WinUntrustedLabelSid = 65 + WinLowLabelSid = 66 + WinMediumLabelSid = 67 + WinHighLabelSid = 68 + WinSystemLabelSid = 69 + WinWriteRestrictedCodeSid = 70 + WinCreatorOwnerRightsSid = 71 + WinCacheablePrincipalsGroupSid = 72 + WinNonCacheablePrincipalsGroupSid = 73 + WinEnterpriseReadonlyControllersSid = 74 + WinAccountReadonlyControllersSid = 75 + WinBuiltinEventLogReadersGroup = 76 + WinNewEnterpriseReadonlyControllersSid = 77 + WinBuiltinCertSvcDComAccessGroup = 78 + WinMediumPlusLabelSid = 79 + WinLocalLogonSid = 80 + WinConsoleLogonSid = 81 + WinThisOrganizationCertificateSid = 82 + WinApplicationPackageAuthoritySid = 83 + WinBuiltinAnyPackageSid = 84 + WinCapabilityInternetClientSid = 85 + WinCapabilityInternetClientServerSid = 86 + WinCapabilityPrivateNetworkClientServerSid = 87 + WinCapabilityPicturesLibrarySid = 88 + WinCapabilityVideosLibrarySid = 89 + WinCapabilityMusicLibrarySid = 90 + WinCapabilityDocumentsLibrarySid = 91 + WinCapabilitySharedUserCertificatesSid = 92 + WinCapabilityEnterpriseAuthenticationSid = 93 + WinCapabilityRemovableStorageSid = 94 + WinBuiltinRDSRemoteAccessServersSid = 95 + WinBuiltinRDSEndpointServersSid = 96 + WinBuiltinRDSManagementServersSid = 97 + WinUserModeDriversSid = 98 + WinBuiltinHyperVAdminsSid = 99 + WinAccountCloneableControllersSid = 100 + WinBuiltinAccessControlAssistanceOperatorsSid = 101 + WinBuiltinRemoteManagementUsersSid = 102 + WinAuthenticationAuthorityAssertedSid = 103 + WinAuthenticationServiceAssertedSid = 104 + WinLocalAccountSid = 105 + WinLocalAccountAndAdministratorSid = 106 + WinAccountProtectedUsersSid = 107 + WinCapabilityAppointmentsSid = 108 + WinCapabilityContactsSid = 109 + WinAccountDefaultSystemManagedSid = 110 + WinBuiltinDefaultSystemManagedGroupSid = 111 + WinBuiltinStorageReplicaAdminsSid = 112 + WinAccountKeyAdminsSid = 113 + WinAccountEnterpriseKeyAdminsSid = 114 + WinAuthenticationKeyTrustSid = 115 + WinAuthenticationKeyPropertyMFASid = 116 + WinAuthenticationKeyPropertyAttestationSid = 117 + WinAuthenticationFreshKeyAuthSid = 118 + WinBuiltinDeviceOwnersSid = 119 +) + +// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the local machine. +func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { + return CreateWellKnownDomainSid(sidType, nil) +} + +// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the domain specified by the domainSid parameter. +func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { + n := uint32(50) + for { + b := make([]byte, n) + sid := (*SID)(unsafe.Pointer(&b[0])) + err := createWellKnownSid(sidType, domainSid, sid, &n) + if err == nil { + return sid, nil + } + if err != ERROR_INSUFFICIENT_BUFFER { + return nil, err + } + if n <= uint32(len(b)) { + return nil, err + } + } +} + +const ( + // do not reorder + TOKEN_ASSIGN_PRIMARY = 1 << iota + TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY + TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES + TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT + TOKEN_ADJUST_SESSIONID + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | + TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | + TOKEN_IMPERSONATE | + TOKEN_QUERY | + TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY + TOKEN_WRITE = STANDARD_RIGHTS_WRITE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE +) + +const ( + // do not reorder + TokenUser = 1 + iota + TokenGroups + TokenPrivileges + TokenOwner + TokenPrimaryGroup + TokenDefaultDacl + TokenSource + TokenType + TokenImpersonationLevel + TokenStatistics + TokenRestrictedSids + TokenSessionId + TokenGroupsAndPrivileges + TokenSessionReference + TokenSandBoxInert + TokenAuditPolicy + TokenOrigin + TokenElevationType + TokenLinkedToken + TokenElevation + TokenHasRestrictions + TokenAccessInformation + TokenVirtualizationAllowed + TokenVirtualizationEnabled + TokenIntegrityLevel + TokenUIAccess + TokenMandatoryPolicy + TokenLogonSid + MaxTokenInfoClass +) + +type SIDAndAttributes struct { + Sid *SID + Attributes uint32 +} + +type Tokenuser struct { + User SIDAndAttributes +} + +type Tokenprimarygroup struct { + PrimaryGroup *SID +} + +type Tokengroups struct { + GroupCount uint32 + Groups [1]SIDAndAttributes +} + +// Authorization Functions +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW +//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW + +// An access token contains the security information for a logon session. +// The system creates an access token when a user logs on, and every +// process executed on behalf of the user has a copy of the token. +// The token identifies the user, the user's groups, and the user's +// privileges. The system uses the token to control access to securable +// objects and to control the ability of the user to perform various +// system-related operations on the local computer. +type Token Handle + +// OpenCurrentProcessToken opens the access token +// associated with current process. +func OpenCurrentProcessToken() (Token, error) { + p, e := GetCurrentProcess() + if e != nil { + return 0, e + } + var t Token + e = OpenProcessToken(p, TOKEN_QUERY, &t) + if e != nil { + return 0, e + } + return t, nil +} + +// Close releases access to access token. +func (t Token) Close() error { + return CloseHandle(Handle(t)) +} + +// getInfo retrieves a specified type of information about an access token. +func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) { + n := uint32(initSize) + for { + b := make([]byte, n) + e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n) + if e == nil { + return unsafe.Pointer(&b[0]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, e + } + if n <= uint32(len(b)) { + return nil, e + } + } +} + +// GetTokenUser retrieves access token t user account information. +func (t Token) GetTokenUser() (*Tokenuser, error) { + i, e := t.getInfo(TokenUser, 50) + if e != nil { + return nil, e + } + return (*Tokenuser)(i), nil +} + +// GetTokenGroups retrieves group accounts associated with access token t. +func (t Token) GetTokenGroups() (*Tokengroups, error) { + i, e := t.getInfo(TokenGroups, 50) + if e != nil { + return nil, e + } + return (*Tokengroups)(i), nil +} + +// GetTokenPrimaryGroup retrieves access token t primary group information. +// A pointer to a SID structure representing a group that will become +// the primary group of any objects created by a process using this access token. +func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) { + i, e := t.getInfo(TokenPrimaryGroup, 50) + if e != nil { + return nil, e + } + return (*Tokenprimarygroup)(i), nil +} + +// GetUserProfileDirectory retrieves path to the +// root directory of the access token t user's profile. +func (t Token) GetUserProfileDirectory() (string, error) { + n := uint32(100) + for { + b := make([]uint16, n) + e := GetUserProfileDirectory(t, &b[0], &n) + if e == nil { + return UTF16ToString(b), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +// GetSystemDirectory retrieves path to current location of the system +// directory, which is typically, though not always, C:\Windows\System32. +func GetSystemDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// IsMember reports whether the access token t is a member of the provided SID. +func (t Token) IsMember(sid *SID) (bool, error) { + var b int32 + if e := checkTokenMembership(t, sid, &b); e != nil { + return false, e + } + return b != 0, nil +} diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go new file mode 100644 index 0000000..994b129 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/service.go @@ -0,0 +1,181 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +const ( + SC_MANAGER_CONNECT = 1 + SC_MANAGER_CREATE_SERVICE = 2 + SC_MANAGER_ENUMERATE_SERVICE = 4 + SC_MANAGER_LOCK = 8 + SC_MANAGER_QUERY_LOCK_STATUS = 16 + SC_MANAGER_MODIFY_BOOT_CONFIG = 32 + SC_MANAGER_ALL_ACCESS = 0xf003f +) + +//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW + +const ( + SERVICE_KERNEL_DRIVER = 1 + SERVICE_FILE_SYSTEM_DRIVER = 2 + SERVICE_ADAPTER = 4 + SERVICE_RECOGNIZER_DRIVER = 8 + SERVICE_WIN32_OWN_PROCESS = 16 + SERVICE_WIN32_SHARE_PROCESS = 32 + SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS = 256 + SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER + SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS + + SERVICE_BOOT_START = 0 + SERVICE_SYSTEM_START = 1 + SERVICE_AUTO_START = 2 + SERVICE_DEMAND_START = 3 + SERVICE_DISABLED = 4 + + SERVICE_ERROR_IGNORE = 0 + SERVICE_ERROR_NORMAL = 1 + SERVICE_ERROR_SEVERE = 2 + SERVICE_ERROR_CRITICAL = 3 + + SC_STATUS_PROCESS_INFO = 0 + + SC_ACTION_NONE = 0 + SC_ACTION_RESTART = 1 + SC_ACTION_REBOOT = 2 + SC_ACTION_RUN_COMMAND = 3 + + SERVICE_STOPPED = 1 + SERVICE_START_PENDING = 2 + SERVICE_STOP_PENDING = 3 + SERVICE_RUNNING = 4 + SERVICE_CONTINUE_PENDING = 5 + SERVICE_PAUSE_PENDING = 6 + SERVICE_PAUSED = 7 + SERVICE_NO_CHANGE = 0xffffffff + + SERVICE_ACCEPT_STOP = 1 + SERVICE_ACCEPT_PAUSE_CONTINUE = 2 + SERVICE_ACCEPT_SHUTDOWN = 4 + SERVICE_ACCEPT_PARAMCHANGE = 8 + SERVICE_ACCEPT_NETBINDCHANGE = 16 + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32 + SERVICE_ACCEPT_POWEREVENT = 64 + SERVICE_ACCEPT_SESSIONCHANGE = 128 + + SERVICE_CONTROL_STOP = 1 + SERVICE_CONTROL_PAUSE = 2 + SERVICE_CONTROL_CONTINUE = 3 + SERVICE_CONTROL_INTERROGATE = 4 + SERVICE_CONTROL_SHUTDOWN = 5 + SERVICE_CONTROL_PARAMCHANGE = 6 + SERVICE_CONTROL_NETBINDADD = 7 + SERVICE_CONTROL_NETBINDREMOVE = 8 + SERVICE_CONTROL_NETBINDENABLE = 9 + SERVICE_CONTROL_NETBINDDISABLE = 10 + SERVICE_CONTROL_DEVICEEVENT = 11 + SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12 + SERVICE_CONTROL_POWEREVENT = 13 + SERVICE_CONTROL_SESSIONCHANGE = 14 + + SERVICE_ACTIVE = 1 + SERVICE_INACTIVE = 2 + SERVICE_STATE_ALL = 3 + + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + + SC_ENUM_PROCESS_INFO = 0 +) + +type SERVICE_STATUS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 +} + +type SERVICE_TABLE_ENTRY struct { + ServiceName *uint16 + ServiceProc uintptr +} + +type QUERY_SERVICE_CONFIG struct { + ServiceType uint32 + StartType uint32 + ErrorControl uint32 + BinaryPathName *uint16 + LoadOrderGroup *uint16 + TagId uint32 + Dependencies *uint16 + ServiceStartName *uint16 + DisplayName *uint16 +} + +type SERVICE_DESCRIPTION struct { + Description *uint16 +} + +type SERVICE_STATUS_PROCESS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 + ProcessId uint32 + ServiceFlags uint32 +} + +type ENUM_SERVICE_STATUS_PROCESS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatusProcess SERVICE_STATUS_PROCESS +} + +type SERVICE_FAILURE_ACTIONS struct { + ResetPeriod uint32 + RebootMsg *uint16 + Command *uint16 + ActionsCount uint32 + Actions *SC_ACTION +} + +type SC_ACTION struct { + Type uint32 + Delay uint32 +} + +//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle +//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW +//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW +//sys DeleteService(service Handle) (err error) = advapi32.DeleteService +//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW +//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService +//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW +//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus +//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW +//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW +//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W +//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W +//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go new file mode 100644 index 0000000..917cc2a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/str.go @@ -0,0 +1,22 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + itoa(-val) + } + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go new file mode 100644 index 0000000..af828a9 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall.go @@ -0,0 +1,74 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +// Package windows contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display the OS-specific documentation for the current +// system. If you want godoc to display syscall documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package windows // import "golang.org/x/sys/windows" + +import ( + "syscall" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + for i := 0; i < len(s); i++ { + if s[i] == 0 { + return nil, syscall.EINVAL + } + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mksyscall.pl. +var _zero uintptr + +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go new file mode 100644 index 0000000..4c9bc55 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -0,0 +1,1220 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows system calls. + +package windows + +import ( + errorspkg "errors" + "sync" + "syscall" + "unicode/utf16" + "unsafe" +) + +type Handle uintptr + +const ( + InvalidHandle = ^Handle(0) + + // Flags for DefineDosDevice. + DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 + DDD_NO_BROADCAST_SYSTEM = 0x00000008 + DDD_RAW_TARGET_PATH = 0x00000001 + DDD_REMOVE_DEFINITION = 0x00000002 + + // Return values for GetDriveType. + DRIVE_UNKNOWN = 0 + DRIVE_NO_ROOT_DIR = 1 + DRIVE_REMOVABLE = 2 + DRIVE_FIXED = 3 + DRIVE_REMOTE = 4 + DRIVE_CDROM = 5 + DRIVE_RAMDISK = 6 + + // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. + FILE_CASE_SENSITIVE_SEARCH = 0x00000001 + FILE_CASE_PRESERVED_NAMES = 0x00000002 + FILE_FILE_COMPRESSION = 0x00000010 + FILE_DAX_VOLUME = 0x20000000 + FILE_NAMED_STREAMS = 0x00040000 + FILE_PERSISTENT_ACLS = 0x00000008 + FILE_READ_ONLY_VOLUME = 0x00080000 + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 + FILE_SUPPORTS_ENCRYPTION = 0x00020000 + FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 + FILE_SUPPORTS_HARD_LINKS = 0x00400000 + FILE_SUPPORTS_OBJECT_IDS = 0x00010000 + FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 + FILE_SUPPORTS_SPARSE_FILES = 0x00000040 + FILE_SUPPORTS_TRANSACTIONS = 0x00200000 + FILE_SUPPORTS_USN_JOURNAL = 0x02000000 + FILE_UNICODE_ON_DISK = 0x00000004 + FILE_VOLUME_IS_COMPRESSED = 0x00008000 + FILE_VOLUME_QUOTAS = 0x00000020 +) + +// StringToUTF16 is deprecated. Use UTF16FromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16(s string) []uint16 { + a, err := UTF16FromString(s) + if err != nil { + panic("windows: string with NUL passed to StringToUTF16") + } + return a +} + +// UTF16FromString returns the UTF-16 encoding of the UTF-8 string +// s, with a terminating NUL added. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func UTF16FromString(s string) ([]uint16, error) { + for i := 0; i < len(s); i++ { + if s[i] == 0 { + return nil, syscall.EINVAL + } + } + return utf16.Encode([]rune(s + "\x00")), nil +} + +// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, +// with a terminating NUL removed. +func UTF16ToString(s []uint16) string { + for i, v := range s { + if v == 0 { + s = s[0:i] + break + } + } + return string(utf16.Decode(s)) +} + +// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] } + +// UTF16PtrFromString returns pointer to the UTF-16 encoding of +// the UTF-8 string s, with a terminating NUL added. If s +// contains a NUL byte at any location, it returns (nil, syscall.EINVAL). +func UTF16PtrFromString(s string) (*uint16, error) { + a, err := UTF16FromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +func Getpagesize() int { return 4096 } + +// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallback(fn interface{}) uintptr { + return syscall.NewCallback(fn) +} + +// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallbackCDecl(fn interface{}) uintptr { + return syscall.NewCallbackCDecl(fn) +} + +// windows api calls + +//sys GetLastError() (lasterr error) +//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW +//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW +//sys FreeLibrary(handle Handle) (err error) +//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) +//sys GetVersion() (ver uint32, err error) +//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW +//sys ExitProcess(exitcode uint32) +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) +//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) +//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) +//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] +//sys CloseHandle(handle Handle) (err error) +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] +//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) +//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW +//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW +//sys FindClose(handle Handle) (err error) +//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) +//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) +//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW +//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW +//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW +//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW +//sys DeleteFile(path *uint16) (err error) = DeleteFileW +//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW +//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW +//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW +//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW +//sys SetEndOfFile(handle Handle) (err error) +//sys GetSystemTimeAsFileTime(time *Filetime) +//sys GetSystemTimePreciseAsFileTime(time *Filetime) +//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) +//sys CancelIo(s Handle) (err error) +//sys CancelIoEx(s Handle, o *Overlapped) (err error) +//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) +//sys TerminateProcess(handle Handle, exitcode uint32) (err error) +//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) +//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW +//sys GetCurrentProcess() (pseudoHandle Handle, err error) +//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) +//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) +//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] +//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects +//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW +//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) +//sys GetFileType(filehandle Handle) (n uint32, err error) +//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW +//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext +//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom +//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW +//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW +//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW +//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW +//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW +//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW +//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW +//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW +//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] +//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) +//sys FlushFileBuffers(handle Handle) (err error) +//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW +//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW +//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW +//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW +//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) +//sys UnmapViewOfFile(addr uintptr) (err error) +//sys FlushViewOfFile(addr uintptr, length uintptr) (err error) +//sys VirtualLock(addr uintptr, length uintptr) (err error) +//sys VirtualUnlock(addr uintptr, length uintptr) (err error) +//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc +//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree +//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect +//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile +//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW +//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore +//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore +//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW +//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey +//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW +//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW +//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW +//sys getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode +//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode +//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo +//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW +//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW +//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot +//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW +//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW +//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW +//sys GetCurrentThreadId() (id uint32) +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW +//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW +//sys SetEvent(event Handle) (err error) = kernel32.SetEvent +//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent +//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent + +// Volume Management Functions +//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW +//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW +//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW +//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW +//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW +//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW +//sys FindVolumeClose(findVolume Handle) (err error) +//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW +//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] +//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW +//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW +//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW +//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW +//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW +//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW +//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW +//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW +//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW + +// syscall interface implementation for other packages + +// GetProcAddressByOrdinal retrieves the address of the exported +// function from module by ordinal. +func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) + proc = uintptr(r0) + if proc == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Exit(code int) { ExitProcess(uint32(code)) } + +func makeInheritSa() *SecurityAttributes { + var sa SecurityAttributes + sa.Length = uint32(unsafe.Sizeof(sa)) + sa.InheritHandle = 1 + return &sa +} + +func Open(path string, mode int, perm uint32) (fd Handle, err error) { + if len(path) == 0 { + return InvalidHandle, ERROR_FILE_NOT_FOUND + } + pathp, err := UTF16PtrFromString(path) + if err != nil { + return InvalidHandle, err + } + var access uint32 + switch mode & (O_RDONLY | O_WRONLY | O_RDWR) { + case O_RDONLY: + access = GENERIC_READ + case O_WRONLY: + access = GENERIC_WRITE + case O_RDWR: + access = GENERIC_READ | GENERIC_WRITE + } + if mode&O_CREAT != 0 { + access |= GENERIC_WRITE + } + if mode&O_APPEND != 0 { + access &^= GENERIC_WRITE + access |= FILE_APPEND_DATA + } + sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE) + var sa *SecurityAttributes + if mode&O_CLOEXEC == 0 { + sa = makeInheritSa() + } + var createmode uint32 + switch { + case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL): + createmode = CREATE_NEW + case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC): + createmode = CREATE_ALWAYS + case mode&O_CREAT == O_CREAT: + createmode = OPEN_ALWAYS + case mode&O_TRUNC == O_TRUNC: + createmode = TRUNCATE_EXISTING + default: + createmode = OPEN_EXISTING + } + h, e := CreateFile(pathp, access, sharemode, sa, createmode, FILE_ATTRIBUTE_NORMAL, 0) + return h, e +} + +func Read(fd Handle, p []byte) (n int, err error) { + var done uint32 + e := ReadFile(fd, p, &done, nil) + if e != nil { + if e == ERROR_BROKEN_PIPE { + // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin + return 0, nil + } + return 0, e + } + if raceenabled { + if done > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), int(done)) + } + raceAcquire(unsafe.Pointer(&ioSync)) + } + return int(done), nil +} + +func Write(fd Handle, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var done uint32 + e := WriteFile(fd, p, &done, nil) + if e != nil { + return 0, e + } + if raceenabled && done > 0 { + raceReadRange(unsafe.Pointer(&p[0]), int(done)) + } + return int(done), nil +} + +var ioSync int64 + +func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) { + var w uint32 + switch whence { + case 0: + w = FILE_BEGIN + case 1: + w = FILE_CURRENT + case 2: + w = FILE_END + } + hi := int32(offset >> 32) + lo := int32(offset) + // use GetFileType to check pipe, pipe can't do seek + ft, _ := GetFileType(fd) + if ft == FILE_TYPE_PIPE { + return 0, syscall.EPIPE + } + rlo, e := SetFilePointer(fd, lo, &hi, w) + if e != nil { + return 0, e + } + return int64(hi)<<32 + int64(rlo), nil +} + +func Close(fd Handle) (err error) { + return CloseHandle(fd) +} + +var ( + Stdin = getStdHandle(STD_INPUT_HANDLE) + Stdout = getStdHandle(STD_OUTPUT_HANDLE) + Stderr = getStdHandle(STD_ERROR_HANDLE) +) + +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) + CloseOnExec(r) + return r +} + +const ImplementsGetwd = true + +func Getwd() (wd string, err error) { + b := make([]uint16, 300) + n, e := GetCurrentDirectory(uint32(len(b)), &b[0]) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Chdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return SetCurrentDirectory(pathp) +} + +func Mkdir(path string, mode uint32) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return CreateDirectory(pathp, nil) +} + +func Rmdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return RemoveDirectory(pathp) +} + +func Unlink(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return DeleteFile(pathp) +} + +func Rename(oldpath, newpath string) (err error) { + from, err := UTF16PtrFromString(oldpath) + if err != nil { + return err + } + to, err := UTF16PtrFromString(newpath) + if err != nil { + return err + } + return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) +} + +func ComputerName() (name string, err error) { + var n uint32 = MAX_COMPUTERNAME_LENGTH + 1 + b := make([]uint16, n) + e := GetComputerName(&b[0], &n) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Ftruncate(fd Handle, length int64) (err error) { + curoffset, e := Seek(fd, 0, 1) + if e != nil { + return e + } + defer Seek(fd, curoffset, 0) + _, e = Seek(fd, length, 0) + if e != nil { + return e + } + e = SetEndOfFile(fd) + if e != nil { + return e + } + return nil +} + +func Gettimeofday(tv *Timeval) (err error) { + var ft Filetime + GetSystemTimeAsFileTime(&ft) + *tv = NsecToTimeval(ft.Nanoseconds()) + return nil +} + +func Pipe(p []Handle) (err error) { + if len(p) != 2 { + return syscall.EINVAL + } + var r, w Handle + e := CreatePipe(&r, &w, makeInheritSa(), 0) + if e != nil { + return e + } + p[0] = r + p[1] = w + return nil +} + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer Close(h) + a := NsecToFiletime(tv[0].Nanoseconds()) + w := NsecToFiletime(tv[1].Nanoseconds()) + return SetFileTime(h, nil, &a, &w) +} + +func UtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer Close(h) + a := NsecToFiletime(TimespecToNsec(ts[0])) + w := NsecToFiletime(TimespecToNsec(ts[1])) + return SetFileTime(h, nil, &a, &w) +} + +func Fsync(fd Handle) (err error) { + return FlushFileBuffers(fd) +} + +func Chmod(path string, mode uint32) (err error) { + if mode == 0 { + return syscall.EINVAL + } + p, e := UTF16PtrFromString(path) + if e != nil { + return e + } + attrs, e := GetFileAttributes(p) + if e != nil { + return e + } + if mode&S_IWRITE != 0 { + attrs &^= FILE_ATTRIBUTE_READONLY + } else { + attrs |= FILE_ATTRIBUTE_READONLY + } + return SetFileAttributes(p, attrs) +} + +func LoadGetSystemTimePreciseAsFileTime() error { + return procGetSystemTimePreciseAsFileTime.Find() +} + +func LoadCancelIoEx() error { + return procCancelIoEx.Find() +} + +func LoadSetFileCompletionNotificationModes() error { + return procSetFileCompletionNotificationModes.Find() +} + +func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + // Every other win32 array API takes arguments as "pointer, count", except for this function. So we + // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore + // trivially stub this ourselves. + + var handlePtr *Handle + if len(handles) > 0 { + handlePtr = &handles[0] + } + return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds) +} + +// net api calls + +const socket_error = uintptr(^uint32(0)) + +//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup +//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup +//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl +//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket +//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt +//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt +//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind +//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect +//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname +//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername +//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen +//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown +//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket +//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx +//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs +//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv +//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend +//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom +//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname +//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname +//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs +//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname +//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W +//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree +//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W +//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW +//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW +//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry +//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo +//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes +//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW +//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses +//sys GetACP() (acp uint32) = kernel32.GetACP +//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [100]int8 +} + +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs +} + +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type RawSockaddrUnix struct { + Family uint16 + Path [UNIX_PATH_MAX]int8 +} + +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, syscall.EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := int32(2) + if n > 0 { + sl += int32(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, syscall.EAFNOSUPPORT +} + +func Socket(domain, typ, proto int) (fd Handle, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return InvalidHandle, syscall.EAFNOSUPPORT + } + return socket(int32(domain), int32(typ), int32(proto)) +} + +func SetsockoptInt(fd Handle, level, opt int, value int) (err error) { + v := int32(value) + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v))) +} + +func Bind(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getsockname(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getsockname(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Getpeername(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getpeername(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Listen(s Handle, n int) (err error) { + return listen(s, int32(n)) +} + +func Shutdown(fd Handle, how int) (err error) { + return shutdown(fd, int32(how)) +} + +func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { + rsa, l, err := to.sockaddr() + if err != nil { + return err + } + return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) +} + +func LoadGetAddrInfo() error { + return procGetAddrInfoW.Find() +} + +var connectExFunc struct { + once sync.Once + addr uintptr + err error +} + +func LoadConnectEx() error { + connectExFunc.once.Do(func() { + var s Handle + s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) + if connectExFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + connectExFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), + uint32(unsafe.Sizeof(WSAID_CONNECTEX)), + (*byte)(unsafe.Pointer(&connectExFunc.addr)), + uint32(unsafe.Sizeof(connectExFunc.addr)), + &n, nil, 0) + }) + return connectExFunc.err +} + +func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error { + err := LoadConnectEx() + if err != nil { + return errorspkg.New("failed to find ConnectEx: " + err.Error()) + } + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) +} + +var sendRecvMsgFunc struct { + once sync.Once + sendAddr uintptr + recvAddr uintptr + err error +} + +func loadWSASendRecvMsg() error { + sendRecvMsgFunc.once.Do(func() { + var s Handle + s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + if sendRecvMsgFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), + uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), + &n, nil, 0) + if sendRecvMsgFunc.err != nil { + return + } + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), + uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), + &n, nil, 0) + }) + return sendRecvMsgFunc.err +} + +func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + +func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + +// Invented structures to support what package os expects. +type Rusage struct { + CreationTime Filetime + ExitTime Filetime + KernelTime Filetime + UserTime Filetime +} + +type WaitStatus struct { + ExitCode uint32 +} + +func (w WaitStatus) Exited() bool { return true } + +func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) } + +func (w WaitStatus) Signal() Signal { return -1 } + +func (w WaitStatus) CoreDump() bool { return false } + +func (w WaitStatus) Stopped() bool { return false } + +func (w WaitStatus) Continued() bool { return false } + +func (w WaitStatus) StopSignal() Signal { return -1 } + +func (w WaitStatus) Signaled() bool { return false } + +func (w WaitStatus) TrapCause() int { return -1 } + +// Timespec is an invented structure on Windows, but here for +// consistency with the corresponding package for other operating systems. +type Timespec struct { + Sec int64 + Nsec int64 +} + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = nsec / 1e9 + ts.Nsec = nsec % 1e9 + return +} + +// TODO(brainman): fix all needed for net + +func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS } +func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) { + return 0, nil, syscall.EWINDOWS +} +func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) { return syscall.EWINDOWS } +func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS } + +// The Linger struct is wrong but we only noticed after Go 1. +// sysLinger is the real system call structure. + +// BUG(brainman): The definition of Linger is not appropriate for direct use +// with Setsockopt and Getsockopt. +// Use SetsockoptLinger instead. + +type Linger struct { + Onoff int32 + Linger int32 +} + +type sysLinger struct { + Onoff uint16 + Linger uint16 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS } + +func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { + sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys))) +} + +func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) +} +func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) +} +func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { + return syscall.EWINDOWS +} + +func Getpid() (pid int) { return int(getCurrentProcessId()) } + +func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { + // NOTE(rsc): The Win32finddata struct is wrong for the system call: + // the two paths are each one uint16 short. Use the correct struct, + // a win32finddata1, and then copy the results out. + // There is no loss of expressivity here, because the final + // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that. + // For Go 1.1, we might avoid the allocation of win32finddata1 here + // by adding a final Bug [2]uint16 field to the struct and then + // adjusting the fields in the result directly. + var data1 win32finddata1 + handle, err = findFirstFile1(name, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func FindNextFile(handle Handle, data *Win32finddata) (err error) { + var data1 win32finddata1 + err = findNextFile1(handle, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func getProcessEntry(pid int) (*ProcessEntry32, error) { + snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err + } + defer CloseHandle(snapshot) + var procEntry ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = Process32First(snapshot, &procEntry); err != nil { + return nil, err + } + for { + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil + } + err = Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err + } + } +} + +func Getppid() (ppid int) { + pe, err := getProcessEntry(Getpid()) + if err != nil { + return -1 + } + return int(pe.ParentProcessID) +} + +// TODO(brainman): fix all needed for os +func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS } +func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS } +func Symlink(path, link string) (err error) { return syscall.EWINDOWS } + +func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS } +func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS } + +func Getuid() (uid int) { return -1 } +func Geteuid() (euid int) { return -1 } +func Getgid() (gid int) { return -1 } +func Getegid() (egid int) { return -1 } +func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS } + +type Signal int + +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa(int(s)) +} + +func LoadCreateSymbolicLink() error { + return procCreateSymbolicLinkW.Find() +} + +// Readlink returns the destination of the named symbolic link. +func Readlink(path string, buf []byte) (n int, err error) { + fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING, + FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0) + if err != nil { + return -1, err + } + defer CloseHandle(fd) + + rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE) + var bytesReturned uint32 + err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil) + if err != nil { + return -1, err + } + + rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0])) + var s string + switch rdb.ReparseTag { + case IO_REPARSE_TAG_SYMLINK: + data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + case IO_REPARSE_TAG_MOUNT_POINT: + data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + default: + // the path is not a symlink or junction but another type of reparse + // point + return -1, syscall.ENOENT + } + n = copy(buf, []byte(s)) + + return n, nil +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000..ee27936 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,1441 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import "syscall" + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +const ( + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_APPEND_DATA = 0x00000004 + FILE_WRITE_ATTRIBUTES = 0x00000100 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_DEVICE = 0x00000040 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_TEMPORARY = 0x00000100 + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + FILE_ATTRIBUTE_COMPRESSED = 0x00000800 + FILE_ATTRIBUTE_OFFLINE = 0x00001000 + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 + FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 + FILE_ATTRIBUTE_VIRTUAL = 0x00010000 + FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 + FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 + FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 + FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 + FILE_FLAG_OPEN_NO_RECALL = 0x00100000 + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_SESSION_AWARE = 0x00800000 + FILE_FLAG_POSIX_SEMANTICS = 0x01000000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 + FILE_FLAG_RANDOM_ACCESS = 0x10000000 + FILE_FLAG_NO_BUFFERING = 0x20000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + FILE_FLAG_WRITE_THROUGH = 0x80000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_COMPUTERNAME_LENGTH = 15 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + PROCESS_TERMINATE = 1 + PROCESS_QUERY_INFORMATION = 0x00000400 + SYNCHRONIZE = 0x00100000 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // Process creation flags. + CREATE_BREAKAWAY_FROM_JOB = 0x01000000 + CREATE_DEFAULT_ERROR_MODE = 0x04000000 + CREATE_NEW_CONSOLE = 0x00000010 + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_NO_WINDOW = 0x08000000 + CREATE_PROTECTED_PROCESS = 0x00040000 + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 + CREATE_SEPARATE_WOW_VDM = 0x00000800 + CREATE_SHARED_WOW_VDM = 0x00001000 + CREATE_SUSPENDED = 0x00000004 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + DEBUG_ONLY_THIS_PROCESS = 0x00000002 + DEBUG_PROCESS = 0x00000001 + DETACHED_PROCESS = 0x00000008 + EXTENDED_STARTUPINFO_PRESENT = 0x00080000 + INHERIT_PARENT_AFFINITY = 0x00010000 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // filters for ReadDirectoryChangesW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + /* msgAndCertEncodingType values for CertOpenStore function */ + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + /* storeProvider values for CertOpenStore function */ + CERT_STORE_PROV_MSG = 1 + CERT_STORE_PROV_MEMORY = 2 + CERT_STORE_PROV_FILE = 3 + CERT_STORE_PROV_REG = 4 + CERT_STORE_PROV_PKCS7 = 5 + CERT_STORE_PROV_SERIALIZED = 6 + CERT_STORE_PROV_FILENAME_A = 7 + CERT_STORE_PROV_FILENAME_W = 8 + CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W + CERT_STORE_PROV_SYSTEM_A = 9 + CERT_STORE_PROV_SYSTEM_W = 10 + CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W + CERT_STORE_PROV_COLLECTION = 11 + CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 + CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 + CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W + CERT_STORE_PROV_PHYSICAL_W = 14 + CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W + CERT_STORE_PROV_SMART_CARD_W = 15 + CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W + CERT_STORE_PROV_LDAP_W = 16 + CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W + CERT_STORE_PROV_PKCS12 = 17 + + /* store characteristics (low WORD of flag) for CertOpenStore function */ + CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 + CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + CERT_STORE_DELETE_FLAG = 0x00000010 + CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 + CERT_STORE_SHARE_STORE_FLAG = 0x00000040 + CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 + CERT_STORE_MANIFOLD_FLAG = 0x00000100 + CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 + CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 + CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 + CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 + CERT_STORE_CREATE_NEW_FLAG = 0x00002000 + CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 + CERT_STORE_READONLY_FLAG = 0x00008000 + + /* store locations (high WORD of flag) for CertOpenStore function */ + CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 + CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 + CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 + CERT_SYSTEM_STORE_SERVICES = 0x00050000 + CERT_SYSTEM_STORE_USERS = 0x00060000 + CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 + CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 + CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 + + /* Miscellaneous high-WORD flags for CertOpenStore function */ + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 + CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 + CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 + CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 + CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 + CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 + CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 + CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 + CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 + CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 + + /* addDisposition values for CertAddCertificateContextToStore function */ + CERT_STORE_ADD_NEW = 1 + CERT_STORE_ADD_USE_EXISTING = 2 + CERT_STORE_ADD_REPLACE_EXISTING = 3 + CERT_STORE_ADD_ALWAYS = 4 + CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 + CERT_STORE_ADD_NEWER = 6 + CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 + + /* ErrorStatus values for CertTrustStatus struct */ + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 + CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + /* InfoStatus values for CertTrustStatus struct */ + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 + CERT_TRUST_IS_SELF_SIGNED = 0x00000008 + CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 + CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 + CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 + CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 + CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 + CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 + CERT_TRUST_IS_CA_TRUSTED = 0x00004000 + CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + + /* policyOID values for CertVerifyCertificateChainPolicy function */ + CERT_CHAIN_POLICY_BASE = 1 + CERT_CHAIN_POLICY_AUTHENTICODE = 2 + CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 + CERT_CHAIN_POLICY_SSL = 4 + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 + CERT_CHAIN_POLICY_NT_AUTH = 6 + CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 + CERT_CHAIN_POLICY_EV = 8 + CERT_CHAIN_POLICY_SSL_F12 = 9 + + /* AuthType values for SSLExtraCertChainPolicyPara struct */ + AUTHTYPE_CLIENT = 1 + AUTHTYPE_SERVER = 2 + + /* Checks values for SSLExtraCertChainPolicyPara struct */ + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 +) + +var ( + OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") + OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") + OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") +) + +// Pointer represents a pointer to an arbitrary Windows type. +// +// Pointer-typed fields may point to one of many different types. It's +// up to the caller to provide a pointer to the appropriate type, cast +// to Pointer. The caller must obey the unsafe.Pointer rules while +// doing so. +type Pointer *struct{} + +// Invented values to support what package os expects. +type Timeval struct { + Sec int32 + Usec int32 +} + +func (tv *Timeval) Nanoseconds() int64 { + return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + tv.Sec = int32(nsec / 1e9) + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor uintptr + InheritHandle uint32 +} + +type Overlapped struct { + Internal uintptr + InternalHigh uintptr + Offset uint32 + OffsetHigh uint32 + HEvent Handle +} + +type FileNotifyInformation struct { + NextEntryOffset uint32 + Action uint32 + FileNameLength uint32 + FileName uint16 +} + +type Filetime struct { + LowDateTime uint32 + HighDateTime uint32 +} + +// Nanoseconds returns Filetime ft in nanoseconds +// since Epoch (00:00:00 UTC, January 1, 1970). +func (ft *Filetime) Nanoseconds() int64 { + // 100-nanosecond intervals since January 1, 1601 + nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) + // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) + nsec -= 116444736000000000 + // convert into nanoseconds + nsec *= 100 + return nsec +} + +func NsecToFiletime(nsec int64) (ft Filetime) { + // convert into 100-nanosecond + nsec /= 100 + // change starting time to January 1, 1601 + nsec += 116444736000000000 + // split into high / low + ft.LowDateTime = uint32(nsec & 0xffffffff) + ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_INET6 = 23 + AF_NETBIOS = 17 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_IPV6 = 0x29 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_DONTROUTE = 0x4 + MSG_WAITALL = 0x8 + + MSG_TRUNC = 0x0100 + MSG_CTRUNC = 0x0200 + MSG_BCAST = 0x0400 + MSG_MCAST = 0x0800 + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +type WSAMsg struct { + Name *syscall.RawSockaddrAny + Namelen int32 + Buffers *WSABuf + BufferCount uint32 + Control WSABuf + Flags uint32 +} + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertInfo struct { + // Not implemented +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo *CertInfo + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertTrustListInfo struct { + // Not implemented +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo *CertTrustListInfo + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationCrlInfo struct { + // Not implemented +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo Pointer + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara Pointer +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus Pointer +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +var WSAID_WSASENDMSG = GUID{ + 0xa441e712, + 0x754f, + 0x43ca, + [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, +} + +var WSAID_WSARECVMSG = GUID{ + 0xf689d7c8, + 0x6f1f, + 0x436b, + [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_GET_REPARSE_POINT = 0x900A8 + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + /* more fields might be present here. */ +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retrieve information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} + +const UNIX_PATH_MAX = 108 // defined in afunix.h diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go new file mode 100644 index 0000000..fe0ddd0 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go new file mode 100644 index 0000000..7e154c2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go new file mode 100644 index 0000000..74571e3 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_arm.go @@ -0,0 +1,22 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go new file mode 100644 index 0000000..2b4cea5 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -0,0 +1,6853 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import "syscall" + +const ( + FACILITY_NULL = 0 + FACILITY_RPC = 1 + FACILITY_DISPATCH = 2 + FACILITY_STORAGE = 3 + FACILITY_ITF = 4 + FACILITY_WIN32 = 7 + FACILITY_WINDOWS = 8 + FACILITY_SSPI = 9 + FACILITY_SECURITY = 9 + FACILITY_CONTROL = 10 + FACILITY_CERT = 11 + FACILITY_INTERNET = 12 + FACILITY_MEDIASERVER = 13 + FACILITY_MSMQ = 14 + FACILITY_SETUPAPI = 15 + FACILITY_SCARD = 16 + FACILITY_COMPLUS = 17 + FACILITY_AAF = 18 + FACILITY_URT = 19 + FACILITY_ACS = 20 + FACILITY_DPLAY = 21 + FACILITY_UMI = 22 + FACILITY_SXS = 23 + FACILITY_WINDOWS_CE = 24 + FACILITY_HTTP = 25 + FACILITY_USERMODE_COMMONLOG = 26 + FACILITY_WER = 27 + FACILITY_USERMODE_FILTER_MANAGER = 31 + FACILITY_BACKGROUNDCOPY = 32 + FACILITY_CONFIGURATION = 33 + FACILITY_WIA = 33 + FACILITY_STATE_MANAGEMENT = 34 + FACILITY_METADIRECTORY = 35 + FACILITY_WINDOWSUPDATE = 36 + FACILITY_DIRECTORYSERVICE = 37 + FACILITY_GRAPHICS = 38 + FACILITY_SHELL = 39 + FACILITY_NAP = 39 + FACILITY_TPM_SERVICES = 40 + FACILITY_TPM_SOFTWARE = 41 + FACILITY_UI = 42 + FACILITY_XAML = 43 + FACILITY_ACTION_QUEUE = 44 + FACILITY_PLA = 48 + FACILITY_WINDOWS_SETUP = 48 + FACILITY_FVE = 49 + FACILITY_FWP = 50 + FACILITY_WINRM = 51 + FACILITY_NDIS = 52 + FACILITY_USERMODE_HYPERVISOR = 53 + FACILITY_CMI = 54 + FACILITY_USERMODE_VIRTUALIZATION = 55 + FACILITY_USERMODE_VOLMGR = 56 + FACILITY_BCD = 57 + FACILITY_USERMODE_VHD = 58 + FACILITY_USERMODE_HNS = 59 + FACILITY_SDIAG = 60 + FACILITY_WEBSERVICES = 61 + FACILITY_WINPE = 61 + FACILITY_WPN = 62 + FACILITY_WINDOWS_STORE = 63 + FACILITY_INPUT = 64 + FACILITY_EAP = 66 + FACILITY_WINDOWS_DEFENDER = 80 + FACILITY_OPC = 81 + FACILITY_XPS = 82 + FACILITY_MBN = 84 + FACILITY_POWERSHELL = 84 + FACILITY_RAS = 83 + FACILITY_P2P_INT = 98 + FACILITY_P2P = 99 + FACILITY_DAF = 100 + FACILITY_BLUETOOTH_ATT = 101 + FACILITY_AUDIO = 102 + FACILITY_STATEREPOSITORY = 103 + FACILITY_VISUALCPP = 109 + FACILITY_SCRIPT = 112 + FACILITY_PARSE = 113 + FACILITY_BLB = 120 + FACILITY_BLB_CLI = 121 + FACILITY_WSBAPP = 122 + FACILITY_BLBUI = 128 + FACILITY_USN = 129 + FACILITY_USERMODE_VOLSNAP = 130 + FACILITY_TIERING = 131 + FACILITY_WSB_ONLINE = 133 + FACILITY_ONLINE_ID = 134 + FACILITY_DEVICE_UPDATE_AGENT = 135 + FACILITY_DRVSERVICING = 136 + FACILITY_DLS = 153 + FACILITY_DELIVERY_OPTIMIZATION = 208 + FACILITY_USERMODE_SPACES = 231 + FACILITY_USER_MODE_SECURITY_CORE = 232 + FACILITY_USERMODE_LICENSING = 234 + FACILITY_SOS = 160 + FACILITY_DEBUGGERS = 176 + FACILITY_SPP = 256 + FACILITY_RESTORE = 256 + FACILITY_DMSERVER = 256 + FACILITY_DEPLOYMENT_SERVICES_SERVER = 257 + FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258 + FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259 + FACILITY_DEPLOYMENT_SERVICES_UTIL = 260 + FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261 + FACILITY_DEPLOYMENT_SERVICES_PXE = 263 + FACILITY_DEPLOYMENT_SERVICES_TFTP = 264 + FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272 + FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290 + FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293 + FACILITY_LINGUISTIC_SERVICES = 305 + FACILITY_AUDIOSTREAMING = 1094 + FACILITY_ACCELERATOR = 1536 + FACILITY_WMAAECMA = 1996 + FACILITY_DIRECTMUSIC = 2168 + FACILITY_DIRECT3D10 = 2169 + FACILITY_DXGI = 2170 + FACILITY_DXGI_DDI = 2171 + FACILITY_DIRECT3D11 = 2172 + FACILITY_DIRECT3D11_DEBUG = 2173 + FACILITY_DIRECT3D12 = 2174 + FACILITY_DIRECT3D12_DEBUG = 2175 + FACILITY_LEAP = 2184 + FACILITY_AUDCLNT = 2185 + FACILITY_WINCODEC_DWRITE_DWM = 2200 + FACILITY_WINML = 2192 + FACILITY_DIRECT2D = 2201 + FACILITY_DEFRAG = 2304 + FACILITY_USERMODE_SDBUS = 2305 + FACILITY_JSCRIPT = 2306 + FACILITY_PIDGENX = 2561 + FACILITY_EAS = 85 + FACILITY_WEB = 885 + FACILITY_WEB_SOCKET = 886 + FACILITY_MOBILE = 1793 + FACILITY_SQLITE = 1967 + FACILITY_UTC = 1989 + FACILITY_WEP = 2049 + FACILITY_SYNCENGINE = 2050 + FACILITY_XBOX = 2339 + FACILITY_PIX = 2748 + ERROR_SUCCESS syscall.Errno = 0 + NO_ERROR = 0 + SEC_E_OK Handle = 0x00000000 + ERROR_INVALID_FUNCTION syscall.Errno = 1 + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_INVALID_HANDLE syscall.Errno = 6 + ERROR_ARENA_TRASHED syscall.Errno = 7 + ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8 + ERROR_INVALID_BLOCK syscall.Errno = 9 + ERROR_BAD_ENVIRONMENT syscall.Errno = 10 + ERROR_BAD_FORMAT syscall.Errno = 11 + ERROR_INVALID_ACCESS syscall.Errno = 12 + ERROR_INVALID_DATA syscall.Errno = 13 + ERROR_OUTOFMEMORY syscall.Errno = 14 + ERROR_INVALID_DRIVE syscall.Errno = 15 + ERROR_CURRENT_DIRECTORY syscall.Errno = 16 + ERROR_NOT_SAME_DEVICE syscall.Errno = 17 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_WRITE_PROTECT syscall.Errno = 19 + ERROR_BAD_UNIT syscall.Errno = 20 + ERROR_NOT_READY syscall.Errno = 21 + ERROR_BAD_COMMAND syscall.Errno = 22 + ERROR_CRC syscall.Errno = 23 + ERROR_BAD_LENGTH syscall.Errno = 24 + ERROR_SEEK syscall.Errno = 25 + ERROR_NOT_DOS_DISK syscall.Errno = 26 + ERROR_SECTOR_NOT_FOUND syscall.Errno = 27 + ERROR_OUT_OF_PAPER syscall.Errno = 28 + ERROR_WRITE_FAULT syscall.Errno = 29 + ERROR_READ_FAULT syscall.Errno = 30 + ERROR_GEN_FAILURE syscall.Errno = 31 + ERROR_SHARING_VIOLATION syscall.Errno = 32 + ERROR_LOCK_VIOLATION syscall.Errno = 33 + ERROR_WRONG_DISK syscall.Errno = 34 + ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_HANDLE_DISK_FULL syscall.Errno = 39 + ERROR_NOT_SUPPORTED syscall.Errno = 50 + ERROR_REM_NOT_LIST syscall.Errno = 51 + ERROR_DUP_NAME syscall.Errno = 52 + ERROR_BAD_NETPATH syscall.Errno = 53 + ERROR_NETWORK_BUSY syscall.Errno = 54 + ERROR_DEV_NOT_EXIST syscall.Errno = 55 + ERROR_TOO_MANY_CMDS syscall.Errno = 56 + ERROR_ADAP_HDW_ERR syscall.Errno = 57 + ERROR_BAD_NET_RESP syscall.Errno = 58 + ERROR_UNEXP_NET_ERR syscall.Errno = 59 + ERROR_BAD_REM_ADAP syscall.Errno = 60 + ERROR_PRINTQ_FULL syscall.Errno = 61 + ERROR_NO_SPOOL_SPACE syscall.Errno = 62 + ERROR_PRINT_CANCELLED syscall.Errno = 63 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65 + ERROR_BAD_DEV_TYPE syscall.Errno = 66 + ERROR_BAD_NET_NAME syscall.Errno = 67 + ERROR_TOO_MANY_NAMES syscall.Errno = 68 + ERROR_TOO_MANY_SESS syscall.Errno = 69 + ERROR_SHARING_PAUSED syscall.Errno = 70 + ERROR_REQ_NOT_ACCEP syscall.Errno = 71 + ERROR_REDIR_PAUSED syscall.Errno = 72 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_CANNOT_MAKE syscall.Errno = 82 + ERROR_FAIL_I24 syscall.Errno = 83 + ERROR_OUT_OF_STRUCTURES syscall.Errno = 84 + ERROR_ALREADY_ASSIGNED syscall.Errno = 85 + ERROR_INVALID_PASSWORD syscall.Errno = 86 + ERROR_INVALID_PARAMETER syscall.Errno = 87 + ERROR_NET_WRITE_FAULT syscall.Errno = 88 + ERROR_NO_PROC_SLOTS syscall.Errno = 89 + ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100 + ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101 + ERROR_SEM_IS_SET syscall.Errno = 102 + ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103 + ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104 + ERROR_SEM_OWNER_DIED syscall.Errno = 105 + ERROR_SEM_USER_LIMIT syscall.Errno = 106 + ERROR_DISK_CHANGE syscall.Errno = 107 + ERROR_DRIVE_LOCKED syscall.Errno = 108 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_OPEN_FAILED syscall.Errno = 110 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_DISK_FULL syscall.Errno = 112 + ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113 + ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114 + ERROR_INVALID_CATEGORY syscall.Errno = 117 + ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118 + ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119 + ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120 + ERROR_SEM_TIMEOUT syscall.Errno = 121 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_INVALID_NAME syscall.Errno = 123 + ERROR_INVALID_LEVEL syscall.Errno = 124 + ERROR_NO_VOLUME_LABEL syscall.Errno = 125 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_WAIT_NO_CHILDREN syscall.Errno = 128 + ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129 + ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130 + ERROR_NEGATIVE_SEEK syscall.Errno = 131 + ERROR_SEEK_ON_DEVICE syscall.Errno = 132 + ERROR_IS_JOIN_TARGET syscall.Errno = 133 + ERROR_IS_JOINED syscall.Errno = 134 + ERROR_IS_SUBSTED syscall.Errno = 135 + ERROR_NOT_JOINED syscall.Errno = 136 + ERROR_NOT_SUBSTED syscall.Errno = 137 + ERROR_JOIN_TO_JOIN syscall.Errno = 138 + ERROR_SUBST_TO_SUBST syscall.Errno = 139 + ERROR_JOIN_TO_SUBST syscall.Errno = 140 + ERROR_SUBST_TO_JOIN syscall.Errno = 141 + ERROR_BUSY_DRIVE syscall.Errno = 142 + ERROR_SAME_DRIVE syscall.Errno = 143 + ERROR_DIR_NOT_ROOT syscall.Errno = 144 + ERROR_DIR_NOT_EMPTY syscall.Errno = 145 + ERROR_IS_SUBST_PATH syscall.Errno = 146 + ERROR_IS_JOIN_PATH syscall.Errno = 147 + ERROR_PATH_BUSY syscall.Errno = 148 + ERROR_IS_SUBST_TARGET syscall.Errno = 149 + ERROR_SYSTEM_TRACE syscall.Errno = 150 + ERROR_INVALID_EVENT_COUNT syscall.Errno = 151 + ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152 + ERROR_INVALID_LIST_FORMAT syscall.Errno = 153 + ERROR_LABEL_TOO_LONG syscall.Errno = 154 + ERROR_TOO_MANY_TCBS syscall.Errno = 155 + ERROR_SIGNAL_REFUSED syscall.Errno = 156 + ERROR_DISCARDED syscall.Errno = 157 + ERROR_NOT_LOCKED syscall.Errno = 158 + ERROR_BAD_THREADID_ADDR syscall.Errno = 159 + ERROR_BAD_ARGUMENTS syscall.Errno = 160 + ERROR_BAD_PATHNAME syscall.Errno = 161 + ERROR_SIGNAL_PENDING syscall.Errno = 162 + ERROR_MAX_THRDS_REACHED syscall.Errno = 164 + ERROR_LOCK_FAILED syscall.Errno = 167 + ERROR_BUSY syscall.Errno = 170 + ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171 + ERROR_CANCEL_VIOLATION syscall.Errno = 173 + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174 + ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180 + ERROR_INVALID_ORDINAL syscall.Errno = 182 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186 + ERROR_SEM_NOT_FOUND syscall.Errno = 187 + ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188 + ERROR_INVALID_STACKSEG syscall.Errno = 189 + ERROR_INVALID_MODULETYPE syscall.Errno = 190 + ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191 + ERROR_EXE_MARKED_INVALID syscall.Errno = 192 + ERROR_BAD_EXE_FORMAT syscall.Errno = 193 + ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194 + ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195 + ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196 + ERROR_IOPL_NOT_ENABLED syscall.Errno = 197 + ERROR_INVALID_SEGDPL syscall.Errno = 198 + ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199 + ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200 + ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201 + ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_NO_SIGNAL_SENT syscall.Errno = 205 + ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206 + ERROR_RING2_STACK_IN_USE syscall.Errno = 207 + ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208 + ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209 + ERROR_THREAD_1_INACTIVE syscall.Errno = 210 + ERROR_LOCKED syscall.Errno = 212 + ERROR_TOO_MANY_MODULES syscall.Errno = 214 + ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215 + ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216 + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217 + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218 + ERROR_FILE_CHECKED_OUT syscall.Errno = 220 + ERROR_CHECKOUT_REQUIRED syscall.Errno = 221 + ERROR_BAD_FILE_TYPE syscall.Errno = 222 + ERROR_FILE_TOO_LARGE syscall.Errno = 223 + ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224 + ERROR_VIRUS_INFECTED syscall.Errno = 225 + ERROR_VIRUS_DELETED syscall.Errno = 226 + ERROR_PIPE_LOCAL syscall.Errno = 229 + ERROR_BAD_PIPE syscall.Errno = 230 + ERROR_PIPE_BUSY syscall.Errno = 231 + ERROR_NO_DATA syscall.Errno = 232 + ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_NO_WORK_DONE syscall.Errno = 235 + ERROR_VC_DISCONNECTED syscall.Errno = 240 + ERROR_INVALID_EA_NAME syscall.Errno = 254 + ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255 + WAIT_TIMEOUT syscall.Errno = 258 + ERROR_NO_MORE_ITEMS syscall.Errno = 259 + ERROR_CANNOT_COPY syscall.Errno = 266 + ERROR_DIRECTORY syscall.Errno = 267 + ERROR_EAS_DIDNT_FIT syscall.Errno = 275 + ERROR_EA_FILE_CORRUPT syscall.Errno = 276 + ERROR_EA_TABLE_FULL syscall.Errno = 277 + ERROR_INVALID_EA_HANDLE syscall.Errno = 278 + ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282 + ERROR_NOT_OWNER syscall.Errno = 288 + ERROR_TOO_MANY_POSTS syscall.Errno = 298 + ERROR_PARTIAL_COPY syscall.Errno = 299 + ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300 + ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301 + ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302 + ERROR_DELETE_PENDING syscall.Errno = 303 + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304 + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305 + ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306 + ERROR_INVALID_LOCK_RANGE syscall.Errno = 307 + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308 + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309 + ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310 + ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311 + ERROR_NO_RANGES_PROCESSED syscall.Errno = 312 + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313 + ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314 + ERROR_INVALID_TOKEN syscall.Errno = 315 + ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316 + ERROR_MR_MID_NOT_FOUND syscall.Errno = 317 + ERROR_SCOPE_NOT_FOUND syscall.Errno = 318 + ERROR_UNDEFINED_SCOPE syscall.Errno = 319 + ERROR_INVALID_CAP syscall.Errno = 320 + ERROR_DEVICE_UNREACHABLE syscall.Errno = 321 + ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322 + ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323 + ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324 + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326 + ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327 + ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328 + ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329 + ERROR_BAD_DEVICE_PATH syscall.Errno = 330 + ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331 + ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332 + ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333 + ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334 + ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335 + ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336 + ERROR_NOT_READ_FROM_COPY syscall.Errno = 337 + ERROR_FT_WRITE_FAILURE syscall.Errno = 338 + ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339 + ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340 + ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341 + ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342 + ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343 + ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344 + ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345 + ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346 + ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347 + ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348 + ERROR_ENCLAVE_FAILURE syscall.Errno = 349 + ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350 + ERROR_FAIL_SHUTDOWN syscall.Errno = 351 + ERROR_FAIL_RESTART syscall.Errno = 352 + ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353 + ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354 + ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355 + ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356 + ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357 + ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358 + ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359 + ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360 + ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361 + ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362 + ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363 + ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364 + ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365 + ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366 + ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367 + ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368 + ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369 + ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370 + ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371 + ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372 + ERROR_GDI_HANDLE_LEAK syscall.Errno = 373 + ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374 + ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375 + ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376 + ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377 + ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378 + ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379 + ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380 + ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381 + ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382 + ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383 + ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384 + ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385 + ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386 + ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387 + ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388 + ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389 + ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390 + ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391 + ERROR_CLOUD_FILE_PINNED syscall.Errno = 392 + ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393 + ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394 + ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395 + ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396 + ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397 + ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398 + ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399 + ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400 + ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401 + ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402 + ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403 + ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404 + ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405 + ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406 + ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407 + ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408 + ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409 + ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413 + ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414 + ERROR_FT_READ_FAILURE syscall.Errno = 415 + ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416 + ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417 + ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418 + ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 + ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 + ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 + ERROR_TIME_CRITICAL_THREAD syscall.Errno = 422 + ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 + ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 + ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 + ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 + ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 + ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453 + ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454 + ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455 + ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456 + ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457 + ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458 + ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459 + ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460 + ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480 + ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481 + ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482 + ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483 + ERROR_INVALID_ADDRESS syscall.Errno = 487 + ERROR_VRF_CFG_ENABLED syscall.Errno = 1183 + ERROR_PARTITION_TERMINATING syscall.Errno = 1184 + ERROR_USER_PROFILE_LOAD syscall.Errno = 500 + ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534 + ERROR_PIPE_CONNECTED syscall.Errno = 535 + ERROR_PIPE_LISTENING syscall.Errno = 536 + ERROR_VERIFIER_STOP syscall.Errno = 537 + ERROR_ABIOS_ERROR syscall.Errno = 538 + ERROR_WX86_WARNING syscall.Errno = 539 + ERROR_WX86_ERROR syscall.Errno = 540 + ERROR_TIMER_NOT_CANCELED syscall.Errno = 541 + ERROR_UNWIND syscall.Errno = 542 + ERROR_BAD_STACK syscall.Errno = 543 + ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544 + ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545 + ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546 + ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547 + ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548 + ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549 + ERROR_PROFILING_NOT_STARTED syscall.Errno = 550 + ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551 + ERROR_COULD_NOT_INTERPRET syscall.Errno = 552 + ERROR_PROFILING_AT_LIMIT syscall.Errno = 553 + ERROR_CANT_WAIT syscall.Errno = 554 + ERROR_CANT_TERMINATE_SELF syscall.Errno = 555 + ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556 + ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557 + ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558 + ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559 + ERROR_NO_GUID_TRANSLATION syscall.Errno = 560 + ERROR_INVALID_LDT_SIZE syscall.Errno = 561 + ERROR_INVALID_LDT_OFFSET syscall.Errno = 563 + ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564 + ERROR_TOO_MANY_THREADS syscall.Errno = 565 + ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566 + ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567 + ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568 + ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569 + ERROR_NET_OPEN_FAILED syscall.Errno = 570 + ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571 + ERROR_CONTROL_C_EXIT syscall.Errno = 572 + ERROR_MISSING_SYSTEMFILE syscall.Errno = 573 + ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574 + ERROR_APP_INIT_FAILURE syscall.Errno = 575 + ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576 + ERROR_INVALID_IMAGE_HASH syscall.Errno = 577 + ERROR_NO_PAGEFILE syscall.Errno = 578 + ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579 + ERROR_NO_EVENT_PAIR syscall.Errno = 580 + ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581 + ERROR_ILLEGAL_CHARACTER syscall.Errno = 582 + ERROR_UNDEFINED_CHARACTER syscall.Errno = 583 + ERROR_FLOPPY_VOLUME syscall.Errno = 584 + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585 + ERROR_BACKUP_CONTROLLER syscall.Errno = 586 + ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587 + ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588 + ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589 + ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590 + ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591 + ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592 + ERROR_VDM_HARD_ERROR syscall.Errno = 593 + ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594 + ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595 + ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596 + ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597 + ERROR_NOT_TINY_STREAM syscall.Errno = 598 + ERROR_STACK_OVERFLOW_READ syscall.Errno = 599 + ERROR_CONVERT_TO_LARGE syscall.Errno = 600 + ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601 + ERROR_ALLOCATE_BUCKET syscall.Errno = 602 + ERROR_MARSHALL_OVERFLOW syscall.Errno = 603 + ERROR_INVALID_VARIANT syscall.Errno = 604 + ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605 + ERROR_AUDIT_FAILED syscall.Errno = 606 + ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607 + ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608 + ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609 + ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610 + ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611 + ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612 + ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613 + ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614 + ERROR_PWD_TOO_SHORT syscall.Errno = 615 + ERROR_PWD_TOO_RECENT syscall.Errno = 616 + ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617 + ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618 + ERROR_INVALID_HW_PROFILE syscall.Errno = 619 + ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620 + ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621 + ERROR_EVALUATION_EXPIRATION syscall.Errno = 622 + ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623 + ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624 + ERROR_VALIDATE_CONTINUE syscall.Errno = 625 + ERROR_NO_MORE_MATCHES syscall.Errno = 626 + ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627 + ERROR_SERVER_SID_MISMATCH syscall.Errno = 628 + ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629 + ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630 + ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631 + ERROR_NOINTERFACE syscall.Errno = 632 + ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633 + ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634 + ERROR_COMMITMENT_MINIMUM syscall.Errno = 635 + ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636 + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637 + ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638 + ERROR_INSUFFICIENT_POWER syscall.Errno = 639 + ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640 + ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641 + ERROR_PORT_NOT_SET syscall.Errno = 642 + ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643 + ERROR_RANGE_NOT_FOUND syscall.Errno = 644 + ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646 + ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647 + ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648 + ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649 + ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650 + ERROR_MCA_OCCURED syscall.Errno = 651 + ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652 + ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653 + ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654 + ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655 + ERROR_HIBERNATION_FAILURE syscall.Errno = 656 + ERROR_PWD_TOO_LONG syscall.Errno = 657 + ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665 + ERROR_ASSERTION_FAILURE syscall.Errno = 668 + ERROR_ACPI_ERROR syscall.Errno = 669 + ERROR_WOW_ASSERTION syscall.Errno = 670 + ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671 + ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672 + ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673 + ERROR_PNP_INVALID_ID syscall.Errno = 674 + ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675 + ERROR_HANDLES_CLOSED syscall.Errno = 676 + ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677 + ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678 + ERROR_MEDIA_CHECK syscall.Errno = 679 + ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680 + ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681 + ERROR_LONGJUMP syscall.Errno = 682 + ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683 + ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684 + ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685 + ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686 + ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687 + ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688 + ERROR_DBG_REPLY_LATER syscall.Errno = 689 + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690 + ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691 + ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692 + ERROR_DBG_CONTROL_C syscall.Errno = 693 + ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694 + ERROR_DBG_RIPEXCEPTION syscall.Errno = 695 + ERROR_DBG_CONTROL_BREAK syscall.Errno = 696 + ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697 + ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698 + ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699 + ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700 + ERROR_RXACT_STATE_CREATED syscall.Errno = 701 + ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702 + ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703 + ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704 + ERROR_FT_WRITE_RECOVERY syscall.Errno = 705 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706 + ERROR_RECEIVE_PARTIAL syscall.Errno = 707 + ERROR_RECEIVE_EXPEDITED syscall.Errno = 708 + ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709 + ERROR_EVENT_DONE syscall.Errno = 710 + ERROR_EVENT_PENDING syscall.Errno = 711 + ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712 + ERROR_FATAL_APP_EXIT syscall.Errno = 713 + ERROR_PREDEFINED_HANDLE syscall.Errno = 714 + ERROR_WAS_UNLOCKED syscall.Errno = 715 + ERROR_SERVICE_NOTIFICATION syscall.Errno = 716 + ERROR_WAS_LOCKED syscall.Errno = 717 + ERROR_LOG_HARD_ERROR syscall.Errno = 718 + ERROR_ALREADY_WIN32 syscall.Errno = 719 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720 + ERROR_NO_YIELD_PERFORMED syscall.Errno = 721 + ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722 + ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723 + ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724 + ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725 + ERROR_HIBERNATED syscall.Errno = 726 + ERROR_RESUME_HIBERNATION syscall.Errno = 727 + ERROR_FIRMWARE_UPDATED syscall.Errno = 728 + ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729 + ERROR_WAKE_SYSTEM syscall.Errno = 730 + ERROR_WAIT_1 syscall.Errno = 731 + ERROR_WAIT_2 syscall.Errno = 732 + ERROR_WAIT_3 syscall.Errno = 733 + ERROR_WAIT_63 syscall.Errno = 734 + ERROR_ABANDONED_WAIT_0 syscall.Errno = 735 + ERROR_ABANDONED_WAIT_63 syscall.Errno = 736 + ERROR_USER_APC syscall.Errno = 737 + ERROR_KERNEL_APC syscall.Errno = 738 + ERROR_ALERTED syscall.Errno = 739 + ERROR_ELEVATION_REQUIRED syscall.Errno = 740 + ERROR_REPARSE syscall.Errno = 741 + ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742 + ERROR_VOLUME_MOUNTED syscall.Errno = 743 + ERROR_RXACT_COMMITTED syscall.Errno = 744 + ERROR_NOTIFY_CLEANUP syscall.Errno = 745 + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746 + ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747 + ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748 + ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749 + ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750 + ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751 + ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752 + ERROR_CRASH_DUMP syscall.Errno = 753 + ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754 + ERROR_REPARSE_OBJECT syscall.Errno = 755 + ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756 + ERROR_TRANSLATION_COMPLETE syscall.Errno = 757 + ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758 + ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759 + ERROR_PROCESS_IN_JOB syscall.Errno = 760 + ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761 + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762 + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763 + ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764 + ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765 + ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766 + ERROR_DBG_CONTINUE syscall.Errno = 767 + ERROR_CALLBACK_POP_STACK syscall.Errno = 768 + ERROR_COMPRESSION_DISABLED syscall.Errno = 769 + ERROR_CANTFETCHBACKWARDS syscall.Errno = 770 + ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771 + ERROR_ROWSNOTRELEASED syscall.Errno = 772 + ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773 + ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774 + ERROR_NOT_CAPABLE syscall.Errno = 775 + ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776 + ERROR_VERSION_PARSE_ERROR syscall.Errno = 777 + ERROR_BADSTARTPOSITION syscall.Errno = 778 + ERROR_MEMORY_HARDWARE syscall.Errno = 779 + ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780 + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781 + ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782 + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783 + ERROR_MCA_EXCEPTION syscall.Errno = 784 + ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785 + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786 + ERROR_ABANDON_HIBERFILE syscall.Errno = 787 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789 + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790 + ERROR_BAD_MCFG_TABLE syscall.Errno = 791 + ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792 + ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793 + ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794 + ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795 + ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796 + ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797 + ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798 + ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799 + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800 + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801 + ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802 + ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803 + ERROR_NO_ACE_CONDITION syscall.Errno = 804 + ERROR_INVALID_ACE_CONDITION syscall.Errno = 805 + ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806 + ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807 + ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808 + ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809 + ERROR_QUOTA_ACTIVITY syscall.Errno = 810 + ERROR_HANDLE_REVOKED syscall.Errno = 811 + ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812 + ERROR_CPU_SET_INVALID syscall.Errno = 813 + ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814 + ERROR_ENCLAVE_VIOLATION syscall.Errno = 815 + ERROR_EA_ACCESS_DENIED syscall.Errno = 994 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_INCOMPLETE syscall.Errno = 996 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_NOACCESS syscall.Errno = 998 + ERROR_SWAPERROR syscall.Errno = 999 + ERROR_STACK_OVERFLOW syscall.Errno = 1001 + ERROR_INVALID_MESSAGE syscall.Errno = 1002 + ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003 + ERROR_INVALID_FLAGS syscall.Errno = 1004 + ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005 + ERROR_FILE_INVALID syscall.Errno = 1006 + ERROR_FULLSCREEN_MODE syscall.Errno = 1007 + ERROR_NO_TOKEN syscall.Errno = 1008 + ERROR_BADDB syscall.Errno = 1009 + ERROR_BADKEY syscall.Errno = 1010 + ERROR_CANTOPEN syscall.Errno = 1011 + ERROR_CANTREAD syscall.Errno = 1012 + ERROR_CANTWRITE syscall.Errno = 1013 + ERROR_REGISTRY_RECOVERED syscall.Errno = 1014 + ERROR_REGISTRY_CORRUPT syscall.Errno = 1015 + ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016 + ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017 + ERROR_KEY_DELETED syscall.Errno = 1018 + ERROR_NO_LOG_SPACE syscall.Errno = 1019 + ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020 + ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021 + ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051 + ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052 + ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053 + ERROR_SERVICE_NO_THREAD syscall.Errno = 1054 + ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055 + ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056 + ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057 + ERROR_SERVICE_DISABLED syscall.Errno = 1058 + ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059 + ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060 + ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061 + ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062 + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063 + ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064 + ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_PROCESS_ABORTED syscall.Errno = 1067 + ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068 + ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069 + ERROR_SERVICE_START_HANG syscall.Errno = 1070 + ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071 + ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072 + ERROR_SERVICE_EXISTS syscall.Errno = 1073 + ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074 + ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075 + ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076 + ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077 + ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078 + ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079 + ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080 + ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081 + ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082 + ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083 + ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084 + ERROR_END_OF_MEDIA syscall.Errno = 1100 + ERROR_FILEMARK_DETECTED syscall.Errno = 1101 + ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102 + ERROR_SETMARK_DETECTED syscall.Errno = 1103 + ERROR_NO_DATA_DETECTED syscall.Errno = 1104 + ERROR_PARTITION_FAILURE syscall.Errno = 1105 + ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106 + ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107 + ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108 + ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109 + ERROR_MEDIA_CHANGED syscall.Errno = 1110 + ERROR_BUS_RESET syscall.Errno = 1111 + ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112 + ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113 + ERROR_DLL_INIT_FAILED syscall.Errno = 1114 + ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115 + ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116 + ERROR_IO_DEVICE syscall.Errno = 1117 + ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118 + ERROR_IRQ_BUSY syscall.Errno = 1119 + ERROR_MORE_WRITES syscall.Errno = 1120 + ERROR_COUNTER_TIMEOUT syscall.Errno = 1121 + ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122 + ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123 + ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124 + ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125 + ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126 + ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127 + ERROR_DISK_RESET_FAILED syscall.Errno = 1128 + ERROR_EOM_OVERFLOW syscall.Errno = 1129 + ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130 + ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131 + ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132 + ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140 + ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141 + ERROR_TOO_MANY_LINKS syscall.Errno = 1142 + ERROR_OLD_WIN_VERSION syscall.Errno = 1150 + ERROR_APP_WRONG_OS syscall.Errno = 1151 + ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152 + ERROR_RMODE_APP syscall.Errno = 1153 + ERROR_INVALID_DLL syscall.Errno = 1154 + ERROR_NO_ASSOCIATION syscall.Errno = 1155 + ERROR_DDE_FAIL syscall.Errno = 1156 + ERROR_DLL_NOT_FOUND syscall.Errno = 1157 + ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158 + ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159 + ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160 + ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161 + ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162 + ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163 + ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164 + ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165 + ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166 + ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_NO_MATCH syscall.Errno = 1169 + ERROR_SET_NOT_FOUND syscall.Errno = 1170 + ERROR_POINT_NOT_FOUND syscall.Errno = 1171 + ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172 + ERROR_NO_VOLUME_ID syscall.Errno = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175 + ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177 + ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178 + ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179 + ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180 + ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181 + ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190 + ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191 + ERROR_BAD_DEVICE syscall.Errno = 1200 + ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201 + ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202 + ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203 + ERROR_BAD_PROVIDER syscall.Errno = 1204 + ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205 + ERROR_BAD_PROFILE syscall.Errno = 1206 + ERROR_NOT_CONTAINER syscall.Errno = 1207 + ERROR_EXTENDED_ERROR syscall.Errno = 1208 + ERROR_INVALID_GROUPNAME syscall.Errno = 1209 + ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210 + ERROR_INVALID_EVENTNAME syscall.Errno = 1211 + ERROR_INVALID_DOMAINNAME syscall.Errno = 1212 + ERROR_INVALID_SERVICENAME syscall.Errno = 1213 + ERROR_INVALID_NETNAME syscall.Errno = 1214 + ERROR_INVALID_SHARENAME syscall.Errno = 1215 + ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216 + ERROR_INVALID_MESSAGENAME syscall.Errno = 1217 + ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218 + ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219 + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220 + ERROR_DUP_DOMAINNAME syscall.Errno = 1221 + ERROR_NO_NETWORK syscall.Errno = 1222 + ERROR_CANCELLED syscall.Errno = 1223 + ERROR_USER_MAPPED_FILE syscall.Errno = 1224 + ERROR_CONNECTION_REFUSED syscall.Errno = 1225 + ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226 + ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227 + ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228 + ERROR_CONNECTION_INVALID syscall.Errno = 1229 + ERROR_CONNECTION_ACTIVE syscall.Errno = 1230 + ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231 + ERROR_HOST_UNREACHABLE syscall.Errno = 1232 + ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233 + ERROR_PORT_UNREACHABLE syscall.Errno = 1234 + ERROR_REQUEST_ABORTED syscall.Errno = 1235 + ERROR_CONNECTION_ABORTED syscall.Errno = 1236 + ERROR_RETRY syscall.Errno = 1237 + ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238 + ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239 + ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240 + ERROR_INCORRECT_ADDRESS syscall.Errno = 1241 + ERROR_ALREADY_REGISTERED syscall.Errno = 1242 + ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243 + ERROR_NOT_AUTHENTICATED syscall.Errno = 1244 + ERROR_NOT_LOGGED_ON syscall.Errno = 1245 + ERROR_CONTINUE syscall.Errno = 1246 + ERROR_ALREADY_INITIALIZED syscall.Errno = 1247 + ERROR_NO_MORE_DEVICES syscall.Errno = 1248 + ERROR_NO_SUCH_SITE syscall.Errno = 1249 + ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250 + ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251 + ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252 + ERROR_BAD_USER_PROFILE syscall.Errno = 1253 + ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254 + ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255 + ERROR_HOST_DOWN syscall.Errno = 1256 + ERROR_NON_ACCOUNT_SID syscall.Errno = 1257 + ERROR_NON_DOMAIN_SID syscall.Errno = 1258 + ERROR_APPHELP_BLOCK syscall.Errno = 1259 + ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260 + ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261 + ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262 + ERROR_PKINIT_FAILURE syscall.Errno = 1263 + ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264 + ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265 + ERROR_MACHINE_LOCKED syscall.Errno = 1271 + ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273 + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274 + ERROR_DRIVER_BLOCKED syscall.Errno = 1275 + ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276 + ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277 + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278 + ERROR_RECOVERY_FAILURE syscall.Errno = 1279 + ERROR_ALREADY_FIBER syscall.Errno = 1280 + ERROR_ALREADY_THREAD syscall.Errno = 1281 + ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282 + ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283 + ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284 + ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285 + ERROR_VDM_DISALLOWED syscall.Errno = 1286 + ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287 + ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288 + ERROR_BEYOND_VDL syscall.Errno = 1289 + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290 + ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291 + ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292 + ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293 + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294 + ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295 + ERROR_CONTENT_BLOCKED syscall.Errno = 1296 + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297 + ERROR_APP_HANG syscall.Errno = 1298 + ERROR_INVALID_LABEL syscall.Errno = 1299 + ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 + ERROR_SOME_NOT_MAPPED syscall.Errno = 1301 + ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302 + ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303 + ERROR_NULL_LM_PASSWORD syscall.Errno = 1304 + ERROR_UNKNOWN_REVISION syscall.Errno = 1305 + ERROR_REVISION_MISMATCH syscall.Errno = 1306 + ERROR_INVALID_OWNER syscall.Errno = 1307 + ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308 + ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309 + ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310 + ERROR_NO_LOGON_SERVERS syscall.Errno = 1311 + ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312 + ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315 + ERROR_USER_EXISTS syscall.Errno = 1316 + ERROR_NO_SUCH_USER syscall.Errno = 1317 + ERROR_GROUP_EXISTS syscall.Errno = 1318 + ERROR_NO_SUCH_GROUP syscall.Errno = 1319 + ERROR_MEMBER_IN_GROUP syscall.Errno = 1320 + ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321 + ERROR_LAST_ADMIN syscall.Errno = 1322 + ERROR_WRONG_PASSWORD syscall.Errno = 1323 + ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324 + ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325 + ERROR_LOGON_FAILURE syscall.Errno = 1326 + ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327 + ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328 + ERROR_INVALID_WORKSTATION syscall.Errno = 1329 + ERROR_PASSWORD_EXPIRED syscall.Errno = 1330 + ERROR_ACCOUNT_DISABLED syscall.Errno = 1331 + ERROR_NONE_MAPPED syscall.Errno = 1332 + ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333 + ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334 + ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335 + ERROR_INVALID_ACL syscall.Errno = 1336 + ERROR_INVALID_SID syscall.Errno = 1337 + ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338 + ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340 + ERROR_SERVER_DISABLED syscall.Errno = 1341 + ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342 + ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343 + ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344 + ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345 + ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346 + ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347 + ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348 + ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349 + ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350 + ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351 + ERROR_INVALID_SERVER_STATE syscall.Errno = 1352 + ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353 + ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354 + ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355 + ERROR_DOMAIN_EXISTS syscall.Errno = 1356 + ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357 + ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358 + ERROR_INTERNAL_ERROR syscall.Errno = 1359 + ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360 + ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361 + ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362 + ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363 + ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364 + ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365 + ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366 + ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367 + ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368 + ERROR_RXACT_INVALID_STATE syscall.Errno = 1369 + ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370 + ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371 + ERROR_SPECIAL_GROUP syscall.Errno = 1372 + ERROR_SPECIAL_USER syscall.Errno = 1373 + ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374 + ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375 + ERROR_NO_SUCH_ALIAS syscall.Errno = 1376 + ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377 + ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378 + ERROR_ALIAS_EXISTS syscall.Errno = 1379 + ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380 + ERROR_TOO_MANY_SECRETS syscall.Errno = 1381 + ERROR_SECRET_TOO_LONG syscall.Errno = 1382 + ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383 + ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384 + ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385 + ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386 + ERROR_NO_SUCH_MEMBER syscall.Errno = 1387 + ERROR_INVALID_MEMBER syscall.Errno = 1388 + ERROR_TOO_MANY_SIDS syscall.Errno = 1389 + ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390 + ERROR_NO_INHERITANCE syscall.Errno = 1391 + ERROR_FILE_CORRUPT syscall.Errno = 1392 + ERROR_DISK_CORRUPT syscall.Errno = 1393 + ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394 + ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395 + ERROR_WRONG_TARGET_NAME syscall.Errno = 1396 + ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397 + ERROR_TIME_SKEW syscall.Errno = 1398 + ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399 + ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400 + ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401 + ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402 + ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403 + ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404 + ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405 + ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406 + ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407 + ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408 + ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409 + ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410 + ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411 + ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412 + ERROR_INVALID_INDEX syscall.Errno = 1413 + ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414 + ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415 + ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416 + ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417 + ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418 + ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419 + ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420 + ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421 + ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422 + ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423 + ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424 + ERROR_DC_NOT_FOUND syscall.Errno = 1425 + ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426 + ERROR_INVALID_FILTER_PROC syscall.Errno = 1427 + ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428 + ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429 + ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430 + ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431 + ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432 + ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433 + ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434 + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435 + ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436 + ERROR_NO_SYSTEM_MENU syscall.Errno = 1437 + ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438 + ERROR_INVALID_SPI_VALUE syscall.Errno = 1439 + ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440 + ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441 + ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442 + ERROR_INVALID_GW_COMMAND syscall.Errno = 1443 + ERROR_INVALID_THREAD_ID syscall.Errno = 1444 + ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445 + ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446 + ERROR_NO_SCROLLBARS syscall.Errno = 1447 + ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448 + ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449 + ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450 + ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451 + ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452 + ERROR_WORKING_SET_QUOTA syscall.Errno = 1453 + ERROR_PAGEFILE_QUOTA syscall.Errno = 1454 + ERROR_COMMITMENT_LIMIT syscall.Errno = 1455 + ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456 + ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457 + ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458 + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459 + ERROR_TIMEOUT syscall.Errno = 1460 + ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461 + ERROR_INCORRECT_SIZE syscall.Errno = 1462 + ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463 + ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464 + ERROR_XML_PARSE_ERROR syscall.Errno = 1465 + ERROR_XMLDSIG_ERROR syscall.Errno = 1466 + ERROR_RESTART_APPLICATION syscall.Errno = 1467 + ERROR_WRONG_COMPARTMENT syscall.Errno = 1468 + ERROR_AUTHIP_FAILURE syscall.Errno = 1469 + ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470 + ERROR_NOT_GUI_PROCESS syscall.Errno = 1471 + ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500 + ERROR_EVENTLOG_CANT_START syscall.Errno = 1501 + ERROR_LOG_FILE_FULL syscall.Errno = 1502 + ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503 + ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504 + ERROR_JOB_NO_CONTAINER syscall.Errno = 1505 + ERROR_INVALID_TASK_NAME syscall.Errno = 1550 + ERROR_INVALID_TASK_INDEX syscall.Errno = 1551 + ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552 + ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601 + ERROR_INSTALL_USEREXIT syscall.Errno = 1602 + ERROR_INSTALL_FAILURE syscall.Errno = 1603 + ERROR_INSTALL_SUSPEND syscall.Errno = 1604 + ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605 + ERROR_UNKNOWN_FEATURE syscall.Errno = 1606 + ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607 + ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608 + ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609 + ERROR_BAD_CONFIGURATION syscall.Errno = 1610 + ERROR_INDEX_ABSENT syscall.Errno = 1611 + ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612 + ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613 + ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614 + ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615 + ERROR_INVALID_FIELD syscall.Errno = 1616 + ERROR_DEVICE_REMOVED syscall.Errno = 1617 + ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618 + ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619 + ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620 + ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621 + ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622 + ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623 + ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624 + ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625 + ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626 + ERROR_FUNCTION_FAILED syscall.Errno = 1627 + ERROR_INVALID_TABLE syscall.Errno = 1628 + ERROR_DATATYPE_MISMATCH syscall.Errno = 1629 + ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630 + ERROR_CREATE_FAILED syscall.Errno = 1631 + ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632 + ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633 + ERROR_INSTALL_NOTUSED syscall.Errno = 1634 + ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635 + ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636 + ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637 + ERROR_PRODUCT_VERSION syscall.Errno = 1638 + ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639 + ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640 + ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641 + ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642 + ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643 + ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644 + ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645 + ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646 + ERROR_UNKNOWN_PATCH syscall.Errno = 1647 + ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648 + ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649 + ERROR_INVALID_PATCH_XML syscall.Errno = 1650 + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651 + ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652 + ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653 + ERROR_INSTALL_REJECTED syscall.Errno = 1654 + ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655 + ERROR_NOT_SAME_OBJECT syscall.Errno = 1656 + ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657 + ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660 + ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661 + RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700 + RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701 + RPC_S_INVALID_BINDING syscall.Errno = 1702 + RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703 + RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704 + RPC_S_INVALID_STRING_UUID syscall.Errno = 1705 + RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706 + RPC_S_INVALID_NET_ADDR syscall.Errno = 1707 + RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708 + RPC_S_INVALID_TIMEOUT syscall.Errno = 1709 + RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710 + RPC_S_ALREADY_REGISTERED syscall.Errno = 1711 + RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712 + RPC_S_ALREADY_LISTENING syscall.Errno = 1713 + RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714 + RPC_S_NOT_LISTENING syscall.Errno = 1715 + RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716 + RPC_S_UNKNOWN_IF syscall.Errno = 1717 + RPC_S_NO_BINDINGS syscall.Errno = 1718 + RPC_S_NO_PROTSEQS syscall.Errno = 1719 + RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720 + RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721 + RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722 + RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723 + RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724 + RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725 + RPC_S_CALL_FAILED syscall.Errno = 1726 + RPC_S_CALL_FAILED_DNE syscall.Errno = 1727 + RPC_S_PROTOCOL_ERROR syscall.Errno = 1728 + RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729 + RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730 + RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732 + RPC_S_INVALID_TAG syscall.Errno = 1733 + RPC_S_INVALID_BOUND syscall.Errno = 1734 + RPC_S_NO_ENTRY_NAME syscall.Errno = 1735 + RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736 + RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737 + RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739 + RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740 + RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741 + RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742 + RPC_S_STRING_TOO_LONG syscall.Errno = 1743 + RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744 + RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745 + RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746 + RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747 + RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748 + RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749 + RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750 + EPT_S_INVALID_ENTRY syscall.Errno = 1751 + EPT_S_CANT_PERFORM_OP syscall.Errno = 1752 + EPT_S_NOT_REGISTERED syscall.Errno = 1753 + RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754 + RPC_S_INCOMPLETE_NAME syscall.Errno = 1755 + RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756 + RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757 + RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758 + RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759 + RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760 + RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761 + RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762 + RPC_S_INVALID_NAF_ID syscall.Errno = 1763 + RPC_S_CANNOT_SUPPORT syscall.Errno = 1764 + RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765 + RPC_S_INTERNAL_ERROR syscall.Errno = 1766 + RPC_S_ZERO_DIVIDE syscall.Errno = 1767 + RPC_S_ADDRESS_ERROR syscall.Errno = 1768 + RPC_S_FP_DIV_ZERO syscall.Errno = 1769 + RPC_S_FP_UNDERFLOW syscall.Errno = 1770 + RPC_S_FP_OVERFLOW syscall.Errno = 1771 + RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772 + RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773 + RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774 + RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775 + RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777 + RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778 + RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779 + RPC_X_NULL_REF_POINTER syscall.Errno = 1780 + RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781 + RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782 + RPC_X_BAD_STUB_DATA syscall.Errno = 1783 + ERROR_INVALID_USER_BUFFER syscall.Errno = 1784 + ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785 + ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786 + ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787 + ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788 + ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789 + ERROR_TRUST_FAILURE syscall.Errno = 1790 + RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791 + ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792 + ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793 + ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794 + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795 + ERROR_UNKNOWN_PORT syscall.Errno = 1796 + ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797 + ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798 + ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799 + ERROR_INVALID_PRIORITY syscall.Errno = 1800 + ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801 + ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802 + ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803 + ERROR_INVALID_DATATYPE syscall.Errno = 1804 + ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805 + RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806 + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807 + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808 + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809 + ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810 + ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811 + ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812 + ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813 + ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814 + ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815 + ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816 + RPC_S_NO_INTERFACES syscall.Errno = 1817 + RPC_S_CALL_CANCELLED syscall.Errno = 1818 + RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819 + RPC_S_COMM_FAILURE syscall.Errno = 1820 + RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821 + RPC_S_NO_PRINC_NAME syscall.Errno = 1822 + RPC_S_NOT_RPC_ERROR syscall.Errno = 1823 + RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824 + RPC_S_SEC_PKG_ERROR syscall.Errno = 1825 + RPC_S_NOT_CANCELLED syscall.Errno = 1826 + RPC_X_INVALID_ES_ACTION syscall.Errno = 1827 + RPC_X_WRONG_ES_VERSION syscall.Errno = 1828 + RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829 + RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830 + RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831 + RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832 + RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833 + RPC_S_DO_NOT_DISTURB syscall.Errno = 1834 + RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835 + RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836 + RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898 + EPT_S_CANT_CREATE syscall.Errno = 1899 + RPC_S_INVALID_OBJECT syscall.Errno = 1900 + ERROR_INVALID_TIME syscall.Errno = 1901 + ERROR_INVALID_FORM_NAME syscall.Errno = 1902 + ERROR_INVALID_FORM_SIZE syscall.Errno = 1903 + ERROR_ALREADY_WAITING syscall.Errno = 1904 + ERROR_PRINTER_DELETED syscall.Errno = 1905 + ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906 + ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907 + ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908 + ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909 + OR_INVALID_OXID syscall.Errno = 1910 + OR_INVALID_OID syscall.Errno = 1911 + OR_INVALID_SET syscall.Errno = 1912 + RPC_S_SEND_INCOMPLETE syscall.Errno = 1913 + RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914 + RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915 + RPC_X_PIPE_CLOSED syscall.Errno = 1916 + RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917 + RPC_X_PIPE_EMPTY syscall.Errno = 1918 + ERROR_NO_SITENAME syscall.Errno = 1919 + ERROR_CANT_ACCESS_FILE syscall.Errno = 1920 + ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921 + RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922 + RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923 + RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924 + RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925 + RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926 + RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927 + RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928 + RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929 + ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930 + ERROR_CONTEXT_EXPIRED syscall.Errno = 1931 + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932 + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933 + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934 + ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935 + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936 + ERROR_NTLM_BLOCKED syscall.Errno = 1937 + ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938 + ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939 + ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000 + ERROR_BAD_DRIVER syscall.Errno = 2001 + ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002 + ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003 + ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004 + ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005 + ERROR_INVALID_CMM syscall.Errno = 2010 + ERROR_INVALID_PROFILE syscall.Errno = 2011 + ERROR_TAG_NOT_FOUND syscall.Errno = 2012 + ERROR_TAG_NOT_PRESENT syscall.Errno = 2013 + ERROR_DUPLICATE_TAG syscall.Errno = 2014 + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015 + ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016 + ERROR_INVALID_COLORSPACE syscall.Errno = 2017 + ERROR_ICM_NOT_ENABLED syscall.Errno = 2018 + ERROR_DELETING_ICM_XFORM syscall.Errno = 2019 + ERROR_INVALID_TRANSFORM syscall.Errno = 2020 + ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021 + ERROR_INVALID_COLORINDEX syscall.Errno = 2022 + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023 + ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108 + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109 + ERROR_BAD_USERNAME syscall.Errno = 2202 + ERROR_NOT_CONNECTED syscall.Errno = 2250 + ERROR_OPEN_FILES syscall.Errno = 2401 + ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402 + ERROR_DEVICE_IN_USE syscall.Errno = 2404 + ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000 + ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001 + ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002 + ERROR_SPL_NO_STARTDOC syscall.Errno = 3003 + ERROR_SPL_NO_ADDJOB syscall.Errno = 3004 + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005 + ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006 + ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007 + ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008 + ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009 + ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010 + ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011 + ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012 + ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013 + ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014 + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015 + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016 + ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017 + ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018 + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019 + ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020 + ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021 + ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022 + ERROR_REQUEST_PAUSED syscall.Errno = 3050 + ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060 + ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061 + ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062 + ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063 + ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064 + ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065 + ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066 + ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067 + ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950 + ERROR_WINS_INTERNAL syscall.Errno = 4000 + ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001 + ERROR_STATIC_INIT syscall.Errno = 4002 + ERROR_INC_BACKUP syscall.Errno = 4003 + ERROR_FULL_BACKUP syscall.Errno = 4004 + ERROR_REC_NON_EXISTENT syscall.Errno = 4005 + ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006 + PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050 + PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051 + PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052 + PEERDIST_ERROR_NO_MORE syscall.Errno = 4053 + PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054 + PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055 + PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056 + PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057 + PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058 + PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059 + PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060 + PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061 + PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062 + PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063 + PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064 + PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065 + PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066 + ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100 + ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200 + ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201 + ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202 + ERROR_WMI_TRY_AGAIN syscall.Errno = 4203 + ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204 + ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205 + ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206 + ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207 + ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208 + ERROR_WMI_DP_FAILED syscall.Errno = 4209 + ERROR_WMI_INVALID_MOF syscall.Errno = 4210 + ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211 + ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212 + ERROR_WMI_READ_ONLY syscall.Errno = 4213 + ERROR_WMI_SET_FAILURE syscall.Errno = 4214 + ERROR_NOT_APPCONTAINER syscall.Errno = 4250 + ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251 + ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252 + ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253 + ERROR_INVALID_MEDIA syscall.Errno = 4300 + ERROR_INVALID_LIBRARY syscall.Errno = 4301 + ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302 + ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303 + ERROR_MEDIA_OFFLINE syscall.Errno = 4304 + ERROR_LIBRARY_OFFLINE syscall.Errno = 4305 + ERROR_EMPTY syscall.Errno = 4306 + ERROR_NOT_EMPTY syscall.Errno = 4307 + ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308 + ERROR_RESOURCE_DISABLED syscall.Errno = 4309 + ERROR_INVALID_CLEANER syscall.Errno = 4310 + ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311 + ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312 + ERROR_DATABASE_FAILURE syscall.Errno = 4313 + ERROR_DATABASE_FULL syscall.Errno = 4314 + ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315 + ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316 + ERROR_INVALID_OPERATION syscall.Errno = 4317 + ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318 + ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319 + ERROR_REQUEST_REFUSED syscall.Errno = 4320 + ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321 + ERROR_LIBRARY_FULL syscall.Errno = 4322 + ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323 + ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324 + ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325 + ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326 + ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327 + ERROR_TRANSPORT_FULL syscall.Errno = 4328 + ERROR_CONTROLLING_IEPORT syscall.Errno = 4329 + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330 + ERROR_CLEANER_SLOT_SET syscall.Errno = 4331 + ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332 + ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333 + ERROR_UNEXPECTED_OMID syscall.Errno = 4334 + ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335 + ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336 + ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337 + ERROR_INDIGENOUS_TYPE syscall.Errno = 4338 + ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339 + ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340 + ERROR_IEPORT_FULL syscall.Errno = 4341 + ERROR_FILE_OFFLINE syscall.Errno = 4350 + ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351 + ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352 + ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390 + ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391 + ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392 + ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393 + ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394 + ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395 + ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400 + ERROR_APP_DATA_EXPIRED syscall.Errno = 4401 + ERROR_APP_DATA_CORRUPT syscall.Errno = 4402 + ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403 + ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404 + ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420 + ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421 + ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422 + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423 + ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424 + ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425 + ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426 + ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427 + ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428 + ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429 + ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430 + ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431 + ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432 + ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433 + ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434 + ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435 + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440 + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441 + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442 + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443 + ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444 + ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445 + ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446 + ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447 + ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448 + ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500 + ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550 + ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 + ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 + ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 + ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 + ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 + ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 + ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571 + ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572 + ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573 + ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574 + ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575 + ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576 + ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001 + ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002 + ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003 + ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004 + ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005 + ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006 + ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007 + ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008 + ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009 + ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010 + ERROR_OBJECT_IN_LIST syscall.Errno = 5011 + ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012 + ERROR_GROUP_NOT_FOUND syscall.Errno = 5013 + ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014 + ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015 + ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016 + ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017 + ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018 + ERROR_RESOURCE_ONLINE syscall.Errno = 5019 + ERROR_QUORUM_RESOURCE syscall.Errno = 5020 + ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021 + ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022 + ERROR_INVALID_STATE syscall.Errno = 5023 + ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024 + ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025 + ERROR_CORE_RESOURCE syscall.Errno = 5026 + ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027 + ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028 + ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029 + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030 + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031 + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032 + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033 + ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034 + ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035 + ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036 + ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037 + ERROR_RESOURCE_FAILED syscall.Errno = 5038 + ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039 + ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040 + ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041 + ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042 + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043 + ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044 + ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045 + ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046 + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047 + ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048 + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049 + ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050 + ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051 + ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052 + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053 + ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054 + ERROR_CLUSTER_NODE_UP syscall.Errno = 5056 + ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057 + ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058 + ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059 + ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060 + ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061 + ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062 + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063 + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064 + ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065 + ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066 + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067 + ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068 + ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069 + ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070 + ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071 + ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072 + ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073 + ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074 + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075 + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076 + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077 + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078 + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079 + ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080 + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081 + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082 + ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083 + ERROR_RESMON_INVALID_STATE syscall.Errno = 5084 + ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085 + ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086 + ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087 + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088 + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089 + ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890 + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891 + ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892 + ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893 + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894 + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895 + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896 + ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897 + ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898 + ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899 + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900 + ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901 + ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902 + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903 + ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904 + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905 + ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906 + ERROR_CLUSTER_POISONED syscall.Errno = 5907 + ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908 + ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909 + ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910 + ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911 + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912 + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913 + ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914 + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915 + ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916 + ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917 + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918 + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919 + ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920 + ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921 + ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922 + ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923 + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924 + ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925 + ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926 + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927 + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928 + ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929 + ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930 + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931 + ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932 + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933 + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934 + ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935 + ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936 + ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937 + ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938 + ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939 + ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940 + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941 + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942 + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943 + ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944 + ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945 + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946 + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947 + ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948 + ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949 + ERROR_NON_CSV_PATH syscall.Errno = 5950 + ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951 + ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953 + ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954 + ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955 + ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958 + ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959 + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960 + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961 + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962 + ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963 + ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964 + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965 + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966 + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967 + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968 + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969 + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970 + ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971 + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972 + ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973 + ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974 + ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975 + ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976 + ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977 + ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978 + ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979 + ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980 + ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981 + ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982 + ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983 + ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984 + ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985 + ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986 + ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987 + ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988 + ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989 + ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990 + ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991 + ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992 + ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993 + ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994 + ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995 + ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996 + ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997 + ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998 + ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999 + ERROR_ENCRYPTION_FAILED syscall.Errno = 6000 + ERROR_DECRYPTION_FAILED syscall.Errno = 6001 + ERROR_FILE_ENCRYPTED syscall.Errno = 6002 + ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003 + ERROR_NO_EFS syscall.Errno = 6004 + ERROR_WRONG_EFS syscall.Errno = 6005 + ERROR_NO_USER_KEYS syscall.Errno = 6006 + ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007 + ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008 + ERROR_FILE_READ_ONLY syscall.Errno = 6009 + ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010 + ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011 + ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012 + ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013 + ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014 + ERROR_EFS_DISABLED syscall.Errno = 6015 + ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016 + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017 + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018 + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019 + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 + ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 + ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 + SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 + ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 + ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601 + ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602 + ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603 + ERROR_LOG_INVALID_RANGE syscall.Errno = 6604 + ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605 + ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606 + ERROR_LOG_RESTART_INVALID syscall.Errno = 6607 + ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608 + ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609 + ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610 + ERROR_LOG_NO_RESTART syscall.Errno = 6611 + ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612 + ERROR_LOG_METADATA_INVALID syscall.Errno = 6613 + ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614 + ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615 + ERROR_LOG_CANT_DELETE syscall.Errno = 6616 + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617 + ERROR_LOG_START_OF_LOG syscall.Errno = 6618 + ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619 + ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620 + ERROR_LOG_POLICY_INVALID syscall.Errno = 6621 + ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622 + ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623 + ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624 + ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625 + ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626 + ERROR_LOG_TAIL_INVALID syscall.Errno = 6627 + ERROR_LOG_FULL syscall.Errno = 6628 + ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629 + ERROR_LOG_MULTIPLEXED syscall.Errno = 6630 + ERROR_LOG_DEDICATED syscall.Errno = 6631 + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632 + ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633 + ERROR_LOG_EPHEMERAL syscall.Errno = 6634 + ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635 + ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636 + ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637 + ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638 + ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639 + ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640 + ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641 + ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642 + ERROR_LOG_STATE_INVALID syscall.Errno = 6643 + ERROR_LOG_PINNED syscall.Errno = 6644 + ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645 + ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646 + ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647 + ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648 + ERROR_INVALID_TRANSACTION syscall.Errno = 6700 + ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701 + ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702 + ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703 + ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704 + ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705 + ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706 + ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707 + ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708 + ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709 + ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710 + ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711 + ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712 + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713 + ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714 + ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715 + ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716 + ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717 + ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718 + ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719 + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720 + ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721 + ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722 + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723 + ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724 + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725 + ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726 + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727 + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728 + ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729 + ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730 + ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731 + ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800 + ERROR_RM_NOT_ACTIVE syscall.Errno = 6801 + ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802 + ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803 + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805 + ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806 + ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807 + ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808 + ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809 + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810 + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811 + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812 + ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814 + ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815 + ERROR_NO_TXF_METADATA syscall.Errno = 6816 + ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817 + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818 + ERROR_RM_DISCONNECTED syscall.Errno = 6819 + ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820 + ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821 + ERROR_RM_ALREADY_STARTED syscall.Errno = 6822 + ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823 + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824 + ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825 + ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826 + ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827 + ERROR_TM_VOLATILE syscall.Errno = 6828 + ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829 + ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830 + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831 + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832 + ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833 + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834 + ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835 + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836 + ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837 + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838 + ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839 + ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840 + ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841 + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842 + ERROR_DATA_LOST_REPAIR syscall.Errno = 6843 + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844 + ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845 + ERROR_FLOATED_SECTION syscall.Errno = 6846 + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847 + ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848 + ERROR_BAD_CLUSTERS syscall.Errno = 6849 + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850 + ERROR_VOLUME_DIRTY syscall.Errno = 6851 + ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852 + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853 + ERROR_EXPIRED_HANDLE syscall.Errno = 6854 + ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855 + ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001 + ERROR_CTX_INVALID_PD syscall.Errno = 7002 + ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003 + ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004 + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005 + ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006 + ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007 + ERROR_CTX_NO_OUTBUF syscall.Errno = 7008 + ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009 + ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010 + ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011 + ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012 + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013 + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014 + ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015 + ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016 + ERROR_CTX_TD_ERROR syscall.Errno = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022 + ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023 + ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024 + ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025 + ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035 + ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037 + ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040 + ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041 + ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042 + ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044 + ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045 + ERROR_CTX_INVALID_WD syscall.Errno = 7049 + ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050 + ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051 + ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052 + ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053 + ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054 + ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055 + ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056 + ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057 + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058 + ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059 + ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060 + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061 + ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062 + ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063 + ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064 + ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065 + ERROR_CTX_CDM_CONNECT syscall.Errno = 7066 + ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067 + ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068 + ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069 + ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070 + FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001 + FRS_ERR_STARTING_SERVICE syscall.Errno = 8002 + FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003 + FRS_ERR_INTERNAL_API syscall.Errno = 8004 + FRS_ERR_INTERNAL syscall.Errno = 8005 + FRS_ERR_SERVICE_COMM syscall.Errno = 8006 + FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007 + FRS_ERR_AUTHENTICATION syscall.Errno = 8008 + FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009 + FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010 + FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011 + FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012 + FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013 + FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014 + FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015 + FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016 + FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017 + DS_S_SUCCESS = ERROR_SUCCESS + ERROR_DS_NOT_INSTALLED syscall.Errno = 8200 + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201 + ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202 + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203 + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204 + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205 + ERROR_DS_BUSY syscall.Errno = 8206 + ERROR_DS_UNAVAILABLE syscall.Errno = 8207 + ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208 + ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209 + ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210 + ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211 + ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212 + ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213 + ERROR_DS_CANT_ON_RDN syscall.Errno = 8214 + ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215 + ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216 + ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217 + ERROR_SHARED_POLICY syscall.Errno = 8218 + ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219 + ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220 + ERROR_PROMOTION_ACTIVE syscall.Errno = 8221 + ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222 + ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224 + ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225 + ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226 + ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227 + ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228 + ERROR_DS_COMPARE_FALSE syscall.Errno = 8229 + ERROR_DS_COMPARE_TRUE syscall.Errno = 8230 + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231 + ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232 + ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233 + ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234 + ERROR_DS_REFERRAL syscall.Errno = 8235 + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236 + ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237 + ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238 + ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239 + ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240 + ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241 + ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242 + ERROR_DS_IS_LEAF syscall.Errno = 8243 + ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244 + ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245 + ERROR_DS_LOOP_DETECT syscall.Errno = 8246 + ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247 + ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248 + ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249 + ERROR_DS_SERVER_DOWN syscall.Errno = 8250 + ERROR_DS_LOCAL_ERROR syscall.Errno = 8251 + ERROR_DS_ENCODING_ERROR syscall.Errno = 8252 + ERROR_DS_DECODING_ERROR syscall.Errno = 8253 + ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254 + ERROR_DS_PARAM_ERROR syscall.Errno = 8255 + ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256 + ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257 + ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258 + ERROR_DS_CLIENT_LOOP syscall.Errno = 8259 + ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260 + ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261 + ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262 + ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263 + ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301 + ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302 + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303 + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304 + ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305 + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306 + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307 + ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308 + ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309 + ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310 + ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311 + ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312 + ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313 + ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314 + ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315 + ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316 + ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317 + ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320 + ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321 + ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322 + ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323 + ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324 + ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325 + ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326 + ERROR_DS_NO_CHAINING syscall.Errno = 8327 + ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328 + ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329 + ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330 + ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331 + ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332 + ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333 + ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334 + ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335 + ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336 + ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337 + ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338 + ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339 + ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340 + ERROR_DS_GENERIC_ERROR syscall.Errno = 8341 + ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342 + ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343 + ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344 + ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345 + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346 + ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347 + ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348 + ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349 + ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350 + ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351 + ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352 + ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353 + ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354 + ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355 + ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356 + ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357 + ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358 + ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359 + ERROR_DS_INVALID_DMD syscall.Errno = 8360 + ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361 + ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362 + ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363 + ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364 + ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365 + ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366 + ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367 + ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368 + ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369 + ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370 + ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371 + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372 + ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373 + ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374 + ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375 + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376 + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377 + ERROR_DS_DUP_RDN syscall.Errno = 8378 + ERROR_DS_DUP_OID syscall.Errno = 8379 + ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380 + ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381 + ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382 + ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383 + ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384 + ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385 + ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386 + ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387 + ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388 + ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389 + ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390 + ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391 + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392 + ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393 + ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394 + ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395 + ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396 + ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397 + ERROR_DS_CANT_DELETE syscall.Errno = 8398 + ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399 + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400 + ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401 + ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402 + ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403 + ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404 + ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405 + ERROR_DS_MISSING_SUPREF syscall.Errno = 8406 + ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407 + ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408 + ERROR_DS_DATABASE_ERROR syscall.Errno = 8409 + ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410 + ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411 + ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412 + ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413 + ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414 + ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415 + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416 + ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417 + ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418 + ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419 + ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420 + ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421 + ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422 + ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423 + ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424 + ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425 + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426 + ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427 + ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428 + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429 + ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430 + ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431 + ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432 + ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433 + ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434 + ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435 + ERROR_DS_DRA_GENERIC syscall.Errno = 8436 + ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437 + ERROR_DS_DRA_BUSY syscall.Errno = 8438 + ERROR_DS_DRA_BAD_DN syscall.Errno = 8439 + ERROR_DS_DRA_BAD_NC syscall.Errno = 8440 + ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441 + ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442 + ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443 + ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444 + ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445 + ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446 + ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447 + ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448 + ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449 + ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450 + ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451 + ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452 + ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453 + ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454 + ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455 + ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456 + ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457 + ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458 + ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459 + ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460 + ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461 + ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462 + ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463 + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464 + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465 + ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466 + ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467 + ERROR_DS_DUP_LINK_ID syscall.Errno = 8468 + ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469 + ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470 + ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471 + ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472 + ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473 + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474 + ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475 + ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476 + ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477 + ERROR_DS_DS_REQUIRED syscall.Errno = 8478 + ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479 + ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480 + ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481 + ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482 + ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483 + ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484 + ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485 + ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486 + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487 + ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488 + ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489 + ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490 + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491 + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492 + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493 + ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495 + ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496 + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497 + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498 + ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499 + ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500 + ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501 + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502 + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503 + ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504 + ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505 + ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506 + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507 + ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508 + ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509 + ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510 + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511 + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512 + ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513 + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514 + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515 + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516 + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517 + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518 + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519 + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520 + ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521 + ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522 + ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523 + ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524 + ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525 + ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526 + ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527 + ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528 + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529 + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530 + ERROR_DS_CANT_START syscall.Errno = 8531 + ERROR_DS_INIT_FAILURE syscall.Errno = 8532 + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533 + ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534 + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535 + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536 + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537 + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538 + ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539 + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540 + ERROR_SAM_INIT_FAILURE syscall.Errno = 8541 + ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542 + ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543 + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544 + ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545 + ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546 + ERROR_DS_GC_REQUIRED syscall.Errno = 8547 + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548 + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549 + ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550 + ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551 + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552 + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553 + ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554 + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555 + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556 + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557 + ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558 + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559 + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560 + ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561 + ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562 + ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563 + ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564 + ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565 + ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566 + ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567 + ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568 + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569 + ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570 + ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572 + ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573 + ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574 + ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575 + ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576 + ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577 + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578 + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579 + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580 + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581 + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582 + ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583 + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584 + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586 + ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587 + ERROR_DS_NOT_CLOSEST syscall.Errno = 8588 + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589 + ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590 + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591 + ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592 + ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593 + ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594 + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595 + ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596 + ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597 + ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598 + ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599 + ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600 + ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601 + ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602 + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603 + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604 + ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605 + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606 + ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607 + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608 + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609 + ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610 + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611 + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612 + ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613 + ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614 + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615 + ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616 + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617 + ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618 + ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619 + ERROR_NO_SECRETS syscall.Errno = 8620 + ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621 + ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622 + ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623 + ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624 + ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625 + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626 + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627 + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628 + ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629 + ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630 + ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631 + ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632 + ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633 + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634 + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635 + ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636 + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637 + ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638 + ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639 + ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640 + ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641 + ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642 + ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643 + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644 + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645 + ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646 + ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647 + ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648 + ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649 + ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650 + DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000 + DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS + DNS_ERROR_MASK syscall.Errno = 0x00002328 + DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001 + DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002 + DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003 + DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004 + DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005 + DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006 + DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007 + DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008 + DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009 + DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010 + DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016 + DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017 + DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018 + DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME + DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100 + DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101 + DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102 + DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103 + DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104 + DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105 + DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106 + DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107 + DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108 + DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109 + DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110 + DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111 + DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112 + DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113 + DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114 + DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115 + DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116 + DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117 + DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118 + DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119 + DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120 + DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121 + DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122 + DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123 + DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124 + DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125 + DNS_ERROR_INVALID_XML syscall.Errno = 9126 + DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127 + DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128 + DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129 + DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130 + DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500 + DNS_INFO_NO_RECORDS syscall.Errno = 9501 + DNS_ERROR_BAD_PACKET syscall.Errno = 9502 + DNS_ERROR_NO_PACKET syscall.Errno = 9503 + DNS_ERROR_RCODE syscall.Errno = 9504 + DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505 + DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET + DNS_REQUEST_PENDING syscall.Errno = 9506 + DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY + DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME + DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA + DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550 + DNS_ERROR_INVALID_TYPE syscall.Errno = 9551 + DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552 + DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553 + DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554 + DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555 + DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556 + DNS_STATUS_FQDN syscall.Errno = 9557 + DNS_STATUS_DOTTED_NAME syscall.Errno = 9558 + DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559 + DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560 + DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561 + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562 + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563 + DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564 + DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565 + DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566 + DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567 + DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568 + DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569 + DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570 + DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571 + DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572 + DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573 + DNS_ERROR_ZONE_BASE syscall.Errno = 9600 + DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601 + DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602 + DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603 + DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604 + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605 + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606 + DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607 + DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608 + DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609 + DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610 + DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611 + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612 + DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613 + DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614 + DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615 + DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616 + DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617 + DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618 + DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619 + DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620 + DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621 + DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622 + DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651 + DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652 + DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653 + DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654 + DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655 + DNS_ERROR_DATABASE_BASE syscall.Errno = 9700 + DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701 + DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702 + DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703 + DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704 + DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705 + DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706 + DNS_ERROR_CNAME_LOOP syscall.Errno = 9707 + DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708 + DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709 + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710 + DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711 + DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712 + DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713 + DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714 + DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715 + DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716 + DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717 + DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718 + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719 + DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720 + DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721 + DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722 + DNS_ERROR_OPERATION_BASE syscall.Errno = 9750 + DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751 + DNS_ERROR_AXFR syscall.Errno = 9752 + DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753 + DNS_ERROR_SECURE_BASE syscall.Errno = 9800 + DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801 + DNS_ERROR_SETUP_BASE syscall.Errno = 9850 + DNS_ERROR_NO_TCPIP syscall.Errno = 9851 + DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852 + DNS_ERROR_DP_BASE syscall.Errno = 9900 + DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901 + DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902 + DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903 + DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904 + DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905 + DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906 + DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911 + DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912 + DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913 + DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914 + DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915 + DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916 + DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917 + DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921 + DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922 + DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923 + DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924 + DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925 + DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951 + DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952 + DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953 + DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954 + DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955 + DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956 + DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957 + DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958 + DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959 + DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960 + DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961 + DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962 + DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963 + DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971 + DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972 + DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973 + DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974 + DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975 + DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976 + DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977 + DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978 + DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979 + DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980 + DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981 + DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982 + DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983 + DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984 + DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985 + DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986 + DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987 + DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988 + DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989 + DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990 + DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991 + DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992 + DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993 + DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994 + DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995 + DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996 + WSABASEERR syscall.Errno = 10000 + WSAEINTR syscall.Errno = 10004 + WSAEBADF syscall.Errno = 10009 + WSAEACCES syscall.Errno = 10013 + WSAEFAULT syscall.Errno = 10014 + WSAEINVAL syscall.Errno = 10022 + WSAEMFILE syscall.Errno = 10024 + WSAEWOULDBLOCK syscall.Errno = 10035 + WSAEINPROGRESS syscall.Errno = 10036 + WSAEALREADY syscall.Errno = 10037 + WSAENOTSOCK syscall.Errno = 10038 + WSAEDESTADDRREQ syscall.Errno = 10039 + WSAEMSGSIZE syscall.Errno = 10040 + WSAEPROTOTYPE syscall.Errno = 10041 + WSAENOPROTOOPT syscall.Errno = 10042 + WSAEPROTONOSUPPORT syscall.Errno = 10043 + WSAESOCKTNOSUPPORT syscall.Errno = 10044 + WSAEOPNOTSUPP syscall.Errno = 10045 + WSAEPFNOSUPPORT syscall.Errno = 10046 + WSAEAFNOSUPPORT syscall.Errno = 10047 + WSAEADDRINUSE syscall.Errno = 10048 + WSAEADDRNOTAVAIL syscall.Errno = 10049 + WSAENETDOWN syscall.Errno = 10050 + WSAENETUNREACH syscall.Errno = 10051 + WSAENETRESET syscall.Errno = 10052 + WSAECONNABORTED syscall.Errno = 10053 + WSAECONNRESET syscall.Errno = 10054 + WSAENOBUFS syscall.Errno = 10055 + WSAEISCONN syscall.Errno = 10056 + WSAENOTCONN syscall.Errno = 10057 + WSAESHUTDOWN syscall.Errno = 10058 + WSAETOOMANYREFS syscall.Errno = 10059 + WSAETIMEDOUT syscall.Errno = 10060 + WSAECONNREFUSED syscall.Errno = 10061 + WSAELOOP syscall.Errno = 10062 + WSAENAMETOOLONG syscall.Errno = 10063 + WSAEHOSTDOWN syscall.Errno = 10064 + WSAEHOSTUNREACH syscall.Errno = 10065 + WSAENOTEMPTY syscall.Errno = 10066 + WSAEPROCLIM syscall.Errno = 10067 + WSAEUSERS syscall.Errno = 10068 + WSAEDQUOT syscall.Errno = 10069 + WSAESTALE syscall.Errno = 10070 + WSAEREMOTE syscall.Errno = 10071 + WSASYSNOTREADY syscall.Errno = 10091 + WSAVERNOTSUPPORTED syscall.Errno = 10092 + WSANOTINITIALISED syscall.Errno = 10093 + WSAEDISCON syscall.Errno = 10101 + WSAENOMORE syscall.Errno = 10102 + WSAECANCELLED syscall.Errno = 10103 + WSAEINVALIDPROCTABLE syscall.Errno = 10104 + WSAEINVALIDPROVIDER syscall.Errno = 10105 + WSAEPROVIDERFAILEDINIT syscall.Errno = 10106 + WSASYSCALLFAILURE syscall.Errno = 10107 + WSASERVICE_NOT_FOUND syscall.Errno = 10108 + WSATYPE_NOT_FOUND syscall.Errno = 10109 + WSA_E_NO_MORE syscall.Errno = 10110 + WSA_E_CANCELLED syscall.Errno = 10111 + WSAEREFUSED syscall.Errno = 10112 + WSAHOST_NOT_FOUND syscall.Errno = 11001 + WSATRY_AGAIN syscall.Errno = 11002 + WSANO_RECOVERY syscall.Errno = 11003 + WSANO_DATA syscall.Errno = 11004 + WSA_QOS_RECEIVERS syscall.Errno = 11005 + WSA_QOS_SENDERS syscall.Errno = 11006 + WSA_QOS_NO_SENDERS syscall.Errno = 11007 + WSA_QOS_NO_RECEIVERS syscall.Errno = 11008 + WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009 + WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010 + WSA_QOS_POLICY_FAILURE syscall.Errno = 11011 + WSA_QOS_BAD_STYLE syscall.Errno = 11012 + WSA_QOS_BAD_OBJECT syscall.Errno = 11013 + WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014 + WSA_QOS_GENERIC_ERROR syscall.Errno = 11015 + WSA_QOS_ESERVICETYPE syscall.Errno = 11016 + WSA_QOS_EFLOWSPEC syscall.Errno = 11017 + WSA_QOS_EPROVSPECBUF syscall.Errno = 11018 + WSA_QOS_EFILTERSTYLE syscall.Errno = 11019 + WSA_QOS_EFILTERTYPE syscall.Errno = 11020 + WSA_QOS_EFILTERCOUNT syscall.Errno = 11021 + WSA_QOS_EOBJLENGTH syscall.Errno = 11022 + WSA_QOS_EFLOWCOUNT syscall.Errno = 11023 + WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024 + WSA_QOS_EPOLICYOBJ syscall.Errno = 11025 + WSA_QOS_EFLOWDESC syscall.Errno = 11026 + WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027 + WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028 + WSA_QOS_ESDMODEOBJ syscall.Errno = 11029 + WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030 + WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031 + WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032 + WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033 + ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000 + ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001 + ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002 + ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003 + ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004 + ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005 + ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006 + ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007 + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008 + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009 + ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010 + ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011 + ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012 + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013 + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014 + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015 + ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016 + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017 + ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018 + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019 + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020 + ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021 + ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022 + ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023 + WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024 + WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025 + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800 + ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801 + ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802 + ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803 + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804 + ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805 + ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806 + ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807 + ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808 + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809 + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810 + ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811 + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812 + ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813 + ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814 + ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815 + ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816 + ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817 + ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818 + ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819 + ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820 + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821 + ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822 + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823 + ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824 + ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825 + ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826 + ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827 + ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828 + ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829 + ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830 + ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831 + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832 + ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833 + ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836 + ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837 + ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838 + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839 + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840 + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841 + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842 + ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843 + ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844 + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845 + ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846 + ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847 + ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848 + ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849 + ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850 + ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851 + ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852 + ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853 + ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854 + ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855 + ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856 + ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857 + ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858 + ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859 + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860 + ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861 + ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862 + ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863 + ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864 + ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865 + ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866 + ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867 + ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868 + ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869 + ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870 + ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871 + ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872 + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873 + ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874 + ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875 + ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876 + ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877 + ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878 + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879 + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881 + ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882 + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883 + ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884 + ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885 + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886 + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887 + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888 + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889 + ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890 + ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891 + ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892 + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893 + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894 + ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895 + ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896 + ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897 + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898 + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899 + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900 + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901 + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902 + ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903 + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908 + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909 + ERROR_IPSEC_BAD_SPI syscall.Errno = 13910 + ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911 + ERROR_IPSEC_WRONG_SA syscall.Errno = 13912 + ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913 + ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914 + ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915 + ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916 + ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917 + ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918 + ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925 + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926 + ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927 + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928 + ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929 + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930 + ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931 + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932 + ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000 + ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001 + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002 + ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003 + ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004 + ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005 + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006 + ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007 + ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008 + ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009 + ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010 + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011 + ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012 + ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013 + ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014 + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015 + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017 + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018 + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019 + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020 + ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021 + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022 + ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023 + ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024 + ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025 + ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026 + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027 + ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028 + ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029 + ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030 + ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031 + ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032 + ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033 + ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034 + ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035 + ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036 + ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037 + ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038 + ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039 + ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040 + ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041 + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042 + ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043 + ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044 + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045 + ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046 + ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047 + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048 + ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049 + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050 + ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051 + ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052 + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053 + ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054 + ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055 + ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056 + ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057 + ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058 + ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059 + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060 + ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061 + ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062 + ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063 + ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064 + ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065 + ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066 + ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067 + ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068 + ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069 + ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070 + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071 + ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072 + ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073 + ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074 + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075 + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076 + ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077 + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078 + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080 + ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081 + ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082 + ERROR_SXS_CORRUPTION syscall.Errno = 14083 + ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084 + ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085 + ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086 + ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087 + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088 + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091 + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092 + ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093 + ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094 + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095 + ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096 + ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097 + ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098 + ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099 + ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100 + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101 + ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102 + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103 + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104 + ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105 + ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106 + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107 + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 + ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 + ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 + ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 + ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003 + ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004 + ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005 + ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007 + ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008 + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009 + ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010 + ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011 + ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012 + ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013 + ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014 + ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015 + ERROR_EVT_FILTER_INVARG syscall.Errno = 15016 + ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017 + ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018 + ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019 + ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020 + ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021 + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022 + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023 + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024 + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025 + ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026 + ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027 + ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028 + ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029 + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030 + ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031 + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032 + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033 + ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034 + ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035 + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036 + ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037 + ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038 + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080 + ERROR_EC_LOG_DISABLED syscall.Errno = 15081 + ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082 + ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083 + ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084 + ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085 + ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100 + ERROR_MUI_INVALID_FILE syscall.Errno = 15101 + ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102 + ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103 + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104 + ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105 + ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106 + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107 + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108 + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110 + ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111 + ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112 + ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113 + ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114 + ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115 + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116 + ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117 + ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118 + ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119 + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120 + ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121 + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122 + ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126 + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127 + ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135 + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136 + ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137 + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138 + ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139 + ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142 + ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143 + ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144 + ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145 + ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146 + ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147 + ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148 + ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149 + ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150 + ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151 + ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152 + ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153 + ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154 + ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155 + ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156 + ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 + ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 + ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 + ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 + ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 + ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203 + ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204 + ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205 + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206 + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207 + ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250 + ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299 + ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300 + ERROR_HASH_NOT_PRESENT syscall.Errno = 15301 + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321 + ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322 + ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323 + ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324 + ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325 + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326 + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327 + ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400 + ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401 + ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402 + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403 + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404 + ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405 + ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501 + ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600 + ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601 + ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602 + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603 + ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604 + ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605 + ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606 + ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607 + ERROR_INSTALL_CANCEL syscall.Errno = 15608 + ERROR_INSTALL_FAILED syscall.Errno = 15609 + ERROR_REMOVE_FAILED syscall.Errno = 15610 + ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611 + ERROR_NEEDS_REMEDIATION syscall.Errno = 15612 + ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613 + ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614 + ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615 + ERROR_PACKAGE_UPDATING syscall.Errno = 15616 + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617 + ERROR_PACKAGES_IN_USE syscall.Errno = 15618 + ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619 + ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620 + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621 + ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622 + ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623 + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624 + ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625 + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626 + ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627 + ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628 + ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629 + ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630 + ERROR_NEEDS_REGISTRATION syscall.Errno = 15631 + ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632 + ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634 + ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635 + ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636 + ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637 + ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638 + ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640 + ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641 + ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642 + ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643 + ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644 + ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 + ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 + ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 + APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 + APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 + APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 + APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703 + APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 + APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 + APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 + ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 + ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 + ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 + ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803 + ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804 + ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805 + ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806 + ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807 + ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808 + ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809 + ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810 + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811 + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812 + ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813 + ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814 + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815 + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816 + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817 + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818 + ERROR_API_UNAVAILABLE syscall.Errno = 15841 + STORE_ERROR_UNLICENSED syscall.Errno = 15861 + STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862 + STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863 + STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864 + SEVERITY_SUCCESS syscall.Errno = 0 + SEVERITY_ERROR syscall.Errno = 1 + FACILITY_NT_BIT = 0x10000000 + E_NOT_SET = ERROR_NOT_FOUND + E_NOT_VALID_STATE = ERROR_INVALID_STATE + E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER + E_TIME_CRITICAL_THREAD = ERROR_TIME_CRITICAL_THREAD + NOERROR syscall.Errno = 0 + E_UNEXPECTED Handle = 0x8000FFFF + E_NOTIMPL Handle = 0x80004001 + E_OUTOFMEMORY Handle = 0x8007000E + E_INVALIDARG Handle = 0x80070057 + E_NOINTERFACE Handle = 0x80004002 + E_POINTER Handle = 0x80004003 + E_HANDLE Handle = 0x80070006 + E_ABORT Handle = 0x80004004 + E_FAIL Handle = 0x80004005 + E_ACCESSDENIED Handle = 0x80070005 + E_PENDING Handle = 0x8000000A + E_BOUNDS Handle = 0x8000000B + E_CHANGED_STATE Handle = 0x8000000C + E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D + E_ILLEGAL_METHOD_CALL Handle = 0x8000000E + RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F + RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010 + RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011 + RO_E_INVALID_METADATA_FILE Handle = 0x80000012 + RO_E_CLOSED Handle = 0x80000013 + RO_E_EXCLUSIVE_WRITE Handle = 0x80000014 + RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015 + RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016 + E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017 + E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018 + E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019 + E_APPLICATION_EXITING Handle = 0x8000001A + E_APPLICATION_VIEW_EXITING Handle = 0x8000001B + RO_E_MUST_BE_AGILE Handle = 0x8000001C + RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D + RO_E_COMMITTED Handle = 0x8000001E + RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F + RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020 + RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021 + CO_E_INIT_TLS Handle = 0x80004006 + CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007 + CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008 + CO_E_INIT_CLASS_CACHE Handle = 0x80004009 + CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A + CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B + CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D + CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E + CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F + CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010 + CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011 + CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012 + CO_E_CANT_REMOTE Handle = 0x80004013 + CO_E_BAD_SERVER_NAME Handle = 0x80004014 + CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015 + CO_E_OLE1DDE_DISABLED Handle = 0x80004016 + CO_E_RUNAS_SYNTAX Handle = 0x80004017 + CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018 + CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019 + CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A + CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B + CO_E_START_SERVICE_FAILURE Handle = 0x8000401C + CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D + CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E + CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F + CO_E_IIDREG_INCONSISTENT Handle = 0x80004020 + CO_E_NOT_SUPPORTED Handle = 0x80004021 + CO_E_RELOAD_DLL Handle = 0x80004022 + CO_E_MSI_ERROR Handle = 0x80004023 + CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024 + CO_E_SERVER_PAUSED Handle = 0x80004025 + CO_E_SERVER_NOT_PAUSED Handle = 0x80004026 + CO_E_CLASS_DISABLED Handle = 0x80004027 + CO_E_CLRNOTAVAILABLE Handle = 0x80004028 + CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029 + CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A + CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B + CO_E_TRACKER_CONFIG Handle = 0x80004030 + CO_E_THREADPOOL_CONFIG Handle = 0x80004031 + CO_E_SXS_CONFIG Handle = 0x80004032 + CO_E_MALFORMED_SPN Handle = 0x80004033 + CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034 + CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035 + S_OK Handle = 0 + S_FALSE Handle = 1 + OLE_E_FIRST Handle = 0x80040000 + OLE_E_LAST Handle = 0x800400FF + OLE_S_FIRST Handle = 0x00040000 + OLE_S_LAST Handle = 0x000400FF + OLE_E_OLEVERB Handle = 0x80040000 + OLE_E_ADVF Handle = 0x80040001 + OLE_E_ENUM_NOMORE Handle = 0x80040002 + OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003 + OLE_E_NOCONNECTION Handle = 0x80040004 + OLE_E_NOTRUNNING Handle = 0x80040005 + OLE_E_NOCACHE Handle = 0x80040006 + OLE_E_BLANK Handle = 0x80040007 + OLE_E_CLASSDIFF Handle = 0x80040008 + OLE_E_CANT_GETMONIKER Handle = 0x80040009 + OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A + OLE_E_STATIC Handle = 0x8004000B + OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C + OLE_E_INVALIDRECT Handle = 0x8004000D + OLE_E_WRONGCOMPOBJ Handle = 0x8004000E + OLE_E_INVALIDHWND Handle = 0x8004000F + OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010 + OLE_E_CANTCONVERT Handle = 0x80040011 + OLE_E_NOSTORAGE Handle = 0x80040012 + DV_E_FORMATETC Handle = 0x80040064 + DV_E_DVTARGETDEVICE Handle = 0x80040065 + DV_E_STGMEDIUM Handle = 0x80040066 + DV_E_STATDATA Handle = 0x80040067 + DV_E_LINDEX Handle = 0x80040068 + DV_E_TYMED Handle = 0x80040069 + DV_E_CLIPFORMAT Handle = 0x8004006A + DV_E_DVASPECT Handle = 0x8004006B + DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C + DV_E_NOIVIEWOBJECT Handle = 0x8004006D + DRAGDROP_E_FIRST syscall.Errno = 0x80040100 + DRAGDROP_E_LAST syscall.Errno = 0x8004010F + DRAGDROP_S_FIRST syscall.Errno = 0x00040100 + DRAGDROP_S_LAST syscall.Errno = 0x0004010F + DRAGDROP_E_NOTREGISTERED Handle = 0x80040100 + DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101 + DRAGDROP_E_INVALIDHWND Handle = 0x80040102 + DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103 + CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110 + CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F + CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110 + CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F + CLASS_E_NOAGGREGATION Handle = 0x80040110 + CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111 + CLASS_E_NOTLICENSED Handle = 0x80040112 + MARSHAL_E_FIRST syscall.Errno = 0x80040120 + MARSHAL_E_LAST syscall.Errno = 0x8004012F + MARSHAL_S_FIRST syscall.Errno = 0x00040120 + MARSHAL_S_LAST syscall.Errno = 0x0004012F + DATA_E_FIRST syscall.Errno = 0x80040130 + DATA_E_LAST syscall.Errno = 0x8004013F + DATA_S_FIRST syscall.Errno = 0x00040130 + DATA_S_LAST syscall.Errno = 0x0004013F + VIEW_E_FIRST syscall.Errno = 0x80040140 + VIEW_E_LAST syscall.Errno = 0x8004014F + VIEW_S_FIRST syscall.Errno = 0x00040140 + VIEW_S_LAST syscall.Errno = 0x0004014F + VIEW_E_DRAW Handle = 0x80040140 + REGDB_E_FIRST syscall.Errno = 0x80040150 + REGDB_E_LAST syscall.Errno = 0x8004015F + REGDB_S_FIRST syscall.Errno = 0x00040150 + REGDB_S_LAST syscall.Errno = 0x0004015F + REGDB_E_READREGDB Handle = 0x80040150 + REGDB_E_WRITEREGDB Handle = 0x80040151 + REGDB_E_KEYMISSING Handle = 0x80040152 + REGDB_E_INVALIDVALUE Handle = 0x80040153 + REGDB_E_CLASSNOTREG Handle = 0x80040154 + REGDB_E_IIDNOTREG Handle = 0x80040155 + REGDB_E_BADTHREADINGMODEL Handle = 0x80040156 + REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157 + CAT_E_FIRST syscall.Errno = 0x80040160 + CAT_E_LAST syscall.Errno = 0x80040161 + CAT_E_CATIDNOEXIST Handle = 0x80040160 + CAT_E_NODESCRIPTION Handle = 0x80040161 + CS_E_FIRST syscall.Errno = 0x80040164 + CS_E_LAST syscall.Errno = 0x8004016F + CS_E_PACKAGE_NOTFOUND Handle = 0x80040164 + CS_E_NOT_DELETABLE Handle = 0x80040165 + CS_E_CLASS_NOTFOUND Handle = 0x80040166 + CS_E_INVALID_VERSION Handle = 0x80040167 + CS_E_NO_CLASSSTORE Handle = 0x80040168 + CS_E_OBJECT_NOTFOUND Handle = 0x80040169 + CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A + CS_E_INVALID_PATH Handle = 0x8004016B + CS_E_NETWORK_ERROR Handle = 0x8004016C + CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D + CS_E_SCHEMA_MISMATCH Handle = 0x8004016E + CS_E_INTERNAL_ERROR Handle = 0x8004016F + CACHE_E_FIRST syscall.Errno = 0x80040170 + CACHE_E_LAST syscall.Errno = 0x8004017F + CACHE_S_FIRST syscall.Errno = 0x00040170 + CACHE_S_LAST syscall.Errno = 0x0004017F + CACHE_E_NOCACHE_UPDATED Handle = 0x80040170 + OLEOBJ_E_FIRST syscall.Errno = 0x80040180 + OLEOBJ_E_LAST syscall.Errno = 0x8004018F + OLEOBJ_S_FIRST syscall.Errno = 0x00040180 + OLEOBJ_S_LAST syscall.Errno = 0x0004018F + OLEOBJ_E_NOVERBS Handle = 0x80040180 + OLEOBJ_E_INVALIDVERB Handle = 0x80040181 + CLIENTSITE_E_FIRST syscall.Errno = 0x80040190 + CLIENTSITE_E_LAST syscall.Errno = 0x8004019F + CLIENTSITE_S_FIRST syscall.Errno = 0x00040190 + CLIENTSITE_S_LAST syscall.Errno = 0x0004019F + INPLACE_E_NOTUNDOABLE Handle = 0x800401A0 + INPLACE_E_NOTOOLSPACE Handle = 0x800401A1 + INPLACE_E_FIRST syscall.Errno = 0x800401A0 + INPLACE_E_LAST syscall.Errno = 0x800401AF + INPLACE_S_FIRST syscall.Errno = 0x000401A0 + INPLACE_S_LAST syscall.Errno = 0x000401AF + ENUM_E_FIRST syscall.Errno = 0x800401B0 + ENUM_E_LAST syscall.Errno = 0x800401BF + ENUM_S_FIRST syscall.Errno = 0x000401B0 + ENUM_S_LAST syscall.Errno = 0x000401BF + CONVERT10_E_FIRST syscall.Errno = 0x800401C0 + CONVERT10_E_LAST syscall.Errno = 0x800401CF + CONVERT10_S_FIRST syscall.Errno = 0x000401C0 + CONVERT10_S_LAST syscall.Errno = 0x000401CF + CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0 + CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1 + CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2 + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3 + CONVERT10_E_STG_FMT Handle = 0x800401C4 + CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5 + CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6 + CLIPBRD_E_FIRST syscall.Errno = 0x800401D0 + CLIPBRD_E_LAST syscall.Errno = 0x800401DF + CLIPBRD_S_FIRST syscall.Errno = 0x000401D0 + CLIPBRD_S_LAST syscall.Errno = 0x000401DF + CLIPBRD_E_CANT_OPEN Handle = 0x800401D0 + CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1 + CLIPBRD_E_CANT_SET Handle = 0x800401D2 + CLIPBRD_E_BAD_DATA Handle = 0x800401D3 + CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4 + MK_E_FIRST syscall.Errno = 0x800401E0 + MK_E_LAST syscall.Errno = 0x800401EF + MK_S_FIRST syscall.Errno = 0x000401E0 + MK_S_LAST syscall.Errno = 0x000401EF + MK_E_CONNECTMANUALLY Handle = 0x800401E0 + MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1 + MK_E_NEEDGENERIC Handle = 0x800401E2 + MK_E_UNAVAILABLE Handle = 0x800401E3 + MK_E_SYNTAX Handle = 0x800401E4 + MK_E_NOOBJECT Handle = 0x800401E5 + MK_E_INVALIDEXTENSION Handle = 0x800401E6 + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7 + MK_E_NOTBINDABLE Handle = 0x800401E8 + MK_E_NOTBOUND Handle = 0x800401E9 + MK_E_CANTOPENFILE Handle = 0x800401EA + MK_E_MUSTBOTHERUSER Handle = 0x800401EB + MK_E_NOINVERSE Handle = 0x800401EC + MK_E_NOSTORAGE Handle = 0x800401ED + MK_E_NOPREFIX Handle = 0x800401EE + MK_E_ENUMERATION_FAILED Handle = 0x800401EF + CO_E_FIRST syscall.Errno = 0x800401F0 + CO_E_LAST syscall.Errno = 0x800401FF + CO_S_FIRST syscall.Errno = 0x000401F0 + CO_S_LAST syscall.Errno = 0x000401FF + CO_E_NOTINITIALIZED Handle = 0x800401F0 + CO_E_ALREADYINITIALIZED Handle = 0x800401F1 + CO_E_CANTDETERMINECLASS Handle = 0x800401F2 + CO_E_CLASSSTRING Handle = 0x800401F3 + CO_E_IIDSTRING Handle = 0x800401F4 + CO_E_APPNOTFOUND Handle = 0x800401F5 + CO_E_APPSINGLEUSE Handle = 0x800401F6 + CO_E_ERRORINAPP Handle = 0x800401F7 + CO_E_DLLNOTFOUND Handle = 0x800401F8 + CO_E_ERRORINDLL Handle = 0x800401F9 + CO_E_WRONGOSFORAPP Handle = 0x800401FA + CO_E_OBJNOTREG Handle = 0x800401FB + CO_E_OBJISREG Handle = 0x800401FC + CO_E_OBJNOTCONNECTED Handle = 0x800401FD + CO_E_APPDIDNTREG Handle = 0x800401FE + CO_E_RELEASED Handle = 0x800401FF + EVENT_E_FIRST syscall.Errno = 0x80040200 + EVENT_E_LAST syscall.Errno = 0x8004021F + EVENT_S_FIRST syscall.Errno = 0x00040200 + EVENT_S_LAST syscall.Errno = 0x0004021F + EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200 + EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201 + EVENT_S_NOSUBSCRIBERS Handle = 0x00040202 + EVENT_E_QUERYSYNTAX Handle = 0x80040203 + EVENT_E_QUERYFIELD Handle = 0x80040204 + EVENT_E_INTERNALEXCEPTION Handle = 0x80040205 + EVENT_E_INTERNALERROR Handle = 0x80040206 + EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207 + EVENT_E_USER_EXCEPTION Handle = 0x80040208 + EVENT_E_TOO_MANY_METHODS Handle = 0x80040209 + EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A + EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B + EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C + EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D + EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E + EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F + EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210 + TPC_E_INVALID_PROPERTY Handle = 0x80040241 + TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212 + TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B + TPC_E_INVALID_INPUT_RECT Handle = 0x80040219 + TPC_E_INVALID_STROKE Handle = 0x80040222 + TPC_E_INITIALIZE_FAIL Handle = 0x80040223 + TPC_E_NOT_RELEVANT Handle = 0x80040232 + TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233 + TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235 + TPC_E_INVALID_RIGHTS Handle = 0x80040236 + TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237 + TPC_E_QUEUE_FULL Handle = 0x80040238 + TPC_E_INVALID_CONFIGURATION Handle = 0x80040239 + TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A + TPC_S_TRUNCATED Handle = 0x00040252 + TPC_S_INTERRUPTED Handle = 0x00040253 + TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254 + XACT_E_FIRST syscall.Errno = 0x8004D000 + XACT_E_LAST syscall.Errno = 0x8004D02B + XACT_S_FIRST syscall.Errno = 0x0004D000 + XACT_S_LAST syscall.Errno = 0x0004D010 + XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000 + XACT_E_CANTRETAIN Handle = 0x8004D001 + XACT_E_COMMITFAILED Handle = 0x8004D002 + XACT_E_COMMITPREVENTED Handle = 0x8004D003 + XACT_E_HEURISTICABORT Handle = 0x8004D004 + XACT_E_HEURISTICCOMMIT Handle = 0x8004D005 + XACT_E_HEURISTICDAMAGE Handle = 0x8004D006 + XACT_E_HEURISTICDANGER Handle = 0x8004D007 + XACT_E_ISOLATIONLEVEL Handle = 0x8004D008 + XACT_E_NOASYNC Handle = 0x8004D009 + XACT_E_NOENLIST Handle = 0x8004D00A + XACT_E_NOISORETAIN Handle = 0x8004D00B + XACT_E_NORESOURCE Handle = 0x8004D00C + XACT_E_NOTCURRENT Handle = 0x8004D00D + XACT_E_NOTRANSACTION Handle = 0x8004D00E + XACT_E_NOTSUPPORTED Handle = 0x8004D00F + XACT_E_UNKNOWNRMGRID Handle = 0x8004D010 + XACT_E_WRONGSTATE Handle = 0x8004D011 + XACT_E_WRONGUOW Handle = 0x8004D012 + XACT_E_XTIONEXISTS Handle = 0x8004D013 + XACT_E_NOIMPORTOBJECT Handle = 0x8004D014 + XACT_E_INVALIDCOOKIE Handle = 0x8004D015 + XACT_E_INDOUBT Handle = 0x8004D016 + XACT_E_NOTIMEOUT Handle = 0x8004D017 + XACT_E_ALREADYINPROGRESS Handle = 0x8004D018 + XACT_E_ABORTED Handle = 0x8004D019 + XACT_E_LOGFULL Handle = 0x8004D01A + XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B + XACT_E_CONNECTION_DOWN Handle = 0x8004D01C + XACT_E_CONNECTION_DENIED Handle = 0x8004D01D + XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E + XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F + XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020 + XACT_E_TIP_PULL_FAILED Handle = 0x8004D021 + XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022 + XACT_E_TIP_DISABLED Handle = 0x8004D023 + XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024 + XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025 + XACT_E_XA_TX_DISABLED Handle = 0x8004D026 + XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027 + XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028 + XACT_E_ABORTING Handle = 0x8004D029 + XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A + XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B + XACT_E_LU_TX_DISABLED Handle = 0x8004D02C + XACT_E_CLERKNOTFOUND Handle = 0x8004D080 + XACT_E_CLERKEXISTS Handle = 0x8004D081 + XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082 + XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083 + XACT_E_INVALIDLSN Handle = 0x8004D084 + XACT_E_REPLAYREQUEST Handle = 0x8004D085 + XACT_S_ASYNC Handle = 0x0004D000 + XACT_S_DEFECT Handle = 0x0004D001 + XACT_S_READONLY Handle = 0x0004D002 + XACT_S_SOMENORETAIN Handle = 0x0004D003 + XACT_S_OKINFORM Handle = 0x0004D004 + XACT_S_MADECHANGESCONTENT Handle = 0x0004D005 + XACT_S_MADECHANGESINFORM Handle = 0x0004D006 + XACT_S_ALLNORETAIN Handle = 0x0004D007 + XACT_S_ABORTING Handle = 0x0004D008 + XACT_S_SINGLEPHASE Handle = 0x0004D009 + XACT_S_LOCALLY_OK Handle = 0x0004D00A + XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010 + CONTEXT_E_FIRST syscall.Errno = 0x8004E000 + CONTEXT_E_LAST syscall.Errno = 0x8004E02F + CONTEXT_S_FIRST syscall.Errno = 0x0004E000 + CONTEXT_S_LAST syscall.Errno = 0x0004E02F + CONTEXT_E_ABORTED Handle = 0x8004E002 + CONTEXT_E_ABORTING Handle = 0x8004E003 + CONTEXT_E_NOCONTEXT Handle = 0x8004E004 + CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005 + CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006 + CONTEXT_E_OLDREF Handle = 0x8004E007 + CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C + CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F + CO_E_ACTIVATIONFAILED Handle = 0x8004E021 + CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022 + CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023 + CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024 + CO_E_INITIALIZATIONFAILED Handle = 0x8004E025 + CONTEXT_E_NOJIT Handle = 0x8004E026 + CONTEXT_E_NOTRANSACTION Handle = 0x8004E027 + CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028 + CO_E_NOIISINTRINSICS Handle = 0x8004E029 + CO_E_NOCOOKIES Handle = 0x8004E02A + CO_E_DBERROR Handle = 0x8004E02B + CO_E_NOTPOOLED Handle = 0x8004E02C + CO_E_NOTCONSTRUCTED Handle = 0x8004E02D + CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E + CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F + CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030 + CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031 + OLE_S_USEREG Handle = 0x00040000 + OLE_S_STATIC Handle = 0x00040001 + OLE_S_MAC_CLIPFORMAT Handle = 0x00040002 + DRAGDROP_S_DROP Handle = 0x00040100 + DRAGDROP_S_CANCEL Handle = 0x00040101 + DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102 + DATA_S_SAMEFORMATETC Handle = 0x00040130 + VIEW_S_ALREADY_FROZEN Handle = 0x00040140 + CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170 + CACHE_S_SAMECACHE Handle = 0x00040171 + CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172 + OLEOBJ_S_INVALIDVERB Handle = 0x00040180 + OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181 + OLEOBJ_S_INVALIDHWND Handle = 0x00040182 + INPLACE_S_TRUNCATED Handle = 0x000401A0 + CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0 + MK_S_REDUCED_TO_SELF Handle = 0x000401E2 + MK_S_ME Handle = 0x000401E4 + MK_S_HIM Handle = 0x000401E5 + MK_S_US Handle = 0x000401E6 + MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7 + SCHED_S_TASK_READY Handle = 0x00041300 + SCHED_S_TASK_RUNNING Handle = 0x00041301 + SCHED_S_TASK_DISABLED Handle = 0x00041302 + SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303 + SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304 + SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305 + SCHED_S_TASK_TERMINATED Handle = 0x00041306 + SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307 + SCHED_S_EVENT_TRIGGER Handle = 0x00041308 + SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309 + SCHED_E_TASK_NOT_READY Handle = 0x8004130A + SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B + SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C + SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D + SCHED_E_INVALID_TASK Handle = 0x8004130E + SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F + SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310 + SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311 + SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312 + SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313 + SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314 + SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315 + SCHED_E_UNEXPECTEDNODE Handle = 0x80041316 + SCHED_E_NAMESPACE Handle = 0x80041317 + SCHED_E_INVALIDVALUE Handle = 0x80041318 + SCHED_E_MISSINGNODE Handle = 0x80041319 + SCHED_E_MALFORMEDXML Handle = 0x8004131A + SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B + SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C + SCHED_E_TOO_MANY_NODES Handle = 0x8004131D + SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E + SCHED_E_ALREADY_RUNNING Handle = 0x8004131F + SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320 + SCHED_E_INVALID_TASK_HASH Handle = 0x80041321 + SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322 + SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323 + SCHED_E_TASK_ATTEMPTED Handle = 0x80041324 + SCHED_S_TASK_QUEUED Handle = 0x00041325 + SCHED_E_TASK_DISABLED Handle = 0x80041326 + SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327 + SCHED_E_START_ON_DEMAND Handle = 0x80041328 + SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329 + SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330 + CO_E_CLASS_CREATE_FAILED Handle = 0x80080001 + CO_E_SCM_ERROR Handle = 0x80080002 + CO_E_SCM_RPC_FAILURE Handle = 0x80080003 + CO_E_BAD_PATH Handle = 0x80080004 + CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005 + CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006 + MK_E_NO_NORMALIZED Handle = 0x80080007 + CO_E_SERVER_STOPPING Handle = 0x80080008 + MEM_E_INVALID_ROOT Handle = 0x80080009 + MEM_E_INVALID_LINK Handle = 0x80080010 + MEM_E_INVALID_SIZE Handle = 0x80080011 + CO_S_NOTALLINTERFACES Handle = 0x00080012 + CO_S_MACHINENAMENOTFOUND Handle = 0x00080013 + CO_E_MISSING_DISPLAYNAME Handle = 0x80080015 + CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016 + CO_E_ELEVATION_DISABLED Handle = 0x80080017 + APPX_E_PACKAGING_INTERNAL Handle = 0x80080200 + APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201 + APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202 + APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203 + APPX_E_INVALID_MANIFEST Handle = 0x80080204 + APPX_E_INVALID_BLOCKMAP Handle = 0x80080205 + APPX_E_CORRUPT_CONTENT Handle = 0x80080206 + APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207 + APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208 + APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209 + APPX_E_INVALID_KEY_INFO Handle = 0x8008020A + APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B + APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C + APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D + APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E + APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F + APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210 + APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211 + APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212 + APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213 + APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214 + APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215 + APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216 + BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300 + DISP_E_UNKNOWNINTERFACE Handle = 0x80020001 + DISP_E_MEMBERNOTFOUND Handle = 0x80020003 + DISP_E_PARAMNOTFOUND Handle = 0x80020004 + DISP_E_TYPEMISMATCH Handle = 0x80020005 + DISP_E_UNKNOWNNAME Handle = 0x80020006 + DISP_E_NONAMEDARGS Handle = 0x80020007 + DISP_E_BADVARTYPE Handle = 0x80020008 + DISP_E_EXCEPTION Handle = 0x80020009 + DISP_E_OVERFLOW Handle = 0x8002000A + DISP_E_BADINDEX Handle = 0x8002000B + DISP_E_UNKNOWNLCID Handle = 0x8002000C + DISP_E_ARRAYISLOCKED Handle = 0x8002000D + DISP_E_BADPARAMCOUNT Handle = 0x8002000E + DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F + DISP_E_BADCALLEE Handle = 0x80020010 + DISP_E_NOTACOLLECTION Handle = 0x80020011 + DISP_E_DIVBYZERO Handle = 0x80020012 + DISP_E_BUFFERTOOSMALL Handle = 0x80020013 + TYPE_E_BUFFERTOOSMALL Handle = 0x80028016 + TYPE_E_FIELDNOTFOUND Handle = 0x80028017 + TYPE_E_INVDATAREAD Handle = 0x80028018 + TYPE_E_UNSUPFORMAT Handle = 0x80028019 + TYPE_E_REGISTRYACCESS Handle = 0x8002801C + TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D + TYPE_E_UNDEFINEDTYPE Handle = 0x80028027 + TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028 + TYPE_E_INVALIDSTATE Handle = 0x80028029 + TYPE_E_WRONGTYPEKIND Handle = 0x8002802A + TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B + TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C + TYPE_E_NAMECONFLICT Handle = 0x8002802D + TYPE_E_UNKNOWNLCID Handle = 0x8002802E + TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F + TYPE_E_BADMODULEKIND Handle = 0x800288BD + TYPE_E_SIZETOOBIG Handle = 0x800288C5 + TYPE_E_DUPLICATEID Handle = 0x800288C6 + TYPE_E_INVALIDID Handle = 0x800288CF + TYPE_E_TYPEMISMATCH Handle = 0x80028CA0 + TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1 + TYPE_E_IOERROR Handle = 0x80028CA2 + TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3 + TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A + TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83 + TYPE_E_CIRCULARTYPE Handle = 0x80029C84 + STG_E_INVALIDFUNCTION Handle = 0x80030001 + STG_E_FILENOTFOUND Handle = 0x80030002 + STG_E_PATHNOTFOUND Handle = 0x80030003 + STG_E_TOOMANYOPENFILES Handle = 0x80030004 + STG_E_ACCESSDENIED Handle = 0x80030005 + STG_E_INVALIDHANDLE Handle = 0x80030006 + STG_E_INSUFFICIENTMEMORY Handle = 0x80030008 + STG_E_INVALIDPOINTER Handle = 0x80030009 + STG_E_NOMOREFILES Handle = 0x80030012 + STG_E_DISKISWRITEPROTECTED Handle = 0x80030013 + STG_E_SEEKERROR Handle = 0x80030019 + STG_E_WRITEFAULT Handle = 0x8003001D + STG_E_READFAULT Handle = 0x8003001E + STG_E_SHAREVIOLATION Handle = 0x80030020 + STG_E_LOCKVIOLATION Handle = 0x80030021 + STG_E_FILEALREADYEXISTS Handle = 0x80030050 + STG_E_INVALIDPARAMETER Handle = 0x80030057 + STG_E_MEDIUMFULL Handle = 0x80030070 + STG_E_PROPSETMISMATCHED Handle = 0x800300F0 + STG_E_ABNORMALAPIEXIT Handle = 0x800300FA + STG_E_INVALIDHEADER Handle = 0x800300FB + STG_E_INVALIDNAME Handle = 0x800300FC + STG_E_UNKNOWN Handle = 0x800300FD + STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE + STG_E_INVALIDFLAG Handle = 0x800300FF + STG_E_INUSE Handle = 0x80030100 + STG_E_NOTCURRENT Handle = 0x80030101 + STG_E_REVERTED Handle = 0x80030102 + STG_E_CANTSAVE Handle = 0x80030103 + STG_E_OLDFORMAT Handle = 0x80030104 + STG_E_OLDDLL Handle = 0x80030105 + STG_E_SHAREREQUIRED Handle = 0x80030106 + STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107 + STG_E_EXTANTMARSHALLINGS Handle = 0x80030108 + STG_E_DOCFILECORRUPT Handle = 0x80030109 + STG_E_BADBASEADDRESS Handle = 0x80030110 + STG_E_DOCFILETOOLARGE Handle = 0x80030111 + STG_E_NOTSIMPLEFORMAT Handle = 0x80030112 + STG_E_INCOMPLETE Handle = 0x80030201 + STG_E_TERMINATED Handle = 0x80030202 + STG_S_CONVERTED Handle = 0x00030200 + STG_S_BLOCK Handle = 0x00030201 + STG_S_RETRYNOW Handle = 0x00030202 + STG_S_MONITORING Handle = 0x00030203 + STG_S_MULTIPLEOPENS Handle = 0x00030204 + STG_S_CONSOLIDATIONFAILED Handle = 0x00030205 + STG_S_CANNOTCONSOLIDATE Handle = 0x00030206 + STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207 + STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208 + STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209 + STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A + STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305 + STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306 + STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307 + STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308 + STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309 + STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A + STG_E_RESETS_EXHAUSTED Handle = 0x8003030B + RPC_E_CALL_REJECTED Handle = 0x80010001 + RPC_E_CALL_CANCELED Handle = 0x80010002 + RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003 + RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004 + RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005 + RPC_E_CONNECTION_TERMINATED Handle = 0x80010006 + RPC_E_SERVER_DIED Handle = 0x80010007 + RPC_E_CLIENT_DIED Handle = 0x80010008 + RPC_E_INVALID_DATAPACKET Handle = 0x80010009 + RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A + RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B + RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C + RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D + RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E + RPC_E_INVALID_DATA Handle = 0x8001000F + RPC_E_INVALID_PARAMETER Handle = 0x80010010 + RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011 + RPC_E_SERVER_DIED_DNE Handle = 0x80010012 + RPC_E_SYS_CALL_FAILED Handle = 0x80010100 + RPC_E_OUT_OF_RESOURCES Handle = 0x80010101 + RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102 + RPC_E_NOT_REGISTERED Handle = 0x80010103 + RPC_E_FAULT Handle = 0x80010104 + RPC_E_SERVERFAULT Handle = 0x80010105 + RPC_E_CHANGED_MODE Handle = 0x80010106 + RPC_E_INVALIDMETHOD Handle = 0x80010107 + RPC_E_DISCONNECTED Handle = 0x80010108 + RPC_E_RETRY Handle = 0x80010109 + RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A + RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B + RPC_E_INVALID_CALLDATA Handle = 0x8001010C + RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D + RPC_E_WRONG_THREAD Handle = 0x8001010E + RPC_E_THREAD_NOT_INIT Handle = 0x8001010F + RPC_E_VERSION_MISMATCH Handle = 0x80010110 + RPC_E_INVALID_HEADER Handle = 0x80010111 + RPC_E_INVALID_EXTENSION Handle = 0x80010112 + RPC_E_INVALID_IPID Handle = 0x80010113 + RPC_E_INVALID_OBJECT Handle = 0x80010114 + RPC_S_CALLPENDING Handle = 0x80010115 + RPC_S_WAITONTIMER Handle = 0x80010116 + RPC_E_CALL_COMPLETE Handle = 0x80010117 + RPC_E_UNSECURE_CALL Handle = 0x80010118 + RPC_E_TOO_LATE Handle = 0x80010119 + RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A + RPC_E_ACCESS_DENIED Handle = 0x8001011B + RPC_E_REMOTE_DISABLED Handle = 0x8001011C + RPC_E_INVALID_OBJREF Handle = 0x8001011D + RPC_E_NO_CONTEXT Handle = 0x8001011E + RPC_E_TIMEOUT Handle = 0x8001011F + RPC_E_NO_SYNC Handle = 0x80010120 + RPC_E_FULLSIC_REQUIRED Handle = 0x80010121 + RPC_E_INVALID_STD_NAME Handle = 0x80010122 + CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123 + CO_E_FAILEDTOGETSECCTX Handle = 0x80010124 + CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125 + CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126 + CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127 + CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128 + CO_E_FAILEDTOSETDACL Handle = 0x80010129 + CO_E_ACCESSCHECKFAILED Handle = 0x8001012A + CO_E_NETACCESSAPIFAILED Handle = 0x8001012B + CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C + CO_E_INVALIDSID Handle = 0x8001012D + CO_E_CONVERSIONFAILED Handle = 0x8001012E + CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F + CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130 + CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131 + CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132 + CO_E_SETSERLHNDLFAILED Handle = 0x80010133 + CO_E_FAILEDTOGETWINDIR Handle = 0x80010134 + CO_E_PATHTOOLONG Handle = 0x80010135 + CO_E_FAILEDTOGENUUID Handle = 0x80010136 + CO_E_FAILEDTOCREATEFILE Handle = 0x80010137 + CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138 + CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139 + CO_E_ACESINWRONGORDER Handle = 0x8001013A + CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B + CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C + CO_E_DECODEFAILED Handle = 0x8001013D + CO_E_ACNOTINITIALIZED Handle = 0x8001013F + CO_E_CANCEL_DISABLED Handle = 0x80010140 + RPC_E_UNEXPECTED Handle = 0x8001FFFF + ERROR_AUDITING_DISABLED Handle = 0xC0090001 + ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002 + ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003 + NTE_BAD_UID Handle = 0x80090001 + NTE_BAD_HASH Handle = 0x80090002 + NTE_BAD_KEY Handle = 0x80090003 + NTE_BAD_LEN Handle = 0x80090004 + NTE_BAD_DATA Handle = 0x80090005 + NTE_BAD_SIGNATURE Handle = 0x80090006 + NTE_BAD_VER Handle = 0x80090007 + NTE_BAD_ALGID Handle = 0x80090008 + NTE_BAD_FLAGS Handle = 0x80090009 + NTE_BAD_TYPE Handle = 0x8009000A + NTE_BAD_KEY_STATE Handle = 0x8009000B + NTE_BAD_HASH_STATE Handle = 0x8009000C + NTE_NO_KEY Handle = 0x8009000D + NTE_NO_MEMORY Handle = 0x8009000E + NTE_EXISTS Handle = 0x8009000F + NTE_PERM Handle = 0x80090010 + NTE_NOT_FOUND Handle = 0x80090011 + NTE_DOUBLE_ENCRYPT Handle = 0x80090012 + NTE_BAD_PROVIDER Handle = 0x80090013 + NTE_BAD_PROV_TYPE Handle = 0x80090014 + NTE_BAD_PUBLIC_KEY Handle = 0x80090015 + NTE_BAD_KEYSET Handle = 0x80090016 + NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017 + NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018 + NTE_KEYSET_NOT_DEF Handle = 0x80090019 + NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A + NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B + NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C + NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D + NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E + NTE_BAD_KEYSET_PARAM Handle = 0x8009001F + NTE_FAIL Handle = 0x80090020 + NTE_SYS_ERR Handle = 0x80090021 + NTE_SILENT_CONTEXT Handle = 0x80090022 + NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023 + NTE_TEMPORARY_PROFILE Handle = 0x80090024 + NTE_FIXEDPARAMETER Handle = 0x80090025 + NTE_INVALID_HANDLE Handle = 0x80090026 + NTE_INVALID_PARAMETER Handle = 0x80090027 + NTE_BUFFER_TOO_SMALL Handle = 0x80090028 + NTE_NOT_SUPPORTED Handle = 0x80090029 + NTE_NO_MORE_ITEMS Handle = 0x8009002A + NTE_BUFFERS_OVERLAP Handle = 0x8009002B + NTE_DECRYPTION_FAILURE Handle = 0x8009002C + NTE_INTERNAL_ERROR Handle = 0x8009002D + NTE_UI_REQUIRED Handle = 0x8009002E + NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F + NTE_DEVICE_NOT_READY Handle = 0x80090030 + NTE_AUTHENTICATION_IGNORED Handle = 0x80090031 + NTE_VALIDATION_FAILED Handle = 0x80090032 + NTE_INCORRECT_PASSWORD Handle = 0x80090033 + NTE_ENCRYPTION_FAILURE Handle = 0x80090034 + NTE_DEVICE_NOT_FOUND Handle = 0x80090035 + NTE_USER_CANCELLED Handle = 0x80090036 + NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037 + NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038 + SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300 + SEC_E_INVALID_HANDLE Handle = 0x80090301 + SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302 + SEC_E_TARGET_UNKNOWN Handle = 0x80090303 + SEC_E_INTERNAL_ERROR Handle = 0x80090304 + SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305 + SEC_E_NOT_OWNER Handle = 0x80090306 + SEC_E_CANNOT_INSTALL Handle = 0x80090307 + SEC_E_INVALID_TOKEN Handle = 0x80090308 + SEC_E_CANNOT_PACK Handle = 0x80090309 + SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A + SEC_E_NO_IMPERSONATION Handle = 0x8009030B + SEC_E_LOGON_DENIED Handle = 0x8009030C + SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D + SEC_E_NO_CREDENTIALS Handle = 0x8009030E + SEC_E_MESSAGE_ALTERED Handle = 0x8009030F + SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310 + SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311 + SEC_I_CONTINUE_NEEDED Handle = 0x00090312 + SEC_I_COMPLETE_NEEDED Handle = 0x00090313 + SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 + SEC_I_LOCAL_LOGON Handle = 0x00090315 + SEC_E_BAD_PKGID Handle = 0x80090316 + SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 + SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 + SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318 + SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320 + SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321 + SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320 + SEC_I_RENEGOTIATE Handle = 0x00090321 + SEC_E_WRONG_PRINCIPAL Handle = 0x80090322 + SEC_I_NO_LSA_CONTEXT Handle = 0x00090323 + SEC_E_TIME_SKEW Handle = 0x80090324 + SEC_E_UNTRUSTED_ROOT Handle = 0x80090325 + SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326 + SEC_E_CERT_UNKNOWN Handle = 0x80090327 + SEC_E_CERT_EXPIRED Handle = 0x80090328 + SEC_E_ENCRYPT_FAILURE Handle = 0x80090329 + SEC_E_DECRYPT_FAILURE Handle = 0x80090330 + SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331 + SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332 + SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333 + SEC_E_NO_TGT_REPLY Handle = 0x80090334 + SEC_E_NO_IP_ADDRESSES Handle = 0x80090335 + SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336 + SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337 + SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338 + SEC_E_MUST_BE_KDC Handle = 0x80090339 + SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A + SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B + SEC_E_NO_PA_DATA Handle = 0x8009033C + SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D + SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E + SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F + SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340 + SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341 + SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342 + SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343 + SEC_E_DELEGATION_REQUIRED Handle = 0x80090345 + SEC_E_BAD_BINDINGS Handle = 0x80090346 + SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347 + SEC_E_NO_KERB_KEY Handle = 0x80090348 + SEC_E_CERT_WRONG_USAGE Handle = 0x80090349 + SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350 + SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351 + SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352 + SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353 + SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354 + SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355 + SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356 + SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357 + SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358 + SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359 + SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A + SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B + SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C + SEC_E_INVALID_PARAMETER Handle = 0x8009035D + SEC_E_DELEGATION_POLICY Handle = 0x8009035E + SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F + SEC_I_NO_RENEGOTIATION Handle = 0x00090360 + SEC_E_NO_CONTEXT Handle = 0x80090361 + SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362 + SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363 + SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364 + SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365 + SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366 + SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 + SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 + SEC_E_INVALID_UPN_NAME Handle = 0x80090369 + SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR + SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION + CRYPT_E_MSG_ERROR Handle = 0x80091001 + CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002 + CRYPT_E_OID_FORMAT Handle = 0x80091003 + CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004 + CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005 + CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006 + CRYPT_E_HASH_VALUE Handle = 0x80091007 + CRYPT_E_INVALID_INDEX Handle = 0x80091008 + CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009 + CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A + CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B + CRYPT_E_CONTROL_TYPE Handle = 0x8009100C + CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D + CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E + CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F + CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010 + CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011 + CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012 + CRYPT_E_BAD_LEN Handle = 0x80092001 + CRYPT_E_BAD_ENCODE Handle = 0x80092002 + CRYPT_E_FILE_ERROR Handle = 0x80092003 + CRYPT_E_NOT_FOUND Handle = 0x80092004 + CRYPT_E_EXISTS Handle = 0x80092005 + CRYPT_E_NO_PROVIDER Handle = 0x80092006 + CRYPT_E_SELF_SIGNED Handle = 0x80092007 + CRYPT_E_DELETED_PREV Handle = 0x80092008 + CRYPT_E_NO_MATCH Handle = 0x80092009 + CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A + CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B + CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C + CRYPT_E_BAD_MSG Handle = 0x8009200D + CRYPT_E_NO_SIGNER Handle = 0x8009200E + CRYPT_E_PENDING_CLOSE Handle = 0x8009200F + CRYPT_E_REVOKED Handle = 0x80092010 + CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011 + CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012 + CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013 + CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014 + CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020 + CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021 + CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022 + CRYPT_E_INVALID_X500_STRING Handle = 0x80092023 + CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024 + CRYPT_E_FILERESIZED Handle = 0x80092025 + CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026 + CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027 + CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028 + CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029 + CRYPT_E_NOT_IN_CTL Handle = 0x8009202A + CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B + CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C + CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D + CRYPT_E_OSS_ERROR Handle = 0x80093000 + OSS_MORE_BUF Handle = 0x80093001 + OSS_NEGATIVE_UINTEGER Handle = 0x80093002 + OSS_PDU_RANGE Handle = 0x80093003 + OSS_MORE_INPUT Handle = 0x80093004 + OSS_DATA_ERROR Handle = 0x80093005 + OSS_BAD_ARG Handle = 0x80093006 + OSS_BAD_VERSION Handle = 0x80093007 + OSS_OUT_MEMORY Handle = 0x80093008 + OSS_PDU_MISMATCH Handle = 0x80093009 + OSS_LIMITED Handle = 0x8009300A + OSS_BAD_PTR Handle = 0x8009300B + OSS_BAD_TIME Handle = 0x8009300C + OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D + OSS_MEM_ERROR Handle = 0x8009300E + OSS_BAD_TABLE Handle = 0x8009300F + OSS_TOO_LONG Handle = 0x80093010 + OSS_CONSTRAINT_VIOLATED Handle = 0x80093011 + OSS_FATAL_ERROR Handle = 0x80093012 + OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013 + OSS_NULL_TBL Handle = 0x80093014 + OSS_NULL_FCN Handle = 0x80093015 + OSS_BAD_ENCRULES Handle = 0x80093016 + OSS_UNAVAIL_ENCRULES Handle = 0x80093017 + OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018 + OSS_UNIMPLEMENTED Handle = 0x80093019 + OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A + OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B + OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C + OSS_TABLE_MISMATCH Handle = 0x8009301D + OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E + OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F + OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020 + OSS_OUT_OF_RANGE Handle = 0x80093021 + OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022 + OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023 + OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024 + OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025 + OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026 + OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027 + OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028 + OSS_API_DLL_NOT_LINKED Handle = 0x80093029 + OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A + OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B + OSS_OPEN_TYPE_ERROR Handle = 0x8009302C + OSS_MUTEX_NOT_CREATED Handle = 0x8009302D + OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E + CRYPT_E_ASN1_ERROR Handle = 0x80093100 + CRYPT_E_ASN1_INTERNAL Handle = 0x80093101 + CRYPT_E_ASN1_EOD Handle = 0x80093102 + CRYPT_E_ASN1_CORRUPT Handle = 0x80093103 + CRYPT_E_ASN1_LARGE Handle = 0x80093104 + CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105 + CRYPT_E_ASN1_MEMORY Handle = 0x80093106 + CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107 + CRYPT_E_ASN1_BADPDU Handle = 0x80093108 + CRYPT_E_ASN1_BADARGS Handle = 0x80093109 + CRYPT_E_ASN1_BADREAL Handle = 0x8009310A + CRYPT_E_ASN1_BADTAG Handle = 0x8009310B + CRYPT_E_ASN1_CHOICE Handle = 0x8009310C + CRYPT_E_ASN1_RULE Handle = 0x8009310D + CRYPT_E_ASN1_UTF8 Handle = 0x8009310E + CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133 + CRYPT_E_ASN1_NYI Handle = 0x80093134 + CRYPT_E_ASN1_EXTENDED Handle = 0x80093201 + CRYPT_E_ASN1_NOEOD Handle = 0x80093202 + CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001 + CERTSRV_E_NO_REQUEST Handle = 0x80094002 + CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003 + CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004 + CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005 + CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006 + CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007 + CERTSRV_E_ROLECONFLICT Handle = 0x80094008 + CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009 + CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A + CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B + CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C + CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D + CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E + CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F + CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010 + CERTSRV_E_ENROLL_DENIED Handle = 0x80094011 + CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012 + CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013 + CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014 + CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015 + CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016 + CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017 + CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018 + CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800 + CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801 + CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802 + CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803 + CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804 + CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805 + CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806 + CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807 + CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808 + CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809 + CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A + CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B + CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C + CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D + CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E + CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F + CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810 + CERTSRV_E_KEY_LENGTH Handle = 0x80094811 + CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812 + CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813 + CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814 + CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815 + CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816 + CERTSRV_E_INVALID_EK Handle = 0x80094817 + CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818 + CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819 + CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A + CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B + CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C + CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D + CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E + CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F + CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820 + XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000 + XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001 + XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002 + XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003 + XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004 + XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005 + TRUST_E_SYSTEM_ERROR Handle = 0x80096001 + TRUST_E_NO_SIGNER_CERT Handle = 0x80096002 + TRUST_E_COUNTER_SIGNER Handle = 0x80096003 + TRUST_E_CERT_SIGNATURE Handle = 0x80096004 + TRUST_E_TIME_STAMP Handle = 0x80096005 + TRUST_E_BAD_DIGEST Handle = 0x80096010 + TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011 + TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019 + TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E + MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001 + MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002 + MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003 + MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004 + MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005 + MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006 + MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007 + MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008 + MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009 + MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A + MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B + MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C + MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D + MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010 + MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011 + MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012 + MSSIPOTF_E_FILE Handle = 0x80097013 + MSSIPOTF_E_CRYPT Handle = 0x80097014 + MSSIPOTF_E_BADVERSION Handle = 0x80097015 + MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016 + MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017 + MSSIPOTF_E_STRUCTURE Handle = 0x80097018 + ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019 + NTE_OP_OK syscall.Errno = 0 + TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001 + TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002 + TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003 + TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004 + DIGSIG_E_ENCODE Handle = 0x800B0005 + DIGSIG_E_DECODE Handle = 0x800B0006 + DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007 + DIGSIG_E_CRYPTO Handle = 0x800B0008 + PERSIST_E_SIZEDEFINITE Handle = 0x800B0009 + PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A + PERSIST_E_NOTSELFSIZING Handle = 0x800B000B + TRUST_E_NOSIGNATURE Handle = 0x800B0100 + CERT_E_EXPIRED Handle = 0x800B0101 + CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102 + CERT_E_ROLE Handle = 0x800B0103 + CERT_E_PATHLENCONST Handle = 0x800B0104 + CERT_E_CRITICAL Handle = 0x800B0105 + CERT_E_PURPOSE Handle = 0x800B0106 + CERT_E_ISSUERCHAINING Handle = 0x800B0107 + CERT_E_MALFORMED Handle = 0x800B0108 + CERT_E_UNTRUSTEDROOT Handle = 0x800B0109 + CERT_E_CHAINING Handle = 0x800B010A + TRUST_E_FAIL Handle = 0x800B010B + CERT_E_REVOKED Handle = 0x800B010C + CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D + CERT_E_REVOCATION_FAILURE Handle = 0x800B010E + CERT_E_CN_NO_MATCH Handle = 0x800B010F + CERT_E_WRONG_USAGE Handle = 0x800B0110 + TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111 + CERT_E_UNTRUSTEDCA Handle = 0x800B0112 + CERT_E_INVALID_POLICY Handle = 0x800B0113 + CERT_E_INVALID_NAME Handle = 0x800B0114 + SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000 + SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001 + SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002 + SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003 + SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100 + SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101 + SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102 + SPAPI_E_NO_BACKUP Handle = 0x800F0103 + SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200 + SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201 + SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202 + SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203 + SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204 + SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205 + SPAPI_E_INVALID_CLASS Handle = 0x800F0206 + SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207 + SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208 + SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209 + SPAPI_E_NO_INF Handle = 0x800F020A + SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B + SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C + SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D + SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E + SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F + SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210 + SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211 + SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212 + SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213 + SPAPI_E_DI_BAD_PATH Handle = 0x800F0214 + SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215 + SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216 + SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217 + SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218 + SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219 + SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A + SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B + SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C + SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D + SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E + SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F + SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220 + SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221 + SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222 + SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223 + SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224 + SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225 + SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226 + SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227 + SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228 + SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229 + SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A + SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B + SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C + SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D + SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E + SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F + SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230 + SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231 + SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232 + SPAPI_E_INVALID_TARGET Handle = 0x800F0233 + SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234 + SPAPI_E_IN_WOW64 Handle = 0x800F0235 + SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236 + SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237 + SPAPI_E_SCE_DISABLED Handle = 0x800F0238 + SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239 + SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A + SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B + SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C + SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D + SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E + SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F + SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240 + SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241 + SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242 + SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243 + SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244 + SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245 + SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246 + SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247 + SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248 + SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249 + SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A + SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B + SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C + SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300 + SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000 + SCARD_S_SUCCESS = S_OK + SCARD_F_INTERNAL_ERROR Handle = 0x80100001 + SCARD_E_CANCELLED Handle = 0x80100002 + SCARD_E_INVALID_HANDLE Handle = 0x80100003 + SCARD_E_INVALID_PARAMETER Handle = 0x80100004 + SCARD_E_INVALID_TARGET Handle = 0x80100005 + SCARD_E_NO_MEMORY Handle = 0x80100006 + SCARD_F_WAITED_TOO_LONG Handle = 0x80100007 + SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008 + SCARD_E_UNKNOWN_READER Handle = 0x80100009 + SCARD_E_TIMEOUT Handle = 0x8010000A + SCARD_E_SHARING_VIOLATION Handle = 0x8010000B + SCARD_E_NO_SMARTCARD Handle = 0x8010000C + SCARD_E_UNKNOWN_CARD Handle = 0x8010000D + SCARD_E_CANT_DISPOSE Handle = 0x8010000E + SCARD_E_PROTO_MISMATCH Handle = 0x8010000F + SCARD_E_NOT_READY Handle = 0x80100010 + SCARD_E_INVALID_VALUE Handle = 0x80100011 + SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012 + SCARD_F_COMM_ERROR Handle = 0x80100013 + SCARD_F_UNKNOWN_ERROR Handle = 0x80100014 + SCARD_E_INVALID_ATR Handle = 0x80100015 + SCARD_E_NOT_TRANSACTED Handle = 0x80100016 + SCARD_E_READER_UNAVAILABLE Handle = 0x80100017 + SCARD_P_SHUTDOWN Handle = 0x80100018 + SCARD_E_PCI_TOO_SMALL Handle = 0x80100019 + SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A + SCARD_E_DUPLICATE_READER Handle = 0x8010001B + SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C + SCARD_E_NO_SERVICE Handle = 0x8010001D + SCARD_E_SERVICE_STOPPED Handle = 0x8010001E + SCARD_E_UNEXPECTED Handle = 0x8010001F + SCARD_E_ICC_INSTALLATION Handle = 0x80100020 + SCARD_E_ICC_CREATEORDER Handle = 0x80100021 + SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022 + SCARD_E_DIR_NOT_FOUND Handle = 0x80100023 + SCARD_E_FILE_NOT_FOUND Handle = 0x80100024 + SCARD_E_NO_DIR Handle = 0x80100025 + SCARD_E_NO_FILE Handle = 0x80100026 + SCARD_E_NO_ACCESS Handle = 0x80100027 + SCARD_E_WRITE_TOO_MANY Handle = 0x80100028 + SCARD_E_BAD_SEEK Handle = 0x80100029 + SCARD_E_INVALID_CHV Handle = 0x8010002A + SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B + SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C + SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D + SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E + SCARD_E_COMM_DATA_LOST Handle = 0x8010002F + SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030 + SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031 + SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032 + SCARD_E_NO_PIN_CACHE Handle = 0x80100033 + SCARD_E_READ_ONLY_CARD Handle = 0x80100034 + SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065 + SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066 + SCARD_W_UNPOWERED_CARD Handle = 0x80100067 + SCARD_W_RESET_CARD Handle = 0x80100068 + SCARD_W_REMOVED_CARD Handle = 0x80100069 + SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A + SCARD_W_WRONG_CHV Handle = 0x8010006B + SCARD_W_CHV_BLOCKED Handle = 0x8010006C + SCARD_W_EOF Handle = 0x8010006D + SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E + SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F + SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070 + SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071 + SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072 + COMADMIN_E_OBJECTERRORS Handle = 0x80110401 + COMADMIN_E_OBJECTINVALID Handle = 0x80110402 + COMADMIN_E_KEYMISSING Handle = 0x80110403 + COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404 + COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407 + COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408 + COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409 + COMADMIN_E_BADPATH Handle = 0x8011040A + COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B + COMADMIN_E_ROLEEXISTS Handle = 0x8011040C + COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D + COMADMIN_E_NOUSER Handle = 0x8011040F + COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410 + COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411 + COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412 + COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413 + COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414 + COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418 + COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419 + COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A + COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B + COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D + COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E + COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F + COMADMIN_E_REGISTRARFAILED Handle = 0x80110423 + COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424 + COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425 + COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426 + COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427 + COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428 + COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429 + COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A + COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B + COMADMIN_E_SESSION Handle = 0x8011042C + COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D + COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E + COMADMIN_E_REGISTERTLB Handle = 0x80110430 + COMADMIN_E_SYSTEMAPP Handle = 0x80110433 + COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434 + COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435 + COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436 + COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437 + COMADMIN_E_OBJECTEXISTS Handle = 0x80110438 + COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439 + COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B + COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C + COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E + COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F + COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446 + COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447 + COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448 + COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449 + COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A + COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B + COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C + COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D + COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E + COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F + COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450 + COMADMIN_E_START_APP_DISABLED Handle = 0x80110451 + COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457 + COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458 + COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459 + COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A + COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B + COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C + COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D + COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472 + COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473 + COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474 + COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475 + COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480 + COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481 + COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482 + COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483 + COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484 + COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485 + COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486 + COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600 + COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601 + COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602 + COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603 + COMQC_E_BAD_MESSAGE Handle = 0x80110604 + COMQC_E_UNAUTHENTICATED Handle = 0x80110605 + COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606 + MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701 + COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808 + COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809 + COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A + COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B + COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D + COMADMIN_E_USER_IN_SET Handle = 0x8011080E + COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F + COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811 + COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812 + COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813 + COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814 + COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815 + COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816 + COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817 + COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818 + COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819 + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B + COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C + COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D + COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E + COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F + COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820 + COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821 + COMADMIN_E_SAFERINVALID Handle = 0x80110822 + COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823 + COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824 + WER_S_REPORT_DEBUG Handle = 0x001B0000 + WER_S_REPORT_UPLOADED Handle = 0x001B0001 + WER_S_REPORT_QUEUED Handle = 0x001B0002 + WER_S_DISABLED Handle = 0x001B0003 + WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004 + WER_S_DISABLED_QUEUE Handle = 0x001B0005 + WER_S_DISABLED_ARCHIVE Handle = 0x001B0006 + WER_S_REPORT_ASYNC Handle = 0x001B0007 + WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008 + WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009 + WER_S_ASSERT_CONTINUE Handle = 0x001B000A + WER_S_THROTTLED Handle = 0x001B000B + WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C + WER_E_CRASH_FAILURE Handle = 0x801B8000 + WER_E_CANCELED Handle = 0x801B8001 + WER_E_NETWORK_FAILURE Handle = 0x801B8002 + WER_E_NOT_INITIALIZED Handle = 0x801B8003 + WER_E_ALREADY_REPORTING Handle = 0x801B8004 + WER_E_DUMP_THROTTLED Handle = 0x801B8005 + WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006 + WER_E_TOO_HEAVY Handle = 0x801B8007 + ERROR_FLT_IO_COMPLETE Handle = 0x001F0001 + ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001 + ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002 + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003 + ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004 + ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005 + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006 + ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007 + ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008 + ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009 + ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A + ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B + ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C + ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D + ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E + ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F + ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010 + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011 + ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012 + ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013 + ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014 + ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015 + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016 + ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017 + ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018 + ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019 + ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A + ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B + ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C + ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020 + ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023 + ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001 + DWM_E_COMPOSITIONDISABLED Handle = 0x80263001 + DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002 + DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003 + DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004 + DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005 + DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005 + DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007 + DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008 + ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001 + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002 + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003 + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004 + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005 + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006 + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007 + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008 + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009 + ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000 + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001 + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002 + ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003 + ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004 + ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005 + ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006 + ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007 + ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008 + ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009 + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B + ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E + ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F + ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 + ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 + ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 + ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 + ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 + ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103 + ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104 + ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105 + ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108 + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109 + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110 + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111 + ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112 + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113 + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114 + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115 + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116 + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200 + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201 + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302 + ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305 + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306 + ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307 + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308 + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309 + ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A + ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B + ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311 + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312 + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313 + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316 + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317 + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318 + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319 + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D + ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F + ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322 + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323 + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324 + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325 + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326 + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329 + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F + ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330 + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331 + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332 + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333 + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334 + ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335 + ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336 + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337 + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338 + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339 + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B + ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C + ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D + ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340 + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341 + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342 + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343 + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344 + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346 + ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347 + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348 + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349 + ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A + ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351 + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352 + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353 + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354 + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355 + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356 + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357 + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358 + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359 + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A + ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400 + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401 + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430 + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431 + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432 + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433 + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434 + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435 + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436 + ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437 + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438 + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439 + ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B + ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C + ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500 + ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501 + ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502 + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503 + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505 + ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B + ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510 + ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511 + ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515 + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516 + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517 + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518 + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520 + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521 + ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580 + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581 + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582 + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583 + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584 + ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585 + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586 + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587 + ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8 + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9 + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0 + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1 + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2 + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3 + ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4 + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5 + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6 + ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7 + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8 + NAP_E_INVALID_PACKET Handle = 0x80270001 + NAP_E_MISSING_SOH Handle = 0x80270002 + NAP_E_CONFLICTING_ID Handle = 0x80270003 + NAP_E_NO_CACHED_SOH Handle = 0x80270004 + NAP_E_STILL_BOUND Handle = 0x80270005 + NAP_E_NOT_REGISTERED Handle = 0x80270006 + NAP_E_NOT_INITIALIZED Handle = 0x80270007 + NAP_E_MISMATCHED_ID Handle = 0x80270008 + NAP_E_NOT_PENDING Handle = 0x80270009 + NAP_E_ID_NOT_FOUND Handle = 0x8027000A + NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B + NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C + NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D + NAP_E_ENTITY_DISABLED Handle = 0x8027000E + NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F + NAP_E_TOO_MANY_CALLS Handle = 0x80270010 + NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011 + NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012 + NAP_E_SHV_TIMEOUT Handle = 0x80270013 + TPM_E_ERROR_MASK Handle = 0x80280000 + TPM_E_AUTHFAIL Handle = 0x80280001 + TPM_E_BADINDEX Handle = 0x80280002 + TPM_E_BAD_PARAMETER Handle = 0x80280003 + TPM_E_AUDITFAILURE Handle = 0x80280004 + TPM_E_CLEAR_DISABLED Handle = 0x80280005 + TPM_E_DEACTIVATED Handle = 0x80280006 + TPM_E_DISABLED Handle = 0x80280007 + TPM_E_DISABLED_CMD Handle = 0x80280008 + TPM_E_FAIL Handle = 0x80280009 + TPM_E_BAD_ORDINAL Handle = 0x8028000A + TPM_E_INSTALL_DISABLED Handle = 0x8028000B + TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C + TPM_E_KEYNOTFOUND Handle = 0x8028000D + TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E + TPM_E_MIGRATEFAIL Handle = 0x8028000F + TPM_E_INVALID_PCR_INFO Handle = 0x80280010 + TPM_E_NOSPACE Handle = 0x80280011 + TPM_E_NOSRK Handle = 0x80280012 + TPM_E_NOTSEALED_BLOB Handle = 0x80280013 + TPM_E_OWNER_SET Handle = 0x80280014 + TPM_E_RESOURCES Handle = 0x80280015 + TPM_E_SHORTRANDOM Handle = 0x80280016 + TPM_E_SIZE Handle = 0x80280017 + TPM_E_WRONGPCRVAL Handle = 0x80280018 + TPM_E_BAD_PARAM_SIZE Handle = 0x80280019 + TPM_E_SHA_THREAD Handle = 0x8028001A + TPM_E_SHA_ERROR Handle = 0x8028001B + TPM_E_FAILEDSELFTEST Handle = 0x8028001C + TPM_E_AUTH2FAIL Handle = 0x8028001D + TPM_E_BADTAG Handle = 0x8028001E + TPM_E_IOERROR Handle = 0x8028001F + TPM_E_ENCRYPT_ERROR Handle = 0x80280020 + TPM_E_DECRYPT_ERROR Handle = 0x80280021 + TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022 + TPM_E_NO_ENDORSEMENT Handle = 0x80280023 + TPM_E_INVALID_KEYUSAGE Handle = 0x80280024 + TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025 + TPM_E_INVALID_POSTINIT Handle = 0x80280026 + TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027 + TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028 + TPM_E_BAD_MIGRATION Handle = 0x80280029 + TPM_E_BAD_SCHEME Handle = 0x8028002A + TPM_E_BAD_DATASIZE Handle = 0x8028002B + TPM_E_BAD_MODE Handle = 0x8028002C + TPM_E_BAD_PRESENCE Handle = 0x8028002D + TPM_E_BAD_VERSION Handle = 0x8028002E + TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F + TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030 + TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031 + TPM_E_NOTRESETABLE Handle = 0x80280032 + TPM_E_NOTLOCAL Handle = 0x80280033 + TPM_E_BAD_TYPE Handle = 0x80280034 + TPM_E_INVALID_RESOURCE Handle = 0x80280035 + TPM_E_NOTFIPS Handle = 0x80280036 + TPM_E_INVALID_FAMILY Handle = 0x80280037 + TPM_E_NO_NV_PERMISSION Handle = 0x80280038 + TPM_E_REQUIRES_SIGN Handle = 0x80280039 + TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A + TPM_E_AUTH_CONFLICT Handle = 0x8028003B + TPM_E_AREA_LOCKED Handle = 0x8028003C + TPM_E_BAD_LOCALITY Handle = 0x8028003D + TPM_E_READ_ONLY Handle = 0x8028003E + TPM_E_PER_NOWRITE Handle = 0x8028003F + TPM_E_FAMILYCOUNT Handle = 0x80280040 + TPM_E_WRITE_LOCKED Handle = 0x80280041 + TPM_E_BAD_ATTRIBUTES Handle = 0x80280042 + TPM_E_INVALID_STRUCTURE Handle = 0x80280043 + TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044 + TPM_E_BAD_COUNTER Handle = 0x80280045 + TPM_E_NOT_FULLWRITE Handle = 0x80280046 + TPM_E_CONTEXT_GAP Handle = 0x80280047 + TPM_E_MAXNVWRITES Handle = 0x80280048 + TPM_E_NOOPERATOR Handle = 0x80280049 + TPM_E_RESOURCEMISSING Handle = 0x8028004A + TPM_E_DELEGATE_LOCK Handle = 0x8028004B + TPM_E_DELEGATE_FAMILY Handle = 0x8028004C + TPM_E_DELEGATE_ADMIN Handle = 0x8028004D + TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E + TPM_E_OWNER_CONTROL Handle = 0x8028004F + TPM_E_DAA_RESOURCES Handle = 0x80280050 + TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051 + TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052 + TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053 + TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054 + TPM_E_DAA_STAGE Handle = 0x80280055 + TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056 + TPM_E_DAA_WRONG_W Handle = 0x80280057 + TPM_E_BAD_HANDLE Handle = 0x80280058 + TPM_E_BAD_DELEGATE Handle = 0x80280059 + TPM_E_BADCONTEXT Handle = 0x8028005A + TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B + TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C + TPM_E_MA_DESTINATION Handle = 0x8028005D + TPM_E_MA_SOURCE Handle = 0x8028005E + TPM_E_MA_AUTHORITY Handle = 0x8028005F + TPM_E_PERMANENTEK Handle = 0x80280061 + TPM_E_BAD_SIGNATURE Handle = 0x80280062 + TPM_E_NOCONTEXTSPACE Handle = 0x80280063 + TPM_20_E_ASYMMETRIC Handle = 0x80280081 + TPM_20_E_ATTRIBUTES Handle = 0x80280082 + TPM_20_E_HASH Handle = 0x80280083 + TPM_20_E_VALUE Handle = 0x80280084 + TPM_20_E_HIERARCHY Handle = 0x80280085 + TPM_20_E_KEY_SIZE Handle = 0x80280087 + TPM_20_E_MGF Handle = 0x80280088 + TPM_20_E_MODE Handle = 0x80280089 + TPM_20_E_TYPE Handle = 0x8028008A + TPM_20_E_HANDLE Handle = 0x8028008B + TPM_20_E_KDF Handle = 0x8028008C + TPM_20_E_RANGE Handle = 0x8028008D + TPM_20_E_AUTH_FAIL Handle = 0x8028008E + TPM_20_E_NONCE Handle = 0x8028008F + TPM_20_E_PP Handle = 0x80280090 + TPM_20_E_SCHEME Handle = 0x80280092 + TPM_20_E_SIZE Handle = 0x80280095 + TPM_20_E_SYMMETRIC Handle = 0x80280096 + TPM_20_E_TAG Handle = 0x80280097 + TPM_20_E_SELECTOR Handle = 0x80280098 + TPM_20_E_INSUFFICIENT Handle = 0x8028009A + TPM_20_E_SIGNATURE Handle = 0x8028009B + TPM_20_E_KEY Handle = 0x8028009C + TPM_20_E_POLICY_FAIL Handle = 0x8028009D + TPM_20_E_INTEGRITY Handle = 0x8028009F + TPM_20_E_TICKET Handle = 0x802800A0 + TPM_20_E_RESERVED_BITS Handle = 0x802800A1 + TPM_20_E_BAD_AUTH Handle = 0x802800A2 + TPM_20_E_EXPIRED Handle = 0x802800A3 + TPM_20_E_POLICY_CC Handle = 0x802800A4 + TPM_20_E_BINDING Handle = 0x802800A5 + TPM_20_E_CURVE Handle = 0x802800A6 + TPM_20_E_ECC_POINT Handle = 0x802800A7 + TPM_20_E_INITIALIZE Handle = 0x80280100 + TPM_20_E_FAILURE Handle = 0x80280101 + TPM_20_E_SEQUENCE Handle = 0x80280103 + TPM_20_E_PRIVATE Handle = 0x8028010B + TPM_20_E_HMAC Handle = 0x80280119 + TPM_20_E_DISABLED Handle = 0x80280120 + TPM_20_E_EXCLUSIVE Handle = 0x80280121 + TPM_20_E_ECC_CURVE Handle = 0x80280123 + TPM_20_E_AUTH_TYPE Handle = 0x80280124 + TPM_20_E_AUTH_MISSING Handle = 0x80280125 + TPM_20_E_POLICY Handle = 0x80280126 + TPM_20_E_PCR Handle = 0x80280127 + TPM_20_E_PCR_CHANGED Handle = 0x80280128 + TPM_20_E_UPGRADE Handle = 0x8028012D + TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E + TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F + TPM_20_E_REBOOT Handle = 0x80280130 + TPM_20_E_UNBALANCED Handle = 0x80280131 + TPM_20_E_COMMAND_SIZE Handle = 0x80280142 + TPM_20_E_COMMAND_CODE Handle = 0x80280143 + TPM_20_E_AUTHSIZE Handle = 0x80280144 + TPM_20_E_AUTH_CONTEXT Handle = 0x80280145 + TPM_20_E_NV_RANGE Handle = 0x80280146 + TPM_20_E_NV_SIZE Handle = 0x80280147 + TPM_20_E_NV_LOCKED Handle = 0x80280148 + TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149 + TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A + TPM_20_E_NV_SPACE Handle = 0x8028014B + TPM_20_E_NV_DEFINED Handle = 0x8028014C + TPM_20_E_BAD_CONTEXT Handle = 0x80280150 + TPM_20_E_CPHASH Handle = 0x80280151 + TPM_20_E_PARENT Handle = 0x80280152 + TPM_20_E_NEEDS_TEST Handle = 0x80280153 + TPM_20_E_NO_RESULT Handle = 0x80280154 + TPM_20_E_SENSITIVE Handle = 0x80280155 + TPM_E_COMMAND_BLOCKED Handle = 0x80280400 + TPM_E_INVALID_HANDLE Handle = 0x80280401 + TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402 + TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403 + TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404 + TPM_E_RETRY Handle = 0x80280800 + TPM_E_NEEDS_SELFTEST Handle = 0x80280801 + TPM_E_DOING_SELFTEST Handle = 0x80280802 + TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803 + TPM_20_E_CONTEXT_GAP Handle = 0x80280901 + TPM_20_E_OBJECT_MEMORY Handle = 0x80280902 + TPM_20_E_SESSION_MEMORY Handle = 0x80280903 + TPM_20_E_MEMORY Handle = 0x80280904 + TPM_20_E_SESSION_HANDLES Handle = 0x80280905 + TPM_20_E_OBJECT_HANDLES Handle = 0x80280906 + TPM_20_E_LOCALITY Handle = 0x80280907 + TPM_20_E_YIELDED Handle = 0x80280908 + TPM_20_E_CANCELED Handle = 0x80280909 + TPM_20_E_TESTING Handle = 0x8028090A + TPM_20_E_NV_RATE Handle = 0x80280920 + TPM_20_E_LOCKOUT Handle = 0x80280921 + TPM_20_E_RETRY Handle = 0x80280922 + TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923 + TBS_E_INTERNAL_ERROR Handle = 0x80284001 + TBS_E_BAD_PARAMETER Handle = 0x80284002 + TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003 + TBS_E_INVALID_CONTEXT Handle = 0x80284004 + TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005 + TBS_E_IOERROR Handle = 0x80284006 + TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007 + TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008 + TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009 + TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A + TBS_E_SERVICE_START_PENDING Handle = 0x8028400B + TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C + TBS_E_COMMAND_CANCELED Handle = 0x8028400D + TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E + TBS_E_TPM_NOT_FOUND Handle = 0x8028400F + TBS_E_SERVICE_DISABLED Handle = 0x80284010 + TBS_E_NO_EVENT_LOG Handle = 0x80284011 + TBS_E_ACCESS_DENIED Handle = 0x80284012 + TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013 + TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014 + TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015 + TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016 + TPMAPI_E_INVALID_STATE Handle = 0x80290100 + TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101 + TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102 + TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103 + TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104 + TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105 + TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106 + TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107 + TPMAPI_E_ACCESS_DENIED Handle = 0x80290108 + TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109 + TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A + TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B + TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C + TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D + TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E + TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F + TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110 + TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111 + TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112 + TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113 + TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114 + TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115 + TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116 + TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117 + TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118 + TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119 + TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A + TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B + TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C + TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D + TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E + TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F + TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120 + TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121 + TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122 + TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123 + TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124 + TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125 + TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126 + TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127 + TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128 + TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129 + TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A + TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B + TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C + TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200 + TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201 + TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202 + TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203 + TBSIMP_E_TPM_ERROR Handle = 0x80290204 + TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205 + TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206 + TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207 + TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208 + TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209 + TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A + TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B + TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C + TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D + TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E + TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F + TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210 + TBSIMP_E_COMMAND_FAILED Handle = 0x80290211 + TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212 + TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213 + TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214 + TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215 + TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216 + TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217 + TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218 + TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219 + TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A + TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B + TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300 + TPM_E_PPI_USER_ABORT Handle = 0x80290301 + TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302 + TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303 + TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304 + TPM_E_PCP_ERROR_MASK Handle = 0x80290400 + TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401 + TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402 + TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403 + TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404 + TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405 + TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406 + TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407 + TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408 + TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409 + TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A + TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B + TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C + TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E + TPM_E_KEY_NOT_LOADED Handle = 0x8029040F + TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410 + TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411 + TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412 + TPM_E_NOT_PCR_BOUND Handle = 0x80290413 + TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414 + TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415 + TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416 + TPM_E_SOFT_KEY_ERROR Handle = 0x80290417 + TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418 + TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419 + TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A + TPM_E_LOCKED_OUT Handle = 0x8029041B + TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C + TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D + TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E + TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F + TPM_E_PCP_TICKET_MISSING Handle = 0x80290420 + TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421 + TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422 + TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423 + TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500 + PLA_E_DCS_NOT_FOUND Handle = 0x80300002 + PLA_E_DCS_IN_USE Handle = 0x803000AA + PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045 + PLA_E_NO_MIN_DISK Handle = 0x80300070 + PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7 + PLA_S_PROPERTY_IGNORED Handle = 0x00300100 + PLA_E_PROPERTY_CONFLICT Handle = 0x80300101 + PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102 + PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103 + PLA_E_DCS_NOT_RUNNING Handle = 0x80300104 + PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105 + PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106 + PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107 + PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108 + PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109 + PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A + PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B + PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C + PLA_E_NO_DUPLICATES Handle = 0x8030010D + PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E + PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F + PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110 + PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111 + PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112 + PLA_E_CABAPI_FAILURE Handle = 0x80300113 + FVE_E_LOCKED_VOLUME Handle = 0x80310000 + FVE_E_NOT_ENCRYPTED Handle = 0x80310001 + FVE_E_NO_TPM_BIOS Handle = 0x80310002 + FVE_E_NO_MBR_METRIC Handle = 0x80310003 + FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004 + FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005 + FVE_E_WRONG_BOOTMGR Handle = 0x80310006 + FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007 + FVE_E_NOT_ACTIVATED Handle = 0x80310008 + FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009 + FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A + FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B + FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C + FVE_E_AD_NO_VALUES Handle = 0x8031000D + FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E + FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F + FVE_E_BAD_INFORMATION Handle = 0x80310010 + FVE_E_TOO_SMALL Handle = 0x80310011 + FVE_E_SYSTEM_VOLUME Handle = 0x80310012 + FVE_E_FAILED_WRONG_FS Handle = 0x80310013 + FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014 + FVE_E_NOT_SUPPORTED Handle = 0x80310015 + FVE_E_BAD_DATA Handle = 0x80310016 + FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017 + FVE_E_TPM_NOT_OWNED Handle = 0x80310018 + FVE_E_NOT_DATA_VOLUME Handle = 0x80310019 + FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A + FVE_E_CONV_READ Handle = 0x8031001B + FVE_E_CONV_WRITE Handle = 0x8031001C + FVE_E_KEY_REQUIRED Handle = 0x8031001D + FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E + FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F + FVE_E_OS_NOT_PROTECTED Handle = 0x80310020 + FVE_E_PROTECTION_DISABLED Handle = 0x80310021 + FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022 + FVE_E_FOREIGN_VOLUME Handle = 0x80310023 + FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024 + FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025 + FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026 + FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027 + FVE_E_NOT_OS_VOLUME Handle = 0x80310028 + FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029 + FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A + FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B + FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C + FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D + FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E + FVE_E_BOOTABLE_CDDVD Handle = 0x80310030 + FVE_E_PROTECTOR_EXISTS Handle = 0x80310031 + FVE_E_RELATIVE_PATH Handle = 0x80310032 + FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033 + FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034 + FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035 + FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036 + FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037 + FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038 + FVE_E_NOT_DECRYPTED Handle = 0x80310039 + FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A + FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B + FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C + FVE_E_KEYFILE_INVALID Handle = 0x8031003D + FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E + FVE_E_TPM_DISABLED Handle = 0x8031003F + FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040 + FVE_E_TPM_INVALID_PCR Handle = 0x80310041 + FVE_E_TPM_NO_VMK Handle = 0x80310042 + FVE_E_PIN_INVALID Handle = 0x80310043 + FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044 + FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045 + FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046 + FVE_E_FS_NOT_EXTENDED Handle = 0x80310047 + FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048 + FVE_E_NO_LICENSE Handle = 0x80310049 + FVE_E_NOT_ON_STACK Handle = 0x8031004A + FVE_E_FS_MOUNTED Handle = 0x8031004B + FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C + FVE_E_DRY_RUN_FAILED Handle = 0x8031004D + FVE_E_REBOOT_REQUIRED Handle = 0x8031004E + FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F + FVE_E_RAW_ACCESS Handle = 0x80310050 + FVE_E_RAW_BLOCKED Handle = 0x80310051 + FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052 + FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053 + FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054 + FVE_E_MOR_FAILED Handle = 0x80310055 + FVE_E_HIDDEN_VOLUME Handle = 0x80310056 + FVE_E_TRANSIENT_STATE Handle = 0x80310057 + FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058 + FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059 + FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A + FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B + FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C + FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D + FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E + FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F + FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060 + FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061 + FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062 + FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063 + FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064 + FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065 + FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066 + FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067 + FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068 + FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069 + FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A + FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B + FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C + FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D + FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E + FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F + FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070 + FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071 + FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072 + FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073 + FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074 + FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075 + FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076 + FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077 + FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078 + FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079 + FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080 + FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081 + FVE_E_RECOVERY_PARTITION Handle = 0x80310082 + FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083 + FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084 + FVE_E_NON_BITLOCKER_OID Handle = 0x80310085 + FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086 + FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087 + FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088 + FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089 + FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090 + FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091 + FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092 + FVE_E_NON_BITLOCKER_KU Handle = 0x80310093 + FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094 + FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095 + FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096 + FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097 + FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098 + FVE_E_ENH_PIN_INVALID Handle = 0x80310099 + FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A + FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B + FVE_E_EFI_ONLY Handle = 0x8031009C + FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D + FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E + FVE_E_INVALID_NKP_CERT Handle = 0x8031009F + FVE_E_NO_EXISTING_PIN Handle = 0x803100A0 + FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1 + FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2 + FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3 + FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4 + FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5 + FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6 + FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7 + FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8 + FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9 + FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA + FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB + FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC + FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD + FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE + FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF + FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0 + FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1 + FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2 + FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3 + FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4 + FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5 + FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6 + FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7 + FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8 + FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9 + FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA + FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB + FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC + FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD + FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE + FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF + FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0 + FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1 + FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2 + FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3 + FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4 + FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5 + FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6 + FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7 + FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8 + FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9 + FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA + FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB + FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC + FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD + FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE + FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF + FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0 + FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1 + FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2 + FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3 + FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4 + FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5 + FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6 + FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 + FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 + FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 + FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 + FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 + FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 + FWP_E_LAYER_NOT_FOUND Handle = 0x80320004 + FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005 + FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006 + FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007 + FWP_E_NOT_FOUND Handle = 0x80320008 + FWP_E_ALREADY_EXISTS Handle = 0x80320009 + FWP_E_IN_USE Handle = 0x8032000A + FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B + FWP_E_WRONG_SESSION Handle = 0x8032000C + FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D + FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E + FWP_E_TXN_ABORTED Handle = 0x8032000F + FWP_E_SESSION_ABORTED Handle = 0x80320010 + FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011 + FWP_E_TIMEOUT Handle = 0x80320012 + FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013 + FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014 + FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015 + FWP_E_LIFETIME_MISMATCH Handle = 0x80320016 + FWP_E_BUILTIN_OBJECT Handle = 0x80320017 + FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018 + FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019 + FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A + FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B + FWP_E_NULL_POINTER Handle = 0x8032001C + FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D + FWP_E_INVALID_FLAGS Handle = 0x8032001E + FWP_E_INVALID_NET_MASK Handle = 0x8032001F + FWP_E_INVALID_RANGE Handle = 0x80320020 + FWP_E_INVALID_INTERVAL Handle = 0x80320021 + FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022 + FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023 + FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024 + FWP_E_INVALID_WEIGHT Handle = 0x80320025 + FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026 + FWP_E_TYPE_MISMATCH Handle = 0x80320027 + FWP_E_OUT_OF_BOUNDS Handle = 0x80320028 + FWP_E_RESERVED Handle = 0x80320029 + FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A + FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B + FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C + FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D + FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E + FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F + FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030 + FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031 + FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032 + FWP_E_NEVER_MATCH Handle = 0x80320033 + FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034 + FWP_E_INVALID_PARAMETER Handle = 0x80320035 + FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036 + FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037 + FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038 + FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039 + FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A + FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B + FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C + FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D + FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E + FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F + FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040 + FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041 + FWP_E_INVALID_DNS_NAME Handle = 0x80320042 + FWP_E_STILL_ON Handle = 0x80320043 + FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044 + FWP_E_DROP_NOICMP Handle = 0x80320104 + WS_S_ASYNC Handle = 0x003D0000 + WS_S_END Handle = 0x003D0001 + WS_E_INVALID_FORMAT Handle = 0x803D0000 + WS_E_OBJECT_FAULTED Handle = 0x803D0001 + WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002 + WS_E_INVALID_OPERATION Handle = 0x803D0003 + WS_E_OPERATION_ABORTED Handle = 0x803D0004 + WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005 + WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006 + WS_E_OPERATION_ABANDONED Handle = 0x803D0007 + WS_E_QUOTA_EXCEEDED Handle = 0x803D0008 + WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009 + WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A + WS_E_ADDRESS_IN_USE Handle = 0x803D000B + WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C + WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D + WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E + WS_E_ENDPOINT_FAILURE Handle = 0x803D000F + WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010 + WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011 + WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012 + WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013 + WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014 + WS_E_PROXY_FAILURE Handle = 0x803D0015 + WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016 + WS_E_NOT_SUPPORTED Handle = 0x803D0017 + WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018 + WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019 + WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A + WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B + WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C + WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D + WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E + WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F + WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020 + WS_E_OTHER Handle = 0x803D0021 + WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022 + WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023 + ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002 + ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004 + ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005 + ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006 + ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007 + ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008 + ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009 + ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A + ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B + ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C + ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D + ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB + ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F + ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011 + ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014 + ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015 + ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016 + ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017 + ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018 + ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019 + ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A + ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B + ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C + ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D + ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E + ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F + ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022 + ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010 + ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A + ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B + ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C + ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D + ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E + ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F + ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030 + ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031 + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000 + ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001 + ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002 + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003 + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004 + ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005 + ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006 + ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007 + ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008 + ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001 + ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012 + ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013 + ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002 + ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003 + ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004 + ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005 + ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006 + ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007 + ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008 + ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009 + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A + ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B + ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C + ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D + ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E + ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011 + ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012 + ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013 + ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014 + ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015 + ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016 + ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017 + ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018 + ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019 + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A + ERROR_HV_NO_DATA syscall.Errno = 0xC035001B + ERROR_HV_INACTIVE syscall.Errno = 0xC035001C + ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D + ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E + ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033 + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038 + ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C + ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D + ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E + ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F + ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041 + ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050 + ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051 + ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055 + ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057 + ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058 + ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059 + ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060 + ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F + ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070 + ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071 + ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072 + ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073 + ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000 + ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001 + ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002 + ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003 + ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004 + ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005 + ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006 + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007 + ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008 + ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009 + ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C + ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E + ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F + ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010 + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011 + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012 + ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013 + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014 + ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015 + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016 + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017 + ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018 + ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019 + ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B + ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C + ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020 + ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021 + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022 + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023 + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024 + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025 + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026 + ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027 + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028 + ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029 + ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A + ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100 + ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101 + ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102 + ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103 + ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104 + ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105 + ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106 + ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107 + ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108 + ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109 + ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A + ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B + ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C + ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D + ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E + ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F + ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110 + ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111 + ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112 + ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113 + HCS_E_TERMINATED_DURING_START Handle = 0x80370100 + HCS_E_IMAGE_MISMATCH Handle = 0x80370101 + HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102 + HCS_E_INVALID_STATE Handle = 0x80370105 + HCS_E_UNEXPECTED_EXIT Handle = 0x80370106 + HCS_E_TERMINATED Handle = 0x80370107 + HCS_E_CONNECT_FAILED Handle = 0x80370108 + HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109 + HCS_E_CONNECTION_CLOSED Handle = 0x8037010A + HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B + HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C + HCS_E_INVALID_JSON Handle = 0x8037010D + HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E + HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F + HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110 + HCS_E_PROTOCOL_ERROR Handle = 0x80370111 + HCS_E_INVALID_LAYER Handle = 0x80370112 + HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113 + HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114 + HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115 + HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116 + HCS_E_OPERATION_PENDING Handle = 0x80370117 + HCS_E_OPERATION_TIMEOUT Handle = 0x80370118 + HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119 + HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A + HCS_E_ACCESS_DENIED Handle = 0x8037011B + HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C + ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200 + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001 + WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300 + WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301 + WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302 + WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303 + WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304 + WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305 + WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306 + WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307 + WHV_E_INVALID_VP_STATE Handle = 0x80370308 + WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309 + ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400 + ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401 + ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001 + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002 + ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001 + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002 + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003 + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004 + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005 + ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006 + ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007 + ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008 + ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009 + ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A + ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010 + ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011 + ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012 + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013 + ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014 + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015 + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018 + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019 + ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020 + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021 + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022 + ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023 + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024 + ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025 + ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026 + ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027 + ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028 + ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029 + ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A + ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B + ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E + ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F + ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030 + ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031 + ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032 + ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033 + ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034 + ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035 + ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036 + ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037 + ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038 + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039 + ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A + ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B + ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C + ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D + ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E + ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F + ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040 + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041 + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042 + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043 + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044 + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045 + ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046 + ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047 + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048 + ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049 + ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A + ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B + ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E + ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F + ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050 + ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051 + ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052 + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055 + ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056 + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057 + ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058 + ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059 + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B + ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001 + ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002 + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003 + ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001 + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002 + ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003 + ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004 + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005 + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006 + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007 + ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008 + ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009 + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A + ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B + ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C + ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D + ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F + ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010 + ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011 + ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012 + ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013 + ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014 + ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015 + ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016 + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017 + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018 + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019 + ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A + ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B + ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D + ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F + ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020 + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021 + ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022 + ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023 + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024 + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025 + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026 + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027 + ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028 + ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029 + ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A + ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030 + ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001 + HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001 + HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002 + HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003 + HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004 + HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005 + HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006 + HCN_E_PORT_NOT_FOUND Handle = 0x803B0007 + HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008 + HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009 + HCN_E_INVALID_NETWORK Handle = 0x803B000A + HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B + HCN_E_INVALID_ENDPOINT Handle = 0x803B000C + HCN_E_INVALID_POLICY Handle = 0x803B000D + HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E + HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F + HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010 + HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011 + HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012 + HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013 + HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014 + HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015 + HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016 + HCN_E_DEGRADED_OPERATION Handle = 0x803B0017 + HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018 + HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019 + HCN_E_REGKEY_FAILURE Handle = 0x803B001A + HCN_E_INVALID_JSON Handle = 0x803B001B + HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C + HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D + HCN_E_INVALID_IP Handle = 0x803B001E + HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F + HCN_E_MANAGER_STOPPED Handle = 0x803B0020 + GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021 + GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022 + GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023 + GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024 + GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025 + GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026 + GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 + GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 + GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 + SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 + SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 + SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 + SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103 + SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104 + SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105 + SDIAG_E_DISABLED syscall.Errno = 0x803C0106 + SDIAG_E_TRUST syscall.Errno = 0x803C0107 + SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108 + SDIAG_E_VERSION syscall.Errno = 0x803C0109 + SDIAG_E_RESOURCE syscall.Errno = 0x803C010A + SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B + WPN_E_CHANNEL_CLOSED Handle = 0x803E0100 + WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101 + WPN_E_INVALID_APP Handle = 0x803E0102 + WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103 + WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104 + WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105 + WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106 + WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107 + WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108 + WPN_E_CLOUD_DISABLED Handle = 0x803E0109 + WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110 + WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A + WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B + WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C + WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111 + WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112 + WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113 + WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114 + WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115 + WPN_E_TAG_SIZE Handle = 0x803E0116 + WPN_E_ACCESS_DENIED Handle = 0x803E0117 + WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118 + WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119 + WPN_E_DEV_ID_SIZE Handle = 0x803E0120 + WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A + WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B + WPN_E_OUT_OF_SESSION Handle = 0x803E0200 + WPN_E_POWER_SAVE Handle = 0x803E0201 + WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202 + WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203 + WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204 + WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205 + WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206 + WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207 + WPN_E_STORAGE_LOCKED Handle = 0x803E0208 + WPN_E_GROUP_SIZE Handle = 0x803E0209 + WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A + WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B + E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201 + E_MBN_BAD_SIM Handle = 0x80548202 + E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203 + E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204 + E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205 + E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206 + E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207 + E_MBN_RADIO_POWER_OFF Handle = 0x80548208 + E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209 + E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A + E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B + E_MBN_INVALID_CACHE Handle = 0x8054820C + E_MBN_NOT_REGISTERED Handle = 0x8054820D + E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E + E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F + E_MBN_PIN_REQUIRED Handle = 0x80548210 + E_MBN_PIN_DISABLED Handle = 0x80548211 + E_MBN_FAILURE Handle = 0x80548212 + E_MBN_INVALID_PROFILE Handle = 0x80548218 + E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219 + E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220 + E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221 + E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222 + E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223 + E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224 + E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225 + E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226 + E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227 + E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228 + E_MBN_SMS_MEMORY_FULL Handle = 0x80548229 + PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001 + PEER_E_NOT_INITIALIZED Handle = 0x80630002 + PEER_E_CANNOT_START_SERVICE Handle = 0x80630003 + PEER_E_NOT_LICENSED Handle = 0x80630004 + PEER_E_INVALID_GRAPH Handle = 0x80630010 + PEER_E_DBNAME_CHANGED Handle = 0x80630011 + PEER_E_DUPLICATE_GRAPH Handle = 0x80630012 + PEER_E_GRAPH_NOT_READY Handle = 0x80630013 + PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014 + PEER_E_GRAPH_IN_USE Handle = 0x80630015 + PEER_E_INVALID_DATABASE Handle = 0x80630016 + PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017 + PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103 + PEER_E_CONNECT_SELF Handle = 0x80630106 + PEER_E_ALREADY_LISTENING Handle = 0x80630107 + PEER_E_NODE_NOT_FOUND Handle = 0x80630108 + PEER_E_CONNECTION_FAILED Handle = 0x80630109 + PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A + PEER_E_CONNECTION_REFUSED Handle = 0x8063010B + PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201 + PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202 + PEER_E_NO_KEY_ACCESS Handle = 0x80630203 + PEER_E_GROUPS_EXIST Handle = 0x80630204 + PEER_E_RECORD_NOT_FOUND Handle = 0x80630301 + PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302 + PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303 + PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304 + PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305 + PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306 + PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401 + PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501 + PEER_E_INVALID_SEARCH Handle = 0x80630601 + PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602 + PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701 + PEER_E_CHAIN_TOO_LONG Handle = 0x80630703 + PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705 + PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706 + PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801 + PEER_E_NO_CLOUD Handle = 0x80631001 + PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005 + PEER_E_INVALID_RECORD Handle = 0x80632010 + PEER_E_NOT_AUTHORIZED Handle = 0x80632020 + PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021 + PEER_E_DEFERRED_VALIDATION Handle = 0x80632030 + PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040 + PEER_E_INVALID_PEER_NAME Handle = 0x80632050 + PEER_E_INVALID_CLASSIFIER Handle = 0x80632060 + PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070 + PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071 + PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072 + PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080 + PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081 + PEER_E_INVALID_CREDENTIAL Handle = 0x80632082 + PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083 + PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090 + PEER_E_GROUP_NOT_READY Handle = 0x80632091 + PEER_E_GROUP_IN_USE Handle = 0x80632092 + PEER_E_INVALID_GROUP Handle = 0x80632093 + PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094 + PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095 + PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096 + PEER_E_IDENTITY_DELETED Handle = 0x806320A0 + PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1 + PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001 + PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001 + PEER_S_NO_EVENT_DATA Handle = 0x00630002 + PEER_S_ALREADY_CONNECTED Handle = 0x00632000 + PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000 + PEER_S_NO_CONNECTIVITY Handle = 0x00630005 + PEER_S_ALREADY_A_MEMBER Handle = 0x00630006 + PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001 + PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002 + PEER_E_NO_MORE Handle = 0x80634003 + PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005 + PEER_E_INVITE_CANCELLED Handle = 0x80637000 + PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001 + PEER_E_NOT_SIGNED_IN Handle = 0x80637003 + PEER_E_PRIVACY_DECLINED Handle = 0x80637004 + PEER_E_TIMEOUT Handle = 0x80637005 + PEER_E_INVALID_ADDRESS Handle = 0x80637007 + PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008 + PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009 + PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A + PEER_E_FW_DECLINED Handle = 0x8063700B + UI_E_CREATE_FAILED Handle = 0x802A0001 + UI_E_SHUTDOWN_CALLED Handle = 0x802A0002 + UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003 + UI_E_OBJECT_SEALED Handle = 0x802A0004 + UI_E_VALUE_NOT_SET Handle = 0x802A0005 + UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006 + UI_E_INVALID_OUTPUT Handle = 0x802A0007 + UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008 + UI_E_DIFFERENT_OWNER Handle = 0x802A0009 + UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A + UI_E_FP_OVERFLOW Handle = 0x802A000B + UI_E_WRONG_THREAD Handle = 0x802A000C + UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101 + UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102 + UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103 + UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104 + UI_E_LOOPS_OVERLAP Handle = 0x802A0105 + UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106 + UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107 + UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108 + UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109 + UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A + UI_E_INVALID_DIMENSION Handle = 0x802A010B + UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C + UI_E_WINDOW_CLOSED Handle = 0x802A0201 + E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001 + E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002 + E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003 + E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005 + E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006 + E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008 + E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009 + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C + E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D + E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F + E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010 + E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011 + E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000 + E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001 + E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002 + E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003 + E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004 + E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005 + STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001 + STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002 + STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003 + STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004 + STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005 + STATEREPOSITORY_E_BLOCKED Handle = 0x80670006 + STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007 + STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008 + STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009 + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A + STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B + STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C + STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D + STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F + STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010 + STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011 + STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012 + STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013 + STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014 + ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001 + ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001 + ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002 + ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003 + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004 + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006 + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007 + ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008 + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009 + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A + ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B + ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C + ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D + ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E + ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F + ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010 + ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011 + ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012 + ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013 + ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014 + ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001 + ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002 + ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001 + ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002 + ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003 + ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004 + ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005 + ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006 + ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007 + ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008 + ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009 + ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A + ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000 + ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001 + ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002 + ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003 + ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004 + ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005 + ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006 + ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007 + ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008 + ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009 + ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A + DXGI_STATUS_OCCLUDED Handle = 0x087A0001 + DXGI_STATUS_CLIPPED Handle = 0x087A0002 + DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004 + DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005 + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006 + DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007 + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008 + DXGI_ERROR_INVALID_CALL Handle = 0x887A0001 + DXGI_ERROR_NOT_FOUND Handle = 0x887A0002 + DXGI_ERROR_MORE_DATA Handle = 0x887A0003 + DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004 + DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005 + DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006 + DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007 + DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A + DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C + DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020 + DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021 + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022 + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023 + DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024 + DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026 + DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027 + DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028 + DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029 + DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A + DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B + DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C + DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D + DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E + DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030 + DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031 + DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032 + DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009 + DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A + DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025 + DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F + DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033 + DXGI_ERROR_CACHE_FULL Handle = 0x887A0034 + DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035 + DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036 + DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001 + DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002 + DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003 + D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001 + D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002 + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001 + D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002 + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003 + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004 + D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001 + D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002 + D2DERR_WRONG_STATE Handle = 0x88990001 + D2DERR_NOT_INITIALIZED Handle = 0x88990002 + D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003 + D2DERR_SCANNER_FAILED Handle = 0x88990004 + D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005 + D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006 + D2DERR_ZERO_VECTOR Handle = 0x88990007 + D2DERR_INTERNAL_ERROR Handle = 0x88990008 + D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009 + D2DERR_INVALID_CALL Handle = 0x8899000A + D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B + D2DERR_RECREATE_TARGET Handle = 0x8899000C + D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D + D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E + D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F + D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010 + D2DERR_BAD_NUMBER Handle = 0x88990011 + D2DERR_WRONG_FACTORY Handle = 0x88990012 + D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013 + D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014 + D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015 + D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016 + D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017 + D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018 + D2DERR_WIN32_ERROR Handle = 0x88990019 + D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A + D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B + D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C + D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D + D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E + D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F + D2DERR_CYCLIC_GRAPH Handle = 0x88990020 + D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021 + D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022 + D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023 + D2DERR_INVALID_TARGET Handle = 0x88990024 + D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025 + D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026 + D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027 + D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028 + D2DERR_INVALID_PROPERTY Handle = 0x88990029 + D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A + D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B + D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C + D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D + D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E + DWRITE_E_FILEFORMAT Handle = 0x88985000 + DWRITE_E_UNEXPECTED Handle = 0x88985001 + DWRITE_E_NOFONT Handle = 0x88985002 + DWRITE_E_FILENOTFOUND Handle = 0x88985003 + DWRITE_E_FILEACCESS Handle = 0x88985004 + DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005 + DWRITE_E_ALREADYREGISTERED Handle = 0x88985006 + DWRITE_E_CACHEFORMAT Handle = 0x88985007 + DWRITE_E_CACHEVERSION Handle = 0x88985008 + DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009 + DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A + DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B + DWRITE_E_NOCOLOR Handle = 0x8898500C + DWRITE_E_REMOTEFONT Handle = 0x8898500D + DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E + DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F + DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010 + WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04 + WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05 + WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07 + WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B + WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C + WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D + WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40 + WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41 + WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42 + WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43 + WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44 + WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45 + WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46 + WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48 + WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49 + WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50 + WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51 + WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52 + WINCODEC_ERR_BADIMAGE Handle = 0x88982F60 + WINCODEC_ERR_BADHEADER Handle = 0x88982F61 + WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62 + WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63 + WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70 + WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71 + WINCODEC_ERR_STREAMREAD Handle = 0x88982F72 + WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73 + WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80 + WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81 + WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A + WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B + WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C + WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D + WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E + WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F + WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90 + WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91 + WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92 + WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93 + WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94 + WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95 + WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96 + MILERR_OBJECTBUSY Handle = 0x88980001 + MILERR_INSUFFICIENTBUFFER Handle = 0x88980002 + MILERR_WIN32ERROR Handle = 0x88980003 + MILERR_SCANNER_FAILED Handle = 0x88980004 + MILERR_SCREENACCESSDENIED Handle = 0x88980005 + MILERR_DISPLAYSTATEINVALID Handle = 0x88980006 + MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007 + MILERR_ZEROVECTOR Handle = 0x88980008 + MILERR_TERMINATED Handle = 0x88980009 + MILERR_BADNUMBER Handle = 0x8898000A + MILERR_INTERNALERROR Handle = 0x88980080 + MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084 + MILERR_INVALIDCALL Handle = 0x88980085 + MILERR_ALREADYLOCKED Handle = 0x88980086 + MILERR_NOTLOCKED Handle = 0x88980087 + MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088 + MILERR_GLYPHBITMAPMISSED Handle = 0x88980089 + MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A + MILERR_GENERIC_IGNORE Handle = 0x8898008B + MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C + MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D + MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E + MILERR_ALREADY_INITIALIZED Handle = 0x8898008F + MILERR_MISMATCHED_SIZE Handle = 0x88980090 + MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091 + MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092 + MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093 + MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094 + MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095 + MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096 + MILERR_MROW_READLOCK_FAILED Handle = 0x88980097 + MILERR_MROW_UPDATE_FAILED Handle = 0x88980098 + MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099 + MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A + MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B + MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D + MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E + MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F + MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0 + MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1 + UCEERR_INVALIDPACKETHEADER Handle = 0x88980400 + UCEERR_UNKNOWNPACKET Handle = 0x88980401 + UCEERR_ILLEGALPACKET Handle = 0x88980402 + UCEERR_MALFORMEDPACKET Handle = 0x88980403 + UCEERR_ILLEGALHANDLE Handle = 0x88980404 + UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405 + UCEERR_RENDERTHREADFAILURE Handle = 0x88980406 + UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407 + UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408 + UCEERR_BLOCKSFULL Handle = 0x88980409 + UCEERR_MEMORYFAILURE Handle = 0x8898040A + UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B + UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C + UCEERR_OUTOFHANDLES Handle = 0x8898040D + UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E + UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F + UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410 + UCEERR_MISSINGENDCOMMAND Handle = 0x88980411 + UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412 + UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413 + UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414 + UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415 + UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416 + UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417 + UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418 + UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419 + UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420 + UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421 + UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422 + UCEERR_PARTITION_ZOMBIED Handle = 0x88980423 + MILAVERR_NOCLOCK Handle = 0x88980500 + MILAVERR_NOMEDIATYPE Handle = 0x88980501 + MILAVERR_NOVIDEOMIXER Handle = 0x88980502 + MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503 + MILAVERR_NOREADYFRAMES Handle = 0x88980504 + MILAVERR_MODULENOTLOADED Handle = 0x88980505 + MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506 + MILAVERR_INVALIDWMPVERSION Handle = 0x88980507 + MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508 + MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509 + MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A + MILAVERR_SEEKFAILED Handle = 0x8898050B + MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C + MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D + MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E + MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E + MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F + MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610 + MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611 + MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612 + MILEFFECTSERR_RESERVED Handle = 0x88980613 + MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614 + MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615 + MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616 + MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617 + MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618 + MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619 + MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A + MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B + DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700 + DWMERR_THEME_FAILED Handle = 0x88980701 + DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702 + DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800 + DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801 + DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802 + ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001 + ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002 + ONL_E_INVALID_APPLICATION Handle = 0x80860003 + ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004 + ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005 + ONL_E_FORCESIGNIN Handle = 0x80860006 + ONL_E_ACCOUNT_LOCKED Handle = 0x80860007 + ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008 + ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009 + ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A + ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B + ONL_E_ACTION_REQUIRED Handle = 0x8086000C + ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D + ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E + ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F + ONL_E_REQUEST_THROTTLED Handle = 0x80860010 + FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220 + FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222 + E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250 + E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251 + E_UAC_DISABLED Handle = 0x80270252 + E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253 + E_APPLICATION_NOT_REGISTERED Handle = 0x80270254 + E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255 + E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256 + E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257 + S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258 + S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259 + E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A + E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B + E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C + E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D + E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260 + E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261 + E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262 + E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263 + E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264 + E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265 + E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001 + E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002 + E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003 + E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004 + E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005 + E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006 + E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002 + E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003 + E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004 + E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005 + E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006 + E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007 + E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001 + E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002 + E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003 + E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004 + E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005 + E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006 + E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007 + E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008 + E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009 + E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A + E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B + EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001 + EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002 + EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003 + EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004 + EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005 + EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006 + EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007 + EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008 + EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009 + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A + EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C + EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D + WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001 + WEB_E_INVALID_XML Handle = 0x83750002 + WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003 + WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004 + WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005 + WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006 + WEB_E_INVALID_JSON_STRING Handle = 0x83750007 + WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008 + WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009 + HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001 + HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003 + HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004 + HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005 + HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C + HTTP_E_STATUS_MOVED Handle = 0x8019012D + HTTP_E_STATUS_REDIRECT Handle = 0x8019012E + HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F + HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130 + HTTP_E_STATUS_USE_PROXY Handle = 0x80190131 + HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133 + HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190 + HTTP_E_STATUS_DENIED Handle = 0x80190191 + HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192 + HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193 + HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194 + HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195 + HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196 + HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197 + HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198 + HTTP_E_STATUS_CONFLICT Handle = 0x80190199 + HTTP_E_STATUS_GONE Handle = 0x8019019A + HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B + HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C + HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D + HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E + HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F + HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0 + HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1 + HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4 + HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5 + HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6 + HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7 + HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8 + HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9 + E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001 + E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002 + E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003 + E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004 + E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005 + INPUT_E_OUT_OF_ORDER Handle = 0x80400000 + INPUT_E_REENTRANCY Handle = 0x80400001 + INPUT_E_MULTIMODAL Handle = 0x80400002 + INPUT_E_PACKET Handle = 0x80400003 + INPUT_E_FRAME Handle = 0x80400004 + INPUT_E_HISTORY Handle = 0x80400005 + INPUT_E_DEVICE_INFO Handle = 0x80400006 + INPUT_E_TRANSFORM Handle = 0x80400007 + INPUT_E_DEVICE_PROPERTY Handle = 0x80400008 + INET_E_INVALID_URL Handle = 0x800C0002 + INET_E_NO_SESSION Handle = 0x800C0003 + INET_E_CANNOT_CONNECT Handle = 0x800C0004 + INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005 + INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006 + INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007 + INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008 + INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009 + INET_E_NO_VALID_MEDIA Handle = 0x800C000A + INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B + INET_E_INVALID_REQUEST Handle = 0x800C000C + INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D + INET_E_SECURITY_PROBLEM Handle = 0x800C000E + INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F + INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010 + INET_E_INVALID_CERTIFICATE Handle = 0x800C0019 + INET_E_REDIRECT_FAILED Handle = 0x800C0014 + INET_E_REDIRECT_TO_DIR Handle = 0x800C0015 + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001 + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002 + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003 + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004 + ERROR_IO_PREEMPTED Handle = 0x89010001 + JSCRIPT_E_CANTEXECUTE Handle = 0x89020001 + WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001 + WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002 + WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003 + WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004 + WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005 + WEP_E_NO_LICENSE Handle = 0x88010006 + WEP_E_OS_NOT_PROTECTED Handle = 0x88010007 + WEP_E_UNEXPECTED_FAIL Handle = 0x88010008 + WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009 + ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000 + ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00 + ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01 + ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04 + ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05 + ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06 + ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07 + ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08 + ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09 + ERROR_VHD_SHARED Handle = 0xC05CFF0A + ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B + ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C + ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000 + ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001 + WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1 + WININET_E_TIMEOUT Handle = 0x80072EE2 + WININET_E_EXTENDED_ERROR Handle = 0x80072EE3 + WININET_E_INTERNAL_ERROR Handle = 0x80072EE4 + WININET_E_INVALID_URL Handle = 0x80072EE5 + WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6 + WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7 + WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8 + WININET_E_INVALID_OPTION Handle = 0x80072EE9 + WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA + WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB + WININET_E_SHUTDOWN Handle = 0x80072EEC + WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED + WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE + WININET_E_LOGIN_FAILURE Handle = 0x80072EEF + WININET_E_INVALID_OPERATION Handle = 0x80072EF0 + WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1 + WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2 + WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3 + WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4 + WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5 + WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6 + WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7 + WININET_E_NO_CONTEXT Handle = 0x80072EF8 + WININET_E_NO_CALLBACK Handle = 0x80072EF9 + WININET_E_REQUEST_PENDING Handle = 0x80072EFA + WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB + WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC + WININET_E_CANNOT_CONNECT Handle = 0x80072EFD + WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE + WININET_E_CONNECTION_RESET Handle = 0x80072EFF + WININET_E_FORCE_RETRY Handle = 0x80072F00 + WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01 + WININET_E_NEED_UI Handle = 0x80072F02 + WININET_E_HANDLE_EXISTS Handle = 0x80072F04 + WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05 + WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06 + WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07 + WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08 + WININET_E_MIXED_SECURITY Handle = 0x80072F09 + WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A + WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B + WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C + WININET_E_INVALID_CA Handle = 0x80072F0D + WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E + WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F + WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10 + WININET_E_DIALOG_PENDING Handle = 0x80072F11 + WININET_E_RETRY_DIALOG Handle = 0x80072F12 + WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13 + WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14 + WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17 + WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19 + WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76 + WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77 + WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78 + WININET_E_INVALID_HEADER Handle = 0x80072F79 + WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A + WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B + WININET_E_REDIRECT_FAILED Handle = 0x80072F7C + WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D + WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E + WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F + WININET_E_DISCONNECTED Handle = 0x80072F83 + WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84 + WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85 + WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86 + WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87 + WININET_E_SEC_INVALID_CERT Handle = 0x80072F89 + WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A + WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B + WININET_E_NOT_INITIALIZED Handle = 0x80072F8C + WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E + WININET_E_DECODING_FAILED Handle = 0x80072F8F + WININET_E_NOT_REDIRECTED Handle = 0x80072F80 + WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81 + WININET_E_COOKIE_DECLINED Handle = 0x80072F82 + WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88 + SQLITE_E_ERROR Handle = 0x87AF0001 + SQLITE_E_INTERNAL Handle = 0x87AF0002 + SQLITE_E_PERM Handle = 0x87AF0003 + SQLITE_E_ABORT Handle = 0x87AF0004 + SQLITE_E_BUSY Handle = 0x87AF0005 + SQLITE_E_LOCKED Handle = 0x87AF0006 + SQLITE_E_NOMEM Handle = 0x87AF0007 + SQLITE_E_READONLY Handle = 0x87AF0008 + SQLITE_E_INTERRUPT Handle = 0x87AF0009 + SQLITE_E_IOERR Handle = 0x87AF000A + SQLITE_E_CORRUPT Handle = 0x87AF000B + SQLITE_E_NOTFOUND Handle = 0x87AF000C + SQLITE_E_FULL Handle = 0x87AF000D + SQLITE_E_CANTOPEN Handle = 0x87AF000E + SQLITE_E_PROTOCOL Handle = 0x87AF000F + SQLITE_E_EMPTY Handle = 0x87AF0010 + SQLITE_E_SCHEMA Handle = 0x87AF0011 + SQLITE_E_TOOBIG Handle = 0x87AF0012 + SQLITE_E_CONSTRAINT Handle = 0x87AF0013 + SQLITE_E_MISMATCH Handle = 0x87AF0014 + SQLITE_E_MISUSE Handle = 0x87AF0015 + SQLITE_E_NOLFS Handle = 0x87AF0016 + SQLITE_E_AUTH Handle = 0x87AF0017 + SQLITE_E_FORMAT Handle = 0x87AF0018 + SQLITE_E_RANGE Handle = 0x87AF0019 + SQLITE_E_NOTADB Handle = 0x87AF001A + SQLITE_E_NOTICE Handle = 0x87AF001B + SQLITE_E_WARNING Handle = 0x87AF001C + SQLITE_E_ROW Handle = 0x87AF0064 + SQLITE_E_DONE Handle = 0x87AF0065 + SQLITE_E_IOERR_READ Handle = 0x87AF010A + SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A + SQLITE_E_IOERR_WRITE Handle = 0x87AF030A + SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A + SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A + SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A + SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A + SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A + SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A + SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A + SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A + SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A + SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A + SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A + SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A + SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A + SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A + SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A + SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A + SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A + SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A + SQLITE_E_IOERR_SEEK Handle = 0x87AF160A + SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A + SQLITE_E_IOERR_MMAP Handle = 0x87AF180A + SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A + SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A + SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02 + SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03 + SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106 + SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105 + SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205 + SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E + SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E + SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E + SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E + SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B + SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108 + SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208 + SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308 + SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408 + SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204 + SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113 + SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213 + SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313 + SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413 + SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513 + SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613 + SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713 + SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813 + SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913 + SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13 + SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B + SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B + SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C + UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001 + UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002 + UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003 + UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004 + UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005 + UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006 + UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007 + UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008 + UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009 + UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A + UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B + UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C + UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D + UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E + UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F + UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010 + UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011 + UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012 + UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013 + UTC_E_SQM_INIT_FAILED Handle = 0x87C51014 + UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015 + UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016 + UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017 + UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018 + UTC_E_INVALID_FILTER Handle = 0x87C51019 + UTC_E_EXE_TERMINATED Handle = 0x87C5101A + UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B + UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C + UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D + UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E + UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F + UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020 + UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021 + UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022 + UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023 + UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024 + UTC_E_DELAY_TERMINATED Handle = 0x87C51025 + UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026 + UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027 + UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028 + UTC_E_RPC_TIMEOUT Handle = 0x87C51029 + UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A + UTC_E_API_BUSY Handle = 0x87C5102B + UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C + UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D + UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E + UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F + UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030 + UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031 + UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032 + UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033 + UTC_E_BINARY_MISSING Handle = 0x87C51034 + UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035 + UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036 + UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037 + UTC_E_THROTTLED Handle = 0x87C51038 + UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039 + UTC_E_SCRIPT_MISSING Handle = 0x87C5103A + UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B + UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C + UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D + UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E + UTC_E_CERT_REV_FAILED Handle = 0x87C5103F + UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040 + UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041 + UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042 + UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043 + UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044 + UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045 + UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046 + UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047 + UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048 + UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049 + UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050 + UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051 + UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052 + UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053 + UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054 + UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055 + UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056 + UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057 + UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058 + UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 + UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A + UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B + WINML_ERR_INVALID_DEVICE Handle = 0x88900001 + WINML_ERR_INVALID_BINDING Handle = 0x88900002 + WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 + WINML_ERR_SIZE_MISMATCH Handle = 0x88900004 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go new file mode 100644 index 0000000..7060f43 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -0,0 +1,2779 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import ( + "syscall" + "unsafe" +) + +var _ unsafe.Pointer + +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + +var ( + modadvapi32 = NewLazySystemDLL("advapi32.dll") + modkernel32 = NewLazySystemDLL("kernel32.dll") + modshell32 = NewLazySystemDLL("shell32.dll") + modmswsock = NewLazySystemDLL("mswsock.dll") + modcrypt32 = NewLazySystemDLL("crypt32.dll") + modws2_32 = NewLazySystemDLL("ws2_32.dll") + moddnsapi = NewLazySystemDLL("dnsapi.dll") + modiphlpapi = NewLazySystemDLL("iphlpapi.dll") + modsecur32 = NewLazySystemDLL("secur32.dll") + modnetapi32 = NewLazySystemDLL("netapi32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") + + procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") + procReportEventW = modadvapi32.NewProc("ReportEventW") + procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") + procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") + procCreateServiceW = modadvapi32.NewProc("CreateServiceW") + procOpenServiceW = modadvapi32.NewProc("OpenServiceW") + procDeleteService = modadvapi32.NewProc("DeleteService") + procStartServiceW = modadvapi32.NewProc("StartServiceW") + procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procControlService = modadvapi32.NewProc("ControlService") + procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") + procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") + procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") + procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") + procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") + procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") + procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procGetLastError = modkernel32.NewProc("GetLastError") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetVersion = modkernel32.NewProc("GetVersion") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procExitProcess = modkernel32.NewProc("ExitProcess") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procReadFile = modkernel32.NewProc("ReadFile") + procWriteFile = modkernel32.NewProc("WriteFile") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindClose = modkernel32.NewProc("FindClose") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procMoveFileExW = modkernel32.NewProc("MoveFileExW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procCancelIo = modkernel32.NewProc("CancelIo") + procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procGetFileType = modkernel32.NewProc("GetFileType") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procLocalFree = modkernel32.NewProc("LocalFree") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") + procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") + procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") + procReadConsoleW = modkernel32.NewProc("ReadConsoleW") + procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") + procProcess32FirstW = modkernel32.NewProc("Process32FirstW") + procProcess32NextW = modkernel32.NewProc("Process32NextW") + procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") + procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") + procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") + procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procOpenEventW = modkernel32.NewProc("OpenEventW") + procSetEvent = modkernel32.NewProc("SetEvent") + procResetEvent = modkernel32.NewProc("ResetEvent") + procPulseEvent = modkernel32.NewProc("PulseEvent") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procsocket = modws2_32.NewProc("socket") + procsetsockopt = modws2_32.NewProc("setsockopt") + procgetsockopt = modws2_32.NewProc("getsockopt") + procbind = modws2_32.NewProc("bind") + procconnect = modws2_32.NewProc("connect") + procgetsockname = modws2_32.NewProc("getsockname") + procgetpeername = modws2_32.NewProc("getpeername") + proclisten = modws2_32.NewProc("listen") + procshutdown = modws2_32.NewProc("shutdown") + procclosesocket = modws2_32.NewProc("closesocket") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSASend = modws2_32.NewProc("WSASend") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procntohs = modws2_32.NewProc("ntohs") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") + procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") + procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") + procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") + procGetACP = modkernel32.NewProc("GetACP") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procCopySid = modadvapi32.NewProc("CopySid") + procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") + procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procFreeSid = modadvapi32.NewProc("FreeSid") + procEqualSid = modadvapi32.NewProc("EqualSid") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") +) + +func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeregisterEventSource(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CloseServiceHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteService(service Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLastError() (lasterr error) { + r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) + if r0 != 0 { + lasterr = syscall.Errno(r0) + } + return +} + +func LoadLibrary(libname string) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibrary(_p0) +} + +func _LoadLibrary(libname *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibraryEx(_p0, zero, flags) +} + +func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeLibrary(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(procname) + if err != nil { + return + } + return _GetProcAddress(module, _p0) +} + +func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0) + proc = uintptr(r0) + if proc == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVersion() (ver uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) + ver = uint32(r0) + if ver == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) { + var _p0 *uint16 + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ExitProcess(exitcode uint32) { + syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { + r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) + newlowoffset = uint32(r0) + if newlowoffset == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CloseHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetStdHandle(stdhandle uint32, handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func findNextFile1(handle Handle, data *win32finddata1) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindClose(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetCurrentDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { + r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RemoveDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteFile(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MoveFile(from *uint16, to *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetComputerName(buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEndOfFile(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetSystemTimeAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func GetSystemTimePreciseAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) + rc = uint32(r0) + if rc == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CancelIo(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CancelIoEx(s Handle, o *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TerminateProcess(handle Handle, exitcode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetStartupInfo(startupInfo *StartupInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentProcess() (pseudoHandle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0) + pseudoHandle = Handle(r0) + if pseudoHandle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { + var _p0 uint32 + if bInheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { + r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0) + event = uint32(r0) + if event == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + var _p0 uint32 + if waitAll { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0) + event = uint32(r0) + if event == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileType(filehandle Handle) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { + r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetEnvironmentStrings() (envs *uint16, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0) + envs = (*uint16)(unsafe.Pointer(r0)) + if envs == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeEnvironmentStrings(envs *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileAttributes(name *uint16) (attrs uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + attrs = uint32(r0) + if attrs == INVALID_FILE_ATTRIBUTES { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFileAttributes(name *uint16, attrs uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCommandLine() (cmd *uint16) { + r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0) + cmd = (*uint16)(unsafe.Pointer(r0)) + return +} + +func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { + r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) + argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) + if argv == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LocalFree(hmem Handle) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0) + handle = Handle(r0) + if handle != 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FlushFileBuffers(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0) + addr = uintptr(r0) + if addr == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func UnmapViewOfFile(addr uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FlushViewOfFile(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualLock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualUnlock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) + value = uintptr(r0) + if value == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + var _p0 uint32 + if watchSubTree { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { + r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0) + store = Handle(r0) + if store == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertCloseStore(store Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegCloseKey(key Handle) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func getCurrentProcessId() (pid uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) + pid = uint32(r0) + return +} + +func GetConsoleMode(console Handle, mode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetConsoleMode(console Handle, mode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentThreadId() (id uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0) + id = uint32(r0) + return +} + +func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ResetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func PulseEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + driveType = uint32(r0) + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { + r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func WSACleanup() (err error) { + r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { + r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { + r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func listen(s Handle, backlog int32) (err error) { + r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func shutdown(s Handle, how int32) (err error) { + r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Closesocket(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { + syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) + return +} + +func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetHostByName(name string) (h *Hostent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetHostByName(_p0) +} + +func _GetHostByName(name *byte) (h *Hostent, err error) { + r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + h = (*Hostent)(unsafe.Pointer(r0)) + if h == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetServByName(name string, proto string) (s *Servent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + var _p1 *byte + _p1, err = syscall.BytePtrFromString(proto) + if err != nil { + return + } + return _GetServByName(_p0, _p1) +} + +func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { + r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) + s = (*Servent)(unsafe.Pointer(r0)) + if s == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Ntohs(netshort uint16) (u uint16) { + r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) + u = uint16(r0) + return +} + +func GetProtoByName(name string) (p *Protoent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetProtoByName(_p0) +} + +func _GetProtoByName(name *byte) (p *Protoent, err error) { + r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + p = (*Protoent)(unsafe.Pointer(r0)) + if p == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + var _p0 *uint16 + _p0, status = syscall.UTF16PtrFromString(name) + if status != nil { + return + } + return _DnsQuery(_p0, qtype, options, extra, qrs, pr) +} + +func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + if r0 != 0 { + status = syscall.Errno(r0) + } + return +} + +func DnsRecordListFree(rl *DNSRecord, freetype uint32) { + syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) + return +} + +func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { + r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) + same = r0 != 0 + return +} + +func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { + r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func FreeAddrInfoW(addrinfo *AddrinfoW) { + syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) + return +} + +func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { + r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + n = int32(r0) + if n == -1 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { + r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetACP() (acp uint32) { + r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) + acp = uint32(r0) + return +} + +func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { + r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + nwrite = int32(r0) + if nwrite == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { + r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { + r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetApiBufferFree(buf *byte) (neterr error) { + r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLengthSid(sid *SID) (len uint32) { + r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + len = uint32(r0) + return +} + +func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeSid(sid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + if r1 != 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { + r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) + isEqual = r0 != 0 + return +} + +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} diff --git a/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go b/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go new file mode 100644 index 0000000..fd6d16a --- /dev/null +++ b/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go @@ -0,0 +1,97 @@ +package cexp + +import "gopkg.in/hlandau/measurable.v1" +import "sync/atomic" + +// Counter + +type Counter struct { + name string + value int64 +} + +func (c *Counter) MsName() string { + return c.name +} + +func (c *Counter) MsInt64() int64 { + return atomic.LoadInt64(&c.value) +} + +func (c *Counter) Get() int64 { + return c.MsInt64() +} + +// v must be non-negative. +func (c *Counter) Add(v int64) { + atomic.AddInt64(&c.value, v) +} + +func (c *Counter) Inc() { + c.Add(1) +} + +func (c *Counter) MsType() measurable.Type { + return measurable.CounterType +} + +func NewCounter(name string) *Counter { + c := &Counter{ + name: name, + } + + measurable.Register(c) + return c +} + +// Gauge + +type Gauge struct { + name string + value int64 +} + +func (c *Gauge) MsName() string { + return c.name +} + +func (c *Gauge) MsInt64() int64 { + return atomic.LoadInt64(&c.value) +} + +func (c *Gauge) Add(v int64) { + atomic.AddInt64(&c.value, v) +} + +func (c *Gauge) Sub(v int64) { + c.Add(-v) +} + +func (c *Gauge) Set(v int64) { + atomic.StoreInt64(&c.value, v) +} + +func (c *Gauge) Get() int64 { + return c.MsInt64() +} + +func (c *Gauge) Inc() { + c.Add(1) +} + +func (c *Gauge) Dec() { + c.Add(-1) +} + +func (c *Gauge) MsType() measurable.Type { + return measurable.GaugeType +} + +func NewGauge(name string) *Gauge { + c := &Gauge{ + name: name, + } + + measurable.Register(c) + return c +} diff --git a/vendor/gopkg.in/hlandau/measurable.v1/README.md b/vendor/gopkg.in/hlandau/measurable.v1/README.md new file mode 100644 index 0000000..f2d582d --- /dev/null +++ b/vendor/gopkg.in/hlandau/measurable.v1/README.md @@ -0,0 +1,82 @@ +Measurable: The useless Go metric registration package that doesn't do anything +=============================================================================== + +[![GoDoc](https://godoc.org/gopkg.in/hlandau/measurable.v1?status.svg)](https://godoc.org/gopkg.in/hlandau/measurable.v1) + +Measurable is a Go library for managing the registration of metrics such as +counters and gauges, no matter how that metric data is eventually consumed. + +The most noteworthy feature of measurable is that it doesn't do anything. It +contains no functionality for providing metric data to any external service, +and it contains no actual metric implementations. + +The purpose of measurable is to act as an [integration +nexus](https://www.devever.net/~hl/nexuses), essentially a matchmaker between +metric sources and metric consumers. This creates the important feature that +your application's metrics can be expressed completely independently of *how* +those metrics are exported. + +Measurable doesn't implement any metric or metric export logic because it +strives to be a neutral intermediary, which abstracts the interface between +metrics and metric exporters. + +**Import as:** `gopkg.in/hlandau/measurable.v1` + +Measurable +---------- + +A Measurable is an object that represents some metric. It is obliged only to +implement the following interface: + +```go +type Measurable interface { + MsName() string + MsType() Type +} +``` + +Measurable is designed around interface upgrades. If you want to actually +do anything with a Measurable, you must attempt to cast it to an interface +with the methods you need. A Measurable is not obliged to implement any +interface besides Measurable, but almost always will. + +Here are some common interfaces implemented by Measurables, in descending order +of importance: + + - `MsName() string` — get the Measurable name. + - `MsType() Type` — get the Measurable type. + - `MsInt64() int64` — get the Measurable as an int64. + - `String() string` — the standard Go `String()` interface. + +All Measurables should implement `MsName() string` and `MsType() Type`. + +Measurable-specific methods should always be prefixed by `Ms` so it is clear +they are intended for consumption by Measurable consumers. + +`MsName`, `MsType` and `MsInt64` should suffice for most consumers of Counter +and Gauge metric types. + +Metrics should be named in lowercase using dots to create a hierarchy and +dashes to separate words, e.g. `someserver.http.request-count`. These metric +names may be transmuted by consumers as necessary for some graphing systems, +such as Prometheus (which allows only underscores). + +Standard Bindings +----------------- + +For a package which makes it easy to register and consume measurables, see the +[easymetric](https://github.com/hlandau/easymetric) package. + +Of course, nothing requires you to use the easymetric package. You are free to escew it and make your own. + +Background Reading +------------------ + + - [On Nexuses](https://www.devever.net/~hl/nexuses) + - See also: [Configurable](https://github.com/hlandau/configurable) + +Licence +------- + + © 2015 Hugo Landau MIT License + diff --git a/vendor/gopkg.in/hlandau/measurable.v1/measurable.go b/vendor/gopkg.in/hlandau/measurable.v1/measurable.go new file mode 100644 index 0000000..4399d0a --- /dev/null +++ b/vendor/gopkg.in/hlandau/measurable.v1/measurable.go @@ -0,0 +1,189 @@ +// Package measurable provides a functionality-free integration nexus for +// metric registration. +// +// Measurable is a Go package for connecting service metrics and metric consumers. +// +// The most noteworthy feature of measurable is that it doesn't do anything. +// It contains no functionality for defining or exporting metrics. +// +// The purpose of measurable is to act as an integration nexus +// (https://www.devever.net/~hl/nexuses), essentially a matchmaker between +// application metrics and metric consumers. This creates the important feature +// that your application's metrics can be defined completely independently of +// *how* those metrics are defined. +// +// Measurable doesn't implement any metric definition or export logic because it +// strives to be a neutral intermediary, which abstracts the interface between +// measurables and measurable consumers +// +// Pursuant to this, package measurable is this and only this: an interface +// Measurable which all metrics must implement, and a facility for registering +// Measurables and visiting them. +package measurable // import "gopkg.in/hlandau/measurable.v1" + +import "sync" +import "fmt" + +// Measurable is the interface which must be implemented by any metric item to +// be used with package measurable. In the current version, v1, it contains +// only the MsName() and MsType() methods. All other functionality must be +// obtained by interface upgrades. +type Measurable interface { + // Returns the name of the metric. Names should be in the style + // "alpha.beta.gamma-delta", for example "foo.http.requests.count". That is, + // names should be lowercase, should express a hierarchy separated by dots, + // and have words separated by dashes. + // + // Some Measurable consumers may mutate these names to satisfy naming + // restrictions applied by some graphing systems. + MsName() string + + // Return the Measurable type. You can, of course, invent your own Measurable + // types, though consumers won't necessarily know what to do with them. + MsType() Type +} + +var measurablesMutex sync.RWMutex +var measurables = map[string]Measurable{} + +// Registers a top-level Configurable. +func Register(measurable Measurable) { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + if measurable == nil { + panic("cannot register nil measurable") + } + + name := measurable.MsName() + if name == "" { + panic("measurable cannot have empty name") + } + + _, exists := measurables[name] + if exists { + panic(fmt.Sprintf("A measurable with the same name already exists: %s", name)) + } + + measurables[name] = measurable + callRegistrationHooks(measurable, RegisterEvent) +} + +func Unregister(measurableName string) { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + measurable, ok := measurables[measurableName] + if !ok { + return + } + + callRegistrationHooks(measurable, UnregisterEvent) + delete(measurables, measurableName) +} + +func Get(measurableName string) Measurable { + measurablesMutex.RLock() + defer measurablesMutex.RUnlock() + + return measurables[measurableName] +} + +// Visits all registered top-level Measurables. +// +// Returning a non-nil error short-circuits the iteration process and returns +// that error. +func Visit(do func(measurable Measurable) error) error { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + for _, measurable := range measurables { + err := do(measurable) + if err != nil { + return err + } + } + + return nil +} + +// Represents a measurable type. +type Type uint32 + +const ( + // A CounterType Measurable represents a non-negative integral value + // that monotonously increases. It must implement `MsInt64() int64`. + CounterType Type = 0x436E7472 + + // A GaugeType Measurable represents an integral value that varies over + // time. It must implement `MsInt64() int64`. + GaugeType = 0x47617567 +) + +// Registration hooks. +type HookEvent int + +const ( + // This event is issued when a measurable is registered. + RegisterEvent HookEvent = iota + + // This event is issued when a registration hook is registered. It is issued + // for every measurable which has already been registered. + RegisterCatchupEvent + + // This event is issued when a measurable is unregistered. + UnregisterEvent +) + +type HookFunc func(measurable Measurable, hookEvent HookEvent) + +var hooksMutex sync.RWMutex +var hooks = map[interface{}]HookFunc{} + +// Register for notifications on metric registration. The key must be usable as +// a key in a map and identifies the hook. No other hook with the same key must +// already exist. +// +// NOTE: The hook will be called for all registrations which already exist. +// This ensures that no registrations are missed in a threadsafe manner. +// For these calls, the event will be EventRegisterCatchup. +// +// The hook must not register or unregister registration hooks or metrics. +func RegisterHook(key interface{}, hook HookFunc) { + measurablesMutex.RLock() + defer measurablesMutex.RUnlock() + + registerHook(key, hook) + + for _, m := range measurables { + hook(m, RegisterCatchupEvent) + } +} + +func registerHook(key interface{}, hook HookFunc) { + hooksMutex.Lock() + defer hooksMutex.Unlock() + + _, exists := hooks[key] + if exists { + panic(fmt.Sprintf("A metric registration hook with the same key already exists: %+v", key)) + } + + hooks[key] = hook +} + +// Unregister an existing hook. +func UnregisterHook(key interface{}) { + hooksMutex.Lock() + defer hooksMutex.Unlock() + delete(hooks, key) +} + +func callRegistrationHooks(measurable Measurable, event HookEvent) { + hooksMutex.RLock() + defer hooksMutex.RUnlock() + + for _, v := range hooks { + v(measurable, event) + } +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml b/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml new file mode 100644 index 0000000..f817ef3 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml @@ -0,0 +1,12 @@ +language: go +os: + - linux +go: + - 1.10 + - tip +sudo: false +install: + - mkdir -p $HOME/gopath/src/gopkg.in/hlandau/ + - ln -s $TRAVIS_BUILD_DIR $HOME/gopath/src/gopkg.in/hlandau/passlib.v1 + - cd $HOME/gopath/src/gopkg.in/hlandau/passlib.v1 + - go get diff --git a/vendor/gopkg.in/hlandau/passlib.v1/COPYING b/vendor/gopkg.in/hlandau/passlib.v1/COPYING new file mode 100644 index 0000000..d2aa62a --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/COPYING @@ -0,0 +1,39 @@ +passlib is a Golang password verification library strongly inspired by and +derived from Python passlib (). The BSD +license is preserved and extended to all new code. + +License for Passlib +=================== +Passlib is (c) `Assurance Technologies `_, +and is released under the `BSD license `_:: + + Passlib + Copyright (c) 2008-2012 Assurance Technologies, LLC. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Assurance Technologies, nor the names of the + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/gopkg.in/hlandau/passlib.v1/README.md b/vendor/gopkg.in/hlandau/passlib.v1/README.md new file mode 100644 index 0000000..ca79918 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/README.md @@ -0,0 +1,100 @@ +passlib for go +============== + +[![GoDoc](https://godoc.org/gopkg.in/hlandau/passlib.v1?status.svg)](https://godoc.org/gopkg.in/hlandau/passlib.v1) [![Build Status](https://travis-ci.org/hlandau/passlib.svg?branch=master)](https://travis-ci.org/hlandau/passlib) + +[Python's passlib](https://pythonhosted.org/passlib/) is quite an amazing +library. I'm not sure there's a password library in existence with more thought +put into it, or with more support for obscure password formats. + +This is a skeleton of a port of passlib to Go. It dogmatically adopts the +modular crypt format, which [passlib has excellent documentation for](https://pythonhosted.org/passlib/modular_crypt_format.html#modular-crypt-format). + +Currently, it supports: + + - sha256-crypt + - sha512-crypt + - scrypt-sha256 + - bcrypt + - passlib's bcrypt-sha256 variant + - pbkdf2-sha1 (in passlib format) + - pbkdf2-sha256 (in passlib format) + - pbkdf2-sha512 (in passlib format) + +By default, it will hash using scrypt-sha256 and verify existing hashes using +any of these schemes. + +Example Usage +------------- +There's a default context for ease of use. Most people need only concern +themselves with the functions `Hash` and `Verify`: + +```go +// Hash a plaintext, UTF-8 password. +func Hash(password string) (hash string, err error) + +// Verifies a plaintext, UTF-8 password using a previously derived hash. +// Returns non-nil err if verification fails. +// +// Also returns an upgraded password hash if the hash provided is +// deprecated. +func Verify(password, hash string) (newHash string, err error) +``` + +Here's a rough skeleton of typical usage. + +```go +import "gopkg.in/hlandau/passlib.v1" + +func RegisterUser() { + (...) + + password := get a (UTF-8, plaintext) password from somewhere + + hash, err := passlib.Hash(password) + if err != nil { + // couldn't hash password for some reason + return + } + + (store hash in database, etc.) +} + +func CheckPassword() bool { + password := get the password the user entered + hash := the hash you stored from the call to Hash() + + newHash, err := passlib.Verify(password, hash) + if err != nil { + // incorrect password, malformed hash, etc. + // either way, reject + return false + } + + // The context has decided, as per its policy, that + // the hash which was used to validate the password + // should be changed. It has upgraded the hash using + // the verified password. + if newHash != "" { + (store newHash in database, replacing old hash) + } + + return true +} +``` + +scrypt Modular Crypt Format +--------------------------- +Since scrypt does not have a pre-existing modular crypt format standard, I made one. It's as follows: + + $s2$N$r$p$salt$hash + +...where `N`, `r` and `p` are the respective difficulty parameters to scrypt as positive decimal integers without leading zeroes, and `salt` and `hash` are base64-encoded binary strings. Note that the RFC 4648 base64 encoding is used (not the one used by sha256-crypt and sha512-crypt). + +Licence +------- +passlib is partially derived from Python's passlib and so maintains its BSD license. + + © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License + © 2014 Hugo Landau BSD License + diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go new file mode 100644 index 0000000..d336f13 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go @@ -0,0 +1,11 @@ +package abstract + +import "crypto/subtle" + +// Compares two strings (typicaly password hashes) in a secure, constant-time +// fashion. Returns true iff they are equal. +func SecureCompare(a, b string) bool { + ab := []byte(a) + bb := []byte(b) + return subtle.ConstantTimeCompare(ab, bb) == 1 +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go new file mode 100644 index 0000000..3298f82 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go @@ -0,0 +1,15 @@ +// Package abstract contains the abstract description of the Scheme interface, +// plus supporting error definitions. +package abstract + +import "fmt" + +// Indicates that password verification failed because the provided password +// does not match the provided hash. +var ErrInvalidPassword = fmt.Errorf("invalid password") + +// Indicates that password verification is not possible because the hashing +// scheme used by the hash provided is not supported. +var ErrUnsupportedScheme = fmt.Errorf("unsupported scheme") + +// © 2014 Hugo Landau MIT License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go new file mode 100644 index 0000000..3589022 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go @@ -0,0 +1,34 @@ +package abstract + +// The Scheme interface provides an abstract interface to an implementation +// of a particular password hashing scheme. The Scheme generates password +// hashes from passwords, verifies passwords using password hashes, randomly +// generates new stubs and can determines whether it recognises a given +// stub or hash. It may also decide to issue upgrades. +type Scheme interface { + // Hashes a plaintext UTF-8 password using a modular crypt stub. Returns the + // hashed password in modular crypt format. + // + // A modular crypt stub is a prefix of a hash in modular crypt format which + // expresses all necessary configuration information, such as salt and + // iteration count. For example, for sha256-crypt, a valid stub would be: + // + // $5$rounds=6000$salt + // + // A full modular crypt hash may also be passed as the stub, in which case + // the hash is ignored. + Hash(password string) (string, error) + + // Verifies a plaintext UTF-8 password using a modular crypt hash. Returns + // an error if the inputs are malformed or the password does not match. + Verify(password, hash string) (err error) + + // Returns true iff this crypter supports the given stub. + SupportsStub(stub string) bool + + // Returns true iff this stub needs an update. + NeedsUpdate(stub string) bool + + // Make a stub with the configured defaults. The salt is generated randomly. + //MakeStub() (string, error) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/default.go b/vendor/gopkg.in/hlandau/passlib.v1/default.go new file mode 100644 index 0000000..d778584 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/default.go @@ -0,0 +1,141 @@ +package passlib + +import ( + "fmt" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/argon2" + "gopkg.in/hlandau/passlib.v1/hash/bcrypt" + "gopkg.in/hlandau/passlib.v1/hash/bcryptsha256" + "gopkg.in/hlandau/passlib.v1/hash/pbkdf2" + "gopkg.in/hlandau/passlib.v1/hash/scrypt" + "gopkg.in/hlandau/passlib.v1/hash/sha2crypt" + "time" +) + +// This is the first and default set of defaults used by passlib. It prefers +// scrypt-sha256. It is now obsolete. +const Defaults20160922 = "20160922" + +// This is the most up-to-date set of defaults preferred by passlib. It prefers +// Argon2i. You must opt into it by calling UseDefaults at startup. +const Defaults20180601 = "20180601" + +// This value, when passed to UseDefaults, causes passlib to always use the +// very latest set of defaults. DO NOT use this unless you are sure that +// opportunistic hash upgrades will not cause breakage for your application +// when future versions of passlib are released. See func UseDefaults. +const DefaultsLatest = "latest" + +// Default schemes as of 2016-09-22. +var defaultSchemes20160922 = []abstract.Scheme{ + scrypt.SHA256Crypter, + argon2.Crypter, + sha2crypt.Crypter512, + sha2crypt.Crypter256, + bcryptsha256.Crypter, + pbkdf2.SHA512Crypter, + pbkdf2.SHA256Crypter, + bcrypt.Crypter, + pbkdf2.SHA1Crypter, +} + +// Default schemes as of 2018-06-01. +var defaultSchemes20180601 = []abstract.Scheme{ + argon2.Crypter, + scrypt.SHA256Crypter, + sha2crypt.Crypter512, + sha2crypt.Crypter256, + bcryptsha256.Crypter, + pbkdf2.SHA512Crypter, + pbkdf2.SHA256Crypter, + bcrypt.Crypter, + pbkdf2.SHA1Crypter, +} + +// The default schemes, most preferred first. The first scheme will be used to +// hash passwords, and any of the schemes may be used to verify existing +// passwords. The contents of this value may change with subsequent releases. +// +// If you want to change this, set DefaultSchemes to a slice to an +// abstract.Scheme array of your own construction, rather than mutating the +// array the slice points to. +// +// To see the default schemes used in the current release of passlib, see +// default.go. See also the UseDefaults function for more information on how +// the list of default schemes is determined. The default value of +// DefaultSchemes (the default defaults) won't change; you need to call +// UseDefaults to allow your application to upgrade to newer hashing schemes +// (or set DefaultSchemes manually, or create a custom context with its own +// schemes set). +var DefaultSchemes []abstract.Scheme + +func init() { + DefaultSchemes = defaultSchemes20160922 +} + +// It is strongly recommended that you call this function like this before using passlib: +// +// passlib.UseDefaults("YYYYMMDD") +// +// where YYYYMMDD is a date. This will be used to select the preferred scheme +// to use. If you do not call UseDefaults, the preferred scheme (the first item +// in the default schemes list) current as of 2016-09-22 will always be used, +// meaning that upgrade will not occur even though better schemes are now +// available. +// +// Note that even if you don't call this function, new schemes will still be +// added to DefaultSchemes over time as non-initial values (items not at index +// 0), so servers will always, by default, be able to validate all schemes +// which passlib supports at any given time. +// +// The reason you must call this function is as follows: If passlib is deployed +// as part of a web application in a multi-server deployment, and passlib is +// updated, and the new version of that application with the updated passlib is +// deployed, that upgrade process is unlikely to be instantaneous. Old versions +// of the web application may continue to run on some servers. If merely +// upgrading passlib caused password hashes to be upgraded to the newer scheme +// on login, the older daemons may not be able to validate these passwords and +// users may have issues logging in. Although this can be ameliorated to some +// extent by introducing a new scheme to passlib, waiting some months, and only +// then making this the default, this could still cause issued if passlib is +// only updated very occasionally. +// +// Thus, you should update your call to UseDefaults only when all servers have +// been upgraded, and it is thus guaranteed that they will all be able to +// verify the new scheme. Making this value loadable from a configuration file +// is recommended. +// +// If you are using a single-server configuration, you can use the special +// value "latest" here (or, equivalently, a date far into the future), which +// will always use the most preferred scheme. This is hazardous in a +// multi-server environment. +// +// The constants beginning 'Defaults' in this package document dates +// which are meaningful to this function. The constant values they are equal to +// will never change, so there is no need to use them instead of string +// literals, although you may if you wish; they are intended mainly as +// documentation as to the significance of various dates. +// +// Example for opting in to the latest set of defaults: +// +// passlib.UseDefaults(passlib.Defaults20180601) +// +func UseDefaults(date string) error { + if date == "latest" { + DefaultSchemes = defaultSchemes20180601 + return nil + } + + t, err := time.ParseInLocation("20060102", date, time.UTC) + if err != nil { + return fmt.Errorf("invalid time string passed to passlib.UseDefaults: %q", date) + } + + if !t.Before(time.Date(2016, 9, 22, 0, 0, 0, 0, time.UTC)) { + DefaultSchemes = defaultSchemes20180601 + return nil + } + + DefaultSchemes = defaultSchemes20160922 + return nil +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go new file mode 100644 index 0000000..63629ac --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go @@ -0,0 +1,115 @@ +// Package argon2 implements the argon2 password hashing mechanism, wrapped in +// the argon2 encoded format. +package argon2 + +import ( + "crypto/rand" + "encoding/base64" + "fmt" + "strings" + + "golang.org/x/crypto/argon2" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/argon2/raw" +) + +// An implementation of Scheme performing argon2 hashing. +// +// Uses the recommended values for time, memory and threads defined in raw. +var Crypter abstract.Scheme + +const saltLength = 16 + +func init() { + Crypter = New( + raw.RecommendedTime, + raw.RecommendedMemory, + raw.RecommendedThreads, + ) +} + +// Returns an implementation of Scheme implementing argon2 +// with the specified parameters. +func New(time, memory uint32, threads uint8) abstract.Scheme { + return &scheme{ + time: time, + memory: memory, + threads: threads, + } +} + +type scheme struct { + time, memory uint32 + threads uint8 +} + +func (c *scheme) SetParams(time, memory uint32, threads uint8) error { + c.time = time + c.memory = memory + c.threads = threads + return nil +} + +func (c *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$argon2i$") +} + +func (c *scheme) Hash(password string) (string, error) { + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, _, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *scheme) Verify(password, hash string) (err error) { + + _, newHash, _, _, _, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *scheme) NeedsUpdate(stub string) bool { + salt, _, version, time, memory, threads, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, version, time, memory, threads) +} + +func (c *scheme) needsUpdate(salt []byte, version int, time, memory uint32, threads uint8) bool { + return len(salt) < saltLength || version < argon2.Version || time < c.time || memory < c.memory || threads < c.threads +} + +func (c *scheme) hash(password, stub string) (oldHashRaw []byte, newHash string, salt []byte, version int, memory, time uint32, threads uint8, err error) { + + salt, oldHashRaw, version, time, memory, threads, err = raw.Parse(stub) + if err != nil { + return + } + + return oldHashRaw, raw.Argon2(password, salt, time, memory, threads), salt, version, memory, time, threads, nil +} + +func (c *scheme) makeStub() (string, error) { + buf := make([]byte, saltLength) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := base64.RawStdEncoding.EncodeToString(buf) + + return fmt.Sprintf("$argon2i$v=%d$m=%d,t=%d,p=%d$%s$", argon2.Version, c.memory, c.time, c.threads, salt), nil +} + +func (c *scheme) String() string { + return fmt.Sprintf("argon2(%d,%d,%d,%d)", argon2.Version, c.memory, c.time, c.threads) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go new file mode 100644 index 0000000..47a8dde --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go @@ -0,0 +1,186 @@ +// Package raw provides a raw implementation of the modular-crypt-wrapped Argon2i primitive. +package raw + +import ( + "encoding/base64" + "fmt" + "golang.org/x/crypto/argon2" + "strconv" + "strings" +) + +// The current recommended time value for interactive logins. +const RecommendedTime uint32 = 4 + +// The current recommended memory for interactive logins. +const RecommendedMemory uint32 = 32 * 1024 + +// The current recommended number of threads for interactive logins. +const RecommendedThreads uint8 = 4 + +// Wrapper for golang.org/x/crypto/argon2 implementing a sensible +// hashing interface. +// +// password should be a UTF-8 plaintext password. +// salt should be a random salt value in binary form. +// +// Time, memory, and threads are parameters to argon2. +// +// Returns an argon2 encoded hash. +func Argon2(password string, salt []byte, time, memory uint32, threads uint8) string { + passwordb := []byte(password) + + hash := argon2.Key(passwordb, salt, time, memory, threads, 32) + + hstr := base64.RawStdEncoding.EncodeToString(hash) + sstr := base64.RawStdEncoding.EncodeToString(salt) + + return fmt.Sprintf("$argon2i$v=%d$m=%d,t=%d,p=%d$%s$%s", argon2.Version, memory, time, threads, sstr, hstr) +} + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid argon2 password stub") + +// Indicates that a key-value pair in the configuration part is malformed. +var ErrInvalidKeyValuePair = fmt.Errorf("invalid argon2 key-value pair") + +// Indicates that the version part had the wrong number of parameters. +var ErrParseVersion = fmt.Errorf("version section has wrong number of parameters") + +// Indicates that the hash config part had the wrong number of parameters. +var ErrParseConfig = fmt.Errorf("hash config section has wrong number of parameters") + +// Indicates that the version parameter ("v") was missing in the version part, +// even though it is required. +var ErrMissingVersion = fmt.Errorf("version parameter (v) is missing") + +// Indicates that the memory parameter ("m") was mossing in the hash config +// part, even though it is required. +var ErrMissingMemory = fmt.Errorf("memory parameter (m) is missing") + +// Indicates that the time parameter ("t") was mossing in the hash config part, +// even though it is required. +var ErrMissingTime = fmt.Errorf("time parameter (t) is missing") + +// Indicates that the parallelism parameter ("p") was mossing in the hash config +// part, even though it is required. +var ErrMissingParallelism = fmt.Errorf("parallelism parameter (p) is missing") + +// Parses an argon2 encoded hash. +// +// The format is as follows: +// +// $argon2i$v=version$m=memory,t=time,p=threads$salt$hash // hash +// $argon2i$v=version$m=memory,t=time,p=threads$salt // stub +// +func Parse(stub string) (salt, hash []byte, version int, time, memory uint32, parallelism uint8, err error) { + if len(stub) < 26 || !strings.HasPrefix(stub, "$argon2i$") { + err = ErrInvalidStub + return + } + + // $argon2i$ v=version$m=memory,t=time,p=threads$salt-base64$hash-base64 + parts := strings.Split(stub[9:], "$") + + // version-params$hash-config-params$salt[$hash] + if len(parts) < 3 || len(parts) > 4 { + err = ErrInvalidStub + return + } + + // Parse the first configuration part, the version parameters. + versionParams, err := parseKeyValuePair(parts[0]) + if err != nil { + return + } + + // Must be exactly one parameter in the version part. + if len(versionParams) != 1 { + err = ErrParseVersion + return + } + + // It must be "v". + val, ok := versionParams["v"] + if !ok { + err = ErrMissingVersion + return + } + + version = int(val) + + // Parse the second configuration part, the hash config parameters. + hashParams, err := parseKeyValuePair(parts[1]) + if err != nil { + return + } + + // It must have exactly three parameters. + if len(hashParams) != 3 { + err = ErrParseConfig + return + } + + // Memory parameter. + val, ok = hashParams["m"] + if !ok { + err = ErrMissingMemory + return + } + + memory = uint32(val) + + // Time parameter. + val, ok = hashParams["t"] + if !ok { + err = ErrMissingTime + return + } + + time = uint32(val) + + // Parallelism parameter. + val, ok = hashParams["p"] + if !ok { + err = ErrMissingParallelism + return + } + + parallelism = uint8(val) + + // Decode salt. + salt, err = base64.RawStdEncoding.DecodeString(parts[2]) + if err != nil { + return + } + + // Decode hash if present. + if len(parts) >= 4 { + hash, err = base64.RawStdEncoding.DecodeString(parts[3]) + } + + return +} + +func parseKeyValuePair(pairs string) (result map[string]uint64, err error) { + result = map[string]uint64{} + + parameterParts := strings.Split(pairs, ",") + + for _, parameter := range parameterParts { + parts := strings.SplitN(parameter, "=", 2) + if len(parts) != 2 { + err = ErrInvalidKeyValuePair + return + } + + parsedi, err := strconv.ParseUint(parts[1], 10, 32) + if err != nil { + return result, err + } + + result[parts[0]] = parsedi + } + + return result, nil +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go new file mode 100644 index 0000000..fbcc38d --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go @@ -0,0 +1,72 @@ +// Package bcrypt implements the bcrypt password hashing mechanism. +// +// Please note that bcrypt truncates passwords to 72 characters in length. Consider using +// a more modern hashing scheme such as scrypt or sha-crypt. If you must use bcrypt, +// consider using bcrypt-sha256 instead. +package bcrypt + +import "golang.org/x/crypto/bcrypt" +import "gopkg.in/hlandau/passlib.v1/abstract" +import "fmt" + +// An implementation of Scheme implementing bcrypt. +// +// Uses RecommendedCost. +var Crypter abstract.Scheme + +// The recommended cost for bcrypt. This may change with subsequent releases. +const RecommendedCost = 12 + +// bcrypt.DefaultCost is a bit low (10), so use 12 instead. + +func init() { + Crypter = New(RecommendedCost) +} + +// Create a new scheme implementing bcrypt. The recommended cost is RecommendedCost. +func New(cost int) abstract.Scheme { + return &scheme{ + Cost: cost, + } +} + +type scheme struct { + Cost int +} + +func (s *scheme) SupportsStub(stub string) bool { + return len(stub) >= 3 && stub[0] == '$' && stub[1] == '2' && + (stub[2] == '$' || (len(stub) >= 4 && stub[3] == '$' && + (stub[2] == 'a' || stub[2] == 'b' || stub[2] == 'y'))) +} + +func (s *scheme) Hash(password string) (string, error) { + h, err := bcrypt.GenerateFromPassword([]byte(password), s.Cost) + if err != nil { + return "", err + } + + return string(h), nil +} + +func (s *scheme) Verify(password, hash string) error { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + if err == bcrypt.ErrMismatchedHashAndPassword { + err = abstract.ErrInvalidPassword + } + + return err +} + +func (s *scheme) NeedsUpdate(stub string) bool { + cost, err := bcrypt.Cost([]byte(stub)) + if err != nil { + return false + } + + return cost < s.Cost +} + +func (s *scheme) String() string { + return fmt.Sprintf("bcrypt(%d)", s.Cost) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go new file mode 100644 index 0000000..e11d083 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go @@ -0,0 +1,96 @@ +// Package bcryptsha256 implements bcrypt with a SHA256 prehash in a format that is compatible with Python passlib's equivalent bcrypt-sha256 scheme. +// +// This is preferred over bcrypt because the prehash essentially renders bcrypt's password length +// limitation irrelevant; although of course it is less compatible. +package bcryptsha256 + +import "gopkg.in/hlandau/passlib.v1/abstract" +import "gopkg.in/hlandau/passlib.v1/hash/bcrypt" +import "encoding/base64" +import "crypto/sha256" +import "strings" +import "fmt" + +type scheme struct { + underlying abstract.Scheme + cost int +} + +// An implementation of Scheme implementing Python passlib's `$bcrypt-sha256$` +// bcrypt variant. This is bcrypt with a SHA256 prehash, which removes bcrypt's +// password length limitation. +var Crypter abstract.Scheme + +// The recommended cost for bcrypt-sha256. This may change with subsequent releases. +const RecommendedCost = bcrypt.RecommendedCost + +func init() { + Crypter = New(bcrypt.RecommendedCost) +} + +// Instantiates a new Scheme implementing bcrypt with the given cost. +// +// The recommended cost is RecommendedCost. +func New(cost int) abstract.Scheme { + return &scheme{ + underlying: bcrypt.New(cost), + cost: cost, + } +} + +func (s *scheme) Hash(password string) (string, error) { + p := s.prehash(password) + h, err := s.underlying.Hash(p) + if err != nil { + return "", err + } + + return mangle(h), nil +} + +func (s *scheme) Verify(password, hash string) error { + p := s.prehash(password) + return s.underlying.Verify(p, demangle(hash)) +} + +func (s *scheme) prehash(password string) string { + h := sha256.New() + h.Write([]byte(password)) + v := base64.StdEncoding.EncodeToString(h.Sum(nil)) + return v +} + +func (s *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$bcrypt-sha256$") && s.underlying.SupportsStub(demangle(stub)) +} + +func (s *scheme) NeedsUpdate(stub string) bool { + return s.underlying.NeedsUpdate(demangle(stub)) +} + +func (s *scheme) String() string { + return fmt.Sprintf("bcrypt-sha256(%d)", s.cost) +} + +func demangle(stub string) string { + if strings.HasPrefix(stub, "$bcrypt-sha256$2") { + parts := strings.Split(stub[15:], "$") + // 0: 2a,12 + // 1: salt + // 2: hash + parts0 := strings.Split(parts[0], ",") + return "$" + parts0[0] + "$" + fmt.Sprintf("%02s", parts0[1]) + "$" + parts[1] + parts[2] + } else { + return stub + } +} + +func mangle(hash string) string { + parts := strings.Split(hash[1:], "$") + // 0: 2a + // 1: rounds + // 2: salt + hash + salt := parts[2][0:22] + h := parts[2][22:] + return "$bcrypt-sha256$" + parts[0] + "," + parts[1] + "$" + salt + "$" + h +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go new file mode 100644 index 0000000..8037bb1 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go @@ -0,0 +1,94 @@ +// Package pbkdf2 implements a modular crypt format for PBKDF2-SHA1, +// PBKDF2-SHA256 and PBKDF-SHA512. +// +// The format is the same as that used by Python's passlib and is compatible. +package pbkdf2 + +import ( + "crypto/rand" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw" + "hash" + "strings" +) + +// An implementation of Scheme implementing a number of PBKDF2 modular crypt +// formats used by Python's passlib ($pbkdf2$, $pbkdf2-sha256$, +// $pbkdf2-sha512$). +// +// Uses RecommendedRounds. +// +// WARNING: SHA1 should not be used for new applications under any +// circumstances. It should be used for legacy compatibility only. +var SHA1Crypter abstract.Scheme +var SHA256Crypter abstract.Scheme +var SHA512Crypter abstract.Scheme + +const ( + RecommendedRoundsSHA1 = 131000 + RecommendedRoundsSHA256 = 29000 + RecommendedRoundsSHA512 = 25000 +) + +const SaltLength = 16 + +func init() { + SHA1Crypter = New("$pbkdf2$", sha1.New, RecommendedRoundsSHA1) + SHA256Crypter = New("$pbkdf2-sha256$", sha256.New, RecommendedRoundsSHA256) + SHA512Crypter = New("$pbkdf2-sha512$", sha512.New, RecommendedRoundsSHA512) +} + +type scheme struct { + Ident string + HashFunc func() hash.Hash + Rounds int +} + +func New(ident string, hf func() hash.Hash, rounds int) abstract.Scheme { + return &scheme{ + Ident: ident, + HashFunc: hf, + Rounds: rounds, + } +} + +func (s *scheme) Hash(password string) (string, error) { + salt := make([]byte, SaltLength) + _, err := rand.Read(salt) + if err != nil { + return "", err + } + + hash := raw.Hash([]byte(password), salt, s.Rounds, s.HashFunc) + + newHash := fmt.Sprintf("%s%d$%s$%s", s.Ident, s.Rounds, raw.Base64Encode(salt), hash) + return newHash, nil +} + +func (s *scheme) Verify(password, stub string) (err error) { + _, rounds, salt, oldHash, err := raw.Parse(stub) + if err != nil { + return + } + + newHash := raw.Hash([]byte(password), salt, rounds, s.HashFunc) + + if len(newHash) == 0 || !abstract.SecureCompare(oldHash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (s *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, s.Ident) +} + +func (s *scheme) NeedsUpdate(stub string) bool { + _, rounds, salt, _, err := raw.Parse(stub) + return err == raw.ErrInvalidRounds || rounds < s.Rounds || len(salt) < SaltLength +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go new file mode 100644 index 0000000..ad57957 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go @@ -0,0 +1,20 @@ +package raw + +import ( + "encoding/base64" + "strings" +) + +var b64 = base64.RawStdEncoding + +func Base64Encode(src []byte) (dst string) { + dst = b64.EncodeToString(src) + dst = strings.Replace(dst, "+", ".", -1) + return +} + +func Base64Decode(src string) (dst []byte, err error) { + src = strings.Replace(src, ".", "+", -1) + dst, err = b64.DecodeString(src) + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go new file mode 100644 index 0000000..54f7108 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go @@ -0,0 +1,62 @@ +package raw + +import ( + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "hash" + "strconv" + "strings" +) + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid stub") + +// Indicates that the number of rounds specified is not in the valid range. +var ErrInvalidRounds = fmt.Errorf("invalid number of rounds") + +var hashMap = map[string]func() hash.Hash{ + "pbkdf2": sha1.New, + "pbkdf2-sha256": sha256.New, + "pbkdf2-sha512": sha512.New, +} + +func Parse(stub string) (hashFunc func() hash.Hash, rounds int, salt []byte, hash string, err error) { + // does not start with $pbkdf2 + if !strings.HasPrefix(stub, "$pbkdf2") { + err = ErrInvalidStub + return + } + + parts := strings.Split(stub, "$") + if f, ok := hashMap[parts[1]]; ok { + hashFunc = f + } else { + err = ErrInvalidStub + return + } + + roundsStr := parts[2] + var n uint64 + n, err = strconv.ParseUint(roundsStr, 10, 31) + if err != nil { + err = ErrInvalidStub + return + } + rounds = int(n) + + if rounds < MinRounds || rounds > MaxRounds { + err = ErrInvalidRounds + return + } + + salt, err = Base64Decode(parts[3]) + if err != nil { + err = fmt.Errorf("could not decode base64 salt") + return + } + hash = parts[4] + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go new file mode 100644 index 0000000..5b3299f --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go @@ -0,0 +1,15 @@ +package raw + +import ( + "golang.org/x/crypto/pbkdf2" + "hash" +) + +const ( + MinRounds = 1 + MaxRounds = 0xffffffff // setting at 32-bit limit for now +) + +func Hash(password, salt []byte, rounds int, hf func() hash.Hash) (hash string) { + return Base64Encode(pbkdf2.Key(password, salt, rounds, hf().Size(), hf)) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py new file mode 100644 index 0000000..f851848 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +import passlib.hash +import base64 +def f(p): + h = passlib.hash.pbkdf2_sha256.hash(p) + print(' {"%s", "%s"},' % (p,h)) + +f('') +f('a') +f('ab') +f('abc') +f('abcd') +f('abcde') +f('abcdef') +f('abcdefg') +f('abcdefgh') +f('abcdefghi') +f('abcdefghij') +f('abcdefghijk') +f('abcdefghijkl') +f('abcdefghijklm') +f('abcdefghijklmn') +f('abcdefghijklmno') +f('abcdefghijklmnop') +f('qrstuvwxyz012345') +f('67890./') +f('ABCDEFGHIJKLMNOP') +f('QRSTUVWXYZ012345') +for i in range(70): + f(('password'*10)[0:i]) diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go new file mode 100644 index 0000000..d2718b2 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go @@ -0,0 +1,95 @@ +// Package raw provides a raw implementation of the modular-crypt-wrapped scrypt primitive. +package raw + +import "golang.org/x/crypto/scrypt" +import "encoding/base64" +import "strings" +import "strconv" +import "fmt" + +// The current recommended N value for interactive logins. +const RecommendedN = 16384 + +// The current recommended r value for interactive logins. +const Recommendedr = 8 + +// The current recommended p value for interactive logins. +const Recommendedp = 1 + +// Wrapper for golang.org/x/crypto/scrypt implementing a sensible +// modular crypt interface. +// +// password should be a UTF-8 plaintext password. +// salt should be a random salt value in binary form. +// +// N, r and p are parameters to scrypt. +// +// Returns a modular crypt hash. +func ScryptSHA256(password string, salt []byte, N, r, p int) string { + passwordb := []byte(password) + + hash, err := scrypt.Key(passwordb, salt, N, r, p, 32) + if err != nil { + panic(err) + } + + hstr := base64.StdEncoding.EncodeToString(hash) + sstr := base64.StdEncoding.EncodeToString(salt) + + return fmt.Sprintf("$s2$%d$%d$%d$%s$%s", N, r, p, sstr, hstr) +} + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid scrypt password stub") + +// Parses an scrypt modular hash or stub string. +// +// The format is as follows: +// +// $s2$N$r$p$salt$hash // hash +// $s2$N$r$p$salt // stub +// +func Parse(stub string) (salt, hash []byte, N, r, p int, err error) { + if len(stub) < 10 || !strings.HasPrefix(stub, "$s2$") { + err = ErrInvalidStub + return + } + + // $s2$ N$r$p$salt-base64$hash-base64 + parts := strings.Split(stub[4:], "$") + + if len(parts) < 4 { + err = ErrInvalidStub + return + } + + var Ni, ri, pi uint64 + + Ni, err = strconv.ParseUint(parts[0], 10, 31) + if err != nil { + return + } + + ri, err = strconv.ParseUint(parts[1], 10, 31) + if err != nil { + return + } + + pi, err = strconv.ParseUint(parts[2], 10, 31) + if err != nil { + return + } + + N, r, p = int(Ni), int(ri), int(pi) + + salt, err = base64.StdEncoding.DecodeString(parts[3]) + if err != nil { + return + } + + if len(parts) >= 5 { + hash, err = base64.StdEncoding.DecodeString(parts[4]) + } + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go new file mode 100644 index 0000000..039182c --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go @@ -0,0 +1,113 @@ +// Package scrypt implements the scrypt password hashing mechanism, wrapped in +// the modular crypt format. +package scrypt + +import "fmt" +import "expvar" +import "strings" +import "crypto/rand" +import "encoding/base64" +import "gopkg.in/hlandau/passlib.v1/hash/scrypt/raw" +import "gopkg.in/hlandau/passlib.v1/abstract" + +var cScryptSHA256HashCalls = expvar.NewInt("passlib.scryptsha256.hashCalls") +var cScryptSHA256VerifyCalls = expvar.NewInt("passlib.scryptsha256.verifyCalls") + +// An implementation of Scheme performing scrypt-sha256. +// +// Uses the recommended values for N,r,p defined in raw. +var SHA256Crypter abstract.Scheme + +func init() { + SHA256Crypter = NewSHA256( + raw.RecommendedN, + raw.Recommendedr, + raw.Recommendedp, + ) +} + +// Returns an implementation of Scheme implementing scrypt-sha256 +// with the specified parameters. +func NewSHA256(N, r, p int) abstract.Scheme { + return &scryptSHA256Crypter{ + nN: N, + r: r, + p: p, + } +} + +type scryptSHA256Crypter struct { + nN, r, p int +} + +func (c *scryptSHA256Crypter) SetParams(N, r, p int) error { + c.nN = N + c.r = r + c.p = p + return nil +} + +func (c *scryptSHA256Crypter) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$s2$") +} + +func (c *scryptSHA256Crypter) Hash(password string) (string, error) { + cScryptSHA256HashCalls.Add(1) + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *scryptSHA256Crypter) Verify(password, hash string) (err error) { + cScryptSHA256VerifyCalls.Add(1) + + _, newHash, _, _, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *scryptSHA256Crypter) NeedsUpdate(stub string) bool { + salt, _, N, r, p, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, N, r, p) +} + +func (c *scryptSHA256Crypter) needsUpdate(salt []byte, N, r, p int) bool { + return len(salt) < 18 || N < c.nN || r < c.r || p < c.p +} + +func (c *scryptSHA256Crypter) hash(password, stub string) (oldHashRaw []byte, newHash string, salt []byte, N, r, p int, err error) { + salt, oldHashRaw, N, r, p, err = raw.Parse(stub) + if err != nil { + return + } + + return oldHashRaw, raw.ScryptSHA256(password, salt, N, r, p), salt, N, r, p, nil +} + +func (c *scryptSHA256Crypter) makeStub() (string, error) { + buf := make([]byte, 18) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := base64.StdEncoding.EncodeToString(buf) + + return fmt.Sprintf("$s2$%d$%d$%d$%s", c.nN, c.r, c.p, salt), nil +} + +func (c *scryptSHA256Crypter) String() string { + return fmt.Sprintf("scrypt-sha256(%d,%d,%d)", c.nN, c.r, c.p) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go new file mode 100644 index 0000000..2f96e6e --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go @@ -0,0 +1,34 @@ +package raw + +const bmap = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + +// Encodes a byte string using the sha2-crypt base64 variant. +func EncodeBase64(b []byte) string { + o := make([]byte, len(b)/3*4+4) + + for i, j := 0, 0; i < len(b); { + b1 := b[i] + b2 := byte(0) + b3 := byte(0) + + if (i + 1) < len(b) { + b2 = b[i+1] + } + if (i + 2) < len(b) { + b3 = b[i+2] + } + + o[j] = bmap[(b1 & 0x3F)] + o[j+1] = bmap[((b1&0xC0)>>6)|((b2&0x0F)<<2)] + o[j+2] = bmap[((b2&0xF0)>>4)|((b3&0x03)<<4)] + o[j+3] = bmap[(b3&0xFC)>>2] + i += 3 + j += 4 + } + + s := string(o) + return s[0 : len(b)*4/3-(len(b)%4)+1] +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go new file mode 100644 index 0000000..9e1fcfc --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go @@ -0,0 +1,82 @@ +package raw + +import "fmt" +import "strings" +import "strconv" + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid stub") + +// Indicates that the number of rounds specified is not in the valid range. +var ErrInvalidRounds = fmt.Errorf("invalid number of rounds") + +// Scans a sha256-crypt or sha512-crypt modular crypt stub or modular crypt hash +// to determine configuration parameters. +func Parse(stub string) (isSHA512 bool, salt, hash string, rounds int, err error) { + // $5$ + if len(stub) < 3 || stub[0] != '$' || stub[2] != '$' { + err = ErrInvalidStub + return + } + + if stub[1] == '6' { + isSHA512 = true + } else if stub[1] != '5' { + err = ErrInvalidStub + return + } + + rest := stub[3:] + parts := strings.Split(rest, "$") + roundsStr := "" + + switch len(parts) { + case 1: + // $5$ + // $5$salt + salt = parts[0] + case 2: + // $5$salt$hash + // $5$rounds=1000$salt + if strings.HasPrefix(parts[0], "rounds=") { + roundsStr = parts[0] + salt = parts[1] + } else { + salt = parts[0] + hash = parts[1] + } + case 3: + // $5$rounds=1000$salt$hash + roundsStr = parts[0] + salt = parts[1] + hash = parts[2] + default: + err = ErrInvalidStub + } + + if roundsStr != "" { + if !strings.HasPrefix(roundsStr, "rounds=") { + err = ErrInvalidStub + return + } + + roundsStr = roundsStr[7:] + var n uint64 + n, err = strconv.ParseUint(roundsStr, 10, 31) + if err != nil { + err = ErrInvalidStub + return + } + + rounds = int(n) + + if rounds < MinimumRounds || rounds > MaximumRounds { + err = ErrInvalidRounds + return + } + } else { + rounds = DefaultRounds + } + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go new file mode 100644 index 0000000..4b256fd --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go @@ -0,0 +1,187 @@ +// Package raw provides a raw implementation of the sha256-crypt and sha512-crypt primitives. +package raw + +import "io" +import "fmt" +import "hash" +import "crypto/sha256" +import "crypto/sha512" + +// The minimum number of rounds permissible for sha256-crypt and sha512-crypt. +const MinimumRounds = 1000 + +// The maximum number of rounds permissible for sha256-crypt and sha512-crypt. +// Don't use this! +const MaximumRounds = 999999999 + +// This is the 'default' number of rounds for sha256-crypt and sha512-crypt. If +// this rounds value is used the number of rounds is not explicitly specified +// in the modular crypt format, as it is the default. +const DefaultRounds = 5000 + +// This is the recommended number of rounds for sha256-crypt and sha512-crypt. +// This may change with subsequent releases of this package. It is recommended +// that you invoke sha256-crypt or sha512-crypt with this value, or a value +// proportional to it. +const RecommendedRounds = 10000 + +// Calculates sha256-crypt. The password must be in plaintext and be a UTF-8 +// string. +// +// The salt must be a valid ASCII between 0 and 16 characters in length +// inclusive. +// +// See the constants in this package for suggested values for rounds. +// +// Rounds must be in the range 1000 <= rounds <= 999999999. The function panics +// if this is not the case. +// +// The output is in modular crypt format. +func Crypt256(password, salt string, rounds int) string { + return "$5" + shaCrypt(password, salt, rounds, sha256.New, transpose256) +} + +// Calculates sha256-crypt. The password must be in plaintext and be a UTF-8 +// string. +// +// The salt must be a valid ASCII between 0 and 16 characters in length +// inclusive. +// +// See the constants in this package for suggested values for rounds. +// +// Rounds must be in the range 1000 <= rounds <= 999999999. The function panics +// if this is not the case. +// +// The output is in modular crypt format. +func Crypt512(password, salt string, rounds int) string { + return "$6" + shaCrypt(password, salt, rounds, sha512.New, transpose512) +} + +func shaCrypt(password, salt string, rounds int, newHash func() hash.Hash, transpose func(b []byte)) string { + if rounds < MinimumRounds || rounds > MaximumRounds { + panic("sha256-crypt rounds must be in 1000 <= rounds <= 999999999") + } + + passwordb := []byte(password) + saltb := []byte(salt) + if len(saltb) > 16 { + panic("salt must not exceed 16 bytes") + } + + // B + b := newHash() + b.Write(passwordb) + b.Write(saltb) + b.Write(passwordb) + bsum := b.Sum(nil) + + // A + a := newHash() + a.Write(passwordb) + a.Write(saltb) + repeat(a, bsum, len(passwordb)) + + plen := len(passwordb) + for plen != 0 { + if (plen & 1) != 0 { + a.Write(bsum) + } else { + a.Write(passwordb) + } + plen = plen >> 1 + } + + asum := a.Sum(nil) + + // DP + dp := newHash() + for i := 0; i < len(passwordb); i++ { + dp.Write(passwordb) + } + + dpsum := dp.Sum(nil) + + // P + p := make([]byte, len(passwordb)) + repeatTo(p, dpsum) + + // DS + ds := newHash() + for i := 0; i < (16 + int(asum[0])); i++ { + ds.Write(saltb) + } + + dssum := ds.Sum(nil)[0:len(saltb)] + + // S + s := make([]byte, len(saltb)) + repeatTo(s, dssum) + + // C + cur := asum[:] + for i := 0; i < rounds; i++ { + c := newHash() + if (i & 1) != 0 { + c.Write(p) + } else { + c.Write(cur) + } + if (i % 3) != 0 { + c.Write(s) + } + if (i % 7) != 0 { + c.Write(p) + } + if (i & 1) == 0 { + c.Write(p) + } else { + c.Write(cur) + } + cur = c.Sum(nil)[:] + } + + // Transposition + transpose(cur) + + // Hash + hstr := EncodeBase64(cur) + + if rounds == DefaultRounds { + return fmt.Sprintf("$%s$%s", salt, hstr) + } + + return fmt.Sprintf("$rounds=%d$%s$%s", rounds, salt, hstr) +} + +func repeat(w io.Writer, b []byte, sz int) { + var i int + for i = 0; (i + len(b)) <= sz; i += len(b) { + w.Write(b) + } + w.Write(b[0 : sz-i]) +} + +func repeatTo(out []byte, b []byte) { + if len(b) == 0 { + return + } + + var i int + for i = 0; (i + len(b)) <= len(out); i += len(b) { + copy(out[i:], b) + } + copy(out[i:], b) +} + +func transpose256(b []byte) { + b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30], b[31] = + b[20], b[10], b[0], b[11], b[1], b[21], b[2], b[22], b[12], b[23], b[13], b[3], b[14], b[4], b[24], b[5], b[25], b[15], b[26], b[16], b[6], b[17], b[7], b[27], b[8], b[28], b[18], b[29], b[19], b[9], b[30], b[31] +} + +func transpose512(b []byte) { + b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30], b[31], b[32], b[33], b[34], b[35], b[36], b[37], b[38], b[39], b[40], b[41], b[42], b[43], b[44], b[45], b[46], b[47], b[48], b[49], b[50], b[51], b[52], b[53], b[54], b[55], b[56], b[57], b[58], b[59], b[60], b[61], b[62], b[63] = + b[42], b[21], b[0], b[1], b[43], b[22], b[23], b[2], b[44], b[45], b[24], b[3], b[4], b[46], b[25], b[26], b[5], b[47], b[48], b[27], b[6], b[7], b[49], b[28], b[29], b[8], b[50], b[51], b[30], b[9], b[10], b[52], b[31], b[32], b[11], b[53], b[54], b[33], b[12], b[13], b[55], b[34], b[35], b[14], b[56], b[57], b[36], b[15], b[16], b[58], b[37], b[38], b[17], b[59], b[60], b[39], b[18], b[19], b[61], b[40], b[41], b[20], b[62], b[63] +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go new file mode 100644 index 0000000..c936469 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go @@ -0,0 +1,147 @@ +// Package sha2crypt implements sha256-crypt and sha512-crypt. +package sha2crypt + +import "fmt" +import "expvar" +import "crypto/rand" +import "gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw" +import "gopkg.in/hlandau/passlib.v1/abstract" + +var cSHA2CryptHashCalls = expvar.NewInt("passlib.sha2crypt.hashCalls") +var cSHA2CryptVerifyCalls = expvar.NewInt("passlib.sha2crypt.verifyCalls") + +// An implementation of Scheme performing sha256-crypt. +// +// The number of rounds is raw.RecommendedRounds. +var Crypter256 abstract.Scheme + +// An implementation of Scheme performing sha512-crypt. +// +// The number of rounds is raw.RecommendedRounds. +var Crypter512 abstract.Scheme + +func init() { + Crypter256 = NewCrypter256(raw.RecommendedRounds) + Crypter512 = NewCrypter512(raw.RecommendedRounds) +} + +// Returns a Scheme implementing sha256-crypt using the number of rounds +// specified. +func NewCrypter256(rounds int) abstract.Scheme { + return &sha2Crypter{false, rounds} +} + +// Returns a Scheme implementing sha512-crypt using the number of rounds +// specified. +func NewCrypter512(rounds int) abstract.Scheme { + return &sha2Crypter{true, rounds} +} + +type sha2Crypter struct { + sha512 bool + rounds int +} + +// Changes the default rounds for the crypter. Be warned that this +// is a global setting. The default default value is RecommendedRounds. +func (c *sha2Crypter) SetRounds(rounds int) error { + if rounds < raw.MinimumRounds || rounds > raw.MaximumRounds { + return raw.ErrInvalidRounds + } + + c.rounds = rounds + return nil +} + +func (c *sha2Crypter) SupportsStub(stub string) bool { + if len(stub) < 3 || stub[0] != '$' || stub[2] != '$' { + return false + } + return (stub[1] == '5' && !c.sha512) || (stub[1] == '6' && c.sha512) +} + +func (c *sha2Crypter) Hash(password string) (string, error) { + cSHA2CryptHashCalls.Add(1) + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *sha2Crypter) Verify(password, hash string) (err error) { + cSHA2CryptVerifyCalls.Add(1) + + _, newHash, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *sha2Crypter) NeedsUpdate(stub string) bool { + _, salt, _, rounds, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, rounds) +} + +func (c *sha2Crypter) needsUpdate(salt string, rounds int) bool { + return rounds < c.rounds || len(salt) < 16 +} + +var errInvalidStub = fmt.Errorf("invalid sha2 password stub") + +func (c *sha2Crypter) hash(password, stub string) (oldHash, newHash, salt string, rounds int, err error) { + isSHA512, salt, oldHash, rounds, err := raw.Parse(stub) + if err != nil { + return "", "", "", 0, err + } + + if isSHA512 != c.sha512 { + return "", "", "", 0, errInvalidStub + } + + if c.sha512 { + return oldHash, raw.Crypt512(password, salt, rounds), salt, rounds, nil + } + + return oldHash, raw.Crypt256(password, salt, rounds), salt, rounds, nil +} + +func (c *sha2Crypter) makeStub() (string, error) { + ch := "5" + if c.sha512 { + ch = "6" + } + + buf := make([]byte, 12) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := raw.EncodeBase64(buf)[0:16] + + if c.rounds == raw.DefaultRounds { + return fmt.Sprintf("$%s$%s", ch, salt), nil + } + + return fmt.Sprintf("$%s$rounds=%d$%s", ch, c.rounds, salt), nil +} + +func (c *sha2Crypter) String() string { + if c.sha512 { + return fmt.Sprintf("sha512-crypt(%d)", c.rounds) + } else { + return fmt.Sprintf("sha256-crypt(%d)", c.rounds) + } +} + +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/passlib.go b/vendor/gopkg.in/hlandau/passlib.v1/passlib.go new file mode 100644 index 0000000..0d13c75 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/passlib.go @@ -0,0 +1,174 @@ +// Package passlib provides a simple password hashing and verification +// interface abstracting multiple password hashing schemes. +// +// After initialisation, most people need concern themselves only with the +// functions Hash and Verify, which uses the default context and sensible +// defaults. +// +// Library Initialization +// +// You should initialise the library before using it with the following line. +// +// // Call this at application startup. +// passlib.UseDefaults(passlib.Defaults20180601) +// +// See func UseDefaults for details. +package passlib // import "gopkg.in/hlandau/passlib.v1" + +import ( + "gopkg.in/hlandau/easymetric.v1/cexp" + "gopkg.in/hlandau/passlib.v1/abstract" +) + +var cHashCalls = cexp.NewCounter("passlib.ctx.hashCalls") +var cVerifyCalls = cexp.NewCounter("passlib.ctx.verifyCalls") +var cSuccessfulVerifyCalls = cexp.NewCounter("passlib.ctx.successfulVerifyCalls") +var cFailedVerifyCalls = cexp.NewCounter("passlib.ctx.failedVerifyCalls") +var cSuccessfulVerifyCallsWithUpgrade = cexp.NewCounter("passlib.ctx.successfulVerifyCallsWithUpgrade") +var cSuccessfulVerifyCallsDeferringUpgrade = cexp.NewCounter("passlib.ctx.successfulVerifyCallsDeferringUpgrade") + +// A password hashing context, that uses a given set of schemes to hash and +// verify passwords. +type Context struct { + // Slice of schemes to use, most preferred first. + // + // If left uninitialized, a sensible default set of schemes will be used. + // + // An upgrade hash (see the newHash return value of the Verify method of the + // abstract.Scheme interface) will be issued whenever a password is validated + // using a scheme which is not the first scheme in this slice. + Schemes []abstract.Scheme +} + +func (ctx *Context) schemes() []abstract.Scheme { + if ctx.Schemes == nil { + return DefaultSchemes + } + + return ctx.Schemes +} + +// Hashes a UTF-8 plaintext password using the context and produces a password hash. +// +// If stub is "", one is generated automaticaly for the preferred password hashing +// scheme; you should specify stub as "" in almost all cases. +// +// The provided or randomly generated stub is used to deterministically hash +// the password. The returned hash is in modular crypt format. +// +// If the context has not been specifically configured, a sensible default policy +// is used. See the fields of Context. +func (ctx *Context) Hash(password string) (hash string, err error) { + cHashCalls.Add(1) + + return ctx.schemes()[0].Hash(password) +} + +// Verifies a UTF-8 plaintext password using a previously derived password hash +// and the default context. Returns nil err only if the password is valid. +// +// If the hash is determined to be deprecated based on the context policy, and +// the password is valid, the password is hashed using the preferred password +// hashing scheme and returned in newHash. You should use this to upgrade any +// stored password hash in your database. +// +// newHash is empty if the password was not valid or if no upgrade is required. +// +// You should treat any non-nil err as a password verification error. +func (ctx *Context) Verify(password, hash string) (newHash string, err error) { + return ctx.verify(password, hash, true) +} + +// Like Verify, but does not hash an upgrade password when upgrade is required. +func (ctx *Context) VerifyNoUpgrade(password, hash string) error { + _, err := ctx.verify(password, hash, false) + return err +} + +func (ctx *Context) verify(password, hash string, canUpgrade bool) (newHash string, err error) { + cVerifyCalls.Add(1) + + for i, scheme := range ctx.schemes() { + if !scheme.SupportsStub(hash) { + continue + } + + err = scheme.Verify(password, hash) + if err != nil { + cFailedVerifyCalls.Add(1) + return "", err + } + + cSuccessfulVerifyCalls.Add(1) + if i != 0 || scheme.NeedsUpdate(hash) { + if canUpgrade { + cSuccessfulVerifyCallsWithUpgrade.Add(1) + + // If the scheme is not the first scheme, try and rehash with the + // preferred scheme. + if newHash, err2 := ctx.Hash(password); err2 == nil { + return newHash, nil + } + } else { + cSuccessfulVerifyCallsDeferringUpgrade.Add(1) + } + } + + return "", nil + } + + return "", abstract.ErrUnsupportedScheme +} + +// Determines whether a stub or hash needs updating according to the policy of +// the context. +func (ctx *Context) NeedsUpdate(stub string) bool { + for i, scheme := range ctx.schemes() { + if scheme.SupportsStub(stub) { + return i != 0 || scheme.NeedsUpdate(stub) + } + } + + return false +} + +// The default context, which uses sensible defaults. Most users should not +// reconfigure this. The defaults may change over time, so you may wish +// to reconfigure the context or use a custom context if you want precise +// control over the hashes used. +var DefaultContext Context + +// Hashes a UTF-8 plaintext password using the default context and produces a +// password hash. Chooses the preferred password hashing scheme based on the +// configured policy. The default policy is sensible. +func Hash(password string) (hash string, err error) { + return DefaultContext.Hash(password) +} + +// Verifies a UTF-8 plaintext password using a previously derived password hash +// and the default context. Returns nil err only if the password is valid. +// +// If the hash is determined to be deprecated based on policy, and the password +// is valid, the password is hashed using the preferred password hashing scheme +// and returned in newHash. You should use this to upgrade any stored password +// hash in your database. +// +// newHash is empty if the password was invalid or no upgrade is required. +// +// You should treat any non-nil err as a password verification error. +func Verify(password, hash string) (newHash string, err error) { + return DefaultContext.Verify(password, hash) +} + +// Like Verify, but never upgrades. +func VerifyNoUpgrade(password, hash string) error { + return DefaultContext.VerifyNoUpgrade(password, hash) +} + +// Uses the default context to determine whether a stub or hash needs updating. +func NeedsUpdate(stub string) bool { + return DefaultContext.NeedsUpdate(stub) +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/modules.txt b/vendor/modules.txt new file mode 100644 index 0000000..af44b05 --- /dev/null +++ b/vendor/modules.txt @@ -0,0 +1,78 @@ +# blitter.com/go/cryptmt v1.0.0 +blitter.com/go/cryptmt +# blitter.com/go/goutmp v1.0.1 +blitter.com/go/goutmp +# blitter.com/go/herradurakex v1.0.0 +blitter.com/go/herradurakex +# blitter.com/go/mtwist v1.0.1 +blitter.com/go/mtwist +# blitter.com/go/wanderer v0.8.1 +blitter.com/go/wanderer +# git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 +git.schwanenlied.me/yawning/chacha20.git +# git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c +git.schwanenlied.me/yawning/kyber.git +# git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 +git.schwanenlied.me/yawning/newhope.git +# github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f +github.com/jameskeane/bcrypt +# github.com/klauspost/cpuid v1.2.2 +github.com/klauspost/cpuid +# github.com/klauspost/reedsolomon v1.9.3 +github.com/klauspost/reedsolomon +# github.com/kr/pty v1.1.4 +github.com/kr/pty +# github.com/mattn/go-isatty v0.0.7 +github.com/mattn/go-isatty +# github.com/pkg/errors v0.8.1 +github.com/pkg/errors +# github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 +github.com/templexxx/cpufeat +# github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b +github.com/templexxx/xor +# github.com/tjfoc/gmsm v1.0.1 +github.com/tjfoc/gmsm/sm4 +# github.com/xtaci/kcp-go v5.4.19+incompatible +github.com/xtaci/kcp-go +# golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af +golang.org/x/crypto/blowfish +golang.org/x/crypto/pbkdf2 +golang.org/x/crypto/twofish +golang.org/x/crypto/sha3 +golang.org/x/crypto/cast5 +golang.org/x/crypto/salsa20 +golang.org/x/crypto/tea +golang.org/x/crypto/xtea +golang.org/x/crypto/argon2 +golang.org/x/crypto/bcrypt +golang.org/x/crypto/internal/subtle +golang.org/x/crypto/salsa20/salsa +golang.org/x/crypto/blake2b +golang.org/x/crypto/scrypt +# golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 +golang.org/x/net/ipv4 +golang.org/x/net/ipv6 +golang.org/x/net/bpf +golang.org/x/net/internal/iana +golang.org/x/net/internal/socket +# golang.org/x/sys v0.0.0-20190416152802-12500544f89f +golang.org/x/sys/unix +golang.org/x/sys/windows +golang.org/x/sys/cpu +# gopkg.in/hlandau/easymetric.v1 v1.0.0 +gopkg.in/hlandau/easymetric.v1/cexp +# gopkg.in/hlandau/measurable.v1 v1.0.1 +gopkg.in/hlandau/measurable.v1 +# gopkg.in/hlandau/passlib.v1 v1.0.10 +gopkg.in/hlandau/passlib.v1 +gopkg.in/hlandau/passlib.v1/abstract +gopkg.in/hlandau/passlib.v1/hash/argon2 +gopkg.in/hlandau/passlib.v1/hash/bcrypt +gopkg.in/hlandau/passlib.v1/hash/bcryptsha256 +gopkg.in/hlandau/passlib.v1/hash/pbkdf2 +gopkg.in/hlandau/passlib.v1/hash/scrypt +gopkg.in/hlandau/passlib.v1/hash/sha2crypt +gopkg.in/hlandau/passlib.v1/hash/argon2/raw +gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw +gopkg.in/hlandau/passlib.v1/hash/scrypt/raw +gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw From d6cd51c79f9b39dbafed1350f3b4eadea828699e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 29 Jan 2020 15:57:43 -0800 Subject: [PATCH 055/134] Moved body of CI push script into project from bacillus --- bacillus/pushbuild.sh | 74 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 bacillus/pushbuild.sh diff --git a/bacillus/pushbuild.sh b/bacillus/pushbuild.sh new file mode 100755 index 0000000..bdadbc1 --- /dev/null +++ b/bacillus/pushbuild.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +export PATH=/usr/local/bin:/usr/bin:/usr/lib/ccache/bin:/bin +echo "workdir: ${BACILLUS_WORKDIR}" +mkdir -p "${BACILLUS_ARTFDIR}" + +export GO111MODULE=on +export GOPATH="${HOME}/go" +# GOCACHE will be phased out in v1.12. [github.com/golang/go/issues/26809] +export GOCACHE="${HOME}/.cache/go-build" + +echo "---" +go env +echo "---" +echo "passed env:" +env +echo "---" + +cd ${REPO} +branch=$(git for-each-ref --sort=-committerdate --format='%(refname)' | head -n 1) +echo "Building most recent push on branch $branch" +git checkout "$branch" +ls + +stage "Build" +make all + +stage "Test(Authtoken)" +echo "Clearing test user $USER ~/.xs_id file ..." +rm -f ~/.xs_id +echo "Setting dummy authtoken in ~/.xs_id ..." +echo "localhost:asdfasdfasdf" >~/.xs_id +echo "Performing remote command on @localhost via authtoken login ..." +tokentest=$(timeout 10 xs -x "echo -n FOO" @localhost) +if [ "${tokentest}" != "FOO" ]; then + echo "AUTHTOKEN LOGIN FAILED" + exit 1 +else + echo "client cmd performed OK." + unset tokentest +fi + +stage "Test(S->C)" +echo "Testing secure copy from server -> client ..." +tmpdir=$$ +mkdir -p /tmp/$tmpdir +cd /tmp/$tmpdir +xc @localhost:${BACILLUS_WORKDIR}/build/xs/cptest . +echo -n "Integrity check on copied files (sha1sum) ..." +sha1sum $(find cptest -type f | sort) >sc.sha1sum +diff sc.sha1sum ${BACILLUS_WORKDIR}/build/xs/cptest.sha1sum +stat=$? + +cd - +rm -rf /tmp/$tmpdir +if [ $stat -eq "0" ]; then + echo "OK." +else + echo "FAILED!" + exit $stat +fi + +stage "Test(C->S)" +echo "TODO ..." + +stage "Artifacts" +echo -n "Creating tarfile ..." +tar -cz --exclude=.git --exclude=cptest -f ${BACILLUS_ARTFDIR}/xs.tgz . + +stage "Cleanup" +rm -f ~/.xs_id + +echo +echo "--Done--" From e55b5602300fdc8d4e06befa962df96cd5035cf7 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 29 Jan 2020 16:33:12 -0800 Subject: [PATCH 056/134] Introduced bacillus ci_pushbuild script --- Makefile | 2 +- bacillus/{pushbuild.sh => ci_pushbuild.sh} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename bacillus/{pushbuild.sh => ci_pushbuild.sh} (100%) diff --git a/Makefile b/Makefile index a10c759..034f101 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.11 +VERSION := 0.8.12 ifneq ($(VENDOR),) GOBUILDOPTS :=-v -mod vendor diff --git a/bacillus/pushbuild.sh b/bacillus/ci_pushbuild.sh similarity index 100% rename from bacillus/pushbuild.sh rename to bacillus/ci_pushbuild.sh From f5be3578a899e01ebe1b9adef0ccde93f5879a33 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 29 Jan 2020 13:25:14 -0800 Subject: [PATCH 057/134] 1/3 Updated Makefile to allow VENDOR flag (adds -vendor to version string) 2/3 Added vendor/ dir to lock down dependent pkg versions. The author of git.schwanenlied.me/yawning/{chacha20,newhope,kyber}.git has copied their repos to gitlab.com/yawning/ but some imports of chacha20 from newhope still inconsistently refer to git.schwanenlied.me/, breaking build. Licenses for chacha20 also changed from CC0 to AGPL, which may or may not be an issue. Until the two aforementioned issues are resolved, locking to last-good versions is probably the best way forward for now. To build with vendored deps, use make VENDOR=1 clean all 3/3 Moved body of CI push script into bacillus/ --- Makefile | 15 +- bacillus/ci_pushbuild.sh | 74 + go.mod | 2 + go.sum | 21 +- vendor/blitter.com/go/cryptmt/README.md | 6 + vendor/blitter.com/go/cryptmt/cryptmt.go | 60 + vendor/blitter.com/go/goutmp/LICENSE.mit | 21 + vendor/blitter.com/go/goutmp/README.md | 17 + vendor/blitter.com/go/goutmp/goutmp.go | 130 + .../blitter.com/go/herradurakex/LICENSE.gpl | 674 ++ .../blitter.com/go/herradurakex/LICENSE.mit | 22 + vendor/blitter.com/go/herradurakex/Makefile | 17 + vendor/blitter.com/go/herradurakex/README.md | 1 + .../go/herradurakex/herradurakex.go | 182 + vendor/blitter.com/go/mtwist/mtwist.go | 125 + vendor/blitter.com/go/wanderer/wanderer.go | 210 + .../yawning/chacha20.git/LICENSE | 122 + .../yawning/chacha20.git/README.md | 14 + .../yawning/chacha20.git/chacha20.go | 273 + .../yawning/chacha20.git/chacha20_amd64.go | 95 + .../yawning/chacha20.git/chacha20_amd64.py | 1295 ++++ .../yawning/chacha20.git/chacha20_amd64.s | 1180 +++ .../yawning/chacha20.git/chacha20_ref.go | 394 + .../yawning/chacha20.git/chacha20_ref_go19.go | 395 + .../yawning/kyber.git/.gitignore | 2 + .../yawning/kyber.git/LICENSE | 122 + .../yawning/kyber.git/README.md | 24 + .../yawning/kyber.git/cbd.go | 100 + .../yawning/kyber.git/doc.go | 27 + .../yawning/kyber.git/hwaccel.go | 46 + .../yawning/kyber.git/hwaccel_amd64.go | 256 + .../yawning/kyber.git/hwaccel_amd64.s | 2749 +++++++ .../yawning/kyber.git/hwaccel_ref.go | 14 + .../yawning/kyber.git/indcpa.go | 279 + .../yawning/kyber.git/kem.go | 187 + .../yawning/kyber.git/kex.go | 249 + .../yawning/kyber.git/ntt.go | 65 + .../yawning/kyber.git/params.go | 116 + .../yawning/kyber.git/poly.go | 146 + .../yawning/kyber.git/polyvec.go | 115 + .../yawning/kyber.git/precomp.go | 87 + .../yawning/kyber.git/reduce.go | 43 + .../yawning/newhope.git/LICENSE | 122 + .../yawning/newhope.git/batcher.go | 929 +++ .../yawning/newhope.git/error_correction.go | 135 + .../yawning/newhope.git/newhope.go | 220 + .../yawning/newhope.git/newhope_simple.go | 166 + .../yawning/newhope.git/ntt.go | 131 + .../yawning/newhope.git/params.go | 17 + .../yawning/newhope.git/poly.go | 212 + .../yawning/newhope.git/poly_simple.go | 99 + .../yawning/newhope.git/precomp.go | 287 + .../yawning/newhope.git/reduce.go | 32 + .../github.com/jameskeane/bcrypt/.gitignore | 5 + vendor/github.com/jameskeane/bcrypt/LICENSE | 29 + vendor/github.com/jameskeane/bcrypt/README | 46 + vendor/github.com/jameskeane/bcrypt/bcrypt.go | 190 + vendor/github.com/jameskeane/bcrypt/cipher.go | 415 + vendor/github.com/klauspost/cpuid/.gitignore | 24 + vendor/github.com/klauspost/cpuid/.travis.yml | 23 + .../klauspost/cpuid/CONTRIBUTING.txt | 35 + vendor/github.com/klauspost/cpuid/LICENSE | 22 + vendor/github.com/klauspost/cpuid/README.md | 148 + vendor/github.com/klauspost/cpuid/cpuid.go | 1069 +++ vendor/github.com/klauspost/cpuid/cpuid_386.s | 42 + .../github.com/klauspost/cpuid/cpuid_amd64.s | 42 + .../klauspost/cpuid/detect_intel.go | 17 + .../github.com/klauspost/cpuid/detect_ref.go | 23 + vendor/github.com/klauspost/cpuid/generate.go | 4 + .../github.com/klauspost/cpuid/private-gen.go | 476 ++ .../klauspost/reedsolomon/.gitignore | 26 + .../klauspost/reedsolomon/.travis.yml | 32 + .../github.com/klauspost/reedsolomon/LICENSE | 23 + .../klauspost/reedsolomon/README.md | 321 + .../klauspost/reedsolomon/appveyor.yml | 20 + .../klauspost/reedsolomon/galois.go | 905 +++ .../reedsolomon/galoisAvx512_amd64.go | 188 + .../reedsolomon/galoisAvx512_amd64.s | 590 ++ .../klauspost/reedsolomon/galois_amd64.go | 92 + .../klauspost/reedsolomon/galois_amd64.s | 236 + .../klauspost/reedsolomon/galois_arm64.go | 52 + .../klauspost/reedsolomon/galois_arm64.s | 141 + .../klauspost/reedsolomon/galois_noasm.go | 34 + .../klauspost/reedsolomon/galois_ppc64le.go | 70 + .../klauspost/reedsolomon/galois_ppc64le.s | 126 + .../klauspost/reedsolomon/gentables.go | 132 + .../klauspost/reedsolomon/inversion_tree.go | 160 + .../klauspost/reedsolomon/matrix.go | 279 + .../klauspost/reedsolomon/options.go | 118 + .../klauspost/reedsolomon/reedsolomon.go | 900 +++ .../klauspost/reedsolomon/streaming.go | 582 ++ vendor/github.com/kr/pty/.gitignore | 4 + vendor/github.com/kr/pty/License | 23 + vendor/github.com/kr/pty/README.md | 100 + vendor/github.com/kr/pty/doc.go | 16 + vendor/github.com/kr/pty/go.mod | 1 + vendor/github.com/kr/pty/ioctl.go | 13 + vendor/github.com/kr/pty/ioctl_bsd.go | 39 + vendor/github.com/kr/pty/mktypes.bash | 19 + vendor/github.com/kr/pty/pty_darwin.go | 65 + vendor/github.com/kr/pty/pty_dragonfly.go | 80 + vendor/github.com/kr/pty/pty_freebsd.go | 78 + vendor/github.com/kr/pty/pty_linux.go | 51 + vendor/github.com/kr/pty/pty_openbsd.go | 33 + vendor/github.com/kr/pty/pty_unsupported.go | 11 + vendor/github.com/kr/pty/run.go | 56 + vendor/github.com/kr/pty/types.go | 10 + vendor/github.com/kr/pty/types_dragonfly.go | 17 + vendor/github.com/kr/pty/types_freebsd.go | 15 + vendor/github.com/kr/pty/types_openbsd.go | 14 + vendor/github.com/kr/pty/util.go | 64 + vendor/github.com/kr/pty/ztypes_386.go | 9 + vendor/github.com/kr/pty/ztypes_amd64.go | 9 + vendor/github.com/kr/pty/ztypes_arm.go | 9 + vendor/github.com/kr/pty/ztypes_arm64.go | 11 + .../kr/pty/ztypes_dragonfly_amd64.go | 14 + .../github.com/kr/pty/ztypes_freebsd_386.go | 13 + .../github.com/kr/pty/ztypes_freebsd_amd64.go | 14 + .../github.com/kr/pty/ztypes_freebsd_arm.go | 13 + vendor/github.com/kr/pty/ztypes_mipsx.go | 12 + .../github.com/kr/pty/ztypes_openbsd_386.go | 13 + .../github.com/kr/pty/ztypes_openbsd_amd64.go | 13 + vendor/github.com/kr/pty/ztypes_ppc64.go | 11 + vendor/github.com/kr/pty/ztypes_ppc64le.go | 11 + vendor/github.com/kr/pty/ztypes_s390x.go | 11 + vendor/github.com/mattn/go-isatty/.travis.yml | 13 + vendor/github.com/mattn/go-isatty/LICENSE | 9 + vendor/github.com/mattn/go-isatty/README.md | 50 + vendor/github.com/mattn/go-isatty/doc.go | 2 + vendor/github.com/mattn/go-isatty/go.mod | 3 + vendor/github.com/mattn/go-isatty/go.sum | 2 + .../mattn/go-isatty/isatty_android.go | 23 + .../github.com/mattn/go-isatty/isatty_bsd.go | 24 + .../mattn/go-isatty/isatty_linux.go | 19 + .../mattn/go-isatty/isatty_others.go | 15 + .../mattn/go-isatty/isatty_solaris.go | 22 + .../mattn/go-isatty/isatty_windows.go | 94 + vendor/github.com/pkg/errors/.gitignore | 24 + vendor/github.com/pkg/errors/.travis.yml | 15 + vendor/github.com/pkg/errors/LICENSE | 23 + vendor/github.com/pkg/errors/README.md | 52 + vendor/github.com/pkg/errors/appveyor.yml | 32 + vendor/github.com/pkg/errors/errors.go | 282 + vendor/github.com/pkg/errors/stack.go | 147 + .../github.com/templexxx/cpufeat/.gitignore | 15 + vendor/github.com/templexxx/cpufeat/LICENSE | 27 + vendor/github.com/templexxx/cpufeat/README.md | 1 + vendor/github.com/templexxx/cpufeat/cpu.go | 33 + .../github.com/templexxx/cpufeat/cpu_arm.go | 7 + .../github.com/templexxx/cpufeat/cpu_arm64.go | 7 + .../github.com/templexxx/cpufeat/cpu_mips.go | 7 + .../templexxx/cpufeat/cpu_mips64.go | 7 + .../templexxx/cpufeat/cpu_mips64le.go | 7 + .../templexxx/cpufeat/cpu_mipsle.go | 7 + .../github.com/templexxx/cpufeat/cpu_ppc64.go | 7 + .../templexxx/cpufeat/cpu_ppc64le.go | 7 + .../github.com/templexxx/cpufeat/cpu_s390x.go | 7 + .../github.com/templexxx/cpufeat/cpu_x86.go | 70 + vendor/github.com/templexxx/cpufeat/cpu_x86.s | 32 + .../github.com/templexxx/xor/.gitattributes | 1 + vendor/github.com/templexxx/xor/.gitignore | 18 + vendor/github.com/templexxx/xor/LICENSE | 21 + vendor/github.com/templexxx/xor/README.md | 50 + vendor/github.com/templexxx/xor/avx2_amd64.s | 438 ++ vendor/github.com/templexxx/xor/nosimd.go | 116 + vendor/github.com/templexxx/xor/sse2_amd64.s | 574 ++ vendor/github.com/templexxx/xor/xor.go | 49 + vendor/github.com/templexxx/xor/xor_amd64.go | 120 + vendor/github.com/templexxx/xor/xor_other.go | 19 + vendor/github.com/tjfoc/gmsm/LICENSE | 201 + vendor/github.com/tjfoc/gmsm/sm4/sm4.go | 342 + vendor/github.com/xtaci/kcp-go/.gitignore | 24 + vendor/github.com/xtaci/kcp-go/.travis.yml | 17 + vendor/github.com/xtaci/kcp-go/LICENSE | 22 + vendor/github.com/xtaci/kcp-go/README.md | 229 + vendor/github.com/xtaci/kcp-go/batchconn.go | 12 + vendor/github.com/xtaci/kcp-go/crypt.go | 785 ++ vendor/github.com/xtaci/kcp-go/donate.png | Bin 0 -> 4420 bytes vendor/github.com/xtaci/kcp-go/entropy.go | 52 + vendor/github.com/xtaci/kcp-go/fec.go | 337 + vendor/github.com/xtaci/kcp-go/flame.png | Bin 0 -> 57142 bytes vendor/github.com/xtaci/kcp-go/frame.png | Bin 0 -> 36006 bytes vendor/github.com/xtaci/kcp-go/kcp-go.png | Bin 0 -> 9153 bytes vendor/github.com/xtaci/kcp-go/kcp.go | 1069 +++ vendor/github.com/xtaci/kcp-go/readloop.go | 48 + .../xtaci/kcp-go/readloop_generic.go | 11 + .../github.com/xtaci/kcp-go/readloop_linux.go | 120 + vendor/github.com/xtaci/kcp-go/sess.go | 1047 +++ vendor/github.com/xtaci/kcp-go/snmp.go | 164 + vendor/github.com/xtaci/kcp-go/tx.go | 24 + vendor/github.com/xtaci/kcp-go/tx_generic.go | 11 + vendor/github.com/xtaci/kcp-go/tx_linux.go | 51 + .../github.com/xtaci/kcp-go/wechat_donate.jpg | Bin 0 -> 35307 bytes vendor/golang.org/x/crypto/AUTHORS | 3 + vendor/golang.org/x/crypto/CONTRIBUTORS | 3 + vendor/golang.org/x/crypto/LICENSE | 27 + vendor/golang.org/x/crypto/PATENTS | 22 + vendor/golang.org/x/crypto/argon2/argon2.go | 285 + vendor/golang.org/x/crypto/argon2/blake2b.go | 53 + .../x/crypto/argon2/blamka_amd64.go | 60 + .../golang.org/x/crypto/argon2/blamka_amd64.s | 243 + .../x/crypto/argon2/blamka_generic.go | 163 + .../golang.org/x/crypto/argon2/blamka_ref.go | 15 + vendor/golang.org/x/crypto/bcrypt/base64.go | 35 + vendor/golang.org/x/crypto/bcrypt/bcrypt.go | 295 + vendor/golang.org/x/crypto/blake2b/blake2b.go | 289 + .../x/crypto/blake2b/blake2bAVX2_amd64.go | 37 + .../x/crypto/blake2b/blake2bAVX2_amd64.s | 750 ++ .../x/crypto/blake2b/blake2b_amd64.go | 24 + .../x/crypto/blake2b/blake2b_amd64.s | 281 + .../x/crypto/blake2b/blake2b_generic.go | 179 + .../x/crypto/blake2b/blake2b_ref.go | 11 + vendor/golang.org/x/crypto/blake2b/blake2x.go | 177 + .../golang.org/x/crypto/blake2b/register.go | 32 + vendor/golang.org/x/crypto/blowfish/block.go | 159 + vendor/golang.org/x/crypto/blowfish/cipher.go | 99 + vendor/golang.org/x/crypto/blowfish/const.go | 199 + vendor/golang.org/x/crypto/cast5/cast5.go | 533 ++ .../x/crypto/internal/subtle/aliasing.go | 32 + .../internal/subtle/aliasing_appengine.go | 35 + vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go | 77 + .../x/crypto/salsa20/salsa/hsalsa20.go | 144 + .../x/crypto/salsa20/salsa/salsa208.go | 199 + .../x/crypto/salsa20/salsa/salsa20_amd64.go | 23 + .../x/crypto/salsa20/salsa/salsa20_amd64.s | 883 +++ .../x/crypto/salsa20/salsa/salsa20_noasm.go | 14 + .../x/crypto/salsa20/salsa/salsa20_ref.go | 231 + vendor/golang.org/x/crypto/salsa20/salsa20.go | 58 + vendor/golang.org/x/crypto/scrypt/scrypt.go | 244 + vendor/golang.org/x/crypto/sha3/doc.go | 66 + vendor/golang.org/x/crypto/sha3/hashes.go | 97 + .../x/crypto/sha3/hashes_generic.go | 27 + vendor/golang.org/x/crypto/sha3/keccakf.go | 412 + .../golang.org/x/crypto/sha3/keccakf_amd64.go | 13 + .../golang.org/x/crypto/sha3/keccakf_amd64.s | 390 + vendor/golang.org/x/crypto/sha3/register.go | 18 + vendor/golang.org/x/crypto/sha3/sha3.go | 192 + vendor/golang.org/x/crypto/sha3/sha3_s390x.go | 284 + vendor/golang.org/x/crypto/sha3/sha3_s390x.s | 33 + vendor/golang.org/x/crypto/sha3/shake.go | 173 + .../golang.org/x/crypto/sha3/shake_generic.go | 19 + vendor/golang.org/x/crypto/sha3/xor.go | 16 + .../golang.org/x/crypto/sha3/xor_generic.go | 28 + .../golang.org/x/crypto/sha3/xor_unaligned.go | 58 + vendor/golang.org/x/crypto/tea/cipher.go | 116 + vendor/golang.org/x/crypto/twofish/twofish.go | 348 + vendor/golang.org/x/crypto/xtea/block.go | 66 + vendor/golang.org/x/crypto/xtea/cipher.go | 90 + vendor/golang.org/x/net/AUTHORS | 3 + vendor/golang.org/x/net/CONTRIBUTORS | 3 + vendor/golang.org/x/net/LICENSE | 27 + vendor/golang.org/x/net/PATENTS | 22 + vendor/golang.org/x/net/bpf/asm.go | 41 + vendor/golang.org/x/net/bpf/constants.go | 222 + vendor/golang.org/x/net/bpf/doc.go | 82 + vendor/golang.org/x/net/bpf/instructions.go | 726 ++ vendor/golang.org/x/net/bpf/setter.go | 10 + vendor/golang.org/x/net/bpf/vm.go | 150 + .../golang.org/x/net/bpf/vm_instructions.go | 182 + .../golang.org/x/net/internal/iana/const.go | 223 + vendor/golang.org/x/net/internal/iana/gen.go | 383 + .../x/net/internal/socket/cmsghdr.go | 11 + .../x/net/internal/socket/cmsghdr_bsd.go | 13 + .../internal/socket/cmsghdr_linux_32bit.go | 14 + .../internal/socket/cmsghdr_linux_64bit.go | 14 + .../internal/socket/cmsghdr_solaris_64bit.go | 14 + .../x/net/internal/socket/cmsghdr_stub.go | 17 + .../x/net/internal/socket/defs_aix.go | 38 + .../x/net/internal/socket/defs_darwin.go | 36 + .../x/net/internal/socket/defs_dragonfly.go | 36 + .../x/net/internal/socket/defs_freebsd.go | 36 + .../x/net/internal/socket/defs_linux.go | 40 + .../x/net/internal/socket/defs_netbsd.go | 38 + .../x/net/internal/socket/defs_openbsd.go | 36 + .../x/net/internal/socket/defs_solaris.go | 36 + .../golang.org/x/net/internal/socket/empty.s | 7 + .../x/net/internal/socket/error_unix.go | 31 + .../x/net/internal/socket/error_windows.go | 26 + .../x/net/internal/socket/iovec_32bit.go | 19 + .../x/net/internal/socket/iovec_64bit.go | 19 + .../internal/socket/iovec_solaris_64bit.go | 19 + .../x/net/internal/socket/iovec_stub.go | 11 + .../x/net/internal/socket/mmsghdr_stub.go | 21 + .../x/net/internal/socket/mmsghdr_unix.go | 42 + .../x/net/internal/socket/msghdr_bsd.go | 39 + .../x/net/internal/socket/msghdr_bsdvar.go | 16 + .../x/net/internal/socket/msghdr_linux.go | 36 + .../net/internal/socket/msghdr_linux_32bit.go | 24 + .../net/internal/socket/msghdr_linux_64bit.go | 24 + .../x/net/internal/socket/msghdr_openbsd.go | 14 + .../internal/socket/msghdr_solaris_64bit.go | 36 + .../x/net/internal/socket/msghdr_stub.go | 14 + .../x/net/internal/socket/norace.go | 12 + .../golang.org/x/net/internal/socket/race.go | 37 + .../x/net/internal/socket/rawconn.go | 64 + .../x/net/internal/socket/rawconn_mmsg.go | 79 + .../x/net/internal/socket/rawconn_msg.go | 78 + .../x/net/internal/socket/rawconn_nommsg.go | 15 + .../x/net/internal/socket/rawconn_nomsg.go | 15 + .../x/net/internal/socket/socket.go | 288 + .../golang.org/x/net/internal/socket/sys.go | 33 + .../x/net/internal/socket/sys_bsd.go | 15 + .../x/net/internal/socket/sys_bsdvar.go | 23 + .../x/net/internal/socket/sys_const_unix.go | 17 + .../x/net/internal/socket/sys_darwin.go | 7 + .../x/net/internal/socket/sys_dragonfly.go | 32 + .../net/internal/socket/sys_go1_11_darwin.go | 33 + .../x/net/internal/socket/sys_linkname.go | 42 + .../x/net/internal/socket/sys_linux.go | 27 + .../x/net/internal/socket/sys_linux_386.go | 55 + .../x/net/internal/socket/sys_linux_386.s | 11 + .../x/net/internal/socket/sys_linux_amd64.go | 10 + .../x/net/internal/socket/sys_linux_arm.go | 10 + .../x/net/internal/socket/sys_linux_arm64.go | 10 + .../x/net/internal/socket/sys_linux_mips.go | 10 + .../x/net/internal/socket/sys_linux_mips64.go | 10 + .../net/internal/socket/sys_linux_mips64le.go | 10 + .../x/net/internal/socket/sys_linux_mipsle.go | 10 + .../x/net/internal/socket/sys_linux_ppc64.go | 10 + .../net/internal/socket/sys_linux_ppc64le.go | 10 + .../net/internal/socket/sys_linux_riscv64.go | 12 + .../x/net/internal/socket/sys_linux_s390x.go | 55 + .../x/net/internal/socket/sys_linux_s390x.s | 11 + .../x/net/internal/socket/sys_netbsd.go | 25 + .../x/net/internal/socket/sys_posix.go | 183 + .../x/net/internal/socket/sys_solaris.go | 70 + .../x/net/internal/socket/sys_solaris_amd64.s | 11 + .../x/net/internal/socket/sys_stub.go | 63 + .../x/net/internal/socket/sys_unix.go | 33 + .../x/net/internal/socket/sys_windows.go | 71 + .../x/net/internal/socket/zsys_aix_ppc64.go | 60 + .../x/net/internal/socket/zsys_darwin_386.go | 51 + .../net/internal/socket/zsys_darwin_amd64.go | 53 + .../x/net/internal/socket/zsys_darwin_arm.go | 51 + .../net/internal/socket/zsys_darwin_arm64.go | 53 + .../internal/socket/zsys_dragonfly_amd64.go | 53 + .../x/net/internal/socket/zsys_freebsd_386.go | 51 + .../net/internal/socket/zsys_freebsd_amd64.go | 53 + .../x/net/internal/socket/zsys_freebsd_arm.go | 51 + .../net/internal/socket/zsys_freebsd_arm64.go | 53 + .../x/net/internal/socket/zsys_linux_386.go | 54 + .../x/net/internal/socket/zsys_linux_amd64.go | 57 + .../x/net/internal/socket/zsys_linux_arm.go | 55 + .../x/net/internal/socket/zsys_linux_arm64.go | 58 + .../x/net/internal/socket/zsys_linux_mips.go | 55 + .../net/internal/socket/zsys_linux_mips64.go | 58 + .../internal/socket/zsys_linux_mips64le.go | 58 + .../net/internal/socket/zsys_linux_mipsle.go | 55 + .../x/net/internal/socket/zsys_linux_ppc64.go | 58 + .../net/internal/socket/zsys_linux_ppc64le.go | 58 + .../net/internal/socket/zsys_linux_riscv64.go | 59 + .../x/net/internal/socket/zsys_linux_s390x.go | 58 + .../x/net/internal/socket/zsys_netbsd_386.go | 57 + .../net/internal/socket/zsys_netbsd_amd64.go | 60 + .../x/net/internal/socket/zsys_netbsd_arm.go | 57 + .../net/internal/socket/zsys_netbsd_arm64.go | 59 + .../x/net/internal/socket/zsys_openbsd_386.go | 51 + .../net/internal/socket/zsys_openbsd_amd64.go | 53 + .../x/net/internal/socket/zsys_openbsd_arm.go | 51 + .../net/internal/socket/zsys_openbsd_arm64.go | 53 + .../net/internal/socket/zsys_solaris_amd64.go | 52 + vendor/golang.org/x/net/ipv4/batch.go | 194 + vendor/golang.org/x/net/ipv4/control.go | 144 + vendor/golang.org/x/net/ipv4/control_bsd.go | 41 + .../golang.org/x/net/ipv4/control_pktinfo.go | 39 + vendor/golang.org/x/net/ipv4/control_stub.go | 13 + vendor/golang.org/x/net/ipv4/control_unix.go | 73 + .../golang.org/x/net/ipv4/control_windows.go | 12 + vendor/golang.org/x/net/ipv4/defs_aix.go | 39 + vendor/golang.org/x/net/ipv4/defs_darwin.go | 77 + .../golang.org/x/net/ipv4/defs_dragonfly.go | 38 + vendor/golang.org/x/net/ipv4/defs_freebsd.go | 75 + vendor/golang.org/x/net/ipv4/defs_linux.go | 113 + vendor/golang.org/x/net/ipv4/defs_netbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_openbsd.go | 37 + vendor/golang.org/x/net/ipv4/defs_solaris.go | 84 + vendor/golang.org/x/net/ipv4/dgramopt.go | 264 + vendor/golang.org/x/net/ipv4/doc.go | 244 + vendor/golang.org/x/net/ipv4/endpoint.go | 186 + vendor/golang.org/x/net/ipv4/gen.go | 199 + vendor/golang.org/x/net/ipv4/genericopt.go | 55 + vendor/golang.org/x/net/ipv4/header.go | 173 + vendor/golang.org/x/net/ipv4/helper.go | 80 + vendor/golang.org/x/net/ipv4/iana.go | 38 + vendor/golang.org/x/net/ipv4/icmp.go | 57 + vendor/golang.org/x/net/ipv4/icmp_linux.go | 25 + vendor/golang.org/x/net/ipv4/icmp_stub.go | 25 + vendor/golang.org/x/net/ipv4/packet.go | 117 + vendor/golang.org/x/net/ipv4/payload.go | 23 + vendor/golang.org/x/net/ipv4/payload_cmsg.go | 84 + .../golang.org/x/net/ipv4/payload_nocmsg.go | 39 + vendor/golang.org/x/net/ipv4/sockopt.go | 44 + vendor/golang.org/x/net/ipv4/sockopt_posix.go | 71 + vendor/golang.org/x/net/ipv4/sockopt_stub.go | 42 + vendor/golang.org/x/net/ipv4/sys_aix.go | 38 + vendor/golang.org/x/net/ipv4/sys_asmreq.go | 119 + .../golang.org/x/net/ipv4/sys_asmreq_stub.go | 25 + vendor/golang.org/x/net/ipv4/sys_asmreqn.go | 42 + .../golang.org/x/net/ipv4/sys_asmreqn_stub.go | 21 + vendor/golang.org/x/net/ipv4/sys_bpf.go | 24 + vendor/golang.org/x/net/ipv4/sys_bpf_stub.go | 16 + vendor/golang.org/x/net/ipv4/sys_bsd.go | 37 + vendor/golang.org/x/net/ipv4/sys_darwin.go | 65 + vendor/golang.org/x/net/ipv4/sys_dragonfly.go | 35 + vendor/golang.org/x/net/ipv4/sys_freebsd.go | 76 + vendor/golang.org/x/net/ipv4/sys_linux.go | 60 + vendor/golang.org/x/net/ipv4/sys_solaris.go | 57 + vendor/golang.org/x/net/ipv4/sys_ssmreq.go | 52 + .../golang.org/x/net/ipv4/sys_ssmreq_stub.go | 21 + vendor/golang.org/x/net/ipv4/sys_stub.go | 13 + vendor/golang.org/x/net/ipv4/sys_windows.go | 67 + .../golang.org/x/net/ipv4/zsys_aix_ppc64.go | 33 + vendor/golang.org/x/net/ipv4/zsys_darwin.go | 99 + .../golang.org/x/net/ipv4/zsys_dragonfly.go | 31 + .../golang.org/x/net/ipv4/zsys_freebsd_386.go | 93 + .../x/net/ipv4/zsys_freebsd_amd64.go | 95 + .../golang.org/x/net/ipv4/zsys_freebsd_arm.go | 95 + .../x/net/ipv4/zsys_freebsd_arm64.go | 93 + .../golang.org/x/net/ipv4/zsys_linux_386.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_amd64.go | 132 + .../golang.org/x/net/ipv4/zsys_linux_arm.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_arm64.go | 132 + .../golang.org/x/net/ipv4/zsys_linux_mips.go | 130 + .../x/net/ipv4/zsys_linux_mips64.go | 132 + .../x/net/ipv4/zsys_linux_mips64le.go | 132 + .../x/net/ipv4/zsys_linux_mipsle.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_ppc.go | 130 + .../golang.org/x/net/ipv4/zsys_linux_ppc64.go | 132 + .../x/net/ipv4/zsys_linux_ppc64le.go | 132 + .../x/net/ipv4/zsys_linux_riscv64.go | 134 + .../golang.org/x/net/ipv4/zsys_linux_s390x.go | 132 + vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 30 + vendor/golang.org/x/net/ipv4/zsys_solaris.go | 100 + vendor/golang.org/x/net/ipv6/batch.go | 116 + vendor/golang.org/x/net/ipv6/control.go | 187 + .../x/net/ipv6/control_rfc2292_unix.go | 48 + .../x/net/ipv6/control_rfc3542_unix.go | 94 + vendor/golang.org/x/net/ipv6/control_stub.go | 13 + vendor/golang.org/x/net/ipv6/control_unix.go | 55 + .../golang.org/x/net/ipv6/control_windows.go | 12 + vendor/golang.org/x/net/ipv6/defs_aix.go | 82 + vendor/golang.org/x/net/ipv6/defs_darwin.go | 112 + .../golang.org/x/net/ipv6/defs_dragonfly.go | 82 + vendor/golang.org/x/net/ipv6/defs_freebsd.go | 105 + vendor/golang.org/x/net/ipv6/defs_linux.go | 138 + vendor/golang.org/x/net/ipv6/defs_netbsd.go | 80 + vendor/golang.org/x/net/ipv6/defs_openbsd.go | 89 + vendor/golang.org/x/net/ipv6/defs_solaris.go | 114 + vendor/golang.org/x/net/ipv6/dgramopt.go | 301 + vendor/golang.org/x/net/ipv6/doc.go | 243 + vendor/golang.org/x/net/ipv6/endpoint.go | 127 + vendor/golang.org/x/net/ipv6/gen.go | 199 + vendor/golang.org/x/net/ipv6/genericopt.go | 56 + vendor/golang.org/x/net/ipv6/header.go | 55 + vendor/golang.org/x/net/ipv6/helper.go | 59 + vendor/golang.org/x/net/ipv6/iana.go | 86 + vendor/golang.org/x/net/ipv6/icmp.go | 60 + vendor/golang.org/x/net/ipv6/icmp_bsd.go | 29 + vendor/golang.org/x/net/ipv6/icmp_linux.go | 27 + vendor/golang.org/x/net/ipv6/icmp_solaris.go | 27 + vendor/golang.org/x/net/ipv6/icmp_stub.go | 23 + vendor/golang.org/x/net/ipv6/icmp_windows.go | 22 + vendor/golang.org/x/net/ipv6/payload.go | 23 + vendor/golang.org/x/net/ipv6/payload_cmsg.go | 70 + .../golang.org/x/net/ipv6/payload_nocmsg.go | 38 + vendor/golang.org/x/net/ipv6/sockopt.go | 43 + vendor/golang.org/x/net/ipv6/sockopt_posix.go | 89 + vendor/golang.org/x/net/ipv6/sockopt_stub.go | 46 + vendor/golang.org/x/net/ipv6/sys_aix.go | 77 + vendor/golang.org/x/net/ipv6/sys_asmreq.go | 24 + .../golang.org/x/net/ipv6/sys_asmreq_stub.go | 17 + vendor/golang.org/x/net/ipv6/sys_bpf.go | 24 + vendor/golang.org/x/net/ipv6/sys_bpf_stub.go | 16 + vendor/golang.org/x/net/ipv6/sys_bsd.go | 57 + vendor/golang.org/x/net/ipv6/sys_darwin.go | 78 + vendor/golang.org/x/net/ipv6/sys_freebsd.go | 92 + vendor/golang.org/x/net/ipv6/sys_linux.go | 75 + vendor/golang.org/x/net/ipv6/sys_solaris.go | 74 + vendor/golang.org/x/net/ipv6/sys_ssmreq.go | 54 + .../golang.org/x/net/ipv6/sys_ssmreq_stub.go | 21 + vendor/golang.org/x/net/ipv6/sys_stub.go | 13 + vendor/golang.org/x/net/ipv6/sys_windows.go | 75 + .../golang.org/x/net/ipv6/zsys_aix_ppc64.go | 103 + vendor/golang.org/x/net/ipv6/zsys_darwin.go | 131 + .../golang.org/x/net/ipv6/zsys_dragonfly.go | 88 + .../golang.org/x/net/ipv6/zsys_freebsd_386.go | 122 + .../x/net/ipv6/zsys_freebsd_amd64.go | 124 + .../golang.org/x/net/ipv6/zsys_freebsd_arm.go | 124 + .../x/net/ipv6/zsys_freebsd_arm64.go | 122 + .../golang.org/x/net/ipv6/zsys_linux_386.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_amd64.go | 154 + .../golang.org/x/net/ipv6/zsys_linux_arm.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_arm64.go | 154 + .../golang.org/x/net/ipv6/zsys_linux_mips.go | 152 + .../x/net/ipv6/zsys_linux_mips64.go | 154 + .../x/net/ipv6/zsys_linux_mips64le.go | 154 + .../x/net/ipv6/zsys_linux_mipsle.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_ppc.go | 152 + .../golang.org/x/net/ipv6/zsys_linux_ppc64.go | 154 + .../x/net/ipv6/zsys_linux_ppc64le.go | 154 + .../x/net/ipv6/zsys_linux_riscv64.go | 156 + .../golang.org/x/net/ipv6/zsys_linux_s390x.go | 154 + vendor/golang.org/x/net/ipv6/zsys_netbsd.go | 84 + vendor/golang.org/x/net/ipv6/zsys_openbsd.go | 93 + vendor/golang.org/x/net/ipv6/zsys_solaris.go | 131 + vendor/golang.org/x/sys/AUTHORS | 3 + vendor/golang.org/x/sys/CONTRIBUTORS | 3 + vendor/golang.org/x/sys/LICENSE | 27 + vendor/golang.org/x/sys/PATENTS | 22 + vendor/golang.org/x/sys/cpu/byteorder.go | 30 + vendor/golang.org/x/sys/cpu/cpu.go | 126 + vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go | 30 + vendor/golang.org/x/sys/cpu/cpu_arm.go | 9 + vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go | 21 + vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 16 + vendor/golang.org/x/sys/cpu/cpu_gccgo.c | 43 + vendor/golang.org/x/sys/cpu/cpu_gccgo.go | 26 + .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 22 + vendor/golang.org/x/sys/cpu/cpu_linux.go | 59 + .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 67 + .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 33 + .../golang.org/x/sys/cpu/cpu_linux_s390x.go | 161 + vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 11 + vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 11 + .../golang.org/x/sys/cpu/cpu_other_arm64.go | 11 + vendor/golang.org/x/sys/cpu/cpu_s390x.s | 57 + vendor/golang.org/x/sys/cpu/cpu_wasm.go | 15 + vendor/golang.org/x/sys/cpu/cpu_x86.go | 59 + vendor/golang.org/x/sys/cpu/cpu_x86.s | 27 + vendor/golang.org/x/sys/unix/.gitignore | 2 + vendor/golang.org/x/sys/unix/README.md | 173 + .../golang.org/x/sys/unix/affinity_linux.go | 124 + vendor/golang.org/x/sys/unix/aliases.go | 14 + vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 17 + vendor/golang.org/x/sys/unix/asm_darwin_386.s | 29 + .../golang.org/x/sys/unix/asm_darwin_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_darwin_arm.s | 30 + .../golang.org/x/sys/unix/asm_darwin_arm64.s | 30 + .../x/sys/unix/asm_dragonfly_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_386.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_freebsd_arm64.s | 29 + vendor/golang.org/x/sys/unix/asm_linux_386.s | 65 + .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 + vendor/golang.org/x/sys/unix/asm_linux_arm.s | 56 + .../golang.org/x/sys/unix/asm_linux_arm64.s | 52 + .../golang.org/x/sys/unix/asm_linux_mips64x.s | 56 + .../golang.org/x/sys/unix/asm_linux_mipsx.s | 54 + .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 44 + .../golang.org/x/sys/unix/asm_linux_s390x.s | 56 + vendor/golang.org/x/sys/unix/asm_netbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_amd64.s | 29 + vendor/golang.org/x/sys/unix/asm_netbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_netbsd_arm64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_386.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_amd64.s | 29 + .../golang.org/x/sys/unix/asm_openbsd_arm.s | 29 + .../golang.org/x/sys/unix/asm_solaris_amd64.s | 17 + .../golang.org/x/sys/unix/bluetooth_linux.go | 35 + vendor/golang.org/x/sys/unix/cap_freebsd.go | 195 + vendor/golang.org/x/sys/unix/constants.go | 13 + vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 27 + vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 29 + vendor/golang.org/x/sys/unix/dev_darwin.go | 24 + vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 + vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 + vendor/golang.org/x/sys/unix/dev_linux.go | 42 + vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 + vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 + vendor/golang.org/x/sys/unix/dirent.go | 17 + vendor/golang.org/x/sys/unix/endian_big.go | 9 + vendor/golang.org/x/sys/unix/endian_little.go | 9 + vendor/golang.org/x/sys/unix/env_unix.go | 31 + .../x/sys/unix/errors_freebsd_386.go | 227 + .../x/sys/unix/errors_freebsd_amd64.go | 227 + .../x/sys/unix/errors_freebsd_arm.go | 226 + vendor/golang.org/x/sys/unix/fcntl.go | 32 + vendor/golang.org/x/sys/unix/fcntl_darwin.go | 18 + .../x/sys/unix/fcntl_linux_32bit.go | 13 + vendor/golang.org/x/sys/unix/gccgo.go | 62 + vendor/golang.org/x/sys/unix/gccgo_c.c | 39 + .../x/sys/unix/gccgo_linux_amd64.go | 20 + vendor/golang.org/x/sys/unix/ioctl.go | 30 + vendor/golang.org/x/sys/unix/mkall.sh | 212 + vendor/golang.org/x/sys/unix/mkasm_darwin.go | 61 + vendor/golang.org/x/sys/unix/mkerrors.sh | 659 ++ vendor/golang.org/x/sys/unix/mkpost.go | 106 + vendor/golang.org/x/sys/unix/mksyscall.go | 407 + .../x/sys/unix/mksyscall_aix_ppc.go | 404 + .../x/sys/unix/mksyscall_aix_ppc64.go | 602 ++ .../x/sys/unix/mksyscall_solaris.go | 335 + .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 265 + vendor/golang.org/x/sys/unix/mksysnum.go | 190 + .../golang.org/x/sys/unix/openbsd_pledge.go | 166 + .../golang.org/x/sys/unix/openbsd_unveil.go | 44 + vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 + vendor/golang.org/x/sys/unix/race.go | 30 + vendor/golang.org/x/sys/unix/race0.go | 25 + .../golang.org/x/sys/unix/sockcmsg_linux.go | 36 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 120 + vendor/golang.org/x/sys/unix/str.go | 26 + vendor/golang.org/x/sys/unix/syscall.go | 54 + vendor/golang.org/x/sys/unix/syscall_aix.go | 549 ++ .../golang.org/x/sys/unix/syscall_aix_ppc.go | 34 + .../x/sys/unix/syscall_aix_ppc64.go | 34 + vendor/golang.org/x/sys/unix/syscall_bsd.go | 624 ++ .../golang.org/x/sys/unix/syscall_darwin.go | 706 ++ .../x/sys/unix/syscall_darwin_386.go | 63 + .../x/sys/unix/syscall_darwin_amd64.go | 63 + .../x/sys/unix/syscall_darwin_arm.go | 64 + .../x/sys/unix/syscall_darwin_arm64.go | 66 + .../x/sys/unix/syscall_darwin_libSystem.go | 31 + .../x/sys/unix/syscall_dragonfly.go | 539 ++ .../x/sys/unix/syscall_dragonfly_amd64.go | 52 + .../golang.org/x/sys/unix/syscall_freebsd.go | 824 ++ .../x/sys/unix/syscall_freebsd_386.go | 52 + .../x/sys/unix/syscall_freebsd_amd64.go | 52 + .../x/sys/unix/syscall_freebsd_arm.go | 52 + .../x/sys/unix/syscall_freebsd_arm64.go | 52 + vendor/golang.org/x/sys/unix/syscall_linux.go | 1771 +++++ .../x/sys/unix/syscall_linux_386.go | 386 + .../x/sys/unix/syscall_linux_amd64.go | 190 + .../x/sys/unix/syscall_linux_amd64_gc.go | 13 + .../x/sys/unix/syscall_linux_arm.go | 274 + .../x/sys/unix/syscall_linux_arm64.go | 223 + .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 + .../x/sys/unix/syscall_linux_gc_386.go | 16 + .../x/sys/unix/syscall_linux_gccgo_386.go | 30 + .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 + .../x/sys/unix/syscall_linux_mips64x.go | 222 + .../x/sys/unix/syscall_linux_mipsx.go | 234 + .../x/sys/unix/syscall_linux_ppc64x.go | 152 + .../x/sys/unix/syscall_linux_riscv64.go | 226 + .../x/sys/unix/syscall_linux_s390x.go | 338 + .../x/sys/unix/syscall_linux_sparc64.go | 147 + .../golang.org/x/sys/unix/syscall_netbsd.go | 622 ++ .../x/sys/unix/syscall_netbsd_386.go | 33 + .../x/sys/unix/syscall_netbsd_amd64.go | 33 + .../x/sys/unix/syscall_netbsd_arm.go | 33 + .../x/sys/unix/syscall_netbsd_arm64.go | 33 + .../golang.org/x/sys/unix/syscall_openbsd.go | 416 + .../x/sys/unix/syscall_openbsd_386.go | 37 + .../x/sys/unix/syscall_openbsd_amd64.go | 37 + .../x/sys/unix/syscall_openbsd_arm.go | 37 + .../golang.org/x/sys/unix/syscall_solaris.go | 737 ++ .../x/sys/unix/syscall_solaris_amd64.go | 23 + vendor/golang.org/x/sys/unix/syscall_unix.go | 431 ++ .../golang.org/x/sys/unix/syscall_unix_gc.go | 15 + .../x/sys/unix/syscall_unix_gc_ppc64x.go | 24 + vendor/golang.org/x/sys/unix/timestruct.go | 82 + vendor/golang.org/x/sys/unix/types_aix.go | 236 + vendor/golang.org/x/sys/unix/types_darwin.go | 283 + .../golang.org/x/sys/unix/types_dragonfly.go | 263 + vendor/golang.org/x/sys/unix/types_freebsd.go | 356 + vendor/golang.org/x/sys/unix/types_netbsd.go | 289 + vendor/golang.org/x/sys/unix/types_openbsd.go | 282 + vendor/golang.org/x/sys/unix/types_solaris.go | 266 + vendor/golang.org/x/sys/unix/xattr_bsd.go | 240 + .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1372 ++++ .../x/sys/unix/zerrors_aix_ppc64.go | 1373 ++++ .../x/sys/unix/zerrors_darwin_386.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_amd64.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_arm.go | 1783 +++++ .../x/sys/unix/zerrors_darwin_arm64.go | 1783 +++++ .../x/sys/unix/zerrors_dragonfly_amd64.go | 1650 ++++ .../x/sys/unix/zerrors_freebsd_386.go | 1793 +++++ .../x/sys/unix/zerrors_freebsd_amd64.go | 1794 +++++ .../x/sys/unix/zerrors_freebsd_arm.go | 1802 +++++ .../x/sys/unix/zerrors_freebsd_arm64.go | 1794 +++++ .../x/sys/unix/zerrors_linux_386.go | 2835 +++++++ .../x/sys/unix/zerrors_linux_amd64.go | 2835 +++++++ .../x/sys/unix/zerrors_linux_arm.go | 2841 +++++++ .../x/sys/unix/zerrors_linux_arm64.go | 2826 +++++++ .../x/sys/unix/zerrors_linux_mips.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mips64.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mips64le.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_mipsle.go | 2842 +++++++ .../x/sys/unix/zerrors_linux_ppc64.go | 2897 +++++++ .../x/sys/unix/zerrors_linux_ppc64le.go | 2897 +++++++ .../x/sys/unix/zerrors_linux_riscv64.go | 2822 +++++++ .../x/sys/unix/zerrors_linux_s390x.go | 2895 +++++++ .../x/sys/unix/zerrors_linux_sparc64.go | 2891 +++++++ .../x/sys/unix/zerrors_netbsd_386.go | 1772 +++++ .../x/sys/unix/zerrors_netbsd_amd64.go | 1762 +++++ .../x/sys/unix/zerrors_netbsd_arm.go | 1751 +++++ .../x/sys/unix/zerrors_netbsd_arm64.go | 1762 +++++ .../x/sys/unix/zerrors_openbsd_386.go | 1654 ++++ .../x/sys/unix/zerrors_openbsd_amd64.go | 1765 +++++ .../x/sys/unix/zerrors_openbsd_arm.go | 1656 ++++ .../x/sys/unix/zerrors_solaris_amd64.go | 1532 ++++ .../golang.org/x/sys/unix/zptrace386_linux.go | 80 + .../golang.org/x/sys/unix/zptracearm_linux.go | 41 + .../x/sys/unix/zptracemips_linux.go | 50 + .../x/sys/unix/zptracemipsle_linux.go | 50 + .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1450 ++++ .../x/sys/unix/zsyscall_aix_ppc64.go | 1416 ++++ .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1172 +++ .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1051 +++ .../x/sys/unix/zsyscall_darwin_386.1_11.go | 1810 +++++ .../x/sys/unix/zsyscall_darwin_386.go | 2505 ++++++ .../x/sys/unix/zsyscall_darwin_386.s | 284 + .../x/sys/unix/zsyscall_darwin_amd64.1_11.go | 1810 +++++ .../x/sys/unix/zsyscall_darwin_amd64.go | 2520 ++++++ .../x/sys/unix/zsyscall_darwin_amd64.s | 286 + .../x/sys/unix/zsyscall_darwin_arm.1_11.go | 1793 +++++ .../x/sys/unix/zsyscall_darwin_arm.go | 2483 ++++++ .../x/sys/unix/zsyscall_darwin_arm.s | 282 + .../x/sys/unix/zsyscall_darwin_arm64.1_11.go | 1793 +++++ .../x/sys/unix/zsyscall_darwin_arm64.go | 2483 ++++++ .../x/sys/unix/zsyscall_darwin_arm64.s | 282 + .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1659 ++++ .../x/sys/unix/zsyscall_freebsd_386.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_amd64.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_arm.go | 2015 +++++ .../x/sys/unix/zsyscall_freebsd_arm64.go | 2015 +++++ .../x/sys/unix/zsyscall_linux_386.go | 2220 ++++++ .../x/sys/unix/zsyscall_linux_amd64.go | 2387 ++++++ .../x/sys/unix/zsyscall_linux_arm.go | 2342 ++++++ .../x/sys/unix/zsyscall_linux_arm64.go | 2244 ++++++ .../x/sys/unix/zsyscall_linux_mips.go | 2400 ++++++ .../x/sys/unix/zsyscall_linux_mips64.go | 2371 ++++++ .../x/sys/unix/zsyscall_linux_mips64le.go | 2371 ++++++ .../x/sys/unix/zsyscall_linux_mipsle.go | 2400 ++++++ .../x/sys/unix/zsyscall_linux_ppc64.go | 2449 ++++++ .../x/sys/unix/zsyscall_linux_ppc64le.go | 2449 ++++++ .../x/sys/unix/zsyscall_linux_riscv64.go | 2224 ++++++ .../x/sys/unix/zsyscall_linux_s390x.go | 2219 ++++++ .../x/sys/unix/zsyscall_linux_sparc64.go | 2382 ++++++ .../x/sys/unix/zsyscall_netbsd_386.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_amd64.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_arm.go | 1826 +++++ .../x/sys/unix/zsyscall_netbsd_arm64.go | 1826 +++++ .../x/sys/unix/zsyscall_openbsd_386.go | 1692 ++++ .../x/sys/unix/zsyscall_openbsd_amd64.go | 1692 ++++ .../x/sys/unix/zsyscall_openbsd_arm.go | 1692 ++++ .../x/sys/unix/zsyscall_solaris_amd64.go | 1953 +++++ .../x/sys/unix/zsysctl_openbsd_386.go | 270 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 270 + .../x/sys/unix/zsysctl_openbsd_arm.go | 270 + .../x/sys/unix/zsysnum_darwin_386.go | 436 ++ .../x/sys/unix/zsysnum_darwin_amd64.go | 438 ++ .../x/sys/unix/zsysnum_darwin_arm.go | 436 ++ .../x/sys/unix/zsysnum_darwin_arm64.go | 436 ++ .../x/sys/unix/zsysnum_dragonfly_amd64.go | 315 + .../x/sys/unix/zsysnum_freebsd_386.go | 403 + .../x/sys/unix/zsysnum_freebsd_amd64.go | 403 + .../x/sys/unix/zsysnum_freebsd_arm.go | 403 + .../x/sys/unix/zsysnum_freebsd_arm64.go | 395 + .../x/sys/unix/zsysnum_linux_386.go | 392 + .../x/sys/unix/zsysnum_linux_amd64.go | 344 + .../x/sys/unix/zsysnum_linux_arm.go | 364 + .../x/sys/unix/zsysnum_linux_arm64.go | 289 + .../x/sys/unix/zsysnum_linux_mips.go | 377 + .../x/sys/unix/zsysnum_linux_mips64.go | 337 + .../x/sys/unix/zsysnum_linux_mips64le.go | 337 + .../x/sys/unix/zsysnum_linux_mipsle.go | 377 + .../x/sys/unix/zsysnum_linux_ppc64.go | 375 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 375 + .../x/sys/unix/zsysnum_linux_riscv64.go | 288 + .../x/sys/unix/zsysnum_linux_s390x.go | 337 + .../x/sys/unix/zsysnum_linux_sparc64.go | 351 + .../x/sys/unix/zsysnum_netbsd_386.go | 274 + .../x/sys/unix/zsysnum_netbsd_amd64.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm.go | 274 + .../x/sys/unix/zsysnum_netbsd_arm64.go | 274 + .../x/sys/unix/zsysnum_openbsd_386.go | 218 + .../x/sys/unix/zsysnum_openbsd_amd64.go | 218 + .../x/sys/unix/zsysnum_openbsd_arm.go | 218 + .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 345 + .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 354 + .../x/sys/unix/ztypes_darwin_386.go | 499 ++ .../x/sys/unix/ztypes_darwin_amd64.go | 509 ++ .../x/sys/unix/ztypes_darwin_arm.go | 500 ++ .../x/sys/unix/ztypes_darwin_arm64.go | 509 ++ .../x/sys/unix/ztypes_dragonfly_amd64.go | 469 ++ .../x/sys/unix/ztypes_freebsd_386.go | 603 ++ .../x/sys/unix/ztypes_freebsd_amd64.go | 602 ++ .../x/sys/unix/ztypes_freebsd_arm.go | 602 ++ .../x/sys/unix/ztypes_freebsd_arm64.go | 602 ++ .../golang.org/x/sys/unix/ztypes_linux_386.go | 2135 +++++ .../x/sys/unix/ztypes_linux_amd64.go | 2148 ++++++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2126 +++++ .../x/sys/unix/ztypes_linux_arm64.go | 2127 +++++ .../x/sys/unix/ztypes_linux_mips.go | 2132 +++++ .../x/sys/unix/ztypes_linux_mips64.go | 2129 +++++ .../x/sys/unix/ztypes_linux_mips64le.go | 2129 +++++ .../x/sys/unix/ztypes_linux_mipsle.go | 2132 +++++ .../x/sys/unix/ztypes_linux_ppc64.go | 2137 +++++ .../x/sys/unix/ztypes_linux_ppc64le.go | 2137 +++++ .../x/sys/unix/ztypes_linux_riscv64.go | 2154 ++++++ .../x/sys/unix/ztypes_linux_s390x.go | 2151 ++++++ .../x/sys/unix/ztypes_linux_sparc64.go | 2132 +++++ .../x/sys/unix/ztypes_netbsd_386.go | 465 ++ .../x/sys/unix/ztypes_netbsd_amd64.go | 472 ++ .../x/sys/unix/ztypes_netbsd_arm.go | 470 ++ .../x/sys/unix/ztypes_netbsd_arm64.go | 472 ++ .../x/sys/unix/ztypes_openbsd_386.go | 570 ++ .../x/sys/unix/ztypes_openbsd_amd64.go | 570 ++ .../x/sys/unix/ztypes_openbsd_arm.go | 571 ++ .../x/sys/unix/ztypes_solaris_amd64.go | 442 ++ vendor/golang.org/x/sys/windows/aliases.go | 13 + .../x/sys/windows/asm_windows_386.s | 13 + .../x/sys/windows/asm_windows_amd64.s | 13 + .../x/sys/windows/asm_windows_arm.s | 11 + .../golang.org/x/sys/windows/dll_windows.go | 378 + .../golang.org/x/sys/windows/env_windows.go | 29 + vendor/golang.org/x/sys/windows/eventlog.go | 20 + .../golang.org/x/sys/windows/exec_windows.go | 97 + .../x/sys/windows/memory_windows.go | 26 + vendor/golang.org/x/sys/windows/mkerrors.bash | 64 + vendor/golang.org/x/sys/windows/mkerrors.go | 7 + vendor/golang.org/x/sys/windows/mksyscall.go | 7 + vendor/golang.org/x/sys/windows/race.go | 30 + vendor/golang.org/x/sys/windows/race0.go | 25 + .../x/sys/windows/security_windows.go | 649 ++ vendor/golang.org/x/sys/windows/service.go | 181 + vendor/golang.org/x/sys/windows/str.go | 22 + vendor/golang.org/x/sys/windows/syscall.go | 74 + .../x/sys/windows/syscall_windows.go | 1220 +++ .../golang.org/x/sys/windows/types_windows.go | 1441 ++++ .../x/sys/windows/types_windows_386.go | 22 + .../x/sys/windows/types_windows_amd64.go | 22 + .../x/sys/windows/types_windows_arm.go | 22 + .../x/sys/windows/zerrors_windows.go | 6853 +++++++++++++++++ .../x/sys/windows/zsyscall_windows.go | 2779 +++++++ .../hlandau/easymetric.v1/cexp/cexp.go | 97 + .../gopkg.in/hlandau/measurable.v1/README.md | 82 + .../hlandau/measurable.v1/measurable.go | 189 + .../gopkg.in/hlandau/passlib.v1/.travis.yml | 12 + vendor/gopkg.in/hlandau/passlib.v1/COPYING | 39 + vendor/gopkg.in/hlandau/passlib.v1/README.md | 100 + .../hlandau/passlib.v1/abstract/compare.go | 11 + .../hlandau/passlib.v1/abstract/errors.go | 15 + .../hlandau/passlib.v1/abstract/scheme.go | 34 + vendor/gopkg.in/hlandau/passlib.v1/default.go | 141 + .../hlandau/passlib.v1/hash/argon2/argon2.go | 115 + .../passlib.v1/hash/argon2/raw/argon2.go | 186 + .../hlandau/passlib.v1/hash/bcrypt/bcrypt.go | 72 + .../hash/bcryptsha256/bcryptsha256.go | 96 + .../hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go | 94 + .../passlib.v1/hash/pbkdf2/raw/base64.go | 20 + .../passlib.v1/hash/pbkdf2/raw/parse.go | 62 + .../passlib.v1/hash/pbkdf2/raw/pbkdf2.go | 15 + .../hlandau/passlib.v1/hash/pbkdf2/test.py | 30 + .../passlib.v1/hash/scrypt/raw/scrypt.go | 95 + .../hlandau/passlib.v1/hash/scrypt/scrypt.go | 113 + .../passlib.v1/hash/sha2crypt/raw/base64.go | 34 + .../passlib.v1/hash/sha2crypt/raw/parse.go | 82 + .../hash/sha2crypt/raw/sha2crypt.go | 187 + .../passlib.v1/hash/sha2crypt/sha2crypt.go | 147 + vendor/gopkg.in/hlandau/passlib.v1/passlib.go | 174 + vendor/modules.txt | 78 + 854 files changed, 287417 insertions(+), 7 deletions(-) create mode 100755 bacillus/ci_pushbuild.sh create mode 100644 vendor/blitter.com/go/cryptmt/README.md create mode 100644 vendor/blitter.com/go/cryptmt/cryptmt.go create mode 100644 vendor/blitter.com/go/goutmp/LICENSE.mit create mode 100644 vendor/blitter.com/go/goutmp/README.md create mode 100644 vendor/blitter.com/go/goutmp/goutmp.go create mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.gpl create mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.mit create mode 100644 vendor/blitter.com/go/herradurakex/Makefile create mode 100644 vendor/blitter.com/go/herradurakex/README.md create mode 100644 vendor/blitter.com/go/herradurakex/herradurakex.go create mode 100644 vendor/blitter.com/go/mtwist/mtwist.go create mode 100644 vendor/blitter.com/go/wanderer/wanderer.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/README.md create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go create mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/README.md create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/doc.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/kem.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/kex.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/params.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/poly.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go create mode 100644 vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/params.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/poly.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go create mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go create mode 100644 vendor/github.com/jameskeane/bcrypt/.gitignore create mode 100644 vendor/github.com/jameskeane/bcrypt/LICENSE create mode 100644 vendor/github.com/jameskeane/bcrypt/README create mode 100644 vendor/github.com/jameskeane/bcrypt/bcrypt.go create mode 100644 vendor/github.com/jameskeane/bcrypt/cipher.go create mode 100644 vendor/github.com/klauspost/cpuid/.gitignore create mode 100644 vendor/github.com/klauspost/cpuid/.travis.yml create mode 100644 vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt create mode 100644 vendor/github.com/klauspost/cpuid/LICENSE create mode 100644 vendor/github.com/klauspost/cpuid/README.md create mode 100644 vendor/github.com/klauspost/cpuid/cpuid.go create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_386.s create mode 100644 vendor/github.com/klauspost/cpuid/cpuid_amd64.s create mode 100644 vendor/github.com/klauspost/cpuid/detect_intel.go create mode 100644 vendor/github.com/klauspost/cpuid/detect_ref.go create mode 100644 vendor/github.com/klauspost/cpuid/generate.go create mode 100644 vendor/github.com/klauspost/cpuid/private-gen.go create mode 100644 vendor/github.com/klauspost/reedsolomon/.gitignore create mode 100644 vendor/github.com/klauspost/reedsolomon/.travis.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/LICENSE create mode 100644 vendor/github.com/klauspost/reedsolomon/README.md create mode 100644 vendor/github.com/klauspost/reedsolomon/appveyor.yml create mode 100644 vendor/github.com/klauspost/reedsolomon/galois.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.s create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_noasm.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go create mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s create mode 100644 vendor/github.com/klauspost/reedsolomon/gentables.go create mode 100644 vendor/github.com/klauspost/reedsolomon/inversion_tree.go create mode 100644 vendor/github.com/klauspost/reedsolomon/matrix.go create mode 100644 vendor/github.com/klauspost/reedsolomon/options.go create mode 100644 vendor/github.com/klauspost/reedsolomon/reedsolomon.go create mode 100644 vendor/github.com/klauspost/reedsolomon/streaming.go create mode 100644 vendor/github.com/kr/pty/.gitignore create mode 100644 vendor/github.com/kr/pty/License create mode 100644 vendor/github.com/kr/pty/README.md create mode 100644 vendor/github.com/kr/pty/doc.go create mode 100644 vendor/github.com/kr/pty/go.mod create mode 100644 vendor/github.com/kr/pty/ioctl.go create mode 100644 vendor/github.com/kr/pty/ioctl_bsd.go create mode 100644 vendor/github.com/kr/pty/mktypes.bash create mode 100644 vendor/github.com/kr/pty/pty_darwin.go create mode 100644 vendor/github.com/kr/pty/pty_dragonfly.go create mode 100644 vendor/github.com/kr/pty/pty_freebsd.go create mode 100644 vendor/github.com/kr/pty/pty_linux.go create mode 100644 vendor/github.com/kr/pty/pty_openbsd.go create mode 100644 vendor/github.com/kr/pty/pty_unsupported.go create mode 100644 vendor/github.com/kr/pty/run.go create mode 100644 vendor/github.com/kr/pty/types.go create mode 100644 vendor/github.com/kr/pty/types_dragonfly.go create mode 100644 vendor/github.com/kr/pty/types_freebsd.go create mode 100644 vendor/github.com/kr/pty/types_openbsd.go create mode 100644 vendor/github.com/kr/pty/util.go create mode 100644 vendor/github.com/kr/pty/ztypes_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_arm.go create mode 100644 vendor/github.com/kr/pty/ztypes_arm64.go create mode 100644 vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_arm.go create mode 100644 vendor/github.com/kr/pty/ztypes_mipsx.go create mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_386.go create mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_amd64.go create mode 100644 vendor/github.com/kr/pty/ztypes_ppc64.go create mode 100644 vendor/github.com/kr/pty/ztypes_ppc64le.go create mode 100644 vendor/github.com/kr/pty/ztypes_s390x.go create mode 100644 vendor/github.com/mattn/go-isatty/.travis.yml create mode 100644 vendor/github.com/mattn/go-isatty/LICENSE create mode 100644 vendor/github.com/mattn/go-isatty/README.md create mode 100644 vendor/github.com/mattn/go-isatty/doc.go create mode 100644 vendor/github.com/mattn/go-isatty/go.mod create mode 100644 vendor/github.com/mattn/go-isatty/go.sum create mode 100644 vendor/github.com/mattn/go-isatty/isatty_android.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_bsd.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_linux.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_others.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_solaris.go create mode 100644 vendor/github.com/mattn/go-isatty/isatty_windows.go create mode 100644 vendor/github.com/pkg/errors/.gitignore create mode 100644 vendor/github.com/pkg/errors/.travis.yml create mode 100644 vendor/github.com/pkg/errors/LICENSE create mode 100644 vendor/github.com/pkg/errors/README.md create mode 100644 vendor/github.com/pkg/errors/appveyor.yml create mode 100644 vendor/github.com/pkg/errors/errors.go create mode 100644 vendor/github.com/pkg/errors/stack.go create mode 100644 vendor/github.com/templexxx/cpufeat/.gitignore create mode 100644 vendor/github.com/templexxx/cpufeat/LICENSE create mode 100644 vendor/github.com/templexxx/cpufeat/README.md create mode 100644 vendor/github.com/templexxx/cpufeat/cpu.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64le.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mipsle.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_s390x.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.go create mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.s create mode 100644 vendor/github.com/templexxx/xor/.gitattributes create mode 100644 vendor/github.com/templexxx/xor/.gitignore create mode 100644 vendor/github.com/templexxx/xor/LICENSE create mode 100644 vendor/github.com/templexxx/xor/README.md create mode 100644 vendor/github.com/templexxx/xor/avx2_amd64.s create mode 100644 vendor/github.com/templexxx/xor/nosimd.go create mode 100644 vendor/github.com/templexxx/xor/sse2_amd64.s create mode 100644 vendor/github.com/templexxx/xor/xor.go create mode 100644 vendor/github.com/templexxx/xor/xor_amd64.go create mode 100644 vendor/github.com/templexxx/xor/xor_other.go create mode 100644 vendor/github.com/tjfoc/gmsm/LICENSE create mode 100644 vendor/github.com/tjfoc/gmsm/sm4/sm4.go create mode 100644 vendor/github.com/xtaci/kcp-go/.gitignore create mode 100644 vendor/github.com/xtaci/kcp-go/.travis.yml create mode 100644 vendor/github.com/xtaci/kcp-go/LICENSE create mode 100644 vendor/github.com/xtaci/kcp-go/README.md create mode 100644 vendor/github.com/xtaci/kcp-go/batchconn.go create mode 100644 vendor/github.com/xtaci/kcp-go/crypt.go create mode 100644 vendor/github.com/xtaci/kcp-go/donate.png create mode 100644 vendor/github.com/xtaci/kcp-go/entropy.go create mode 100644 vendor/github.com/xtaci/kcp-go/fec.go create mode 100644 vendor/github.com/xtaci/kcp-go/flame.png create mode 100644 vendor/github.com/xtaci/kcp-go/frame.png create mode 100644 vendor/github.com/xtaci/kcp-go/kcp-go.png create mode 100644 vendor/github.com/xtaci/kcp-go/kcp.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop_generic.go create mode 100644 vendor/github.com/xtaci/kcp-go/readloop_linux.go create mode 100644 vendor/github.com/xtaci/kcp-go/sess.go create mode 100644 vendor/github.com/xtaci/kcp-go/snmp.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx_generic.go create mode 100644 vendor/github.com/xtaci/kcp-go/tx_linux.go create mode 100644 vendor/github.com/xtaci/kcp-go/wechat_donate.jpg create mode 100644 vendor/golang.org/x/crypto/AUTHORS create mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS create mode 100644 vendor/golang.org/x/crypto/LICENSE create mode 100644 vendor/golang.org/x/crypto/PATENTS create mode 100644 vendor/golang.org/x/crypto/argon2/argon2.go create mode 100644 vendor/golang.org/x/crypto/argon2/blake2b.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.s create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_generic.go create mode 100644 vendor/golang.org/x/crypto/argon2/blamka_ref.go create mode 100644 vendor/golang.org/x/crypto/bcrypt/base64.go create mode 100644 vendor/golang.org/x/crypto/bcrypt/bcrypt.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_generic.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_ref.go create mode 100644 vendor/golang.org/x/crypto/blake2b/blake2x.go create mode 100644 vendor/golang.org/x/crypto/blake2b/register.go create mode 100644 vendor/golang.org/x/crypto/blowfish/block.go create mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go create mode 100644 vendor/golang.org/x/crypto/blowfish/const.go create mode 100644 vendor/golang.org/x/crypto/cast5/cast5.go create mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing.go create mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go create mode 100644 vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa20.go create mode 100644 vendor/golang.org/x/crypto/scrypt/scrypt.go create mode 100644 vendor/golang.org/x/crypto/sha3/doc.go create mode 100644 vendor/golang.org/x/crypto/sha3/hashes.go create mode 100644 vendor/golang.org/x/crypto/sha3/hashes_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.go create mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.s create mode 100644 vendor/golang.org/x/crypto/sha3/register.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.go create mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.s create mode 100644 vendor/golang.org/x/crypto/sha3/shake.go create mode 100644 vendor/golang.org/x/crypto/sha3/shake_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor_generic.go create mode 100644 vendor/golang.org/x/crypto/sha3/xor_unaligned.go create mode 100644 vendor/golang.org/x/crypto/tea/cipher.go create mode 100644 vendor/golang.org/x/crypto/twofish/twofish.go create mode 100644 vendor/golang.org/x/crypto/xtea/block.go create mode 100644 vendor/golang.org/x/crypto/xtea/cipher.go create mode 100644 vendor/golang.org/x/net/AUTHORS create mode 100644 vendor/golang.org/x/net/CONTRIBUTORS create mode 100644 vendor/golang.org/x/net/LICENSE create mode 100644 vendor/golang.org/x/net/PATENTS create mode 100644 vendor/golang.org/x/net/bpf/asm.go create mode 100644 vendor/golang.org/x/net/bpf/constants.go create mode 100644 vendor/golang.org/x/net/bpf/doc.go create mode 100644 vendor/golang.org/x/net/bpf/instructions.go create mode 100644 vendor/golang.org/x/net/bpf/setter.go create mode 100644 vendor/golang.org/x/net/bpf/vm.go create mode 100644 vendor/golang.org/x/net/bpf/vm_instructions.go create mode 100644 vendor/golang.org/x/net/internal/iana/const.go create mode 100644 vendor/golang.org/x/net/internal/iana/gen.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_aix.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/defs_solaris.go create mode 100644 vendor/golang.org/x/net/internal/socket/empty.s create mode 100644 vendor/golang.org/x/net/internal/socket/error_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/error_windows.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/iovec_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go create mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/norace.go create mode 100644 vendor/golang.org/x/net/internal/socket/race.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_msg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go create mode 100644 vendor/golang.org/x/net/internal/socket/socket.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsdvar.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_const_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_dragonfly.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linkname.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_netbsd.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_posix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s create mode 100644 vendor/golang.org/x/net/internal/socket/sys_stub.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_unix.go create mode 100644 vendor/golang.org/x/net/internal/socket/sys_windows.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go create mode 100644 vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/batch.go create mode 100644 vendor/golang.org/x/net/ipv4/control.go create mode 100644 vendor/golang.org/x/net/ipv4/control_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/control_pktinfo.go create mode 100644 vendor/golang.org/x/net/ipv4/control_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/control_unix.go create mode 100644 vendor/golang.org/x/net/ipv4/control_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_aix.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/defs_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/dgramopt.go create mode 100644 vendor/golang.org/x/net/ipv4/doc.go create mode 100644 vendor/golang.org/x/net/ipv4/endpoint.go create mode 100644 vendor/golang.org/x/net/ipv4/gen.go create mode 100644 vendor/golang.org/x/net/ipv4/genericopt.go create mode 100644 vendor/golang.org/x/net/ipv4/header.go create mode 100644 vendor/golang.org/x/net/ipv4/helper.go create mode 100644 vendor/golang.org/x/net/ipv4/iana.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/icmp_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/packet.go create mode 100644 vendor/golang.org/x/net/ipv4/payload.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/payload_nocmsg.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv4/sockopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_aix.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_bsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_linux.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_stub.go create mode 100644 vendor/golang.org/x/net/ipv4/sys_windows.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv4/zsys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/batch.go create mode 100644 vendor/golang.org/x/net/ipv6/control.go create mode 100644 vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/control_unix.go create mode 100644 vendor/golang.org/x/net/ipv6/control_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_aix.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/defs_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/dgramopt.go create mode 100644 vendor/golang.org/x/net/ipv6/doc.go create mode 100644 vendor/golang.org/x/net/ipv6/endpoint.go create mode 100644 vendor/golang.org/x/net/ipv6/gen.go create mode 100644 vendor/golang.org/x/net/ipv6/genericopt.go create mode 100644 vendor/golang.org/x/net/ipv6/header.go create mode 100644 vendor/golang.org/x/net/ipv6/helper.go create mode 100644 vendor/golang.org/x/net/ipv6/iana.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_bsd.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/icmp_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/payload.go create mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg.go create mode 100644 vendor/golang.org/x/net/ipv6/payload_nocmsg.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt_posix.go create mode 100644 vendor/golang.org/x/net/ipv6/sockopt_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_aix.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_bsd.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_freebsd.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_linux.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_solaris.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_stub.go create mode 100644 vendor/golang.org/x/net/ipv6/sys_windows.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_darwin.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_dragonfly.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_386.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_netbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_openbsd.go create mode 100644 vendor/golang.org/x/net/ipv6/zsys_solaris.go create mode 100644 vendor/golang.org/x/sys/AUTHORS create mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS create mode 100644 vendor/golang.org/x/sys/LICENSE create mode 100644 vendor/golang.org/x/sys/PATENTS create mode 100644 vendor/golang.org/x/sys/cpu/byteorder.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.c create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mips64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mipsx.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.s create mode 100644 vendor/golang.org/x/sys/cpu/cpu_wasm.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.s create mode 100644 vendor/golang.org/x/sys/unix/.gitignore create mode 100644 vendor/golang.org/x/sys/unix/README.md create mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go create mode 100644 vendor/golang.org/x/sys/unix/aliases.go create mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mips64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mipsx.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_s390x.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_386.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm.s create mode 100644 vendor/golang.org/x/sys/unix/asm_solaris_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/bluetooth_linux.go create mode 100644 vendor/golang.org/x/sys/unix/cap_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/constants.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_linux.go create mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/dirent.go create mode 100644 vendor/golang.org/x/sys/unix/endian_big.go create mode 100644 vendor/golang.org/x/sys/unix/endian_little.go create mode 100644 vendor/golang.org/x/sys/unix/env_unix.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/gccgo_c.c create mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ioctl.go create mode 100644 vendor/golang.org/x/sys/unix/mkall.sh create mode 100644 vendor/golang.org/x/sys/unix/mkasm_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/mkerrors.sh create mode 100644 vendor/golang.org/x/sys/unix/mkpost.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl create mode 100644 vendor/golang.org/x/sys/unix/mksysnum.go create mode 100644 vendor/golang.org/x/sys/unix/openbsd_pledge.go create mode 100644 vendor/golang.org/x/sys/unix/openbsd_unveil.go create mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go create mode 100644 vendor/golang.org/x/sys/unix/race.go create mode 100644 vendor/golang.org/x/sys/unix/race0.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_linux.go create mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix.go create mode 100644 vendor/golang.org/x/sys/unix/str.go create mode 100644 vendor/golang.org/x/sys/unix/syscall.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go create mode 100644 vendor/golang.org/x/sys/unix/timestruct.go create mode 100644 vendor/golang.org/x/sys/unix/types_aix.go create mode 100644 vendor/golang.org/x/sys/unix/types_darwin.go create mode 100644 vendor/golang.org/x/sys/unix/types_dragonfly.go create mode 100644 vendor/golang.org/x/sys/unix/types_freebsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_netbsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_openbsd.go create mode 100644 vendor/golang.org/x/sys/unix/types_solaris.go create mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zptrace386_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracearm_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemips_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zptracemipsle_linux.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go create mode 100644 vendor/golang.org/x/sys/windows/aliases.go create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_386.s create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_amd64.s create mode 100644 vendor/golang.org/x/sys/windows/asm_windows_arm.s create mode 100644 vendor/golang.org/x/sys/windows/dll_windows.go create mode 100644 vendor/golang.org/x/sys/windows/env_windows.go create mode 100644 vendor/golang.org/x/sys/windows/eventlog.go create mode 100644 vendor/golang.org/x/sys/windows/exec_windows.go create mode 100644 vendor/golang.org/x/sys/windows/memory_windows.go create mode 100644 vendor/golang.org/x/sys/windows/mkerrors.bash create mode 100644 vendor/golang.org/x/sys/windows/mkerrors.go create mode 100644 vendor/golang.org/x/sys/windows/mksyscall.go create mode 100644 vendor/golang.org/x/sys/windows/race.go create mode 100644 vendor/golang.org/x/sys/windows/race0.go create mode 100644 vendor/golang.org/x/sys/windows/security_windows.go create mode 100644 vendor/golang.org/x/sys/windows/service.go create mode 100644 vendor/golang.org/x/sys/windows/str.go create mode 100644 vendor/golang.org/x/sys/windows/syscall.go create mode 100644 vendor/golang.org/x/sys/windows/syscall_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_386.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_amd64.go create mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm.go create mode 100644 vendor/golang.org/x/sys/windows/zerrors_windows.go create mode 100644 vendor/golang.org/x/sys/windows/zsyscall_windows.go create mode 100644 vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go create mode 100644 vendor/gopkg.in/hlandau/measurable.v1/README.md create mode 100644 vendor/gopkg.in/hlandau/measurable.v1/measurable.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/.travis.yml create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/COPYING create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/README.md create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/default.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go create mode 100644 vendor/gopkg.in/hlandau/passlib.v1/passlib.go create mode 100644 vendor/modules.txt diff --git a/Makefile b/Makefile index 67462ed..034f101 100644 --- a/Makefile +++ b/Makefile @@ -5,9 +5,18 @@ #endif GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.11 +VERSION := 0.8.12 + +ifneq ($(VENDOR),) +GOBUILDOPTS :=-v -mod vendor +VTAG = "-vendor" +else +GOBUILDOPTS= +VTAG = +endif + #ifeq ($(BUILDOPTS),) -BUILDOPTS :=$(BUILDOPTS)" -ldflags \"-X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT)\"" +BUILDOPTS :=$(BUILDOPTS)"$(GOBUILDOPTS) -ldflags \"-X main.version=$(VERSION)$(VTAG) -X main.gitCommit=$(GIT_COMMIT)\"" #endif SUBPKGS = logger spinsult xsnet @@ -63,7 +72,7 @@ passwd: common vis: @which go-callvis >/dev/null 2>&1; \ stat=$$?; if [ $$stat -ne "0" ]; then \ - /bin/echo "go-callvis not found. Run go get github.com/Russtopia/go-callvis to install."; \ + /bin/echo "go-callvis not found. Run go get https://github.com/TrueFurby/go-callvis to install."; \ else \ make -C xs vis;\ make -C xsd vis;\ diff --git a/bacillus/ci_pushbuild.sh b/bacillus/ci_pushbuild.sh new file mode 100755 index 0000000..bdadbc1 --- /dev/null +++ b/bacillus/ci_pushbuild.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +export PATH=/usr/local/bin:/usr/bin:/usr/lib/ccache/bin:/bin +echo "workdir: ${BACILLUS_WORKDIR}" +mkdir -p "${BACILLUS_ARTFDIR}" + +export GO111MODULE=on +export GOPATH="${HOME}/go" +# GOCACHE will be phased out in v1.12. [github.com/golang/go/issues/26809] +export GOCACHE="${HOME}/.cache/go-build" + +echo "---" +go env +echo "---" +echo "passed env:" +env +echo "---" + +cd ${REPO} +branch=$(git for-each-ref --sort=-committerdate --format='%(refname)' | head -n 1) +echo "Building most recent push on branch $branch" +git checkout "$branch" +ls + +stage "Build" +make all + +stage "Test(Authtoken)" +echo "Clearing test user $USER ~/.xs_id file ..." +rm -f ~/.xs_id +echo "Setting dummy authtoken in ~/.xs_id ..." +echo "localhost:asdfasdfasdf" >~/.xs_id +echo "Performing remote command on @localhost via authtoken login ..." +tokentest=$(timeout 10 xs -x "echo -n FOO" @localhost) +if [ "${tokentest}" != "FOO" ]; then + echo "AUTHTOKEN LOGIN FAILED" + exit 1 +else + echo "client cmd performed OK." + unset tokentest +fi + +stage "Test(S->C)" +echo "Testing secure copy from server -> client ..." +tmpdir=$$ +mkdir -p /tmp/$tmpdir +cd /tmp/$tmpdir +xc @localhost:${BACILLUS_WORKDIR}/build/xs/cptest . +echo -n "Integrity check on copied files (sha1sum) ..." +sha1sum $(find cptest -type f | sort) >sc.sha1sum +diff sc.sha1sum ${BACILLUS_WORKDIR}/build/xs/cptest.sha1sum +stat=$? + +cd - +rm -rf /tmp/$tmpdir +if [ $stat -eq "0" ]; then + echo "OK." +else + echo "FAILED!" + exit $stat +fi + +stage "Test(C->S)" +echo "TODO ..." + +stage "Artifacts" +echo -n "Creating tarfile ..." +tar -cz --exclude=.git --exclude=cptest -f ${BACILLUS_ARTFDIR}/xs.tgz . + +stage "Cleanup" +rm -f ~/.xs_id + +echo +echo "--Done--" diff --git a/go.mod b/go.mod index 4332d9d..6f3a987 100644 --- a/go.mod +++ b/go.mod @@ -17,10 +17,12 @@ require ( github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 github.com/pkg/errors v0.8.1 // indirect + github.com/stretchr/testify v1.4.0 // indirect github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible + github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190416152802-12500544f89f diff --git a/go.sum b/go.sum index 57ef2f3..9474418 100644 --- a/go.sum +++ b/go.sum @@ -4,17 +4,19 @@ blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= -blitter.com/go/mtwist v1.0.0 h1:/Vg6k12+DC+fokeRrLApL22hZS/EqEazJTo/FDdbDog= -blitter.com/go/mtwist v1.0.0/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= blitter.com/go/mtwist v1.0.1/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= -blitter.com/go/wanderer v0.8.0 h1:xT7lKdKLSyonVf0vZW6R46E3gz3B5pJ1VDBlsa4ULDI= -blitter.com/go/wanderer v0.8.0/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= +blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= +blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= +git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s= github.com/klauspost/cpuid v1.2.2 h1:1xAgYebNnsb9LKCdLOvFWtAxGU/33mjJtyOVbmUa0Us= github.com/klauspost/cpuid v1.2.2/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -26,6 +28,11 @@ github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 h1:89CEmDvlq/F7SJEOqkIdNDGJXrQIhuIx9D2DBXjavSU= github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161/go.mod h1:wM7WEvslTq+iOEAMDLSzhVuOt5BRZ05WirO+b09GHQU= github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b h1:mnG1fcsIB1d/3vbkBak2MM0u+vhGhlQwpeimUi7QncM= @@ -34,6 +41,8 @@ github.com/tjfoc/gmsm v1.0.1 h1:R11HlqhXkDospckjZEihx9SW/2VW0RgdwrykyWMFOQU= github.com/tjfoc/gmsm v1.0.1/go.mod h1:XxO4hdhhrzAd+G4CjDqaOkd0hUzmtPR/d3EiBBMn/wc= github.com/xtaci/kcp-go v5.4.19+incompatible h1:vv7Ar1D9WZGiv6deIOluxrC26Oin/2jFtx8sFU5tlvw= github.com/xtaci/kcp-go v5.4.19+incompatible/go.mod h1:bN6vIwHQbfHaHtFpEssmWsN45a+AZwO7eyRCmEIbtvE= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae h1:J0GxkO96kL4WF+AIT3M4mfUVinOCPgf2uUWYFUzN0sM= +github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62kEgmN++bm9BVICuT/e8yiLI2KFobd/TRFsE= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -45,9 +54,13 @@ golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/hlandau/easymetric.v1 v1.0.0 h1:ZbfbH7W3giuVDjWUoFhDOjjv20hiPr5HZ2yMV5f9IeE= gopkg.in/hlandau/easymetric.v1 v1.0.0/go.mod h1:yh75hypuFzAxmvECh3ZKGCvFnIfapYJh2wv7ASaX2RE= gopkg.in/hlandau/measurable.v1 v1.0.1 h1:wH5UZKCRUnRr1iD+xIZfwhtxhmr+bprRJttqA1Rklf4= gopkg.in/hlandau/measurable.v1 v1.0.1/go.mod h1:6N+SYJGMTmetsx7wskULP+juuO+++tsHJkAgzvzsbuM= gopkg.in/hlandau/passlib.v1 v1.0.10 h1:q5xh9ZHp907XTjVw8/EqG03//fnlITnIYQmv4Gn7TpE= gopkg.in/hlandau/passlib.v1 v1.0.10/go.mod h1:wxGAv2CtQHlzWY8NJp+p045yl4WHyX7v2T6XbOcmqjM= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/blitter.com/go/cryptmt/README.md b/vendor/blitter.com/go/cryptmt/README.md new file mode 100644 index 0000000..2f1e323 --- /dev/null +++ b/vendor/blitter.com/go/cryptmt/README.md @@ -0,0 +1,6 @@ +[![GoDoc](https://godoc.org/blitter.com/go/cryptmt?status.svg)](https://godoc.org/blitter.com/go/cryptmt) + +Implementation of cryptMTv1 stream cipher (but with mtwist64 as base accum) +https://eprint.iacr.org/2005/165.pdf + +Uses Mersenne Twister 64 golang implementation supplied by [cuixin](https://gist.github.com/cuixin): [gist](https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8) diff --git a/vendor/blitter.com/go/cryptmt/cryptmt.go b/vendor/blitter.com/go/cryptmt/cryptmt.go new file mode 100644 index 0000000..6b3960f --- /dev/null +++ b/vendor/blitter.com/go/cryptmt/cryptmt.go @@ -0,0 +1,60 @@ +// Package CryptMT - implementation of cryptMTv1 stream cipher +// (but with mtwist64 as base accum) +// https://eprint.iacr.org/2005/165.pdf +package cryptmt + +// TODO rlm: according to go docs, stream ciphers do not implement the +// cipher.Block interface at all (thus do not support Encrypt() or +// Decrypt() .. cipher.StreamReader/StreamWriter() only call +// XORKeyStream() anyhow and for my own purposes this is all that is +// required. + +import ( + "errors" + + mtwist "blitter.com/go/mtwist" +) + +type Cipher struct { + accum uint64 + m *mtwist.MT19937_64 +} + +func (c *Cipher) yield8() (r byte) { + c.accum = c.accum * (c.m.Int63() | 1) + r = byte(c.accum>>56) & 0xFF + return +} + +// NewCipher creates and returns a Cipher. The key argument should be the +// CryptMT key, 64 bytes. +func NewCipher(key []byte) (c *Cipher) { + c = &Cipher{m: mtwist.New()} + c.m.SeedFullState(key) + c.accum = 1 + // from paper, discard first 64 bytes of output + for idx := 0; idx < 64; idx++ { + _ = c.yield8() + } + return c +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream should panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Stream +// maintains state and does not reset at each XORKeyStream call. +func (c *Cipher) XORKeyStream(dst, src []byte) { + if len(dst) < len(src) { + panic(errors.New("len(dst) < len(src)")) + } + + for i, b := range src { + dst[i] = b ^ c.yield8() + } +} diff --git a/vendor/blitter.com/go/goutmp/LICENSE.mit b/vendor/blitter.com/go/goutmp/LICENSE.mit new file mode 100644 index 0000000..8d5754c --- /dev/null +++ b/vendor/blitter.com/go/goutmp/LICENSE.mit @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 - 2018 Russell Magee + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/blitter.com/go/goutmp/README.md b/vendor/blitter.com/go/goutmp/README.md new file mode 100644 index 0000000..ec6fe95 --- /dev/null +++ b/vendor/blitter.com/go/goutmp/README.md @@ -0,0 +1,17 @@ +goutmp - Minimal bindings to C stdlib pututmpx(), getutmpx() (/var/log/wtmp) and /var/log/lastlog + +Any Go program which allows user shell access should update the standard UNIX files which track user sessions: /var/log/wtmp (for the 'w' and 'who' commands), and /var/log/lastlog (the 'last' and 'lastlog' commands). + +``` +go doc +package goutmp // import "blitter.com/go/goutmp" + +Golang bindings for basic login/utmp accounting + +type UtmpEntry struct{ ... } + +func Put_lastlog_entry(app string, usr string, host string) +func Unput_utmp(entry UtmpEntry) +func Put_utmp(user string, host string) UtmpEntry +``` + diff --git a/vendor/blitter.com/go/goutmp/goutmp.go b/vendor/blitter.com/go/goutmp/goutmp.go new file mode 100644 index 0000000..2d7721b --- /dev/null +++ b/vendor/blitter.com/go/goutmp/goutmp.go @@ -0,0 +1,130 @@ +// Golang bindings for basic login/utmp accounting +package goutmp + +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +// +//#include +//#include +// +//typedef char char_t; +// +// +//void pututmp(struct utmp* entry, char* uname, char* ptsname, char* host) { +// entry->ut_type = USER_PROCESS; +// entry->ut_pid = getpid(); +// strcpy(entry->ut_line, ptsname + strlen("/dev/")); +// +// strcpy(entry->ut_id, ptsname + strlen("/dev/pts/")); +// +// entry->ut_time = time(NULL); +// strcpy(entry->ut_user, uname); +// strcpy(entry->ut_host, host); +// entry->ut_addr = 0; +// setutent(); +// pututline(entry); +//} +// +//void unpututmp(struct utmp* entry) { +// entry->ut_type = DEAD_PROCESS; +// memset(entry->ut_line, 0, UT_LINESIZE); +// entry->ut_time = 0; +// memset(entry->ut_user, 0, UT_NAMESIZE); +// setutent(); +// pututline(entry); +// +// endutent(); +//} +// +//int putlastlogentry(int64_t t, int uid, char* line, char* host) { +// int retval = 0; +// FILE *f; +// struct lastlog l; +// +// strncpy(l.ll_line, line, UT_LINESIZE); +// l.ll_line[UT_LINESIZE-1] = '\0'; +// strncpy(l.ll_host, host, UT_HOSTSIZE); +// l.ll_host[UT_HOSTSIZE-1] = '\0'; +// +// l.ll_time = (time_t)t; +// //printf("l: ll_line '%s', ll_host '%s', ll_time %d\n", l.ll_line, l.ll_host, l.ll_time); +// +// /* Write lastlog entry at fixed offset (uid * sizeof(struct lastlog) */ +// if( NULL != (f = fopen("/var/log/lastlog", "rw+")) ) { +// if( !fseek(f, (uid * sizeof(struct lastlog)), SEEK_SET) ) { +// int fd = fileno(f); +// if( write(fd, &l, sizeof(l)) == sizeof(l) ) { +// retval = 1; +// //int32_t stat = system("echo ---- lastlog ----; lastlog"); +// } +// } +// fclose(f); +// } +// return retval; +//} +import "C" + +import ( + "fmt" + "net" + "os/user" + "strings" + "time" +) + +// UtmpEntry wraps the C struct utmp +type UtmpEntry struct { + entry C.struct_utmp +} + +// return remote client hostname or IP if host lookup fails +// addr is expected to be of the format given by net.Addr.String() +// eg., "127.0.0.1:80" or "[::1]:80" +func GetHost(addr string) (h string) { + if !strings.Contains(addr, "[") { + h = strings.Split(addr, ":")[0] + } else { + h = strings.Split(strings.Split(addr, "[")[1], "]")[0] + } + hList, e := net.LookupAddr(h) + //fmt.Printf("lookupAddr:%v\n", hList) + if e == nil { + h = hList[0] + } + return +} + +// Put a username and the originating host/IP to utmp +func Put_utmp(user, ptsName, host string) UtmpEntry { + var entry UtmpEntry + + //log.Println("Put_utmp:host ", host, " user ", user) + C.pututmp(&entry.entry, C.CString(user), C.CString(ptsName), C.CString(host)) + return entry +} + +// Remove a username/host entry from utmp +func Unput_utmp(entry UtmpEntry) { + C.unpututmp(&entry.entry) +} + +// Put the login app, username and originating host/IP to lastlog +func Put_lastlog_entry(app, usr, ptsname, host string) { + u, e := user.Lookup(usr) + if e != nil { + return + } + var uid uint32 + fmt.Sscanf(u.Uid, "%d", &uid) + + t := time.Now().Unix() + _ = C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) + //stat := C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) + //fmt.Println("stat was:",stat) +} diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.gpl b/vendor/blitter.com/go/herradurakex/LICENSE.gpl new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/LICENSE.gpl @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.mit b/vendor/blitter.com/go/herradurakex/LICENSE.mit new file mode 100644 index 0000000..4acc92f --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/LICENSE.mit @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2017 - 2018 Omar Alejandro Herrera Reyna (core HerraduraKEx) +Copyright (c) 2017 - 2018 Russell Magee (hkexsh/hkexshd/hkexpasswd) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/blitter.com/go/herradurakex/Makefile b/vendor/blitter.com/go/herradurakex/Makefile new file mode 100644 index 0000000..e59fbc7 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/Makefile @@ -0,0 +1,17 @@ +.PHONY: info clean all lib + +all: lib + +clean: + go clean . + +lib: info + go install . + +ifneq ($(MSYSTEM),) +info: + @echo "building for Windows (MSYS)" +else +info: + @echo "building for Linux" +endif diff --git a/vendor/blitter.com/go/herradurakex/README.md b/vendor/blitter.com/go/herradurakex/README.md new file mode 100644 index 0000000..82b7368 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/README.md @@ -0,0 +1 @@ +HerraduraKEx - an experimental Key Encapsulation Mechanism diff --git a/vendor/blitter.com/go/herradurakex/herradurakex.go b/vendor/blitter.com/go/herradurakex/herradurakex.go new file mode 100644 index 0000000..9621e94 --- /dev/null +++ b/vendor/blitter.com/go/herradurakex/herradurakex.go @@ -0,0 +1,182 @@ +// Package hkex - an experimental key exchange algorithm +// by Omar Alejandro Herrera Reyna. +// +// (https://github.com/Caume/HerraduraKEx) +// +// The core HerraduraKEx algorithm is dual-licensed +// by the author (Omar Alejandro Herrera Reyna) +// under GPL3 and MIT licenses. +// See LICENSE.gpl and LICENSE.mit in this distribution +// +// Go implementation Copyright (c) 2017-2018 Russell Magee +// (rmagee_at_gmail_com) +// Licensed under the terms of the MIT license +// See LICENSE.mit in this distribution +package hkex + +/* Herradura - a Key exchange scheme in the style of Diffie-Hellman Key Exchange. + Copyright (C) 2017 Omar Alejandro Herrera Reyna + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + + golang implementation by Russ Magee (rmagee_at_gmail.com) */ + +/* This is the core KEx algorithm. For client/server net support code, +See the hkexnet package (currently a sub-package of hkexsh) for a +golang/pkg/net compatible Conn interface using this to negotiate keys and +secure a network channel. */ + +import ( + "fmt" + "math/big" + "math/rand" + "time" +) + +// HerraduraKEx holds the session state for a key exchange. +type HerraduraKEx struct { + intSz, pubSz int + randctx *rand.Rand + a *big.Int + b *big.Int + d, peerD *big.Int + fa *big.Int +} + +// New returns a HerraduraKEx struct. +// +// i - internal (private) random nonce +// p - public (exchanged) random nonce (typically 1/4 bitsize of i) +// +// If i or p are passed as zero, they will default to 256 and 64, +// respectively. +func New(i int, p int) (h *HerraduraKEx) { + h = new(HerraduraKEx) + + if i == 0 { + i = 256 + } + if p == 0 { + p = 64 + } + + h.intSz = i + h.pubSz = p + + h.seed() + h.a = h.rand() + h.b = h.rand() + + h.d = h.fscxRevolve(h.a, h.b, h.pubSz) + return h +} + +func (h *HerraduraKEx) seed() { + r := rand.New(rand.NewSource(time.Now().UnixNano())) + h.randctx = r +} + +func (h *HerraduraKEx) rand() (v *big.Int) { + v = big.NewInt(0) + v.Rand(h.randctx, h.getMax()) + return v +} + +// getMax returns the max value for an n-bit big.Int +func (h *HerraduraKEx) getMax() (n *big.Int) { + n = big.NewInt(0) + var max big.Int + + for i := 0; i < h.intSz; i++ { + max.SetBit(n, i, 1) + } + n = &max + return n +} + +func (h *HerraduraKEx) bitX(x *big.Int, pos int) (ret int64) { + if pos < 0 { + pos = h.intSz - pos + } + + if pos == 0 { + ret = int64(x.Bit(1) ^ x.Bit(0) ^ x.Bit(h.intSz-1)) + } else if pos == h.intSz-1 { + ret = int64(x.Bit(0) ^ x.Bit(pos) ^ x.Bit(pos-1)) + } else { + ret = int64(x.Bit((pos+1)%h.intSz) ^ x.Bit(pos) ^ x.Bit(pos-1)) + } + return ret +} + +func (h *HerraduraKEx) bit(up, down *big.Int, posU, posD int) (ret *big.Int) { + return big.NewInt(h.bitX(up, posU) ^ h.bitX(down, posD)) +} + +func (h *HerraduraKEx) fscx(up, down *big.Int) (result *big.Int) { + result = big.NewInt(0) + + for count := 0; count < h.intSz; count++ { + result.Lsh(result, 1) + result.Add(result, h.bit(up, down, count, count)) + } + return result +} + +// This is the iteration function using the result of the previous iteration +// as the first parameter and the second parameter of the first iteration. +func (h *HerraduraKEx) fscxRevolve(x, y *big.Int, passes int) (result *big.Int) { + result = x + for count := 0; count < passes; count++ { + result = h.fscx(result, y) + } + return result +} + +// D returns the D (FSCX Revolved) value, input to generate FA +// (the value for peer KEx) +func (h HerraduraKEx) D() *big.Int { + return h.d +} + +// PeerD returns the peer D value +func (h HerraduraKEx) PeerD() *big.Int { + return h.peerD +} + +// SetPeerD stores the received peer's D value (contents, not ptr) +func (h *HerraduraKEx) SetPeerD(pd *big.Int) { + h.peerD = new(big.Int).Set(pd) +} + +// ComputeFA computes the FA value, which must be sent to peer for KEx. +func (h *HerraduraKEx) ComputeFA() { + h.fa = h.fscxRevolve(h.peerD, h.b, h.intSz-h.pubSz) + h.fa.Xor(h.fa, h.a) +} + +// FA returns the computed FA value +func (h HerraduraKEx) FA() *big.Int { + return h.fa +} + +// Output HerraduraKEx type value as a string. Implements Stringer interface. +func (h *HerraduraKEx) String() string { + return fmt.Sprintf("s:%d p:%d\na:%s\nb:%s\nd:->%s\n<-peerD:%s\nfa:%s", + h.intSz, h.pubSz, + h.a.Text(16), h.b.Text(16), + h.d.Text(16), + h.peerD.Text(16), + h.fa.Text(16)) +} diff --git a/vendor/blitter.com/go/mtwist/mtwist.go b/vendor/blitter.com/go/mtwist/mtwist.go new file mode 100644 index 0000000..4527525 --- /dev/null +++ b/vendor/blitter.com/go/mtwist/mtwist.go @@ -0,0 +1,125 @@ +// MersenneTwister +// From https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8 +package MersenneTwister + +import ( + "crypto" + + _ "crypto/sha512" +) + +const N = 312 +const M = 156 +const MATRIX_A = 0xB5026F5AA96619E9 +const UPPER_MASK = 0xFFFFFFFF80000000 +const LOWER_MASK = 0x7FFFFFFF + +type MT19937_64 struct { + array [N]uint64 //state vector + index uint64 // array index +} + +func New() *MT19937_64 { + return &MT19937_64{ + index: N + 1, + } +} + +func (m *MT19937_64) _initstate() { + // Recommendations abound that mtwist should throw away 1st 10000 or so + // of initial state + for i := 0; i < 10000; i++ { + _ = m.Int63() + } +} + +func (m *MT19937_64) Seed(seed int64) { + m.array[0] = uint64(seed) + for m.index = 1; m.index < N; m.index++ { + m.array[m.index] = (6364136223846793005*(m.array[m.index-1]^(m.array[m.index-1]>>62)) + m.index) + } + m._initstate() + //fmt.Printf("final array(s):%v\n", m.array) +} + +func _bytesToUint64(b []byte) (r uint64) { + r = uint64(b[0])<<56 + + uint64(b[1])<<48 + + uint64(b[2])<<40 + + uint64(b[3])<<32 + + uint64(b[4])<<24 + + uint64(b[5])<<16 + + uint64(b[6])<<8 + + uint64(b[7]) + return +} + +func (m *MT19937_64) SeedFullState(s []byte) { + //fmt.Printf("s:%v\n", s) + if len(s) < N*8 { + // Expand s if shorter than mtwist array state + ha := crypto.SHA512 + h := ha.New() + shortfallChunks := ((N * 8) - len(s)) / h.Size() + //shortfallRem := ((N * 8) - len(s)) % h.Size() + //fmt.Printf("chunks, rem:%d,%d\n", shortfallChunks, shortfallRem) + idx := 0 + for idx < shortfallChunks { + _, _ = h.Write(s) + s = h.Sum(s) + idx += 1 + } + _, _ = h.Write(s) + s = h.Sum(s) + //fmt.Printf("exp s:%v\n", s) + } + + for idx := 0; idx < N; { + m.array[idx] = _bytesToUint64(s[idx*8 : (idx*8)+8]) + idx += 1 + } + //fmt.Printf("final array(xs):%v\n", m.array) + m.index = 0 + m._initstate() +} + +func (m *MT19937_64) Int63() uint64 { + var i int + var x uint64 + mag01 := []uint64{0, MATRIX_A} + if m.index >= N { + if m.index == N+1 { + m.Seed(int64(5489)) + } + + for i = 0; i < N-M; i++ { + x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) + m.array[i] = m.array[i+(M)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + } + for ; i < N-1; i++ { + x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) + m.array[i] = m.array[i+(M-N)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + } + x = (m.array[N-1] & UPPER_MASK) | (m.array[0] & LOWER_MASK) + m.array[N-1] = m.array[M-1] ^ (x >> 1) ^ mag01[int(x&uint64(1))] + m.index = 0 + } + x = m.array[m.index] + m.index++ + x ^= (x >> 29) & 0x5555555555555555 + x ^= (x << 17) & 0x71D67FFFEDA60000 + x ^= (x << 37) & 0xFFF7EEE000000000 + x ^= (x >> 43) + return x +} + +func (m *MT19937_64) IntN(value uint64) uint64 { + return m.Int63() % value +} + +func (m *MT19937_64) Read(p []byte) (n int, err error) { + for idx := 0; idx < len(p); idx++ { + p[idx] = byte( (m.Int63()>>47) % 256) + } + return n, nil +} diff --git a/vendor/blitter.com/go/wanderer/wanderer.go b/vendor/blitter.com/go/wanderer/wanderer.go new file mode 100644 index 0000000..fe24277 --- /dev/null +++ b/vendor/blitter.com/go/wanderer/wanderer.go @@ -0,0 +1,210 @@ +// WANDERER - a crypto doodle that appears to give adequate +// protection to data in a stream cipher context +// +// Properties visualized using https://github.com/circulosmeos/circle +package wanderer + +// TODOs: +// -define s-box rotation/shuffle schema +// -devise p-box schema (? Meh. Need to blockify & re-streamify to do this) +// ... + +import ( + "errors" + "fmt" + "io" + "time" + + mtwist "blitter.com/go/mtwist" +) + +const ( + keylen = 512 + sboxCount = keylen / 8 +) + +// Given input byte x (treated as 2-bit dirs), +// 'walk' box applying XOR of each position (E/S/W/N) given box +// dimensions w,h +// NOTE to ensure reachability of all values within a box, w,h +// should not each exceed 3 and should probably stay at 2, to +// give more even coverage given random input. +func walkingXOR(key, s []byte, w, h int, x byte) (r byte) { + i := 0 + r = x + for sidx := range key { + ktemp := key[sidx] + r = r ^ (s[i]) + for shift := uint(0); shift < 8; shift += 2 { + // fmt.Println("i:", i, "r:", r) + dir := (ktemp >> shift) & 0x03 + switch dir { + case 0: + i = i + 1 + i = i % len(s) + case 1: + i = i + w + i = i % len(s) + case 2: + if i%w != 0 { + i = i - 1 + } else { + i = i + w - 1 + } + case 3: + if i >= w { + i = i - w + } else { + i = len(s) + i - w + } + } + r = r ^ (s[i]) + } + } + return +} + +func (c *Cipher) genSBoxen(n uint) { + c.sboxen = make([][]byte, n) + var idx uint + for ; idx < n; idx++ { + c.sboxen[idx] = make([]byte, c.sw*c.sh) + _, _ = c.prng.Read(c.sboxen[idx]) + } + //fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) +} + +// Mutate the session key (intended to be called as encryption +// proceeds), so that the 'walk path' through sboxes also does so. +func (c *Cipher) keyUpdate(perturb byte) { + c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] + c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) + c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) +} + +// slow - perturb a single octet of a single sbox for each octet +// (CV = ~8.725% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateA(perturb byte) { + c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + perturb +} + +// slower - perturb a single sbox for each octet +// (CV = ~?% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateB(perturb byte) { + lim := c.sw * c.sh + for idx := 0; idx < lim; idx++ { + c.sboxen[perturb%sboxCount][idx] ^= perturb + } +} + +// slowest -- full sbox re-gen after each octet +// (but lowest CV, ~0.05% over 700MiB of 0-byte pt) +func (c *Cipher) sboxUpdateC(perturb byte) { + c.genSBoxen(sboxCount) + //c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + // perturb +} + +type Cipher struct { + prng *mtwist.MT19937_64 + r io.Reader + w io.Writer + k []byte + kidx uint + sboxen [][]byte + sw int + sh int + sctr int // TODO: used to count down to re-keying & sbox regen + mode int + n byte +} + +func NewCodec(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { + c = &Cipher{} + c.prng = mtwist.New() + if len(key) == 0 { + c.k = []byte(fmt.Sprintf("%s", time.Now())) + } else { + c.k = key + } + c.prng.SeedFullState(c.k) + + // Discard first 64 bytes of MT output + for idx := 0; idx < 64; idx++ { + _ = c.prng.Int63() + } + c.mode = mode + c.r = r + c.w = w + c.sw = width + c.sh = height + c.sctr = c.sw // sbox ctr: countdown to regen sboxes + c.n = 0 + c.genSBoxen(sboxCount) + + // fmt.Printf("%+v\n", sboxen) + // c.buf = make([]byte, 4) + return c +} + +func (c *Cipher) Read(p []byte) (n int, err error) { + n, err = c.r.Read(p) + if err == nil { + for idx := 0; idx < n; idx++ { + p[idx] = c.yield(p[idx]) + } + } + return n, err +} + +func (c *Cipher) Write(p []byte) (n int, err error) { + n, err = c.w.Write(p) + return n, err +} + +func (c *Cipher) yield(pt byte) (ct byte) { + ct = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, pt) + c.n = (c.n + 1) % byte(len(c.sboxen)) + c.keyUpdate(ct ^ pt) // must be equal in either encrypt/decrypt dirs + switch c.mode { + case 0: + // [nothing - varA] + break + case 1: + c.sboxUpdateA(ct ^ pt) // varA + case 2: + c.sboxUpdateB(ct ^ pt) // varB + case 3: + c.sboxUpdateC(ct ^ pt) // varC + default: + // [nothing] + } + // c.sctr = c.sctr - 1 + // if c.sctr == 0 { + // c.genSBoxen(sboxCount) + // c.sctr = c.sw + // } + return ct +} + +// XORKeyStream XORs each byte in the given slice with a byte from the +// cipher's key stream. Dst and src must overlap entirely or not at all. +// +// If len(dst) < len(src), XORKeyStream should panic. It is acceptable +// to pass a dst bigger than src, and in that case, XORKeyStream will +// only update dst[:len(src)] and will not touch the rest of dst. +// +// Multiple calls to XORKeyStream behave as if the concatenation of +// the src buffers was passed in a single run. That is, Stream +// maintains state and does not reset at each XORKeyStream call. +func (c *Cipher) XORKeyStream(dst, src []byte) { + //fmt.Printf("len dst:%d len src:%d\n", len(dst), len(src)) + if len(dst) < len(src) { + panic(errors.New("len(dst) < len(src)")) + } + + for idx, v := range src { + dst[idx] = c.yield(v) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE b/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md b/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md new file mode 100644 index 0000000..9080a84 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md @@ -0,0 +1,14 @@ +### chacha20 - ChaCha20 +#### Yawning Angel (yawning at schwanenlied dot me) + +Yet another Go ChaCha20 implementation. Everything else I found was slow, +didn't support all the variants I need to use, or relied on cgo to go fast. + +Features: + + * 20 round, 256 bit key only. Everything else is pointless and stupid. + * IETF 96 bit nonce variant. + * XChaCha 24 byte nonce variant. + * SSE2 and AVX2 support on amd64 targets. + * Incremental encrypt/decrypt support, unlike golang.org/x/crypto/salsa20. + diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go new file mode 100644 index 0000000..07d5e4b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go @@ -0,0 +1,273 @@ +// chacha20.go - A ChaCha stream cipher implementation. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package chacha20 + +import ( + "crypto/cipher" + "encoding/binary" + "errors" + "math" + "runtime" +) + +const ( + // KeySize is the ChaCha20 key size in bytes. + KeySize = 32 + + // NonceSize is the ChaCha20 nonce size in bytes. + NonceSize = 8 + + // INonceSize is the IETF ChaCha20 nonce size in bytes. + INonceSize = 12 + + // XNonceSize is the XChaCha20 nonce size in bytes. + XNonceSize = 24 + + // HNonceSize is the HChaCha20 nonce size in bytes. + HNonceSize = 16 + + // BlockSize is the ChaCha20 block size in bytes. + BlockSize = 64 + + stateSize = 16 + chachaRounds = 20 + + // The constant "expand 32-byte k" as little endian uint32s. + sigma0 = uint32(0x61707865) + sigma1 = uint32(0x3320646e) + sigma2 = uint32(0x79622d32) + sigma3 = uint32(0x6b206574) +) + +var ( + // ErrInvalidKey is the error returned when the key is invalid. + ErrInvalidKey = errors.New("key length must be KeySize bytes") + + // ErrInvalidNonce is the error returned when the nonce is invalid. + ErrInvalidNonce = errors.New("nonce length must be NonceSize/INonceSize/XNonceSize bytes") + + // ErrInvalidCounter is the error returned when the counter is invalid. + ErrInvalidCounter = errors.New("block counter is invalid (out of range)") + + useUnsafe = false + usingVectors = false + blocksFn = blocksRef +) + +// A Cipher is an instance of ChaCha20/XChaCha20 using a particular key and +// nonce. +type Cipher struct { + state [stateSize]uint32 + + buf [BlockSize]byte + off int + ietf bool +} + +// Reset zeros the key data so that it will no longer appear in the process's +// memory. +func (c *Cipher) Reset() { + for i := range c.state { + c.state[i] = 0 + } + for i := range c.buf { + c.buf[i] = 0 + } +} + +// XORKeyStream sets dst to the result of XORing src with the key stream. Dst +// and src may be the same slice but otherwise should not overlap. +func (c *Cipher) XORKeyStream(dst, src []byte) { + if len(dst) < len(src) { + src = src[:len(dst)] + } + + for remaining := len(src); remaining > 0; { + // Process multiple blocks at once. + if c.off == BlockSize { + nrBlocks := remaining / BlockSize + directBytes := nrBlocks * BlockSize + if nrBlocks > 0 { + blocksFn(&c.state, src, dst, nrBlocks, c.ietf) + remaining -= directBytes + if remaining == 0 { + return + } + dst = dst[directBytes:] + src = src[directBytes:] + } + + // If there's a partial block, generate 1 block of keystream into + // the internal buffer. + blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.off = 0 + } + + // Process partial blocks from the buffered keystream. + toXor := BlockSize - c.off + if remaining < toXor { + toXor = remaining + } + if toXor > 0 { + for i, v := range src[:toXor] { + dst[i] = v ^ c.buf[c.off+i] + } + dst = dst[toXor:] + src = src[toXor:] + + remaining -= toXor + c.off += toXor + } + } +} + +// KeyStream sets dst to the raw keystream. +func (c *Cipher) KeyStream(dst []byte) { + for remaining := len(dst); remaining > 0; { + // Process multiple blocks at once. + if c.off == BlockSize { + nrBlocks := remaining / BlockSize + directBytes := nrBlocks * BlockSize + if nrBlocks > 0 { + blocksFn(&c.state, nil, dst, nrBlocks, c.ietf) + remaining -= directBytes + if remaining == 0 { + return + } + dst = dst[directBytes:] + } + + // If there's a partial block, generate 1 block of keystream into + // the internal buffer. + blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.off = 0 + } + + // Process partial blocks from the buffered keystream. + toCopy := BlockSize - c.off + if remaining < toCopy { + toCopy = remaining + } + if toCopy > 0 { + copy(dst[:toCopy], c.buf[c.off:c.off+toCopy]) + dst = dst[toCopy:] + remaining -= toCopy + c.off += toCopy + } + } +} + +// ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key +// and nonce. +func (c *Cipher) ReKey(key, nonce []byte) error { + if len(key) != KeySize { + return ErrInvalidKey + } + + switch len(nonce) { + case NonceSize: + case INonceSize: + case XNonceSize: + var subkey [KeySize]byte + var subnonce [HNonceSize]byte + copy(subnonce[:], nonce[0:16]) + HChaCha(key, &subnonce, &subkey) + key = subkey[:] + nonce = nonce[16:24] + defer func() { + for i := range subkey { + subkey[i] = 0 + } + }() + default: + return ErrInvalidNonce + } + + c.Reset() + c.state[0] = sigma0 + c.state[1] = sigma1 + c.state[2] = sigma2 + c.state[3] = sigma3 + c.state[4] = binary.LittleEndian.Uint32(key[0:4]) + c.state[5] = binary.LittleEndian.Uint32(key[4:8]) + c.state[6] = binary.LittleEndian.Uint32(key[8:12]) + c.state[7] = binary.LittleEndian.Uint32(key[12:16]) + c.state[8] = binary.LittleEndian.Uint32(key[16:20]) + c.state[9] = binary.LittleEndian.Uint32(key[20:24]) + c.state[10] = binary.LittleEndian.Uint32(key[24:28]) + c.state[11] = binary.LittleEndian.Uint32(key[28:32]) + c.state[12] = 0 + if len(nonce) == INonceSize { + c.state[13] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[14] = binary.LittleEndian.Uint32(nonce[4:8]) + c.state[15] = binary.LittleEndian.Uint32(nonce[8:12]) + c.ietf = true + } else { + c.state[13] = 0 + c.state[14] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[15] = binary.LittleEndian.Uint32(nonce[4:8]) + c.ietf = false + } + c.off = BlockSize + return nil + +} + +// Seek sets the block counter to a given offset. +func (c *Cipher) Seek(blockCounter uint64) error { + if c.ietf { + if blockCounter > math.MaxUint32 { + return ErrInvalidCounter + } + c.state[12] = uint32(blockCounter) + } else { + c.state[12] = uint32(blockCounter) + c.state[13] = uint32(blockCounter >> 32) + } + c.off = BlockSize + return nil +} + +// NewCipher returns a new ChaCha20/XChaCha20 instance. +func NewCipher(key, nonce []byte) (*Cipher, error) { + c := new(Cipher) + if err := c.ReKey(key, nonce); err != nil { + return nil, err + } + return c, nil +} + +// HChaCha is the HChaCha20 hash function used to make XChaCha. +func HChaCha(key []byte, nonce *[HNonceSize]byte, out *[32]byte) { + var x [stateSize]uint32 // Last 4 slots unused, sigma hardcoded. + x[0] = binary.LittleEndian.Uint32(key[0:4]) + x[1] = binary.LittleEndian.Uint32(key[4:8]) + x[2] = binary.LittleEndian.Uint32(key[8:12]) + x[3] = binary.LittleEndian.Uint32(key[12:16]) + x[4] = binary.LittleEndian.Uint32(key[16:20]) + x[5] = binary.LittleEndian.Uint32(key[20:24]) + x[6] = binary.LittleEndian.Uint32(key[24:28]) + x[7] = binary.LittleEndian.Uint32(key[28:32]) + x[8] = binary.LittleEndian.Uint32(nonce[0:4]) + x[9] = binary.LittleEndian.Uint32(nonce[4:8]) + x[10] = binary.LittleEndian.Uint32(nonce[8:12]) + x[11] = binary.LittleEndian.Uint32(nonce[12:16]) + hChaChaRef(&x, out) +} + +func init() { + switch runtime.GOARCH { + case "386", "amd64": + // Abuse unsafe to skip calling binary.LittleEndian.PutUint32 + // in the critical path. This is a big boost on systems that are + // little endian and not overly picky about alignment. + useUnsafe = true + } +} + +var _ cipher.Stream = (*Cipher)(nil) diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go new file mode 100644 index 0000000..05adad1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go @@ -0,0 +1,95 @@ +// chacha20_amd64.go - AMD64 optimized chacha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build amd64,!gccgo,!appengine + +package chacha20 + +import ( + "math" +) + +var usingAVX2 = false + +func blocksAmd64SSE2(x *uint32, inp, outp *byte, nrBlocks uint) + +func blocksAmd64AVX2(x *uint32, inp, outp *byte, nrBlocks uint) + +func cpuidAmd64(cpuidParams *uint32) + +func xgetbv0Amd64(xcrVec *uint32) + +func blocksAmd64(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + // Probably unneeded, but stating this explicitly simplifies the assembly. + if nrBlocks == 0 { + return + } + + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + if in == nil { + for i := range out { + out[i] = 0 + } + in = out + } + + // Pointless to call the AVX2 code for just a single block, since half of + // the output gets discarded... + if usingAVX2 && nrBlocks > 1 { + blocksAmd64AVX2(&x[0], &in[0], &out[0], uint(nrBlocks)) + } else { + blocksAmd64SSE2(&x[0], &in[0], &out[0], uint(nrBlocks)) + } +} + +func supportsAVX2() bool { + // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family + const ( + osXsaveBit = 1 << 27 + avx2Bit = 1 << 5 + ) + + // Check to see if CPUID actually supports the leaf that indicates AVX2. + // CPUID.(EAX=0H, ECX=0H) >= 7 + regs := [4]uint32{0x00} + cpuidAmd64(®s[0]) + if regs[0] < 7 { + return false + } + + // Check to see if the OS knows how to save/restore XMM/YMM state. + // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 + regs = [4]uint32{0x01} + cpuidAmd64(®s[0]) + if regs[2]&osXsaveBit == 0 { + return false + } + xcrRegs := [2]uint32{} + xgetbv0Amd64(&xcrRegs[0]) + if xcrRegs[0]&6 != 6 { + return false + } + + // Check for AVX2 support. + // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 + regs = [4]uint32{0x07} + cpuidAmd64(®s[0]) + return regs[1]&avx2Bit != 0 +} + +func init() { + blocksFn = blocksAmd64 + usingVectors = true + usingAVX2 = supportsAVX2() +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py new file mode 100644 index 0000000..3bfebf4 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py @@ -0,0 +1,1295 @@ +#!/usr/bin/env python3 +# +# To the extent possible under law, Yawning Angel has waived all copyright +# and related or neighboring rights to chacha20, using the Creative +# Commons "CC0" public domain dedication. See LICENSE or +# for full details. + +# +# cgo sucks. Plan 9 assembly sucks. Real languages have SIMD intrinsics. +# The least terrible/retarded option is to use a Python code generator, so +# that's what I did. +# +# Code based on Ted Krovetz's vec128 C implementation, with corrections +# to use a 64 bit counter instead of 32 bit, and to allow unaligned input and +# output pointers. +# +# Dependencies: https://github.com/Maratyszcza/PeachPy +# +# python3 -m peachpy.x86_64 -mabi=goasm -S -o chacha20_amd64.s chacha20_amd64.py +# + +from peachpy import * +from peachpy.x86_64 import * + +x = Argument(ptr(uint32_t)) +inp = Argument(ptr(const_uint8_t)) +outp = Argument(ptr(uint8_t)) +nrBlocks = Argument(ptr(size_t)) + +# +# SSE2 helper functions. A temporary register is explicitly passed in because +# the main fast loop uses every single register (and even spills) so manual +# control is needed. +# +# This used to also have a DQROUNDS helper that did 2 rounds of ChaCha like +# in the C code, but the C code has the luxury of an optimizer reordering +# everything, while this does not. +# + +def ROTW16_sse2(tmp, d): + MOVDQA(tmp, d) + PSLLD(tmp, 16) + PSRLD(d, 16) + PXOR(d, tmp) + +def ROTW12_sse2(tmp, b): + MOVDQA(tmp, b) + PSLLD(tmp, 12) + PSRLD(b, 20) + PXOR(b, tmp) + +def ROTW8_sse2(tmp, d): + MOVDQA(tmp, d) + PSLLD(tmp, 8) + PSRLD(d, 24) + PXOR(d, tmp) + +def ROTW7_sse2(tmp, b): + MOVDQA(tmp, b) + PSLLD(tmp, 7) + PSRLD(b, 25) + PXOR(b, tmp) + +def WriteXor_sse2(tmp, inp, outp, d, v0, v1, v2, v3): + MOVDQU(tmp, [inp+d]) + PXOR(tmp, v0) + MOVDQU([outp+d], tmp) + MOVDQU(tmp, [inp+d+16]) + PXOR(tmp, v1) + MOVDQU([outp+d+16], tmp) + MOVDQU(tmp, [inp+d+32]) + PXOR(tmp, v2) + MOVDQU([outp+d+32], tmp) + MOVDQU(tmp, [inp+d+48]) + PXOR(tmp, v3) + MOVDQU([outp+d+48], tmp) + +# SSE2 ChaCha20 (aka vec128). Does not handle partial blocks, and will +# process 4/2/1 blocks at a time. +with Function("blocksAmd64SSE2", (x, inp, outp, nrBlocks)): + reg_x = GeneralPurposeRegister64() + reg_inp = GeneralPurposeRegister64() + reg_outp = GeneralPurposeRegister64() + reg_blocks = GeneralPurposeRegister64() + reg_sp_save = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_x, x) + LOAD.ARGUMENT(reg_inp, inp) + LOAD.ARGUMENT(reg_outp, outp) + LOAD.ARGUMENT(reg_blocks, nrBlocks) + + # Align the stack to a 32 byte boundary. + MOV(reg_sp_save, registers.rsp) + AND(registers.rsp, 0xffffffffffffffe0) + SUB(registers.rsp, 0x20) + + # Build the counter increment vector on the stack, and allocate the scratch + # space + xmm_v0 = XMMRegister() + PXOR(xmm_v0, xmm_v0) + SUB(registers.rsp, 16+16) + MOVDQA([registers.rsp], xmm_v0) + reg_tmp = GeneralPurposeRegister32() + MOV(reg_tmp, 0x00000001) + MOV([registers.rsp], reg_tmp) + mem_one = [registers.rsp] # (Stack) Counter increment vector + mem_tmp0 = [registers.rsp+16] # (Stack) Scratch space. + + mem_s0 = [reg_x] # (Memory) Cipher state [0..3] + mem_s1 = [reg_x+16] # (Memory) Cipher state [4..7] + mem_s2 = [reg_x+32] # (Memory) Cipher state [8..11] + mem_s3 = [reg_x+48] # (Memory) Cipher state [12..15] + + # xmm_v0 allocated above... + xmm_v1 = XMMRegister() + xmm_v2 = XMMRegister() + xmm_v3 = XMMRegister() + + xmm_v4 = XMMRegister() + xmm_v5 = XMMRegister() + xmm_v6 = XMMRegister() + xmm_v7 = XMMRegister() + + xmm_v8 = XMMRegister() + xmm_v9 = XMMRegister() + xmm_v10 = XMMRegister() + xmm_v11 = XMMRegister() + + xmm_v12 = XMMRegister() + xmm_v13 = XMMRegister() + xmm_v14 = XMMRegister() + xmm_v15 = XMMRegister() + + xmm_tmp = xmm_v12 + + # + # 4 blocks at a time. + # + + reg_rounds = GeneralPurposeRegister64() + + vector_loop4 = Loop() + SUB(reg_blocks, 4) + JB(vector_loop4.end) + with vector_loop4: + MOVDQU(xmm_v0, mem_s0) + MOVDQU(xmm_v1, mem_s1) + MOVDQU(xmm_v2, mem_s2) + MOVDQU(xmm_v3, mem_s3) + + MOVDQA(xmm_v4, xmm_v0) + MOVDQA(xmm_v5, xmm_v1) + MOVDQA(xmm_v6, xmm_v2) + MOVDQA(xmm_v7, xmm_v3) + PADDQ(xmm_v7, mem_one) + + MOVDQA(xmm_v8, xmm_v0) + MOVDQA(xmm_v9, xmm_v1) + MOVDQA(xmm_v10, xmm_v2) + MOVDQA(xmm_v11, xmm_v7) + PADDQ(xmm_v11, mem_one) + + MOVDQA(xmm_v12, xmm_v0) + MOVDQA(xmm_v13, xmm_v1) + MOVDQA(xmm_v14, xmm_v2) + MOVDQA(xmm_v15, xmm_v11) + PADDQ(xmm_v15, mem_one) + + MOV(reg_rounds, 20) + rounds_loop4 = Loop() + with rounds_loop4: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + ROTW16_sse2(xmm_tmp, xmm_v11) + ROTW16_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + ROTW12_sse2(xmm_tmp, xmm_v9) + ROTW12_sse2(xmm_tmp, xmm_v13) + + # a += b; d ^= a; d = ROTW8(d); + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + ROTW8_sse2(xmm_tmp, xmm_v11) + ROTW8_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + ROTW7_sse2(xmm_tmp, xmm_v9) + ROTW7_sse2(xmm_tmp, xmm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v5, xmm_v5, 0x39) + PSHUFD(xmm_v9, xmm_v9, 0x39) + PSHUFD(xmm_v13, xmm_v13, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v10, xmm_v10, 0x4e) + PSHUFD(xmm_v14, xmm_v14, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + PSHUFD(xmm_v7, xmm_v7, 0x93) + PSHUFD(xmm_v11, xmm_v11, 0x93) + PSHUFD(xmm_v15, xmm_v15, 0x93) + + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + ROTW16_sse2(xmm_tmp, xmm_v11) + ROTW16_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + ROTW12_sse2(xmm_tmp, xmm_v9) + ROTW12_sse2(xmm_tmp, xmm_v13) + + # a += b; d ^= a; d = ROTW8(d); + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PADDD(xmm_v8, xmm_v9) + PADDD(xmm_v12, xmm_v13) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + PXOR(xmm_v11, xmm_v8) + PXOR(xmm_v15, xmm_v12) + + MOVDQA(mem_tmp0, xmm_tmp) # Save + + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + ROTW8_sse2(xmm_tmp, xmm_v11) + ROTW8_sse2(xmm_tmp, xmm_v15) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PADDD(xmm_v10, xmm_v11) + PADDD(xmm_v14, xmm_v15) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + PXOR(xmm_v9, xmm_v10) + PXOR(xmm_v13, xmm_v14) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + ROTW7_sse2(xmm_tmp, xmm_v9) + ROTW7_sse2(xmm_tmp, xmm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v5, xmm_v5, 0x93) + PSHUFD(xmm_v9, xmm_v9, 0x93) + PSHUFD(xmm_v13, xmm_v13, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v10, xmm_v10, 0x4e) + PSHUFD(xmm_v14, xmm_v14, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + PSHUFD(xmm_v7, xmm_v7, 0x39) + PSHUFD(xmm_v11, xmm_v11, 0x39) + PSHUFD(xmm_v15, xmm_v15, 0x39) + + MOVDQA(xmm_tmp, mem_tmp0) # Restore + + SUB(reg_rounds, 2) + JNZ(rounds_loop4.begin) + + MOVDQA(mem_tmp0, xmm_tmp) + + PADDD(xmm_v0, mem_s0) + PADDD(xmm_v1, mem_s1) + PADDD(xmm_v2, mem_s2) + PADDD(xmm_v3, mem_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + MOVDQU(xmm_v3, mem_s3) + PADDQ(xmm_v3, mem_one) + + PADDD(xmm_v4, mem_s0) + PADDD(xmm_v5, mem_s1) + PADDD(xmm_v6, mem_s2) + PADDD(xmm_v7, xmm_v3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) + PADDQ(xmm_v3, mem_one) + + PADDD(xmm_v8, mem_s0) + PADDD(xmm_v9, mem_s1) + PADDD(xmm_v10, mem_s2) + PADDD(xmm_v11, xmm_v3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 128, xmm_v8, xmm_v9, xmm_v10, xmm_v11) + PADDQ(xmm_v3, mem_one) + + MOVDQA(xmm_tmp, mem_tmp0) + + PADDD(xmm_v12, mem_s0) + PADDD(xmm_v13, mem_s1) + PADDD(xmm_v14, mem_s2) + PADDD(xmm_v15, xmm_v3) + WriteXor_sse2(xmm_v0, reg_inp, reg_outp, 192, xmm_v12, xmm_v13, xmm_v14, xmm_v15) + PADDQ(xmm_v3, mem_one) + + MOVDQU(mem_s3, xmm_v3) + + ADD(reg_inp, 4 * 64) + ADD(reg_outp, 4 * 64) + + SUB(reg_blocks, 4) + JAE(vector_loop4.begin) + + ADD(reg_blocks, 4) + out = Label() + JZ(out) + + # Past this point, we no longer need to use every single register to hold + # the in progress state. + + xmm_s0 = xmm_v8 + xmm_s1 = xmm_v9 + xmm_s2 = xmm_v10 + xmm_s3 = xmm_v11 + xmm_one = xmm_v13 + MOVDQU(xmm_s0, mem_s0) + MOVDQU(xmm_s1, mem_s1) + MOVDQU(xmm_s2, mem_s2) + MOVDQU(xmm_s3, mem_s3) + MOVDQA(xmm_one, mem_one) + + # + # 2 blocks at a time. + # + + process_1_block = Label() + SUB(reg_blocks, 2) + JB(process_1_block) # < 2 blocks remaining. + + MOVDQA(xmm_v0, xmm_s0) + MOVDQA(xmm_v1, xmm_s1) + MOVDQA(xmm_v2, xmm_s2) + MOVDQA(xmm_v3, xmm_s3) + + MOVDQA(xmm_v4, xmm_v0) + MOVDQA(xmm_v5, xmm_v1) + MOVDQA(xmm_v6, xmm_v2) + MOVDQA(xmm_v7, xmm_v3) + PADDQ(xmm_v7, xmm_one) + + MOV(reg_rounds, 20) + rounds_loop2 = Loop() + with rounds_loop2: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v5, xmm_v5, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + PSHUFD(xmm_v7, xmm_v7, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW16_sse2(xmm_tmp, xmm_v3) + ROTW16_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW12_sse2(xmm_tmp, xmm_v1) + ROTW12_sse2(xmm_tmp, xmm_v5) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PADDD(xmm_v4, xmm_v5) + PXOR(xmm_v3, xmm_v0) + PXOR(xmm_v7, xmm_v4) + ROTW8_sse2(xmm_tmp, xmm_v3) + ROTW8_sse2(xmm_tmp, xmm_v7) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PADDD(xmm_v6, xmm_v7) + PXOR(xmm_v1, xmm_v2) + PXOR(xmm_v5, xmm_v6) + ROTW7_sse2(xmm_tmp, xmm_v1) + ROTW7_sse2(xmm_tmp, xmm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v5, xmm_v5, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v6, xmm_v6, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + PSHUFD(xmm_v7, xmm_v7, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop2.begin) + + PADDD(xmm_v0, xmm_s0) + PADDD(xmm_v1, xmm_s1) + PADDD(xmm_v2, xmm_s2) + PADDD(xmm_v3, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + PADDQ(xmm_s3, xmm_one) + + PADDD(xmm_v4, xmm_s0) + PADDD(xmm_v5, xmm_s1) + PADDD(xmm_v6, xmm_s2) + PADDD(xmm_v7, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) + PADDQ(xmm_s3, xmm_one) + + ADD(reg_inp, 2 * 64) + ADD(reg_outp, 2 * 64) + SUB(reg_blocks, 2) + + LABEL(process_1_block) + ADD(reg_blocks, 2) + out_serial = Label() + JZ(out_serial) + + # + # 1 block at a time. Only executed once, because if there was > 1, + # the parallel code would have processed it already. + # + + MOVDQA(xmm_v0, xmm_s0) + MOVDQA(xmm_v1, xmm_s1) + MOVDQA(xmm_v2, xmm_s2) + MOVDQA(xmm_v3, xmm_s3) + + MOV(reg_rounds, 20) + rounds_loop1 = Loop() + with rounds_loop1: + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW16_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW12_sse2(xmm_tmp, xmm_v1) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW8_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW7_sse2(xmm_tmp, xmm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x39) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW16_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW12(b); + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW12_sse2(xmm_tmp, xmm_v1) + + # a += b; d ^= a; d = ROTW8(d); + PADDD(xmm_v0, xmm_v1) + PXOR(xmm_v3, xmm_v0) + ROTW8_sse2(xmm_tmp, xmm_v3) + + # c += d; b ^= c; b = ROTW7(b) + PADDD(xmm_v2, xmm_v3) + PXOR(xmm_v1, xmm_v2) + ROTW7_sse2(xmm_tmp, xmm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + PSHUFD(xmm_v1, xmm_v1, 0x93) + PSHUFD(xmm_v2, xmm_v2, 0x4e) + PSHUFD(xmm_v3, xmm_v3, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop1.begin) + + PADDD(xmm_v0, xmm_s0) + PADDD(xmm_v1, xmm_s1) + PADDD(xmm_v2, xmm_s2) + PADDD(xmm_v3, xmm_s3) + WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) + PADDQ(xmm_s3, xmm_one) + + LABEL(out_serial) + + # Write back the updated counter. Stoping at 2^70 bytes is the user's + # problem, not mine. (Skipped if there's exactly a multiple of 4 blocks + # because the counter is incremented in memory while looping.) + MOVDQU(mem_s3, xmm_s3) + + LABEL(out) + + # Paranoia, cleanse the scratch space. + PXOR(xmm_v0, xmm_v0) + MOVDQA(mem_tmp0, xmm_v0) + + # Remove our stack allocation. + MOV(registers.rsp, reg_sp_save) + + RETURN() + +# +# AVX2 helpers. Like the SSE2 equivalents, the scratch register is explicit, +# and more helpers are used to increase readability for destructive operations. +# +# XXX/Performance: ROTW16_avx2/ROTW8_avx2 both can use VPSHUFFB. +# + +def ADD_avx2(dst, src): + VPADDD(dst, dst, src) + +def XOR_avx2(dst, src): + VPXOR(dst, dst, src) + +def ROTW16_avx2(tmp, d): + VPSLLD(tmp, d, 16) + VPSRLD(d, d, 16) + XOR_avx2(d, tmp) + +def ROTW12_avx2(tmp, b): + VPSLLD(tmp, b, 12) + VPSRLD(b, b, 20) + XOR_avx2(b, tmp) + +def ROTW8_avx2(tmp, d): + VPSLLD(tmp, d, 8) + VPSRLD(d, d, 24) + XOR_avx2(d, tmp) + +def ROTW7_avx2(tmp, b): + VPSLLD(tmp, b, 7) + VPSRLD(b, b, 25) + XOR_avx2(b, tmp) + +def WriteXor_avx2(tmp, inp, outp, d, v0, v1, v2, v3): + # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); + VPERM2I128(tmp, v0, v1, 0x20) + VPXOR(tmp, tmp, [inp+d]) + VMOVDQU([outp+d], tmp) + + # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); + VPERM2I128(tmp, v2, v3, 0x20) + VPXOR(tmp, tmp, [inp+d+32]) + VMOVDQU([outp+d+32], tmp) + + # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); + VPERM2I128(tmp, v0, v1, 0x31) + VPXOR(tmp, tmp, [inp+d+64]) + VMOVDQU([outp+d+64], tmp) + + # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); + VPERM2I128(tmp, v2, v3, 0x31) + VPXOR(tmp, tmp, [inp+d+96]) + VMOVDQU([outp+d+96], tmp) + +# AVX2 ChaCha20 (aka avx2). Does not handle partial blocks, will process +# 8/4/2 blocks at a time. +with Function("blocksAmd64AVX2", (x, inp, outp, nrBlocks), target=uarch.broadwell): + reg_x = GeneralPurposeRegister64() + reg_inp = GeneralPurposeRegister64() + reg_outp = GeneralPurposeRegister64() + reg_blocks = GeneralPurposeRegister64() + reg_sp_save = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_x, x) + LOAD.ARGUMENT(reg_inp, inp) + LOAD.ARGUMENT(reg_outp, outp) + LOAD.ARGUMENT(reg_blocks, nrBlocks) + + # Align the stack to a 32 byte boundary. + MOV(reg_sp_save, registers.rsp) + AND(registers.rsp, 0xffffffffffffffe0) + SUB(registers.rsp, 0x20) + + x_s0 = [reg_x] # (Memory) Cipher state [0..3] + x_s1 = [reg_x+16] # (Memory) Cipher state [4..7] + x_s2 = [reg_x+32] # (Memory) Cipher state [8..11] + x_s3 = [reg_x+48] # (Memory) Cipher state [12..15] + + ymm_v0 = YMMRegister() + ymm_v1 = YMMRegister() + ymm_v2 = YMMRegister() + ymm_v3 = YMMRegister() + + ymm_v4 = YMMRegister() + ymm_v5 = YMMRegister() + ymm_v6 = YMMRegister() + ymm_v7 = YMMRegister() + + ymm_v8 = YMMRegister() + ymm_v9 = YMMRegister() + ymm_v10 = YMMRegister() + ymm_v11 = YMMRegister() + + ymm_v12 = YMMRegister() + ymm_v13 = YMMRegister() + ymm_v14 = YMMRegister() + ymm_v15 = YMMRegister() + + ymm_tmp0 = ymm_v12 + + # Allocate the neccecary stack space for the counter vector and two ymm + # registers that we will spill. + SUB(registers.rsp, 96) + mem_tmp0 = [registers.rsp+64] # (Stack) Scratch space. + mem_s3 = [registers.rsp+32] # (Stack) Working copy of s3. (8x) + mem_inc = [registers.rsp] # (Stack) Counter increment vector. + + # Increment the counter for one side of the state vector. + VPXOR(ymm_tmp0, ymm_tmp0, ymm_tmp0) + VMOVDQU(mem_inc, ymm_tmp0) + reg_tmp = GeneralPurposeRegister32() + MOV(reg_tmp, 0x00000001) + MOV([registers.rsp+16], reg_tmp) + VBROADCASTI128(ymm_v3, x_s3) + VPADDQ(ymm_v3, ymm_v3, [registers.rsp]) + VMOVDQA(mem_s3, ymm_v3) + + # As we process 2xN blocks at a time, so the counter increment for both + # sides of the state vector is 2. + MOV(reg_tmp, 0x00000002) + MOV([registers.rsp], reg_tmp) + MOV([registers.rsp+16], reg_tmp) + + out_write_even = Label() + out_write_odd = Label() + + # + # 8 blocks at a time. Ted Krovetz's avx2 code does not do this, but it's + # a decent gain despite all the pain... + # + + reg_rounds = GeneralPurposeRegister64() + + vector_loop8 = Loop() + SUB(reg_blocks, 8) + JB(vector_loop8.end) + with vector_loop8: + VBROADCASTI128(ymm_v0, x_s0) + VBROADCASTI128(ymm_v1, x_s1) + VBROADCASTI128(ymm_v2, x_s2) + VMOVDQA(ymm_v3, mem_s3) + + VMOVDQA(ymm_v4, ymm_v0) + VMOVDQA(ymm_v5, ymm_v1) + VMOVDQA(ymm_v6, ymm_v2) + VPADDQ(ymm_v7, ymm_v3, mem_inc) + + VMOVDQA(ymm_v8, ymm_v0) + VMOVDQA(ymm_v9, ymm_v1) + VMOVDQA(ymm_v10, ymm_v2) + VPADDQ(ymm_v11, ymm_v7, mem_inc) + + VMOVDQA(ymm_v12, ymm_v0) + VMOVDQA(ymm_v13, ymm_v1) + VMOVDQA(ymm_v14, ymm_v2) + VPADDQ(ymm_v15, ymm_v11, mem_inc) + + MOV(reg_rounds, 20) + rounds_loop8 = Loop() + with rounds_loop8: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + ROTW16_avx2(ymm_tmp0, ymm_v11) + ROTW16_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + ROTW12_avx2(ymm_tmp0, ymm_v9) + ROTW12_avx2(ymm_tmp0, ymm_v13) + + # a += b; d ^= a; d = ROTW8(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + ROTW8_avx2(ymm_tmp0, ymm_v11) + ROTW8_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + ROTW7_avx2(ymm_tmp0, ymm_v9) + ROTW7_avx2(ymm_tmp0, ymm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v5, ymm_v5, 0x39) + VPSHUFD(ymm_v9, ymm_v9, 0x39) + VPSHUFD(ymm_v13, ymm_v13, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v10, ymm_v10, 0x4e) + VPSHUFD(ymm_v14, ymm_v14, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + VPSHUFD(ymm_v7, ymm_v7, 0x93) + VPSHUFD(ymm_v11, ymm_v11, 0x93) + VPSHUFD(ymm_v15, ymm_v15, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + ROTW16_avx2(ymm_tmp0, ymm_v11) + ROTW16_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + ROTW12_avx2(ymm_tmp0, ymm_v9) + ROTW12_avx2(ymm_tmp0, ymm_v13) + + # a += b; d ^= a; d = ROTW8(d); + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + ADD_avx2(ymm_v8, ymm_v9) + ADD_avx2(ymm_v12, ymm_v13) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + XOR_avx2(ymm_v11, ymm_v8) + XOR_avx2(ymm_v15, ymm_v12) + + VMOVDQA(mem_tmp0, ymm_tmp0) # Save + + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + ROTW8_avx2(ymm_tmp0, ymm_v11) + ROTW8_avx2(ymm_tmp0, ymm_v15) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + ADD_avx2(ymm_v10, ymm_v11) + ADD_avx2(ymm_v14, ymm_v15) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + XOR_avx2(ymm_v9, ymm_v10) + XOR_avx2(ymm_v13, ymm_v14) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + ROTW7_avx2(ymm_tmp0, ymm_v9) + ROTW7_avx2(ymm_tmp0, ymm_v13) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v5, ymm_v5, 0x93) + VPSHUFD(ymm_v9, ymm_v9, 0x93) + VPSHUFD(ymm_v13, ymm_v13, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v10, ymm_v10, 0x4e) + VPSHUFD(ymm_v14, ymm_v14, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + VPSHUFD(ymm_v7, ymm_v7, 0x39) + VPSHUFD(ymm_v11, ymm_v11, 0x39) + VPSHUFD(ymm_v15, ymm_v15, 0x39) + + VMOVDQA(ymm_tmp0, mem_tmp0) # Restore + + SUB(reg_rounds, 2) + JNZ(rounds_loop8.begin) + + # ymm_v12 is in mem_tmp0 and is current.... + + # XXX: I assume VBROADCASTI128 is about as fast as VMOVDQA.... + VBROADCASTI128(ymm_tmp0, x_s0) + ADD_avx2(ymm_v0, ymm_tmp0) + ADD_avx2(ymm_v4, ymm_tmp0) + ADD_avx2(ymm_v8, ymm_tmp0) + ADD_avx2(ymm_tmp0, mem_tmp0) + VMOVDQA(mem_tmp0, ymm_tmp0) + + VBROADCASTI128(ymm_tmp0, x_s1) + ADD_avx2(ymm_v1, ymm_tmp0) + ADD_avx2(ymm_v5, ymm_tmp0) + ADD_avx2(ymm_v9, ymm_tmp0) + ADD_avx2(ymm_v13, ymm_tmp0) + + VBROADCASTI128(ymm_tmp0, x_s2) + ADD_avx2(ymm_v2, ymm_tmp0) + ADD_avx2(ymm_v6, ymm_tmp0) + ADD_avx2(ymm_v10, ymm_tmp0) + ADD_avx2(ymm_v14, ymm_tmp0) + + ADD_avx2(ymm_v3, mem_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) + VMOVDQA(ymm_v3, mem_s3) + ADD_avx2(ymm_v3, mem_inc) + + ADD_avx2(ymm_v7, ymm_v3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) + ADD_avx2(ymm_v3, mem_inc) + + ADD_avx2(ymm_v11, ymm_v3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 256, ymm_v8, ymm_v9, ymm_v10, ymm_v11) + ADD_avx2(ymm_v3, mem_inc) + + VMOVDQA(ymm_v12, mem_tmp0) + ADD_avx2(ymm_v15, ymm_v3) + WriteXor_avx2(ymm_v0, reg_inp, reg_outp, 384, ymm_v12, ymm_v13, ymm_v14, ymm_v15) + ADD_avx2(ymm_v3, mem_inc) + + VMOVDQA(mem_s3, ymm_v3) + + ADD(reg_inp, 8 * 64) + ADD(reg_outp, 8 * 64) + + SUB(reg_blocks, 8) + JAE(vector_loop8.begin) + + # ymm_v3 contains a current copy of mem_s3 either from when it was built, + # or because the loop updates it. Copy this before we mess with the block + # counter in case we need to write it back and return. + ymm_s3 = ymm_v11 + VMOVDQA(ymm_s3, ymm_v3) + + ADD(reg_blocks, 8) + JZ(out_write_even) + + # We now actually can do everything in registers. + ymm_s0 = ymm_v8 + VBROADCASTI128(ymm_s0, x_s0) + ymm_s1 = ymm_v9 + VBROADCASTI128(ymm_s1, x_s1) + ymm_s2 = ymm_v10 + VBROADCASTI128(ymm_s2, x_s2) + ymm_inc = ymm_v14 + VMOVDQA(ymm_inc, mem_inc) + + # + # 4 blocks at a time. + # + + process_2_blocks = Label() + SUB(reg_blocks, 4) + JB(process_2_blocks) # < 4 blocks remaining. + + VMOVDQA(ymm_v0, ymm_s0) + VMOVDQA(ymm_v1, ymm_s1) + VMOVDQA(ymm_v2, ymm_s2) + VMOVDQA(ymm_v3, ymm_s3) + + VMOVDQA(ymm_v4, ymm_v0) + VMOVDQA(ymm_v5, ymm_v1) + VMOVDQA(ymm_v6, ymm_v2) + VPADDQ(ymm_v7, ymm_v3, ymm_inc) + + MOV(reg_rounds, 20) + rounds_loop4 = Loop() + with rounds_loop4: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v5, ymm_v5, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + VPSHUFD(ymm_v7, ymm_v7, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW16_avx2(ymm_tmp0, ymm_v3) + ROTW16_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW12_avx2(ymm_tmp0, ymm_v1) + ROTW12_avx2(ymm_tmp0, ymm_v5) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + ADD_avx2(ymm_v4, ymm_v5) + XOR_avx2(ymm_v3, ymm_v0) + XOR_avx2(ymm_v7, ymm_v4) + ROTW8_avx2(ymm_tmp0, ymm_v3) + ROTW8_avx2(ymm_tmp0, ymm_v7) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + ADD_avx2(ymm_v6, ymm_v7) + XOR_avx2(ymm_v1, ymm_v2) + XOR_avx2(ymm_v5, ymm_v6) + ROTW7_avx2(ymm_tmp0, ymm_v1) + ROTW7_avx2(ymm_tmp0, ymm_v5) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v5, ymm_v5, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v6, ymm_v6, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + VPSHUFD(ymm_v7, ymm_v7, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop4.begin) + + ADD_avx2(ymm_v0, ymm_s0) + ADD_avx2(ymm_v1, ymm_s1) + ADD_avx2(ymm_v2, ymm_s2) + ADD_avx2(ymm_v3, ymm_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) + ADD_avx2(ymm_s3, ymm_inc) + + ADD_avx2(ymm_v4, ymm_s0) + ADD_avx2(ymm_v5, ymm_s1) + ADD_avx2(ymm_v6, ymm_s2) + ADD_avx2(ymm_v7, ymm_s3) + WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) + ADD_avx2(ymm_s3, ymm_inc) + + ADD(reg_inp, 4 * 64) + ADD(reg_outp, 4 * 64) + SUB(reg_blocks, 4) + + LABEL(process_2_blocks) + ADD(reg_blocks, 4) + JZ(out_write_even) # 0 blocks left. + + # + # 2/1 blocks at a time. The two codepaths are unified because + # with AVX2 we do 2 blocks at a time anyway, and this only gets called + # if 3/2/1 blocks are remaining, so the extra branches don't hurt that + # much. + # + + vector_loop2 = Loop() + with vector_loop2: + VMOVDQA(ymm_v0, ymm_s0) + VMOVDQA(ymm_v1, ymm_s1) + VMOVDQA(ymm_v2, ymm_s2) + VMOVDQA(ymm_v3, ymm_s3) + + MOV(reg_rounds, 20) + rounds_loop2 = Loop() + with rounds_loop2: + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW16_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW12_avx2(ymm_tmp0, ymm_v1) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW8_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW7_avx2(ymm_tmp0, ymm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x39) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x93) + + # a += b; d ^= a; d = ROTW16(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW16_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW12(b); + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW12_avx2(ymm_tmp0, ymm_v1) + + # a += b; d ^= a; d = ROTW8(d); + ADD_avx2(ymm_v0, ymm_v1) + XOR_avx2(ymm_v3, ymm_v0) + ROTW8_avx2(ymm_tmp0, ymm_v3) + + # c += d; b ^= c; b = ROTW7(b) + ADD_avx2(ymm_v2, ymm_v3) + XOR_avx2(ymm_v1, ymm_v2) + ROTW7_avx2(ymm_tmp0, ymm_v1) + + # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); + VPSHUFD(ymm_v1, ymm_v1, 0x93) + VPSHUFD(ymm_v2, ymm_v2, 0x4e) + VPSHUFD(ymm_v3, ymm_v3, 0x39) + + SUB(reg_rounds, 2) + JNZ(rounds_loop2.begin) + + ADD_avx2(ymm_v0, ymm_s0) + ADD_avx2(ymm_v1, ymm_s1) + ADD_avx2(ymm_v2, ymm_s2) + ADD_avx2(ymm_v3, ymm_s3) + + # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); + VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x20) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp]) + VMOVDQU([reg_outp], ymm_tmp0) + + # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); + VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x20) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+32]) + VMOVDQU([reg_outp+32], ymm_tmp0) + + SUB(reg_blocks, 1) + JZ(out_write_odd) + + ADD_avx2(ymm_s3, ymm_inc) + + # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); + VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x31) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+64]) + VMOVDQU([reg_outp+64], ymm_tmp0) + + # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); + VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x31) + VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+96]) + VMOVDQU([reg_outp+96], ymm_tmp0) + + SUB(reg_blocks, 1) + JZ(out_write_even) + + ADD(reg_inp, 2 * 64) + ADD(reg_outp, 2 * 64) + JMP(vector_loop2.begin) + + LABEL(out_write_odd) + VPERM2I128(ymm_s3, ymm_s3, ymm_s3, 0x01) # Odd number of blocks. + + LABEL(out_write_even) + VMOVDQU(x_s3, ymm_s3.as_xmm) # Write back ymm_s3 to x_v3 + + # Paranoia, cleanse the scratch space. + VPXOR(ymm_v0, ymm_v0, ymm_v0) + VMOVDQA(mem_tmp0, ymm_v0) + VMOVDQA(mem_s3, ymm_v0) + + # Clear all YMM (and XMM) registers. + VZEROALL() + + # Remove our stack allocation. + MOV(registers.rsp, reg_sp_save) + + RETURN() + +# +# CPUID +# + +cpuidParams = Argument(ptr(uint32_t)) + +with Function("cpuidAmd64", (cpuidParams,)): + reg_params = registers.r15 + LOAD.ARGUMENT(reg_params, cpuidParams) + + MOV(registers.eax, [reg_params]) + MOV(registers.ecx, [reg_params+8]) + + CPUID() + + MOV([reg_params], registers.eax) + MOV([reg_params+4], registers.ebx) + MOV([reg_params+8], registers.ecx) + MOV([reg_params+12], registers.edx) + + RETURN() + +# +# XGETBV (ECX = 0) +# + +xcrVec = Argument(ptr(uint32_t)) + +with Function("xgetbv0Amd64", (xcrVec,)): + reg_vec = GeneralPurposeRegister64() + + LOAD.ARGUMENT(reg_vec, xcrVec) + + XOR(registers.ecx, registers.ecx) + + XGETBV() + + MOV([reg_vec], registers.eax) + MOV([reg_vec+4], registers.edx) + + RETURN() diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s new file mode 100644 index 0000000..e3792af --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s @@ -0,0 +1,1180 @@ +// +build !noasm +// Generated by PeachPy 0.2.0 from chacha20_amd64.py + + +// func blocksAmd64SSE2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) +TEXT ·blocksAmd64SSE2(SB),4,$0-32 + MOVQ x+0(FP), AX + MOVQ inp+8(FP), BX + MOVQ outp+16(FP), CX + MOVQ nrBlocks+24(FP), DX + MOVQ SP, DI + ANDQ $18446744073709551584, SP + SUBQ $32, SP + PXOR X0, X0 + SUBQ $32, SP + MOVO X0, 0(SP) + MOVL $1, SI + MOVL SI, 0(SP) + SUBQ $4, DX + JCS vector_loop4_end +vector_loop4_begin: + MOVOU 0(AX), X0 + MOVOU 16(AX), X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ 0(SP), X7 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X7, X11 + PADDQ 0(SP), X11 + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X11, X15 + PADDQ 0(SP), X15 + MOVQ $20, SI +rounds_loop4_begin: + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $16, X12 + PSRLL $16, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $16, X12 + PSRLL $16, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $12, X12 + PSRLL $20, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $12, X12 + PSRLL $20, X13 + PXOR X12, X13 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $8, X12 + PSRLL $24, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $8, X12 + PSRLL $24, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $7, X12 + PSRLL $25, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $7, X12 + PSRLL $25, X13 + PXOR X12, X13 + PSHUFL $57, X1, X1 + PSHUFL $57, X5, X5 + PSHUFL $57, X9, X9 + PSHUFL $57, X13, X13 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $78, X10, X10 + PSHUFL $78, X14, X14 + PSHUFL $147, X3, X3 + PSHUFL $147, X7, X7 + PSHUFL $147, X11, X11 + PSHUFL $147, X15, X15 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $16, X12 + PSRLL $16, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $16, X12 + PSRLL $16, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $12, X12 + PSRLL $20, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $12, X12 + PSRLL $20, X13 + PXOR X12, X13 + MOVO 16(SP), X12 + PADDL X1, X0 + PADDL X5, X4 + PADDL X9, X8 + PADDL X13, X12 + PXOR X0, X3 + PXOR X4, X7 + PXOR X8, X11 + PXOR X12, X15 + MOVO X12, 16(SP) + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + MOVO X11, X12 + PSLLL $8, X12 + PSRLL $24, X11 + PXOR X12, X11 + MOVO X15, X12 + PSLLL $8, X12 + PSRLL $24, X15 + PXOR X12, X15 + PADDL X3, X2 + PADDL X7, X6 + PADDL X11, X10 + PADDL X15, X14 + PXOR X2, X1 + PXOR X6, X5 + PXOR X10, X9 + PXOR X14, X13 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + MOVO X9, X12 + PSLLL $7, X12 + PSRLL $25, X9 + PXOR X12, X9 + MOVO X13, X12 + PSLLL $7, X12 + PSRLL $25, X13 + PXOR X12, X13 + PSHUFL $147, X1, X1 + PSHUFL $147, X5, X5 + PSHUFL $147, X9, X9 + PSHUFL $147, X13, X13 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $78, X10, X10 + PSHUFL $78, X14, X14 + PSHUFL $57, X3, X3 + PSHUFL $57, X7, X7 + PSHUFL $57, X11, X11 + PSHUFL $57, X15, X15 + MOVO 16(SP), X12 + SUBQ $2, SI + JNE rounds_loop4_begin + MOVO X12, 16(SP) + PADDL 0(AX), X0 + PADDL 16(AX), X1 + PADDL 32(AX), X2 + PADDL 48(AX), X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + MOVOU 48(AX), X3 + PADDQ 0(SP), X3 + PADDL 0(AX), X4 + PADDL 16(AX), X5 + PADDL 32(AX), X6 + PADDL X3, X7 + MOVOU 64(BX), X12 + PXOR X4, X12 + MOVOU X12, 64(CX) + MOVOU 80(BX), X12 + PXOR X5, X12 + MOVOU X12, 80(CX) + MOVOU 96(BX), X12 + PXOR X6, X12 + MOVOU X12, 96(CX) + MOVOU 112(BX), X12 + PXOR X7, X12 + MOVOU X12, 112(CX) + PADDQ 0(SP), X3 + PADDL 0(AX), X8 + PADDL 16(AX), X9 + PADDL 32(AX), X10 + PADDL X3, X11 + MOVOU 128(BX), X12 + PXOR X8, X12 + MOVOU X12, 128(CX) + MOVOU 144(BX), X12 + PXOR X9, X12 + MOVOU X12, 144(CX) + MOVOU 160(BX), X12 + PXOR X10, X12 + MOVOU X12, 160(CX) + MOVOU 176(BX), X12 + PXOR X11, X12 + MOVOU X12, 176(CX) + PADDQ 0(SP), X3 + MOVO 16(SP), X12 + PADDL 0(AX), X12 + PADDL 16(AX), X13 + PADDL 32(AX), X14 + PADDL X3, X15 + MOVOU 192(BX), X0 + PXOR X12, X0 + MOVOU X0, 192(CX) + MOVOU 208(BX), X0 + PXOR X13, X0 + MOVOU X0, 208(CX) + MOVOU 224(BX), X0 + PXOR X14, X0 + MOVOU X0, 224(CX) + MOVOU 240(BX), X0 + PXOR X15, X0 + MOVOU X0, 240(CX) + PADDQ 0(SP), X3 + MOVOU X3, 48(AX) + ADDQ $256, BX + ADDQ $256, CX + SUBQ $4, DX + JCC vector_loop4_begin +vector_loop4_end: + ADDQ $4, DX + JEQ out + MOVOU 0(AX), X8 + MOVOU 16(AX), X9 + MOVOU 32(AX), X10 + MOVOU 48(AX), X11 + MOVO 0(SP), X13 + SUBQ $2, DX + JCS process_1_block + MOVO X8, X0 + MOVO X9, X1 + MOVO X10, X2 + MOVO X11, X3 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ X13, X7 + MOVQ $20, SI +rounds_loop2_begin: + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + PSHUFL $57, X1, X1 + PSHUFL $57, X5, X5 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $147, X3, X3 + PSHUFL $147, X7, X7 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $16, X12 + PSRLL $16, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $12, X12 + PSRLL $20, X5 + PXOR X12, X5 + PADDL X1, X0 + PADDL X5, X4 + PXOR X0, X3 + PXOR X4, X7 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + MOVO X7, X12 + PSLLL $8, X12 + PSRLL $24, X7 + PXOR X12, X7 + PADDL X3, X2 + PADDL X7, X6 + PXOR X2, X1 + PXOR X6, X5 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + MOVO X5, X12 + PSLLL $7, X12 + PSRLL $25, X5 + PXOR X12, X5 + PSHUFL $147, X1, X1 + PSHUFL $147, X5, X5 + PSHUFL $78, X2, X2 + PSHUFL $78, X6, X6 + PSHUFL $57, X3, X3 + PSHUFL $57, X7, X7 + SUBQ $2, SI + JNE rounds_loop2_begin + PADDL X8, X0 + PADDL X9, X1 + PADDL X10, X2 + PADDL X11, X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + PADDQ X13, X11 + PADDL X8, X4 + PADDL X9, X5 + PADDL X10, X6 + PADDL X11, X7 + MOVOU 64(BX), X12 + PXOR X4, X12 + MOVOU X12, 64(CX) + MOVOU 80(BX), X12 + PXOR X5, X12 + MOVOU X12, 80(CX) + MOVOU 96(BX), X12 + PXOR X6, X12 + MOVOU X12, 96(CX) + MOVOU 112(BX), X12 + PXOR X7, X12 + MOVOU X12, 112(CX) + PADDQ X13, X11 + ADDQ $128, BX + ADDQ $128, CX + SUBQ $2, DX +process_1_block: + ADDQ $2, DX + JEQ out_serial + MOVO X8, X0 + MOVO X9, X1 + MOVO X10, X2 + MOVO X11, X3 + MOVQ $20, SI +rounds_loop1_begin: + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + PSHUFL $57, X1, X1 + PSHUFL $78, X2, X2 + PSHUFL $147, X3, X3 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $16, X12 + PSRLL $16, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $12, X12 + PSRLL $20, X1 + PXOR X12, X1 + PADDL X1, X0 + PXOR X0, X3 + MOVO X3, X12 + PSLLL $8, X12 + PSRLL $24, X3 + PXOR X12, X3 + PADDL X3, X2 + PXOR X2, X1 + MOVO X1, X12 + PSLLL $7, X12 + PSRLL $25, X1 + PXOR X12, X1 + PSHUFL $147, X1, X1 + PSHUFL $78, X2, X2 + PSHUFL $57, X3, X3 + SUBQ $2, SI + JNE rounds_loop1_begin + PADDL X8, X0 + PADDL X9, X1 + PADDL X10, X2 + PADDL X11, X3 + MOVOU 0(BX), X12 + PXOR X0, X12 + MOVOU X12, 0(CX) + MOVOU 16(BX), X12 + PXOR X1, X12 + MOVOU X12, 16(CX) + MOVOU 32(BX), X12 + PXOR X2, X12 + MOVOU X12, 32(CX) + MOVOU 48(BX), X12 + PXOR X3, X12 + MOVOU X12, 48(CX) + PADDQ X13, X11 +out_serial: + MOVOU X11, 48(AX) +out: + PXOR X0, X0 + MOVO X0, 16(SP) + MOVQ DI, SP + RET + +// func blocksAmd64AVX2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) +TEXT ·blocksAmd64AVX2(SB),4,$0-32 + MOVQ x+0(FP), AX + MOVQ inp+8(FP), BX + MOVQ outp+16(FP), CX + MOVQ nrBlocks+24(FP), DX + MOVQ SP, DI + ANDQ $18446744073709551584, SP + SUBQ $32, SP + SUBQ $96, SP + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm0, ymm0, ymm0 + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x04; BYTE $0x24 // VMOVDQU [rsp], ymm0 + MOVL $1, SI + MOVL SI, 16(SP) + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x48; BYTE $0x30 // VBROADCASTI128 ymm1, [rax + 48] + BYTE $0xC5; BYTE $0xF5; BYTE $0xD4; BYTE $0x0C; BYTE $0x24 // VPADDQ ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 + MOVL $2, SI + MOVL SI, 0(SP) + MOVL SI, 16(SP) + SUBQ $8, DX + JCS vector_loop8_end +vector_loop8_begin: + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x10 // VBROADCASTI128 ymm2, [rax] + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x10 // VBROADCASTI128 ymm3, [rax + 16] + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x60; BYTE $0x20 // VBROADCASTI128 ymm4, [rax + 32] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 + BYTE $0xC5; BYTE $0x75; BYTE $0xD4; BYTE $0x04; BYTE $0x24 // VPADDQ ymm8, ymm1, [rsp] + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xCA // VMOVDQA ymm9, ymm2 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xD3 // VMOVDQA ymm10, ymm3 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xDC // VMOVDQA ymm11, ymm4 + BYTE $0xC5; BYTE $0x3D; BYTE $0xD4; BYTE $0x24; BYTE $0x24 // VPADDQ ymm12, ymm8, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xC2 // VMOVDQA ymm0, ymm2 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xEB // VMOVDQA ymm13, ymm3 + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xF4 // VMOVDQA ymm14, ymm4 + BYTE $0xC5; BYTE $0x1D; BYTE $0xD4; BYTE $0x3C; BYTE $0x24 // VPADDQ ymm15, ymm12, [rsp] + MOVQ $20, SI +rounds_loop8_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x39 // VPSHUFD ymm10, ymm10, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x39 // VPSHUFD ymm13, ymm13, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x93 // VPSHUFD ymm12, ymm12, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x93 // VPSHUFD ymm15, ymm15, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 + BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 + BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 + BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 + BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 + BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 + BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x93 // VPSHUFD ymm10, ymm10, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x93 // VPSHUFD ymm13, ymm13, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x39 // VPSHUFD ymm12, ymm12, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x39 // VPSHUFD ymm15, ymm15, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + SUBQ $2, SI + JNE rounds_loop8_begin + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x00 // VBROADCASTI128 ymm0, [rax] + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm2, ymm2, ymm0 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm5, ymm5, ymm0 + BYTE $0xC5; BYTE $0x35; BYTE $0xFE; BYTE $0xC8 // VPADDD ymm9, ymm9, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0xFE; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VPADDD ymm0, ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x10 // VBROADCASTI128 ymm0, [rax + 16] + BYTE $0xC5; BYTE $0xE5; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xCD; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0x2D; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm10, ymm10, ymm0 + BYTE $0xC5; BYTE $0x15; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm13, ymm13, ymm0 + BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x20 // VBROADCASTI128 ymm0, [rax + 32] + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE0 // VPADDD ymm4, ymm4, ymm0 + BYTE $0xC5; BYTE $0xC5; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm0 + BYTE $0xC5; BYTE $0x25; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm11, ymm11, ymm0 + BYTE $0xC5; BYTE $0x0D; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm14, ymm14, ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VPADDD ymm1, ymm1, [rsp + 32] + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0x3D; BYTE $0xFE; BYTE $0xC1 // VPADDD ymm8, ymm8, ymm1 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0x1D; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm12, ymm12, ymm1 + BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x20 // VPERM2I128 ymm0, ymm9, ymm10, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 256] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 256], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x20 // VPERM2I128 ymm0, ymm11, ymm12, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 288] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 288], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x31 // VPERM2I128 ymm0, ymm9, ymm10, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 320] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 320], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x31 // VPERM2I128 ymm0, ymm11, ymm12, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 352] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 352], ymm0 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] + BYTE $0xC5; BYTE $0x05; BYTE $0xFE; BYTE $0xF9 // VPADDD ymm15, ymm15, ymm1 + BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x20 // VPERM2I128 ymm2, ymm0, ymm13, 32 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 384] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 384], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x20 // VPERM2I128 ymm2, ymm14, ymm15, 32 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 416] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 416], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x31 // VPERM2I128 ymm2, ymm0, ymm13, 49 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 448] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 448], ymm2 + BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x31 // VPERM2I128 ymm2, ymm14, ymm15, 49 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 480] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 480], ymm2 + BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 + ADDQ $512, BX + ADDQ $512, CX + SUBQ $8, DX + JCC vector_loop8_begin +vector_loop8_end: + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xE1 // VMOVDQA ymm12, ymm1 + ADDQ $8, DX + JEQ out_write_even + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x08 // VBROADCASTI128 ymm9, [rax] + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x50; BYTE $0x10 // VBROADCASTI128 ymm10, [rax + 16] + BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x20 // VBROADCASTI128 ymm11, [rax + 32] + BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0x34; BYTE $0x24 // VMOVDQA ymm14, [rsp] + SUBQ $4, DX + JCS process_2_blocks + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 + BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 + BYTE $0xC4; BYTE $0x41; BYTE $0x75; BYTE $0xD4; BYTE $0xC6 // VPADDQ ymm8, ymm1, ymm14 + MOVQ $20, SI +rounds_loop4_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 + BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 + BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 + BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 + BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 + SUBQ $2, SI + JNE rounds_loop4_begin + BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 + BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + BYTE $0xC4; BYTE $0xC1; BYTE $0x55; BYTE $0xFE; BYTE $0xE9 // VPADDD ymm5, ymm5, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x4D; BYTE $0xFE; BYTE $0xF2 // VPADDD ymm6, ymm6, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xFB // VPADDD ymm7, ymm7, ymm11 + BYTE $0xC4; BYTE $0x41; BYTE $0x3D; BYTE $0xFE; BYTE $0xC4 // VPADDD ymm8, ymm8, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 + BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + ADDQ $256, BX + ADDQ $256, CX + SUBQ $4, DX +process_2_blocks: + ADDQ $4, DX + JEQ out_write_even +vector_loop2_begin: + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 + BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 + MOVQ $20, SI +rounds_loop2_begin: + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 + BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 + BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 + BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 + BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 + BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 + BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 + BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 + SUBQ $2, SI + JNE rounds_loop2_begin + BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 + BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 + BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 + BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 + SUBQ $1, DX + JEQ out_write_odd + BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 + BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 + BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 + BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] + BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 + SUBQ $1, DX + JEQ out_write_even + ADDQ $128, BX + ADDQ $128, CX + JMP vector_loop2_begin +out_write_odd: + BYTE $0xC4; BYTE $0x43; BYTE $0x1D; BYTE $0x46; BYTE $0xE4; BYTE $0x01 // VPERM2I128 ymm12, ymm12, ymm12, 1 +out_write_even: + BYTE $0xC5; BYTE $0x7A; BYTE $0x7F; BYTE $0x60; BYTE $0x30 // VMOVDQU [rax + 48], xmm12 + BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0xD2 // VPXOR ymm2, ymm2, ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm2 + BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm2 + BYTE $0xC5; BYTE $0xFC; BYTE $0x77 // VZEROALL + MOVQ DI, SP + RET + +// func cpuidAmd64(cpuidParams *uint32) +TEXT ·cpuidAmd64(SB),4,$0-8 + MOVQ cpuidParams+0(FP), R15 + MOVL 0(R15), AX + MOVL 8(R15), CX + CPUID + MOVL AX, 0(R15) + MOVL BX, 4(R15) + MOVL CX, 8(R15) + MOVL DX, 12(R15) + RET + +// func xgetbv0Amd64(xcrVec *uint32) +TEXT ·xgetbv0Amd64(SB),4,$0-8 + MOVQ xcrVec+0(FP), BX + XORL CX, CX + BYTE $0x0F; BYTE $0x01; BYTE $0xD0 // XGETBV + MOVL AX, 0(BX) + MOVL DX, 4(BX) + RET diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go new file mode 100644 index 0000000..fcdc8c6 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go @@ -0,0 +1,394 @@ +// chacha20_ref.go - Reference ChaCha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build !go1.9 + +package chacha20 + +import ( + "encoding/binary" + "math" + "unsafe" +) + +func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + // This routine ignores x[0]...x[4] in favor the const values since it's + // ever so slightly faster. + + for n := 0; n < nrBlocks; n++ { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 16) | (x12 >> 16) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 12) | (x4 >> 20) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 8) | (x12 >> 24) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 7) | (x4 >> 25) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 16) | (x13 >> 16) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 12) | (x5 >> 20) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 8) | (x13 >> 24) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 16) | (x14 >> 16) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 12) | (x6 >> 20) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 8) | (x14 >> 24) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 16) | (x15 >> 16) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 12) | (x7 >> 20) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 8) | (x15 >> 24) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 16) | (x15 >> 16) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 12) | (x5 >> 20) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 8) | (x15 >> 24) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 16) | (x12 >> 16) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 12) | (x6 >> 20) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 8) | (x12 >> 24) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 16) | (x13 >> 16) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 12) | (x7 >> 20) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 8) | (x13 >> 24) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 16) | (x14 >> 16) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 12) | (x4 >> 20) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 8) | (x14 >> 24) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 7) | (x4 >> 25) + } + + // On amd64 at least, this is a rather big boost. + if useUnsafe { + if in != nil { + inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = inArr[0] ^ (x0 + sigma0) + outArr[1] = inArr[1] ^ (x1 + sigma1) + outArr[2] = inArr[2] ^ (x2 + sigma2) + outArr[3] = inArr[3] ^ (x3 + sigma3) + outArr[4] = inArr[4] ^ (x4 + x[4]) + outArr[5] = inArr[5] ^ (x5 + x[5]) + outArr[6] = inArr[6] ^ (x6 + x[6]) + outArr[7] = inArr[7] ^ (x7 + x[7]) + outArr[8] = inArr[8] ^ (x8 + x[8]) + outArr[9] = inArr[9] ^ (x9 + x[9]) + outArr[10] = inArr[10] ^ (x10 + x[10]) + outArr[11] = inArr[11] ^ (x11 + x[11]) + outArr[12] = inArr[12] ^ (x12 + x[12]) + outArr[13] = inArr[13] ^ (x13 + x[13]) + outArr[14] = inArr[14] ^ (x14 + x[14]) + outArr[15] = inArr[15] ^ (x15 + x[15]) + } else { + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = x0 + sigma0 + outArr[1] = x1 + sigma1 + outArr[2] = x2 + sigma2 + outArr[3] = x3 + sigma3 + outArr[4] = x4 + x[4] + outArr[5] = x5 + x[5] + outArr[6] = x6 + x[6] + outArr[7] = x7 + x[7] + outArr[8] = x8 + x[8] + outArr[9] = x9 + x[9] + outArr[10] = x10 + x[10] + outArr[11] = x11 + x[11] + outArr[12] = x12 + x[12] + outArr[13] = x13 + x[13] + outArr[14] = x14 + x[14] + outArr[15] = x15 + x[15] + } + } else { + // Slow path, either the architecture cares about alignment, or is not little endian. + x0 += sigma0 + x1 += sigma1 + x2 += sigma2 + x3 += sigma3 + x4 += x[4] + x5 += x[5] + x6 += x[6] + x7 += x[7] + x8 += x[8] + x9 += x[9] + x10 += x[10] + x11 += x[11] + x12 += x[12] + x13 += x[13] + x14 += x[14] + x15 += x[15] + if in != nil { + binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) + binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) + binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) + binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) + binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) + binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) + binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) + binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) + binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) + binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) + binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) + binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) + binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) + binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) + binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) + binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) + in = in[BlockSize:] + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x4) + binary.LittleEndian.PutUint32(out[20:24], x5) + binary.LittleEndian.PutUint32(out[24:28], x6) + binary.LittleEndian.PutUint32(out[28:32], x7) + binary.LittleEndian.PutUint32(out[32:36], x8) + binary.LittleEndian.PutUint32(out[36:40], x9) + binary.LittleEndian.PutUint32(out[40:44], x10) + binary.LittleEndian.PutUint32(out[44:48], x11) + binary.LittleEndian.PutUint32(out[48:52], x12) + binary.LittleEndian.PutUint32(out[52:56], x13) + binary.LittleEndian.PutUint32(out[56:60], x14) + binary.LittleEndian.PutUint32(out[60:64], x15) + } + out = out[BlockSize:] + } + + // Stoping at 2^70 bytes per nonce is the user's responsibility. + ctr := uint64(x[13])<<32 | uint64(x[12]) + ctr++ + x[12] = uint32(ctr) + x[13] = uint32(ctr >> 32) + } +} + +func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 16) | (x12 >> 16) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 12) | (x4 >> 20) + x0 += x4 + x12 ^= x0 + x12 = (x12 << 8) | (x12 >> 24) + x8 += x12 + x4 ^= x8 + x4 = (x4 << 7) | (x4 >> 25) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 16) | (x13 >> 16) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 12) | (x5 >> 20) + x1 += x5 + x13 ^= x1 + x13 = (x13 << 8) | (x13 >> 24) + x9 += x13 + x5 ^= x9 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 16) | (x14 >> 16) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 12) | (x6 >> 20) + x2 += x6 + x14 ^= x2 + x14 = (x14 << 8) | (x14 >> 24) + x10 += x14 + x6 ^= x10 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 16) | (x15 >> 16) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 12) | (x7 >> 20) + x3 += x7 + x15 ^= x3 + x15 = (x15 << 8) | (x15 >> 24) + x11 += x15 + x7 ^= x11 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 16) | (x15 >> 16) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 12) | (x5 >> 20) + x0 += x5 + x15 ^= x0 + x15 = (x15 << 8) | (x15 >> 24) + x10 += x15 + x5 ^= x10 + x5 = (x5 << 7) | (x5 >> 25) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 16) | (x12 >> 16) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 12) | (x6 >> 20) + x1 += x6 + x12 ^= x1 + x12 = (x12 << 8) | (x12 >> 24) + x11 += x12 + x6 ^= x11 + x6 = (x6 << 7) | (x6 >> 25) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 16) | (x13 >> 16) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 12) | (x7 >> 20) + x2 += x7 + x13 ^= x2 + x13 = (x13 << 8) | (x13 >> 24) + x8 += x13 + x7 ^= x8 + x7 = (x7 << 7) | (x7 >> 25) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 16) | (x14 >> 16) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 12) | (x4 >> 20) + x3 += x4 + x14 ^= x3 + x14 = (x14 << 8) | (x14 >> 24) + x9 += x14 + x4 ^= x9 + x4 = (x4 << 7) | (x4 >> 25) + } + + // HChaCha returns x0...x3 | x12...x15, which corresponds to the + // indexes of the ChaCha constant and the indexes of the IV. + if useUnsafe { + outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) + outArr[0] = x0 + outArr[1] = x1 + outArr[2] = x2 + outArr[3] = x3 + outArr[4] = x12 + outArr[5] = x13 + outArr[6] = x14 + outArr[7] = x15 + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + } + return +} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go new file mode 100644 index 0000000..8405c22 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go @@ -0,0 +1,395 @@ +// chacha20_ref.go - Reference ChaCha20. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to chacha20, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build go1.9 + +package chacha20 + +import ( + "encoding/binary" + "math" + "math/bits" + "unsafe" +) + +func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { + if isIetf { + var totalBlocks uint64 + totalBlocks = uint64(x[12]) + uint64(nrBlocks) + if totalBlocks > math.MaxUint32 { + panic("chacha20: Exceeded keystream per nonce limit") + } + } + + // This routine ignores x[0]...x[4] in favor the const values since it's + // ever so slightly faster. + + for n := 0; n < nrBlocks; n++ { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + // On amd64 at least, this is a rather big boost. + if useUnsafe { + if in != nil { + inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = inArr[0] ^ (x0 + sigma0) + outArr[1] = inArr[1] ^ (x1 + sigma1) + outArr[2] = inArr[2] ^ (x2 + sigma2) + outArr[3] = inArr[3] ^ (x3 + sigma3) + outArr[4] = inArr[4] ^ (x4 + x[4]) + outArr[5] = inArr[5] ^ (x5 + x[5]) + outArr[6] = inArr[6] ^ (x6 + x[6]) + outArr[7] = inArr[7] ^ (x7 + x[7]) + outArr[8] = inArr[8] ^ (x8 + x[8]) + outArr[9] = inArr[9] ^ (x9 + x[9]) + outArr[10] = inArr[10] ^ (x10 + x[10]) + outArr[11] = inArr[11] ^ (x11 + x[11]) + outArr[12] = inArr[12] ^ (x12 + x[12]) + outArr[13] = inArr[13] ^ (x13 + x[13]) + outArr[14] = inArr[14] ^ (x14 + x[14]) + outArr[15] = inArr[15] ^ (x15 + x[15]) + } else { + outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) + outArr[0] = x0 + sigma0 + outArr[1] = x1 + sigma1 + outArr[2] = x2 + sigma2 + outArr[3] = x3 + sigma3 + outArr[4] = x4 + x[4] + outArr[5] = x5 + x[5] + outArr[6] = x6 + x[6] + outArr[7] = x7 + x[7] + outArr[8] = x8 + x[8] + outArr[9] = x9 + x[9] + outArr[10] = x10 + x[10] + outArr[11] = x11 + x[11] + outArr[12] = x12 + x[12] + outArr[13] = x13 + x[13] + outArr[14] = x14 + x[14] + outArr[15] = x15 + x[15] + } + } else { + // Slow path, either the architecture cares about alignment, or is not little endian. + x0 += sigma0 + x1 += sigma1 + x2 += sigma2 + x3 += sigma3 + x4 += x[4] + x5 += x[5] + x6 += x[6] + x7 += x[7] + x8 += x[8] + x9 += x[9] + x10 += x[10] + x11 += x[11] + x12 += x[12] + x13 += x[13] + x14 += x[14] + x15 += x[15] + if in != nil { + binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) + binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) + binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) + binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) + binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) + binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) + binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) + binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) + binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) + binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) + binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) + binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) + binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) + binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) + binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) + binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) + in = in[BlockSize:] + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x4) + binary.LittleEndian.PutUint32(out[20:24], x5) + binary.LittleEndian.PutUint32(out[24:28], x6) + binary.LittleEndian.PutUint32(out[28:32], x7) + binary.LittleEndian.PutUint32(out[32:36], x8) + binary.LittleEndian.PutUint32(out[36:40], x9) + binary.LittleEndian.PutUint32(out[40:44], x10) + binary.LittleEndian.PutUint32(out[44:48], x11) + binary.LittleEndian.PutUint32(out[48:52], x12) + binary.LittleEndian.PutUint32(out[52:56], x13) + binary.LittleEndian.PutUint32(out[56:60], x14) + binary.LittleEndian.PutUint32(out[60:64], x15) + } + out = out[BlockSize:] + } + + // Stoping at 2^70 bytes per nonce is the user's responsibility. + ctr := uint64(x[13])<<32 | uint64(x[12]) + ctr++ + x[12] = uint32(ctr) + x[13] = uint32(ctr >> 32) + } +} + +func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { + x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] + + for i := chachaRounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + // HChaCha returns x0...x3 | x12...x15, which corresponds to the + // indexes of the ChaCha constant and the indexes of the IV. + if useUnsafe { + outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) + outArr[0] = x0 + outArr[1] = x1 + outArr[2] = x2 + outArr[3] = x3 + outArr[4] = x12 + outArr[5] = x13 + outArr[6] = x14 + outArr[7] = x15 + } else { + binary.LittleEndian.PutUint32(out[0:4], x0) + binary.LittleEndian.PutUint32(out[4:8], x1) + binary.LittleEndian.PutUint32(out[8:12], x2) + binary.LittleEndian.PutUint32(out[12:16], x3) + binary.LittleEndian.PutUint32(out[16:20], x12) + binary.LittleEndian.PutUint32(out[20:24], x13) + binary.LittleEndian.PutUint32(out[24:28], x14) + binary.LittleEndian.PutUint32(out[28:32], x15) + } + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore b/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore new file mode 100644 index 0000000..d38c149 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore @@ -0,0 +1,2 @@ +*.swp +*~ diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE b/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/README.md b/vendor/git.schwanenlied.me/yawning/kyber.git/README.md new file mode 100644 index 0000000..634901c --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/README.md @@ -0,0 +1,24 @@ +### Kyber - IND-CCA2-secure Key Encapsulation Mechanism +#### Yawning Angel (yawning at schwanenlied dot me) + +[![GoDoc](https://godoc.org/git.schwanenlied.me/yawning/kyber.git?status.svg)](https://godoc.org/git.schwanenlied.me/yawning/kyber.git) + +This package implements the Kyber IND-CCA2-secure key encapsulation +mechanism (KEM), based on the hardness of solving the learning-with-errors +(LWE) problem over module lattices as submitted to the NIST Post-Quantum +Cryptography project. + +This implementation is a port of the Public Domain reference implementation +by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, +John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. + +Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in +the Kyber paper are included for users that seek an authenticated key +exchange. + +Note that the algorithm is not finalized yet, and may change in a backward +incompatible manner in the future. The designers currently recommend +combining Kyber with an established pre-quantum algorithm like ECDH, and +using the Kyber-768 parameter set. + +For more information, see the [project home page](https://pq-crystals.org/kyber/index.shtml). diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go b/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go new file mode 100644 index 0000000..31ca4fd --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go @@ -0,0 +1,100 @@ +// cbd.go - Centered binomial distribution. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Load bytes into a 64-bit integer in little-endian order. +func loadLittleEndian(x []byte, bytes int) uint64 { + var r uint64 + for i, v := range x[:bytes] { + r |= uint64(v) << (8 * uint(i)) + } + return r +} + +// Given an array of uniformly random bytes, compute polynomial with +// coefficients distributed according to a centered binomial distribution +// with parameter eta. +func (p *poly) cbd(buf []byte, eta int) { + hardwareAccelImpl.cbdFn(p, buf, eta) +} + +func cbdRef(p *poly, buf []byte, eta int) { + switch eta { + case 3: + var a, b [4]uint32 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[3*i:], 3) + var d uint32 + for j := 0; j < 3; j++ { + d += uint32((t >> uint(j)) & 0x249249) + } + + a[0] = d & 0x7 + b[0] = (d >> 3) & 0x7 + a[1] = (d >> 6) & 0x7 + b[1] = (d >> 9) & 0x7 + a[2] = (d >> 12) & 0x7 + b[2] = (d >> 15) & 0x7 + a[3] = (d >> 18) & 0x7 + b[3] = (d >> 21) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + case 4: + var a, b [4]uint32 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[4*i:], 4) + var d uint32 + for j := 0; j < 4; j++ { + d += uint32((t >> uint(j)) & 0x11111111) + } + + a[0] = d & 0xf + b[0] = (d >> 4) & 0xf + a[1] = (d >> 8) & 0xf + b[1] = (d >> 12) & 0xf + a[2] = (d >> 16) & 0xf + b[2] = (d >> 20) & 0xf + a[3] = (d >> 24) & 0xf + b[3] = (d >> 28) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + case 5: + var a, b [4]uint64 + for i := 0; i < kyberN/4; i++ { + t := loadLittleEndian(buf[5*i:], 5) + var d uint64 + for j := 0; j < 5; j++ { + d += (t >> uint(j)) & 0x0842108421 + } + + a[0] = d & 0x1f + b[0] = (d >> 5) & 0x1f + a[1] = (d >> 10) & 0x1f + b[1] = (d >> 15) & 0x1f + a[2] = (d >> 20) & 0x1f + b[2] = (d >> 25) & 0x1f + a[3] = (d >> 30) & 0x1f + b[3] = (d >> 35) + + p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) + p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) + p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) + p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) + } + default: + panic("kyber: eta must be in {3,4,5}") + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go b/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go new file mode 100644 index 0000000..8789ad4 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go @@ -0,0 +1,27 @@ +// doc.go - Kyber godoc extras. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// Package kyber implements the Kyber IND-CCA2-secure key encapsulation +// mechanism (KEM), based on the hardness of solving the learning-with-errors +// (LWE) problem over module lattices as submitted to the NIST Post-Quantum +// Cryptography project. +// +// This implementation is a port of the Public Domain reference implementation +// by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, +// John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. +// +// Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in +// the Kyber paper are included for users that seek an authenticated key +// exchange. +// +// Note that the algorithm is not finalized yet, and may change in a backward +// incompatible manner in the future. The designers currently recommend +// combining Kyber with an established pre-quantum algorithm like ECDH, and +// using the Kyber-768 parameter set. +// +// For more information, see https://pq-crystals.org/kyber/index.shtml. +package kyber diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go new file mode 100644 index 0000000..80ec831 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go @@ -0,0 +1,46 @@ +// hwaccel.go - Hardware acceleration hooks. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +var ( + isHardwareAccelerated = false + hardwareAccelImpl = implReference + + implReference = &hwaccelImpl{ + name: "Reference", + nttFn: nttRef, + invnttFn: invnttRef, + pointwiseAccFn: pointwiseAccRef, + cbdFn: cbdRef, + } +) + +type hwaccelImpl struct { + name string + nttFn func(*[kyberN]uint16) + invnttFn func(*[kyberN]uint16) + pointwiseAccFn func(*poly, *polyVec, *polyVec) + cbdFn func(*poly, []byte, int) +} + +func forceDisableHardwareAcceleration() { + // This is for the benefit of testing, so that it's possible to test + // all versions that are supported by the host. + isHardwareAccelerated = false + hardwareAccelImpl = implReference +} + +// IsHardwareAccelerated returns true iff the Kyber implementation will use +// hardware acceleration (eg: AVX2). +func IsHardwareAccelerated() bool { + return isHardwareAccelerated +} + +func init() { + initHardwareAcceleration() +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go new file mode 100644 index 0000000..6413187 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go @@ -0,0 +1,256 @@ +// hwaccel_amd64.go - AMD64 optimized routines. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build amd64,!gccgo,!noasm,go1.10 + +package kyber + +var zetasExp = [752]uint16{ + 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, + 3777, 3777, 3777, 3777, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, + 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 3625, 3625, 3625, 3625, + 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, + 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, + 3985, 3985, 3985, 3985, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, + 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 2456, 2456, 2456, 2456, + 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, + 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, + 2194, 2194, 2194, 2194, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 5431, 5431, 5431, 5431, 5431, 5431, + 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 834, 834, + 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, + 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, + 5186, 5186, 5186, 5186, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, + 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, + 5980, 5980, 5980, 5980, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, + 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 2816, 2816, 2816, 2816, + 2816, 2816, 2816, 2816, 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, + 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 1986, 1986, 1986, 1986, + 1986, 1986, 1986, 1986, 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, + 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 3706, 3706, 3706, 3706, + 3706, 3706, 3706, 3706, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, + 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, 5124, 5124, 5124, 5124, + 5124, 5124, 5124, 5124, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, + 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 4851, 4851, 4851, 4851, + 4851, 4851, 4851, 4851, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, + 617, 617, 617, 617, 617, 617, 617, 617, 1921, 1921, 1921, 1921, 1921, + 1921, 1921, 1921, 3992, 3992, 3992, 3992, 5943, 5943, 5943, 5943, 3266, + 3266, 3266, 3266, 4081, 4081, 4081, 4081, 810, 810, 810, 810, 1887, + 1887, 1887, 1887, 7043, 7043, 7043, 7043, 7674, 7674, 7674, 7674, 7243, + 7243, 7243, 7243, 7002, 7002, 7002, 7002, 6376, 6376, 6376, 6376, 5921, + 5921, 5921, 5921, 396, 396, 396, 396, 4507, 4507, 4507, 4507, 4126, + 4126, 4126, 4126, 5800, 5800, 5800, 5800, 3772, 3772, 3772, 3772, 5146, + 5146, 5146, 5146, 5241, 5241, 5241, 5241, 5126, 5126, 5126, 5126, 1535, + 1535, 1535, 1535, 7132, 7132, 7132, 7132, 3153, 3153, 3153, 3153, 2310, + 2310, 2310, 2310, 6282, 6282, 6282, 6282, 1321, 1321, 1321, 1321, 514, + 514, 514, 514, 4725, 4725, 4725, 4725, 7578, 7578, 7578, 7578, 2804, + 2804, 2804, 2804, 5638, 5638, 5638, 5638, 6250, 6250, 6250, 6250, 6627, + 6627, 1698, 1698, 4225, 4225, 1166, 1166, 2426, 2426, 3831, 3831, 915, + 915, 7679, 7679, 4264, 4264, 7487, 7487, 2919, 2919, 2789, 2789, 3405, + 3405, 2385, 2385, 5568, 5568, 4949, 4949, 2175, 2175, 373, 373, 3692, + 3692, 6951, 6951, 5925, 5925, 3135, 3135, 5290, 5290, 660, 660, 6184, + 6184, 2572, 2572, 4536, 4536, 1350, 1350, 5457, 5457, 4093, 4093, 6000, + 6000, 2883, 2883, 6291, 6291, 1598, 1598, 3750, 3750, 2762, 2762, 2835, + 2835, 2764, 2764, 5448, 5448, 3816, 3816, 6148, 6148, 1464, 1464, 6954, + 6954, 1521, 1521, 1386, 1386, 4253, 4253, 6760, 6760, 4938, 4938, 5521, + 5521, 2649, 2649, 6822, 6822, 2579, 2579, 1532, 1532, 1919, 1919, 7195, + 7195, 404, 404, 6625, 6625, 783, 783, 1799, 1799, 5016, 5016, 3480, + 3480, 2133, 2133, 4371, 4371, 6513, 6513, 7664, 3744, 2422, 2001, 1278, + 929, 6333, 5451, 7502, 6439, 5622, 6611, 2161, 1649, 2072, 3177, 5610, + 1121, 7245, 236, 715, 670, 7023, 6205, 5303, 2767, 3542, 7455, 1203, + 1181, 7530, 3887, 1712, 7459, 2786, 7230, 4134, 1779, 6530, 7247, 3568, + 3988, 3581, 6095, 1509, 2918, 2339, 6274, 3434, 4131, 2340, 2891, 2998, + 4367, 3461, 4962, 5434, 5092, 1144, 1072, 1295, 4866, 3911, 3450, 3781, + 5423, 796, 3163, 4473, 7092, 2963, 7557, 3214, 3334, 4315, 3936, 3723, + 1931, 7252, 7279, 4273, 83, 6155, 826, 6343, 2345, 5378, 2515, 7039, + 5844, 4716, 6890, 370, 293, 3312, 2083, 5992, 6904, 2070, 2262, 6788, + 2386, 7493, 6162, 4807, 6277, 1012, 2130, 1441, 2532, 4346, 6597, 4338, + 2937, 509, 6278, 2812, 3763, 592, 2005, 3657, 2460, 4004, 3752, 692, + 1669, 2167, 4394, +} + +var zetasInvExp = [752]uint16{ + 3287, 5514, 6012, 6989, 3929, 3677, 5221, 4024, 5676, 7089, 3918, 4869, + 1403, 7172, 4744, 3343, 1084, 3335, 5149, 6240, 5551, 6669, 1404, 2874, + 1519, 188, 5295, 893, 5419, 5611, 777, 1689, 5598, 4369, 7388, 7311, + 791, 2965, 1837, 642, 5166, 2303, 5336, 1338, 6855, 1526, 7598, 3408, + 402, 429, 5750, 3958, 3745, 3366, 4347, 4467, 124, 4718, 589, 3208, + 4518, 6885, 2258, 3900, 4231, 3770, 2815, 6386, 6609, 6537, 2589, 2247, + 2719, 4220, 3314, 4683, 4790, 5341, 3550, 4247, 1407, 5342, 4763, 6172, + 1586, 4100, 3693, 4113, 434, 1151, 5902, 3547, 451, 4895, 222, 5969, + 3794, 151, 6500, 6478, 226, 4139, 4914, 2378, 1476, 658, 7011, 6966, + 7445, 436, 6560, 2071, 4504, 5609, 6032, 5520, 1070, 2059, 1242, 179, + 2230, 1348, 6752, 6403, 5680, 5259, 3937, 17, 1168, 1168, 3310, 3310, + 5548, 5548, 4201, 4201, 2665, 2665, 5882, 5882, 6898, 6898, 1056, 1056, + 7277, 7277, 486, 486, 5762, 5762, 6149, 6149, 5102, 5102, 859, 859, + 5032, 5032, 2160, 2160, 2743, 2743, 921, 921, 3428, 3428, 6295, 6295, + 6160, 6160, 727, 727, 6217, 6217, 1533, 1533, 3865, 3865, 2233, 2233, + 4917, 4917, 4846, 4846, 4919, 4919, 3931, 3931, 6083, 6083, 1390, 1390, + 4798, 4798, 1681, 1681, 3588, 3588, 2224, 2224, 6331, 6331, 3145, 3145, + 5109, 5109, 1497, 1497, 7021, 7021, 2391, 2391, 4546, 4546, 1756, 1756, + 730, 730, 3989, 3989, 7308, 7308, 5506, 5506, 2732, 2732, 2113, 2113, + 5296, 5296, 4276, 4276, 4892, 4892, 4762, 4762, 194, 194, 3417, 3417, 2, + 2, 6766, 6766, 3850, 3850, 5255, 5255, 6515, 6515, 3456, 3456, 5983, + 5983, 1054, 1054, 1431, 1431, 1431, 1431, 2043, 2043, 2043, 2043, 4877, + 4877, 4877, 4877, 103, 103, 103, 103, 2956, 2956, 2956, 2956, 7167, + 7167, 7167, 7167, 6360, 6360, 6360, 6360, 1399, 1399, 1399, 1399, 5371, + 5371, 5371, 5371, 4528, 4528, 4528, 4528, 549, 549, 549, 549, 6146, + 6146, 6146, 6146, 2555, 2555, 2555, 2555, 2440, 2440, 2440, 2440, 2535, + 2535, 2535, 2535, 3909, 3909, 3909, 3909, 1881, 1881, 1881, 1881, 3555, + 3555, 3555, 3555, 3174, 3174, 3174, 3174, 7285, 7285, 7285, 7285, 1760, + 1760, 1760, 1760, 1305, 1305, 1305, 1305, 679, 679, 679, 679, 438, 438, + 438, 438, 7, 7, 7, 7, 638, 638, 638, 638, 5794, 5794, 5794, 5794, 6871, + 6871, 6871, 6871, 3600, 3600, 3600, 3600, 4415, 4415, 4415, 4415, 1738, + 1738, 1738, 1738, 3689, 3689, 3689, 3689, 5760, 5760, 5760, 5760, 5760, + 5760, 5760, 5760, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 4317, + 4317, 4317, 4317, 4317, 4317, 4317, 4317, 2830, 2830, 2830, 2830, 2830, + 2830, 2830, 2830, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6385, + 6385, 6385, 6385, 6385, 6385, 6385, 6385, 2557, 2557, 2557, 2557, 2557, + 2557, 2557, 2557, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 2006, + 2006, 2006, 2006, 2006, 2006, 2006, 2006, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 1599, + 1599, 1599, 1599, 1599, 1599, 1599, 1599, 5695, 5695, 5695, 5695, 5695, + 5695, 5695, 5695, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2088, + 2088, 2088, 2088, 2088, 2088, 2088, 2088, 4865, 4865, 4865, 4865, 4865, + 4865, 4865, 4865, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, + 6267, 6267, 6267, 6267, 6267, 6267, 6267, 1701, 1701, 1701, 1701, 1701, + 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 4805, + 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, + 4805, 4805, 4805, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, + 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2495, 2495, 2495, 2495, 2495, + 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 6847, + 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, + 6847, 6847, 6847, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, + 2250, 2250, 2250, 2250, 2250, 2250, 2250, 7560, 7560, 7560, 7560, 7560, + 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 5487, + 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, + 5487, 5487, 5487, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, + 5225, 5225, 5225, 5225, 5225, 5225, 5225, 1100, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 3696, + 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, + 3696, 3696, 3696, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, + 4056, 4056, 4056, 4056, 4056, 4056, 4056, 3182, 3182, 3182, 3182, 3182, + 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 5776, + 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, + 5776, 5776, 5776, +} + +//go:noescape +func cpuidAmd64(cpuidParams *uint32) + +//go:noescape +func xgetbv0Amd64(xcrVec *uint32) + +//go:noescape +func nttAVX2(inout, zetas *uint16) + +//go:noescape +func invnttAVX2(inout, omegas *uint16) + +//go:noescape +func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func pointwiseAccK3AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func pointwiseAccK4AVX2(dst *uint16, a, b **uint16) + +//go:noescape +func cbdEta4AVX2(dst *uint16, buf *byte) + +func supportsAVX2() bool { + // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family + const ( + osXsaveBit = 1 << 27 + avx2Bit = 1 << 5 + ) + + // Check to see if CPUID actually supports the leaf that indicates AVX2. + // CPUID.(EAX=0H, ECX=0H) >= 7 + regs := [4]uint32{0x00} + cpuidAmd64(®s[0]) + if regs[0] < 7 { + return false + } + + // Check to see if the OS knows how to save/restore XMM/YMM state. + // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 + regs = [4]uint32{0x01} + cpuidAmd64(®s[0]) + if regs[2]&osXsaveBit == 0 { + return false + } + xcrRegs := [2]uint32{} + xgetbv0Amd64(&xcrRegs[0]) + if xcrRegs[0]&6 != 6 { + return false + } + + // Check for AVX2 support. + // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 + regs = [4]uint32{0x07} + cpuidAmd64(®s[0]) + return regs[1]&avx2Bit != 0 +} + +var implAVX2 = &hwaccelImpl{ + name: "AVX2", + nttFn: nttYMM, + invnttFn: invnttYMM, + pointwiseAccFn: pointwiseAccYMM, + cbdFn: cbdYMM, +} + +func nttYMM(p *[kyberN]uint16) { + nttAVX2(&p[0], &zetasExp[0]) +} + +func invnttYMM(a *[kyberN]uint16) { + invnttAVX2(&a[0], &zetasInvExp[0]) +} + +func pointwiseAccYMM(p *poly, a, b *polyVec) { + // Unlike the C code, a polyVec won't have the polys in contigious + // memory. So each assembly function takes vectors of pointers to + // each polyvec's polys. + // + // Kind of ugly, but it's the price to pay for flexibility... + + var aVec, bVec [4]*uint16 // k is in {2,3,4}. + for i := range a.vec { + aVec[i] = &a.vec[i].coeffs[0] + bVec[i] = &b.vec[i].coeffs[0] + } + + switch len(a.vec) { + case 2: + pointwiseAccK2AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + case 3: + pointwiseAccK3AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + case 4: + pointwiseAccK4AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) + } +} + +func cbdYMM(p *poly, buf []byte, eta int) { + switch eta { + case 4: + cbdEta4AVX2(&p.coeffs[0], &buf[0]) + default: + cbdRef(p, buf, eta) + } +} + +func initHardwareAcceleration() { + if supportsAVX2() { + isHardwareAccelerated = true + hardwareAccelImpl = implAVX2 + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s new file mode 100644 index 0000000..a98dc72 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s @@ -0,0 +1,2749 @@ +// +build !noasm,go1.10 +// hwaccel_amd64.s - AMD64 optimized routines. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +#include "textflag.h" + +// func cpuidAmd64(cpuidParams *uint32) +TEXT ·cpuidAmd64(SB), NOSPLIT, $0-8 + MOVQ cpuidParams+0(FP), R15 + MOVL 0(R15), AX + MOVL 8(R15), CX + CPUID + MOVL AX, 0(R15) + MOVL BX, 4(R15) + MOVL CX, 8(R15) + MOVL DX, 12(R15) + RET + +// func xgetbv0Amd64(xcrVec *uint32) +TEXT ·xgetbv0Amd64(SB), NOSPLIT, $0-8 + MOVQ xcrVec+0(FP), BX + XORL CX, CX + XGETBV + MOVL AX, 0(BX) + MOVL DX, 4(BX) + RET + +// Routines taken from the `avx2` implementation, converted to Go's assembly +// dialect. I do this in lieu of cutting myself to see if I still can feel +// pain. +// +// The conversion is mostly direct except: +// * Instead of aligned loads, unaligned loads are used, as there is no +// meaningful difference on modern Intel systems, and it's not immediately +// obvious to me how Go will align global data. +// * The polyvec_pointwise_acc family of routines take vectors of pointers +// due to the different internal memory layout of a polyvec. +// * The constants are renamed slightly. + +// Note: +// * These must be kept in sync with the values in params.go. +// Currently assumes Q = 7681, Q_INV = 57857. +// * Caution, Little endian so things will look different from avx2/consts.c. +DATA ·vpshufb_idx<>+0x00(SB)/8, $0x0504070601000302 +DATA ·vpshufb_idx<>+0x08(SB)/8, $0x0d0c0f0e09080b0a +DATA ·vpshufb_idx<>+0x10(SB)/8, $0x0504070601000302 +DATA ·vpshufb_idx<>+0x18(SB)/8, $0x0d0c0f0e09080b0a +GLOBL ·vpshufb_idx<>(SB), (NOPTR+RODATA), $32 + +DATA ·low_mask<>+0x00(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x08(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x10(SB)/8, $0x1fff1fff1fff1fff +DATA ·low_mask<>+0x18(SB)/8, $0x1fff1fff1fff1fff +GLOBL ·low_mask<>(SB), (NOPTR+RODATA), $32 + +DATA ·lowdword<>+0x00(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x08(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x10(SB)/8, $0x0000ffff0000ffff +DATA ·lowdword<>+0x18(SB)/8, $0x0000ffff0000ffff +GLOBL ·lowdword<>(SB), (NOPTR+RODATA), $32 + +DATA ·q_x16<>+0x00(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x08(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x10(SB)/8, $0x1e011e011e011e01 +DATA ·q_x16<>+0x18(SB)/8, $0x1e011e011e011e01 +GLOBL ·q_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·q2_x16<>+0x00(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x08(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x10(SB)/8, $0x3c023c023c023c02 +DATA ·q2_x16<>+0x18(SB)/8, $0x3c023c023c023c02 +GLOBL ·q2_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·qinv_x16<>+0x00(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x08(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x10(SB)/8, $0xe201e201e201e201 +DATA ·qinv_x16<>+0x18(SB)/8, $0xe201e201e201e201 +GLOBL ·qinv_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·f_x16<>+0x00(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x08(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x10(SB)/8, $0x0100010001000100 +DATA ·f_x16<>+0x18(SB)/8, $0x0100010001000100 +GLOBL ·f_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·v_x16<>+0x00(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x08(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x10(SB)/8, $0x4442444244424442 +DATA ·v_x16<>+0x18(SB)/8, $0x4442444244424442 +GLOBL ·v_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·montsq_x16<>+0x00(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x08(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x10(SB)/8, $0x15c115c115c115c1 +DATA ·montsq_x16<>+0x18(SB)/8, $0x15c115c115c115c1 +GLOBL ·montsq_x16<>(SB), (NOPTR+RODATA), $32 + +DATA ·mask11<>+0x00(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x08(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x10(SB)/8, $0x1111111111111111 +DATA ·mask11<>+0x18(SB)/8, $0x1111111111111111 +GLOBL ·mask11<>(SB), (NOPTR+RODATA), $32 + +DATA ·mask0f<>+0x00(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x08(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·mask0f<>+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f +GLOBL ·mask0f<>(SB), (NOPTR+RODATA), $32 + +// func nttAVX2(inout, zetas *uint16) +TEXT ·nttAVX2(SB), NOSPLIT, $0-16 + MOVQ inout+0(FP), DI + MOVQ zetas+8(FP), SI + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·low_mask<>(SB), Y2 + + // zetas + VMOVDQU (SI), Y3 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 0 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + ADDQ $128, DI + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 0 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + SUBQ $128, DI + + // first round + // zetas + VMOVDQU 32(SI), Y3 + + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // level 1 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // level 2 + // zetas + VMOVDQU 96(SI), Y15 + VMOVDQU 128(SI), Y3 + + // mul + VPMULLW Y15, Y6, Y12 + VPMULHW Y15, Y6, Y6 + VPMULLW Y15, Y7, Y13 + VPMULHW Y15, Y7, Y7 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y6 + VPSUBW Y13, Y5, Y7 + VPSUBW Y14, Y8, Y10 + VPSUBW Y15, Y9, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y9, Y9 + + // level 3 + // zetas + VMOVDQU 224(SI), Y13 + VMOVDQU 256(SI), Y14 + VMOVDQU 288(SI), Y15 + VMOVDQU 320(SI), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + VPSUBW Y15, Y11, Y15 + + // reduce 2 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPSRAW $13, Y10, Y11 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPAND Y2, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSUBW Y11, Y10, Y10 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPSLLW $9, Y11, Y11 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + VPADDW Y11, Y10, Y10 + + // update + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPSUBW Y15, Y10, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y10, Y10 + + // level 4 + // zetas + VMOVDQU 480(SI), Y12 + VMOVDQU 512(SI), Y13 + VMOVDQU 544(SI), Y14 + VMOVDQU 576(SI), Y15 + + // shuffle + VPERM2I128 $0x02, Y4, Y5, Y3 + VPERM2I128 $0x13, Y4, Y5, Y4 + VPERM2I128 $0x02, Y6, Y7, Y5 + VPERM2I128 $0x13, Y6, Y7, Y6 + VPERM2I128 $0x02, Y8, Y9, Y7 + VPERM2I128 $0x13, Y8, Y9, Y8 + VPERM2I128 $0x02, Y10, Y11, Y9 + VPERM2I128 $0x13, Y10, Y11, Y10 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y11 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y8, Y13 + VPSUBW Y14, Y10, Y14 + + // update + VPSUBW Y11, Y3, Y4 + VPSUBW Y12, Y5, Y6 + VPSUBW Y13, Y7, Y8 + VPSUBW Y14, Y9, Y10 + VPADDW Y11, Y3, Y3 + VPADDW Y12, Y5, Y5 + VPADDW Y13, Y7, Y7 + VPADDW Y14, Y9, Y9 + + // level 5 + // zetas + VMOVDQU 736(SI), Y12 + VMOVDQU 768(SI), Y13 + VMOVDQU 800(SI), Y14 + VMOVDQU 832(SI), Y15 + + // shuffle + VSHUFPD $0x00, Y4, Y3, Y11 + VSHUFPD $0x0F, Y4, Y3, Y3 + VSHUFPD $0x00, Y6, Y5, Y4 + VSHUFPD $0x0F, Y6, Y5, Y5 + VSHUFPD $0x00, Y8, Y7, Y6 + VSHUFPD $0x0F, Y8, Y7, Y7 + VSHUFPD $0x00, Y10, Y9, Y8 + VSHUFPD $0x0F, Y10, Y9, Y9 + + // mul + VPMULLW Y12, Y3, Y10 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y10, Y10 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y10, Y10 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y10, Y3, Y10 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // update + VPSUBW Y10, Y11, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y10, Y11, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 6 + // shuffle + VPSHUFD $0xB1, Y10, Y12 + VPSHUFD $0xB1, Y3, Y13 + VPSHUFD $0xB1, Y4, Y14 + VPSHUFD $0xB1, Y5, Y15 + VPBLENDD $0x55, Y10, Y13, Y10 + VPBLENDD $0xAA, Y3, Y12, Y3 + VPBLENDD $0x55, Y4, Y15, Y4 + VPBLENDD $0xAA, Y5, Y14, Y5 + VPSHUFD $0xB1, Y6, Y12 + VPSHUFD $0xB1, Y7, Y13 + VPSHUFD $0xB1, Y8, Y14 + VPSHUFD $0xB1, Y9, Y15 + VPBLENDD $0x55, Y6, Y13, Y6 + VPBLENDD $0xAA, Y7, Y12, Y7 + VPBLENDD $0x55, Y8, Y15, Y8 + VPBLENDD $0xAA, Y9, Y14, Y9 + + // zetas + VMOVDQU 992(SI), Y12 + VMOVDQU 1024(SI), Y13 + VMOVDQU 1056(SI), Y14 + VMOVDQU 1088(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 2 + VPSRAW $13, Y10, Y3 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPAND Y2, Y10, Y10 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPSUBW Y3, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSLLW $9, Y3, Y3 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 7 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y15 + VPSHUFB Y15, Y10, Y11 + VPSHUFB Y15, Y3, Y12 + VPSHUFB Y15, Y4, Y13 + VPSHUFB Y15, Y5, Y14 + VPBLENDW $0x55, Y10, Y12, Y10 + VPBLENDW $0xAA, Y3, Y11, Y3 + VPBLENDW $0x55, Y4, Y14, Y4 + VPBLENDW $0xAA, Y5, Y13, Y5 + VPSHUFB Y15, Y6, Y11 + VPSHUFB Y15, Y7, Y12 + VPSHUFB Y15, Y8, Y13 + VPSHUFB Y15, Y9, Y14 + VPBLENDW $0x55, Y6, Y12, Y6 + VPBLENDW $0xAA, Y7, Y11, Y7 + VPBLENDW $0x55, Y8, Y14, Y8 + VPBLENDW $0xAA, Y9, Y13, Y9 + + // zetas + VMOVDQU 1248(SI), Y12 + VMOVDQU 1280(SI), Y13 + VMOVDQU 1312(SI), Y14 + VMOVDQU 1344(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 3 + VMOVDQU ·q2_x16<>(SB), Y15 + VPSRAW $15, Y10, Y3 + VPSRAW $15, Y4, Y5 + VPSRAW $15, Y6, Y7 + VPSRAW $15, Y8, Y9 + VPAND Y15, Y3, Y3 + VPAND Y15, Y5, Y5 + VPAND Y15, Y7, Y7 + VPAND Y15, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y8, Y8 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // reorder + VPUNPCKLWD Y3, Y10, Y12 + VPUNPCKHWD Y3, Y10, Y13 + VPUNPCKLWD Y5, Y4, Y14 + VPUNPCKHWD Y5, Y4, Y15 + VPUNPCKLWD Y7, Y6, Y3 + VPUNPCKHWD Y7, Y6, Y4 + VPUNPCKLWD Y9, Y8, Y5 + VPUNPCKHWD Y9, Y8, Y6 + VPERM2I128 $0x20, Y13, Y12, Y11 + VPERM2I128 $0x31, Y13, Y12, Y12 + VPERM2I128 $0x20, Y15, Y14, Y13 + VPERM2I128 $0x31, Y15, Y14, Y14 + VPERM2I128 $0x20, Y4, Y3, Y15 + VPERM2I128 $0x31, Y4, Y3, Y3 + VPERM2I128 $0x20, Y6, Y5, Y4 + VPERM2I128 $0x31, Y6, Y5, Y5 + + // store + VMOVDQU Y11, (DI) + VMOVDQU Y12, 32(DI) + VMOVDQU Y13, 64(DI) + VMOVDQU Y14, 96(DI) + VMOVDQU Y15, 128(DI) + VMOVDQU Y3, 160(DI) + VMOVDQU Y4, 192(DI) + VMOVDQU Y5, 224(DI) + + ADDQ $256, DI + + // second round + // zetas + VMOVDQU 64(SI), Y3 + + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // level 1 + // mul + VPMULLW Y3, Y8, Y12 + VPMULHW Y3, Y8, Y8 + VPMULLW Y3, Y9, Y13 + VPMULHW Y3, Y9, Y9 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y12 + VPSUBW Y13, Y9, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y8 + VPSUBW Y13, Y5, Y9 + VPSUBW Y14, Y6, Y10 + VPSUBW Y15, Y7, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y6, Y6 + VPADDW Y15, Y7, Y7 + + // level 2 + // zetas + VMOVDQU 160(SI), Y15 + VMOVDQU 192(SI), Y3 + + // mul + VPMULLW Y15, Y6, Y12 + VPMULHW Y15, Y6, Y6 + VPMULLW Y15, Y7, Y13 + VPMULHW Y15, Y7, Y7 + VPMULLW Y3, Y10, Y14 + VPMULHW Y3, Y10, Y10 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y10, Y14 + VPSUBW Y15, Y11, Y15 + + // update + VPSUBW Y12, Y4, Y6 + VPSUBW Y13, Y5, Y7 + VPSUBW Y14, Y8, Y10 + VPSUBW Y15, Y9, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y5, Y5 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y9, Y9 + + // level 3 + // zetas + VMOVDQU 352(SI), Y13 + VMOVDQU 384(SI), Y14 + VMOVDQU 416(SI), Y15 + VMOVDQU 448(SI), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + VPSUBW Y15, Y11, Y15 + + // reduce 2 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPSRAW $13, Y10, Y11 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPAND Y2, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSUBW Y11, Y10, Y10 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPSLLW $9, Y11, Y11 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + VPADDW Y11, Y10, Y10 + + // update + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPSUBW Y15, Y10, Y11 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + VPADDW Y15, Y10, Y10 + + // level 4 + // zetas + VMOVDQU 608(SI), Y12 + VMOVDQU 640(SI), Y13 + VMOVDQU 672(SI), Y14 + VMOVDQU 704(SI), Y15 + + // shuffle + VPERM2I128 $0x02, Y4, Y5, Y3 + VPERM2I128 $0x13, Y4, Y5, Y4 + VPERM2I128 $0x02, Y6, Y7, Y5 + VPERM2I128 $0x13, Y6, Y7, Y6 + VPERM2I128 $0x02, Y8, Y9, Y7 + VPERM2I128 $0x13, Y8, Y9, Y8 + VPERM2I128 $0x02, Y10, Y11, Y9 + VPERM2I128 $0x13, Y10, Y11, Y10 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y11 + VPSUBW Y12, Y6, Y12 + VPSUBW Y13, Y8, Y13 + VPSUBW Y14, Y10, Y14 + + // update + VPSUBW Y11, Y3, Y4 + VPSUBW Y12, Y5, Y6 + VPSUBW Y13, Y7, Y8 + VPSUBW Y14, Y9, Y10 + VPADDW Y11, Y3, Y3 + VPADDW Y12, Y5, Y5 + VPADDW Y13, Y7, Y7 + VPADDW Y14, Y9, Y9 + + // level 5 + // zetas + VMOVDQU 864(SI), Y12 + VMOVDQU 896(SI), Y13 + VMOVDQU 928(SI), Y14 + VMOVDQU 960(SI), Y15 + + // shuffle + VSHUFPD $0x00, Y4, Y3, Y11 + VSHUFPD $0x0F, Y4, Y3, Y3 + VSHUFPD $0x00, Y6, Y5, Y4 + VSHUFPD $0x0F, Y6, Y5, Y5 + VSHUFPD $0x00, Y8, Y7, Y6 + VSHUFPD $0x0F, Y8, Y7, Y7 + VSHUFPD $0x00, Y10, Y9, Y8 + VSHUFPD $0x0F, Y10, Y9, Y9 + + // mul + VPMULLW Y12, Y3, Y10 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y10, Y10 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y10, Y10 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y10, Y3, Y10 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // update + VPSUBW Y10, Y11, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y10, Y11, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 6 + // shuffle + VPSHUFD $0xB1, Y10, Y12 + VPSHUFD $0xB1, Y3, Y13 + VPSHUFD $0xB1, Y4, Y14 + VPSHUFD $0xB1, Y5, Y15 + VPBLENDD $0x55, Y10, Y13, Y10 + VPBLENDD $0xAA, Y3, Y12, Y3 + VPBLENDD $0x55, Y4, Y15, Y4 + VPBLENDD $0xAA, Y5, Y14, Y5 + VPSHUFD $0xB1, Y6, Y12 + VPSHUFD $0xB1, Y7, Y13 + VPSHUFD $0xB1, Y8, Y14 + VPSHUFD $0xB1, Y9, Y15 + VPBLENDD $0x55, Y6, Y13, Y6 + VPBLENDD $0xAA, Y7, Y12, Y7 + VPBLENDD $0x55, Y8, Y15, Y8 + VPBLENDD $0xAA, Y9, Y14, Y9 + + // zetas + VMOVDQU 1120(SI), Y12 + VMOVDQU 1152(SI), Y13 + VMOVDQU 1184(SI), Y14 + VMOVDQU 1216(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 2 + VPSRAW $13, Y10, Y3 + VPSRAW $13, Y4, Y5 + VPSRAW $13, Y6, Y7 + VPSRAW $13, Y8, Y9 + VPAND Y2, Y10, Y10 + VPAND Y2, Y4, Y4 + VPAND Y2, Y6, Y6 + VPAND Y2, Y8, Y8 + VPSUBW Y3, Y10, Y10 + VPSUBW Y5, Y4, Y4 + VPSUBW Y7, Y6, Y6 + VPSUBW Y9, Y8, Y8 + VPSLLW $9, Y3, Y3 + VPSLLW $9, Y5, Y5 + VPSLLW $9, Y7, Y7 + VPSLLW $9, Y9, Y9 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // level 7 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y15 + VPSHUFB Y15, Y10, Y11 + VPSHUFB Y15, Y3, Y12 + VPSHUFB Y15, Y4, Y13 + VPSHUFB Y15, Y5, Y14 + VPBLENDW $0x55, Y10, Y12, Y10 + VPBLENDW $0xAA, Y3, Y11, Y3 + VPBLENDW $0x55, Y4, Y14, Y4 + VPBLENDW $0xAA, Y5, Y13, Y5 + VPSHUFB Y15, Y6, Y11 + VPSHUFB Y15, Y7, Y12 + VPSHUFB Y15, Y8, Y13 + VPSHUFB Y15, Y9, Y14 + VPBLENDW $0x55, Y6, Y12, Y6 + VPBLENDW $0xAA, Y7, Y11, Y7 + VPBLENDW $0x55, Y8, Y14, Y8 + VPBLENDW $0xAA, Y9, Y13, Y9 + + // zetas + VMOVDQU 1376(SI), Y12 + VMOVDQU 1408(SI), Y13 + VMOVDQU 1440(SI), Y14 + VMOVDQU 1472(SI), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y11 + VPSUBW Y12, Y5, Y12 + VPSUBW Y13, Y7, Y13 + VPSUBW Y14, Y9, Y14 + + // reduce 3 + VMOVDQU ·q2_x16<>(SB), Y15 + VPSRAW $15, Y10, Y3 + VPSRAW $15, Y4, Y5 + VPSRAW $15, Y6, Y7 + VPSRAW $15, Y8, Y9 + VPAND Y15, Y3, Y3 + VPAND Y15, Y5, Y5 + VPAND Y15, Y7, Y7 + VPAND Y15, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y8, Y8 + VPADDW Y3, Y10, Y10 + VPADDW Y5, Y4, Y4 + VPADDW Y7, Y6, Y6 + VPADDW Y9, Y8, Y8 + + // update + VPSUBW Y11, Y10, Y3 + VPSUBW Y12, Y4, Y5 + VPSUBW Y13, Y6, Y7 + VPSUBW Y14, Y8, Y9 + VPADDW Y11, Y10, Y10 + VPADDW Y12, Y4, Y4 + VPADDW Y13, Y6, Y6 + VPADDW Y14, Y8, Y8 + + // reorder + VPUNPCKLWD Y3, Y10, Y12 + VPUNPCKHWD Y3, Y10, Y13 + VPUNPCKLWD Y5, Y4, Y14 + VPUNPCKHWD Y5, Y4, Y15 + VPUNPCKLWD Y7, Y6, Y3 + VPUNPCKHWD Y7, Y6, Y4 + VPUNPCKLWD Y9, Y8, Y5 + VPUNPCKHWD Y9, Y8, Y6 + VPERM2I128 $0x20, Y13, Y12, Y11 + VPERM2I128 $0x31, Y13, Y12, Y12 + VPERM2I128 $0x20, Y15, Y14, Y13 + VPERM2I128 $0x31, Y15, Y14, Y14 + VPERM2I128 $0x20, Y4, Y3, Y15 + VPERM2I128 $0x31, Y4, Y3, Y3 + VPERM2I128 $0x20, Y6, Y5, Y4 + VPERM2I128 $0x31, Y6, Y5, Y5 + + // store + VMOVDQU Y11, (DI) + VMOVDQU Y12, 32(DI) + VMOVDQU Y13, 64(DI) + VMOVDQU Y14, 96(DI) + VMOVDQU Y15, 128(DI) + VMOVDQU Y3, 160(DI) + VMOVDQU Y4, 192(DI) + VMOVDQU Y5, 224(DI) + + VZEROUPPER + RET + +// Go 1.10's VPERMQ support expects the imm8 to be a `int8`, instead of a +// `uint8`. While this is fixed in master, use the signed representation +// for now till it's reasonable to expect versions with the fix to be widely +// available. +// +// See: https://github.com/golang/go/issues/24378 +#define invntt_VPERMQ_IDX $-40 // $0xd8 + +// func invnttAVX2(inout, omegas *uint16) +TEXT ·invnttAVX2(SB), NOSPLIT, $0-16 + MOVQ inout+0(FP), DI + MOVQ omegas+8(FP), SI + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·v_x16<>(SB), Y2 + + MOVQ SI, R8 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // reorder + VMOVDQU ·lowdword<>(SB), Y3 + VPAND Y3, Y4, Y12 + VPAND Y3, Y5, Y13 + VPAND Y3, Y6, Y14 + VPAND Y3, Y7, Y15 + VPSRLD $16, Y4, Y4 + VPSRLD $16, Y5, Y5 + VPSRLD $16, Y6, Y6 + VPSRLD $16, Y7, Y7 + VPACKUSDW Y5, Y4, Y5 + VPACKUSDW Y13, Y12, Y4 + VPACKUSDW Y7, Y6, Y7 + VPACKUSDW Y15, Y14, Y6 + VPERMQ invntt_VPERMQ_IDX, Y4, Y4 + VPERMQ invntt_VPERMQ_IDX, Y5, Y5 + VPERMQ invntt_VPERMQ_IDX, Y6, Y6 + VPERMQ invntt_VPERMQ_IDX, Y7, Y7 + VPAND Y3, Y8, Y12 + VPAND Y3, Y9, Y13 + VPAND Y3, Y10, Y14 + VPAND Y3, Y11, Y15 + VPSRLD $16, Y8, Y8 + VPSRLD $16, Y9, Y9 + VPSRLD $16, Y10, Y10 + VPSRLD $16, Y11, Y11 + VPACKUSDW Y9, Y8, Y9 + VPACKUSDW Y13, Y12, Y8 + VPACKUSDW Y11, Y10, Y11 + VPACKUSDW Y15, Y14, Y10 + VPERMQ invntt_VPERMQ_IDX, Y8, Y8 + VPERMQ invntt_VPERMQ_IDX, Y9, Y9 + VPERMQ invntt_VPERMQ_IDX, Y10, Y10 + VPERMQ invntt_VPERMQ_IDX, Y11, Y11 + + // level 0 + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU (R8), Y7 + VMOVDQU 32(R8), Y9 + VMOVDQU 64(R8), Y11 + VMOVDQU 96(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // level 1 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y3 + VPSHUFB Y3, Y4, Y12 + VPSHUFB Y3, Y5, Y13 + VPSHUFB Y3, Y6, Y14 + VPSHUFB Y3, Y7, Y15 + VPBLENDW $0x55, Y4, Y13, Y4 + VPBLENDW $0xAA, Y5, Y12, Y5 + VPBLENDW $0x55, Y6, Y15, Y6 + VPBLENDW $0xAA, Y7, Y14, Y7 + VPSHUFB Y3, Y8, Y12 + VPSHUFB Y3, Y9, Y13 + VPSHUFB Y3, Y10, Y14 + VPSHUFB Y3, Y11, Y15 + VPBLENDW $0x55, Y8, Y13, Y8 + VPBLENDW $0xAA, Y9, Y12, Y9 + VPBLENDW $0x55, Y10, Y15, Y10 + VPBLENDW $0xAA, Y11, Y14, Y11 + + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU 256(R8), Y7 + VMOVDQU 288(R8), Y9 + VMOVDQU 320(R8), Y11 + VMOVDQU 352(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // reduce 2 + VPMULHW Y2, Y4, Y12 + VPMULHW Y2, Y6, Y13 + VPMULHW Y2, Y8, Y14 + VPMULHW Y2, Y10, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y6, Y6 + VPSUBW Y14, Y8, Y8 + VPSUBW Y15, Y10, Y10 + + // level 2 + // shuffle + VPSHUFD $0xB1, Y4, Y12 + VPSHUFD $0xB1, Y5, Y13 + VPSHUFD $0xB1, Y6, Y14 + VPSHUFD $0xB1, Y7, Y15 + VPBLENDD $0x55, Y4, Y13, Y4 + VPBLENDD $0xAA, Y5, Y12, Y5 + VPBLENDD $0x55, Y6, Y15, Y6 + VPBLENDD $0xAA, Y7, Y14, Y7 + VPSHUFD $0xB1, Y8, Y12 + VPSHUFD $0xB1, Y9, Y13 + VPSHUFD $0xB1, Y10, Y14 + VPSHUFD $0xB1, Y11, Y15 + VPBLENDD $0x55, Y8, Y13, Y8 + VPBLENDD $0xAA, Y9, Y12, Y9 + VPBLENDD $0x55, Y10, Y15, Y10 + VPBLENDD $0xAA, Y11, Y14, Y11 + + // update + VPSUBW Y5, Y4, Y12 + VPSUBW Y7, Y6, Y13 + VPSUBW Y9, Y8, Y14 + VPSUBW Y11, Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + + // zetas + VMOVDQU 512(R8), Y7 + VMOVDQU 544(R8), Y9 + VMOVDQU 576(R8), Y11 + VMOVDQU 608(R8), Y3 + + // mul + VPMULLW Y7, Y12, Y5 + VPMULHW Y7, Y12, Y12 + VPMULLW Y9, Y13, Y7 + VPMULHW Y9, Y13, Y13 + VPMULLW Y11, Y14, Y9 + VPMULHW Y11, Y14, Y14 + VPMULLW Y3, Y15, Y11 + VPMULHW Y3, Y15, Y15 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y9, Y9 + VPMULLW Y0, Y11, Y11 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y9, Y9 + VPMULHW Y1, Y11, Y11 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // level 3 + // shuffle + VSHUFPD $0x00, Y5, Y4, Y3 + VSHUFPD $0x0F, Y5, Y4, Y4 + VSHUFPD $0x00, Y7, Y6, Y5 + VSHUFPD $0x0F, Y7, Y6, Y6 + VSHUFPD $0x00, Y9, Y8, Y7 + VSHUFPD $0x0F, Y9, Y8, Y8 + VSHUFPD $0x00, Y11, Y10, Y9 + VSHUFPD $0x0F, Y11, Y10, Y10 + + // update + VPSUBW Y4, Y3, Y12 + VPSUBW Y6, Y5, Y13 + VPSUBW Y8, Y7, Y14 + VPSUBW Y10, Y9, Y15 + VPADDW Y3, Y4, Y3 + VPADDW Y5, Y6, Y5 + VPADDW Y7, Y8, Y7 + VPADDW Y9, Y10, Y9 + + // zetas + VMOVDQU 768(R8), Y6 + VMOVDQU 800(R8), Y8 + VMOVDQU 832(R8), Y10 + VMOVDQU 864(R8), Y11 + + // mul + VPMULLW Y6, Y12, Y4 + VPMULHW Y6, Y12, Y12 + VPMULLW Y8, Y13, Y6 + VPMULHW Y8, Y13, Y13 + VPMULLW Y10, Y14, Y8 + VPMULHW Y10, Y14, Y14 + VPMULLW Y11, Y15, Y10 + VPMULHW Y11, Y15, Y15 + + // reduce + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y8, Y8 + VPMULLW Y0, Y10, Y10 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y8, Y8 + VPMULHW Y1, Y10, Y10 + VPSUBW Y4, Y12, Y4 + VPSUBW Y6, Y13, Y6 + VPSUBW Y8, Y14, Y8 + VPSUBW Y10, Y15, Y10 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPMULHW Y2, Y5, Y13 + VPMULHW Y2, Y7, Y14 + VPMULHW Y2, Y9, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y3, Y3 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y7, Y7 + VPSUBW Y15, Y9, Y9 + + // level 4 + // shuffle + VPERM2I128 $0x02, Y3, Y4, Y11 + VPERM2I128 $0x13, Y3, Y4, Y3 + VPERM2I128 $0x02, Y5, Y6, Y4 + VPERM2I128 $0x13, Y5, Y6, Y5 + VPERM2I128 $0x02, Y7, Y8, Y6 + VPERM2I128 $0x13, Y7, Y8, Y7 + VPERM2I128 $0x02, Y9, Y10, Y8 + VPERM2I128 $0x13, Y9, Y10, Y9 + + // update + VMOVDQA Y11, Y12 + VMOVDQA Y4, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y8, Y15 + VPADDW Y11, Y3, Y10 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPSUBW Y3, Y12, Y3 + VPSUBW Y5, Y13, Y5 + VPSUBW Y7, Y14, Y7 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1024(R8), Y12 + VMOVDQU 1056(R8), Y13 + VMOVDQU 1088(R8), Y14 + VMOVDQU 1120(R8), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y3 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + + // level 5 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y10, Y4, Y10 + VPADDW Y3, Y5, Y3 + VPADDW Y6, Y8, Y6 + VPADDW Y7, Y9, Y7 + VPSUBW Y4, Y12, Y4 + VPSUBW Y5, Y13, Y5 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1280(SI), Y14 + VMOVDQU 1312(SI), Y15 + + // mul + VPMULLW Y14, Y4, Y11 + VPMULLW Y14, Y5, Y12 + VPMULLW Y15, Y8, Y13 + VPMULHW Y14, Y4, Y4 + VPMULHW Y14, Y5, Y5 + VPMULHW Y15, Y8, Y8 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y10, Y12 + VPMULHW Y2, Y6, Y13 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPSUBW Y12, Y10, Y10 + VPSUBW Y13, Y6, Y6 + + // level 6 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y4, Y14 + VMOVDQA Y5, Y15 + VPADDW Y10, Y6, Y10 + VPADDW Y3, Y7, Y3 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPSUBW Y6, Y12, Y6 + VPSUBW Y7, Y13, Y7 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1408(SI), Y15 + + // mul + VPMULLW Y15, Y6, Y11 + VPMULLW Y15, Y7, Y12 + VPMULLW Y15, Y8, Y13 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y6, Y6 + VPMULHW Y15, Y7, Y7 + VPMULHW Y15, Y8, Y8 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y6, Y6 + VPSUBW Y12, Y7, Y7 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPSRAW $11, Y12, Y12 + VPMULLW Y1, Y12, Y12 + VPSUBW Y12, Y3, Y3 + + // store + VMOVDQU Y10, (DI) + VMOVDQU Y3, 32(DI) + VMOVDQU Y4, 64(DI) + VMOVDQU Y5, 96(DI) + VMOVDQU Y6, 128(DI) + VMOVDQU Y7, 160(DI) + VMOVDQU Y8, 192(DI) + VMOVDQU Y9, 224(DI) + + ADDQ $256, DI + ADDQ $128, R8 + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 128(DI), Y8 + VMOVDQU 160(DI), Y9 + VMOVDQU 192(DI), Y10 + VMOVDQU 224(DI), Y11 + + // reorder + VMOVDQU ·lowdword<>(SB), Y3 + VPAND Y3, Y4, Y12 + VPAND Y3, Y5, Y13 + VPAND Y3, Y6, Y14 + VPAND Y3, Y7, Y15 + VPSRLD $16, Y4, Y4 + VPSRLD $16, Y5, Y5 + VPSRLD $16, Y6, Y6 + VPSRLD $16, Y7, Y7 + VPACKUSDW Y5, Y4, Y5 + VPACKUSDW Y13, Y12, Y4 + VPACKUSDW Y7, Y6, Y7 + VPACKUSDW Y15, Y14, Y6 + VPERMQ invntt_VPERMQ_IDX, Y4, Y4 + VPERMQ invntt_VPERMQ_IDX, Y5, Y5 + VPERMQ invntt_VPERMQ_IDX, Y6, Y6 + VPERMQ invntt_VPERMQ_IDX, Y7, Y7 + VPAND Y3, Y8, Y12 + VPAND Y3, Y9, Y13 + VPAND Y3, Y10, Y14 + VPAND Y3, Y11, Y15 + VPSRLD $16, Y8, Y8 + VPSRLD $16, Y9, Y9 + VPSRLD $16, Y10, Y10 + VPSRLD $16, Y11, Y11 + VPACKUSDW Y9, Y8, Y9 + VPACKUSDW Y13, Y12, Y8 + VPACKUSDW Y11, Y10, Y11 + VPACKUSDW Y15, Y14, Y10 + VPERMQ invntt_VPERMQ_IDX, Y8, Y8 + VPERMQ invntt_VPERMQ_IDX, Y9, Y9 + VPERMQ invntt_VPERMQ_IDX, Y10, Y10 + VPERMQ invntt_VPERMQ_IDX, Y11, Y11 + + // level 0 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU (R8), Y13 + VMOVDQU 32(R8), Y14 + VMOVDQU 64(R8), Y15 + VMOVDQU 96(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // level 1 + // shuffle + VMOVDQU ·vpshufb_idx<>(SB), Y3 + VPSHUFB Y3, Y4, Y12 + VPSHUFB Y3, Y5, Y13 + VPSHUFB Y3, Y6, Y14 + VPSHUFB Y3, Y7, Y15 + VPBLENDW $0x55, Y4, Y13, Y4 + VPBLENDW $0xAA, Y5, Y12, Y5 + VPBLENDW $0x55, Y6, Y15, Y6 + VPBLENDW $0xAA, Y7, Y14, Y7 + VPSHUFB Y3, Y8, Y12 + VPSHUFB Y3, Y9, Y13 + VPSHUFB Y3, Y10, Y14 + VPSHUFB Y3, Y11, Y15 + VPBLENDW $0x55, Y8, Y13, Y8 + VPBLENDW $0xAA, Y9, Y12, Y9 + VPBLENDW $0x55, Y10, Y15, Y10 + VPBLENDW $0xAA, Y11, Y14, Y11 + + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU 256(R8), Y13 + VMOVDQU 288(R8), Y14 + VMOVDQU 320(R8), Y15 + VMOVDQU 352(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // reduce 2 + VPMULHW Y2, Y4, Y12 + VPMULHW Y2, Y6, Y13 + VPMULHW Y2, Y8, Y14 + VPMULHW Y2, Y10, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y6, Y6 + VPSUBW Y14, Y8, Y8 + VPSUBW Y15, Y10, Y10 + + // level 2 + // shuffle + VPSHUFD $0xB1, Y4, Y12 + VPSHUFD $0xB1, Y5, Y13 + VPSHUFD $0xB1, Y6, Y14 + VPSHUFD $0xB1, Y7, Y15 + VPBLENDD $0x55, Y4, Y13, Y4 + VPBLENDD $0xAA, Y5, Y12, Y5 + VPBLENDD $0x55, Y6, Y15, Y6 + VPBLENDD $0xAA, Y7, Y14, Y7 + VPSHUFD $0xB1, Y8, Y12 + VPSHUFD $0xB1, Y9, Y13 + VPSHUFD $0xB1, Y10, Y14 + VPSHUFD $0xB1, Y11, Y15 + VPBLENDD $0x55, Y8, Y13, Y8 + VPBLENDD $0xAA, Y9, Y12, Y9 + VPBLENDD $0x55, Y10, Y15, Y10 + VPBLENDD $0xAA, Y11, Y14, Y11 + + // update + VMOVDQA Y4, Y12 + VMOVDQA Y6, Y13 + VMOVDQA Y8, Y14 + VMOVDQA Y10, Y15 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPADDW Y10, Y11, Y10 + VPSUBW Y5, Y12, Y5 + VPSUBW Y7, Y13, Y7 + VPSUBW Y9, Y14, Y9 + VPSUBW Y11, Y15, Y11 + + // zetas + VMOVDQU 512(R8), Y13 + VMOVDQU 544(R8), Y14 + VMOVDQU 576(R8), Y15 + VMOVDQU 608(R8), Y3 + + // mul + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + VPSUBW Y15, Y11, Y11 + + // level 3 + // shuffle + VSHUFPD $0x00, Y5, Y4, Y3 + VSHUFPD $0x0F, Y5, Y4, Y4 + VSHUFPD $0x00, Y7, Y6, Y5 + VSHUFPD $0x0F, Y7, Y6, Y6 + VSHUFPD $0x00, Y9, Y8, Y7 + VSHUFPD $0x0F, Y9, Y8, Y8 + VSHUFPD $0x00, Y11, Y10, Y9 + VSHUFPD $0x0F, Y11, Y10, Y10 + + // update + VMOVDQA Y3, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y7, Y14 + VMOVDQA Y9, Y15 + VPADDW Y3, Y4, Y3 + VPADDW Y5, Y6, Y5 + VPADDW Y7, Y8, Y7 + VPADDW Y9, Y10, Y9 + VPSUBW Y4, Y12, Y4 + VPSUBW Y6, Y13, Y6 + VPSUBW Y8, Y14, Y8 + VPSUBW Y10, Y15, Y10 + + // zetas + VMOVDQU 768(R8), Y12 + VMOVDQU 800(R8), Y13 + VMOVDQU 832(R8), Y14 + VMOVDQU 864(R8), Y15 + + // mul + VPMULLW Y12, Y4, Y11 + VPMULHW Y12, Y4, Y4 + VPMULLW Y13, Y6, Y12 + VPMULHW Y13, Y6, Y6 + VPMULLW Y14, Y8, Y13 + VPMULHW Y14, Y8, Y8 + VPMULLW Y15, Y10, Y14 + VPMULHW Y15, Y10, Y10 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y6, Y6 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y10, Y10 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPMULHW Y2, Y5, Y13 + VPMULHW Y2, Y7, Y14 + VPMULHW Y2, Y9, Y15 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPSRAW $11, Y14, Y14 + VPSRAW $11, Y15, Y15 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPMULLW Y1, Y14, Y14 + VPMULLW Y1, Y15, Y15 + VPSUBW Y12, Y3, Y3 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y7, Y7 + VPSUBW Y15, Y9, Y9 + + // level 4 + // shuffle + VPERM2I128 $0x02, Y3, Y4, Y11 + VPERM2I128 $0x13, Y3, Y4, Y3 + VPERM2I128 $0x02, Y5, Y6, Y4 + VPERM2I128 $0x13, Y5, Y6, Y5 + VPERM2I128 $0x02, Y7, Y8, Y6 + VPERM2I128 $0x13, Y7, Y8, Y7 + VPERM2I128 $0x02, Y9, Y10, Y8 + VPERM2I128 $0x13, Y9, Y10, Y9 + + // update + VMOVDQA Y11, Y12 + VMOVDQA Y4, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y8, Y15 + VPADDW Y11, Y3, Y10 + VPADDW Y4, Y5, Y4 + VPADDW Y6, Y7, Y6 + VPADDW Y8, Y9, Y8 + VPSUBW Y3, Y12, Y3 + VPSUBW Y5, Y13, Y5 + VPSUBW Y7, Y14, Y7 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1024(R8), Y12 + VMOVDQU 1056(R8), Y13 + VMOVDQU 1088(R8), Y14 + VMOVDQU 1120(R8), Y15 + + // mul + VPMULLW Y12, Y3, Y11 + VPMULHW Y12, Y3, Y3 + VPMULLW Y13, Y5, Y12 + VPMULHW Y13, Y5, Y5 + VPMULLW Y14, Y7, Y13 + VPMULHW Y14, Y7, Y7 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y3, Y3 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y7, Y7 + VPSUBW Y14, Y9, Y9 + + // level 5 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y10, Y4, Y10 + VPADDW Y3, Y5, Y3 + VPADDW Y6, Y8, Y6 + VPADDW Y7, Y9, Y7 + VPSUBW Y4, Y12, Y4 + VPSUBW Y5, Y13, Y5 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1344(SI), Y14 + VMOVDQU 1376(SI), Y15 + + // mul + VPMULLW Y14, Y4, Y11 + VPMULLW Y14, Y5, Y12 + VPMULLW Y15, Y8, Y13 + VPMULHW Y14, Y4, Y4 + VPMULHW Y14, Y5, Y5 + VPMULHW Y15, Y8, Y8 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y4, Y4 + VPSUBW Y12, Y5, Y5 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y10, Y12 + VPMULHW Y2, Y6, Y13 + VPSRAW $11, Y12, Y12 + VPSRAW $11, Y13, Y13 + VPMULLW Y1, Y12, Y12 + VPMULLW Y1, Y13, Y13 + VPSUBW Y12, Y10, Y10 + VPSUBW Y13, Y6, Y6 + + // level 6 + // update + VMOVDQA Y10, Y12 + VMOVDQA Y3, Y13 + VMOVDQA Y4, Y14 + VMOVDQA Y5, Y15 + VPADDW Y10, Y6, Y10 + VPADDW Y3, Y7, Y3 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPSUBW Y6, Y12, Y6 + VPSUBW Y7, Y13, Y7 + VPSUBW Y8, Y14, Y8 + VPSUBW Y9, Y15, Y9 + + // zetas + VMOVDQU 1440(SI), Y15 + + // mul + VPMULLW Y15, Y6, Y11 + VPMULLW Y15, Y7, Y12 + VPMULLW Y15, Y8, Y13 + VPMULLW Y15, Y9, Y14 + VPMULHW Y15, Y6, Y6 + VPMULHW Y15, Y7, Y7 + VPMULHW Y15, Y8, Y8 + VPMULHW Y15, Y9, Y9 + + // reduce + VPMULLW Y0, Y11, Y11 + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULHW Y1, Y11, Y11 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPSUBW Y11, Y6, Y6 + VPSUBW Y12, Y7, Y7 + VPSUBW Y13, Y8, Y8 + VPSUBW Y14, Y9, Y9 + + // reduce 2 + VPMULHW Y2, Y3, Y12 + VPSRAW $11, Y12, Y12 + VPMULLW Y1, Y12, Y12 + VPSUBW Y12, Y3, Y3 + + // store + VMOVDQU Y10, (DI) + VMOVDQU Y3, 32(DI) + VMOVDQU Y4, 64(DI) + VMOVDQU Y5, 96(DI) + VMOVDQU Y6, 128(DI) + VMOVDQU Y7, 160(DI) + VMOVDQU Y8, 192(DI) + VMOVDQU Y9, 224(DI) + + SUBQ $256, DI + + // f + VMOVDQU ·f_x16<>(SB), Y2 + + // first round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // level 7 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPADDW Y6, Y10, Y6 + VPADDW Y7, Y11, Y7 + VPSUBW Y8, Y12, Y8 + VPSUBW Y9, Y13, Y9 + VPSUBW Y10, Y14, Y10 + VPSUBW Y11, Y15, Y11 + + // zeta + VMOVDQU 1472(SI), Y3 + + // mul + VPMULLW Y3, Y8, Y12 + VPMULLW Y3, Y9, Y13 + VPMULLW Y3, Y10, Y14 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y8, Y8 + VPMULHW Y3, Y9, Y9 + VPMULHW Y3, Y10, Y10 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y8 + VPSUBW Y13, Y9, Y9 + VPSUBW Y14, Y10, Y10 + VPSUBW Y15, Y11, Y11 + VPADDW Y1, Y8, Y8 + VPADDW Y1, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y11, Y11 + + // mul + VPMULLW Y2, Y4, Y12 + VPMULLW Y2, Y5, Y13 + VPMULLW Y2, Y6, Y14 + VPMULLW Y2, Y7, Y15 + VPMULHW Y2, Y4, Y4 + VPMULHW Y2, Y5, Y5 + VPMULHW Y2, Y6, Y6 + VPMULHW Y2, Y7, Y7 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y6, Y6 + VPSUBW Y15, Y7, Y7 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y5, Y5 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + ADDQ $128, DI + + // second round + // load + VMOVDQU (DI), Y4 + VMOVDQU 32(DI), Y5 + VMOVDQU 64(DI), Y6 + VMOVDQU 96(DI), Y7 + VMOVDQU 256(DI), Y8 + VMOVDQU 288(DI), Y9 + VMOVDQU 320(DI), Y10 + VMOVDQU 352(DI), Y11 + + // zeta + VMOVDQU 1472(SI), Y3 + + // level 7 + // update + VMOVDQA Y4, Y12 + VMOVDQA Y5, Y13 + VMOVDQA Y6, Y14 + VMOVDQA Y7, Y15 + VPADDW Y4, Y8, Y4 + VPADDW Y5, Y9, Y5 + VPADDW Y6, Y10, Y6 + VPADDW Y7, Y11, Y7 + VPSUBW Y8, Y12, Y8 + VPSUBW Y9, Y13, Y9 + VPSUBW Y10, Y14, Y10 + VPSUBW Y11, Y15, Y11 + + // mul + VPMULLW Y3, Y8, Y12 + VPMULLW Y3, Y9, Y13 + VPMULLW Y3, Y10, Y14 + VPMULLW Y3, Y11, Y15 + VPMULHW Y3, Y8, Y8 + VPMULHW Y3, Y9, Y9 + VPMULHW Y3, Y10, Y10 + VPMULHW Y3, Y11, Y11 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y8, Y8 + VPSUBW Y13, Y9, Y9 + VPSUBW Y14, Y10, Y10 + VPSUBW Y15, Y11, Y11 + VPADDW Y1, Y8, Y8 + VPADDW Y1, Y9, Y9 + VPADDW Y1, Y10, Y10 + VPADDW Y1, Y11, Y11 + + // mul + VPMULLW Y2, Y4, Y12 + VPMULLW Y2, Y5, Y13 + VPMULLW Y2, Y6, Y14 + VPMULLW Y2, Y7, Y15 + VPMULHW Y2, Y4, Y4 + VPMULHW Y2, Y5, Y5 + VPMULHW Y2, Y6, Y6 + VPMULHW Y2, Y7, Y7 + + // reduce + VPMULLW Y0, Y12, Y12 + VPMULLW Y0, Y13, Y13 + VPMULLW Y0, Y14, Y14 + VPMULLW Y0, Y15, Y15 + VPMULHW Y1, Y12, Y12 + VPMULHW Y1, Y13, Y13 + VPMULHW Y1, Y14, Y14 + VPMULHW Y1, Y15, Y15 + VPSUBW Y12, Y4, Y4 + VPSUBW Y13, Y5, Y5 + VPSUBW Y14, Y6, Y6 + VPSUBW Y15, Y7, Y7 + VPADDW Y1, Y4, Y4 + VPADDW Y1, Y5, Y5 + VPADDW Y1, Y6, Y6 + VPADDW Y1, Y7, Y7 + + // store + VMOVDQU Y4, (DI) + VMOVDQU Y5, 32(DI) + VMOVDQU Y6, 64(DI) + VMOVDQU Y7, 96(DI) + VMOVDQU Y8, 256(DI) + VMOVDQU Y9, 288(DI) + VMOVDQU Y10, 320(DI) + VMOVDQU Y11, 352(DI) + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK2AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + + XORQ AX, AX + XORQ BX, BX + + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop2: + // load a + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU 32(SI)(BX*1), Y5 + VMOVDQU 64(SI)(BX*1), Y6 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU 32(R8)(BX*1), Y8 + VMOVDQU 64(R8)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y5, Y4 + VPMULHW Y2, Y5, Y11 + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y12 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y14 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y15 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + VPSUBW Y8, Y15, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU 32(DX)(BX*1), Y10 + VMOVDQU 64(DX)(BX*1), Y11 + VMOVDQU (R11)(BX*1), Y12 + VMOVDQU 32(R11)(BX*1), Y13 + VMOVDQU 64(R11)(BX*1), Y14 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y4, Y10, Y3 + VPMULHW Y4, Y10, Y10 + VPMULLW Y5, Y11, Y4 + VPMULHW Y5, Y11, Y11 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + VPMULLW Y7, Y13, Y6 + VPMULHW Y7, Y13, Y13 + VPMULLW Y8, Y14, Y7 + VPMULHW Y8, Y14, Y14 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y15, Y9, Y15 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + + // add + VPADDW Y15, Y5, Y5 + VPADDW Y3, Y6, Y6 + VPADDW Y4, Y7, Y7 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y5, Y8 + VPMULHW Y3, Y6, Y9 + VPMULHW Y3, Y7, Y10 + VPSRAW $11, Y8, Y8 + VPSRAW $11, Y9, Y9 + VPSRAW $11, Y10, Y10 + VPMULLW Y1, Y8, Y8 + VPMULLW Y1, Y9, Y9 + VPMULLW Y1, Y10, Y10 + VPSUBW Y8, Y5, Y5 + VPSUBW Y9, Y6, Y6 + VPSUBW Y10, Y7, Y7 + + // store + VMOVDQU Y5, (DI)(BX*1) + VMOVDQU Y6, 32(DI)(BX*1) + VMOVDQU Y7, 64(DI)(BX*1) + + ADDQ $1, AX + ADDQ $96, BX + CMPQ AX, $5 + JB looptop2 + + // load + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU (R11)(BX*1), Y12 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y6, Y6 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y6, Y6 + VPSUBW Y3, Y10, Y3 + VPSUBW Y6, Y13, Y6 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y5, Y5 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y5, Y5 + VPSUBW Y15, Y9, Y15 + VPSUBW Y5, Y12, Y5 + + // add + VPADDW Y15, Y5, Y5 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y5, Y8 + VPSRAW $11, Y8, Y8 + VPMULLW Y1, Y8, Y8 + VPSUBW Y8, Y5, Y5 + + // store + VMOVDQU Y5, (DI)(BX*1) + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK3AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + + XORQ AX, AX + XORQ BX, BX + + MOVQ (16)(SI), R9 // a[2] + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 16(DX), R12 // b[2] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop3: + // load a + VMOVDQU (SI)(BX*1), Y4 + VMOVDQU 32(SI)(BX*1), Y5 + VMOVDQU (R8)(BX*1), Y6 + VMOVDQU 32(R8)(BX*1), Y7 + VMOVDQU (R9)(BX*1), Y8 + VMOVDQU 32(R9)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y4, Y3 + VPMULHW Y2, Y4, Y10 + VPMULLW Y2, Y5, Y4 + VPMULHW Y2, Y5, Y11 + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y12 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y13 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y14 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y15 + + // reduce + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + VPSUBW Y8, Y15, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU 32(DX)(BX*1), Y10 + VMOVDQU (R11)(BX*1), Y11 + VMOVDQU 32(R11)(BX*1), Y12 + VMOVDQU (R12)(BX*1), Y13 + VMOVDQU 32(R12)(BX*1), Y14 + + // mul + VPMULLW Y3, Y9, Y15 + VPMULHW Y3, Y9, Y9 + VPMULLW Y4, Y10, Y3 + VPMULHW Y4, Y10, Y10 + VPMULLW Y5, Y11, Y4 + VPMULHW Y5, Y11, Y11 + VPMULLW Y6, Y12, Y5 + VPMULHW Y6, Y12, Y12 + VPMULLW Y7, Y13, Y6 + VPMULHW Y7, Y13, Y13 + VPMULLW Y8, Y14, Y7 + VPMULHW Y8, Y14, Y14 + + // reduce + VPMULLW Y0, Y15, Y15 + VPMULLW Y0, Y3, Y3 + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y15, Y15 + VPMULHW Y1, Y3, Y3 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y15, Y9, Y15 + VPSUBW Y3, Y10, Y3 + VPSUBW Y4, Y11, Y4 + VPSUBW Y5, Y12, Y5 + VPSUBW Y6, Y13, Y6 + VPSUBW Y7, Y14, Y7 + + // add + VPADDW Y15, Y4, Y4 + VPADDW Y3, Y5, Y5 + VPADDW Y4, Y6, Y6 + VPADDW Y5, Y7, Y7 + + // reduce 2 + VMOVDQU ·v_x16<>(SB), Y3 + VPMULHW Y3, Y6, Y8 + VPMULHW Y3, Y7, Y9 + VPSRAW $11, Y8, Y8 + VPSRAW $11, Y9, Y9 + VPMULLW Y1, Y8, Y8 + VPMULLW Y1, Y9, Y9 + VPSUBW Y8, Y6, Y6 + VPSUBW Y9, Y7, Y7 + + // store + VMOVDQU Y6, (DI)(BX*1) + VMOVDQU Y7, 32(DI)(BX*1) + + ADDQ $1, AX + ADDQ $64, BX + CMPQ AX, $8 + JB looptop3 + + VZEROUPPER + RET + +// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) +TEXT ·pointwiseAccK4AVX2(SB), NOSPLIT, $0-24 + MOVQ dst+0(FP), DI + MOVQ a+8(FP), SI + MOVQ b+16(FP), DX + + VMOVDQU ·qinv_x16<>(SB), Y0 + VMOVDQU ·q_x16<>(SB), Y1 + VMOVDQU ·montsq_x16<>(SB), Y2 + VMOVDQU ·v_x16<>(SB), Y3 + + XORQ AX, AX + XORQ BX, BX + + MOVQ 24(SI), R10 // a[3] + MOVQ 16(SI), R9 // a[2] + MOVQ 8(SI), R8 // a[1] + MOVQ (SI), SI // a[0] + MOVQ 24(DX), R13 // b[3] + MOVQ 16(DX), R12 // b[2] + MOVQ 8(DX), R11 // b[1] + MOVQ (DX), DX // b[0] + +looptop4: + // load a + VMOVDQU (SI)(BX*1), Y6 + VMOVDQU (R8)(BX*1), Y7 + VMOVDQU (R9)(BX*1), Y8 + VMOVDQU (R10)(BX*1), Y9 + + // mul montsq + VPMULLW Y2, Y6, Y5 + VPMULHW Y2, Y6, Y10 + VPMULLW Y2, Y7, Y6 + VPMULHW Y2, Y7, Y11 + VPMULLW Y2, Y8, Y7 + VPMULHW Y2, Y8, Y12 + VPMULLW Y2, Y9, Y8 + VPMULHW Y2, Y9, Y13 + + // reduce + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULLW Y0, Y8, Y8 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPMULHW Y1, Y8, Y8 + VPSUBW Y5, Y10, Y5 + VPSUBW Y6, Y11, Y6 + VPSUBW Y7, Y12, Y7 + VPSUBW Y8, Y13, Y8 + + // load b + VMOVDQU (DX)(BX*1), Y9 + VMOVDQU (R11)(BX*1), Y10 + VMOVDQU (R12)(BX*1), Y11 + VMOVDQU (R13)(BX*1), Y12 + + // mul + VPMULLW Y5, Y9, Y4 + VPMULHW Y5, Y9, Y9 + VPMULLW Y6, Y10, Y5 + VPMULHW Y6, Y10, Y10 + VPMULLW Y7, Y11, Y6 + VPMULHW Y7, Y11, Y11 + VPMULLW Y8, Y12, Y7 + VPMULHW Y8, Y12, Y12 + + // reduce + VPMULLW Y0, Y4, Y4 + VPMULLW Y0, Y5, Y5 + VPMULLW Y0, Y6, Y6 + VPMULLW Y0, Y7, Y7 + VPMULHW Y1, Y4, Y4 + VPMULHW Y1, Y5, Y5 + VPMULHW Y1, Y6, Y6 + VPMULHW Y1, Y7, Y7 + VPSUBW Y4, Y9, Y4 + VPSUBW Y5, Y10, Y5 + VPSUBW Y6, Y11, Y6 + VPSUBW Y7, Y12, Y7 + + // add + VPADDW Y4, Y5, Y5 + VPADDW Y5, Y6, Y6 + VPADDW Y6, Y7, Y7 + + // reduce 2 + VPMULHW Y3, Y7, Y8 + VPSRAW $11, Y8, Y8 + VPMULLW Y1, Y8, Y8 + VPSUBW Y8, Y7, Y8 + + // store + VMOVDQU Y8, (DI)(BX*1) + + ADDQ $1, AX + ADDQ $32, BX + CMPQ AX, $16 + JB looptop4 + + VZEROUPPER + RET + +// func cbdEta4AVX2(dst *uint16, b *byte) +TEXT ·cbdEta4AVX2(SB), NOSPLIT, $0-16 + MOVQ dst+0(FP), DI + MOVQ b+8(FP), SI + + VMOVDQU ·mask11<>(SB), Y0 + VMOVDQU ·mask0f<>(SB), Y1 + VMOVDQU ·q_x16<>(SB), Y2 + + MOVQ $256, DX + +looptop: + VMOVUPD 0(SI), Y3 + VPAND Y3, Y0, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y5 + VPADDB Y5, Y4, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y5 + VPADDB Y5, Y4, Y4 + VPSRLW $1, Y3, Y3 + VPAND Y3, Y0, Y3 + VPADDB Y3, Y4, Y3 + VPSRLW $4, Y3, Y4 + VPAND Y3, Y1, Y3 + VPAND Y4, Y1, Y4 + VPSUBB Y4, Y3, Y3 + VPMOVSXBW X3, Y4 + VPADDW Y2, Y4, Y4 + VMOVUPD Y4, 0(DI) + VPERM2F128 $0x21, Y3, Y3, Y3 + VPMOVSXBW X3, Y4 + VPADDW Y2, Y4, Y4 + VMOVUPD Y4, 32(DI) + + ADDQ $64, DI + ADDQ $32, SI + SUBQ $32, DX + JA looptop + + VZEROUPPER + RET diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go new file mode 100644 index 0000000..4b58010 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go @@ -0,0 +1,14 @@ +// hwaccel_ref.go - Unaccelerated stubs. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// +build !amd64 gccgo noasm !go1.10 + +package kyber + +func initHardwareAcceleration() { + forceDisableHardwareAcceleration() +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go b/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go new file mode 100644 index 0000000..5c4186f --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go @@ -0,0 +1,279 @@ +// indcpa.go - Kyber IND-CPA encryption. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +// Serialize the public key as concatenation of the compressed and serialized +// vector of polynomials pk and the public seed used to generate the matrix A. +func packPublicKey(r []byte, pk *polyVec, seed []byte) { + pk.compress(r) + copy(r[pk.compressedSize():], seed[:SymSize]) +} + +// De-serialize and decompress public key from a byte array; approximate +// inverse of packPublicKey. +func unpackPublicKey(pk *polyVec, seed, packedPk []byte) { + pk.decompress(packedPk) + + off := pk.compressedSize() + copy(seed, packedPk[off:off+SymSize]) +} + +// Serialize the ciphertext as concatenation of the compressed and serialized +// vector of polynomials b and the compressed and serialized polynomial v. +func packCiphertext(r []byte, b *polyVec, v *poly) { + b.compress(r) + v.compress(r[b.compressedSize():]) +} + +// De-serialize and decompress ciphertext from a byte array; approximate +// inverse of packCiphertext. +func unpackCiphertext(b *polyVec, v *poly, c []byte) { + b.decompress(c) + v.decompress(c[b.compressedSize():]) +} + +// Serialize the secret key. +func packSecretKey(r []byte, sk *polyVec) { + sk.toBytes(r) +} + +// De-serialize the secret key; inverse of packSecretKey. +func unpackSecretKey(sk *polyVec, packedSk []byte) { + sk.fromBytes(packedSk) +} + +// Deterministically generate matrix A (or the transpose of A) from a seed. +// Entries of the matrix are polynomials that look uniformly random. Performs +// rejection sampling on output of SHAKE-128. +func genMatrix(a []polyVec, seed []byte, transposed bool) { + const ( + shake128Rate = 168 // xof.BlockSize() is not a constant. + maxBlocks = 4 + ) + var buf [shake128Rate * maxBlocks]byte + + var extSeed [SymSize + 2]byte + copy(extSeed[:SymSize], seed) + + xof := sha3.NewShake128() + + for i, v := range a { + for j, p := range v.vec { + if transposed { + extSeed[SymSize] = byte(i) + extSeed[SymSize+1] = byte(j) + } else { + extSeed[SymSize] = byte(j) + extSeed[SymSize+1] = byte(i) + } + + xof.Write(extSeed[:]) + xof.Read(buf[:]) + + for ctr, pos, maxPos := 0, 0, len(buf); ctr < kyberN; { + val := (uint16(buf[pos]) | (uint16(buf[pos+1]) << 8)) & 0x1fff + if val < kyberQ { + p.coeffs[ctr] = val + ctr++ + } + if pos += 2; pos == maxPos { + // On the unlikely chance 4 blocks is insufficient, + // incrementally squeeze out 1 block at a time. + xof.Read(buf[:shake128Rate]) + pos, maxPos = 0, shake128Rate + } + } + + xof.Reset() + } + } +} + +type indcpaPublicKey struct { + packed []byte + h [32]byte +} + +func (pk *indcpaPublicKey) toBytes() []byte { + return pk.packed +} + +func (pk *indcpaPublicKey) fromBytes(p *ParameterSet, b []byte) error { + if len(b) != p.indcpaPublicKeySize { + return ErrInvalidKeySize + } + + pk.packed = make([]byte, len(b)) + copy(pk.packed, b) + pk.h = sha3.Sum256(b) + + return nil +} + +type indcpaSecretKey struct { + packed []byte +} + +func (sk *indcpaSecretKey) fromBytes(p *ParameterSet, b []byte) error { + if len(b) != p.indcpaSecretKeySize { + return ErrInvalidKeySize + } + + sk.packed = make([]byte, len(b)) + copy(sk.packed, b) + + return nil +} + +// Generates public and private key for the CPA-secure public-key encryption +// scheme underlying Kyber. +func (p *ParameterSet) indcpaKeyPair(rng io.Reader) (*indcpaPublicKey, *indcpaSecretKey, error) { + buf := make([]byte, SymSize+SymSize) + if _, err := io.ReadFull(rng, buf[:SymSize]); err != nil { + return nil, nil, err + } + + sk := &indcpaSecretKey{ + packed: make([]byte, p.indcpaSecretKeySize), + } + pk := &indcpaPublicKey{ + packed: make([]byte, p.indcpaPublicKeySize), + } + + h := sha3.New512() + h.Write(buf[:SymSize]) + buf = buf[:0] // Reuse the backing store. + buf = h.Sum(buf) + publicSeed, noiseSeed := buf[:SymSize], buf[SymSize:] + + a := p.allocMatrix() + genMatrix(a, publicSeed, false) + + var nonce byte + skpv := p.allocPolyVec() + for _, pv := range skpv.vec { + pv.getNoise(noiseSeed, nonce, p.eta) + nonce++ + } + + skpv.ntt() + + e := p.allocPolyVec() + for _, pv := range e.vec { + pv.getNoise(noiseSeed, nonce, p.eta) + nonce++ + } + + // matrix-vector multiplication + pkpv := p.allocPolyVec() + for i, pv := range pkpv.vec { + pv.pointwiseAcc(&skpv, &a[i]) + } + + pkpv.invntt() + pkpv.add(&pkpv, &e) + + packSecretKey(sk.packed, &skpv) + packPublicKey(pk.packed, &pkpv, publicSeed) + pk.h = sha3.Sum256(pk.packed) + + return pk, sk, nil +} + +// Encryption function of the CPA-secure public-key encryption scheme +// underlying Kyber. +func (p *ParameterSet) indcpaEncrypt(c, m []byte, pk *indcpaPublicKey, coins []byte) { + var k, v, epp poly + var seed [SymSize]byte + + pkpv := p.allocPolyVec() + unpackPublicKey(&pkpv, seed[:], pk.packed) + + k.fromMsg(m) + + pkpv.ntt() + + at := p.allocMatrix() + genMatrix(at, seed[:], true) + + var nonce byte + sp := p.allocPolyVec() + for _, pv := range sp.vec { + pv.getNoise(coins, nonce, p.eta) + nonce++ + } + + sp.ntt() + + ep := p.allocPolyVec() + for _, pv := range ep.vec { + pv.getNoise(coins, nonce, p.eta) + nonce++ + } + + // matrix-vector multiplication + bp := p.allocPolyVec() + for i, pv := range bp.vec { + pv.pointwiseAcc(&sp, &at[i]) + } + + bp.invntt() + bp.add(&bp, &ep) + + v.pointwiseAcc(&pkpv, &sp) + v.invntt() + + epp.getNoise(coins, nonce, p.eta) // Don't need to increment nonce. + + v.add(&v, &epp) + v.add(&v, &k) + + packCiphertext(c, &bp, &v) +} + +// Decryption function of the CPA-secure public-key encryption scheme +// underlying Kyber. +func (p *ParameterSet) indcpaDecrypt(m, c []byte, sk *indcpaSecretKey) { + var v, mp poly + + skpv, bp := p.allocPolyVec(), p.allocPolyVec() + unpackCiphertext(&bp, &v, c) + unpackSecretKey(&skpv, sk.packed) + + bp.ntt() + + mp.pointwiseAcc(&skpv, &bp) + mp.invntt() + + mp.sub(&mp, &v) + + mp.toMsg(m) +} + +func (p *ParameterSet) allocMatrix() []polyVec { + m := make([]polyVec, 0, p.k) + for i := 0; i < p.k; i++ { + m = append(m, p.allocPolyVec()) + } + return m +} + +func (p *ParameterSet) allocPolyVec() polyVec { + vec := make([]*poly, 0, p.k) + for i := 0; i < p.k; i++ { + vec = append(vec, new(poly)) + } + + return polyVec{vec} +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go b/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go new file mode 100644 index 0000000..363040c --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go @@ -0,0 +1,187 @@ +// kem.go - Kyber key encapsulation mechanism. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "bytes" + "crypto/subtle" + "errors" + "io" + + "golang.org/x/crypto/sha3" +) + +var ( + // ErrInvalidKeySize is the error returned when a byte serailized key is + // an invalid size. + ErrInvalidKeySize = errors.New("kyber: invalid key size") + + // ErrInvalidCipherTextSize is the error thrown via a panic when a byte + // serialized ciphertext is an invalid size. + ErrInvalidCipherTextSize = errors.New("kyber: invalid ciphertext size") + + // ErrInvalidPrivateKey is the error returned when a byte serialized + // private key is malformed. + ErrInvalidPrivateKey = errors.New("kyber: invalid private key") +) + +// PrivateKey is a Kyber private key. +type PrivateKey struct { + PublicKey + sk *indcpaSecretKey + z []byte +} + +// Bytes returns the byte serialization of a PrivateKey. +func (sk *PrivateKey) Bytes() []byte { + p := sk.PublicKey.p + + b := make([]byte, 0, p.secretKeySize) + b = append(b, sk.sk.packed...) + b = append(b, sk.PublicKey.pk.packed...) + b = append(b, sk.PublicKey.pk.h[:]...) + b = append(b, sk.z...) + + return b +} + +// PrivateKeyFromBytes deserializes a byte serialized PrivateKey. +func (p *ParameterSet) PrivateKeyFromBytes(b []byte) (*PrivateKey, error) { + if len(b) != p.secretKeySize { + return nil, ErrInvalidKeySize + } + + sk := new(PrivateKey) + sk.sk = new(indcpaSecretKey) + sk.z = make([]byte, SymSize) + sk.PublicKey.pk = new(indcpaPublicKey) + sk.PublicKey.p = p + + // De-serialize the public key first. + off := p.indcpaSecretKeySize + if err := sk.PublicKey.pk.fromBytes(p, b[off:off+p.publicKeySize]); err != nil { + return nil, err + } + off += p.publicKeySize + if !bytes.Equal(sk.PublicKey.pk.h[:], b[off:off+SymSize]) { + return nil, ErrInvalidPrivateKey + } + off += SymSize + copy(sk.z, b[off:]) + + // Then go back to de-serialize the private key. + if err := sk.sk.fromBytes(p, b[:p.indcpaSecretKeySize]); err != nil { + return nil, err + } + + return sk, nil +} + +// PublicKey is a Kyber public key. +type PublicKey struct { + pk *indcpaPublicKey + p *ParameterSet +} + +// Bytes returns the byte serialization of a PublicKey. +func (pk *PublicKey) Bytes() []byte { + return pk.pk.toBytes() +} + +// PublicKeyFromBytes deserializes a byte serialized PublicKey. +func (p *ParameterSet) PublicKeyFromBytes(b []byte) (*PublicKey, error) { + pk := &PublicKey{ + pk: new(indcpaPublicKey), + p: p, + } + + if err := pk.pk.fromBytes(p, b); err != nil { + return nil, err + } + + return pk, nil +} + +// GenerateKeyPair generates a private and public key parameterized with the +// given ParameterSet. +func (p *ParameterSet) GenerateKeyPair(rng io.Reader) (*PublicKey, *PrivateKey, error) { + kp := new(PrivateKey) + + var err error + if kp.PublicKey.pk, kp.sk, err = p.indcpaKeyPair(rng); err != nil { + return nil, nil, err + } + + kp.PublicKey.p = p + kp.z = make([]byte, SymSize) + if _, err := io.ReadFull(rng, kp.z); err != nil { + return nil, nil, err + } + + return &kp.PublicKey, kp, nil +} + +// KEMEncrypt generates cipher text and shared secret via the CCA-secure Kyber +// key encapsulation mechanism. +func (pk *PublicKey) KEMEncrypt(rng io.Reader) (cipherText []byte, sharedSecret []byte, err error) { + var buf [SymSize]byte + if _, err = io.ReadFull(rng, buf[:]); err != nil { + return nil, nil, err + } + buf = sha3.Sum256(buf[:]) // Don't release system RNG output + + hKr := sha3.New512() + hKr.Write(buf[:]) + hKr.Write(pk.pk.h[:]) // Multitarget countermeasures for coins + contributory KEM + kr := hKr.Sum(nil) + + cipherText = make([]byte, pk.p.cipherTextSize) + pk.p.indcpaEncrypt(cipherText, buf[:], pk.pk, kr[SymSize:]) // coins are in kr[SymSize:] + + hc := sha3.Sum256(cipherText) + copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) + hSs := sha3.New256() + hSs.Write(kr) + sharedSecret = hSs.Sum(nil) // hash concatenation of pre-k and H(c) to k + + return +} + +// KEMDecrypt generates shared secret for given cipher text via the CCA-secure +// Kyber key encapsulation mechanism. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (sk *PrivateKey) KEMDecrypt(cipherText []byte) (sharedSecret []byte) { + var buf [2 * SymSize]byte + + p := sk.PublicKey.p + if len(cipherText) != p.CipherTextSize() { + panic(ErrInvalidCipherTextSize) + } + p.indcpaDecrypt(buf[:SymSize], cipherText, sk.sk) + + copy(buf[SymSize:], sk.PublicKey.pk.h[:]) // Multitarget countermeasure for coins + contributory KEM + kr := sha3.Sum512(buf[:]) + + cmp := make([]byte, p.cipherTextSize) + p.indcpaEncrypt(cmp, buf[:SymSize], sk.PublicKey.pk, kr[SymSize:]) // coins are in kr[SymSize:] + + hc := sha3.Sum256(cipherText) + copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) + + fail := subtle.ConstantTimeSelect(subtle.ConstantTimeCompare(cipherText, cmp), 0, 1) + subtle.ConstantTimeCopy(fail, kr[SymSize:], sk.z) // Overwrite pre-k with z on re-encryption failure + + h := sha3.New256() + h.Write(kr[:]) + sharedSecret = h.Sum(nil) + + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go b/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go new file mode 100644 index 0000000..f6b56c1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go @@ -0,0 +1,249 @@ +// kex.go - Kyber key exchange. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import ( + "errors" + "io" + + "golang.org/x/crypto/sha3" +) + +var ( + // ErrInvalidMessageSize is the error thrown via a panic when a initator + // or responder message is an invalid size. + ErrInvalidMessageSize = errors.New("kyber: invalid message size") + + // ErrParameterSetMismatch is the error thrown via a panic when there + // is a mismatch between parameter sets. + ErrParameterSetMismatch = errors.New("kyber: parameter set mismatch") +) + +// UAKEInitiatorMessageSize returns the size of the initiator UAKE message +// in bytes. +func (p *ParameterSet) UAKEInitiatorMessageSize() int { + return p.PublicKeySize() + p.CipherTextSize() +} + +// UAKEResponderMessageSize returns the size of the responder UAKE message +// in bytes. +func (p *ParameterSet) UAKEResponderMessageSize() int { + return p.CipherTextSize() +} + +// UAKEInitiatorState is a initiator UAKE instance. Each instance MUST only +// be used for one key exchange and never reused. +type UAKEInitiatorState struct { + // Message is the UAKE message to send to the responder. + Message []byte + + eSk *PrivateKey + tk []byte +} + +// Shared generates a shared secret for the given UAKE instance and responder +// message. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (s *UAKEInitiatorState) Shared(recv []byte) (sharedSecret []byte) { + xof := sha3.NewShake256() + var tk []byte + + tk = s.eSk.KEMDecrypt(recv) + xof.Write(tk) + xof.Write(s.tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// NewUAKEInitiatorState creates a new initiator UAKE instance. +func (pk *PublicKey) NewUAKEInitiatorState(rng io.Reader) (*UAKEInitiatorState, error) { + s := new(UAKEInitiatorState) + s.Message = make([]byte, 0, pk.p.UAKEInitiatorMessageSize()) + + var err error + _, s.eSk, err = pk.p.GenerateKeyPair(rng) + if err != nil { + return nil, err + } + s.Message = append(s.Message, s.eSk.PublicKey.Bytes()...) + + var ct []byte + ct, s.tk, err = pk.KEMEncrypt(rng) + if err != nil { + return nil, err + } + + s.Message = append(s.Message, ct...) + + return s, nil +} + +// UAKEResponderShared generates a responder message and shared secret given +// a initiator UAKE message. +// +// On failures, sharedSecret will contain a randomized value. Providing a +// cipher text that is obviously malformed (too large/small) will result in a +// panic. +func (sk *PrivateKey) UAKEResponderShared(rng io.Reader, recv []byte) (message, sharedSecret []byte) { + p := sk.PublicKey.p + pkLen := p.PublicKeySize() + + // Deserialize the peer's ephemeral public key. + if len(recv) != p.UAKEInitiatorMessageSize() { + panic(ErrInvalidMessageSize) + } + rawPk, ct := recv[:pkLen], recv[pkLen:] + pk, err := p.PublicKeyFromBytes(rawPk) + if err != nil { + panic(err) + } + + xof := sha3.NewShake256() + var tk []byte + + message, tk, err = pk.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + + tk = sk.KEMDecrypt(ct) + xof.Write(tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// AKEInitiatorMessageSize returns the size of the initiator AKE message +// in bytes. +func (p *ParameterSet) AKEInitiatorMessageSize() int { + return p.PublicKeySize() + p.CipherTextSize() +} + +// AKEResponderMessageSize returns the size of the responder AKE message +// in bytes. +func (p *ParameterSet) AKEResponderMessageSize() int { + return 2 * p.CipherTextSize() +} + +// AKEInitiatorState is a initiator AKE instance. Each instance MUST only be +// used for one key exchange and never reused. +type AKEInitiatorState struct { + // Message is the AKE message to send to the responder. + Message []byte + + eSk *PrivateKey + tk []byte +} + +// Shared generates a shared secret for the given AKE instance, responder +// message, and long term initiator private key. +// +// On failures sharedSecret will contain a randomized value. Providing a +// malformed responder message, or a private key that uses a different +// ParamterSet than the AKEInitiatorState will result in a panic. +func (s *AKEInitiatorState) Shared(recv []byte, initiatorPrivateKey *PrivateKey) (sharedSecret []byte) { + p := s.eSk.PublicKey.p + + if initiatorPrivateKey.PublicKey.p != p { + panic(ErrParameterSetMismatch) + } + if len(recv) != p.AKEResponderMessageSize() { + panic(ErrInvalidMessageSize) + } + ctLen := p.CipherTextSize() + + xof := sha3.NewShake256() + var tk []byte + + tk = s.eSk.KEMDecrypt(recv[:ctLen]) + xof.Write(tk) + + tk = initiatorPrivateKey.KEMDecrypt(recv[ctLen:]) + xof.Write(tk) + + xof.Write(s.tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} + +// NewAKEInitiatorState creates a new initiator AKE instance. +func (pk *PublicKey) NewAKEInitiatorState(rng io.Reader) (*AKEInitiatorState, error) { + s := new(AKEInitiatorState) + + // This is identical to the UAKE case, so just reuse the code. + us, err := pk.NewUAKEInitiatorState(rng) + if err != nil { + return nil, err + } + + s.Message = us.Message + s.eSk = us.eSk + s.tk = us.tk + + return s, nil +} + +// AKEResponderShared generates a responder message and shared secret given +// a initiator AKE message and long term initiator public key. +// +// On failures sharedSecret will contain a randomized value. Providing a +// malformed responder message, or a private key that uses a different +// ParamterSet than the AKEInitiatorState will result in a panic. +func (sk *PrivateKey) AKEResponderShared(rng io.Reader, recv []byte, peerPublicKey *PublicKey) (message, sharedSecret []byte) { + p := sk.PublicKey.p + pkLen := p.PublicKeySize() + + if peerPublicKey.p != p { + panic(ErrParameterSetMismatch) + } + + // Deserialize the peer's ephemeral public key. + if len(recv) != p.AKEInitiatorMessageSize() { + panic(ErrInvalidMessageSize) + } + rawPk, ct := recv[:pkLen], recv[pkLen:] + pk, err := p.PublicKeyFromBytes(rawPk) + if err != nil { + panic(err) + } + + message = make([]byte, 0, p.AKEResponderMessageSize()) + + xof := sha3.NewShake256() + var tk, tmp []byte + + tmp, tk, err = pk.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + message = append(message, tmp...) + + tmp, tk, err = peerPublicKey.KEMEncrypt(rng) + if err != nil { + panic(err) + } + xof.Write(tk) + message = append(message, tmp...) + + tk = sk.KEMDecrypt(ct) + xof.Write(tk) + sharedSecret = make([]byte, SymSize) + xof.Read(sharedSecret) + + return +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go b/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go new file mode 100644 index 0000000..5fb9580 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go @@ -0,0 +1,65 @@ +// ntt.go - Number-Theoretic Transform. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Computes negacyclic number-theoretic transform (NTT) of a polynomial (vector +// of 256 coefficients) in place; inputs assumed to be in normal order, output +// in bitreversed order. +func nttRef(p *[kyberN]uint16) { + var j int + k := 1 + for level := 7; level >= 0; level-- { + distance := 1 << uint(level) + for start := 0; start < kyberN; start = j + distance { + zeta := zetas[k] + k++ + for j = start; j < start+distance; j++ { + t := montgomeryReduce(uint32(zeta) * uint32(p[j+distance])) + p[j+distance] = barrettReduce(p[j] + 4*kyberQ - t) + + if level&1 == 1 { // odd level + p[j] = p[j] + t // Omit reduction (be lazy) + } else { + p[j] = barrettReduce(p[j] + t) + } + } + } + } +} + +// Computes inverse of negacyclic number-theoretic transform (NTT) of a +// polynomial (vector of 256 coefficients) in place; inputs assumed to be in +// bitreversed order, output in normal order. +func invnttRef(a *[kyberN]uint16) { + for level := 0; level < 8; level++ { + distance := 1 << uint(level) + for start := 0; start < distance; start++ { + var jTwiddle int + for j := start; j < kyberN-1; j += 2 * distance { + w := uint32(omegasInvBitrevMontgomery[jTwiddle]) + jTwiddle++ + + temp := a[j] + + if level&1 == 1 { // odd level + a[j] = barrettReduce(temp + a[j+distance]) + } else { + a[j] = temp + a[j+distance] // Omit reduction (be lazy) + } + + t := w * (uint32(temp) + 4*kyberQ - uint32(a[j+distance])) + + a[j+distance] = montgomeryReduce(t) + } + } + } + + for i, v := range psisInvMontgomery { + a[i] = montgomeryReduce(uint32(a[i]) * uint32(v)) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/params.go b/vendor/git.schwanenlied.me/yawning/kyber.git/params.go new file mode 100644 index 0000000..32bcabd --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/params.go @@ -0,0 +1,116 @@ +// params.go - Kyber parameterization. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +const ( + // SymSize is the size of the shared key (and certain internal parameters + // such as hashes and seeds) in bytes. + SymSize = 32 + + kyberN = 256 + kyberQ = 7681 + + polySize = 416 + polyCompressedSize = 96 + + compressedCoeffSize = 352 +) + +var ( + // Kyber512 is the Kyber-512 parameter set, which aims to provide security + // equivalent to AES-128. + // + // This parameter set has a 1632 byte private key, 736 byte public key, + // and a 800 byte cipher text. + Kyber512 = newParameterSet("Kyber-512", 2) + + // Kyber768 is the Kyber-768 parameter set, which aims to provide security + // equivalent to AES-192. + // + // This parameter set has a 2400 byte private key, 1088 byte public key, + // and a 1152 byte cipher text. + Kyber768 = newParameterSet("Kyber-768", 3) + + // Kyber1024 is the Kyber-1024 parameter set, which aims to provide + // security equivalent to AES-256. + // + // This parameter set has a 3168 byte private key, 1440 byte public key, + // and a 1504 byte cipher text. + Kyber1024 = newParameterSet("Kyber-1024", 4) +) + +// ParameterSet is a Kyber parameter set. +type ParameterSet struct { + name string + + k int + eta int + + polyVecSize int + polyVecCompressedSize int + + indcpaMsgSize int + indcpaPublicKeySize int + indcpaSecretKeySize int + indcpaSize int + + publicKeySize int + secretKeySize int + cipherTextSize int +} + +// Name returns the name of a given ParameterSet. +func (p *ParameterSet) Name() string { + return p.name +} + +// PublicKeySize returns the size of a public key in bytes. +func (p *ParameterSet) PublicKeySize() int { + return p.publicKeySize +} + +// PrivateKeySize returns the size of a private key in bytes. +func (p *ParameterSet) PrivateKeySize() int { + return p.secretKeySize +} + +// CipherTextSize returns the size of a cipher text in bytes. +func (p *ParameterSet) CipherTextSize() int { + return p.cipherTextSize +} + +func newParameterSet(name string, k int) *ParameterSet { + var p ParameterSet + + p.name = name + p.k = k + switch k { + case 2: + p.eta = 5 + case 3: + p.eta = 4 + case 4: + p.eta = 3 + default: + panic("kyber: k must be in {2,3,4}") + } + + p.polyVecSize = k * polySize + p.polyVecCompressedSize = k * compressedCoeffSize + + p.indcpaMsgSize = SymSize + p.indcpaPublicKeySize = p.polyVecCompressedSize + SymSize + p.indcpaSecretKeySize = p.polyVecSize + p.indcpaSize = p.polyVecCompressedSize + polyCompressedSize + + p.publicKeySize = p.indcpaPublicKeySize + p.secretKeySize = p.indcpaSecretKeySize + p.indcpaPublicKeySize + 2*SymSize // 32 bytes of additional space to save H(pk) + p.cipherTextSize = p.indcpaSize + + return &p +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go b/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go new file mode 100644 index 0000000..85f27b1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go @@ -0,0 +1,146 @@ +// poly.go - Kyber polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +import "golang.org/x/crypto/sha3" + +// Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial coeffs[0] + +// X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1]. +type poly struct { + coeffs [kyberN]uint16 +} + +// Compression and subsequent serialization of a polynomial. +func (p *poly) compress(r []byte) { + var t [8]uint32 + + for i, k := 0, 0; i < kyberN; i, k = i+8, k+3 { + for j := 0; j < 8; j++ { + t[j] = uint32((((freeze(p.coeffs[i+j]) << 3) + kyberQ/2) / kyberQ) & 7) + } + + r[k] = byte(t[0] | (t[1] << 3) | (t[2] << 6)) + r[k+1] = byte((t[2] >> 2) | (t[3] << 1) | (t[4] << 4) | (t[5] << 7)) + r[k+2] = byte((t[5] >> 1) | (t[6] << 2) | (t[7] << 5)) + } +} + +// De-serialization and subsequent decompression of a polynomial; approximate +// inverse of poly.compress(). +func (p *poly) decompress(a []byte) { + for i, off := 0, 0; i < kyberN; i, off = i+8, off+3 { + p.coeffs[i+0] = ((uint16(a[off]&7) * kyberQ) + 4) >> 3 + p.coeffs[i+1] = (((uint16(a[off]>>3) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+2] = (((uint16(a[off]>>6) | (uint16(a[off+1]<<2) & 4)) * kyberQ) + 4) >> 3 + p.coeffs[i+3] = (((uint16(a[off+1]>>1) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+4] = (((uint16(a[off+1]>>4) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+5] = (((uint16(a[off+1]>>7) | (uint16(a[off+2]<<1) & 6)) * kyberQ) + 4) >> 3 + p.coeffs[i+6] = (((uint16(a[off+2]>>2) & 7) * kyberQ) + 4) >> 3 + p.coeffs[i+7] = (((uint16(a[off+2] >> 5)) * kyberQ) + 4) >> 3 + } +} + +// Serialization of a polynomial. +func (p *poly) toBytes(r []byte) { + var t [8]uint16 + + for i := 0; i < kyberN/8; i++ { + for j := 0; j < 8; j++ { + t[j] = freeze(p.coeffs[8*i+j]) + } + + r[13*i+0] = byte(t[0] & 0xff) + r[13*i+1] = byte((t[0] >> 8) | ((t[1] & 0x07) << 5)) + r[13*i+2] = byte((t[1] >> 3) & 0xff) + r[13*i+3] = byte((t[1] >> 11) | ((t[2] & 0x3f) << 2)) + r[13*i+4] = byte((t[2] >> 6) | ((t[3] & 0x01) << 7)) + r[13*i+5] = byte((t[3] >> 1) & 0xff) + r[13*i+6] = byte((t[3] >> 9) | ((t[4] & 0x0f) << 4)) + r[13*i+7] = byte((t[4] >> 4) & 0xff) + r[13*i+8] = byte((t[4] >> 12) | ((t[5] & 0x7f) << 1)) + r[13*i+9] = byte((t[5] >> 7) | ((t[6] & 0x03) << 6)) + r[13*i+10] = byte((t[6] >> 2) & 0xff) + r[13*i+11] = byte((t[6] >> 10) | ((t[7] & 0x1f) << 3)) + r[13*i+12] = byte(t[7] >> 5) + } +} + +// De-serialization of a polynomial; inverse of poly.toBytes(). +func (p *poly) fromBytes(a []byte) { + for i := 0; i < kyberN/8; i++ { + p.coeffs[8*i+0] = uint16(a[13*i+0]) | ((uint16(a[13*i+1]) & 0x1f) << 8) + p.coeffs[8*i+1] = (uint16(a[13*i+1]) >> 5) | (uint16(a[13*i+2]) << 3) | ((uint16(a[13*i+3]) & 0x03) << 11) + p.coeffs[8*i+2] = (uint16(a[13*i+3]) >> 2) | ((uint16(a[13*i+4]) & 0x7f) << 6) + p.coeffs[8*i+3] = (uint16(a[13*i+4]) >> 7) | (uint16(a[13*i+5]) << 1) | ((uint16(a[13*i+6]) & 0x0f) << 9) + p.coeffs[8*i+4] = (uint16(a[13*i+6]) >> 4) | (uint16(a[13*i+7]) << 4) | ((uint16(a[13*i+8]) & 0x01) << 12) + p.coeffs[8*i+5] = (uint16(a[13*i+8]) >> 1) | ((uint16(a[13*i+9]) & 0x3f) << 7) + p.coeffs[8*i+6] = (uint16(a[13*i+9]) >> 6) | (uint16(a[13*i+10]) << 2) | ((uint16(a[13*i+11]) & 0x07) << 10) + p.coeffs[8*i+7] = (uint16(a[13*i+11]) >> 3) | (uint16(a[13*i+12]) << 5) + } +} + +// Convert 32-byte message to polynomial. +func (p *poly) fromMsg(msg []byte) { + for i, v := range msg[:SymSize] { + for j := 0; j < 8; j++ { + mask := -((uint16(v) >> uint(j)) & 1) + p.coeffs[8*i+j] = mask & ((kyberQ + 1) / 2) + } + } +} + +// Convert polynomial to 32-byte message. +func (p *poly) toMsg(msg []byte) { + for i := 0; i < SymSize; i++ { + msg[i] = 0 + for j := 0; j < 8; j++ { + t := (((freeze(p.coeffs[8*i+j]) << 1) + kyberQ/2) / kyberQ) & 1 + msg[i] |= byte(t << uint(j)) + } + } +} + +// Sample a polynomial deterministically from a seed and a nonce, with output +// polynomial close to centered binomial distribution with parameter eta. +func (p *poly) getNoise(seed []byte, nonce byte, eta int) { + extSeed := make([]byte, 0, SymSize+1) + extSeed = append(extSeed, seed...) + extSeed = append(extSeed, nonce) + + buf := make([]byte, eta*kyberN/4) + sha3.ShakeSum256(buf, extSeed) + + p.cbd(buf, eta) +} + +// Computes negacyclic number-theoretic transform (NTT) of a polynomial in +// place; inputs assumed to be in normal order, output in bitreversed order. +func (p *poly) ntt() { + hardwareAccelImpl.nttFn(&p.coeffs) +} + +// Computes inverse of negacyclic number-theoretic transform (NTT) of a +// polynomial in place; inputs assumed to be in bitreversed order, output in +// normal order. +func (p *poly) invntt() { + hardwareAccelImpl.invnttFn(&p.coeffs) +} + +// Add two polynomials. +func (p *poly) add(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) + } +} + +// Subtract two polynomials. +func (p *poly) sub(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*kyberQ - b.coeffs[i]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go b/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go new file mode 100644 index 0000000..f4c4b4a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go @@ -0,0 +1,115 @@ +// polyvec.go - Vector of Kyber polynomials. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +type polyVec struct { + vec []*poly +} + +// Compress and serialize vector of polynomials. +func (v *polyVec) compress(r []byte) { + var off int + for _, vec := range v.vec { + for j := 0; j < kyberN/8; j++ { + var t [8]uint16 + for k := 0; k < 8; k++ { + t[k] = uint16((((uint32(freeze(vec.coeffs[8*j+k])) << 11) + kyberQ/2) / kyberQ) & 0x7ff) + } + + r[off+11*j+0] = byte(t[0] & 0xff) + r[off+11*j+1] = byte((t[0] >> 8) | ((t[1] & 0x1f) << 3)) + r[off+11*j+2] = byte((t[1] >> 5) | ((t[2] & 0x03) << 6)) + r[off+11*j+3] = byte((t[2] >> 2) & 0xff) + r[off+11*j+4] = byte((t[2] >> 10) | ((t[3] & 0x7f) << 1)) + r[off+11*j+5] = byte((t[3] >> 7) | ((t[4] & 0x0f) << 4)) + r[off+11*j+6] = byte((t[4] >> 4) | ((t[5] & 0x01) << 7)) + r[off+11*j+7] = byte((t[5] >> 1) & 0xff) + r[off+11*j+8] = byte((t[5] >> 9) | ((t[6] & 0x3f) << 2)) + r[off+11*j+9] = byte((t[6] >> 6) | ((t[7] & 0x07) << 5)) + r[off+11*j+10] = byte((t[7] >> 3)) + } + off += compressedCoeffSize + } +} + +// De-serialize and decompress vector of polynomials; approximate inverse of +// polyVec.compress(). +func (v *polyVec) decompress(a []byte) { + var off int + for _, vec := range v.vec { + for j := 0; j < kyberN/8; j++ { + vec.coeffs[8*j+0] = uint16((((uint32(a[off+11*j+0]) | ((uint32(a[off+11*j+1]) & 0x07) << 8)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+1] = uint16(((((uint32(a[off+11*j+1]) >> 3) | ((uint32(a[off+11*j+2]) & 0x3f) << 5)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+2] = uint16(((((uint32(a[off+11*j+2]) >> 6) | ((uint32(a[off+11*j+3]) & 0xff) << 2) | ((uint32(a[off+11*j+4]) & 0x01) << 10)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+3] = uint16(((((uint32(a[off+11*j+4]) >> 1) | ((uint32(a[off+11*j+5]) & 0x0f) << 7)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+4] = uint16(((((uint32(a[off+11*j+5]) >> 4) | ((uint32(a[off+11*j+6]) & 0x7f) << 4)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+5] = uint16(((((uint32(a[off+11*j+6]) >> 7) | ((uint32(a[off+11*j+7]) & 0xff) << 1) | ((uint32(a[off+11*j+8]) & 0x03) << 9)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+6] = uint16(((((uint32(a[off+11*j+8]) >> 2) | ((uint32(a[off+11*j+9]) & 0x1f) << 6)) * kyberQ) + 1024) >> 11) + vec.coeffs[8*j+7] = uint16(((((uint32(a[off+11*j+9]) >> 5) | ((uint32(a[off+11*j+10]) & 0xff) << 3)) * kyberQ) + 1024) >> 11) + } + off += compressedCoeffSize + } +} + +// Serialize vector of polynomials. +func (v *polyVec) toBytes(r []byte) { + for i, p := range v.vec { + p.toBytes(r[i*polySize:]) + } +} + +// De-serialize vector of polynomials; inverse of polyVec.toBytes(). +func (v *polyVec) fromBytes(a []byte) { + for i, p := range v.vec { + p.fromBytes(a[i*polySize:]) + } +} + +// Apply forward NTT to all elements of a vector of polynomials. +func (v *polyVec) ntt() { + for _, p := range v.vec { + p.ntt() + } +} + +// Apply inverse NTT to all elements of a vector of polynomials. +func (v *polyVec) invntt() { + for _, p := range v.vec { + p.invntt() + } +} + +// Pointwise multiply elements of a and b and accumulate into p. +func (p *poly) pointwiseAcc(a, b *polyVec) { + hardwareAccelImpl.pointwiseAccFn(p, a, b) +} + +// Add vectors of polynomials. +func (v *polyVec) add(a, b *polyVec) { + for i, p := range v.vec { + p.add(a.vec[i], b.vec[i]) + } +} + +// Get compressed and serialized size in bytes. +func (v *polyVec) compressedSize() int { + return len(v.vec) * compressedCoeffSize +} + +func pointwiseAccRef(p *poly, a, b *polyVec) { + for j := 0; j < kyberN; j++ { + t := montgomeryReduce(4613 * uint32(b.vec[0].coeffs[j])) // 4613 = 2^{2*18} % q + p.coeffs[j] = montgomeryReduce(uint32(a.vec[0].coeffs[j]) * uint32(t)) + for i := 1; i < len(a.vec); i++ { // len(a.vec) == kyberK + t = montgomeryReduce(4613 * uint32(b.vec[i].coeffs[j])) + p.coeffs[j] += montgomeryReduce(uint32(a.vec[i].coeffs[j]) * uint32(t)) + } + + p.coeffs[j] = barrettReduce(p.coeffs[j]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go b/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go new file mode 100644 index 0000000..a18cd8f --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go @@ -0,0 +1,87 @@ +// precomp.go - Precomputed NTT constants. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +// Precomputed constants for the forward NTT and inverse NTT. +// Computed using Pari/GP as follows: +// +// brv=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240, \ +// 8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248, \ +// 4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244, \ +// 12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252, \ +// 2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242, \ +// 10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250, \ +// 6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246, \ +// 14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254, \ +// 1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241, \ +// 9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249, \ +// 5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245, \ +// 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253, \ +// 3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243, \ +// 11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251, \ +// 7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247, \ +// 15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255]; +// +// q = 7681; +// n = 256; +// mont = Mod(2^18,q); +// +// g=0; for(i=2,q-1,if(znorder(Mod(i,q)) == 2*n, g=Mod(i,q); break)) +// +// zetas = lift(vector(n, i, g^(brv[i])*mont)) +// omegas_inv_bitrev_montgomery = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont)) +// psis_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont)) + +var zetas = [kyberN]uint16{ + 990, 7427, 2634, 6819, 578, 3281, 2143, 1095, 484, 6362, 3336, 5382, 6086, 3823, 877, 5656, + 3583, 7010, 6414, 263, 1285, 291, 7143, 7338, 1581, 5134, 5184, 5932, 4042, 5775, 2468, 3, + 606, 729, 5383, 962, 3240, 7548, 5129, 7653, 5929, 4965, 2461, 641, 1584, 2666, 1142, 157, + 7407, 5222, 5602, 5142, 6140, 5485, 4931, 1559, 2085, 5284, 2056, 3538, 7269, 3535, 7190, 1957, + 3465, 6792, 1538, 4664, 2023, 7643, 3660, 7673, 1694, 6905, 3995, 3475, 5939, 1859, 6910, 4434, + 1019, 1492, 7087, 4761, 657, 4859, 5798, 2640, 1693, 2607, 2782, 5400, 6466, 1010, 957, 3851, + 2121, 6392, 7319, 3367, 3659, 3375, 6430, 7583, 1549, 5856, 4773, 6084, 5544, 1650, 3997, 4390, + 6722, 2915, 4245, 2635, 6128, 7676, 5737, 1616, 3457, 3132, 7196, 4702, 6239, 851, 2122, 3009, + 7613, 7295, 2007, 323, 5112, 3716, 2289, 6442, 6965, 2713, 7126, 3401, 963, 6596, 607, 5027, + 7078, 4484, 5937, 944, 2860, 2680, 5049, 1777, 5850, 3387, 6487, 6777, 4812, 4724, 7077, 186, + 6848, 6793, 3463, 5877, 1174, 7116, 3077, 5945, 6591, 590, 6643, 1337, 6036, 3991, 1675, 2053, + 6055, 1162, 1679, 3883, 4311, 2106, 6163, 4486, 6374, 5006, 4576, 4288, 5180, 4102, 282, 6119, + 7443, 6330, 3184, 4971, 2530, 5325, 4171, 7185, 5175, 5655, 1898, 382, 7211, 43, 5965, 6073, + 1730, 332, 1577, 3304, 2329, 1699, 6150, 2379, 5113, 333, 3502, 4517, 1480, 1172, 5567, 651, + 925, 4573, 599, 1367, 4109, 1863, 6929, 1605, 3866, 2065, 4048, 839, 5764, 2447, 2022, 3345, + 1990, 4067, 2036, 2069, 3567, 7371, 2368, 339, 6947, 2159, 654, 7327, 2768, 6676, 987, 2214, +} + +var omegasInvBitrevMontgomery = [kyberN / 2]uint16{ + 990, 254, 862, 5047, 6586, 5538, 4400, 7103, 2025, 6804, 3858, 1595, 2299, 4345, 1319, 7197, + 7678, 5213, 1906, 3639, 1749, 2497, 2547, 6100, 343, 538, 7390, 6396, 7418, 1267, 671, 4098, + 5724, 491, 4146, 412, 4143, 5625, 2397, 5596, 6122, 2750, 2196, 1541, 2539, 2079, 2459, 274, + 7524, 6539, 5015, 6097, 7040, 5220, 2716, 1752, 28, 2552, 133, 4441, 6719, 2298, 6952, 7075, + 4672, 5559, 6830, 1442, 2979, 485, 4549, 4224, 6065, 1944, 5, 1553, 5046, 3436, 4766, 959, + 3291, 3684, 6031, 2137, 1597, 2908, 1825, 6132, 98, 1251, 4306, 4022, 4314, 362, 1289, 5560, + 3830, 6724, 6671, 1215, 2281, 4899, 5074, 5988, 5041, 1883, 2822, 7024, 2920, 594, 6189, 6662, + 3247, 771, 5822, 1742, 4206, 3686, 776, 5987, 8, 4021, 38, 5658, 3017, 6143, 889, 4216, +} + +var psisInvMontgomery = [kyberN]uint16{ + 1024, 4972, 5779, 6907, 4943, 4168, 315, 5580, 90, 497, 1123, 142, 4710, 5527, 2443, 4871, + 698, 2489, 2394, 4003, 684, 2241, 2390, 7224, 5072, 2064, 4741, 1687, 6841, 482, 7441, 1235, + 2126, 4742, 2802, 5744, 6287, 4933, 699, 3604, 1297, 2127, 5857, 1705, 3868, 3779, 4397, 2177, + 159, 622, 2240, 1275, 640, 6948, 4572, 5277, 209, 2605, 1157, 7328, 5817, 3191, 1662, 2009, + 4864, 574, 2487, 164, 6197, 4436, 7257, 3462, 4268, 4281, 3414, 4515, 3170, 1290, 2003, 5855, + 7156, 6062, 7531, 1732, 3249, 4884, 7512, 3590, 1049, 2123, 1397, 6093, 3691, 6130, 6541, 3946, + 6258, 3322, 1788, 4241, 4900, 2309, 1400, 1757, 400, 502, 6698, 2338, 3011, 668, 7444, 4580, + 6516, 6795, 2959, 4136, 3040, 2279, 6355, 3943, 2913, 6613, 7416, 4084, 6508, 5556, 4054, 3782, + 61, 6567, 2212, 779, 632, 5709, 5667, 4923, 4911, 6893, 4695, 4164, 3536, 2287, 7594, 2848, + 3267, 1911, 3128, 546, 1991, 156, 4958, 5531, 6903, 483, 875, 138, 250, 2234, 2266, 7222, + 2842, 4258, 812, 6703, 232, 5207, 6650, 2585, 1900, 6225, 4932, 7265, 4701, 3173, 4635, 6393, + 227, 7313, 4454, 4284, 6759, 1224, 5223, 1447, 395, 2608, 4502, 4037, 189, 3348, 54, 6443, + 2210, 6230, 2826, 1780, 3002, 5995, 1955, 6102, 6045, 3938, 5019, 4417, 1434, 1262, 1507, 5847, + 5917, 7157, 7177, 6434, 7537, 741, 4348, 1309, 145, 374, 2236, 4496, 5028, 6771, 6923, 7421, + 1978, 1023, 3857, 6876, 1102, 7451, 4704, 6518, 1344, 765, 384, 5705, 1207, 1630, 4734, 1563, + 6839, 5933, 1954, 4987, 7142, 5814, 7527, 4953, 7637, 4707, 2182, 5734, 2818, 541, 4097, 5641, +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go b/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go new file mode 100644 index 0000000..ada3eec --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go @@ -0,0 +1,43 @@ +// reduce.go - Montgomery, Barret, and Full reduction. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to the software, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package kyber + +const ( + qinv = 7679 // -inverse_mod(q,2^18) + rlog = 18 +) + +// Montgomery reduction; given a 32-bit integer a, computes 16-bit integer +// congruent to a * R^-1 mod q, where R=2^18 (see value of rlog). +func montgomeryReduce(a uint32) uint16 { + u := a * qinv + u &= (1 << rlog) - 1 + u *= kyberQ + a += u + return uint16(a >> rlog) +} + +// Barrett reduction; given a 16-bit integer a, computes 16-bit integer +// congruent to a mod q in {0,...,11768}. +func barrettReduce(a uint16) uint16 { + u := uint32(a >> 13) // ((uint32_t) a * sinv) >> 16 + u *= kyberQ + a -= uint16(u) + return a +} + +// Full reduction; given a 16-bit integer a, computes unsigned integer a mod q. +func freeze(x uint16) uint16 { + r := barrettReduce(x) + + m := r - kyberQ + c := int16(m) + c >>= 15 + r = m ^ ((r ^ m) & uint16(c)) + return r +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE b/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE new file mode 100644 index 0000000..6ca207e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE @@ -0,0 +1,122 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. + diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go b/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go new file mode 100644 index 0000000..2f99489 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go @@ -0,0 +1,929 @@ +// batcher.go - Constant time polynomial sampler. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +func batcher84(x []uint16) { + // In theory this should probably be inlined. + compareAndSwap := func(x []uint16, i, j int) { + const _5q = 5 * paramQ + var c int32 + var t uint16 + + c = _5q - 1 - int32(x[16*i]) + c >>= 31 + t = x[16*i] ^ x[16*j] + t &= uint16(c) + x[16*i] ^= t + x[16*j] ^= t + } + + compareAndSwap(x, 0, 1) + compareAndSwap(x, 2, 3) + compareAndSwap(x, 0, 2) + compareAndSwap(x, 1, 3) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 4, 5) + compareAndSwap(x, 6, 7) + compareAndSwap(x, 4, 6) + compareAndSwap(x, 5, 7) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 0, 4) + compareAndSwap(x, 2, 6) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 1, 5) + compareAndSwap(x, 3, 7) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 8, 9) + compareAndSwap(x, 10, 11) + compareAndSwap(x, 8, 10) + compareAndSwap(x, 9, 11) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 12, 13) + compareAndSwap(x, 14, 15) + compareAndSwap(x, 12, 14) + compareAndSwap(x, 13, 15) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 8, 12) + compareAndSwap(x, 10, 14) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 9, 13) + compareAndSwap(x, 11, 15) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 0, 8) + compareAndSwap(x, 4, 12) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 2, 10) + compareAndSwap(x, 6, 14) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 1, 9) + compareAndSwap(x, 5, 13) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 3, 11) + compareAndSwap(x, 7, 15) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 16, 17) + compareAndSwap(x, 18, 19) + compareAndSwap(x, 16, 18) + compareAndSwap(x, 17, 19) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 20, 21) + compareAndSwap(x, 22, 23) + compareAndSwap(x, 20, 22) + compareAndSwap(x, 21, 23) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 16, 20) + compareAndSwap(x, 18, 22) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 17, 21) + compareAndSwap(x, 19, 23) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 24, 25) + compareAndSwap(x, 26, 27) + compareAndSwap(x, 24, 26) + compareAndSwap(x, 25, 27) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 28, 29) + compareAndSwap(x, 30, 31) + compareAndSwap(x, 28, 30) + compareAndSwap(x, 29, 31) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 24, 28) + compareAndSwap(x, 26, 30) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 25, 29) + compareAndSwap(x, 27, 31) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 16, 24) + compareAndSwap(x, 20, 28) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 18, 26) + compareAndSwap(x, 22, 30) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 17, 25) + compareAndSwap(x, 21, 29) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 19, 27) + compareAndSwap(x, 23, 31) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 0, 16) + compareAndSwap(x, 8, 24) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 4, 20) + compareAndSwap(x, 12, 28) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 2, 18) + compareAndSwap(x, 10, 26) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 6, 22) + compareAndSwap(x, 14, 30) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 1, 17) + compareAndSwap(x, 9, 25) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 5, 21) + compareAndSwap(x, 13, 29) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 3, 19) + compareAndSwap(x, 11, 27) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 7, 23) + compareAndSwap(x, 15, 31) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 32, 33) + compareAndSwap(x, 34, 35) + compareAndSwap(x, 32, 34) + compareAndSwap(x, 33, 35) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 36, 37) + compareAndSwap(x, 38, 39) + compareAndSwap(x, 36, 38) + compareAndSwap(x, 37, 39) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 32, 36) + compareAndSwap(x, 34, 38) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 33, 37) + compareAndSwap(x, 35, 39) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 40, 41) + compareAndSwap(x, 42, 43) + compareAndSwap(x, 40, 42) + compareAndSwap(x, 41, 43) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 44, 45) + compareAndSwap(x, 46, 47) + compareAndSwap(x, 44, 46) + compareAndSwap(x, 45, 47) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 40, 44) + compareAndSwap(x, 42, 46) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 41, 45) + compareAndSwap(x, 43, 47) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 32, 40) + compareAndSwap(x, 36, 44) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 34, 42) + compareAndSwap(x, 38, 46) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 33, 41) + compareAndSwap(x, 37, 45) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 35, 43) + compareAndSwap(x, 39, 47) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 48, 49) + compareAndSwap(x, 50, 51) + compareAndSwap(x, 48, 50) + compareAndSwap(x, 49, 51) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 52, 53) + compareAndSwap(x, 54, 55) + compareAndSwap(x, 52, 54) + compareAndSwap(x, 53, 55) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 48, 52) + compareAndSwap(x, 50, 54) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 49, 53) + compareAndSwap(x, 51, 55) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 56, 57) + compareAndSwap(x, 58, 59) + compareAndSwap(x, 56, 58) + compareAndSwap(x, 57, 59) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 60, 61) + compareAndSwap(x, 62, 63) + compareAndSwap(x, 60, 62) + compareAndSwap(x, 61, 63) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 56, 60) + compareAndSwap(x, 58, 62) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 57, 61) + compareAndSwap(x, 59, 63) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 48, 56) + compareAndSwap(x, 52, 60) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 50, 58) + compareAndSwap(x, 54, 62) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 49, 57) + compareAndSwap(x, 53, 61) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 51, 59) + compareAndSwap(x, 55, 63) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 32, 48) + compareAndSwap(x, 40, 56) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 36, 52) + compareAndSwap(x, 44, 60) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 34, 50) + compareAndSwap(x, 42, 58) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 38, 54) + compareAndSwap(x, 46, 62) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 33, 49) + compareAndSwap(x, 41, 57) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 37, 53) + compareAndSwap(x, 45, 61) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 35, 51) + compareAndSwap(x, 43, 59) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 39, 55) + compareAndSwap(x, 47, 63) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 0, 32) + compareAndSwap(x, 16, 48) + compareAndSwap(x, 16, 32) + compareAndSwap(x, 8, 40) + compareAndSwap(x, 24, 56) + compareAndSwap(x, 24, 40) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 24, 32) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 4, 36) + compareAndSwap(x, 20, 52) + compareAndSwap(x, 20, 36) + compareAndSwap(x, 12, 44) + compareAndSwap(x, 28, 60) + compareAndSwap(x, 28, 44) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 28, 36) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 28, 32) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 2, 34) + compareAndSwap(x, 18, 50) + compareAndSwap(x, 18, 34) + compareAndSwap(x, 10, 42) + compareAndSwap(x, 26, 58) + compareAndSwap(x, 26, 42) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 26, 34) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 6, 38) + compareAndSwap(x, 22, 54) + compareAndSwap(x, 22, 38) + compareAndSwap(x, 14, 46) + compareAndSwap(x, 30, 62) + compareAndSwap(x, 30, 46) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 30, 38) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 30, 34) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 30, 32) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 1, 33) + compareAndSwap(x, 17, 49) + compareAndSwap(x, 17, 33) + compareAndSwap(x, 9, 41) + compareAndSwap(x, 25, 57) + compareAndSwap(x, 25, 41) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 25, 33) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 5, 37) + compareAndSwap(x, 21, 53) + compareAndSwap(x, 21, 37) + compareAndSwap(x, 13, 45) + compareAndSwap(x, 29, 61) + compareAndSwap(x, 29, 45) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 29, 37) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 29, 33) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 3, 35) + compareAndSwap(x, 19, 51) + compareAndSwap(x, 19, 35) + compareAndSwap(x, 11, 43) + compareAndSwap(x, 27, 59) + compareAndSwap(x, 27, 43) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 27, 35) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 7, 39) + compareAndSwap(x, 23, 55) + compareAndSwap(x, 23, 39) + compareAndSwap(x, 15, 47) + compareAndSwap(x, 31, 63) + compareAndSwap(x, 31, 47) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 31, 39) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 31, 35) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 31, 33) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 31, 32) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 64, 65) + compareAndSwap(x, 66, 67) + compareAndSwap(x, 64, 66) + compareAndSwap(x, 65, 67) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 68, 69) + compareAndSwap(x, 70, 71) + compareAndSwap(x, 68, 70) + compareAndSwap(x, 69, 71) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 64, 68) + compareAndSwap(x, 66, 70) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 65, 69) + compareAndSwap(x, 67, 71) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 72, 73) + compareAndSwap(x, 74, 75) + compareAndSwap(x, 72, 74) + compareAndSwap(x, 73, 75) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 76, 77) + compareAndSwap(x, 78, 79) + compareAndSwap(x, 76, 78) + compareAndSwap(x, 77, 79) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 72, 76) + compareAndSwap(x, 74, 78) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 73, 77) + compareAndSwap(x, 75, 79) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 64, 72) + compareAndSwap(x, 68, 76) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 66, 74) + compareAndSwap(x, 70, 78) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 65, 73) + compareAndSwap(x, 69, 77) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 67, 75) + compareAndSwap(x, 71, 79) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 80, 81) + compareAndSwap(x, 82, 83) + compareAndSwap(x, 80, 82) + compareAndSwap(x, 81, 83) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 64, 80) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 66, 82) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 65, 81) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 67, 83) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) + compareAndSwap(x, 0, 64) + compareAndSwap(x, 32, 64) + compareAndSwap(x, 16, 80) + compareAndSwap(x, 48, 80) + compareAndSwap(x, 16, 32) + compareAndSwap(x, 48, 64) + compareAndSwap(x, 8, 72) + compareAndSwap(x, 40, 72) + compareAndSwap(x, 24, 40) + compareAndSwap(x, 56, 72) + compareAndSwap(x, 8, 16) + compareAndSwap(x, 24, 32) + compareAndSwap(x, 40, 48) + compareAndSwap(x, 56, 64) + compareAndSwap(x, 72, 80) + compareAndSwap(x, 4, 68) + compareAndSwap(x, 36, 68) + compareAndSwap(x, 20, 36) + compareAndSwap(x, 52, 68) + compareAndSwap(x, 12, 76) + compareAndSwap(x, 44, 76) + compareAndSwap(x, 28, 44) + compareAndSwap(x, 60, 76) + compareAndSwap(x, 12, 20) + compareAndSwap(x, 28, 36) + compareAndSwap(x, 44, 52) + compareAndSwap(x, 60, 68) + compareAndSwap(x, 4, 8) + compareAndSwap(x, 12, 16) + compareAndSwap(x, 20, 24) + compareAndSwap(x, 28, 32) + compareAndSwap(x, 36, 40) + compareAndSwap(x, 44, 48) + compareAndSwap(x, 52, 56) + compareAndSwap(x, 60, 64) + compareAndSwap(x, 68, 72) + compareAndSwap(x, 76, 80) + compareAndSwap(x, 2, 66) + compareAndSwap(x, 34, 66) + compareAndSwap(x, 18, 82) + compareAndSwap(x, 50, 82) + compareAndSwap(x, 18, 34) + compareAndSwap(x, 50, 66) + compareAndSwap(x, 10, 74) + compareAndSwap(x, 42, 74) + compareAndSwap(x, 26, 42) + compareAndSwap(x, 58, 74) + compareAndSwap(x, 10, 18) + compareAndSwap(x, 26, 34) + compareAndSwap(x, 42, 50) + compareAndSwap(x, 58, 66) + compareAndSwap(x, 74, 82) + compareAndSwap(x, 6, 70) + compareAndSwap(x, 38, 70) + compareAndSwap(x, 22, 38) + compareAndSwap(x, 54, 70) + compareAndSwap(x, 14, 78) + compareAndSwap(x, 46, 78) + compareAndSwap(x, 30, 46) + compareAndSwap(x, 62, 78) + compareAndSwap(x, 14, 22) + compareAndSwap(x, 30, 38) + compareAndSwap(x, 46, 54) + compareAndSwap(x, 62, 70) + compareAndSwap(x, 6, 10) + compareAndSwap(x, 14, 18) + compareAndSwap(x, 22, 26) + compareAndSwap(x, 30, 34) + compareAndSwap(x, 38, 42) + compareAndSwap(x, 46, 50) + compareAndSwap(x, 54, 58) + compareAndSwap(x, 62, 66) + compareAndSwap(x, 70, 74) + compareAndSwap(x, 78, 82) + compareAndSwap(x, 2, 4) + compareAndSwap(x, 6, 8) + compareAndSwap(x, 10, 12) + compareAndSwap(x, 14, 16) + compareAndSwap(x, 18, 20) + compareAndSwap(x, 22, 24) + compareAndSwap(x, 26, 28) + compareAndSwap(x, 30, 32) + compareAndSwap(x, 34, 36) + compareAndSwap(x, 38, 40) + compareAndSwap(x, 42, 44) + compareAndSwap(x, 46, 48) + compareAndSwap(x, 50, 52) + compareAndSwap(x, 54, 56) + compareAndSwap(x, 58, 60) + compareAndSwap(x, 62, 64) + compareAndSwap(x, 66, 68) + compareAndSwap(x, 70, 72) + compareAndSwap(x, 74, 76) + compareAndSwap(x, 78, 80) + compareAndSwap(x, 1, 65) + compareAndSwap(x, 33, 65) + compareAndSwap(x, 17, 81) + compareAndSwap(x, 49, 81) + compareAndSwap(x, 17, 33) + compareAndSwap(x, 49, 65) + compareAndSwap(x, 9, 73) + compareAndSwap(x, 41, 73) + compareAndSwap(x, 25, 41) + compareAndSwap(x, 57, 73) + compareAndSwap(x, 9, 17) + compareAndSwap(x, 25, 33) + compareAndSwap(x, 41, 49) + compareAndSwap(x, 57, 65) + compareAndSwap(x, 73, 81) + compareAndSwap(x, 5, 69) + compareAndSwap(x, 37, 69) + compareAndSwap(x, 21, 37) + compareAndSwap(x, 53, 69) + compareAndSwap(x, 13, 77) + compareAndSwap(x, 45, 77) + compareAndSwap(x, 29, 45) + compareAndSwap(x, 61, 77) + compareAndSwap(x, 13, 21) + compareAndSwap(x, 29, 37) + compareAndSwap(x, 45, 53) + compareAndSwap(x, 61, 69) + compareAndSwap(x, 5, 9) + compareAndSwap(x, 13, 17) + compareAndSwap(x, 21, 25) + compareAndSwap(x, 29, 33) + compareAndSwap(x, 37, 41) + compareAndSwap(x, 45, 49) + compareAndSwap(x, 53, 57) + compareAndSwap(x, 61, 65) + compareAndSwap(x, 69, 73) + compareAndSwap(x, 77, 81) + compareAndSwap(x, 3, 67) + compareAndSwap(x, 35, 67) + compareAndSwap(x, 19, 83) + compareAndSwap(x, 51, 83) + compareAndSwap(x, 19, 35) + compareAndSwap(x, 51, 67) + compareAndSwap(x, 11, 75) + compareAndSwap(x, 43, 75) + compareAndSwap(x, 27, 43) + compareAndSwap(x, 59, 75) + compareAndSwap(x, 11, 19) + compareAndSwap(x, 27, 35) + compareAndSwap(x, 43, 51) + compareAndSwap(x, 59, 67) + compareAndSwap(x, 75, 83) + compareAndSwap(x, 7, 71) + compareAndSwap(x, 39, 71) + compareAndSwap(x, 23, 39) + compareAndSwap(x, 55, 71) + compareAndSwap(x, 15, 79) + compareAndSwap(x, 47, 79) + compareAndSwap(x, 31, 47) + compareAndSwap(x, 63, 79) + compareAndSwap(x, 15, 23) + compareAndSwap(x, 31, 39) + compareAndSwap(x, 47, 55) + compareAndSwap(x, 63, 71) + compareAndSwap(x, 7, 11) + compareAndSwap(x, 15, 19) + compareAndSwap(x, 23, 27) + compareAndSwap(x, 31, 35) + compareAndSwap(x, 39, 43) + compareAndSwap(x, 47, 51) + compareAndSwap(x, 55, 59) + compareAndSwap(x, 63, 67) + compareAndSwap(x, 71, 75) + compareAndSwap(x, 79, 83) + compareAndSwap(x, 3, 5) + compareAndSwap(x, 7, 9) + compareAndSwap(x, 11, 13) + compareAndSwap(x, 15, 17) + compareAndSwap(x, 19, 21) + compareAndSwap(x, 23, 25) + compareAndSwap(x, 27, 29) + compareAndSwap(x, 31, 33) + compareAndSwap(x, 35, 37) + compareAndSwap(x, 39, 41) + compareAndSwap(x, 43, 45) + compareAndSwap(x, 47, 49) + compareAndSwap(x, 51, 53) + compareAndSwap(x, 55, 57) + compareAndSwap(x, 59, 61) + compareAndSwap(x, 63, 65) + compareAndSwap(x, 67, 69) + compareAndSwap(x, 71, 73) + compareAndSwap(x, 75, 77) + compareAndSwap(x, 79, 81) + compareAndSwap(x, 1, 2) + compareAndSwap(x, 3, 4) + compareAndSwap(x, 5, 6) + compareAndSwap(x, 7, 8) + compareAndSwap(x, 9, 10) + compareAndSwap(x, 11, 12) + compareAndSwap(x, 13, 14) + compareAndSwap(x, 15, 16) + compareAndSwap(x, 17, 18) + compareAndSwap(x, 19, 20) + compareAndSwap(x, 21, 22) + compareAndSwap(x, 23, 24) + compareAndSwap(x, 25, 26) + compareAndSwap(x, 27, 28) + compareAndSwap(x, 29, 30) + compareAndSwap(x, 31, 32) + compareAndSwap(x, 33, 34) + compareAndSwap(x, 35, 36) + compareAndSwap(x, 37, 38) + compareAndSwap(x, 39, 40) + compareAndSwap(x, 41, 42) + compareAndSwap(x, 43, 44) + compareAndSwap(x, 45, 46) + compareAndSwap(x, 47, 48) + compareAndSwap(x, 49, 50) + compareAndSwap(x, 51, 52) + compareAndSwap(x, 53, 54) + compareAndSwap(x, 55, 56) + compareAndSwap(x, 57, 58) + compareAndSwap(x, 59, 60) + compareAndSwap(x, 61, 62) + compareAndSwap(x, 63, 64) + compareAndSwap(x, 65, 66) + compareAndSwap(x, 67, 68) + compareAndSwap(x, 69, 70) + compareAndSwap(x, 71, 72) + compareAndSwap(x, 73, 74) + compareAndSwap(x, 75, 76) + compareAndSwap(x, 77, 78) + compareAndSwap(x, 79, 80) + compareAndSwap(x, 81, 82) +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go b/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go new file mode 100644 index 0000000..5b7e228 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go @@ -0,0 +1,135 @@ +// error_correction.go - NewHope key exchange error correction. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import "git.schwanenlied.me/yawning/chacha20.git" + +func abs(v int32) int32 { + mask := v >> 31 + return (v ^ mask) - mask +} + +func f(v0, v1 *int32, x int32) int32 { + // The`ref` code uses uint32 for x, but none of the values ever get large + // enough for that, and that would be cast-tastic due to Go being Go. + + // Next 6 lines compute t = x/PARAM_Q + b := x * 2730 + t := b >> 25 + b = x - t*paramQ + b = (paramQ - 1) - b + b >>= 31 + t -= b + + r := t & 1 + xit := t >> 1 + *v0 = xit + r // v0 = round(x/(2*PARAM_Q)) + + t-- + r = t & 1 + *v1 = (t >> 1) + r + + return abs(x - ((*v0) * 2 * paramQ)) +} + +func g(x int32) int32 { + // Next 6 lines compute t = x/(4 *PARAMQ) + b := x * 2730 + t := b >> 27 + b = x - t*(paramQ*4) + b = (paramQ * 4) - b + b >>= 31 + t -= b + + c := t & 1 + t = (t >> 1) + c // t = round(x/(8*PARAM_Q)) + + t *= 8 * paramQ + + return abs(t - x) +} + +func llDecode(xi0, xi1, xi2, xi3 int32) int16 { + t := g(xi0) + t += g(xi1) + t += g(xi2) + t += g(xi3) + + t -= 8 * paramQ + t >>= 31 + return int16(t & 1) +} + +func (c *poly) helpRec(v *poly, seed *[SeedBytes]byte, nonce byte) { + var v0, v1, vTmp [4]int32 + var k int32 + var rand [32]byte + var n [8]byte + + n[7] = nonce + + stream, err := chacha20.NewCipher(seed[:], n[:]) + if err != nil { + panic(err) + } + stream.KeyStream(rand[:]) + stream.Reset() + defer memwipe(rand[:]) + + for i := uint(0); i < 256; i++ { + rBit := int32((rand[i>>3] >> (i & 7)) & 1) + + vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) + + // newhope-20151209 - New version of the reconciliation. + k = f(&v0[0], &v1[0], 8*vTmp[0]+4*rBit) + k += f(&v0[1], &v1[1], 8*vTmp[1]+4*rBit) + k += f(&v0[2], &v1[2], 8*vTmp[2]+4*rBit) + k += f(&v0[3], &v1[3], 8*vTmp[3]+4*rBit) + + k = (2*paramQ - 1 - k) >> 31 + + vTmp[0] = ((^k) & v0[0]) ^ (k & v1[0]) + vTmp[1] = ((^k) & v0[1]) ^ (k & v1[1]) + vTmp[2] = ((^k) & v0[2]) ^ (k & v1[2]) + vTmp[3] = ((^k) & v0[3]) ^ (k & v1[3]) + + c.coeffs[0+i] = uint16((vTmp[0] - vTmp[3]) & 3) + c.coeffs[256+i] = uint16((vTmp[1] - vTmp[3]) & 3) + c.coeffs[512+i] = uint16((vTmp[2] - vTmp[3]) & 3) + c.coeffs[768+i] = uint16((-k + 2*vTmp[3]) & 3) + } + + for i := range vTmp { + vTmp[i] = 0 + } +} + +func rec(key *[32]byte, v, c *poly) { + var tmp, vTmp, cTmp [4]int32 + for i := range key { + key[i] = 0 + } + + for i := uint(0); i < 256; i++ { + vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) + cTmp[0], cTmp[1], cTmp[2], cTmp[3] = int32(c.coeffs[i]), int32(c.coeffs[256+i]), int32(c.coeffs[512+i]), int32(c.coeffs[768+i]) + tmp[0] = 16*paramQ + 8*vTmp[0] - paramQ*(2*cTmp[0]+cTmp[3]) + tmp[1] = 16*paramQ + 8*vTmp[1] - paramQ*(2*cTmp[1]+cTmp[3]) + tmp[2] = 16*paramQ + 8*vTmp[2] - paramQ*(2*cTmp[2]+cTmp[3]) + tmp[3] = 16*paramQ + 8*vTmp[3] - paramQ*(cTmp[3]) + + key[i>>3] |= byte(llDecode(tmp[0], tmp[1], tmp[2], tmp[3]) << (i & 7)) + } + + for i := 0; i < 4; i++ { + tmp[i] = 0 + vTmp[i] = 0 + cTmp[i] = 0 + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go new file mode 100644 index 0000000..380d943 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go @@ -0,0 +1,220 @@ +// newhope.go - NewHope interface. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +// Package newhope implements a key exchange based on the Ring Learning with +// Errors Problem. It is a mechanical port of the Public Domain implementation +// by Erdem Alkim, Léo Ducas, Thomas Pöppelmann, and Peter Schwabe. +// +// For more information see: +// https://cryptojedi.org/papers/newhope-20161119.pdf +// https://cryptojedi.org/papers/newhopesimple-20161217.pdf +// +package newhope + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +const ( + // SharedSecretSize is the length of a Shared Secret in bytes. + SharedSecretSize = 32 + + // UpstreamVersion is the version of the upstream package this + // implementation is compatible with. + UpstreamVersion = "20160815" + + // RecBytes is the length of the reconciliation data in bytes. + RecBytes = 256 + + // SendASize is the length of Alice's public key in bytes. + SendASize = PolyBytes + SeedBytes + + // SendBSize is the length of Bob's public key in bytes. + SendBSize = PolyBytes + RecBytes +) + +// TorSampling enables the constant time generation of the `a` parameter, +// where every successful `a` generation will take the same amount of time. +// Most users will probably not want to enable this as it does come with a +// performance penalty. Alice and Bob *MUST* agree on the sampling method, +// or the key exchange will fail. +var TorSampling = false + +func encodeA(r []byte, pk *poly, seed *[SeedBytes]byte) { + pk.toBytes(r) + for i := 0; i < SeedBytes; i++ { + r[PolyBytes+i] = seed[i] + } +} + +func decodeA(pk *poly, seed *[SeedBytes]byte, r []byte) { + pk.fromBytes(r) + for i := range seed { + seed[i] = r[PolyBytes+i] + } +} + +func encodeB(r []byte, b *poly, c *poly) { + b.toBytes(r) + for i := 0; i < paramN/4; i++ { + r[PolyBytes+i] = byte(c.coeffs[4*i]) | byte(c.coeffs[4*i+1]<<2) | byte(c.coeffs[4*i+2]<<4) | byte(c.coeffs[4*i+3]<<6) + } +} + +func decodeB(b *poly, c *poly, r []byte) { + b.fromBytes(r) + for i := 0; i < paramN/4; i++ { + c.coeffs[4*i+0] = uint16(r[PolyBytes+i]) & 0x03 + c.coeffs[4*i+1] = uint16(r[PolyBytes+i]>>2) & 0x03 + c.coeffs[4*i+2] = uint16(r[PolyBytes+i]>>4) & 0x03 + c.coeffs[4*i+3] = uint16(r[PolyBytes+i] >> 6) + } +} + +func memwipe(b []byte) { + for i := range b { + b[i] = 0 + } +} + +// PublicKeyAlice is Alice's NewHope public key. +type PublicKeyAlice struct { + Send [SendASize]byte +} + +// PrivateKeyAlice is Alice's NewHope private key. +type PrivateKeyAlice struct { + sk poly +} + +// Reset clears all sensitive information such that it no longer appears in +// memory. +func (k *PrivateKeyAlice) Reset() { + k.sk.reset() +} + +// GenerateKeyPairAlice returns a private/public key pair. The private key is +// generated using the given reader, which must return random data. The +// receiver side of the key exchange (aka "Bob") MUST use KeyExchangeBob() +// instead of this routine. +func GenerateKeyPairAlice(rand io.Reader) (*PrivateKeyAlice, *PublicKeyAlice, error) { + var a, e, pk, r poly + var seed, noiseSeed [SeedBytes]byte + + // seed <- Sample({0, 1}^256) + if _, err := io.ReadFull(rand, seed[:]); err != nil { + return nil, nil, err + } + seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. + // a <- Parse(SHAKE-128(seed)) + a.uniform(&seed, TorSampling) + + // s, e <- Sample(psi(n, 12)) + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + privKey := new(PrivateKeyAlice) + privKey.sk.getNoise(&noiseSeed, 0) + privKey.sk.ntt() + e.getNoise(&noiseSeed, 1) + e.ntt() + + // b <- as + e + pubKey := new(PublicKeyAlice) + r.pointwise(&privKey.sk, &a) + pk.add(&e, &r) + encodeA(pubKey.Send[:], &pk, &seed) + + return privKey, pubKey, nil +} + +// PublicKeyBob is Bob's NewHope public key. +type PublicKeyBob struct { + Send [SendBSize]byte +} + +// KeyExchangeBob is the Responder side of the NewHope key exchange. The +// shared secret and "public key" (key + reconciliation data) are generated +// using the given reader, which must return random data. +func KeyExchangeBob(rand io.Reader, alicePk *PublicKeyAlice) (*PublicKeyBob, []byte, error) { + var pka, a, sp, ep, u, v, epp, r poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + // a <- Parse(SHAKE-128(seed)) + decodeA(&pka, &seed, alicePk.Send[:]) + a.uniform(&seed, TorSampling) + + // s', e', e'' <- Sample(psi(n, 12)) + sp.getNoise(&noiseSeed, 0) + sp.ntt() + ep.getNoise(&noiseSeed, 1) + ep.ntt() + epp.getNoise(&noiseSeed, 2) + + // u <- as' + e' + u.pointwise(&a, &sp) + u.add(&u, &ep) + + // v <- bs' + e'' + v.pointwise(&pka, &sp) + v.invNtt() + v.add(&v, &epp) + + // r <- Sample(HelpRec(v)) + r.helpRec(&v, &noiseSeed, 3) + + pubKey := new(PublicKeyBob) + encodeB(pubKey.Send[:], &u, &r) + + // nu <- Rec(v, r) + var nu [SharedSecretSize]byte + rec(&nu, &v, &r) + + // mu <- SHA3-256(nu) + mu := sha3.Sum256(nu[:]) + + // Scrub the sensitive stuff... + memwipe(nu[:]) + sp.reset() + v.reset() + + return pubKey, mu[:], nil +} + +// KeyExchangeAlice is the Initiaitor side of the NewHope key exchange. The +// provided private key is obliterated prior to returning. +func KeyExchangeAlice(bobPk *PublicKeyBob, aliceSk *PrivateKeyAlice) ([]byte, error) { + var u, r, vp poly + + decodeB(&u, &r, bobPk.Send[:]) + + // v' <- us + vp.pointwise(&aliceSk.sk, &u) + vp.invNtt() + + // nu <- Rec(v', r) + var nu [SharedSecretSize]byte + rec(&nu, &vp, &r) + + // mu <- Sha3-256(nu) + mu := sha3.Sum256(nu[:]) + + // Scrub the sensitive stuff... + memwipe(nu[:]) + vp.reset() + aliceSk.Reset() + + return mu[:], nil +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go new file mode 100644 index 0000000..4c4774b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go @@ -0,0 +1,166 @@ +// newhope_simple.go - NewHope-Simple interface. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import ( + "io" + + "golang.org/x/crypto/sha3" +) + +const ( + // HighBytes is the length of the encoded secret in bytes. + HighBytes = 384 + + // SendASimpleSize is the length of Alice's NewHope-Simple public key in + // bytes. + SendASimpleSize = PolyBytes + SeedBytes + + // SendBSimpleSize is the length of Bob's NewHope-Simple public key in + // bytes. + SendBSimpleSize = PolyBytes + HighBytes +) + +func encodeBSimple(r []byte, b *poly, v *poly) { + b.toBytes(r) + v.compress(r[PolyBytes:]) +} + +func decodeBSimple(b *poly, v *poly, r []byte) { + b.fromBytes(r) + v.decompress(r[PolyBytes:]) +} + +// PublicKeySimpleAlice is Alice's NewHope-Simple public key. +type PublicKeySimpleAlice struct { + Send [SendASimpleSize]byte +} + +// PrivateKeySimpleAlice is Alice's NewHope-Simple private key. +type PrivateKeySimpleAlice struct { + sk poly +} + +// Reset clears all sensitive information such that it no longer appears in +// memory. +func (k *PrivateKeySimpleAlice) Reset() { + k.sk.reset() +} + +// GenerateKeyPairSimpleAlice returns a NewHope-Simple private/public key pair. +// The private key is generated using the given reader, which must return +// random data. The receiver side of the key exchange (aka "Bob") MUST use +// KeyExchangeSimpleBob() instead of this routine. +func GenerateKeyPairSimpleAlice(rand io.Reader) (*PrivateKeySimpleAlice, *PublicKeySimpleAlice, error) { + var a, e, pk, r poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, seed[:]); err != nil { + return nil, nil, err + } + seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. + a.uniform(&seed, TorSampling) + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + privKey := new(PrivateKeySimpleAlice) + privKey.sk.getNoise(&noiseSeed, 0) + privKey.sk.ntt() + e.getNoise(&noiseSeed, 1) + e.ntt() + + pubKey := new(PublicKeySimpleAlice) + r.pointwise(&privKey.sk, &a) + pk.add(&e, &r) + encodeA(pubKey.Send[:], &pk, &seed) + + return privKey, pubKey, nil +} + +// PublicKeySimpleBob is Bob's NewHope-Simple public key. +type PublicKeySimpleBob struct { + Send [SendBSimpleSize]byte +} + +// KeyExchangeSimpleBob is the Responder side of the NewHope-Simple key +// exchange. The shared secret and "public key" are generated using the +// given reader, which must return random data. +func KeyExchangeSimpleBob(rand io.Reader, alicePk *PublicKeySimpleAlice) (*PublicKeySimpleBob, []byte, error) { + var pka, a, sp, ep, bp, v, epp, m poly + var seed, noiseSeed [SeedBytes]byte + + if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { + return nil, nil, err + } + defer memwipe(noiseSeed[:]) + + var sharedKey [SharedSecretSize]byte + if _, err := io.ReadFull(rand, sharedKey[:]); err != nil { + return nil, nil, err + } + defer memwipe(sharedKey[:]) + sharedKey = sha3.Sum256(sharedKey[:]) + m.fromMsg(sharedKey[:]) + + decodeA(&pka, &seed, alicePk.Send[:]) + a.uniform(&seed, TorSampling) + + sp.getNoise(&noiseSeed, 0) + sp.ntt() + ep.getNoise(&noiseSeed, 1) + ep.ntt() + + bp.pointwise(&a, &sp) + bp.add(&bp, &ep) + + v.pointwise(&pka, &sp) + v.invNtt() + + epp.getNoise(&noiseSeed, 2) + v.add(&v, &epp) + v.add(&v, &m) // add key + + pubKey := new(PublicKeySimpleBob) + encodeBSimple(pubKey.Send[:], &bp, &v) + mu := sha3.Sum256(sharedKey[:]) + + // Scrub the sensitive stuff... + sp.reset() + v.reset() + m.reset() + + return pubKey, mu[:], nil +} + +// KeyExchangeSimpleAlice is the Initiaitor side of the NewHope-Simple key +// exchange. The provided private key is obliterated prior to returning. +func KeyExchangeSimpleAlice(bobPk *PublicKeySimpleBob, aliceSk *PrivateKeySimpleAlice) ([]byte, error) { + var v, bp, k poly + + decodeBSimple(&bp, &v, bobPk.Send[:]) + k.pointwise(&aliceSk.sk, &bp) + k.invNtt() + + k.sub(&k, &v) + + var sharedKey [SharedSecretSize]byte + k.toMsg(sharedKey[:]) + + // mu <- Sha3-256(v') + mu := sha3.Sum256(sharedKey[:]) + + // Scrub the sensitive stuff... + memwipe(sharedKey[:]) + k.reset() + aliceSk.Reset() + + return mu[:], nil +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go b/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go new file mode 100644 index 0000000..58d1f2a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go @@ -0,0 +1,131 @@ +// ntt.go - NewHope Number Theoretic Transform. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +var bitrevTable = [paramN]uint16{ + 0, 512, 256, 768, 128, 640, 384, 896, 64, 576, 320, 832, 192, 704, 448, 960, + 32, 544, 288, 800, 160, 672, 416, 928, 96, 608, 352, 864, 224, 736, 480, + 992, 16, 528, 272, 784, 144, 656, 400, 912, 80, 592, 336, 848, 208, 720, + 464, 976, 48, 560, 304, 816, 176, 688, 432, 944, 112, 624, 368, 880, + 240, 752, 496, 1008, 8, 520, 264, 776, 136, 648, 392, 904, 72, 584, 328, + 840, 200, 712, 456, 968, 40, 552, 296, 808, 168, 680, 424, 936, 104, + 616, 360, 872, 232, 744, 488, 1000, 24, 536, 280, 792, 152, 664, 408, + 920, 88, 600, 344, 856, 216, 728, 472, 984, 56, 568, 312, 824, 184, 696, + 440, 952, 120, 632, 376, 888, 248, 760, 504, 1016, 4, 516, 260, 772, + 132, 644, 388, 900, 68, 580, 324, 836, 196, 708, 452, 964, 36, 548, 292, + 804, 164, 676, 420, 932, 100, 612, 356, 868, 228, 740, 484, 996, 20, + 532, 276, 788, 148, 660, 404, 916, 84, 596, 340, 852, 212, 724, 468, + 980, 52, 564, 308, 820, 180, 692, 436, 948, 116, 628, 372, 884, 244, + 756, 500, 1012, 12, 524, 268, 780, 140, 652, 396, 908, 76, 588, 332, + 844, 204, 716, 460, 972, 44, 556, 300, 812, 172, 684, 428, 940, 108, + 620, 364, 876, 236, 748, 492, 1004, 28, 540, 284, 796, 156, 668, 412, + 924, 92, 604, 348, 860, 220, 732, 476, 988, 60, 572, 316, 828, 188, 700, + 444, 956, 124, 636, 380, 892, 252, 764, 508, 1020, 2, 514, 258, 770, + 130, 642, 386, 898, 66, 578, 322, 834, 194, 706, 450, 962, 34, 546, 290, + 802, 162, 674, 418, 930, 98, 610, 354, 866, 226, 738, 482, 994, 18, 530, + 274, 786, 146, 658, 402, 914, 82, 594, 338, 850, 210, 722, 466, 978, 50, + 562, 306, 818, 178, 690, 434, 946, 114, 626, 370, 882, 242, 754, 498, + 1010, 10, 522, 266, 778, 138, 650, 394, 906, 74, 586, 330, 842, 202, + 714, 458, 970, 42, 554, 298, 810, 170, 682, 426, 938, 106, 618, 362, + 874, 234, 746, 490, 1002, 26, 538, 282, 794, 154, 666, 410, 922, 90, + 602, 346, 858, 218, 730, 474, 986, 58, 570, 314, 826, 186, 698, 442, + 954, 122, 634, 378, 890, 250, 762, 506, 1018, 6, 518, 262, 774, 134, + 646, 390, 902, 70, 582, 326, 838, 198, 710, 454, 966, 38, 550, 294, 806, + 166, 678, 422, 934, 102, 614, 358, 870, 230, 742, 486, 998, 22, 534, + 278, 790, 150, 662, 406, 918, 86, 598, 342, 854, 214, 726, 470, 982, 54, + 566, 310, 822, 182, 694, 438, 950, 118, 630, 374, 886, 246, 758, 502, + 1014, 14, 526, 270, 782, 142, 654, 398, 910, 78, 590, 334, 846, 206, + 718, 462, 974, 46, 558, 302, 814, 174, 686, 430, 942, 110, 622, 366, + 878, 238, 750, 494, 1006, 30, 542, 286, 798, 158, 670, 414, 926, 94, + 606, 350, 862, 222, 734, 478, 990, 62, 574, 318, 830, 190, 702, 446, + 958, 126, 638, 382, 894, 254, 766, 510, 1022, 1, 513, 257, 769, 129, + 641, 385, 897, 65, 577, 321, 833, 193, 705, 449, 961, 33, 545, 289, 801, + 161, 673, 417, 929, 97, 609, 353, 865, 225, 737, 481, 993, 17, 529, 273, + 785, 145, 657, 401, 913, 81, 593, 337, 849, 209, 721, 465, 977, 49, 561, + 305, 817, 177, 689, 433, 945, 113, 625, 369, 881, 241, 753, 497, 1009, + 9, 521, 265, 777, 137, 649, 393, 905, 73, 585, 329, 841, 201, 713, 457, + 969, 41, 553, 297, 809, 169, 681, 425, 937, 105, 617, 361, 873, 233, + 745, 489, 1001, 25, 537, 281, 793, 153, 665, 409, 921, 89, 601, 345, + 857, 217, 729, 473, 985, 57, 569, 313, 825, 185, 697, 441, 953, 121, + 633, 377, 889, 249, 761, 505, 1017, 5, 517, 261, 773, 133, 645, 389, + 901, 69, 581, 325, 837, 197, 709, 453, 965, 37, 549, 293, 805, 165, 677, + 421, 933, 101, 613, 357, 869, 229, 741, 485, 997, 21, 533, 277, 789, + 149, 661, 405, 917, 85, 597, 341, 853, 213, 725, 469, 981, 53, 565, 309, + 821, 181, 693, 437, 949, 117, 629, 373, 885, 245, 757, 501, 1013, 13, + 525, 269, 781, 141, 653, 397, 909, 77, 589, 333, 845, 205, 717, 461, + 973, 45, 557, 301, 813, 173, 685, 429, 941, 109, 621, 365, 877, 237, + 749, 493, 1005, 29, 541, 285, 797, 157, 669, 413, 925, 93, 605, 349, + 861, 221, 733, 477, 989, 61, 573, 317, 829, 189, 701, 445, 957, 125, + 637, 381, 893, 253, 765, 509, 1021, 3, 515, 259, 771, 131, 643, 387, + 899, 67, 579, 323, 835, 195, 707, 451, 963, 35, 547, 291, 803, 163, 675, + 419, 931, 99, 611, 355, 867, 227, 739, 483, 995, 19, 531, 275, 787, 147, + 659, 403, 915, 83, 595, 339, 851, 211, 723, 467, 979, 51, 563, 307, 819, + 179, 691, 435, 947, 115, 627, 371, 883, 243, 755, 499, 1011, 11, 523, + 267, 779, 139, 651, 395, 907, 75, 587, 331, 843, 203, 715, 459, 971, 43, + 555, 299, 811, 171, 683, 427, 939, 107, 619, 363, 875, 235, 747, 491, + 1003, 27, 539, 283, 795, 155, 667, 411, 923, 91, 603, 347, 859, 219, + 731, 475, 987, 59, 571, 315, 827, 187, 699, 443, 955, 123, 635, 379, + 891, 251, 763, 507, 1019, 7, 519, 263, 775, 135, 647, 391, 903, 71, 583, + 327, 839, 199, 711, 455, 967, 39, 551, 295, 807, 167, 679, 423, 935, + 103, 615, 359, 871, 231, 743, 487, 999, 23, 535, 279, 791, 151, 663, + 407, 919, 87, 599, 343, 855, 215, 727, 471, 983, 55, 567, 311, 823, 183, + 695, 439, 951, 119, 631, 375, 887, 247, 759, 503, 1015, 15, 527, 271, + 783, 143, 655, 399, 911, 79, 591, 335, 847, 207, 719, 463, 975, 47, 559, + 303, 815, 175, 687, 431, 943, 111, 623, 367, 879, 239, 751, 495, 1007, + 31, 543, 287, 799, 159, 671, 415, 927, 95, 607, 351, 863, 223, 735, 479, + 991, 63, 575, 319, 831, 191, 703, 447, 959, 127, 639, 383, 895, 255, + 767, 511, 1023, +} + +func (p *poly) bitrev() { + for i, v := range p.coeffs { + r := bitrevTable[i] + if uint16(i) < r { + p.coeffs[i] = p.coeffs[r] + p.coeffs[r] = v + } + } +} + +func (p *poly) mulCoefficients(factors *[paramN]uint16) { + for i, v := range factors { + p.coeffs[i] = montgomeryReduce(uint32(p.coeffs[i]) * uint32(v)) + } +} + +func ntt(a *[paramN]uint16, omega *[paramN / 2]uint16) { + var distance uint + + for i := uint(0); i < 10; i += 2 { + // Even level. + distance = (1 << i) + for start := uint(0); start < distance; start++ { + jTwiddle := 0 + for j := start; j < paramN-1; j += 2 * distance { + w := uint32(omega[jTwiddle]) + jTwiddle++ + tmp := a[j] + a[j] = tmp + a[j+distance] + a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) + } + } + + // Odd level. + distance <<= 1 + for start := uint(0); start < distance; start++ { + jTwiddle := 0 + for j := start; j < paramN-1; j += 2 * distance { + w := uint32(omega[jTwiddle]) + jTwiddle++ + tmp := a[j] + a[j] = barrettReduce(tmp + a[j+distance]) + a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) + } + } + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/params.go b/vendor/git.schwanenlied.me/yawning/newhope.git/params.go new file mode 100644 index 0000000..572236b --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/params.go @@ -0,0 +1,17 @@ +// params.go - NewHope parameters. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +const ( + paramN = 1024 + paramK = 16 // used in sampler + paramQ = 12289 + + // SeedBytes is the size of the seed in bytes. + SeedBytes = 32 +) diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go b/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go new file mode 100644 index 0000000..bd1816e --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go @@ -0,0 +1,212 @@ +// poly.go - NewHope polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +import ( + "encoding/binary" + + "git.schwanenlied.me/yawning/chacha20.git" + "golang.org/x/crypto/sha3" +) + +const ( + // PolyBytes is the length of an encoded polynomial in bytes. + PolyBytes = 1792 + + shake128Rate = 168 // Stupid that this isn't exposed. +) + +type poly struct { + coeffs [paramN]uint16 +} + +func (p *poly) reset() { + for i := range p.coeffs { + p.coeffs[i] = 0 + } +} + +func (p *poly) fromBytes(a []byte) { + for i := 0; i < paramN/4; i++ { + p.coeffs[4*i+0] = uint16(a[7*i+0]) | ((uint16(a[7*i+1]) & 0x3f) << 8) + p.coeffs[4*i+1] = (uint16(a[7*i+1]) >> 6) | (uint16(a[7*i+2]) << 2) | ((uint16(a[7*i+3]) & 0x0f) << 10) + + p.coeffs[4*i+2] = (uint16(a[7*i+3]) >> 4) | (uint16(a[7*i+4]) << 4) | ((uint16(a[7*i+5]) & 0x03) << 12) + p.coeffs[4*i+3] = (uint16(a[7*i+5]) >> 2) | (uint16(a[7*i+6]) << 6) + } +} + +func (p *poly) toBytes(r []byte) { + for i := 0; i < paramN/4; i++ { + // Make sure that coefficients have only 14 bits. + t0 := barrettReduce(p.coeffs[4*i+0]) + t1 := barrettReduce(p.coeffs[4*i+1]) + t2 := barrettReduce(p.coeffs[4*i+2]) + t3 := barrettReduce(p.coeffs[4*i+3]) + + // Make sure that coefficients are in [0,q] + m := t0 - paramQ + c := int16(m) + c >>= 15 + t0 = m ^ ((t0 ^ m) & uint16(c)) + + m = t1 - paramQ + c = int16(m) + c >>= 15 + t1 = m ^ ((t1 ^ m) & uint16(c)) + + m = t2 - paramQ + c = int16(m) + c >>= 15 + t2 = m ^ ((t2 ^ m) & uint16(c)) + + m = t3 - paramQ + c = int16(m) + c >>= 15 + t3 = m ^ ((t3 ^ m) & uint16(c)) + + r[7*i+0] = byte(t0 & 0xff) + r[7*i+1] = byte(t0>>8) | byte(t1<<6) + r[7*i+2] = byte(t1 >> 2) + r[7*i+3] = byte(t1>>10) | byte(t2<<4) + r[7*i+4] = byte(t2 >> 4) + r[7*i+5] = byte(t2>>12) | byte(t3<<2) + r[7*i+6] = byte(t3 >> 6) + } +} + +func (p *poly) discardTo(xbuf []byte) bool { + var x [shake128Rate * 16 / 2]uint16 + for i := range x { + x[i] = binary.LittleEndian.Uint16(xbuf[i*2:]) + } + + for i := 0; i < 16; i++ { + batcher84(x[i:]) + } + + // Check whether we're safe: + r := int(0) + for i := 1000; i < 1024; i++ { + r |= 61444 - int(x[i]) + } + if r>>31 != 0 { + return true + } + + // If we are, copy coefficients to polynomial: + for i := range p.coeffs { + p.coeffs[i] = x[i] + } + + return false +} + +func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { + if !torSampling { + // Reference version, vartime. + nBlocks := 14 + var buf [shake128Rate * 14]byte + + // h and buf are left unscrubbed because the output is public. + h := sha3.NewShake128() + h.Write(seed[:]) + h.Read(buf[:]) + + for ctr, pos := 0, 0; ctr < paramN; { + val := binary.LittleEndian.Uint16(buf[pos:]) + + if val < 5*paramQ { + p.coeffs[ctr] = val + ctr++ + } + pos += 2 + if pos > shake128Rate*nBlocks-2 { + nBlocks = 1 + h.Read(buf[:shake128Rate]) + pos = 0 + } + } + } else { + // `torref` version, every valid `a` is generate in constant time, + // though the number of attempts varies. + const nBlocks = 16 + var buf [shake128Rate * nBlocks]byte + + // h and buf are left unscrubbed because the output is public. + h := sha3.NewShake128() + h.Write(seed[:]) + + for { + h.Read(buf[:]) + if !p.discardTo(buf[:]) { + break + } + } + + } +} + +func (p *poly) getNoise(seed *[SeedBytes]byte, nonce byte) { + // The `ref` code uses a uint32 vector instead of a byte vector, + // but converting between the two in Go is cumbersome. + var buf [4 * paramN]byte + var n [8]byte + + n[0] = nonce + stream, err := chacha20.NewCipher(seed[:], n[:]) + if err != nil { + panic(err) + } + stream.KeyStream(buf[:]) + stream.Reset() + + for i := 0; i < paramN; i++ { + t := binary.LittleEndian.Uint32(buf[4*i:]) + d := uint32(0) + for j := uint(0); j < 8; j++ { + d += (t >> j) & 0x01010101 + } + a := ((d >> 8) & 0xff) + (d & 0xff) + b := (d >> 24) + ((d >> 16) & 0xff) + p.coeffs[i] = uint16(a) + paramQ - uint16(b) + } + + // Scrub the random bits... + memwipe(buf[:]) +} + +func (p *poly) pointwise(a, b *poly) { + for i := range p.coeffs { + t := montgomeryReduce(3186 * uint32(b.coeffs[i])) // t is now in Montgomery domain + p.coeffs[i] = montgomeryReduce(uint32(a.coeffs[i]) * uint32(t)) // p.coeffs[i] is back in normal domain + } +} + +func (p *poly) add(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) + } +} + +func (p *poly) ntt() { + p.mulCoefficients(&psisBitrevMontgomery) + ntt(&p.coeffs, &omegasMontgomery) +} + +func (p *poly) invNtt() { + p.bitrev() + ntt(&p.coeffs, &omegasInvMontgomery) + p.mulCoefficients(&psisInvMontgomery) +} + +func init() { + if paramK != 16 { + panic("poly.getNoise() only supports k=16") + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go b/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go new file mode 100644 index 0000000..59ebec1 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go @@ -0,0 +1,99 @@ +// poly_simple.go - NewHope-Simple polynomial. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +func coeffFreeze(x uint16) uint16 { + var c int16 + + r := barrettReduce(x) + m := r - paramQ + c = int16(m) + c >>= 15 + r = m ^ ((r ^ m) & uint16(c)) + + return r +} + +// Computes abs(x-Q/2) +func flipAbs(x uint16) uint16 { + r := int16(coeffFreeze(x)) + r = r - paramQ/2 + m := r >> 15 + return uint16((r + m) ^ m) +} + +func (p *poly) compress(r []byte) { + var t [8]uint32 + + for i, k := 0, 0; i < paramN; i, k = i+8, k+3 { + for j := range t { + t[j] = uint32(coeffFreeze(p.coeffs[i+j])) + t[j] = (((t[j] << 3) + paramQ/2) / paramQ) & 0x7 + } + + r[k] = byte(t[0]) | byte(t[1]<<3) | byte(t[2]<<6) + r[k+1] = byte(t[2]>>2) | byte(t[3]<<1) | byte(t[4]<<4) | byte(t[5]<<7) + r[k+2] = byte(t[5]>>1) | byte(t[6]<<2) | byte(t[7]<<5) + } + + for i := range t { + t[i] = 0 + } +} + +func (p *poly) decompress(a []byte) { + for i := 0; i < paramN; i += 8 { + a0, a1, a2 := uint16(a[0]), uint16(a[1]), uint16(a[2]) + p.coeffs[i+0] = a0 & 7 + p.coeffs[i+1] = (a0 >> 3) & 7 + p.coeffs[i+2] = (a0 >> 6) | ((a1 << 2) & 4) + p.coeffs[i+3] = (a1 >> 1) & 7 + p.coeffs[i+4] = (a1 >> 4) & 7 + p.coeffs[i+5] = (a1 >> 7) | ((a2 << 1) & 6) + p.coeffs[i+6] = (a2 >> 2) & 7 + p.coeffs[i+7] = (a2 >> 5) + a = a[3:] + for j := 0; j < 8; j++ { + p.coeffs[i+j] = uint16((uint32(p.coeffs[i+j])*paramQ + 4) >> 3) + } + } +} + +func (p *poly) fromMsg(msg []byte) { + for i := uint(0); i < 32; i++ { // XXX: const for 32 + for j := uint(0); j < 8; j++ { + mask := -(uint16((msg[i] >> j) & 1)) + p.coeffs[8*i+j+0] = mask & (paramQ / 2) + p.coeffs[8*i+j+256] = mask & (paramQ / 2) + p.coeffs[8*i+j+512] = mask & (paramQ / 2) + p.coeffs[8*i+j+768] = mask & (paramQ / 2) + } + } +} + +func (p *poly) toMsg(msg []byte) { + memwipe(msg[0:32]) + + for i := uint(0); i < 256; i++ { + t := flipAbs(p.coeffs[i+0]) + t += flipAbs(p.coeffs[i+256]) + t += flipAbs(p.coeffs[i+512]) + t += flipAbs(p.coeffs[i+768]) + + //t = (~(t - PARAM_Q)); + t = (t - paramQ) + t >>= 15 + msg[i>>3] |= byte(t << (i & 7)) + } +} + +func (p *poly) sub(a, b *poly) { + for i := range p.coeffs { + p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*paramQ - b.coeffs[i]) + } +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go b/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go new file mode 100644 index 0000000..4d61c81 --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go @@ -0,0 +1,287 @@ +// precomp.go - NewHope precomputed tables. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +var omegasMontgomery = [paramN / 2]uint16{ + 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, + 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, + 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, + 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, + 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, + 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, + 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, + 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, + 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, + 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, + 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, + 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, + 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, + 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, + 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, + 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, + 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, + 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, + 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, + 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, + 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, + 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, + 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, + 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, + 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, + 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, + 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, + 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, + 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, + 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, + 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, + 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, + 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, + 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, + 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, + 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, + 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, + 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, + 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, + 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, + 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, + 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, + 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, + 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, +} + +var omegasInvMontgomery = [paramN / 2]uint16{ + 4075, 5315, 4324, 4916, 10120, 11767, 7210, 9027, 10316, 6715, 1278, 9945, + 3514, 11248, 11271, 5925, 147, 8500, 7840, 6833, 5537, 4749, 4467, 7500, + 11099, 9606, 6171, 8471, 8429, 5445, 11239, 7753, 9090, 12233, 5529, + 5206, 10587, 1987, 11635, 3565, 5415, 8646, 6153, 6427, 7341, 6152, + 10561, 400, 8410, 1922, 2033, 8291, 1359, 6854, 11035, 973, 8579, 6093, + 6950, 5446, 11821, 8301, 11907, 316, 52, 3174, 10966, 9523, 6055, 8953, + 11612, 6415, 2505, 5906, 10710, 11858, 8332, 9450, 10162, 151, 3482, + 787, 5468, 1010, 4169, 9162, 5241, 9369, 7509, 8844, 7232, 4698, 192, + 1321, 10240, 4912, 885, 6281, 10333, 7280, 8757, 11286, 58, 12048, + 12147, 11184, 8812, 6608, 2844, 3438, 4212, 11314, 8687, 6068, 421, + 8209, 3600, 3263, 7665, 6077, 7507, 5886, 3029, 6695, 4213, 504, 11684, + 2302, 1962, 1594, 6328, 7183, 168, 2692, 8960, 4298, 5184, 11089, 6122, + 9734, 10929, 3956, 5297, 6170, 3762, 9370, 4016, 4077, 6523, 652, 11994, + 6099, 1146, 11341, 11964, 10885, 6299, 1159, 8240, 8561, 11177, 2078, + 10331, 4322, 11367, 441, 4079, 11231, 3150, 1319, 8243, 709, 8049, 8719, + 11454, 6224, 3054, 6803, 3123, 10542, 4433, 6370, 7032, 3834, 8633, + 12225, 9830, 683, 1566, 5782, 9786, 9341, 12115, 723, 3009, 1693, 5735, + 2655, 2738, 6421, 11942, 2925, 1975, 8532, 3315, 11863, 4754, 1858, + 1583, 6347, 2500, 10800, 6374, 1483, 12240, 1263, 1815, 5383, 10777, + 350, 6920, 10232, 4493, 9087, 8855, 8760, 9381, 218, 9928, 10446, 9259, + 4115, 6147, 9842, 8326, 576, 10335, 10238, 10484, 9407, 6381, 11836, + 8517, 418, 6860, 7515, 1293, 7552, 2767, 156, 8298, 8320, 10008, 5876, + 5333, 10258, 10115, 4372, 2847, 7875, 8232, 9018, 8925, 1689, 8236, + 2645, 5042, 9984, 7094, 9509, 1484, 7394, 3, 4437, 160, 3149, 113, 7370, + 10123, 3915, 6998, 2704, 8653, 4938, 1426, 7635, 10512, 1663, 6957, + 3510, 2370, 2865, 3978, 9320, 3247, 9603, 6882, 3186, 10659, 10163, + 1153, 9405, 8241, 10040, 2178, 1544, 5559, 420, 8304, 4905, 476, 3531, + 5191, 9153, 2399, 8889, 3000, 671, 243, 3016, 3763, 10849, 12262, 9223, + 10657, 7205, 11272, 7404, 7575, 8146, 10752, 242, 2678, 3704, 11744, + 5019, 3833, 3778, 11899, 773, 5101, 11222, 9888, 442, 2912, 5698, 11935, + 4861, 7277, 9808, 11244, 2859, 3780, 11414, 4976, 10682, 7201, 8005, + 11287, 5011, 6267, 2987, 2437, 3646, 2566, 10102, 9867, 6250, 5444, + 2381, 11796, 8193, 4337, 11854, 1912, 1378, 404, 7644, 1065, 2143, + 11121, 5277, 3248, 11082, 2548, 8058, 8907, 11934, 1759, 8582, 3694, + 7110, 12144, 6747, 8652, 3459, 2731, 8357, 6378, 7399, 10861, 1696, + 9863, 334, 7657, 6534, 11029, 4388, 11560, 3241, 10276, 9000, 9408, + 3284, 10200, 7197, 6498, 544, 2468, 339, 11267, 9, 2842, 480, 5331, + 7300, 1673, 4278, 4177, 8705, 9764, 1381, 7837, 2396, 8340, 8993, 4354, + 130, 6915, 2837, 11462, 5767, 953, 8541, 9813, 118, 7222, 2197, 3006, + 9545, 563, 9314, 2625, 11340, 4821, 2639, 7266, 5828, 6561, 7698, 3328, + 6512, 1351, 7311, 6553, 8155, 1305, 722, 5146, 4043, 12288, 10810, 2545, + 3621, 8747, 8785, 1646, 1212, 5860, 3195, 7203, 10963, 3201, 3014, 955, + 11499, 9970, 11119, 3135, 3712, 7443, 9542, 7484, 8736, 9995, 11227, + 1635, 9521, 1177, 8034, 140, 10436, 11563, 7678, 4320, 11289, 9198, + 12208, 2963, 7393, 2366, 9238, +} + +var psisBitrevMontgomery = [paramN]uint16{ + 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, + 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, + 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, + 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, + 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, + 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, + 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, + 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, + 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, + 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, + 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, + 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, + 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, + 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, + 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, + 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, + 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, + 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, + 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, + 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, + 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, + 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, + 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, + 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, + 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, + 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, + 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, + 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, + 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, + 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, + 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, + 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, + 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, + 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, + 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, + 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, + 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, + 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, + 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, + 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, + 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, + 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, + 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, + 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, + 3947, 11951, 2455, 6599, 10545, 10975, 3654, 2894, 7681, 7126, 7287, + 12269, 4119, 3343, 2151, 1522, 7174, 7350, 11041, 2442, 2148, 5959, + 6492, 8330, 8945, 5598, 3624, 10397, 1325, 6565, 1945, 11260, 10077, + 2674, 3338, 3276, 11034, 506, 6505, 1392, 5478, 8778, 1178, 2776, 3408, + 10347, 11124, 2575, 9489, 12096, 6092, 10058, 4167, 6085, 923, 11251, + 11912, 4578, 10669, 11914, 425, 10453, 392, 10104, 8464, 4235, 8761, + 7376, 2291, 3375, 7954, 8896, 6617, 7790, 1737, 11667, 3982, 9342, 6680, + 636, 6825, 7383, 512, 4670, 2900, 12050, 7735, 994, 1687, 11883, 7021, + 146, 10485, 1403, 5189, 6094, 2483, 2054, 3042, 10945, 3981, 10821, + 11826, 8882, 8151, 180, 9600, 7684, 5219, 10880, 6780, 204, 11232, 2600, + 7584, 3121, 3017, 11053, 7814, 7043, 4251, 4739, 11063, 6771, 7073, + 9261, 2360, 11925, 1928, 11825, 8024, 3678, 3205, 3359, 11197, 5209, + 8581, 3238, 8840, 1136, 9363, 1826, 3171, 4489, 7885, 346, 2068, 1389, + 8257, 3163, 4840, 6127, 8062, 8921, 612, 4238, 10763, 8067, 125, 11749, + 10125, 5416, 2110, 716, 9839, 10584, 11475, 11873, 3448, 343, 1908, + 4538, 10423, 7078, 4727, 1208, 11572, 3589, 2982, 1373, 1721, 10753, + 4103, 2429, 4209, 5412, 5993, 9011, 438, 3515, 7228, 1218, 8347, 5232, + 8682, 1327, 7508, 4924, 448, 1014, 10029, 12221, 4566, 5836, 12229, + 2717, 1535, 3200, 5588, 5845, 412, 5102, 7326, 3744, 3056, 2528, 7406, + 8314, 9202, 6454, 6613, 1417, 10032, 7784, 1518, 3765, 4176, 5063, 9828, + 2275, 6636, 4267, 6463, 2065, 7725, 3495, 8328, 8755, 8144, 10533, 5966, + 12077, 9175, 9520, 5596, 6302, 8400, 579, 6781, 11014, 5734, 11113, + 11164, 4860, 1131, 10844, 9068, 8016, 9694, 3837, 567, 9348, 7000, 6627, + 7699, 5082, 682, 11309, 5207, 4050, 7087, 844, 7434, 3769, 293, 9057, + 6940, 9344, 10883, 2633, 8190, 3944, 5530, 5604, 3480, 2171, 9282, + 11024, 2213, 8136, 3805, 767, 12239, 216, 11520, 6763, 10353, 7, 8566, + 845, 7235, 3154, 4360, 3285, 10268, 2832, 3572, 1282, 7559, 3229, 8360, + 10583, 6105, 3120, 6643, 6203, 8536, 8348, 6919, 3536, 9199, 10891, + 11463, 5043, 1658, 5618, 8787, 5789, 4719, 751, 11379, 6389, 10783, + 3065, 7806, 6586, 2622, 5386, 510, 7628, 6921, 578, 10345, 11839, 8929, + 4684, 12226, 7154, 9916, 7302, 8481, 3670, 11066, 2334, 1590, 7878, + 10734, 1802, 1891, 5103, 6151, 8820, 3418, 7846, 9951, 4693, 417, 9996, + 9652, 4510, 2946, 5461, 365, 881, 1927, 1015, 11675, 11009, 1371, 12265, + 2485, 11385, 5039, 6742, 8449, 1842, 12217, 8176, 9577, 4834, 7937, + 9461, 2643, 11194, 3045, 6508, 4094, 3451, 7911, 11048, 5406, 4665, + 3020, 6616, 11345, 7519, 3669, 5287, 1790, 7014, 5410, 11038, 11249, + 2035, 6125, 10407, 4565, 7315, 5078, 10506, 2840, 2478, 9270, 4194, + 9195, 4518, 7469, 1160, 6878, 2730, 10421, 10036, 1734, 3815, 10939, + 5832, 10595, 10759, 4423, 8420, 9617, 7119, 11010, 11424, 9173, 189, + 10080, 10526, 3466, 10588, 7592, 3578, 11511, 7785, 9663, 530, 12150, + 8957, 2532, 3317, 9349, 10243, 1481, 9332, 3454, 3758, 7899, 4218, 2593, + 11410, 2276, 982, 6513, 1849, 8494, 9021, 4523, 7988, 8, 457, 648, 150, + 8000, 2307, 2301, 874, 5650, 170, 9462, 2873, 9855, 11498, 2535, 11169, + 5808, 12268, 9687, 1901, 7171, 11787, 3846, 1573, 6063, 3793, 466, + 11259, 10608, 3821, 6320, 4649, 6263, 2929, +} + +var psisInvMontgomery = [paramN]uint16{ + 256, 10570, 1510, 7238, 1034, 7170, 6291, 7921, 11665, 3422, 4000, 2327, + 2088, 5565, 795, 10647, 1521, 5484, 2539, 7385, 1055, 7173, 8047, 11683, + 1669, 1994, 3796, 5809, 4341, 9398, 11876, 12230, 10525, 12037, 12253, + 3506, 4012, 9351, 4847, 2448, 7372, 9831, 3160, 2207, 5582, 2553, 7387, + 6322, 9681, 1383, 10731, 1533, 219, 5298, 4268, 7632, 6357, 9686, 8406, + 4712, 9451, 10128, 4958, 5975, 11387, 8649, 11769, 6948, 11526, 12180, + 1740, 10782, 6807, 2728, 7412, 4570, 4164, 4106, 11120, 12122, 8754, + 11784, 3439, 5758, 11356, 6889, 9762, 11928, 1704, 1999, 10819, 12079, + 12259, 7018, 11536, 1648, 1991, 2040, 2047, 2048, 10826, 12080, 8748, + 8272, 8204, 1172, 1923, 7297, 2798, 7422, 6327, 4415, 7653, 6360, 11442, + 12168, 7005, 8023, 9924, 8440, 8228, 2931, 7441, 1063, 3663, 5790, 9605, + 10150, 1450, 8985, 11817, 10466, 10273, 12001, 3470, 7518, 1074, 1909, + 7295, 9820, 4914, 702, 5367, 7789, 8135, 9940, 1420, 3714, 11064, 12114, + 12264, 1752, 5517, 9566, 11900, 1700, 3754, 5803, 829, 1874, 7290, 2797, + 10933, 5073, 7747, 8129, 6428, 6185, 11417, 1631, 233, 5300, 9535, + 10140, 11982, 8734, 8270, 2937, 10953, 8587, 8249, 2934, 9197, 4825, + 5956, 4362, 9401, 1343, 3703, 529, 10609, 12049, 6988, 6265, 895, 3639, + 4031, 4087, 4095, 585, 10617, 8539, 4731, 4187, 9376, 3095, 9220, 10095, + 10220, 1460, 10742, 12068, 1724, 5513, 11321, 6884, 2739, 5658, 6075, + 4379, 11159, 10372, 8504, 4726, 9453, 3106, 7466, 11600, 10435, 8513, + 9994, 8450, 9985, 3182, 10988, 8592, 2983, 9204, 4826, 2445, 5616, 6069, + 867, 3635, 5786, 11360, 5134, 2489, 10889, 12089, 1727, 7269, 2794, + 9177, 1311, 5454, 9557, 6632, 2703, 9164, 10087, 1441, 3717, 531, 3587, + 2268, 324, 5313, 759, 1864, 5533, 2546, 7386, 9833, 8427, 4715, 11207, + 1601, 7251, 4547, 11183, 12131, 1733, 10781, 10318, 1474, 10744, 5046, + 4232, 11138, 10369, 6748, 964, 7160, 4534, 7670, 8118, 8182, 4680, + 11202, 6867, 981, 8918, 1274, 182, 26, 7026, 8026, 11680, 12202, 10521, + 1503, 7237, 4545, 5916, 9623, 8397, 11733, 10454, 3249, 9242, 6587, 941, + 1890, 270, 10572, 6777, 9746, 6659, 6218, 6155, 6146, 878, 1881, 7291, + 11575, 12187, 1741, 7271, 8061, 11685, 6936, 4502, 9421, 4857, 4205, + 7623, 1089, 10689, 1527, 8996, 10063, 11971, 10488, 6765, 2722, 3900, + 9335, 11867, 6962, 11528, 5158, 4248, 4118, 5855, 2592, 5637, 6072, + 2623, 7397, 8079, 9932, 4930, 5971, 853, 3633, 519, 8852, 11798, 3441, + 11025, 1575, 225, 8810, 11792, 12218, 3501, 9278, 3081, 9218, 4828, + 7712, 8124, 11694, 12204, 3499, 4011, 573, 3593, 5780, 7848, 9899, + 10192, 1456, 208, 7052, 2763, 7417, 11593, 10434, 12024, 8740, 11782, + 10461, 3250, 5731, 7841, 9898, 1414, 202, 3540, 7528, 2831, 2160, 10842, + 5060, 4234, 4116, 588, 84, 12, 7024, 2759, 9172, 6577, 11473, 1639, + 9012, 3043, 7457, 6332, 11438, 1634, 1989, 9062, 11828, 8712, 11778, + 12216, 10523, 6770, 9745, 10170, 4964, 9487, 6622, 946, 8913, 6540, + 6201, 4397, 9406, 8366, 9973, 8447, 8229, 11709, 8695, 10020, 3187, + 5722, 2573, 10901, 6824, 4486, 4152, 9371, 8361, 2950, 2177, 311, 1800, + 9035, 8313, 11721, 3430, 490, 70, 10, 1757, 251, 3547, 7529, 11609, + 3414, 7510, 4584, 4166, 9373, 1339, 5458, 7802, 11648, 1664, 7260, 9815, + 10180, 6721, 9738, 10169, 8475, 8233, 9954, 1422, 8981, 1283, 5450, + 11312, 1616, 3742, 11068, 10359, 4991, 713, 3613, 9294, 8350, 4704, 672, + 96, 7036, 9783, 11931, 3460, 5761, 823, 10651, 12055, 10500, 1500, 5481, + 783, 3623, 11051, 8601, 8251, 8201, 11705, 10450, 5004, 4226, 7626, + 2845, 2162, 3820, 7568, 9859, 3164, 452, 10598, 1514, 5483, 6050, 6131, + 4387, 7649, 8115, 6426, 918, 8909, 8295, 1185, 5436, 11310, 8638, 1234, + 5443, 11311, 5127, 2488, 2111, 10835, 5059, 7745, 2862, 3920, 560, 80, + 1767, 2008, 3798, 11076, 6849, 2734, 10924, 12094, 8750, 1250, 10712, + 6797, 971, 7161, 1023, 8924, 4786, 7706, 4612, 4170, 7618, 6355, 4419, + 5898, 11376, 10403, 10264, 6733, 4473, 639, 5358, 2521, 9138, 3061, + 5704, 4326, 618, 5355, 765, 5376, 768, 7132, 4530, 9425, 3102, 9221, + 6584, 11474, 10417, 10266, 12000, 6981, 6264, 4406, 2385, 7363, 4563, + 4163, 7617, 9866, 3165, 9230, 11852, 10471, 5007, 5982, 11388, 5138, + 734, 3616, 11050, 12112, 6997, 11533, 12181, 10518, 12036, 3475, 2252, + 7344, 9827, 4915, 9480, 6621, 4457, 7659, 9872, 6677, 4465, 4149, 7615, + 4599, 657, 3605, 515, 10607, 6782, 4480, 640, 1847, 3775, 5806, 2585, + 5636, 9583, 1369, 10729, 8555, 10000, 11962, 5220, 7768, 8132, 8184, + 9947, 1421, 203, 29, 8782, 11788, 1684, 10774, 10317, 4985, 9490, 8378, + 4708, 11206, 5112, 5997, 7879, 11659, 12199, 8765, 10030, 4944, 5973, + 6120, 6141, 6144, 7900, 11662, 1666, 238, 34, 3516, 5769, 9602, 8394, + 9977, 6692, 956, 10670, 6791, 9748, 11926, 8726, 11780, 5194, 742, 106, + 8793, 10034, 3189, 10989, 5081, 4237, 5872, 4350, 2377, 10873, 6820, + 6241, 11425, 10410, 10265, 3222, 5727, 9596, 4882, 2453, 2106, 3812, + 11078, 12116, 5242, 4260, 11142, 8614, 11764, 12214, 5256, 4262, 4120, + 11122, 5100, 11262, 5120, 2487, 5622, 9581, 8391, 8221, 2930, 10952, + 12098, 6995, 6266, 9673, 4893, 699, 3611, 4027, 5842, 11368, 1624, 232, + 8811, 8281, 1183, 169, 8802, 3013, 2186, 5579, 797, 3625, 4029, 11109, + 1587, 7249, 11569, 8675, 6506, 2685, 10917, 12093, 12261, 12285, 1755, + 7273, 1039, 1904, 272, 3550, 9285, 3082, 5707, 6082, 4380, 7648, 11626, + 5172, 4250, 9385, 8363, 8217, 4685, 5936, 848, 8899, 6538, 934, 1889, + 3781, 9318, 10109, 10222, 6727, 961, 5404, 772, 5377, 9546, 8386, 1198, + 8949, 3034, 2189, 7335, 4559, 5918, 2601, 10905, 5069, 9502, 3113, 7467, + 8089, 11689, 5181, 9518, 8382, 2953, 3933, 4073, 4093, 7607, 8109, 2914, + 5683, 4323, 11151, 1593, 10761, 6804, 972, 3650, 2277, 5592, 4310, 7638, + 9869, 4921, 703, 1856, 9043, 4803, 9464, 1352, 8971, 11815, 5199, 7765, + 6376, 4422, 7654, 2849, 407, 8836, 6529, 7955, 2892, 9191, 1313, 10721, + 12065, 12257, 1751, 9028, 8312, 2943, 2176, 3822, 546, 78, 8789, 11789, + 10462, 12028, 6985, 4509, 9422, 1346, 5459, 4291, 613, 10621, 6784, + 9747, 3148, 7472, 2823, 5670, 810, 7138, 8042, 4660, 7688, 6365, 6176, + 6149, 2634, 5643, 9584, 10147, 11983, 5223, 9524, 11894, 10477, 8519, + 1217, 3685, 2282, 326, 10580, 3267, 7489, 4581, 2410, 5611, 11335, 6886, + 8006, 8166, 11700, 3427, 11023, 8597, 10006, 3185, 455, 65, 5276, 7776, + 4622, 5927, 7869, 9902, 11948, 5218, 2501, 5624, 2559, 10899, 1557, + 1978, 10816, 10323, 8497, 4725, 675, 1852, 10798, 12076, 10503, 3256, + 9243, 3076, 2195, 10847, 12083, 10504, 12034, 10497, +} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go b/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go new file mode 100644 index 0000000..26df25a --- /dev/null +++ b/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go @@ -0,0 +1,32 @@ +// poly.go - NewHope reductions. +// +// To the extent possible under law, Yawning Angel has waived all copyright +// and related or neighboring rights to newhope, using the Creative +// Commons "CC0" public domain dedication. See LICENSE or +// for full details. + +package newhope + +// Incomplete-reduction routines; for details on allowed input ranges +// and produced output ranges, see the description in the paper: +// https://cryptojedi.org/papers/#newhope + +const ( + qinv = 12287 // -inverse_mod(p,2^18) + rlog = 18 +) + +func montgomeryReduce(a uint32) uint16 { + u := a * qinv + u &= ((1 << rlog) - 1) + u *= paramQ + a = (a + u) >> 18 + return uint16(a) +} + +func barrettReduce(a uint16) uint16 { + u := (uint32(a) * 5) >> 16 + u *= paramQ + a -= uint16(u) + return a +} diff --git a/vendor/github.com/jameskeane/bcrypt/.gitignore b/vendor/github.com/jameskeane/bcrypt/.gitignore new file mode 100644 index 0000000..c1e1c06 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/.gitignore @@ -0,0 +1,5 @@ +6.out +*.6 +_obj +_test +_testmain.go diff --git a/vendor/github.com/jameskeane/bcrypt/LICENSE b/vendor/github.com/jameskeane/bcrypt/LICENSE new file mode 100644 index 0000000..555bb71 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/LICENSE @@ -0,0 +1,29 @@ +Copyright (c) 2011 James Keane . All rights reserved. +Copyright (c) 2006 Damien Miller . +Copyright (c) 2011 ZooWar.com, All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of weekendlogic nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/jameskeane/bcrypt/README b/vendor/github.com/jameskeane/bcrypt/README new file mode 100644 index 0000000..a4d638a --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/README @@ -0,0 +1,46 @@ +Installation: + goinstall github.com/jameskeane/bcrypt + +Example use: + package main + + import ( + "fmt" + "github.com/jameskeane/bcrypt" + ) + + var password = "WyWihatdyd?frub1" + var bad_password = "just a wild guess" + + func main() { + // generate a random salt with default rounds of complexity + salt, _ := bcrypt.Salt() + + // generate a random salt with 10 rounds of complexity + salt, _ = bcrypt.Salt(10) + + // hash and verify a password with random salt + hash, _ := bcrypt.Hash(password) + if bcrypt.Match(password, hash) { + fmt.Println("They match") + } + + // hash and verify a password with a static salt + hash, _ = bcrypt.Hash(password, salt) + if bcrypt.Match(password, hash) { + fmt.Println("They match") + } + + // verify a random password fails to match the hashed password + if !bcrypt.Match(bad_password, hash) { + fmt.Println("They don't match") + } + } + +Todo: + grep 'TODO' * -r + +Notes: + * This library is derived from jBcrypt by Damien Miller + * bcrypt_test.go is from ZooWar.com + diff --git a/vendor/github.com/jameskeane/bcrypt/bcrypt.go b/vendor/github.com/jameskeane/bcrypt/bcrypt.go new file mode 100644 index 0000000..fe84921 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/bcrypt.go @@ -0,0 +1,190 @@ +package bcrypt + +import ( + "bytes" + "crypto/rand" + "crypto/subtle" + "encoding/base64" + "errors" + "strconv" + "strings" +) + +var ( + InvalidRounds = errors.New("bcrypt: Invalid rounds parameter") + InvalidSalt = errors.New("bcrypt: Invalid salt supplied") +) + +const ( + MaxRounds = 31 + MinRounds = 4 + DefaultRounds = 12 + SaltLen = 16 + BlowfishRounds = 16 +) + +var enc = base64.NewEncoding("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") + +// Helper function to build the bcrypt hash string +// payload takes : +// * []byte -> which it base64 encodes it (trims padding "=") and writes it to the buffer +// * string -> which it writes straight to the buffer +func build_bcrypt_str(minor byte, rounds uint, payload ...interface{}) []byte { + rs := bytes.NewBuffer(make([]byte, 0, 61)) + rs.WriteString("$2") + if minor >= 'a' { + rs.WriteByte(minor) + } + + rs.WriteByte('$') + if rounds < 10 { + rs.WriteByte('0') + } + + rs.WriteString(strconv.FormatUint(uint64(rounds), 10)) + rs.WriteByte('$') + for _, p := range payload { + if pb, ok := p.([]byte); ok { + rs.WriteString(strings.TrimRight(enc.EncodeToString(pb), "=")) + } else if ps, ok := p.(string); ok { + rs.WriteString(ps) + } + } + return rs.Bytes() +} + +// Salt generation +func Salt(rounds ...int) (string, error) { + rb, err := SaltBytes(rounds...) + return string(rb), err +} + +func SaltBytes(rounds ...int) (salt []byte, err error) { + r := DefaultRounds + if len(rounds) > 0 { + r = rounds[0] + if r < MinRounds || r > MaxRounds { + return nil, InvalidRounds + } + } + + rnd := make([]byte, SaltLen) + read, err := rand.Read(rnd) + if read != SaltLen || err != nil { + return nil, err + } + + return build_bcrypt_str('a', uint(r), rnd), nil +} + +func consume(r *bytes.Buffer, b byte) bool { + got, err := r.ReadByte() + if err != nil { + return false + } + if got != b { + r.UnreadByte() + return false + } + + return true +} + +func Hash(password string, salt ...string) (ps string, err error) { + var s []byte + var pb []byte + + if len(salt) == 0 { + s, err = SaltBytes() + if err != nil { + return + } + } else if len(salt) > 0 { + s = []byte(salt[0]) + } + + pb, err = HashBytes([]byte(password), s) + return string(pb), err +} + +func HashBytes(password []byte, salt ...[]byte) (hash []byte, err error) { + var s []byte + + if len(salt) == 0 { + s, err = SaltBytes() + if err != nil { + return + } + } else if len(salt) > 0 { + s = salt[0] + } + + // TODO: use a regex? I hear go has bad regex performance a simple FSM seems faster + // "^\\$2([a-z]?)\\$([0-3][0-9])\\$([\\./A-Za-z0-9]{22}+)" + + // Ok, extract the required information + minor := byte(0) + sr := bytes.NewBuffer(s) + + if !consume(sr, '$') || !consume(sr, '2') { + return nil, InvalidSalt + } + + if !consume(sr, '$') { + minor, _ = sr.ReadByte() + if minor != 'a' || !consume(sr, '$') { + return nil, InvalidSalt + } + } + + rounds_bytes := make([]byte, 2) + read, err := sr.Read(rounds_bytes) + if err != nil || read != 2 { + return nil, InvalidSalt + } + + if !consume(sr, '$') { + return nil, InvalidSalt + } + + var rounds64 uint64 + rounds64, err = strconv.ParseUint(string(rounds_bytes), 10, 0) + if err != nil { + return nil, InvalidSalt + } + + rounds := uint(rounds64) + + // TODO: can't we use base64.NewDecoder(enc, sr) ? + salt_bytes := make([]byte, 22) + read, err = sr.Read(salt_bytes) + if err != nil || read != 22 { + return nil, InvalidSalt + } + + var saltb []byte + // encoding/base64 expects 4 byte blocks padded, since bcrypt uses only 22 bytes we need to go up + saltb, err = enc.DecodeString(string(salt_bytes) + "==") + if err != nil { + return nil, err + } + + // cipher expects null terminated input (go initializes everything with zero values so this works) + password_term := make([]byte, len(password)+1) + copy(password_term, password) + + hashed := crypt_raw(password_term, saltb[:SaltLen], rounds) + return build_bcrypt_str(minor, rounds, string(salt_bytes), hashed[:len(bf_crypt_ciphertext)*4-1]), nil +} + +func Match(password, hash string) bool { + return MatchBytes([]byte(password), []byte(hash)) +} + +func MatchBytes(password []byte, hash []byte) bool { + h, err := HashBytes(password, hash) + if err != nil { + return false + } + return subtle.ConstantTimeCompare(h, hash) == 1 +} diff --git a/vendor/github.com/jameskeane/bcrypt/cipher.go b/vendor/github.com/jameskeane/bcrypt/cipher.go new file mode 100644 index 0000000..00724e4 --- /dev/null +++ b/vendor/github.com/jameskeane/bcrypt/cipher.go @@ -0,0 +1,415 @@ +package bcrypt + +var p_orig = [18]uint{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, + 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b, +} + +var s_orig = [1024]uint{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, + 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, + 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, + 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, + 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, + 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, + 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, + 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, + 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, + 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, + 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, + 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, + 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, + 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, + 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, + 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, + 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, + 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, + 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, + 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, + 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, + 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, + 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, + 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, + 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, + 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, + 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, + 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, + 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, + 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, + 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, + 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, + 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, + 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, + 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, + 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, + 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, + 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, + 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, + 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, + 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, + 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, + 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, + 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, + 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, + 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, + 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, + 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, + 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, + 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, + 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, + 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, + 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, + 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, + 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, + 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, + 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, + 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, + 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, + 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, + 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, + 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, + 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, + 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, + 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, + 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, + 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, + 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, + 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, + 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, + 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, + 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, + 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, + 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, + 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, + 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, + 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, + 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, + 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, + 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, + 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, + 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, + 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, + 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, + 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, + 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, + 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, + 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, + 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, + 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, + 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, + 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, + 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, + 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, + 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, + 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, + 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, + 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, + 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, + 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, + 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, + 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, + 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, + 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, + 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, + 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, + 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, + 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, + 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, + 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, + 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, + 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, + 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, + 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, + 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, + 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, + 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, + 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, + 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, + 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, + 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, + 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, + 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, + 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, + 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, + 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, + 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, + 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, + 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, + 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, + 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, + 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, + 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var bf_crypt_ciphertext = [6]uint{ + 0x4f727068, 0x65616e42, 0x65686f6c, + 0x64657253, 0x63727944, 0x6f756274, +} + + +type cipher struct { + P [18]uint + S [1024]uint + data [6]uint +} + +func (c *cipher) encipher(lr []uint, off int) { + l := lr[off] ^ c.P[0] + r := lr[off+1] + + for i := 0; i <= BlowfishRounds-2; i += 2{ + // Feistel substitution on left and right word respectively + r ^= (((c.S[(l>>24)&0xff] + c.S[0x100|((l>>16)&0xff)]) ^ c.S[0x200|((l>>8)&0xff)]) + c.S[0x300|(l&0xff)]) ^ c.P[i+1] + l ^= (((c.S[(r>>24)&0xff] + c.S[0x100|((r>>16)&0xff)]) ^ c.S[0x200|((r>>8)&0xff)]) + c.S[0x300|(r&0xff)]) ^ c.P[i+2] + } + + lr[off] = r ^ c.P[BlowfishRounds+1] + lr[off+1] = l +} +/** + * Cycically extract a word of key material + * @param data the string to extract the data from + * @param off the current offset into the data + * @return the next word of material from data and the next offset into the data + */ +func streamtoword(data []byte, off int) (uint, int) { + var word uint + for i := 0; i < 4; i++ { + word = (word << 8) | uint(data[off]&0xff) + off = (off + 1) % len(data) + } + + return word, off +} + +/** + * Key the Blowfish cipher + * @param key an array containing the key + */ +func (c *cipher) key(key []byte) { + var word uint + off := 0 + lr := []uint{0, 0} + plen := len(c.P) + slen := len(c.S) + + for i := 0; i < plen; i++ { + word, off = streamtoword(key, off) + c.P[i] = c.P[i] ^ word + } + + for i := 0; i < plen; i += 2 { + c.encipher(lr, 0) + c.P[i] = lr[0] + c.P[i+1] = lr[1] + } + + for i := 0; i < slen; i += 2 { + c.encipher(lr, 0) + c.S[i] = lr[0] + c.S[i+1] = lr[1] + } +} + +/** + * Perform the "enhanced key schedule" step described by + * Provos and Mazieres in "A Future-Adaptable Password Scheme" + * http://www.openbsd.org/papers/bcrypt-paper.ps + * @param data salt information + * @param key password information + */ +func (c *cipher) ekskey(data []byte, key []byte) { + var word uint + koff := 0 + doff := 0 + lr := []uint{0, 0} + plen := len(c.P) + slen := len(c.S) + + for i := 0; i < plen; i++ { + word, koff = streamtoword(key, koff) + c.P[i] = c.P[i] ^ word + } + + for i := 0; i < plen; i += 2 { + word, doff = streamtoword(data, doff) + lr[0] ^= word + word, doff = streamtoword(data, doff) + lr[1] ^= word + c.encipher(lr, 0) + c.P[i] = lr[0] + c.P[i+1] = lr[1] + } + + for i := 0; i < slen; i += 2 { + word, doff = streamtoword(data, doff) + lr[0] ^= word + word, doff = streamtoword(data, doff) + lr[1] ^= word + c.encipher(lr, 0) + c.S[i] = lr[0] + c.S[i+1] = lr[1] + } +} + +/** + * Perform the central password hashing step in the + * bcrypt scheme + * @param password the password to hash + * @param salt the binary salt to hash with the password + * @param log_rounds the binary logarithm of the number + * of rounds of hashing to apply + * @return an array containing the binary hashed password + */ +func crypt_raw(password []byte, salt []byte, log_rounds uint) []byte { + c := &cipher{P:p_orig, S:s_orig, data:bf_crypt_ciphertext} + + rounds := 1 << log_rounds + c.ekskey(salt, password) + for i := 0; i < rounds; i++ { + c.key(password) + c.key(salt) + } + + for i := 0; i < 64; i++ { + for j := 0; j < (6 >> 1); j++ { + c.encipher(c.data[:], j<<1) + } + } + + ret := make([]byte, 24) + for i := 0; i < 6; i++ { + k := i<<2 + ret[k] = (byte)((c.data[i] >> 24) & 0xff) + ret[k+1] = (byte)((c.data[i] >> 16) & 0xff) + ret[k+2] = (byte)((c.data[i] >> 8) & 0xff) + ret[k+3] = (byte)(c.data[i] & 0xff) + } + return ret +} diff --git a/vendor/github.com/klauspost/cpuid/.gitignore b/vendor/github.com/klauspost/cpuid/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/klauspost/cpuid/.travis.yml b/vendor/github.com/klauspost/cpuid/.travis.yml new file mode 100644 index 0000000..630192d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/.travis.yml @@ -0,0 +1,23 @@ +language: go + +sudo: false + +os: + - linux + - osx +go: + - 1.8.x + - 1.9.x + - 1.10.x + - master + +script: + - go vet ./... + - go test -v ./... + - go test -race ./... + - diff <(gofmt -d .) <("") + +matrix: + allow_failures: + - go: 'master' + fast_finish: true diff --git a/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt b/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt new file mode 100644 index 0000000..2ef4714 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt @@ -0,0 +1,35 @@ +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2015- Klaus Post & Contributors. +Email: klauspost@gmail.com + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. diff --git a/vendor/github.com/klauspost/cpuid/LICENSE b/vendor/github.com/klauspost/cpuid/LICENSE new file mode 100644 index 0000000..5cec7ee --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/klauspost/cpuid/README.md b/vendor/github.com/klauspost/cpuid/README.md new file mode 100644 index 0000000..b36e504 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/README.md @@ -0,0 +1,148 @@ +# cpuid +Package cpuid provides information about the CPU running the current program. + +CPU features are detected on startup, and kept for fast access through the life of the application. +Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use. + +You can access the CPU information by accessing the shared CPU variable of the cpuid library. + +Package home: https://github.com/klauspost/cpuid + +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg +[2]: https://godoc.org/github.com/klauspost/cpuid +[3]: https://travis-ci.org/klauspost/cpuid.svg +[4]: https://travis-ci.org/klauspost/cpuid + +# features +## CPU Instructions +* **CMOV** (i686 CMOV) +* **NX** (NX (No-Execute) bit) +* **AMD3DNOW** (AMD 3DNOW) +* **AMD3DNOWEXT** (AMD 3DNowExt) +* **MMX** (standard MMX) +* **MMXEXT** (SSE integer functions or AMD MMX ext) +* **SSE** (SSE functions) +* **SSE2** (P4 SSE functions) +* **SSE3** (Prescott SSE3 functions) +* **SSSE3** (Conroe SSSE3 functions) +* **SSE4** (Penryn SSE4.1 functions) +* **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions) +* **SSE42** (Nehalem SSE4.2 functions) +* **AVX** (AVX functions) +* **AVX2** (AVX2 functions) +* **FMA3** (Intel FMA 3) +* **FMA4** (Bulldozer FMA4 functions) +* **XOP** (Bulldozer XOP functions) +* **F16C** (Half-precision floating-point conversion) +* **BMI1** (Bit Manipulation Instruction Set 1) +* **BMI2** (Bit Manipulation Instruction Set 2) +* **TBM** (AMD Trailing Bit Manipulation) +* **LZCNT** (LZCNT instruction) +* **POPCNT** (POPCNT instruction) +* **AESNI** (Advanced Encryption Standard New Instructions) +* **CLMUL** (Carry-less Multiplication) +* **HTT** (Hyperthreading (enabled)) +* **HLE** (Hardware Lock Elision) +* **RTM** (Restricted Transactional Memory) +* **RDRAND** (RDRAND instruction is available) +* **RDSEED** (RDSEED instruction is available) +* **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions)) +* **SHA** (Intel SHA Extensions) +* **AVX512F** (AVX-512 Foundation) +* **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions) +* **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions) +* **AVX512PF** (AVX-512 Prefetch Instructions) +* **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions) +* **AVX512CD** (AVX-512 Conflict Detection Instructions) +* **AVX512BW** (AVX-512 Byte and Word Instructions) +* **AVX512VL** (AVX-512 Vector Length Extensions) +* **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions) +* **MPX** (Intel MPX (Memory Protection Extensions)) +* **ERMS** (Enhanced REP MOVSB/STOSB) +* **RDTSCP** (RDTSCP Instruction) +* **CX16** (CMPXCHG16B Instruction) +* **SGX** (Software Guard Extensions, with activation details) +* **VMX** (Virtual Machine Extensions) + +## Performance +* **RDTSCP()** Returns current cycle count. Can be used for benchmarking. +* **SSE2SLOW** (SSE2 is supported, but usually not faster) +* **SSE3SLOW** (SSE3 is supported, but usually not faster) +* **ATOM** (Atom processor, some SSSE3 instructions are slower) +* **Cache line** (Probable size of a cache line). +* **L1, L2, L3 Cache size** on newer Intel/AMD CPUs. + +## Cpu Vendor/VM +* **Intel** +* **AMD** +* **VIA** +* **Transmeta** +* **NSC** +* **KVM** (Kernel-based Virtual Machine) +* **MSVM** (Microsoft Hyper-V or Windows Virtual PC) +* **VMware** +* **XenHVM** +* **Bhyve** +* **Hygon** + +# installing + +```go get github.com/klauspost/cpuid``` + +# example + +```Go +package main + +import ( + "fmt" + "github.com/klauspost/cpuid" +) + +func main() { + // Print basic CPU information: + fmt.Println("Name:", cpuid.CPU.BrandName) + fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores) + fmt.Println("ThreadsPerCore:", cpuid.CPU.ThreadsPerCore) + fmt.Println("LogicalCores:", cpuid.CPU.LogicalCores) + fmt.Println("Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model) + fmt.Println("Features:", cpuid.CPU.Features) + fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine) + fmt.Println("L1 Data Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L1 Instruction Cache:", cpuid.CPU.Cache.L1D, "bytes") + fmt.Println("L2 Cache:", cpuid.CPU.Cache.L2, "bytes") + fmt.Println("L3 Cache:", cpuid.CPU.Cache.L3, "bytes") + + // Test if we have a specific feature: + if cpuid.CPU.SSE() { + fmt.Println("We have Streaming SIMD Extensions") + } +} +``` + +Sample output: +``` +>go run main.go +Name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz +PhysicalCores: 2 +ThreadsPerCore: 2 +LogicalCores: 4 +Family 6 Model: 42 +Features: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL +Cacheline bytes: 64 +We have Streaming SIMD Extensions +``` + +# private package + +In the "private" folder you can find an autogenerated version of the library you can include in your own packages. + +For this purpose all exports are removed, and functions and constants are lowercased. + +This is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages. + +# license + +This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/cpuid.go b/vendor/github.com/klauspost/cpuid/cpuid.go new file mode 100644 index 0000000..0a6af40 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid.go @@ -0,0 +1,1069 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// Package cpuid provides information about the CPU running the current program. +// +// CPU features are detected on startup, and kept for fast access through the life of the application. +// Currently x86 / x64 (AMD64) is supported. +// +// You can access the CPU information by accessing the shared CPU variable of the cpuid library. +// +// Package home: https://github.com/klauspost/cpuid +package cpuid + +import "strings" + +// Vendor is a representation of a CPU vendor. +type Vendor int + +const ( + Other Vendor = iota + Intel + AMD + VIA + Transmeta + NSC + KVM // Kernel-based Virtual Machine + MSVM // Microsoft Hyper-V or Windows Virtual PC + VMware + XenHVM + Bhyve + Hygon +) + +const ( + CMOV = 1 << iota // i686 CMOV + NX // NX (No-Execute) bit + AMD3DNOW // AMD 3DNOW + AMD3DNOWEXT // AMD 3DNowExt + MMX // standard MMX + MMXEXT // SSE integer functions or AMD MMX ext + SSE // SSE functions + SSE2 // P4 SSE functions + SSE3 // Prescott SSE3 functions + SSSE3 // Conroe SSSE3 functions + SSE4 // Penryn SSE4.1 functions + SSE4A // AMD Barcelona microarchitecture SSE4a instructions + SSE42 // Nehalem SSE4.2 functions + AVX // AVX functions + AVX2 // AVX2 functions + FMA3 // Intel FMA 3 + FMA4 // Bulldozer FMA4 functions + XOP // Bulldozer XOP functions + F16C // Half-precision floating-point conversion + BMI1 // Bit Manipulation Instruction Set 1 + BMI2 // Bit Manipulation Instruction Set 2 + TBM // AMD Trailing Bit Manipulation + LZCNT // LZCNT instruction + POPCNT // POPCNT instruction + AESNI // Advanced Encryption Standard New Instructions + CLMUL // Carry-less Multiplication + HTT // Hyperthreading (enabled) + HLE // Hardware Lock Elision + RTM // Restricted Transactional Memory + RDRAND // RDRAND instruction is available + RDSEED // RDSEED instruction is available + ADX // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA // Intel SHA Extensions + AVX512F // AVX-512 Foundation + AVX512DQ // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF // AVX-512 Prefetch Instructions + AVX512ER // AVX-512 Exponential and Reciprocal Instructions + AVX512CD // AVX-512 Conflict Detection Instructions + AVX512BW // AVX-512 Byte and Word Instructions + AVX512VL // AVX-512 Vector Length Extensions + AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions + AVX512VNNI // AVX-512 Vector Neural Network Instructions + MPX // Intel MPX (Memory Protection Extensions) + ERMS // Enhanced REP MOVSB/STOSB + RDTSCP // RDTSCP Instruction + CX16 // CMPXCHG16B Instruction + SGX // Software Guard Extensions + IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB) + STIBP // Single Thread Indirect Branch Predictors + VMX // Virtual Machine Extensions + + // Performance indicators + SSE2SLOW // SSE2 is supported, but usually not faster + SSE3SLOW // SSE3 is supported, but usually not faster + ATOM // Atom processor, some SSSE3 instructions are slower +) + +var flagNames = map[Flags]string{ + CMOV: "CMOV", // i686 CMOV + NX: "NX", // NX (No-Execute) bit + AMD3DNOW: "AMD3DNOW", // AMD 3DNOW + AMD3DNOWEXT: "AMD3DNOWEXT", // AMD 3DNowExt + MMX: "MMX", // Standard MMX + MMXEXT: "MMXEXT", // SSE integer functions or AMD MMX ext + SSE: "SSE", // SSE functions + SSE2: "SSE2", // P4 SSE2 functions + SSE3: "SSE3", // Prescott SSE3 functions + SSSE3: "SSSE3", // Conroe SSSE3 functions + SSE4: "SSE4.1", // Penryn SSE4.1 functions + SSE4A: "SSE4A", // AMD Barcelona microarchitecture SSE4a instructions + SSE42: "SSE4.2", // Nehalem SSE4.2 functions + AVX: "AVX", // AVX functions + AVX2: "AVX2", // AVX functions + FMA3: "FMA3", // Intel FMA 3 + FMA4: "FMA4", // Bulldozer FMA4 functions + XOP: "XOP", // Bulldozer XOP functions + F16C: "F16C", // Half-precision floating-point conversion + BMI1: "BMI1", // Bit Manipulation Instruction Set 1 + BMI2: "BMI2", // Bit Manipulation Instruction Set 2 + TBM: "TBM", // AMD Trailing Bit Manipulation + LZCNT: "LZCNT", // LZCNT instruction + POPCNT: "POPCNT", // POPCNT instruction + AESNI: "AESNI", // Advanced Encryption Standard New Instructions + CLMUL: "CLMUL", // Carry-less Multiplication + HTT: "HTT", // Hyperthreading (enabled) + HLE: "HLE", // Hardware Lock Elision + RTM: "RTM", // Restricted Transactional Memory + RDRAND: "RDRAND", // RDRAND instruction is available + RDSEED: "RDSEED", // RDSEED instruction is available + ADX: "ADX", // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) + SHA: "SHA", // Intel SHA Extensions + AVX512F: "AVX512F", // AVX-512 Foundation + AVX512DQ: "AVX512DQ", // AVX-512 Doubleword and Quadword Instructions + AVX512IFMA: "AVX512IFMA", // AVX-512 Integer Fused Multiply-Add Instructions + AVX512PF: "AVX512PF", // AVX-512 Prefetch Instructions + AVX512ER: "AVX512ER", // AVX-512 Exponential and Reciprocal Instructions + AVX512CD: "AVX512CD", // AVX-512 Conflict Detection Instructions + AVX512BW: "AVX512BW", // AVX-512 Byte and Word Instructions + AVX512VL: "AVX512VL", // AVX-512 Vector Length Extensions + AVX512VBMI: "AVX512VBMI", // AVX-512 Vector Bit Manipulation Instructions + AVX512VNNI: "AVX512VNNI", // AVX-512 Vector Neural Network Instructions + MPX: "MPX", // Intel MPX (Memory Protection Extensions) + ERMS: "ERMS", // Enhanced REP MOVSB/STOSB + RDTSCP: "RDTSCP", // RDTSCP Instruction + CX16: "CX16", // CMPXCHG16B Instruction + SGX: "SGX", // Software Guard Extensions + IBPB: "IBPB", // Indirect Branch Restricted Speculation and Indirect Branch Predictor Barrier + STIBP: "STIBP", // Single Thread Indirect Branch Predictors + VMX: "VMX", // Virtual Machine Extensions + + // Performance indicators + SSE2SLOW: "SSE2SLOW", // SSE2 supported, but usually not faster + SSE3SLOW: "SSE3SLOW", // SSE3 supported, but usually not faster + ATOM: "ATOM", // Atom processor, some SSSE3 instructions are slower + +} + +// CPUInfo contains information about the detected system CPU. +type CPUInfo struct { + BrandName string // Brand name reported by the CPU + VendorID Vendor // Comparable CPU vendor ID + Features Flags // Features of the CPU + PhysicalCores int // Number of physical processor cores in your CPU. Will be 0 if undetectable. + ThreadsPerCore int // Number of threads per physical core. Will be 1 if undetectable. + LogicalCores int // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable. + Family int // CPU family number + Model int // CPU model number + CacheLine int // Cache line size in bytes. Will be 0 if undetectable. + Cache struct { + L1I int // L1 Instruction Cache (per core or shared). Will be -1 if undetected + L1D int // L1 Data Cache (per core or shared). Will be -1 if undetected + L2 int // L2 Cache (per core or shared). Will be -1 if undetected + L3 int // L3 Instruction Cache (per core or shared). Will be -1 if undetected + } + SGX SGXSupport + maxFunc uint32 + maxExFunc uint32 +} + +var cpuid func(op uint32) (eax, ebx, ecx, edx uint32) +var cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32) +var xgetbv func(index uint32) (eax, edx uint32) +var rdtscpAsm func() (eax, ebx, ecx, edx uint32) + +// CPU contains information about the CPU as detected on startup, +// or when Detect last was called. +// +// Use this as the primary entry point to you data, +// this way queries are +var CPU CPUInfo + +func init() { + initCPU() + Detect() +} + +// Detect will re-detect current CPU info. +// This will replace the content of the exported CPU variable. +// +// Unless you expect the CPU to change while you are running your program +// you should not need to call this function. +// If you call this, you must ensure that no other goroutine is accessing the +// exported CPU variable. +func Detect() { + CPU.maxFunc = maxFunctionID() + CPU.maxExFunc = maxExtendedFunction() + CPU.BrandName = brandName() + CPU.CacheLine = cacheLine() + CPU.Family, CPU.Model = familyModel() + CPU.Features = support() + CPU.SGX = hasSGX(CPU.Features&SGX != 0) + CPU.ThreadsPerCore = threadsPerCore() + CPU.LogicalCores = logicalCores() + CPU.PhysicalCores = physicalCores() + CPU.VendorID = vendorID() + CPU.cacheSize() +} + +// Generated here: http://play.golang.org/p/BxFH2Gdc0G + +// Cmov indicates support of CMOV instructions +func (c CPUInfo) Cmov() bool { + return c.Features&CMOV != 0 +} + +// Amd3dnow indicates support of AMD 3DNOW! instructions +func (c CPUInfo) Amd3dnow() bool { + return c.Features&AMD3DNOW != 0 +} + +// Amd3dnowExt indicates support of AMD 3DNOW! Extended instructions +func (c CPUInfo) Amd3dnowExt() bool { + return c.Features&AMD3DNOWEXT != 0 +} + +// VMX indicates support of VMX +func (c CPUInfo) VMX() bool { + return c.Features&VMX != 0 +} + +// MMX indicates support of MMX instructions +func (c CPUInfo) MMX() bool { + return c.Features&MMX != 0 +} + +// MMXExt indicates support of MMXEXT instructions +// (SSE integer functions or AMD MMX ext) +func (c CPUInfo) MMXExt() bool { + return c.Features&MMXEXT != 0 +} + +// SSE indicates support of SSE instructions +func (c CPUInfo) SSE() bool { + return c.Features&SSE != 0 +} + +// SSE2 indicates support of SSE 2 instructions +func (c CPUInfo) SSE2() bool { + return c.Features&SSE2 != 0 +} + +// SSE3 indicates support of SSE 3 instructions +func (c CPUInfo) SSE3() bool { + return c.Features&SSE3 != 0 +} + +// SSSE3 indicates support of SSSE 3 instructions +func (c CPUInfo) SSSE3() bool { + return c.Features&SSSE3 != 0 +} + +// SSE4 indicates support of SSE 4 (also called SSE 4.1) instructions +func (c CPUInfo) SSE4() bool { + return c.Features&SSE4 != 0 +} + +// SSE42 indicates support of SSE4.2 instructions +func (c CPUInfo) SSE42() bool { + return c.Features&SSE42 != 0 +} + +// AVX indicates support of AVX instructions +// and operating system support of AVX instructions +func (c CPUInfo) AVX() bool { + return c.Features&AVX != 0 +} + +// AVX2 indicates support of AVX2 instructions +func (c CPUInfo) AVX2() bool { + return c.Features&AVX2 != 0 +} + +// FMA3 indicates support of FMA3 instructions +func (c CPUInfo) FMA3() bool { + return c.Features&FMA3 != 0 +} + +// FMA4 indicates support of FMA4 instructions +func (c CPUInfo) FMA4() bool { + return c.Features&FMA4 != 0 +} + +// XOP indicates support of XOP instructions +func (c CPUInfo) XOP() bool { + return c.Features&XOP != 0 +} + +// F16C indicates support of F16C instructions +func (c CPUInfo) F16C() bool { + return c.Features&F16C != 0 +} + +// BMI1 indicates support of BMI1 instructions +func (c CPUInfo) BMI1() bool { + return c.Features&BMI1 != 0 +} + +// BMI2 indicates support of BMI2 instructions +func (c CPUInfo) BMI2() bool { + return c.Features&BMI2 != 0 +} + +// TBM indicates support of TBM instructions +// (AMD Trailing Bit Manipulation) +func (c CPUInfo) TBM() bool { + return c.Features&TBM != 0 +} + +// Lzcnt indicates support of LZCNT instruction +func (c CPUInfo) Lzcnt() bool { + return c.Features&LZCNT != 0 +} + +// Popcnt indicates support of POPCNT instruction +func (c CPUInfo) Popcnt() bool { + return c.Features&POPCNT != 0 +} + +// HTT indicates the processor has Hyperthreading enabled +func (c CPUInfo) HTT() bool { + return c.Features&HTT != 0 +} + +// SSE2Slow indicates that SSE2 may be slow on this processor +func (c CPUInfo) SSE2Slow() bool { + return c.Features&SSE2SLOW != 0 +} + +// SSE3Slow indicates that SSE3 may be slow on this processor +func (c CPUInfo) SSE3Slow() bool { + return c.Features&SSE3SLOW != 0 +} + +// AesNi indicates support of AES-NI instructions +// (Advanced Encryption Standard New Instructions) +func (c CPUInfo) AesNi() bool { + return c.Features&AESNI != 0 +} + +// Clmul indicates support of CLMUL instructions +// (Carry-less Multiplication) +func (c CPUInfo) Clmul() bool { + return c.Features&CLMUL != 0 +} + +// NX indicates support of NX (No-Execute) bit +func (c CPUInfo) NX() bool { + return c.Features&NX != 0 +} + +// SSE4A indicates support of AMD Barcelona microarchitecture SSE4a instructions +func (c CPUInfo) SSE4A() bool { + return c.Features&SSE4A != 0 +} + +// HLE indicates support of Hardware Lock Elision +func (c CPUInfo) HLE() bool { + return c.Features&HLE != 0 +} + +// RTM indicates support of Restricted Transactional Memory +func (c CPUInfo) RTM() bool { + return c.Features&RTM != 0 +} + +// Rdrand indicates support of RDRAND instruction is available +func (c CPUInfo) Rdrand() bool { + return c.Features&RDRAND != 0 +} + +// Rdseed indicates support of RDSEED instruction is available +func (c CPUInfo) Rdseed() bool { + return c.Features&RDSEED != 0 +} + +// ADX indicates support of Intel ADX (Multi-Precision Add-Carry Instruction Extensions) +func (c CPUInfo) ADX() bool { + return c.Features&ADX != 0 +} + +// SHA indicates support of Intel SHA Extensions +func (c CPUInfo) SHA() bool { + return c.Features&SHA != 0 +} + +// AVX512F indicates support of AVX-512 Foundation +func (c CPUInfo) AVX512F() bool { + return c.Features&AVX512F != 0 +} + +// AVX512DQ indicates support of AVX-512 Doubleword and Quadword Instructions +func (c CPUInfo) AVX512DQ() bool { + return c.Features&AVX512DQ != 0 +} + +// AVX512IFMA indicates support of AVX-512 Integer Fused Multiply-Add Instructions +func (c CPUInfo) AVX512IFMA() bool { + return c.Features&AVX512IFMA != 0 +} + +// AVX512PF indicates support of AVX-512 Prefetch Instructions +func (c CPUInfo) AVX512PF() bool { + return c.Features&AVX512PF != 0 +} + +// AVX512ER indicates support of AVX-512 Exponential and Reciprocal Instructions +func (c CPUInfo) AVX512ER() bool { + return c.Features&AVX512ER != 0 +} + +// AVX512CD indicates support of AVX-512 Conflict Detection Instructions +func (c CPUInfo) AVX512CD() bool { + return c.Features&AVX512CD != 0 +} + +// AVX512BW indicates support of AVX-512 Byte and Word Instructions +func (c CPUInfo) AVX512BW() bool { + return c.Features&AVX512BW != 0 +} + +// AVX512VL indicates support of AVX-512 Vector Length Extensions +func (c CPUInfo) AVX512VL() bool { + return c.Features&AVX512VL != 0 +} + +// AVX512VBMI indicates support of AVX-512 Vector Bit Manipulation Instructions +func (c CPUInfo) AVX512VBMI() bool { + return c.Features&AVX512VBMI != 0 +} + +// AVX512VNNI indicates support of AVX-512 Vector Neural Network Instructions +func (c CPUInfo) AVX512VNNI() bool { + return c.Features&AVX512VNNI != 0 +} + +// MPX indicates support of Intel MPX (Memory Protection Extensions) +func (c CPUInfo) MPX() bool { + return c.Features&MPX != 0 +} + +// ERMS indicates support of Enhanced REP MOVSB/STOSB +func (c CPUInfo) ERMS() bool { + return c.Features&ERMS != 0 +} + +// RDTSCP Instruction is available. +func (c CPUInfo) RDTSCP() bool { + return c.Features&RDTSCP != 0 +} + +// CX16 indicates if CMPXCHG16B instruction is available. +func (c CPUInfo) CX16() bool { + return c.Features&CX16 != 0 +} + +// TSX is split into HLE (Hardware Lock Elision) and RTM (Restricted Transactional Memory) detection. +// So TSX simply checks that. +func (c CPUInfo) TSX() bool { + return c.Features&(HLE|RTM) == HLE|RTM +} + +// Atom indicates an Atom processor +func (c CPUInfo) Atom() bool { + return c.Features&ATOM != 0 +} + +// Intel returns true if vendor is recognized as Intel +func (c CPUInfo) Intel() bool { + return c.VendorID == Intel +} + +// AMD returns true if vendor is recognized as AMD +func (c CPUInfo) AMD() bool { + return c.VendorID == AMD +} + +// Hygon returns true if vendor is recognized as Hygon +func (c CPUInfo) Hygon() bool { + return c.VendorID == Hygon +} + +// Transmeta returns true if vendor is recognized as Transmeta +func (c CPUInfo) Transmeta() bool { + return c.VendorID == Transmeta +} + +// NSC returns true if vendor is recognized as National Semiconductor +func (c CPUInfo) NSC() bool { + return c.VendorID == NSC +} + +// VIA returns true if vendor is recognized as VIA +func (c CPUInfo) VIA() bool { + return c.VendorID == VIA +} + +// RTCounter returns the 64-bit time-stamp counter +// Uses the RDTSCP instruction. The value 0 is returned +// if the CPU does not support the instruction. +func (c CPUInfo) RTCounter() uint64 { + if !c.RDTSCP() { + return 0 + } + a, _, _, d := rdtscpAsm() + return uint64(a) | (uint64(d) << 32) +} + +// Ia32TscAux returns the IA32_TSC_AUX part of the RDTSCP. +// This variable is OS dependent, but on Linux contains information +// about the current cpu/core the code is running on. +// If the RDTSCP instruction isn't supported on the CPU, the value 0 is returned. +func (c CPUInfo) Ia32TscAux() uint32 { + if !c.RDTSCP() { + return 0 + } + _, _, ecx, _ := rdtscpAsm() + return ecx +} + +// LogicalCPU will return the Logical CPU the code is currently executing on. +// This is likely to change when the OS re-schedules the running thread +// to another CPU. +// If the current core cannot be detected, -1 will be returned. +func (c CPUInfo) LogicalCPU() int { + if c.maxFunc < 1 { + return -1 + } + _, ebx, _, _ := cpuid(1) + return int(ebx >> 24) +} + +// VM Will return true if the cpu id indicates we are in +// a virtual machine. This is only a hint, and will very likely +// have many false negatives. +func (c CPUInfo) VM() bool { + switch c.VendorID { + case MSVM, KVM, VMware, XenHVM, Bhyve: + return true + } + return false +} + +// Flags contains detected cpu features and caracteristics +type Flags uint64 + +// String returns a string representation of the detected +// CPU features. +func (f Flags) String() string { + return strings.Join(f.Strings(), ",") +} + +// Strings returns and array of the detected features. +func (f Flags) Strings() []string { + s := support() + r := make([]string, 0, 20) + for i := uint(0); i < 64; i++ { + key := Flags(1 << i) + val := flagNames[key] + if s&key != 0 { + r = append(r, val) + } + } + return r +} + +func maxExtendedFunction() uint32 { + eax, _, _, _ := cpuid(0x80000000) + return eax +} + +func maxFunctionID() uint32 { + a, _, _, _ := cpuid(0) + return a +} + +func brandName() string { + if maxExtendedFunction() >= 0x80000004 { + v := make([]uint32, 0, 48) + for i := uint32(0); i < 3; i++ { + a, b, c, d := cpuid(0x80000002 + i) + v = append(v, a, b, c, d) + } + return strings.Trim(string(valAsString(v...)), " ") + } + return "unknown" +} + +func threadsPerCore() int { + mfi := maxFunctionID() + if mfi < 0x4 || vendorID() != Intel { + return 1 + } + + if mfi < 0xb { + _, b, _, d := cpuid(1) + if (d & (1 << 28)) != 0 { + // v will contain logical core count + v := (b >> 16) & 255 + if v > 1 { + a4, _, _, _ := cpuid(4) + // physical cores + v2 := (a4 >> 26) + 1 + if v2 > 0 { + return int(v) / int(v2) + } + } + } + return 1 + } + _, b, _, _ := cpuidex(0xb, 0) + if b&0xffff == 0 { + return 1 + } + return int(b & 0xffff) +} + +func logicalCores() int { + mfi := maxFunctionID() + switch vendorID() { + case Intel: + // Use this on old Intel processors + if mfi < 0xb { + if mfi < 1 { + return 0 + } + // CPUID.1:EBX[23:16] represents the maximum number of addressable IDs (initial APIC ID) + // that can be assigned to logical processors in a physical package. + // The value may not be the same as the number of logical processors that are present in the hardware of a physical package. + _, ebx, _, _ := cpuid(1) + logical := (ebx >> 16) & 0xff + return int(logical) + } + _, b, _, _ := cpuidex(0xb, 1) + return int(b & 0xffff) + case AMD, Hygon: + _, b, _, _ := cpuid(1) + return int((b >> 16) & 0xff) + default: + return 0 + } +} + +func familyModel() (int, int) { + if maxFunctionID() < 0x1 { + return 0, 0 + } + eax, _, _, _ := cpuid(1) + family := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff) + model := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0) + return int(family), int(model) +} + +func physicalCores() int { + switch vendorID() { + case Intel: + return logicalCores() / threadsPerCore() + case AMD, Hygon: + if maxExtendedFunction() >= 0x80000008 { + _, _, c, _ := cpuid(0x80000008) + return int(c&0xff) + 1 + } + } + return 0 +} + +// Except from http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID +var vendorMapping = map[string]Vendor{ + "AMDisbetter!": AMD, + "AuthenticAMD": AMD, + "CentaurHauls": VIA, + "GenuineIntel": Intel, + "TransmetaCPU": Transmeta, + "GenuineTMx86": Transmeta, + "Geode by NSC": NSC, + "VIA VIA VIA ": VIA, + "KVMKVMKVMKVM": KVM, + "Microsoft Hv": MSVM, + "VMwareVMware": VMware, + "XenVMMXenVMM": XenHVM, + "bhyve bhyve ": Bhyve, + "HygonGenuine": Hygon, +} + +func vendorID() Vendor { + _, b, c, d := cpuid(0) + v := valAsString(b, d, c) + vend, ok := vendorMapping[string(v)] + if !ok { + return Other + } + return vend +} + +func cacheLine() int { + if maxFunctionID() < 0x1 { + return 0 + } + + _, ebx, _, _ := cpuid(1) + cache := (ebx & 0xff00) >> 5 // cflush size + if cache == 0 && maxExtendedFunction() >= 0x80000006 { + _, _, ecx, _ := cpuid(0x80000006) + cache = ecx & 0xff // cacheline size + } + // TODO: Read from Cache and TLB Information + return int(cache) +} + +func (c *CPUInfo) cacheSize() { + c.Cache.L1D = -1 + c.Cache.L1I = -1 + c.Cache.L2 = -1 + c.Cache.L3 = -1 + vendor := vendorID() + switch vendor { + case Intel: + if maxFunctionID() < 4 { + return + } + for i := uint32(0); ; i++ { + eax, ebx, ecx, _ := cpuidex(4, i) + cacheType := eax & 15 + if cacheType == 0 { + break + } + cacheLevel := (eax >> 5) & 7 + coherency := int(ebx&0xfff) + 1 + partitions := int((ebx>>12)&0x3ff) + 1 + associativity := int((ebx>>22)&0x3ff) + 1 + sets := int(ecx) + 1 + size := associativity * partitions * coherency * sets + switch cacheLevel { + case 1: + if cacheType == 1 { + // 1 = Data Cache + c.Cache.L1D = size + } else if cacheType == 2 { + // 2 = Instruction Cache + c.Cache.L1I = size + } else { + if c.Cache.L1D < 0 { + c.Cache.L1I = size + } + if c.Cache.L1I < 0 { + c.Cache.L1I = size + } + } + case 2: + c.Cache.L2 = size + case 3: + c.Cache.L3 = size + } + } + case AMD, Hygon: + // Untested. + if maxExtendedFunction() < 0x80000005 { + return + } + _, _, ecx, edx := cpuid(0x80000005) + c.Cache.L1D = int(((ecx >> 24) & 0xFF) * 1024) + c.Cache.L1I = int(((edx >> 24) & 0xFF) * 1024) + + if maxExtendedFunction() < 0x80000006 { + return + } + _, _, ecx, _ = cpuid(0x80000006) + c.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024) + } + + return +} + +type SGXSupport struct { + Available bool + SGX1Supported bool + SGX2Supported bool + MaxEnclaveSizeNot64 int64 + MaxEnclaveSize64 int64 +} + +func hasSGX(available bool) (rval SGXSupport) { + rval.Available = available + + if !available { + return + } + + a, _, _, d := cpuidex(0x12, 0) + rval.SGX1Supported = a&0x01 != 0 + rval.SGX2Supported = a&0x02 != 0 + rval.MaxEnclaveSizeNot64 = 1 << (d & 0xFF) // pow 2 + rval.MaxEnclaveSize64 = 1 << ((d >> 8) & 0xFF) // pow 2 + + return +} + +func support() Flags { + mfi := maxFunctionID() + vend := vendorID() + if mfi < 0x1 { + return 0 + } + rval := uint64(0) + _, _, c, d := cpuid(1) + if (d & (1 << 15)) != 0 { + rval |= CMOV + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 25)) != 0 { + rval |= MMXEXT + } + if (d & (1 << 25)) != 0 { + rval |= SSE + } + if (d & (1 << 26)) != 0 { + rval |= SSE2 + } + if (c & 1) != 0 { + rval |= SSE3 + } + if (c & (1 << 5)) != 0 { + rval |= VMX + } + if (c & 0x00000200) != 0 { + rval |= SSSE3 + } + if (c & 0x00080000) != 0 { + rval |= SSE4 + } + if (c & 0x00100000) != 0 { + rval |= SSE42 + } + if (c & (1 << 25)) != 0 { + rval |= AESNI + } + if (c & (1 << 1)) != 0 { + rval |= CLMUL + } + if c&(1<<23) != 0 { + rval |= POPCNT + } + if c&(1<<30) != 0 { + rval |= RDRAND + } + if c&(1<<29) != 0 { + rval |= F16C + } + if c&(1<<13) != 0 { + rval |= CX16 + } + if vend == Intel && (d&(1<<28)) != 0 && mfi >= 4 { + if threadsPerCore() > 1 { + rval |= HTT + } + } + + // Check XGETBV, OXSAVE and AVX bits + if c&(1<<26) != 0 && c&(1<<27) != 0 && c&(1<<28) != 0 { + // Check for OS support + eax, _ := xgetbv(0) + if (eax & 0x6) == 0x6 { + rval |= AVX + if (c & 0x00001000) != 0 { + rval |= FMA3 + } + } + } + + // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. + if mfi >= 7 { + _, ebx, ecx, edx := cpuidex(7, 0) + if (rval&AVX) != 0 && (ebx&0x00000020) != 0 { + rval |= AVX2 + } + if (ebx & 0x00000008) != 0 { + rval |= BMI1 + if (ebx & 0x00000100) != 0 { + rval |= BMI2 + } + } + if ebx&(1<<2) != 0 { + rval |= SGX + } + if ebx&(1<<4) != 0 { + rval |= HLE + } + if ebx&(1<<9) != 0 { + rval |= ERMS + } + if ebx&(1<<11) != 0 { + rval |= RTM + } + if ebx&(1<<14) != 0 { + rval |= MPX + } + if ebx&(1<<18) != 0 { + rval |= RDSEED + } + if ebx&(1<<19) != 0 { + rval |= ADX + } + if ebx&(1<<29) != 0 { + rval |= SHA + } + if edx&(1<<26) != 0 { + rval |= IBPB + } + if edx&(1<<27) != 0 { + rval |= STIBP + } + + // Only detect AVX-512 features if XGETBV is supported + if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { + // Check for OS support + eax, _ := xgetbv(0) + + // Verify that XCR0[7:5] = ‘111b’ (OPMASK state, upper 256-bit of ZMM0-ZMM15 and + // ZMM16-ZMM31 state are enabled by OS) + /// and that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS). + if (eax>>5)&7 == 7 && (eax>>1)&3 == 3 { + if ebx&(1<<16) != 0 { + rval |= AVX512F + } + if ebx&(1<<17) != 0 { + rval |= AVX512DQ + } + if ebx&(1<<21) != 0 { + rval |= AVX512IFMA + } + if ebx&(1<<26) != 0 { + rval |= AVX512PF + } + if ebx&(1<<27) != 0 { + rval |= AVX512ER + } + if ebx&(1<<28) != 0 { + rval |= AVX512CD + } + if ebx&(1<<30) != 0 { + rval |= AVX512BW + } + if ebx&(1<<31) != 0 { + rval |= AVX512VL + } + // ecx + if ecx&(1<<1) != 0 { + rval |= AVX512VBMI + } + if ecx&(1<<11) != 0 { + rval |= AVX512VNNI + } + } + } + } + + if maxExtendedFunction() >= 0x80000001 { + _, _, c, d := cpuid(0x80000001) + if (c & (1 << 5)) != 0 { + rval |= LZCNT + rval |= POPCNT + } + if (d & (1 << 31)) != 0 { + rval |= AMD3DNOW + } + if (d & (1 << 30)) != 0 { + rval |= AMD3DNOWEXT + } + if (d & (1 << 23)) != 0 { + rval |= MMX + } + if (d & (1 << 22)) != 0 { + rval |= MMXEXT + } + if (c & (1 << 6)) != 0 { + rval |= SSE4A + } + if d&(1<<20) != 0 { + rval |= NX + } + if d&(1<<27) != 0 { + rval |= RDTSCP + } + + /* Allow for selectively disabling SSE2 functions on AMD processors + with SSE2 support but not SSE4a. This includes Athlon64, some + Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster + than SSE2 often enough to utilize this special-case flag. + AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case + so that SSE2 is used unless explicitly disabled by checking + AV_CPU_FLAG_SSE2SLOW. */ + if vendorID() != Intel && + rval&SSE2 != 0 && (c&0x00000040) == 0 { + rval |= SSE2SLOW + } + + /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be + * used unless the OS has AVX support. */ + if (rval & AVX) != 0 { + if (c & 0x00000800) != 0 { + rval |= XOP + } + if (c & 0x00010000) != 0 { + rval |= FMA4 + } + } + + if vendorID() == Intel { + family, model := familyModel() + if family == 6 && (model == 9 || model == 13 || model == 14) { + /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and + * 6/14 (core1 "yonah") theoretically support sse2, but it's + * usually slower than mmx. */ + if (rval & SSE2) != 0 { + rval |= SSE2SLOW + } + if (rval & SSE3) != 0 { + rval |= SSE3SLOW + } + } + /* The Atom processor has SSSE3 support, which is useful in many cases, + * but sometimes the SSSE3 version is slower than the SSE2 equivalent + * on the Atom, but is generally faster on other processors supporting + * SSSE3. This flag allows for selectively disabling certain SSSE3 + * functions on the Atom. */ + if family == 6 && model == 28 { + rval |= ATOM + } + } + } + return Flags(rval) +} + +func valAsString(values ...uint32) []byte { + r := make([]byte, 4*len(values)) + for i, v := range values { + dst := r[i*4:] + dst[0] = byte(v & 0xff) + dst[1] = byte((v >> 8) & 0xff) + dst[2] = byte((v >> 16) & 0xff) + dst[3] = byte((v >> 24) & 0xff) + switch { + case dst[0] == 0: + return r[:i*4] + case dst[1] == 0: + return r[:i*4+1] + case dst[2] == 0: + return r[:i*4+2] + case dst[3] == 0: + return r[:i*4+3] + } + } + return r +} diff --git a/vendor/github.com/klauspost/cpuid/cpuid_386.s b/vendor/github.com/klauspost/cpuid/cpuid_386.s new file mode 100644 index 0000000..4d73171 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_386.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORL CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+4(FP) + MOVL BX, ebx+8(FP) + MOVL CX, ecx+12(FP) + MOVL DX, edx+16(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func xgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+4(FP) + MOVL DX, edx+8(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/cpuid_amd64.s b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s new file mode 100644 index 0000000..3c1d60e --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s @@ -0,0 +1,42 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +//+build amd64,!gccgo + +// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuid(SB), 7, $0 + XORQ CX, CX + MOVL op+0(FP), AX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +TEXT ·asmCpuidex(SB), 7, $0 + MOVL op+0(FP), AX + MOVL op2+4(FP), CX + CPUID + MOVL AX, eax+8(FP) + MOVL BX, ebx+12(FP) + MOVL CX, ecx+16(FP) + MOVL DX, edx+20(FP) + RET + +// func asmXgetbv(index uint32) (eax, edx uint32) +TEXT ·asmXgetbv(SB), 7, $0 + MOVL index+0(FP), CX + BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV + MOVL AX, eax+8(FP) + MOVL DX, edx+12(FP) + RET + +// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) +TEXT ·asmRdtscpAsm(SB), 7, $0 + BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP + MOVL AX, eax+0(FP) + MOVL BX, ebx+4(FP) + MOVL CX, ecx+8(FP) + MOVL DX, edx+12(FP) + RET diff --git a/vendor/github.com/klauspost/cpuid/detect_intel.go b/vendor/github.com/klauspost/cpuid/detect_intel.go new file mode 100644 index 0000000..a5f04dd --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_intel.go @@ -0,0 +1,17 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build 386,!gccgo amd64,!gccgo + +package cpuid + +func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) +func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) +func asmXgetbv(index uint32) (eax, edx uint32) +func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) + +func initCPU() { + cpuid = asmCpuid + cpuidex = asmCpuidex + xgetbv = asmXgetbv + rdtscpAsm = asmRdtscpAsm +} diff --git a/vendor/github.com/klauspost/cpuid/detect_ref.go b/vendor/github.com/klauspost/cpuid/detect_ref.go new file mode 100644 index 0000000..909c5d9 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/detect_ref.go @@ -0,0 +1,23 @@ +// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. + +// +build !amd64,!386 gccgo + +package cpuid + +func initCPU() { + cpuid = func(op uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + cpuidex = func(op, op2 uint32) (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } + + xgetbv = func(index uint32) (eax, edx uint32) { + return 0, 0 + } + + rdtscpAsm = func() (eax, ebx, ecx, edx uint32) { + return 0, 0, 0, 0 + } +} diff --git a/vendor/github.com/klauspost/cpuid/generate.go b/vendor/github.com/klauspost/cpuid/generate.go new file mode 100644 index 0000000..90e7a98 --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/generate.go @@ -0,0 +1,4 @@ +package cpuid + +//go:generate go run private-gen.go +//go:generate gofmt -w ./private diff --git a/vendor/github.com/klauspost/cpuid/private-gen.go b/vendor/github.com/klauspost/cpuid/private-gen.go new file mode 100644 index 0000000..437333d --- /dev/null +++ b/vendor/github.com/klauspost/cpuid/private-gen.go @@ -0,0 +1,476 @@ +// +build ignore + +package main + +import ( + "bytes" + "fmt" + "go/ast" + "go/parser" + "go/printer" + "go/token" + "io" + "io/ioutil" + "log" + "os" + "reflect" + "strings" + "unicode" + "unicode/utf8" +) + +var inFiles = []string{"cpuid.go", "cpuid_test.go"} +var copyFiles = []string{"cpuid_amd64.s", "cpuid_386.s", "detect_ref.go", "detect_intel.go"} +var fileSet = token.NewFileSet() +var reWrites = []rewrite{ + initRewrite("CPUInfo -> cpuInfo"), + initRewrite("Vendor -> vendor"), + initRewrite("Flags -> flags"), + initRewrite("Detect -> detect"), + initRewrite("CPU -> cpu"), +} +var excludeNames = map[string]bool{"string": true, "join": true, "trim": true, + // cpuid_test.go + "t": true, "println": true, "logf": true, "log": true, "fatalf": true, "fatal": true, +} + +var excludePrefixes = []string{"test", "benchmark"} + +func main() { + Package := "private" + parserMode := parser.ParseComments + exported := make(map[string]rewrite) + for _, file := range inFiles { + in, err := os.Open(file) + if err != nil { + log.Fatalf("opening input", err) + } + + src, err := ioutil.ReadAll(in) + if err != nil { + log.Fatalf("reading input", err) + } + + astfile, err := parser.ParseFile(fileSet, file, src, parserMode) + if err != nil { + log.Fatalf("parsing input", err) + } + + for _, rw := range reWrites { + astfile = rw(astfile) + } + + // Inspect the AST and print all identifiers and literals. + var startDecl token.Pos + var endDecl token.Pos + ast.Inspect(astfile, func(n ast.Node) bool { + var s string + switch x := n.(type) { + case *ast.Ident: + if x.IsExported() { + t := strings.ToLower(x.Name) + for _, pre := range excludePrefixes { + if strings.HasPrefix(t, pre) { + return true + } + } + if excludeNames[t] != true { + //if x.Pos() > startDecl && x.Pos() < endDecl { + exported[x.Name] = initRewrite(x.Name + " -> " + t) + } + } + + case *ast.GenDecl: + if x.Tok == token.CONST && x.Lparen > 0 { + startDecl = x.Lparen + endDecl = x.Rparen + // fmt.Printf("Decl:%s -> %s\n", fileSet.Position(startDecl), fileSet.Position(endDecl)) + } + } + if s != "" { + fmt.Printf("%s:\t%s\n", fileSet.Position(n.Pos()), s) + } + return true + }) + + for _, rw := range exported { + astfile = rw(astfile) + } + + var buf bytes.Buffer + + printer.Fprint(&buf, fileSet, astfile) + + // Remove package documentation and insert information + s := buf.String() + ind := strings.Index(buf.String(), "\npackage cpuid") + s = s[ind:] + s = "// Generated, DO NOT EDIT,\n" + + "// but copy it to your own project and rename the package.\n" + + "// See more at http://github.com/klauspost/cpuid\n" + + s + + outputName := Package + string(os.PathSeparator) + file + + err = ioutil.WriteFile(outputName, []byte(s), 0644) + if err != nil { + log.Fatalf("writing output: %s", err) + } + log.Println("Generated", outputName) + } + + for _, file := range copyFiles { + dst := "" + if strings.HasPrefix(file, "cpuid") { + dst = Package + string(os.PathSeparator) + file + } else { + dst = Package + string(os.PathSeparator) + "cpuid_" + file + } + err := copyFile(file, dst) + if err != nil { + log.Fatalf("copying file: %s", err) + } + log.Println("Copied", dst) + } +} + +// CopyFile copies a file from src to dst. If src and dst files exist, and are +// the same, then return success. Copy the file contents from src to dst. +func copyFile(src, dst string) (err error) { + sfi, err := os.Stat(src) + if err != nil { + return + } + if !sfi.Mode().IsRegular() { + // cannot copy non-regular files (e.g., directories, + // symlinks, devices, etc.) + return fmt.Errorf("CopyFile: non-regular source file %s (%q)", sfi.Name(), sfi.Mode().String()) + } + dfi, err := os.Stat(dst) + if err != nil { + if !os.IsNotExist(err) { + return + } + } else { + if !(dfi.Mode().IsRegular()) { + return fmt.Errorf("CopyFile: non-regular destination file %s (%q)", dfi.Name(), dfi.Mode().String()) + } + if os.SameFile(sfi, dfi) { + return + } + } + err = copyFileContents(src, dst) + return +} + +// copyFileContents copies the contents of the file named src to the file named +// by dst. The file will be created if it does not already exist. If the +// destination file exists, all it's contents will be replaced by the contents +// of the source file. +func copyFileContents(src, dst string) (err error) { + in, err := os.Open(src) + if err != nil { + return + } + defer in.Close() + out, err := os.Create(dst) + if err != nil { + return + } + defer func() { + cerr := out.Close() + if err == nil { + err = cerr + } + }() + if _, err = io.Copy(out, in); err != nil { + return + } + err = out.Sync() + return +} + +type rewrite func(*ast.File) *ast.File + +// Mostly copied from gofmt +func initRewrite(rewriteRule string) rewrite { + f := strings.Split(rewriteRule, "->") + if len(f) != 2 { + fmt.Fprintf(os.Stderr, "rewrite rule must be of the form 'pattern -> replacement'\n") + os.Exit(2) + } + pattern := parseExpr(f[0], "pattern") + replace := parseExpr(f[1], "replacement") + return func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) } +} + +// parseExpr parses s as an expression. +// It might make sense to expand this to allow statement patterns, +// but there are problems with preserving formatting and also +// with what a wildcard for a statement looks like. +func parseExpr(s, what string) ast.Expr { + x, err := parser.ParseExpr(s) + if err != nil { + fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) + os.Exit(2) + } + return x +} + +// Keep this function for debugging. +/* +func dump(msg string, val reflect.Value) { + fmt.Printf("%s:\n", msg) + ast.Print(fileSet, val.Interface()) + fmt.Println() +} +*/ + +// rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file. +func rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File { + cmap := ast.NewCommentMap(fileSet, p, p.Comments) + m := make(map[string]reflect.Value) + pat := reflect.ValueOf(pattern) + repl := reflect.ValueOf(replace) + + var rewriteVal func(val reflect.Value) reflect.Value + rewriteVal = func(val reflect.Value) reflect.Value { + // don't bother if val is invalid to start with + if !val.IsValid() { + return reflect.Value{} + } + for k := range m { + delete(m, k) + } + val = apply(rewriteVal, val) + if match(m, pat, val) { + val = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos())) + } + return val + } + + r := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File) + r.Comments = cmap.Filter(r).Comments() // recreate comments list + return r +} + +// set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y. +func set(x, y reflect.Value) { + // don't bother if x cannot be set or y is invalid + if !x.CanSet() || !y.IsValid() { + return + } + defer func() { + if x := recover(); x != nil { + if s, ok := x.(string); ok && + (strings.Contains(s, "type mismatch") || strings.Contains(s, "not assignable")) { + // x cannot be set to y - ignore this rewrite + return + } + panic(x) + } + }() + x.Set(y) +} + +// Values/types for special cases. +var ( + objectPtrNil = reflect.ValueOf((*ast.Object)(nil)) + scopePtrNil = reflect.ValueOf((*ast.Scope)(nil)) + + identType = reflect.TypeOf((*ast.Ident)(nil)) + objectPtrType = reflect.TypeOf((*ast.Object)(nil)) + positionType = reflect.TypeOf(token.NoPos) + callExprType = reflect.TypeOf((*ast.CallExpr)(nil)) + scopePtrType = reflect.TypeOf((*ast.Scope)(nil)) +) + +// apply replaces each AST field x in val with f(x), returning val. +// To avoid extra conversions, f operates on the reflect.Value form. +func apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value { + if !val.IsValid() { + return reflect.Value{} + } + + // *ast.Objects introduce cycles and are likely incorrect after + // rewrite; don't follow them but replace with nil instead + if val.Type() == objectPtrType { + return objectPtrNil + } + + // similarly for scopes: they are likely incorrect after a rewrite; + // replace them with nil + if val.Type() == scopePtrType { + return scopePtrNil + } + + switch v := reflect.Indirect(val); v.Kind() { + case reflect.Slice: + for i := 0; i < v.Len(); i++ { + e := v.Index(i) + set(e, f(e)) + } + case reflect.Struct: + for i := 0; i < v.NumField(); i++ { + e := v.Field(i) + set(e, f(e)) + } + case reflect.Interface: + e := v.Elem() + set(v, f(e)) + } + return val +} + +func isWildcard(s string) bool { + rune, size := utf8.DecodeRuneInString(s) + return size == len(s) && unicode.IsLower(rune) +} + +// match returns true if pattern matches val, +// recording wildcard submatches in m. +// If m == nil, match checks whether pattern == val. +func match(m map[string]reflect.Value, pattern, val reflect.Value) bool { + // Wildcard matches any expression. If it appears multiple + // times in the pattern, it must match the same expression + // each time. + if m != nil && pattern.IsValid() && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) && val.IsValid() { + // wildcards only match valid (non-nil) expressions. + if _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() { + if old, ok := m[name]; ok { + return match(nil, old, val) + } + m[name] = val + return true + } + } + } + + // Otherwise, pattern and val must match recursively. + if !pattern.IsValid() || !val.IsValid() { + return !pattern.IsValid() && !val.IsValid() + } + if pattern.Type() != val.Type() { + return false + } + + // Special cases. + switch pattern.Type() { + case identType: + // For identifiers, only the names need to match + // (and none of the other *ast.Object information). + // This is a common case, handle it all here instead + // of recursing down any further via reflection. + p := pattern.Interface().(*ast.Ident) + v := val.Interface().(*ast.Ident) + return p == nil && v == nil || p != nil && v != nil && p.Name == v.Name + case objectPtrType, positionType: + // object pointers and token positions always match + return true + case callExprType: + // For calls, the Ellipsis fields (token.Position) must + // match since that is how f(x) and f(x...) are different. + // Check them here but fall through for the remaining fields. + p := pattern.Interface().(*ast.CallExpr) + v := val.Interface().(*ast.CallExpr) + if p.Ellipsis.IsValid() != v.Ellipsis.IsValid() { + return false + } + } + + p := reflect.Indirect(pattern) + v := reflect.Indirect(val) + if !p.IsValid() || !v.IsValid() { + return !p.IsValid() && !v.IsValid() + } + + switch p.Kind() { + case reflect.Slice: + if p.Len() != v.Len() { + return false + } + for i := 0; i < p.Len(); i++ { + if !match(m, p.Index(i), v.Index(i)) { + return false + } + } + return true + + case reflect.Struct: + for i := 0; i < p.NumField(); i++ { + if !match(m, p.Field(i), v.Field(i)) { + return false + } + } + return true + + case reflect.Interface: + return match(m, p.Elem(), v.Elem()) + } + + // Handle token integers, etc. + return p.Interface() == v.Interface() +} + +// subst returns a copy of pattern with values from m substituted in place +// of wildcards and pos used as the position of tokens from the pattern. +// if m == nil, subst returns a copy of pattern and doesn't change the line +// number information. +func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value { + if !pattern.IsValid() { + return reflect.Value{} + } + + // Wildcard gets replaced with map value. + if m != nil && pattern.Type() == identType { + name := pattern.Interface().(*ast.Ident).Name + if isWildcard(name) { + if old, ok := m[name]; ok { + return subst(nil, old, reflect.Value{}) + } + } + } + + if pos.IsValid() && pattern.Type() == positionType { + // use new position only if old position was valid in the first place + if old := pattern.Interface().(token.Pos); !old.IsValid() { + return pattern + } + return pos + } + + // Otherwise copy. + switch p := pattern; p.Kind() { + case reflect.Slice: + v := reflect.MakeSlice(p.Type(), p.Len(), p.Len()) + for i := 0; i < p.Len(); i++ { + v.Index(i).Set(subst(m, p.Index(i), pos)) + } + return v + + case reflect.Struct: + v := reflect.New(p.Type()).Elem() + for i := 0; i < p.NumField(); i++ { + v.Field(i).Set(subst(m, p.Field(i), pos)) + } + return v + + case reflect.Ptr: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos).Addr()) + } + return v + + case reflect.Interface: + v := reflect.New(p.Type()).Elem() + if elem := p.Elem(); elem.IsValid() { + v.Set(subst(m, elem, pos)) + } + return v + } + + return pattern +} diff --git a/vendor/github.com/klauspost/reedsolomon/.gitignore b/vendor/github.com/klauspost/reedsolomon/.gitignore new file mode 100644 index 0000000..59610b5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.gitignore @@ -0,0 +1,26 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof + +.idea \ No newline at end of file diff --git a/vendor/github.com/klauspost/reedsolomon/.travis.yml b/vendor/github.com/klauspost/reedsolomon/.travis.yml new file mode 100644 index 0000000..10d09e8 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/.travis.yml @@ -0,0 +1,32 @@ +language: go + +sudo: false + +os: + - linux + - osx + +go: + - 1.11.x + - 1.12.x + - 1.13.x + - master + +install: + - go get ./... + +script: + - go vet ./... + - go test -v -cpu=1,2,4 . + - go test -v -cpu=1,2,4 -short -race . + - go test -tags=noasm -v -cpu=1,2,4 -short -race . + - go build examples/simple-decoder.go + - go build examples/simple-encoder.go + - go build examples/stream-decoder.go + - go build examples/stream-encoder.go + - diff <(gofmt -d .) <("") + +matrix: + allow_failures: + - go: 'master' + fast_finish: true diff --git a/vendor/github.com/klauspost/reedsolomon/LICENSE b/vendor/github.com/klauspost/reedsolomon/LICENSE new file mode 100644 index 0000000..a947e16 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/LICENSE @@ -0,0 +1,23 @@ +The MIT License (MIT) + +Copyright (c) 2015 Klaus Post +Copyright (c) 2015 Backblaze + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/klauspost/reedsolomon/README.md b/vendor/github.com/klauspost/reedsolomon/README.md new file mode 100644 index 0000000..28b3173 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/README.md @@ -0,0 +1,321 @@ +# Reed-Solomon +[![GoDoc][1]][2] [![Build Status][3]][4] + +[1]: https://godoc.org/github.com/klauspost/reedsolomon?status.svg +[2]: https://godoc.org/github.com/klauspost/reedsolomon +[3]: https://travis-ci.org/klauspost/reedsolomon.svg?branch=master +[4]: https://travis-ci.org/klauspost/reedsolomon + +Reed-Solomon Erasure Coding in Go, with speeds exceeding 1GB/s/cpu core implemented in pure Go. + +This is a Go port of the [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) library released by [Backblaze](http://backblaze.com), with some additional optimizations. + +For an introduction on erasure coding, see the post on the [Backblaze blog](https://www.backblaze.com/blog/reed-solomon/). + +Package home: https://github.com/klauspost/reedsolomon + +Godoc: https://godoc.org/github.com/klauspost/reedsolomon + +# Installation +To get the package use the standard: +```bash +go get -u github.com/klauspost/reedsolomon +``` + +# Changes + +## March 6, 2019 + +The pure Go implementation is about 30% faster. Minor tweaks to assembler implementations. + +## February 8, 2019 + +AVX512 accelerated version added for Intel Skylake CPUs. This can give up to a 4x speed improvement as compared to AVX2. See [here](https://github.com/klauspost/reedsolomon#performance-on-avx512) for more details. + +## December 18, 2018 + +Assembly code for ppc64le has been contributed, this boosts performance by about 10x on this platform. + +## November 18, 2017 + +Added [WithAutoGoroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithAutoGoroutines) which will attempt to calculate the optimal number of goroutines to use based on your expected shard size and detected CPU. + +## October 1, 2017 + +* [Cauchy Matrix](https://godoc.org/github.com/klauspost/reedsolomon#WithCauchyMatrix) is now an option. Thanks to [templexxx](https://github.com/templexxx) for the basis of this. +* Default maximum number of [goroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithMaxGoroutines) has been increased for better multi-core scaling. +* After several requests the Reconstruct and ReconstructData now slices of zero length but sufficient capacity to be used instead of allocating new memory. + +## August 26, 2017 + +* The [`Encoder()`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) now contains an `Update` function contributed by [chenzhongtao](https://github.com/chenzhongtao). +* [Frank Wessels](https://github.com/fwessels) kindly contributed ARM 64 bit assembly, which gives a huge performance boost on this platform. + +## July 20, 2017 + +`ReconstructData` added to [`Encoder`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) interface. This can cause compatibility issues if you implement your own Encoder. A simple workaround can be added: +```Go +func (e *YourEnc) ReconstructData(shards [][]byte) error { + return ReconstructData(shards) +} +``` + +You can of course also do your own implementation. The [`StreamEncoder`](https://godoc.org/github.com/klauspost/reedsolomon#StreamEncoder) handles this without modifying the interface. This is a good lesson on why returning interfaces is not a good design. + +# Usage + +This section assumes you know the basics of Reed-Solomon encoding. A good start is this [Backblaze blog post](https://www.backblaze.com/blog/reed-solomon/). + +This package performs the calculation of the parity sets. The usage is therefore relatively simple. + +First of all, you need to choose your distribution of data and parity shards. A 'good' distribution is very subjective, and will depend a lot on your usage scenario. A good starting point is above 5 and below 257 data shards (the maximum supported number), and the number of parity shards to be 2 or above, and below the number of data shards. + +To create an encoder with 10 data shards (where your data goes) and 3 parity shards (calculated): +```Go + enc, err := reedsolomon.New(10, 3) +``` +This encoder will work for all parity sets with this distribution of data and parity shards. The error will only be set if you specify 0 or negative values in any of the parameters, or if you specify more than 256 data shards. + +The you send and receive data is a simple slice of byte slices; `[][]byte`. In the example above, the top slice must have a length of 13. +```Go + data := make([][]byte, 13) +``` +You should then fill the 10 first slices with *equally sized* data, and create parity shards that will be populated with parity data. In this case we create the data in memory, but you could for instance also use [mmap](https://github.com/edsrzf/mmap-go) to map files. + +```Go + // Create all shards, size them at 50000 each + for i := range input { + data[i] := make([]byte, 50000) + } + + + // Fill some data into the data shards + for i, in := range data[:10] { + for j:= range in { + in[j] = byte((i+j)&0xff) + } + } +``` + +To populate the parity shards, you simply call `Encode()` with your data. +```Go + err = enc.Encode(data) +``` +The only cases where you should get an error is, if the data shards aren't of equal size. The last 3 shards now contain parity data. You can verify this by calling `Verify()`: + +```Go + ok, err = enc.Verify(data) +``` + +The final (and important) part is to be able to reconstruct missing shards. For this to work, you need to know which parts of your data is missing. The encoder *does not know which parts are invalid*, so if data corruption is a likely scenario, you need to implement a hash check for each shard. If a byte has changed in your set, and you don't know which it is, there is no way to reconstruct the data set. + +To indicate missing data, you set the shard to nil before calling `Reconstruct()`: + +```Go + // Delete two data shards + data[3] = nil + data[7] = nil + + // Reconstruct the missing shards + err := enc.Reconstruct(data) +``` +The missing data and parity shards will be recreated. If more than 3 shards are missing, the reconstruction will fail. + +If you are only interested in the data shards (for reading purposes) you can call `ReconstructData()`: + +```Go + // Delete two data shards + data[3] = nil + data[7] = nil + + // Reconstruct just the missing data shards + err := enc.ReconstructData(data) +``` + +So to sum up reconstruction: +* The number of data/parity shards must match the numbers used for encoding. +* The order of shards must be the same as used when encoding. +* You may only supply data you know is valid. +* Invalid shards should be set to nil. + +For complete examples of an encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + +# Splitting/Joining Data + +You might have a large slice of data. To help you split this, there are some helper functions that can split and join a single byte slice. + +```Go + bigfile, _ := ioutil.Readfile("myfile.data") + + // Split the file + split, err := enc.Split(bigfile) +``` +This will split the file into the number of data shards set when creating the encoder and create empty parity shards. + +An important thing to note is that you have to *keep track of the exact input size*. If the size of the input isn't divisible by the number of data shards, extra zeros will be inserted in the last shard. + +To join a data set, use the `Join()` function, which will join the shards and write it to the `io.Writer` you supply: +```Go + // Join a data set and write it to io.Discard. + err = enc.Join(io.Discard, data, len(bigfile)) +``` + +# Streaming/Merging + +It might seem like a limitation that all data should be in memory, but an important property is that *as long as the number of data/parity shards are the same, you can merge/split data sets*, and they will remain valid as a separate set. + +```Go + // Split the data set of 50000 elements into two of 25000 + splitA := make([][]byte, 13) + splitB := make([][]byte, 13) + + // Merge into a 100000 element set + merged := make([][]byte, 13) + + for i := range data { + splitA[i] = data[i][:25000] + splitB[i] = data[i][25000:] + + // Concatenate it to itself + merged[i] = append(make([]byte, 0, len(data[i])*2), data[i]...) + merged[i] = append(merged[i], data[i]...) + } + + // Each part should still verify as ok. + ok, err := enc.Verify(splitA) + if ok && err == nil { + log.Println("splitA ok") + } + + ok, err = enc.Verify(splitB) + if ok && err == nil { + log.Println("splitB ok") + } + + ok, err = enc.Verify(merge) + if ok && err == nil { + log.Println("merge ok") + } +``` + +This means that if you have a data set that may not fit into memory, you can split processing into smaller blocks. For the best throughput, don't use too small blocks. + +This also means that you can divide big input up into smaller blocks, and do reconstruction on parts of your data. This doesn't give the same flexibility of a higher number of data shards, but it will be much more performant. + +# Streaming API + +There has been added support for a streaming API, to help perform fully streaming operations, which enables you to do the same operations, but on streams. To use the stream API, use [`NewStream`](https://godoc.org/github.com/klauspost/reedsolomon#NewStream) function to create the encoding/decoding interfaces. You can use [`NewStreamC`](https://godoc.org/github.com/klauspost/reedsolomon#NewStreamC) to ready an interface that reads/writes concurrently from the streams. + +Input is delivered as `[]io.Reader`, output as `[]io.Writer`, and functionality corresponds to the in-memory API. Each stream must supply the same amount of data, similar to how each slice must be similar size with the in-memory API. +If an error occurs in relation to a stream, a [`StreamReadError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamReadError) or [`StreamWriteError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamWriteError) will help you determine which stream was the offender. + +There is no buffering or timeouts/retry specified. If you want to add that, you need to add it to the Reader/Writer. + +For complete examples of a streaming encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). + +# Advanced Options + +You can modify internal options which affects how jobs are split between and processed by goroutines. + +To create options, use the WithXXX functions. You can supply options to `New`, `NewStream` and `NewStreamC`. If no Options are supplied, default options are used. + +Example of how to supply options: + + ```Go + enc, err := reedsolomon.New(10, 3, WithMaxGoroutines(25)) + ``` + + +# Performance +Performance depends mainly on the number of parity shards. In rough terms, doubling the number of parity shards will double the encoding time. + +Here are the throughput numbers with some different selections of data and parity shards. For reference each shard is 1MB random data, and 2 CPU cores are used for encoding. + +| Data | Parity | Parity | MB/s | SSSE3 MB/s | SSSE3 Speed | Rel. Speed | +|------|--------|--------|--------|-------------|-------------|------------| +| 5 | 2 | 40% | 576,11 | 2599,2 | 451% | 100,00% | +| 10 | 2 | 20% | 587,73 | 3100,28 | 528% | 102,02% | +| 10 | 4 | 40% | 298,38 | 2470,97 | 828% | 51,79% | +| 50 | 20 | 40% | 59,81 | 713,28 | 1193% | 10,38% | + +If `runtime.GOMAXPROCS()` is set to a value higher than 1, the encoder will use multiple goroutines to perform the calculations in `Verify`, `Encode` and `Reconstruct`. + +Example of performance scaling on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz - 4 physical cores, 8 logical cores. The example uses 10 blocks with 16MB data each and 4 parity blocks. + +| Threads | MB/s | Speed | +|---------|---------|-------| +| 1 | 1355,11 | 100% | +| 2 | 2339,78 | 172% | +| 4 | 3179,33 | 235% | +| 8 | 4346,18 | 321% | + +Benchmarking `Reconstruct()` followed by a `Verify()` (=`all`) versus just calling `ReconstructData()` (=`data`) gives the following result: +``` +benchmark all MB/s data MB/s speedup +BenchmarkReconstruct10x2x10000-8 2011.67 10530.10 5.23x +BenchmarkReconstruct50x5x50000-8 4585.41 14301.60 3.12x +BenchmarkReconstruct10x2x1M-8 8081.15 28216.41 3.49x +BenchmarkReconstruct5x2x1M-8 5780.07 28015.37 4.85x +BenchmarkReconstruct10x4x1M-8 4352.56 14367.61 3.30x +BenchmarkReconstruct50x20x1M-8 1364.35 4189.79 3.07x +BenchmarkReconstruct10x4x16M-8 1484.35 5779.53 3.89x +``` + +# Performance on AVX512 + +The performance on AVX512 has been accelerated for Intel CPUs. This gives speedups on a per-core basis of up to 4x compared to AVX2 as can be seen in the following table: + +``` +$ benchcmp avx2.txt avx512.txt +benchmark AVX2 MB/s AVX512 MB/s speedup +BenchmarkEncode8x8x1M-72 1681.35 4125.64 2.45x +BenchmarkEncode8x4x8M-72 1529.36 5507.97 3.60x +BenchmarkEncode8x8x8M-72 791.16 2952.29 3.73x +BenchmarkEncode8x8x32M-72 573.26 2168.61 3.78x +BenchmarkEncode12x4x12M-72 1234.41 4912.37 3.98x +BenchmarkEncode16x4x16M-72 1189.59 5138.01 4.32x +BenchmarkEncode24x8x24M-72 690.68 2583.70 3.74x +BenchmarkEncode24x8x48M-72 674.20 2643.31 3.92x +``` + +This speedup has been achieved by computing multiple parity blocks in parallel as opposed to one after the other. In doing so it is possible to minimize the memory bandwidth required for loading all data shards. At the same time the calculations are performed in the 512-bit wide ZMM registers and the surplus of ZMM registers (32 in total) is used to keep more data around (most notably the matrix coefficients). + +# Performance on ARM64 NEON + +By exploiting NEON instructions the performance for ARM has been accelerated. Below are the performance numbers for a single core on an ARM Cortex-A53 CPU @ 1.2GHz (Debian 8.0 Jessie running Go: 1.7.4): + +| Data | Parity | Parity | ARM64 Go MB/s | ARM64 NEON MB/s | NEON Speed | +|------|--------|--------|--------------:|----------------:|-----------:| +| 5 | 2 | 40% | 189 | 1304 | 588% | +| 10 | 2 | 20% | 188 | 1738 | 925% | +| 10 | 4 | 40% | 96 | 839 | 877% | + +# Performance on ppc64le + +The performance for ppc64le has been accelerated. This gives roughly a 10x performance improvement on this architecture as can been seen below: + +``` +benchmark old MB/s new MB/s speedup +BenchmarkGalois128K-160 948.87 8878.85 9.36x +BenchmarkGalois1M-160 968.85 9041.92 9.33x +BenchmarkGaloisXor128K-160 862.02 7905.00 9.17x +BenchmarkGaloisXor1M-160 784.60 6296.65 8.03x +``` + +# asm2plan9s + +[asm2plan9s](https://github.com/fwessels/asm2plan9s) is used for assembling the AVX2 instructions into their BYTE/WORD/LONG equivalents. + +# Links +* [Backblaze Open Sources Reed-Solomon Erasure Coding Source Code](https://www.backblaze.com/blog/reed-solomon/). +* [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon). Compatible java library by Backblaze. +* [ocaml-reed-solomon-erasure](https://gitlab.com/darrenldl/ocaml-reed-solomon-erasure). Compatible OCaml implementation. +* [reedsolomon-c](https://github.com/jannson/reedsolomon-c). C version, compatible with output from this package. +* [Reed-Solomon Erasure Coding in Haskell](https://github.com/NicolasT/reedsolomon). Haskell port of the package with similar performance. +* [reed-solomon-erasure](https://github.com/darrenldl/reed-solomon-erasure). Compatible Rust implementation. +* [go-erasure](https://github.com/somethingnew2-0/go-erasure). A similar library using cgo, slower in my tests. +* [Screaming Fast Galois Field Arithmetic](http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf). Basis for SSE3 optimizations. + +# License + +This code, as the original [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/reedsolomon/appveyor.yml b/vendor/github.com/klauspost/reedsolomon/appveyor.yml new file mode 100644 index 0000000..9bb067f --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/appveyor.yml @@ -0,0 +1,20 @@ +os: Visual Studio 2015 + +platform: x64 + +clone_folder: c:\gopath\src\github.com\klauspost\reedsolomon + +# environment variables +environment: + GOPATH: c:\gopath + +install: + - echo %PATH% + - echo %GOPATH% + - go version + - go env + - go get -d ./... + +build_script: + - go test -v -cpu=2 ./... + - go test -cpu=1,2,4 -short -race ./... diff --git a/vendor/github.com/klauspost/reedsolomon/galois.go b/vendor/github.com/klauspost/reedsolomon/galois.go new file mode 100644 index 0000000..7a855fc --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois.go @@ -0,0 +1,905 @@ +/** + * 8-bit Galois Field + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. All rights reserved. + */ + +package reedsolomon + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +var logTable = [fieldSize]byte{ + 0, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +/** + * Inverse of the logarithm table. Maps integer logarithms + * to members of the field. There is no entry for 255 + * because the highest log is 254. + * + * This table was generated by `go run gentables.go` + */ +var expTable = []byte{0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e} + +func galAdd(a, b byte) byte { + return a ^ b +} + +func galSub(a, b byte) byte { + return a ^ b +} + +// Table from https://github.com/templexxx/reedsolomon +var invTable = [256]byte{0x0, 0x1, 0x8e, 0xf4, 0x47, 0xa7, 0x7a, 0xba, 0xad, 0x9d, 0xdd, 0x98, 0x3d, 0xaa, 0x5d, 0x96, 0xd8, 0x72, 0xc0, 0x58, 0xe0, 0x3e, 0x4c, 0x66, 0x90, 0xde, 0x55, 0x80, 0xa0, 0x83, 0x4b, 0x2a, 0x6c, 0xed, 0x39, 0x51, 0x60, 0x56, 0x2c, 0x8a, 0x70, 0xd0, 0x1f, 0x4a, 0x26, 0x8b, 0x33, 0x6e, 0x48, 0x89, 0x6f, 0x2e, 0xa4, 0xc3, 0x40, 0x5e, 0x50, 0x22, 0xcf, 0xa9, 0xab, 0xc, 0x15, 0xe1, 0x36, 0x5f, 0xf8, 0xd5, 0x92, 0x4e, 0xa6, 0x4, 0x30, 0x88, 0x2b, 0x1e, 0x16, 0x67, 0x45, 0x93, 0x38, 0x23, 0x68, 0x8c, 0x81, 0x1a, 0x25, 0x61, 0x13, 0xc1, 0xcb, 0x63, 0x97, 0xe, 0x37, 0x41, 0x24, 0x57, 0xca, 0x5b, 0xb9, 0xc4, 0x17, 0x4d, 0x52, 0x8d, 0xef, 0xb3, 0x20, 0xec, 0x2f, 0x32, 0x28, 0xd1, 0x11, 0xd9, 0xe9, 0xfb, 0xda, 0x79, 0xdb, 0x77, 0x6, 0xbb, 0x84, 0xcd, 0xfe, 0xfc, 0x1b, 0x54, 0xa1, 0x1d, 0x7c, 0xcc, 0xe4, 0xb0, 0x49, 0x31, 0x27, 0x2d, 0x53, 0x69, 0x2, 0xf5, 0x18, 0xdf, 0x44, 0x4f, 0x9b, 0xbc, 0xf, 0x5c, 0xb, 0xdc, 0xbd, 0x94, 0xac, 0x9, 0xc7, 0xa2, 0x1c, 0x82, 0x9f, 0xc6, 0x34, 0xc2, 0x46, 0x5, 0xce, 0x3b, 0xd, 0x3c, 0x9c, 0x8, 0xbe, 0xb7, 0x87, 0xe5, 0xee, 0x6b, 0xeb, 0xf2, 0xbf, 0xaf, 0xc5, 0x64, 0x7, 0x7b, 0x95, 0x9a, 0xae, 0xb6, 0x12, 0x59, 0xa5, 0x35, 0x65, 0xb8, 0xa3, 0x9e, 0xd2, 0xf7, 0x62, 0x5a, 0x85, 0x7d, 0xa8, 0x3a, 0x29, 0x71, 0xc8, 0xf6, 0xf9, 0x43, 0xd7, 0xd6, 0x10, 0x73, 0x76, 0x78, 0x99, 0xa, 0x19, 0x91, 0x14, 0x3f, 0xe6, 0xf0, 0x86, 0xb1, 0xe2, 0xf1, 0xfa, 0x74, 0xf3, 0xb4, 0x6d, 0x21, 0xb2, 0x6a, 0xe3, 0xe7, 0xb5, 0xea, 0x3, 0x8f, 0xd3, 0xc9, 0x42, 0xd4, 0xe8, 0x75, 0x7f, 0xff, 0x7e, 0xfd} + +var mulTable = [256][256]uint8{[256]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2}} + +var mulTableLow = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}} +var mulTableHigh = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, + {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, + {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, + {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, + {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, + {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, + {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, + {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, + {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, + {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, + {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, + {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, + {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, + {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, + {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, + {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, + {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, + {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, + {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, + {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, + {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, + {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, + {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, + {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, + {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, + {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, + {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, + {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, + {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, + {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, + {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, + {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, + {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, + {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, + {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, + {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, + {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, + {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, + {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, + {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, + {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, + {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, + {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, + {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, + {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, + {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, + {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, + {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, + {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, + {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, + {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, + {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, + {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, + {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, + {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, + {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, + {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, + {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, + {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, + {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, + {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, + {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, + {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, + {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, + {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, + {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, + {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, + {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, + {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, + {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, + {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, + {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, + {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, + {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, + {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, + {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, + {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, + {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, + {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, + {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, + {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, + {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, + {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, + {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, + {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, + {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, + {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, + {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, + {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, + {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, + {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, + {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, + {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, + {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, + {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, + {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, + {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, + {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, + {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, + {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, + {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, + {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, + {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, + {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, + {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, + {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, + {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, + {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, + {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, + {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, + {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, + {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, + {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, + {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, + {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, + {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, + {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, + {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, + {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, + {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, + {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, + {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, + {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, + {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, + {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, + {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, + {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, + {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, + {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, + {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, + {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, + {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, + {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, + {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, + {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, + {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, + {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, + {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, + {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, + {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, + {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, + {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, + {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, + {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, + {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, + {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, + {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, + {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, + {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, + {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, + {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, + {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, + {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, + {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, + {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, + {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, + {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, + {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, + {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, + {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, + {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, + {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, + {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, + {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, + {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, + {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, + {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, + {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, + {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, + {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, + {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, + {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, + {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, + {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, + {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, + {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, + {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, + {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, + {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, + {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}, + {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, + {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, + {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, + {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, + {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, + {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, + {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, + {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, + {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, + {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, + {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, + {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, + {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, + {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, + {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, + {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, + {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, + {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, + {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, + {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, + {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, + {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, + {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, + {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, + {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, + {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, + {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, + {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, + {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, + {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, + {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, + {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, + {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, + {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, + {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, + {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, + {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, + {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, + {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, + {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, + {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, + {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, + {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, + {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, + {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, + {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, + {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, + {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, + {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, + {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, + {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, + {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, + {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, + {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, + {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, + {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, + {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, + {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, + {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, + {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, + {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, + {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, + {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, + {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, + {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, + {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, + {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, + {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, + {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, + {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, + {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, + {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, + {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, + {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, + {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, + {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}} + +// galMultiply multiplies to elements of the field. +// Uses lookup table ~40% faster +func galMultiply(a, b byte) byte { + return mulTable[a][b] +} + +// amd64 indicates whether we are on an amd64 platform. +var amd64 bool + +// Original function: +/* +// galMultiply multiplies to elements of the field. +func galMultiply(a, b byte) byte { + if a == 0 || b == 0 { + return 0 + } + logA := int(logTable[a]) + logB := int(logTable[b]) + return expTable[logA+logB] +} +*/ + +// galDivide is inverse of galMultiply. +func galDivide(a, b byte) byte { + if a == 0 { + return 0 + } + if b == 0 { + panic("Argument 'divisor' is 0") + } + logA := int(logTable[a]) + logB := int(logTable[b]) + logResult := logA - logB + if logResult < 0 { + logResult += 255 + } + return expTable[logResult] +} + +// Computes a**n. +// +// The result will be the same as multiplying a times itself n times. +func galExp(a byte, n int) byte { + if n == 0 { + return 1 + } + if a == 0 { + return 0 + } + + logA := logTable[a] + logResult := int(logA) * n + for logResult >= 255 { + logResult -= 255 + } + return expTable[logResult] +} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go new file mode 100644 index 0000000..4c1dc75 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go @@ -0,0 +1,188 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2019, Minio, Inc. + +package reedsolomon + +//go:noescape +func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) + +//go:noescape +func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) + +func init() { + amd64 = true +} + +const ( + dimIn = 8 // Number of input rows processed simultaneously + dimOut82 = 2 // Number of output rows processed simultaneously for x2 routine + dimOut84 = 4 // Number of output rows processed simultaneously for x4 routine + matrixSize82 = (16 + 16) * dimIn * dimOut82 // Dimension of slice of matrix coefficient passed into x2 routine + matrixSize84 = (16 + 16) * dimIn * dimOut84 // Dimension of slice of matrix coefficient passed into x4 routine +) + +// Construct block of matrix coefficients for 2 outputs rows in parallel +func setupMatrix82(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize82]byte) { + offset := 0 + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { + if c < len(matrixRows[iRow]) { + coeff := matrixRows[iRow][c] + copy(matrix[offset*32:], mulTableLow[coeff][:]) + copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) + } else { + // coefficients not used for this input shard (so null out) + v := matrix[offset*32 : offset*32+32] + for i := range v { + v[i] = 0 + } + } + offset += dimIn + if offset >= dimIn*dimOut82 { + offset -= dimIn*dimOut82 - 1 + } + } + } +} + +// Construct block of matrix coefficients for 4 outputs rows in parallel +func setupMatrix84(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize84]byte) { + offset := 0 + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { + if c < len(matrixRows[iRow]) { + coeff := matrixRows[iRow][c] + copy(matrix[offset*32:], mulTableLow[coeff][:]) + copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) + } else { + // coefficients not used for this input shard (so null out) + v := matrix[offset*32 : offset*32+32] + for i := range v { + v[i] = 0 + } + } + offset += dimIn + if offset >= dimIn*dimOut84 { + offset -= dimIn*dimOut84 - 1 + } + } + } +} + +// Invoke AVX512 routine for 2 output rows in parallel +func galMulAVX512Parallel82(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { + done := len(in[0]) + if done == 0 { + return + } + + inputEnd := inputOffset + dimIn + if inputEnd > len(in) { + inputEnd = len(in) + } + outputEnd := outputOffset + dimOut82 + if outputEnd > len(out) { + outputEnd = len(out) + } + + matrix82 := [matrixSize82]byte{} + setupMatrix82(matrixRows, inputOffset, outputOffset, &matrix82) + addTo := inputOffset != 0 // Except for the first input column, add to previous results + _galMulAVX512Parallel82(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix82, addTo) + + done = (done >> 6) << 6 + if len(in[0])-done == 0 { + return + } + + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { + if c < len(matrixRows[iRow]) { + mt := mulTable[matrixRows[iRow][c]][:256] + for i := done; i < len(in[0]); i++ { + if c == 0 { // only set value for first input column + out[iRow][i] = mt[in[c][i]] + } else { // and add for all others + out[iRow][i] ^= mt[in[c][i]] + } + } + } + } + } +} + +// Invoke AVX512 routine for 4 output rows in parallel +func galMulAVX512Parallel84(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { + done := len(in[0]) + if done == 0 { + return + } + + inputEnd := inputOffset + dimIn + if inputEnd > len(in) { + inputEnd = len(in) + } + outputEnd := outputOffset + dimOut84 + if outputEnd > len(out) { + outputEnd = len(out) + } + + matrix84 := [matrixSize84]byte{} + setupMatrix84(matrixRows, inputOffset, outputOffset, &matrix84) + addTo := inputOffset != 0 // Except for the first input column, add to previous results + _galMulAVX512Parallel84(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix84, addTo) + + done = (done >> 6) << 6 + if len(in[0])-done == 0 { + return + } + + for c := inputOffset; c < inputOffset+dimIn; c++ { + for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { + if c < len(matrixRows[iRow]) { + mt := mulTable[matrixRows[iRow][c]][:256] + for i := done; i < len(in[0]); i++ { + if c == 0 { // only set value for first input column + out[iRow][i] = mt[in[c][i]] + } else { // and add for all others + out[iRow][i] ^= mt[in[c][i]] + } + } + } + } + } +} + +// Perform the same as codeSomeShards, but taking advantage of +// AVX512 parallelism for up to 4x faster execution as compared to AVX2 +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + outputRow := 0 + // First process (multiple) batches of 4 output rows in parallel + for ; outputRow+dimOut84 <= len(outputs); outputRow += dimOut84 { + for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { + galMulAVX512Parallel84(inputs, outputs, matrixRows, inputRow, outputRow) + } + } + // Then process a (single) batch of 2 output rows in parallel + if outputRow+dimOut82 <= len(outputs) { + // fmt.Println(outputRow, len(outputs)) + for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { + galMulAVX512Parallel82(inputs, outputs, matrixRows, inputRow, outputRow) + } + outputRow += dimOut82 + } + // Lastly, we may have a single output row left (for uneven parity) + if outputRow < len(outputs) { + for c := 0; c < r.DataShards; c++ { + if c == 0 { + galMulSlice(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) + } else { + galMulSliceXor(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) + } + } + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s new file mode 100644 index 0000000..ce611cc --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s @@ -0,0 +1,590 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2019, Minio, Inc. + +// +// Process 2 output rows in parallel from a total of 8 input rows +// +// func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) +TEXT ·_galMulAVX512Parallel82(SB), 7, $0 + MOVQ in+0(FP), SI // + MOVQ 8(SI), R9 // R9: len(in) + SHRQ $6, R9 // len(in) / 64 + TESTQ R9, R9 + JZ done_avx512_parallel82 + + MOVQ matrix+48(FP), SI + LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] + LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] + LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] + LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] + LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] + LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] + LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] + LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] + + MOVQ $15, BX + MOVQ BX, X5 + LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 + + MOVB addTo+56(FP), AX + LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 + WORD $0xf749; BYTE $0xe0 // mul r8 + LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), AX // number of inputs + XORQ R11, R11 + MOVQ out+24(FP), DX + MOVQ 24(DX), CX // CX: &out[1][0] + MOVQ (DX), DX // DX: &out[0][0] + +loopback_avx512_parallel82: + LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] + LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] + + MOVQ (SI), BX // BX: &in[0][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 + LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 + LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $1 + JE skip_avx512_parallel82 + + MOVQ 24(SI), BX // BX: &in[1][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa + LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa + LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $2 + JE skip_avx512_parallel82 + + MOVQ 48(SI), BX // BX: &in[2][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 + LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 + LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $3 + JE skip_avx512_parallel82 + + MOVQ 72(SI), BX // BX: &in[3][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa + LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa + LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $4 + JE skip_avx512_parallel82 + + MOVQ 96(SI), BX // BX: &in[4][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 + LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 + LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $5 + JE skip_avx512_parallel82 + + MOVQ 120(SI), BX // BX: &in[5][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa + LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa + LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $6 + JE skip_avx512_parallel82 + + MOVQ 144(SI), BX // BX: &in[6][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 + LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 + LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + CMPQ AX, $7 + JE skip_avx512_parallel82 + + MOVQ 168(SI), BX // BX: &in[7][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa + LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa + LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + +skip_avx512_parallel82: + LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 + LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 + + ADDQ $64, R11 // in4+=64 + + ADDQ $64, DX // out+=64 + ADDQ $64, CX // out2+=64 + + SUBQ $1, R9 + JNZ loopback_avx512_parallel82 + +done_avx512_parallel82: + VZEROUPPER + RET + +// +// Process 4 output rows in parallel from a total of 8 input rows +// +// func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) +TEXT ·_galMulAVX512Parallel84(SB), 7, $0 + MOVQ in+0(FP), SI // + MOVQ 8(SI), R9 // R9: len(in) + SHRQ $6, R9 // len(in) / 64 + TESTQ R9, R9 + JZ done_avx512_parallel84 + + MOVQ matrix+48(FP), SI + LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] + LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] + LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] + LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] + LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] + LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] + LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] + LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] + LONG $0x48fe6162; WORD $0x466f; BYTE $0x08 // VMOVDQU64 ZMM24, 0x200[rsi] + LONG $0x48fe6162; WORD $0x4e6f; BYTE $0x09 // VMOVDQU64 ZMM25, 0x240[rsi] + LONG $0x48fe6162; WORD $0x566f; BYTE $0x0a // VMOVDQU64 ZMM26, 0x280[rsi] + LONG $0x48fe6162; WORD $0x5e6f; BYTE $0x0b // VMOVDQU64 ZMM27, 0x2c0[rsi] + LONG $0x48fe6162; WORD $0x666f; BYTE $0x0c // VMOVDQU64 ZMM28, 0x300[rsi] + LONG $0x48fe6162; WORD $0x6e6f; BYTE $0x0d // VMOVDQU64 ZMM29, 0x340[rsi] + LONG $0x48fe6162; WORD $0x766f; BYTE $0x0e // VMOVDQU64 ZMM30, 0x380[rsi] + LONG $0x48fe6162; WORD $0x7e6f; BYTE $0x0f // VMOVDQU64 ZMM31, 0x3c0[rsi] + + MOVQ $15, BX + MOVQ BX, X5 + LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 + + MOVB addTo+56(FP), AX + LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 + WORD $0xf749; BYTE $0xe0 // mul r8 + LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), AX // number of inputs + XORQ R11, R11 + MOVQ out+24(FP), DX + MOVQ 24(DX), CX // CX: &out[1][0] + MOVQ 48(DX), R10 // R10: &out[2][0] + MOVQ 72(DX), R12 // R12: &out[3][0] + MOVQ (DX), DX // DX: &out[0][0] + +loopback_avx512_parallel84: + LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] + LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] + LONG $0xc9fed162; WORD $0x326f // VMOVDQU64 ZMM6{k1}{z}, [r10] + LONG $0xc9fed162; WORD $0x3c6f; BYTE $0x24 // VMOVDQU64 ZMM7{k1}{z}, [r12] + + MOVQ (SI), BX // BX: &in[0][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 + LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 + LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40bd1362; WORD $0xd043; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0x00 + LONG $0x40bd1362; WORD $0xd843; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x409d1362; WORD $0xc443; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0x00 + LONG $0x409d1362; WORD $0xcc43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $1 + JE skip_avx512_parallel84 + + MOVQ 24(SI), BX // BX: &in[1][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa + LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa + LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40bd1362; WORD $0xd043; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0xaa + LONG $0x40bd1362; WORD $0xd843; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x409d1362; WORD $0xc443; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0xaa + LONG $0x409d1362; WORD $0xcc43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $2 + JE skip_avx512_parallel84 + + MOVQ 48(SI), BX // BX: &in[2][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 + LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 + LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40b51362; WORD $0xd143; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0x00 + LONG $0x40b51362; WORD $0xd943; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40951362; WORD $0xc543; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0x00 + LONG $0x40951362; WORD $0xcd43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $3 + JE skip_avx512_parallel84 + + MOVQ 72(SI), BX // BX: &in[3][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa + LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa + LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40b51362; WORD $0xd143; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0xaa + LONG $0x40b51362; WORD $0xd943; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40951362; WORD $0xc543; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0xaa + LONG $0x40951362; WORD $0xcd43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $4 + JE skip_avx512_parallel84 + + MOVQ 96(SI), BX // BX: &in[4][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 + LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 + LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40ad1362; WORD $0xd243; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0x00 + LONG $0x40ad1362; WORD $0xda43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x408d1362; WORD $0xc643; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0x00 + LONG $0x408d1362; WORD $0xce43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $5 + JE skip_avx512_parallel84 + + MOVQ 120(SI), BX // BX: &in[5][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa + LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa + LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40ad1362; WORD $0xd243; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0xaa + LONG $0x40ad1362; WORD $0xda43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x408d1362; WORD $0xc643; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0xaa + LONG $0x408d1362; WORD $0xce43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $6 + JE skip_avx512_parallel84 + + MOVQ 144(SI), BX // BX: &in[6][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 + LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 + LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40a51362; WORD $0xd343; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0x00 + LONG $0x40a51362; WORD $0xdb43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0x55 + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40851362; WORD $0xc743; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0x00 + LONG $0x40851362; WORD $0xcf43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0x55 + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + + CMPQ AX, $7 + JE skip_avx512_parallel84 + + MOVQ 168(SI), BX // BX: &in[7][0] + LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] + LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa + LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff + LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input + LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input + LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input + LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part + LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part + LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result + LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 + + LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa + LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff + LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part + LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part + LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result + LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 + + LONG $0x40a51362; WORD $0xd343; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0xaa + LONG $0x40a51362; WORD $0xdb43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0xff + LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part + LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part + LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result + LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 + + LONG $0x40851362; WORD $0xc743; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0xaa + LONG $0x40851362; WORD $0xcf43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0xff + LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part + LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part + LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result + LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 + +skip_avx512_parallel84: + LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 + LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 + LONG $0x48fed162; WORD $0x327f // VMOVDQU64 [r10], ZMM6 + LONG $0x48fed162; WORD $0x3c7f; BYTE $0x24 // VMOVDQU64 [r12], ZMM7 + + ADDQ $64, R11 // in4+=64 + + ADDQ $64, DX // out+=64 + ADDQ $64, CX // out2+=64 + ADDQ $64, R10 // out3+=64 + ADDQ $64, R12 // out4+=64 + + SUBQ $1, R9 + JNZ loopback_avx512_parallel84 + +done_avx512_parallel84: + VZEROUPPER + RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.go b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go new file mode 100644 index 0000000..7515ec5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go @@ -0,0 +1,92 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +//go:noescape +func galMulSSSE3(low, high, in, out []byte) + +//go:noescape +func galMulSSSE3Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2Xor(low, high, in, out []byte) + +//go:noescape +func galMulAVX2(low, high, in, out []byte) + +//go:noescape +func sSE2XorSlice(in, out []byte) + +// This is what the assembler routines do in blocks of 16 bytes: +/* +func galMulSSSE3(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] = low[l] ^ high[h] + } +} + +func galMulSSSE3Xor(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] ^= low[l] ^ high[h] + } +} +*/ + +func galMulSlice(c byte, in, out []byte, o *options) { + var done int + if o.useAVX2 { + galMulAVX2(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if o.useSSSE3 { + galMulSSSE3(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + var done int + if o.useAVX2 { + galMulAVX2Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 5) << 5 + } else if o.useSSSE3 { + galMulSSSE3Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + var done int + if sse2 { + sSE2XorSlice(in, out) + done = (len(in) >> 4) << 4 + } + remain := len(in) - done + if remain > 0 { + for i := done; i < len(in); i++ { + out[i] ^= in[i] + } + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.s b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s new file mode 100644 index 0000000..b768028 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s @@ -0,0 +1,236 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +// Based on http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf +// and http://jerasure.org/jerasure/gf-complete/tree/master + +// func galMulSSSE3Xor(low, high, in, out []byte) +TEXT ·galMulSSSE3Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + SHRQ $4, R9 // len(in) / 16 + MOVQ SI, AX + MOVQ DX, BX + ANDQ $15, AX + ANDQ $15, BX + CMPQ R9, $0 + JEQ done_xor + ORQ AX, BX + CMPQ BX, $0 + JNZ loopback_xor + +loopback_xor_aligned: + MOVOA (SI), X0 // in[x] + MOVOA (DX), X4 // out[x] + MOVOA X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + PXOR X4, X3 // X3: Result xor existing out + MOVOA X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor_aligned + JMP done_xor + +loopback_xor: + MOVOU (SI), X0 // in[x] + MOVOU (DX), X4 // out[x] + MOVOU X0, X1 // in[x] + MOVOU X6, X2 // low copy + MOVOU X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + PXOR X4, X3 // X3: Result xor existing out + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor + +done_xor: + RET + +// func galMulSSSE3(low, high, in, out []byte) +TEXT ·galMulSSSE3(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVOU (SI), X6 // X6 low + MOVOU (DX), X7 // X7: high + MOVQ $15, BX // BX: low mask + MOVQ BX, X8 + PXOR X5, X5 + MOVQ in+48(FP), SI // R11: &in + MOVQ in_len+56(FP), R9 // R9: len(in) + MOVQ out+72(FP), DX // DX: &out + PSHUFB X5, X8 // X8: lomask (unpacked) + MOVQ SI, AX + MOVQ DX, BX + SHRQ $4, R9 // len(in) / 16 + ANDQ $15, AX + ANDQ $15, BX + CMPQ R9, $0 + JEQ done + ORQ AX, BX + CMPQ BX, $0 + JNZ loopback + +loopback_aligned: + MOVOA (SI), X0 // in[x] + MOVOA X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + MOVOA X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_aligned + JMP done + +loopback: + MOVOU (SI), X0 // in[x] + MOVOU X0, X1 // in[x] + MOVOA X6, X2 // low copy + MOVOA X7, X3 // high copy + PSRLQ $4, X1 // X1: high input + PAND X8, X0 // X0: low input + PAND X8, X1 // X0: high input + PSHUFB X0, X2 // X2: mul low part + PSHUFB X1, X3 // X3: mul high part + PXOR X2, X3 // X3: Result + MOVOU X3, (DX) // Store + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback + +done: + RET + +// func galMulAVX2Xor(low, high, in, out []byte) +TEXT ·galMulAVX2Xor(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6: low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + VINSERTI128 $1, X6, Y6, Y6 // low + VINSERTI128 $1, X7, Y7, Y7 // high + VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) + + SHRQ $5, R9 // len(in) / 32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // SI: &in + TESTQ R9, R9 + JZ done_xor_avx2 + +loopback_xor_avx2: + VMOVDQU (SI), Y0 + VMOVDQU (DX), Y4 + VPSRLQ $4, Y0, Y1 // Y1: high input + VPAND Y8, Y0, Y0 // Y0: low input + VPAND Y8, Y1, Y1 // Y1: high input + VPSHUFB Y0, Y6, Y2 // Y2: mul low part + VPSHUFB Y1, Y7, Y3 // Y3: mul high part + VPXOR Y3, Y2, Y3 // Y3: Result + VPXOR Y4, Y3, Y4 // Y4: Result + VMOVDQU Y4, (DX) + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_xor_avx2 + +done_xor_avx2: + VZEROUPPER + RET + +// func galMulAVX2(low, high, in, out []byte) +TEXT ·galMulAVX2(SB), 7, $0 + MOVQ low+0(FP), SI // SI: &low + MOVQ high+24(FP), DX // DX: &high + MOVQ $15, BX // BX: low mask + MOVQ BX, X5 + MOVOU (SI), X6 // X6: low + MOVOU (DX), X7 // X7: high + MOVQ in_len+56(FP), R9 // R9: len(in) + + VINSERTI128 $1, X6, Y6, Y6 // low + VINSERTI128 $1, X7, Y7, Y7 // high + VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) + + SHRQ $5, R9 // len(in) / 32 + MOVQ out+72(FP), DX // DX: &out + MOVQ in+48(FP), SI // SI: &in + TESTQ R9, R9 + JZ done_avx2 + +loopback_avx2: + VMOVDQU (SI), Y0 + VPSRLQ $4, Y0, Y1 // Y1: high input + VPAND Y8, Y0, Y0 // Y0: low input + VPAND Y8, Y1, Y1 // Y1: high input + VPSHUFB Y0, Y6, Y2 // Y2: mul low part + VPSHUFB Y1, Y7, Y3 // Y3: mul high part + VPXOR Y3, Y2, Y4 // Y4: Result + VMOVDQU Y4, (DX) + + ADDQ $32, SI // in+=32 + ADDQ $32, DX // out+=32 + SUBQ $1, R9 + JNZ loopback_avx2 + +done_avx2: + VZEROUPPER + RET + +// func sSE2XorSlice(in, out []byte) +TEXT ·sSE2XorSlice(SB), 7, $0 + MOVQ in+0(FP), SI // SI: &in + MOVQ in_len+8(FP), R9 // R9: len(in) + MOVQ out+24(FP), DX // DX: &out + SHRQ $4, R9 // len(in) / 16 + CMPQ R9, $0 + JEQ done_xor_sse2 + +loopback_xor_sse2: + MOVOU (SI), X0 // in[x] + MOVOU (DX), X1 // out[x] + PXOR X0, X1 + MOVOU X1, (DX) + ADDQ $16, SI // in+=16 + ADDQ $16, DX // out+=16 + SUBQ $1, R9 + JNZ loopback_xor_sse2 + +done_xor_sse2: + RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.go b/vendor/github.com/klauspost/reedsolomon/galois_arm64.go new file mode 100644 index 0000000..9224ff7 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_arm64.go @@ -0,0 +1,52 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2017, Minio, Inc. + +package reedsolomon + +//go:noescape +func galMulNEON(c uint64, in, out []byte) + +//go:noescape +func galMulXorNEON(c uint64, in, out []byte) + +func galMulSlice(c byte, in, out []byte, o *options) { + var done int + galMulNEON(uint64(c), in, out) + done = (len(in) >> 5) << 5 + + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + var done int + galMulXorNEON(uint64(c), in, out) + done = (len(in) >> 5) << 5 + + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.s b/vendor/github.com/klauspost/reedsolomon/galois_arm64.s new file mode 100644 index 0000000..0c43f6d --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_arm64.s @@ -0,0 +1,141 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2017, Minio, Inc. + +// Use github.com/minio/asm2plan9s on this file to assemble ARM instructions to +// the opcodes of their Plan9 equivalents + +// polynomial multiplication +#define POLYNOMIAL_MULTIPLICATION \ + WORD $0x0e3ce340 \ // pmull v0.8h,v26.8b,v28.8b + WORD $0x4e3ce346 \ // pmull2 v6.8h,v26.16b,v28.16b + WORD $0x0e3ce36c \ // pmull v12.8h,v27.8b,v28.8b + WORD $0x4e3ce372 // pmull2 v18.8h,v27.16b,v28.16b + +// first reduction +#define FIRST_REDUCTION \ + WORD $0x0f088402 \ // shrn v2.8b, v0.8h, #8 + WORD $0x0f0884c8 \ // shrn v8.8b, v6.8h, #8 + WORD $0x0f08858e \ // shrn v14.8b, v12.8h, #8 + WORD $0x0f088654 \ // shrn v20.8b, v18.8h, #8 + WORD $0x0e22e3c3 \ // pmull v3.8h,v30.8b,v2.8b + WORD $0x0e28e3c9 \ // pmull v9.8h,v30.8b,v8.8b + WORD $0x0e2ee3cf \ // pmull v15.8h,v30.8b,v14.8b + WORD $0x0e34e3d5 \ // pmull v21.8h,v30.8b,v20.8b + WORD $0x6e201c60 \ // eor v0.16b,v3.16b,v0.16b + WORD $0x6e261d26 \ // eor v6.16b,v9.16b,v6.16b + WORD $0x6e2c1dec \ // eor v12.16b,v15.16b,v12.16b + WORD $0x6e321eb2 // eor v18.16b,v21.16b,v18.16b + +// second reduction +#define SECOND_REDUCTION \ + WORD $0x0f088404 \ // shrn v4.8b, v0.8h, #8 + WORD $0x0f0884ca \ // shrn v10.8b, v6.8h, #8 + WORD $0x0f088590 \ // shrn v16.8b, v12.8h, #8 + WORD $0x0f088656 \ // shrn v22.8b, v18.8h, #8 + WORD $0x6e241c44 \ // eor v4.16b,v2.16b,v4.16b + WORD $0x6e2a1d0a \ // eor v10.16b,v8.16b,v10.16b + WORD $0x6e301dd0 \ // eor v16.16b,v14.16b,v16.16b + WORD $0x6e361e96 \ // eor v22.16b,v20.16b,v22.16b + WORD $0x0e24e3c5 \ // pmull v5.8h,v30.8b,v4.8b + WORD $0x0e2ae3cb \ // pmull v11.8h,v30.8b,v10.8b + WORD $0x0e30e3d1 \ // pmull v17.8h,v30.8b,v16.8b + WORD $0x0e36e3d7 \ // pmull v23.8h,v30.8b,v22.8b + WORD $0x6e201ca0 \ // eor v0.16b,v5.16b,v0.16b + WORD $0x6e261d61 \ // eor v1.16b,v11.16b,v6.16b + WORD $0x6e2c1e22 \ // eor v2.16b,v17.16b,v12.16b + WORD $0x6e321ee3 // eor v3.16b,v23.16b,v18.16b + +// func galMulNEON(c uint64, in, out []byte) +TEXT ·galMulNEON(SB), 7, $0 + MOVD c+0(FP), R0 + MOVD in_base+8(FP), R1 + MOVD in_len+16(FP), R2 // length of message + MOVD out_base+32(FP), R5 + SUBS $32, R2 + BMI complete + + // Load constants table pointer + MOVD $·constants(SB), R3 + + // and load constants into v30 & v31 + WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] + + WORD $0x4e010c1c // dup v28.16b, w0 + +loop: + // Main loop + WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 + + POLYNOMIAL_MULTIPLICATION + + FIRST_REDUCTION + + SECOND_REDUCTION + + // combine results + WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b + WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b + + // Store result + WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 + + SUBS $32, R2 + BPL loop + +complete: + RET + +// func galMulXorNEON(c uint64, in, out []byte) +TEXT ·galMulXorNEON(SB), 7, $0 + MOVD c+0(FP), R0 + MOVD in_base+8(FP), R1 + MOVD in_len+16(FP), R2 // length of message + MOVD out_base+32(FP), R5 + SUBS $32, R2 + BMI completeXor + + // Load constants table pointer + MOVD $·constants(SB), R3 + + // and load constants into v30 & v31 + WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] + + WORD $0x4e010c1c // dup v28.16b, w0 + +loopXor: + // Main loop + WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 + WORD $0x4c40a8b8 // ld1 {v24.4s-v25.4s}, [x5] + + POLYNOMIAL_MULTIPLICATION + + FIRST_REDUCTION + + SECOND_REDUCTION + + // combine results + WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b + WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b + + // Xor result and store + WORD $0x6e381c00 // eor v0.16b,v0.16b,v24.16b + WORD $0x6e391c21 // eor v1.16b,v1.16b,v25.16b + WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 + + SUBS $32, R2 + BPL loopXor + +completeXor: + RET + +// Constants table +// generating polynomial is 29 (= 0x1d) +DATA ·constants+0x0(SB)/8, $0x1d1d1d1d1d1d1d1d +DATA ·constants+0x8(SB)/8, $0x1d1d1d1d1d1d1d1d +// constant for TBL instruction +DATA ·constants+0x10(SB)/8, $0x0e0c0a0806040200 +DATA ·constants+0x18(SB)/8, $0x1e1c1a1816141210 + +GLOBL ·constants(SB), 8, $32 diff --git a/vendor/github.com/klauspost/reedsolomon/galois_noasm.go b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go new file mode 100644 index 0000000..cc43658 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go @@ -0,0 +1,34 @@ +//+build !amd64 noasm appengine gccgo +//+build !arm64 noasm appengine gccgo +//+build !ppc64le noasm appengine gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. + +package reedsolomon + +func galMulSlice(c byte, in, out []byte, o *options) { + mt := mulTable[c][:256] + out = out[:len(in)] + for n, input := range in { + out[n] = mt[input] + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + mt := mulTable[c][:256] + out = out[:len(in)] + for n, input := range in { + out[n] ^= mt[input] + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + panic("unreachable") +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go new file mode 100644 index 0000000..42314a5 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go @@ -0,0 +1,70 @@ +//+build !noasm +//+build !appengine +//+build !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2018, Minio, Inc. + +package reedsolomon + +//go:noescape +func galMulPpc(low, high, in, out []byte) + +//go:noescape +func galMulPpcXor(low, high, in, out []byte) + +// This is what the assembler routines do in blocks of 16 bytes: +/* +func galMulPpc(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] = low[l] ^ high[h] + } +} +func galMulPpcXor(low, high, in, out []byte) { + for n, input := range in { + l := input & 0xf + h := input >> 4 + out[n] ^= low[l] ^ high[h] + } +} +*/ + +func galMulSlice(c byte, in, out []byte, o *options) { + done := (len(in) >> 4) << 4 + if done > 0 { + galMulPpc(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] = mt[in[i]] + } + } +} + +func galMulSliceXor(c byte, in, out []byte, o *options) { + done := (len(in) >> 4) << 4 + if done > 0 { + galMulPpcXor(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) + } + remain := len(in) - done + if remain > 0 { + mt := mulTable[c][:256] + for i := done; i < len(in); i++ { + out[i] ^= mt[in[i]] + } + } +} + +// slice galois add +func sliceXor(in, out []byte, sse2 bool) { + for n, input := range in { + out[n] ^= input + } +} + +func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { +} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s new file mode 100644 index 0000000..960087c --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s @@ -0,0 +1,126 @@ +//+build !noasm !appengine !gccgo + +// Copyright 2015, Klaus Post, see LICENSE for details. +// Copyright 2018, Minio, Inc. + +#include "textflag.h" + +#define LOW R3 +#define HIGH R4 +#define IN R5 +#define LEN R6 +#define OUT R7 +#define CONSTANTS R8 +#define OFFSET R9 +#define OFFSET1 R10 +#define OFFSET2 R11 + +#define X6 VS34 +#define X6_ V2 +#define X7 VS35 +#define X7_ V3 +#define MSG VS36 +#define MSG_ V4 +#define MSG_HI VS37 +#define MSG_HI_ V5 +#define RESULT VS38 +#define RESULT_ V6 +#define ROTATE VS39 +#define ROTATE_ V7 +#define MASK VS40 +#define MASK_ V8 +#define FLIP VS41 +#define FLIP_ V9 + + +// func galMulPpc(low, high, in, out []byte) +TEXT ·galMulPpc(SB), NOFRAME|NOSPLIT, $0-96 + MOVD low+0(FP), LOW + MOVD high+24(FP), HIGH + MOVD in+48(FP), IN + MOVD in_len+56(FP), LEN + MOVD out+72(FP), OUT + + MOVD $16, OFFSET1 + MOVD $32, OFFSET2 + + MOVD $·constants(SB), CONSTANTS + LXVD2X (CONSTANTS)(R0), ROTATE + LXVD2X (CONSTANTS)(OFFSET1), MASK + LXVD2X (CONSTANTS)(OFFSET2), FLIP + + LXVD2X (LOW)(R0), X6 + LXVD2X (HIGH)(R0), X7 + VPERM X6_, V31, FLIP_, X6_ + VPERM X7_, V31, FLIP_, X7_ + + MOVD $0, OFFSET + +loop: + LXVD2X (IN)(OFFSET), MSG + + VSRB MSG_, ROTATE_, MSG_HI_ + VAND MSG_, MASK_, MSG_ + VPERM X6_, V31, MSG_, MSG_ + VPERM X7_, V31, MSG_HI_, MSG_HI_ + + VXOR MSG_, MSG_HI_, MSG_ + + STXVD2X MSG, (OUT)(OFFSET) + + ADD $16, OFFSET, OFFSET + CMP LEN, OFFSET + BGT loop + RET + + +// func galMulPpcXorlow, high, in, out []byte) +TEXT ·galMulPpcXor(SB), NOFRAME|NOSPLIT, $0-96 + MOVD low+0(FP), LOW + MOVD high+24(FP), HIGH + MOVD in+48(FP), IN + MOVD in_len+56(FP), LEN + MOVD out+72(FP), OUT + + MOVD $16, OFFSET1 + MOVD $32, OFFSET2 + + MOVD $·constants(SB), CONSTANTS + LXVD2X (CONSTANTS)(R0), ROTATE + LXVD2X (CONSTANTS)(OFFSET1), MASK + LXVD2X (CONSTANTS)(OFFSET2), FLIP + + LXVD2X (LOW)(R0), X6 + LXVD2X (HIGH)(R0), X7 + VPERM X6_, V31, FLIP_, X6_ + VPERM X7_, V31, FLIP_, X7_ + + MOVD $0, OFFSET + +loopXor: + LXVD2X (IN)(OFFSET), MSG + LXVD2X (OUT)(OFFSET), RESULT + + VSRB MSG_, ROTATE_, MSG_HI_ + VAND MSG_, MASK_, MSG_ + VPERM X6_, V31, MSG_, MSG_ + VPERM X7_, V31, MSG_HI_, MSG_HI_ + + VXOR MSG_, MSG_HI_, MSG_ + VXOR MSG_, RESULT_, RESULT_ + + STXVD2X RESULT, (OUT)(OFFSET) + + ADD $16, OFFSET, OFFSET + CMP LEN, OFFSET + BGT loopXor + RET + +DATA ·constants+0x0(SB)/8, $0x0404040404040404 +DATA ·constants+0x8(SB)/8, $0x0404040404040404 +DATA ·constants+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·constants+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f +DATA ·constants+0x20(SB)/8, $0x0706050403020100 +DATA ·constants+0x28(SB)/8, $0x0f0e0d0c0b0a0908 + +GLOBL ·constants(SB), 8, $48 diff --git a/vendor/github.com/klauspost/reedsolomon/gentables.go b/vendor/github.com/klauspost/reedsolomon/gentables.go new file mode 100644 index 0000000..843aade --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/gentables.go @@ -0,0 +1,132 @@ +//+build ignore + +package main + +import ( + "fmt" +) + +var logTable = [fieldSize]int16{ + -1, 0, 1, 25, 2, 50, 26, 198, + 3, 223, 51, 238, 27, 104, 199, 75, + 4, 100, 224, 14, 52, 141, 239, 129, + 28, 193, 105, 248, 200, 8, 76, 113, + 5, 138, 101, 47, 225, 36, 15, 33, + 53, 147, 142, 218, 240, 18, 130, 69, + 29, 181, 194, 125, 106, 39, 249, 185, + 201, 154, 9, 120, 77, 228, 114, 166, + 6, 191, 139, 98, 102, 221, 48, 253, + 226, 152, 37, 179, 16, 145, 34, 136, + 54, 208, 148, 206, 143, 150, 219, 189, + 241, 210, 19, 92, 131, 56, 70, 64, + 30, 66, 182, 163, 195, 72, 126, 110, + 107, 58, 40, 84, 250, 133, 186, 61, + 202, 94, 155, 159, 10, 21, 121, 43, + 78, 212, 229, 172, 115, 243, 167, 87, + 7, 112, 192, 247, 140, 128, 99, 13, + 103, 74, 222, 237, 49, 197, 254, 24, + 227, 165, 153, 119, 38, 184, 180, 124, + 17, 68, 146, 217, 35, 32, 137, 46, + 55, 63, 209, 91, 149, 188, 207, 205, + 144, 135, 151, 178, 220, 252, 190, 97, + 242, 86, 211, 171, 20, 42, 93, 158, + 132, 60, 57, 83, 71, 109, 65, 162, + 31, 45, 67, 216, 183, 123, 164, 118, + 196, 23, 73, 236, 127, 12, 111, 246, + 108, 161, 59, 82, 41, 157, 85, 170, + 251, 96, 134, 177, 187, 204, 62, 90, + 203, 89, 95, 176, 156, 169, 160, 81, + 11, 245, 22, 235, 122, 117, 44, 215, + 79, 174, 213, 233, 230, 231, 173, 232, + 116, 214, 244, 234, 168, 80, 88, 175, +} + +const ( + // The number of elements in the field. + fieldSize = 256 + + // The polynomial used to generate the logarithm table. + // + // There are a number of polynomials that work to generate + // a Galois field of 256 elements. The choice is arbitrary, + // and we just use the first one. + // + // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, + //* 113, 135, 141, 169, 195, 207, 231, and 245. + generatingPolynomial = 29 +) + +func main() { + t := generateExpTable() + fmt.Printf("var expTable = %#v\n", t) + //t2 := generateMulTableSplit(t) + //fmt.Printf("var mulTable = %#v\n", t2) + low, high := generateMulTableHalf(t) + fmt.Printf("var mulTableLow = %#v\n", low) + fmt.Printf("var mulTableHigh = %#v\n", high) +} + +/** + * Generates the inverse log table. + */ +func generateExpTable() []byte { + result := make([]byte, fieldSize*2-2) + for i := 1; i < fieldSize; i++ { + log := logTable[i] + result[log] = byte(i) + result[log+fieldSize-1] = byte(i) + } + return result +} + +func generateMulTable(expTable []byte) []byte { + result := make([]byte, 256*256) + for v := range result { + a := byte(v & 0xff) + b := byte(v >> 8) + if a == 0 || b == 0 { + result[v] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[v] = expTable[logA+logB] + } + return result +} + +func generateMulTableSplit(expTable []byte) [256][256]byte { + var result [256][256]byte + for a := range result { + for b := range result[a] { + if a == 0 || b == 0 { + result[a][b] = 0 + continue + } + logA := int(logTable[a]) + logB := int(logTable[b]) + result[a][b] = expTable[logA+logB] + } + } + return result +} + +func generateMulTableHalf(expTable []byte) (low [256][16]byte, high [256][16]byte) { + for a := range low { + for b := range low { + result := 0 + if !(a == 0 || b == 0) { + logA := int(logTable[a]) + logB := int(logTable[b]) + result = int(expTable[logA+logB]) + } + if (b & 0xf) == b { + low[a][b] = byte(result) + } + if (b & 0xf0) == b { + high[a][b>>4] = byte(result) + } + } + } + return +} diff --git a/vendor/github.com/klauspost/reedsolomon/inversion_tree.go b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go new file mode 100644 index 0000000..c9d8ab2 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go @@ -0,0 +1,160 @@ +/** + * A thread-safe tree which caches inverted matrices. + * + * Copyright 2016, Peter Collins + */ + +package reedsolomon + +import ( + "errors" + "sync" +) + +// The tree uses a Reader-Writer mutex to make it thread-safe +// when accessing cached matrices and inserting new ones. +type inversionTree struct { + mutex *sync.RWMutex + root inversionNode +} + +type inversionNode struct { + matrix matrix + children []*inversionNode +} + +// newInversionTree initializes a tree for storing inverted matrices. +// Note that the root node is the identity matrix as it implies +// there were no errors with the original data. +func newInversionTree(dataShards, parityShards int) inversionTree { + identity, _ := identityMatrix(dataShards) + root := inversionNode{ + matrix: identity, + children: make([]*inversionNode, dataShards+parityShards), + } + return inversionTree{ + mutex: &sync.RWMutex{}, + root: root, + } +} + +// GetInvertedMatrix returns the cached inverted matrix or nil if it +// is not found in the tree keyed on the indices of invalid rows. +func (t inversionTree) GetInvertedMatrix(invalidIndices []int) matrix { + // Lock the tree for reading before accessing the tree. + t.mutex.RLock() + defer t.mutex.RUnlock() + + // If no invalid indices were give we should return the root + // identity matrix. + if len(invalidIndices) == 0 { + return t.root.matrix + } + + // Recursively search for the inverted matrix in the tree, passing in + // 0 as the parent index as we start at the root of the tree. + return t.root.getInvertedMatrix(invalidIndices, 0) +} + +// errAlreadySet is returned if the root node matrix is overwritten +var errAlreadySet = errors.New("the root node identity matrix is already set") + +// InsertInvertedMatrix inserts a new inverted matrix into the tree +// keyed by the indices of invalid rows. The total number of shards +// is required for creating the proper length lists of child nodes for +// each node. +func (t inversionTree) InsertInvertedMatrix(invalidIndices []int, matrix matrix, shards int) error { + // If no invalid indices were given then we are done because the + // root node is already set with the identity matrix. + if len(invalidIndices) == 0 { + return errAlreadySet + } + + if !matrix.IsSquare() { + return errNotSquare + } + + // Lock the tree for writing and reading before accessing the tree. + t.mutex.Lock() + defer t.mutex.Unlock() + + // Recursively create nodes for the inverted matrix in the tree until + // we reach the node to insert the matrix to. We start by passing in + // 0 as the parent index as we start at the root of the tree. + t.root.insertInvertedMatrix(invalidIndices, matrix, shards, 0) + + return nil +} + +func (n inversionNode) getInvertedMatrix(invalidIndices []int, parent int) matrix { + // Get the child node to search next from the list of children. The + // list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, fail fast by + // returning, so we can construct and insert the proper inverted matrix. + if node == nil { + return nil + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively. + if len(invalidIndices) > 1 { + // Search recursively on the child node by passing in the invalid indices + // with the first index popped off the front. Also the parent index to + // pass down is the first index plus one. + return node.getInvertedMatrix(invalidIndices[1:], firstIndex+1) + } + // If there aren't any more invalid indices to search, we've found our + // node. Return it, however keep in mind that the matrix could still be + // nil because intermediary nodes in the tree are created sometimes with + // their inversion matrices uninitialized. + return node.matrix +} + +func (n inversionNode) insertInvertedMatrix(invalidIndices []int, matrix matrix, shards, parent int) { + // As above, get the child node to search next from the list of children. + // The list of children starts relative to the parent index passed in + // because the indices of invalid rows is sorted (by default). As we + // search recursively, the first invalid index gets popped off the list, + // so when searching through the list of children, use that first invalid + // index to find the child node. + firstIndex := invalidIndices[0] + node := n.children[firstIndex-parent] + + // If the child node doesn't exist in the list yet, create a new + // node because we have the writer lock and add it to the list + // of children. + if node == nil { + // Make the length of the list of children equal to the number + // of shards minus the first invalid index because the list of + // invalid indices is sorted, so only this length of errors + // are possible in the tree. + node = &inversionNode{ + children: make([]*inversionNode, shards-firstIndex), + } + // Insert the new node into the tree at the first index relative + // to the parent index that was given in this recursive call. + n.children[firstIndex-parent] = node + } + + // If there's more than one invalid index left in the list we should + // keep searching recursively in order to find the node to add our + // matrix. + if len(invalidIndices) > 1 { + // As above, search recursively on the child node by passing in + // the invalid indices with the first index popped off the front. + // Also the total number of shards and parent index are passed down + // which is equal to the first index plus one. + node.insertInvertedMatrix(invalidIndices[1:], matrix, shards, firstIndex+1) + } else { + // If there aren't any more invalid indices to search, we've found our + // node. Cache the inverted matrix in this node. + node.matrix = matrix + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/matrix.go b/vendor/github.com/klauspost/reedsolomon/matrix.go new file mode 100644 index 0000000..a6b9730 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/matrix.go @@ -0,0 +1,279 @@ +/** + * Matrix Algebra over an 8-bit Galois Field + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "errors" + "fmt" + "strconv" + "strings" +) + +// byte[row][col] +type matrix [][]byte + +// newMatrix returns a matrix of zeros. +func newMatrix(rows, cols int) (matrix, error) { + if rows <= 0 { + return nil, errInvalidRowSize + } + if cols <= 0 { + return nil, errInvalidColSize + } + + m := matrix(make([][]byte, rows)) + for i := range m { + m[i] = make([]byte, cols) + } + return m, nil +} + +// NewMatrixData initializes a matrix with the given row-major data. +// Note that data is not copied from input. +func newMatrixData(data [][]byte) (matrix, error) { + m := matrix(data) + err := m.Check() + if err != nil { + return nil, err + } + return m, nil +} + +// IdentityMatrix returns an identity matrix of the given size. +func identityMatrix(size int) (matrix, error) { + m, err := newMatrix(size, size) + if err != nil { + return nil, err + } + for i := range m { + m[i][i] = 1 + } + return m, nil +} + +// errInvalidRowSize will be returned if attempting to create a matrix with negative or zero row number. +var errInvalidRowSize = errors.New("invalid row size") + +// errInvalidColSize will be returned if attempting to create a matrix with negative or zero column number. +var errInvalidColSize = errors.New("invalid column size") + +// errColSizeMismatch is returned if the size of matrix columns mismatch. +var errColSizeMismatch = errors.New("column size is not the same for all rows") + +func (m matrix) Check() error { + rows := len(m) + if rows <= 0 { + return errInvalidRowSize + } + cols := len(m[0]) + if cols <= 0 { + return errInvalidColSize + } + + for _, col := range m { + if len(col) != cols { + return errColSizeMismatch + } + } + return nil +} + +// String returns a human-readable string of the matrix contents. +// +// Example: [[1, 2], [3, 4]] +func (m matrix) String() string { + rowOut := make([]string, 0, len(m)) + for _, row := range m { + colOut := make([]string, 0, len(row)) + for _, col := range row { + colOut = append(colOut, strconv.Itoa(int(col))) + } + rowOut = append(rowOut, "["+strings.Join(colOut, ", ")+"]") + } + return "[" + strings.Join(rowOut, ", ") + "]" +} + +// Multiply multiplies this matrix (the one on the left) by another +// matrix (the one on the right) and returns a new matrix with the result. +func (m matrix) Multiply(right matrix) (matrix, error) { + if len(m[0]) != len(right) { + return nil, fmt.Errorf("columns on left (%d) is different than rows on right (%d)", len(m[0]), len(right)) + } + result, _ := newMatrix(len(m), len(right[0])) + for r, row := range result { + for c := range row { + var value byte + for i := range m[0] { + value ^= galMultiply(m[r][i], right[i][c]) + } + result[r][c] = value + } + } + return result, nil +} + +// Augment returns the concatenation of this matrix and the matrix on the right. +func (m matrix) Augment(right matrix) (matrix, error) { + if len(m) != len(right) { + return nil, errMatrixSize + } + + result, _ := newMatrix(len(m), len(m[0])+len(right[0])) + for r, row := range m { + for c := range row { + result[r][c] = m[r][c] + } + cols := len(m[0]) + for c := range right[0] { + result[r][cols+c] = right[r][c] + } + } + return result, nil +} + +// errMatrixSize is returned if matrix dimensions are doesn't match. +var errMatrixSize = errors.New("matrix sizes do not match") + +func (m matrix) SameSize(n matrix) error { + if len(m) != len(n) { + return errMatrixSize + } + for i := range m { + if len(m[i]) != len(n[i]) { + return errMatrixSize + } + } + return nil +} + +// SubMatrix returns a part of this matrix. Data is copied. +func (m matrix) SubMatrix(rmin, cmin, rmax, cmax int) (matrix, error) { + result, err := newMatrix(rmax-rmin, cmax-cmin) + if err != nil { + return nil, err + } + // OPTME: If used heavily, use copy function to copy slice + for r := rmin; r < rmax; r++ { + for c := cmin; c < cmax; c++ { + result[r-rmin][c-cmin] = m[r][c] + } + } + return result, nil +} + +// SwapRows Exchanges two rows in the matrix. +func (m matrix) SwapRows(r1, r2 int) error { + if r1 < 0 || len(m) <= r1 || r2 < 0 || len(m) <= r2 { + return errInvalidRowSize + } + m[r2], m[r1] = m[r1], m[r2] + return nil +} + +// IsSquare will return true if the matrix is square +// and nil if the matrix is square +func (m matrix) IsSquare() bool { + return len(m) == len(m[0]) +} + +// errSingular is returned if the matrix is singular and cannot be inversed +var errSingular = errors.New("matrix is singular") + +// errNotSquare is returned if attempting to inverse a non-square matrix. +var errNotSquare = errors.New("only square matrices can be inverted") + +// Invert returns the inverse of this matrix. +// Returns ErrSingular when the matrix is singular and doesn't have an inverse. +// The matrix must be square, otherwise ErrNotSquare is returned. +func (m matrix) Invert() (matrix, error) { + if !m.IsSquare() { + return nil, errNotSquare + } + + size := len(m) + work, _ := identityMatrix(size) + work, _ = m.Augment(work) + + err := work.gaussianElimination() + if err != nil { + return nil, err + } + + return work.SubMatrix(0, size, size, size*2) +} + +func (m matrix) gaussianElimination() error { + rows := len(m) + columns := len(m[0]) + // Clear out the part below the main diagonal and scale the main + // diagonal to be 1. + for r := 0; r < rows; r++ { + // If the element on the diagonal is 0, find a row below + // that has a non-zero and swap them. + if m[r][r] == 0 { + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + m.SwapRows(r, rowBelow) + break + } + } + } + // If we couldn't find one, the matrix is singular. + if m[r][r] == 0 { + return errSingular + } + // Scale to 1. + if m[r][r] != 1 { + scale := galDivide(1, m[r][r]) + for c := 0; c < columns; c++ { + m[r][c] = galMultiply(m[r][c], scale) + } + } + // Make everything below the 1 be a 0 by subtracting + // a multiple of it. (Subtraction and addition are + // both exclusive or in the Galois field.) + for rowBelow := r + 1; rowBelow < rows; rowBelow++ { + if m[rowBelow][r] != 0 { + scale := m[rowBelow][r] + for c := 0; c < columns; c++ { + m[rowBelow][c] ^= galMultiply(scale, m[r][c]) + } + } + } + } + + // Now clear the part above the main diagonal. + for d := 0; d < rows; d++ { + for rowAbove := 0; rowAbove < d; rowAbove++ { + if m[rowAbove][d] != 0 { + scale := m[rowAbove][d] + for c := 0; c < columns; c++ { + m[rowAbove][c] ^= galMultiply(scale, m[d][c]) + } + + } + } + } + return nil +} + +// Create a Vandermonde matrix, which is guaranteed to have the +// property that any subset of rows that forms a square matrix +// is invertible. +func vandermonde(rows, cols int) (matrix, error) { + result, err := newMatrix(rows, cols) + if err != nil { + return nil, err + } + for r, row := range result { + for c := range row { + result[r][c] = galExp(byte(r), c) + } + } + return result, nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/options.go b/vendor/github.com/klauspost/reedsolomon/options.go new file mode 100644 index 0000000..0c01d44 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/options.go @@ -0,0 +1,118 @@ +package reedsolomon + +import ( + "runtime" + + "github.com/klauspost/cpuid" +) + +// Option allows to override processing parameters. +type Option func(*options) + +type options struct { + maxGoroutines int + minSplitSize int + useAVX512, useAVX2, useSSSE3, useSSE2 bool + usePAR1Matrix bool + useCauchy bool + shardSize int +} + +var defaultOptions = options{ + maxGoroutines: 384, + minSplitSize: 1024, +} + +func init() { + if runtime.GOMAXPROCS(0) <= 1 { + defaultOptions.maxGoroutines = 1 + } + // Detect CPU capabilities. + defaultOptions.useSSSE3 = cpuid.CPU.SSSE3() + defaultOptions.useSSE2 = cpuid.CPU.SSE2() + defaultOptions.useAVX2 = cpuid.CPU.AVX2() + defaultOptions.useAVX512 = cpuid.CPU.AVX512F() && cpuid.CPU.AVX512BW() && amd64 +} + +// WithMaxGoroutines is the maximum number of goroutines number for encoding & decoding. +// Jobs will be split into this many parts, unless each goroutine would have to process +// less than minSplitSize bytes (set with WithMinSplitSize). +// For the best speed, keep this well above the GOMAXPROCS number for more fine grained +// scheduling. +// If n <= 0, it is ignored. +func WithMaxGoroutines(n int) Option { + return func(o *options) { + if n > 0 { + o.maxGoroutines = n + } + } +} + +// WithAutoGoroutines will adjust the number of goroutines for optimal speed with a +// specific shard size. +// Send in the shard size you expect to send. Other shard sizes will work, but may not +// run at the optimal speed. +// Overwrites WithMaxGoroutines. +// If shardSize <= 0, it is ignored. +func WithAutoGoroutines(shardSize int) Option { + return func(o *options) { + o.shardSize = shardSize + } +} + +// WithMinSplitSize is the minimum encoding size in bytes per goroutine. +// See WithMaxGoroutines on how jobs are split. +// If n <= 0, it is ignored. +func WithMinSplitSize(n int) Option { + return func(o *options) { + if n > 0 { + o.minSplitSize = n + } + } +} + +func withSSE3(enabled bool) Option { + return func(o *options) { + o.useSSSE3 = enabled + } +} + +func withAVX2(enabled bool) Option { + return func(o *options) { + o.useAVX2 = enabled + } +} + +func withSSE2(enabled bool) Option { + return func(o *options) { + o.useSSE2 = enabled + } +} + +func withAVX512(enabled bool) Option { + return func(o *options) { + o.useAVX512 = enabled + } +} + +// WithPAR1Matrix causes the encoder to build the matrix how PARv1 +// does. Note that the method they use is buggy, and may lead to cases +// where recovery is impossible, even if there are enough parity +// shards. +func WithPAR1Matrix() Option { + return func(o *options) { + o.usePAR1Matrix = true + o.useCauchy = false + } +} + +// WithCauchyMatrix will make the encoder build a Cauchy style matrix. +// The output of this is not compatible with the standard output. +// A Cauchy matrix is faster to generate. This does not affect data throughput, +// but will result in slightly faster start-up time. +func WithCauchyMatrix() Option { + return func(o *options) { + o.useCauchy = true + o.usePAR1Matrix = false + } +} diff --git a/vendor/github.com/klauspost/reedsolomon/reedsolomon.go b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go new file mode 100644 index 0000000..3d4d7da --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go @@ -0,0 +1,900 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +// Package reedsolomon enables Erasure Coding in Go +// +// For usage and examples, see https://github.com/klauspost/reedsolomon +// +package reedsolomon + +import ( + "bytes" + "errors" + "io" + "runtime" + "sync" + + "github.com/klauspost/cpuid" +) + +// Encoder is an interface to encode Reed-Salomon parity sets for your data. +type Encoder interface { + // Encode parity for a set of data shards. + // Input is 'shards' containing data shards followed by parity shards. + // The number of shards must match the number given to New(). + // Each shard is a byte array, and they must all be the same size. + // The parity shards will always be overwritten and the data shards + // will remain the same, so it is safe for you to read from the + // data shards while this is running. + Encode(shards [][]byte) error + + // Verify returns true if the parity shards contain correct data. + // The data is the same format as Encode. No data is modified, so + // you are allowed to read from data while this is running. + Verify(shards [][]byte) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of shards, some of which contain data, fills in the + // ones that don't have data. + // + // The length of the array must be equal to the total number of shards. + // You indicate that a shard is missing by setting it to nil or zero-length. + // If a shard is zero-length but has sufficient capacity, that memory will + // be used, otherwise a new []byte will be allocated. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(shards [][]byte) error + + // ReconstructData will recreate any missing data shards, if possible. + // + // Given a list of shards, some of which contain data, fills in the + // data shards that don't have data. + // + // The length of the array must be equal to Shards. + // You indicate that a shard is missing by setting it to nil or zero-length. + // If a shard is zero-length but has sufficient capacity, that memory will + // be used, otherwise a new []byte will be allocated. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // As the reconstructed shard set may contain missing parity shards, + // calling the Verify function is likely to fail. + ReconstructData(shards [][]byte) error + + // Update parity is use for change a few data shards and update it's parity. + // Input 'newDatashards' containing data shards changed. + // Input 'shards' containing old data shards (if data shard not changed, it can be nil) and old parity shards. + // new parity shards will in shards[DataShards:] + // Update is very useful if DataShards much larger than ParityShards and changed data shards is few. It will + // faster than Encode and not need read all data shards to encode. + Update(shards [][]byte, newDatashards [][]byte) error + + // Split a data slice into the number of shards given to the encoder, + // and create empty parity shards. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // There must be at least 1 byte otherwise ErrShortData will be + // returned. + // + // The data will not be copied, except for the last shard, so you + // should not modify the data of the input slice afterwards. + Split(data []byte) ([][]byte, error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards [][]byte, outSize int) error +} + +// reedSolomon contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using New() +type reedSolomon struct { + DataShards int // Number of data shards, should not be modified. + ParityShards int // Number of parity shards, should not be modified. + Shards int // Total number of shards. Calculated, and should not be modified. + m matrix + tree inversionTree + parity [][]byte + o options +} + +// ErrInvShardNum will be returned by New, if you attempt to create +// an Encoder where either data or parity shards is zero or less. +var ErrInvShardNum = errors.New("cannot create Encoder with zero or less data/parity shards") + +// ErrMaxShardNum will be returned by New, if you attempt to create an +// Encoder where data and parity shards are bigger than the order of +// GF(2^8). +var ErrMaxShardNum = errors.New("cannot create Encoder with more than 256 data+parity shards") + +// buildMatrix creates the matrix to use for encoding, given the +// number of data shards and the number of total shards. +// +// The top square of the matrix is guaranteed to be an identity +// matrix, which means that the data shards are unchanged after +// encoding. +func buildMatrix(dataShards, totalShards int) (matrix, error) { + // Start with a Vandermonde matrix. This matrix would work, + // in theory, but doesn't have the property that the data + // shards are unchanged after encoding. + vm, err := vandermonde(totalShards, dataShards) + if err != nil { + return nil, err + } + + // Multiply by the inverse of the top square of the matrix. + // This will make the top square be the identity matrix, but + // preserve the property that any square subset of rows is + // invertible. + top, err := vm.SubMatrix(0, 0, dataShards, dataShards) + if err != nil { + return nil, err + } + + topInv, err := top.Invert() + if err != nil { + return nil, err + } + + return vm.Multiply(topInv) +} + +// buildMatrixPAR1 creates the matrix to use for encoding according to +// the PARv1 spec, given the number of data shards and the number of +// total shards. Note that the method they use is buggy, and may lead +// to cases where recovery is impossible, even if there are enough +// parity shards. +// +// The top square of the matrix is guaranteed to be an identity +// matrix, which means that the data shards are unchanged after +// encoding. +func buildMatrixPAR1(dataShards, totalShards int) (matrix, error) { + result, err := newMatrix(totalShards, dataShards) + if err != nil { + return nil, err + } + + for r, row := range result { + // The top portion of the matrix is the identity + // matrix, and the bottom is a transposed Vandermonde + // matrix starting at 1 instead of 0. + if r < dataShards { + result[r][r] = 1 + } else { + for c := range row { + result[r][c] = galExp(byte(c+1), r-dataShards) + } + } + } + return result, nil +} + +func buildMatrixCauchy(dataShards, totalShards int) (matrix, error) { + result, err := newMatrix(totalShards, dataShards) + if err != nil { + return nil, err + } + + for r, row := range result { + // The top portion of the matrix is the identity + // matrix, and the bottom is a transposed Cauchy matrix. + if r < dataShards { + result[r][r] = 1 + } else { + for c := range row { + result[r][c] = invTable[(byte(r ^ c))] + } + } + } + return result, nil +} + +// New creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of total shards is 256. +// If no options are supplied, default options are used. +func New(dataShards, parityShards int, opts ...Option) (Encoder, error) { + r := reedSolomon{ + DataShards: dataShards, + ParityShards: parityShards, + Shards: dataShards + parityShards, + o: defaultOptions, + } + + for _, opt := range opts { + opt(&r.o) + } + if dataShards <= 0 || parityShards <= 0 { + return nil, ErrInvShardNum + } + + if dataShards+parityShards > 256 { + return nil, ErrMaxShardNum + } + + var err error + switch { + case r.o.useCauchy: + r.m, err = buildMatrixCauchy(dataShards, r.Shards) + case r.o.usePAR1Matrix: + r.m, err = buildMatrixPAR1(dataShards, r.Shards) + default: + r.m, err = buildMatrix(dataShards, r.Shards) + } + if err != nil { + return nil, err + } + if r.o.shardSize > 0 { + cacheSize := cpuid.CPU.Cache.L2 + if cacheSize <= 0 { + // Set to 128K if undetectable. + cacheSize = 128 << 10 + } + p := runtime.NumCPU() + + // 1 input + parity must fit in cache, and we add one more to be safer. + shards := 1 + parityShards + g := (r.o.shardSize * shards) / (cacheSize - (cacheSize >> 4)) + + if cpuid.CPU.ThreadsPerCore > 1 { + // If multiple threads per core, make sure they don't contend for cache. + g *= cpuid.CPU.ThreadsPerCore + } + g *= 2 + if g < p { + g = p + } + + // Have g be multiple of p + g += p - 1 + g -= g % p + + r.o.maxGoroutines = g + } + + // Inverted matrices are cached in a tree keyed by the indices + // of the invalid rows of the data to reconstruct. + // The inversion root node will have the identity matrix as + // its inversion matrix because it implies there are no errors + // with the original data. + r.tree = newInversionTree(dataShards, parityShards) + + r.parity = make([][]byte, parityShards) + for i := range r.parity { + r.parity[i] = r.m[dataShards+i] + } + + return &r, err +} + +// ErrTooFewShards is returned if too few shards where given to +// Encode/Verify/Reconstruct/Update. It will also be returned from Reconstruct +// if there were too few shards to reconstruct the missing data. +var ErrTooFewShards = errors.New("too few shards given") + +// Encodes parity for a set of data shards. +// An array 'shards' containing data shards followed by parity shards. +// The number of shards must match the number given to New. +// Each shard is a byte array, and they must all be the same size. +// The parity shards will always be overwritten and the data shards +// will remain the same. +func (r reedSolomon) Encode(shards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + + err := checkShards(shards, false) + if err != nil { + return err + } + + // Get the slice of output buffers. + output := shards[r.DataShards:] + + // Do the coding. + r.codeSomeShards(r.parity, shards[0:r.DataShards], output, r.ParityShards, len(shards[0])) + return nil +} + +// ErrInvalidInput is returned if invalid input parameter of Update. +var ErrInvalidInput = errors.New("invalid input") + +func (r reedSolomon) Update(shards [][]byte, newDatashards [][]byte) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + + if len(newDatashards) != r.DataShards { + return ErrTooFewShards + } + + err := checkShards(shards, true) + if err != nil { + return err + } + + err = checkShards(newDatashards, true) + if err != nil { + return err + } + + for i := range newDatashards { + if newDatashards[i] != nil && shards[i] == nil { + return ErrInvalidInput + } + } + for _, p := range shards[r.DataShards:] { + if p == nil { + return ErrInvalidInput + } + } + + shardSize := shardSize(shards) + + // Get the slice of output buffers. + output := shards[r.DataShards:] + + // Do the coding. + r.updateParityShards(r.parity, shards[0:r.DataShards], newDatashards[0:r.DataShards], output, r.ParityShards, shardSize) + return nil +} + +func (r reedSolomon) updateParityShards(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { + if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + r.updateParityShardsP(matrixRows, oldinputs, newinputs, outputs, outputCount, byteCount) + return + } + + for c := 0; c < r.DataShards; c++ { + in := newinputs[c] + if in == nil { + continue + } + oldin := oldinputs[c] + // oldinputs data will be change + sliceXor(in, oldin, r.o.useSSE2) + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], oldin, outputs[iRow], &r.o) + } + } +} + +func (r reedSolomon) updateParityShardsP(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, stop int) { + for c := 0; c < r.DataShards; c++ { + in := newinputs[c] + if in == nil { + continue + } + oldin := oldinputs[c] + // oldinputs data will be change + sliceXor(in[start:stop], oldin[start:stop], r.o.useSSE2) + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], oldin[start:stop], outputs[iRow][start:stop], &r.o) + } + } + wg.Done() + }(start, start+do) + start += do + } + wg.Wait() +} + +// Verify returns true if the parity shards contain the right data. +// The data is the same format as Encode. No data is modified. +func (r reedSolomon) Verify(shards [][]byte) (bool, error) { + if len(shards) != r.Shards { + return false, ErrTooFewShards + } + err := checkShards(shards, false) + if err != nil { + return false, err + } + + // Slice of buffers being checked. + toCheck := shards[r.DataShards:] + + // Do the checking. + return r.checkSomeShards(r.parity, shards[0:r.DataShards], toCheck, r.ParityShards, len(shards[0])), nil +} + +// Multiplies a subset of rows from a coding matrix by a full set of +// input shards to produce some output shards. +// 'matrixRows' is The rows from the matrix to use. +// 'inputs' An array of byte arrays, each of which is one input shard. +// The number of inputs used is determined by the length of each matrix row. +// outputs Byte arrays where the computed shards are stored. +// The number of outputs computed, and the +// number of matrix rows used, is determined by +// outputCount, which is the number of outputs to compute. +func (r reedSolomon) codeSomeShards(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + if r.o.useAVX512 && len(inputs) >= 4 && len(outputs) >= 2 { + r.codeSomeShardsAvx512(matrixRows, inputs, outputs, outputCount, byteCount) + return + } else if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + r.codeSomeShardsP(matrixRows, inputs, outputs, outputCount, byteCount) + return + } + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } else { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + } +} + +// Perform the same as codeSomeShards, but split the workload into +// several goroutines. +func (r reedSolomon) codeSomeShardsP(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + // Make sizes divisible by 32 + do = (do + 31) & (^31) + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, stop int) { + for c := 0; c < r.DataShards; c++ { + in := inputs[c][start:stop] + for iRow := 0; iRow < outputCount; iRow++ { + if c == 0 { + galMulSlice(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) + } else { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) + } + } + } + wg.Done() + }(start, start+do) + start += do + } + wg.Wait() +} + +// checkSomeShards is mostly the same as codeSomeShards, +// except this will check values and return +// as soon as a difference is found. +func (r reedSolomon) checkSomeShards(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { + if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { + return r.checkSomeShardsP(matrixRows, inputs, toCheck, outputCount, byteCount) + } + outputs := make([][]byte, len(toCheck)) + for i := range outputs { + outputs[i] = make([]byte, byteCount) + } + for c := 0; c < r.DataShards; c++ { + in := inputs[c] + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + + for i, calc := range outputs { + if !bytes.Equal(calc, toCheck[i]) { + return false + } + } + return true +} + +func (r reedSolomon) checkSomeShardsP(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { + same := true + var mu sync.RWMutex // For above + + var wg sync.WaitGroup + do := byteCount / r.o.maxGoroutines + if do < r.o.minSplitSize { + do = r.o.minSplitSize + } + // Make sizes divisible by 32 + do = (do + 31) & (^31) + start := 0 + for start < byteCount { + if start+do > byteCount { + do = byteCount - start + } + wg.Add(1) + go func(start, do int) { + defer wg.Done() + outputs := make([][]byte, len(toCheck)) + for i := range outputs { + outputs[i] = make([]byte, do) + } + for c := 0; c < r.DataShards; c++ { + mu.RLock() + if !same { + mu.RUnlock() + return + } + mu.RUnlock() + in := inputs[c][start : start+do] + for iRow := 0; iRow < outputCount; iRow++ { + galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) + } + } + + for i, calc := range outputs { + if !bytes.Equal(calc, toCheck[i][start:start+do]) { + mu.Lock() + same = false + mu.Unlock() + return + } + } + }(start, do) + start += do + } + wg.Wait() + return same +} + +// ErrShardNoData will be returned if there are no shards, +// or if the length of all shards is zero. +var ErrShardNoData = errors.New("no shard data") + +// ErrShardSize is returned if shard length isn't the same for all +// shards. +var ErrShardSize = errors.New("shard sizes do not match") + +// checkShards will check if shards are the same size +// or 0, if allowed. An error is returned if this fails. +// An error is also returned if all shards are size 0. +func checkShards(shards [][]byte, nilok bool) error { + size := shardSize(shards) + if size == 0 { + return ErrShardNoData + } + for _, shard := range shards { + if len(shard) != size { + if len(shard) != 0 || !nilok { + return ErrShardSize + } + } + } + return nil +} + +// shardSize return the size of a single shard. +// The first non-zero size is returned, +// or 0 if all shards are size 0. +func shardSize(shards [][]byte) int { + for _, shard := range shards { + if len(shard) != 0 { + return len(shard) + } + } + return 0 +} + +// Reconstruct will recreate the missing shards, if possible. +// +// Given a list of shards, some of which contain data, fills in the +// ones that don't have data. +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil or zero-length. +// If a shard is zero-length but has sufficient capacity, that memory will +// be used, otherwise a new []byte will be allocated. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete, but integrity is not verified. +// Use the Verify function to check if data set is ok. +func (r reedSolomon) Reconstruct(shards [][]byte) error { + return r.reconstruct(shards, false) +} + +// ReconstructData will recreate any missing data shards, if possible. +// +// Given a list of shards, some of which contain data, fills in the +// data shards that don't have data. +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil or zero-length. +// If a shard is zero-length but has sufficient capacity, that memory will +// be used, otherwise a new []byte will be allocated. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// As the reconstructed shard set may contain missing parity shards, +// calling the Verify function is likely to fail. +func (r reedSolomon) ReconstructData(shards [][]byte) error { + return r.reconstruct(shards, true) +} + +// reconstruct will recreate the missing data shards, and unless +// dataOnly is true, also the missing parity shards +// +// The length of the array must be equal to Shards. +// You indicate that a shard is missing by setting it to nil. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +func (r reedSolomon) reconstruct(shards [][]byte, dataOnly bool) error { + if len(shards) != r.Shards { + return ErrTooFewShards + } + // Check arguments. + err := checkShards(shards, true) + if err != nil { + return err + } + + shardSize := shardSize(shards) + + // Quick check: are all of the shards present? If so, there's + // nothing to do. + numberPresent := 0 + dataPresent := 0 + for i := 0; i < r.Shards; i++ { + if len(shards[i]) != 0 { + numberPresent++ + if i < r.DataShards { + dataPresent++ + } + } + } + if numberPresent == r.Shards || dataOnly && dataPresent == r.DataShards { + // Cool. All of the shards data data. We don't + // need to do anything. + return nil + } + + // More complete sanity check + if numberPresent < r.DataShards { + return ErrTooFewShards + } + + // Pull out an array holding just the shards that + // correspond to the rows of the submatrix. These shards + // will be the input to the decoding process that re-creates + // the missing data shards. + // + // Also, create an array of indices of the valid rows we do have + // and the invalid rows we don't have up until we have enough valid rows. + subShards := make([][]byte, r.DataShards) + validIndices := make([]int, r.DataShards) + invalidIndices := make([]int, 0) + subMatrixRow := 0 + for matrixRow := 0; matrixRow < r.Shards && subMatrixRow < r.DataShards; matrixRow++ { + if len(shards[matrixRow]) != 0 { + subShards[subMatrixRow] = shards[matrixRow] + validIndices[subMatrixRow] = matrixRow + subMatrixRow++ + } else { + invalidIndices = append(invalidIndices, matrixRow) + } + } + + // Attempt to get the cached inverted matrix out of the tree + // based on the indices of the invalid rows. + dataDecodeMatrix := r.tree.GetInvertedMatrix(invalidIndices) + + // If the inverted matrix isn't cached in the tree yet we must + // construct it ourselves and insert it into the tree for the + // future. In this way the inversion tree is lazily loaded. + if dataDecodeMatrix == nil { + // Pull out the rows of the matrix that correspond to the + // shards that we have and build a square matrix. This + // matrix could be used to generate the shards that we have + // from the original data. + subMatrix, _ := newMatrix(r.DataShards, r.DataShards) + for subMatrixRow, validIndex := range validIndices { + for c := 0; c < r.DataShards; c++ { + subMatrix[subMatrixRow][c] = r.m[validIndex][c] + } + } + // Invert the matrix, so we can go from the encoded shards + // back to the original data. Then pull out the row that + // generates the shard that we want to decode. Note that + // since this matrix maps back to the original data, it can + // be used to create a data shard, but not a parity shard. + dataDecodeMatrix, err = subMatrix.Invert() + if err != nil { + return err + } + + // Cache the inverted matrix in the tree for future use keyed on the + // indices of the invalid rows. + err = r.tree.InsertInvertedMatrix(invalidIndices, dataDecodeMatrix, r.Shards) + if err != nil { + return err + } + } + + // Re-create any data shards that were missing. + // + // The input to the coding is all of the shards we actually + // have, and the output is the missing data shards. The computation + // is done using the special decode matrix we just built. + outputs := make([][]byte, r.ParityShards) + matrixRows := make([][]byte, r.ParityShards) + outputCount := 0 + + for iShard := 0; iShard < r.DataShards; iShard++ { + if len(shards[iShard]) == 0 { + if cap(shards[iShard]) >= shardSize { + shards[iShard] = shards[iShard][0:shardSize] + } else { + shards[iShard] = make([]byte, shardSize) + } + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = dataDecodeMatrix[iShard] + outputCount++ + } + } + r.codeSomeShards(matrixRows, subShards, outputs[:outputCount], outputCount, shardSize) + + if dataOnly { + // Exit out early if we are only interested in the data shards + return nil + } + + // Now that we have all of the data shards intact, we can + // compute any of the parity that is missing. + // + // The input to the coding is ALL of the data shards, including + // any that we just calculated. The output is whichever of the + // data shards were missing. + outputCount = 0 + for iShard := r.DataShards; iShard < r.Shards; iShard++ { + if len(shards[iShard]) == 0 { + if cap(shards[iShard]) >= shardSize { + shards[iShard] = shards[iShard][0:shardSize] + } else { + shards[iShard] = make([]byte, shardSize) + } + outputs[outputCount] = shards[iShard] + matrixRows[outputCount] = r.parity[iShard-r.DataShards] + outputCount++ + } + } + r.codeSomeShards(matrixRows, shards[:r.DataShards], outputs[:outputCount], outputCount, shardSize) + return nil +} + +// ErrShortData will be returned by Split(), if there isn't enough data +// to fill the number of shards. +var ErrShortData = errors.New("not enough data to fill the number of requested shards") + +// Split a data slice into the number of shards given to the encoder, +// and create empty parity shards if necessary. +// +// The data will be split into equally sized shards. +// If the data size isn't divisible by the number of shards, +// the last shard will contain extra zeros. +// +// There must be at least 1 byte otherwise ErrShortData will be +// returned. +// +// The data will not be copied, except for the last shard, so you +// should not modify the data of the input slice afterwards. +func (r reedSolomon) Split(data []byte) ([][]byte, error) { + if len(data) == 0 { + return nil, ErrShortData + } + // Calculate number of bytes per data shard. + perShard := (len(data) + r.DataShards - 1) / r.DataShards + + if cap(data) > len(data) { + data = data[:cap(data)] + } + + // Only allocate memory if necessary + var padding []byte + if len(data) < (r.Shards * perShard) { + // calculate maximum number of full shards in `data` slice + fullShards := len(data) / perShard + padding = make([]byte, r.Shards*perShard-perShard*fullShards) + copy(padding, data[perShard*fullShards:]) + data = data[0 : perShard*fullShards] + } + + // Split into equal-length shards. + dst := make([][]byte, r.Shards) + i := 0 + for ; i < len(dst) && len(data) >= perShard; i++ { + dst[i] = data[:perShard:perShard] + data = data[perShard:] + } + + for j := 0; i+j < len(dst); j++ { + dst[i+j] = padding[:perShard:perShard] + padding = padding[perShard:] + } + + return dst, nil +} + +// ErrReconstructRequired is returned if too few data shards are intact and a +// reconstruction is required before you can successfully join the shards. +var ErrReconstructRequired = errors.New("reconstruction required as one or more required data shards are nil") + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// You must supply the exact output size you want. +// +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +// If one or more required data shards are nil, ErrReconstructRequired will be returned. +func (r reedSolomon) Join(dst io.Writer, shards [][]byte, outSize int) error { + // Do we have enough shards? + if len(shards) < r.DataShards { + return ErrTooFewShards + } + shards = shards[:r.DataShards] + + // Do we have enough data? + size := 0 + for _, shard := range shards { + if shard == nil { + return ErrReconstructRequired + } + size += len(shard) + + // Do we have enough data already? + if size >= outSize { + break + } + } + if size < outSize { + return ErrShortData + } + + // Copy data to dst + write := outSize + for _, shard := range shards { + if write < len(shard) { + _, err := dst.Write(shard[:write]) + return err + } + n, err := dst.Write(shard) + if err != nil { + return err + } + write -= n + } + return nil +} diff --git a/vendor/github.com/klauspost/reedsolomon/streaming.go b/vendor/github.com/klauspost/reedsolomon/streaming.go new file mode 100644 index 0000000..e1a91e2 --- /dev/null +++ b/vendor/github.com/klauspost/reedsolomon/streaming.go @@ -0,0 +1,582 @@ +/** + * Reed-Solomon Coding over 8-bit values. + * + * Copyright 2015, Klaus Post + * Copyright 2015, Backblaze, Inc. + */ + +package reedsolomon + +import ( + "bytes" + "errors" + "fmt" + "io" + "sync" +) + +// StreamEncoder is an interface to encode Reed-Salomon parity sets for your data. +// It provides a fully streaming interface, and processes data in blocks of up to 4MB. +// +// For small shard sizes, 10MB and below, it is recommended to use the in-memory interface, +// since the streaming interface has a start up overhead. +// +// For all operations, no readers and writers should not assume any order/size of +// individual reads/writes. +// +// For usage examples, see "stream-encoder.go" and "streamdecoder.go" in the examples +// folder. +type StreamEncoder interface { + // Encode parity shards for a set of data shards. + // + // Input is 'shards' containing readers for data shards followed by parity shards + // io.Writer. + // + // The number of shards must match the number given to NewStream(). + // + // Each reader must supply the same number of bytes. + // + // The parity shards will be written to the writer. + // The number of bytes written will match the input size. + // + // If a data stream returns an error, a StreamReadError type error + // will be returned. If a parity writer returns an error, a + // StreamWriteError will be returned. + Encode(data []io.Reader, parity []io.Writer) error + + // Verify returns true if the parity shards contain correct data. + // + // The number of shards must match the number total data+parity shards + // given to NewStream(). + // + // Each reader must supply the same number of bytes. + // If a shard stream returns an error, a StreamReadError type error + // will be returned. + Verify(shards []io.Reader) (bool, error) + + // Reconstruct will recreate the missing shards if possible. + // + // Given a list of valid shards (to read) and invalid shards (to write) + // + // You indicate that a shard is missing by setting it to nil in the 'valid' + // slice and at the same time setting a non-nil writer in "fill". + // An index cannot contain both non-nil 'valid' and 'fill' entry. + // If both are provided 'ErrReconstructMismatch' is returned. + // + // If there are too few shards to reconstruct the missing + // ones, ErrTooFewShards will be returned. + // + // The reconstructed shard set is complete, but integrity is not verified. + // Use the Verify function to check if data set is ok. + Reconstruct(valid []io.Reader, fill []io.Writer) error + + // Split a an input stream into the number of shards given to the encoder. + // + // The data will be split into equally sized shards. + // If the data size isn't dividable by the number of shards, + // the last shard will contain extra zeros. + // + // You must supply the total size of your input. + // 'ErrShortData' will be returned if it is unable to retrieve the + // number of bytes indicated. + Split(data io.Reader, dst []io.Writer, size int64) (err error) + + // Join the shards and write the data segment to dst. + // + // Only the data shards are considered. + // + // You must supply the exact output size you want. + // If there are to few shards given, ErrTooFewShards will be returned. + // If the total data size is less than outSize, ErrShortData will be returned. + Join(dst io.Writer, shards []io.Reader, outSize int64) error +} + +// StreamReadError is returned when a read error is encountered +// that relates to a supplied stream. +// This will allow you to find out which reader has failed. +type StreamReadError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamReadError) Error() string { + return fmt.Sprintf("error reading stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamReadError) String() string { + return s.Error() +} + +// StreamWriteError is returned when a write error is encountered +// that relates to a supplied stream. This will allow you to +// find out which reader has failed. +type StreamWriteError struct { + Err error // The error + Stream int // The stream number on which the error occurred +} + +// Error returns the error as a string +func (s StreamWriteError) Error() string { + return fmt.Sprintf("error writing stream %d: %s", s.Stream, s.Err) +} + +// String returns the error as a string +func (s StreamWriteError) String() string { + return s.Error() +} + +// rsStream contains a matrix for a specific +// distribution of datashards and parity shards. +// Construct if using NewStream() +type rsStream struct { + r *reedSolomon + bs int // Block size + // Shard reader + readShards func(dst [][]byte, in []io.Reader) error + // Shard writer + writeShards func(out []io.Writer, in [][]byte) error +} + +// NewStream creates a new encoder and initializes it to +// the number of data shards and parity shards that +// you want to use. You can reuse this encoder. +// Note that the maximum number of data shards is 256. +func NewStream(dataShards, parityShards int, o ...Option) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards, o...) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + return &r, err +} + +// NewStreamC creates a new encoder and initializes it to +// the number of data shards and parity shards given. +// +// This functions as 'NewStream', but allows you to enable CONCURRENT reads and writes. +func NewStreamC(dataShards, parityShards int, conReads, conWrites bool, o ...Option) (StreamEncoder, error) { + enc, err := New(dataShards, parityShards, o...) + if err != nil { + return nil, err + } + rs := enc.(*reedSolomon) + r := rsStream{r: rs, bs: 4 << 20} + r.readShards = readShards + r.writeShards = writeShards + if conReads { + r.readShards = cReadShards + } + if conWrites { + r.writeShards = cWriteShards + } + return &r, err +} + +func createSlice(n, length int) [][]byte { + out := make([][]byte, n) + for i := range out { + out[i] = make([]byte, length) + } + return out +} + +// Encodes parity shards for a set of data shards. +// +// Input is 'shards' containing readers for data shards followed by parity shards +// io.Writer. +// +// The number of shards must match the number given to NewStream(). +// +// Each reader must supply the same number of bytes. +// +// The parity shards will be written to the writer. +// The number of bytes written will match the input size. +// +// If a data stream returns an error, a StreamReadError type error +// will be returned. If a parity writer returns an error, a +// StreamWriteError will be returned. +func (r rsStream) Encode(data []io.Reader, parity []io.Writer) error { + if len(data) != r.r.DataShards { + return ErrTooFewShards + } + + if len(parity) != r.r.ParityShards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + in := all[:r.r.DataShards] + out := all[r.r.DataShards:] + read := 0 + + for { + err := r.readShards(in, data) + switch err { + case nil: + case io.EOF: + if read == 0 { + return ErrShardNoData + } + return nil + default: + return err + } + out = trimShards(out, shardSize(in)) + read += shardSize(in) + err = r.r.Encode(all) + if err != nil { + return err + } + err = r.writeShards(parity, out) + if err != nil { + return err + } + } +} + +// Trim the shards so they are all the same size +func trimShards(in [][]byte, size int) [][]byte { + for i := range in { + if in[i] != nil { + in[i] = in[i][0:size] + } + if len(in[i]) < size { + in[i] = nil + } + } + return in +} + +func readShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size do not match") + } + size := -1 + for i := range in { + if in[i] == nil { + dst[i] = nil + continue + } + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + switch err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = n + } else if n != size { + // Shard sizes must match. + return ErrShardSize + } + dst[i] = dst[i][0:n] + case nil: + continue + default: + return StreamReadError{Err: err, Stream: i} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +func writeShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size do not match") + } + for i := range in { + if out[i] == nil { + continue + } + n, err := out[i].Write(in[i]) + if err != nil { + return StreamWriteError{Err: err, Stream: i} + } + // + if n != len(in[i]) { + return StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + } + return nil +} + +type readResult struct { + n int + size int + err error +} + +// cReadShards reads shards concurrently +func cReadShards(dst [][]byte, in []io.Reader) error { + if len(in) != len(dst) { + panic("internal error: in and dst size do not match") + } + var wg sync.WaitGroup + wg.Add(len(in)) + res := make(chan readResult, len(in)) + for i := range in { + if in[i] == nil { + dst[i] = nil + wg.Done() + continue + } + go func(i int) { + defer wg.Done() + n, err := io.ReadFull(in[i], dst[i]) + // The error is EOF only if no bytes were read. + // If an EOF happens after reading some but not all the bytes, + // ReadFull returns ErrUnexpectedEOF. + res <- readResult{size: n, err: err, n: i} + + }(i) + } + wg.Wait() + close(res) + size := -1 + for r := range res { + switch r.err { + case io.ErrUnexpectedEOF, io.EOF: + if size < 0 { + size = r.size + } else if r.size != size { + // Shard sizes must match. + return ErrShardSize + } + dst[r.n] = dst[r.n][0:r.size] + case nil: + default: + return StreamReadError{Err: r.err, Stream: r.n} + } + } + if size == 0 { + return io.EOF + } + return nil +} + +// cWriteShards writes shards concurrently +func cWriteShards(out []io.Writer, in [][]byte) error { + if len(out) != len(in) { + panic("internal error: in and out size do not match") + } + var errs = make(chan error, len(out)) + var wg sync.WaitGroup + wg.Add(len(out)) + for i := range in { + go func(i int) { + defer wg.Done() + if out[i] == nil { + errs <- nil + return + } + n, err := out[i].Write(in[i]) + if err != nil { + errs <- StreamWriteError{Err: err, Stream: i} + return + } + if n != len(in[i]) { + errs <- StreamWriteError{Err: io.ErrShortWrite, Stream: i} + } + }(i) + } + wg.Wait() + close(errs) + for err := range errs { + if err != nil { + return err + } + } + + return nil +} + +// Verify returns true if the parity shards contain correct data. +// +// The number of shards must match the number total data+parity shards +// given to NewStream(). +// +// Each reader must supply the same number of bytes. +// If a shard stream returns an error, a StreamReadError type error +// will be returned. +func (r rsStream) Verify(shards []io.Reader) (bool, error) { + if len(shards) != r.r.Shards { + return false, ErrTooFewShards + } + + read := 0 + all := createSlice(r.r.Shards, r.bs) + for { + err := r.readShards(all, shards) + if err == io.EOF { + if read == 0 { + return false, ErrShardNoData + } + return true, nil + } + if err != nil { + return false, err + } + read += shardSize(all) + ok, err := r.r.Verify(all) + if !ok || err != nil { + return ok, err + } + } +} + +// ErrReconstructMismatch is returned by the StreamEncoder, if you supply +// "valid" and "fill" streams on the same index. +// Therefore it is impossible to see if you consider the shard valid +// or would like to have it reconstructed. +var ErrReconstructMismatch = errors.New("valid shards and fill shards are mutually exclusive") + +// Reconstruct will recreate the missing shards if possible. +// +// Given a list of valid shards (to read) and invalid shards (to write) +// +// You indicate that a shard is missing by setting it to nil in the 'valid' +// slice and at the same time setting a non-nil writer in "fill". +// An index cannot contain both non-nil 'valid' and 'fill' entry. +// +// If there are too few shards to reconstruct the missing +// ones, ErrTooFewShards will be returned. +// +// The reconstructed shard set is complete when explicitly asked for all missing shards. +// However its integrity is not automatically verified. +// Use the Verify function to check in case the data set is complete. +func (r rsStream) Reconstruct(valid []io.Reader, fill []io.Writer) error { + if len(valid) != r.r.Shards { + return ErrTooFewShards + } + if len(fill) != r.r.Shards { + return ErrTooFewShards + } + + all := createSlice(r.r.Shards, r.bs) + reconDataOnly := true + for i := range valid { + if valid[i] != nil && fill[i] != nil { + return ErrReconstructMismatch + } + if i >= r.r.DataShards && fill[i] != nil { + reconDataOnly = false + } + } + + read := 0 + for { + err := r.readShards(all, valid) + if err == io.EOF { + if read == 0 { + return ErrShardNoData + } + return nil + } + if err != nil { + return err + } + read += shardSize(all) + all = trimShards(all, shardSize(all)) + + if reconDataOnly { + err = r.r.ReconstructData(all) // just reconstruct missing data shards + } else { + err = r.r.Reconstruct(all) // reconstruct all missing shards + } + if err != nil { + return err + } + err = r.writeShards(fill, all) + if err != nil { + return err + } + } +} + +// Join the shards and write the data segment to dst. +// +// Only the data shards are considered. +// +// You must supply the exact output size you want. +// If there are to few shards given, ErrTooFewShards will be returned. +// If the total data size is less than outSize, ErrShortData will be returned. +func (r rsStream) Join(dst io.Writer, shards []io.Reader, outSize int64) error { + // Do we have enough shards? + if len(shards) < r.r.DataShards { + return ErrTooFewShards + } + + // Trim off parity shards if any + shards = shards[:r.r.DataShards] + for i := range shards { + if shards[i] == nil { + return StreamReadError{Err: ErrShardNoData, Stream: i} + } + } + // Join all shards + src := io.MultiReader(shards...) + + // Copy data to dst + n, err := io.CopyN(dst, src, outSize) + if err == io.EOF { + return ErrShortData + } + if err != nil { + return err + } + if n != outSize { + return ErrShortData + } + return nil +} + +// Split a an input stream into the number of shards given to the encoder. +// +// The data will be split into equally sized shards. +// If the data size isn't dividable by the number of shards, +// the last shard will contain extra zeros. +// +// You must supply the total size of your input. +// 'ErrShortData' will be returned if it is unable to retrieve the +// number of bytes indicated. +func (r rsStream) Split(data io.Reader, dst []io.Writer, size int64) error { + if size == 0 { + return ErrShortData + } + if len(dst) != r.r.DataShards { + return ErrInvShardNum + } + + for i := range dst { + if dst[i] == nil { + return StreamWriteError{Err: ErrShardNoData, Stream: i} + } + } + + // Calculate number of bytes per shard. + perShard := (size + int64(r.r.DataShards) - 1) / int64(r.r.DataShards) + + // Pad data to r.Shards*perShard. + padding := make([]byte, (int64(r.r.Shards)*perShard)-size) + data = io.MultiReader(data, bytes.NewBuffer(padding)) + + // Split into equal-length shards and copy. + for i := range dst { + n, err := io.CopyN(dst[i], data, perShard) + if err != io.EOF && err != nil { + return err + } + if n != perShard { + return ErrShortData + } + } + + return nil +} diff --git a/vendor/github.com/kr/pty/.gitignore b/vendor/github.com/kr/pty/.gitignore new file mode 100644 index 0000000..1f0a99f --- /dev/null +++ b/vendor/github.com/kr/pty/.gitignore @@ -0,0 +1,4 @@ +[568].out +_go* +_test* +_obj diff --git a/vendor/github.com/kr/pty/License b/vendor/github.com/kr/pty/License new file mode 100644 index 0000000..6b7558b --- /dev/null +++ b/vendor/github.com/kr/pty/License @@ -0,0 +1,23 @@ +Copyright (c) 2011 Keith Rarick + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/kr/pty/README.md b/vendor/github.com/kr/pty/README.md new file mode 100644 index 0000000..f9bb002 --- /dev/null +++ b/vendor/github.com/kr/pty/README.md @@ -0,0 +1,100 @@ +# pty + +Pty is a Go package for using unix pseudo-terminals. + +## Install + + go get github.com/kr/pty + +## Example + +### Command + +```go +package main + +import ( + "github.com/kr/pty" + "io" + "os" + "os/exec" +) + +func main() { + c := exec.Command("grep", "--color=auto", "bar") + f, err := pty.Start(c) + if err != nil { + panic(err) + } + + go func() { + f.Write([]byte("foo\n")) + f.Write([]byte("bar\n")) + f.Write([]byte("baz\n")) + f.Write([]byte{4}) // EOT + }() + io.Copy(os.Stdout, f) +} +``` + +### Shell + +```go +package main + +import ( + "io" + "log" + "os" + "os/exec" + "os/signal" + "syscall" + + "github.com/kr/pty" + "golang.org/x/crypto/ssh/terminal" +) + +func test() error { + // Create arbitrary command. + c := exec.Command("bash") + + // Start the command with a pty. + ptmx, err := pty.Start(c) + if err != nil { + return err + } + // Make sure to close the pty at the end. + defer func() { _ = ptmx.Close() }() // Best effort. + + // Handle pty size. + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGWINCH) + go func() { + for range ch { + if err := pty.InheritSize(os.Stdin, ptmx); err != nil { + log.Printf("error resizing pty: %s", err) + } + } + }() + ch <- syscall.SIGWINCH // Initial resize. + + // Set stdin in raw mode. + oldState, err := terminal.MakeRaw(int(os.Stdin.Fd())) + if err != nil { + panic(err) + } + defer func() { _ = terminal.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. + + // Copy stdin to the pty and the pty to stdout. + go func() { _, _ = io.Copy(ptmx, os.Stdin) }() + _, _ = io.Copy(os.Stdout, ptmx) + + return nil +} + +func main() { + if err := test(); err != nil { + log.Fatal(err) + } +} +``` diff --git a/vendor/github.com/kr/pty/doc.go b/vendor/github.com/kr/pty/doc.go new file mode 100644 index 0000000..190cfbe --- /dev/null +++ b/vendor/github.com/kr/pty/doc.go @@ -0,0 +1,16 @@ +// Package pty provides functions for working with Unix terminals. +package pty + +import ( + "errors" + "os" +) + +// ErrUnsupported is returned if a function is not +// available on the current platform. +var ErrUnsupported = errors.New("unsupported") + +// Opens a pty and its corresponding tty. +func Open() (pty, tty *os.File, err error) { + return open() +} diff --git a/vendor/github.com/kr/pty/go.mod b/vendor/github.com/kr/pty/go.mod new file mode 100644 index 0000000..4a275a5 --- /dev/null +++ b/vendor/github.com/kr/pty/go.mod @@ -0,0 +1 @@ +module github.com/kr/pty diff --git a/vendor/github.com/kr/pty/ioctl.go b/vendor/github.com/kr/pty/ioctl.go new file mode 100644 index 0000000..c57c19e --- /dev/null +++ b/vendor/github.com/kr/pty/ioctl.go @@ -0,0 +1,13 @@ +// +build !windows + +package pty + +import "syscall" + +func ioctl(fd, cmd, ptr uintptr) error { + _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/github.com/kr/pty/ioctl_bsd.go b/vendor/github.com/kr/pty/ioctl_bsd.go new file mode 100644 index 0000000..73b12c5 --- /dev/null +++ b/vendor/github.com/kr/pty/ioctl_bsd.go @@ -0,0 +1,39 @@ +// +build darwin dragonfly freebsd netbsd openbsd + +package pty + +// from +const ( + _IOC_VOID uintptr = 0x20000000 + _IOC_OUT uintptr = 0x40000000 + _IOC_IN uintptr = 0x80000000 + _IOC_IN_OUT uintptr = _IOC_OUT | _IOC_IN + _IOC_DIRMASK = _IOC_VOID | _IOC_OUT | _IOC_IN + + _IOC_PARAM_SHIFT = 13 + _IOC_PARAM_MASK = (1 << _IOC_PARAM_SHIFT) - 1 +) + +func _IOC_PARM_LEN(ioctl uintptr) uintptr { + return (ioctl >> 16) & _IOC_PARAM_MASK +} + +func _IOC(inout uintptr, group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return inout | (param_len&_IOC_PARAM_MASK)<<16 | uintptr(group)<<8 | ioctl_num +} + +func _IO(group byte, ioctl_num uintptr) uintptr { + return _IOC(_IOC_VOID, group, ioctl_num, 0) +} + +func _IOR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_OUT, group, ioctl_num, param_len) +} + +func _IOW(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_IN, group, ioctl_num, param_len) +} + +func _IOWR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { + return _IOC(_IOC_IN_OUT, group, ioctl_num, param_len) +} diff --git a/vendor/github.com/kr/pty/mktypes.bash b/vendor/github.com/kr/pty/mktypes.bash new file mode 100644 index 0000000..82ee167 --- /dev/null +++ b/vendor/github.com/kr/pty/mktypes.bash @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +GOOSARCH="${GOOS}_${GOARCH}" +case "$GOOSARCH" in +_* | *_ | _) + echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 + exit 1 + ;; +esac + +GODEFS="go tool cgo -godefs" + +$GODEFS types.go |gofmt > ztypes_$GOARCH.go + +case $GOOS in +freebsd|dragonfly|openbsd) + $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go + ;; +esac diff --git a/vendor/github.com/kr/pty/pty_darwin.go b/vendor/github.com/kr/pty/pty_darwin.go new file mode 100644 index 0000000..6344b6b --- /dev/null +++ b/vendor/github.com/kr/pty/pty_darwin.go @@ -0,0 +1,65 @@ +package pty + +import ( + "errors" + "os" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + pFD, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_CLOEXEC, 0) + if err != nil { + return nil, nil, err + } + p := os.NewFile(uintptr(pFD), "/dev/ptmx") + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := grantpt(p); err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func ptsname(f *os.File) (string, error) { + n := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME)) + + err := ioctl(f.Fd(), syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) + if err != nil { + return "", err + } + + for i, c := range n { + if c == 0 { + return string(n[:i]), nil + } + } + return "", errors.New("TIOCPTYGNAME string not NUL-terminated") +} + +func grantpt(f *os.File) error { + return ioctl(f.Fd(), syscall.TIOCPTYGRANT, 0) +} + +func unlockpt(f *os.File) error { + return ioctl(f.Fd(), syscall.TIOCPTYUNLK, 0) +} diff --git a/vendor/github.com/kr/pty/pty_dragonfly.go b/vendor/github.com/kr/pty/pty_dragonfly.go new file mode 100644 index 0000000..b7d1f20 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_dragonfly.go @@ -0,0 +1,80 @@ +package pty + +import ( + "errors" + "os" + "strings" + "syscall" + "unsafe" +) + +// same code as pty_darwin.go +func open() (pty, tty *os.File, err error) { + p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := grantpt(p); err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func grantpt(f *os.File) error { + _, err := isptmaster(f.Fd()) + return err +} + +func unlockpt(f *os.File) error { + _, err := isptmaster(f.Fd()) + return err +} + +func isptmaster(fd uintptr) (bool, error) { + err := ioctl(fd, syscall.TIOCISPTMASTER, 0) + return err == nil, err +} + +var ( + emptyFiodgnameArg fiodgnameArg + ioctl_FIODNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) +) + +func ptsname(f *os.File) (string, error) { + name := make([]byte, _C_SPECNAMELEN) + fa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}} + + err := ioctl(f.Fd(), ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) + if err != nil { + return "", err + } + + for i, c := range name { + if c == 0 { + s := "/dev/" + string(name[:i]) + return strings.Replace(s, "ptm", "pts", -1), nil + } + } + return "", errors.New("TIOCPTYGNAME string not NUL-terminated") +} diff --git a/vendor/github.com/kr/pty/pty_freebsd.go b/vendor/github.com/kr/pty/pty_freebsd.go new file mode 100644 index 0000000..63b6d91 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_freebsd.go @@ -0,0 +1,78 @@ +package pty + +import ( + "errors" + "os" + "syscall" + "unsafe" +) + +func posixOpenpt(oflag int) (fd int, err error) { + r0, _, e1 := syscall.Syscall(syscall.SYS_POSIX_OPENPT, uintptr(oflag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return fd, err +} + +func open() (pty, tty *os.File, err error) { + fd, err := posixOpenpt(syscall.O_RDWR | syscall.O_CLOEXEC) + if err != nil { + return nil, nil, err + } + p := os.NewFile(uintptr(fd), "/dev/pts") + // In case of error after this point, make sure we close the pts fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + t, err := os.OpenFile("/dev/"+sname, os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func isptmaster(fd uintptr) (bool, error) { + err := ioctl(fd, syscall.TIOCPTMASTER, 0) + return err == nil, err +} + +var ( + emptyFiodgnameArg fiodgnameArg + ioctlFIODGNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) +) + +func ptsname(f *os.File) (string, error) { + master, err := isptmaster(f.Fd()) + if err != nil { + return "", err + } + if !master { + return "", syscall.EINVAL + } + + const n = _C_SPECNAMELEN + 1 + var ( + buf = make([]byte, n) + arg = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))} + ) + if err := ioctl(f.Fd(), ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil { + return "", err + } + + for i, c := range buf { + if c == 0 { + return string(buf[:i]), nil + } + } + return "", errors.New("FIODGNAME string not NUL-terminated") +} diff --git a/vendor/github.com/kr/pty/pty_linux.go b/vendor/github.com/kr/pty/pty_linux.go new file mode 100644 index 0000000..4a833de --- /dev/null +++ b/vendor/github.com/kr/pty/pty_linux.go @@ -0,0 +1,51 @@ +package pty + +import ( + "os" + "strconv" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) + if err != nil { + return nil, nil, err + } + // In case of error after this point, make sure we close the ptmx fd. + defer func() { + if err != nil { + _ = p.Close() // Best effort. + } + }() + + sname, err := ptsname(p) + if err != nil { + return nil, nil, err + } + + if err := unlockpt(p); err != nil { + return nil, nil, err + } + + t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) + if err != nil { + return nil, nil, err + } + return p, t, nil +} + +func ptsname(f *os.File) (string, error) { + var n _C_uint + err := ioctl(f.Fd(), syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) + if err != nil { + return "", err + } + return "/dev/pts/" + strconv.Itoa(int(n)), nil +} + +func unlockpt(f *os.File) error { + var u _C_int + // use TIOCSPTLCK with a pointer to zero to clear the lock + return ioctl(f.Fd(), syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) +} diff --git a/vendor/github.com/kr/pty/pty_openbsd.go b/vendor/github.com/kr/pty/pty_openbsd.go new file mode 100644 index 0000000..a6a35d1 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_openbsd.go @@ -0,0 +1,33 @@ +package pty + +import ( + "os" + "syscall" + "unsafe" +) + +func open() (pty, tty *os.File, err error) { + /* + * from ptm(4): + * The PTMGET command allocates a free pseudo terminal, changes its + * ownership to the caller, revokes the access privileges for all previous + * users, opens the file descriptors for the pty and tty devices and + * returns them to the caller in struct ptmget. + */ + + p, err := os.OpenFile("/dev/ptm", os.O_RDWR|syscall.O_CLOEXEC, 0) + if err != nil { + return nil, nil, err + } + defer p.Close() + + var ptm ptmget + if err := ioctl(p.Fd(), uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil { + return nil, nil, err + } + + pty = os.NewFile(uintptr(ptm.Cfd), "/dev/ptm") + tty = os.NewFile(uintptr(ptm.Sfd), "/dev/ptm") + + return pty, tty, nil +} diff --git a/vendor/github.com/kr/pty/pty_unsupported.go b/vendor/github.com/kr/pty/pty_unsupported.go new file mode 100644 index 0000000..9a3e721 --- /dev/null +++ b/vendor/github.com/kr/pty/pty_unsupported.go @@ -0,0 +1,11 @@ +// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd + +package pty + +import ( + "os" +) + +func open() (pty, tty *os.File, err error) { + return nil, nil, ErrUnsupported +} diff --git a/vendor/github.com/kr/pty/run.go b/vendor/github.com/kr/pty/run.go new file mode 100644 index 0000000..56a26ad --- /dev/null +++ b/vendor/github.com/kr/pty/run.go @@ -0,0 +1,56 @@ +// +build !windows + +package pty + +import ( + "os" + "os/exec" + "syscall" +) + +// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +func Start(c *exec.Cmd) (pty *os.File, err error) { + return StartWithSize(c, nil) +} + +// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, +// and c.Stderr, calls c.Start, and returns the File of the tty's +// corresponding pty. +// +// This will resize the pty to the specified size before starting the command +func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { + pty, tty, err := Open() + if err != nil { + return nil, err + } + defer tty.Close() + if sz != nil { + err = Setsize(pty, sz) + if err != nil { + pty.Close() + return nil, err + } + } + if c.Stdout == nil { + c.Stdout = tty + } + if c.Stderr == nil { + c.Stderr = tty + } + if c.Stdin == nil { + c.Stdin = tty + } + if c.SysProcAttr == nil { + c.SysProcAttr = &syscall.SysProcAttr{} + } + c.SysProcAttr.Setctty = true + c.SysProcAttr.Setsid = true + err = c.Start() + if err != nil { + pty.Close() + return nil, err + } + return pty, err +} diff --git a/vendor/github.com/kr/pty/types.go b/vendor/github.com/kr/pty/types.go new file mode 100644 index 0000000..5aecb6b --- /dev/null +++ b/vendor/github.com/kr/pty/types.go @@ -0,0 +1,10 @@ +// +build ignore + +package pty + +import "C" + +type ( + _C_int C.int + _C_uint C.uint +) diff --git a/vendor/github.com/kr/pty/types_dragonfly.go b/vendor/github.com/kr/pty/types_dragonfly.go new file mode 100644 index 0000000..5c0493b --- /dev/null +++ b/vendor/github.com/kr/pty/types_dragonfly.go @@ -0,0 +1,17 @@ +// +build ignore + +package pty + +/* +#define _KERNEL +#include +#include +#include +*/ +import "C" + +const ( + _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ +) + +type fiodgnameArg C.struct_fiodname_args diff --git a/vendor/github.com/kr/pty/types_freebsd.go b/vendor/github.com/kr/pty/types_freebsd.go new file mode 100644 index 0000000..ce3eb95 --- /dev/null +++ b/vendor/github.com/kr/pty/types_freebsd.go @@ -0,0 +1,15 @@ +// +build ignore + +package pty + +/* +#include +#include +*/ +import "C" + +const ( + _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ +) + +type fiodgnameArg C.struct_fiodgname_arg diff --git a/vendor/github.com/kr/pty/types_openbsd.go b/vendor/github.com/kr/pty/types_openbsd.go new file mode 100644 index 0000000..47701b5 --- /dev/null +++ b/vendor/github.com/kr/pty/types_openbsd.go @@ -0,0 +1,14 @@ +// +build ignore + +package pty + +/* +#include +#include +#include +*/ +import "C" + +type ptmget C.struct_ptmget + +var ioctl_PTMGET = C.PTMGET diff --git a/vendor/github.com/kr/pty/util.go b/vendor/github.com/kr/pty/util.go new file mode 100644 index 0000000..2fa741c --- /dev/null +++ b/vendor/github.com/kr/pty/util.go @@ -0,0 +1,64 @@ +// +build !windows + +package pty + +import ( + "os" + "syscall" + "unsafe" +) + +// InheritSize applies the terminal size of pty to tty. This should be run +// in a signal handler for syscall.SIGWINCH to automatically resize the tty when +// the pty receives a window size change notification. +func InheritSize(pty, tty *os.File) error { + size, err := GetsizeFull(pty) + if err != nil { + return err + } + err = Setsize(tty, size) + if err != nil { + return err + } + return nil +} + +// Setsize resizes t to s. +func Setsize(t *os.File, ws *Winsize) error { + return windowRectCall(ws, t.Fd(), syscall.TIOCSWINSZ) +} + +// GetsizeFull returns the full terminal size description. +func GetsizeFull(t *os.File) (size *Winsize, err error) { + var ws Winsize + err = windowRectCall(&ws, t.Fd(), syscall.TIOCGWINSZ) + return &ws, err +} + +// Getsize returns the number of rows (lines) and cols (positions +// in each line) in terminal t. +func Getsize(t *os.File) (rows, cols int, err error) { + ws, err := GetsizeFull(t) + return int(ws.Rows), int(ws.Cols), err +} + +// Winsize describes the terminal size. +type Winsize struct { + Rows uint16 // ws_row: Number of rows (in cells) + Cols uint16 // ws_col: Number of columns (in cells) + X uint16 // ws_xpixel: Width in pixels + Y uint16 // ws_ypixel: Height in pixels +} + +func windowRectCall(ws *Winsize, fd, a2 uintptr) error { + _, _, errno := syscall.Syscall( + syscall.SYS_IOCTL, + fd, + a2, + uintptr(unsafe.Pointer(ws)), + ) + if errno != 0 { + return syscall.Errno(errno) + } + return nil +} diff --git a/vendor/github.com/kr/pty/ztypes_386.go b/vendor/github.com/kr/pty/ztypes_386.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_386.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_amd64.go b/vendor/github.com/kr/pty/ztypes_amd64.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_amd64.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_arm.go b/vendor/github.com/kr/pty/ztypes_arm.go new file mode 100644 index 0000000..ff0b8fd --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_arm.go @@ -0,0 +1,9 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_arm64.go b/vendor/github.com/kr/pty/ztypes_arm64.go new file mode 100644 index 0000000..6c29a4b --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_arm64.go @@ -0,0 +1,11 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +// +build arm64 + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go new file mode 100644 index 0000000..6b0ba03 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go @@ -0,0 +1,14 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_dragonfly.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Name *byte + Len uint32 + Pad_cgo_0 [4]byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_386.go b/vendor/github.com/kr/pty/ztypes_freebsd_386.go new file mode 100644 index 0000000..d997537 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_386.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go new file mode 100644 index 0000000..5fa102f --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go @@ -0,0 +1,14 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Pad_cgo_0 [4]byte + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go new file mode 100644 index 0000000..d997537 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_freebsd.go + +package pty + +const ( + _C_SPECNAMELEN = 0x3f +) + +type fiodgnameArg struct { + Len int32 + Buf *byte +} diff --git a/vendor/github.com/kr/pty/ztypes_mipsx.go b/vendor/github.com/kr/pty/ztypes_mipsx.go new file mode 100644 index 0000000..f0ce740 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_mipsx.go @@ -0,0 +1,12 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +// +build linux +// +build mips mipsle mips64 mips64le + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_386.go b/vendor/github.com/kr/pty/ztypes_openbsd_386.go new file mode 100644 index 0000000..ccb3aab --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_openbsd_386.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +package pty + +type ptmget struct { + Cfd int32 + Sfd int32 + Cn [16]int8 + Sn [16]int8 +} + +var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go b/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go new file mode 100644 index 0000000..e670516 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go @@ -0,0 +1,13 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +package pty + +type ptmget struct { + Cfd int32 + Sfd int32 + Cn [16]int8 + Sn [16]int8 +} + +var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_ppc64.go b/vendor/github.com/kr/pty/ztypes_ppc64.go new file mode 100644 index 0000000..4e1af84 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_ppc64.go @@ -0,0 +1,11 @@ +// +build ppc64 + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_ppc64le.go b/vendor/github.com/kr/pty/ztypes_ppc64le.go new file mode 100644 index 0000000..e6780f4 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_ppc64le.go @@ -0,0 +1,11 @@ +// +build ppc64le + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/kr/pty/ztypes_s390x.go b/vendor/github.com/kr/pty/ztypes_s390x.go new file mode 100644 index 0000000..a7452b6 --- /dev/null +++ b/vendor/github.com/kr/pty/ztypes_s390x.go @@ -0,0 +1,11 @@ +// +build s390x + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types.go + +package pty + +type ( + _C_int int32 + _C_uint uint32 +) diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml new file mode 100644 index 0000000..5597e02 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/.travis.yml @@ -0,0 +1,13 @@ +language: go +go: + - tip + +os: + - linux + - osx + +before_install: + - go get github.com/mattn/goveralls + - go get golang.org/x/tools/cmd/cover +script: + - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 diff --git a/vendor/github.com/mattn/go-isatty/LICENSE b/vendor/github.com/mattn/go-isatty/LICENSE new file mode 100644 index 0000000..65dc692 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/LICENSE @@ -0,0 +1,9 @@ +Copyright (c) Yasuhiro MATSUMOTO + +MIT License (Expat) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md new file mode 100644 index 0000000..1e69004 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/README.md @@ -0,0 +1,50 @@ +# go-isatty + +[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) +[![Build Status](https://travis-ci.org/mattn/go-isatty.svg?branch=master)](https://travis-ci.org/mattn/go-isatty) +[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) +[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) + +isatty for golang + +## Usage + +```go +package main + +import ( + "fmt" + "github.com/mattn/go-isatty" + "os" +) + +func main() { + if isatty.IsTerminal(os.Stdout.Fd()) { + fmt.Println("Is Terminal") + } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { + fmt.Println("Is Cygwin/MSYS2 Terminal") + } else { + fmt.Println("Is Not Terminal") + } +} +``` + +## Installation + +``` +$ go get github.com/mattn/go-isatty +``` + +## License + +MIT + +## Author + +Yasuhiro Matsumoto (a.k.a mattn) + +## Thanks + +* k-takata: base idea for IsCygwinTerminal + + https://github.com/k-takata/go-iscygpty diff --git a/vendor/github.com/mattn/go-isatty/doc.go b/vendor/github.com/mattn/go-isatty/doc.go new file mode 100644 index 0000000..17d4f90 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/doc.go @@ -0,0 +1,2 @@ +// Package isatty implements interface to isatty +package isatty diff --git a/vendor/github.com/mattn/go-isatty/go.mod b/vendor/github.com/mattn/go-isatty/go.mod new file mode 100644 index 0000000..f310320 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.mod @@ -0,0 +1,3 @@ +module github.com/mattn/go-isatty + +require golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 diff --git a/vendor/github.com/mattn/go-isatty/go.sum b/vendor/github.com/mattn/go-isatty/go.sum new file mode 100644 index 0000000..426c897 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/go.sum @@ -0,0 +1,2 @@ +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/mattn/go-isatty/isatty_android.go b/vendor/github.com/mattn/go-isatty/isatty_android.go new file mode 100644 index 0000000..d3567cb --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_android.go @@ -0,0 +1,23 @@ +// +build android + +package isatty + +import ( + "syscall" + "unsafe" +) + +const ioctlReadTermios = syscall.TCGETS + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go new file mode 100644 index 0000000..07e9303 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_bsd.go @@ -0,0 +1,24 @@ +// +build darwin freebsd openbsd netbsd dragonfly +// +build !appengine + +package isatty + +import ( + "syscall" + "unsafe" +) + +const ioctlReadTermios = syscall.TIOCGETA + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux.go b/vendor/github.com/mattn/go-isatty/isatty_linux.go new file mode 100644 index 0000000..4f8af46 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_linux.go @@ -0,0 +1,19 @@ +// +build linux +// +build !appengine +// +build !android + +package isatty + +import "golang.org/x/sys/unix" + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go new file mode 100644 index 0000000..f02849c --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_others.go @@ -0,0 +1,15 @@ +// +build appengine js + +package isatty + +// IsTerminal returns true if the file descriptor is terminal which +// is always false on js and appengine classic which is a sandboxed PaaS. +func IsTerminal(fd uintptr) bool { + return false +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go new file mode 100644 index 0000000..bdd5c79 --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_solaris.go @@ -0,0 +1,22 @@ +// +build solaris +// +build !appengine + +package isatty + +import ( + "golang.org/x/sys/unix" +) + +// IsTerminal returns true if the given file descriptor is a terminal. +// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c +func IsTerminal(fd uintptr) bool { + var termio unix.Termio + err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) + return err == nil +} + +// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 +// terminal. This is also always false on this environment. +func IsCygwinTerminal(fd uintptr) bool { + return false +} diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go new file mode 100644 index 0000000..af51cbc --- /dev/null +++ b/vendor/github.com/mattn/go-isatty/isatty_windows.go @@ -0,0 +1,94 @@ +// +build windows +// +build !appengine + +package isatty + +import ( + "strings" + "syscall" + "unicode/utf16" + "unsafe" +) + +const ( + fileNameInfo uintptr = 2 + fileTypePipe = 3 +) + +var ( + kernel32 = syscall.NewLazyDLL("kernel32.dll") + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") + procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") + procGetFileType = kernel32.NewProc("GetFileType") +) + +func init() { + // Check if GetFileInformationByHandleEx is available. + if procGetFileInformationByHandleEx.Find() != nil { + procGetFileInformationByHandleEx = nil + } +} + +// IsTerminal return true if the file descriptor is terminal. +func IsTerminal(fd uintptr) bool { + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} + +// Check pipe name is used for cygwin/msys2 pty. +// Cygwin/MSYS2 PTY has a name like: +// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master +func isCygwinPipeName(name string) bool { + token := strings.Split(name, "-") + if len(token) < 5 { + return false + } + + if token[0] != `\msys` && token[0] != `\cygwin` { + return false + } + + if token[1] == "" { + return false + } + + if !strings.HasPrefix(token[2], "pty") { + return false + } + + if token[3] != `from` && token[3] != `to` { + return false + } + + if token[4] != "master" { + return false + } + + return true +} + +// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 +// terminal. +func IsCygwinTerminal(fd uintptr) bool { + if procGetFileInformationByHandleEx == nil { + return false + } + + // Cygwin/msys's pty is a pipe. + ft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0) + if ft != fileTypePipe || e != 0 { + return false + } + + var buf [2 + syscall.MAX_PATH]uint16 + r, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), + 4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)), + uintptr(len(buf)*2), 0, 0) + if r == 0 || e != 0 { + return false + } + + l := *(*uint32)(unsafe.Pointer(&buf)) + return isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2]))) +} diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..d4b9266 --- /dev/null +++ b/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,15 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.4.x + - 1.5.x + - 1.6.x + - 1.7.x + - 1.8.x + - 1.9.x + - 1.10.x + - 1.11.x + - tip + +script: + - go test -v ./... diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..6483ba2 --- /dev/null +++ b/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,52 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Contributing + +We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. + +Before proposing a change, please discuss your change by raising an issue. + +## License + +BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..7421f32 --- /dev/null +++ b/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,282 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which when applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// together with the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required, the errors.WithStack and +// errors.WithMessage functions destructure errors.Wrap into its component +// operations: annotating an error with a stack trace and with a message, +// respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error that does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// Although the causer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported: +// +// %s print the error. If the error has a Cause it will be +// printed recursively. +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface: +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// The returned errors.StackTrace type is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d", f) +// } +// } +// +// Although the stackTracer interface is not exported by this package, it is +// considered a part of its stable public interface. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is called, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +// WithMessagef annotates err with the format specifier. +// If err is nil, WithMessagef returns nil. +func WithMessagef(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..2874a04 --- /dev/null +++ b/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,147 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strings" +) + +// Frame represents a program counter inside a stack frame. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s function name and path of source file relative to the compile time +// GOPATH separated by \n\t (\n\t) +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + pc := f.pc() + fn := runtime.FuncForPC(pc) + if fn == nil { + io.WriteString(s, "unknown") + } else { + file, _ := fn.FileLine(pc) + fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) + } + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + fmt.Fprintf(s, "%d", f.line()) + case 'n': + name := runtime.FuncForPC(f.pc()).Name() + io.WriteString(s, funcname(name)) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + fmt.Fprintf(s, "\n%+v", f) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + fmt.Fprintf(s, "%v", []Frame(st)) + } + case 's': + fmt.Fprintf(s, "%s", []Frame(st)) + } +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} diff --git a/vendor/github.com/templexxx/cpufeat/.gitignore b/vendor/github.com/templexxx/cpufeat/.gitignore new file mode 100644 index 0000000..08baa1a --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/.gitignore @@ -0,0 +1,15 @@ +# Binaries for programs and plugins +*.exe +*.dll +*.so +*.dylib + +# Test binary, build with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 +.glide/ +.idea diff --git a/vendor/github.com/templexxx/cpufeat/LICENSE b/vendor/github.com/templexxx/cpufeat/LICENSE new file mode 100644 index 0000000..ea5ea89 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/templexxx/cpufeat/README.md b/vendor/github.com/templexxx/cpufeat/README.md new file mode 100644 index 0000000..16afe53 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/README.md @@ -0,0 +1 @@ +see: https://github.com/templexxx/cpu diff --git a/vendor/github.com/templexxx/cpufeat/cpu.go b/vendor/github.com/templexxx/cpufeat/cpu.go new file mode 100644 index 0000000..dd5a949 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection +// used by the Go standard libary. +package cpufeat + +var X86 x86 + +// The booleans in x86 contain the correspondingly named cpuid feature bit. +// HasAVX and HasAVX2 are only set if the OS does support XMM and YMM registers +// in addition to the cpuid feature bit being set. +// The struct is padded to avoid false sharing. +type x86 struct { + _ [CacheLineSize]byte + HasAES bool + HasAVX bool + HasAVX2 bool + HasAVX512 bool + HasBMI1 bool + HasBMI2 bool + HasERMS bool + HasOSXSAVE bool + HasPCLMULQDQ bool + HasPOPCNT bool + HasSSE2 bool + HasSSE3 bool + HasSSSE3 bool + HasSSE41 bool + HasSSE42 bool + _ [CacheLineSize]byte +} diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm.go b/vendor/github.com/templexxx/cpufeat/cpu_arm.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_arm.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm64.go b/vendor/github.com/templexxx/cpufeat/cpu_arm64.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_arm64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips.go b/vendor/github.com/templexxx/cpufeat/cpu_mips.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go b/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go new file mode 100644 index 0000000..b3eb5a9 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go new file mode 100644 index 0000000..1e738e3 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go new file mode 100644 index 0000000..1e738e3 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_s390x.go b/vendor/github.com/templexxx/cpufeat/cpu_s390x.go new file mode 100644 index 0000000..17be8fe --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_s390x.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpufeat + +const CacheLineSize = 256 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_x86.go b/vendor/github.com/templexxx/cpufeat/cpu_x86.go new file mode 100644 index 0000000..19d6d22 --- /dev/null +++ b/vendor/github.com/templexxx/cpufeat/cpu_x86.go @@ -0,0 +1,70 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 + +package cpufeat + +const CacheLineSize = 64 + +// cpuid is implemented in cpu_x86.s. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_x86.s. +func xgetbv() (eax, edx uint32) + +func init() { + maxId, _, _, _ := cpuid(0, 0) + + if maxId < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(26, edx1) + + X86.HasSSE3 = isSet(0, ecx1) + X86.HasPCLMULQDQ = isSet(1, ecx1) + X86.HasSSSE3 = isSet(9, ecx1) + X86.HasSSE41 = isSet(19, ecx1) + X86.HasSSE42 = isSet(20, ecx1) + X86.HasPOPCNT = isSet(23, ecx1) + X86.HasAES = isSet(25, ecx1) + X86.HasOSXSAVE = isSet(27, ecx1) + + osSupportsAVX := false + osSupportAVX512 := false + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(1, eax) && isSet(2, eax) + // Check is ZMM registers have OS support. + osSupportAVX512 = (eax>>5)&7 == 7 && (eax>>1)&3 == 3 + } + + X86.HasAVX = isSet(28, ecx1) && osSupportsAVX + + if maxId < 7 { + return + } + + _, ebx7, _, _ := cpuid(7, 0) + X86.HasBMI1 = isSet(3, ebx7) + X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX + X86.HasBMI2 = isSet(8, ebx7) + X86.HasERMS = isSet(9, ebx7) + X86.HasAVX512 = hasAVX512(ebx7) && osSupportAVX512 +} + +func isSet(bitpos uint, value uint32) bool { + return value&(1< 0 { + wordBytes := w * wordSize + fastXORWords(dst[:wordBytes], a[:wordBytes], b[:wordBytes]) + } + for i := n - n%wordSize; i < n; i++ { + dst[i] = a[i] ^ b[i] + } +} + +func safeXORBytes(dst, a, b []byte, n int) { + ex := n % 8 + for i := 0; i < ex; i++ { + dst[i] = a[i] ^ b[i] + } + + for i := ex; i < n; i += 8 { + _dst := dst[i : i+8] + _a := a[i : i+8] + _b := b[i : i+8] + _dst[0] = _a[0] ^ _b[0] + _dst[1] = _a[1] ^ _b[1] + _dst[2] = _a[2] ^ _b[2] + _dst[3] = _a[3] ^ _b[3] + + _dst[4] = _a[4] ^ _b[4] + _dst[5] = _a[5] ^ _b[5] + _dst[6] = _a[6] ^ _b[6] + _dst[7] = _a[7] ^ _b[7] + } +} + +// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) +// The arguments are assumed to be of equal length. +func fastXORWords(dst, a, b []byte) { + dw := *(*[]uintptr)(unsafe.Pointer(&dst)) + aw := *(*[]uintptr)(unsafe.Pointer(&a)) + bw := *(*[]uintptr)(unsafe.Pointer(&b)) + n := len(b) / wordSize + ex := n % 8 + for i := 0; i < ex; i++ { + dw[i] = aw[i] ^ bw[i] + } + + for i := ex; i < n; i += 8 { + _dw := dw[i : i+8] + _aw := aw[i : i+8] + _bw := bw[i : i+8] + _dw[0] = _aw[0] ^ _bw[0] + _dw[1] = _aw[1] ^ _bw[1] + _dw[2] = _aw[2] ^ _bw[2] + _dw[3] = _aw[3] ^ _bw[3] + _dw[4] = _aw[4] ^ _bw[4] + _dw[5] = _aw[5] ^ _bw[5] + _dw[6] = _aw[6] ^ _bw[6] + _dw[7] = _aw[7] ^ _bw[7] + } +} diff --git a/vendor/github.com/templexxx/xor/sse2_amd64.s b/vendor/github.com/templexxx/xor/sse2_amd64.s new file mode 100644 index 0000000..d7f702b --- /dev/null +++ b/vendor/github.com/templexxx/xor/sse2_amd64.s @@ -0,0 +1,574 @@ +#include "textflag.h" + +// addr of mem +#define DST BX +#define SRC SI +#define SRC0 TMP4 +#define SRC1 TMP5 + +// loop args +// num of vect +#define VECT CX +#define LEN DX +// pos of matrix +#define POS R8 + +// tmp store +// num of vect or ... +#define TMP1 R9 +// pos of matrix or ... +#define TMP2 R10 +// store addr of data/parity or ... +#define TMP3 R11 +#define TMP4 R12 +#define TMP5 R13 +#define TMP6 R14 + +// func bytesSrc0(dst, src0, src1 []byte) +TEXT ·xorSrc0(SB), NOSPLIT, $0 + MOVQ len+32(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSrc1(dst, src0, src1 []byte) +TEXT ·xorSrc1(SB), NOSPLIT, $0 + MOVQ len+56(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2mini(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2mini(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $15, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop16b: + MOVOU (SRC0)(POS*1), X0 + XORPD (SRC1)(POS*1), X0 + + // MOVOU (SRC1)(POS*1), X4 + // PXOR X4, X0 + MOVOU X0, (DST)(POS*1) + ADDQ $16, POS + CMPQ LEN, POS + JNE loop16b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $15, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $15, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $16 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2small(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2small(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVOU (SRC0)(POS*1), X0 + MOVOU 16(SRC0)(POS*1), X1 + MOVOU 32(SRC0)(POS*1), X2 + MOVOU 48(SRC0)(POS*1), X3 + + MOVOU (SRC1)(POS*1), X4 + MOVOU 16(SRC1)(POS*1), X5 + MOVOU 32(SRC1)(POS*1), X6 + MOVOU 48(SRC1)(POS*1), X7 + + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + + MOVOU X0, (DST)(POS*1) + MOVOU X1, 16(DST)(POS*1) + MOVOU X2, 32(DST)(POS*1) + MOVOU X3, 48(DST)(POS*1) + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $63, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func bytesSSE2big(dst, src0, src1 []byte, size int) +TEXT ·bytesSSE2big(SB), NOSPLIT, $0 + MOVQ len+72(FP), LEN + CMPQ LEN, $0 + JE ret + MOVQ dst+0(FP), DST + MOVQ src0+24(FP), SRC0 + MOVQ src1+48(FP), SRC1 + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVOU (SRC0)(POS*1), X0 + MOVOU 16(SRC0)(POS*1), X1 + MOVOU 32(SRC0)(POS*1), X2 + MOVOU 48(SRC0)(POS*1), X3 + + MOVOU (SRC1)(POS*1), X4 + MOVOU 16(SRC1)(POS*1), X5 + MOVOU 32(SRC1)(POS*1), X6 + MOVOU 48(SRC1)(POS*1), X7 + + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + + LONG $0xe70f4266; WORD $0x0304 // MOVNTDQ + LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 + LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 + LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVB -1(SRC0)(LEN*1), TMP1 + MOVB -1(SRC1)(LEN*1), TMP2 + XORB TMP1, TMP2 + MOVB TMP2, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP1 + ANDQ $63, TMP1 + +loop_8b: + MOVQ -8(SRC0)(LEN*1), TMP2 + MOVQ -8(SRC1)(LEN*1), TMP3 + XORQ TMP2, TMP3 + MOVQ TMP3, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP1 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func matrixSSE2small(dst []byte, src [][]byte) +TEXT ·matrixSSE2small(SB), NOSPLIT, $0 + MOVQ dst+0(FP), DST + MOVQ src+24(FP), SRC + MOVQ vec+32(FP), VECT + MOVQ len+8(FP), LEN + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVQ VECT, TMP1 + SUBQ $2, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X0 + MOVOU 16(TMP4)(POS*1), X1 + MOVOU 32(TMP3)(POS*1), X2 + MOVOU 48(TMP4)(POS*1), X3 + +next_vect: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X4 + MOVOU 16(TMP4)(POS*1), X5 + MOVOU 32(TMP3)(POS*1), X6 + MOVOU 48(TMP4)(POS*1), X7 + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + SUBQ $1, TMP1 + JGE next_vect + + MOVOU X0, (DST)(POS*1) + MOVOU X1, 16(DST)(POS*1) + MOVOU X2, 32(DST)(POS*1) + MOVOU X3, 48(DST)(POS*1) + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVB -1(TMP3)(LEN*1), TMP5 + +next_vect_1b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVB -1(TMP3)(LEN*1), TMP6 + XORB TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_1b + + MOVB TMP5, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP4 + ANDQ $63, TMP4 + +loop_8b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVQ -8(TMP3)(LEN*1), TMP5 + +next_vect_8b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ -8(TMP3)(LEN*1), TMP6 + XORQ TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_8b + + MOVQ TMP5, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP4 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +// func matrixSSE2big(dst []byte, src [][]byte) +TEXT ·matrixSSE2big(SB), NOSPLIT, $0 + MOVQ dst+0(FP), DST + MOVQ src+24(FP), SRC + MOVQ vec+32(FP), VECT + MOVQ len+8(FP), LEN + TESTQ $63, LEN + JNZ not_aligned + +aligned: + MOVQ $0, POS + +loop64b: + MOVQ VECT, TMP1 + SUBQ $2, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X0 + MOVOU 16(TMP4)(POS*1), X1 + MOVOU 32(TMP3)(POS*1), X2 + MOVOU 48(TMP4)(POS*1), X3 + +next_vect: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ TMP3, TMP4 + MOVOU (TMP3)(POS*1), X4 + MOVOU 16(TMP4)(POS*1), X5 + MOVOU 32(TMP3)(POS*1), X6 + MOVOU 48(TMP4)(POS*1), X7 + PXOR X4, X0 + PXOR X5, X1 + PXOR X6, X2 + PXOR X7, X3 + SUBQ $1, TMP1 + JGE next_vect + + LONG $0xe70f4266; WORD $0x0304 + LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 + LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 + LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 + + ADDQ $64, POS + CMPQ LEN, POS + JNE loop64b + RET + +loop_1b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVB -1(TMP3)(LEN*1), TMP5 + +next_vect_1b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVB -1(TMP3)(LEN*1), TMP6 + XORB TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_1b + + MOVB TMP5, -1(DST)(LEN*1) + SUBQ $1, LEN + TESTQ $7, LEN + JNZ loop_1b + + CMPQ LEN, $0 + JE ret + TESTQ $63, LEN + JZ aligned + +not_aligned: + TESTQ $7, LEN + JNE loop_1b + MOVQ LEN, TMP4 + ANDQ $63, TMP4 + +loop_8b: + MOVQ VECT, TMP1 + MOVQ $0, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + SUBQ $2, TMP1 + MOVQ -8(TMP3)(LEN*1), TMP5 + +next_vect_8b: + ADDQ $24, TMP2 + MOVQ (SRC)(TMP2*1), TMP3 + MOVQ -8(TMP3)(LEN*1), TMP6 + XORQ TMP6, TMP5 + SUBQ $1, TMP1 + JGE next_vect_8b + + MOVQ TMP5, -8(DST)(LEN*1) + SUBQ $8, LEN + SUBQ $8, TMP4 + JG loop_8b + + CMPQ LEN, $64 + JGE aligned + RET + +ret: + RET + +TEXT ·hasSSE2(SB), NOSPLIT, $0 + XORQ AX, AX + INCL AX + CPUID + SHRQ $26, DX + ANDQ $1, DX + MOVB DX, ret+0(FP) + RET + diff --git a/vendor/github.com/templexxx/xor/xor.go b/vendor/github.com/templexxx/xor/xor.go new file mode 100644 index 0000000..2fa5616 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor.go @@ -0,0 +1,49 @@ +package xor + +// SIMD Extensions +const ( + none = iota + avx2 + // first introduced by Intel with the initial version of the Pentium 4 in 2001 + // so I think we can assume all amd64 has sse2 + sse2 +) + +var extension = none + +// Bytes : chose the shortest one as xor size +// it's better to use it for big data ( > 64bytes ) +func Bytes(dst, src0, src1 []byte) { + size := len(dst) + if size > len(src0) { + size = len(src0) + } + if size > len(src1) { + size = len(src1) + } + xorBytes(dst, src0, src1, size) +} + +// BytesSameLen : all slice's length must be equal +// cut size branch, save time for small data +func BytesSameLen(dst, src0, src1 []byte) { + xorSrc1(dst, src0, src1) +} + +// BytesSrc0 : src1 >= src0, dst >= src0 +// xor src0's len bytes +func BytesSrc0(dst, src0, src1 []byte) { + xorSrc0(dst, src0, src1) +} + +// BytesSrc1 : src0 >= src1, dst >= src1 +// xor src1's len bytes +func BytesSrc1(dst, src0, src1 []byte) { + xorSrc1(dst, src0, src1) +} + +// Matrix : all slice's length must be equal && != 0 +// len(src) must >= 2 +func Matrix(dst []byte, src [][]byte) { + xorMatrix(dst, src) +} diff --git a/vendor/github.com/templexxx/xor/xor_amd64.go b/vendor/github.com/templexxx/xor/xor_amd64.go new file mode 100644 index 0000000..b449bc0 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor_amd64.go @@ -0,0 +1,120 @@ +package xor + +import "github.com/templexxx/cpufeat" + +func init() { + getEXT() +} + +func getEXT() { + if cpufeat.X86.HasAVX2 { + extension = avx2 + } else { + extension = sse2 + } + return +} + +func xorBytes(dst, src0, src1 []byte, size int) { + switch extension { + case avx2: + bytesAVX2(dst, src0, src1, size) + default: + bytesSSE2(dst, src0, src1, size) + } +} + +// non-temporal hint store +const nontmp = 8 * 1024 +const avx2loopsize = 128 + +func bytesAVX2(dst, src0, src1 []byte, size int) { + if size < avx2loopsize { + bytesAVX2mini(dst, src0, src1, size) + } else if size >= avx2loopsize && size <= nontmp { + bytesAVX2small(dst, src0, src1, size) + } else { + bytesAVX2big(dst, src0, src1, size) + } +} + +const sse2loopsize = 64 + +func bytesSSE2(dst, src0, src1 []byte, size int) { + if size < sse2loopsize { + bytesSSE2mini(dst, src0, src1, size) + } else if size >= sse2loopsize && size <= nontmp { + bytesSSE2small(dst, src0, src1, size) + } else { + bytesSSE2big(dst, src0, src1, size) + } +} + +func xorMatrix(dst []byte, src [][]byte) { + switch extension { + case avx2: + matrixAVX2(dst, src) + default: + matrixSSE2(dst, src) + } +} + +func matrixAVX2(dst []byte, src [][]byte) { + size := len(dst) + if size > nontmp { + matrixAVX2big(dst, src) + } else { + matrixAVX2small(dst, src) + } +} + +func matrixSSE2(dst []byte, src [][]byte) { + size := len(dst) + if size > nontmp { + matrixSSE2big(dst, src) + } else { + matrixSSE2small(dst, src) + } +} + +//go:noescape +func xorSrc0(dst, src0, src1 []byte) + +//go:noescape +func xorSrc1(dst, src0, src1 []byte) + +//go:noescape +func bytesAVX2mini(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesAVX2big(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesAVX2small(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2mini(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2small(dst, src0, src1 []byte, size int) + +//go:noescape +func bytesSSE2big(dst, src0, src1 []byte, size int) + +//go:noescape +func matrixAVX2small(dst []byte, src [][]byte) + +//go:noescape +func matrixAVX2big(dst []byte, src [][]byte) + +//go:noescape +func matrixSSE2small(dst []byte, src [][]byte) + +//go:noescape +func matrixSSE2big(dst []byte, src [][]byte) + +//go:noescape +func hasAVX2() bool + +//go:noescape +func hasSSE2() bool diff --git a/vendor/github.com/templexxx/xor/xor_other.go b/vendor/github.com/templexxx/xor/xor_other.go new file mode 100644 index 0000000..4aa2967 --- /dev/null +++ b/vendor/github.com/templexxx/xor/xor_other.go @@ -0,0 +1,19 @@ +// +build !amd64 noasm + +package xor + +func xorBytes(dst, src0, src1 []byte, size int) { + bytesNoSIMD(dst, src0, src1, size) +} + +func xorMatrix(dst []byte, src [][]byte) { + matrixNoSIMD(dst, src) +} + +func xorSrc0(dst, src0, src1 []byte) { + bytesNoSIMD(dst, src0, src1, len(src0)) +} + +func xorSrc1(dst, src0, src1 []byte) { + bytesNoSIMD(dst, src0, src1, len(src1)) +} diff --git a/vendor/github.com/tjfoc/gmsm/LICENSE b/vendor/github.com/tjfoc/gmsm/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/vendor/github.com/tjfoc/gmsm/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright {yyyy} {name of copyright owner} + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/tjfoc/gmsm/sm4/sm4.go b/vendor/github.com/tjfoc/gmsm/sm4/sm4.go new file mode 100644 index 0000000..1742933 --- /dev/null +++ b/vendor/github.com/tjfoc/gmsm/sm4/sm4.go @@ -0,0 +1,342 @@ +/* +Copyright Suzhou Tongji Fintech Research Institute 2017 All Rights Reserved. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +sm4 acceration +modified by Jack, 2017 Oct +*/ + +package sm4 + +import ( + "crypto/cipher" + "crypto/rand" + "crypto/x509" + "encoding/pem" + "errors" + "io/ioutil" + "os" + "strconv" +) + +const BlockSize = 16 + +type SM4Key []byte + +type KeySizeError int + +// Cipher is an instance of SM4 encryption. +type Sm4Cipher struct { + subkeys []uint32 + block1 []uint32 + block2 []byte +} + +// sm4密钥参量 +var fk = [4]uint32{ + 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc, +} + +// sm4密钥参量 +var ck = [32]uint32{ + 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, + 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, + 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, + 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9, + 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229, + 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299, + 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209, + 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279, +} + +// sm4密钥参量 +var sbox = [256]uint8{ + 0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, + 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, + 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, + 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, + 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, + 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, + 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, + 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, + 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, + 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, + 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, + 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, + 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, + 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, + 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, + 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48, +} + +var sbox0 = [256]uint32{ + 0xd55b5b8e, 0x924242d0, 0xeaa7a74d, 0xfdfbfb06, 0xcf3333fc, 0xe2878765, 0x3df4f4c9, 0xb5dede6b, 0x1658584e, 0xb4dada6e, 0x14505044, 0xc10b0bca, 0x28a0a088, 0xf8efef17, 0x2cb0b09c, 0x05141411, + 0x2bacac87, 0x669d9dfb, 0x986a6af2, 0x77d9d9ae, 0x2aa8a882, 0xbcfafa46, 0x04101014, 0xc00f0fcf, 0xa8aaaa02, 0x45111154, 0x134c4c5f, 0x269898be, 0x4825256d, 0x841a1a9e, 0x0618181e, 0x9b6666fd, + 0x9e7272ec, 0x4309094a, 0x51414110, 0xf7d3d324, 0x934646d5, 0xecbfbf53, 0x9a6262f8, 0x7be9e992, 0x33ccccff, 0x55515104, 0x0b2c2c27, 0x420d0d4f, 0xeeb7b759, 0xcc3f3ff3, 0xaeb2b21c, 0x638989ea, + 0xe7939374, 0xb1cece7f, 0x1c70706c, 0xaba6a60d, 0xca2727ed, 0x08202028, 0xeba3a348, 0x975656c1, 0x82020280, 0xdc7f7fa3, 0x965252c4, 0xf9ebeb12, 0x74d5d5a1, 0x8d3e3eb3, 0x3ffcfcc3, 0xa49a9a3e, + 0x461d1d5b, 0x071c1c1b, 0xa59e9e3b, 0xfff3f30c, 0xf0cfcf3f, 0x72cdcdbf, 0x175c5c4b, 0xb8eaea52, 0x810e0e8f, 0x5865653d, 0x3cf0f0cc, 0x1964647d, 0xe59b9b7e, 0x87161691, 0x4e3d3d73, 0xaaa2a208, + 0x69a1a1c8, 0x6aadadc7, 0x83060685, 0xb0caca7a, 0x70c5c5b5, 0x659191f4, 0xd96b6bb2, 0x892e2ea7, 0xfbe3e318, 0xe8afaf47, 0x0f3c3c33, 0x4a2d2d67, 0x71c1c1b0, 0x5759590e, 0x9f7676e9, 0x35d4d4e1, + 0x1e787866, 0x249090b4, 0x0e383836, 0x5f797926, 0x628d8def, 0x59616138, 0xd2474795, 0xa08a8a2a, 0x259494b1, 0x228888aa, 0x7df1f18c, 0x3bececd7, 0x01040405, 0x218484a5, 0x79e1e198, 0x851e1e9b, + 0xd7535384, 0x00000000, 0x4719195e, 0x565d5d0b, 0x9d7e7ee3, 0xd04f4f9f, 0x279c9cbb, 0x5349491a, 0x4d31317c, 0x36d8d8ee, 0x0208080a, 0xe49f9f7b, 0xa2828220, 0xc71313d4, 0xcb2323e8, 0x9c7a7ae6, + 0xe9abab42, 0xbdfefe43, 0x882a2aa2, 0xd14b4b9a, 0x41010140, 0xc41f1fdb, 0x38e0e0d8, 0xb7d6d661, 0xa18e8e2f, 0xf4dfdf2b, 0xf1cbcb3a, 0xcd3b3bf6, 0xfae7e71d, 0x608585e5, 0x15545441, 0xa3868625, + 0xe3838360, 0xacbaba16, 0x5c757529, 0xa6929234, 0x996e6ef7, 0x34d0d0e4, 0x1a686872, 0x54555501, 0xafb6b619, 0x914e4edf, 0x32c8c8fa, 0x30c0c0f0, 0xf6d7d721, 0x8e3232bc, 0xb3c6c675, 0xe08f8f6f, + 0x1d747469, 0xf5dbdb2e, 0xe18b8b6a, 0x2eb8b896, 0x800a0a8a, 0x679999fe, 0xc92b2be2, 0x618181e0, 0xc30303c0, 0x29a4a48d, 0x238c8caf, 0xa9aeae07, 0x0d343439, 0x524d4d1f, 0x4f393976, 0x6ebdbdd3, + 0xd6575781, 0xd86f6fb7, 0x37dcdceb, 0x44151551, 0xdd7b7ba6, 0xfef7f709, 0x8c3a3ab6, 0x2fbcbc93, 0x030c0c0f, 0xfcffff03, 0x6ba9a9c2, 0x73c9c9ba, 0x6cb5b5d9, 0x6db1b1dc, 0x5a6d6d37, 0x50454515, + 0x8f3636b9, 0x1b6c6c77, 0xadbebe13, 0x904a4ada, 0xb9eeee57, 0xde7777a9, 0xbef2f24c, 0x7efdfd83, 0x11444455, 0xda6767bd, 0x5d71712c, 0x40050545, 0x1f7c7c63, 0x10404050, 0x5b696932, 0xdb6363b8, + 0x0a282822, 0xc20707c5, 0x31c4c4f5, 0x8a2222a8, 0xa7969631, 0xce3737f9, 0x7aeded97, 0xbff6f649, 0x2db4b499, 0x75d1d1a4, 0xd3434390, 0x1248485a, 0xbae2e258, 0xe6979771, 0xb6d2d264, 0xb2c2c270, + 0x8b2626ad, 0x68a5a5cd, 0x955e5ecb, 0x4b292962, 0x0c30303c, 0x945a5ace, 0x76ddddab, 0x7ff9f986, 0x649595f1, 0xbbe6e65d, 0xf2c7c735, 0x0924242d, 0xc61717d1, 0x6fb9b9d6, 0xc51b1bde, 0x86121294, + 0x18606078, 0xf3c3c330, 0x7cf5f589, 0xefb3b35c, 0x3ae8e8d2, 0xdf7373ac, 0x4c353579, 0x208080a0, 0x78e5e59d, 0xedbbbb56, 0x5e7d7d23, 0x3ef8f8c6, 0xd45f5f8b, 0xc82f2fe7, 0x39e4e4dd, 0x49212168, +} + +var sbox1 = [256]uint32{ + 0x5b5b8ed5, 0x4242d092, 0xa7a74dea, 0xfbfb06fd, 0x3333fccf, 0x878765e2, 0xf4f4c93d, 0xdede6bb5, 0x58584e16, 0xdada6eb4, 0x50504414, 0x0b0bcac1, 0xa0a08828, 0xefef17f8, 0xb0b09c2c, 0x14141105, + 0xacac872b, 0x9d9dfb66, 0x6a6af298, 0xd9d9ae77, 0xa8a8822a, 0xfafa46bc, 0x10101404, 0x0f0fcfc0, 0xaaaa02a8, 0x11115445, 0x4c4c5f13, 0x9898be26, 0x25256d48, 0x1a1a9e84, 0x18181e06, 0x6666fd9b, + 0x7272ec9e, 0x09094a43, 0x41411051, 0xd3d324f7, 0x4646d593, 0xbfbf53ec, 0x6262f89a, 0xe9e9927b, 0xccccff33, 0x51510455, 0x2c2c270b, 0x0d0d4f42, 0xb7b759ee, 0x3f3ff3cc, 0xb2b21cae, 0x8989ea63, + 0x939374e7, 0xcece7fb1, 0x70706c1c, 0xa6a60dab, 0x2727edca, 0x20202808, 0xa3a348eb, 0x5656c197, 0x02028082, 0x7f7fa3dc, 0x5252c496, 0xebeb12f9, 0xd5d5a174, 0x3e3eb38d, 0xfcfcc33f, 0x9a9a3ea4, + 0x1d1d5b46, 0x1c1c1b07, 0x9e9e3ba5, 0xf3f30cff, 0xcfcf3ff0, 0xcdcdbf72, 0x5c5c4b17, 0xeaea52b8, 0x0e0e8f81, 0x65653d58, 0xf0f0cc3c, 0x64647d19, 0x9b9b7ee5, 0x16169187, 0x3d3d734e, 0xa2a208aa, + 0xa1a1c869, 0xadadc76a, 0x06068583, 0xcaca7ab0, 0xc5c5b570, 0x9191f465, 0x6b6bb2d9, 0x2e2ea789, 0xe3e318fb, 0xafaf47e8, 0x3c3c330f, 0x2d2d674a, 0xc1c1b071, 0x59590e57, 0x7676e99f, 0xd4d4e135, + 0x7878661e, 0x9090b424, 0x3838360e, 0x7979265f, 0x8d8def62, 0x61613859, 0x474795d2, 0x8a8a2aa0, 0x9494b125, 0x8888aa22, 0xf1f18c7d, 0xececd73b, 0x04040501, 0x8484a521, 0xe1e19879, 0x1e1e9b85, + 0x535384d7, 0x00000000, 0x19195e47, 0x5d5d0b56, 0x7e7ee39d, 0x4f4f9fd0, 0x9c9cbb27, 0x49491a53, 0x31317c4d, 0xd8d8ee36, 0x08080a02, 0x9f9f7be4, 0x828220a2, 0x1313d4c7, 0x2323e8cb, 0x7a7ae69c, + 0xabab42e9, 0xfefe43bd, 0x2a2aa288, 0x4b4b9ad1, 0x01014041, 0x1f1fdbc4, 0xe0e0d838, 0xd6d661b7, 0x8e8e2fa1, 0xdfdf2bf4, 0xcbcb3af1, 0x3b3bf6cd, 0xe7e71dfa, 0x8585e560, 0x54544115, 0x868625a3, + 0x838360e3, 0xbaba16ac, 0x7575295c, 0x929234a6, 0x6e6ef799, 0xd0d0e434, 0x6868721a, 0x55550154, 0xb6b619af, 0x4e4edf91, 0xc8c8fa32, 0xc0c0f030, 0xd7d721f6, 0x3232bc8e, 0xc6c675b3, 0x8f8f6fe0, + 0x7474691d, 0xdbdb2ef5, 0x8b8b6ae1, 0xb8b8962e, 0x0a0a8a80, 0x9999fe67, 0x2b2be2c9, 0x8181e061, 0x0303c0c3, 0xa4a48d29, 0x8c8caf23, 0xaeae07a9, 0x3434390d, 0x4d4d1f52, 0x3939764f, 0xbdbdd36e, + 0x575781d6, 0x6f6fb7d8, 0xdcdceb37, 0x15155144, 0x7b7ba6dd, 0xf7f709fe, 0x3a3ab68c, 0xbcbc932f, 0x0c0c0f03, 0xffff03fc, 0xa9a9c26b, 0xc9c9ba73, 0xb5b5d96c, 0xb1b1dc6d, 0x6d6d375a, 0x45451550, + 0x3636b98f, 0x6c6c771b, 0xbebe13ad, 0x4a4ada90, 0xeeee57b9, 0x7777a9de, 0xf2f24cbe, 0xfdfd837e, 0x44445511, 0x6767bdda, 0x71712c5d, 0x05054540, 0x7c7c631f, 0x40405010, 0x6969325b, 0x6363b8db, + 0x2828220a, 0x0707c5c2, 0xc4c4f531, 0x2222a88a, 0x969631a7, 0x3737f9ce, 0xeded977a, 0xf6f649bf, 0xb4b4992d, 0xd1d1a475, 0x434390d3, 0x48485a12, 0xe2e258ba, 0x979771e6, 0xd2d264b6, 0xc2c270b2, + 0x2626ad8b, 0xa5a5cd68, 0x5e5ecb95, 0x2929624b, 0x30303c0c, 0x5a5ace94, 0xddddab76, 0xf9f9867f, 0x9595f164, 0xe6e65dbb, 0xc7c735f2, 0x24242d09, 0x1717d1c6, 0xb9b9d66f, 0x1b1bdec5, 0x12129486, + 0x60607818, 0xc3c330f3, 0xf5f5897c, 0xb3b35cef, 0xe8e8d23a, 0x7373acdf, 0x3535794c, 0x8080a020, 0xe5e59d78, 0xbbbb56ed, 0x7d7d235e, 0xf8f8c63e, 0x5f5f8bd4, 0x2f2fe7c8, 0xe4e4dd39, 0x21216849, +} + +var sbox2 = [256]uint32{ + 0x5b8ed55b, 0x42d09242, 0xa74deaa7, 0xfb06fdfb, 0x33fccf33, 0x8765e287, 0xf4c93df4, 0xde6bb5de, 0x584e1658, 0xda6eb4da, 0x50441450, 0x0bcac10b, 0xa08828a0, 0xef17f8ef, 0xb09c2cb0, 0x14110514, + 0xac872bac, 0x9dfb669d, 0x6af2986a, 0xd9ae77d9, 0xa8822aa8, 0xfa46bcfa, 0x10140410, 0x0fcfc00f, 0xaa02a8aa, 0x11544511, 0x4c5f134c, 0x98be2698, 0x256d4825, 0x1a9e841a, 0x181e0618, 0x66fd9b66, + 0x72ec9e72, 0x094a4309, 0x41105141, 0xd324f7d3, 0x46d59346, 0xbf53ecbf, 0x62f89a62, 0xe9927be9, 0xccff33cc, 0x51045551, 0x2c270b2c, 0x0d4f420d, 0xb759eeb7, 0x3ff3cc3f, 0xb21caeb2, 0x89ea6389, + 0x9374e793, 0xce7fb1ce, 0x706c1c70, 0xa60daba6, 0x27edca27, 0x20280820, 0xa348eba3, 0x56c19756, 0x02808202, 0x7fa3dc7f, 0x52c49652, 0xeb12f9eb, 0xd5a174d5, 0x3eb38d3e, 0xfcc33ffc, 0x9a3ea49a, + 0x1d5b461d, 0x1c1b071c, 0x9e3ba59e, 0xf30cfff3, 0xcf3ff0cf, 0xcdbf72cd, 0x5c4b175c, 0xea52b8ea, 0x0e8f810e, 0x653d5865, 0xf0cc3cf0, 0x647d1964, 0x9b7ee59b, 0x16918716, 0x3d734e3d, 0xa208aaa2, + 0xa1c869a1, 0xadc76aad, 0x06858306, 0xca7ab0ca, 0xc5b570c5, 0x91f46591, 0x6bb2d96b, 0x2ea7892e, 0xe318fbe3, 0xaf47e8af, 0x3c330f3c, 0x2d674a2d, 0xc1b071c1, 0x590e5759, 0x76e99f76, 0xd4e135d4, + 0x78661e78, 0x90b42490, 0x38360e38, 0x79265f79, 0x8def628d, 0x61385961, 0x4795d247, 0x8a2aa08a, 0x94b12594, 0x88aa2288, 0xf18c7df1, 0xecd73bec, 0x04050104, 0x84a52184, 0xe19879e1, 0x1e9b851e, + 0x5384d753, 0x00000000, 0x195e4719, 0x5d0b565d, 0x7ee39d7e, 0x4f9fd04f, 0x9cbb279c, 0x491a5349, 0x317c4d31, 0xd8ee36d8, 0x080a0208, 0x9f7be49f, 0x8220a282, 0x13d4c713, 0x23e8cb23, 0x7ae69c7a, + 0xab42e9ab, 0xfe43bdfe, 0x2aa2882a, 0x4b9ad14b, 0x01404101, 0x1fdbc41f, 0xe0d838e0, 0xd661b7d6, 0x8e2fa18e, 0xdf2bf4df, 0xcb3af1cb, 0x3bf6cd3b, 0xe71dfae7, 0x85e56085, 0x54411554, 0x8625a386, + 0x8360e383, 0xba16acba, 0x75295c75, 0x9234a692, 0x6ef7996e, 0xd0e434d0, 0x68721a68, 0x55015455, 0xb619afb6, 0x4edf914e, 0xc8fa32c8, 0xc0f030c0, 0xd721f6d7, 0x32bc8e32, 0xc675b3c6, 0x8f6fe08f, + 0x74691d74, 0xdb2ef5db, 0x8b6ae18b, 0xb8962eb8, 0x0a8a800a, 0x99fe6799, 0x2be2c92b, 0x81e06181, 0x03c0c303, 0xa48d29a4, 0x8caf238c, 0xae07a9ae, 0x34390d34, 0x4d1f524d, 0x39764f39, 0xbdd36ebd, + 0x5781d657, 0x6fb7d86f, 0xdceb37dc, 0x15514415, 0x7ba6dd7b, 0xf709fef7, 0x3ab68c3a, 0xbc932fbc, 0x0c0f030c, 0xff03fcff, 0xa9c26ba9, 0xc9ba73c9, 0xb5d96cb5, 0xb1dc6db1, 0x6d375a6d, 0x45155045, + 0x36b98f36, 0x6c771b6c, 0xbe13adbe, 0x4ada904a, 0xee57b9ee, 0x77a9de77, 0xf24cbef2, 0xfd837efd, 0x44551144, 0x67bdda67, 0x712c5d71, 0x05454005, 0x7c631f7c, 0x40501040, 0x69325b69, 0x63b8db63, + 0x28220a28, 0x07c5c207, 0xc4f531c4, 0x22a88a22, 0x9631a796, 0x37f9ce37, 0xed977aed, 0xf649bff6, 0xb4992db4, 0xd1a475d1, 0x4390d343, 0x485a1248, 0xe258bae2, 0x9771e697, 0xd264b6d2, 0xc270b2c2, + 0x26ad8b26, 0xa5cd68a5, 0x5ecb955e, 0x29624b29, 0x303c0c30, 0x5ace945a, 0xddab76dd, 0xf9867ff9, 0x95f16495, 0xe65dbbe6, 0xc735f2c7, 0x242d0924, 0x17d1c617, 0xb9d66fb9, 0x1bdec51b, 0x12948612, + 0x60781860, 0xc330f3c3, 0xf5897cf5, 0xb35cefb3, 0xe8d23ae8, 0x73acdf73, 0x35794c35, 0x80a02080, 0xe59d78e5, 0xbb56edbb, 0x7d235e7d, 0xf8c63ef8, 0x5f8bd45f, 0x2fe7c82f, 0xe4dd39e4, 0x21684921, +} + +var sbox3 = [256]uint32{ + 0x8ed55b5b, 0xd0924242, 0x4deaa7a7, 0x06fdfbfb, 0xfccf3333, 0x65e28787, 0xc93df4f4, 0x6bb5dede, 0x4e165858, 0x6eb4dada, 0x44145050, 0xcac10b0b, 0x8828a0a0, 0x17f8efef, 0x9c2cb0b0, 0x11051414, + 0x872bacac, 0xfb669d9d, 0xf2986a6a, 0xae77d9d9, 0x822aa8a8, 0x46bcfafa, 0x14041010, 0xcfc00f0f, 0x02a8aaaa, 0x54451111, 0x5f134c4c, 0xbe269898, 0x6d482525, 0x9e841a1a, 0x1e061818, 0xfd9b6666, + 0xec9e7272, 0x4a430909, 0x10514141, 0x24f7d3d3, 0xd5934646, 0x53ecbfbf, 0xf89a6262, 0x927be9e9, 0xff33cccc, 0x04555151, 0x270b2c2c, 0x4f420d0d, 0x59eeb7b7, 0xf3cc3f3f, 0x1caeb2b2, 0xea638989, + 0x74e79393, 0x7fb1cece, 0x6c1c7070, 0x0daba6a6, 0xedca2727, 0x28082020, 0x48eba3a3, 0xc1975656, 0x80820202, 0xa3dc7f7f, 0xc4965252, 0x12f9ebeb, 0xa174d5d5, 0xb38d3e3e, 0xc33ffcfc, 0x3ea49a9a, + 0x5b461d1d, 0x1b071c1c, 0x3ba59e9e, 0x0cfff3f3, 0x3ff0cfcf, 0xbf72cdcd, 0x4b175c5c, 0x52b8eaea, 0x8f810e0e, 0x3d586565, 0xcc3cf0f0, 0x7d196464, 0x7ee59b9b, 0x91871616, 0x734e3d3d, 0x08aaa2a2, + 0xc869a1a1, 0xc76aadad, 0x85830606, 0x7ab0caca, 0xb570c5c5, 0xf4659191, 0xb2d96b6b, 0xa7892e2e, 0x18fbe3e3, 0x47e8afaf, 0x330f3c3c, 0x674a2d2d, 0xb071c1c1, 0x0e575959, 0xe99f7676, 0xe135d4d4, + 0x661e7878, 0xb4249090, 0x360e3838, 0x265f7979, 0xef628d8d, 0x38596161, 0x95d24747, 0x2aa08a8a, 0xb1259494, 0xaa228888, 0x8c7df1f1, 0xd73becec, 0x05010404, 0xa5218484, 0x9879e1e1, 0x9b851e1e, + 0x84d75353, 0x00000000, 0x5e471919, 0x0b565d5d, 0xe39d7e7e, 0x9fd04f4f, 0xbb279c9c, 0x1a534949, 0x7c4d3131, 0xee36d8d8, 0x0a020808, 0x7be49f9f, 0x20a28282, 0xd4c71313, 0xe8cb2323, 0xe69c7a7a, + 0x42e9abab, 0x43bdfefe, 0xa2882a2a, 0x9ad14b4b, 0x40410101, 0xdbc41f1f, 0xd838e0e0, 0x61b7d6d6, 0x2fa18e8e, 0x2bf4dfdf, 0x3af1cbcb, 0xf6cd3b3b, 0x1dfae7e7, 0xe5608585, 0x41155454, 0x25a38686, + 0x60e38383, 0x16acbaba, 0x295c7575, 0x34a69292, 0xf7996e6e, 0xe434d0d0, 0x721a6868, 0x01545555, 0x19afb6b6, 0xdf914e4e, 0xfa32c8c8, 0xf030c0c0, 0x21f6d7d7, 0xbc8e3232, 0x75b3c6c6, 0x6fe08f8f, + 0x691d7474, 0x2ef5dbdb, 0x6ae18b8b, 0x962eb8b8, 0x8a800a0a, 0xfe679999, 0xe2c92b2b, 0xe0618181, 0xc0c30303, 0x8d29a4a4, 0xaf238c8c, 0x07a9aeae, 0x390d3434, 0x1f524d4d, 0x764f3939, 0xd36ebdbd, + 0x81d65757, 0xb7d86f6f, 0xeb37dcdc, 0x51441515, 0xa6dd7b7b, 0x09fef7f7, 0xb68c3a3a, 0x932fbcbc, 0x0f030c0c, 0x03fcffff, 0xc26ba9a9, 0xba73c9c9, 0xd96cb5b5, 0xdc6db1b1, 0x375a6d6d, 0x15504545, + 0xb98f3636, 0x771b6c6c, 0x13adbebe, 0xda904a4a, 0x57b9eeee, 0xa9de7777, 0x4cbef2f2, 0x837efdfd, 0x55114444, 0xbdda6767, 0x2c5d7171, 0x45400505, 0x631f7c7c, 0x50104040, 0x325b6969, 0xb8db6363, + 0x220a2828, 0xc5c20707, 0xf531c4c4, 0xa88a2222, 0x31a79696, 0xf9ce3737, 0x977aeded, 0x49bff6f6, 0x992db4b4, 0xa475d1d1, 0x90d34343, 0x5a124848, 0x58bae2e2, 0x71e69797, 0x64b6d2d2, 0x70b2c2c2, + 0xad8b2626, 0xcd68a5a5, 0xcb955e5e, 0x624b2929, 0x3c0c3030, 0xce945a5a, 0xab76dddd, 0x867ff9f9, 0xf1649595, 0x5dbbe6e6, 0x35f2c7c7, 0x2d092424, 0xd1c61717, 0xd66fb9b9, 0xdec51b1b, 0x94861212, + 0x78186060, 0x30f3c3c3, 0x897cf5f5, 0x5cefb3b3, 0xd23ae8e8, 0xacdf7373, 0x794c3535, 0xa0208080, 0x9d78e5e5, 0x56edbbbb, 0x235e7d7d, 0xc63ef8f8, 0x8bd45f5f, 0xe7c82f2f, 0xdd39e4e4, 0x68492121, +} + +func rl(x uint32, i uint8) uint32 { return (x << (i % 32)) | (x >> (32 - (i % 32))) } + +func l0(b uint32) uint32 { return b ^ rl(b, 13) ^ rl(b, 23) } + +func feistel0(x0, x1, x2, x3, rk uint32) uint32 { return x0 ^ l0(p(x1^x2^x3^rk)) } + +//非线性变换τ(.) +func p(a uint32) uint32 { + return (uint32(sbox[a>>24]) << 24) ^ (uint32(sbox[(a>>16)&0xff]) << 16) ^ (uint32(sbox[(a>>8)&0xff]) << 8) ^ uint32(sbox[(a)&0xff]) +} + +func permuteInitialBlock(b []uint32, block []byte) { + for i := 0; i < 4; i++ { + b[i] = (uint32(block[i*4]) << 24) | (uint32(block[i*4+1]) << 16) | + (uint32(block[i*4+2]) << 8) | (uint32(block[i*4+3])) + } +} + +func permuteFinalBlock(b []byte, block []uint32) { + for i := 0; i < 4; i++ { + b[i*4] = uint8(block[i] >> 24) + b[i*4+1] = uint8(block[i] >> 16) + b[i*4+2] = uint8(block[i] >> 8) + b[i*4+3] = uint8(block[i]) + } +} + +//修改后的加密核心函数 +func cryptBlock(subkeys []uint32, b []uint32, r []byte, dst, src []byte, decrypt bool) { + var x uint32 + permuteInitialBlock(b, src) + if decrypt { + for i := 0; i < 8; i++ { + x = b[1] ^ b[2] ^ b[3] ^ subkeys[31-4*i] + b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[2] ^ b[3] ^ subkeys[31-4*i-1] + b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[1] ^ b[3] ^ subkeys[31-4*i-2] + b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[1] ^ b[2] ^ b[0] ^ subkeys[31-4*i-3] + b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + } + } else { + for i := 0; i < 8; i++ { + x = b[1] ^ b[2] ^ b[3] ^ subkeys[4*i] + b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[2] ^ b[3] ^ subkeys[4*i+1] + b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[0] ^ b[1] ^ b[3] ^ subkeys[4*i+2] + b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + x = b[1] ^ b[2] ^ b[0] ^ subkeys[4*i+3] + b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] + } + } + b[0], b[1], b[2], b[3] = b[3], b[2], b[1], b[0] + permuteFinalBlock(r, b) + copy(dst, r) +} + +func generateSubKeys(key []byte) []uint32 { + subkeys := make([]uint32, 32) + b := make([]uint32, 4) + permuteInitialBlock(b, key) + b[0] ^= fk[0] + b[1] ^= fk[1] + b[2] ^= fk[2] + b[3] ^= fk[3] + for i := 0; i < 32; i++ { + subkeys[i] = feistel0(b[0], b[1], b[2], b[3], ck[i]) + b[0], b[1], b[2], b[3] = b[1], b[2], b[3], subkeys[i] + } + return subkeys +} + +func EncryptBlock(key SM4Key, dst, src []byte) { + subkeys := generateSubKeys(key) + cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, false) +} + +func DecryptBlock(key SM4Key, dst, src []byte) { + subkeys := generateSubKeys(key) + cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, true) +} + +func ReadKeyFromMem(data []byte, pwd []byte) (SM4Key, error) { + block, _ := pem.Decode(data) + if x509.IsEncryptedPEMBlock(block) { + if block.Type != "SM4 ENCRYPTED KEY" { + return nil, errors.New("SM4: unknown type") + } + if pwd == nil { + return nil, errors.New("SM4: need passwd") + } + data, err := x509.DecryptPEMBlock(block, pwd) + if err != nil { + return nil, err + } + return data, nil + } + if block.Type != "SM4 KEY" { + return nil, errors.New("SM4: unknown type") + } + return block.Bytes, nil +} + +func ReadKeyFromPem(FileName string, pwd []byte) (SM4Key, error) { + data, err := ioutil.ReadFile(FileName) + if err != nil { + return nil, err + } + return ReadKeyFromMem(data, pwd) +} + +func WriteKeytoMem(key SM4Key, pwd []byte) ([]byte, error) { + if pwd != nil { + block, err := x509.EncryptPEMBlock(rand.Reader, + "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) + if err != nil { + return nil, err + } + return pem.EncodeToMemory(block), nil + } else { + block := &pem.Block{ + Type: "SM4 KEY", + Bytes: key, + } + return pem.EncodeToMemory(block), nil + } +} + +func WriteKeyToPem(FileName string, key SM4Key, pwd []byte) (bool, error) { + var block *pem.Block + + if pwd != nil { + var err error + block, err = x509.EncryptPEMBlock(rand.Reader, + "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) + if err != nil { + return false, err + } + } else { + block = &pem.Block{ + Type: "SM4 KEY", + Bytes: key, + } + } + file, err := os.Create(FileName) + if err != nil { + return false, err + } + defer file.Close() + err = pem.Encode(file, block) + if err != nil { + return false, nil + } + return true, nil +} + +func (k KeySizeError) Error() string { + return "SM4: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new cipher.Block. +func NewCipher(key []byte) (cipher.Block, error) { + if len(key) != BlockSize { + return nil, KeySizeError(len(key)) + } + c := new(Sm4Cipher) + c.subkeys = generateSubKeys(key) + c.block1 = make([]uint32, 4) + c.block2 = make([]byte, 16) + return c, nil +} + +func (c *Sm4Cipher) BlockSize() int { + return BlockSize +} + +func (c *Sm4Cipher) Encrypt(dst, src []byte) { + cryptBlock(c.subkeys, c.block1, c.block2, dst, src, false) +} + +func (c *Sm4Cipher) Decrypt(dst, src []byte) { + cryptBlock(c.subkeys, c.block1, c.block2, dst, src, true) +} diff --git a/vendor/github.com/xtaci/kcp-go/.gitignore b/vendor/github.com/xtaci/kcp-go/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/xtaci/kcp-go/.travis.yml b/vendor/github.com/xtaci/kcp-go/.travis.yml new file mode 100644 index 0000000..fb83e80 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/.travis.yml @@ -0,0 +1,17 @@ +language: go +go: + - 1.9.x + - 1.10.x + - 1.11.x + +before_install: + - go get -t -v ./... + +install: + - go get github.com/xtaci/kcp-go + +script: + - go test -coverprofile=coverage.txt -covermode=atomic -bench . + +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/xtaci/kcp-go/LICENSE b/vendor/github.com/xtaci/kcp-go/LICENSE new file mode 100644 index 0000000..8294d13 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Daniel Fu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/vendor/github.com/xtaci/kcp-go/README.md b/vendor/github.com/xtaci/kcp-go/README.md new file mode 100644 index 0000000..629e57a --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/README.md @@ -0,0 +1,229 @@ +kcp-go + + +[![GoDoc][1]][2] [![Powered][9]][10] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Coverage Statusd][7]][8] + +[1]: https://godoc.org/github.com/xtaci/kcp-go?status.svg +[2]: https://godoc.org/github.com/xtaci/kcp-go +[3]: https://travis-ci.org/xtaci/kcp-go.svg?branch=master +[4]: https://travis-ci.org/xtaci/kcp-go +[5]: https://goreportcard.com/badge/github.com/xtaci/kcp-go +[6]: https://goreportcard.com/report/github.com/xtaci/kcp-go +[7]: https://codecov.io/gh/xtaci/kcp-go/branch/master/graph/badge.svg +[8]: https://codecov.io/gh/xtaci/kcp-go +[9]: https://img.shields.io/badge/KCP-Powered-blue.svg +[10]: https://github.com/skywind3000/kcp +[11]: https://img.shields.io/badge/license-MIT-blue.svg +[12]: LICENSE + +## Introduction + +**kcp-go** is a **Production-Grade Reliable-UDP** library for [golang](https://golang.org/). + +This library intents to provide a **smooth, resilient, ordered, error-checked and anonymous** delivery of streams over **UDP** packets, it has been battle-tested with opensource project [kcptun](https://github.com/xtaci/kcptun). Millions of devices(from low-end MIPS routers to high-end servers) have deployed **kcp-go** powered program in a variety of forms like **online games, live broadcasting, file synchronization and network acceleration**. + +[Lastest Release](https://github.com/xtaci/kcp-go/releases) + +## Features + +1. Designed for **Latency-sensitive** scenarios. +1. **Cache friendly** and **Memory optimized** design, offers extremely **High Performance** core. +1. Handles **>5K concurrent connections** on a single commodity server. +1. Compatible with [net.Conn](https://golang.org/pkg/net/#Conn) and [net.Listener](https://golang.org/pkg/net/#Listener), a drop-in replacement for [net.TCPConn](https://golang.org/pkg/net/#TCPConn). +1. [FEC(Forward Error Correction)](https://en.wikipedia.org/wiki/Forward_error_correction) Support with [Reed-Solomon Codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) +1. Packet level encryption support with [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), [TEA](https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm), [3DES](https://en.wikipedia.org/wiki/Triple_DES), [Blowfish](https://en.wikipedia.org/wiki/Blowfish_(cipher)), [Cast5](https://en.wikipedia.org/wiki/CAST-128), [Salsa20]( https://en.wikipedia.org/wiki/Salsa20), etc. in [CFB](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_.28CFB.29) mode, which generates completely anonymous packet. +1. Only **A fixed number of goroutines** will be created for the entire server application, costs in **context switch** between goroutines have been taken into consideration. +1. Compatible with [skywind3000's](https://github.com/skywind3000) C version with various improvements. +1. Platform-dependent optimizations: [sendmmsg](http://man7.org/linux/man-pages/man2/sendmmsg.2.html) and [recvmmsg](http://man7.org/linux/man-pages/man2/recvmmsg.2.html) were expoloited for linux. + +## Documentation + +For complete documentation, see the associated [Godoc](https://godoc.org/github.com/xtaci/kcp-go). + +## Specification + +Frame Format + +``` +NONCE: + 16bytes cryptographically secure random number, nonce changes for every packet. + +CRC32: + CRC-32 checksum of data using the IEEE polynomial + +FEC TYPE: + typeData = 0xF1 + typeParity = 0xF2 + +FEC SEQID: + monotonically increasing in range: [0, (0xffffffff/shardSize) * shardSize - 1] + +SIZE: + The size of KCP frame plus 2 +``` + +``` ++-----------------+ +| SESSION | ++-----------------+ +| KCP(ARQ) | ++-----------------+ +| FEC(OPTIONAL) | ++-----------------+ +| CRYPTO(OPTIONAL)| ++-----------------+ +| UDP(PACKET) | ++-----------------+ +| IP | ++-----------------+ +| LINK | ++-----------------+ +| PHY | ++-----------------+ +(LAYER MODEL OF KCP-GO) +``` + + +## Examples + +1. [simple examples](https://github.com/xtaci/kcp-go/tree/master/examples) +2. [kcptun client](https://github.com/xtaci/kcptun/blob/master/client/main.go) +3. [kcptun server](https://github.com/xtaci/kcptun/blob/master/server/main.go) + +## Benchmark +``` + Model Name: MacBook Pro + Model Identifier: MacBookPro14,1 + Processor Name: Intel Core i5 + Processor Speed: 3.1 GHz + Number of Processors: 1 + Total Number of Cores: 2 + L2 Cache (per Core): 256 KB + L3 Cache: 4 MB + Memory: 8 GB +``` +``` +$ go test -v -run=^$ -bench . +beginning tests, encryption:salsa20, fec:10/3 +goos: darwin +goarch: amd64 +pkg: github.com/xtaci/kcp-go +BenchmarkSM4-4 50000 32180 ns/op 93.23 MB/s 0 B/op 0 allocs/op +BenchmarkAES128-4 500000 3285 ns/op 913.21 MB/s 0 B/op 0 allocs/op +BenchmarkAES192-4 300000 3623 ns/op 827.85 MB/s 0 B/op 0 allocs/op +BenchmarkAES256-4 300000 3874 ns/op 774.20 MB/s 0 B/op 0 allocs/op +BenchmarkTEA-4 100000 15384 ns/op 195.00 MB/s 0 B/op 0 allocs/op +BenchmarkXOR-4 20000000 89.9 ns/op 33372.00 MB/s 0 B/op 0 allocs/op +BenchmarkBlowfish-4 50000 26927 ns/op 111.41 MB/s 0 B/op 0 allocs/op +BenchmarkNone-4 30000000 45.7 ns/op 65597.94 MB/s 0 B/op 0 allocs/op +BenchmarkCast5-4 50000 34258 ns/op 87.57 MB/s 0 B/op 0 allocs/op +Benchmark3DES-4 10000 117149 ns/op 25.61 MB/s 0 B/op 0 allocs/op +BenchmarkTwofish-4 50000 33538 ns/op 89.45 MB/s 0 B/op 0 allocs/op +BenchmarkXTEA-4 30000 45666 ns/op 65.69 MB/s 0 B/op 0 allocs/op +BenchmarkSalsa20-4 500000 3308 ns/op 906.76 MB/s 0 B/op 0 allocs/op +BenchmarkCRC32-4 20000000 65.2 ns/op 15712.43 MB/s +BenchmarkCsprngSystem-4 1000000 1150 ns/op 13.91 MB/s +BenchmarkCsprngMD5-4 10000000 145 ns/op 110.26 MB/s +BenchmarkCsprngSHA1-4 10000000 158 ns/op 126.54 MB/s +BenchmarkCsprngNonceMD5-4 10000000 153 ns/op 104.22 MB/s +BenchmarkCsprngNonceAES128-4 100000000 19.1 ns/op 837.81 MB/s +BenchmarkFECDecode-4 1000000 1119 ns/op 1339.61 MB/s 1606 B/op 2 allocs/op +BenchmarkFECEncode-4 2000000 832 ns/op 1801.83 MB/s 17 B/op 0 allocs/op +BenchmarkFlush-4 5000000 272 ns/op 0 B/op 0 allocs/op +BenchmarkEchoSpeed4K-4 5000 259617 ns/op 15.78 MB/s 5451 B/op 149 allocs/op +BenchmarkEchoSpeed64K-4 1000 1706084 ns/op 38.41 MB/s 56002 B/op 1604 allocs/op +BenchmarkEchoSpeed512K-4 100 14345505 ns/op 36.55 MB/s 482597 B/op 13045 allocs/op +BenchmarkEchoSpeed1M-4 30 34859104 ns/op 30.08 MB/s 1143773 B/op 27186 allocs/op +BenchmarkSinkSpeed4K-4 50000 31369 ns/op 130.57 MB/s 1566 B/op 30 allocs/op +BenchmarkSinkSpeed64K-4 5000 329065 ns/op 199.16 MB/s 21529 B/op 453 allocs/op +BenchmarkSinkSpeed256K-4 500 2373354 ns/op 220.91 MB/s 166332 B/op 3554 allocs/op +BenchmarkSinkSpeed1M-4 300 5117927 ns/op 204.88 MB/s 310378 B/op 6988 allocs/op +PASS +ok github.com/xtaci/kcp-go 50.349s +``` + + +## Typical Flame Graph +![Flame Graph in kcptun](flame.png) + +## Key Design Considerations + +1. slice vs. container/list + +`kcp.flush()` loops through the send queue for retransmission checking for every 20ms(interval). + +I've wrote a benchmark for comparing sequential loop through *slice* and *container/list* here: + +https://github.com/xtaci/notes/blob/master/golang/benchmark2/cachemiss_test.go + +``` +BenchmarkLoopSlice-4 2000000000 0.39 ns/op +BenchmarkLoopList-4 100000000 54.6 ns/op +``` + +List structure introduces **heavy cache misses** compared to slice which owns better **locality**, 5000 connections with 32 window size and 20ms interval will cost 6us/0.03%(cpu) using slice, and 8.7ms/43.5%(cpu) for list for each `kcp.flush()`. + +2. Timing accuracy vs. syscall clock_gettime + +Timing is **critical** to **RTT estimator**, inaccurate timing leads to false retransmissions in KCP, but calling `time.Now()` costs 42 cycles(10.5ns on 4GHz CPU, 15.6ns on my MacBook Pro 2.7GHz). + +The benchmark for time.Now() lies here: + +https://github.com/xtaci/notes/blob/master/golang/benchmark2/syscall_test.go + +``` +BenchmarkNow-4 100000000 15.6 ns/op +``` + +In kcp-go, after each `kcp.output()` function call, current clock time will be updated upon return, and for a single `kcp.flush()` operation, current time will be queried from system once. For most of the time, 5000 connections costs 5000 * 15.6ns = 78us(a fixed cost while no packet needs to be sent), as for 10MB/s data transfering with 1400 MTU, `kcp.output()` will be called around 7500 times and costs 117us for `time.Now()` in **every second**. + +3. Memory management + +Primary memory allocation are done from a global buffer pool xmit.Buf, in kcp-go, when we need to allocate some bytes, we can get from that pool, and a fixed-capacity 1500 bytes(mtuLimit) will be returned, the rx queue, tx queue and fec queue all receive bytes from there, and they will return the bytes to the pool after using to prevent unnecessary zer0ing of bytes. The pool mechanism maintained a high watermark for slice objects, these in-flight objects from the pool will survive from the perodical garbage collection, meanwhile the pool kept the ability to return the memory to runtime if in idle. + +4. Information security + +kcp-go is shipped with builtin packet encryption powered by various block encryption algorithms and works in [Cipher Feedback Mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_(CFB)), for each packet to be sent, the encryption process will start from encrypting a [nonce](https://en.wikipedia.org/wiki/Cryptographic_nonce) from the [system entropy](https://en.wikipedia.org/wiki//dev/random), so encryption to same plaintexts never leads to a same ciphertexts thereafter. + +The contents of the packets are completely anonymous with encryption, including the headers(FEC,KCP), checksums and contents. Note that, no matter which encryption method you choose on you upper layer, if you disable encryption, the transmit will be insecure somehow, since the header is ***PLAINTEXT*** to everyone it would be susceptible to header tampering, such as jamming the *sliding window size*, *round-trip time*, *FEC property* and *checksums*. ```AES-128``` is suggested for minimal encryption since modern CPUs are shipped with [AES-NI](https://en.wikipedia.org/wiki/AES_instruction_set) instructions and performs even better than `salsa20`(check the table above). + +Other possible attacks to kcp-go includes: a) [traffic analysis](https://en.wikipedia.org/wiki/Traffic_analysis), dataflow on specific websites may have pattern while interchanging data, but this type of eavesdropping has been mitigated by adapting [smux](https://github.com/xtaci/smux) to mix data streams so as to introduce noises, perfect solution to this has not appeared yet, theroretically by shuffling/mixing messages on larger scale network may mitigate this problem. b) [replay attack](https://en.wikipedia.org/wiki/Replay_attack), since the asymmetrical encryption has not been introduced into kcp-go for some reason, capturing the packets and replay them on a different machine is possible, (notice: hijacking the session and decrypting the contents is still *impossible*), so upper layers should contain a asymmetrical encryption system to guarantee the authenticity of each message(to process message exactly once), such as HTTPS/OpenSSL/LibreSSL, only by signing the requests with private keys can eliminate this type of attack. + +## Connection Termination + +Control messages like **SYN/FIN/RST** in TCP **are not defined** in KCP, you need some **keepalive/heartbeat mechanism** in the application-level. A real world example is to use some **multiplexing** protocol over session, such as [smux](https://github.com/xtaci/smux)(with embedded keepalive mechanism), see [kcptun](https://github.com/xtaci/kcptun) for example. + +## FAQ + +Q: I'm handling >5K connections on my server, the CPU utilization is so high. + +A: A standalone `agent` or `gate` server for running kcp-go is suggested, not only for CPU utilization, but also important to the **precision** of RTT measurements(timing) which indirectly affects retransmission. By increasing update `interval` with `SetNoDelay` like `conn.SetNoDelay(1, 40, 1, 1)` will dramatically reduce system load, but lower the performance. + +Q: When should I enable FEC? + +A: Forward error correction is critical to long-distance transmission, because a packet loss will lead to a huge penalty in time. And for the complicated packet routing network in modern world, round-trip time based loss check will not always be efficient, the big deviation of RTT samples in the long way usually leads to a larger RTO value in typical rtt estimator, which in other words, slows down the transmission. + +Q: Should I enable encryption? + +A: Yes, for the safety of protocol, even if the upper layer has encrypted. + +## Who is using this? + +1. https://github.com/xtaci/kcptun -- A Secure Tunnel Based On KCP over UDP. +2. https://github.com/getlantern/lantern -- Lantern delivers fast access to the open Internet. +3. https://github.com/smallnest/rpcx -- A RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan. +4. https://github.com/gonet2/agent -- A gateway for games with stream multiplexing. +5. https://github.com/syncthing/syncthing -- Open Source Continuous File Synchronization. + +## Links + +1. https://github.com/xtaci/smux/ -- A Stream Multiplexing Library for golang with least memory +1. https://github.com/xtaci/libkcp -- FEC enhanced KCP session library for iOS/Android in C++ +1. https://github.com/skywind3000/kcp -- A Fast and Reliable ARQ Protocol +1. https://github.com/klauspost/reedsolomon -- Reed-Solomon Erasure Coding in Go + +## Consulting + +WeChat(付费技术咨询) + +kcptun diff --git a/vendor/github.com/xtaci/kcp-go/batchconn.go b/vendor/github.com/xtaci/kcp-go/batchconn.go new file mode 100644 index 0000000..6c30701 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/batchconn.go @@ -0,0 +1,12 @@ +package kcp + +import "golang.org/x/net/ipv4" + +const ( + batchSize = 16 +) + +type batchConn interface { + WriteBatch(ms []ipv4.Message, flags int) (int, error) + ReadBatch(ms []ipv4.Message, flags int) (int, error) +} diff --git a/vendor/github.com/xtaci/kcp-go/crypt.go b/vendor/github.com/xtaci/kcp-go/crypt.go new file mode 100644 index 0000000..958fdea --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/crypt.go @@ -0,0 +1,785 @@ +package kcp + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/des" + "crypto/sha1" + + "github.com/templexxx/xor" + "github.com/tjfoc/gmsm/sm4" + + "golang.org/x/crypto/blowfish" + "golang.org/x/crypto/cast5" + "golang.org/x/crypto/pbkdf2" + "golang.org/x/crypto/salsa20" + "golang.org/x/crypto/tea" + "golang.org/x/crypto/twofish" + "golang.org/x/crypto/xtea" +) + +var ( + initialVector = []byte{167, 115, 79, 156, 18, 172, 27, 1, 164, 21, 242, 193, 252, 120, 230, 107} + saltxor = `sH3CIVoF#rWLtJo6` +) + +// BlockCrypt defines encryption/decryption methods for a given byte slice. +// Notes on implementing: the data to be encrypted contains a builtin +// nonce at the first 16 bytes +type BlockCrypt interface { + // Encrypt encrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Encrypt(dst, src []byte) + + // Decrypt decrypts the whole block in src into dst. + // Dst and src may point at the same memory. + Decrypt(dst, src []byte) +} + +type salsa20BlockCrypt struct { + key [32]byte +} + +// NewSalsa20BlockCrypt https://en.wikipedia.org/wiki/Salsa20 +func NewSalsa20BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(salsa20BlockCrypt) + copy(c.key[:], key) + return c, nil +} + +func (c *salsa20BlockCrypt) Encrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} +func (c *salsa20BlockCrypt) Decrypt(dst, src []byte) { + salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) + copy(dst[:8], src[:8]) +} + +type sm4BlockCrypt struct { + encbuf [sm4.BlockSize]byte + decbuf [2 * sm4.BlockSize]byte + block cipher.Block +} + +// NewSM4BlockCrypt https://github.com/tjfoc/gmsm/tree/master/sm4 +func NewSM4BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(sm4BlockCrypt) + block, err := sm4.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *sm4BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *sm4BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type twofishBlockCrypt struct { + encbuf [twofish.BlockSize]byte + decbuf [2 * twofish.BlockSize]byte + block cipher.Block +} + +// NewTwofishBlockCrypt https://en.wikipedia.org/wiki/Twofish +func NewTwofishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(twofishBlockCrypt) + block, err := twofish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *twofishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *twofishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type tripleDESBlockCrypt struct { + encbuf [des.BlockSize]byte + decbuf [2 * des.BlockSize]byte + block cipher.Block +} + +// NewTripleDESBlockCrypt https://en.wikipedia.org/wiki/Triple_DES +func NewTripleDESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(tripleDESBlockCrypt) + block, err := des.NewTripleDESCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *tripleDESBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *tripleDESBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type cast5BlockCrypt struct { + encbuf [cast5.BlockSize]byte + decbuf [2 * cast5.BlockSize]byte + block cipher.Block +} + +// NewCast5BlockCrypt https://en.wikipedia.org/wiki/CAST-128 +func NewCast5BlockCrypt(key []byte) (BlockCrypt, error) { + c := new(cast5BlockCrypt) + block, err := cast5.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *cast5BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *cast5BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type blowfishBlockCrypt struct { + encbuf [blowfish.BlockSize]byte + decbuf [2 * blowfish.BlockSize]byte + block cipher.Block +} + +// NewBlowfishBlockCrypt https://en.wikipedia.org/wiki/Blowfish_(cipher) +func NewBlowfishBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(blowfishBlockCrypt) + block, err := blowfish.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *blowfishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *blowfishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type aesBlockCrypt struct { + encbuf [aes.BlockSize]byte + decbuf [2 * aes.BlockSize]byte + block cipher.Block +} + +// NewAESBlockCrypt https://en.wikipedia.org/wiki/Advanced_Encryption_Standard +func NewAESBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(aesBlockCrypt) + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *aesBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *aesBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type teaBlockCrypt struct { + encbuf [tea.BlockSize]byte + decbuf [2 * tea.BlockSize]byte + block cipher.Block +} + +// NewTEABlockCrypt https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm +func NewTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(teaBlockCrypt) + block, err := tea.NewCipherWithRounds(key, 16) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *teaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *teaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type xteaBlockCrypt struct { + encbuf [xtea.BlockSize]byte + decbuf [2 * xtea.BlockSize]byte + block cipher.Block +} + +// NewXTEABlockCrypt https://en.wikipedia.org/wiki/XTEA +func NewXTEABlockCrypt(key []byte) (BlockCrypt, error) { + c := new(xteaBlockCrypt) + block, err := xtea.NewCipher(key) + if err != nil { + return nil, err + } + c.block = block + return c, nil +} + +func (c *xteaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } +func (c *xteaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } + +type simpleXORBlockCrypt struct { + xortbl []byte +} + +// NewSimpleXORBlockCrypt simple xor with key expanding +func NewSimpleXORBlockCrypt(key []byte) (BlockCrypt, error) { + c := new(simpleXORBlockCrypt) + c.xortbl = pbkdf2.Key(key, []byte(saltxor), 32, mtuLimit, sha1.New) + return c, nil +} + +func (c *simpleXORBlockCrypt) Encrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } +func (c *simpleXORBlockCrypt) Decrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } + +type noneBlockCrypt struct{} + +// NewNoneBlockCrypt does nothing but copying +func NewNoneBlockCrypt(key []byte) (BlockCrypt, error) { + return new(noneBlockCrypt), nil +} + +func (c *noneBlockCrypt) Encrypt(dst, src []byte) { copy(dst, src) } +func (c *noneBlockCrypt) Decrypt(dst, src []byte) { copy(dst, src) } + +// packet encryption with local CFB mode +func encrypt(block cipher.Block, dst, src, buf []byte) { + switch block.BlockSize() { + case 8: + encrypt8(block, dst, src, buf) + case 16: + encrypt16(block, dst, src, buf) + default: + encryptVariant(block, dst, src, buf) + } +} + +// optimized encryption for the ciphers which works in 8-bytes +func encrypt8(block cipher.Block, dst, src, buf []byte) { + tbl := buf[:8] + block.Encrypt(tbl, initialVector) + n := len(src) / 8 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:64] + d := dst[base:][0:64] + // 1 + xor.BytesSrc1(d[0:8], s[0:8], tbl) + block.Encrypt(tbl, d[0:8]) + // 2 + xor.BytesSrc1(d[8:16], s[8:16], tbl) + block.Encrypt(tbl, d[8:16]) + // 3 + xor.BytesSrc1(d[16:24], s[16:24], tbl) + block.Encrypt(tbl, d[16:24]) + // 4 + xor.BytesSrc1(d[24:32], s[24:32], tbl) + block.Encrypt(tbl, d[24:32]) + // 5 + xor.BytesSrc1(d[32:40], s[32:40], tbl) + block.Encrypt(tbl, d[32:40]) + // 6 + xor.BytesSrc1(d[40:48], s[40:48], tbl) + block.Encrypt(tbl, d[40:48]) + // 7 + xor.BytesSrc1(d[48:56], s[48:56], tbl) + block.Encrypt(tbl, d[48:56]) + // 8 + xor.BytesSrc1(d[56:64], s[56:64], tbl) + block.Encrypt(tbl, d[56:64]) + base += 64 + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 8 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +// optimized encryption for the ciphers which works in 16-bytes +func encrypt16(block cipher.Block, dst, src, buf []byte) { + tbl := buf[:16] + block.Encrypt(tbl, initialVector) + n := len(src) / 16 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:128] + d := dst[base:][0:128] + // 1 + xor.BytesSrc1(d[0:16], s[0:16], tbl) + block.Encrypt(tbl, d[0:16]) + // 2 + xor.BytesSrc1(d[16:32], s[16:32], tbl) + block.Encrypt(tbl, d[16:32]) + // 3 + xor.BytesSrc1(d[32:48], s[32:48], tbl) + block.Encrypt(tbl, d[32:48]) + // 4 + xor.BytesSrc1(d[48:64], s[48:64], tbl) + block.Encrypt(tbl, d[48:64]) + // 5 + xor.BytesSrc1(d[64:80], s[64:80], tbl) + block.Encrypt(tbl, d[64:80]) + // 6 + xor.BytesSrc1(d[80:96], s[80:96], tbl) + block.Encrypt(tbl, d[80:96]) + // 7 + xor.BytesSrc1(d[96:112], s[96:112], tbl) + block.Encrypt(tbl, d[96:112]) + // 8 + xor.BytesSrc1(d[112:128], s[112:128], tbl) + block.Encrypt(tbl, d[112:128]) + base += 128 + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += 16 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func encryptVariant(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + // 1 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 2 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 3 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 4 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 5 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 6 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 7 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + + // 8 + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + } + + switch left { + case 7: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 6: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 5: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 4: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 3: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 2: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 1: + xor.BytesSrc1(dst[base:], src[base:], tbl) + block.Encrypt(tbl, dst[base:]) + base += blocksize + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +// decryption +func decrypt(block cipher.Block, dst, src, buf []byte) { + switch block.BlockSize() { + case 8: + decrypt8(block, dst, src, buf) + case 16: + decrypt16(block, dst, src, buf) + default: + decryptVariant(block, dst, src, buf) + } +} + +func decrypt8(block cipher.Block, dst, src, buf []byte) { + tbl := buf[0:8] + next := buf[8:16] + block.Encrypt(tbl, initialVector) + n := len(src) / 8 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:64] + d := dst[base:][0:64] + // 1 + block.Encrypt(next, s[0:8]) + xor.BytesSrc1(d[0:8], s[0:8], tbl) + // 2 + block.Encrypt(tbl, s[8:16]) + xor.BytesSrc1(d[8:16], s[8:16], next) + // 3 + block.Encrypt(next, s[16:24]) + xor.BytesSrc1(d[16:24], s[16:24], tbl) + // 4 + block.Encrypt(tbl, s[24:32]) + xor.BytesSrc1(d[24:32], s[24:32], next) + // 5 + block.Encrypt(next, s[32:40]) + xor.BytesSrc1(d[32:40], s[32:40], tbl) + // 6 + block.Encrypt(tbl, s[40:48]) + xor.BytesSrc1(d[40:48], s[40:48], next) + // 7 + block.Encrypt(next, s[48:56]) + xor.BytesSrc1(d[48:56], s[48:56], tbl) + // 8 + block.Encrypt(tbl, s[56:64]) + xor.BytesSrc1(d[56:64], s[56:64], next) + base += 64 + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 8 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func decrypt16(block cipher.Block, dst, src, buf []byte) { + tbl := buf[0:16] + next := buf[16:32] + block.Encrypt(tbl, initialVector) + n := len(src) / 16 + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + s := src[base:][0:128] + d := dst[base:][0:128] + // 1 + block.Encrypt(next, s[0:16]) + xor.BytesSrc1(d[0:16], s[0:16], tbl) + // 2 + block.Encrypt(tbl, s[16:32]) + xor.BytesSrc1(d[16:32], s[16:32], next) + // 3 + block.Encrypt(next, s[32:48]) + xor.BytesSrc1(d[32:48], s[32:48], tbl) + // 4 + block.Encrypt(tbl, s[48:64]) + xor.BytesSrc1(d[48:64], s[48:64], next) + // 5 + block.Encrypt(next, s[64:80]) + xor.BytesSrc1(d[64:80], s[64:80], tbl) + // 6 + block.Encrypt(tbl, s[80:96]) + xor.BytesSrc1(d[80:96], s[80:96], next) + // 7 + block.Encrypt(next, s[96:112]) + xor.BytesSrc1(d[96:112], s[96:112], tbl) + // 8 + block.Encrypt(tbl, s[112:128]) + xor.BytesSrc1(d[112:128], s[112:128], next) + base += 128 + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += 16 + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} + +func decryptVariant(block cipher.Block, dst, src, buf []byte) { + blocksize := block.BlockSize() + tbl := buf[:blocksize] + next := buf[blocksize:] + block.Encrypt(tbl, initialVector) + n := len(src) / blocksize + base := 0 + repeat := n / 8 + left := n % 8 + for i := 0; i < repeat; i++ { + // 1 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 2 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 3 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 4 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 5 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 6 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + + // 7 + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + base += blocksize + + // 8 + block.Encrypt(tbl, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], next) + base += blocksize + } + + switch left { + case 7: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 6: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 5: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 4: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 3: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 2: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 1: + block.Encrypt(next, src[base:]) + xor.BytesSrc1(dst[base:], src[base:], tbl) + tbl, next = next, tbl + base += blocksize + fallthrough + case 0: + xor.BytesSrc0(dst[base:], src[base:], tbl) + } +} diff --git a/vendor/github.com/xtaci/kcp-go/donate.png b/vendor/github.com/xtaci/kcp-go/donate.png new file mode 100644 index 0000000000000000000000000000000000000000..0f353d96e902936aed15a7312a6e8b4b332fe960 GIT binary patch literal 4420 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/entropy.go b/vendor/github.com/xtaci/kcp-go/entropy.go new file mode 100644 index 0000000..156c1cd --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/entropy.go @@ -0,0 +1,52 @@ +package kcp + +import ( + "crypto/aes" + "crypto/cipher" + "crypto/md5" + "crypto/rand" + "io" +) + +// Entropy defines a entropy source +type Entropy interface { + Init() + Fill(nonce []byte) +} + +// nonceMD5 nonce generator for packet header +type nonceMD5 struct { + seed [md5.Size]byte +} + +func (n *nonceMD5) Init() { /*nothing required*/ } + +func (n *nonceMD5) Fill(nonce []byte) { + if n.seed[0] == 0 { // entropy update + io.ReadFull(rand.Reader, n.seed[:]) + } + n.seed = md5.Sum(n.seed[:]) + copy(nonce, n.seed[:]) +} + +// nonceAES128 nonce generator for packet headers +type nonceAES128 struct { + seed [aes.BlockSize]byte + block cipher.Block +} + +func (n *nonceAES128) Init() { + var key [16]byte //aes-128 + io.ReadFull(rand.Reader, key[:]) + io.ReadFull(rand.Reader, n.seed[:]) + block, _ := aes.NewCipher(key[:]) + n.block = block +} + +func (n *nonceAES128) Fill(nonce []byte) { + if n.seed[0] == 0 { // entropy update + io.ReadFull(rand.Reader, n.seed[:]) + } + n.block.Encrypt(n.seed[:], n.seed[:]) + copy(nonce, n.seed[:]) +} diff --git a/vendor/github.com/xtaci/kcp-go/fec.go b/vendor/github.com/xtaci/kcp-go/fec.go new file mode 100644 index 0000000..97cd40b --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/fec.go @@ -0,0 +1,337 @@ +package kcp + +import ( + "encoding/binary" + "sync/atomic" + + "github.com/klauspost/reedsolomon" +) + +const ( + fecHeaderSize = 6 + fecHeaderSizePlus2 = fecHeaderSize + 2 // plus 2B data size + typeData = 0xf1 + typeParity = 0xf2 + fecExpire = 60000 +) + +// fecPacket is a decoded FEC packet +type fecPacket []byte + +func (bts fecPacket) seqid() uint32 { return binary.LittleEndian.Uint32(bts) } +func (bts fecPacket) flag() uint16 { return binary.LittleEndian.Uint16(bts[4:]) } +func (bts fecPacket) data() []byte { return bts[6:] } + +// fecElement has auxcilliary time field +type fecElement struct { + fecPacket + ts uint32 +} + +// fecDecoder for decoding incoming packets +type fecDecoder struct { + rxlimit int // queue size limit + dataShards int + parityShards int + shardSize int + rx []fecElement // ordered receive queue + + // caches + decodeCache [][]byte + flagCache []bool + + // zeros + zeros []byte + + // RS decoder + codec reedsolomon.Encoder +} + +func newFECDecoder(rxlimit, dataShards, parityShards int) *fecDecoder { + if dataShards <= 0 || parityShards <= 0 { + return nil + } + if rxlimit < dataShards+parityShards { + return nil + } + + dec := new(fecDecoder) + dec.rxlimit = rxlimit + dec.dataShards = dataShards + dec.parityShards = parityShards + dec.shardSize = dataShards + parityShards + codec, err := reedsolomon.New(dataShards, parityShards) + if err != nil { + return nil + } + dec.codec = codec + dec.decodeCache = make([][]byte, dec.shardSize) + dec.flagCache = make([]bool, dec.shardSize) + dec.zeros = make([]byte, mtuLimit) + return dec +} + +// decode a fec packet +func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) { + // insertion + n := len(dec.rx) - 1 + insertIdx := 0 + for i := n; i >= 0; i-- { + if in.seqid() == dec.rx[i].seqid() { // de-duplicate + return nil + } else if _itimediff(in.seqid(), dec.rx[i].seqid()) > 0 { // insertion + insertIdx = i + 1 + break + } + } + + // make a copy + pkt := fecPacket(xmitBuf.Get().([]byte)[:len(in)]) + copy(pkt, in) + elem := fecElement{pkt, currentMs()} + + // insert into ordered rx queue + if insertIdx == n+1 { + dec.rx = append(dec.rx, elem) + } else { + dec.rx = append(dec.rx, fecElement{}) + copy(dec.rx[insertIdx+1:], dec.rx[insertIdx:]) // shift right + dec.rx[insertIdx] = elem + } + + // shard range for current packet + shardBegin := pkt.seqid() - pkt.seqid()%uint32(dec.shardSize) + shardEnd := shardBegin + uint32(dec.shardSize) - 1 + + // max search range in ordered queue for current shard + searchBegin := insertIdx - int(pkt.seqid()%uint32(dec.shardSize)) + if searchBegin < 0 { + searchBegin = 0 + } + searchEnd := searchBegin + dec.shardSize - 1 + if searchEnd >= len(dec.rx) { + searchEnd = len(dec.rx) - 1 + } + + // re-construct datashards + if searchEnd-searchBegin+1 >= dec.dataShards { + var numshard, numDataShard, first, maxlen int + + // zero caches + shards := dec.decodeCache + shardsflag := dec.flagCache + for k := range dec.decodeCache { + shards[k] = nil + shardsflag[k] = false + } + + // shard assembly + for i := searchBegin; i <= searchEnd; i++ { + seqid := dec.rx[i].seqid() + if _itimediff(seqid, shardEnd) > 0 { + break + } else if _itimediff(seqid, shardBegin) >= 0 { + shards[seqid%uint32(dec.shardSize)] = dec.rx[i].data() + shardsflag[seqid%uint32(dec.shardSize)] = true + numshard++ + if dec.rx[i].flag() == typeData { + numDataShard++ + } + if numshard == 1 { + first = i + } + if len(dec.rx[i].data()) > maxlen { + maxlen = len(dec.rx[i].data()) + } + } + } + + if numDataShard == dec.dataShards { + // case 1: no loss on data shards + dec.rx = dec.freeRange(first, numshard, dec.rx) + } else if numshard >= dec.dataShards { + // case 2: loss on data shards, but it's recoverable from parity shards + for k := range shards { + if shards[k] != nil { + dlen := len(shards[k]) + shards[k] = shards[k][:maxlen] + copy(shards[k][dlen:], dec.zeros) + } else if k < dec.dataShards { + shards[k] = xmitBuf.Get().([]byte)[:0] + } + } + if err := dec.codec.ReconstructData(shards); err == nil { + for k := range shards[:dec.dataShards] { + if !shardsflag[k] { + // recovered data should be recycled + recovered = append(recovered, shards[k]) + } + } + } + dec.rx = dec.freeRange(first, numshard, dec.rx) + } + } + + // keep rxlimit + if len(dec.rx) > dec.rxlimit { + if dec.rx[0].flag() == typeData { // track the unrecoverable data + atomic.AddUint64(&DefaultSnmp.FECShortShards, 1) + } + dec.rx = dec.freeRange(0, 1, dec.rx) + } + + // timeout policy + current := currentMs() + numExpired := 0 + for k := range dec.rx { + if _itimediff(current, dec.rx[k].ts) > fecExpire { + numExpired++ + continue + } + break + } + if numExpired > 0 { + dec.rx = dec.freeRange(0, numExpired, dec.rx) + } + return +} + +// free a range of fecPacket +func (dec *fecDecoder) freeRange(first, n int, q []fecElement) []fecElement { + for i := first; i < first+n; i++ { // recycle buffer + xmitBuf.Put([]byte(q[i].fecPacket)) + } + + if first == 0 && n < cap(q)/2 { + return q[n:] + } + copy(q[first:], q[first+n:]) + return q[:len(q)-n] +} + +// release all segments back to xmitBuf +func (dec *fecDecoder) release() { + if n := len(dec.rx); n > 0 { + dec.rx = dec.freeRange(0, n, dec.rx) + } +} + +type ( + // fecEncoder for encoding outgoing packets + fecEncoder struct { + dataShards int + parityShards int + shardSize int + paws uint32 // Protect Against Wrapped Sequence numbers + next uint32 // next seqid + + shardCount int // count the number of datashards collected + maxSize int // track maximum data length in datashard + + headerOffset int // FEC header offset + payloadOffset int // FEC payload offset + + // caches + shardCache [][]byte + encodeCache [][]byte + + // zeros + zeros []byte + + // RS encoder + codec reedsolomon.Encoder + } +) + +func newFECEncoder(dataShards, parityShards, offset int) *fecEncoder { + if dataShards <= 0 || parityShards <= 0 { + return nil + } + enc := new(fecEncoder) + enc.dataShards = dataShards + enc.parityShards = parityShards + enc.shardSize = dataShards + parityShards + enc.paws = 0xffffffff / uint32(enc.shardSize) * uint32(enc.shardSize) + enc.headerOffset = offset + enc.payloadOffset = enc.headerOffset + fecHeaderSize + + codec, err := reedsolomon.New(dataShards, parityShards) + if err != nil { + return nil + } + enc.codec = codec + + // caches + enc.encodeCache = make([][]byte, enc.shardSize) + enc.shardCache = make([][]byte, enc.shardSize) + for k := range enc.shardCache { + enc.shardCache[k] = make([]byte, mtuLimit) + } + enc.zeros = make([]byte, mtuLimit) + return enc +} + +// encodes the packet, outputs parity shards if we have collected quorum datashards +// notice: the contents of 'ps' will be re-written in successive calling +func (enc *fecEncoder) encode(b []byte) (ps [][]byte) { + // The header format: + // | FEC SEQID(4B) | FEC TYPE(2B) | SIZE (2B) | PAYLOAD(SIZE-2) | + // |<-headerOffset |<-payloadOffset + enc.markData(b[enc.headerOffset:]) + binary.LittleEndian.PutUint16(b[enc.payloadOffset:], uint16(len(b[enc.payloadOffset:]))) + + // copy data from payloadOffset to fec shard cache + sz := len(b) + enc.shardCache[enc.shardCount] = enc.shardCache[enc.shardCount][:sz] + copy(enc.shardCache[enc.shardCount][enc.payloadOffset:], b[enc.payloadOffset:]) + enc.shardCount++ + + // track max datashard length + if sz > enc.maxSize { + enc.maxSize = sz + } + + // Generation of Reed-Solomon Erasure Code + if enc.shardCount == enc.dataShards { + // fill '0' into the tail of each datashard + for i := 0; i < enc.dataShards; i++ { + shard := enc.shardCache[i] + slen := len(shard) + copy(shard[slen:enc.maxSize], enc.zeros) + } + + // construct equal-sized slice with stripped header + cache := enc.encodeCache + for k := range cache { + cache[k] = enc.shardCache[k][enc.payloadOffset:enc.maxSize] + } + + // encoding + if err := enc.codec.Encode(cache); err == nil { + ps = enc.shardCache[enc.dataShards:] + for k := range ps { + enc.markParity(ps[k][enc.headerOffset:]) + ps[k] = ps[k][:enc.maxSize] + } + } + + // counters resetting + enc.shardCount = 0 + enc.maxSize = 0 + } + + return +} + +func (enc *fecEncoder) markData(data []byte) { + binary.LittleEndian.PutUint32(data, enc.next) + binary.LittleEndian.PutUint16(data[4:], typeData) + enc.next++ +} + +func (enc *fecEncoder) markParity(data []byte) { + binary.LittleEndian.PutUint32(data, enc.next) + binary.LittleEndian.PutUint16(data[4:], typeParity) + // sequence wrap will only happen at parity shard + enc.next = (enc.next + 1) % enc.paws +} diff --git a/vendor/github.com/xtaci/kcp-go/flame.png b/vendor/github.com/xtaci/kcp-go/flame.png new file mode 100644 index 0000000000000000000000000000000000000000..672f649ef9c72635be58e330cc901a8937db0fa8 GIT binary patch literal 57142 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/kcp-go.png b/vendor/github.com/xtaci/kcp-go/kcp-go.png new file mode 100644 index 0000000000000000000000000000000000000000..151b7c4f7c49c1a8382552322787a3e7f04ac3c6 GIT binary patch literal 9153 zcmdUzMOPe5(?HR|H88ll1b5fq65QP-xZB|F?m>dP1P=oQx4~UQa0~9dJiG5Ne2ebe zrx#VVsB^0OMyo2zpdk|?LqS2I$;nEoeQ@MsnIQr`cHFHzAQTiTj;*Ams+^=GxvHy^ zm92v%6qIaqx;BE2`Y5nKUkwrIGbS`ckyokqks)RhI*$Z4c^VXw_+SDHW4q^9XrfM- z;%z-BT_#UUtcE27N=Bv=GiVe>CpEF9rC(mZoX%hP-KMhNCxpE?U_r%bOuW1(nlR+K zg{)D?SC+KYwCr*lAef2xsmCQ}LpkJ2NH^6HjZ zS=_Ki~j=B@q`W;!B2A}>R%92w1dBq zzek*7$m!&PWS_UK!y`v`YZMP6;&w<3OvP@plo(mr;LLPv4`=#svb-5oZv3HHS%}Tx zqXfgUXNowshQp5ncg%TUzNTe0Q~bVAgAe|yMx-dL&zFH`HEAWcAJPi)IVc~7QwV5; zt7D^Zh=YwhAtV0_a%q3jA>c*T%5+MbXyfB$QnN}t+qQz2mRlkaq-KsHy*?X@gr_w` zIF$p~%a=OT?X16y;4|!}5%GGzuPT87pe;KEZE?YDdGjqmR}U=`W5 zU1uJsIM}Eg4J{R9#>Spx!!s3%rfc0t3)LM|f)Xx_XGOQ)Pd2`zFVxQ|LAQgn11!pQ z#`qmvok51dxznmSw4d*dt2y1joKxk27XPT&AC{Bas`T0b7958SH7Lbxju)iYyiq*|sq zW%h&@4CaQW^(3?(T5U)*6EZ?lp-E@s(N7E0r;QsRYHqA-K5Bb>8CYjtdD*?i-gi6L zj}-;<=B@j{80qXww$YgHJ)rVVO=98T)$+Xs0dNnAMTot~Xy0K`K@1ba=zP##+h{Og z98734G0H4>Z6Oj1$tgE5Oal&1s9FQM1K_U--7>5lSlk((EBMnkb30;PFuF5}5XfT& z!6-zW4fP8q90dheSb`0CXB3uM@G=EU6dg7wjN+>-WlCHrg}+o7vsebjj}bsA@k;zW zWiRD$a`Omo>8Fm!8}io?qPe5=viAeyvoFzU}lv?nzdxuQ8^2djwpjKn<^sG=aiy!i6ac71fw0J(jzW=`=hn# zYfMX&UWRol-@=L&*^9hY&FBfzex%i=`HsPlNsj6J`1l0)Xg}Is2|dzW>HozTHO{z5 zewWoO%29u<;H;oLCbZ+eMZG1x{T%;=v&?5M#pbbvyG3u6f7N^y0lqV&RU!&T#<~?6hhp3bc<_z3&_K7D+a`3niXseXn3r7lcIR0J!e%7nV z=+H`A^sg1xbJUYu6<8Ht?O0uFnYP6^WOMKK;BeMilF7MArips}??7dsQ0y5nKLbudTj7^w`d<>Js`Nz7V9k8ZMD78BiO!ME(WeFK z0XezUMU_sjqw4q)rHo0VT!f#DKh+ rPWxmb2Fy&lpd?t7ZrM6=*p4DcCmHBREt%LHs&& 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 literal 0 HcmV?d00001 diff --git a/vendor/github.com/xtaci/kcp-go/kcp.go b/vendor/github.com/xtaci/kcp-go/kcp.go new file mode 100644 index 0000000..c42f7f3 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/kcp.go @@ -0,0 +1,1069 @@ +package kcp + +import ( + "encoding/binary" + "sync/atomic" + "time" +) + +const ( + IKCP_RTO_NDL = 30 // no delay min rto + IKCP_RTO_MIN = 100 // normal min rto + IKCP_RTO_DEF = 200 + IKCP_RTO_MAX = 60000 + IKCP_CMD_PUSH = 81 // cmd: push data + IKCP_CMD_ACK = 82 // cmd: ack + IKCP_CMD_WASK = 83 // cmd: window probe (ask) + IKCP_CMD_WINS = 84 // cmd: window size (tell) + IKCP_ASK_SEND = 1 // need to send IKCP_CMD_WASK + IKCP_ASK_TELL = 2 // need to send IKCP_CMD_WINS + IKCP_WND_SND = 32 + IKCP_WND_RCV = 32 + IKCP_MTU_DEF = 1400 + IKCP_ACK_FAST = 3 + IKCP_INTERVAL = 100 + IKCP_OVERHEAD = 24 + IKCP_DEADLINK = 20 + IKCP_THRESH_INIT = 2 + IKCP_THRESH_MIN = 2 + IKCP_PROBE_INIT = 7000 // 7 secs to probe window size + IKCP_PROBE_LIMIT = 120000 // up to 120 secs to probe window +) + +// monotonic reference time point +var refTime time.Time = time.Now() + +// currentMs returns current elasped monotonic milliseconds since program startup +func currentMs() uint32 { return uint32(time.Now().Sub(refTime) / time.Millisecond) } + +// output_callback is a prototype which ought capture conn and call conn.Write +type output_callback func(buf []byte, size int) + +/* encode 8 bits unsigned int */ +func ikcp_encode8u(p []byte, c byte) []byte { + p[0] = c + return p[1:] +} + +/* decode 8 bits unsigned int */ +func ikcp_decode8u(p []byte, c *byte) []byte { + *c = p[0] + return p[1:] +} + +/* encode 16 bits unsigned int (lsb) */ +func ikcp_encode16u(p []byte, w uint16) []byte { + binary.LittleEndian.PutUint16(p, w) + return p[2:] +} + +/* decode 16 bits unsigned int (lsb) */ +func ikcp_decode16u(p []byte, w *uint16) []byte { + *w = binary.LittleEndian.Uint16(p) + return p[2:] +} + +/* encode 32 bits unsigned int (lsb) */ +func ikcp_encode32u(p []byte, l uint32) []byte { + binary.LittleEndian.PutUint32(p, l) + return p[4:] +} + +/* decode 32 bits unsigned int (lsb) */ +func ikcp_decode32u(p []byte, l *uint32) []byte { + *l = binary.LittleEndian.Uint32(p) + return p[4:] +} + +func _imin_(a, b uint32) uint32 { + if a <= b { + return a + } + return b +} + +func _imax_(a, b uint32) uint32 { + if a >= b { + return a + } + return b +} + +func _ibound_(lower, middle, upper uint32) uint32 { + return _imin_(_imax_(lower, middle), upper) +} + +func _itimediff(later, earlier uint32) int32 { + return (int32)(later - earlier) +} + +// segment defines a KCP segment +type segment struct { + conv uint32 + cmd uint8 + frg uint8 + wnd uint16 + ts uint32 + sn uint32 + una uint32 + rto uint32 + xmit uint32 + resendts uint32 + fastack uint32 + acked uint32 // mark if the seg has acked + data []byte +} + +// encode a segment into buffer +func (seg *segment) encode(ptr []byte) []byte { + ptr = ikcp_encode32u(ptr, seg.conv) + ptr = ikcp_encode8u(ptr, seg.cmd) + ptr = ikcp_encode8u(ptr, seg.frg) + ptr = ikcp_encode16u(ptr, seg.wnd) + ptr = ikcp_encode32u(ptr, seg.ts) + ptr = ikcp_encode32u(ptr, seg.sn) + ptr = ikcp_encode32u(ptr, seg.una) + ptr = ikcp_encode32u(ptr, uint32(len(seg.data))) + atomic.AddUint64(&DefaultSnmp.OutSegs, 1) + return ptr +} + +// KCP defines a single KCP connection +type KCP struct { + conv, mtu, mss, state uint32 + snd_una, snd_nxt, rcv_nxt uint32 + ssthresh uint32 + rx_rttvar, rx_srtt int32 + rx_rto, rx_minrto uint32 + snd_wnd, rcv_wnd, rmt_wnd, cwnd, probe uint32 + interval, ts_flush uint32 + nodelay, updated uint32 + ts_probe, probe_wait uint32 + dead_link, incr uint32 + + fastresend int32 + nocwnd, stream int32 + + snd_queue []segment + rcv_queue []segment + snd_buf []segment + rcv_buf []segment + + acklist []ackItem + + buffer []byte + reserved int + output output_callback +} + +type ackItem struct { + sn uint32 + ts uint32 +} + +// NewKCP create a new kcp state machine +// +// 'conv' must be equal in the connection peers, or else data will be silently rejected. +// +// 'output' function will be called whenever these is data to be sent on wire. +func NewKCP(conv uint32, output output_callback) *KCP { + kcp := new(KCP) + kcp.conv = conv + kcp.snd_wnd = IKCP_WND_SND + kcp.rcv_wnd = IKCP_WND_RCV + kcp.rmt_wnd = IKCP_WND_RCV + kcp.mtu = IKCP_MTU_DEF + kcp.mss = kcp.mtu - IKCP_OVERHEAD + kcp.buffer = make([]byte, kcp.mtu) + kcp.rx_rto = IKCP_RTO_DEF + kcp.rx_minrto = IKCP_RTO_MIN + kcp.interval = IKCP_INTERVAL + kcp.ts_flush = IKCP_INTERVAL + kcp.ssthresh = IKCP_THRESH_INIT + kcp.dead_link = IKCP_DEADLINK + kcp.output = output + return kcp +} + +// newSegment creates a KCP segment +func (kcp *KCP) newSegment(size int) (seg segment) { + seg.data = xmitBuf.Get().([]byte)[:size] + return +} + +// delSegment recycles a KCP segment +func (kcp *KCP) delSegment(seg *segment) { + if seg.data != nil { + xmitBuf.Put(seg.data) + seg.data = nil + } +} + +// ReserveBytes keeps n bytes untouched from the beginning of the buffer, +// the output_callback function should be aware of this. +// +// Return false if n >= mss +func (kcp *KCP) ReserveBytes(n int) bool { + if n >= int(kcp.mtu-IKCP_OVERHEAD) || n < 0 { + return false + } + kcp.reserved = n + kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(n) + return true +} + +// PeekSize checks the size of next message in the recv queue +func (kcp *KCP) PeekSize() (length int) { + if len(kcp.rcv_queue) == 0 { + return -1 + } + + seg := &kcp.rcv_queue[0] + if seg.frg == 0 { + return len(seg.data) + } + + if len(kcp.rcv_queue) < int(seg.frg+1) { + return -1 + } + + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + length += len(seg.data) + if seg.frg == 0 { + break + } + } + return +} + +// Receive data from kcp state machine +// +// Return number of bytes read. +// +// Return -1 when there is no readable data. +// +// Return -2 if len(buffer) is smaller than kcp.PeekSize(). +func (kcp *KCP) Recv(buffer []byte) (n int) { + peeksize := kcp.PeekSize() + if peeksize < 0 { + return -1 + } + + if peeksize > len(buffer) { + return -2 + } + + var fast_recover bool + if len(kcp.rcv_queue) >= int(kcp.rcv_wnd) { + fast_recover = true + } + + // merge fragment + count := 0 + for k := range kcp.rcv_queue { + seg := &kcp.rcv_queue[k] + copy(buffer, seg.data) + buffer = buffer[len(seg.data):] + n += len(seg.data) + count++ + kcp.delSegment(seg) + if seg.frg == 0 { + break + } + } + if count > 0 { + kcp.rcv_queue = kcp.remove_front(kcp.rcv_queue, count) + } + + // move available data from rcv_buf -> rcv_queue + count = 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { + kcp.rcv_nxt++ + count++ + } else { + break + } + } + + if count > 0 { + kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) + kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) + } + + // fast recover + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) && fast_recover { + // ready to send back IKCP_CMD_WINS in ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } + return +} + +// Send is user/upper level send, returns below zero for error +func (kcp *KCP) Send(buffer []byte) int { + var count int + if len(buffer) == 0 { + return -1 + } + + // append to previous segment in streaming mode (if possible) + if kcp.stream != 0 { + n := len(kcp.snd_queue) + if n > 0 { + seg := &kcp.snd_queue[n-1] + if len(seg.data) < int(kcp.mss) { + capacity := int(kcp.mss) - len(seg.data) + extend := capacity + if len(buffer) < capacity { + extend = len(buffer) + } + + // grow slice, the underlying cap is guaranteed to + // be larger than kcp.mss + oldlen := len(seg.data) + seg.data = seg.data[:oldlen+extend] + copy(seg.data[oldlen:], buffer) + buffer = buffer[extend:] + } + } + + if len(buffer) == 0 { + return 0 + } + } + + if len(buffer) <= int(kcp.mss) { + count = 1 + } else { + count = (len(buffer) + int(kcp.mss) - 1) / int(kcp.mss) + } + + if count > 255 { + return -2 + } + + if count == 0 { + count = 1 + } + + for i := 0; i < count; i++ { + var size int + if len(buffer) > int(kcp.mss) { + size = int(kcp.mss) + } else { + size = len(buffer) + } + seg := kcp.newSegment(size) + copy(seg.data, buffer[:size]) + if kcp.stream == 0 { // message mode + seg.frg = uint8(count - i - 1) + } else { // stream mode + seg.frg = 0 + } + kcp.snd_queue = append(kcp.snd_queue, seg) + buffer = buffer[size:] + } + return 0 +} + +func (kcp *KCP) update_ack(rtt int32) { + // https://tools.ietf.org/html/rfc6298 + var rto uint32 + if kcp.rx_srtt == 0 { + kcp.rx_srtt = rtt + kcp.rx_rttvar = rtt >> 1 + } else { + delta := rtt - kcp.rx_srtt + kcp.rx_srtt += delta >> 3 + if delta < 0 { + delta = -delta + } + if rtt < kcp.rx_srtt-kcp.rx_rttvar { + // if the new RTT sample is below the bottom of the range of + // what an RTT measurement is expected to be. + // give an 8x reduced weight versus its normal weighting + kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 5 + } else { + kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 2 + } + } + rto = uint32(kcp.rx_srtt) + _imax_(kcp.interval, uint32(kcp.rx_rttvar)<<2) + kcp.rx_rto = _ibound_(kcp.rx_minrto, rto, IKCP_RTO_MAX) +} + +func (kcp *KCP) shrink_buf() { + if len(kcp.snd_buf) > 0 { + seg := &kcp.snd_buf[0] + kcp.snd_una = seg.sn + } else { + kcp.snd_una = kcp.snd_nxt + } +} + +func (kcp *KCP) parse_ack(sn uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if sn == seg.sn { + // mark and free space, but leave the segment here, + // and wait until `una` to delete this, then we don't + // have to shift the segments behind forward, + // which is an expensive operation for large window + seg.acked = 1 + kcp.delSegment(seg) + break + } + if _itimediff(sn, seg.sn) < 0 { + break + } + } +} + +func (kcp *KCP) parse_fastack(sn, ts uint32) { + if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { + return + } + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(sn, seg.sn) < 0 { + break + } else if sn != seg.sn && _itimediff(seg.ts, ts) <= 0 { + seg.fastack++ + } + } +} + +func (kcp *KCP) parse_una(una uint32) { + count := 0 + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + if _itimediff(una, seg.sn) > 0 { + kcp.delSegment(seg) + count++ + } else { + break + } + } + if count > 0 { + kcp.snd_buf = kcp.remove_front(kcp.snd_buf, count) + } +} + +// ack append +func (kcp *KCP) ack_push(sn, ts uint32) { + kcp.acklist = append(kcp.acklist, ackItem{sn, ts}) +} + +// returns true if data has repeated +func (kcp *KCP) parse_data(newseg segment) bool { + sn := newseg.sn + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) >= 0 || + _itimediff(sn, kcp.rcv_nxt) < 0 { + return true + } + + n := len(kcp.rcv_buf) - 1 + insert_idx := 0 + repeat := false + for i := n; i >= 0; i-- { + seg := &kcp.rcv_buf[i] + if seg.sn == sn { + repeat = true + break + } + if _itimediff(sn, seg.sn) > 0 { + insert_idx = i + 1 + break + } + } + + if !repeat { + // replicate the content if it's new + dataCopy := xmitBuf.Get().([]byte)[:len(newseg.data)] + copy(dataCopy, newseg.data) + newseg.data = dataCopy + + if insert_idx == n+1 { + kcp.rcv_buf = append(kcp.rcv_buf, newseg) + } else { + kcp.rcv_buf = append(kcp.rcv_buf, segment{}) + copy(kcp.rcv_buf[insert_idx+1:], kcp.rcv_buf[insert_idx:]) + kcp.rcv_buf[insert_idx] = newseg + } + } + + // move available data from rcv_buf -> rcv_queue + count := 0 + for k := range kcp.rcv_buf { + seg := &kcp.rcv_buf[k] + if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { + kcp.rcv_nxt++ + count++ + } else { + break + } + } + if count > 0 { + kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) + kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) + } + + return repeat +} + +// Input a packet into kcp state machine. +// +// 'regular' indicates it's a real data packet from remote, and it means it's not generated from ReedSolomon +// codecs. +// +// 'ackNoDelay' will trigger immediate ACK, but surely it will not be efficient in bandwidth +func (kcp *KCP) Input(data []byte, regular, ackNoDelay bool) int { + snd_una := kcp.snd_una + if len(data) < IKCP_OVERHEAD { + return -1 + } + + var latest uint32 // the latest ack packet + var flag int + var inSegs uint64 + + for { + var ts, sn, length, una, conv uint32 + var wnd uint16 + var cmd, frg uint8 + + if len(data) < int(IKCP_OVERHEAD) { + break + } + + data = ikcp_decode32u(data, &conv) + if conv != kcp.conv { + return -1 + } + + data = ikcp_decode8u(data, &cmd) + data = ikcp_decode8u(data, &frg) + data = ikcp_decode16u(data, &wnd) + data = ikcp_decode32u(data, &ts) + data = ikcp_decode32u(data, &sn) + data = ikcp_decode32u(data, &una) + data = ikcp_decode32u(data, &length) + if len(data) < int(length) { + return -2 + } + + if cmd != IKCP_CMD_PUSH && cmd != IKCP_CMD_ACK && + cmd != IKCP_CMD_WASK && cmd != IKCP_CMD_WINS { + return -3 + } + + // only trust window updates from regular packets. i.e: latest update + if regular { + kcp.rmt_wnd = uint32(wnd) + } + kcp.parse_una(una) + kcp.shrink_buf() + + if cmd == IKCP_CMD_ACK { + kcp.parse_ack(sn) + kcp.parse_fastack(sn, ts) + flag |= 1 + latest = ts + } else if cmd == IKCP_CMD_PUSH { + repeat := true + if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) < 0 { + kcp.ack_push(sn, ts) + if _itimediff(sn, kcp.rcv_nxt) >= 0 { + var seg segment + seg.conv = conv + seg.cmd = cmd + seg.frg = frg + seg.wnd = wnd + seg.ts = ts + seg.sn = sn + seg.una = una + seg.data = data[:length] // delayed data copying + repeat = kcp.parse_data(seg) + } + } + if regular && repeat { + atomic.AddUint64(&DefaultSnmp.RepeatSegs, 1) + } + } else if cmd == IKCP_CMD_WASK { + // ready to send back IKCP_CMD_WINS in Ikcp_flush + // tell remote my window size + kcp.probe |= IKCP_ASK_TELL + } else if cmd == IKCP_CMD_WINS { + // do nothing + } else { + return -3 + } + + inSegs++ + data = data[length:] + } + atomic.AddUint64(&DefaultSnmp.InSegs, inSegs) + + // update rtt with the latest ts + // ignore the FEC packet + if flag != 0 && regular { + current := currentMs() + if _itimediff(current, latest) >= 0 { + kcp.update_ack(_itimediff(current, latest)) + } + } + + // cwnd update when packet arrived + if kcp.nocwnd == 0 { + if _itimediff(kcp.snd_una, snd_una) > 0 { + if kcp.cwnd < kcp.rmt_wnd { + mss := kcp.mss + if kcp.cwnd < kcp.ssthresh { + kcp.cwnd++ + kcp.incr += mss + } else { + if kcp.incr < mss { + kcp.incr = mss + } + kcp.incr += (mss*mss)/kcp.incr + (mss / 16) + if (kcp.cwnd+1)*mss <= kcp.incr { + kcp.cwnd++ + } + } + if kcp.cwnd > kcp.rmt_wnd { + kcp.cwnd = kcp.rmt_wnd + kcp.incr = kcp.rmt_wnd * mss + } + } + } + } + + if ackNoDelay && len(kcp.acklist) > 0 { // ack immediately + kcp.flush(true) + } + return 0 +} + +func (kcp *KCP) wnd_unused() uint16 { + if len(kcp.rcv_queue) < int(kcp.rcv_wnd) { + return uint16(int(kcp.rcv_wnd) - len(kcp.rcv_queue)) + } + return 0 +} + +// flush pending data +func (kcp *KCP) flush(ackOnly bool) uint32 { + var seg segment + seg.conv = kcp.conv + seg.cmd = IKCP_CMD_ACK + seg.wnd = kcp.wnd_unused() + seg.una = kcp.rcv_nxt + + buffer := kcp.buffer + ptr := buffer[kcp.reserved:] // keep n bytes untouched + + // makeSpace makes room for writing + makeSpace := func(space int) { + size := len(buffer) - len(ptr) + if size+space > int(kcp.mtu) { + kcp.output(buffer, size) + ptr = buffer[kcp.reserved:] + } + } + + // flush bytes in buffer if there is any + flushBuffer := func() { + size := len(buffer) - len(ptr) + if size > kcp.reserved { + kcp.output(buffer, size) + } + } + + // flush acknowledges + for i, ack := range kcp.acklist { + makeSpace(IKCP_OVERHEAD) + // filter jitters caused by bufferbloat + if ack.sn >= kcp.rcv_nxt || len(kcp.acklist)-1 == i { + seg.sn, seg.ts = ack.sn, ack.ts + ptr = seg.encode(ptr) + } + } + kcp.acklist = kcp.acklist[0:0] + + if ackOnly { // flash remain ack segments + flushBuffer() + return kcp.interval + } + + // probe window size (if remote window size equals zero) + if kcp.rmt_wnd == 0 { + current := currentMs() + if kcp.probe_wait == 0 { + kcp.probe_wait = IKCP_PROBE_INIT + kcp.ts_probe = current + kcp.probe_wait + } else { + if _itimediff(current, kcp.ts_probe) >= 0 { + if kcp.probe_wait < IKCP_PROBE_INIT { + kcp.probe_wait = IKCP_PROBE_INIT + } + kcp.probe_wait += kcp.probe_wait / 2 + if kcp.probe_wait > IKCP_PROBE_LIMIT { + kcp.probe_wait = IKCP_PROBE_LIMIT + } + kcp.ts_probe = current + kcp.probe_wait + kcp.probe |= IKCP_ASK_SEND + } + } + } else { + kcp.ts_probe = 0 + kcp.probe_wait = 0 + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_SEND) != 0 { + seg.cmd = IKCP_CMD_WASK + makeSpace(IKCP_OVERHEAD) + ptr = seg.encode(ptr) + } + + // flush window probing commands + if (kcp.probe & IKCP_ASK_TELL) != 0 { + seg.cmd = IKCP_CMD_WINS + makeSpace(IKCP_OVERHEAD) + ptr = seg.encode(ptr) + } + + kcp.probe = 0 + + // calculate window size + cwnd := _imin_(kcp.snd_wnd, kcp.rmt_wnd) + if kcp.nocwnd == 0 { + cwnd = _imin_(kcp.cwnd, cwnd) + } + + // sliding window, controlled by snd_nxt && sna_una+cwnd + newSegsCount := 0 + for k := range kcp.snd_queue { + if _itimediff(kcp.snd_nxt, kcp.snd_una+cwnd) >= 0 { + break + } + newseg := kcp.snd_queue[k] + newseg.conv = kcp.conv + newseg.cmd = IKCP_CMD_PUSH + newseg.sn = kcp.snd_nxt + kcp.snd_buf = append(kcp.snd_buf, newseg) + kcp.snd_nxt++ + newSegsCount++ + } + if newSegsCount > 0 { + kcp.snd_queue = kcp.remove_front(kcp.snd_queue, newSegsCount) + } + + // calculate resent + resent := uint32(kcp.fastresend) + if kcp.fastresend <= 0 { + resent = 0xffffffff + } + + // check for retransmissions + current := currentMs() + var change, lostSegs, fastRetransSegs, earlyRetransSegs uint64 + minrto := int32(kcp.interval) + + ref := kcp.snd_buf[:len(kcp.snd_buf)] // for bounds check elimination + for k := range ref { + segment := &ref[k] + needsend := false + if segment.acked == 1 { + continue + } + if segment.xmit == 0 { // initial transmit + needsend = true + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + } else if segment.fastack >= resent { // fast retransmit + needsend = true + segment.fastack = 0 + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + change++ + fastRetransSegs++ + } else if segment.fastack > 0 && newSegsCount == 0 { // early retransmit + needsend = true + segment.fastack = 0 + segment.rto = kcp.rx_rto + segment.resendts = current + segment.rto + change++ + earlyRetransSegs++ + } else if _itimediff(current, segment.resendts) >= 0 { // RTO + needsend = true + if kcp.nodelay == 0 { + segment.rto += kcp.rx_rto + } else { + segment.rto += kcp.rx_rto / 2 + } + segment.fastack = 0 + segment.resendts = current + segment.rto + lostSegs++ + } + + if needsend { + current = currentMs() + segment.xmit++ + segment.ts = current + segment.wnd = seg.wnd + segment.una = seg.una + + need := IKCP_OVERHEAD + len(segment.data) + makeSpace(need) + ptr = segment.encode(ptr) + copy(ptr, segment.data) + ptr = ptr[len(segment.data):] + + if segment.xmit >= kcp.dead_link { + kcp.state = 0xFFFFFFFF + } + } + + // get the nearest rto + if rto := _itimediff(segment.resendts, current); rto > 0 && rto < minrto { + minrto = rto + } + } + + // flash remain segments + flushBuffer() + + // counter updates + sum := lostSegs + if lostSegs > 0 { + atomic.AddUint64(&DefaultSnmp.LostSegs, lostSegs) + } + if fastRetransSegs > 0 { + atomic.AddUint64(&DefaultSnmp.FastRetransSegs, fastRetransSegs) + sum += fastRetransSegs + } + if earlyRetransSegs > 0 { + atomic.AddUint64(&DefaultSnmp.EarlyRetransSegs, earlyRetransSegs) + sum += earlyRetransSegs + } + if sum > 0 { + atomic.AddUint64(&DefaultSnmp.RetransSegs, sum) + } + + // cwnd update + if kcp.nocwnd == 0 { + // update ssthresh + // rate halving, https://tools.ietf.org/html/rfc6937 + if change > 0 { + inflight := kcp.snd_nxt - kcp.snd_una + kcp.ssthresh = inflight / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = kcp.ssthresh + resent + kcp.incr = kcp.cwnd * kcp.mss + } + + // congestion control, https://tools.ietf.org/html/rfc5681 + if lostSegs > 0 { + kcp.ssthresh = cwnd / 2 + if kcp.ssthresh < IKCP_THRESH_MIN { + kcp.ssthresh = IKCP_THRESH_MIN + } + kcp.cwnd = 1 + kcp.incr = kcp.mss + } + + if kcp.cwnd < 1 { + kcp.cwnd = 1 + kcp.incr = kcp.mss + } + } + + return uint32(minrto) +} + +// (deprecated) +// +// Update updates state (call it repeatedly, every 10ms-100ms), or you can ask +// ikcp_check when to call it again (without ikcp_input/_send calling). +// 'current' - current timestamp in millisec. +func (kcp *KCP) Update() { + var slap int32 + + current := currentMs() + if kcp.updated == 0 { + kcp.updated = 1 + kcp.ts_flush = current + } + + slap = _itimediff(current, kcp.ts_flush) + + if slap >= 10000 || slap < -10000 { + kcp.ts_flush = current + slap = 0 + } + + if slap >= 0 { + kcp.ts_flush += kcp.interval + if _itimediff(current, kcp.ts_flush) >= 0 { + kcp.ts_flush = current + kcp.interval + } + kcp.flush(false) + } +} + +// (deprecated) +// +// Check determines when should you invoke ikcp_update: +// returns when you should invoke ikcp_update in millisec, if there +// is no ikcp_input/_send calling. you can call ikcp_update in that +// time, instead of call update repeatly. +// Important to reduce unnacessary ikcp_update invoking. use it to +// schedule ikcp_update (eg. implementing an epoll-like mechanism, +// or optimize ikcp_update when handling massive kcp connections) +func (kcp *KCP) Check() uint32 { + current := currentMs() + ts_flush := kcp.ts_flush + tm_flush := int32(0x7fffffff) + tm_packet := int32(0x7fffffff) + minimal := uint32(0) + if kcp.updated == 0 { + return current + } + + if _itimediff(current, ts_flush) >= 10000 || + _itimediff(current, ts_flush) < -10000 { + ts_flush = current + } + + if _itimediff(current, ts_flush) >= 0 { + return current + } + + tm_flush = _itimediff(ts_flush, current) + + for k := range kcp.snd_buf { + seg := &kcp.snd_buf[k] + diff := _itimediff(seg.resendts, current) + if diff <= 0 { + return current + } + if diff < tm_packet { + tm_packet = diff + } + } + + minimal = uint32(tm_packet) + if tm_packet >= tm_flush { + minimal = uint32(tm_flush) + } + if minimal >= kcp.interval { + minimal = kcp.interval + } + + return current + minimal +} + +// SetMtu changes MTU size, default is 1400 +func (kcp *KCP) SetMtu(mtu int) int { + if mtu < 50 || mtu < IKCP_OVERHEAD { + return -1 + } + if kcp.reserved >= int(kcp.mtu-IKCP_OVERHEAD) || kcp.reserved < 0 { + return -1 + } + + buffer := make([]byte, mtu) + if buffer == nil { + return -2 + } + kcp.mtu = uint32(mtu) + kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(kcp.reserved) + kcp.buffer = buffer + return 0 +} + +// NoDelay options +// fastest: ikcp_nodelay(kcp, 1, 20, 2, 1) +// nodelay: 0:disable(default), 1:enable +// interval: internal update timer interval in millisec, default is 100ms +// resend: 0:disable fast resend(default), 1:enable fast resend +// nc: 0:normal congestion control(default), 1:disable congestion control +func (kcp *KCP) NoDelay(nodelay, interval, resend, nc int) int { + if nodelay >= 0 { + kcp.nodelay = uint32(nodelay) + if nodelay != 0 { + kcp.rx_minrto = IKCP_RTO_NDL + } else { + kcp.rx_minrto = IKCP_RTO_MIN + } + } + if interval >= 0 { + if interval > 5000 { + interval = 5000 + } else if interval < 10 { + interval = 10 + } + kcp.interval = uint32(interval) + } + if resend >= 0 { + kcp.fastresend = int32(resend) + } + if nc >= 0 { + kcp.nocwnd = int32(nc) + } + return 0 +} + +// WndSize sets maximum window size: sndwnd=32, rcvwnd=32 by default +func (kcp *KCP) WndSize(sndwnd, rcvwnd int) int { + if sndwnd > 0 { + kcp.snd_wnd = uint32(sndwnd) + } + if rcvwnd > 0 { + kcp.rcv_wnd = uint32(rcvwnd) + } + return 0 +} + +// WaitSnd gets how many packet is waiting to be sent +func (kcp *KCP) WaitSnd() int { + return len(kcp.snd_buf) + len(kcp.snd_queue) +} + +// remove front n elements from queue +// if the number of elements to remove is more than half of the size. +// just shift the rear elements to front, otherwise just reslice q to q[n:] +// then the cost of runtime.growslice can always be less than n/2 +func (kcp *KCP) remove_front(q []segment, n int) []segment { + if n > cap(q)/2 { + newn := copy(q, q[n:]) + return q[:newn] + } + return q[n:] +} + +// Release all cached outgoing segments +func (kcp *KCP) ReleaseTX() { + for k := range kcp.snd_queue { + if kcp.snd_queue[k].data != nil { + xmitBuf.Put(kcp.snd_queue[k].data) + } + } + for k := range kcp.snd_buf { + if kcp.snd_buf[k].data != nil { + xmitBuf.Put(kcp.snd_buf[k].data) + } + } + kcp.snd_queue = nil + kcp.snd_buf = nil +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop.go b/vendor/github.com/xtaci/kcp-go/readloop.go new file mode 100644 index 0000000..bc48e84 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop.go @@ -0,0 +1,48 @@ +package kcp + +import ( + "sync/atomic" + + "github.com/pkg/errors" +) + +func (s *UDPSession) defaultReadLoop() { + buf := make([]byte, mtuLimit) + var src string + for { + if n, addr, err := s.conn.ReadFrom(buf); err == nil { + // make sure the packet is from the same source + if src == "" { // set source address + src = addr.String() + } else if addr.String() != src { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + if n >= s.headerSize+IKCP_OVERHEAD { + s.packetInput(buf[:n]) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + s.notifyReadError(errors.WithStack(err)) + return + } + } +} + +func (l *Listener) defaultMonitor() { + buf := make([]byte, mtuLimit) + for { + if n, from, err := l.conn.ReadFrom(buf); err == nil { + if n >= l.headerSize+IKCP_OVERHEAD { + l.packetInput(buf[:n], from) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + l.notifyReadError(errors.WithStack(err)) + return + } + } +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_generic.go b/vendor/github.com/xtaci/kcp-go/readloop_generic.go new file mode 100644 index 0000000..5dbe4f4 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop_generic.go @@ -0,0 +1,11 @@ +// +build !linux + +package kcp + +func (s *UDPSession) readLoop() { + s.defaultReadLoop() +} + +func (l *Listener) monitor() { + l.defaultMonitor() +} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_linux.go b/vendor/github.com/xtaci/kcp-go/readloop_linux.go new file mode 100644 index 0000000..6226478 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/readloop_linux.go @@ -0,0 +1,120 @@ +// +build linux + +package kcp + +import ( + "net" + "os" + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" +) + +// the read loop for a client session +func (s *UDPSession) readLoop() { + // default version + if s.xconn == nil { + s.defaultReadLoop() + return + } + + // x/net version + var src string + msgs := make([]ipv4.Message, batchSize) + for k := range msgs { + msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} + } + + for { + if count, err := s.xconn.ReadBatch(msgs, 0); err == nil { + for i := 0; i < count; i++ { + msg := &msgs[i] + // make sure the packet is from the same source + if src == "" { // set source address if nil + src = msg.Addr.String() + } else if msg.Addr.String() != src { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + if msg.N < s.headerSize+IKCP_OVERHEAD { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + continue + } + + // source and size has validated + s.packetInput(msg.Buffers[0][:msg.N]) + } + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "recvmmsg" { + s.defaultReadLoop() + return + } + } + } + s.notifyReadError(errors.WithStack(err)) + return + } + } +} + +// monitor incoming data for all connections of server +func (l *Listener) monitor() { + var xconn batchConn + if _, ok := l.conn.(*net.UDPConn); ok { + addr, err := net.ResolveUDPAddr("udp", l.conn.LocalAddr().String()) + if err == nil { + if addr.IP.To4() != nil { + xconn = ipv4.NewPacketConn(l.conn) + } else { + xconn = ipv6.NewPacketConn(l.conn) + } + } + } + + // default version + if xconn == nil { + l.defaultMonitor() + return + } + + // x/net version + msgs := make([]ipv4.Message, batchSize) + for k := range msgs { + msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} + } + + for { + if count, err := xconn.ReadBatch(msgs, 0); err == nil { + for i := 0; i < count; i++ { + msg := &msgs[i] + if msg.N >= l.headerSize+IKCP_OVERHEAD { + l.packetInput(msg.Buffers[0][:msg.N], msg.Addr) + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "recvmmsg" { + l.defaultMonitor() + return + } + } + } + l.notifyReadError(errors.WithStack(err)) + return + } + } +} diff --git a/vendor/github.com/xtaci/kcp-go/sess.go b/vendor/github.com/xtaci/kcp-go/sess.go new file mode 100644 index 0000000..13a1a5c --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/sess.go @@ -0,0 +1,1047 @@ +// Package kcp-go is a Reliable-UDP library for golang. +// +// This library intents to provide a smooth, resilient, ordered, +// error-checked and anonymous delivery of streams over UDP packets. +// +// The interfaces of this package aims to be compatible with +// net.Conn in standard library, but offers powerful features for advanced users. +package kcp + +import ( + "crypto/rand" + "encoding/binary" + "hash/crc32" + "io" + "net" + "sync" + "sync/atomic" + "time" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" +) + +const ( + // 16-bytes nonce for each packet + nonceSize = 16 + + // 4-bytes packet checksum + crcSize = 4 + + // overall crypto header size + cryptHeaderSize = nonceSize + crcSize + + // maximum packet size + mtuLimit = 1500 + + // FEC keeps rxFECMulti* (dataShard+parityShard) ordered packets in memory + rxFECMulti = 3 + + // accept backlog + acceptBacklog = 128 +) + +var ( + errInvalidOperation = errors.New("invalid operation") + errTimeout = errors.New("timeout") +) + +var ( + // a system-wide packet buffer shared among sending, receiving and FEC + // to mitigate high-frequency memory allocation for packets + xmitBuf sync.Pool +) + +func init() { + xmitBuf.New = func() interface{} { + return make([]byte, mtuLimit) + } +} + +type ( + // UDPSession defines a KCP session implemented by UDP + UDPSession struct { + conn net.PacketConn // the underlying packet connection + kcp *KCP // KCP ARQ protocol + l *Listener // pointing to the Listener object if it's been accepted by a Listener + block BlockCrypt // block encryption object + + // kcp receiving is based on packets + // recvbuf turns packets into stream + recvbuf []byte + bufptr []byte + + // FEC codec + fecDecoder *fecDecoder + fecEncoder *fecEncoder + + // settings + remote net.Addr // remote peer address + rd time.Time // read deadline + wd time.Time // write deadline + headerSize int // the header size additional to a KCP frame + ackNoDelay bool // send ack immediately for each incoming packet(testing purpose) + writeDelay bool // delay kcp.flush() for Write() for bulk transfer + dup int // duplicate udp packets(testing purpose) + + // notifications + die chan struct{} // notify current session has Closed + dieOnce sync.Once + chReadEvent chan struct{} // notify Read() can be called without blocking + chWriteEvent chan struct{} // notify Write() can be called without blocking + + // socket error handling + socketReadError atomic.Value + socketWriteError atomic.Value + chSocketReadError chan struct{} + chSocketWriteError chan struct{} + socketReadErrorOnce sync.Once + socketWriteErrorOnce sync.Once + + // nonce generator + nonce Entropy + + // packets waiting to be sent on wire + txqueue []ipv4.Message + xconn batchConn // for x/net + xconnWriteError error + + mu sync.Mutex + } + + setReadBuffer interface { + SetReadBuffer(bytes int) error + } + + setWriteBuffer interface { + SetWriteBuffer(bytes int) error + } + + setDSCP interface { + SetDSCP(int) error + } +) + +// newUDPSession create a new udp session for client or server +func newUDPSession(conv uint32, dataShards, parityShards int, l *Listener, conn net.PacketConn, remote net.Addr, block BlockCrypt) *UDPSession { + sess := new(UDPSession) + sess.die = make(chan struct{}) + sess.nonce = new(nonceAES128) + sess.nonce.Init() + sess.chReadEvent = make(chan struct{}, 1) + sess.chWriteEvent = make(chan struct{}, 1) + sess.chSocketReadError = make(chan struct{}) + sess.chSocketWriteError = make(chan struct{}) + sess.remote = remote + sess.conn = conn + sess.l = l + sess.block = block + sess.recvbuf = make([]byte, mtuLimit) + + // cast to writebatch conn + if _, ok := conn.(*net.UDPConn); ok { + addr, err := net.ResolveUDPAddr("udp", conn.LocalAddr().String()) + if err == nil { + if addr.IP.To4() != nil { + sess.xconn = ipv4.NewPacketConn(conn) + } else { + sess.xconn = ipv6.NewPacketConn(conn) + } + } + } + + // FEC codec initialization + sess.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) + if sess.block != nil { + sess.fecEncoder = newFECEncoder(dataShards, parityShards, cryptHeaderSize) + } else { + sess.fecEncoder = newFECEncoder(dataShards, parityShards, 0) + } + + // calculate additional header size introduced by FEC and encryption + if sess.block != nil { + sess.headerSize += cryptHeaderSize + } + if sess.fecEncoder != nil { + sess.headerSize += fecHeaderSizePlus2 + } + + sess.kcp = NewKCP(conv, func(buf []byte, size int) { + if size >= IKCP_OVERHEAD+sess.headerSize { + sess.output(buf[:size]) + } + }) + sess.kcp.ReserveBytes(sess.headerSize) + + if sess.l == nil { // it's a client connection + go sess.readLoop() + atomic.AddUint64(&DefaultSnmp.ActiveOpens, 1) + } else { + atomic.AddUint64(&DefaultSnmp.PassiveOpens, 1) + } + + // start per-session updater + go sess.updater() + + currestab := atomic.AddUint64(&DefaultSnmp.CurrEstab, 1) + maxconn := atomic.LoadUint64(&DefaultSnmp.MaxConn) + if currestab > maxconn { + atomic.CompareAndSwapUint64(&DefaultSnmp.MaxConn, maxconn, currestab) + } + + return sess +} + +// Read implements net.Conn +func (s *UDPSession) Read(b []byte) (n int, err error) { + for { + s.mu.Lock() + if len(s.bufptr) > 0 { // copy from buffer into b + n = copy(b, s.bufptr) + s.bufptr = s.bufptr[n:] + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) + return n, nil + } + + if size := s.kcp.PeekSize(); size > 0 { // peek data size from kcp + if len(b) >= size { // receive data into 'b' directly + s.kcp.Recv(b) + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(size)) + return size, nil + } + + // if necessary resize the stream buffer to guarantee a sufficent buffer space + if cap(s.recvbuf) < size { + s.recvbuf = make([]byte, size) + } + + // resize the length of recvbuf to correspond to data size + s.recvbuf = s.recvbuf[:size] + s.kcp.Recv(s.recvbuf) + n = copy(b, s.recvbuf) // copy to 'b' + s.bufptr = s.recvbuf[n:] // pointer update + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) + return n, nil + } + + // deadline for current reading operation + var timeout *time.Timer + var c <-chan time.Time + if !s.rd.IsZero() { + if time.Now().After(s.rd) { + s.mu.Unlock() + return 0, errors.WithStack(errTimeout) + } + + delay := s.rd.Sub(time.Now()) + timeout = time.NewTimer(delay) + c = timeout.C + } + s.mu.Unlock() + + // wait for read event or timeout or error + select { + case <-s.chReadEvent: + if timeout != nil { + timeout.Stop() + } + case <-c: + return 0, errors.WithStack(errTimeout) + case <-s.chSocketReadError: + return 0, s.socketReadError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + } + } +} + +// Write implements net.Conn +func (s *UDPSession) Write(b []byte) (n int, err error) { return s.WriteBuffers([][]byte{b}) } + +// WriteBuffers write a vector of byte slices to the underlying connection +func (s *UDPSession) WriteBuffers(v [][]byte) (n int, err error) { + for { + select { + case <-s.chSocketWriteError: + return 0, s.socketWriteError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + default: + } + + s.mu.Lock() + + // make sure write do not overflow the max sliding window on both side + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + for _, b := range v { + n += len(b) + for { + if len(b) <= int(s.kcp.mss) { + s.kcp.Send(b) + break + } else { + s.kcp.Send(b[:s.kcp.mss]) + b = b[s.kcp.mss:] + } + } + } + + waitsnd = s.kcp.WaitSnd() + if waitsnd >= int(s.kcp.snd_wnd) || waitsnd >= int(s.kcp.rmt_wnd) || !s.writeDelay { + s.kcp.flush(false) + s.uncork() + } + s.mu.Unlock() + atomic.AddUint64(&DefaultSnmp.BytesSent, uint64(n)) + return n, nil + } + + var timeout *time.Timer + var c <-chan time.Time + if !s.wd.IsZero() { + if time.Now().After(s.wd) { + s.mu.Unlock() + return 0, errors.WithStack(errTimeout) + } + delay := s.wd.Sub(time.Now()) + timeout = time.NewTimer(delay) + c = timeout.C + } + s.mu.Unlock() + + select { + case <-s.chWriteEvent: + if timeout != nil { + timeout.Stop() + } + case <-c: + return 0, errors.WithStack(errTimeout) + case <-s.chSocketWriteError: + return 0, s.socketWriteError.Load().(error) + case <-s.die: + return 0, errors.WithStack(io.ErrClosedPipe) + } + } +} + +// uncork sends data in txqueue if there is any +func (s *UDPSession) uncork() { + if len(s.txqueue) > 0 { + s.tx(s.txqueue) + // recycle + for k := range s.txqueue { + xmitBuf.Put(s.txqueue[k].Buffers[0]) + s.txqueue[k].Buffers = nil + } + s.txqueue = s.txqueue[:0] + } + return +} + +// Close closes the connection. +func (s *UDPSession) Close() error { + var once bool + s.dieOnce.Do(func() { + close(s.die) + once = true + }) + + if once { + atomic.AddUint64(&DefaultSnmp.CurrEstab, ^uint64(0)) + + // try best to send all queued messages + s.mu.Lock() + s.kcp.flush(false) + s.uncork() + // release pending segments + s.kcp.ReleaseTX() + if s.fecDecoder != nil { + s.fecDecoder.release() + } + s.mu.Unlock() + + if s.l != nil { // belongs to listener + s.l.closeSession(s.remote) + return nil + } else { // client socket close + return s.conn.Close() + } + } else { + return errors.WithStack(io.ErrClosedPipe) + } +} + +// LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it. +func (s *UDPSession) LocalAddr() net.Addr { return s.conn.LocalAddr() } + +// RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it. +func (s *UDPSession) RemoteAddr() net.Addr { return s.remote } + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (s *UDPSession) SetDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + s.wd = t + s.notifyReadEvent() + s.notifyWriteEvent() + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (s *UDPSession) SetReadDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.rd = t + s.notifyReadEvent() + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (s *UDPSession) SetWriteDeadline(t time.Time) error { + s.mu.Lock() + defer s.mu.Unlock() + s.wd = t + s.notifyWriteEvent() + return nil +} + +// SetWriteDelay delays write for bulk transfer until the next update interval +func (s *UDPSession) SetWriteDelay(delay bool) { + s.mu.Lock() + defer s.mu.Unlock() + s.writeDelay = delay +} + +// SetWindowSize set maximum window size +func (s *UDPSession) SetWindowSize(sndwnd, rcvwnd int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.WndSize(sndwnd, rcvwnd) +} + +// SetMtu sets the maximum transmission unit(not including UDP header) +func (s *UDPSession) SetMtu(mtu int) bool { + if mtu > mtuLimit { + return false + } + + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.SetMtu(mtu) + return true +} + +// SetStreamMode toggles the stream mode on/off +func (s *UDPSession) SetStreamMode(enable bool) { + s.mu.Lock() + defer s.mu.Unlock() + if enable { + s.kcp.stream = 1 + } else { + s.kcp.stream = 0 + } +} + +// SetACKNoDelay changes ack flush option, set true to flush ack immediately, +func (s *UDPSession) SetACKNoDelay(nodelay bool) { + s.mu.Lock() + defer s.mu.Unlock() + s.ackNoDelay = nodelay +} + +// (deprecated) +// +// SetDUP duplicates udp packets for kcp output. +func (s *UDPSession) SetDUP(dup int) { + s.mu.Lock() + defer s.mu.Unlock() + s.dup = dup +} + +// SetNoDelay calls nodelay() of kcp +// https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration +func (s *UDPSession) SetNoDelay(nodelay, interval, resend, nc int) { + s.mu.Lock() + defer s.mu.Unlock() + s.kcp.NoDelay(nodelay, interval, resend, nc) +} + +// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. +// +// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke +// this function instead. +// +// It has no effect if it's accepted from Listener. +func (s *UDPSession) SetDSCP(dscp int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l != nil { + return errInvalidOperation + } + + // interface enabled + if ts, ok := s.conn.(setDSCP); ok { + return ts.SetDSCP(dscp) + } + + if nc, ok := s.conn.(net.Conn); ok { + var succeed bool + if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { + succeed = true + } + if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { + succeed = true + } + + if succeed { + return nil + } + } + return errInvalidOperation +} + +// SetReadBuffer sets the socket read buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetReadBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + } + return errInvalidOperation +} + +// SetWriteBuffer sets the socket write buffer, no effect if it's accepted from Listener +func (s *UDPSession) SetWriteBuffer(bytes int) error { + s.mu.Lock() + defer s.mu.Unlock() + if s.l == nil { + if nc, ok := s.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + } + return errInvalidOperation +} + +// post-processing for sending a packet from kcp core +// steps: +// 1. FEC packet generation +// 2. CRC32 integrity +// 3. Encryption +// 4. TxQueue +func (s *UDPSession) output(buf []byte) { + var ecc [][]byte + + // 1. FEC encoding + if s.fecEncoder != nil { + ecc = s.fecEncoder.encode(buf) + } + + // 2&3. crc32 & encryption + if s.block != nil { + s.nonce.Fill(buf[:nonceSize]) + checksum := crc32.ChecksumIEEE(buf[cryptHeaderSize:]) + binary.LittleEndian.PutUint32(buf[nonceSize:], checksum) + s.block.Encrypt(buf, buf) + + for k := range ecc { + s.nonce.Fill(ecc[k][:nonceSize]) + checksum := crc32.ChecksumIEEE(ecc[k][cryptHeaderSize:]) + binary.LittleEndian.PutUint32(ecc[k][nonceSize:], checksum) + s.block.Encrypt(ecc[k], ecc[k]) + } + } + + // 4. TxQueue + var msg ipv4.Message + for i := 0; i < s.dup+1; i++ { + bts := xmitBuf.Get().([]byte)[:len(buf)] + copy(bts, buf) + msg.Buffers = [][]byte{bts} + msg.Addr = s.remote + s.txqueue = append(s.txqueue, msg) + } + + for k := range ecc { + bts := xmitBuf.Get().([]byte)[:len(ecc[k])] + copy(bts, ecc[k]) + msg.Buffers = [][]byte{bts} + msg.Addr = s.remote + s.txqueue = append(s.txqueue, msg) + } +} + +// sess updater to trigger protocol +func (s *UDPSession) updater() { + timer := time.NewTimer(0) + for { + select { + case <-timer.C: + s.mu.Lock() + interval := time.Duration(s.kcp.flush(false)) * time.Millisecond + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + s.uncork() + s.mu.Unlock() + timer.Reset(interval) + case <-s.die: + timer.Stop() + return + } + } +} + +// GetConv gets conversation id of a session +func (s *UDPSession) GetConv() uint32 { return s.kcp.conv } + +func (s *UDPSession) notifyReadEvent() { + select { + case s.chReadEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) notifyWriteEvent() { + select { + case s.chWriteEvent <- struct{}{}: + default: + } +} + +func (s *UDPSession) notifyReadError(err error) { + s.socketReadErrorOnce.Do(func() { + s.socketReadError.Store(err) + close(s.chSocketReadError) + }) +} + +func (s *UDPSession) notifyWriteError(err error) { + s.socketWriteErrorOnce.Do(func() { + s.socketWriteError.Store(err) + close(s.chSocketWriteError) + }) +} + +// packet input stage +func (s *UDPSession) packetInput(data []byte) { + dataValid := false + if s.block != nil { + s.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if s.block == nil { + dataValid = true + } + + if dataValid { + s.kcpInput(data) + } +} + +func (s *UDPSession) kcpInput(data []byte) { + var kcpInErrors, fecErrs, fecRecovered, fecParityShards uint64 + + if s.fecDecoder != nil { + if len(data) > fecHeaderSize { // must be larger than fec header size + f := fecPacket(data) + if f.flag() == typeData || f.flag() == typeParity { // header check + if f.flag() == typeParity { + fecParityShards++ + } + + // lock + s.mu.Lock() + recovers := s.fecDecoder.decode(f) + if f.flag() == typeData { + if ret := s.kcp.Input(data[fecHeaderSizePlus2:], true, s.ackNoDelay); ret != 0 { + kcpInErrors++ + } + } + + for _, r := range recovers { + if len(r) >= 2 { // must be larger than 2bytes + sz := binary.LittleEndian.Uint16(r) + if int(sz) <= len(r) && sz >= 2 { + if ret := s.kcp.Input(r[2:sz], false, s.ackNoDelay); ret == 0 { + fecRecovered++ + } else { + kcpInErrors++ + } + } else { + fecErrs++ + } + } else { + fecErrs++ + } + // recycle the recovers + xmitBuf.Put(r) + } + + // to notify the readers to receive the data + if n := s.kcp.PeekSize(); n > 0 { + s.notifyReadEvent() + } + // to notify the writers + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + + s.uncork() + s.mu.Unlock() + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + atomic.AddUint64(&DefaultSnmp.InErrs, 1) + } + } else { + s.mu.Lock() + if ret := s.kcp.Input(data, true, s.ackNoDelay); ret != 0 { + kcpInErrors++ + } + if n := s.kcp.PeekSize(); n > 0 { + s.notifyReadEvent() + } + waitsnd := s.kcp.WaitSnd() + if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { + s.notifyWriteEvent() + } + s.uncork() + s.mu.Unlock() + } + + atomic.AddUint64(&DefaultSnmp.InPkts, 1) + atomic.AddUint64(&DefaultSnmp.InBytes, uint64(len(data))) + if fecParityShards > 0 { + atomic.AddUint64(&DefaultSnmp.FECParityShards, fecParityShards) + } + if kcpInErrors > 0 { + atomic.AddUint64(&DefaultSnmp.KCPInErrors, kcpInErrors) + } + if fecErrs > 0 { + atomic.AddUint64(&DefaultSnmp.FECErrs, fecErrs) + } + if fecRecovered > 0 { + atomic.AddUint64(&DefaultSnmp.FECRecovered, fecRecovered) + } + +} + +type ( + // Listener defines a server which will be waiting to accept incoming connections + Listener struct { + block BlockCrypt // block encryption + dataShards int // FEC data shard + parityShards int // FEC parity shard + fecDecoder *fecDecoder // FEC mock initialization + conn net.PacketConn // the underlying packet connection + + sessions map[string]*UDPSession // all sessions accepted by this Listener + sessionLock sync.Mutex + chAccepts chan *UDPSession // Listen() backlog + chSessionClosed chan net.Addr // session close queue + headerSize int // the additional header to a KCP frame + + die chan struct{} // notify the listener has closed + dieOnce sync.Once + + // socket error handling + socketReadError atomic.Value + chSocketReadError chan struct{} + socketReadErrorOnce sync.Once + + rd atomic.Value // read deadline for Accept() + } +) + +// packet input stage +func (l *Listener) packetInput(data []byte, addr net.Addr) { + dataValid := false + if l.block != nil { + l.block.Decrypt(data, data) + data = data[nonceSize:] + checksum := crc32.ChecksumIEEE(data[crcSize:]) + if checksum == binary.LittleEndian.Uint32(data) { + data = data[crcSize:] + dataValid = true + } else { + atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) + } + } else if l.block == nil { + dataValid = true + } + + if dataValid { + l.sessionLock.Lock() + s, ok := l.sessions[addr.String()] + l.sessionLock.Unlock() + + if !ok { // new address:port + if len(l.chAccepts) < cap(l.chAccepts) { // do not let the new sessions overwhelm accept queue + var conv uint32 + convValid := false + if l.fecDecoder != nil { + isfec := binary.LittleEndian.Uint16(data[4:]) + if isfec == typeData { + conv = binary.LittleEndian.Uint32(data[fecHeaderSizePlus2:]) + convValid = true + } + } else { + conv = binary.LittleEndian.Uint32(data) + convValid = true + } + + if convValid { // creates a new session only if the 'conv' field in kcp is accessible + s := newUDPSession(conv, l.dataShards, l.parityShards, l, l.conn, addr, l.block) + s.kcpInput(data) + l.sessionLock.Lock() + l.sessions[addr.String()] = s + l.sessionLock.Unlock() + l.chAccepts <- s + } + } + } else { + s.kcpInput(data) + } + } +} + +func (l *Listener) notifyReadError(err error) { + l.socketReadErrorOnce.Do(func() { + l.socketReadError.Store(err) + close(l.chSocketReadError) + + // propagate read error to all sessions + l.sessionLock.Lock() + for _, s := range l.sessions { + s.notifyReadError(err) + } + l.sessionLock.Unlock() + }) +} + +// SetReadBuffer sets the socket read buffer for the Listener +func (l *Listener) SetReadBuffer(bytes int) error { + if nc, ok := l.conn.(setReadBuffer); ok { + return nc.SetReadBuffer(bytes) + } + return errInvalidOperation +} + +// SetWriteBuffer sets the socket write buffer for the Listener +func (l *Listener) SetWriteBuffer(bytes int) error { + if nc, ok := l.conn.(setWriteBuffer); ok { + return nc.SetWriteBuffer(bytes) + } + return errInvalidOperation +} + +// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. +// +// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke +// this function instead. +func (l *Listener) SetDSCP(dscp int) error { + // interface enabled + if ts, ok := l.conn.(setDSCP); ok { + return ts.SetDSCP(dscp) + } + + if nc, ok := l.conn.(net.Conn); ok { + var succeed bool + if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { + succeed = true + } + if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { + succeed = true + } + + if succeed { + return nil + } + } + return errInvalidOperation +} + +// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn. +func (l *Listener) Accept() (net.Conn, error) { + return l.AcceptKCP() +} + +// AcceptKCP accepts a KCP connection +func (l *Listener) AcceptKCP() (*UDPSession, error) { + var timeout <-chan time.Time + if tdeadline, ok := l.rd.Load().(time.Time); ok && !tdeadline.IsZero() { + timeout = time.After(tdeadline.Sub(time.Now())) + } + + select { + case <-timeout: + return nil, errors.WithStack(errTimeout) + case c := <-l.chAccepts: + return c, nil + case <-l.chSocketReadError: + return nil, l.socketReadError.Load().(error) + case <-l.die: + return nil, errors.WithStack(io.ErrClosedPipe) + } +} + +// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. +func (l *Listener) SetDeadline(t time.Time) error { + l.SetReadDeadline(t) + l.SetWriteDeadline(t) + return nil +} + +// SetReadDeadline implements the Conn SetReadDeadline method. +func (l *Listener) SetReadDeadline(t time.Time) error { + l.rd.Store(t) + return nil +} + +// SetWriteDeadline implements the Conn SetWriteDeadline method. +func (l *Listener) SetWriteDeadline(t time.Time) error { return errInvalidOperation } + +// Close stops listening on the UDP address, and closes the socket +func (l *Listener) Close() error { + var once bool + l.dieOnce.Do(func() { + close(l.die) + once = true + }) + + if once { + return l.conn.Close() + } else { + return errors.WithStack(io.ErrClosedPipe) + } +} + +// closeSession notify the listener that a session has closed +func (l *Listener) closeSession(remote net.Addr) (ret bool) { + l.sessionLock.Lock() + defer l.sessionLock.Unlock() + if _, ok := l.sessions[remote.String()]; ok { + delete(l.sessions, remote.String()) + return true + } + return false +} + +// Addr returns the listener's network address, The Addr returned is shared by all invocations of Addr, so do not modify it. +func (l *Listener) Addr() net.Addr { return l.conn.LocalAddr() } + +// Listen listens for incoming KCP packets addressed to the local address laddr on the network "udp", +func Listen(laddr string) (net.Listener, error) { return ListenWithOptions(laddr, nil, 0, 0) } + +// ListenWithOptions listens for incoming KCP packets addressed to the local address laddr on the network "udp" with packet encryption. +// +// 'block' is the block encryption algorithm to encrypt packets. +// +// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. +// +// Check https://github.com/klauspost/reedsolomon for details +func ListenWithOptions(laddr string, block BlockCrypt, dataShards, parityShards int) (*Listener, error) { + udpaddr, err := net.ResolveUDPAddr("udp", laddr) + if err != nil { + return nil, errors.WithStack(err) + } + conn, err := net.ListenUDP("udp", udpaddr) + if err != nil { + return nil, errors.WithStack(err) + } + + return ServeConn(block, dataShards, parityShards, conn) +} + +// ServeConn serves KCP protocol for a single packet connection. +func ServeConn(block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*Listener, error) { + l := new(Listener) + l.conn = conn + l.sessions = make(map[string]*UDPSession) + l.chAccepts = make(chan *UDPSession, acceptBacklog) + l.chSessionClosed = make(chan net.Addr) + l.die = make(chan struct{}) + l.dataShards = dataShards + l.parityShards = parityShards + l.block = block + l.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) + l.chSocketReadError = make(chan struct{}) + + // calculate header size + if l.block != nil { + l.headerSize += cryptHeaderSize + } + if l.fecDecoder != nil { + l.headerSize += fecHeaderSizePlus2 + } + + go l.monitor() + return l, nil +} + +// Dial connects to the remote address "raddr" on the network "udp" without encryption and FEC +func Dial(raddr string) (net.Conn, error) { return DialWithOptions(raddr, nil, 0, 0) } + +// DialWithOptions connects to the remote address "raddr" on the network "udp" with packet encryption +// +// 'block' is the block encryption algorithm to encrypt packets. +// +// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. +// +// Check https://github.com/klauspost/reedsolomon for details +func DialWithOptions(raddr string, block BlockCrypt, dataShards, parityShards int) (*UDPSession, error) { + // network type detection + udpaddr, err := net.ResolveUDPAddr("udp", raddr) + if err != nil { + return nil, errors.WithStack(err) + } + network := "udp4" + if udpaddr.IP.To4() == nil { + network = "udp" + } + + conn, err := net.ListenUDP(network, nil) + if err != nil { + return nil, errors.WithStack(err) + } + + return NewConn(raddr, block, dataShards, parityShards, conn) +} + +// NewConn3 establishes a session and talks KCP protocol over a packet connection. +func NewConn3(convid uint32, raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + return newUDPSession(convid, dataShards, parityShards, nil, conn, raddr, block), nil +} + +// NewConn2 establishes a session and talks KCP protocol over a packet connection. +func NewConn2(raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + var convid uint32 + binary.Read(rand.Reader, binary.LittleEndian, &convid) + return NewConn3(convid, raddr, block, dataShards, parityShards, conn) +} + +// NewConn establishes a session and talks KCP protocol over a packet connection. +func NewConn(raddr string, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { + udpaddr, err := net.ResolveUDPAddr("udp", raddr) + if err != nil { + return nil, errors.WithStack(err) + } + return NewConn2(udpaddr, block, dataShards, parityShards, conn) +} diff --git a/vendor/github.com/xtaci/kcp-go/snmp.go b/vendor/github.com/xtaci/kcp-go/snmp.go new file mode 100644 index 0000000..607118e --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/snmp.go @@ -0,0 +1,164 @@ +package kcp + +import ( + "fmt" + "sync/atomic" +) + +// Snmp defines network statistics indicator +type Snmp struct { + BytesSent uint64 // bytes sent from upper level + BytesReceived uint64 // bytes received to upper level + MaxConn uint64 // max number of connections ever reached + ActiveOpens uint64 // accumulated active open connections + PassiveOpens uint64 // accumulated passive open connections + CurrEstab uint64 // current number of established connections + InErrs uint64 // UDP read errors reported from net.PacketConn + InCsumErrors uint64 // checksum errors from CRC32 + KCPInErrors uint64 // packet iput errors reported from KCP + InPkts uint64 // incoming packets count + OutPkts uint64 // outgoing packets count + InSegs uint64 // incoming KCP segments + OutSegs uint64 // outgoing KCP segments + InBytes uint64 // UDP bytes received + OutBytes uint64 // UDP bytes sent + RetransSegs uint64 // accmulated retransmited segments + FastRetransSegs uint64 // accmulated fast retransmitted segments + EarlyRetransSegs uint64 // accmulated early retransmitted segments + LostSegs uint64 // number of segs infered as lost + RepeatSegs uint64 // number of segs duplicated + FECRecovered uint64 // correct packets recovered from FEC + FECErrs uint64 // incorrect packets recovered from FEC + FECParityShards uint64 // FEC segments received + FECShortShards uint64 // number of data shards that's not enough for recovery +} + +func newSnmp() *Snmp { + return new(Snmp) +} + +// Header returns all field names +func (s *Snmp) Header() []string { + return []string{ + "BytesSent", + "BytesReceived", + "MaxConn", + "ActiveOpens", + "PassiveOpens", + "CurrEstab", + "InErrs", + "InCsumErrors", + "KCPInErrors", + "InPkts", + "OutPkts", + "InSegs", + "OutSegs", + "InBytes", + "OutBytes", + "RetransSegs", + "FastRetransSegs", + "EarlyRetransSegs", + "LostSegs", + "RepeatSegs", + "FECParityShards", + "FECErrs", + "FECRecovered", + "FECShortShards", + } +} + +// ToSlice returns current snmp info as slice +func (s *Snmp) ToSlice() []string { + snmp := s.Copy() + return []string{ + fmt.Sprint(snmp.BytesSent), + fmt.Sprint(snmp.BytesReceived), + fmt.Sprint(snmp.MaxConn), + fmt.Sprint(snmp.ActiveOpens), + fmt.Sprint(snmp.PassiveOpens), + fmt.Sprint(snmp.CurrEstab), + fmt.Sprint(snmp.InErrs), + fmt.Sprint(snmp.InCsumErrors), + fmt.Sprint(snmp.KCPInErrors), + fmt.Sprint(snmp.InPkts), + fmt.Sprint(snmp.OutPkts), + fmt.Sprint(snmp.InSegs), + fmt.Sprint(snmp.OutSegs), + fmt.Sprint(snmp.InBytes), + fmt.Sprint(snmp.OutBytes), + fmt.Sprint(snmp.RetransSegs), + fmt.Sprint(snmp.FastRetransSegs), + fmt.Sprint(snmp.EarlyRetransSegs), + fmt.Sprint(snmp.LostSegs), + fmt.Sprint(snmp.RepeatSegs), + fmt.Sprint(snmp.FECParityShards), + fmt.Sprint(snmp.FECErrs), + fmt.Sprint(snmp.FECRecovered), + fmt.Sprint(snmp.FECShortShards), + } +} + +// Copy make a copy of current snmp snapshot +func (s *Snmp) Copy() *Snmp { + d := newSnmp() + d.BytesSent = atomic.LoadUint64(&s.BytesSent) + d.BytesReceived = atomic.LoadUint64(&s.BytesReceived) + d.MaxConn = atomic.LoadUint64(&s.MaxConn) + d.ActiveOpens = atomic.LoadUint64(&s.ActiveOpens) + d.PassiveOpens = atomic.LoadUint64(&s.PassiveOpens) + d.CurrEstab = atomic.LoadUint64(&s.CurrEstab) + d.InErrs = atomic.LoadUint64(&s.InErrs) + d.InCsumErrors = atomic.LoadUint64(&s.InCsumErrors) + d.KCPInErrors = atomic.LoadUint64(&s.KCPInErrors) + d.InPkts = atomic.LoadUint64(&s.InPkts) + d.OutPkts = atomic.LoadUint64(&s.OutPkts) + d.InSegs = atomic.LoadUint64(&s.InSegs) + d.OutSegs = atomic.LoadUint64(&s.OutSegs) + d.InBytes = atomic.LoadUint64(&s.InBytes) + d.OutBytes = atomic.LoadUint64(&s.OutBytes) + d.RetransSegs = atomic.LoadUint64(&s.RetransSegs) + d.FastRetransSegs = atomic.LoadUint64(&s.FastRetransSegs) + d.EarlyRetransSegs = atomic.LoadUint64(&s.EarlyRetransSegs) + d.LostSegs = atomic.LoadUint64(&s.LostSegs) + d.RepeatSegs = atomic.LoadUint64(&s.RepeatSegs) + d.FECParityShards = atomic.LoadUint64(&s.FECParityShards) + d.FECErrs = atomic.LoadUint64(&s.FECErrs) + d.FECRecovered = atomic.LoadUint64(&s.FECRecovered) + d.FECShortShards = atomic.LoadUint64(&s.FECShortShards) + return d +} + +// Reset values to zero +func (s *Snmp) Reset() { + atomic.StoreUint64(&s.BytesSent, 0) + atomic.StoreUint64(&s.BytesReceived, 0) + atomic.StoreUint64(&s.MaxConn, 0) + atomic.StoreUint64(&s.ActiveOpens, 0) + atomic.StoreUint64(&s.PassiveOpens, 0) + atomic.StoreUint64(&s.CurrEstab, 0) + atomic.StoreUint64(&s.InErrs, 0) + atomic.StoreUint64(&s.InCsumErrors, 0) + atomic.StoreUint64(&s.KCPInErrors, 0) + atomic.StoreUint64(&s.InPkts, 0) + atomic.StoreUint64(&s.OutPkts, 0) + atomic.StoreUint64(&s.InSegs, 0) + atomic.StoreUint64(&s.OutSegs, 0) + atomic.StoreUint64(&s.InBytes, 0) + atomic.StoreUint64(&s.OutBytes, 0) + atomic.StoreUint64(&s.RetransSegs, 0) + atomic.StoreUint64(&s.FastRetransSegs, 0) + atomic.StoreUint64(&s.EarlyRetransSegs, 0) + atomic.StoreUint64(&s.LostSegs, 0) + atomic.StoreUint64(&s.RepeatSegs, 0) + atomic.StoreUint64(&s.FECParityShards, 0) + atomic.StoreUint64(&s.FECErrs, 0) + atomic.StoreUint64(&s.FECRecovered, 0) + atomic.StoreUint64(&s.FECShortShards, 0) +} + +// DefaultSnmp is the global KCP connection statistics collector +var DefaultSnmp *Snmp + +func init() { + DefaultSnmp = newSnmp() +} diff --git a/vendor/github.com/xtaci/kcp-go/tx.go b/vendor/github.com/xtaci/kcp-go/tx.go new file mode 100644 index 0000000..3397b82 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx.go @@ -0,0 +1,24 @@ +package kcp + +import ( + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) defaultTx(txqueue []ipv4.Message) { + nbytes := 0 + npkts := 0 + for k := range txqueue { + if n, err := s.conn.WriteTo(txqueue[k].Buffers[0], txqueue[k].Addr); err == nil { + nbytes += n + npkts++ + } else { + s.notifyWriteError(errors.WithStack(err)) + break + } + } + atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) +} diff --git a/vendor/github.com/xtaci/kcp-go/tx_generic.go b/vendor/github.com/xtaci/kcp-go/tx_generic.go new file mode 100644 index 0000000..0b4f349 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx_generic.go @@ -0,0 +1,11 @@ +// +build !linux + +package kcp + +import ( + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) tx(txqueue []ipv4.Message) { + s.defaultTx(txqueue) +} diff --git a/vendor/github.com/xtaci/kcp-go/tx_linux.go b/vendor/github.com/xtaci/kcp-go/tx_linux.go new file mode 100644 index 0000000..4f19df5 --- /dev/null +++ b/vendor/github.com/xtaci/kcp-go/tx_linux.go @@ -0,0 +1,51 @@ +// +build linux + +package kcp + +import ( + "net" + "os" + "sync/atomic" + + "github.com/pkg/errors" + "golang.org/x/net/ipv4" +) + +func (s *UDPSession) tx(txqueue []ipv4.Message) { + // default version + if s.xconn == nil || s.xconnWriteError != nil { + s.defaultTx(txqueue) + return + } + + // x/net version + nbytes := 0 + npkts := 0 + for len(txqueue) > 0 { + if n, err := s.xconn.WriteBatch(txqueue, 0); err == nil { + for k := range txqueue[:n] { + nbytes += len(txqueue[k].Buffers[0]) + } + npkts += n + txqueue = txqueue[n:] + } else { + // compatibility issue: + // for linux kernel<=2.6.32, support for sendmmsg is not available + // an error of type os.SyscallError will be returned + if operr, ok := err.(*net.OpError); ok { + if se, ok := operr.Err.(*os.SyscallError); ok { + if se.Syscall == "sendmmsg" { + s.xconnWriteError = se + s.defaultTx(txqueue) + return + } + } + } + s.notifyWriteError(errors.WithStack(err)) + break + } + } + + atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) + atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) +} diff --git a/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg b/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad72505ce56882faf47353fbc27c54826df29526 GIT binary patch literal 35307 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 F|JmoHbYK7g literal 0 HcmV?d00001 diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS new file mode 100644 index 0000000..2b00ddb --- /dev/null +++ b/vendor/golang.org/x/crypto/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS new file mode 100644 index 0000000..1fbd3e9 --- /dev/null +++ b/vendor/golang.org/x/crypto/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/crypto/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/crypto/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/argon2/argon2.go b/vendor/golang.org/x/crypto/argon2/argon2.go new file mode 100644 index 0000000..b423fea --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/argon2.go @@ -0,0 +1,285 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package argon2 implements the key derivation function Argon2. +// Argon2 was selected as the winner of the Password Hashing Competition and can +// be used to derive cryptographic keys from passwords. +// +// For a detailed specification of Argon2 see [1]. +// +// If you aren't sure which function you need, use Argon2id (IDKey) and +// the parameter recommendations for your scenario. +// +// +// Argon2i +// +// Argon2i (implemented by Key) is the side-channel resistant version of Argon2. +// It uses data-independent memory access, which is preferred for password +// hashing and password-based key derivation. Argon2i requires more passes over +// memory than Argon2id to protect from trade-off attacks. The recommended +// parameters (taken from [2]) for non-interactive operations are time=3 and to +// use the maximum available memory. +// +// +// Argon2id +// +// Argon2id (implemented by IDKey) is a hybrid version of Argon2 combining +// Argon2i and Argon2d. It uses data-independent memory access for the first +// half of the first iteration over the memory and data-dependent memory access +// for the rest. Argon2id is side-channel resistant and provides better brute- +// force cost savings due to time-memory tradeoffs than Argon2i. The recommended +// parameters for non-interactive operations (taken from [2]) are time=1 and to +// use the maximum available memory. +// +// [1] https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf +// [2] https://tools.ietf.org/html/draft-irtf-cfrg-argon2-03#section-9.3 +package argon2 + +import ( + "encoding/binary" + "sync" + + "golang.org/x/crypto/blake2b" +) + +// The Argon2 version implemented by this package. +const Version = 0x13 + +const ( + argon2d = iota + argon2i + argon2id +) + +// Key derives a key from the password, salt, and cost parameters using Argon2i +// returning a byte slice of length keyLen that can be used as cryptographic +// key. The CPU cost and parallelism degree must be greater than zero. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// key := argon2.Key([]byte("some password"), salt, 3, 32*1024, 4, 32) +// +// The draft RFC recommends[2] time=3, and memory=32*1024 is a sensible number. +// If using that amount of memory (32 MB) is not possible in some contexts then +// the time parameter can be increased to compensate. +// +// The time parameter specifies the number of passes over the memory and the +// memory parameter specifies the size of the memory in KiB. For example +// memory=32*1024 sets the memory cost to ~32 MB. The number of threads can be +// adjusted to the number of available CPUs. The cost parameters should be +// increased as memory latency and CPU parallelism increases. Remember to get a +// good random salt. +func Key(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + return deriveKey(argon2i, password, salt, nil, nil, time, memory, threads, keyLen) +} + +// IDKey derives a key from the password, salt, and cost parameters using +// Argon2id returning a byte slice of length keyLen that can be used as +// cryptographic key. The CPU cost and parallelism degree must be greater than +// zero. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// key := argon2.IDKey([]byte("some password"), salt, 1, 64*1024, 4, 32) +// +// The draft RFC recommends[2] time=1, and memory=64*1024 is a sensible number. +// If using that amount of memory (64 MB) is not possible in some contexts then +// the time parameter can be increased to compensate. +// +// The time parameter specifies the number of passes over the memory and the +// memory parameter specifies the size of the memory in KiB. For example +// memory=64*1024 sets the memory cost to ~64 MB. The number of threads can be +// adjusted to the numbers of available CPUs. The cost parameters should be +// increased as memory latency and CPU parallelism increases. Remember to get a +// good random salt. +func IDKey(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + return deriveKey(argon2id, password, salt, nil, nil, time, memory, threads, keyLen) +} + +func deriveKey(mode int, password, salt, secret, data []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { + if time < 1 { + panic("argon2: number of rounds too small") + } + if threads < 1 { + panic("argon2: parallelism degree too low") + } + h0 := initHash(password, salt, secret, data, time, memory, uint32(threads), keyLen, mode) + + memory = memory / (syncPoints * uint32(threads)) * (syncPoints * uint32(threads)) + if memory < 2*syncPoints*uint32(threads) { + memory = 2 * syncPoints * uint32(threads) + } + B := initBlocks(&h0, memory, uint32(threads)) + processBlocks(B, time, memory, uint32(threads), mode) + return extractKey(B, memory, uint32(threads), keyLen) +} + +const ( + blockLength = 128 + syncPoints = 4 +) + +type block [blockLength]uint64 + +func initHash(password, salt, key, data []byte, time, memory, threads, keyLen uint32, mode int) [blake2b.Size + 8]byte { + var ( + h0 [blake2b.Size + 8]byte + params [24]byte + tmp [4]byte + ) + + b2, _ := blake2b.New512(nil) + binary.LittleEndian.PutUint32(params[0:4], threads) + binary.LittleEndian.PutUint32(params[4:8], keyLen) + binary.LittleEndian.PutUint32(params[8:12], memory) + binary.LittleEndian.PutUint32(params[12:16], time) + binary.LittleEndian.PutUint32(params[16:20], uint32(Version)) + binary.LittleEndian.PutUint32(params[20:24], uint32(mode)) + b2.Write(params[:]) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(password))) + b2.Write(tmp[:]) + b2.Write(password) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(salt))) + b2.Write(tmp[:]) + b2.Write(salt) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(key))) + b2.Write(tmp[:]) + b2.Write(key) + binary.LittleEndian.PutUint32(tmp[:], uint32(len(data))) + b2.Write(tmp[:]) + b2.Write(data) + b2.Sum(h0[:0]) + return h0 +} + +func initBlocks(h0 *[blake2b.Size + 8]byte, memory, threads uint32) []block { + var block0 [1024]byte + B := make([]block, memory) + for lane := uint32(0); lane < threads; lane++ { + j := lane * (memory / threads) + binary.LittleEndian.PutUint32(h0[blake2b.Size+4:], lane) + + binary.LittleEndian.PutUint32(h0[blake2b.Size:], 0) + blake2bHash(block0[:], h0[:]) + for i := range B[j+0] { + B[j+0][i] = binary.LittleEndian.Uint64(block0[i*8:]) + } + + binary.LittleEndian.PutUint32(h0[blake2b.Size:], 1) + blake2bHash(block0[:], h0[:]) + for i := range B[j+1] { + B[j+1][i] = binary.LittleEndian.Uint64(block0[i*8:]) + } + } + return B +} + +func processBlocks(B []block, time, memory, threads uint32, mode int) { + lanes := memory / threads + segments := lanes / syncPoints + + processSegment := func(n, slice, lane uint32, wg *sync.WaitGroup) { + var addresses, in, zero block + if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { + in[0] = uint64(n) + in[1] = uint64(lane) + in[2] = uint64(slice) + in[3] = uint64(memory) + in[4] = uint64(time) + in[5] = uint64(mode) + } + + index := uint32(0) + if n == 0 && slice == 0 { + index = 2 // we have already generated the first two blocks + if mode == argon2i || mode == argon2id { + in[6]++ + processBlock(&addresses, &in, &zero) + processBlock(&addresses, &addresses, &zero) + } + } + + offset := lane*lanes + slice*segments + index + var random uint64 + for index < segments { + prev := offset - 1 + if index == 0 && slice == 0 { + prev += lanes // last block in lane + } + if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { + if index%blockLength == 0 { + in[6]++ + processBlock(&addresses, &in, &zero) + processBlock(&addresses, &addresses, &zero) + } + random = addresses[index%blockLength] + } else { + random = B[prev][0] + } + newOffset := indexAlpha(random, lanes, segments, threads, n, slice, lane, index) + processBlockXOR(&B[offset], &B[prev], &B[newOffset]) + index, offset = index+1, offset+1 + } + wg.Done() + } + + for n := uint32(0); n < time; n++ { + for slice := uint32(0); slice < syncPoints; slice++ { + var wg sync.WaitGroup + for lane := uint32(0); lane < threads; lane++ { + wg.Add(1) + go processSegment(n, slice, lane, &wg) + } + wg.Wait() + } + } + +} + +func extractKey(B []block, memory, threads, keyLen uint32) []byte { + lanes := memory / threads + for lane := uint32(0); lane < threads-1; lane++ { + for i, v := range B[(lane*lanes)+lanes-1] { + B[memory-1][i] ^= v + } + } + + var block [1024]byte + for i, v := range B[memory-1] { + binary.LittleEndian.PutUint64(block[i*8:], v) + } + key := make([]byte, keyLen) + blake2bHash(key, block[:]) + return key +} + +func indexAlpha(rand uint64, lanes, segments, threads, n, slice, lane, index uint32) uint32 { + refLane := uint32(rand>>32) % threads + if n == 0 && slice == 0 { + refLane = lane + } + m, s := 3*segments, ((slice+1)%syncPoints)*segments + if lane == refLane { + m += index + } + if n == 0 { + m, s = slice*segments, 0 + if slice == 0 || lane == refLane { + m += index + } + } + if index == 0 || lane == refLane { + m-- + } + return phi(rand, uint64(m), uint64(s), refLane, lanes) +} + +func phi(rand, m, s uint64, lane, lanes uint32) uint32 { + p := rand & 0xFFFFFFFF + p = (p * p) >> 32 + p = (p * m) >> 32 + return lane*lanes + uint32((s+m-(p+1))%uint64(lanes)) +} diff --git a/vendor/golang.org/x/crypto/argon2/blake2b.go b/vendor/golang.org/x/crypto/argon2/blake2b.go new file mode 100644 index 0000000..10f4694 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blake2b.go @@ -0,0 +1,53 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package argon2 + +import ( + "encoding/binary" + "hash" + + "golang.org/x/crypto/blake2b" +) + +// blake2bHash computes an arbitrary long hash value of in +// and writes the hash to out. +func blake2bHash(out []byte, in []byte) { + var b2 hash.Hash + if n := len(out); n < blake2b.Size { + b2, _ = blake2b.New(n, nil) + } else { + b2, _ = blake2b.New512(nil) + } + + var buffer [blake2b.Size]byte + binary.LittleEndian.PutUint32(buffer[:4], uint32(len(out))) + b2.Write(buffer[:4]) + b2.Write(in) + + if len(out) <= blake2b.Size { + b2.Sum(out[:0]) + return + } + + outLen := len(out) + b2.Sum(buffer[:0]) + b2.Reset() + copy(out, buffer[:32]) + out = out[32:] + for len(out) > blake2b.Size { + b2.Write(buffer[:]) + b2.Sum(buffer[:0]) + copy(out, buffer[:32]) + out = out[32:] + b2.Reset() + } + + if outLen%blake2b.Size > 0 { // outLen > 64 + r := ((outLen + 31) / 32) - 2 // ⌈τ /32⌉-2 + b2, _ = blake2b.New(outLen-32*r, nil) + } + b2.Write(buffer[:]) + b2.Sum(out[:0]) +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go new file mode 100644 index 0000000..2fc1ec0 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go @@ -0,0 +1,60 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +package argon2 + +import "golang.org/x/sys/cpu" + +func init() { + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func mixBlocksSSE2(out, a, b, c *block) + +//go:noescape +func xorBlocksSSE2(out, a, b, c *block) + +//go:noescape +func blamkaSSE4(b *block) + +func processBlockSSE(out, in1, in2 *block, xor bool) { + var t block + mixBlocksSSE2(&t, in1, in2, &t) + if useSSE4 { + blamkaSSE4(&t) + } else { + for i := 0; i < blockLength; i += 16 { + blamkaGeneric( + &t[i+0], &t[i+1], &t[i+2], &t[i+3], + &t[i+4], &t[i+5], &t[i+6], &t[i+7], + &t[i+8], &t[i+9], &t[i+10], &t[i+11], + &t[i+12], &t[i+13], &t[i+14], &t[i+15], + ) + } + for i := 0; i < blockLength/8; i += 2 { + blamkaGeneric( + &t[i], &t[i+1], &t[16+i], &t[16+i+1], + &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], + &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], + &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], + ) + } + } + if xor { + xorBlocksSSE2(out, in1, in2, &t) + } else { + mixBlocksSSE2(out, in1, in2, &t) + } +} + +func processBlock(out, in1, in2 *block) { + processBlockSSE(out, in1, in2, false) +} + +func processBlockXOR(out, in1, in2 *block) { + processBlockSSE(out, in1, in2, true) +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s new file mode 100644 index 0000000..74a6e73 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s @@ -0,0 +1,243 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 + +#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v6, t1; \ + PUNPCKLQDQ v6, t2; \ + PUNPCKHQDQ v7, v6; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ v7, t2; \ + MOVO t1, v7; \ + MOVO v2, t1; \ + PUNPCKHQDQ t2, v7; \ + PUNPCKLQDQ v3, t2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v3 + +#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v2, t1; \ + PUNPCKLQDQ v2, t2; \ + PUNPCKHQDQ v3, v2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ v3, t2; \ + MOVO t1, v3; \ + MOVO v6, t1; \ + PUNPCKHQDQ t2, v3; \ + PUNPCKLQDQ v7, t2; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v7 + +#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48) \ + MOVO v0, t0; \ + PMULULQ v2, t0; \ + PADDQ v2, v0; \ + PADDQ t0, v0; \ + PADDQ t0, v0; \ + PXOR v0, v6; \ + PSHUFD $0xB1, v6, v6; \ + MOVO v4, t0; \ + PMULULQ v6, t0; \ + PADDQ v6, v4; \ + PADDQ t0, v4; \ + PADDQ t0, v4; \ + PXOR v4, v2; \ + PSHUFB c40, v2; \ + MOVO v0, t0; \ + PMULULQ v2, t0; \ + PADDQ v2, v0; \ + PADDQ t0, v0; \ + PADDQ t0, v0; \ + PXOR v0, v6; \ + PSHUFB c48, v6; \ + MOVO v4, t0; \ + PMULULQ v6, t0; \ + PADDQ v6, v4; \ + PADDQ t0, v4; \ + PADDQ t0, v4; \ + PXOR v4, v2; \ + MOVO v2, t0; \ + PADDQ v2, t0; \ + PSRLQ $63, v2; \ + PXOR t0, v2; \ + MOVO v1, t0; \ + PMULULQ v3, t0; \ + PADDQ v3, v1; \ + PADDQ t0, v1; \ + PADDQ t0, v1; \ + PXOR v1, v7; \ + PSHUFD $0xB1, v7, v7; \ + MOVO v5, t0; \ + PMULULQ v7, t0; \ + PADDQ v7, v5; \ + PADDQ t0, v5; \ + PADDQ t0, v5; \ + PXOR v5, v3; \ + PSHUFB c40, v3; \ + MOVO v1, t0; \ + PMULULQ v3, t0; \ + PADDQ v3, v1; \ + PADDQ t0, v1; \ + PADDQ t0, v1; \ + PXOR v1, v7; \ + PSHUFB c48, v7; \ + MOVO v5, t0; \ + PMULULQ v7, t0; \ + PADDQ v7, v5; \ + PADDQ t0, v5; \ + PADDQ t0, v5; \ + PXOR v5, v3; \ + MOVO v3, t0; \ + PADDQ v3, t0; \ + PSRLQ $63, v3; \ + PXOR t0, v3 + +#define LOAD_MSG_0(block, off) \ + MOVOU 8*(off+0)(block), X0; \ + MOVOU 8*(off+2)(block), X1; \ + MOVOU 8*(off+4)(block), X2; \ + MOVOU 8*(off+6)(block), X3; \ + MOVOU 8*(off+8)(block), X4; \ + MOVOU 8*(off+10)(block), X5; \ + MOVOU 8*(off+12)(block), X6; \ + MOVOU 8*(off+14)(block), X7 + +#define STORE_MSG_0(block, off) \ + MOVOU X0, 8*(off+0)(block); \ + MOVOU X1, 8*(off+2)(block); \ + MOVOU X2, 8*(off+4)(block); \ + MOVOU X3, 8*(off+6)(block); \ + MOVOU X4, 8*(off+8)(block); \ + MOVOU X5, 8*(off+10)(block); \ + MOVOU X6, 8*(off+12)(block); \ + MOVOU X7, 8*(off+14)(block) + +#define LOAD_MSG_1(block, off) \ + MOVOU 8*off+0*8(block), X0; \ + MOVOU 8*off+16*8(block), X1; \ + MOVOU 8*off+32*8(block), X2; \ + MOVOU 8*off+48*8(block), X3; \ + MOVOU 8*off+64*8(block), X4; \ + MOVOU 8*off+80*8(block), X5; \ + MOVOU 8*off+96*8(block), X6; \ + MOVOU 8*off+112*8(block), X7 + +#define STORE_MSG_1(block, off) \ + MOVOU X0, 8*off+0*8(block); \ + MOVOU X1, 8*off+16*8(block); \ + MOVOU X2, 8*off+32*8(block); \ + MOVOU X3, 8*off+48*8(block); \ + MOVOU X4, 8*off+64*8(block); \ + MOVOU X5, 8*off+80*8(block); \ + MOVOU X6, 8*off+96*8(block); \ + MOVOU X7, 8*off+112*8(block) + +#define BLAMKA_ROUND_0(block, off, t0, t1, c40, c48) \ + LOAD_MSG_0(block, off); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ + STORE_MSG_0(block, off) + +#define BLAMKA_ROUND_1(block, off, t0, t1, c40, c48) \ + LOAD_MSG_1(block, off); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ + STORE_MSG_1(block, off) + +// func blamkaSSE4(b *block) +TEXT ·blamkaSSE4(SB), 4, $0-8 + MOVQ b+0(FP), AX + + MOVOU ·c40<>(SB), X10 + MOVOU ·c48<>(SB), X11 + + BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11) + BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11) + + BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11) + BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11) + RET + +// func mixBlocksSSE2(out, a, b, c *block) +TEXT ·mixBlocksSSE2(SB), 4, $0-32 + MOVQ out+0(FP), DX + MOVQ a+8(FP), AX + MOVQ b+16(FP), BX + MOVQ a+24(FP), CX + MOVQ $128, BP + +loop: + MOVOU 0(AX), X0 + MOVOU 0(BX), X1 + MOVOU 0(CX), X2 + PXOR X1, X0 + PXOR X2, X0 + MOVOU X0, 0(DX) + ADDQ $16, AX + ADDQ $16, BX + ADDQ $16, CX + ADDQ $16, DX + SUBQ $2, BP + JA loop + RET + +// func xorBlocksSSE2(out, a, b, c *block) +TEXT ·xorBlocksSSE2(SB), 4, $0-32 + MOVQ out+0(FP), DX + MOVQ a+8(FP), AX + MOVQ b+16(FP), BX + MOVQ a+24(FP), CX + MOVQ $128, BP + +loop: + MOVOU 0(AX), X0 + MOVOU 0(BX), X1 + MOVOU 0(CX), X2 + MOVOU 0(DX), X3 + PXOR X1, X0 + PXOR X2, X0 + PXOR X3, X0 + MOVOU X0, 0(DX) + ADDQ $16, AX + ADDQ $16, BX + ADDQ $16, CX + ADDQ $16, DX + SUBQ $2, BP + JA loop + RET diff --git a/vendor/golang.org/x/crypto/argon2/blamka_generic.go b/vendor/golang.org/x/crypto/argon2/blamka_generic.go new file mode 100644 index 0000000..a481b22 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_generic.go @@ -0,0 +1,163 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package argon2 + +var useSSE4 bool + +func processBlockGeneric(out, in1, in2 *block, xor bool) { + var t block + for i := range t { + t[i] = in1[i] ^ in2[i] + } + for i := 0; i < blockLength; i += 16 { + blamkaGeneric( + &t[i+0], &t[i+1], &t[i+2], &t[i+3], + &t[i+4], &t[i+5], &t[i+6], &t[i+7], + &t[i+8], &t[i+9], &t[i+10], &t[i+11], + &t[i+12], &t[i+13], &t[i+14], &t[i+15], + ) + } + for i := 0; i < blockLength/8; i += 2 { + blamkaGeneric( + &t[i], &t[i+1], &t[16+i], &t[16+i+1], + &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], + &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], + &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], + ) + } + if xor { + for i := range t { + out[i] ^= in1[i] ^ in2[i] ^ t[i] + } + } else { + for i := range t { + out[i] = in1[i] ^ in2[i] ^ t[i] + } + } +} + +func blamkaGeneric(t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15 *uint64) { + v00, v01, v02, v03 := *t00, *t01, *t02, *t03 + v04, v05, v06, v07 := *t04, *t05, *t06, *t07 + v08, v09, v10, v11 := *t08, *t09, *t10, *t11 + v12, v13, v14, v15 := *t12, *t13, *t14, *t15 + + v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) + v12 ^= v00 + v12 = v12>>32 | v12<<32 + v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) + v04 ^= v08 + v04 = v04>>24 | v04<<40 + + v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) + v12 ^= v00 + v12 = v12>>16 | v12<<48 + v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) + v04 ^= v08 + v04 = v04>>63 | v04<<1 + + v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) + v13 ^= v01 + v13 = v13>>32 | v13<<32 + v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) + v05 ^= v09 + v05 = v05>>24 | v05<<40 + + v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) + v13 ^= v01 + v13 = v13>>16 | v13<<48 + v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) + v05 ^= v09 + v05 = v05>>63 | v05<<1 + + v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) + v14 ^= v02 + v14 = v14>>32 | v14<<32 + v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) + v06 ^= v10 + v06 = v06>>24 | v06<<40 + + v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) + v14 ^= v02 + v14 = v14>>16 | v14<<48 + v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) + v06 ^= v10 + v06 = v06>>63 | v06<<1 + + v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) + v15 ^= v03 + v15 = v15>>32 | v15<<32 + v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) + v07 ^= v11 + v07 = v07>>24 | v07<<40 + + v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) + v15 ^= v03 + v15 = v15>>16 | v15<<48 + v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) + v07 ^= v11 + v07 = v07>>63 | v07<<1 + + v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) + v15 ^= v00 + v15 = v15>>32 | v15<<32 + v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) + v05 ^= v10 + v05 = v05>>24 | v05<<40 + + v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) + v15 ^= v00 + v15 = v15>>16 | v15<<48 + v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) + v05 ^= v10 + v05 = v05>>63 | v05<<1 + + v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) + v12 ^= v01 + v12 = v12>>32 | v12<<32 + v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) + v06 ^= v11 + v06 = v06>>24 | v06<<40 + + v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) + v12 ^= v01 + v12 = v12>>16 | v12<<48 + v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) + v06 ^= v11 + v06 = v06>>63 | v06<<1 + + v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) + v13 ^= v02 + v13 = v13>>32 | v13<<32 + v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) + v07 ^= v08 + v07 = v07>>24 | v07<<40 + + v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) + v13 ^= v02 + v13 = v13>>16 | v13<<48 + v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) + v07 ^= v08 + v07 = v07>>63 | v07<<1 + + v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) + v14 ^= v03 + v14 = v14>>32 | v14<<32 + v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) + v04 ^= v09 + v04 = v04>>24 | v04<<40 + + v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) + v14 ^= v03 + v14 = v14>>16 | v14<<48 + v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) + v04 ^= v09 + v04 = v04>>63 | v04<<1 + + *t00, *t01, *t02, *t03 = v00, v01, v02, v03 + *t04, *t05, *t06, *t07 = v04, v05, v06, v07 + *t08, *t09, *t10, *t11 = v08, v09, v10, v11 + *t12, *t13, *t14, *t15 = v12, v13, v14, v15 +} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_ref.go b/vendor/golang.org/x/crypto/argon2/blamka_ref.go new file mode 100644 index 0000000..baf7b55 --- /dev/null +++ b/vendor/golang.org/x/crypto/argon2/blamka_ref.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package argon2 + +func processBlock(out, in1, in2 *block) { + processBlockGeneric(out, in1, in2, false) +} + +func processBlockXOR(out, in1, in2 *block) { + processBlockGeneric(out, in1, in2, true) +} diff --git a/vendor/golang.org/x/crypto/bcrypt/base64.go b/vendor/golang.org/x/crypto/bcrypt/base64.go new file mode 100644 index 0000000..fc31160 --- /dev/null +++ b/vendor/golang.org/x/crypto/bcrypt/base64.go @@ -0,0 +1,35 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bcrypt + +import "encoding/base64" + +const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + +var bcEncoding = base64.NewEncoding(alphabet) + +func base64Encode(src []byte) []byte { + n := bcEncoding.EncodedLen(len(src)) + dst := make([]byte, n) + bcEncoding.Encode(dst, src) + for dst[n-1] == '=' { + n-- + } + return dst[:n] +} + +func base64Decode(src []byte) ([]byte, error) { + numOfEquals := 4 - (len(src) % 4) + for i := 0; i < numOfEquals; i++ { + src = append(src, '=') + } + + dst := make([]byte, bcEncoding.DecodedLen(len(src))) + n, err := bcEncoding.Decode(dst, src) + if err != nil { + return nil, err + } + return dst[:n], nil +} diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go new file mode 100644 index 0000000..aeb73f8 --- /dev/null +++ b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go @@ -0,0 +1,295 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing +// algorithm. See http://www.usenix.org/event/usenix99/provos/provos.pdf +package bcrypt // import "golang.org/x/crypto/bcrypt" + +// The code is a port of Provos and Mazières's C implementation. +import ( + "crypto/rand" + "crypto/subtle" + "errors" + "fmt" + "io" + "strconv" + + "golang.org/x/crypto/blowfish" +) + +const ( + MinCost int = 4 // the minimum allowable cost as passed in to GenerateFromPassword + MaxCost int = 31 // the maximum allowable cost as passed in to GenerateFromPassword + DefaultCost int = 10 // the cost that will actually be set if a cost below MinCost is passed into GenerateFromPassword +) + +// The error returned from CompareHashAndPassword when a password and hash do +// not match. +var ErrMismatchedHashAndPassword = errors.New("crypto/bcrypt: hashedPassword is not the hash of the given password") + +// The error returned from CompareHashAndPassword when a hash is too short to +// be a bcrypt hash. +var ErrHashTooShort = errors.New("crypto/bcrypt: hashedSecret too short to be a bcrypted password") + +// The error returned from CompareHashAndPassword when a hash was created with +// a bcrypt algorithm newer than this implementation. +type HashVersionTooNewError byte + +func (hv HashVersionTooNewError) Error() string { + return fmt.Sprintf("crypto/bcrypt: bcrypt algorithm version '%c' requested is newer than current version '%c'", byte(hv), majorVersion) +} + +// The error returned from CompareHashAndPassword when a hash starts with something other than '$' +type InvalidHashPrefixError byte + +func (ih InvalidHashPrefixError) Error() string { + return fmt.Sprintf("crypto/bcrypt: bcrypt hashes must start with '$', but hashedSecret started with '%c'", byte(ih)) +} + +type InvalidCostError int + +func (ic InvalidCostError) Error() string { + return fmt.Sprintf("crypto/bcrypt: cost %d is outside allowed range (%d,%d)", int(ic), int(MinCost), int(MaxCost)) +} + +const ( + majorVersion = '2' + minorVersion = 'a' + maxSaltSize = 16 + maxCryptedHashSize = 23 + encodedSaltSize = 22 + encodedHashSize = 31 + minHashSize = 59 +) + +// magicCipherData is an IV for the 64 Blowfish encryption calls in +// bcrypt(). It's the string "OrpheanBeholderScryDoubt" in big-endian bytes. +var magicCipherData = []byte{ + 0x4f, 0x72, 0x70, 0x68, + 0x65, 0x61, 0x6e, 0x42, + 0x65, 0x68, 0x6f, 0x6c, + 0x64, 0x65, 0x72, 0x53, + 0x63, 0x72, 0x79, 0x44, + 0x6f, 0x75, 0x62, 0x74, +} + +type hashed struct { + hash []byte + salt []byte + cost int // allowed range is MinCost to MaxCost + major byte + minor byte +} + +// GenerateFromPassword returns the bcrypt hash of the password at the given +// cost. If the cost given is less than MinCost, the cost will be set to +// DefaultCost, instead. Use CompareHashAndPassword, as defined in this package, +// to compare the returned hashed password with its cleartext version. +func GenerateFromPassword(password []byte, cost int) ([]byte, error) { + p, err := newFromPassword(password, cost) + if err != nil { + return nil, err + } + return p.Hash(), nil +} + +// CompareHashAndPassword compares a bcrypt hashed password with its possible +// plaintext equivalent. Returns nil on success, or an error on failure. +func CompareHashAndPassword(hashedPassword, password []byte) error { + p, err := newFromHash(hashedPassword) + if err != nil { + return err + } + + otherHash, err := bcrypt(password, p.cost, p.salt) + if err != nil { + return err + } + + otherP := &hashed{otherHash, p.salt, p.cost, p.major, p.minor} + if subtle.ConstantTimeCompare(p.Hash(), otherP.Hash()) == 1 { + return nil + } + + return ErrMismatchedHashAndPassword +} + +// Cost returns the hashing cost used to create the given hashed +// password. When, in the future, the hashing cost of a password system needs +// to be increased in order to adjust for greater computational power, this +// function allows one to establish which passwords need to be updated. +func Cost(hashedPassword []byte) (int, error) { + p, err := newFromHash(hashedPassword) + if err != nil { + return 0, err + } + return p.cost, nil +} + +func newFromPassword(password []byte, cost int) (*hashed, error) { + if cost < MinCost { + cost = DefaultCost + } + p := new(hashed) + p.major = majorVersion + p.minor = minorVersion + + err := checkCost(cost) + if err != nil { + return nil, err + } + p.cost = cost + + unencodedSalt := make([]byte, maxSaltSize) + _, err = io.ReadFull(rand.Reader, unencodedSalt) + if err != nil { + return nil, err + } + + p.salt = base64Encode(unencodedSalt) + hash, err := bcrypt(password, p.cost, p.salt) + if err != nil { + return nil, err + } + p.hash = hash + return p, err +} + +func newFromHash(hashedSecret []byte) (*hashed, error) { + if len(hashedSecret) < minHashSize { + return nil, ErrHashTooShort + } + p := new(hashed) + n, err := p.decodeVersion(hashedSecret) + if err != nil { + return nil, err + } + hashedSecret = hashedSecret[n:] + n, err = p.decodeCost(hashedSecret) + if err != nil { + return nil, err + } + hashedSecret = hashedSecret[n:] + + // The "+2" is here because we'll have to append at most 2 '=' to the salt + // when base64 decoding it in expensiveBlowfishSetup(). + p.salt = make([]byte, encodedSaltSize, encodedSaltSize+2) + copy(p.salt, hashedSecret[:encodedSaltSize]) + + hashedSecret = hashedSecret[encodedSaltSize:] + p.hash = make([]byte, len(hashedSecret)) + copy(p.hash, hashedSecret) + + return p, nil +} + +func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) { + cipherData := make([]byte, len(magicCipherData)) + copy(cipherData, magicCipherData) + + c, err := expensiveBlowfishSetup(password, uint32(cost), salt) + if err != nil { + return nil, err + } + + for i := 0; i < 24; i += 8 { + for j := 0; j < 64; j++ { + c.Encrypt(cipherData[i:i+8], cipherData[i:i+8]) + } + } + + // Bug compatibility with C bcrypt implementations. We only encode 23 of + // the 24 bytes encrypted. + hsh := base64Encode(cipherData[:maxCryptedHashSize]) + return hsh, nil +} + +func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) (*blowfish.Cipher, error) { + csalt, err := base64Decode(salt) + if err != nil { + return nil, err + } + + // Bug compatibility with C bcrypt implementations. They use the trailing + // NULL in the key string during expansion. + // We copy the key to prevent changing the underlying array. + ckey := append(key[:len(key):len(key)], 0) + + c, err := blowfish.NewSaltedCipher(ckey, csalt) + if err != nil { + return nil, err + } + + var i, rounds uint64 + rounds = 1 << cost + for i = 0; i < rounds; i++ { + blowfish.ExpandKey(ckey, c) + blowfish.ExpandKey(csalt, c) + } + + return c, nil +} + +func (p *hashed) Hash() []byte { + arr := make([]byte, 60) + arr[0] = '$' + arr[1] = p.major + n := 2 + if p.minor != 0 { + arr[2] = p.minor + n = 3 + } + arr[n] = '$' + n++ + copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost))) + n += 2 + arr[n] = '$' + n++ + copy(arr[n:], p.salt) + n += encodedSaltSize + copy(arr[n:], p.hash) + n += encodedHashSize + return arr[:n] +} + +func (p *hashed) decodeVersion(sbytes []byte) (int, error) { + if sbytes[0] != '$' { + return -1, InvalidHashPrefixError(sbytes[0]) + } + if sbytes[1] > majorVersion { + return -1, HashVersionTooNewError(sbytes[1]) + } + p.major = sbytes[1] + n := 3 + if sbytes[2] != '$' { + p.minor = sbytes[2] + n++ + } + return n, nil +} + +// sbytes should begin where decodeVersion left off. +func (p *hashed) decodeCost(sbytes []byte) (int, error) { + cost, err := strconv.Atoi(string(sbytes[0:2])) + if err != nil { + return -1, err + } + err = checkCost(cost) + if err != nil { + return -1, err + } + p.cost = cost + return 3, nil +} + +func (p *hashed) String() string { + return fmt.Sprintf("&{hash: %#v, salt: %#v, cost: %d, major: %c, minor: %c}", string(p.hash), p.salt, p.cost, p.major, p.minor) +} + +func checkCost(cost int) error { + if cost < MinCost || cost > MaxCost { + return InvalidCostError(cost) + } + return nil +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b.go b/vendor/golang.org/x/crypto/blake2b/blake2b.go new file mode 100644 index 0000000..c160e1a --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b.go @@ -0,0 +1,289 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blake2b implements the BLAKE2b hash algorithm defined by RFC 7693 +// and the extendable output function (XOF) BLAKE2Xb. +// +// For a detailed specification of BLAKE2b see https://blake2.net/blake2.pdf +// and for BLAKE2Xb see https://blake2.net/blake2x.pdf +// +// If you aren't sure which function you need, use BLAKE2b (Sum512 or New512). +// If you need a secret-key MAC (message authentication code), use the New512 +// function with a non-nil key. +// +// BLAKE2X is a construction to compute hash values larger than 64 bytes. It +// can produce hash values between 0 and 4 GiB. +package blake2b + +import ( + "encoding/binary" + "errors" + "hash" +) + +const ( + // The blocksize of BLAKE2b in bytes. + BlockSize = 128 + // The hash size of BLAKE2b-512 in bytes. + Size = 64 + // The hash size of BLAKE2b-384 in bytes. + Size384 = 48 + // The hash size of BLAKE2b-256 in bytes. + Size256 = 32 +) + +var ( + useAVX2 bool + useAVX bool + useSSE4 bool +) + +var ( + errKeySize = errors.New("blake2b: invalid key size") + errHashSize = errors.New("blake2b: invalid hash size") +) + +var iv = [8]uint64{ + 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, + 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179, +} + +// Sum512 returns the BLAKE2b-512 checksum of the data. +func Sum512(data []byte) [Size]byte { + var sum [Size]byte + checkSum(&sum, Size, data) + return sum +} + +// Sum384 returns the BLAKE2b-384 checksum of the data. +func Sum384(data []byte) [Size384]byte { + var sum [Size]byte + var sum384 [Size384]byte + checkSum(&sum, Size384, data) + copy(sum384[:], sum[:Size384]) + return sum384 +} + +// Sum256 returns the BLAKE2b-256 checksum of the data. +func Sum256(data []byte) [Size256]byte { + var sum [Size]byte + var sum256 [Size256]byte + checkSum(&sum, Size256, data) + copy(sum256[:], sum[:Size256]) + return sum256 +} + +// New512 returns a new hash.Hash computing the BLAKE2b-512 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New512(key []byte) (hash.Hash, error) { return newDigest(Size, key) } + +// New384 returns a new hash.Hash computing the BLAKE2b-384 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New384(key []byte) (hash.Hash, error) { return newDigest(Size384, key) } + +// New256 returns a new hash.Hash computing the BLAKE2b-256 checksum. A non-nil +// key turns the hash into a MAC. The key must be between zero and 64 bytes long. +func New256(key []byte) (hash.Hash, error) { return newDigest(Size256, key) } + +// New returns a new hash.Hash computing the BLAKE2b checksum with a custom length. +// A non-nil key turns the hash into a MAC. The key must be between zero and 64 bytes long. +// The hash size can be a value between 1 and 64 but it is highly recommended to use +// values equal or greater than: +// - 32 if BLAKE2b is used as a hash function (The key is zero bytes long). +// - 16 if BLAKE2b is used as a MAC function (The key is at least 16 bytes long). +// When the key is nil, the returned hash.Hash implements BinaryMarshaler +// and BinaryUnmarshaler for state (de)serialization as documented by hash.Hash. +func New(size int, key []byte) (hash.Hash, error) { return newDigest(size, key) } + +func newDigest(hashSize int, key []byte) (*digest, error) { + if hashSize < 1 || hashSize > Size { + return nil, errHashSize + } + if len(key) > Size { + return nil, errKeySize + } + d := &digest{ + size: hashSize, + keyLen: len(key), + } + copy(d.key[:], key) + d.Reset() + return d, nil +} + +func checkSum(sum *[Size]byte, hashSize int, data []byte) { + h := iv + h[0] ^= uint64(hashSize) | (1 << 16) | (1 << 24) + var c [2]uint64 + + if length := len(data); length > BlockSize { + n := length &^ (BlockSize - 1) + if length == n { + n -= BlockSize + } + hashBlocks(&h, &c, 0, data[:n]) + data = data[n:] + } + + var block [BlockSize]byte + offset := copy(block[:], data) + remaining := uint64(BlockSize - offset) + if c[0] < remaining { + c[1]-- + } + c[0] -= remaining + + hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) + + for i, v := range h[:(hashSize+7)/8] { + binary.LittleEndian.PutUint64(sum[8*i:], v) + } +} + +type digest struct { + h [8]uint64 + c [2]uint64 + size int + block [BlockSize]byte + offset int + + key [BlockSize]byte + keyLen int +} + +const ( + magic = "b2b" + marshaledSize = len(magic) + 8*8 + 2*8 + 1 + BlockSize + 1 +) + +func (d *digest) MarshalBinary() ([]byte, error) { + if d.keyLen != 0 { + return nil, errors.New("crypto/blake2b: cannot marshal MACs") + } + b := make([]byte, 0, marshaledSize) + b = append(b, magic...) + for i := 0; i < 8; i++ { + b = appendUint64(b, d.h[i]) + } + b = appendUint64(b, d.c[0]) + b = appendUint64(b, d.c[1]) + // Maximum value for size is 64 + b = append(b, byte(d.size)) + b = append(b, d.block[:]...) + b = append(b, byte(d.offset)) + return b, nil +} + +func (d *digest) UnmarshalBinary(b []byte) error { + if len(b) < len(magic) || string(b[:len(magic)]) != magic { + return errors.New("crypto/blake2b: invalid hash state identifier") + } + if len(b) != marshaledSize { + return errors.New("crypto/blake2b: invalid hash state size") + } + b = b[len(magic):] + for i := 0; i < 8; i++ { + b, d.h[i] = consumeUint64(b) + } + b, d.c[0] = consumeUint64(b) + b, d.c[1] = consumeUint64(b) + d.size = int(b[0]) + b = b[1:] + copy(d.block[:], b[:BlockSize]) + b = b[BlockSize:] + d.offset = int(b[0]) + return nil +} + +func (d *digest) BlockSize() int { return BlockSize } + +func (d *digest) Size() int { return d.size } + +func (d *digest) Reset() { + d.h = iv + d.h[0] ^= uint64(d.size) | (uint64(d.keyLen) << 8) | (1 << 16) | (1 << 24) + d.offset, d.c[0], d.c[1] = 0, 0, 0 + if d.keyLen > 0 { + d.block = d.key + d.offset = BlockSize + } +} + +func (d *digest) Write(p []byte) (n int, err error) { + n = len(p) + + if d.offset > 0 { + remaining := BlockSize - d.offset + if n <= remaining { + d.offset += copy(d.block[d.offset:], p) + return + } + copy(d.block[d.offset:], p[:remaining]) + hashBlocks(&d.h, &d.c, 0, d.block[:]) + d.offset = 0 + p = p[remaining:] + } + + if length := len(p); length > BlockSize { + nn := length &^ (BlockSize - 1) + if length == nn { + nn -= BlockSize + } + hashBlocks(&d.h, &d.c, 0, p[:nn]) + p = p[nn:] + } + + if len(p) > 0 { + d.offset += copy(d.block[:], p) + } + + return +} + +func (d *digest) Sum(sum []byte) []byte { + var hash [Size]byte + d.finalize(&hash) + return append(sum, hash[:d.size]...) +} + +func (d *digest) finalize(hash *[Size]byte) { + var block [BlockSize]byte + copy(block[:], d.block[:d.offset]) + remaining := uint64(BlockSize - d.offset) + + c := d.c + if c[0] < remaining { + c[1]-- + } + c[0] -= remaining + + h := d.h + hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) + + for i, v := range h { + binary.LittleEndian.PutUint64(hash[8*i:], v) + } +} + +func appendUint64(b []byte, x uint64) []byte { + var a [8]byte + binary.BigEndian.PutUint64(a[:], x) + return append(b, a[:]...) +} + +func appendUint32(b []byte, x uint32) []byte { + var a [4]byte + binary.BigEndian.PutUint32(a[:], x) + return append(b, a[:]...) +} + +func consumeUint64(b []byte) ([]byte, uint64) { + x := binary.BigEndian.Uint64(b) + return b[8:], x +} + +func consumeUint32(b []byte) ([]byte, uint32) { + x := binary.BigEndian.Uint32(b) + return b[4:], x +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go new file mode 100644 index 0000000..4d31dd0 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine + +package blake2b + +import "golang.org/x/sys/cpu" + +func init() { + useAVX2 = cpu.X86.HasAVX2 + useAVX = cpu.X86.HasAVX + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +//go:noescape +func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + switch { + case useAVX2: + hashBlocksAVX2(h, c, flag, blocks) + case useAVX: + hashBlocksAVX(h, c, flag, blocks) + case useSSE4: + hashBlocksSSE4(h, c, flag, blocks) + default: + hashBlocksGeneric(h, c, flag, blocks) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s new file mode 100644 index 0000000..5593b1b --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s @@ -0,0 +1,750 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·AVX2_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX2_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +DATA ·AVX2_iv0<>+0x10(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX2_iv0<>+0x18(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX2_iv0<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_iv1<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·AVX2_iv1<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +DATA ·AVX2_iv1<>+0x10(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX2_iv1<>+0x18(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX2_iv1<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +DATA ·AVX2_c40<>+0x10(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+0x18(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX2_c40<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX2_c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +DATA ·AVX2_c48<>+0x10(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+0x18(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX2_c48<>(SB), (NOPTR+RODATA), $32 + +DATA ·AVX_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +GLOBL ·AVX_iv0<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX_iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX_iv1<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv2<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·AVX_iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·AVX_iv2<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX_iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX_iv3<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·AVX_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX_c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·AVX_c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·AVX_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX_c48<>(SB), (NOPTR+RODATA), $16 + +#define VPERMQ_0x39_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x39 +#define VPERMQ_0x93_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x93 +#define VPERMQ_0x4E_Y2_Y2 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xd2; BYTE $0x4e +#define VPERMQ_0x93_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x93 +#define VPERMQ_0x39_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x39 + +#define ROUND_AVX2(m0, m1, m2, m3, t, c40, c48) \ + VPADDQ m0, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFD $-79, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPSHUFB c40, Y1, Y1; \ + VPADDQ m1, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFB c48, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPADDQ Y1, Y1, t; \ + VPSRLQ $63, Y1, Y1; \ + VPXOR t, Y1, Y1; \ + VPERMQ_0x39_Y1_Y1; \ + VPERMQ_0x4E_Y2_Y2; \ + VPERMQ_0x93_Y3_Y3; \ + VPADDQ m2, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFD $-79, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPSHUFB c40, Y1, Y1; \ + VPADDQ m3, Y0, Y0; \ + VPADDQ Y1, Y0, Y0; \ + VPXOR Y0, Y3, Y3; \ + VPSHUFB c48, Y3, Y3; \ + VPADDQ Y3, Y2, Y2; \ + VPXOR Y2, Y1, Y1; \ + VPADDQ Y1, Y1, t; \ + VPSRLQ $63, Y1, Y1; \ + VPXOR t, Y1, Y1; \ + VPERMQ_0x39_Y3_Y3; \ + VPERMQ_0x4E_Y2_Y2; \ + VPERMQ_0x93_Y1_Y1 + +#define VMOVQ_SI_X11_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x1E +#define VMOVQ_SI_X12_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x26 +#define VMOVQ_SI_X13_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x2E +#define VMOVQ_SI_X14_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x36 +#define VMOVQ_SI_X15_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x3E + +#define VMOVQ_SI_X11(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x5E; BYTE $n +#define VMOVQ_SI_X12(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x66; BYTE $n +#define VMOVQ_SI_X13(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x6E; BYTE $n +#define VMOVQ_SI_X14(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x76; BYTE $n +#define VMOVQ_SI_X15(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x7E; BYTE $n + +#define VPINSRQ_1_SI_X11_0 BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x1E; BYTE $0x01 +#define VPINSRQ_1_SI_X12_0 BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x26; BYTE $0x01 +#define VPINSRQ_1_SI_X13_0 BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x2E; BYTE $0x01 +#define VPINSRQ_1_SI_X14_0 BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x36; BYTE $0x01 +#define VPINSRQ_1_SI_X15_0 BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x3E; BYTE $0x01 + +#define VPINSRQ_1_SI_X11(n) BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x5E; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X12(n) BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x66; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X13(n) BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x6E; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X14(n) BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x76; BYTE $n; BYTE $0x01 +#define VPINSRQ_1_SI_X15(n) BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x7E; BYTE $n; BYTE $0x01 + +#define VMOVQ_R8_X15 BYTE $0xC4; BYTE $0x41; BYTE $0xF9; BYTE $0x6E; BYTE $0xF8 +#define VPINSRQ_1_R9_X15 BYTE $0xC4; BYTE $0x43; BYTE $0x81; BYTE $0x22; BYTE $0xF9; BYTE $0x01 + +// load msg: Y12 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y12(i0, i1, i2, i3) \ + VMOVQ_SI_X12(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X12(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y12, Y12 + +// load msg: Y13 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y13(i0, i1, i2, i3) \ + VMOVQ_SI_X13(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X13(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y13, Y13 + +// load msg: Y14 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y14(i0, i1, i2, i3) \ + VMOVQ_SI_X14(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X14(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y14, Y14 + +// load msg: Y15 = (i0, i1, i2, i3) +// i0, i1, i2, i3 must not be 0 +#define LOAD_MSG_AVX2_Y15(i0, i1, i2, i3) \ + VMOVQ_SI_X15(i0*8); \ + VMOVQ_SI_X11(i2*8); \ + VPINSRQ_1_SI_X15(i1*8); \ + VPINSRQ_1_SI_X11(i3*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() \ + VMOVQ_SI_X12_0; \ + VMOVQ_SI_X11(4*8); \ + VPINSRQ_1_SI_X12(2*8); \ + VPINSRQ_1_SI_X11(6*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(1, 3, 5, 7); \ + LOAD_MSG_AVX2_Y14(8, 10, 12, 14); \ + LOAD_MSG_AVX2_Y15(9, 11, 13, 15) + +#define LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() \ + LOAD_MSG_AVX2_Y12(14, 4, 9, 13); \ + LOAD_MSG_AVX2_Y13(10, 8, 15, 6); \ + VMOVQ_SI_X11(11*8); \ + VPSHUFD $0x4E, 0*8(SI), X14; \ + VPINSRQ_1_SI_X11(5*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + LOAD_MSG_AVX2_Y15(12, 2, 7, 3) + +#define LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() \ + VMOVQ_SI_X11(5*8); \ + VMOVDQU 11*8(SI), X12; \ + VPINSRQ_1_SI_X11(15*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + VMOVQ_SI_X13(8*8); \ + VMOVQ_SI_X11(2*8); \ + VPINSRQ_1_SI_X13_0; \ + VPINSRQ_1_SI_X11(13*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(10, 3, 7, 9); \ + LOAD_MSG_AVX2_Y15(14, 6, 1, 4) + +#define LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() \ + LOAD_MSG_AVX2_Y12(7, 3, 13, 11); \ + LOAD_MSG_AVX2_Y13(9, 1, 12, 14); \ + LOAD_MSG_AVX2_Y14(2, 5, 4, 15); \ + VMOVQ_SI_X15(6*8); \ + VMOVQ_SI_X11_0; \ + VPINSRQ_1_SI_X15(10*8); \ + VPINSRQ_1_SI_X11(8*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() \ + LOAD_MSG_AVX2_Y12(9, 5, 2, 10); \ + VMOVQ_SI_X13_0; \ + VMOVQ_SI_X11(4*8); \ + VPINSRQ_1_SI_X13(7*8); \ + VPINSRQ_1_SI_X11(15*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(14, 11, 6, 3); \ + LOAD_MSG_AVX2_Y15(1, 12, 8, 13) + +#define LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X11_0; \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X11(8*8); \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(12, 10, 11, 3); \ + LOAD_MSG_AVX2_Y14(4, 7, 15, 1); \ + LOAD_MSG_AVX2_Y15(13, 5, 14, 9) + +#define LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() \ + LOAD_MSG_AVX2_Y12(12, 1, 14, 4); \ + LOAD_MSG_AVX2_Y13(5, 15, 13, 10); \ + VMOVQ_SI_X14_0; \ + VPSHUFD $0x4E, 8*8(SI), X11; \ + VPINSRQ_1_SI_X14(6*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + LOAD_MSG_AVX2_Y15(7, 3, 2, 11) + +#define LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() \ + LOAD_MSG_AVX2_Y12(13, 7, 12, 3); \ + LOAD_MSG_AVX2_Y13(11, 14, 1, 9); \ + LOAD_MSG_AVX2_Y14(5, 15, 8, 2); \ + VMOVQ_SI_X15_0; \ + VMOVQ_SI_X11(6*8); \ + VPINSRQ_1_SI_X15(4*8); \ + VPINSRQ_1_SI_X11(10*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() \ + VMOVQ_SI_X12(6*8); \ + VMOVQ_SI_X11(11*8); \ + VPINSRQ_1_SI_X12(14*8); \ + VPINSRQ_1_SI_X11_0; \ + VINSERTI128 $1, X11, Y12, Y12; \ + LOAD_MSG_AVX2_Y13(15, 9, 3, 8); \ + VMOVQ_SI_X11(1*8); \ + VMOVDQU 12*8(SI), X14; \ + VPINSRQ_1_SI_X11(10*8); \ + VINSERTI128 $1, X11, Y14, Y14; \ + VMOVQ_SI_X15(2*8); \ + VMOVDQU 4*8(SI), X11; \ + VPINSRQ_1_SI_X15(7*8); \ + VINSERTI128 $1, X11, Y15, Y15 + +#define LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() \ + LOAD_MSG_AVX2_Y12(10, 8, 7, 1); \ + VMOVQ_SI_X13(2*8); \ + VPSHUFD $0x4E, 5*8(SI), X11; \ + VPINSRQ_1_SI_X13(4*8); \ + VINSERTI128 $1, X11, Y13, Y13; \ + LOAD_MSG_AVX2_Y14(15, 9, 3, 13); \ + VMOVQ_SI_X15(11*8); \ + VMOVQ_SI_X11(12*8); \ + VPINSRQ_1_SI_X15(14*8); \ + VPINSRQ_1_SI_X11_0; \ + VINSERTI128 $1, X11, Y15, Y15 + +// func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksAVX2(SB), 4, $320-48 // frame size = 288 + 32 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, DX + MOVQ SP, R9 + ADDQ $31, R9 + ANDQ $~31, R9 + MOVQ R9, SP + + MOVQ CX, 16(SP) + XORQ CX, CX + MOVQ CX, 24(SP) + + VMOVDQU ·AVX2_c40<>(SB), Y4 + VMOVDQU ·AVX2_c48<>(SB), Y5 + + VMOVDQU 0(AX), Y8 + VMOVDQU 32(AX), Y9 + VMOVDQU ·AVX2_iv0<>(SB), Y6 + VMOVDQU ·AVX2_iv1<>(SB), Y7 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + MOVQ R9, 8(SP) + +loop: + ADDQ $128, R8 + MOVQ R8, 0(SP) + CMPQ R8, $128 + JGE noinc + INCQ R9 + MOVQ R9, 8(SP) + +noinc: + VMOVDQA Y8, Y0 + VMOVDQA Y9, Y1 + VMOVDQA Y6, Y2 + VPXOR 0(SP), Y7, Y3 + + LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() + VMOVDQA Y12, 32(SP) + VMOVDQA Y13, 64(SP) + VMOVDQA Y14, 96(SP) + VMOVDQA Y15, 128(SP) + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() + VMOVDQA Y12, 160(SP) + VMOVDQA Y13, 192(SP) + VMOVDQA Y14, 224(SP) + VMOVDQA Y15, 256(SP) + + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() + ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) + + ROUND_AVX2(32(SP), 64(SP), 96(SP), 128(SP), Y10, Y4, Y5) + ROUND_AVX2(160(SP), 192(SP), 224(SP), 256(SP), Y10, Y4, Y5) + + VPXOR Y0, Y8, Y8 + VPXOR Y1, Y9, Y9 + VPXOR Y2, Y8, Y8 + VPXOR Y3, Y9, Y9 + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + + VMOVDQU Y8, 0(AX) + VMOVDQU Y9, 32(AX) + VZEROUPPER + + MOVQ DX, SP + RET + +#define VPUNPCKLQDQ_X2_X2_X15 BYTE $0xC5; BYTE $0x69; BYTE $0x6C; BYTE $0xFA +#define VPUNPCKLQDQ_X3_X3_X15 BYTE $0xC5; BYTE $0x61; BYTE $0x6C; BYTE $0xFB +#define VPUNPCKLQDQ_X7_X7_X15 BYTE $0xC5; BYTE $0x41; BYTE $0x6C; BYTE $0xFF +#define VPUNPCKLQDQ_X13_X13_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x11; BYTE $0x6C; BYTE $0xFD +#define VPUNPCKLQDQ_X14_X14_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x09; BYTE $0x6C; BYTE $0xFE + +#define VPUNPCKHQDQ_X15_X2_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x69; BYTE $0x6D; BYTE $0xD7 +#define VPUNPCKHQDQ_X15_X3_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xDF +#define VPUNPCKHQDQ_X15_X6_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x49; BYTE $0x6D; BYTE $0xF7 +#define VPUNPCKHQDQ_X15_X7_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xFF +#define VPUNPCKHQDQ_X15_X3_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xD7 +#define VPUNPCKHQDQ_X15_X7_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xF7 +#define VPUNPCKHQDQ_X15_X13_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xDF +#define VPUNPCKHQDQ_X15_X13_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xFF + +#define SHUFFLE_AVX() \ + VMOVDQA X6, X13; \ + VMOVDQA X2, X14; \ + VMOVDQA X4, X6; \ + VPUNPCKLQDQ_X13_X13_X15; \ + VMOVDQA X5, X4; \ + VMOVDQA X6, X5; \ + VPUNPCKHQDQ_X15_X7_X6; \ + VPUNPCKLQDQ_X7_X7_X15; \ + VPUNPCKHQDQ_X15_X13_X7; \ + VPUNPCKLQDQ_X3_X3_X15; \ + VPUNPCKHQDQ_X15_X2_X2; \ + VPUNPCKLQDQ_X14_X14_X15; \ + VPUNPCKHQDQ_X15_X3_X3; \ + +#define SHUFFLE_AVX_INV() \ + VMOVDQA X2, X13; \ + VMOVDQA X4, X14; \ + VPUNPCKLQDQ_X2_X2_X15; \ + VMOVDQA X5, X4; \ + VPUNPCKHQDQ_X15_X3_X2; \ + VMOVDQA X14, X5; \ + VPUNPCKLQDQ_X3_X3_X15; \ + VMOVDQA X6, X14; \ + VPUNPCKHQDQ_X15_X13_X3; \ + VPUNPCKLQDQ_X7_X7_X15; \ + VPUNPCKHQDQ_X15_X6_X6; \ + VPUNPCKLQDQ_X14_X14_X15; \ + VPUNPCKHQDQ_X15_X7_X7; \ + +#define HALF_ROUND_AVX(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ + VPADDQ m0, v0, v0; \ + VPADDQ v2, v0, v0; \ + VPADDQ m1, v1, v1; \ + VPADDQ v3, v1, v1; \ + VPXOR v0, v6, v6; \ + VPXOR v1, v7, v7; \ + VPSHUFD $-79, v6, v6; \ + VPSHUFD $-79, v7, v7; \ + VPADDQ v6, v4, v4; \ + VPADDQ v7, v5, v5; \ + VPXOR v4, v2, v2; \ + VPXOR v5, v3, v3; \ + VPSHUFB c40, v2, v2; \ + VPSHUFB c40, v3, v3; \ + VPADDQ m2, v0, v0; \ + VPADDQ v2, v0, v0; \ + VPADDQ m3, v1, v1; \ + VPADDQ v3, v1, v1; \ + VPXOR v0, v6, v6; \ + VPXOR v1, v7, v7; \ + VPSHUFB c48, v6, v6; \ + VPSHUFB c48, v7, v7; \ + VPADDQ v6, v4, v4; \ + VPADDQ v7, v5, v5; \ + VPXOR v4, v2, v2; \ + VPXOR v5, v3, v3; \ + VPADDQ v2, v2, t0; \ + VPSRLQ $63, v2, v2; \ + VPXOR t0, v2, v2; \ + VPADDQ v3, v3, t0; \ + VPSRLQ $63, v3, v3; \ + VPXOR t0, v3, v3 + +// load msg: X12 = (i0, i1), X13 = (i2, i3), X14 = (i4, i5), X15 = (i6, i7) +// i0, i1, i2, i3, i4, i5, i6, i7 must not be 0 +#define LOAD_MSG_AVX(i0, i1, i2, i3, i4, i5, i6, i7) \ + VMOVQ_SI_X12(i0*8); \ + VMOVQ_SI_X13(i2*8); \ + VMOVQ_SI_X14(i4*8); \ + VMOVQ_SI_X15(i6*8); \ + VPINSRQ_1_SI_X12(i1*8); \ + VPINSRQ_1_SI_X13(i3*8); \ + VPINSRQ_1_SI_X14(i5*8); \ + VPINSRQ_1_SI_X15(i7*8) + +// load msg: X12 = (0, 2), X13 = (4, 6), X14 = (1, 3), X15 = (5, 7) +#define LOAD_MSG_AVX_0_2_4_6_1_3_5_7() \ + VMOVQ_SI_X12_0; \ + VMOVQ_SI_X13(4*8); \ + VMOVQ_SI_X14(1*8); \ + VMOVQ_SI_X15(5*8); \ + VPINSRQ_1_SI_X12(2*8); \ + VPINSRQ_1_SI_X13(6*8); \ + VPINSRQ_1_SI_X14(3*8); \ + VPINSRQ_1_SI_X15(7*8) + +// load msg: X12 = (1, 0), X13 = (11, 5), X14 = (12, 2), X15 = (7, 3) +#define LOAD_MSG_AVX_1_0_11_5_12_2_7_3() \ + VPSHUFD $0x4E, 0*8(SI), X12; \ + VMOVQ_SI_X13(11*8); \ + VMOVQ_SI_X14(12*8); \ + VMOVQ_SI_X15(7*8); \ + VPINSRQ_1_SI_X13(5*8); \ + VPINSRQ_1_SI_X14(2*8); \ + VPINSRQ_1_SI_X15(3*8) + +// load msg: X12 = (11, 12), X13 = (5, 15), X14 = (8, 0), X15 = (2, 13) +#define LOAD_MSG_AVX_11_12_5_15_8_0_2_13() \ + VMOVDQU 11*8(SI), X12; \ + VMOVQ_SI_X13(5*8); \ + VMOVQ_SI_X14(8*8); \ + VMOVQ_SI_X15(2*8); \ + VPINSRQ_1_SI_X13(15*8); \ + VPINSRQ_1_SI_X14_0; \ + VPINSRQ_1_SI_X15(13*8) + +// load msg: X12 = (2, 5), X13 = (4, 15), X14 = (6, 10), X15 = (0, 8) +#define LOAD_MSG_AVX_2_5_4_15_6_10_0_8() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X13(4*8); \ + VMOVQ_SI_X14(6*8); \ + VMOVQ_SI_X15_0; \ + VPINSRQ_1_SI_X12(5*8); \ + VPINSRQ_1_SI_X13(15*8); \ + VPINSRQ_1_SI_X14(10*8); \ + VPINSRQ_1_SI_X15(8*8) + +// load msg: X12 = (9, 5), X13 = (2, 10), X14 = (0, 7), X15 = (4, 15) +#define LOAD_MSG_AVX_9_5_2_10_0_7_4_15() \ + VMOVQ_SI_X12(9*8); \ + VMOVQ_SI_X13(2*8); \ + VMOVQ_SI_X14_0; \ + VMOVQ_SI_X15(4*8); \ + VPINSRQ_1_SI_X12(5*8); \ + VPINSRQ_1_SI_X13(10*8); \ + VPINSRQ_1_SI_X14(7*8); \ + VPINSRQ_1_SI_X15(15*8) + +// load msg: X12 = (2, 6), X13 = (0, 8), X14 = (12, 10), X15 = (11, 3) +#define LOAD_MSG_AVX_2_6_0_8_12_10_11_3() \ + VMOVQ_SI_X12(2*8); \ + VMOVQ_SI_X13_0; \ + VMOVQ_SI_X14(12*8); \ + VMOVQ_SI_X15(11*8); \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X13(8*8); \ + VPINSRQ_1_SI_X14(10*8); \ + VPINSRQ_1_SI_X15(3*8) + +// load msg: X12 = (0, 6), X13 = (9, 8), X14 = (7, 3), X15 = (2, 11) +#define LOAD_MSG_AVX_0_6_9_8_7_3_2_11() \ + MOVQ 0*8(SI), X12; \ + VPSHUFD $0x4E, 8*8(SI), X13; \ + MOVQ 7*8(SI), X14; \ + MOVQ 2*8(SI), X15; \ + VPINSRQ_1_SI_X12(6*8); \ + VPINSRQ_1_SI_X14(3*8); \ + VPINSRQ_1_SI_X15(11*8) + +// load msg: X12 = (6, 14), X13 = (11, 0), X14 = (15, 9), X15 = (3, 8) +#define LOAD_MSG_AVX_6_14_11_0_15_9_3_8() \ + MOVQ 6*8(SI), X12; \ + MOVQ 11*8(SI), X13; \ + MOVQ 15*8(SI), X14; \ + MOVQ 3*8(SI), X15; \ + VPINSRQ_1_SI_X12(14*8); \ + VPINSRQ_1_SI_X13_0; \ + VPINSRQ_1_SI_X14(9*8); \ + VPINSRQ_1_SI_X15(8*8) + +// load msg: X12 = (5, 15), X13 = (8, 2), X14 = (0, 4), X15 = (6, 10) +#define LOAD_MSG_AVX_5_15_8_2_0_4_6_10() \ + MOVQ 5*8(SI), X12; \ + MOVQ 8*8(SI), X13; \ + MOVQ 0*8(SI), X14; \ + MOVQ 6*8(SI), X15; \ + VPINSRQ_1_SI_X12(15*8); \ + VPINSRQ_1_SI_X13(2*8); \ + VPINSRQ_1_SI_X14(4*8); \ + VPINSRQ_1_SI_X15(10*8) + +// load msg: X12 = (12, 13), X13 = (1, 10), X14 = (2, 7), X15 = (4, 5) +#define LOAD_MSG_AVX_12_13_1_10_2_7_4_5() \ + VMOVDQU 12*8(SI), X12; \ + MOVQ 1*8(SI), X13; \ + MOVQ 2*8(SI), X14; \ + VPINSRQ_1_SI_X13(10*8); \ + VPINSRQ_1_SI_X14(7*8); \ + VMOVDQU 4*8(SI), X15 + +// load msg: X12 = (15, 9), X13 = (3, 13), X14 = (11, 14), X15 = (12, 0) +#define LOAD_MSG_AVX_15_9_3_13_11_14_12_0() \ + MOVQ 15*8(SI), X12; \ + MOVQ 3*8(SI), X13; \ + MOVQ 11*8(SI), X14; \ + MOVQ 12*8(SI), X15; \ + VPINSRQ_1_SI_X12(9*8); \ + VPINSRQ_1_SI_X13(13*8); \ + VPINSRQ_1_SI_X14(14*8); \ + VPINSRQ_1_SI_X15_0 + +// func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksAVX(SB), 4, $288-48 // frame size = 272 + 16 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, BP + MOVQ SP, R9 + ADDQ $15, R9 + ANDQ $~15, R9 + MOVQ R9, SP + + VMOVDQU ·AVX_c40<>(SB), X0 + VMOVDQU ·AVX_c48<>(SB), X1 + VMOVDQA X0, X8 + VMOVDQA X1, X9 + + VMOVDQU ·AVX_iv3<>(SB), X0 + VMOVDQA X0, 0(SP) + XORQ CX, 0(SP) // 0(SP) = ·AVX_iv3 ^ (CX || 0) + + VMOVDQU 0(AX), X10 + VMOVDQU 16(AX), X11 + VMOVDQU 32(AX), X2 + VMOVDQU 48(AX), X3 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + +loop: + ADDQ $128, R8 + CMPQ R8, $128 + JGE noinc + INCQ R9 + +noinc: + VMOVQ_R8_X15 + VPINSRQ_1_R9_X15 + + VMOVDQA X10, X0 + VMOVDQA X11, X1 + VMOVDQU ·AVX_iv0<>(SB), X4 + VMOVDQU ·AVX_iv1<>(SB), X5 + VMOVDQU ·AVX_iv2<>(SB), X6 + + VPXOR X15, X6, X6 + VMOVDQA 0(SP), X7 + + LOAD_MSG_AVX_0_2_4_6_1_3_5_7() + VMOVDQA X12, 16(SP) + VMOVDQA X13, 32(SP) + VMOVDQA X14, 48(SP) + VMOVDQA X15, 64(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(8, 10, 12, 14, 9, 11, 13, 15) + VMOVDQA X12, 80(SP) + VMOVDQA X13, 96(SP) + VMOVDQA X14, 112(SP) + VMOVDQA X15, 128(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(14, 4, 9, 13, 10, 8, 15, 6) + VMOVDQA X12, 144(SP) + VMOVDQA X13, 160(SP) + VMOVDQA X14, 176(SP) + VMOVDQA X15, 192(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_1_0_11_5_12_2_7_3() + VMOVDQA X12, 208(SP) + VMOVDQA X13, 224(SP) + VMOVDQA X14, 240(SP) + VMOVDQA X15, 256(SP) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_11_12_5_15_8_0_2_13() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(10, 3, 7, 9, 14, 6, 1, 4) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(7, 3, 13, 11, 9, 1, 12, 14) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_2_5_4_15_6_10_0_8() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_9_5_2_10_0_7_4_15() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(14, 11, 6, 3, 1, 12, 8, 13) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_2_6_0_8_12_10_11_3() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX(4, 7, 15, 1, 13, 5, 14, 9) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(12, 1, 14, 4, 5, 15, 13, 10) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_0_6_9_8_7_3_2_11() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(13, 7, 12, 3, 11, 14, 1, 9) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_5_15_8_2_0_4_6_10() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX_6_14_11_0_15_9_3_8() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_12_13_1_10_2_7_4_5() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + LOAD_MSG_AVX(10, 8, 7, 1, 2, 4, 6, 5) + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX() + LOAD_MSG_AVX_15_9_3_13_11_14_12_0() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) + SHUFFLE_AVX_INV() + + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X15, X8, X9) + SHUFFLE_AVX() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X15, X8, X9) + SHUFFLE_AVX_INV() + + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X15, X8, X9) + SHUFFLE_AVX() + HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X15, X8, X9) + SHUFFLE_AVX_INV() + + VMOVDQU 32(AX), X14 + VMOVDQU 48(AX), X15 + VPXOR X0, X10, X10 + VPXOR X1, X11, X11 + VPXOR X2, X14, X14 + VPXOR X3, X15, X15 + VPXOR X4, X10, X10 + VPXOR X5, X11, X11 + VPXOR X6, X14, X2 + VPXOR X7, X15, X3 + VMOVDQU X2, 32(AX) + VMOVDQU X3, 48(AX) + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + VMOVDQU X10, 0(AX) + VMOVDQU X11, 16(AX) + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + VZEROUPPER + + MOVQ BP, SP + RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go new file mode 100644 index 0000000..30e2fcd --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go @@ -0,0 +1,24 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.7,amd64,!gccgo,!appengine + +package blake2b + +import "golang.org/x/sys/cpu" + +func init() { + useSSE4 = cpu.X86.HasSSE41 +} + +//go:noescape +func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + if useSSE4 { + hashBlocksSSE4(h, c, flag, blocks) + } else { + hashBlocksGeneric(h, c, flag, blocks) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s new file mode 100644 index 0000000..578e947 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s @@ -0,0 +1,281 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!gccgo,!appengine + +#include "textflag.h" + +DATA ·iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 +DATA ·iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b +GLOBL ·iv0<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b +DATA ·iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·iv1<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv2<>+0x00(SB)/8, $0x510e527fade682d1 +DATA ·iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·iv2<>(SB), (NOPTR+RODATA), $16 + +DATA ·iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b +DATA ·iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 +GLOBL ·iv3<>(SB), (NOPTR+RODATA), $16 + +DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 +DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 + +DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 +DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 + +#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v6, t1; \ + PUNPCKLQDQ v6, t2; \ + PUNPCKHQDQ v7, v6; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ v7, t2; \ + MOVO t1, v7; \ + MOVO v2, t1; \ + PUNPCKHQDQ t2, v7; \ + PUNPCKLQDQ v3, t2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v3 + +#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ + MOVO v4, t1; \ + MOVO v5, v4; \ + MOVO t1, v5; \ + MOVO v2, t1; \ + PUNPCKLQDQ v2, t2; \ + PUNPCKHQDQ v3, v2; \ + PUNPCKHQDQ t2, v2; \ + PUNPCKLQDQ v3, t2; \ + MOVO t1, v3; \ + MOVO v6, t1; \ + PUNPCKHQDQ t2, v3; \ + PUNPCKLQDQ v7, t2; \ + PUNPCKHQDQ t2, v6; \ + PUNPCKLQDQ t1, t2; \ + PUNPCKHQDQ t2, v7 + +#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ + PADDQ m0, v0; \ + PADDQ m1, v1; \ + PADDQ v2, v0; \ + PADDQ v3, v1; \ + PXOR v0, v6; \ + PXOR v1, v7; \ + PSHUFD $0xB1, v6, v6; \ + PSHUFD $0xB1, v7, v7; \ + PADDQ v6, v4; \ + PADDQ v7, v5; \ + PXOR v4, v2; \ + PXOR v5, v3; \ + PSHUFB c40, v2; \ + PSHUFB c40, v3; \ + PADDQ m2, v0; \ + PADDQ m3, v1; \ + PADDQ v2, v0; \ + PADDQ v3, v1; \ + PXOR v0, v6; \ + PXOR v1, v7; \ + PSHUFB c48, v6; \ + PSHUFB c48, v7; \ + PADDQ v6, v4; \ + PADDQ v7, v5; \ + PXOR v4, v2; \ + PXOR v5, v3; \ + MOVOU v2, t0; \ + PADDQ v2, t0; \ + PSRLQ $63, v2; \ + PXOR t0, v2; \ + MOVOU v3, t0; \ + PADDQ v3, t0; \ + PSRLQ $63, v3; \ + PXOR t0, v3 + +#define LOAD_MSG(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7) \ + MOVQ i0*8(src), m0; \ + PINSRQ $1, i1*8(src), m0; \ + MOVQ i2*8(src), m1; \ + PINSRQ $1, i3*8(src), m1; \ + MOVQ i4*8(src), m2; \ + PINSRQ $1, i5*8(src), m2; \ + MOVQ i6*8(src), m3; \ + PINSRQ $1, i7*8(src), m3 + +// func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) +TEXT ·hashBlocksSSE4(SB), 4, $288-48 // frame size = 272 + 16 byte alignment + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + + MOVQ SP, BP + MOVQ SP, R9 + ADDQ $15, R9 + ANDQ $~15, R9 + MOVQ R9, SP + + MOVOU ·iv3<>(SB), X0 + MOVO X0, 0(SP) + XORQ CX, 0(SP) // 0(SP) = ·iv3 ^ (CX || 0) + + MOVOU ·c40<>(SB), X13 + MOVOU ·c48<>(SB), X14 + + MOVOU 0(AX), X12 + MOVOU 16(AX), X15 + + MOVQ 0(BX), R8 + MOVQ 8(BX), R9 + +loop: + ADDQ $128, R8 + CMPQ R8, $128 + JGE noinc + INCQ R9 + +noinc: + MOVQ R8, X8 + PINSRQ $1, R9, X8 + + MOVO X12, X0 + MOVO X15, X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVOU ·iv0<>(SB), X4 + MOVOU ·iv1<>(SB), X5 + MOVOU ·iv2<>(SB), X6 + + PXOR X8, X6 + MOVO 0(SP), X7 + + LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7) + MOVO X8, 16(SP) + MOVO X9, 32(SP) + MOVO X10, 48(SP) + MOVO X11, 64(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15) + MOVO X8, 80(SP) + MOVO X9, 96(SP) + MOVO X10, 112(SP) + MOVO X11, 128(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6) + MOVO X8, 144(SP) + MOVO X9, 160(SP) + MOVO X10, 176(SP) + MOVO X11, 192(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3) + MOVO X8, 208(SP) + MOVO X9, 224(SP) + MOVO X10, 240(SP) + MOVO X11, 256(SP) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X11, X13, X14) + SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) + HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X11, X13, X14) + SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + + MOVOU 32(AX), X10 + MOVOU 48(AX), X11 + PXOR X0, X12 + PXOR X1, X15 + PXOR X2, X10 + PXOR X3, X11 + PXOR X4, X12 + PXOR X5, X15 + PXOR X6, X10 + PXOR X7, X11 + MOVOU X10, 32(AX) + MOVOU X11, 48(AX) + + LEAQ 128(SI), SI + SUBQ $128, DI + JNE loop + + MOVOU X12, 0(AX) + MOVOU X15, 16(AX) + + MOVQ R8, 0(BX) + MOVQ R9, 8(BX) + + MOVQ BP, SP + RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go new file mode 100644 index 0000000..4bd2abc --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go @@ -0,0 +1,179 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blake2b + +import "encoding/binary" + +// the precomputed values for BLAKE2b +// there are 12 16-byte arrays - one for each round +// the entries are calculated from the sigma constants. +var precomputed = [12][16]byte{ + {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, + {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, + {11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4}, + {7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8}, + {9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13}, + {2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9}, + {12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11}, + {13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10}, + {6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5}, + {10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0}, + {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, // equal to the first + {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, // equal to the second +} + +func hashBlocksGeneric(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + var m [16]uint64 + c0, c1 := c[0], c[1] + + for i := 0; i < len(blocks); { + c0 += BlockSize + if c0 < BlockSize { + c1++ + } + + v0, v1, v2, v3, v4, v5, v6, v7 := h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] + v8, v9, v10, v11, v12, v13, v14, v15 := iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7] + v12 ^= c0 + v13 ^= c1 + v14 ^= flag + + for j := range m { + m[j] = binary.LittleEndian.Uint64(blocks[i:]) + i += 8 + } + + for j := range precomputed { + s := &(precomputed[j]) + + v0 += m[s[0]] + v0 += v4 + v12 ^= v0 + v12 = v12<<(64-32) | v12>>32 + v8 += v12 + v4 ^= v8 + v4 = v4<<(64-24) | v4>>24 + v1 += m[s[1]] + v1 += v5 + v13 ^= v1 + v13 = v13<<(64-32) | v13>>32 + v9 += v13 + v5 ^= v9 + v5 = v5<<(64-24) | v5>>24 + v2 += m[s[2]] + v2 += v6 + v14 ^= v2 + v14 = v14<<(64-32) | v14>>32 + v10 += v14 + v6 ^= v10 + v6 = v6<<(64-24) | v6>>24 + v3 += m[s[3]] + v3 += v7 + v15 ^= v3 + v15 = v15<<(64-32) | v15>>32 + v11 += v15 + v7 ^= v11 + v7 = v7<<(64-24) | v7>>24 + + v0 += m[s[4]] + v0 += v4 + v12 ^= v0 + v12 = v12<<(64-16) | v12>>16 + v8 += v12 + v4 ^= v8 + v4 = v4<<(64-63) | v4>>63 + v1 += m[s[5]] + v1 += v5 + v13 ^= v1 + v13 = v13<<(64-16) | v13>>16 + v9 += v13 + v5 ^= v9 + v5 = v5<<(64-63) | v5>>63 + v2 += m[s[6]] + v2 += v6 + v14 ^= v2 + v14 = v14<<(64-16) | v14>>16 + v10 += v14 + v6 ^= v10 + v6 = v6<<(64-63) | v6>>63 + v3 += m[s[7]] + v3 += v7 + v15 ^= v3 + v15 = v15<<(64-16) | v15>>16 + v11 += v15 + v7 ^= v11 + v7 = v7<<(64-63) | v7>>63 + + v0 += m[s[8]] + v0 += v5 + v15 ^= v0 + v15 = v15<<(64-32) | v15>>32 + v10 += v15 + v5 ^= v10 + v5 = v5<<(64-24) | v5>>24 + v1 += m[s[9]] + v1 += v6 + v12 ^= v1 + v12 = v12<<(64-32) | v12>>32 + v11 += v12 + v6 ^= v11 + v6 = v6<<(64-24) | v6>>24 + v2 += m[s[10]] + v2 += v7 + v13 ^= v2 + v13 = v13<<(64-32) | v13>>32 + v8 += v13 + v7 ^= v8 + v7 = v7<<(64-24) | v7>>24 + v3 += m[s[11]] + v3 += v4 + v14 ^= v3 + v14 = v14<<(64-32) | v14>>32 + v9 += v14 + v4 ^= v9 + v4 = v4<<(64-24) | v4>>24 + + v0 += m[s[12]] + v0 += v5 + v15 ^= v0 + v15 = v15<<(64-16) | v15>>16 + v10 += v15 + v5 ^= v10 + v5 = v5<<(64-63) | v5>>63 + v1 += m[s[13]] + v1 += v6 + v12 ^= v1 + v12 = v12<<(64-16) | v12>>16 + v11 += v12 + v6 ^= v11 + v6 = v6<<(64-63) | v6>>63 + v2 += m[s[14]] + v2 += v7 + v13 ^= v2 + v13 = v13<<(64-16) | v13>>16 + v8 += v13 + v7 ^= v8 + v7 = v7<<(64-63) | v7>>63 + v3 += m[s[15]] + v3 += v4 + v14 ^= v3 + v14 = v14<<(64-16) | v14>>16 + v9 += v14 + v4 ^= v9 + v4 = v4<<(64-63) | v4>>63 + + } + + h[0] ^= v0 ^ v8 + h[1] ^= v1 ^ v9 + h[2] ^= v2 ^ v10 + h[3] ^= v3 ^ v11 + h[4] ^= v4 ^ v12 + h[5] ^= v5 ^ v13 + h[6] ^= v6 ^ v14 + h[7] ^= v7 ^ v15 + } + c[0], c[1] = c0, c1 +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go new file mode 100644 index 0000000..da156a1 --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go @@ -0,0 +1,11 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package blake2b + +func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { + hashBlocksGeneric(h, c, flag, blocks) +} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go new file mode 100644 index 0000000..52c414d --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/blake2x.go @@ -0,0 +1,177 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blake2b + +import ( + "encoding/binary" + "errors" + "io" +) + +// XOF defines the interface to hash functions that +// support arbitrary-length output. +type XOF interface { + // Write absorbs more data into the hash's state. It panics if called + // after Read. + io.Writer + + // Read reads more output from the hash. It returns io.EOF if the limit + // has been reached. + io.Reader + + // Clone returns a copy of the XOF in its current state. + Clone() XOF + + // Reset resets the XOF to its initial state. + Reset() +} + +// OutputLengthUnknown can be used as the size argument to NewXOF to indicate +// the length of the output is not known in advance. +const OutputLengthUnknown = 0 + +// magicUnknownOutputLength is a magic value for the output size that indicates +// an unknown number of output bytes. +const magicUnknownOutputLength = (1 << 32) - 1 + +// maxOutputLength is the absolute maximum number of bytes to produce when the +// number of output bytes is unknown. +const maxOutputLength = (1 << 32) * 64 + +// NewXOF creates a new variable-output-length hash. The hash either produce a +// known number of bytes (1 <= size < 2**32-1), or an unknown number of bytes +// (size == OutputLengthUnknown). In the latter case, an absolute limit of +// 256GiB applies. +// +// A non-nil key turns the hash into a MAC. The key must between +// zero and 32 bytes long. +func NewXOF(size uint32, key []byte) (XOF, error) { + if len(key) > Size { + return nil, errKeySize + } + if size == magicUnknownOutputLength { + // 2^32-1 indicates an unknown number of bytes and thus isn't a + // valid length. + return nil, errors.New("blake2b: XOF length too large") + } + if size == OutputLengthUnknown { + size = magicUnknownOutputLength + } + x := &xof{ + d: digest{ + size: Size, + keyLen: len(key), + }, + length: size, + } + copy(x.d.key[:], key) + x.Reset() + return x, nil +} + +type xof struct { + d digest + length uint32 + remaining uint64 + cfg, root, block [Size]byte + offset int + nodeOffset uint32 + readMode bool +} + +func (x *xof) Write(p []byte) (n int, err error) { + if x.readMode { + panic("blake2b: write to XOF after read") + } + return x.d.Write(p) +} + +func (x *xof) Clone() XOF { + clone := *x + return &clone +} + +func (x *xof) Reset() { + x.cfg[0] = byte(Size) + binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length + binary.LittleEndian.PutUint32(x.cfg[12:], x.length) // XOF length + x.cfg[17] = byte(Size) // inner hash size + + x.d.Reset() + x.d.h[1] ^= uint64(x.length) << 32 + + x.remaining = uint64(x.length) + if x.remaining == magicUnknownOutputLength { + x.remaining = maxOutputLength + } + x.offset, x.nodeOffset = 0, 0 + x.readMode = false +} + +func (x *xof) Read(p []byte) (n int, err error) { + if !x.readMode { + x.d.finalize(&x.root) + x.readMode = true + } + + if x.remaining == 0 { + return 0, io.EOF + } + + n = len(p) + if uint64(n) > x.remaining { + n = int(x.remaining) + p = p[:n] + } + + if x.offset > 0 { + blockRemaining := Size - x.offset + if n < blockRemaining { + x.offset += copy(p, x.block[x.offset:]) + x.remaining -= uint64(n) + return + } + copy(p, x.block[x.offset:]) + p = p[blockRemaining:] + x.offset = 0 + x.remaining -= uint64(blockRemaining) + } + + for len(p) >= Size { + binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) + x.nodeOffset++ + + x.d.initConfig(&x.cfg) + x.d.Write(x.root[:]) + x.d.finalize(&x.block) + + copy(p, x.block[:]) + p = p[Size:] + x.remaining -= uint64(Size) + } + + if todo := len(p); todo > 0 { + if x.remaining < uint64(Size) { + x.cfg[0] = byte(x.remaining) + } + binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) + x.nodeOffset++ + + x.d.initConfig(&x.cfg) + x.d.Write(x.root[:]) + x.d.finalize(&x.block) + + x.offset = copy(p, x.block[:todo]) + x.remaining -= uint64(todo) + } + return +} + +func (d *digest) initConfig(cfg *[Size]byte) { + d.offset, d.c[0], d.c[1] = 0, 0, 0 + for i := range d.h { + d.h[i] = iv[i] ^ binary.LittleEndian.Uint64(cfg[i*8:]) + } +} diff --git a/vendor/golang.org/x/crypto/blake2b/register.go b/vendor/golang.org/x/crypto/blake2b/register.go new file mode 100644 index 0000000..efd689a --- /dev/null +++ b/vendor/golang.org/x/crypto/blake2b/register.go @@ -0,0 +1,32 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.9 + +package blake2b + +import ( + "crypto" + "hash" +) + +func init() { + newHash256 := func() hash.Hash { + h, _ := New256(nil) + return h + } + newHash384 := func() hash.Hash { + h, _ := New384(nil) + return h + } + + newHash512 := func() hash.Hash { + h, _ := New512(nil) + return h + } + + crypto.RegisterHash(crypto.BLAKE2b_256, newHash256) + crypto.RegisterHash(crypto.BLAKE2b_384, newHash384) + crypto.RegisterHash(crypto.BLAKE2b_512, newHash512) +} diff --git a/vendor/golang.org/x/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go new file mode 100644 index 0000000..9d80f19 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/block.go @@ -0,0 +1,159 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package blowfish + +// getNextWord returns the next big-endian uint32 value from the byte slice +// at the given position in a circular manner, updating the position. +func getNextWord(b []byte, pos *int) uint32 { + var w uint32 + j := *pos + for i := 0; i < 4; i++ { + w = w<<8 | uint32(b[j]) + j++ + if j >= len(b) { + j = 0 + } + } + *pos = j + return w +} + +// ExpandKey performs a key expansion on the given *Cipher. Specifically, it +// performs the Blowfish algorithm's key schedule which sets up the *Cipher's +// pi and substitution tables for calls to Encrypt. This is used, primarily, +// by the bcrypt package to reuse the Blowfish key schedule during its +// set up. It's unlikely that you need to use this directly. +func ExpandKey(key []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + // Using inlined getNextWord for performance. + var d uint32 + for k := 0; k < 4; k++ { + d = d<<8 | uint32(key[j]) + j++ + if j >= len(key) { + j = 0 + } + } + c.p[i] ^= d + } + + var l, r uint32 + for i := 0; i < 18; i += 2 { + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + for i := 0; i < 256; i += 2 { + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +// This is similar to ExpandKey, but folds the salt during the key +// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero +// salt passed in, reusing ExpandKey turns out to be a place of inefficiency +// and specializing it here is useful. +func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { + j := 0 + for i := 0; i < 18; i++ { + c.p[i] ^= getNextWord(key, &j) + } + + j = 0 + var l, r uint32 + for i := 0; i < 18; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.p[i], c.p[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s0[i], c.s0[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s1[i], c.s1[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s2[i], c.s2[i+1] = l, r + } + + for i := 0; i < 256; i += 2 { + l ^= getNextWord(salt, &j) + r ^= getNextWord(salt, &j) + l, r = encryptBlock(l, r, c) + c.s3[i], c.s3[i+1] = l, r + } +} + +func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[0] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] + xr ^= c.p[17] + return xr, xl +} + +func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { + xl, xr := l, r + xl ^= c.p[17] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] + xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] + xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] + xr ^= c.p[0] + return xr, xl +} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go new file mode 100644 index 0000000..213bf20 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/cipher.go @@ -0,0 +1,99 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. +// +// Blowfish is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package blowfish // import "golang.org/x/crypto/blowfish" + +// The code is a port of Bruce Schneier's C implementation. +// See https://www.schneier.com/blowfish.html. + +import "strconv" + +// The Blowfish block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of Blowfish encryption using a particular key. +type Cipher struct { + p [18]uint32 + s0, s1, s2, s3 [256]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Blowfish key, from 1 to 56 bytes. +func NewCipher(key []byte) (*Cipher, error) { + var result Cipher + if k := len(key); k < 1 || k > 56 { + return nil, KeySizeError(k) + } + initCipher(&result) + ExpandKey(key, &result) + return &result, nil +} + +// NewSaltedCipher creates a returns a Cipher that folds a salt into its key +// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is +// sufficient and desirable. For bcrypt compatibility, the key can be over 56 +// bytes. +func NewSaltedCipher(key, salt []byte) (*Cipher, error) { + if len(salt) == 0 { + return NewCipher(key) + } + var result Cipher + if k := len(key); k < 1 { + return nil, KeySizeError(k) + } + initCipher(&result) + expandKeyWithSalt(key, salt, &result) + return &result, nil +} + +// BlockSize returns the Blowfish block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8-byte buffer src using the key k +// and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = encryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +// Decrypt decrypts the 8-byte buffer src using the key k +// and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + l, r = decryptBlock(l, r, c) + dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) + dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) +} + +func initCipher(c *Cipher) { + copy(c.p[0:], p[0:]) + copy(c.s0[0:], s0[0:]) + copy(c.s1[0:], s1[0:]) + copy(c.s2[0:], s2[0:]) + copy(c.s3[0:], s3[0:]) +} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go new file mode 100644 index 0000000..d040775 --- /dev/null +++ b/vendor/golang.org/x/crypto/blowfish/const.go @@ -0,0 +1,199 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// The startup permutation array and substitution boxes. +// They are the hexadecimal digits of PI; see: +// https://www.schneier.com/code/constants.txt. + +package blowfish + +var s0 = [256]uint32{ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, + 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, + 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, + 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, + 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, + 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, + 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, + 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, + 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, + 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, + 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, + 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, + 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, + 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, + 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, + 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, + 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, + 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, + 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, + 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, + 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, + 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, + 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, + 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, + 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, + 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, + 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, + 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, + 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, + 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, + 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, + 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, + 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, +} + +var s1 = [256]uint32{ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, + 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, + 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, + 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, + 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, + 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, + 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, + 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, + 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, + 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, + 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, + 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, + 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, + 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, + 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, + 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, + 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, + 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, + 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, + 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, + 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, + 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, + 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, + 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, + 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, + 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, + 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, + 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, + 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, + 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, + 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, + 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, + 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, + 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, + 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, + 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, +} + +var s2 = [256]uint32{ + 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, + 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, + 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, + 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, + 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, + 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, + 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, + 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, + 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, + 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, + 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, + 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, + 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, + 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, + 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, + 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, + 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, + 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, + 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, + 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, + 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, + 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, + 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, + 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, + 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, + 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, + 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, + 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, + 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, + 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, + 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, + 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, + 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, + 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, + 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, + 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, + 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, + 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, + 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, + 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, + 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, + 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, + 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, +} + +var s3 = [256]uint32{ + 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, + 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, + 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, + 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, + 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, + 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, + 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, + 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, + 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, + 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, + 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, + 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, + 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, + 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, + 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, + 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, + 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, + 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, + 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, + 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, + 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, + 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, + 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, + 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, + 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, + 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, + 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, + 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, + 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, + 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, + 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, + 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, + 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, + 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, + 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, + 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, + 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, + 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, + 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, + 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, + 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, + 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, + 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, +} + +var p = [18]uint32{ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, + 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, + 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, +} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go new file mode 100644 index 0000000..ddcbeb6 --- /dev/null +++ b/vendor/golang.org/x/crypto/cast5/cast5.go @@ -0,0 +1,533 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cast5 implements CAST5, as defined in RFC 2144. +// +// CAST5 is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package cast5 // import "golang.org/x/crypto/cast5" + +import "errors" + +const BlockSize = 8 +const KeySize = 16 + +type Cipher struct { + masking [16]uint32 + rotate [16]uint8 +} + +func NewCipher(key []byte) (c *Cipher, err error) { + if len(key) != KeySize { + return nil, errors.New("CAST5: keys must be 16 bytes") + } + + c = new(Cipher) + c.keySchedule(key) + return +} + +func (c *Cipher) BlockSize() int { + return BlockSize +} + +func (c *Cipher) Encrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +func (c *Cipher) Decrypt(dst, src []byte) { + l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + + l, r = r, l^f1(r, c.masking[15], c.rotate[15]) + l, r = r, l^f3(r, c.masking[14], c.rotate[14]) + l, r = r, l^f2(r, c.masking[13], c.rotate[13]) + l, r = r, l^f1(r, c.masking[12], c.rotate[12]) + + l, r = r, l^f3(r, c.masking[11], c.rotate[11]) + l, r = r, l^f2(r, c.masking[10], c.rotate[10]) + l, r = r, l^f1(r, c.masking[9], c.rotate[9]) + l, r = r, l^f3(r, c.masking[8], c.rotate[8]) + + l, r = r, l^f2(r, c.masking[7], c.rotate[7]) + l, r = r, l^f1(r, c.masking[6], c.rotate[6]) + l, r = r, l^f3(r, c.masking[5], c.rotate[5]) + l, r = r, l^f2(r, c.masking[4], c.rotate[4]) + + l, r = r, l^f1(r, c.masking[3], c.rotate[3]) + l, r = r, l^f3(r, c.masking[2], c.rotate[2]) + l, r = r, l^f2(r, c.masking[1], c.rotate[1]) + l, r = r, l^f1(r, c.masking[0], c.rotate[0]) + + dst[0] = uint8(r >> 24) + dst[1] = uint8(r >> 16) + dst[2] = uint8(r >> 8) + dst[3] = uint8(r) + dst[4] = uint8(l >> 24) + dst[5] = uint8(l >> 16) + dst[6] = uint8(l >> 8) + dst[7] = uint8(l) +} + +type keyScheduleA [4][7]uint8 +type keyScheduleB [4][5]uint8 + +// keyScheduleRound contains the magic values for a round of the key schedule. +// The keyScheduleA deals with the lines like: +// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] +// Conceptually, both x and z are in the same array, x first. The first +// element describes which word of this array gets written to and the +// second, which word gets read. So, for the line above, it's "4, 0", because +// it's writing to the first word of z, which, being after x, is word 4, and +// reading from the first word of x: word 0. +// +// Next are the indexes into the S-boxes. Now the array is treated as bytes. So +// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear +// that it's z that we're indexing. +// +// keyScheduleB deals with lines like: +// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] +// "K1" is ignored because key words are always written in order. So the five +// elements are the S-box indexes. They use the same form as in keyScheduleA, +// above. + +type keyScheduleRound struct{} +type keySchedule []keyScheduleRound + +var schedule = []struct { + a keyScheduleA + b keyScheduleB +}{ + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, + {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, + {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, + {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {3, 2, 0xc, 0xd, 8}, + {1, 0, 0xe, 0xf, 0xd}, + {7, 6, 8, 9, 3}, + {5, 4, 0xa, 0xb, 7}, + }, + }, + { + keyScheduleA{ + {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, + {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, + {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, + {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, + }, + keyScheduleB{ + {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, + {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, + {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, + {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, + }, + }, + { + keyScheduleA{ + {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, + {1, 4, 0, 2, 1, 3, 16 + 2}, + {2, 5, 7, 6, 5, 4, 16 + 1}, + {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, + }, + keyScheduleB{ + {8, 9, 7, 6, 3}, + {0xa, 0xb, 5, 4, 7}, + {0xc, 0xd, 3, 2, 8}, + {0xe, 0xf, 1, 0, 0xd}, + }, + }, +} + +func (c *Cipher) keySchedule(in []byte) { + var t [8]uint32 + var k [32]uint32 + + for i := 0; i < 4; i++ { + j := i * 4 + t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) + } + + x := []byte{6, 7, 4, 5} + ki := 0 + + for half := 0; half < 2; half++ { + for _, round := range schedule { + for j := 0; j < 4; j++ { + var a [7]uint8 + copy(a[:], round.a[j][:]) + w := t[a[1]] + w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] + w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] + w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] + w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] + w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] + t[a[0]] = w + } + + for j := 0; j < 4; j++ { + var b [5]uint8 + copy(b[:], round.b[j][:]) + w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] + w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] + w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] + w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] + w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] + k[ki] = w + ki++ + } + } + } + + for i := 0; i < 16; i++ { + c.masking[i] = k[i] + c.rotate[i] = uint8(k[16+i] & 0x1f) + } +} + +// These are the three 'f' functions. See RFC 2144, section 2.2. +func f1(d, m uint32, r uint8) uint32 { + t := m + d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] +} + +func f2(d, m uint32, r uint8) uint32 { + t := m ^ d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] +} + +func f3(d, m uint32, r uint8) uint32 { + t := m - d + I := (t << r) | (t >> (32 - r)) + return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] +} + +var sBox = [8][256]uint32{ + { + 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, + 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, + 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, + 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, + 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, + 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, + 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, + 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, + 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, + 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, + 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, + 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, + 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, + 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, + 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, + 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, + 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, + 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, + 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, + 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, + 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, + 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, + 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, + 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, + 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, + 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, + 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, + 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, + 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, + 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, + 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, + 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, + }, + { + 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, + 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, + 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, + 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, + 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, + 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, + 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, + 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, + 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, + 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, + 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, + 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, + 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, + 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, + 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, + 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, + 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, + 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, + 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, + 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, + 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, + 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, + 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, + 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, + 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, + 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, + 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, + 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, + 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, + 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, + 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, + 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, + }, + { + 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, + 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, + 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, + 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, + 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, + 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, + 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, + 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, + 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, + 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, + 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, + 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, + 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, + 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, + 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, + 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, + 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, + 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, + 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, + 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, + 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, + 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, + 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, + 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, + 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, + 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, + 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, + 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, + 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, + 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, + 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, + 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, + }, + { + 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, + 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, + 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, + 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, + 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, + 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, + 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, + 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, + 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, + 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, + 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, + 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, + 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, + 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, + 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, + 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, + 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, + 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, + 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, + 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, + 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, + 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, + 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, + 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, + 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, + 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, + 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, + 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, + 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, + 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, + 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, + 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, + }, + { + 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, + 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, + 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, + 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, + 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, + 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, + 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, + 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, + 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, + 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, + 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, + 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, + 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, + 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, + 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, + 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, + 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, + 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, + 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, + 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, + 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, + 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, + 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, + 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, + 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, + 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, + 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, + 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, + 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, + 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, + 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, + 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, + }, + { + 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, + 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, + 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, + 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, + 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, + 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, + 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, + 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, + 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, + 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, + 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, + 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, + 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, + 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, + 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, + 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, + 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, + 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, + 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, + 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, + 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, + 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, + 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, + 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, + 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, + 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, + 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, + 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, + 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, + 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, + 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, + 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, + }, + { + 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, + 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, + 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, + 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, + 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, + 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, + 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, + 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, + 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, + 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, + 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, + 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, + 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, + 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, + 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, + 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, + 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, + 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, + 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, + 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, + 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, + 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, + 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, + 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, + 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, + 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, + 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, + 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, + 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, + 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, + 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, + 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, + }, + { + 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, + 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, + 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, + 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, + 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, + 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, + 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, + 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, + 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, + 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, + 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, + 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, + 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, + 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, + 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, + 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, + 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, + 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, + 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, + 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, + 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, + 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, + 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, + 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, + 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, + 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, + 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, + 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, + 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, + 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, + 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, + 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, + }, +} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go new file mode 100644 index 0000000..f38797b --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go @@ -0,0 +1,32 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine + +// Package subtle implements functions that are often useful in cryptographic +// code but require careful thought to use correctly. +package subtle // import "golang.org/x/crypto/internal/subtle" + +import "unsafe" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && + uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go new file mode 100644 index 0000000..0cc4a8a --- /dev/null +++ b/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go @@ -0,0 +1,35 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build appengine + +// Package subtle implements functions that are often useful in cryptographic +// code but require careful thought to use correctly. +package subtle // import "golang.org/x/crypto/internal/subtle" + +// This is the Google App Engine standard variant based on reflect +// because the unsafe package and cgo are disallowed. + +import "reflect" + +// AnyOverlap reports whether x and y share memory at any (not necessarily +// corresponding) index. The memory beyond the slice length is ignored. +func AnyOverlap(x, y []byte) bool { + return len(x) > 0 && len(y) > 0 && + reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && + reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() +} + +// InexactOverlap reports whether x and y share memory at any non-corresponding +// index. The memory beyond the slice length is ignored. Note that x and y can +// have different lengths and still not have any inexact overlap. +// +// InexactOverlap can be used to implement the requirements of the crypto/cipher +// AEAD, Block, BlockMode and Stream interfaces. +func InexactOverlap(x, y []byte) bool { + if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { + return false + } + return AnyOverlap(x, y) +} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go new file mode 100644 index 0000000..593f653 --- /dev/null +++ b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go @@ -0,0 +1,77 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC +2898 / PKCS #5 v2.0. + +A key derivation function is useful when encrypting data based on a password +or any other not-fully-random data. It uses a pseudorandom function to derive +a secure encryption key based on the password. + +While v2.0 of the standard defines only one pseudorandom function to use, +HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved +Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To +choose, you can pass the `New` functions from the different SHA packages to +pbkdf2.Key. +*/ +package pbkdf2 // import "golang.org/x/crypto/pbkdf2" + +import ( + "crypto/hmac" + "hash" +) + +// Key derives a key from the password, salt and iteration count, returning a +// []byte of length keylen that can be used as cryptographic key. The key is +// derived based on the method described as PBKDF2 with the HMAC variant using +// the supplied hash function. +// +// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you +// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by +// doing: +// +// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) +// +// Remember to get a good random salt. At least 8 bytes is recommended by the +// RFC. +// +// Using a higher iteration count will increase the cost of an exhaustive +// search but will also make derivation proportionally slower. +func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { + prf := hmac.New(h, password) + hashLen := prf.Size() + numBlocks := (keyLen + hashLen - 1) / hashLen + + var buf [4]byte + dk := make([]byte, 0, numBlocks*hashLen) + U := make([]byte, hashLen) + for block := 1; block <= numBlocks; block++ { + // N.B.: || means concatenation, ^ means XOR + // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter + // U_1 = PRF(password, salt || uint(i)) + prf.Reset() + prf.Write(salt) + buf[0] = byte(block >> 24) + buf[1] = byte(block >> 16) + buf[2] = byte(block >> 8) + buf[3] = byte(block) + prf.Write(buf[:4]) + dk = prf.Sum(dk) + T := dk[len(dk)-hashLen:] + copy(U, T) + + // U_n = PRF(password, U_(n-1)) + for n := 2; n <= iter; n++ { + prf.Reset() + prf.Write(U) + U = U[:0] + U = prf.Sum(U) + for x := range U { + T[x] ^= U[x] + } + } + } + return dk[:keyLen] +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go new file mode 100644 index 0000000..4c96147 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go @@ -0,0 +1,144 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package salsa provides low-level access to functions in the Salsa family. +package salsa // import "golang.org/x/crypto/salsa20/salsa" + +// Sigma is the Salsa20 constant for 256-bit keys. +var Sigma = [16]byte{'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'} + +// HSalsa20 applies the HSalsa20 core function to a 16-byte input in, 32-byte +// key k, and 16-byte constant c, and puts the result into the 32-byte array +// out. +func HSalsa20(out *[32]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + x0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + x1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + x2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + x3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + x4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + x5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + x6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + x7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + x8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + x9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + x10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + x11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + x12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + x13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + x14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + x15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + for i := 0; i < 20; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x5) + out[5] = byte(x5 >> 8) + out[6] = byte(x5 >> 16) + out[7] = byte(x5 >> 24) + + out[8] = byte(x10) + out[9] = byte(x10 >> 8) + out[10] = byte(x10 >> 16) + out[11] = byte(x10 >> 24) + + out[12] = byte(x15) + out[13] = byte(x15 >> 8) + out[14] = byte(x15 >> 16) + out[15] = byte(x15 >> 24) + + out[16] = byte(x6) + out[17] = byte(x6 >> 8) + out[18] = byte(x6 >> 16) + out[19] = byte(x6 >> 24) + + out[20] = byte(x7) + out[21] = byte(x7 >> 8) + out[22] = byte(x7 >> 16) + out[23] = byte(x7 >> 24) + + out[24] = byte(x8) + out[25] = byte(x8 >> 8) + out[26] = byte(x8 >> 16) + out[27] = byte(x8 >> 24) + + out[28] = byte(x9) + out[29] = byte(x9 >> 8) + out[30] = byte(x9 >> 16) + out[31] = byte(x9 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go new file mode 100644 index 0000000..9bfc092 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go @@ -0,0 +1,199 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package salsa + +// Core208 applies the Salsa20/8 core function to the 64-byte array in and puts +// the result into the 64-byte array out. The input and output may be the same array. +func Core208(out *[64]byte, in *[64]byte) { + j0 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j1 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j2 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j3 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j4 := uint32(in[16]) | uint32(in[17])<<8 | uint32(in[18])<<16 | uint32(in[19])<<24 + j5 := uint32(in[20]) | uint32(in[21])<<8 | uint32(in[22])<<16 | uint32(in[23])<<24 + j6 := uint32(in[24]) | uint32(in[25])<<8 | uint32(in[26])<<16 | uint32(in[27])<<24 + j7 := uint32(in[28]) | uint32(in[29])<<8 | uint32(in[30])<<16 | uint32(in[31])<<24 + j8 := uint32(in[32]) | uint32(in[33])<<8 | uint32(in[34])<<16 | uint32(in[35])<<24 + j9 := uint32(in[36]) | uint32(in[37])<<8 | uint32(in[38])<<16 | uint32(in[39])<<24 + j10 := uint32(in[40]) | uint32(in[41])<<8 | uint32(in[42])<<16 | uint32(in[43])<<24 + j11 := uint32(in[44]) | uint32(in[45])<<8 | uint32(in[46])<<16 | uint32(in[47])<<24 + j12 := uint32(in[48]) | uint32(in[49])<<8 | uint32(in[50])<<16 | uint32(in[51])<<24 + j13 := uint32(in[52]) | uint32(in[53])<<8 | uint32(in[54])<<16 | uint32(in[55])<<24 + j14 := uint32(in[56]) | uint32(in[57])<<8 | uint32(in[58])<<16 | uint32(in[59])<<24 + j15 := uint32(in[60]) | uint32(in[61])<<8 | uint32(in[62])<<16 | uint32(in[63])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < 8; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go new file mode 100644 index 0000000..656e8df --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go @@ -0,0 +1,23 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +package salsa + +//go:noescape + +// salsa2020XORKeyStream is implemented in salsa20_amd64.s. +func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out must overlap entirely or not at all. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + if len(in) == 0 { + return + } + _ = out[len(in)-1] + salsa2020XORKeyStream(&out[0], &in[0], uint64(len(in)), &counter[0], &key[0]) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s new file mode 100644 index 0000000..18085d2 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s @@ -0,0 +1,883 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +// This code was translated into a form compatible with 6a from the public +// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html + +// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) +// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size. +TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment + MOVQ out+0(FP),DI + MOVQ in+8(FP),SI + MOVQ n+16(FP),DX + MOVQ nonce+24(FP),CX + MOVQ key+32(FP),R8 + + MOVQ SP,R12 + MOVQ SP,R9 + ADDQ $31, R9 + ANDQ $~31, R9 + MOVQ R9, SP + + MOVQ DX,R9 + MOVQ CX,DX + MOVQ R8,R10 + CMPQ R9,$0 + JBE DONE + START: + MOVL 20(R10),CX + MOVL 0(R10),R8 + MOVL 0(DX),AX + MOVL 16(R10),R11 + MOVL CX,0(SP) + MOVL R8, 4 (SP) + MOVL AX, 8 (SP) + MOVL R11, 12 (SP) + MOVL 8(DX),CX + MOVL 24(R10),R8 + MOVL 4(R10),AX + MOVL 4(DX),R11 + MOVL CX,16(SP) + MOVL R8, 20 (SP) + MOVL AX, 24 (SP) + MOVL R11, 28 (SP) + MOVL 12(DX),CX + MOVL 12(R10),DX + MOVL 28(R10),R8 + MOVL 8(R10),AX + MOVL DX,32(SP) + MOVL CX, 36 (SP) + MOVL R8, 40 (SP) + MOVL AX, 44 (SP) + MOVQ $1634760805,DX + MOVQ $857760878,CX + MOVQ $2036477234,R8 + MOVQ $1797285236,AX + MOVL DX,48(SP) + MOVL CX, 52 (SP) + MOVL R8, 56 (SP) + MOVL AX, 60 (SP) + CMPQ R9,$256 + JB BYTESBETWEEN1AND255 + MOVOA 48(SP),X0 + PSHUFL $0X55,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X3 + PSHUFL $0X00,X0,X0 + MOVOA X1,64(SP) + MOVOA X2,80(SP) + MOVOA X3,96(SP) + MOVOA X0,112(SP) + MOVOA 0(SP),X0 + PSHUFL $0XAA,X0,X1 + PSHUFL $0XFF,X0,X2 + PSHUFL $0X00,X0,X3 + PSHUFL $0X55,X0,X0 + MOVOA X1,128(SP) + MOVOA X2,144(SP) + MOVOA X3,160(SP) + MOVOA X0,176(SP) + MOVOA 16(SP),X0 + PSHUFL $0XFF,X0,X1 + PSHUFL $0X55,X0,X2 + PSHUFL $0XAA,X0,X0 + MOVOA X1,192(SP) + MOVOA X2,208(SP) + MOVOA X0,224(SP) + MOVOA 32(SP),X0 + PSHUFL $0X00,X0,X1 + PSHUFL $0XAA,X0,X2 + PSHUFL $0XFF,X0,X0 + MOVOA X1,240(SP) + MOVOA X2,256(SP) + MOVOA X0,272(SP) + BYTESATLEAST256: + MOVL 16(SP),DX + MOVL 36 (SP),CX + MOVL DX,288(SP) + MOVL CX,304(SP) + SHLQ $32,CX + ADDQ CX,DX + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 292 (SP) + MOVL CX, 308 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 296 (SP) + MOVL CX, 312 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX, 300 (SP) + MOVL CX, 316 (SP) + ADDQ $1,DX + MOVQ DX,CX + SHRQ $32,CX + MOVL DX,16(SP) + MOVL CX, 36 (SP) + MOVQ R9,352(SP) + MOVQ $20,DX + MOVOA 64(SP),X0 + MOVOA 80(SP),X1 + MOVOA 96(SP),X2 + MOVOA 256(SP),X3 + MOVOA 272(SP),X4 + MOVOA 128(SP),X5 + MOVOA 144(SP),X6 + MOVOA 176(SP),X7 + MOVOA 192(SP),X8 + MOVOA 208(SP),X9 + MOVOA 224(SP),X10 + MOVOA 304(SP),X11 + MOVOA 112(SP),X12 + MOVOA 160(SP),X13 + MOVOA 240(SP),X14 + MOVOA 288(SP),X15 + MAINLOOP1: + MOVOA X1,320(SP) + MOVOA X2,336(SP) + MOVOA X13,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X14 + PSRLL $25,X2 + PXOR X2,X14 + MOVOA X7,X1 + PADDL X0,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X11 + PSRLL $25,X2 + PXOR X2,X11 + MOVOA X12,X1 + PADDL X14,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X15 + PSRLL $23,X2 + PXOR X2,X15 + MOVOA X0,X1 + PADDL X11,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X9 + PSRLL $23,X2 + PXOR X2,X9 + MOVOA X14,X1 + PADDL X15,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X13 + PSRLL $19,X2 + PXOR X2,X13 + MOVOA X11,X1 + PADDL X9,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X7 + PSRLL $19,X2 + PXOR X2,X7 + MOVOA X15,X1 + PADDL X13,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA 320(SP),X1 + MOVOA X12,320(SP) + MOVOA X9,X2 + PADDL X7,X2 + MOVOA X2,X12 + PSLLL $18,X2 + PXOR X2,X0 + PSRLL $14,X12 + PXOR X12,X0 + MOVOA X5,X2 + PADDL X1,X2 + MOVOA X2,X12 + PSLLL $7,X2 + PXOR X2,X3 + PSRLL $25,X12 + PXOR X12,X3 + MOVOA 336(SP),X2 + MOVOA X0,336(SP) + MOVOA X6,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X4 + PSRLL $25,X12 + PXOR X12,X4 + MOVOA X1,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X10 + PSRLL $23,X12 + PXOR X12,X10 + MOVOA X2,X0 + PADDL X4,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X8 + PSRLL $23,X12 + PXOR X12,X8 + MOVOA X3,X0 + PADDL X10,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X5 + PSRLL $19,X12 + PXOR X12,X5 + MOVOA X4,X0 + PADDL X8,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X6 + PSRLL $19,X12 + PXOR X12,X6 + MOVOA X10,X0 + PADDL X5,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA 320(SP),X0 + MOVOA X1,320(SP) + MOVOA X4,X1 + PADDL X0,X1 + MOVOA X1,X12 + PSLLL $7,X1 + PXOR X1,X7 + PSRLL $25,X12 + PXOR X12,X7 + MOVOA X8,X1 + PADDL X6,X1 + MOVOA X1,X12 + PSLLL $18,X1 + PXOR X1,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 336(SP),X12 + MOVOA X2,336(SP) + MOVOA X14,X1 + PADDL X12,X1 + MOVOA X1,X2 + PSLLL $7,X1 + PXOR X1,X5 + PSRLL $25,X2 + PXOR X2,X5 + MOVOA X0,X1 + PADDL X7,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X10 + PSRLL $23,X2 + PXOR X2,X10 + MOVOA X12,X1 + PADDL X5,X1 + MOVOA X1,X2 + PSLLL $9,X1 + PXOR X1,X8 + PSRLL $23,X2 + PXOR X2,X8 + MOVOA X7,X1 + PADDL X10,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X4 + PSRLL $19,X2 + PXOR X2,X4 + MOVOA X5,X1 + PADDL X8,X1 + MOVOA X1,X2 + PSLLL $13,X1 + PXOR X1,X14 + PSRLL $19,X2 + PXOR X2,X14 + MOVOA X10,X1 + PADDL X4,X1 + MOVOA X1,X2 + PSLLL $18,X1 + PXOR X1,X0 + PSRLL $14,X2 + PXOR X2,X0 + MOVOA 320(SP),X1 + MOVOA X0,320(SP) + MOVOA X8,X0 + PADDL X14,X0 + MOVOA X0,X2 + PSLLL $18,X0 + PXOR X0,X12 + PSRLL $14,X2 + PXOR X2,X12 + MOVOA X11,X0 + PADDL X1,X0 + MOVOA X0,X2 + PSLLL $7,X0 + PXOR X0,X6 + PSRLL $25,X2 + PXOR X2,X6 + MOVOA 336(SP),X2 + MOVOA X12,336(SP) + MOVOA X3,X0 + PADDL X2,X0 + MOVOA X0,X12 + PSLLL $7,X0 + PXOR X0,X13 + PSRLL $25,X12 + PXOR X12,X13 + MOVOA X1,X0 + PADDL X6,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X15 + PSRLL $23,X12 + PXOR X12,X15 + MOVOA X2,X0 + PADDL X13,X0 + MOVOA X0,X12 + PSLLL $9,X0 + PXOR X0,X9 + PSRLL $23,X12 + PXOR X12,X9 + MOVOA X6,X0 + PADDL X15,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X11 + PSRLL $19,X12 + PXOR X12,X11 + MOVOA X13,X0 + PADDL X9,X0 + MOVOA X0,X12 + PSLLL $13,X0 + PXOR X0,X3 + PSRLL $19,X12 + PXOR X12,X3 + MOVOA X15,X0 + PADDL X11,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X1 + PSRLL $14,X12 + PXOR X12,X1 + MOVOA X9,X0 + PADDL X3,X0 + MOVOA X0,X12 + PSLLL $18,X0 + PXOR X0,X2 + PSRLL $14,X12 + PXOR X12,X2 + MOVOA 320(SP),X12 + MOVOA 336(SP),X0 + SUBQ $2,DX + JA MAINLOOP1 + PADDL 112(SP),X12 + PADDL 176(SP),X7 + PADDL 224(SP),X10 + PADDL 272(SP),X4 + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 0(SI),DX + XORL 4(SI),CX + XORL 8(SI),R8 + XORL 12(SI),R9 + MOVL DX,0(DI) + MOVL CX,4(DI) + MOVL R8,8(DI) + MOVL R9,12(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 64(SI),DX + XORL 68(SI),CX + XORL 72(SI),R8 + XORL 76(SI),R9 + MOVL DX,64(DI) + MOVL CX,68(DI) + MOVL R8,72(DI) + MOVL R9,76(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + PSHUFL $0X39,X12,X12 + PSHUFL $0X39,X7,X7 + PSHUFL $0X39,X10,X10 + PSHUFL $0X39,X4,X4 + XORL 128(SI),DX + XORL 132(SI),CX + XORL 136(SI),R8 + XORL 140(SI),R9 + MOVL DX,128(DI) + MOVL CX,132(DI) + MOVL R8,136(DI) + MOVL R9,140(DI) + MOVD X12,DX + MOVD X7,CX + MOVD X10,R8 + MOVD X4,R9 + XORL 192(SI),DX + XORL 196(SI),CX + XORL 200(SI),R8 + XORL 204(SI),R9 + MOVL DX,192(DI) + MOVL CX,196(DI) + MOVL R8,200(DI) + MOVL R9,204(DI) + PADDL 240(SP),X14 + PADDL 64(SP),X0 + PADDL 128(SP),X5 + PADDL 192(SP),X8 + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 16(SI),DX + XORL 20(SI),CX + XORL 24(SI),R8 + XORL 28(SI),R9 + MOVL DX,16(DI) + MOVL CX,20(DI) + MOVL R8,24(DI) + MOVL R9,28(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 80(SI),DX + XORL 84(SI),CX + XORL 88(SI),R8 + XORL 92(SI),R9 + MOVL DX,80(DI) + MOVL CX,84(DI) + MOVL R8,88(DI) + MOVL R9,92(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + PSHUFL $0X39,X14,X14 + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X5,X5 + PSHUFL $0X39,X8,X8 + XORL 144(SI),DX + XORL 148(SI),CX + XORL 152(SI),R8 + XORL 156(SI),R9 + MOVL DX,144(DI) + MOVL CX,148(DI) + MOVL R8,152(DI) + MOVL R9,156(DI) + MOVD X14,DX + MOVD X0,CX + MOVD X5,R8 + MOVD X8,R9 + XORL 208(SI),DX + XORL 212(SI),CX + XORL 216(SI),R8 + XORL 220(SI),R9 + MOVL DX,208(DI) + MOVL CX,212(DI) + MOVL R8,216(DI) + MOVL R9,220(DI) + PADDL 288(SP),X15 + PADDL 304(SP),X11 + PADDL 80(SP),X1 + PADDL 144(SP),X6 + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 32(SI),DX + XORL 36(SI),CX + XORL 40(SI),R8 + XORL 44(SI),R9 + MOVL DX,32(DI) + MOVL CX,36(DI) + MOVL R8,40(DI) + MOVL R9,44(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 96(SI),DX + XORL 100(SI),CX + XORL 104(SI),R8 + XORL 108(SI),R9 + MOVL DX,96(DI) + MOVL CX,100(DI) + MOVL R8,104(DI) + MOVL R9,108(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + PSHUFL $0X39,X15,X15 + PSHUFL $0X39,X11,X11 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X6,X6 + XORL 160(SI),DX + XORL 164(SI),CX + XORL 168(SI),R8 + XORL 172(SI),R9 + MOVL DX,160(DI) + MOVL CX,164(DI) + MOVL R8,168(DI) + MOVL R9,172(DI) + MOVD X15,DX + MOVD X11,CX + MOVD X1,R8 + MOVD X6,R9 + XORL 224(SI),DX + XORL 228(SI),CX + XORL 232(SI),R8 + XORL 236(SI),R9 + MOVL DX,224(DI) + MOVL CX,228(DI) + MOVL R8,232(DI) + MOVL R9,236(DI) + PADDL 160(SP),X13 + PADDL 208(SP),X9 + PADDL 256(SP),X3 + PADDL 96(SP),X2 + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 48(SI),DX + XORL 52(SI),CX + XORL 56(SI),R8 + XORL 60(SI),R9 + MOVL DX,48(DI) + MOVL CX,52(DI) + MOVL R8,56(DI) + MOVL R9,60(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 112(SI),DX + XORL 116(SI),CX + XORL 120(SI),R8 + XORL 124(SI),R9 + MOVL DX,112(DI) + MOVL CX,116(DI) + MOVL R8,120(DI) + MOVL R9,124(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + PSHUFL $0X39,X13,X13 + PSHUFL $0X39,X9,X9 + PSHUFL $0X39,X3,X3 + PSHUFL $0X39,X2,X2 + XORL 176(SI),DX + XORL 180(SI),CX + XORL 184(SI),R8 + XORL 188(SI),R9 + MOVL DX,176(DI) + MOVL CX,180(DI) + MOVL R8,184(DI) + MOVL R9,188(DI) + MOVD X13,DX + MOVD X9,CX + MOVD X3,R8 + MOVD X2,R9 + XORL 240(SI),DX + XORL 244(SI),CX + XORL 248(SI),R8 + XORL 252(SI),R9 + MOVL DX,240(DI) + MOVL CX,244(DI) + MOVL R8,248(DI) + MOVL R9,252(DI) + MOVQ 352(SP),R9 + SUBQ $256,R9 + ADDQ $256,SI + ADDQ $256,DI + CMPQ R9,$256 + JAE BYTESATLEAST256 + CMPQ R9,$0 + JBE DONE + BYTESBETWEEN1AND255: + CMPQ R9,$64 + JAE NOCOPY + MOVQ DI,DX + LEAQ 360(SP),DI + MOVQ R9,CX + REP; MOVSB + LEAQ 360(SP),DI + LEAQ 360(SP),SI + NOCOPY: + MOVQ R9,352(SP) + MOVOA 48(SP),X0 + MOVOA 0(SP),X1 + MOVOA 16(SP),X2 + MOVOA 32(SP),X3 + MOVOA X1,X4 + MOVQ $20,CX + MAINLOOP2: + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X3 + PXOR X6,X3 + PADDL X3,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X3,X3 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X1 + PSHUFL $0X4E,X2,X2 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X3,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X1,X1 + PXOR X6,X0 + PADDL X0,X4 + MOVOA X0,X5 + MOVOA X4,X6 + PSLLL $7,X4 + PSRLL $25,X6 + PXOR X4,X1 + PXOR X6,X1 + PADDL X1,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $9,X5 + PSRLL $23,X6 + PXOR X5,X2 + PSHUFL $0X93,X1,X1 + PXOR X6,X2 + PADDL X2,X4 + MOVOA X2,X5 + MOVOA X4,X6 + PSLLL $13,X4 + PSRLL $19,X6 + PXOR X4,X3 + PSHUFL $0X4E,X2,X2 + PXOR X6,X3 + SUBQ $4,CX + PADDL X3,X5 + MOVOA X1,X4 + MOVOA X5,X6 + PSLLL $18,X5 + PXOR X7,X7 + PSRLL $14,X6 + PXOR X5,X0 + PSHUFL $0X39,X3,X3 + PXOR X6,X0 + JA MAINLOOP2 + PADDL 48(SP),X0 + PADDL 0(SP),X1 + PADDL 16(SP),X2 + PADDL 32(SP),X3 + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 0(SI),CX + XORL 48(SI),R8 + XORL 32(SI),R9 + XORL 16(SI),AX + MOVL CX,0(DI) + MOVL R8,48(DI) + MOVL R9,32(DI) + MOVL AX,16(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 20(SI),CX + XORL 4(SI),R8 + XORL 52(SI),R9 + XORL 36(SI),AX + MOVL CX,20(DI) + MOVL R8,4(DI) + MOVL R9,52(DI) + MOVL AX,36(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + PSHUFL $0X39,X0,X0 + PSHUFL $0X39,X1,X1 + PSHUFL $0X39,X2,X2 + PSHUFL $0X39,X3,X3 + XORL 40(SI),CX + XORL 24(SI),R8 + XORL 8(SI),R9 + XORL 56(SI),AX + MOVL CX,40(DI) + MOVL R8,24(DI) + MOVL R9,8(DI) + MOVL AX,56(DI) + MOVD X0,CX + MOVD X1,R8 + MOVD X2,R9 + MOVD X3,AX + XORL 60(SI),CX + XORL 44(SI),R8 + XORL 28(SI),R9 + XORL 12(SI),AX + MOVL CX,60(DI) + MOVL R8,44(DI) + MOVL R9,28(DI) + MOVL AX,12(DI) + MOVQ 352(SP),R9 + MOVL 16(SP),CX + MOVL 36 (SP),R8 + ADDQ $1,CX + SHLQ $32,R8 + ADDQ R8,CX + MOVQ CX,R8 + SHRQ $32,R8 + MOVL CX,16(SP) + MOVL R8, 36 (SP) + CMPQ R9,$64 + JA BYTESATLEAST65 + JAE BYTESATLEAST64 + MOVQ DI,SI + MOVQ DX,DI + MOVQ R9,CX + REP; MOVSB + BYTESATLEAST64: + DONE: + MOVQ R12,SP + RET + BYTESATLEAST65: + SUBQ $64,R9 + ADDQ $64,DI + ADDQ $64,SI + JMP BYTESBETWEEN1AND255 diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go new file mode 100644 index 0000000..8a46bd2 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go @@ -0,0 +1,14 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package salsa + +// XORKeyStream crypts bytes from in to out using the given key and counters. +// In and out must overlap entirely or not at all. Counter +// contains the raw salsa20 counter bytes (both nonce and block counter). +func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + genericXORKeyStream(out, in, counter, key) +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go new file mode 100644 index 0000000..68169c6 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go @@ -0,0 +1,231 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package salsa + +const rounds = 20 + +// core applies the Salsa20 core function to 16-byte input in, 32-byte key k, +// and 16-byte constant c, and puts the result into 64-byte array out. +func core(out *[64]byte, in *[16]byte, k *[32]byte, c *[16]byte) { + j0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 + j1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 + j2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 + j3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 + j4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 + j5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 + j6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 + j7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 + j8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 + j9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 + j10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 + j11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 + j12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 + j13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 + j14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 + j15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 + x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 + + for i := 0; i < rounds; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += j0 + x1 += j1 + x2 += j2 + x3 += j3 + x4 += j4 + x5 += j5 + x6 += j6 + x7 += j7 + x8 += j8 + x9 += j9 + x10 += j10 + x11 += j11 + x12 += j12 + x13 += j13 + x14 += j14 + x15 += j15 + + out[0] = byte(x0) + out[1] = byte(x0 >> 8) + out[2] = byte(x0 >> 16) + out[3] = byte(x0 >> 24) + + out[4] = byte(x1) + out[5] = byte(x1 >> 8) + out[6] = byte(x1 >> 16) + out[7] = byte(x1 >> 24) + + out[8] = byte(x2) + out[9] = byte(x2 >> 8) + out[10] = byte(x2 >> 16) + out[11] = byte(x2 >> 24) + + out[12] = byte(x3) + out[13] = byte(x3 >> 8) + out[14] = byte(x3 >> 16) + out[15] = byte(x3 >> 24) + + out[16] = byte(x4) + out[17] = byte(x4 >> 8) + out[18] = byte(x4 >> 16) + out[19] = byte(x4 >> 24) + + out[20] = byte(x5) + out[21] = byte(x5 >> 8) + out[22] = byte(x5 >> 16) + out[23] = byte(x5 >> 24) + + out[24] = byte(x6) + out[25] = byte(x6 >> 8) + out[26] = byte(x6 >> 16) + out[27] = byte(x6 >> 24) + + out[28] = byte(x7) + out[29] = byte(x7 >> 8) + out[30] = byte(x7 >> 16) + out[31] = byte(x7 >> 24) + + out[32] = byte(x8) + out[33] = byte(x8 >> 8) + out[34] = byte(x8 >> 16) + out[35] = byte(x8 >> 24) + + out[36] = byte(x9) + out[37] = byte(x9 >> 8) + out[38] = byte(x9 >> 16) + out[39] = byte(x9 >> 24) + + out[40] = byte(x10) + out[41] = byte(x10 >> 8) + out[42] = byte(x10 >> 16) + out[43] = byte(x10 >> 24) + + out[44] = byte(x11) + out[45] = byte(x11 >> 8) + out[46] = byte(x11 >> 16) + out[47] = byte(x11 >> 24) + + out[48] = byte(x12) + out[49] = byte(x12 >> 8) + out[50] = byte(x12 >> 16) + out[51] = byte(x12 >> 24) + + out[52] = byte(x13) + out[53] = byte(x13 >> 8) + out[54] = byte(x13 >> 16) + out[55] = byte(x13 >> 24) + + out[56] = byte(x14) + out[57] = byte(x14 >> 8) + out[58] = byte(x14 >> 16) + out[59] = byte(x14 >> 24) + + out[60] = byte(x15) + out[61] = byte(x15 >> 8) + out[62] = byte(x15 >> 16) + out[63] = byte(x15 >> 24) +} + +// genericXORKeyStream is the generic implementation of XORKeyStream to be used +// when no assembly implementation is available. +func genericXORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { + var block [64]byte + var counterCopy [16]byte + copy(counterCopy[:], counter[:]) + + for len(in) >= 64 { + core(&block, &counterCopy, key, &Sigma) + for i, x := range block { + out[i] = in[i] ^ x + } + u := uint32(1) + for i := 8; i < 16; i++ { + u += uint32(counterCopy[i]) + counterCopy[i] = byte(u) + u >>= 8 + } + in = in[64:] + out = out[64:] + } + + if len(in) > 0 { + core(&block, &counterCopy, key, &Sigma) + for i, v := range in { + out[i] = v ^ block[i] + } + } +} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa20.go new file mode 100644 index 0000000..6f9bb10 --- /dev/null +++ b/vendor/golang.org/x/crypto/salsa20/salsa20.go @@ -0,0 +1,58 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package salsa20 implements the Salsa20 stream cipher as specified in https://cr.yp.to/snuffle/spec.pdf. + +Salsa20 differs from many other stream ciphers in that it is message orientated +rather than byte orientated. Keystream blocks are not preserved between calls, +therefore each side must encrypt/decrypt data with the same segmentation. + +Another aspect of this difference is that part of the counter is exposed as +a nonce in each call. Encrypting two different messages with the same (key, +nonce) pair leads to trivial plaintext recovery. This is analogous to +encrypting two different messages with the same key with a traditional stream +cipher. + +This package also implements XSalsa20: a version of Salsa20 with a 24-byte +nonce as specified in https://cr.yp.to/snuffle/xsalsa-20081128.pdf. Simply +passing a 24-byte slice as the nonce triggers XSalsa20. +*/ +package salsa20 // import "golang.org/x/crypto/salsa20" + +// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. + +import ( + "golang.org/x/crypto/internal/subtle" + "golang.org/x/crypto/salsa20/salsa" +) + +// XORKeyStream crypts bytes from in to out using the given key and nonce. +// In and out must overlap entirely or not at all. Nonce must +// be either 8 or 24 bytes long. +func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) { + if len(out) < len(in) { + panic("salsa20: output smaller than input") + } + if subtle.InexactOverlap(out[:len(in)], in) { + panic("salsa20: invalid buffer overlap") + } + + var subNonce [16]byte + + if len(nonce) == 24 { + var subKey [32]byte + var hNonce [16]byte + copy(hNonce[:], nonce[:16]) + salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma) + copy(subNonce[:], nonce[16:]) + key = &subKey + } else if len(nonce) == 8 { + copy(subNonce[:], nonce[:]) + } else { + panic("salsa20: nonce must be 8 or 24 bytes") + } + + salsa.XORKeyStream(out, in, &subNonce, key) +} diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go new file mode 100644 index 0000000..3362afd --- /dev/null +++ b/vendor/golang.org/x/crypto/scrypt/scrypt.go @@ -0,0 +1,244 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package scrypt implements the scrypt key derivation function as defined in +// Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard +// Functions" (https://www.tarsnap.com/scrypt/scrypt.pdf). +package scrypt // import "golang.org/x/crypto/scrypt" + +import ( + "crypto/sha256" + "errors" + + "golang.org/x/crypto/pbkdf2" +) + +const maxInt = int(^uint(0) >> 1) + +// blockCopy copies n numbers from src into dst. +func blockCopy(dst, src []uint32, n int) { + copy(dst, src[:n]) +} + +// blockXOR XORs numbers from dst with n numbers from src. +func blockXOR(dst, src []uint32, n int) { + for i, v := range src[:n] { + dst[i] ^= v + } +} + +// salsaXOR applies Salsa20/8 to the XOR of 16 numbers from tmp and in, +// and puts the result into both tmp and out. +func salsaXOR(tmp *[16]uint32, in, out []uint32) { + w0 := tmp[0] ^ in[0] + w1 := tmp[1] ^ in[1] + w2 := tmp[2] ^ in[2] + w3 := tmp[3] ^ in[3] + w4 := tmp[4] ^ in[4] + w5 := tmp[5] ^ in[5] + w6 := tmp[6] ^ in[6] + w7 := tmp[7] ^ in[7] + w8 := tmp[8] ^ in[8] + w9 := tmp[9] ^ in[9] + w10 := tmp[10] ^ in[10] + w11 := tmp[11] ^ in[11] + w12 := tmp[12] ^ in[12] + w13 := tmp[13] ^ in[13] + w14 := tmp[14] ^ in[14] + w15 := tmp[15] ^ in[15] + + x0, x1, x2, x3, x4, x5, x6, x7, x8 := w0, w1, w2, w3, w4, w5, w6, w7, w8 + x9, x10, x11, x12, x13, x14, x15 := w9, w10, w11, w12, w13, w14, w15 + + for i := 0; i < 8; i += 2 { + u := x0 + x12 + x4 ^= u<<7 | u>>(32-7) + u = x4 + x0 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x4 + x12 ^= u<<13 | u>>(32-13) + u = x12 + x8 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x1 + x9 ^= u<<7 | u>>(32-7) + u = x9 + x5 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x9 + x1 ^= u<<13 | u>>(32-13) + u = x1 + x13 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x6 + x14 ^= u<<7 | u>>(32-7) + u = x14 + x10 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x14 + x6 ^= u<<13 | u>>(32-13) + u = x6 + x2 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x11 + x3 ^= u<<7 | u>>(32-7) + u = x3 + x15 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x3 + x11 ^= u<<13 | u>>(32-13) + u = x11 + x7 + x15 ^= u<<18 | u>>(32-18) + + u = x0 + x3 + x1 ^= u<<7 | u>>(32-7) + u = x1 + x0 + x2 ^= u<<9 | u>>(32-9) + u = x2 + x1 + x3 ^= u<<13 | u>>(32-13) + u = x3 + x2 + x0 ^= u<<18 | u>>(32-18) + + u = x5 + x4 + x6 ^= u<<7 | u>>(32-7) + u = x6 + x5 + x7 ^= u<<9 | u>>(32-9) + u = x7 + x6 + x4 ^= u<<13 | u>>(32-13) + u = x4 + x7 + x5 ^= u<<18 | u>>(32-18) + + u = x10 + x9 + x11 ^= u<<7 | u>>(32-7) + u = x11 + x10 + x8 ^= u<<9 | u>>(32-9) + u = x8 + x11 + x9 ^= u<<13 | u>>(32-13) + u = x9 + x8 + x10 ^= u<<18 | u>>(32-18) + + u = x15 + x14 + x12 ^= u<<7 | u>>(32-7) + u = x12 + x15 + x13 ^= u<<9 | u>>(32-9) + u = x13 + x12 + x14 ^= u<<13 | u>>(32-13) + u = x14 + x13 + x15 ^= u<<18 | u>>(32-18) + } + x0 += w0 + x1 += w1 + x2 += w2 + x3 += w3 + x4 += w4 + x5 += w5 + x6 += w6 + x7 += w7 + x8 += w8 + x9 += w9 + x10 += w10 + x11 += w11 + x12 += w12 + x13 += w13 + x14 += w14 + x15 += w15 + + out[0], tmp[0] = x0, x0 + out[1], tmp[1] = x1, x1 + out[2], tmp[2] = x2, x2 + out[3], tmp[3] = x3, x3 + out[4], tmp[4] = x4, x4 + out[5], tmp[5] = x5, x5 + out[6], tmp[6] = x6, x6 + out[7], tmp[7] = x7, x7 + out[8], tmp[8] = x8, x8 + out[9], tmp[9] = x9, x9 + out[10], tmp[10] = x10, x10 + out[11], tmp[11] = x11, x11 + out[12], tmp[12] = x12, x12 + out[13], tmp[13] = x13, x13 + out[14], tmp[14] = x14, x14 + out[15], tmp[15] = x15, x15 +} + +func blockMix(tmp *[16]uint32, in, out []uint32, r int) { + blockCopy(tmp[:], in[(2*r-1)*16:], 16) + for i := 0; i < 2*r; i += 2 { + salsaXOR(tmp, in[i*16:], out[i*8:]) + salsaXOR(tmp, in[i*16+16:], out[i*8+r*16:]) + } +} + +func integer(b []uint32, r int) uint64 { + j := (2*r - 1) * 16 + return uint64(b[j]) | uint64(b[j+1])<<32 +} + +func smix(b []byte, r, N int, v, xy []uint32) { + var tmp [16]uint32 + x := xy + y := xy[32*r:] + + j := 0 + for i := 0; i < 32*r; i++ { + x[i] = uint32(b[j]) | uint32(b[j+1])<<8 | uint32(b[j+2])<<16 | uint32(b[j+3])<<24 + j += 4 + } + for i := 0; i < N; i += 2 { + blockCopy(v[i*(32*r):], x, 32*r) + blockMix(&tmp, x, y, r) + + blockCopy(v[(i+1)*(32*r):], y, 32*r) + blockMix(&tmp, y, x, r) + } + for i := 0; i < N; i += 2 { + j := int(integer(x, r) & uint64(N-1)) + blockXOR(x, v[j*(32*r):], 32*r) + blockMix(&tmp, x, y, r) + + j = int(integer(y, r) & uint64(N-1)) + blockXOR(y, v[j*(32*r):], 32*r) + blockMix(&tmp, y, x, r) + } + j = 0 + for _, v := range x[:32*r] { + b[j+0] = byte(v >> 0) + b[j+1] = byte(v >> 8) + b[j+2] = byte(v >> 16) + b[j+3] = byte(v >> 24) + j += 4 + } +} + +// Key derives a key from the password, salt, and cost parameters, returning +// a byte slice of length keyLen that can be used as cryptographic key. +// +// N is a CPU/memory cost parameter, which must be a power of two greater than 1. +// r and p must satisfy r * p < 2³⁰. If the parameters do not satisfy the +// limits, the function returns a nil byte slice and an error. +// +// For example, you can get a derived key for e.g. AES-256 (which needs a +// 32-byte key) by doing: +// +// dk, err := scrypt.Key([]byte("some password"), salt, 32768, 8, 1, 32) +// +// The recommended parameters for interactive logins as of 2017 are N=32768, r=8 +// and p=1. The parameters N, r, and p should be increased as memory latency and +// CPU parallelism increases; consider setting N to the highest power of 2 you +// can derive within 100 milliseconds. Remember to get a good random salt. +func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) { + if N <= 1 || N&(N-1) != 0 { + return nil, errors.New("scrypt: N must be > 1 and a power of 2") + } + if uint64(r)*uint64(p) >= 1<<30 || r > maxInt/128/p || r > maxInt/256 || N > maxInt/128/r { + return nil, errors.New("scrypt: parameters are too large") + } + + xy := make([]uint32, 64*r) + v := make([]uint32, 32*N*r) + b := pbkdf2.Key(password, salt, 1, p*128*r, sha256.New) + + for i := 0; i < p; i++ { + smix(b[i*128*r:], r, N, v, xy) + } + + return pbkdf2.Key(password, b, 1, keyLen, sha256.New), nil +} diff --git a/vendor/golang.org/x/crypto/sha3/doc.go b/vendor/golang.org/x/crypto/sha3/doc.go new file mode 100644 index 0000000..c2fef30 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/doc.go @@ -0,0 +1,66 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package sha3 implements the SHA-3 fixed-output-length hash functions and +// the SHAKE variable-output-length hash functions defined by FIPS-202. +// +// Both types of hash function use the "sponge" construction and the Keccak +// permutation. For a detailed specification see http://keccak.noekeon.org/ +// +// +// Guidance +// +// If you aren't sure what function you need, use SHAKE256 with at least 64 +// bytes of output. The SHAKE instances are faster than the SHA3 instances; +// the latter have to allocate memory to conform to the hash.Hash interface. +// +// If you need a secret-key MAC (message authentication code), prepend the +// secret key to the input, hash with SHAKE256 and read at least 32 bytes of +// output. +// +// +// Security strengths +// +// The SHA3-x (x equals 224, 256, 384, or 512) functions have a security +// strength against preimage attacks of x bits. Since they only produce "x" +// bits of output, their collision-resistance is only "x/2" bits. +// +// The SHAKE-256 and -128 functions have a generic security strength of 256 and +// 128 bits against all attacks, provided that at least 2x bits of their output +// is used. Requesting more than 64 or 32 bytes of output, respectively, does +// not increase the collision-resistance of the SHAKE functions. +// +// +// The sponge construction +// +// A sponge builds a pseudo-random function from a public pseudo-random +// permutation, by applying the permutation to a state of "rate + capacity" +// bytes, but hiding "capacity" of the bytes. +// +// A sponge starts out with a zero state. To hash an input using a sponge, up +// to "rate" bytes of the input are XORed into the sponge's state. The sponge +// is then "full" and the permutation is applied to "empty" it. This process is +// repeated until all the input has been "absorbed". The input is then padded. +// The digest is "squeezed" from the sponge in the same way, except that output +// is copied out instead of input being XORed in. +// +// A sponge is parameterized by its generic security strength, which is equal +// to half its capacity; capacity + rate is equal to the permutation's width. +// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means +// that the security strength of a sponge instance is equal to (1600 - bitrate) / 2. +// +// +// Recommendations +// +// The SHAKE functions are recommended for most new uses. They can produce +// output of arbitrary length. SHAKE256, with an output length of at least +// 64 bytes, provides 256-bit security against all attacks. The Keccak team +// recommends it for most applications upgrading from SHA2-512. (NIST chose a +// much stronger, but much slower, sponge instance for SHA3-512.) +// +// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions. +// They produce output of the same length, with the same security strengths +// against all attacks. This means, in particular, that SHA3-256 only has +// 128-bit collision resistance, because its output length is 32 bytes. +package sha3 // import "golang.org/x/crypto/sha3" diff --git a/vendor/golang.org/x/crypto/sha3/hashes.go b/vendor/golang.org/x/crypto/sha3/hashes.go new file mode 100644 index 0000000..0d8043f --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/hashes.go @@ -0,0 +1,97 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// This file provides functions for creating instances of the SHA-3 +// and SHAKE hash functions, as well as utility functions for hashing +// bytes. + +import ( + "hash" +) + +// New224 creates a new SHA3-224 hash. +// Its generic security strength is 224 bits against preimage attacks, +// and 112 bits against collision attacks. +func New224() hash.Hash { + if h := new224Asm(); h != nil { + return h + } + return &state{rate: 144, outputLen: 28, dsbyte: 0x06} +} + +// New256 creates a new SHA3-256 hash. +// Its generic security strength is 256 bits against preimage attacks, +// and 128 bits against collision attacks. +func New256() hash.Hash { + if h := new256Asm(); h != nil { + return h + } + return &state{rate: 136, outputLen: 32, dsbyte: 0x06} +} + +// New384 creates a new SHA3-384 hash. +// Its generic security strength is 384 bits against preimage attacks, +// and 192 bits against collision attacks. +func New384() hash.Hash { + if h := new384Asm(); h != nil { + return h + } + return &state{rate: 104, outputLen: 48, dsbyte: 0x06} +} + +// New512 creates a new SHA3-512 hash. +// Its generic security strength is 512 bits against preimage attacks, +// and 256 bits against collision attacks. +func New512() hash.Hash { + if h := new512Asm(); h != nil { + return h + } + return &state{rate: 72, outputLen: 64, dsbyte: 0x06} +} + +// NewLegacyKeccak256 creates a new Keccak-256 hash. +// +// Only use this function if you require compatibility with an existing cryptosystem +// that uses non-standard padding. All other users should use New256 instead. +func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} } + +// NewLegacyKeccak512 creates a new Keccak-512 hash. +// +// Only use this function if you require compatibility with an existing cryptosystem +// that uses non-standard padding. All other users should use New512 instead. +func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} } + +// Sum224 returns the SHA3-224 digest of the data. +func Sum224(data []byte) (digest [28]byte) { + h := New224() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum256 returns the SHA3-256 digest of the data. +func Sum256(data []byte) (digest [32]byte) { + h := New256() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum384 returns the SHA3-384 digest of the data. +func Sum384(data []byte) (digest [48]byte) { + h := New384() + h.Write(data) + h.Sum(digest[:0]) + return +} + +// Sum512 returns the SHA3-512 digest of the data. +func Sum512(data []byte) (digest [64]byte) { + h := New512() + h.Write(data) + h.Sum(digest[:0]) + return +} diff --git a/vendor/golang.org/x/crypto/sha3/hashes_generic.go b/vendor/golang.org/x/crypto/sha3/hashes_generic.go new file mode 100644 index 0000000..c4ff3f6 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/hashes_generic.go @@ -0,0 +1,27 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build gccgo appengine !s390x + +package sha3 + +import ( + "hash" +) + +// new224Asm returns an assembly implementation of SHA3-224 if available, +// otherwise it returns nil. +func new224Asm() hash.Hash { return nil } + +// new256Asm returns an assembly implementation of SHA3-256 if available, +// otherwise it returns nil. +func new256Asm() hash.Hash { return nil } + +// new384Asm returns an assembly implementation of SHA3-384 if available, +// otherwise it returns nil. +func new384Asm() hash.Hash { return nil } + +// new512Asm returns an assembly implementation of SHA3-512 if available, +// otherwise it returns nil. +func new512Asm() hash.Hash { return nil } diff --git a/vendor/golang.org/x/crypto/sha3/keccakf.go b/vendor/golang.org/x/crypto/sha3/keccakf.go new file mode 100644 index 0000000..46d03ed --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf.go @@ -0,0 +1,412 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64 appengine gccgo + +package sha3 + +// rc stores the round constants for use in the ι step. +var rc = [24]uint64{ + 0x0000000000000001, + 0x0000000000008082, + 0x800000000000808A, + 0x8000000080008000, + 0x000000000000808B, + 0x0000000080000001, + 0x8000000080008081, + 0x8000000000008009, + 0x000000000000008A, + 0x0000000000000088, + 0x0000000080008009, + 0x000000008000000A, + 0x000000008000808B, + 0x800000000000008B, + 0x8000000000008089, + 0x8000000000008003, + 0x8000000000008002, + 0x8000000000000080, + 0x000000000000800A, + 0x800000008000000A, + 0x8000000080008081, + 0x8000000000008080, + 0x0000000080000001, + 0x8000000080008008, +} + +// keccakF1600 applies the Keccak permutation to a 1600b-wide +// state represented as a slice of 25 uint64s. +func keccakF1600(a *[25]uint64) { + // Implementation translated from Keccak-inplace.c + // in the keccak reference code. + var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64 + + for i := 0; i < 24; i += 4 { + // Combines the 5 steps in each round into 2 steps. + // Unrolls 4 rounds per loop and spreads some steps across rounds. + + // Round 1 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[6] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[12] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[18] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[24] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i] + a[6] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[16] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[22] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[3] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[10] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[1] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[7] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[19] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[20] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[11] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[23] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[4] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[5] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[2] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[8] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[14] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[15] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + // Round 2 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[16] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[7] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[23] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[14] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1] + a[16] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[11] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[2] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[18] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[20] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[6] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[22] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[4] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[15] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[1] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[8] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[24] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[10] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[12] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[3] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[19] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[5] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + // Round 3 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[11] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[22] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[8] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[19] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2] + a[11] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[1] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[12] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[23] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[15] = bc0 ^ (bc2 &^ bc1) + a[1] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[16] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[2] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[24] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[5] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[6] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[3] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[14] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[20] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[7] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[18] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[4] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[10] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + // Round 4 + bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] + bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] + bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] + bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] + bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] + d0 = bc4 ^ (bc1<<1 | bc1>>63) + d1 = bc0 ^ (bc2<<1 | bc2>>63) + d2 = bc1 ^ (bc3<<1 | bc3>>63) + d3 = bc2 ^ (bc4<<1 | bc4>>63) + d4 = bc3 ^ (bc0<<1 | bc0>>63) + + bc0 = a[0] ^ d0 + t = a[1] ^ d1 + bc1 = t<<44 | t>>(64-44) + t = a[2] ^ d2 + bc2 = t<<43 | t>>(64-43) + t = a[3] ^ d3 + bc3 = t<<21 | t>>(64-21) + t = a[4] ^ d4 + bc4 = t<<14 | t>>(64-14) + a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3] + a[1] = bc1 ^ (bc3 &^ bc2) + a[2] = bc2 ^ (bc4 &^ bc3) + a[3] = bc3 ^ (bc0 &^ bc4) + a[4] = bc4 ^ (bc1 &^ bc0) + + t = a[5] ^ d0 + bc2 = t<<3 | t>>(64-3) + t = a[6] ^ d1 + bc3 = t<<45 | t>>(64-45) + t = a[7] ^ d2 + bc4 = t<<61 | t>>(64-61) + t = a[8] ^ d3 + bc0 = t<<28 | t>>(64-28) + t = a[9] ^ d4 + bc1 = t<<20 | t>>(64-20) + a[5] = bc0 ^ (bc2 &^ bc1) + a[6] = bc1 ^ (bc3 &^ bc2) + a[7] = bc2 ^ (bc4 &^ bc3) + a[8] = bc3 ^ (bc0 &^ bc4) + a[9] = bc4 ^ (bc1 &^ bc0) + + t = a[10] ^ d0 + bc4 = t<<18 | t>>(64-18) + t = a[11] ^ d1 + bc0 = t<<1 | t>>(64-1) + t = a[12] ^ d2 + bc1 = t<<6 | t>>(64-6) + t = a[13] ^ d3 + bc2 = t<<25 | t>>(64-25) + t = a[14] ^ d4 + bc3 = t<<8 | t>>(64-8) + a[10] = bc0 ^ (bc2 &^ bc1) + a[11] = bc1 ^ (bc3 &^ bc2) + a[12] = bc2 ^ (bc4 &^ bc3) + a[13] = bc3 ^ (bc0 &^ bc4) + a[14] = bc4 ^ (bc1 &^ bc0) + + t = a[15] ^ d0 + bc1 = t<<36 | t>>(64-36) + t = a[16] ^ d1 + bc2 = t<<10 | t>>(64-10) + t = a[17] ^ d2 + bc3 = t<<15 | t>>(64-15) + t = a[18] ^ d3 + bc4 = t<<56 | t>>(64-56) + t = a[19] ^ d4 + bc0 = t<<27 | t>>(64-27) + a[15] = bc0 ^ (bc2 &^ bc1) + a[16] = bc1 ^ (bc3 &^ bc2) + a[17] = bc2 ^ (bc4 &^ bc3) + a[18] = bc3 ^ (bc0 &^ bc4) + a[19] = bc4 ^ (bc1 &^ bc0) + + t = a[20] ^ d0 + bc3 = t<<41 | t>>(64-41) + t = a[21] ^ d1 + bc4 = t<<2 | t>>(64-2) + t = a[22] ^ d2 + bc0 = t<<62 | t>>(64-62) + t = a[23] ^ d3 + bc1 = t<<55 | t>>(64-55) + t = a[24] ^ d4 + bc2 = t<<39 | t>>(64-39) + a[20] = bc0 ^ (bc2 &^ bc1) + a[21] = bc1 ^ (bc3 &^ bc2) + a[22] = bc2 ^ (bc4 &^ bc3) + a[23] = bc3 ^ (bc0 &^ bc4) + a[24] = bc4 ^ (bc1 &^ bc0) + } +} diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go new file mode 100644 index 0000000..7886795 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go @@ -0,0 +1,13 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +package sha3 + +// This function is implemented in keccakf_amd64.s. + +//go:noescape + +func keccakF1600(a *[25]uint64) diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s new file mode 100644 index 0000000..f88533a --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s @@ -0,0 +1,390 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,!appengine,!gccgo + +// This code was translated into a form compatible with 6a from the public +// domain sources at https://github.com/gvanas/KeccakCodePackage + +// Offsets in state +#define _ba (0*8) +#define _be (1*8) +#define _bi (2*8) +#define _bo (3*8) +#define _bu (4*8) +#define _ga (5*8) +#define _ge (6*8) +#define _gi (7*8) +#define _go (8*8) +#define _gu (9*8) +#define _ka (10*8) +#define _ke (11*8) +#define _ki (12*8) +#define _ko (13*8) +#define _ku (14*8) +#define _ma (15*8) +#define _me (16*8) +#define _mi (17*8) +#define _mo (18*8) +#define _mu (19*8) +#define _sa (20*8) +#define _se (21*8) +#define _si (22*8) +#define _so (23*8) +#define _su (24*8) + +// Temporary registers +#define rT1 AX + +// Round vars +#define rpState DI +#define rpStack SP + +#define rDa BX +#define rDe CX +#define rDi DX +#define rDo R8 +#define rDu R9 + +#define rBa R10 +#define rBe R11 +#define rBi R12 +#define rBo R13 +#define rBu R14 + +#define rCa SI +#define rCe BP +#define rCi rBi +#define rCo rBo +#define rCu R15 + +#define MOVQ_RBI_RCE MOVQ rBi, rCe +#define XORQ_RT1_RCA XORQ rT1, rCa +#define XORQ_RT1_RCE XORQ rT1, rCe +#define XORQ_RBA_RCU XORQ rBa, rCu +#define XORQ_RBE_RCU XORQ rBe, rCu +#define XORQ_RDU_RCU XORQ rDu, rCu +#define XORQ_RDA_RCA XORQ rDa, rCa +#define XORQ_RDE_RCE XORQ rDe, rCe + +#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \ + /* Prepare round */ \ + MOVQ rCe, rDa; \ + ROLQ $1, rDa; \ + \ + MOVQ _bi(iState), rCi; \ + XORQ _gi(iState), rDi; \ + XORQ rCu, rDa; \ + XORQ _ki(iState), rCi; \ + XORQ _mi(iState), rDi; \ + XORQ rDi, rCi; \ + \ + MOVQ rCi, rDe; \ + ROLQ $1, rDe; \ + \ + MOVQ _bo(iState), rCo; \ + XORQ _go(iState), rDo; \ + XORQ rCa, rDe; \ + XORQ _ko(iState), rCo; \ + XORQ _mo(iState), rDo; \ + XORQ rDo, rCo; \ + \ + MOVQ rCo, rDi; \ + ROLQ $1, rDi; \ + \ + MOVQ rCu, rDo; \ + XORQ rCe, rDi; \ + ROLQ $1, rDo; \ + \ + MOVQ rCa, rDu; \ + XORQ rCi, rDo; \ + ROLQ $1, rDu; \ + \ + /* Result b */ \ + MOVQ _ba(iState), rBa; \ + MOVQ _ge(iState), rBe; \ + XORQ rCo, rDu; \ + MOVQ _ki(iState), rBi; \ + MOVQ _mo(iState), rBo; \ + MOVQ _su(iState), rBu; \ + XORQ rDe, rBe; \ + ROLQ $44, rBe; \ + XORQ rDi, rBi; \ + XORQ rDa, rBa; \ + ROLQ $43, rBi; \ + \ + MOVQ rBe, rCa; \ + MOVQ rc, rT1; \ + ORQ rBi, rCa; \ + XORQ rBa, rT1; \ + XORQ rT1, rCa; \ + MOVQ rCa, _ba(oState); \ + \ + XORQ rDu, rBu; \ + ROLQ $14, rBu; \ + MOVQ rBa, rCu; \ + ANDQ rBe, rCu; \ + XORQ rBu, rCu; \ + MOVQ rCu, _bu(oState); \ + \ + XORQ rDo, rBo; \ + ROLQ $21, rBo; \ + MOVQ rBo, rT1; \ + ANDQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _bi(oState); \ + \ + NOTQ rBi; \ + ORQ rBa, rBu; \ + ORQ rBo, rBi; \ + XORQ rBo, rBu; \ + XORQ rBe, rBi; \ + MOVQ rBu, _bo(oState); \ + MOVQ rBi, _be(oState); \ + B_RBI_RCE; \ + \ + /* Result g */ \ + MOVQ _gu(iState), rBe; \ + XORQ rDu, rBe; \ + MOVQ _ka(iState), rBi; \ + ROLQ $20, rBe; \ + XORQ rDa, rBi; \ + ROLQ $3, rBi; \ + MOVQ _bo(iState), rBa; \ + MOVQ rBe, rT1; \ + ORQ rBi, rT1; \ + XORQ rDo, rBa; \ + MOVQ _me(iState), rBo; \ + MOVQ _si(iState), rBu; \ + ROLQ $28, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ga(oState); \ + G_RT1_RCA; \ + \ + XORQ rDe, rBo; \ + ROLQ $45, rBo; \ + MOVQ rBi, rT1; \ + ANDQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _ge(oState); \ + G_RT1_RCE; \ + \ + XORQ rDi, rBu; \ + ROLQ $61, rBu; \ + MOVQ rBu, rT1; \ + ORQ rBa, rT1; \ + XORQ rBo, rT1; \ + MOVQ rT1, _go(oState); \ + \ + ANDQ rBe, rBa; \ + XORQ rBu, rBa; \ + MOVQ rBa, _gu(oState); \ + NOTQ rBu; \ + G_RBA_RCU; \ + \ + ORQ rBu, rBo; \ + XORQ rBi, rBo; \ + MOVQ rBo, _gi(oState); \ + \ + /* Result k */ \ + MOVQ _be(iState), rBa; \ + MOVQ _gi(iState), rBe; \ + MOVQ _ko(iState), rBi; \ + MOVQ _mu(iState), rBo; \ + MOVQ _sa(iState), rBu; \ + XORQ rDi, rBe; \ + ROLQ $6, rBe; \ + XORQ rDo, rBi; \ + ROLQ $25, rBi; \ + MOVQ rBe, rT1; \ + ORQ rBi, rT1; \ + XORQ rDe, rBa; \ + ROLQ $1, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ka(oState); \ + K_RT1_RCA; \ + \ + XORQ rDu, rBo; \ + ROLQ $8, rBo; \ + MOVQ rBi, rT1; \ + ANDQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _ke(oState); \ + K_RT1_RCE; \ + \ + XORQ rDa, rBu; \ + ROLQ $18, rBu; \ + NOTQ rBo; \ + MOVQ rBo, rT1; \ + ANDQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _ki(oState); \ + \ + MOVQ rBu, rT1; \ + ORQ rBa, rT1; \ + XORQ rBo, rT1; \ + MOVQ rT1, _ko(oState); \ + \ + ANDQ rBe, rBa; \ + XORQ rBu, rBa; \ + MOVQ rBa, _ku(oState); \ + K_RBA_RCU; \ + \ + /* Result m */ \ + MOVQ _ga(iState), rBe; \ + XORQ rDa, rBe; \ + MOVQ _ke(iState), rBi; \ + ROLQ $36, rBe; \ + XORQ rDe, rBi; \ + MOVQ _bu(iState), rBa; \ + ROLQ $10, rBi; \ + MOVQ rBe, rT1; \ + MOVQ _mi(iState), rBo; \ + ANDQ rBi, rT1; \ + XORQ rDu, rBa; \ + MOVQ _so(iState), rBu; \ + ROLQ $27, rBa; \ + XORQ rBa, rT1; \ + MOVQ rT1, _ma(oState); \ + M_RT1_RCA; \ + \ + XORQ rDi, rBo; \ + ROLQ $15, rBo; \ + MOVQ rBi, rT1; \ + ORQ rBo, rT1; \ + XORQ rBe, rT1; \ + MOVQ rT1, _me(oState); \ + M_RT1_RCE; \ + \ + XORQ rDo, rBu; \ + ROLQ $56, rBu; \ + NOTQ rBo; \ + MOVQ rBo, rT1; \ + ORQ rBu, rT1; \ + XORQ rBi, rT1; \ + MOVQ rT1, _mi(oState); \ + \ + ORQ rBa, rBe; \ + XORQ rBu, rBe; \ + MOVQ rBe, _mu(oState); \ + \ + ANDQ rBa, rBu; \ + XORQ rBo, rBu; \ + MOVQ rBu, _mo(oState); \ + M_RBE_RCU; \ + \ + /* Result s */ \ + MOVQ _bi(iState), rBa; \ + MOVQ _go(iState), rBe; \ + MOVQ _ku(iState), rBi; \ + XORQ rDi, rBa; \ + MOVQ _ma(iState), rBo; \ + ROLQ $62, rBa; \ + XORQ rDo, rBe; \ + MOVQ _se(iState), rBu; \ + ROLQ $55, rBe; \ + \ + XORQ rDu, rBi; \ + MOVQ rBa, rDu; \ + XORQ rDe, rBu; \ + ROLQ $2, rBu; \ + ANDQ rBe, rDu; \ + XORQ rBu, rDu; \ + MOVQ rDu, _su(oState); \ + \ + ROLQ $39, rBi; \ + S_RDU_RCU; \ + NOTQ rBe; \ + XORQ rDa, rBo; \ + MOVQ rBe, rDa; \ + ANDQ rBi, rDa; \ + XORQ rBa, rDa; \ + MOVQ rDa, _sa(oState); \ + S_RDA_RCA; \ + \ + ROLQ $41, rBo; \ + MOVQ rBi, rDe; \ + ORQ rBo, rDe; \ + XORQ rBe, rDe; \ + MOVQ rDe, _se(oState); \ + S_RDE_RCE; \ + \ + MOVQ rBo, rDi; \ + MOVQ rBu, rDo; \ + ANDQ rBu, rDi; \ + ORQ rBa, rDo; \ + XORQ rBi, rDi; \ + XORQ rBo, rDo; \ + MOVQ rDi, _si(oState); \ + MOVQ rDo, _so(oState) \ + +// func keccakF1600(state *[25]uint64) +TEXT ·keccakF1600(SB), 0, $200-8 + MOVQ state+0(FP), rpState + + // Convert the user state into an internal state + NOTQ _be(rpState) + NOTQ _bi(rpState) + NOTQ _go(rpState) + NOTQ _ki(rpState) + NOTQ _mi(rpState) + NOTQ _sa(rpState) + + // Execute the KeccakF permutation + MOVQ _ba(rpState), rCa + MOVQ _be(rpState), rCe + MOVQ _bu(rpState), rCu + + XORQ _ga(rpState), rCa + XORQ _ge(rpState), rCe + XORQ _gu(rpState), rCu + + XORQ _ka(rpState), rCa + XORQ _ke(rpState), rCe + XORQ _ku(rpState), rCu + + XORQ _ma(rpState), rCa + XORQ _me(rpState), rCe + XORQ _mu(rpState), rCu + + XORQ _sa(rpState), rCa + XORQ _se(rpState), rCe + MOVQ _si(rpState), rDi + MOVQ _so(rpState), rDo + XORQ _su(rpState), rCu + + mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) + mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP) + + // Revert the internal state to the user state + NOTQ _be(rpState) + NOTQ _bi(rpState) + NOTQ _go(rpState) + NOTQ _ki(rpState) + NOTQ _mi(rpState) + NOTQ _sa(rpState) + + RET diff --git a/vendor/golang.org/x/crypto/sha3/register.go b/vendor/golang.org/x/crypto/sha3/register.go new file mode 100644 index 0000000..3cf6a22 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/register.go @@ -0,0 +1,18 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.4 + +package sha3 + +import ( + "crypto" +) + +func init() { + crypto.RegisterHash(crypto.SHA3_224, New224) + crypto.RegisterHash(crypto.SHA3_256, New256) + crypto.RegisterHash(crypto.SHA3_384, New384) + crypto.RegisterHash(crypto.SHA3_512, New512) +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go new file mode 100644 index 0000000..b12a35c --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3.go @@ -0,0 +1,192 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// spongeDirection indicates the direction bytes are flowing through the sponge. +type spongeDirection int + +const ( + // spongeAbsorbing indicates that the sponge is absorbing input. + spongeAbsorbing spongeDirection = iota + // spongeSqueezing indicates that the sponge is being squeezed. + spongeSqueezing +) + +const ( + // maxRate is the maximum size of the internal buffer. SHAKE-256 + // currently needs the largest buffer. + maxRate = 168 +) + +type state struct { + // Generic sponge components. + a [25]uint64 // main state of the hash + buf []byte // points into storage + rate int // the number of bytes of state to use + + // dsbyte contains the "domain separation" bits and the first bit of + // the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the + // SHA-3 and SHAKE functions by appending bitstrings to the message. + // Using a little-endian bit-ordering convention, these are "01" for SHA-3 + // and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the + // padding rule from section 5.1 is applied to pad the message to a multiple + // of the rate, which involves adding a "1" bit, zero or more "0" bits, and + // a final "1" bit. We merge the first "1" bit from the padding into dsbyte, + // giving 00000110b (0x06) and 00011111b (0x1f). + // [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf + // "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and + // Extendable-Output Functions (May 2014)" + dsbyte byte + storage [maxRate]byte + + // Specific to SHA-3 and SHAKE. + outputLen int // the default output size in bytes + state spongeDirection // whether the sponge is absorbing or squeezing +} + +// BlockSize returns the rate of sponge underlying this hash function. +func (d *state) BlockSize() int { return d.rate } + +// Size returns the output size of the hash function in bytes. +func (d *state) Size() int { return d.outputLen } + +// Reset clears the internal state by zeroing the sponge state and +// the byte buffer, and setting Sponge.state to absorbing. +func (d *state) Reset() { + // Zero the permutation's state. + for i := range d.a { + d.a[i] = 0 + } + d.state = spongeAbsorbing + d.buf = d.storage[:0] +} + +func (d *state) clone() *state { + ret := *d + if ret.state == spongeAbsorbing { + ret.buf = ret.storage[:len(ret.buf)] + } else { + ret.buf = ret.storage[d.rate-cap(d.buf) : d.rate] + } + + return &ret +} + +// permute applies the KeccakF-1600 permutation. It handles +// any input-output buffering. +func (d *state) permute() { + switch d.state { + case spongeAbsorbing: + // If we're absorbing, we need to xor the input into the state + // before applying the permutation. + xorIn(d, d.buf) + d.buf = d.storage[:0] + keccakF1600(&d.a) + case spongeSqueezing: + // If we're squeezing, we need to apply the permutatin before + // copying more output. + keccakF1600(&d.a) + d.buf = d.storage[:d.rate] + copyOut(d, d.buf) + } +} + +// pads appends the domain separation bits in dsbyte, applies +// the multi-bitrate 10..1 padding rule, and permutes the state. +func (d *state) padAndPermute(dsbyte byte) { + if d.buf == nil { + d.buf = d.storage[:0] + } + // Pad with this instance's domain-separator bits. We know that there's + // at least one byte of space in d.buf because, if it were full, + // permute would have been called to empty it. dsbyte also contains the + // first one bit for the padding. See the comment in the state struct. + d.buf = append(d.buf, dsbyte) + zerosStart := len(d.buf) + d.buf = d.storage[:d.rate] + for i := zerosStart; i < d.rate; i++ { + d.buf[i] = 0 + } + // This adds the final one bit for the padding. Because of the way that + // bits are numbered from the LSB upwards, the final bit is the MSB of + // the last byte. + d.buf[d.rate-1] ^= 0x80 + // Apply the permutation + d.permute() + d.state = spongeSqueezing + d.buf = d.storage[:d.rate] + copyOut(d, d.buf) +} + +// Write absorbs more data into the hash's state. It produces an error +// if more data is written to the ShakeHash after writing +func (d *state) Write(p []byte) (written int, err error) { + if d.state != spongeAbsorbing { + panic("sha3: write to sponge after read") + } + if d.buf == nil { + d.buf = d.storage[:0] + } + written = len(p) + + for len(p) > 0 { + if len(d.buf) == 0 && len(p) >= d.rate { + // The fast path; absorb a full "rate" bytes of input and apply the permutation. + xorIn(d, p[:d.rate]) + p = p[d.rate:] + keccakF1600(&d.a) + } else { + // The slow path; buffer the input until we can fill the sponge, and then xor it in. + todo := d.rate - len(d.buf) + if todo > len(p) { + todo = len(p) + } + d.buf = append(d.buf, p[:todo]...) + p = p[todo:] + + // If the sponge is full, apply the permutation. + if len(d.buf) == d.rate { + d.permute() + } + } + } + + return +} + +// Read squeezes an arbitrary number of bytes from the sponge. +func (d *state) Read(out []byte) (n int, err error) { + // If we're still absorbing, pad and apply the permutation. + if d.state == spongeAbsorbing { + d.padAndPermute(d.dsbyte) + } + + n = len(out) + + // Now, do the squeezing. + for len(out) > 0 { + n := copy(out, d.buf) + d.buf = d.buf[n:] + out = out[n:] + + // Apply the permutation if we've squeezed the sponge dry. + if len(d.buf) == 0 { + d.permute() + } + } + + return +} + +// Sum applies padding to the hash state and then squeezes out the desired +// number of output bytes. +func (d *state) Sum(in []byte) []byte { + // Make a copy of the original hash so that caller can keep writing + // and summing. + dup := d.clone() + hash := make([]byte, dup.outputLen) + dup.Read(hash) + return append(in, hash...) +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go new file mode 100644 index 0000000..b6cbc5c --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go @@ -0,0 +1,284 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !gccgo,!appengine + +package sha3 + +// This file contains code for using the 'compute intermediate +// message digest' (KIMD) and 'compute last message digest' (KLMD) +// instructions to compute SHA-3 and SHAKE hashes on IBM Z. + +import ( + "hash" + + "golang.org/x/sys/cpu" +) + +// codes represent 7-bit KIMD/KLMD function codes as defined in +// the Principles of Operation. +type code uint64 + +const ( + // function codes for KIMD/KLMD + sha3_224 code = 32 + sha3_256 = 33 + sha3_384 = 34 + sha3_512 = 35 + shake_128 = 36 + shake_256 = 37 + nopad = 0x100 +) + +// kimd is a wrapper for the 'compute intermediate message digest' instruction. +// src must be a multiple of the rate for the given function code. +//go:noescape +func kimd(function code, chain *[200]byte, src []byte) + +// klmd is a wrapper for the 'compute last message digest' instruction. +// src padding is handled by the instruction. +//go:noescape +func klmd(function code, chain *[200]byte, dst, src []byte) + +type asmState struct { + a [200]byte // 1600 bit state + buf []byte // care must be taken to ensure cap(buf) is a multiple of rate + rate int // equivalent to block size + storage [3072]byte // underlying storage for buf + outputLen int // output length if fixed, 0 if not + function code // KIMD/KLMD function code + state spongeDirection // whether the sponge is absorbing or squeezing +} + +func newAsmState(function code) *asmState { + var s asmState + s.function = function + switch function { + case sha3_224: + s.rate = 144 + s.outputLen = 28 + case sha3_256: + s.rate = 136 + s.outputLen = 32 + case sha3_384: + s.rate = 104 + s.outputLen = 48 + case sha3_512: + s.rate = 72 + s.outputLen = 64 + case shake_128: + s.rate = 168 + case shake_256: + s.rate = 136 + default: + panic("sha3: unrecognized function code") + } + + // limit s.buf size to a multiple of s.rate + s.resetBuf() + return &s +} + +func (s *asmState) clone() *asmState { + c := *s + c.buf = c.storage[:len(s.buf):cap(s.buf)] + return &c +} + +// copyIntoBuf copies b into buf. It will panic if there is not enough space to +// store all of b. +func (s *asmState) copyIntoBuf(b []byte) { + bufLen := len(s.buf) + s.buf = s.buf[:len(s.buf)+len(b)] + copy(s.buf[bufLen:], b) +} + +// resetBuf points buf at storage, sets the length to 0 and sets cap to be a +// multiple of the rate. +func (s *asmState) resetBuf() { + max := (cap(s.storage) / s.rate) * s.rate + s.buf = s.storage[:0:max] +} + +// Write (via the embedded io.Writer interface) adds more data to the running hash. +// It never returns an error. +func (s *asmState) Write(b []byte) (int, error) { + if s.state != spongeAbsorbing { + panic("sha3: write to sponge after read") + } + length := len(b) + for len(b) > 0 { + if len(s.buf) == 0 && len(b) >= cap(s.buf) { + // Hash the data directly and push any remaining bytes + // into the buffer. + remainder := len(s.buf) % s.rate + kimd(s.function, &s.a, b[:len(b)-remainder]) + if remainder != 0 { + s.copyIntoBuf(b[len(b)-remainder:]) + } + return length, nil + } + + if len(s.buf) == cap(s.buf) { + // flush the buffer + kimd(s.function, &s.a, s.buf) + s.buf = s.buf[:0] + } + + // copy as much as we can into the buffer + n := len(b) + if len(b) > cap(s.buf)-len(s.buf) { + n = cap(s.buf) - len(s.buf) + } + s.copyIntoBuf(b[:n]) + b = b[n:] + } + return length, nil +} + +// Read squeezes an arbitrary number of bytes from the sponge. +func (s *asmState) Read(out []byte) (n int, err error) { + n = len(out) + + // need to pad if we were absorbing + if s.state == spongeAbsorbing { + s.state = spongeSqueezing + + // write hash directly into out if possible + if len(out)%s.rate == 0 { + klmd(s.function, &s.a, out, s.buf) // len(out) may be 0 + s.buf = s.buf[:0] + return + } + + // write hash into buffer + max := cap(s.buf) + if max > len(out) { + max = (len(out)/s.rate)*s.rate + s.rate + } + klmd(s.function, &s.a, s.buf[:max], s.buf) + s.buf = s.buf[:max] + } + + for len(out) > 0 { + // flush the buffer + if len(s.buf) != 0 { + c := copy(out, s.buf) + out = out[c:] + s.buf = s.buf[c:] + continue + } + + // write hash directly into out if possible + if len(out)%s.rate == 0 { + klmd(s.function|nopad, &s.a, out, nil) + return + } + + // write hash into buffer + s.resetBuf() + if cap(s.buf) > len(out) { + s.buf = s.buf[:(len(out)/s.rate)*s.rate+s.rate] + } + klmd(s.function|nopad, &s.a, s.buf, nil) + } + return +} + +// Sum appends the current hash to b and returns the resulting slice. +// It does not change the underlying hash state. +func (s *asmState) Sum(b []byte) []byte { + if s.outputLen == 0 { + panic("sha3: cannot call Sum on SHAKE functions") + } + + // Copy the state to preserve the original. + a := s.a + + // Hash the buffer. Note that we don't clear it because we + // aren't updating the state. + klmd(s.function, &a, nil, s.buf) + return append(b, a[:s.outputLen]...) +} + +// Reset resets the Hash to its initial state. +func (s *asmState) Reset() { + for i := range s.a { + s.a[i] = 0 + } + s.resetBuf() + s.state = spongeAbsorbing +} + +// Size returns the number of bytes Sum will return. +func (s *asmState) Size() int { + return s.outputLen +} + +// BlockSize returns the hash's underlying block size. +// The Write method must be able to accept any amount +// of data, but it may operate more efficiently if all writes +// are a multiple of the block size. +func (s *asmState) BlockSize() int { + return s.rate +} + +// Clone returns a copy of the ShakeHash in its current state. +func (s *asmState) Clone() ShakeHash { + return s.clone() +} + +// new224Asm returns an assembly implementation of SHA3-224 if available, +// otherwise it returns nil. +func new224Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_224) + } + return nil +} + +// new256Asm returns an assembly implementation of SHA3-256 if available, +// otherwise it returns nil. +func new256Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_256) + } + return nil +} + +// new384Asm returns an assembly implementation of SHA3-384 if available, +// otherwise it returns nil. +func new384Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_384) + } + return nil +} + +// new512Asm returns an assembly implementation of SHA3-512 if available, +// otherwise it returns nil. +func new512Asm() hash.Hash { + if cpu.S390X.HasSHA3 { + return newAsmState(sha3_512) + } + return nil +} + +// newShake128Asm returns an assembly implementation of SHAKE-128 if available, +// otherwise it returns nil. +func newShake128Asm() ShakeHash { + if cpu.S390X.HasSHA3 { + return newAsmState(shake_128) + } + return nil +} + +// newShake256Asm returns an assembly implementation of SHAKE-256 if available, +// otherwise it returns nil. +func newShake256Asm() ShakeHash { + if cpu.S390X.HasSHA3 { + return newAsmState(shake_256) + } + return nil +} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s new file mode 100644 index 0000000..b2ef69f --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !gccgo,!appengine + +#include "textflag.h" + +// func kimd(function code, chain *[200]byte, src []byte) +TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40 + MOVD function+0(FP), R0 + MOVD chain+8(FP), R1 + LMG src+16(FP), R2, R3 // R2=base, R3=len + +continue: + WORD $0xB93E0002 // KIMD --, R2 + BVS continue // continue if interrupted + MOVD $0, R0 // reset R0 for pre-go1.8 compilers + RET + +// func klmd(function code, chain *[200]byte, dst, src []byte) +TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64 + // TODO: SHAKE support + MOVD function+0(FP), R0 + MOVD chain+8(FP), R1 + LMG dst+16(FP), R2, R3 // R2=base, R3=len + LMG src+40(FP), R4, R5 // R4=base, R5=len + +continue: + WORD $0xB93F0024 // KLMD R2, R4 + BVS continue // continue if interrupted + MOVD $0, R0 // reset R0 for pre-go1.8 compilers + RET diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go new file mode 100644 index 0000000..a39e5d5 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/shake.go @@ -0,0 +1,173 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +// This file defines the ShakeHash interface, and provides +// functions for creating SHAKE and cSHAKE instances, as well as utility +// functions for hashing bytes to arbitrary-length output. +// +// +// SHAKE implementation is based on FIPS PUB 202 [1] +// cSHAKE implementations is based on NIST SP 800-185 [2] +// +// [1] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf +// [2] https://doi.org/10.6028/NIST.SP.800-185 + +import ( + "encoding/binary" + "io" +) + +// ShakeHash defines the interface to hash functions that +// support arbitrary-length output. +type ShakeHash interface { + // Write absorbs more data into the hash's state. It panics if input is + // written to it after output has been read from it. + io.Writer + + // Read reads more output from the hash; reading affects the hash's + // state. (ShakeHash.Read is thus very different from Hash.Sum) + // It never returns an error. + io.Reader + + // Clone returns a copy of the ShakeHash in its current state. + Clone() ShakeHash + + // Reset resets the ShakeHash to its initial state. + Reset() +} + +// cSHAKE specific context +type cshakeState struct { + state // SHA-3 state context and Read/Write operations + + // initBlock is the cSHAKE specific initialization set of bytes. It is initialized + // by newCShake function and stores concatenation of N followed by S, encoded + // by the method specified in 3.3 of [1]. + // It is stored here in order for Reset() to be able to put context into + // initial state. + initBlock []byte +} + +// Consts for configuring initial SHA-3 state +const ( + dsbyteShake = 0x1f + dsbyteCShake = 0x04 + rate128 = 168 + rate256 = 136 +) + +func bytepad(input []byte, w int) []byte { + // leftEncode always returns max 9 bytes + buf := make([]byte, 0, 9+len(input)+w) + buf = append(buf, leftEncode(uint64(w))...) + buf = append(buf, input...) + padlen := w - (len(buf) % w) + return append(buf, make([]byte, padlen)...) +} + +func leftEncode(value uint64) []byte { + var b [9]byte + binary.BigEndian.PutUint64(b[1:], value) + // Trim all but last leading zero bytes + i := byte(1) + for i < 8 && b[i] == 0 { + i++ + } + // Prepend number of encoded bytes + b[i-1] = 9 - i + return b[i-1:] +} + +func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash { + c := cshakeState{state: state{rate: rate, dsbyte: dsbyte}} + + // leftEncode returns max 9 bytes + c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) + c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...) + c.initBlock = append(c.initBlock, N...) + c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...) + c.initBlock = append(c.initBlock, S...) + c.Write(bytepad(c.initBlock, c.rate)) + return &c +} + +// Reset resets the hash to initial state. +func (c *cshakeState) Reset() { + c.state.Reset() + c.Write(bytepad(c.initBlock, c.rate)) +} + +// Clone returns copy of a cSHAKE context within its current state. +func (c *cshakeState) Clone() ShakeHash { + b := make([]byte, len(c.initBlock)) + copy(b, c.initBlock) + return &cshakeState{state: *c.clone(), initBlock: b} +} + +// Clone returns copy of SHAKE context within its current state. +func (c *state) Clone() ShakeHash { + return c.clone() +} + +// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash. +// Its generic security strength is 128 bits against all attacks if at +// least 32 bytes of its output are used. +func NewShake128() ShakeHash { + if h := newShake128Asm(); h != nil { + return h + } + return &state{rate: rate128, dsbyte: dsbyteShake} +} + +// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash. +// Its generic security strength is 256 bits against all attacks if +// at least 64 bytes of its output are used. +func NewShake256() ShakeHash { + if h := newShake256Asm(); h != nil { + return h + } + return &state{rate: rate256, dsbyte: dsbyteShake} +} + +// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash, +// a customizable variant of SHAKE128. +// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is +// desired. S is a customization byte string used for domain separation - two cSHAKE +// computations on same input with different S yield unrelated outputs. +// When N and S are both empty, this is equivalent to NewShake128. +func NewCShake128(N, S []byte) ShakeHash { + if len(N) == 0 && len(S) == 0 { + return NewShake128() + } + return newCShake(N, S, rate128, dsbyteCShake) +} + +// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash, +// a customizable variant of SHAKE256. +// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is +// desired. S is a customization byte string used for domain separation - two cSHAKE +// computations on same input with different S yield unrelated outputs. +// When N and S are both empty, this is equivalent to NewShake256. +func NewCShake256(N, S []byte) ShakeHash { + if len(N) == 0 && len(S) == 0 { + return NewShake256() + } + return newCShake(N, S, rate256, dsbyteCShake) +} + +// ShakeSum128 writes an arbitrary-length digest of data into hash. +func ShakeSum128(hash, data []byte) { + h := NewShake128() + h.Write(data) + h.Read(hash) +} + +// ShakeSum256 writes an arbitrary-length digest of data into hash. +func ShakeSum256(hash, data []byte) { + h := NewShake256() + h.Write(data) + h.Read(hash) +} diff --git a/vendor/golang.org/x/crypto/sha3/shake_generic.go b/vendor/golang.org/x/crypto/sha3/shake_generic.go new file mode 100644 index 0000000..73d0c90 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/shake_generic.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build gccgo appengine !s390x + +package sha3 + +// newShake128Asm returns an assembly implementation of SHAKE-128 if available, +// otherwise it returns nil. +func newShake128Asm() ShakeHash { + return nil +} + +// newShake256Asm returns an assembly implementation of SHAKE-256 if available, +// otherwise it returns nil. +func newShake256Asm() ShakeHash { + return nil +} diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go new file mode 100644 index 0000000..46a0d63 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor.go @@ -0,0 +1,16 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !amd64,!386,!ppc64le appengine + +package sha3 + +var ( + xorIn = xorInGeneric + copyOut = copyOutGeneric + xorInUnaligned = xorInGeneric + copyOutUnaligned = copyOutGeneric +) + +const xorImplementationUnaligned = "generic" diff --git a/vendor/golang.org/x/crypto/sha3/xor_generic.go b/vendor/golang.org/x/crypto/sha3/xor_generic.go new file mode 100644 index 0000000..fd35f02 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor_generic.go @@ -0,0 +1,28 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package sha3 + +import "encoding/binary" + +// xorInGeneric xors the bytes in buf into the state; it +// makes no non-portable assumptions about memory layout +// or alignment. +func xorInGeneric(d *state, buf []byte) { + n := len(buf) / 8 + + for i := 0; i < n; i++ { + a := binary.LittleEndian.Uint64(buf) + d.a[i] ^= a + buf = buf[8:] + } +} + +// copyOutGeneric copies ulint64s to a byte buffer. +func copyOutGeneric(d *state, b []byte) { + for i := 0; len(b) >= 8; i++ { + binary.LittleEndian.PutUint64(b, d.a[i]) + b = b[8:] + } +} diff --git a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go new file mode 100644 index 0000000..929a486 --- /dev/null +++ b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go @@ -0,0 +1,58 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 386 ppc64le +// +build !appengine + +package sha3 + +import "unsafe" + +func xorInUnaligned(d *state, buf []byte) { + bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0])) + n := len(buf) + if n >= 72 { + d.a[0] ^= bw[0] + d.a[1] ^= bw[1] + d.a[2] ^= bw[2] + d.a[3] ^= bw[3] + d.a[4] ^= bw[4] + d.a[5] ^= bw[5] + d.a[6] ^= bw[6] + d.a[7] ^= bw[7] + d.a[8] ^= bw[8] + } + if n >= 104 { + d.a[9] ^= bw[9] + d.a[10] ^= bw[10] + d.a[11] ^= bw[11] + d.a[12] ^= bw[12] + } + if n >= 136 { + d.a[13] ^= bw[13] + d.a[14] ^= bw[14] + d.a[15] ^= bw[15] + d.a[16] ^= bw[16] + } + if n >= 144 { + d.a[17] ^= bw[17] + } + if n >= 168 { + d.a[18] ^= bw[18] + d.a[19] ^= bw[19] + d.a[20] ^= bw[20] + } +} + +func copyOutUnaligned(d *state, buf []byte) { + ab := (*[maxRate]uint8)(unsafe.Pointer(&d.a[0])) + copy(buf, ab[:]) +} + +var ( + xorIn = xorInUnaligned + copyOut = copyOutUnaligned +) + +const xorImplementationUnaligned = "unaligned" diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go new file mode 100644 index 0000000..c1ff90e --- /dev/null +++ b/vendor/golang.org/x/crypto/tea/cipher.go @@ -0,0 +1,116 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package tea implements the TEA algorithm, as defined in Needham and +// Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See +// http://www.cix.co.uk/~klockstone/tea.pdf for details. +// +// TEA is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package tea + +import ( + "crypto/cipher" + "encoding/binary" + "errors" +) + +const ( + // BlockSize is the size of a TEA block, in bytes. + BlockSize = 8 + + // KeySize is the size of a TEA key, in bytes. + KeySize = 16 + + // delta is the TEA key schedule constant. + delta = 0x9e3779b9 + + // numRounds is the standard number of rounds in TEA. + numRounds = 64 +) + +// tea is an instance of the TEA cipher with a particular key. +type tea struct { + key [16]byte + rounds int +} + +// NewCipher returns an instance of the TEA cipher with the standard number of +// rounds. The key argument must be 16 bytes long. +func NewCipher(key []byte) (cipher.Block, error) { + return NewCipherWithRounds(key, numRounds) +} + +// NewCipherWithRounds returns an instance of the TEA cipher with a given +// number of rounds, which must be even. The key argument must be 16 bytes +// long. +func NewCipherWithRounds(key []byte, rounds int) (cipher.Block, error) { + if len(key) != 16 { + return nil, errors.New("tea: incorrect key size") + } + + if rounds&1 != 0 { + return nil, errors.New("tea: odd number of rounds specified") + } + + c := &tea{ + rounds: rounds, + } + copy(c.key[:], key) + + return c, nil +} + +// BlockSize returns the TEA block size, which is eight bytes. It is necessary +// to satisfy the Block interface in the package "crypto/cipher". +func (*tea) BlockSize() int { + return BlockSize +} + +// Encrypt encrypts the 8 byte buffer src using the key in t and stores the +// result in dst. Note that for amounts of data larger than a block, it is not +// safe to just call Encrypt on successive blocks; instead, use an encryption +// mode like CBC (see crypto/cipher/cbc.go). +func (t *tea) Encrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + sum := uint32(0) + delta := uint32(delta) + + for i := 0; i < t.rounds/2; i++ { + sum += delta + v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} + +// Decrypt decrypts the 8 byte buffer src using the key in t and stores the +// result in dst. +func (t *tea) Decrypt(dst, src []byte) { + e := binary.BigEndian + v0, v1 := e.Uint32(src), e.Uint32(src[4:]) + k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) + + delta := uint32(delta) + sum := delta * uint32(t.rounds/2) // in general, sum = delta * n + + for i := 0; i < t.rounds/2; i++ { + v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) + v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) + sum -= delta + } + + e.PutUint32(dst, v0) + e.PutUint32(dst[4:], v1) +} diff --git a/vendor/golang.org/x/crypto/twofish/twofish.go b/vendor/golang.org/x/crypto/twofish/twofish.go new file mode 100644 index 0000000..1197d75 --- /dev/null +++ b/vendor/golang.org/x/crypto/twofish/twofish.go @@ -0,0 +1,348 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package twofish implements Bruce Schneier's Twofish encryption algorithm. +// +// Deprecated: Twofish is a legacy cipher and should not be used for new +// applications. Also, this package does not and will not provide an optimized +// implementation. Instead, use AES (from crypto/aes, if necessary in an AEAD +// mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package twofish // import "golang.org/x/crypto/twofish" + +// Twofish is defined in https://www.schneier.com/paper-twofish-paper.pdf [TWOFISH] + +// This code is a port of the LibTom C implementation. +// See http://libtom.org/?page=features&newsitems=5&whatfile=crypt. +// LibTomCrypt is free for all purposes under the public domain. +// It was heavily inspired by the go blowfish package. + +import "strconv" + +// BlockSize is the constant block size of Twofish. +const BlockSize = 16 + +const mdsPolynomial = 0x169 // x^8 + x^6 + x^5 + x^3 + 1, see [TWOFISH] 4.2 +const rsPolynomial = 0x14d // x^8 + x^6 + x^3 + x^2 + 1, see [TWOFISH] 4.3 + +// A Cipher is an instance of Twofish encryption using a particular key. +type Cipher struct { + s [4][256]uint32 + k [40]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/twofish: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a Cipher. +// The key argument should be the Twofish key, 16, 24 or 32 bytes. +func NewCipher(key []byte) (*Cipher, error) { + keylen := len(key) + + if keylen != 16 && keylen != 24 && keylen != 32 { + return nil, KeySizeError(keylen) + } + + // k is the number of 64 bit words in key + k := keylen / 8 + + // Create the S[..] words + var S [4 * 4]byte + for i := 0; i < k; i++ { + // Computes [y0 y1 y2 y3] = rs . [x0 x1 x2 x3 x4 x5 x6 x7] + for j, rsRow := range rs { + for k, rsVal := range rsRow { + S[4*i+j] ^= gfMult(key[8*i+k], rsVal, rsPolynomial) + } + } + } + + // Calculate subkeys + c := new(Cipher) + var tmp [4]byte + for i := byte(0); i < 20; i++ { + // A = h(p * 2x, Me) + for j := range tmp { + tmp[j] = 2 * i + } + A := h(tmp[:], key, 0) + + // B = rolc(h(p * (2x + 1), Mo), 8) + for j := range tmp { + tmp[j] = 2*i + 1 + } + B := h(tmp[:], key, 1) + B = rol(B, 8) + + c.k[2*i] = A + B + + // K[2i+1] = (A + 2B) <<< 9 + c.k[2*i+1] = rol(2*B+A, 9) + } + + // Calculate sboxes + switch k { + case 2: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][byte(i)]^S[0]]^S[4]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][byte(i)]^S[1]]^S[5]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][byte(i)]^S[2]]^S[6]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][byte(i)]^S[3]]^S[7]], 3) + } + case 3: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[1]]^S[5]]^S[9]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[3]]^S[7]]^S[11]], 3) + } + default: + for i := range c.s[0] { + c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]]^S[12]], 0) + c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[1]]^S[5]]^S[9]]^S[13]], 1) + c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]]^S[14]], 2) + c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][sbox[1][byte(i)]^S[3]]^S[7]]^S[11]]^S[15]], 3) + } + } + + return c, nil +} + +// BlockSize returns the Twofish block size, 16 bytes. +func (c *Cipher) BlockSize() int { return BlockSize } + +// store32l stores src in dst in little-endian form. +func store32l(dst []byte, src uint32) { + dst[0] = byte(src) + dst[1] = byte(src >> 8) + dst[2] = byte(src >> 16) + dst[3] = byte(src >> 24) + return +} + +// load32l reads a little-endian uint32 from src. +func load32l(src []byte) uint32 { + return uint32(src[0]) | uint32(src[1])<<8 | uint32(src[2])<<16 | uint32(src[3])<<24 +} + +// rol returns x after a left circular rotation of y bits. +func rol(x, y uint32) uint32 { + return (x << (y & 31)) | (x >> (32 - (y & 31))) +} + +// ror returns x after a right circular rotation of y bits. +func ror(x, y uint32) uint32 { + return (x >> (y & 31)) | (x << (32 - (y & 31))) +} + +// The RS matrix. See [TWOFISH] 4.3 +var rs = [4][8]byte{ + {0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E}, + {0xA4, 0x56, 0x82, 0xF3, 0x1E, 0xC6, 0x68, 0xE5}, + {0x02, 0xA1, 0xFC, 0xC1, 0x47, 0xAE, 0x3D, 0x19}, + {0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E, 0x03}, +} + +// sbox tables +var sbox = [2][256]byte{ + { + 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, + 0x0d, 0xc6, 0x35, 0x98, 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, 0x94, 0x48, + 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, + 0x63, 0x01, 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, 0x16, 0x0c, 0xe3, 0x61, + 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, + 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, + 0xfb, 0xc3, 0x8e, 0xb5, 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, 0x62, 0x71, + 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, + 0xa1, 0x1d, 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, 0x31, 0xc2, 0x27, 0x90, + 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, + 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, + 0x2a, 0xce, 0xcb, 0x2f, 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, 0xa7, 0x5a, + 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, + 0x57, 0xc7, 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, + 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, + 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0, + }, + { + 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, + 0xd6, 0x32, 0xd8, 0xfd, 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, 0x06, 0x3f, + 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, + 0xa0, 0x84, 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, 0x92, 0x74, 0x36, 0x51, + 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, + 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, + 0xa6, 0x83, 0x20, 0xff, 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, 0x2b, 0xe2, + 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, + 0x66, 0x94, 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, 0xef, 0xd1, 0x53, 0x3e, + 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, + 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, + 0x4f, 0xf2, 0x65, 0x8e, 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, 0x05, 0x64, + 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, + 0x29, 0x2e, 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, 0x35, 0x6a, 0xcf, 0xdc, + 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, + 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91, + }, +} + +// gfMult returns a·b in GF(2^8)/p +func gfMult(a, b byte, p uint32) byte { + B := [2]uint32{0, uint32(b)} + P := [2]uint32{0, p} + var result uint32 + + // branchless GF multiplier + for i := 0; i < 7; i++ { + result ^= B[a&1] + a >>= 1 + B[1] = P[B[1]>>7] ^ (B[1] << 1) + } + result ^= B[a&1] + return byte(result) +} + +// mdsColumnMult calculates y{col} where [y0 y1 y2 y3] = MDS · [x0] +func mdsColumnMult(in byte, col int) uint32 { + mul01 := in + mul5B := gfMult(in, 0x5B, mdsPolynomial) + mulEF := gfMult(in, 0xEF, mdsPolynomial) + + switch col { + case 0: + return uint32(mul01) | uint32(mul5B)<<8 | uint32(mulEF)<<16 | uint32(mulEF)<<24 + case 1: + return uint32(mulEF) | uint32(mulEF)<<8 | uint32(mul5B)<<16 | uint32(mul01)<<24 + case 2: + return uint32(mul5B) | uint32(mulEF)<<8 | uint32(mul01)<<16 | uint32(mulEF)<<24 + case 3: + return uint32(mul5B) | uint32(mul01)<<8 | uint32(mulEF)<<16 | uint32(mul5B)<<24 + } + + panic("unreachable") +} + +// h implements the S-box generation function. See [TWOFISH] 4.3.5 +func h(in, key []byte, offset int) uint32 { + var y [4]byte + for x := range y { + y[x] = in[x] + } + switch len(key) / 8 { + case 4: + y[0] = sbox[1][y[0]] ^ key[4*(6+offset)+0] + y[1] = sbox[0][y[1]] ^ key[4*(6+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(6+offset)+2] + y[3] = sbox[1][y[3]] ^ key[4*(6+offset)+3] + fallthrough + case 3: + y[0] = sbox[1][y[0]] ^ key[4*(4+offset)+0] + y[1] = sbox[1][y[1]] ^ key[4*(4+offset)+1] + y[2] = sbox[0][y[2]] ^ key[4*(4+offset)+2] + y[3] = sbox[0][y[3]] ^ key[4*(4+offset)+3] + fallthrough + case 2: + y[0] = sbox[1][sbox[0][sbox[0][y[0]]^key[4*(2+offset)+0]]^key[4*(0+offset)+0]] + y[1] = sbox[0][sbox[0][sbox[1][y[1]]^key[4*(2+offset)+1]]^key[4*(0+offset)+1]] + y[2] = sbox[1][sbox[1][sbox[0][y[2]]^key[4*(2+offset)+2]]^key[4*(0+offset)+2]] + y[3] = sbox[0][sbox[1][sbox[1][y[3]]^key[4*(2+offset)+3]]^key[4*(0+offset)+3]] + } + // [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] + var mdsMult uint32 + for i := range y { + mdsMult ^= mdsColumnMult(y[i], i) + } + return mdsMult +} + +// Encrypt encrypts a 16-byte block from src to dst, which may overlap. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ia := load32l(src[0:4]) + ib := load32l(src[4:8]) + ic := load32l(src[8:12]) + id := load32l(src[12:16]) + + // Pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + for i := 0; i < 8; i++ { + k := c.k[8+i*4 : 12+i*4] + t2 := S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 := S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = ror(ic^(t1+k[0]), 1) + id = rol(id, 1) ^ (t2 + t1 + k[1]) + + t2 = S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 = S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = ror(ia^(t1+k[2]), 1) + ib = rol(ib, 1) ^ (t2 + t1 + k[3]) + } + + // Output with "undo last swap" + ta := ic ^ c.k[4] + tb := id ^ c.k[5] + tc := ia ^ c.k[6] + td := ib ^ c.k[7] + + store32l(dst[0:4], ta) + store32l(dst[4:8], tb) + store32l(dst[8:12], tc) + store32l(dst[12:16], td) +} + +// Decrypt decrypts a 16-byte block from src to dst, which may overlap. +func (c *Cipher) Decrypt(dst, src []byte) { + S1 := c.s[0] + S2 := c.s[1] + S3 := c.s[2] + S4 := c.s[3] + + // Load input + ta := load32l(src[0:4]) + tb := load32l(src[4:8]) + tc := load32l(src[8:12]) + td := load32l(src[12:16]) + + // Undo undo final swap + ia := tc ^ c.k[6] + ib := td ^ c.k[7] + ic := ta ^ c.k[4] + id := tb ^ c.k[5] + + for i := 8; i > 0; i-- { + k := c.k[4+i*4 : 8+i*4] + t2 := S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] + t1 := S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 + ia = rol(ia, 1) ^ (t1 + k[2]) + ib = ror(ib^(t2+t1+k[3]), 1) + + t2 = S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] + t1 = S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 + ic = rol(ic, 1) ^ (t1 + k[0]) + id = ror(id^(t2+t1+k[1]), 1) + } + + // Undo pre-whitening + ia ^= c.k[0] + ib ^= c.k[1] + ic ^= c.k[2] + id ^= c.k[3] + + store32l(dst[0:4], ia) + store32l(dst[4:8], ib) + store32l(dst[8:12], ic) + store32l(dst[12:16], id) +} diff --git a/vendor/golang.org/x/crypto/xtea/block.go b/vendor/golang.org/x/crypto/xtea/block.go new file mode 100644 index 0000000..fcb4e4d --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/block.go @@ -0,0 +1,66 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* + Implementation adapted from Needham and Wheeler's paper: + http://www.cix.co.uk/~klockstone/xtea.pdf + + A precalculated look up table is used during encryption/decryption for values that are based purely on the key. +*/ + +package xtea + +// XTEA is based on 64 rounds. +const numRounds = 64 + +// blockToUint32 reads an 8 byte slice into two uint32s. +// The block is treated as big endian. +func blockToUint32(src []byte) (uint32, uint32) { + r0 := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) + r1 := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) + return r0, r1 +} + +// uint32ToBlock writes two uint32s into an 8 byte data block. +// Values are written as big endian. +func uint32ToBlock(v0, v1 uint32, dst []byte) { + dst[0] = byte(v0 >> 24) + dst[1] = byte(v0 >> 16) + dst[2] = byte(v0 >> 8) + dst[3] = byte(v0) + dst[4] = byte(v1 >> 24) + dst[5] = byte(v1 >> 16) + dst[6] = byte(v1 >> 8) + dst[7] = byte(v1 >> 0) +} + +// encryptBlock encrypts a single 8 byte block using XTEA. +func encryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + v0 += ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + i++ + v1 += ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i++ + } + + uint32ToBlock(v0, v1, dst) +} + +// decryptBlock decrypts a single 8 byte block using XTEA. +func decryptBlock(c *Cipher, dst, src []byte) { + v0, v1 := blockToUint32(src) + + // Two rounds of XTEA applied per loop + for i := numRounds; i > 0; { + i-- + v1 -= ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] + i-- + v0 -= ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] + } + + uint32ToBlock(v0, v1, dst) +} diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go new file mode 100644 index 0000000..a4c2fd0 --- /dev/null +++ b/vendor/golang.org/x/crypto/xtea/cipher.go @@ -0,0 +1,90 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package xtea implements XTEA encryption, as defined in Needham and Wheeler's +// 1997 technical report, "Tea extensions." +// +// XTEA is a legacy cipher and its short block size makes it vulnerable to +// birthday bound attacks (see https://sweet32.info). It should only be used +// where compatibility with legacy systems, not security, is the goal. +// +// Deprecated: any new system should use AES (from crypto/aes, if necessary in +// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from +// golang.org/x/crypto/chacha20poly1305). +package xtea // import "golang.org/x/crypto/xtea" + +// For details, see http://www.cix.co.uk/~klockstone/xtea.pdf + +import "strconv" + +// The XTEA block size in bytes. +const BlockSize = 8 + +// A Cipher is an instance of an XTEA cipher using a particular key. +type Cipher struct { + // table contains a series of precalculated values that are used each round. + table [64]uint32 +} + +type KeySizeError int + +func (k KeySizeError) Error() string { + return "crypto/xtea: invalid key size " + strconv.Itoa(int(k)) +} + +// NewCipher creates and returns a new Cipher. +// The key argument should be the XTEA key. +// XTEA only supports 128 bit (16 byte) keys. +func NewCipher(key []byte) (*Cipher, error) { + k := len(key) + switch k { + default: + return nil, KeySizeError(k) + case 16: + break + } + + c := new(Cipher) + initCipher(c, key) + + return c, nil +} + +// BlockSize returns the XTEA block size, 8 bytes. +// It is necessary to satisfy the Block interface in the +// package "crypto/cipher". +func (c *Cipher) BlockSize() int { return BlockSize } + +// Encrypt encrypts the 8 byte buffer src using the key and stores the result in dst. +// Note that for amounts of data larger than a block, +// it is not safe to just call Encrypt on successive blocks; +// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). +func (c *Cipher) Encrypt(dst, src []byte) { encryptBlock(c, dst, src) } + +// Decrypt decrypts the 8 byte buffer src using the key and stores the result in dst. +func (c *Cipher) Decrypt(dst, src []byte) { decryptBlock(c, dst, src) } + +// initCipher initializes the cipher context by creating a look up table +// of precalculated values that are based on the key. +func initCipher(c *Cipher, key []byte) { + // Load the key into four uint32s + var k [4]uint32 + for i := 0; i < len(k); i++ { + j := i << 2 // Multiply by 4 + k[i] = uint32(key[j+0])<<24 | uint32(key[j+1])<<16 | uint32(key[j+2])<<8 | uint32(key[j+3]) + } + + // Precalculate the table + const delta = 0x9E3779B9 + var sum uint32 + + // Two rounds of XTEA applied per loop + for i := 0; i < numRounds; { + c.table[i] = sum + k[sum&3] + i++ + sum += delta + c.table[i] = sum + k[(sum>>11)&3] + i++ + } +} diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS new file mode 100644 index 0000000..15167cd --- /dev/null +++ b/vendor/golang.org/x/net/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS new file mode 100644 index 0000000..1c4577e --- /dev/null +++ b/vendor/golang.org/x/net/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/net/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/net/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go new file mode 100644 index 0000000..15e21b1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/asm.go @@ -0,0 +1,41 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// Assemble converts insts into raw instructions suitable for loading +// into a BPF virtual machine. +// +// Currently, no optimization is attempted, the assembled program flow +// is exactly as provided. +func Assemble(insts []Instruction) ([]RawInstruction, error) { + ret := make([]RawInstruction, len(insts)) + var err error + for i, inst := range insts { + ret[i], err = inst.Assemble() + if err != nil { + return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) + } + } + return ret, nil +} + +// Disassemble attempts to parse raw back into +// Instructions. Unrecognized RawInstructions are assumed to be an +// extension not implemented by this package, and are passed through +// unchanged to the output. The allDecoded value reports whether insts +// contains no RawInstructions. +func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { + insts = make([]Instruction, len(raw)) + allDecoded = true + for i, r := range raw { + insts[i] = r.Disassemble() + if _, ok := insts[i].(RawInstruction); ok { + allDecoded = false + } + } + return insts, allDecoded +} diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go new file mode 100644 index 0000000..12f3ee8 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/constants.go @@ -0,0 +1,222 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Register is a register of the BPF virtual machine. +type Register uint16 + +const ( + // RegA is the accumulator register. RegA is always the + // destination register of ALU operations. + RegA Register = iota + // RegX is the indirection register, used by LoadIndirect + // operations. + RegX +) + +// An ALUOp is an arithmetic or logic operation. +type ALUOp uint16 + +// ALU binary operation types. +const ( + ALUOpAdd ALUOp = iota << 4 + ALUOpSub + ALUOpMul + ALUOpDiv + ALUOpOr + ALUOpAnd + ALUOpShiftLeft + ALUOpShiftRight + aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. + ALUOpMod + ALUOpXor +) + +// A JumpTest is a comparison operator used in conditional jumps. +type JumpTest uint16 + +// Supported operators for conditional jumps. +// K can be RegX for JumpIfX +const ( + // K == A + JumpEqual JumpTest = iota + // K != A + JumpNotEqual + // K > A + JumpGreaterThan + // K < A + JumpLessThan + // K >= A + JumpGreaterOrEqual + // K <= A + JumpLessOrEqual + // K & A != 0 + JumpBitsSet + // K & A == 0 + JumpBitsNotSet +) + +// An Extension is a function call provided by the kernel that +// performs advanced operations that are expensive or impossible +// within the BPF virtual machine. +// +// Extensions are only implemented by the Linux kernel. +// +// TODO: should we prune this list? Some of these extensions seem +// either broken or near-impossible to use correctly, whereas other +// (len, random, ifindex) are quite useful. +type Extension int + +// Extension functions available in the Linux kernel. +const ( + // extOffset is the negative maximum number of instructions used + // to load instructions by overloading the K argument. + extOffset = -0x1000 + // ExtLen returns the length of the packet. + ExtLen Extension = 1 + // ExtProto returns the packet's L3 protocol type. + ExtProto Extension = 0 + // ExtType returns the packet's type (skb->pkt_type in the kernel) + // + // TODO: better documentation. How nice an API do we want to + // provide for these esoteric extensions? + ExtType Extension = 4 + // ExtPayloadOffset returns the offset of the packet payload, or + // the first protocol header that the kernel does not know how to + // parse. + ExtPayloadOffset Extension = 52 + // ExtInterfaceIndex returns the index of the interface on which + // the packet was received. + ExtInterfaceIndex Extension = 8 + // ExtNetlinkAttr returns the netlink attribute of type X at + // offset A. + ExtNetlinkAttr Extension = 12 + // ExtNetlinkAttrNested returns the nested netlink attribute of + // type X at offset A. + ExtNetlinkAttrNested Extension = 16 + // ExtMark returns the packet's mark value. + ExtMark Extension = 20 + // ExtQueue returns the packet's assigned hardware queue. + ExtQueue Extension = 24 + // ExtLinkLayerType returns the packet's hardware address type + // (e.g. Ethernet, Infiniband). + ExtLinkLayerType Extension = 28 + // ExtRXHash returns the packets receive hash. + // + // TODO: figure out what this rxhash actually is. + ExtRXHash Extension = 32 + // ExtCPUID returns the ID of the CPU processing the current + // packet. + ExtCPUID Extension = 36 + // ExtVLANTag returns the packet's VLAN tag. + ExtVLANTag Extension = 44 + // ExtVLANTagPresent returns non-zero if the packet has a VLAN + // tag. + // + // TODO: I think this might be a lie: it reads bit 0x1000 of the + // VLAN header, which changed meaning in recent revisions of the + // spec - this extension may now return meaningless information. + ExtVLANTagPresent Extension = 48 + // ExtVLANProto returns 0x8100 if the frame has a VLAN header, + // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some + // other value if no VLAN information is present. + ExtVLANProto Extension = 60 + // ExtRand returns a uniformly random uint32. + ExtRand Extension = 56 +) + +// The following gives names to various bit patterns used in opcode construction. + +const ( + opMaskCls uint16 = 0x7 + // opClsLoad masks + opMaskLoadDest = 0x01 + opMaskLoadWidth = 0x18 + opMaskLoadMode = 0xe0 + // opClsALU & opClsJump + opMaskOperand = 0x08 + opMaskOperator = 0xf0 +) + +const ( + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsLoadA uint16 = iota + // +---------------+-----------------+---+---+---+ + // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | + // +---------------+-----------------+---+---+---+ + opClsLoadX + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | + // +---+---+---+---+---+---+---+---+ + opClsStoreA + // +---+---+---+---+---+---+---+---+ + // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | + // +---+---+---+---+---+---+---+---+ + opClsStoreX + // +---------------+-----------------+---+---+---+ + // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | + // +---------------+-----------------+---+---+---+ + opClsALU + // +-----------------------------+---+---+---+---+ + // | TestOperator (4b) | 0 | 1 | 0 | 1 | + // +-----------------------------+---+---+---+---+ + opClsJump + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | + // +---+-------------------------+---+---+---+---+ + opClsReturn + // +---+-------------------------+---+---+---+---+ + // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | + // +---+-------------------------+---+---+---+---+ + opClsMisc +) + +const ( + opAddrModeImmediate uint16 = iota << 5 + opAddrModeAbsolute + opAddrModeIndirect + opAddrModeScratch + opAddrModePacketLen // actually an extension, not an addressing mode. + opAddrModeMemShift +) + +const ( + opLoadWidth4 uint16 = iota << 3 + opLoadWidth2 + opLoadWidth1 +) + +// Operand for ALU and Jump instructions +type opOperand uint16 + +// Supported operand sources. +const ( + opOperandConstant opOperand = iota << 3 + opOperandX +) + +// An jumpOp is a conditional jump condition. +type jumpOp uint16 + +// Supported jump conditions. +const ( + opJumpAlways jumpOp = iota << 4 + opJumpEqual + opJumpGT + opJumpGE + opJumpSet +) + +const ( + opRetSrcConstant uint16 = iota << 4 + opRetSrcA +) + +const ( + opMiscTAX = 0x00 + opMiscTXA = 0x80 +) diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go new file mode 100644 index 0000000..ae62feb --- /dev/null +++ b/vendor/golang.org/x/net/bpf/doc.go @@ -0,0 +1,82 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* + +Package bpf implements marshaling and unmarshaling of programs for the +Berkeley Packet Filter virtual machine, and provides a Go implementation +of the virtual machine. + +BPF's main use is to specify a packet filter for network taps, so that +the kernel doesn't have to expensively copy every packet it sees to +userspace. However, it's been repurposed to other areas where running +user code in-kernel is needed. For example, Linux's seccomp uses BPF +to apply security policies to system calls. For simplicity, this +documentation refers only to packets, but other uses of BPF have their +own data payloads. + +BPF programs run in a restricted virtual machine. It has almost no +access to kernel functions, and while conditional branches are +allowed, they can only jump forwards, to guarantee that there are no +infinite loops. + +The virtual machine + +The BPF VM is an accumulator machine. Its main register, called +register A, is an implicit source and destination in all arithmetic +and logic operations. The machine also has 16 scratch registers for +temporary storage, and an indirection register (register X) for +indirect memory access. All registers are 32 bits wide. + +Each run of a BPF program is given one packet, which is placed in the +VM's read-only "main memory". LoadAbsolute and LoadIndirect +instructions can fetch up to 32 bits at a time into register A for +examination. + +The goal of a BPF program is to produce and return a verdict (uint32), +which tells the kernel what to do with the packet. In the context of +packet filtering, the returned value is the number of bytes of the +packet to forward to userspace, or 0 to ignore the packet. Other +contexts like seccomp define their own return values. + +In order to simplify programs, attempts to read past the end of the +packet terminate the program execution with a verdict of 0 (ignore +packet). This means that the vast majority of BPF programs don't need +to do any explicit bounds checking. + +In addition to the bytes of the packet, some BPF programs have access +to extensions, which are essentially calls to kernel utility +functions. Currently, the only extensions supported by this package +are the Linux packet filter extensions. + +Examples + +This packet filter selects all ARP packets. + + bpf.Assemble([]bpf.Instruction{ + // Load "EtherType" field from the ethernet header. + bpf.LoadAbsolute{Off: 12, Size: 2}, + // Skip over the next instruction if EtherType is not ARP. + bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, + // Verdict is "send up to 4k of the packet to userspace." + bpf.RetConstant{Val: 4096}, + // Verdict is "ignore packet." + bpf.RetConstant{Val: 0}, + }) + +This packet filter captures a random 1% sample of traffic. + + bpf.Assemble([]bpf.Instruction{ + // Get a 32-bit random number from the Linux kernel. + bpf.LoadExtension{Num: bpf.ExtRand}, + // 1% dice roll? + bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, + // Capture. + bpf.RetConstant{Val: 4096}, + // Ignore. + bpf.RetConstant{Val: 0}, + }) + +*/ +package bpf // import "golang.org/x/net/bpf" diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go new file mode 100644 index 0000000..3cffcaa --- /dev/null +++ b/vendor/golang.org/x/net/bpf/instructions.go @@ -0,0 +1,726 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import "fmt" + +// An Instruction is one instruction executed by the BPF virtual +// machine. +type Instruction interface { + // Assemble assembles the Instruction into a RawInstruction. + Assemble() (RawInstruction, error) +} + +// A RawInstruction is a raw BPF virtual machine instruction. +type RawInstruction struct { + // Operation to execute. + Op uint16 + // For conditional jump instructions, the number of instructions + // to skip if the condition is true/false. + Jt uint8 + Jf uint8 + // Constant parameter. The meaning depends on the Op. + K uint32 +} + +// Assemble implements the Instruction Assemble method. +func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } + +// Disassemble parses ri into an Instruction and returns it. If ri is +// not recognized by this package, ri itself is returned. +func (ri RawInstruction) Disassemble() Instruction { + switch ri.Op & opMaskCls { + case opClsLoadA, opClsLoadX: + reg := Register(ri.Op & opMaskLoadDest) + sz := 0 + switch ri.Op & opMaskLoadWidth { + case opLoadWidth4: + sz = 4 + case opLoadWidth2: + sz = 2 + case opLoadWidth1: + sz = 1 + default: + return ri + } + switch ri.Op & opMaskLoadMode { + case opAddrModeImmediate: + if sz != 4 { + return ri + } + return LoadConstant{Dst: reg, Val: ri.K} + case opAddrModeScratch: + if sz != 4 || ri.K > 15 { + return ri + } + return LoadScratch{Dst: reg, N: int(ri.K)} + case opAddrModeAbsolute: + if ri.K > extOffset+0xffffffff { + return LoadExtension{Num: Extension(-extOffset + ri.K)} + } + return LoadAbsolute{Size: sz, Off: ri.K} + case opAddrModeIndirect: + return LoadIndirect{Size: sz, Off: ri.K} + case opAddrModePacketLen: + if sz != 4 { + return ri + } + return LoadExtension{Num: ExtLen} + case opAddrModeMemShift: + return LoadMemShift{Off: ri.K} + default: + return ri + } + + case opClsStoreA: + if ri.Op != opClsStoreA || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegA, N: int(ri.K)} + + case opClsStoreX: + if ri.Op != opClsStoreX || ri.K > 15 { + return ri + } + return StoreScratch{Src: RegX, N: int(ri.K)} + + case opClsALU: + switch op := ALUOp(ri.Op & opMaskOperator); op { + case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return ALUOpX{Op: op} + case opOperandConstant: + return ALUOpConstant{Op: op, Val: ri.K} + default: + return ri + } + case aluOpNeg: + return NegateA{} + default: + return ri + } + + case opClsJump: + switch op := jumpOp(ri.Op & opMaskOperator); op { + case opJumpAlways: + return Jump{Skip: ri.K} + case opJumpEqual, opJumpGT, opJumpGE, opJumpSet: + cond, skipTrue, skipFalse := jumpOpToTest(op, ri.Jt, ri.Jf) + switch operand := opOperand(ri.Op & opMaskOperand); operand { + case opOperandX: + return JumpIfX{Cond: cond, SkipTrue: skipTrue, SkipFalse: skipFalse} + case opOperandConstant: + return JumpIf{Cond: cond, Val: ri.K, SkipTrue: skipTrue, SkipFalse: skipFalse} + default: + return ri + } + default: + return ri + } + + case opClsReturn: + switch ri.Op { + case opClsReturn | opRetSrcA: + return RetA{} + case opClsReturn | opRetSrcConstant: + return RetConstant{Val: ri.K} + default: + return ri + } + + case opClsMisc: + switch ri.Op { + case opClsMisc | opMiscTAX: + return TAX{} + case opClsMisc | opMiscTXA: + return TXA{} + default: + return ri + } + + default: + panic("unreachable") // switch is exhaustive on the bit pattern + } +} + +func jumpOpToTest(op jumpOp, skipTrue uint8, skipFalse uint8) (JumpTest, uint8, uint8) { + var test JumpTest + + // Decode "fake" jump conditions that don't appear in machine code + // Ensures the Assemble -> Disassemble stage recreates the same instructions + // See https://github.com/golang/go/issues/18470 + if skipTrue == 0 { + switch op { + case opJumpEqual: + test = JumpNotEqual + case opJumpGT: + test = JumpLessOrEqual + case opJumpGE: + test = JumpLessThan + case opJumpSet: + test = JumpBitsNotSet + } + + return test, skipFalse, 0 + } + + switch op { + case opJumpEqual: + test = JumpEqual + case opJumpGT: + test = JumpGreaterThan + case opJumpGE: + test = JumpGreaterOrEqual + case opJumpSet: + test = JumpBitsSet + } + + return test, skipTrue, skipFalse +} + +// LoadConstant loads Val into register Dst. +type LoadConstant struct { + Dst Register + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadConstant) Assemble() (RawInstruction, error) { + return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) +} + +// String returns the instruction in assembler notation. +func (a LoadConstant) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld #%d", a.Val) + case RegX: + return fmt.Sprintf("ldx #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadScratch loads scratch[N] into register Dst. +type LoadScratch struct { + Dst Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) +} + +// String returns the instruction in assembler notation. +func (a LoadScratch) String() string { + switch a.Dst { + case RegA: + return fmt.Sprintf("ld M[%d]", a.N) + case RegX: + return fmt.Sprintf("ldx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadAbsolute loads packet[Off:Off+Size] as an integer value into +// register A. +type LoadAbsolute struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadAbsolute) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadAbsolute) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [%d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [%d]", a.Off) + case 4: // word + if a.Off > extOffset+0xffffffff { + return LoadExtension{Num: Extension(a.Off + 0x1000)}.String() + } + return fmt.Sprintf("ld [%d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value +// into register A. +type LoadIndirect struct { + Off uint32 + Size int // 1, 2 or 4 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadIndirect) Assemble() (RawInstruction, error) { + return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadIndirect) String() string { + switch a.Size { + case 1: // byte + return fmt.Sprintf("ldb [x + %d]", a.Off) + case 2: // half word + return fmt.Sprintf("ldh [x + %d]", a.Off) + case 4: // word + return fmt.Sprintf("ld [x + %d]", a.Off) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] +// by 4 and stores the result in register X. +// +// This instruction is mainly useful to load into X the length of an +// IPv4 packet header in a single instruction, rather than have to do +// the arithmetic on the header's first byte by hand. +type LoadMemShift struct { + Off uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a LoadMemShift) Assemble() (RawInstruction, error) { + return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) +} + +// String returns the instruction in assembler notation. +func (a LoadMemShift) String() string { + return fmt.Sprintf("ldx 4*([%d]&0xf)", a.Off) +} + +// LoadExtension invokes a linux-specific extension and stores the +// result in register A. +type LoadExtension struct { + Num Extension +} + +// Assemble implements the Instruction Assemble method. +func (a LoadExtension) Assemble() (RawInstruction, error) { + if a.Num == ExtLen { + return assembleLoad(RegA, 4, opAddrModePacketLen, 0) + } + return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(extOffset+a.Num)) +} + +// String returns the instruction in assembler notation. +func (a LoadExtension) String() string { + switch a.Num { + case ExtLen: + return "ld #len" + case ExtProto: + return "ld #proto" + case ExtType: + return "ld #type" + case ExtPayloadOffset: + return "ld #poff" + case ExtInterfaceIndex: + return "ld #ifidx" + case ExtNetlinkAttr: + return "ld #nla" + case ExtNetlinkAttrNested: + return "ld #nlan" + case ExtMark: + return "ld #mark" + case ExtQueue: + return "ld #queue" + case ExtLinkLayerType: + return "ld #hatype" + case ExtRXHash: + return "ld #rxhash" + case ExtCPUID: + return "ld #cpu" + case ExtVLANTag: + return "ld #vlan_tci" + case ExtVLANTagPresent: + return "ld #vlan_avail" + case ExtVLANProto: + return "ld #vlan_tpid" + case ExtRand: + return "ld #rand" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// StoreScratch stores register Src into scratch[N]. +type StoreScratch struct { + Src Register + N int // 0-15 +} + +// Assemble implements the Instruction Assemble method. +func (a StoreScratch) Assemble() (RawInstruction, error) { + if a.N < 0 || a.N > 15 { + return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) + } + var op uint16 + switch a.Src { + case RegA: + op = opClsStoreA + case RegX: + op = opClsStoreX + default: + return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) + } + + return RawInstruction{ + Op: op, + K: uint32(a.N), + }, nil +} + +// String returns the instruction in assembler notation. +func (a StoreScratch) String() string { + switch a.Src { + case RegA: + return fmt.Sprintf("st M[%d]", a.N) + case RegX: + return fmt.Sprintf("stx M[%d]", a.N) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpConstant executes A = A Val. +type ALUOpConstant struct { + Op ALUOp + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandConstant) | uint16(a.Op), + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpConstant) String() string { + switch a.Op { + case ALUOpAdd: + return fmt.Sprintf("add #%d", a.Val) + case ALUOpSub: + return fmt.Sprintf("sub #%d", a.Val) + case ALUOpMul: + return fmt.Sprintf("mul #%d", a.Val) + case ALUOpDiv: + return fmt.Sprintf("div #%d", a.Val) + case ALUOpMod: + return fmt.Sprintf("mod #%d", a.Val) + case ALUOpAnd: + return fmt.Sprintf("and #%d", a.Val) + case ALUOpOr: + return fmt.Sprintf("or #%d", a.Val) + case ALUOpXor: + return fmt.Sprintf("xor #%d", a.Val) + case ALUOpShiftLeft: + return fmt.Sprintf("lsh #%d", a.Val) + case ALUOpShiftRight: + return fmt.Sprintf("rsh #%d", a.Val) + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// ALUOpX executes A = A X +type ALUOpX struct { + Op ALUOp +} + +// Assemble implements the Instruction Assemble method. +func (a ALUOpX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(opOperandX) | uint16(a.Op), + }, nil +} + +// String returns the instruction in assembler notation. +func (a ALUOpX) String() string { + switch a.Op { + case ALUOpAdd: + return "add x" + case ALUOpSub: + return "sub x" + case ALUOpMul: + return "mul x" + case ALUOpDiv: + return "div x" + case ALUOpMod: + return "mod x" + case ALUOpAnd: + return "and x" + case ALUOpOr: + return "or x" + case ALUOpXor: + return "xor x" + case ALUOpShiftLeft: + return "lsh x" + case ALUOpShiftRight: + return "rsh x" + default: + return fmt.Sprintf("unknown instruction: %#v", a) + } +} + +// NegateA executes A = -A. +type NegateA struct{} + +// Assemble implements the Instruction Assemble method. +func (a NegateA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsALU | uint16(aluOpNeg), + }, nil +} + +// String returns the instruction in assembler notation. +func (a NegateA) String() string { + return fmt.Sprintf("neg") +} + +// Jump skips the following Skip instructions in the program. +type Jump struct { + Skip uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a Jump) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsJump | uint16(opJumpAlways), + K: a.Skip, + }, nil +} + +// String returns the instruction in assembler notation. +func (a Jump) String() string { + return fmt.Sprintf("ja %d", a.Skip) +} + +// JumpIf skips the following Skip instructions in the program if A +// Val is true. +type JumpIf struct { + Cond JumpTest + Val uint32 + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIf) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandConstant, a.Val, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIf) String() string { + return jumpToString(a.Cond, fmt.Sprintf("#%d", a.Val), a.SkipTrue, a.SkipFalse) +} + +// JumpIfX skips the following Skip instructions in the program if A +// X is true. +type JumpIfX struct { + Cond JumpTest + SkipTrue uint8 + SkipFalse uint8 +} + +// Assemble implements the Instruction Assemble method. +func (a JumpIfX) Assemble() (RawInstruction, error) { + return jumpToRaw(a.Cond, opOperandX, 0, a.SkipTrue, a.SkipFalse) +} + +// String returns the instruction in assembler notation. +func (a JumpIfX) String() string { + return jumpToString(a.Cond, "x", a.SkipTrue, a.SkipFalse) +} + +// jumpToRaw assembles a jump instruction into a RawInstruction +func jumpToRaw(test JumpTest, operand opOperand, k uint32, skipTrue, skipFalse uint8) (RawInstruction, error) { + var ( + cond jumpOp + flip bool + ) + switch test { + case JumpEqual: + cond = opJumpEqual + case JumpNotEqual: + cond, flip = opJumpEqual, true + case JumpGreaterThan: + cond = opJumpGT + case JumpLessThan: + cond, flip = opJumpGE, true + case JumpGreaterOrEqual: + cond = opJumpGE + case JumpLessOrEqual: + cond, flip = opJumpGT, true + case JumpBitsSet: + cond = opJumpSet + case JumpBitsNotSet: + cond, flip = opJumpSet, true + default: + return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", test) + } + jt, jf := skipTrue, skipFalse + if flip { + jt, jf = jf, jt + } + return RawInstruction{ + Op: opClsJump | uint16(cond) | uint16(operand), + Jt: jt, + Jf: jf, + K: k, + }, nil +} + +// jumpToString converts a jump instruction to assembler notation +func jumpToString(cond JumpTest, operand string, skipTrue, skipFalse uint8) string { + switch cond { + // K == A + case JumpEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jeq", "jneq") + // K != A + case JumpNotEqual: + return fmt.Sprintf("jneq %s,%d", operand, skipTrue) + // K > A + case JumpGreaterThan: + return conditionalJump(operand, skipTrue, skipFalse, "jgt", "jle") + // K < A + case JumpLessThan: + return fmt.Sprintf("jlt %s,%d", operand, skipTrue) + // K >= A + case JumpGreaterOrEqual: + return conditionalJump(operand, skipTrue, skipFalse, "jge", "jlt") + // K <= A + case JumpLessOrEqual: + return fmt.Sprintf("jle %s,%d", operand, skipTrue) + // K & A != 0 + case JumpBitsSet: + if skipFalse > 0 { + return fmt.Sprintf("jset %s,%d,%d", operand, skipTrue, skipFalse) + } + return fmt.Sprintf("jset %s,%d", operand, skipTrue) + // K & A == 0, there is no assembler instruction for JumpBitNotSet, use JumpBitSet and invert skips + case JumpBitsNotSet: + return jumpToString(JumpBitsSet, operand, skipFalse, skipTrue) + default: + return fmt.Sprintf("unknown JumpTest %#v", cond) + } +} + +func conditionalJump(operand string, skipTrue, skipFalse uint8, positiveJump, negativeJump string) string { + if skipTrue > 0 { + if skipFalse > 0 { + return fmt.Sprintf("%s %s,%d,%d", positiveJump, operand, skipTrue, skipFalse) + } + return fmt.Sprintf("%s %s,%d", positiveJump, operand, skipTrue) + } + return fmt.Sprintf("%s %s,%d", negativeJump, operand, skipFalse) +} + +// RetA exits the BPF program, returning the value of register A. +type RetA struct{} + +// Assemble implements the Instruction Assemble method. +func (a RetA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetA) String() string { + return fmt.Sprintf("ret a") +} + +// RetConstant exits the BPF program, returning a constant value. +type RetConstant struct { + Val uint32 +} + +// Assemble implements the Instruction Assemble method. +func (a RetConstant) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsReturn | opRetSrcConstant, + K: a.Val, + }, nil +} + +// String returns the instruction in assembler notation. +func (a RetConstant) String() string { + return fmt.Sprintf("ret #%d", a.Val) +} + +// TXA copies the value of register X to register A. +type TXA struct{} + +// Assemble implements the Instruction Assemble method. +func (a TXA) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTXA, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TXA) String() string { + return fmt.Sprintf("txa") +} + +// TAX copies the value of register A to register X. +type TAX struct{} + +// Assemble implements the Instruction Assemble method. +func (a TAX) Assemble() (RawInstruction, error) { + return RawInstruction{ + Op: opClsMisc | opMiscTAX, + }, nil +} + +// String returns the instruction in assembler notation. +func (a TAX) String() string { + return fmt.Sprintf("tax") +} + +func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { + var ( + cls uint16 + sz uint16 + ) + switch dst { + case RegA: + cls = opClsLoadA + case RegX: + cls = opClsLoadX + default: + return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) + } + switch loadSize { + case 1: + sz = opLoadWidth1 + case 2: + sz = opLoadWidth2 + case 4: + sz = opLoadWidth4 + default: + return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) + } + return RawInstruction{ + Op: cls | sz | mode, + K: k, + }, nil +} diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go new file mode 100644 index 0000000..43e35f0 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/setter.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +// A Setter is a type which can attach a compiled BPF filter to itself. +type Setter interface { + SetBPF(filter []RawInstruction) error +} diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go new file mode 100644 index 0000000..73f57f1 --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm.go @@ -0,0 +1,150 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "errors" + "fmt" +) + +// A VM is an emulated BPF virtual machine. +type VM struct { + filter []Instruction +} + +// NewVM returns a new VM using the input BPF program. +func NewVM(filter []Instruction) (*VM, error) { + if len(filter) == 0 { + return nil, errors.New("one or more Instructions must be specified") + } + + for i, ins := range filter { + check := len(filter) - (i + 1) + switch ins := ins.(type) { + // Check for out-of-bounds jumps in instructions + case Jump: + if check <= int(ins.Skip) { + return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) + } + case JumpIf: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + case JumpIfX: + if check <= int(ins.SkipTrue) { + return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) + } + if check <= int(ins.SkipFalse) { + return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) + } + // Check for division or modulus by zero + case ALUOpConstant: + if ins.Val != 0 { + break + } + + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return nil, errors.New("cannot divide by zero using ALUOpConstant") + } + // Check for unknown extensions + case LoadExtension: + switch ins.Num { + case ExtLen: + default: + return nil, fmt.Errorf("extension %d not implemented", ins.Num) + } + } + } + + // Make sure last instruction is a return instruction + switch filter[len(filter)-1].(type) { + case RetA, RetConstant: + default: + return nil, errors.New("BPF program must end with RetA or RetConstant") + } + + // Though our VM works using disassembled instructions, we + // attempt to assemble the input filter anyway to ensure it is compatible + // with an operating system VM. + _, err := Assemble(filter) + + return &VM{ + filter: filter, + }, err +} + +// Run runs the VM's BPF program against the input bytes. +// Run returns the number of bytes accepted by the BPF program, and any errors +// which occurred while processing the program. +func (v *VM) Run(in []byte) (int, error) { + var ( + // Registers of the virtual machine + regA uint32 + regX uint32 + regScratch [16]uint32 + + // OK is true if the program should continue processing the next + // instruction, or false if not, causing the loop to break + ok = true + ) + + // TODO(mdlayher): implement: + // - NegateA: + // - would require a change from uint32 registers to int32 + // registers + + // TODO(mdlayher): add interop tests that check signedness of ALU + // operations against kernel implementation, and make sure Go + // implementation matches behavior + + for i := 0; i < len(v.filter) && ok; i++ { + ins := v.filter[i] + + switch ins := ins.(type) { + case ALUOpConstant: + regA = aluOpConstant(ins, regA) + case ALUOpX: + regA, ok = aluOpX(ins, regA, regX) + case Jump: + i += int(ins.Skip) + case JumpIf: + jump := jumpIf(ins, regA) + i += jump + case JumpIfX: + jump := jumpIfX(ins, regA, regX) + i += jump + case LoadAbsolute: + regA, ok = loadAbsolute(ins, in) + case LoadConstant: + regA, regX = loadConstant(ins, regA, regX) + case LoadExtension: + regA = loadExtension(ins, in) + case LoadIndirect: + regA, ok = loadIndirect(ins, in, regX) + case LoadMemShift: + regX, ok = loadMemShift(ins, in) + case LoadScratch: + regA, regX = loadScratch(ins, regScratch, regA, regX) + case RetA: + return int(regA), nil + case RetConstant: + return int(ins.Val), nil + case StoreScratch: + regScratch = storeScratch(ins, regScratch, regA, regX) + case TAX: + regX = regA + case TXA: + regA = regX + default: + return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) + } + } + + return 0, nil +} diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go new file mode 100644 index 0000000..cf8947c --- /dev/null +++ b/vendor/golang.org/x/net/bpf/vm_instructions.go @@ -0,0 +1,182 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package bpf + +import ( + "encoding/binary" + "fmt" +) + +func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { + return aluOpCommon(ins.Op, regA, ins.Val) +} + +func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { + // Guard against division or modulus by zero by terminating + // the program, as the OS BPF VM does + if regX == 0 { + switch ins.Op { + case ALUOpDiv, ALUOpMod: + return 0, false + } + } + + return aluOpCommon(ins.Op, regA, regX), true +} + +func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { + switch op { + case ALUOpAdd: + return regA + value + case ALUOpSub: + return regA - value + case ALUOpMul: + return regA * value + case ALUOpDiv: + // Division by zero not permitted by NewVM and aluOpX checks + return regA / value + case ALUOpOr: + return regA | value + case ALUOpAnd: + return regA & value + case ALUOpShiftLeft: + return regA << value + case ALUOpShiftRight: + return regA >> value + case ALUOpMod: + // Modulus by zero not permitted by NewVM and aluOpX checks + return regA % value + case ALUOpXor: + return regA ^ value + default: + return regA + } +} + +func jumpIf(ins JumpIf, regA uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, ins.Val) +} + +func jumpIfX(ins JumpIfX, regA uint32, regX uint32) int { + return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, regX) +} + +func jumpIfCommon(cond JumpTest, skipTrue, skipFalse uint8, regA uint32, value uint32) int { + var ok bool + + switch cond { + case JumpEqual: + ok = regA == value + case JumpNotEqual: + ok = regA != value + case JumpGreaterThan: + ok = regA > value + case JumpLessThan: + ok = regA < value + case JumpGreaterOrEqual: + ok = regA >= value + case JumpLessOrEqual: + ok = regA <= value + case JumpBitsSet: + ok = (regA & value) != 0 + case JumpBitsNotSet: + ok = (regA & value) == 0 + } + + if ok { + return int(skipTrue) + } + + return int(skipFalse) +} + +func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { + offset := int(ins.Off) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = ins.Val + case RegX: + regX = ins.Val + } + + return regA, regX +} + +func loadExtension(ins LoadExtension, in []byte) uint32 { + switch ins.Num { + case ExtLen: + return uint32(len(in)) + default: + panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) + } +} + +func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { + offset := int(ins.Off) + int(regX) + size := int(ins.Size) + + return loadCommon(in, offset, size) +} + +func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { + offset := int(ins.Off) + + // Size of LoadMemShift is always 1 byte + if !inBounds(len(in), offset, 1) { + return 0, false + } + + // Mask off high 4 bits and multiply low 4 bits by 4 + return uint32(in[offset]&0x0f) * 4, true +} + +func inBounds(inLen int, offset int, size int) bool { + return offset+size <= inLen +} + +func loadCommon(in []byte, offset int, size int) (uint32, bool) { + if !inBounds(len(in), offset, size) { + return 0, false + } + + switch size { + case 1: + return uint32(in[offset]), true + case 2: + return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true + case 4: + return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true + default: + panic(fmt.Sprintf("invalid load size: %d", size)) + } +} + +func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { + switch ins.Dst { + case RegA: + regA = regScratch[ins.N] + case RegX: + regX = regScratch[ins.N] + } + + return regA, regX +} + +func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { + switch ins.Src { + case RegA: + regScratch[ins.N] = regA + case RegX: + regScratch[ins.N] = regX + } + + return regScratch +} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go new file mode 100644 index 0000000..cea712f --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/const.go @@ -0,0 +1,223 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). +package iana // import "golang.org/x/net/internal/iana" + +// Differentiated Services Field Codepoints (DSCP), Updated: 2018-05-04 +const ( + DiffServCS0 = 0x00 // CS0 + DiffServCS1 = 0x20 // CS1 + DiffServCS2 = 0x40 // CS2 + DiffServCS3 = 0x60 // CS3 + DiffServCS4 = 0x80 // CS4 + DiffServCS5 = 0xa0 // CS5 + DiffServCS6 = 0xc0 // CS6 + DiffServCS7 = 0xe0 // CS7 + DiffServAF11 = 0x28 // AF11 + DiffServAF12 = 0x30 // AF12 + DiffServAF13 = 0x38 // AF13 + DiffServAF21 = 0x48 // AF21 + DiffServAF22 = 0x50 // AF22 + DiffServAF23 = 0x58 // AF23 + DiffServAF31 = 0x68 // AF31 + DiffServAF32 = 0x70 // AF32 + DiffServAF33 = 0x78 // AF33 + DiffServAF41 = 0x88 // AF41 + DiffServAF42 = 0x90 // AF42 + DiffServAF43 = 0x98 // AF43 + DiffServEF = 0xb8 // EF + DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT + NotECNTransport = 0x00 // Not-ECT (Not ECN-Capable Transport) + ECNTransport1 = 0x01 // ECT(1) (ECN-Capable Transport(1)) + ECNTransport0 = 0x02 // ECT(0) (ECN-Capable Transport(0)) + CongestionExperienced = 0x03 // CE (Congestion Experienced) +) + +// Protocol Numbers, Updated: 2017-10-13 +const ( + ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number + ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option + ProtocolICMP = 1 // Internet Control Message + ProtocolIGMP = 2 // Internet Group Management + ProtocolGGP = 3 // Gateway-to-Gateway + ProtocolIPv4 = 4 // IPv4 encapsulation + ProtocolST = 5 // Stream + ProtocolTCP = 6 // Transmission Control + ProtocolCBT = 7 // CBT + ProtocolEGP = 8 // Exterior Gateway Protocol + ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP) + ProtocolBBNRCCMON = 10 // BBN RCC Monitoring + ProtocolNVPII = 11 // Network Voice Protocol + ProtocolPUP = 12 // PUP + ProtocolEMCON = 14 // EMCON + ProtocolXNET = 15 // Cross Net Debugger + ProtocolCHAOS = 16 // Chaos + ProtocolUDP = 17 // User Datagram + ProtocolMUX = 18 // Multiplexing + ProtocolDCNMEAS = 19 // DCN Measurement Subsystems + ProtocolHMP = 20 // Host Monitoring + ProtocolPRM = 21 // Packet Radio Measurement + ProtocolXNSIDP = 22 // XEROX NS IDP + ProtocolTRUNK1 = 23 // Trunk-1 + ProtocolTRUNK2 = 24 // Trunk-2 + ProtocolLEAF1 = 25 // Leaf-1 + ProtocolLEAF2 = 26 // Leaf-2 + ProtocolRDP = 27 // Reliable Data Protocol + ProtocolIRTP = 28 // Internet Reliable Transaction + ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4 + ProtocolNETBLT = 30 // Bulk Data Transfer Protocol + ProtocolMFENSP = 31 // MFE Network Services Protocol + ProtocolMERITINP = 32 // MERIT Internodal Protocol + ProtocolDCCP = 33 // Datagram Congestion Control Protocol + Protocol3PC = 34 // Third Party Connect Protocol + ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol + ProtocolXTP = 36 // XTP + ProtocolDDP = 37 // Datagram Delivery Protocol + ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto + ProtocolTPPP = 39 // TP++ Transport Protocol + ProtocolIL = 40 // IL Transport Protocol + ProtocolIPv6 = 41 // IPv6 encapsulation + ProtocolSDRP = 42 // Source Demand Routing Protocol + ProtocolIPv6Route = 43 // Routing Header for IPv6 + ProtocolIPv6Frag = 44 // Fragment Header for IPv6 + ProtocolIDRP = 45 // Inter-Domain Routing Protocol + ProtocolRSVP = 46 // Reservation Protocol + ProtocolGRE = 47 // Generic Routing Encapsulation + ProtocolDSR = 48 // Dynamic Source Routing Protocol + ProtocolBNA = 49 // BNA + ProtocolESP = 50 // Encap Security Payload + ProtocolAH = 51 // Authentication Header + ProtocolINLSP = 52 // Integrated Net Layer Security TUBA + ProtocolNARP = 54 // NBMA Address Resolution Protocol + ProtocolMOBILE = 55 // IP Mobility + ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management + ProtocolSKIP = 57 // SKIP + ProtocolIPv6ICMP = 58 // ICMP for IPv6 + ProtocolIPv6NoNxt = 59 // No Next Header for IPv6 + ProtocolIPv6Opts = 60 // Destination Options for IPv6 + ProtocolCFTP = 62 // CFTP + ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK + ProtocolKRYPTOLAN = 65 // Kryptolan + ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol + ProtocolIPPC = 67 // Internet Pluribus Packet Core + ProtocolSATMON = 69 // SATNET Monitoring + ProtocolVISA = 70 // VISA Protocol + ProtocolIPCV = 71 // Internet Packet Core Utility + ProtocolCPNX = 72 // Computer Protocol Network Executive + ProtocolCPHB = 73 // Computer Protocol Heart Beat + ProtocolWSN = 74 // Wang Span Network + ProtocolPVP = 75 // Packet Video Protocol + ProtocolBRSATMON = 76 // Backroom SATNET Monitoring + ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary + ProtocolWBMON = 78 // WIDEBAND Monitoring + ProtocolWBEXPAK = 79 // WIDEBAND EXPAK + ProtocolISOIP = 80 // ISO Internet Protocol + ProtocolVMTP = 81 // VMTP + ProtocolSECUREVMTP = 82 // SECURE-VMTP + ProtocolVINES = 83 // VINES + ProtocolTTP = 84 // Transaction Transport Protocol + ProtocolIPTM = 84 // Internet Protocol Traffic Manager + ProtocolNSFNETIGP = 85 // NSFNET-IGP + ProtocolDGP = 86 // Dissimilar Gateway Protocol + ProtocolTCF = 87 // TCF + ProtocolEIGRP = 88 // EIGRP + ProtocolOSPFIGP = 89 // OSPFIGP + ProtocolSpriteRPC = 90 // Sprite RPC Protocol + ProtocolLARP = 91 // Locus Address Resolution Protocol + ProtocolMTP = 92 // Multicast Transport Protocol + ProtocolAX25 = 93 // AX.25 Frames + ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol + ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro. + ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation + ProtocolENCAP = 98 // Encapsulation Header + ProtocolGMTP = 100 // GMTP + ProtocolIFMP = 101 // Ipsilon Flow Management Protocol + ProtocolPNNI = 102 // PNNI over IP + ProtocolPIM = 103 // Protocol Independent Multicast + ProtocolARIS = 104 // ARIS + ProtocolSCPS = 105 // SCPS + ProtocolQNX = 106 // QNX + ProtocolAN = 107 // Active Networks + ProtocolIPComp = 108 // IP Payload Compression Protocol + ProtocolSNP = 109 // Sitara Networks Protocol + ProtocolCompaqPeer = 110 // Compaq Peer Protocol + ProtocolIPXinIP = 111 // IPX in IP + ProtocolVRRP = 112 // Virtual Router Redundancy Protocol + ProtocolPGM = 113 // PGM Reliable Transport Protocol + ProtocolL2TP = 115 // Layer Two Tunneling Protocol + ProtocolDDX = 116 // D-II Data Exchange (DDX) + ProtocolIATP = 117 // Interactive Agent Transfer Protocol + ProtocolSTP = 118 // Schedule Transfer Protocol + ProtocolSRP = 119 // SpectraLink Radio Protocol + ProtocolUTI = 120 // UTI + ProtocolSMP = 121 // Simple Message Protocol + ProtocolPTP = 123 // Performance Transparency Protocol + ProtocolISIS = 124 // ISIS over IPv4 + ProtocolFIRE = 125 // FIRE + ProtocolCRTP = 126 // Combat Radio Transport Protocol + ProtocolCRUDP = 127 // Combat Radio User Datagram + ProtocolSSCOPMCE = 128 // SSCOPMCE + ProtocolIPLT = 129 // IPLT + ProtocolSPS = 130 // Secure Packet Shield + ProtocolPIPE = 131 // Private IP Encapsulation within IP + ProtocolSCTP = 132 // Stream Control Transmission Protocol + ProtocolFC = 133 // Fibre Channel + ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE + ProtocolMobilityHeader = 135 // Mobility Header + ProtocolUDPLite = 136 // UDPLite + ProtocolMPLSinIP = 137 // MPLS-in-IP + ProtocolMANET = 138 // MANET Protocols + ProtocolHIP = 139 // Host Identity Protocol + ProtocolShim6 = 140 // Shim6 Protocol + ProtocolWESP = 141 // Wrapped Encapsulating Security Payload + ProtocolROHC = 142 // Robust Header Compression + ProtocolReserved = 255 // Reserved +) + +// Address Family Numbers, Updated: 2018-04-02 +const ( + AddrFamilyIPv4 = 1 // IP (IP version 4) + AddrFamilyIPv6 = 2 // IP6 (IP version 6) + AddrFamilyNSAP = 3 // NSAP + AddrFamilyHDLC = 4 // HDLC (8-bit multidrop) + AddrFamilyBBN1822 = 5 // BBN 1822 + AddrFamily802 = 6 // 802 (includes all 802 media plus Ethernet "canonical format") + AddrFamilyE163 = 7 // E.163 + AddrFamilyE164 = 8 // E.164 (SMDS, Frame Relay, ATM) + AddrFamilyF69 = 9 // F.69 (Telex) + AddrFamilyX121 = 10 // X.121 (X.25, Frame Relay) + AddrFamilyIPX = 11 // IPX + AddrFamilyAppletalk = 12 // Appletalk + AddrFamilyDecnetIV = 13 // Decnet IV + AddrFamilyBanyanVines = 14 // Banyan Vines + AddrFamilyE164withSubaddress = 15 // E.164 with NSAP format subaddress + AddrFamilyDNS = 16 // DNS (Domain Name System) + AddrFamilyDistinguishedName = 17 // Distinguished Name + AddrFamilyASNumber = 18 // AS Number + AddrFamilyXTPoverIPv4 = 19 // XTP over IP version 4 + AddrFamilyXTPoverIPv6 = 20 // XTP over IP version 6 + AddrFamilyXTPnativemodeXTP = 21 // XTP native mode XTP + AddrFamilyFibreChannelWorldWidePortName = 22 // Fibre Channel World-Wide Port Name + AddrFamilyFibreChannelWorldWideNodeName = 23 // Fibre Channel World-Wide Node Name + AddrFamilyGWID = 24 // GWID + AddrFamilyL2VPN = 25 // AFI for L2VPN information + AddrFamilyMPLSTPSectionEndpointID = 26 // MPLS-TP Section Endpoint Identifier + AddrFamilyMPLSTPLSPEndpointID = 27 // MPLS-TP LSP Endpoint Identifier + AddrFamilyMPLSTPPseudowireEndpointID = 28 // MPLS-TP Pseudowire Endpoint Identifier + AddrFamilyMTIPv4 = 29 // MT IP: Multi-Topology IP version 4 + AddrFamilyMTIPv6 = 30 // MT IPv6: Multi-Topology IP version 6 + AddrFamilyEIGRPCommonServiceFamily = 16384 // EIGRP Common Service Family + AddrFamilyEIGRPIPv4ServiceFamily = 16385 // EIGRP IPv4 Service Family + AddrFamilyEIGRPIPv6ServiceFamily = 16386 // EIGRP IPv6 Service Family + AddrFamilyLISPCanonicalAddressFormat = 16387 // LISP Canonical Address Format (LCAF) + AddrFamilyBGPLS = 16388 // BGP-LS + AddrFamily48bitMAC = 16389 // 48-bit MAC + AddrFamily64bitMAC = 16390 // 64-bit MAC + AddrFamilyOUI = 16391 // OUI + AddrFamilyMACFinal24bits = 16392 // MAC/24 + AddrFamilyMACFinal40bits = 16393 // MAC/40 + AddrFamilyIPv6Initial64bits = 16394 // IPv6/64 + AddrFamilyRBridgePortID = 16395 // RBridge Port ID + AddrFamilyTRILLNickname = 16396 // TRILL Nickname +) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go new file mode 100644 index 0000000..2a7661c --- /dev/null +++ b/vendor/golang.org/x/net/internal/iana/gen.go @@ -0,0 +1,383 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates internet protocol constants and tables by +// reading IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "strconv" + "strings" +) + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml", + parseDSCPRegistry, + }, + { + "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", + parseProtocolNumbers, + }, + { + "https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml", + parseAddrFamilyNumbers, + }, +} + +func main() { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n") + fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url) + os.Exit(1) + } + if err := r.parse(&bb, resp.Body); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := ioutil.WriteFile("const.go", b, 0644); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func parseDSCPRegistry(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var dr dscpRegistry + if err := dec.Decode(&dr); err != nil { + return err + } + fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) + fmt.Fprintf(w, "const (\n") + for _, dr := range dr.escapeDSCP() { + fmt.Fprintf(w, "DiffServ%s = %#02x", dr.Name, dr.Value) + fmt.Fprintf(w, "// %s\n", dr.OrigName) + } + for _, er := range dr.escapeECN() { + fmt.Fprintf(w, "%s = %#02x", er.Descr, er.Value) + fmt.Fprintf(w, "// %s\n", er.OrigDescr) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type dscpRegistry struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Note string `xml:"note"` + Registries []struct { + Title string `xml:"title"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Name string `xml:"name"` + Space string `xml:"space"` + } `xml:"record"` + } `xml:"registry"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonDSCPRecord struct { + OrigName string + Name string + Value int +} + +func (drr *dscpRegistry) escapeDSCP() []canonDSCPRecord { + var drs []canonDSCPRecord + for _, preg := range drr.Registries { + if !strings.Contains(preg.Title, "Differentiated Services Field Codepoints") { + continue + } + for _, reg := range preg.Registries { + if !strings.Contains(reg.Title, "Pool 1 Codepoints") { + continue + } + drs = make([]canonDSCPRecord, len(reg.Records)) + sr := strings.NewReplacer( + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, dr := range reg.Records { + s := strings.TrimSpace(dr.Name) + drs[i].OrigName = s + drs[i].Name = sr.Replace(s) + n, err := strconv.ParseUint(dr.Space, 2, 8) + if err != nil { + continue + } + drs[i].Value = int(n) << 2 + } + } + } + return drs +} + +type canonECNRecord struct { + OrigDescr string + Descr string + Value int +} + +func (drr *dscpRegistry) escapeECN() []canonECNRecord { + var ers []canonECNRecord + for _, reg := range drr.Registries { + if !strings.Contains(reg.Title, "ECN Field") { + continue + } + ers = make([]canonECNRecord, len(reg.Records)) + sr := strings.NewReplacer( + "Capable", "", + "Not-ECT", "", + "ECT(1)", "", + "ECT(0)", "", + "CE", "", + "(", "", + ")", "", + "+", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, er := range reg.Records { + s := strings.TrimSpace(er.Descr) + ers[i].OrigDescr = s + ss := strings.Split(s, " ") + if len(ss) > 1 { + ers[i].Descr = strings.Join(ss[1:], " ") + } else { + ers[i].Descr = ss[0] + } + ers[i].Descr = sr.Replace(er.Descr) + n, err := strconv.ParseUint(er.Value, 2, 8) + if err != nil { + continue + } + ers[i].Value = int(n) + } + } + return ers +} + +func parseProtocolNumbers(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var pn protocolNumbers + if err := dec.Decode(&pn); err != nil { + return err + } + prs := pn.escape() + prs = append([]canonProtocolRecord{{ + Name: "IP", + Descr: "IPv4 encapsulation, pseudo protocol number", + Value: 0, + }}, prs...) + fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value) + s := pr.Descr + if s == "" { + s = pr.OrigName + } + fmt.Fprintf(w, "// %s\n", s) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type protocolNumbers struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + RegTitle string `xml:"registry>title"` + Note string `xml:"registry>note"` + Records []struct { + Value string `xml:"value"` + Name string `xml:"name"` + Descr string `xml:"description"` + } `xml:"registry>record"` +} + +type canonProtocolRecord struct { + OrigName string + Name string + Descr string + Value int +} + +func (pn *protocolNumbers) escape() []canonProtocolRecord { + prs := make([]canonProtocolRecord, len(pn.Records)) + sr := strings.NewReplacer( + "-in-", "in", + "-within-", "within", + "-over-", "over", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range pn.Records { + if strings.Contains(pr.Name, "Deprecated") || + strings.Contains(pr.Name, "deprecated") { + continue + } + prs[i].OrigName = pr.Name + s := strings.TrimSpace(pr.Name) + switch pr.Name { + case "ISIS over IPv4": + prs[i].Name = "ISIS" + case "manet": + prs[i].Name = "MANET" + default: + prs[i].Name = sr.Replace(s) + } + ss := strings.Split(pr.Descr, "\n") + for i := range ss { + ss[i] = strings.TrimSpace(ss[i]) + } + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} + +func parseAddrFamilyNumbers(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var afn addrFamilylNumbers + if err := dec.Decode(&afn); err != nil { + return err + } + afrs := afn.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", afn.Title, afn.Updated) + fmt.Fprintf(w, "const (\n") + for _, afr := range afrs { + if afr.Name == "" { + continue + } + fmt.Fprintf(w, "AddrFamily%s = %d", afr.Name, afr.Value) + fmt.Fprintf(w, "// %s\n", afr.Descr) + } + fmt.Fprintf(w, ")\n") + return nil +} + +type addrFamilylNumbers struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + RegTitle string `xml:"registry>title"` + Note string `xml:"registry>note"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"registry>record"` +} + +type canonAddrFamilyRecord struct { + Name string + Descr string + Value int +} + +func (afn *addrFamilylNumbers) escape() []canonAddrFamilyRecord { + afrs := make([]canonAddrFamilyRecord, len(afn.Records)) + sr := strings.NewReplacer( + "IP version 4", "IPv4", + "IP version 6", "IPv6", + "Identifier", "ID", + "-", "", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, afr := range afn.Records { + if strings.Contains(afr.Descr, "Unassigned") || + strings.Contains(afr.Descr, "Reserved") { + continue + } + afrs[i].Descr = afr.Descr + s := strings.TrimSpace(afr.Descr) + switch s { + case "IP (IP version 4)": + afrs[i].Name = "IPv4" + case "IP6 (IP version 6)": + afrs[i].Name = "IPv6" + case "AFI for L2VPN information": + afrs[i].Name = "L2VPN" + case "E.164 with NSAP format subaddress": + afrs[i].Name = "E164withSubaddress" + case "MT IP: Multi-Topology IP version 4": + afrs[i].Name = "MTIPv4" + case "MAC/24": + afrs[i].Name = "MACFinal24bits" + case "MAC/40": + afrs[i].Name = "MACFinal40bits" + case "IPv6/64": + afrs[i].Name = "IPv6Initial64bits" + default: + n := strings.Index(s, "(") + if n > 0 { + s = s[:n] + } + n = strings.Index(s, ":") + if n > 0 { + s = s[:n] + } + afrs[i].Name = sr.Replace(s) + } + afrs[i].Value, _ = strconv.Atoi(afr.Value) + } + return afrs +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go new file mode 100644 index 0000000..0a73e27 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr.go @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +func (h *cmsghdr) len() int { return int(h.Len) } +func (h *cmsghdr) lvl() int { return int(h.Level) } +func (h *cmsghdr) typ() int { return int(h.Type) } diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go new file mode 100644 index 0000000..14dbb3a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go @@ -0,0 +1,13 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go new file mode 100644 index 0000000..bac6681 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go new file mode 100644 index 0000000..27be0ef --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build linux + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint64(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go new file mode 100644 index 0000000..7dedd43 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +func (h *cmsghdr) set(l, lvl, typ int) { + h.Len = uint32(l) + h.Level = int32(lvl) + h.Type = int32(typ) +} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go new file mode 100644 index 0000000..e581011 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go @@ -0,0 +1,17 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type cmsghdr struct{} + +const sizeofCmsghdr = 0 + +func (h *cmsghdr) len() int { return 0 } +func (h *cmsghdr) lvl() int { return 0 } +func (h *cmsghdr) typ() int { return 0 } + +func (h *cmsghdr) set(l, lvl, typ int) {} diff --git a/vendor/golang.org/x/net/internal/socket/defs_aix.go b/vendor/golang.org/x/net/internal/socket/defs_aix.go new file mode 100644 index 0000000..ae1b21c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_aix.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_darwin.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go new file mode 100644 index 0000000..85bb745 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_linux.go @@ -0,0 +1,40 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include +#include + +#define _GNU_SOURCE +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go new file mode 100644 index 0000000..5bfdd46 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go @@ -0,0 +1,38 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type mmsghdr C.struct_mmsghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go new file mode 100644 index 0000000..b780bc6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/defs_solaris.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package socket + +/* +#include + +#include +*/ +import "C" + +type iovec C.struct_iovec + +type msghdr C.struct_msghdr + +type cmsghdr C.struct_cmsghdr + +type sockaddrInet C.struct_sockaddr_in + +type sockaddrInet6 C.struct_sockaddr_in6 + +const ( + sizeofIovec = C.sizeof_struct_iovec + sizeofMsghdr = C.sizeof_struct_msghdr + sizeofCmsghdr = C.sizeof_struct_cmsghdr + + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 +) diff --git a/vendor/golang.org/x/net/internal/socket/empty.s b/vendor/golang.org/x/net/internal/socket/empty.s new file mode 100644 index 0000000..bff0231 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/empty.s @@ -0,0 +1,7 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12 + +// This exists solely so we can linkname in symbols from syscall. diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go new file mode 100644 index 0000000..f14872d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_unix.go @@ -0,0 +1,31 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +import "syscall" + +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.EAGAIN: + return errEAGAIN + case syscall.EINVAL: + return errEINVAL + case syscall.ENOENT: + return errENOENT + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go new file mode 100644 index 0000000..6a6379a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/error_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import "syscall" + +var ( + errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING + errEINVAL error = syscall.EINVAL +) + +// errnoErr returns common boxed Errno values, to prevent allocations +// at runtime. +func errnoErr(errno syscall.Errno) error { + switch errno { + case 0: + return nil + case syscall.ERROR_IO_PENDING: + return errERROR_IO_PENDING + case syscall.EINVAL: + return errEINVAL + } + return errno +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go new file mode 100644 index 0000000..05d6082 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go new file mode 100644 index 0000000..dfeda75 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build aix darwin dragonfly freebsd linux netbsd openbsd + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*byte)(unsafe.Pointer(&b[0])) + v.Len = uint64(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go new file mode 100644 index 0000000..8d17a40 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go @@ -0,0 +1,19 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +import "unsafe" + +func (v *iovec) set(b []byte) { + l := len(b) + if l == 0 { + return + } + v.Base = (*int8)(unsafe.Pointer(&b[0])) + v.Len = uint64(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go new file mode 100644 index 0000000..a746e90 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/iovec_stub.go @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type iovec struct{} + +func (v *iovec) set(b []byte) {} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go new file mode 100644 index 0000000..1a7f279 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go @@ -0,0 +1,21 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!linux,!netbsd + +package socket + +import "net" + +type mmsghdr struct{} + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go new file mode 100644 index 0000000..f110068 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix linux netbsd + +package socket + +import "net" + +type mmsghdrs []mmsghdr + +func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { + for i := range hs { + vs := make([]iovec, len(ms[i].Buffers)) + var sa []byte + if parseFn != nil { + sa = make([]byte, sizeofSockaddrInet6) + } + if marshalFn != nil { + sa = marshalFn(ms[i].Addr) + } + hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa) + } + return nil +} + +func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { + for i := range hs { + ms[i].N = int(hs[i].Len) + ms[i].NN = hs[i].Hdr.controllen() + ms[i].Flags = hs[i].Hdr.flags() + if parseFn != nil { + var err error + ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint) + if err != nil { + return err + } + } + } + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go new file mode 100644 index 0000000..77f44c1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go @@ -0,0 +1,39 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.Control = (*byte)(unsafe.Pointer(&oob[0])) + h.Controllen = uint32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go new file mode 100644 index 0000000..c5562dd --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd + +package socket + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = int32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go new file mode 100644 index 0000000..5a38798 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + h.setIov(vs) + if len(oob) > 0 { + h.setControl(oob) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) name() []byte { + if h.Name != nil && h.Namelen > 0 { + return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] + } + return nil +} + +func (h *msghdr) controllen() int { + return int(h.Controllen) +} + +func (h *msghdr) flags() int { + return int(h.Flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go new file mode 100644 index 0000000..a7a5987 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm mips mipsle 386 +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint32(l) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint32(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go new file mode 100644 index 0000000..e731833 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x +// +build linux + +package socket + +import "unsafe" + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint64(l) +} + +func (h *msghdr) setControl(b []byte) { + h.Control = (*byte)(unsafe.Pointer(&b[0])) + h.Controllen = uint64(len(b)) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go new file mode 100644 index 0000000..71a69e2 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +func (h *msghdr) setIov(vs []iovec) { + l := len(vs) + if l == 0 { + return + } + h.Iov = &vs[0] + h.Iovlen = uint32(l) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go new file mode 100644 index 0000000..6465b20 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64 +// +build solaris + +package socket + +import "unsafe" + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { + for i := range vs { + vs[i].set(bs[i]) + } + if len(vs) > 0 { + h.Iov = &vs[0] + h.Iovlen = int32(len(vs)) + } + if len(oob) > 0 { + h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) + h.Accrightslen = int32(len(oob)) + } + if sa != nil { + h.Name = (*byte)(unsafe.Pointer(&sa[0])) + h.Namelen = uint32(len(sa)) + } +} + +func (h *msghdr) controllen() int { + return int(h.Accrightslen) +} + +func (h *msghdr) flags() int { + return int(NativeEndian.Uint32(h.Pad_cgo_2[:])) +} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go new file mode 100644 index 0000000..873490a --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go @@ -0,0 +1,14 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package socket + +type msghdr struct{} + +func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {} +func (h *msghdr) name() []byte { return nil } +func (h *msghdr) controllen() int { return 0 } +func (h *msghdr) flags() int { return 0 } diff --git a/vendor/golang.org/x/net/internal/socket/norace.go b/vendor/golang.org/x/net/internal/socket/norace.go new file mode 100644 index 0000000..9519ffb --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/norace.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !race + +package socket + +func (m *Message) raceRead() { +} +func (m *Message) raceWrite() { +} diff --git a/vendor/golang.org/x/net/internal/socket/race.go b/vendor/golang.org/x/net/internal/socket/race.go new file mode 100644 index 0000000..df60c62 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/race.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build race + +package socket + +import ( + "runtime" + "unsafe" +) + +// This package reads and writes the Message buffers using a +// direct system call, which the race detector can't see. +// These functions tell the race detector what is going on during the syscall. + +func (m *Message) raceRead() { + for _, b := range m.Buffers { + if len(b) > 0 { + runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) + } + } + if b := m.OOB; len(b) > 0 { + runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) + } +} +func (m *Message) raceWrite() { + for _, b := range m.Buffers { + if len(b) > 0 { + runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) + } + } + if b := m.OOB; len(b) > 0 { + runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) + } +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go new file mode 100644 index 0000000..b07b890 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn.go @@ -0,0 +1,64 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "errors" + "net" + "os" + "syscall" +) + +// A Conn represents a raw connection. +type Conn struct { + network string + c syscall.RawConn +} + +// NewConn returns a new raw connection. +func NewConn(c net.Conn) (*Conn, error) { + var err error + var cc Conn + switch c := c.(type) { + case *net.TCPConn: + cc.network = "tcp" + cc.c, err = c.SyscallConn() + case *net.UDPConn: + cc.network = "udp" + cc.c, err = c.SyscallConn() + case *net.IPConn: + cc.network = "ip" + cc.c, err = c.SyscallConn() + default: + return nil, errors.New("unknown connection type") + } + if err != nil { + return nil, err + } + return &cc, nil +} + +func (o *Option) get(c *Conn, b []byte) (int, error) { + var operr error + var n int + fn := func(s uintptr) { + n, operr = getsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return 0, err + } + return n, os.NewSyscallError("getsockopt", operr) +} + +func (o *Option) set(c *Conn, b []byte) error { + var operr error + fn := func(s uintptr) { + operr = setsockopt(s, o.Level, o.Name, b) + } + if err := c.c.Control(fn); err != nil { + return err + } + return os.NewSyscallError("setsockopt", operr) +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go new file mode 100644 index 0000000..d01fc4c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go @@ -0,0 +1,79 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package socket + +import ( + "net" + "os" + "syscall" +) + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + for i := range ms { + ms[i].raceWrite() + } + hs := make(mmsghdrs, len(ms)) + var parseFn func([]byte, string) (net.Addr, error) + if c.network != "tcp" { + parseFn = parseInetAddr + } + if err := hs.pack(ms, parseFn, nil); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("recvmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { + return n, err + } + return n, nil +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + for i := range ms { + ms[i].raceRead() + } + hs := make(mmsghdrs, len(ms)) + var marshalFn func(net.Addr) []byte + if c.network != "tcp" { + marshalFn = marshalInetAddr + } + if err := hs.pack(ms, nil, marshalFn); err != nil { + return 0, err + } + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmmsg(s, hs, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return n, err + } + if operr != nil { + return n, os.NewSyscallError("sendmmsg", operr) + } + if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { + return n, err + } + return n, nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go new file mode 100644 index 0000000..d5ae3f8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go @@ -0,0 +1,78 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "os" + "syscall" +) + +func (c *Conn) recvMsg(m *Message, flags int) error { + m.raceWrite() + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if c.network != "tcp" { + sa = make([]byte, sizeofSockaddrInet6) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = recvmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Read(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("recvmsg", operr) + } + if c.network != "tcp" { + var err error + m.Addr, err = parseInetAddr(sa[:], c.network) + if err != nil { + return err + } + } + m.N = n + m.NN = h.controllen() + m.Flags = h.flags() + return nil +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + m.raceRead() + var h msghdr + vs := make([]iovec, len(m.Buffers)) + var sa []byte + if m.Addr != nil { + sa = marshalInetAddr(m.Addr) + } + h.pack(vs, m.Buffers, m.OOB, sa) + var operr error + var n int + fn := func(s uintptr) bool { + n, operr = sendmsg(s, &h, flags) + if operr == syscall.EAGAIN { + return false + } + return true + } + if err := c.c.Write(fn); err != nil { + return err + } + if operr != nil { + return os.NewSyscallError("sendmsg", operr) + } + m.N = n + m.NN = len(m.OOB) + return nil +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go new file mode 100644 index 0000000..fe5bb94 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package socket + +func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { + return 0, errNotImplemented +} + +func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go new file mode 100644 index 0000000..b8cea6f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +func (c *Conn) recvMsg(m *Message, flags int) error { + return errNotImplemented +} + +func (c *Conn) sendMsg(m *Message, flags int) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go new file mode 100644 index 0000000..23571b8 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/socket.go @@ -0,0 +1,288 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package socket provides a portable interface for socket system +// calls. +package socket // import "golang.org/x/net/internal/socket" + +import ( + "errors" + "net" + "runtime" + "unsafe" +) + +var errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) + +// An Option represents a sticky socket option. +type Option struct { + Level int // level + Name int // name; must be equal or greater than 1 + Len int // length of value in bytes; must be equal or greater than 1 +} + +// Get reads a value for the option from the kernel. +// It returns the number of bytes written into b. +func (o *Option) Get(c *Conn, b []byte) (int, error) { + if o.Name < 1 || o.Len < 1 { + return 0, errors.New("invalid option") + } + if len(b) < o.Len { + return 0, errors.New("short buffer") + } + return o.get(c, b) +} + +// GetInt returns an integer value for the option. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) GetInt(c *Conn) (int, error) { + if o.Len != 1 && o.Len != 4 { + return 0, errors.New("invalid option") + } + var b []byte + var bb [4]byte + if o.Len == 1 { + b = bb[:1] + } else { + b = bb[:4] + } + n, err := o.get(c, b) + if err != nil { + return 0, err + } + if n != o.Len { + return 0, errors.New("invalid option length") + } + if o.Len == 1 { + return int(b[0]), nil + } + return int(NativeEndian.Uint32(b[:4])), nil +} + +// Set writes the option and value to the kernel. +func (o *Option) Set(c *Conn, b []byte) error { + if o.Name < 1 || o.Len < 1 { + return errors.New("invalid option") + } + if len(b) < o.Len { + return errors.New("short buffer") + } + return o.set(c, b) +} + +// SetInt writes the option and value to the kernel. +// +// The Len field of Option must be either 1 or 4. +func (o *Option) SetInt(c *Conn, v int) error { + if o.Len != 1 && o.Len != 4 { + return errors.New("invalid option") + } + var b []byte + if o.Len == 1 { + b = []byte{byte(v)} + } else { + var bb [4]byte + NativeEndian.PutUint32(bb[:o.Len], uint32(v)) + b = bb[:4] + } + return o.set(c, b) +} + +func controlHeaderLen() int { + return roundup(sizeofCmsghdr) +} + +func controlMessageLen(dataLen int) int { + return roundup(sizeofCmsghdr) + dataLen +} + +// ControlMessageSpace returns the whole length of control message. +func ControlMessageSpace(dataLen int) int { + return roundup(sizeofCmsghdr) + roundup(dataLen) +} + +// A ControlMessage represents the head message in a stream of control +// messages. +// +// A control message comprises of a header, data and a few padding +// fields to conform to the interface to the kernel. +// +// See RFC 3542 for further information. +type ControlMessage []byte + +// Data returns the data field of the control message at the head on +// m. +func (m ControlMessage) Data(dataLen int) []byte { + l := controlHeaderLen() + if len(m) < l || len(m) < l+dataLen { + return nil + } + return m[l : l+dataLen] +} + +// Next returns the control message at the next on m. +// +// Next works only for standard control messages. +func (m ControlMessage) Next(dataLen int) ControlMessage { + l := ControlMessageSpace(dataLen) + if len(m) < l { + return nil + } + return m[l:] +} + +// MarshalHeader marshals the header fields of the control message at +// the head on m. +func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error { + if len(m) < controlHeaderLen() { + return errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(dataLen), lvl, typ) + return nil +} + +// ParseHeader parses and returns the header fields of the control +// message at the head on m. +func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) { + l := controlHeaderLen() + if len(m) < l { + return 0, 0, 0, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil +} + +// Marshal marshals the control message at the head on m, and returns +// the next control message. +func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) { + l := len(data) + if len(m) < ControlMessageSpace(l) { + return nil, errors.New("short message") + } + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + h.set(controlMessageLen(l), lvl, typ) + if l > 0 { + copy(m.Data(l), data) + } + return m.Next(l), nil +} + +// Parse parses m as a single or multiple control messages. +// +// Parse works for both standard and compatible messages. +func (m ControlMessage) Parse() ([]ControlMessage, error) { + var ms []ControlMessage + for len(m) >= controlHeaderLen() { + h := (*cmsghdr)(unsafe.Pointer(&m[0])) + l := h.len() + if l <= 0 { + return nil, errors.New("invalid header length") + } + if uint64(l) < uint64(controlHeaderLen()) { + return nil, errors.New("invalid message length") + } + if uint64(l) > uint64(len(m)) { + return nil, errors.New("short buffer") + } + // On message reception: + // + // |<- ControlMessageSpace --------------->| + // |<- controlMessageLen ---------->| | + // |<- controlHeaderLen ->| | | + // +---------------+------+---------+------+ + // | Header | PadH | Data | PadD | + // +---------------+------+---------+------+ + // + // On compatible message reception: + // + // | ... |<- controlMessageLen ----------->| + // | ... |<- controlHeaderLen ->| | + // +-----+---------------+------+----------+ + // | ... | Header | PadH | Data | + // +-----+---------------+------+----------+ + ms = append(ms, ControlMessage(m[:l])) + ll := l - controlHeaderLen() + if len(m) >= ControlMessageSpace(ll) { + m = m[ControlMessageSpace(ll):] + } else { + m = m[controlMessageLen(ll):] + } + } + return ms, nil +} + +// NewControlMessage returns a new stream of control messages. +func NewControlMessage(dataLen []int) ControlMessage { + var l int + for i := range dataLen { + l += ControlMessageSpace(dataLen[i]) + } + return make([]byte, l) +} + +// A Message represents an IO message. +type Message struct { + // When writing, the Buffers field must contain at least one + // byte to write. + // When reading, the Buffers field will always contain a byte + // to read. + Buffers [][]byte + + // OOB contains protocol-specific control or miscellaneous + // ancillary data known as out-of-band data. + OOB []byte + + // Addr specifies a destination address when writing. + // It can be nil when the underlying protocol of the raw + // connection uses connection-oriented communication. + // After a successful read, it may contain the source address + // on the received packet. + Addr net.Addr + + N int // # of bytes read or written from/to Buffers + NN int // # of bytes read or written from/to OOB + Flags int // protocol-specific information on the received message +} + +// RecvMsg wraps recvmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +func (c *Conn) RecvMsg(m *Message, flags int) error { + return c.recvMsg(m, flags) +} + +// SendMsg wraps sendmsg system call. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +func (c *Conn) SendMsg(m *Message, flags int) error { + return c.sendMsg(m, flags) +} + +// RecvMsgs wraps recvmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// Only Linux supports this. +func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) { + return c.recvMsgs(ms, flags) +} + +// SendMsgs wraps sendmmsg system call. +// +// It returns the number of processed messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// Only Linux supports this. +func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) { + return c.sendMsgs(ms, flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go new file mode 100644 index 0000000..ee492ba --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "encoding/binary" + "unsafe" +) + +var ( + // NativeEndian is the machine native endian implementation of + // ByteOrder. + NativeEndian binary.ByteOrder + + kernelAlign int +) + +func init() { + i := uint32(1) + b := (*[4]byte)(unsafe.Pointer(&i)) + if b[0] == 1 { + NativeEndian = binary.LittleEndian + } else { + NativeEndian = binary.BigEndian + } + kernelAlign = probeProtocolStack() +} + +func roundup(l int) int { + return (l + kernelAlign - 1) &^ (kernelAlign - 1) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go new file mode 100644 index 0000000..d432835 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsd.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd openbsd + +package socket + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go new file mode 100644 index 0000000..b4f41b5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go @@ -0,0 +1,23 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix freebsd netbsd openbsd + +package socket + +import ( + "runtime" + "unsafe" +) + +func probeProtocolStack() int { + if (runtime.GOOS == "netbsd" || runtime.GOOS == "openbsd") && runtime.GOARCH == "arm" { + return 8 + } + if runtime.GOOS == "aix" { + return 1 + } + var p uintptr + return int(unsafe.Sizeof(p)) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go new file mode 100644 index 0000000..43797d6 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go @@ -0,0 +1,17 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package socket + +import "golang.org/x/sys/unix" + +const ( + sysAF_UNSPEC = unix.AF_UNSPEC + sysAF_INET = unix.AF_INET + sysAF_INET6 = unix.AF_INET6 + + sysSOCK_RAW = unix.SOCK_RAW +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go new file mode 100644 index 0000000..b17d223 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_darwin.go @@ -0,0 +1,7 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go new file mode 100644 index 0000000..ed0448f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go @@ -0,0 +1,32 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "sync" + "syscall" + "unsafe" +) + +// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// First __DragonFly_version after September 2019 ABI changes +// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html +const _dragonflyABIChangeVersion = 500705 + +func probeProtocolStack() int { + osreldateOnce.Do(func() { osreldate, _ = syscall.SysctlUint32("kern.osreldate") }) + var p uintptr + if int(unsafe.Sizeof(p)) == 8 && osreldate >= _dragonflyABIChangeVersion { + return int(unsafe.Sizeof(p)) + } + // 64-bit Dragonfly before the September 2019 ABI changes still requires + // 32-bit aligned access to network subsystem. + return 4 +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go new file mode 100644 index 0000000..02d2b3c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go @@ -0,0 +1,33 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.12 + +package socket + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linkname.go b/vendor/golang.org/x/net/internal/socket/sys_linkname.go new file mode 100644 index 0000000..61c3f38 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linkname.go @@ -0,0 +1,42 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix go1.12,darwin + +package socket + +import ( + "syscall" + "unsafe" +) + +//go:linkname syscall_getsockopt syscall.getsockopt +func syscall_getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *uint32) error + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + err := syscall_getsockopt(int(s), level, name, unsafe.Pointer(&b[0]), &l) + return int(l), err +} + +//go:linkname syscall_setsockopt syscall.setsockopt +func syscall_setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error + +func setsockopt(s uintptr, level, name int, b []byte) error { + return syscall_setsockopt(int(s), level, name, unsafe.Pointer(&b[0]), uintptr(len(b))) +} + +//go:linkname syscall_recvmsg syscall.recvmsg +func syscall_recvmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return syscall_recvmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) +} + +//go:linkname syscall_sendmsg syscall.sendmsg +func syscall_sendmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return syscall_sendmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go new file mode 100644 index 0000000..1559521 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux.go @@ -0,0 +1,27 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!s390x,!386 + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go new file mode 100644 index 0000000..235b2cc --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go @@ -0,0 +1,55 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 4 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s new file mode 100644 index 0000000..93e7d75 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s @@ -0,0 +1,11 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-36 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go new file mode 100644 index 0000000..9decee2 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x12b + sysSENDMMSG = 0x133 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go new file mode 100644 index 0000000..d753b43 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x16d + sysSENDMMSG = 0x176 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go new file mode 100644 index 0000000..b670894 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go new file mode 100644 index 0000000..9c0d740 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go new file mode 100644 index 0000000..071a4ab --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go new file mode 100644 index 0000000..071a4ab --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x14ae + sysSENDMMSG = 0x14b6 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go new file mode 100644 index 0000000..9c0d740 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x10ef + sysSENDMMSG = 0x10f7 +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go new file mode 100644 index 0000000..21c1e3f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go new file mode 100644 index 0000000..21c1e3f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go @@ -0,0 +1,10 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +const ( + sysRECVMMSG = 0x157 + sysSENDMMSG = 0x15d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go new file mode 100644 index 0000000..64f69f1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go @@ -0,0 +1,12 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64 + +package socket + +const ( + sysRECVMMSG = 0xf3 + sysSENDMMSG = 0x10d +) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go new file mode 100644 index 0000000..327979e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go @@ -0,0 +1,55 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +func probeProtocolStack() int { return 8 } + +const ( + sysSETSOCKOPT = 0xe + sysGETSOCKOPT = 0xf + sysSENDMSG = 0x10 + sysRECVMSG = 0x11 + sysRECVMMSG = 0x13 + sysSENDMMSG = 0x14 +) + +func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) +func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s new file mode 100644 index 0000000..06d7562 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s @@ -0,0 +1,11 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·socketcall(SB),NOSPLIT,$0-72 + JMP syscall·socketcall(SB) + +TEXT ·rawsocketcall(SB),NOSPLIT,$0-72 + JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go new file mode 100644 index 0000000..431851c --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go @@ -0,0 +1,25 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" +) + +const ( + sysRECVMMSG = 0x1db + sysSENDMMSG = 0x1dc +) + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go new file mode 100644 index 0000000..22eae80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_posix.go @@ -0,0 +1,183 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package socket + +import ( + "encoding/binary" + "errors" + "net" + "runtime" + "strconv" + "sync" + "time" +) + +func marshalInetAddr(a net.Addr) []byte { + switch a := a.(type) { + case *net.TCPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.UDPAddr: + return marshalSockaddr(a.IP, a.Port, a.Zone) + case *net.IPAddr: + return marshalSockaddr(a.IP, 0, a.Zone) + default: + return nil + } +} + +func marshalSockaddr(ip net.IP, port int, zone string) []byte { + if ip4 := ip.To4(); ip4 != nil { + b := make([]byte, sizeofSockaddrInet) + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) + default: + b[0] = sizeofSockaddrInet + b[1] = sysAF_INET + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[4:8], ip4) + return b + } + if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { + b := make([]byte, sizeofSockaddrInet6) + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) + default: + b[0] = sizeofSockaddrInet6 + b[1] = sysAF_INET6 + } + binary.BigEndian.PutUint16(b[2:4], uint16(port)) + copy(b[8:24], ip6) + if zone != "" { + NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone))) + } + return b + } + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + if len(b) < 2 { + return nil, errors.New("invalid address") + } + var af int + switch runtime.GOOS { + case "android", "illumos", "linux", "solaris", "windows": + af = int(NativeEndian.Uint16(b[:2])) + default: + af = int(b[1]) + } + var ip net.IP + var zone string + if af == sysAF_INET { + if len(b) < sizeofSockaddrInet { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv4len) + copy(ip, b[4:8]) + } + if af == sysAF_INET6 { + if len(b) < sizeofSockaddrInet6 { + return nil, errors.New("short address") + } + ip = make(net.IP, net.IPv6len) + copy(ip, b[8:24]) + if id := int(NativeEndian.Uint32(b[24:28])); id > 0 { + zone = zoneCache.name(id) + } + } + switch network { + case "tcp", "tcp4", "tcp6": + return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + case "udp", "udp4", "udp6": + return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil + default: + return &net.IPAddr{IP: ip, Zone: zone}, nil + } +} + +// An ipv6ZoneCache represents a cache holding partial network +// interface information. It is used for reducing the cost of IPv6 +// addressing scope zone resolution. +// +// Multiple names sharing the index are managed by first-come +// first-served basis for consistency. +type ipv6ZoneCache struct { + sync.RWMutex // guard the following + lastFetched time.Time // last time routing information was fetched + toIndex map[string]int // interface name to its index + toName map[int]string // interface index to its name +} + +var zoneCache = ipv6ZoneCache{ + toIndex: make(map[string]int), + toName: make(map[int]string), +} + +// update refreshes the network interface information if the cache was last +// updated more than 1 minute ago, or if force is set. It returns whether the +// cache was updated. +func (zc *ipv6ZoneCache) update(ift []net.Interface, force bool) (updated bool) { + zc.Lock() + defer zc.Unlock() + now := time.Now() + if !force && zc.lastFetched.After(now.Add(-60*time.Second)) { + return false + } + zc.lastFetched = now + if len(ift) == 0 { + var err error + if ift, err = net.Interfaces(); err != nil { + return false + } + } + zc.toIndex = make(map[string]int, len(ift)) + zc.toName = make(map[int]string, len(ift)) + for _, ifi := range ift { + zc.toIndex[ifi.Name] = ifi.Index + if _, ok := zc.toName[ifi.Index]; !ok { + zc.toName[ifi.Index] = ifi.Name + } + } + return true +} + +func (zc *ipv6ZoneCache) name(zone int) string { + updated := zoneCache.update(nil, false) + zoneCache.RLock() + name, ok := zoneCache.toName[zone] + zoneCache.RUnlock() + if !ok && !updated { + zoneCache.update(nil, true) + zoneCache.RLock() + name, ok = zoneCache.toName[zone] + zoneCache.RUnlock() + } + if !ok { // last resort + name = strconv.Itoa(zone) + } + return name +} + +func (zc *ipv6ZoneCache) index(zone string) int { + updated := zoneCache.update(nil, false) + zoneCache.RLock() + index, ok := zoneCache.toIndex[zone] + zoneCache.RUnlock() + if !ok && !updated { + zoneCache.update(nil, true) + zoneCache.RLock() + index, ok = zoneCache.toIndex[zone] + zoneCache.RUnlock() + } + if !ok { // last resort + index, _ = strconv.Atoi(zone) + } + return index +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go new file mode 100644 index 0000000..66b5547 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris.go @@ -0,0 +1,70 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "runtime" + "syscall" + "unsafe" +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" + +//go:linkname procGetsockopt libc___xnet_getsockopt +//go:linkname procSetsockopt libc_setsockopt +//go:linkname procRecvmsg libc___xnet_recvmsg +//go:linkname procSendmsg libc___xnet_sendmsg + +var ( + procGetsockopt uintptr + procSetsockopt uintptr + procRecvmsg uintptr + procSendmsg uintptr +) + +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) + return int(n), errnoErr(errno) +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s new file mode 100644 index 0000000..a18ac5e --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s @@ -0,0 +1,11 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·sysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·sysvicall6(SB) + +TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go new file mode 100644 index 0000000..0f61742 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_stub.go @@ -0,0 +1,63 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package socket + +import ( + "net" + "runtime" + "unsafe" +) + +const ( + sysAF_UNSPEC = 0x0 + sysAF_INET = 0x2 + sysAF_INET6 = 0xa + + sysSOCK_RAW = 0x3 +) + +func probeProtocolStack() int { + switch runtime.GOARCH { + case "amd64p32", "mips64p32": + return 4 + default: + var p uintptr + return int(unsafe.Sizeof(p)) + } +} + +func marshalInetAddr(ip net.IP, port int, zone string) []byte { + return nil +} + +func parseInetAddr(b []byte, network string) (net.Addr, error) { + return nil, errNotImplemented +} + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + return 0, errNotImplemented +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return errNotImplemented +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go new file mode 100644 index 0000000..0eb7128 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_unix.go @@ -0,0 +1,33 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build dragonfly freebsd linux,!s390x,!386 netbsd openbsd + +package socket + +import ( + "syscall" + "unsafe" +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) + return int(l), errnoErr(errno) +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) + return errnoErr(errno) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) + return int(n), errnoErr(errno) +} diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go new file mode 100644 index 0000000..d556a44 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/sys_windows.go @@ -0,0 +1,71 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package socket + +import ( + "syscall" + "unsafe" + + "golang.org/x/sys/windows" +) + +func probeProtocolStack() int { + var p uintptr + return int(unsafe.Sizeof(p)) +} + +const ( + sysAF_UNSPEC = windows.AF_UNSPEC + sysAF_INET = windows.AF_INET + sysAF_INET6 = windows.AF_INET6 + + sysSOCK_RAW = windows.SOCK_RAW +) + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) + +func getsockopt(s uintptr, level, name int, b []byte) (int, error) { + l := uint32(len(b)) + err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l))) + return int(l), err +} + +func setsockopt(s uintptr, level, name int, b []byte) error { + return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b))) +} + +func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} + +func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { + return 0, errNotImplemented +} diff --git a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go new file mode 100644 index 0000000..e740c8f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go @@ -0,0 +1,60 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go new file mode 100644 index 0000000..083bda5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go new file mode 100644 index 0000000..55c6c9f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go new file mode 100644 index 0000000..083bda5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go new file mode 100644 index 0000000..55c6c9f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go new file mode 100644 index 0000000..8b7d161 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go new file mode 100644 index 0000000..3e71ff5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go new file mode 100644 index 0000000..238d90d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go new file mode 100644 index 0000000..3e71ff5 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go new file mode 100644 index 0000000..238d90d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go new file mode 100644 index 0000000..d33025b --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go @@ -0,0 +1,54 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go new file mode 100644 index 0000000..b20d216 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go new file mode 100644 index 0000000..1bb10a4 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go @@ -0,0 +1,55 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go new file mode 100644 index 0000000..f12a1d7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go @@ -0,0 +1,59 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_0 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go new file mode 100644 index 0000000..7f6e8a7 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go @@ -0,0 +1,58 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + Pad_cgo_1 [4]byte +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x38 + + sizeofCmsghdr = 0x10 + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go new file mode 100644 index 0000000..7e258ce --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go new file mode 100644 index 0000000..b3f9c0d --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go @@ -0,0 +1,60 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go new file mode 100644 index 0000000..7e258ce --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go @@ -0,0 +1,57 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go new file mode 100644 index 0000000..da26ef0 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go @@ -0,0 +1,59 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type mmsghdr struct { + Hdr msghdr + Len uint32 + Pad_cgo_0 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go new file mode 100644 index 0000000..73655a1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go new file mode 100644 index 0000000..0a4de80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go new file mode 100644 index 0000000..73655a1 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go @@ -0,0 +1,51 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint32 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Iov *iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x8 + sizeofMsghdr = 0x1c + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go new file mode 100644 index 0000000..0a4de80 --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go @@ -0,0 +1,53 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package socket + +type iovec struct { + Base *byte + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen uint32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x1c +) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go new file mode 100644 index 0000000..353cd5f --- /dev/null +++ b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go @@ -0,0 +1,52 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package socket + +type iovec struct { + Base *int8 + Len uint64 +} + +type msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Accrights *int8 + Accrightslen int32 + Pad_cgo_2 [4]byte +} + +type cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +const ( + sizeofIovec = 0x10 + sizeofMsghdr = 0x30 + sizeofCmsghdr = 0xc + + sizeofSockaddrInet = 0x10 + sizeofSockaddrInet6 = 0x20 +) diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go new file mode 100644 index 0000000..1a3a4fc --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/batch.go @@ -0,0 +1,194 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// RawConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +// +// Unlike the ReadFrom method, it doesn't strip the IPv4 header +// followed by option headers from the received IPv4 datagram when the +// underlying transport is net.IPConn. Each Buffers field of Message +// must be large enough to accommodate an IPv4 header and option +// headers. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + if compatFreeBSD32 && ms[0].NN > 0 { + adjustFreeBSD32(&ms[0]) + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if compatFreeBSD32 && ms[0].NN > 0 { + adjustFreeBSD32(&ms[0]) + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go new file mode 100644 index 0000000..a2b02ca --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control.go @@ -0,0 +1,144 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "fmt" + "net" + "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +type rawOpt struct { + sync.RWMutex + cflags ControlFlags +} + +func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } +func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } +func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } + +type ControlFlags uint + +const ( + FlagTTL ControlFlags = 1 << iota // pass the TTL on the received packet + FlagSrc // pass the source address on the received packet + FlagDst // pass the destination address on the received packet + FlagInterface // pass the interface index on the received packet +) + +// A ControlMessage represents per packet basis IP-level socket options. +type ControlMessage struct { + // Receiving socket options: SetControlMessage allows to + // receive the options from the protocol stack using ReadFrom + // method of PacketConn or RawConn. + // + // Specifying socket options: ControlMessage for WriteTo + // method of PacketConn or RawConn allows to send the options + // to the protocol stack. + // + TTL int // time-to-live, receiving only + Src net.IP // source address, specifying only + Dst net.IP // destination address, receiving only + IfIndex int // interface index, must be 1 <= value when specifying +} + +func (cm *ControlMessage) String() string { + if cm == nil { + return "" + } + return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) +} + +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var m socket.ControlMessage + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { + m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length}) + } + if len(m) > 0 { + ctlOpts[ctlPacketInfo].marshal(m, cm) + } + return m +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIP { + continue + } + switch { + case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length: + ctlOpts[ctlTTL].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length: + ctlOpts[ctlDst].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length: + ctlOpts[ctlInterface].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length) + } + if ctlOpts[ctlPacketInfo].name > 0 { + if opt.isset(FlagSrc | FlagDst | FlagInterface) { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + } else { + if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlDst].length) + } + if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length) + } + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + +// Ancillary data socket options +const ( + ctlTTL = iota // header field + ctlSrc // header field + ctlDst // header field + ctlInterface // inbound or outbound interface + ctlPacketInfo // inbound or outbound packet path + ctlMax +) + +// A ctlOpt represents a binding for ancillary data socket option. +type ctlOpt struct { + name int // option name, must be equal or greater than 1 + length int // option length + marshal func([]byte, *ControlMessage) []byte + parse func(*ControlMessage, []byte) +} diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go new file mode 100644 index 0000000..69c4f55 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_bsd.go @@ -0,0 +1,41 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalDst(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len) + return m.Next(net.IPv4len) +} + +func parseDst(cm *ControlMessage, b []byte) { + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, b[:net.IPv4len]) +} + +func marshalInterface(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink) + return m.Next(syscall.SizeofSockaddrDatalink) +} + +func parseInterface(cm *ControlMessage, b []byte) { + var sadl syscall.SockaddrDatalink + copy((*[unsafe.Sizeof(sadl)]byte)(unsafe.Pointer(&sadl))[:], b) + cm.IfIndex = int(sadl.Index) +} diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go new file mode 100644 index 0000000..425338f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_pktinfo.go @@ -0,0 +1,39 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin linux solaris + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo) + if cm != nil { + pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0])) + if ip := cm.Src.To4(); ip != nil { + copy(pi.Spec_dst[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInetPktinfo) +} + +func parsePacketInfo(cm *ControlMessage, b []byte) { + pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) + cm.IfIndex = int(pi.Ifindex) + if len(cm.Dst) < net.IPv4len { + cm.Dst = make(net.IP, net.IPv4len) + } + copy(cm.Dst, pi.Addr[:]) +} diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go new file mode 100644 index 0000000..a0c049d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_stub.go @@ -0,0 +1,13 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go new file mode 100644 index 0000000..b27fa49 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_unix.go @@ -0,0 +1,73 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv4 + +import ( + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + opt.Lock() + defer opt.Unlock() + if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagTTL) + } else { + opt.clear(FlagTTL) + } + } + if so, ok := sockOpts[ssoPacketInfo]; ok { + if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(cf & (FlagSrc | FlagDst | FlagInterface)) + } else { + opt.clear(cf & (FlagSrc | FlagDst | FlagInterface)) + } + } + } else { + if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagDst) + } else { + opt.clear(FlagDst) + } + } + if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagInterface) + } else { + opt.clear(FlagInterface) + } + } + } + return nil +} + +func marshalTTL(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1) + return m.Next(1) +} + +func parseTTL(cm *ControlMessage, b []byte) { + cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0]))) +} diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go new file mode 100644 index 0000000..82c6306 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/control_windows.go @@ -0,0 +1,12 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + // TODO(mikio): implement this + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/defs_aix.go b/vendor/golang.org/x/net/ipv4/defs_aix.go new file mode 100644 index 0000000..0f37211 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_aix.go @@ -0,0 +1,39 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + // IP_RECVIF is defined on AIX but doesn't work. + // IP_RECVINTERFACE must be used instead. + sysIP_RECVIF = C.IP_RECVINTERFACE + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go new file mode 100644 index 0000000..c8f2e05 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_darwin.go @@ -0,0 +1,77 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_STRIPHDR = C.IP_STRIPHDR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_MULTICAST_IFINDEX = C.IP_MULTICAST_IFINDEX + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go new file mode 100644 index 0000000..f30544e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go @@ -0,0 +1,38 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go new file mode 100644 index 0000000..4dd57d8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_freebsd.go @@ -0,0 +1,75 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_SENDSRCADDR = C.IP_SENDSRCADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_ONESBCAST = C.IP_ONESBCAST + sysIP_BINDANY = C.IP_BINDANY + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_MINTTL = C.IP_MINTTL + sysIP_DONTFRAG = C.IP_DONTFRAG + sysIP_RECVTOS = C.IP_RECVTOS + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go new file mode 100644 index 0000000..7d05c1d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_linux.go @@ -0,0 +1,113 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +#include +#include +#include +#include +*/ +import "C" + +const ( + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_ROUTER_ALERT = C.IP_ROUTER_ALERT + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_PKTOPTIONS = C.IP_PKTOPTIONS + sysIP_MTU_DISCOVER = C.IP_MTU_DISCOVER + sysIP_RECVERR = C.IP_RECVERR + sysIP_RECVTTL = C.IP_RECVTTL + sysIP_RECVTOS = C.IP_RECVTOS + sysIP_MTU = C.IP_MTU + sysIP_FREEBIND = C.IP_FREEBIND + sysIP_TRANSPARENT = C.IP_TRANSPARENT + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_ORIGDSTADDR = C.IP_ORIGDSTADDR + sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR + sysIP_MINTTL = C.IP_MINTTL + sysIP_NODEFRAG = C.IP_NODEFRAG + sysIP_UNICAST_IF = C.IP_UNICAST_IF + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_MSFILTER = C.IP_MSFILTER + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_MSFILTER = C.MCAST_MSFILTER + sysIP_MULTICAST_ALL = C.IP_MULTICAST_ALL + + //sysIP_PMTUDISC_DONT = C.IP_PMTUDISC_DONT + //sysIP_PMTUDISC_WANT = C.IP_PMTUDISC_WANT + //sysIP_PMTUDISC_DO = C.IP_PMTUDISC_DO + //sysIP_PMTUDISC_PROBE = C.IP_PMTUDISC_PROBE + //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE + //sysIP_PMTUDISC_OMIT = C.IP_PMTUDISC_OMIT + + sysICMP_FILTER = C.ICMP_FILTER + + sysSO_EE_ORIGIN_NONE = C.SO_EE_ORIGIN_NONE + sysSO_EE_ORIGIN_LOCAL = C.SO_EE_ORIGIN_LOCAL + sysSO_EE_ORIGIN_ICMP = C.SO_EE_ORIGIN_ICMP + sysSO_EE_ORIGIN_ICMP6 = C.SO_EE_ORIGIN_ICMP6 + sysSO_EE_ORIGIN_TXSTATUS = C.SO_EE_ORIGIN_TXSTATUS + sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING + + sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + sizeofSockExtendedErr = C.sizeof_struct_sock_extended_err + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqn = C.sizeof_struct_ip_mreqn + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPFilter = C.sizeof_struct_icmp_filter +) + +type kernelSockaddrStorage C.struct___kernel_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type sockExtendedErr C.struct_sock_extended_err + +type ipMreq C.struct_ip_mreq + +type ipMreqn C.struct_ip_mreqn + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpFilter C.struct_icmp_filter diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_netbsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go new file mode 100644 index 0000000..8f8af1b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_openbsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + + sizeofIPMreq = C.sizeof_struct_ip_mreq +) + +type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go new file mode 100644 index 0000000..aeb33e9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/defs_solaris.go @@ -0,0 +1,84 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in_addr [4]byte /* in_addr */ + +package ipv4 + +/* +#include + +#include +*/ +import "C" + +const ( + sysIP_OPTIONS = C.IP_OPTIONS + sysIP_HDRINCL = C.IP_HDRINCL + sysIP_TOS = C.IP_TOS + sysIP_TTL = C.IP_TTL + sysIP_RECVOPTS = C.IP_RECVOPTS + sysIP_RECVRETOPTS = C.IP_RECVRETOPTS + sysIP_RECVDSTADDR = C.IP_RECVDSTADDR + sysIP_RETOPTS = C.IP_RETOPTS + sysIP_RECVIF = C.IP_RECVIF + sysIP_RECVSLLA = C.IP_RECVSLLA + sysIP_RECVTTL = C.IP_RECVTTL + + sysIP_MULTICAST_IF = C.IP_MULTICAST_IF + sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL + sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP + sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP + sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP + sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE + sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE + sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP + sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP + sysIP_NEXTHOP = C.IP_NEXTHOP + + sysIP_PKTINFO = C.IP_PKTINFO + sysIP_RECVPKTINFO = C.IP_RECVPKTINFO + sysIP_DONTFRAG = C.IP_DONTFRAG + + sysIP_BOUND_IF = C.IP_BOUND_IF + sysIP_UNSPEC_SRC = C.IP_UNSPEC_SRC + sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL + sysIP_DHCPINIT_IF = C.IP_DHCPINIT_IF + + sysIP_REUSEADDR = C.IP_REUSEADDR + sysIP_DONTROUTE = C.IP_DONTROUTE + sysIP_BROADCAST = C.IP_BROADCAST + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet = C.sizeof_struct_sockaddr_in + sizeofInetPktinfo = C.sizeof_struct_in_pktinfo + + sizeofIPMreq = C.sizeof_struct_ip_mreq + sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet C.struct_sockaddr_in + +type inetPktinfo C.struct_in_pktinfo + +type ipMreq C.struct_ip_mreq + +type ipMreqSource C.struct_ip_mreq_source + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go new file mode 100644 index 0000000..c191c22 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/dgramopt.go @@ -0,0 +1,264 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/bpf" +) + +// MulticastTTL returns the time-to-live field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastTTL() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetMulticastTTL sets the time-to-live field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastTTL(ttl int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastTTL] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, ttl) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errNotImplemented + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errNotImplemented + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errNotImplemented + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP4(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP4(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ICMPFilter returns an ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errNotImplemented + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +// Currently only Linux supports this. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errNotImplemented + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errNotImplemented + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go new file mode 100644 index 0000000..2458349 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/doc.go @@ -0,0 +1,244 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ipv4 implements IP-level socket options for the Internet +// Protocol version 4. +// +// The package provides IP-level socket options that allow +// manipulation of IPv4 facilities. +// +// The IPv4 protocol and basic host requirements for IPv4 are defined +// in RFC 791 and RFC 1122. +// Host extensions for multicasting and socket interface extensions +// for multicast source filters are defined in RFC 1112 and RFC 3678. +// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC +// 3376. +// Source-specific multicast is defined in RFC 4607. +// +// +// Unicasting +// +// The options for unicasting are available for net.TCPConn, +// net.UDPConn and net.IPConn which are created as network connections +// that use the IPv4 transport. When a single TCP connection carrying +// a data flow of multiple packets needs to indicate the flow is +// important, Conn is used to set the type-of-service field on the +// IPv4 header for each packet. +// +// ln, err := net.Listen("tcp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer ln.Close() +// for { +// c, err := ln.Accept() +// if err != nil { +// // error handling +// } +// go func(c net.Conn) { +// defer c.Close() +// +// The outgoing packets will be labeled DiffServ assured forwarding +// class 1 low drop precedence, known as AF11 packets. +// +// if err := ipv4.NewConn(c).SetTOS(0x28); err != nil { +// // error handling +// } +// if _, err := c.Write(data); err != nil { +// // error handling +// } +// }(c) +// } +// +// +// Multicasting +// +// The options for multicasting are available for net.UDPConn and +// net.IPConn which are created as network connections that use the +// IPv4 transport. A few network facilities must be prepared before +// you begin multicasting, at a minimum joining network interfaces and +// multicast groups. +// +// en0, err := net.InterfaceByName("en0") +// if err != nil { +// // error handling +// } +// en1, err := net.InterfaceByIndex(911) +// if err != nil { +// // error handling +// } +// group := net.IPv4(224, 0, 0, 250) +// +// First, an application listens to an appropriate address with an +// appropriate service port. +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// +// Second, the application joins multicast groups, starts listening to +// the groups on the specified network interfaces. Note that the +// service port for transport layer protocol does not matter with this +// operation as joining groups affects only network and link layer +// protocols, such as IPv4 and Ethernet. +// +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// +// The application might set per packet control message transmissions +// between the protocol stack within the kernel. When the application +// needs a destination address on an incoming packet, +// SetControlMessage of PacketConn is used to enable control message +// transmissions. +// +// if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { +// // error handling +// } +// +// The application could identify whether the received packets are +// of interest by using the control message that contains the +// destination address of the received packet. +// +// b := make([]byte, 1500) +// for { +// n, cm, src, err := p.ReadFrom(b) +// if err != nil { +// // error handling +// } +// if cm.Dst.IsMulticast() { +// if cm.Dst.Equal(group) { +// // joined group, do something +// } else { +// // unknown group, discard +// continue +// } +// } +// +// The application can also send both unicast and multicast packets. +// +// p.SetTOS(0x0) +// p.SetTTL(16) +// if _, err := p.WriteTo(data, nil, src); err != nil { +// // error handling +// } +// dst := &net.UDPAddr{IP: group, Port: 1024} +// for _, ifi := range []*net.Interface{en0, en1} { +// if err := p.SetMulticastInterface(ifi); err != nil { +// // error handling +// } +// p.SetMulticastTTL(2) +// if _, err := p.WriteTo(data, nil, dst); err != nil { +// // error handling +// } +// } +// } +// +// +// More multicasting +// +// An application that uses PacketConn or RawConn may join multiple +// multicast groups. For example, a UDP listener with port 1024 might +// join two different groups across over two different network +// interfaces by using: +// +// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// p := ipv4.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { +// // error handling +// } +// +// It is possible for multiple UDP listeners that listen on the same +// UDP port to join the same multicast group. The net package will +// provide a socket that listens to a wildcard address with reusable +// UDP port when an appropriate multicast address prefix is passed to +// the net.ListenPacket or net.ListenUDP. +// +// c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c1.Close() +// c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") +// if err != nil { +// // error handling +// } +// defer c2.Close() +// p1 := ipv4.NewPacketConn(c1) +// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// p2 := ipv4.NewPacketConn(c2) +// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// +// Also it is possible for the application to leave or rejoin a +// multicast group on the network interface. +// +// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil { +// // error handling +// } +// +// +// Source-specific multicasting +// +// An application that uses PacketConn or RawConn on IGMPv3 supported +// platform is able to join source-specific multicast groups. +// The application may use JoinSourceSpecificGroup and +// LeaveSourceSpecificGroup for the operation known as "include" mode, +// +// ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)} +// ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)} +// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// +// or JoinGroup, ExcludeSourceSpecificGroup, +// IncludeSourceSpecificGroup and LeaveGroup for the operation known +// as "exclude" mode. +// +// exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)} +// if err := p.JoinGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { +// // error handling +// } +// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// +// Note that it depends on each platform implementation what happens +// when an application which runs on IGMPv3 unsupported platform uses +// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. +// In general the platform tries to fall back to conversations using +// IGMPv1 or IGMPv2 and starts to listen to multicast traffic. +// In the fallback case, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup may return an error. +package ipv4 // import "golang.org/x/net/ipv4" + +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go new file mode 100644 index 0000000..4a6d7a8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/endpoint.go @@ -0,0 +1,186 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "time" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the JoinSourceSpecificGroup, +// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup methods of PacketConn and RawConn are +// not implemented. + +// A Conn represents a network endpoint that uses the IPv4 transport. +// It is used to control basic IP-level socket options such as TOS and +// TTL. +type Conn struct { + genericOpt +} + +type genericOpt struct { + *socket.Conn +} + +func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } + +// NewConn returns a new Conn. +func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) + return &Conn{ + genericOpt: genericOpt{Conn: cc}, + } +} + +// A PacketConn represents a packet network endpoint that uses the +// IPv4 transport. It is used to control several IP-level socket +// options including multicasting. It also provides datagram based +// network I/O methods specific to the IPv4 and higher layer protocols +// such as UDP. +type PacketConn struct { + genericOpt + dgramOpt + payloadHandler +} + +type dgramOpt struct { + *socket.Conn +} + +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } + +// SetControlMessage sets the per packet IP-level socket options. +func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *PacketConn) SetDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *PacketConn) SetReadDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *PacketConn) SetWriteDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *PacketConn) Close() error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.PacketConn.Close() +} + +// NewPacketConn returns a new PacketConn using c as its underlying +// transport. +func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) + p := &PacketConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, + } + return p +} + +// A RawConn represents a packet network endpoint that uses the IPv4 +// transport. It is used to control several IP-level socket options +// including IPv4 header manipulation. It also provides datagram +// based network I/O methods specific to the IPv4 and higher layer +// protocols that handle IPv4 datagram directly such as OSPF, GRE. +type RawConn struct { + genericOpt + dgramOpt + packetHandler +} + +// SetControlMessage sets the per packet IP-level socket options. +func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *RawConn) SetDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *RawConn) SetReadDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *RawConn) SetWriteDeadline(t time.Time) error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *RawConn) Close() error { + if !c.packetHandler.ok() { + return errInvalidConn + } + return c.packetHandler.IPConn.Close() +} + +// NewRawConn returns a new RawConn using c as its underlying +// transport. +func NewRawConn(c net.PacketConn) (*RawConn, error) { + cc, err := socket.NewConn(c.(net.Conn)) + if err != nil { + return nil, err + } + r := &RawConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc}, + } + so, ok := sockOpts[ssoHeaderPrepend] + if !ok { + return nil, errNotImplemented + } + if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go new file mode 100644 index 0000000..1bb1737 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/gen.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates system adaptation constants and types, +// internet protocol constants and tables by reading template files +// and IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" +) + +func main() { + if err := genzsys(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := geniana(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func genzsys() error { + defs := "defs_" + runtime.GOOS + ".go" + f, err := os.Open(defs) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + f.Close() + cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) + b, err := cmd.Output() + if err != nil { + return err + } + b, err = format.Source(b) + if err != nil { + return err + } + zsys := "zsys_" + runtime.GOOS + ".go" + switch runtime.GOOS { + case "freebsd", "linux": + zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" + } + if err := ioutil.WriteFile(zsys, b, 0644); err != nil { + return err + } + return nil +} + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml", + parseICMPv4Parameters, + }, +} + +func geniana() error { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "package ipv4\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) + } + if err := r.parse(&bb, resp.Body); err != nil { + return err + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + return err + } + if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { + return err + } + return nil +} + +func parseICMPv4Parameters(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var icp icmpv4Parameters + if err := dec.Decode(&icp); err != nil { + return err + } + prs := icp.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value) + fmt.Fprintf(w, "// %s\n", pr.OrigDescr) + } + fmt.Fprintf(w, ")\n\n") + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") + for _, pr := range prs { + if pr.Descr == "" { + continue + } + fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr)) + } + fmt.Fprintf(w, "}\n") + return nil +} + +type icmpv4Parameters struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Value string `xml:"value"` + Descr string `xml:"description"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonICMPv4ParamRecord struct { + OrigDescr string + Descr string + Value int +} + +func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord { + id := -1 + for i, r := range icp.Registries { + if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { + id = i + break + } + } + if id < 0 { + return nil + } + prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records)) + sr := strings.NewReplacer( + "Messages", "", + "Message", "", + "ICMP", "", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range icp.Registries[id].Records { + if strings.Contains(pr.Descr, "Reserved") || + strings.Contains(pr.Descr, "Unassigned") || + strings.Contains(pr.Descr, "Deprecated") || + strings.Contains(pr.Descr, "Experiment") || + strings.Contains(pr.Descr, "experiment") { + continue + } + ss := strings.Split(pr.Descr, "\n") + if len(ss) > 1 { + prs[i].Descr = strings.Join(ss, " ") + } else { + prs[i].Descr = ss[0] + } + s := strings.TrimSpace(prs[i].Descr) + prs[i].OrigDescr = s + prs[i].Descr = sr.Replace(s) + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go new file mode 100644 index 0000000..51c1237 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/genericopt.go @@ -0,0 +1,55 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +// TOS returns the type-of-service field value for outgoing packets. +func (c *genericOpt) TOS() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTOS] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTOS sets the type-of-service field value for future outgoing +// packets. +func (c *genericOpt) SetTOS(tos int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTOS] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, tos) +} + +// TTL returns the time-to-live field value for outgoing packets. +func (c *genericOpt) TTL() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTTL] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTTL sets the time-to-live field value for future outgoing +// packets. +func (c *genericOpt) SetTTL(ttl int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTTL] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, ttl) +} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go new file mode 100644 index 0000000..701bd4b --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/header.go @@ -0,0 +1,173 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "encoding/binary" + "fmt" + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +const ( + Version = 4 // protocol version + HeaderLen = 20 // header length without extension headers + maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields +) + +type HeaderFlags int + +const ( + MoreFragments HeaderFlags = 1 << iota // more fragments flag + DontFragment // don't fragment flag +) + +// A Header represents an IPv4 header. +type Header struct { + Version int // protocol version + Len int // header length + TOS int // type-of-service + TotalLen int // packet total length + ID int // identification + Flags HeaderFlags // flags + FragOff int // fragment offset + TTL int // time-to-live + Protocol int // next protocol + Checksum int // checksum + Src net.IP // source address + Dst net.IP // destination address + Options []byte // options, extension headers +} + +func (h *Header) String() string { + if h == nil { + return "" + } + return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) +} + +// Marshal returns the binary encoding of h. +// +// The returned slice is in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func (h *Header) Marshal() ([]byte, error) { + if h == nil { + return nil, errNilHeader + } + if h.Len < HeaderLen { + return nil, errHeaderTooShort + } + hdrlen := HeaderLen + len(h.Options) + b := make([]byte, hdrlen) + b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f)) + b[1] = byte(h.TOS) + flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + case "freebsd": + if freebsdVersion < 1100000 { + socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } else { + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + default: + binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) + binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) + } + binary.BigEndian.PutUint16(b[4:6], uint16(h.ID)) + b[8] = byte(h.TTL) + b[9] = byte(h.Protocol) + binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum)) + if ip := h.Src.To4(); ip != nil { + copy(b[12:16], ip[:net.IPv4len]) + } + if ip := h.Dst.To4(); ip != nil { + copy(b[16:20], ip[:net.IPv4len]) + } else { + return nil, errMissingAddress + } + if len(h.Options) > 0 { + copy(b[HeaderLen:], h.Options) + } + return b, nil +} + +// Parse parses b as an IPv4 header and stores the result in h. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func (h *Header) Parse(b []byte) error { + if h == nil || b == nil { + return errNilHeader + } + if len(b) < HeaderLen { + return errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + if len(b) < hdrlen { + return errExtHeaderTooShort + } + h.Version = int(b[0] >> 4) + h.Len = hdrlen + h.TOS = int(b[1]) + h.ID = int(binary.BigEndian.Uint16(b[4:6])) + h.TTL = int(b[8]) + h.Protocol = int(b[9]) + h.Checksum = int(binary.BigEndian.Uint16(b[10:12])) + h.Src = net.IPv4(b[12], b[13], b[14], b[15]) + h.Dst = net.IPv4(b[16], b[17], b[18], b[19]) + switch runtime.GOOS { + case "darwin", "dragonfly", "netbsd": + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) + case "freebsd": + if freebsdVersion < 1100000 { + h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + if freebsdVersion < 1000000 { + h.TotalLen += hdrlen + } + h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) + } else { + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + default: + h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) + h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) + } + h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 + h.FragOff = h.FragOff & 0x1fff + optlen := hdrlen - HeaderLen + if optlen > 0 && len(b) >= hdrlen { + if cap(h.Options) < optlen { + h.Options = make([]byte, optlen) + } else { + h.Options = h.Options[:optlen] + } + copy(h.Options, b[HeaderLen:hdrlen]) + } + return nil +} + +// ParseHeader parses b as an IPv4 header. +// +// The provided b must be in the format used by a raw IP socket on the +// local system. +// This may differ from the wire format, depending on the system. +func ParseHeader(b []byte) (*Header, error) { + h := new(Header) + if err := h.Parse(b); err != nil { + return nil, err + } + return h, nil +} diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go new file mode 100644 index 0000000..b494a2c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/helper.go @@ -0,0 +1,80 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "errors" + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +var ( + errInvalidConn = errors.New("invalid connection") + errMissingAddress = errors.New("missing address") + errMissingHeader = errors.New("missing header") + errNilHeader = errors.New("nil header") + errHeaderTooShort = errors.New("header too short") + errExtHeaderTooShort = errors.New("extension header too short") + errInvalidConnType = errors.New("invalid conn type") + errNoSuchInterface = errors.New("no such interface") + errNoSuchMulticastInterface = errors.New("no such multicast interface") + errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) + + // See https://www.freebsd.org/doc/en/books/porters-handbook/versions.html. + freebsdVersion uint32 + compatFreeBSD32 bool // 386 emulation on amd64 +) + +// See golang.org/issue/30899. +func adjustFreeBSD32(m *socket.Message) { + // FreeBSD 12.0-RELEASE is affected by https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236737 + if 1200086 <= freebsdVersion && freebsdVersion < 1201000 { + l := (m.NN + 4 - 1) &^ (4 - 1) + if m.NN < l && l <= len(m.OOB) { + m.NN = l + } + } +} + +func boolint(b bool) int { + if b { + return 1 + } + return 0 +} + +func netAddrToIP4(a net.Addr) net.IP { + switch v := a.(type) { + case *net.UDPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + case *net.IPAddr: + if ip := v.IP.To4(); ip != nil { + return ip + } + } + return nil +} + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go new file mode 100644 index 0000000..4375b40 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/iana.go @@ -0,0 +1,38 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +package ipv4 + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 +const ( + ICMPTypeEchoReply ICMPType = 0 // Echo Reply + ICMPTypeDestinationUnreachable ICMPType = 3 // Destination Unreachable + ICMPTypeRedirect ICMPType = 5 // Redirect + ICMPTypeEcho ICMPType = 8 // Echo + ICMPTypeRouterAdvertisement ICMPType = 9 // Router Advertisement + ICMPTypeRouterSolicitation ICMPType = 10 // Router Solicitation + ICMPTypeTimeExceeded ICMPType = 11 // Time Exceeded + ICMPTypeParameterProblem ICMPType = 12 // Parameter Problem + ICMPTypeTimestamp ICMPType = 13 // Timestamp + ICMPTypeTimestampReply ICMPType = 14 // Timestamp Reply + ICMPTypePhoturis ICMPType = 40 // Photuris + ICMPTypeExtendedEchoRequest ICMPType = 42 // Extended Echo Request + ICMPTypeExtendedEchoReply ICMPType = 43 // Extended Echo Reply +) + +// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 +var icmpTypes = map[ICMPType]string{ + 0: "echo reply", + 3: "destination unreachable", + 5: "redirect", + 8: "echo", + 9: "router advertisement", + 10: "router solicitation", + 11: "time exceeded", + 12: "parameter problem", + 13: "timestamp", + 14: "timestamp reply", + 40: "photuris", + 42: "extended echo request", + 43: "extended echo reply", +} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go new file mode 100644 index 0000000..9902bb3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp.go @@ -0,0 +1,57 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/iana" + +// An ICMPType represents a type of ICMP message. +type ICMPType int + +func (typ ICMPType) String() string { + s, ok := icmpTypes[typ] + if !ok { + return "" + } + return s +} + +// Protocol returns the ICMPv4 protocol number. +func (typ ICMPType) Protocol() int { + return iana.ProtocolICMP +} + +// An ICMPFilter represents an ICMP message filter for incoming +// packets. The filter belongs to a packet delivery path on a host and +// it cannot interact with forwarding packets or tunnel-outer packets. +// +// Note: RFC 8200 defines a reasonable role model and it works not +// only for IPv6 but IPv4. A node means a device that implements IP. +// A router means a node that forwards IP packets not explicitly +// addressed to itself, and a host means a node that is not a router. +type ICMPFilter struct { + icmpFilter +} + +// Accept accepts incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Accept(typ ICMPType) { + f.accept(typ) +} + +// Block blocks incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Block(typ ICMPType) { + f.block(typ) +} + +// SetAll sets the filter action to the filter. +func (f *ICMPFilter) SetAll(block bool) { + f.setAll(block) +} + +// WillBlock reports whether the ICMP type will be blocked. +func (f *ICMPFilter) WillBlock(typ ICMPType) bool { + return f.willBlock(typ) +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go new file mode 100644 index 0000000..6e1c5c8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_linux.go @@ -0,0 +1,25 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +func (f *icmpFilter) accept(typ ICMPType) { + f.Data &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) block(typ ICMPType) { + f.Data |= 1 << (uint32(typ) & 31) +} + +func (f *icmpFilter) setAll(block bool) { + if block { + f.Data = 1<<32 - 1 + } else { + f.Data = 0 + } +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return f.Data&(1<<(uint32(typ)&31)) != 0 +} diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go new file mode 100644 index 0000000..21bb29a --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/icmp_stub.go @@ -0,0 +1,25 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv4 + +const sizeofICMPFilter = 0x0 + +type icmpFilter struct { +} + +func (f *icmpFilter) accept(typ ICMPType) { +} + +func (f *icmpFilter) block(typ ICMPType) { +} + +func (f *icmpFilter) setAll(block bool) { +} + +func (f *icmpFilter) willBlock(typ ICMPType) bool { + return false +} diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go new file mode 100644 index 0000000..7d784e0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/packet.go @@ -0,0 +1,117 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn +// are not implemented. + +// A packetHandler represents the IPv4 datagram handler. +type packetHandler struct { + *net.IPConn + *socket.Conn + rawOpt +} + +func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil } + +// ReadFrom reads an IPv4 datagram from the endpoint c, copying the +// datagram into b. It returns the received datagram as the IPv4 +// header h, the payload p and the control message cm. +func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { + if !c.ok() { + return nil, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + if err := c.RecvMsg(&m, 0); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + var hs []byte + if hs, p, err = slicePacket(b[:m.N]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if h, err = ParseHeader(hs); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + if m.NN > 0 { + if compatFreeBSD32 { + adjustFreeBSD32(&m) + } + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} + } + } + if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil { + cm.Src = src.IP + } + return +} + +func slicePacket(b []byte) (h, p []byte, err error) { + if len(b) < HeaderLen { + return nil, nil, errHeaderTooShort + } + hdrlen := int(b[0]&0x0f) << 2 + return b[:hdrlen], b[hdrlen:], nil +} + +// WriteTo writes an IPv4 datagram through the endpoint c, copying the +// datagram from the IPv4 header h and the payload p. The control +// message cm allows the datagram path and the outgoing interface to be +// specified. Currently only Darwin and Linux support this. The cm +// may be nil if control of the outgoing datagram is not required. +// +// The IPv4 header h must contain appropriate fields that include: +// +// Version = +// Len = +// TOS = +// TotalLen = +// ID = platform sets an appropriate value if ID is zero +// FragOff = +// TTL = +// Protocol = +// Checksum = platform sets an appropriate value if Checksum is zero +// Src = platform sets an appropriate value if Src is nil +// Dst = +// Options = optional +func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { + if !c.ok() { + return errInvalidConn + } + m := socket.Message{ + OOB: cm.Marshal(), + } + wh, err := h.Marshal() + if err != nil { + return err + } + m.Buffers = [][]byte{wh, p} + dst := new(net.IPAddr) + if cm != nil { + if ip := cm.Dst.To4(); ip != nil { + dst.IP = ip + } + } + if dst.IP == nil { + dst.IP = h.Dst + } + m.Addr = dst + if err := c.SendMsg(&m, 0); err != nil { + return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go new file mode 100644 index 0000000..f95f811 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload.go @@ -0,0 +1,23 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo +// methods of PacketConn is not implemented. + +// A payloadHandler represents the IPv4 datagram payload handler. +type payloadHandler struct { + net.PacketConn + *socket.Conn + rawOpt +} + +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go new file mode 100644 index 0000000..e761466 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_cmsg.go @@ -0,0 +1,84 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + m.Buffers = [][]byte{b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + h := make([]byte, HeaderLen) + m.Buffers = [][]byte{h, b} + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + hdrlen := int(h[0]&0x0f) << 2 + if hdrlen > len(h) { + d := hdrlen - len(h) + copy(b, b[d:]) + m.N -= d + } else { + m.N -= hdrlen + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + if m.NN > 0 { + if compatFreeBSD32 { + adjustFreeBSD32(&m) + } + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP4(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err = c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go new file mode 100644 index 0000000..1116256 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go @@ -0,0 +1,39 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package ipv4 + +import "net" + +// ReadFrom reads a payload of the received IPv4 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + if n, src, err = c.PacketConn.ReadFrom(b); err != nil { + return 0, nil, nil, err + } + return +} + +// WriteTo writes a payload of the IPv4 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the datagram path and the outgoing interface to be specified. +// Currently only Darwin and Linux support this. The cm may be nil if +// control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + if dst == nil { + return 0, errMissingAddress + } + return c.PacketConn.WriteTo(b, dst) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go new file mode 100644 index 0000000..22e90c0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt.go @@ -0,0 +1,44 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import "golang.org/x/net/internal/socket" + +// Sticky socket options +const ( + ssoTOS = iota // header field for unicast packet + ssoTTL // header field for unicast packet + ssoMulticastTTL // header field for multicast packet + ssoMulticastInterface // outbound interface for multicast packet + ssoMulticastLoopback // loopback for multicast packet + ssoReceiveTTL // header field on received packet + ssoReceiveDst // header field on received packet + ssoReceiveInterface // inbound interface on received packet + ssoPacketInfo // incbound or outbound packet path + ssoHeaderPrepend // ipv4 header prepend + ssoStripHeader // strip ipv4 header + ssoICMPFilter // icmp filter + ssoJoinGroup // any-source multicast + ssoLeaveGroup // any-source multicast + ssoJoinSourceGroup // source-specific multicast + ssoLeaveSourceGroup // source-specific multicast + ssoBlockSourceGroup // any-source or source-specific multicast + ssoUnblockSourceGroup // any-source or source-specific multicast + ssoAttachFilter // attach BPF for filtering inbound traffic +) + +// Sticky socket option value types +const ( + ssoTypeIPMreq = iota + 1 + ssoTypeIPMreqn + ssoTypeGroupReq + ssoTypeGroupSourceReq +) + +// A sockOpt represents a binding for sticky socket option. +type sockOpt struct { + socket.Option + typ int // hint for option value type; optional +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go new file mode 100644 index 0000000..dea6451 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_posix.go @@ -0,0 +1,71 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + switch so.typ { + case ssoTypeIPMreqn: + return so.getIPMreqn(c) + default: + return so.getMulticastIf(c) + } +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + switch so.typ { + case ssoTypeIPMreqn: + return so.setIPMreqn(c, ifi, nil) + default: + return so.setMulticastIf(c, ifi) + } +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err + } + if n != sizeofICMPFilter { + return nil, errNotImplemented + } + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter] + return so.Set(c, b) +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { + case ssoTypeIPMreq: + return so.setIPMreq(c, ifi, grp) + case ssoTypeIPMreqn: + return so.setIPMreqn(c, ifi, grp) + case ssoTypeGroupReq: + return so.setGroupReq(c, ifi, grp) + default: + return errNotImplemented + } +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) +} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go new file mode 100644 index 0000000..37d4806 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sockopt_stub.go @@ -0,0 +1,42 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errNotImplemented +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_aix.go b/vendor/golang.org/x/net/ipv4/sys_aix.go new file mode 100644 index 0000000..3d1201e --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_aix.go @@ -0,0 +1,38 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Added for go1.11 compatibility +// +build aix + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go new file mode 100644 index 0000000..c5eaafe --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq.go @@ -0,0 +1,119 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd solaris windows + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} + if err := setIPMreqInterface(&mreq, ifi); err != nil { + return err + } + b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq] + return so.Set(c, b) +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + var b [4]byte + if _, err := so.Get(c, b[:]); err != nil { + return nil, err + } + ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + ip, err := netInterfaceToIP4(ifi) + if err != nil { + return err + } + var b [4]byte + copy(b[:], ip) + return so.Set(c, b[:]) +} + +func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { + if ifi == nil { + return nil + } + ifat, err := ifi.Addrs() + if err != nil { + return err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + copy(mreq.Interface[:], ip) + return nil + } + } + } + return errNoSuchInterface +} + +func netIP4ToInterface(ip net.IP) (*net.Interface, error) { + ift, err := net.Interfaces() + if err != nil { + return nil, err + } + for _, ifi := range ift { + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + case *net.IPNet: + if ip.Equal(ifa.IP) { + return &ifi, nil + } + } + } + } + return nil, errNoSuchInterface +} + +func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { + if ifi == nil { + return net.IPv4zero.To4(), nil + } + ifat, err := ifi.Addrs() + if err != nil { + return nil, err + } + for _, ifa := range ifat { + switch ifa := ifa.(type) { + case *net.IPAddr: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + case *net.IPNet: + if ip := ifa.IP.To4(); ip != nil { + return ip, nil + } + } + } + return nil, errNoSuchInterface +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go new file mode 100644 index 0000000..6dc339c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go @@ -0,0 +1,25 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go new file mode 100644 index 0000000..1f24f69 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go @@ -0,0 +1,42 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin freebsd linux + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + b := make([]byte, so.Len) + if _, err := so.Get(c, b); err != nil { + return nil, err + } + mreqn := (*ipMreqn)(unsafe.Pointer(&b[0])) + if mreqn.Ifindex == 0 { + return nil, nil + } + ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) + if err != nil { + return nil, err + } + return ifi, nil +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreqn ipMreqn + if ifi != nil { + mreqn.Ifindex = int32(ifi.Index) + } + if grp != nil { + mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} + } + b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go new file mode 100644 index 0000000..48ef556 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !darwin,!freebsd,!linux + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go new file mode 100644 index 0000000..5c03dce --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package ipv4 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := unix.SockFprog{ + Len: uint16(len(f)), + Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go new file mode 100644 index 0000000..5c98642 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv4 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go new file mode 100644 index 0000000..58256dd --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_bsd.go @@ -0,0 +1,37 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build netbsd openbsd + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go new file mode 100644 index 0000000..ac213c7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_darwin.go @@ -0,0 +1,65 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go new file mode 100644 index 0000000..859764f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go @@ -0,0 +1,35 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go new file mode 100644 index 0000000..482873d --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_freebsd.go @@ -0,0 +1,76 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "runtime" + "strings" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, + ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, + ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, + ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func init() { + freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") + if freebsdVersion >= 1000000 { + sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} + } + if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { + archs, _ := syscall.Sysctl("kern.supported_archs") + for _, s := range strings.Fields(archs) { + if s == "amd64" { + compatFreeBSD32 = true + break + } + } + } +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Len = sizeofSockaddrInet + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go new file mode 100644 index 0000000..cf755c7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_linux.go @@ -0,0 +1,60 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go new file mode 100644 index 0000000..832fef1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_solaris.go @@ -0,0 +1,57 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL}, + ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, + } + + sockOpts = map[int]sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, + ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, + ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], grp) + sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) + sa.Family = syscall.AF_INET + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go new file mode 100644 index 0000000..eeced7f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go @@ -0,0 +1,52 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin freebsd linux solaris + +package ipv4 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go new file mode 100644 index 0000000..c092167 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !darwin,!freebsd,!linux,!solaris + +package ipv4 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go new file mode 100644 index 0000000..b9c85b3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_stub.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv4 + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{} +) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go new file mode 100644 index 0000000..b0913d5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/sys_windows.go @@ -0,0 +1,67 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv4 + +import ( + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +const ( + // See ws2tcpip.h. + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_DONTFRAGMENT = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0xf + sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 + sysIP_PKTINFO = 0x13 + + sizeofInetPktinfo = 0x8 + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc +) + +type inetPktinfo struct { + Addr [4]byte + Ifindex int32 +} + +type ipMreq struct { + Multiaddr [4]byte + Interface [4]byte +} + +type ipMreqSource struct { + Multiaddr [4]byte + Sourceaddr [4]byte + Interface [4]byte +} + +// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{ + ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, + ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, + ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, + ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, + } +) + +func (pi *inetPktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go new file mode 100644 index 0000000..c741d5c --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go @@ -0,0 +1,33 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x20 + sysIP_RECVTTL = 0x22 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go new file mode 100644 index 0000000..e05a251 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_darwin.go @@ -0,0 +1,99 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_STRIPHDR = 0x17 + sysIP_RECVTTL = 0x18 + sysIP_BOUND_IF = 0x19 + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_MULTICAST_IFINDEX = 0x42 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [128]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [128]byte + Pad_cgo_1 [128]byte +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go new file mode 100644 index 0000000..6d65e9f --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go @@ -0,0 +1,31 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x41 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go new file mode 100644 index 0000000..136e2b8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go new file mode 100644 index 0000000..4f730f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go @@ -0,0 +1,95 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go new file mode 100644 index 0000000..4f730f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go @@ -0,0 +1,95 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go new file mode 100644 index 0000000..ecebf32 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_SENDSRCADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_ONESBCAST = 0x17 + sysIP_BINDANY = 0x18 + sysIP_RECVTTL = 0x41 + sysIP_MINTTL = 0x42 + sysIP_DONTFRAG = 0x43 + sysIP_RECVTOS = 0x44 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + sysIP_MULTICAST_VIF = 0xe + sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 + sysIP_BLOCK_SOURCE = 0x48 + sysIP_UNBLOCK_SOURCE = 0x49 + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go new file mode 100644 index 0000000..1c7fdfa --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go new file mode 100644 index 0000000..3c5ea54 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go @@ -0,0 +1,130 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]uint8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go new file mode 100644 index 0000000..e626134 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go @@ -0,0 +1,134 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go new file mode 100644 index 0000000..a04e785 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go @@ -0,0 +1,132 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv4 + +const ( + sysIP_TOS = 0x1 + sysIP_TTL = 0x2 + sysIP_HDRINCL = 0x3 + sysIP_OPTIONS = 0x4 + sysIP_ROUTER_ALERT = 0x5 + sysIP_RECVOPTS = 0x6 + sysIP_RETOPTS = 0x7 + sysIP_PKTINFO = 0x8 + sysIP_PKTOPTIONS = 0x9 + sysIP_MTU_DISCOVER = 0xa + sysIP_RECVERR = 0xb + sysIP_RECVTTL = 0xc + sysIP_RECVTOS = 0xd + sysIP_MTU = 0xe + sysIP_FREEBIND = 0xf + sysIP_TRANSPARENT = 0x13 + sysIP_RECVRETOPTS = 0x7 + sysIP_ORIGDSTADDR = 0x14 + sysIP_RECVORIGDSTADDR = 0x14 + sysIP_MINTTL = 0x15 + sysIP_NODEFRAG = 0x16 + sysIP_UNICAST_IF = 0x32 + + sysIP_MULTICAST_IF = 0x20 + sysIP_MULTICAST_TTL = 0x21 + sysIP_MULTICAST_LOOP = 0x22 + sysIP_ADD_MEMBERSHIP = 0x23 + sysIP_DROP_MEMBERSHIP = 0x24 + sysIP_UNBLOCK_SOURCE = 0x25 + sysIP_BLOCK_SOURCE = 0x26 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 + sysIP_MSFILTER = 0x29 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIP_MULTICAST_ALL = 0x31 + + sysICMP_FILTER = 0x1 + + sysSO_EE_ORIGIN_NONE = 0x0 + sysSO_EE_ORIGIN_LOCAL = 0x1 + sysSO_EE_ORIGIN_ICMP = 0x2 + sysSO_EE_ORIGIN_ICMP6 = 0x3 + sysSO_EE_ORIGIN_TXSTATUS = 0x4 + sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + sizeofSockExtendedErr = 0x10 + + sizeofIPMreq = 0x8 + sizeofIPMreqn = 0xc + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPFilter = 0x4 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + X__pad [8]uint8 +} + +type inetPktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type sockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type ipMreqSource struct { + Multiaddr uint32 + Interface uint32 + Sourceaddr uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpFilter struct { + Data uint32 +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go new file mode 100644 index 0000000..8cfc648 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go @@ -0,0 +1,30 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x14 + sysIP_RECVTTL = 0x17 + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go new file mode 100644 index 0000000..37629cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go @@ -0,0 +1,30 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x1e + sysIP_RECVTTL = 0x1f + + sysIP_MULTICAST_IF = 0x9 + sysIP_MULTICAST_TTL = 0xa + sysIP_MULTICAST_LOOP = 0xb + sysIP_ADD_MEMBERSHIP = 0xc + sysIP_DROP_MEMBERSHIP = 0xd + + sizeofIPMreq = 0x8 +) + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go new file mode 100644 index 0000000..cb80a30 --- /dev/null +++ b/vendor/golang.org/x/net/ipv4/zsys_solaris.go @@ -0,0 +1,100 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package ipv4 + +const ( + sysIP_OPTIONS = 0x1 + sysIP_HDRINCL = 0x2 + sysIP_TOS = 0x3 + sysIP_TTL = 0x4 + sysIP_RECVOPTS = 0x5 + sysIP_RECVRETOPTS = 0x6 + sysIP_RECVDSTADDR = 0x7 + sysIP_RETOPTS = 0x8 + sysIP_RECVIF = 0x9 + sysIP_RECVSLLA = 0xa + sysIP_RECVTTL = 0xb + + sysIP_MULTICAST_IF = 0x10 + sysIP_MULTICAST_TTL = 0x11 + sysIP_MULTICAST_LOOP = 0x12 + sysIP_ADD_MEMBERSHIP = 0x13 + sysIP_DROP_MEMBERSHIP = 0x14 + sysIP_BLOCK_SOURCE = 0x15 + sysIP_UNBLOCK_SOURCE = 0x16 + sysIP_ADD_SOURCE_MEMBERSHIP = 0x17 + sysIP_DROP_SOURCE_MEMBERSHIP = 0x18 + sysIP_NEXTHOP = 0x19 + + sysIP_PKTINFO = 0x1a + sysIP_RECVPKTINFO = 0x1a + sysIP_DONTFRAG = 0x1b + + sysIP_BOUND_IF = 0x41 + sysIP_UNSPEC_SRC = 0x42 + sysIP_BROADCAST_TTL = 0x43 + sysIP_DHCPINIT_IF = 0x45 + + sysIP_REUSEADDR = 0x104 + sysIP_DONTROUTE = 0x105 + sysIP_BROADCAST = 0x106 + + sysMCAST_JOIN_GROUP = 0x29 + sysMCAST_LEAVE_GROUP = 0x2a + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_JOIN_SOURCE_GROUP = 0x2d + sysMCAST_LEAVE_SOURCE_GROUP = 0x2e + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet = 0x10 + sizeofInetPktinfo = 0xc + + sizeofIPMreq = 0x8 + sizeofIPMreqSource = 0xc + sizeofGroupReq = 0x104 + sizeofGroupSourceReq = 0x204 +) + +type sockaddrStorage struct { + Family uint16 + X_ss_pad1 [6]int8 + X_ss_align float64 + X_ss_pad2 [240]int8 +} + +type sockaddrInet struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type inetPktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type ipMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type ipMreqSource struct { + Multiaddr [4]byte /* in_addr */ + Sourceaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [256]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [256]byte + Pad_cgo_1 [256]byte +} diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go new file mode 100644 index 0000000..2ccb984 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/batch.go @@ -0,0 +1,116 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "runtime" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of +// PacketConn are not implemented. + +// A Message represents an IO message. +// +// type Message struct { +// Buffers [][]byte +// OOB []byte +// Addr net.Addr +// N int +// NN int +// Flags int +// } +// +// The Buffers fields represents a list of contiguous buffers, which +// can be used for vectored IO, for example, putting a header and a +// payload in each slice. +// When writing, the Buffers field must contain at least one byte to +// write. +// When reading, the Buffers field will always contain a byte to read. +// +// The OOB field contains protocol-specific control or miscellaneous +// ancillary data known as out-of-band data. +// It can be nil when not required. +// +// The Addr field specifies a destination address when writing. +// It can be nil when the underlying protocol of the endpoint uses +// connection-oriented communication. +// After a successful read, it may contain the source address on the +// received packet. +// +// The N field indicates the number of bytes read or written from/to +// Buffers. +// +// The NN field indicates the number of bytes read or written from/to +// OOB. +// +// The Flags field contains protocol-specific information on the +// received message. +type Message = socket.Message + +// ReadBatch reads a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_PEEK. +// +// On a successful read it returns the number of messages received, up +// to len(ms). +// +// On Linux, a batch read will be optimized. +// On other platforms, this method will read only a single message. +func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.RecvMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.RecvMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} + +// WriteBatch writes a batch of messages. +// +// The provided flags is a set of platform-dependent flags, such as +// syscall.MSG_DONTROUTE. +// +// It returns the number of messages written on a successful write. +// +// On Linux, a batch write will be optimized. +// On other platforms, this method will write only a single message. +func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + switch runtime.GOOS { + case "linux": + n, err := c.SendMsgs([]socket.Message(ms), flags) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + default: + n := 1 + err := c.SendMsg(&ms[0], flags) + if err != nil { + n = 0 + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + return n, err + } +} diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go new file mode 100644 index 0000000..2da6444 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control.go @@ -0,0 +1,187 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "fmt" + "net" + "sync" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the +// former still support RFC 2292 only. Please be aware that almost +// all protocol implementations prohibit using a combination of RFC +// 2292 and RFC 3542 for some practical reasons. + +type rawOpt struct { + sync.RWMutex + cflags ControlFlags +} + +func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } +func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } +func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } + +// A ControlFlags represents per packet basis IP-level socket option +// control flags. +type ControlFlags uint + +const ( + FlagTrafficClass ControlFlags = 1 << iota // pass the traffic class on the received packet + FlagHopLimit // pass the hop limit on the received packet + FlagSrc // pass the source address on the received packet + FlagDst // pass the destination address on the received packet + FlagInterface // pass the interface index on the received packet + FlagPathMTU // pass the path MTU on the received packet path +) + +const flagPacketInfo = FlagDst | FlagInterface + +// A ControlMessage represents per packet basis IP-level socket +// options. +type ControlMessage struct { + // Receiving socket options: SetControlMessage allows to + // receive the options from the protocol stack using ReadFrom + // method of PacketConn. + // + // Specifying socket options: ControlMessage for WriteTo + // method of PacketConn allows to send the options to the + // protocol stack. + // + TrafficClass int // traffic class, must be 1 <= value <= 255 when specifying + HopLimit int // hop limit, must be 1 <= value <= 255 when specifying + Src net.IP // source address, specifying only + Dst net.IP // destination address, receiving only + IfIndex int // interface index, must be 1 <= value when specifying + NextHop net.IP // next hop address, specifying only + MTU int // path MTU, receiving only +} + +func (cm *ControlMessage) String() string { + if cm == nil { + return "" + } + return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU) +} + +// Marshal returns the binary encoding of cm. +func (cm *ControlMessage) Marshal() []byte { + if cm == nil { + return nil + } + var l int + tclass := false + if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { + tclass = true + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + hoplimit := false + if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { + hoplimit = true + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + pktinfo := false + if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { + pktinfo = true + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + nexthop := false + if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { + nexthop = true + l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + bb := b + if tclass { + bb = ctlOpts[ctlTrafficClass].marshal(bb, cm) + } + if hoplimit { + bb = ctlOpts[ctlHopLimit].marshal(bb, cm) + } + if pktinfo { + bb = ctlOpts[ctlPacketInfo].marshal(bb, cm) + } + if nexthop { + bb = ctlOpts[ctlNextHop].marshal(bb, cm) + } + } + return b +} + +// Parse parses b as a control message and stores the result in cm. +func (cm *ControlMessage) Parse(b []byte) error { + ms, err := socket.ControlMessage(b).Parse() + if err != nil { + return err + } + for _, m := range ms { + lvl, typ, l, err := m.ParseHeader() + if err != nil { + return err + } + if lvl != iana.ProtocolIPv6 { + continue + } + switch { + case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length: + ctlOpts[ctlTrafficClass].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length: + ctlOpts[ctlHopLimit].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: + ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) + case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length: + ctlOpts[ctlPathMTU].parse(cm, m.Data(l)) + } + } + return nil +} + +// NewControlMessage returns a new control message. +// +// The returned message is large enough for options specified by cf. +func NewControlMessage(cf ControlFlags) []byte { + opt := rawOpt{cflags: cf} + var l int + if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) + } + if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) + } + if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) + } + if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { + l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length) + } + var b []byte + if l > 0 { + b = make([]byte, l) + } + return b +} + +// Ancillary data socket options +const ( + ctlTrafficClass = iota // header field + ctlHopLimit // header field + ctlPacketInfo // inbound or outbound packet path + ctlNextHop // nexthop + ctlPathMTU // path mtu + ctlMax +) + +// A ctlOpt represents a binding for ancillary data socket option. +type ctlOpt struct { + name int // option name, must be equal or greater than 1 + length int // option length + marshal func([]byte, *ControlMessage) []byte + parse func(*ControlMessage, []byte) +} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go new file mode 100644 index 0000000..9fd9eb1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go @@ -0,0 +1,48 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin + +package ipv6 + +import ( + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) + } + return m.Next(4) +} + +func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo) + if cm != nil { + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) + if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { + copy(pi.Addr[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInet6Pktinfo) +} + +func marshal2292NextHop(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6) + if cm != nil { + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) + sa.setSockaddr(cm.NextHop, cm.IfIndex) + } + return m.Next(sizeofSockaddrInet6) +} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go new file mode 100644 index 0000000..8c221b5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go @@ -0,0 +1,94 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +func marshalTrafficClass(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass)) + } + return m.Next(4) +} + +func parseTrafficClass(cm *ControlMessage, b []byte) { + cm.TrafficClass = int(socket.NativeEndian.Uint32(b[:4])) +} + +func marshalHopLimit(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4) + if cm != nil { + socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) + } + return m.Next(4) +} + +func parseHopLimit(cm *ControlMessage, b []byte) { + cm.HopLimit = int(socket.NativeEndian.Uint32(b[:4])) +} + +func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo) + if cm != nil { + pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) + if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { + copy(pi.Addr[:], ip) + } + if cm.IfIndex > 0 { + pi.setIfindex(cm.IfIndex) + } + } + return m.Next(sizeofInet6Pktinfo) +} + +func parsePacketInfo(cm *ControlMessage, b []byte) { + pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0])) + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, pi.Addr[:]) + cm.IfIndex = int(pi.Ifindex) +} + +func marshalNextHop(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6) + if cm != nil { + sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) + sa.setSockaddr(cm.NextHop, cm.IfIndex) + } + return m.Next(sizeofSockaddrInet6) +} + +func parseNextHop(cm *ControlMessage, b []byte) { +} + +func marshalPathMTU(b []byte, cm *ControlMessage) []byte { + m := socket.ControlMessage(b) + m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo) + return m.Next(sizeofIPv6Mtuinfo) +} + +func parsePathMTU(cm *ControlMessage, b []byte) { + mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) + if len(cm.Dst) < net.IPv6len { + cm.Dst = make(net.IP, net.IPv6len) + } + copy(cm.Dst, mi.Addr.Addr[:]) + cm.IfIndex = int(mi.Addr.Scope_id) + cm.MTU = int(mi.Mtu) +} diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go new file mode 100644 index 0000000..1d773cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_stub.go @@ -0,0 +1,13 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go new file mode 100644 index 0000000..0971a00 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_unix.go @@ -0,0 +1,55 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + opt.Lock() + defer opt.Unlock() + if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagTrafficClass) + } else { + opt.clear(FlagTrafficClass) + } + } + if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagHopLimit) + } else { + opt.clear(FlagHopLimit) + } + } + if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(cf & flagPacketInfo) + } else { + opt.clear(cf & flagPacketInfo) + } + } + if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 { + if err := so.SetInt(c, boolint(on)); err != nil { + return err + } + if on { + opt.set(FlagPathMTU) + } else { + opt.clear(FlagPathMTU) + } + } + return nil +} diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go new file mode 100644 index 0000000..8882d81 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/control_windows.go @@ -0,0 +1,12 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/socket" + +func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { + // TODO(mikio): implement this + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/defs_aix.go b/vendor/golang.org/x/net/ipv6/defs_aix.go new file mode 100644 index 0000000..ea396a3 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_aix.go @@ -0,0 +1,82 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_darwin.go b/vendor/golang.org/x/net/ipv6/defs_darwin.go new file mode 100644 index 0000000..55ddc11 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_darwin.go @@ -0,0 +1,112 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#define __APPLE_USE_RFC_3542 +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO + sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT + sysIPV6_2292NEXTHOP = C.IPV6_2292NEXTHOP + sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS + sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS + sysIPV6_2292RTHDR = C.IPV6_2292RTHDR + + sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_TCLASS = C.IPV6_TCLASS + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_MSFILTER = C.IPV6_MSFILTER + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sysIPV6_BOUND_IF = C.IPV6_BOUND_IF + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go new file mode 100644 index 0000000..27a1d1d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go @@ -0,0 +1,82 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_freebsd.go b/vendor/golang.org/x/net/ipv6/defs_freebsd.go new file mode 100644 index 0000000..53e6253 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_freebsd.go @@ -0,0 +1,105 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR + + sysIPV6_BINDANY = C.IPV6_BINDANY + + sysIPV6_MSFILTER = C.IPV6_MSFILTER + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go new file mode 100644 index 0000000..3b697be --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_linux.go @@ -0,0 +1,138 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include +#include +#include +#include +#include +*/ +import "C" + +const ( + sysIPV6_ADDRFORM = C.IPV6_ADDRFORM + sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO + sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS + sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS + sysIPV6_2292RTHDR = C.IPV6_2292RTHDR + sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_FLOWINFO = C.IPV6_FLOWINFO + + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_ADD_MEMBERSHIP = C.IPV6_ADD_MEMBERSHIP + sysIPV6_DROP_MEMBERSHIP = C.IPV6_DROP_MEMBERSHIP + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_MSFILTER = C.MCAST_MSFILTER + sysIPV6_ROUTER_ALERT = C.IPV6_ROUTER_ALERT + sysIPV6_MTU_DISCOVER = C.IPV6_MTU_DISCOVER + sysIPV6_MTU = C.IPV6_MTU + sysIPV6_RECVERR = C.IPV6_RECVERR + sysIPV6_V6ONLY = C.IPV6_V6ONLY + sysIPV6_JOIN_ANYCAST = C.IPV6_JOIN_ANYCAST + sysIPV6_LEAVE_ANYCAST = C.IPV6_LEAVE_ANYCAST + + //sysIPV6_PMTUDISC_DONT = C.IPV6_PMTUDISC_DONT + //sysIPV6_PMTUDISC_WANT = C.IPV6_PMTUDISC_WANT + //sysIPV6_PMTUDISC_DO = C.IPV6_PMTUDISC_DO + //sysIPV6_PMTUDISC_PROBE = C.IPV6_PMTUDISC_PROBE + //sysIPV6_PMTUDISC_INTERFACE = C.IPV6_PMTUDISC_INTERFACE + //sysIPV6_PMTUDISC_OMIT = C.IPV6_PMTUDISC_OMIT + + sysIPV6_FLOWLABEL_MGR = C.IPV6_FLOWLABEL_MGR + sysIPV6_FLOWINFO_SEND = C.IPV6_FLOWINFO_SEND + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + sysIPV6_XFRM_POLICY = C.IPV6_XFRM_POLICY + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RTHDR = C.IPV6_RTHDR + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_TCLASS = C.IPV6_TCLASS + + sysIPV6_ADDR_PREFERENCES = C.IPV6_ADDR_PREFERENCES + + sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP + sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = C.IPV6_PREFER_SRC_PUBTMP_DEFAULT + sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA + sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME + sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA + sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA + + sysIPV6_MINHOPCOUNT = C.IPV6_MINHOPCOUNT + + sysIPV6_ORIGDSTADDR = C.IPV6_ORIGDSTADDR + sysIPV6_RECVORIGDSTADDR = C.IPV6_RECVORIGDSTADDR + sysIPV6_TRANSPARENT = C.IPV6_TRANSPARENT + sysIPV6_UNICAST_IF = C.IPV6_UNICAST_IF + + sysICMPV6_FILTER = C.ICMPV6_FILTER + + sysICMPV6_FILTER_BLOCK = C.ICMPV6_FILTER_BLOCK + sysICMPV6_FILTER_PASS = C.ICMPV6_FILTER_PASS + sysICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS + sysICMPV6_FILTER_PASSONLY = C.ICMPV6_FILTER_PASSONLY + + sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + sizeofIPv6FlowlabelReq = C.sizeof_struct_in6_flowlabel_req + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type kernelSockaddrStorage C.struct___kernel_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6FlowlabelReq C.struct_in6_flowlabel_req + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_netbsd.go b/vendor/golang.org/x/net/ipv6/defs_netbsd.go new file mode 100644 index 0000000..be9ceb9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_netbsd.go @@ -0,0 +1,80 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_openbsd.go b/vendor/golang.org/x/net/ipv6/defs_openbsd.go new file mode 100644 index 0000000..177ddf8 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_openbsd.go @@ -0,0 +1,89 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + sysIPV6_PORTRANGE = C.IPV6_PORTRANGE + sysICMP6_FILTER = C.ICMP6_FILTER + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + + sysIPV6_PATHMTU = C.IPV6_PATHMTU + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + sysIPV6_RTHDR = C.IPV6_RTHDR + + sysIPV6_AUTH_LEVEL = C.IPV6_AUTH_LEVEL + sysIPV6_ESP_TRANS_LEVEL = C.IPV6_ESP_TRANS_LEVEL + sysIPV6_ESP_NETWORK_LEVEL = C.IPV6_ESP_NETWORK_LEVEL + sysIPSEC6_OUTSA = C.IPSEC6_OUTSA + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + + sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL + sysIPV6_IPCOMP_LEVEL = C.IPV6_IPCOMP_LEVEL + + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + sysIPV6_PIPEX = C.IPV6_PIPEX + + sysIPV6_RTABLE = C.IPV6_RTABLE + + sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT + sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH + sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW + + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_solaris.go b/vendor/golang.org/x/net/ipv6/defs_solaris.go new file mode 100644 index 0000000..0f8ce2b --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/defs_solaris.go @@ -0,0 +1,114 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package ipv6 + +/* +#include + +#include +#include +*/ +import "C" + +const ( + sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS + sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF + sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS + sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP + sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP + sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP + + sysIPV6_PKTINFO = C.IPV6_PKTINFO + + sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT + sysIPV6_NEXTHOP = C.IPV6_NEXTHOP + sysIPV6_HOPOPTS = C.IPV6_HOPOPTS + sysIPV6_DSTOPTS = C.IPV6_DSTOPTS + + sysIPV6_RTHDR = C.IPV6_RTHDR + sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS + + sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO + sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT + sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS + + sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR + + sysIPV6_RECVRTHDRDSTOPTS = C.IPV6_RECVRTHDRDSTOPTS + + sysIPV6_CHECKSUM = C.IPV6_CHECKSUM + sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS + sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU + sysIPV6_DONTFRAG = C.IPV6_DONTFRAG + sysIPV6_SEC_OPT = C.IPV6_SEC_OPT + sysIPV6_SRC_PREFERENCES = C.IPV6_SRC_PREFERENCES + sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU + sysIPV6_PATHMTU = C.IPV6_PATHMTU + sysIPV6_TCLASS = C.IPV6_TCLASS + sysIPV6_V6ONLY = C.IPV6_V6ONLY + + sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS + + sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP + sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP + sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE + sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE + sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP + sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP + + sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME + sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA + sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC + sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP + sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA + sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA + + sysIPV6_PREFER_SRC_MIPMASK = C.IPV6_PREFER_SRC_MIPMASK + sysIPV6_PREFER_SRC_MIPDEFAULT = C.IPV6_PREFER_SRC_MIPDEFAULT + sysIPV6_PREFER_SRC_TMPMASK = C.IPV6_PREFER_SRC_TMPMASK + sysIPV6_PREFER_SRC_TMPDEFAULT = C.IPV6_PREFER_SRC_TMPDEFAULT + sysIPV6_PREFER_SRC_CGAMASK = C.IPV6_PREFER_SRC_CGAMASK + sysIPV6_PREFER_SRC_CGADEFAULT = C.IPV6_PREFER_SRC_CGADEFAULT + + sysIPV6_PREFER_SRC_MASK = C.IPV6_PREFER_SRC_MASK + + sysIPV6_PREFER_SRC_DEFAULT = C.IPV6_PREFER_SRC_DEFAULT + + sysIPV6_BOUND_IF = C.IPV6_BOUND_IF + sysIPV6_UNSPEC_SRC = C.IPV6_UNSPEC_SRC + + sysICMP6_FILTER = C.ICMP6_FILTER + + sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage + sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo + + sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + sizeofGroupReq = C.sizeof_struct_group_req + sizeofGroupSourceReq = C.sizeof_struct_group_source_req + + sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +type sockaddrStorage C.struct_sockaddr_storage + +type sockaddrInet6 C.struct_sockaddr_in6 + +type inet6Pktinfo C.struct_in6_pktinfo + +type ipv6Mtuinfo C.struct_ip6_mtuinfo + +type ipv6Mreq C.struct_ipv6_mreq + +type groupReq C.struct_group_req + +type groupSourceReq C.struct_group_source_req + +type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go new file mode 100644 index 0000000..1f422e7 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/dgramopt.go @@ -0,0 +1,301 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + + "golang.org/x/net/bpf" +) + +// MulticastHopLimit returns the hop limit field value for outgoing +// multicast packets. +func (c *dgramOpt) MulticastHopLimit() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetMulticastHopLimit sets the hop limit field value for future +// outgoing multicast packets. +func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastHopLimit] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, hoplim) +} + +// MulticastInterface returns the default interface for multicast +// packet transmissions. +func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return nil, errNotImplemented + } + return so.getMulticastInterface(c.Conn) +} + +// SetMulticastInterface sets the default interface for future +// multicast packet transmissions. +func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastInterface] + if !ok { + return errNotImplemented + } + return so.setMulticastInterface(c.Conn, ifi) +} + +// MulticastLoopback reports whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) MulticastLoopback() (bool, error) { + if !c.ok() { + return false, errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return false, errNotImplemented + } + on, err := so.GetInt(c.Conn) + if err != nil { + return false, err + } + return on == 1, nil +} + +// SetMulticastLoopback sets whether transmitted multicast packets +// should be copied and send back to the originator. +func (c *dgramOpt) SetMulticastLoopback(on bool) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoMulticastLoopback] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, boolint(on)) +} + +// JoinGroup joins the group address group on the interface ifi. +// By default all sources that can cast data to group are accepted. +// It's possible to mute and unmute data transmission from a specific +// source by using ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup. +// JoinGroup uses the system assigned multicast interface when ifi is +// nil, although this is not recommended because the assignment +// depends on platforms and sometimes it might require routing +// configuration. +func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// LeaveGroup leaves the group address group on the interface ifi +// regardless of whether the group is any-source group or +// source-specific group. +func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + return so.setGroup(c.Conn, ifi, grp) +} + +// JoinSourceSpecificGroup joins the source-specific group comprising +// group and source on the interface ifi. +// JoinSourceSpecificGroup uses the system assigned multicast +// interface when ifi is nil, although this is not recommended because +// the assignment depends on platforms and sometimes it might require +// routing configuration. +func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoJoinSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// LeaveSourceSpecificGroup leaves the source-specific group on the +// interface ifi. +func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoLeaveSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// ExcludeSourceSpecificGroup excludes the source-specific group from +// the already joined any-source groups by JoinGroup on the interface +// ifi. +func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoBlockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// IncludeSourceSpecificGroup includes the excluded source-specific +// group by ExcludeSourceSpecificGroup again on the interface ifi. +func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoUnblockSourceGroup] + if !ok { + return errNotImplemented + } + grp := netAddrToIP16(group) + if grp == nil { + return errMissingAddress + } + src := netAddrToIP16(source) + if src == nil { + return errMissingAddress + } + return so.setSourceGroup(c.Conn, ifi, grp, src) +} + +// Checksum reports whether the kernel will compute, store or verify a +// checksum for both incoming and outgoing packets. If on is true, it +// returns an offset in bytes into the data of where the checksum +// field is located. +func (c *dgramOpt) Checksum() (on bool, offset int, err error) { + if !c.ok() { + return false, 0, errInvalidConn + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return false, 0, errNotImplemented + } + offset, err = so.GetInt(c.Conn) + if err != nil { + return false, 0, err + } + if offset < 0 { + return false, 0, nil + } + return true, offset, nil +} + +// SetChecksum enables the kernel checksum processing. If on is ture, +// the offset should be an offset in bytes into the data of where the +// checksum field is located. +func (c *dgramOpt) SetChecksum(on bool, offset int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoChecksum] + if !ok { + return errNotImplemented + } + if !on { + offset = -1 + } + return so.SetInt(c.Conn, offset) +} + +// ICMPFilter returns an ICMP filter. +func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { + if !c.ok() { + return nil, errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return nil, errNotImplemented + } + return so.getICMPFilter(c.Conn) +} + +// SetICMPFilter deploys the ICMP filter. +func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoICMPFilter] + if !ok { + return errNotImplemented + } + return so.setICMPFilter(c.Conn, f) +} + +// SetBPF attaches a BPF program to the connection. +// +// Only supported on Linux. +func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoAttachFilter] + if !ok { + return errNotImplemented + } + return so.setBPF(c.Conn, filter) +} diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go new file mode 100644 index 0000000..e0be9d5 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/doc.go @@ -0,0 +1,243 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package ipv6 implements IP-level socket options for the Internet +// Protocol version 6. +// +// The package provides IP-level socket options that allow +// manipulation of IPv6 facilities. +// +// The IPv6 protocol is defined in RFC 8200. +// Socket interface extensions are defined in RFC 3493, RFC 3542 and +// RFC 3678. +// MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810. +// Source-specific multicast is defined in RFC 4607. +// +// On Darwin, this package requires OS X Mavericks version 10.9 or +// above, or equivalent. +// +// +// Unicasting +// +// The options for unicasting are available for net.TCPConn, +// net.UDPConn and net.IPConn which are created as network connections +// that use the IPv6 transport. When a single TCP connection carrying +// a data flow of multiple packets needs to indicate the flow is +// important, Conn is used to set the traffic class field on the IPv6 +// header for each packet. +// +// ln, err := net.Listen("tcp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer ln.Close() +// for { +// c, err := ln.Accept() +// if err != nil { +// // error handling +// } +// go func(c net.Conn) { +// defer c.Close() +// +// The outgoing packets will be labeled DiffServ assured forwarding +// class 1 low drop precedence, known as AF11 packets. +// +// if err := ipv6.NewConn(c).SetTrafficClass(0x28); err != nil { +// // error handling +// } +// if _, err := c.Write(data); err != nil { +// // error handling +// } +// }(c) +// } +// +// +// Multicasting +// +// The options for multicasting are available for net.UDPConn and +// net.IPConn which are created as network connections that use the +// IPv6 transport. A few network facilities must be prepared before +// you begin multicasting, at a minimum joining network interfaces and +// multicast groups. +// +// en0, err := net.InterfaceByName("en0") +// if err != nil { +// // error handling +// } +// en1, err := net.InterfaceByIndex(911) +// if err != nil { +// // error handling +// } +// group := net.ParseIP("ff02::114") +// +// First, an application listens to an appropriate address with an +// appropriate service port. +// +// c, err := net.ListenPacket("udp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// +// Second, the application joins multicast groups, starts listening to +// the groups on the specified network interfaces. Note that the +// service port for transport layer protocol does not matter with this +// operation as joining groups affects only network and link layer +// protocols, such as IPv6 and Ethernet. +// +// p := ipv6.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { +// // error handling +// } +// +// The application might set per packet control message transmissions +// between the protocol stack within the kernel. When the application +// needs a destination address on an incoming packet, +// SetControlMessage of PacketConn is used to enable control message +// transmissions. +// +// if err := p.SetControlMessage(ipv6.FlagDst, true); err != nil { +// // error handling +// } +// +// The application could identify whether the received packets are +// of interest by using the control message that contains the +// destination address of the received packet. +// +// b := make([]byte, 1500) +// for { +// n, rcm, src, err := p.ReadFrom(b) +// if err != nil { +// // error handling +// } +// if rcm.Dst.IsMulticast() { +// if rcm.Dst.Equal(group) { +// // joined group, do something +// } else { +// // unknown group, discard +// continue +// } +// } +// +// The application can also send both unicast and multicast packets. +// +// p.SetTrafficClass(0x0) +// p.SetHopLimit(16) +// if _, err := p.WriteTo(data[:n], nil, src); err != nil { +// // error handling +// } +// dst := &net.UDPAddr{IP: group, Port: 1024} +// wcm := ipv6.ControlMessage{TrafficClass: 0xe0, HopLimit: 1} +// for _, ifi := range []*net.Interface{en0, en1} { +// wcm.IfIndex = ifi.Index +// if _, err := p.WriteTo(data[:n], &wcm, dst); err != nil { +// // error handling +// } +// } +// } +// +// +// More multicasting +// +// An application that uses PacketConn may join multiple multicast +// groups. For example, a UDP listener with port 1024 might join two +// different groups across over two different network interfaces by +// using: +// +// c, err := net.ListenPacket("udp6", "[::]:1024") +// if err != nil { +// // error handling +// } +// defer c.Close() +// p := ipv6.NewPacketConn(c) +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { +// // error handling +// } +// +// It is possible for multiple UDP listeners that listen on the same +// UDP port to join the same multicast group. The net package will +// provide a socket that listens to a wildcard address with reusable +// UDP port when an appropriate multicast address prefix is passed to +// the net.ListenPacket or net.ListenUDP. +// +// c1, err := net.ListenPacket("udp6", "[ff02::]:1024") +// if err != nil { +// // error handling +// } +// defer c1.Close() +// c2, err := net.ListenPacket("udp6", "[ff02::]:1024") +// if err != nil { +// // error handling +// } +// defer c2.Close() +// p1 := ipv6.NewPacketConn(c1) +// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// p2 := ipv6.NewPacketConn(c2) +// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// +// Also it is possible for the application to leave or rejoin a +// multicast group on the network interface. +// +// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { +// // error handling +// } +// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff01::114")}); err != nil { +// // error handling +// } +// +// +// Source-specific multicasting +// +// An application that uses PacketConn on MLDv2 supported platform is +// able to join source-specific multicast groups. +// The application may use JoinSourceSpecificGroup and +// LeaveSourceSpecificGroup for the operation known as "include" mode, +// +// ssmgroup := net.UDPAddr{IP: net.ParseIP("ff32::8000:9")} +// ssmsource := net.UDPAddr{IP: net.ParseIP("fe80::cafe")} +// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { +// // error handling +// } +// +// or JoinGroup, ExcludeSourceSpecificGroup, +// IncludeSourceSpecificGroup and LeaveGroup for the operation known +// as "exclude" mode. +// +// exclsource := net.UDPAddr{IP: net.ParseIP("fe80::dead")} +// if err := p.JoinGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { +// // error handling +// } +// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { +// // error handling +// } +// +// Note that it depends on each platform implementation what happens +// when an application which runs on MLDv2 unsupported platform uses +// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. +// In general the platform tries to fall back to conversations using +// MLDv1 and starts to listen to multicast traffic. +// In the fallback case, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup may return an error. +package ipv6 // import "golang.org/x/net/ipv6" + +// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go new file mode 100644 index 0000000..f534a0b --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/endpoint.go @@ -0,0 +1,127 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "time" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the JoinSourceSpecificGroup, +// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and +// IncludeSourceSpecificGroup methods of PacketConn are not +// implemented. + +// A Conn represents a network endpoint that uses IPv6 transport. +// It allows to set basic IP-level socket options such as traffic +// class and hop limit. +type Conn struct { + genericOpt +} + +type genericOpt struct { + *socket.Conn +} + +func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } + +// PathMTU returns a path MTU value for the destination associated +// with the endpoint. +func (c *Conn) PathMTU() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoPathMTU] + if !ok { + return 0, errNotImplemented + } + _, mtu, err := so.getMTUInfo(c.Conn) + if err != nil { + return 0, err + } + return mtu, nil +} + +// NewConn returns a new Conn. +func NewConn(c net.Conn) *Conn { + cc, _ := socket.NewConn(c) + return &Conn{ + genericOpt: genericOpt{Conn: cc}, + } +} + +// A PacketConn represents a packet network endpoint that uses IPv6 +// transport. It is used to control several IP-level socket options +// including IPv6 header manipulation. It also provides datagram +// based network I/O methods specific to the IPv6 and higher layer +// protocols such as OSPF, GRE, and UDP. +type PacketConn struct { + genericOpt + dgramOpt + payloadHandler +} + +type dgramOpt struct { + *socket.Conn +} + +func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } + +// SetControlMessage allows to receive the per packet basis IP-level +// socket options. +func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) +} + +// SetDeadline sets the read and write deadlines associated with the +// endpoint. +func (c *PacketConn) SetDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetDeadline(t) +} + +// SetReadDeadline sets the read deadline associated with the +// endpoint. +func (c *PacketConn) SetReadDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetReadDeadline(t) +} + +// SetWriteDeadline sets the write deadline associated with the +// endpoint. +func (c *PacketConn) SetWriteDeadline(t time.Time) error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.SetWriteDeadline(t) +} + +// Close closes the endpoint. +func (c *PacketConn) Close() error { + if !c.payloadHandler.ok() { + return errInvalidConn + } + return c.payloadHandler.Close() +} + +// NewPacketConn returns a new PacketConn using c as its underlying +// transport. +func NewPacketConn(c net.PacketConn) *PacketConn { + cc, _ := socket.NewConn(c.(net.Conn)) + return &PacketConn{ + genericOpt: genericOpt{Conn: cc}, + dgramOpt: dgramOpt{Conn: cc}, + payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, + } +} diff --git a/vendor/golang.org/x/net/ipv6/gen.go b/vendor/golang.org/x/net/ipv6/gen.go new file mode 100644 index 0000000..5885664 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/gen.go @@ -0,0 +1,199 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +//go:generate go run gen.go + +// This program generates system adaptation constants and types, +// internet protocol constants and tables by reading template files +// and IANA protocol registries. +package main + +import ( + "bytes" + "encoding/xml" + "fmt" + "go/format" + "io" + "io/ioutil" + "net/http" + "os" + "os/exec" + "runtime" + "strconv" + "strings" +) + +func main() { + if err := genzsys(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + if err := geniana(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func genzsys() error { + defs := "defs_" + runtime.GOOS + ".go" + f, err := os.Open(defs) + if err != nil { + if os.IsNotExist(err) { + return nil + } + return err + } + f.Close() + cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) + b, err := cmd.Output() + if err != nil { + return err + } + b, err = format.Source(b) + if err != nil { + return err + } + zsys := "zsys_" + runtime.GOOS + ".go" + switch runtime.GOOS { + case "freebsd", "linux": + zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" + } + if err := ioutil.WriteFile(zsys, b, 0644); err != nil { + return err + } + return nil +} + +var registries = []struct { + url string + parse func(io.Writer, io.Reader) error +}{ + { + "https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml", + parseICMPv6Parameters, + }, +} + +func geniana() error { + var bb bytes.Buffer + fmt.Fprintf(&bb, "// go generate gen.go\n") + fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") + fmt.Fprintf(&bb, "package ipv6\n\n") + for _, r := range registries { + resp, err := http.Get(r.url) + if err != nil { + return err + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) + } + if err := r.parse(&bb, resp.Body); err != nil { + return err + } + fmt.Fprintf(&bb, "\n") + } + b, err := format.Source(bb.Bytes()) + if err != nil { + return err + } + if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { + return err + } + return nil +} + +func parseICMPv6Parameters(w io.Writer, r io.Reader) error { + dec := xml.NewDecoder(r) + var icp icmpv6Parameters + if err := dec.Decode(&icp); err != nil { + return err + } + prs := icp.escape() + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "const (\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Name, pr.Value) + fmt.Fprintf(w, "// %s\n", pr.OrigName) + } + fmt.Fprintf(w, ")\n\n") + fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) + fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") + for _, pr := range prs { + if pr.Name == "" { + continue + } + fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigName)) + } + fmt.Fprintf(w, "}\n") + return nil +} + +type icmpv6Parameters struct { + XMLName xml.Name `xml:"registry"` + Title string `xml:"title"` + Updated string `xml:"updated"` + Registries []struct { + Title string `xml:"title"` + Records []struct { + Value string `xml:"value"` + Name string `xml:"name"` + } `xml:"record"` + } `xml:"registry"` +} + +type canonICMPv6ParamRecord struct { + OrigName string + Name string + Value int +} + +func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord { + id := -1 + for i, r := range icp.Registries { + if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { + id = i + break + } + } + if id < 0 { + return nil + } + prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records)) + sr := strings.NewReplacer( + "Messages", "", + "Message", "", + "ICMP", "", + "+", "P", + "-", "", + "/", "", + ".", "", + " ", "", + ) + for i, pr := range icp.Registries[id].Records { + if strings.Contains(pr.Name, "Reserved") || + strings.Contains(pr.Name, "Unassigned") || + strings.Contains(pr.Name, "Deprecated") || + strings.Contains(pr.Name, "Experiment") || + strings.Contains(pr.Name, "experiment") { + continue + } + ss := strings.Split(pr.Name, "\n") + if len(ss) > 1 { + prs[i].Name = strings.Join(ss, " ") + } else { + prs[i].Name = ss[0] + } + s := strings.TrimSpace(prs[i].Name) + prs[i].OrigName = s + prs[i].Name = sr.Replace(s) + prs[i].Value, _ = strconv.Atoi(pr.Value) + } + return prs +} diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go new file mode 100644 index 0000000..0326aed --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/genericopt.go @@ -0,0 +1,56 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +// TrafficClass returns the traffic class field value for outgoing +// packets. +func (c *genericOpt) TrafficClass() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetTrafficClass sets the traffic class field value for future +// outgoing packets. +func (c *genericOpt) SetTrafficClass(tclass int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoTrafficClass] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, tclass) +} + +// HopLimit returns the hop limit field value for outgoing packets. +func (c *genericOpt) HopLimit() (int, error) { + if !c.ok() { + return 0, errInvalidConn + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return 0, errNotImplemented + } + return so.GetInt(c.Conn) +} + +// SetHopLimit sets the hop limit field value for future outgoing +// packets. +func (c *genericOpt) SetHopLimit(hoplim int) error { + if !c.ok() { + return errInvalidConn + } + so, ok := sockOpts[ssoHopLimit] + if !ok { + return errNotImplemented + } + return so.SetInt(c.Conn, hoplim) +} diff --git a/vendor/golang.org/x/net/ipv6/header.go b/vendor/golang.org/x/net/ipv6/header.go new file mode 100644 index 0000000..e05cb08 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/header.go @@ -0,0 +1,55 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "encoding/binary" + "fmt" + "net" +) + +const ( + Version = 6 // protocol version + HeaderLen = 40 // header length +) + +// A Header represents an IPv6 base header. +type Header struct { + Version int // protocol version + TrafficClass int // traffic class + FlowLabel int // flow label + PayloadLen int // payload length + NextHeader int // next header + HopLimit int // hop limit + Src net.IP // source address + Dst net.IP // destination address +} + +func (h *Header) String() string { + if h == nil { + return "" + } + return fmt.Sprintf("ver=%d tclass=%#x flowlbl=%#x payloadlen=%d nxthdr=%d hoplim=%d src=%v dst=%v", h.Version, h.TrafficClass, h.FlowLabel, h.PayloadLen, h.NextHeader, h.HopLimit, h.Src, h.Dst) +} + +// ParseHeader parses b as an IPv6 base header. +func ParseHeader(b []byte) (*Header, error) { + if len(b) < HeaderLen { + return nil, errHeaderTooShort + } + h := &Header{ + Version: int(b[0]) >> 4, + TrafficClass: int(b[0]&0x0f)<<4 | int(b[1])>>4, + FlowLabel: int(b[1]&0x0f)<<16 | int(b[2])<<8 | int(b[3]), + PayloadLen: int(binary.BigEndian.Uint16(b[4:6])), + NextHeader: int(b[6]), + HopLimit: int(b[7]), + } + h.Src = make(net.IP, net.IPv6len) + copy(h.Src, b[8:24]) + h.Dst = make(net.IP, net.IPv6len) + copy(h.Dst, b[24:40]) + return h, nil +} diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go new file mode 100644 index 0000000..f767b1f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/helper.go @@ -0,0 +1,59 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "errors" + "net" + "runtime" +) + +var ( + errInvalidConn = errors.New("invalid connection") + errMissingAddress = errors.New("missing address") + errHeaderTooShort = errors.New("header too short") + errInvalidConnType = errors.New("invalid conn type") + errNoSuchInterface = errors.New("no such interface") + errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) +) + +func boolint(b bool) int { + if b { + return 1 + } + return 0 +} + +func netAddrToIP16(a net.Addr) net.IP { + switch v := a.(type) { + case *net.UDPAddr: + if ip := v.IP.To16(); ip != nil && ip.To4() == nil { + return ip + } + case *net.IPAddr: + if ip := v.IP.To16(); ip != nil && ip.To4() == nil { + return ip + } + } + return nil +} + +func opAddr(a net.Addr) net.Addr { + switch a.(type) { + case *net.TCPAddr: + if a == nil { + return nil + } + case *net.UDPAddr: + if a == nil { + return nil + } + case *net.IPAddr: + if a == nil { + return nil + } + } + return a +} diff --git a/vendor/golang.org/x/net/ipv6/iana.go b/vendor/golang.org/x/net/ipv6/iana.go new file mode 100644 index 0000000..32db1aa --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/iana.go @@ -0,0 +1,86 @@ +// go generate gen.go +// Code generated by the command above; DO NOT EDIT. + +package ipv6 + +// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 +const ( + ICMPTypeDestinationUnreachable ICMPType = 1 // Destination Unreachable + ICMPTypePacketTooBig ICMPType = 2 // Packet Too Big + ICMPTypeTimeExceeded ICMPType = 3 // Time Exceeded + ICMPTypeParameterProblem ICMPType = 4 // Parameter Problem + ICMPTypeEchoRequest ICMPType = 128 // Echo Request + ICMPTypeEchoReply ICMPType = 129 // Echo Reply + ICMPTypeMulticastListenerQuery ICMPType = 130 // Multicast Listener Query + ICMPTypeMulticastListenerReport ICMPType = 131 // Multicast Listener Report + ICMPTypeMulticastListenerDone ICMPType = 132 // Multicast Listener Done + ICMPTypeRouterSolicitation ICMPType = 133 // Router Solicitation + ICMPTypeRouterAdvertisement ICMPType = 134 // Router Advertisement + ICMPTypeNeighborSolicitation ICMPType = 135 // Neighbor Solicitation + ICMPTypeNeighborAdvertisement ICMPType = 136 // Neighbor Advertisement + ICMPTypeRedirect ICMPType = 137 // Redirect Message + ICMPTypeRouterRenumbering ICMPType = 138 // Router Renumbering + ICMPTypeNodeInformationQuery ICMPType = 139 // ICMP Node Information Query + ICMPTypeNodeInformationResponse ICMPType = 140 // ICMP Node Information Response + ICMPTypeInverseNeighborDiscoverySolicitation ICMPType = 141 // Inverse Neighbor Discovery Solicitation Message + ICMPTypeInverseNeighborDiscoveryAdvertisement ICMPType = 142 // Inverse Neighbor Discovery Advertisement Message + ICMPTypeVersion2MulticastListenerReport ICMPType = 143 // Version 2 Multicast Listener Report + ICMPTypeHomeAgentAddressDiscoveryRequest ICMPType = 144 // Home Agent Address Discovery Request Message + ICMPTypeHomeAgentAddressDiscoveryReply ICMPType = 145 // Home Agent Address Discovery Reply Message + ICMPTypeMobilePrefixSolicitation ICMPType = 146 // Mobile Prefix Solicitation + ICMPTypeMobilePrefixAdvertisement ICMPType = 147 // Mobile Prefix Advertisement + ICMPTypeCertificationPathSolicitation ICMPType = 148 // Certification Path Solicitation Message + ICMPTypeCertificationPathAdvertisement ICMPType = 149 // Certification Path Advertisement Message + ICMPTypeMulticastRouterAdvertisement ICMPType = 151 // Multicast Router Advertisement + ICMPTypeMulticastRouterSolicitation ICMPType = 152 // Multicast Router Solicitation + ICMPTypeMulticastRouterTermination ICMPType = 153 // Multicast Router Termination + ICMPTypeFMIPv6 ICMPType = 154 // FMIPv6 Messages + ICMPTypeRPLControl ICMPType = 155 // RPL Control Message + ICMPTypeILNPv6LocatorUpdate ICMPType = 156 // ILNPv6 Locator Update Message + ICMPTypeDuplicateAddressRequest ICMPType = 157 // Duplicate Address Request + ICMPTypeDuplicateAddressConfirmation ICMPType = 158 // Duplicate Address Confirmation + ICMPTypeMPLControl ICMPType = 159 // MPL Control Message + ICMPTypeExtendedEchoRequest ICMPType = 160 // Extended Echo Request + ICMPTypeExtendedEchoReply ICMPType = 161 // Extended Echo Reply +) + +// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 +var icmpTypes = map[ICMPType]string{ + 1: "destination unreachable", + 2: "packet too big", + 3: "time exceeded", + 4: "parameter problem", + 128: "echo request", + 129: "echo reply", + 130: "multicast listener query", + 131: "multicast listener report", + 132: "multicast listener done", + 133: "router solicitation", + 134: "router advertisement", + 135: "neighbor solicitation", + 136: "neighbor advertisement", + 137: "redirect message", + 138: "router renumbering", + 139: "icmp node information query", + 140: "icmp node information response", + 141: "inverse neighbor discovery solicitation message", + 142: "inverse neighbor discovery advertisement message", + 143: "version 2 multicast listener report", + 144: "home agent address discovery request message", + 145: "home agent address discovery reply message", + 146: "mobile prefix solicitation", + 147: "mobile prefix advertisement", + 148: "certification path solicitation message", + 149: "certification path advertisement message", + 151: "multicast router advertisement", + 152: "multicast router solicitation", + 153: "multicast router termination", + 154: "fmipv6 messages", + 155: "rpl control message", + 156: "ilnpv6 locator update message", + 157: "duplicate address request", + 158: "duplicate address confirmation", + 159: "mpl control message", + 160: "extended echo request", + 161: "extended echo reply", +} diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go new file mode 100644 index 0000000..b7f48e2 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp.go @@ -0,0 +1,60 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/iana" + +// BUG(mikio): On Windows, methods related to ICMPFilter are not +// implemented. + +// An ICMPType represents a type of ICMP message. +type ICMPType int + +func (typ ICMPType) String() string { + s, ok := icmpTypes[typ] + if !ok { + return "" + } + return s +} + +// Protocol returns the ICMPv6 protocol number. +func (typ ICMPType) Protocol() int { + return iana.ProtocolIPv6ICMP +} + +// An ICMPFilter represents an ICMP message filter for incoming +// packets. The filter belongs to a packet delivery path on a host and +// it cannot interact with forwarding packets or tunnel-outer packets. +// +// Note: RFC 8200 defines a reasonable role model. A node means a +// device that implements IP. A router means a node that forwards IP +// packets not explicitly addressed to itself, and a host means a node +// that is not a router. +type ICMPFilter struct { + icmpv6Filter +} + +// Accept accepts incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Accept(typ ICMPType) { + f.accept(typ) +} + +// Block blocks incoming ICMP packets including the type field value +// typ. +func (f *ICMPFilter) Block(typ ICMPType) { + f.block(typ) +} + +// SetAll sets the filter action to the filter. +func (f *ICMPFilter) SetAll(block bool) { + f.setAll(block) +} + +// WillBlock reports whether the ICMP type will be blocked. +func (f *ICMPFilter) WillBlock(typ ICMPType) bool { + return f.willBlock(typ) +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_bsd.go b/vendor/golang.org/x/net/ipv6/icmp_bsd.go new file mode 100644 index 0000000..b03025c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_bsd.go @@ -0,0 +1,29 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd netbsd openbsd + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.Filt[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.Filt { + if block { + f.Filt[i] = 0 + } else { + f.Filt[i] = 1<<32 - 1 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_linux.go b/vendor/golang.org/x/net/ipv6/icmp_linux.go new file mode 100644 index 0000000..647f6b4 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_linux.go @@ -0,0 +1,27 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.Data[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.Data[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.Data { + if block { + f.Data[i] = 1<<32 - 1 + } else { + f.Data[i] = 0 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.Data[typ>>5]&(1<<(uint32(typ)&31)) != 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_solaris.go b/vendor/golang.org/x/net/ipv6/icmp_solaris.go new file mode 100644 index 0000000..7c23bb1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_solaris.go @@ -0,0 +1,27 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + f.X__icmp6_filt[typ>>5] |= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) block(typ ICMPType) { + f.X__icmp6_filt[typ>>5] &^= 1 << (uint32(typ) & 31) +} + +func (f *icmpv6Filter) setAll(block bool) { + for i := range f.X__icmp6_filt { + if block { + f.X__icmp6_filt[i] = 0 + } else { + f.X__icmp6_filt[i] = 1<<32 - 1 + } + } +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return f.X__icmp6_filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go new file mode 100644 index 0000000..370e51a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_stub.go @@ -0,0 +1,23 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +type icmpv6Filter struct { +} + +func (f *icmpv6Filter) accept(typ ICMPType) { +} + +func (f *icmpv6Filter) block(typ ICMPType) { +} + +func (f *icmpv6Filter) setAll(block bool) { +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + return false +} diff --git a/vendor/golang.org/x/net/ipv6/icmp_windows.go b/vendor/golang.org/x/net/ipv6/icmp_windows.go new file mode 100644 index 0000000..443cd07 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/icmp_windows.go @@ -0,0 +1,22 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +func (f *icmpv6Filter) accept(typ ICMPType) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) block(typ ICMPType) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) setAll(block bool) { + // TODO(mikio): implement this +} + +func (f *icmpv6Filter) willBlock(typ ICMPType) bool { + // TODO(mikio): implement this + return false +} diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go new file mode 100644 index 0000000..a8197f1 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload.go @@ -0,0 +1,23 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo +// methods of PacketConn is not implemented. + +// A payloadHandler represents the IPv6 datagram payload handler. +type payloadHandler struct { + net.PacketConn + *socket.Conn + rawOpt +} + +func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go new file mode 100644 index 0000000..284a042 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_cmsg.go @@ -0,0 +1,70 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +// ReadFrom reads a payload of the received IPv6 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + c.rawOpt.RLock() + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: NewControlMessage(c.rawOpt.cflags), + } + c.rawOpt.RUnlock() + switch c.PacketConn.(type) { + case *net.UDPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + case *net.IPConn: + if err := c.RecvMsg(&m, 0); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + default: + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} + } + if m.NN > 0 { + cm = new(ControlMessage) + if err := cm.Parse(m.OOB[:m.NN]); err != nil { + return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} + } + cm.Src = netAddrToIP16(m.Addr) + } + return m.N, cm, m.Addr, nil +} + +// WriteTo writes a payload of the IPv6 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The +// cm may be nil if control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + m := socket.Message{ + Buffers: [][]byte{b}, + OOB: cm.Marshal(), + Addr: dst, + } + err = c.SendMsg(&m, 0) + if err != nil { + err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} + } + return m.N, err +} diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go new file mode 100644 index 0000000..c5a4c96 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go @@ -0,0 +1,38 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris + +package ipv6 + +import "net" + +// ReadFrom reads a payload of the received IPv6 datagram, from the +// endpoint c, copying the payload into b. It returns the number of +// bytes copied into b, the control message cm and the source address +// src of the received datagram. +func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { + if !c.ok() { + return 0, nil, nil, errInvalidConn + } + if n, src, err = c.PacketConn.ReadFrom(b); err != nil { + return 0, nil, nil, err + } + return +} + +// WriteTo writes a payload of the IPv6 datagram, to the destination +// address dst through the endpoint c, copying the payload from b. It +// returns the number of bytes written. The control message cm allows +// the IPv6 header fields and the datagram path to be specified. The +// cm may be nil if control of the outgoing datagram is not required. +func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { + if !c.ok() { + return 0, errInvalidConn + } + if dst == nil { + return 0, errMissingAddress + } + return c.PacketConn.WriteTo(b, dst) +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go new file mode 100644 index 0000000..cc3907d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt.go @@ -0,0 +1,43 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import "golang.org/x/net/internal/socket" + +// Sticky socket options +const ( + ssoTrafficClass = iota // header field for unicast packet, RFC 3542 + ssoHopLimit // header field for unicast packet, RFC 3493 + ssoMulticastInterface // outbound interface for multicast packet, RFC 3493 + ssoMulticastHopLimit // header field for multicast packet, RFC 3493 + ssoMulticastLoopback // loopback for multicast packet, RFC 3493 + ssoReceiveTrafficClass // header field on received packet, RFC 3542 + ssoReceiveHopLimit // header field on received packet, RFC 2292 or 3542 + ssoReceivePacketInfo // incbound or outbound packet path, RFC 2292 or 3542 + ssoReceivePathMTU // path mtu, RFC 3542 + ssoPathMTU // path mtu, RFC 3542 + ssoChecksum // packet checksum, RFC 2292 or 3542 + ssoICMPFilter // icmp filter, RFC 2292 or 3542 + ssoJoinGroup // any-source multicast, RFC 3493 + ssoLeaveGroup // any-source multicast, RFC 3493 + ssoJoinSourceGroup // source-specific multicast + ssoLeaveSourceGroup // source-specific multicast + ssoBlockSourceGroup // any-source or source-specific multicast + ssoUnblockSourceGroup // any-source or source-specific multicast + ssoAttachFilter // attach BPF for filtering inbound traffic +) + +// Sticky socket option value types +const ( + ssoTypeIPMreq = iota + 1 + ssoTypeGroupReq + ssoTypeGroupSourceReq +) + +// A sockOpt represents a binding for sticky socket option. +type sockOpt struct { + socket.Option + typ int // hint for option value type; optional +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go new file mode 100644 index 0000000..824c623 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt_posix.go @@ -0,0 +1,89 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv6 + +import ( + "net" + "runtime" + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + n, err := so.GetInt(c) + if err != nil { + return nil, err + } + return net.InterfaceByIndex(n) +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + var n int + if ifi != nil { + n = ifi.Index + } + return so.SetInt(c, n) +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, err + } + if n != sizeofICMPv6Filter { + return nil, errNotImplemented + } + return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter] + return so.Set(c, b) +} + +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { + b := make([]byte, so.Len) + n, err := so.Get(c, b) + if err != nil { + return nil, 0, err + } + if n != sizeofIPv6Mtuinfo { + return nil, 0, errNotImplemented + } + mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) + if mi.Addr.Scope_id == 0 || runtime.GOOS == "aix" { + // AIX kernel might return a wrong address. + return nil, int(mi.Mtu), nil + } + ifi, err := net.InterfaceByIndex(int(mi.Addr.Scope_id)) + if err != nil { + return nil, 0, err + } + return ifi, int(mi.Mtu), nil +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + switch so.typ { + case ssoTypeIPMreq: + return so.setIPMreq(c, ifi, grp) + case ssoTypeGroupReq: + return so.setGroupReq(c, ifi, grp) + default: + return errNotImplemented + } +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return so.setGroupSourceReq(c, ifi, grp, src) +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return so.setAttachFilter(c, f) +} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go new file mode 100644 index 0000000..0a87a93 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sockopt_stub.go @@ -0,0 +1,46 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { + return errNotImplemented +} + +func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { + return nil, errNotImplemented +} + +func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { + return errNotImplemented +} + +func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { + return nil, 0, errNotImplemented +} + +func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_aix.go b/vendor/golang.org/x/net/ipv6/sys_aix.go new file mode 100644 index 0000000..bce7091 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_aix.go @@ -0,0 +1,77 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Added for go1.11 compatibility +// +build aix + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go new file mode 100644 index 0000000..8c3934c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq.go @@ -0,0 +1,24 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var mreq ipv6Mreq + copy(mreq.Multiaddr[:], grp) + if ifi != nil { + mreq.setIfindex(ifi.Index) + } + b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go new file mode 100644 index 0000000..87ae481 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go @@ -0,0 +1,17 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go new file mode 100644 index 0000000..90ef4df --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf.go @@ -0,0 +1,24 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux + +package ipv6 + +import ( + "unsafe" + + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + prog := unix.SockFprog{ + Len: uint16(len(f)), + Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), + } + b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go new file mode 100644 index 0000000..eb9f831 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go @@ -0,0 +1,16 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux + +package ipv6 + +import ( + "golang.org/x/net/bpf" + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go new file mode 100644 index 0000000..e416eaa --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_bsd.go @@ -0,0 +1,57 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build dragonfly netbsd openbsd + +package ipv6 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go new file mode 100644 index 0000000..12cc5cb --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_darwin.go @@ -0,0 +1,78 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go new file mode 100644 index 0000000..85a9f5d --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_freebsd.go @@ -0,0 +1,92 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "runtime" + "strings" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func init() { + if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { + archs, _ := syscall.Sysctl("kern.supported_archs") + for _, s := range strings.Fields(archs) { + if s == "amd64" { + compatFreeBSD32 = true + break + } + } + } +} + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) + sa.Len = sizeofSockaddrInet6 + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go new file mode 100644 index 0000000..96e8093 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_linux.go @@ -0,0 +1,75 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" + "golang.org/x/sys/unix" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = int32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Ifindex = int32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go new file mode 100644 index 0000000..d348b5f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_solaris.go @@ -0,0 +1,74 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + "unsafe" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +var ( + ctlOpts = [ctlMax]ctlOpt{ + ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, + ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, + ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, + ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, + ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, + } + + sockOpts = map[int]*sockOpt{ + ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, + ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, + ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, + ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, + ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, + ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, + ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, + ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (pi *inet6Pktinfo) setIfindex(i int) { + pi.Ifindex = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} + +func (gr *groupReq) setGroup(grp net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) +} + +func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { + sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], grp) + sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], src) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go new file mode 100644 index 0000000..9b52e97 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go @@ -0,0 +1,54 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin freebsd linux solaris + +package ipv6 + +import ( + "net" + "unsafe" + + "golang.org/x/net/internal/socket" +) + +var compatFreeBSD32 bool // 386 emulation on amd64 + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + var gr groupReq + if ifi != nil { + gr.Interface = uint32(ifi.Index) + } + gr.setGroup(grp) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupReq + 4]byte + s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] + } + return so.Set(c, b) +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + var gsr groupSourceReq + if ifi != nil { + gsr.Interface = uint32(ifi.Index) + } + gsr.setSourceGroup(grp, src) + var b []byte + if compatFreeBSD32 { + var d [sizeofGroupSourceReq + 4]byte + s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) + copy(d[:4], s[:4]) + copy(d[8:], s[4:]) + b = d[:] + } else { + b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] + } + return so.Set(c, b) +} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go new file mode 100644 index 0000000..d5bc110 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go @@ -0,0 +1,21 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!freebsd,!linux,!solaris + +package ipv6 + +import ( + "net" + + "golang.org/x/net/internal/socket" +) + +func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { + return errNotImplemented +} + +func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { + return errNotImplemented +} diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go new file mode 100644 index 0000000..4f252d0 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_stub.go @@ -0,0 +1,13 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows + +package ipv6 + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{} +) diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go new file mode 100644 index 0000000..fc36b01 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/sys_windows.go @@ -0,0 +1,75 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package ipv6 + +import ( + "net" + "syscall" + + "golang.org/x/net/internal/iana" + "golang.org/x/net/internal/socket" +) + +const ( + // See ws2tcpip.h. + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PKTINFO = 0x13 + + sizeofSockaddrInet6 = 0x1c + + sizeofIPv6Mreq = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofICMPv6Filter = 0 +) + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type icmpv6Filter struct { + // TODO(mikio): implement this +} + +var ( + ctlOpts = [ctlMax]ctlOpt{} + + sockOpts = map[int]*sockOpt{ + ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, + ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, + ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, + ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, + ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, + } +) + +func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { + sa.Family = syscall.AF_INET6 + copy(sa.Addr[:], ip) + sa.Scope_id = uint32(i) +} + +func (mreq *ipv6Mreq) setIfindex(i int) { + mreq.Interface = uint32(i) +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go new file mode 100644 index 0000000..bf44e33 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go @@ -0,0 +1,103 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_aix.go + +// Added for go1.11 compatibility +// +build aix + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysICMP6_FILTER = 0x26 + + sysIPV6_CHECKSUM = 0x27 + sysIPV6_V6ONLY = 0x25 + + sysIPV6_RTHDRDSTOPTS = 0x37 + + sysIPV6_RECVPKTINFO = 0x23 + sysIPV6_RECVHOPLIMIT = 0x29 + sysIPV6_RECVRTHDR = 0x33 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_RECVDSTOPTS = 0x38 + + sysIPV6_USE_MIN_MTU = 0x2c + sysIPV6_RECVPATHMTU = 0x2f + sysIPV6_PATHMTU = 0x2e + + sysIPV6_PKTINFO = 0x21 + sysIPV6_HOPLIMIT = 0x28 + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x34 + sysIPV6_DSTOPTS = 0x36 + sysIPV6_RTHDR = 0x32 + + sysIPV6_RECVTCLASS = 0x2a + + sysIPV6_TCLASS = 0x2b + sysIPV6_DONTFRAG = 0x2d + + sizeofSockaddrStorage = 0x508 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x510 + sizeofGroupSourceReq = 0xa18 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + X__ss_len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [1265]uint8 + Pad_cgo_0 [7]byte +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_darwin.go b/vendor/golang.org/x/net/ipv6/zsys_darwin.go new file mode 100644 index 0000000..555744a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_darwin.go @@ -0,0 +1,131 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_darwin.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + sysIPV6_2292PKTINFO = 0x13 + sysIPV6_2292HOPLIMIT = 0x14 + sysIPV6_2292NEXTHOP = 0x15 + sysIPV6_2292HOPOPTS = 0x16 + sysIPV6_2292DSTOPTS = 0x17 + sysIPV6_2292RTHDR = 0x18 + + sysIPV6_2292PKTOPTIONS = 0x19 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RECVTCLASS = 0x23 + sysIPV6_TCLASS = 0x24 + + sysIPV6_RTHDRDSTOPTS = 0x39 + + sysIPV6_RECVPKTINFO = 0x3d + + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_MSFILTER = 0x4a + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_BOUND_IF = 0x7d + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [128]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [128]byte + Pad_cgo_1 [128]byte +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go new file mode 100644 index 0000000..cf3cc10 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go @@ -0,0 +1,88 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_dragonfly.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go new file mode 100644 index 0000000..73f31b2 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go @@ -0,0 +1,122 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go new file mode 100644 index 0000000..490ce7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go @@ -0,0 +1,124 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go new file mode 100644 index 0000000..490ce7c --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go @@ -0,0 +1,124 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]int8 + X__ss_align int64 + X__ss_pad2 [112]int8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go new file mode 100644 index 0000000..47e99ac --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go @@ -0,0 +1,122 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_freebsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PREFER_TEMPADDR = 0x3f + + sysIPV6_BINDANY = 0x40 + + sysIPV6_MSFILTER = 0x4a + + sysMCAST_JOIN_GROUP = 0x50 + sysMCAST_LEAVE_GROUP = 0x51 + sysMCAST_JOIN_SOURCE_GROUP = 0x52 + sysMCAST_LEAVE_SOURCE_GROUP = 0x53 + sysMCAST_BLOCK_SOURCE = 0x54 + sysMCAST_UNBLOCK_SOURCE = 0x55 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Len uint8 + Family uint8 + X__ss_pad1 [6]uint8 + X__ss_align int64 + X__ss_pad2 [112]uint8 +} + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Group sockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group sockaddrStorage + Source sockaddrStorage +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go new file mode 100644 index 0000000..bde4a8f --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go new file mode 100644 index 0000000..66fd236 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go @@ -0,0 +1,152 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x84 + sizeofGroupSourceReq = 0x104 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]uint8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go new file mode 100644 index 0000000..6083ddc --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go @@ -0,0 +1,156 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +// +build riscv64 + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go new file mode 100644 index 0000000..992ac9e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go @@ -0,0 +1,154 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_linux.go + +package ipv6 + +const ( + sysIPV6_ADDRFORM = 0x1 + sysIPV6_2292PKTINFO = 0x2 + sysIPV6_2292HOPOPTS = 0x3 + sysIPV6_2292DSTOPTS = 0x4 + sysIPV6_2292RTHDR = 0x5 + sysIPV6_2292PKTOPTIONS = 0x6 + sysIPV6_CHECKSUM = 0x7 + sysIPV6_2292HOPLIMIT = 0x8 + sysIPV6_NEXTHOP = 0x9 + sysIPV6_FLOWINFO = 0xb + + sysIPV6_UNICAST_HOPS = 0x10 + sysIPV6_MULTICAST_IF = 0x11 + sysIPV6_MULTICAST_HOPS = 0x12 + sysIPV6_MULTICAST_LOOP = 0x13 + sysIPV6_ADD_MEMBERSHIP = 0x14 + sysIPV6_DROP_MEMBERSHIP = 0x15 + sysMCAST_JOIN_GROUP = 0x2a + sysMCAST_LEAVE_GROUP = 0x2d + sysMCAST_JOIN_SOURCE_GROUP = 0x2e + sysMCAST_LEAVE_SOURCE_GROUP = 0x2f + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_MSFILTER = 0x30 + sysIPV6_ROUTER_ALERT = 0x16 + sysIPV6_MTU_DISCOVER = 0x17 + sysIPV6_MTU = 0x18 + sysIPV6_RECVERR = 0x19 + sysIPV6_V6ONLY = 0x1a + sysIPV6_JOIN_ANYCAST = 0x1b + sysIPV6_LEAVE_ANYCAST = 0x1c + + sysIPV6_FLOWLABEL_MGR = 0x20 + sysIPV6_FLOWINFO_SEND = 0x21 + + sysIPV6_IPSEC_POLICY = 0x22 + sysIPV6_XFRM_POLICY = 0x23 + + sysIPV6_RECVPKTINFO = 0x31 + sysIPV6_PKTINFO = 0x32 + sysIPV6_RECVHOPLIMIT = 0x33 + sysIPV6_HOPLIMIT = 0x34 + sysIPV6_RECVHOPOPTS = 0x35 + sysIPV6_HOPOPTS = 0x36 + sysIPV6_RTHDRDSTOPTS = 0x37 + sysIPV6_RECVRTHDR = 0x38 + sysIPV6_RTHDR = 0x39 + sysIPV6_RECVDSTOPTS = 0x3a + sysIPV6_DSTOPTS = 0x3b + sysIPV6_RECVPATHMTU = 0x3c + sysIPV6_PATHMTU = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_RECVTCLASS = 0x42 + sysIPV6_TCLASS = 0x43 + + sysIPV6_ADDR_PREFERENCES = 0x48 + + sysIPV6_PREFER_SRC_TMP = 0x1 + sysIPV6_PREFER_SRC_PUBLIC = 0x2 + sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 + sysIPV6_PREFER_SRC_COA = 0x4 + sysIPV6_PREFER_SRC_HOME = 0x400 + sysIPV6_PREFER_SRC_CGA = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x800 + + sysIPV6_MINHOPCOUNT = 0x49 + + sysIPV6_ORIGDSTADDR = 0x4a + sysIPV6_RECVORIGDSTADDR = 0x4a + sysIPV6_TRANSPARENT = 0x4b + sysIPV6_UNICAST_IF = 0x4c + + sysICMPV6_FILTER = 0x1 + + sysICMPV6_FILTER_BLOCK = 0x1 + sysICMPV6_FILTER_PASS = 0x2 + sysICMPV6_FILTER_BLOCKOTHERS = 0x3 + sysICMPV6_FILTER_PASSONLY = 0x4 + + sizeofKernelSockaddrStorage = 0x80 + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + sizeofIPv6FlowlabelReq = 0x20 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x88 + sizeofGroupSourceReq = 0x108 + + sizeofICMPv6Filter = 0x20 +) + +type kernelSockaddrStorage struct { + Family uint16 + X__data [126]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex int32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6FlowlabelReq struct { + Dst [16]byte /* in6_addr */ + Label uint32 + Action uint8 + Share uint8 + Flags uint16 + Expires uint16 + Linger uint16 + X__flr_pad uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Ifindex int32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [4]byte + Group kernelSockaddrStorage + Source kernelSockaddrStorage +} + +type icmpv6Filter struct { + Data [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go new file mode 100644 index 0000000..e39571e --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go @@ -0,0 +1,84 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_netbsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_IPSEC_POLICY = 0x1c + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go new file mode 100644 index 0000000..cc1899a --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go @@ -0,0 +1,93 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_openbsd.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x4 + sysIPV6_MULTICAST_IF = 0x9 + sysIPV6_MULTICAST_HOPS = 0xa + sysIPV6_MULTICAST_LOOP = 0xb + sysIPV6_JOIN_GROUP = 0xc + sysIPV6_LEAVE_GROUP = 0xd + sysIPV6_PORTRANGE = 0xe + sysICMP6_FILTER = 0x12 + + sysIPV6_CHECKSUM = 0x1a + sysIPV6_V6ONLY = 0x1b + + sysIPV6_RTHDRDSTOPTS = 0x23 + + sysIPV6_RECVPKTINFO = 0x24 + sysIPV6_RECVHOPLIMIT = 0x25 + sysIPV6_RECVRTHDR = 0x26 + sysIPV6_RECVHOPOPTS = 0x27 + sysIPV6_RECVDSTOPTS = 0x28 + + sysIPV6_USE_MIN_MTU = 0x2a + sysIPV6_RECVPATHMTU = 0x2b + + sysIPV6_PATHMTU = 0x2c + + sysIPV6_PKTINFO = 0x2e + sysIPV6_HOPLIMIT = 0x2f + sysIPV6_NEXTHOP = 0x30 + sysIPV6_HOPOPTS = 0x31 + sysIPV6_DSTOPTS = 0x32 + sysIPV6_RTHDR = 0x33 + + sysIPV6_AUTH_LEVEL = 0x35 + sysIPV6_ESP_TRANS_LEVEL = 0x36 + sysIPV6_ESP_NETWORK_LEVEL = 0x37 + sysIPSEC6_OUTSA = 0x38 + sysIPV6_RECVTCLASS = 0x39 + + sysIPV6_AUTOFLOWLABEL = 0x3b + sysIPV6_IPCOMP_LEVEL = 0x3c + + sysIPV6_TCLASS = 0x3d + sysIPV6_DONTFRAG = 0x3e + sysIPV6_PIPEX = 0x3f + + sysIPV6_RTABLE = 0x1021 + + sysIPV6_PORTRANGE_DEFAULT = 0x0 + sysIPV6_PORTRANGE_HIGH = 0x1 + sysIPV6_PORTRANGE_LOW = 0x2 + + sizeofSockaddrInet6 = 0x1c + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x20 + + sizeofIPv6Mreq = 0x14 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type icmpv6Filter struct { + Filt [8]uint32 +} diff --git a/vendor/golang.org/x/net/ipv6/zsys_solaris.go b/vendor/golang.org/x/net/ipv6/zsys_solaris.go new file mode 100644 index 0000000..690eef9 --- /dev/null +++ b/vendor/golang.org/x/net/ipv6/zsys_solaris.go @@ -0,0 +1,131 @@ +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs defs_solaris.go + +package ipv6 + +const ( + sysIPV6_UNICAST_HOPS = 0x5 + sysIPV6_MULTICAST_IF = 0x6 + sysIPV6_MULTICAST_HOPS = 0x7 + sysIPV6_MULTICAST_LOOP = 0x8 + sysIPV6_JOIN_GROUP = 0x9 + sysIPV6_LEAVE_GROUP = 0xa + + sysIPV6_PKTINFO = 0xb + + sysIPV6_HOPLIMIT = 0xc + sysIPV6_NEXTHOP = 0xd + sysIPV6_HOPOPTS = 0xe + sysIPV6_DSTOPTS = 0xf + + sysIPV6_RTHDR = 0x10 + sysIPV6_RTHDRDSTOPTS = 0x11 + + sysIPV6_RECVPKTINFO = 0x12 + sysIPV6_RECVHOPLIMIT = 0x13 + sysIPV6_RECVHOPOPTS = 0x14 + + sysIPV6_RECVRTHDR = 0x16 + + sysIPV6_RECVRTHDRDSTOPTS = 0x17 + + sysIPV6_CHECKSUM = 0x18 + sysIPV6_RECVTCLASS = 0x19 + sysIPV6_USE_MIN_MTU = 0x20 + sysIPV6_DONTFRAG = 0x21 + sysIPV6_SEC_OPT = 0x22 + sysIPV6_SRC_PREFERENCES = 0x23 + sysIPV6_RECVPATHMTU = 0x24 + sysIPV6_PATHMTU = 0x25 + sysIPV6_TCLASS = 0x26 + sysIPV6_V6ONLY = 0x27 + + sysIPV6_RECVDSTOPTS = 0x28 + + sysMCAST_JOIN_GROUP = 0x29 + sysMCAST_LEAVE_GROUP = 0x2a + sysMCAST_BLOCK_SOURCE = 0x2b + sysMCAST_UNBLOCK_SOURCE = 0x2c + sysMCAST_JOIN_SOURCE_GROUP = 0x2d + sysMCAST_LEAVE_SOURCE_GROUP = 0x2e + + sysIPV6_PREFER_SRC_HOME = 0x1 + sysIPV6_PREFER_SRC_COA = 0x2 + sysIPV6_PREFER_SRC_PUBLIC = 0x4 + sysIPV6_PREFER_SRC_TMP = 0x8 + sysIPV6_PREFER_SRC_NONCGA = 0x10 + sysIPV6_PREFER_SRC_CGA = 0x20 + + sysIPV6_PREFER_SRC_MIPMASK = 0x3 + sysIPV6_PREFER_SRC_MIPDEFAULT = 0x1 + sysIPV6_PREFER_SRC_TMPMASK = 0xc + sysIPV6_PREFER_SRC_TMPDEFAULT = 0x4 + sysIPV6_PREFER_SRC_CGAMASK = 0x30 + sysIPV6_PREFER_SRC_CGADEFAULT = 0x10 + + sysIPV6_PREFER_SRC_MASK = 0x3f + + sysIPV6_PREFER_SRC_DEFAULT = 0x15 + + sysIPV6_BOUND_IF = 0x41 + sysIPV6_UNSPEC_SRC = 0x42 + + sysICMP6_FILTER = 0x1 + + sizeofSockaddrStorage = 0x100 + sizeofSockaddrInet6 = 0x20 + sizeofInet6Pktinfo = 0x14 + sizeofIPv6Mtuinfo = 0x24 + + sizeofIPv6Mreq = 0x14 + sizeofGroupReq = 0x104 + sizeofGroupSourceReq = 0x204 + + sizeofICMPv6Filter = 0x20 +) + +type sockaddrStorage struct { + Family uint16 + X_ss_pad1 [6]int8 + X_ss_align float64 + X_ss_pad2 [240]int8 +} + +type sockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +type inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type ipv6Mtuinfo struct { + Addr sockaddrInet6 + Mtu uint32 +} + +type ipv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type groupReq struct { + Interface uint32 + Pad_cgo_0 [256]byte +} + +type groupSourceReq struct { + Interface uint32 + Pad_cgo_0 [256]byte + Pad_cgo_1 [256]byte +} + +type icmpv6Filter struct { + X__icmp6_filt [8]uint32 +} diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS new file mode 100644 index 0000000..15167cd --- /dev/null +++ b/vendor/golang.org/x/sys/AUTHORS @@ -0,0 +1,3 @@ +# This source code refers to The Go Authors for copyright purposes. +# The master list of authors is in the main Go distribution, +# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS new file mode 100644 index 0000000..1c4577e --- /dev/null +++ b/vendor/golang.org/x/sys/CONTRIBUTORS @@ -0,0 +1,3 @@ +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE new file mode 100644 index 0000000..6a66aea --- /dev/null +++ b/vendor/golang.org/x/sys/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2009 The Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS new file mode 100644 index 0000000..7330990 --- /dev/null +++ b/vendor/golang.org/x/sys/PATENTS @@ -0,0 +1,22 @@ +Additional IP Rights Grant (Patents) + +"This implementation" means the copyrightable works distributed by +Google as part of the Go project. + +Google hereby grants to You a perpetual, worldwide, non-exclusive, +no-charge, royalty-free, irrevocable (except as stated in this section) +patent license to make, have made, use, offer to sell, sell, import, +transfer and otherwise run, modify and propagate the contents of this +implementation of Go, where such license applies only to those patent +claims, both currently owned or controlled by Google and acquired in +the future, licensable by Google that are necessarily infringed by this +implementation of Go. This grant does not include claims that would be +infringed only as a consequence of further modification of this +implementation. If you or your agent or exclusive licensee institute or +order or agree to the institution of patent litigation against any +entity (including a cross-claim or counterclaim in a lawsuit) alleging +that this implementation of Go or any code incorporated within this +implementation of Go constitutes direct or contributory patent +infringement, or inducement of patent infringement, then any patent +rights granted to you under this License for this implementation of Go +shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go new file mode 100644 index 0000000..da6b9e4 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/byteorder.go @@ -0,0 +1,30 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "encoding/binary" + "runtime" +) + +// hostByteOrder returns binary.LittleEndian on little-endian machines and +// binary.BigEndian on big-endian machines. +func hostByteOrder() binary.ByteOrder { + switch runtime.GOARCH { + case "386", "amd64", "amd64p32", + "arm", "arm64", + "mipsle", "mips64le", "mips64p32le", + "ppc64le", + "riscv", "riscv64": + return binary.LittleEndian + case "armbe", "arm64be", + "mips", "mips64", "mips64p32", + "ppc", "ppc64", + "s390", "s390x", + "sparc", "sparc64": + return binary.BigEndian + } + panic("unknown architecture") +} diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go new file mode 100644 index 0000000..679e78c --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -0,0 +1,126 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package cpu implements processor feature detection for +// various CPU architectures. +package cpu + +// Initialized reports whether the CPU features were initialized. +// +// For some GOOS/GOARCH combinations initialization of the CPU features depends +// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm +// Initialized will report false if reading the file fails. +var Initialized bool + +// CacheLinePad is used to pad structs to avoid false sharing. +type CacheLinePad struct{ _ [cacheLineSize]byte } + +// X86 contains the supported CPU features of the +// current X86/AMD64 platform. If the current platform +// is not X86/AMD64 then all feature flags are false. +// +// X86 is padded to avoid false sharing. Further the HasAVX +// and HasAVX2 are only set if the OS supports XMM and YMM +// registers in addition to the CPUID feature bit being set. +var X86 struct { + _ CacheLinePad + HasAES bool // AES hardware implementation (AES NI) + HasADX bool // Multi-precision add-carry instruction extensions + HasAVX bool // Advanced vector extension + HasAVX2 bool // Advanced vector extension 2 + HasBMI1 bool // Bit manipulation instruction set 1 + HasBMI2 bool // Bit manipulation instruction set 2 + HasERMS bool // Enhanced REP for MOVSB and STOSB + HasFMA bool // Fused-multiply-add instructions + HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. + HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM + HasPOPCNT bool // Hamming weight instruction POPCNT. + HasRDRAND bool // RDRAND instruction (on-chip random number generator) + HasRDSEED bool // RDSEED instruction (on-chip random number generator) + HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) + HasSSE3 bool // Streaming SIMD extension 3 + HasSSSE3 bool // Supplemental streaming SIMD extension 3 + HasSSE41 bool // Streaming SIMD extension 4 and 4.1 + HasSSE42 bool // Streaming SIMD extension 4 and 4.2 + _ CacheLinePad +} + +// ARM64 contains the supported CPU features of the +// current ARMv8(aarch64) platform. If the current platform +// is not arm64 then all feature flags are false. +var ARM64 struct { + _ CacheLinePad + HasFP bool // Floating-point instruction set (always available) + HasASIMD bool // Advanced SIMD (always available) + HasEVTSTRM bool // Event stream support + HasAES bool // AES hardware implementation + HasPMULL bool // Polynomial multiplication instruction set + HasSHA1 bool // SHA1 hardware implementation + HasSHA2 bool // SHA2 hardware implementation + HasCRC32 bool // CRC32 hardware implementation + HasATOMICS bool // Atomic memory operation instruction set + HasFPHP bool // Half precision floating-point instruction set + HasASIMDHP bool // Advanced SIMD half precision instruction set + HasCPUID bool // CPUID identification scheme registers + HasASIMDRDM bool // Rounding double multiply add/subtract instruction set + HasJSCVT bool // Javascript conversion from floating-point to integer + HasFCMA bool // Floating-point multiplication and addition of complex numbers + HasLRCPC bool // Release Consistent processor consistent support + HasDCPOP bool // Persistent memory support + HasSHA3 bool // SHA3 hardware implementation + HasSM3 bool // SM3 hardware implementation + HasSM4 bool // SM4 hardware implementation + HasASIMDDP bool // Advanced SIMD double precision instruction set + HasSHA512 bool // SHA512 hardware implementation + HasSVE bool // Scalable Vector Extensions + HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 + _ CacheLinePad +} + +// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. +// If the current platform is not ppc64/ppc64le then all feature flags are false. +// +// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, +// since there are no optional categories. There are some exceptions that also +// require kernel support to work (DARN, SCV), so there are feature bits for +// those as well. The minimum processor requirement is POWER8 (ISA 2.07). +// The struct is padded to avoid false sharing. +var PPC64 struct { + _ CacheLinePad + HasDARN bool // Hardware random number generator (requires kernel enablement) + HasSCV bool // Syscall vectored (requires kernel enablement) + IsPOWER8 bool // ISA v2.07 (POWER8) + IsPOWER9 bool // ISA v3.00 (POWER9) + _ CacheLinePad +} + +// S390X contains the supported CPU features of the current IBM Z +// (s390x) platform. If the current platform is not IBM Z then all +// feature flags are false. +// +// S390X is padded to avoid false sharing. Further HasVX is only set +// if the OS supports vector registers in addition to the STFLE +// feature bit being set. +var S390X struct { + _ CacheLinePad + HasZARCH bool // z/Architecture mode is active [mandatory] + HasSTFLE bool // store facility list extended + HasLDISP bool // long (20-bit) displacements + HasEIMM bool // 32-bit immediates + HasDFP bool // decimal floating point + HasETF3EH bool // ETF-3 enhanced + HasMSA bool // message security assist (CPACF) + HasAES bool // KM-AES{128,192,256} functions + HasAESCBC bool // KMC-AES{128,192,256} functions + HasAESCTR bool // KMCTR-AES{128,192,256} functions + HasAESGCM bool // KMA-GCM-AES{128,192,256} functions + HasGHASH bool // KIMD-GHASH function + HasSHA1 bool // K{I,L}MD-SHA-1 functions + HasSHA256 bool // K{I,L}MD-SHA-256 functions + HasSHA512 bool // K{I,L}MD-SHA-512 functions + HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions + HasVX bool // vector facility + HasVXE bool // vector-enhancements facility 1 + _ CacheLinePad +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go new file mode 100644 index 0000000..d8c26a0 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go @@ -0,0 +1,30 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix,ppc64 + +package cpu + +import "golang.org/x/sys/unix" + +const cacheLineSize = 128 + +const ( + // getsystemcfg constants + _SC_IMPL = 2 + _IMPL_POWER8 = 0x10000 + _IMPL_POWER9 = 0x20000 +) + +func init() { + impl := unix.Getsystemcfg(_SC_IMPL) + if impl&_IMPL_POWER8 != 0 { + PPC64.IsPOWER8 = true + } + if impl&_IMPL_POWER9 != 0 { + PPC64.IsPOWER9 = true + } + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go new file mode 100644 index 0000000..7f2348b --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_arm.go @@ -0,0 +1,9 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go new file mode 100644 index 0000000..568bcd0 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go @@ -0,0 +1,21 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return true } + +// The following feature detection functions are defined in cpu_s390x.s. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList +func kmQuery() queryResult +func kmcQuery() queryResult +func kmctrQuery() queryResult +func kmaQuery() queryResult +func kimdQuery() queryResult +func klmdQuery() queryResult diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go new file mode 100644 index 0000000..f7cb469 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build !gccgo + +package cpu + +// cpuid is implemented in cpu_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) + +// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler +// and in cpu_gccgo.c for gccgo. +func xgetbv() (eax, edx uint32) diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.c b/vendor/golang.org/x/sys/cpu/cpu_gccgo.c new file mode 100644 index 0000000..e363c7d --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo.c @@ -0,0 +1,43 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build gccgo + +#include +#include + +// Need to wrap __get_cpuid_count because it's declared as static. +int +gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, + uint32_t *eax, uint32_t *ebx, + uint32_t *ecx, uint32_t *edx) +{ + return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); +} + +// xgetbv reads the contents of an XCR (Extended Control Register) +// specified in the ECX register into registers EDX:EAX. +// Currently, the only supported value for XCR is 0. +// +// TODO: Replace with a better alternative: +// +// #include +// +// #pragma GCC target("xsave") +// +// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { +// unsigned long long x = _xgetbv(0); +// *eax = x & 0xffffffff; +// *edx = (x >> 32) & 0xffffffff; +// } +// +// Note that _xgetbv is defined starting with GCC 8. +void +gccgoXgetbv(uint32_t *eax, uint32_t *edx) +{ + __asm(" xorl %%ecx, %%ecx\n" + " xgetbv" + : "=a"(*eax), "=d"(*edx)); +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo.go new file mode 100644 index 0000000..ba49b91 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo.go @@ -0,0 +1,26 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 +// +build gccgo + +package cpu + +//extern gccgoGetCpuidCount +func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) + +func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { + var a, b, c, d uint32 + gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) + return a, b, c, d +} + +//extern gccgoXgetbv +func gccgoXgetbv(eax, edx *uint32) + +func xgetbv() (eax, edx uint32) { + var a, d uint32 + gccgoXgetbv(&a, &d) + return a, d +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go new file mode 100644 index 0000000..aa986f7 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go @@ -0,0 +1,22 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build gccgo + +package cpu + +// haveAsmFunctions reports whether the other functions in this file can +// be safely called. +func haveAsmFunctions() bool { return false } + +// TODO(mundaym): the following feature detection functions are currently +// stubs. See https://golang.org/cl/162887 for how to fix this. +// They are likely to be expensive to call so the results should be cached. +func stfle() facilityList { panic("not implemented for gccgo") } +func kmQuery() queryResult { panic("not implemented for gccgo") } +func kmcQuery() queryResult { panic("not implemented for gccgo") } +func kmctrQuery() queryResult { panic("not implemented for gccgo") } +func kmaQuery() queryResult { panic("not implemented for gccgo") } +func kimdQuery() queryResult { panic("not implemented for gccgo") } +func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go new file mode 100644 index 0000000..76b5f50 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux.go @@ -0,0 +1,59 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !amd64,!amd64p32,!386 + +package cpu + +import ( + "io/ioutil" +) + +const ( + _AT_HWCAP = 16 + _AT_HWCAP2 = 26 + + procAuxv = "/proc/self/auxv" + + uintSize = int(32 << (^uint(0) >> 63)) +) + +// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 +// These are initialized in cpu_$GOARCH.go +// and should not be changed after they are initialized. +var hwCap uint +var hwCap2 uint + +func init() { + buf, err := ioutil.ReadFile(procAuxv) + if err != nil { + // e.g. on android /proc/self/auxv is not accessible, so silently + // ignore the error and leave Initialized = false + return + } + + bo := hostByteOrder() + for len(buf) >= 2*(uintSize/8) { + var tag, val uint + switch uintSize { + case 32: + tag = uint(bo.Uint32(buf[0:])) + val = uint(bo.Uint32(buf[4:])) + buf = buf[8:] + case 64: + tag = uint(bo.Uint64(buf[0:])) + val = uint(bo.Uint64(buf[8:])) + buf = buf[16:] + } + switch tag { + case _AT_HWCAP: + hwCap = val + case _AT_HWCAP2: + hwCap2 = val + } + } + doinit() + + Initialized = true +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go new file mode 100644 index 0000000..fa7fb1b --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go @@ -0,0 +1,67 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 64 + +// HWCAP/HWCAP2 bits. These are exposed by Linux. +const ( + hwcap_FP = 1 << 0 + hwcap_ASIMD = 1 << 1 + hwcap_EVTSTRM = 1 << 2 + hwcap_AES = 1 << 3 + hwcap_PMULL = 1 << 4 + hwcap_SHA1 = 1 << 5 + hwcap_SHA2 = 1 << 6 + hwcap_CRC32 = 1 << 7 + hwcap_ATOMICS = 1 << 8 + hwcap_FPHP = 1 << 9 + hwcap_ASIMDHP = 1 << 10 + hwcap_CPUID = 1 << 11 + hwcap_ASIMDRDM = 1 << 12 + hwcap_JSCVT = 1 << 13 + hwcap_FCMA = 1 << 14 + hwcap_LRCPC = 1 << 15 + hwcap_DCPOP = 1 << 16 + hwcap_SHA3 = 1 << 17 + hwcap_SM3 = 1 << 18 + hwcap_SM4 = 1 << 19 + hwcap_ASIMDDP = 1 << 20 + hwcap_SHA512 = 1 << 21 + hwcap_SVE = 1 << 22 + hwcap_ASIMDFHM = 1 << 23 +) + +func doinit() { + // HWCAP feature bits + ARM64.HasFP = isSet(hwCap, hwcap_FP) + ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) + ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) + ARM64.HasAES = isSet(hwCap, hwcap_AES) + ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) + ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) + ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) + ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) + ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) + ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) + ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) + ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) + ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) + ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) + ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) + ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) + ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) + ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) + ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) + ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) + ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) + ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) + ARM64.HasSVE = isSet(hwCap, hwcap_SVE) + ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go new file mode 100644 index 0000000..6c8d975 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go @@ -0,0 +1,33 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le + +package cpu + +const cacheLineSize = 128 + +// HWCAP/HWCAP2 bits. These are exposed by the kernel. +const ( + // ISA Level + _PPC_FEATURE2_ARCH_2_07 = 0x80000000 + _PPC_FEATURE2_ARCH_3_00 = 0x00800000 + + // CPU features + _PPC_FEATURE2_DARN = 0x00200000 + _PPC_FEATURE2_SCV = 0x00100000 +) + +func doinit() { + // HWCAP2 feature bits + PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) + PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) + PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) + PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go new file mode 100644 index 0000000..d579eae --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go @@ -0,0 +1,161 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +const cacheLineSize = 256 + +const ( + // bit mask values from /usr/include/bits/hwcap.h + hwcap_ZARCH = 2 + hwcap_STFLE = 4 + hwcap_MSA = 8 + hwcap_LDISP = 16 + hwcap_EIMM = 32 + hwcap_DFP = 64 + hwcap_ETF3EH = 256 + hwcap_VX = 2048 + hwcap_VXE = 8192 +) + +// bitIsSet reports whether the bit at index is set. The bit index +// is in big endian order, so bit index 0 is the leftmost bit. +func bitIsSet(bits []uint64, index uint) bool { + return bits[index/64]&((1<<63)>>(index%64)) != 0 +} + +// function is the code for the named cryptographic function. +type function uint8 + +const ( + // KM{,A,C,CTR} function codes + aes128 function = 18 // AES-128 + aes192 function = 19 // AES-192 + aes256 function = 20 // AES-256 + + // K{I,L}MD function codes + sha1 function = 1 // SHA-1 + sha256 function = 2 // SHA-256 + sha512 function = 3 // SHA-512 + sha3_224 function = 32 // SHA3-224 + sha3_256 function = 33 // SHA3-256 + sha3_384 function = 34 // SHA3-384 + sha3_512 function = 35 // SHA3-512 + shake128 function = 36 // SHAKE-128 + shake256 function = 37 // SHAKE-256 + + // KLMD function codes + ghash function = 65 // GHASH +) + +// queryResult contains the result of a Query function +// call. Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type queryResult struct { + bits [2]uint64 +} + +// Has reports whether the given functions are present. +func (q *queryResult) Has(fns ...function) bool { + if len(fns) == 0 { + panic("no function codes provided") + } + for _, f := range fns { + if !bitIsSet(q.bits[:], uint(f)) { + return false + } + } + return true +} + +// facility is a bit index for the named facility. +type facility uint8 + +const ( + // cryptography facilities + msa4 facility = 77 // message-security-assist extension 4 + msa8 facility = 146 // message-security-assist extension 8 +) + +// facilityList contains the result of an STFLE call. +// Bits are numbered in big endian order so the +// leftmost bit (the MSB) is at index 0. +type facilityList struct { + bits [4]uint64 +} + +// Has reports whether the given facilities are present. +func (s *facilityList) Has(fs ...facility) bool { + if len(fs) == 0 { + panic("no facility bits provided") + } + for _, f := range fs { + if !bitIsSet(s.bits[:], uint(f)) { + return false + } + } + return true +} + +func doinit() { + // test HWCAP bit vector + has := func(featureMask uint) bool { + return hwCap&featureMask == featureMask + } + + // mandatory + S390X.HasZARCH = has(hwcap_ZARCH) + + // optional + S390X.HasSTFLE = has(hwcap_STFLE) + S390X.HasLDISP = has(hwcap_LDISP) + S390X.HasEIMM = has(hwcap_EIMM) + S390X.HasETF3EH = has(hwcap_ETF3EH) + S390X.HasDFP = has(hwcap_DFP) + S390X.HasMSA = has(hwcap_MSA) + S390X.HasVX = has(hwcap_VX) + if S390X.HasVX { + S390X.HasVXE = has(hwcap_VXE) + } + + // We need implementations of stfle, km and so on + // to detect cryptographic features. + if !haveAsmFunctions() { + return + } + + // optional cryptographic functions + if S390X.HasMSA { + aes := []function{aes128, aes192, aes256} + + // cipher message + km, kmc := kmQuery(), kmcQuery() + S390X.HasAES = km.Has(aes...) + S390X.HasAESCBC = kmc.Has(aes...) + if S390X.HasSTFLE { + facilities := stfle() + if facilities.Has(msa4) { + kmctr := kmctrQuery() + S390X.HasAESCTR = kmctr.Has(aes...) + } + if facilities.Has(msa8) { + kma := kmaQuery() + S390X.HasAESGCM = kma.Has(aes...) + } + } + + // compute message digest + kimd := kimdQuery() // intermediate (no padding) + klmd := klmdQuery() // last (padding) + S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) + S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) + S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) + S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist + sha3 := []function{ + sha3_224, sha3_256, sha3_384, sha3_512, + shake128, shake256, + } + S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) + } +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go new file mode 100644 index 0000000..f55e0c8 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build mips64 mips64le + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go new file mode 100644 index 0000000..cda87b1 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build mips mipsle + +package cpu + +const cacheLineSize = 32 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go new file mode 100644 index 0000000..dd1e76d --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go @@ -0,0 +1,11 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !linux,arm64 + +package cpu + +const cacheLineSize = 64 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/vendor/golang.org/x/sys/cpu/cpu_s390x.s new file mode 100644 index 0000000..e5037d9 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_s390x.s @@ -0,0 +1,57 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// func stfle() facilityList +TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 + MOVD $ret+0(FP), R1 + MOVD $3, R0 // last doubleword index to store + XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) + WORD $0xb2b01000 // store facility list extended (STFLE) + RET + +// func kmQuery() queryResult +TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KM-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92E0024 // cipher message (KM) + RET + +// func kmcQuery() queryResult +TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMC-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92F0024 // cipher message with chaining (KMC) + RET + +// func kmctrQuery() queryResult +TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMCTR-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB92D4024 // cipher message with counter (KMCTR) + RET + +// func kmaQuery() queryResult +TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KMA-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xb9296024 // cipher message with authentication (KMA) + RET + +// func kimdQuery() queryResult +TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KIMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93E0024 // compute intermediate message digest (KIMD) + RET + +// func klmdQuery() queryResult +TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 + MOVD $0, R0 // set function code to 0 (KLMD-Query) + MOVD $ret+0(FP), R1 // address of 16-byte return value + WORD $0xB93F0024 // compute last message digest (KLMD) + RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go new file mode 100644 index 0000000..bd9bbda --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_wasm.go @@ -0,0 +1,15 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build wasm + +package cpu + +// We're compiling the cpu package for an unknown (software-abstracted) CPU. +// Make CacheLinePad an empty struct and hope that the usual struct alignment +// rules are good enough. + +const cacheLineSize = 0 + +func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go new file mode 100644 index 0000000..d70d317 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -0,0 +1,59 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386 amd64 amd64p32 + +package cpu + +const cacheLineSize = 64 + +func init() { + Initialized = true + + maxID, _, _, _ := cpuid(0, 0) + + if maxID < 1 { + return + } + + _, _, ecx1, edx1 := cpuid(1, 0) + X86.HasSSE2 = isSet(26, edx1) + + X86.HasSSE3 = isSet(0, ecx1) + X86.HasPCLMULQDQ = isSet(1, ecx1) + X86.HasSSSE3 = isSet(9, ecx1) + X86.HasFMA = isSet(12, ecx1) + X86.HasSSE41 = isSet(19, ecx1) + X86.HasSSE42 = isSet(20, ecx1) + X86.HasPOPCNT = isSet(23, ecx1) + X86.HasAES = isSet(25, ecx1) + X86.HasOSXSAVE = isSet(27, ecx1) + X86.HasRDRAND = isSet(30, ecx1) + + osSupportsAVX := false + // For XGETBV, OSXSAVE bit is required and sufficient. + if X86.HasOSXSAVE { + eax, _ := xgetbv() + // Check if XMM and YMM registers have OS support. + osSupportsAVX = isSet(1, eax) && isSet(2, eax) + } + + X86.HasAVX = isSet(28, ecx1) && osSupportsAVX + + if maxID < 7 { + return + } + + _, ebx7, _, _ := cpuid(7, 0) + X86.HasBMI1 = isSet(3, ebx7) + X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX + X86.HasBMI2 = isSet(8, ebx7) + X86.HasERMS = isSet(9, ebx7) + X86.HasRDSEED = isSet(18, ebx7) + X86.HasADX = isSet(19, ebx7) +} + +func isSet(bitpos uint, value uint32) bool { + return value&(1<

          ) { + if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || + $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || + $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { + if ($1 eq 'CTL_NAMES') { + # Top level. + $node = \%mib; + } else { + # Node. + my $nodename = lc($2); + if ($header =~ /^netinet\//) { + $ctlname = "net.inet.$nodename"; + } elsif ($header =~ /^netinet6\//) { + $ctlname = "net.inet6.$nodename"; + } elsif ($header =~ /^net\//) { + $ctlname = "net.$nodename"; + } else { + $ctlname = "$nodename"; + $ctlname =~ s/^(fs|net|kern)_/$1\./; + } + if (exists $ctl_map{$ctlname}) { + $ctlname = $ctl_map{$ctlname}; + } + if (not exists $ctls{$ctlname}) { + &debug("Ignoring $ctlname..."); + next; + } + + # Walk down from the top of the MIB. + $node = \%mib; + foreach my $part (split /\./, $ctlname) { + if (not exists $$node{$part}) { + &debug("Missing node $part"); + $$node{$part} = [ 0, '', {} ]; + } + $node = \%{@{$$node{$part}}[2]}; + } + } + + # Populate current node with entries. + my $i = -1; + while (defined($_) && $_ !~ /^}/) { + $_ =
          ; + $i++ if $_ =~ /{.*}/; + next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; + $$node{$1} = [ $i, $2, {} ]; + } + } + } + close HEADER; +} + +&build_sysctl(\%mib, "", []); + +print < 6.2, pass execpromises to the syscall. + if maj > 6 || (maj == 6 && min > 2) { + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + expr = unsafe.Pointer(exptr) + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgePromises implements the pledge syscall. +// +// This changes the promises and leaves the execpromises untouched. +// +// For more information see pledge(2). +func PledgePromises(promises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, "") + if err != nil { + return err + } + + // This variable holds the execpromises and is always nil. + var expr unsafe.Pointer + + pptr, err := syscall.BytePtrFromString(promises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(unsafe.Pointer(pptr)), uintptr(expr), 0) + if e != 0 { + return e + } + + return nil +} + +// PledgeExecpromises implements the pledge syscall. +// +// This changes the execpromises and leaves the promises untouched. +// +// For more information see pledge(2). +func PledgeExecpromises(execpromises string) error { + maj, min, err := majmin() + if err != nil { + return err + } + + err = pledgeAvailable(maj, min, execpromises) + if err != nil { + return err + } + + // This variable holds the promises and is always nil. + var pptr unsafe.Pointer + + exptr, err := syscall.BytePtrFromString(execpromises) + if err != nil { + return err + } + + _, _, e := syscall.Syscall(SYS_PLEDGE, uintptr(pptr), uintptr(unsafe.Pointer(exptr)), 0) + if e != 0 { + return e + } + + return nil +} + +// majmin returns major and minor version number for an OpenBSD system. +func majmin() (major int, minor int, err error) { + var v Utsname + err = Uname(&v) + if err != nil { + return + } + + major, err = strconv.Atoi(string(v.Release[0])) + if err != nil { + err = errors.New("cannot parse major version number returned by uname") + return + } + + minor, err = strconv.Atoi(string(v.Release[2])) + if err != nil { + err = errors.New("cannot parse minor version number returned by uname") + return + } + + return +} + +// pledgeAvailable checks for availability of the pledge(2) syscall +// based on the running OpenBSD version. +func pledgeAvailable(maj, min int, execpromises string) error { + // If OpenBSD <= 5.9, pledge is not available. + if (maj == 5 && min != 9) || maj < 5 { + return fmt.Errorf("pledge syscall is not available on OpenBSD %d.%d", maj, min) + } + + // If OpenBSD <= 6.2 and execpromises is not empty, + // return an error - execpromises is not available before 6.3 + if (maj < 6 || (maj == 6 && min <= 2)) && execpromises != "" { + return fmt.Errorf("cannot use execpromises on OpenBSD %d.%d", maj, min) + } + + return nil +} diff --git a/vendor/golang.org/x/sys/unix/openbsd_unveil.go b/vendor/golang.org/x/sys/unix/openbsd_unveil.go new file mode 100644 index 0000000..aebc2dc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/openbsd_unveil.go @@ -0,0 +1,44 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build openbsd + +package unix + +import ( + "syscall" + "unsafe" +) + +// Unveil implements the unveil syscall. +// For more information see unveil(2). +// Note that the special case of blocking further +// unveil calls is handled by UnveilBlock. +func Unveil(path string, flags string) error { + pathPtr, err := syscall.BytePtrFromString(path) + if err != nil { + return err + } + flagsPtr, err := syscall.BytePtrFromString(flags) + if err != nil { + return err + } + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(unsafe.Pointer(pathPtr)), uintptr(unsafe.Pointer(flagsPtr)), 0) + if e != 0 { + return e + } + return nil +} + +// UnveilBlock blocks future unveil calls. +// For more information see unveil(2). +func UnveilBlock() error { + // Both pointers must be nil. + var pathUnsafe, flagsUnsafe unsafe.Pointer + _, _, e := syscall.Syscall(SYS_UNVEIL, uintptr(pathUnsafe), uintptr(flagsUnsafe), 0) + if e != 0 { + return e + } + return nil +} diff --git a/vendor/golang.org/x/sys/unix/pagesize_unix.go b/vendor/golang.org/x/sys/unix/pagesize_unix.go new file mode 100644 index 0000000..bc2f362 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/pagesize_unix.go @@ -0,0 +1,15 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// For Unix, get the pagesize from the runtime. + +package unix + +import "syscall" + +func Getpagesize() int { + return syscall.Getpagesize() +} diff --git a/vendor/golang.org/x/sys/unix/race.go b/vendor/golang.org/x/sys/unix/race.go new file mode 100644 index 0000000..61712b5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,race linux,race freebsd,race + +package unix + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/unix/race0.go b/vendor/golang.org/x/sys/unix/race0.go new file mode 100644 index 0000000..ad02667 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly + +package unix + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_linux.go b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go new file mode 100644 index 0000000..6079eb4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_linux.go @@ -0,0 +1,36 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Socket control messages + +package unix + +import "unsafe" + +// UnixCredentials encodes credentials into a socket control message +// for sending to another process. This can be used for +// authentication. +func UnixCredentials(ucred *Ucred) []byte { + b := make([]byte, CmsgSpace(SizeofUcred)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_CREDENTIALS + h.SetLen(CmsgLen(SizeofUcred)) + *((*Ucred)(cmsgData(h))) = *ucred + return b +} + +// ParseUnixCredentials decodes a socket control message that contains +// credentials in a Ucred structure. To receive such a message, the +// SO_PASSCRED option must be enabled on the socket. +func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_CREDENTIALS { + return nil, EINVAL + } + ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0])) + return &ucred, nil +} diff --git a/vendor/golang.org/x/sys/unix/sockcmsg_unix.go b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go new file mode 100644 index 0000000..723b7f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/sockcmsg_unix.go @@ -0,0 +1,120 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Socket control messages + +package unix + +import ( + "runtime" + "unsafe" +) + +// Round the length of a raw sockaddr up to align it properly. +func cmsgAlignOf(salen int) int { + salign := SizeofPtr + + switch runtime.GOOS { + case "aix": + // There is no alignment on AIX. + salign = 1 + case "darwin", "dragonfly", "solaris": + // NOTE: It seems like 64-bit Darwin, DragonFly BSD and + // Solaris kernels still require 32-bit aligned access to + // network subsystem. + if SizeofPtr == 8 { + salign = 4 + } + case "netbsd", "openbsd": + // NetBSD and OpenBSD armv7 require 64-bit alignment. + if runtime.GOARCH == "arm" { + salign = 8 + } + } + + return (salen + salign - 1) & ^(salign - 1) +} + +// CmsgLen returns the value to store in the Len field of the Cmsghdr +// structure, taking into account any necessary alignment. +func CmsgLen(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + datalen +} + +// CmsgSpace returns the number of bytes an ancillary element with +// payload of the passed data length occupies. +func CmsgSpace(datalen int) int { + return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen) +} + +func cmsgData(h *Cmsghdr) unsafe.Pointer { + return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr))) +} + +// SocketControlMessage represents a socket control message. +type SocketControlMessage struct { + Header Cmsghdr + Data []byte +} + +// ParseSocketControlMessage parses b as an array of socket control +// messages. +func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) { + var msgs []SocketControlMessage + i := 0 + for i+CmsgLen(0) <= len(b) { + h, dbuf, err := socketControlMessageHeaderAndData(b[i:]) + if err != nil { + return nil, err + } + m := SocketControlMessage{Header: *h, Data: dbuf} + msgs = append(msgs, m) + i += cmsgAlignOf(int(h.Len)) + } + return msgs, nil +} + +func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) { + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) { + return nil, nil, EINVAL + } + return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil +} + +// UnixRights encodes a set of open file descriptors into a socket +// control message for sending to another process. +func UnixRights(fds ...int) []byte { + datalen := len(fds) * 4 + b := make([]byte, CmsgSpace(datalen)) + h := (*Cmsghdr)(unsafe.Pointer(&b[0])) + h.Level = SOL_SOCKET + h.Type = SCM_RIGHTS + h.SetLen(CmsgLen(datalen)) + data := cmsgData(h) + for _, fd := range fds { + *(*int32)(data) = int32(fd) + data = unsafe.Pointer(uintptr(data) + 4) + } + return b +} + +// ParseUnixRights decodes a socket control message that contains an +// integer array of open file descriptors from another process. +func ParseUnixRights(m *SocketControlMessage) ([]int, error) { + if m.Header.Level != SOL_SOCKET { + return nil, EINVAL + } + if m.Header.Type != SCM_RIGHTS { + return nil, EINVAL + } + fds := make([]int, len(m.Data)>>2) + for i, j := 0, 0; i < len(m.Data); i += 4 { + fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i]))) + j++ + } + return fds, nil +} diff --git a/vendor/golang.org/x/sys/unix/str.go b/vendor/golang.org/x/sys/unix/str.go new file mode 100644 index 0000000..17fb698 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/str.go @@ -0,0 +1,26 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + uitoa(uint(-val)) + } + return uitoa(uint(val)) +} + +func uitoa(val uint) string { + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/unix/syscall.go b/vendor/golang.org/x/sys/unix/syscall.go new file mode 100644 index 0000000..0d4b1d7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall.go @@ -0,0 +1,54 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +// Package unix contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display OS-specific documentation for the current +// system. If you want godoc to display OS documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package unix // import "golang.org/x/sys/unix" + +import "strings" + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + if strings.IndexByte(s, 0) != -1 { + return nil, EINVAL + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mkunix.pl. +var _zero uintptr diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go new file mode 100644 index 0000000..fd83d87 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -0,0 +1,549 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix + +// Aix system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import "unsafe" + +/* + * Wrapped + */ + +//sys utimes(path string, times *[2]Timeval) (err error) +func Utimes(path string, tv []Timeval) error { + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) +func UtimesNano(path string, ts []Timespec) error { + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = uint8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +//sys getcwd(buf []byte) (err error) + +const ImplementsGetwd = true + +func Getwd() (ret string, err error) { + for len := uint64(4096); ; len *= 2 { + b := make([]byte, len) + err := getcwd(b) + if err == nil { + i := 0 + for b[i] != 0 { + i++ + } + return string(b[0:i]), nil + } + if err != ERANGE { + return "", err + } + } +} + +func Getcwd(buf []byte) (n int, err error) { + err = getcwd(buf) + if err == nil { + i := 0 + for buf[i] != 0 { + i++ + } + n = i + 1 + } + return +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +/* + * Socket + */ + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + // Recvmsg not implemented on AIX + sa := new(SockaddrUnix) + return -1, -1, -1, sa, ENOSYS +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + // SendmsgN not implemented on AIX + return -1, ENOSYS +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + + // Some versions of AIX have a bug in getsockname (see IV78655). + // We can't rely on sa.Len being set correctly. + n := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL. + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + n = i + break + } + } + + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Gettimeofday(tv *Timeval) (err error) { + err = gettimeofday(tv, nil) + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +//sys getdirent(fd int, buf []byte) (n int, err error) +func ReadDirent(fd int, buf []byte) (n int, err error) { + return getdirent(fd, buf) +} + +//sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + var r Pid_t + err = ERESTART + // AIX wait4 may return with ERESTART errno, while the processus is still + // active. + for err == ERESTART { + r, err = wait4(Pid_t(pid), &status, options, rusage) + } + wpid = int(r) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +/* + * Wait + */ + +type WaitStatus uint32 + +func (w WaitStatus) Stopped() bool { return w&0x40 != 0 } +func (w WaitStatus) StopSignal() Signal { + if !w.Stopped() { + return -1 + } + return Signal(w>>8) & 0xFF +} + +func (w WaitStatus) Exited() bool { return w&0xFF == 0 } +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int((w >> 8) & 0xFF) +} + +func (w WaitStatus) Signaled() bool { return w&0x40 == 0 && w&0xFF != 0 } +func (w WaitStatus) Signal() Signal { + if !w.Signaled() { + return -1 + } + return Signal(w>>16) & 0xFF +} + +func (w WaitStatus) Continued() bool { return w&0x01000000 != 0 } + +func (w WaitStatus) CoreDump() bool { return w&0x200 != 0 } + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX +// There is no way to create a custom fcntl and to keep //sys fcntl easily, +// Therefore, the programmer must call dup2 instead of fcntl in this case. + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +//sys FcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +//sys FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +/* + * Direct access + */ + +//sys Acct(path string) (err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Fsync(fd int) (err error) +// readdir_r +//sysnb Getpgid(pid int) (pgid int, err error) + +//sys Getpgrp() (pid int) + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Kill(pid int, sig Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = syslog +//sys Mkdir(dirfd int, path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) = open64 +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) + +//sys Setuid(uid int) (err error) +//sys Setgid(uid int) (err error) + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//TODO umount +// //sys Unmount(target string, flags int) (err error) = umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys readlen(fd int, p *byte, np int) (n int, err error) = read +//sys writelen(fd int, p *byte, np int) (n int, err error) = write + +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = pread64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64 +//TODO Select +// //sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) + +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys gettimeofday(tv *Timeval, tzp *Timezone) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) + +//sys Getsystemcfg(label int) (n uint64) diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go new file mode 100644 index 0000000..c28af1f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64 +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) = setrlimit64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek64 + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go new file mode 100644 index 0000000..881cacc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go @@ -0,0 +1,34 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix +// +build ppc64 + +package unix + +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = lseek + +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64 + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int64(sec), Usec: int32(usec)} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go new file mode 100644 index 0000000..33c8b5f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -0,0 +1,624 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd netbsd openbsd + +// BSD system call wrappers shared by *BSD based systems +// including OS X (Darwin) and FreeBSD. Like the other +// syscall_*.go files it is compiled as Go code but also +// used as input to mksyscall which parses the //sys +// lines and generates system call stubs. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 16 on BSD. + if n < 0 || n > 1000 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // 64 bits should be enough. (32 bits isn't even on 386). Since the + // actual system call is getdirentries64, 64 is a good guess. + // TODO(rsc): Can we use a single global basep for all calls? + var base = (*uintptr)(unsafe.Pointer(new(uint64))) + return Getdirentries(fd, buf, base) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys Shutdown(s int, how int) (err error) + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet4 + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Len = SizeofSockaddrInet6 + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) || n == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + return unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil +} + +func (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Index == 0 { + return nil, 0, EINVAL + } + sa.raw.Len = sa.Len + sa.raw.Family = AF_LINK + sa.raw.Index = sa.Index + sa.raw.Type = sa.Type + sa.raw.Nlen = sa.Nlen + sa.raw.Alen = sa.Alen + sa.raw.Slen = sa.Slen + for i := 0; i < len(sa.raw.Data); i++ { + sa.raw.Data[i] = sa.Data[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_LINK: + pp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa)) + sa := new(SockaddrDatalink) + sa.Len = pp.Len + sa.Family = pp.Family + sa.Index = pp.Index + sa.Type = pp.Type + sa.Nlen = pp.Nlen + sa.Alen = pp.Alen + sa.Slen = pp.Slen + for i := 0; i < len(sa.Data); i++ { + sa.Data[i] = pp.Data[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + if pp.Len < 2 || pp.Len > SizeofSockaddrUnix { + return nil, EINVAL + } + sa := new(SockaddrUnix) + + // Some BSDs include the trailing NUL in the length, whereas + // others do not. Work around this by subtracting the leading + // family and len. The path is then scanned to see if a NUL + // terminator still exists within the length. + n := int(pp.Len) - 2 // subtract leading Family, Len + for i := 0; i < n; i++ { + if pp.Path[i] == 0 { + // found early NUL; assume Len included the NUL + // or was overestimating. + n = i + break + } + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + if runtime.GOOS == "darwin" && len == 0 { + // Accepted socket has no address. + // This is likely due to a bug in xnu kernels, + // where instead of ECONNABORTED error socket + // is accepted, but has no address. + Close(nfd) + return 0, nil, ECONNABORTED + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + // TODO(jsing): DragonFly has a "bug" (see issue 3349), which should be + // reported upstream. + if runtime.GOOS == "dragonfly" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 { + rsa.Addr.Family = AF_UNIX + rsa.Addr.Len = SizeofSockaddrUnix + } + return anyToSockaddr(fd, &rsa) +} + +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*byte)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Control = (*byte)(unsafe.Pointer(&oob[0])) + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) + +func Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) { + var change, event unsafe.Pointer + if len(changes) > 0 { + change = unsafe.Pointer(&changes[0]) + } + if len(events) > 0 { + event = unsafe.Pointer(&events[0]) + } + return kevent(kq, change, len(changes), event, len(events), timeout) +} + +//sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL + +// sysctlmib translates name to mib number and appends any additional args. +func sysctlmib(name string, args ...int) ([]_C_int, error) { + // Translate name to mib number. + mib, err := nametomib(name) + if err != nil { + return nil, err + } + + for _, a := range args { + mib = append(mib, _C_int(a)) + } + + return mib, nil +} + +func Sysctl(name string) (string, error) { + return SysctlArgs(name) +} + +func SysctlArgs(name string, args ...int) (string, error) { + buf, err := SysctlRaw(name, args...) + if err != nil { + return "", err + } + n := len(buf) + + // Throw away terminating NUL. + if n > 0 && buf[n-1] == '\x00' { + n-- + } + return string(buf[0:n]), nil +} + +func SysctlUint32(name string) (uint32, error) { + return SysctlUint32Args(name) +} + +func SysctlUint32Args(name string, args ...int) (uint32, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(4) + buf := make([]byte, 4) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 4 { + return 0, EIO + } + return *(*uint32)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlUint64(name string, args ...int) (uint64, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return 0, err + } + + n := uintptr(8) + buf := make([]byte, 8) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return 0, err + } + if n != 8 { + return 0, EIO + } + return *(*uint64)(unsafe.Pointer(&buf[0])), nil +} + +func SysctlRaw(name string, args ...int) ([]byte, error) { + mib, err := sysctlmib(name, args...) + if err != nil { + return nil, err + } + + // Find size. + n := uintptr(0) + if err := sysctl(mib, nil, &n, nil, 0); err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Read into buffer of that size. + buf := make([]byte, n) + if err := sysctl(mib, &buf[0], &n, nil, 0); err != nil { + return nil, err + } + + // The actual call may return less than the original reported required + // size so ensure we deal with that. + return buf[:n], nil +} + +//sys utimes(path string, timeval *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + // Darwin setattrlist can set nanosecond timestamps + err := setattrlistTimes(path, ts, 0) + if err != ENOSYS { + return err + } + err = utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // Not as efficient as it could be because Timespec and + // Timeval have different types in the different OSes + tv := [2]Timeval{ + NsecToTimeval(TimespecToNsec(ts[0])), + NsecToTimeval(TimespecToNsec(ts[1])), + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + err := setattrlistTimes(path, ts, flags) + if err != ENOSYS { + return err + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys futimes(fd int, timeval *[2]Timeval) (err error) + +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimes(fd, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +// TODO: wrap +// Acct(name nil-string) (err error) +// Gethostuuid(uuid *byte, timeout *Timespec) (err error) +// Ptrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, behav int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go new file mode 100644 index 0000000..2120091 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -0,0 +1,706 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Darwin system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "errors" + "syscall" + "unsafe" +) + +const ImplementsGetwd = true + +func Getwd() (string, error) { + buf := make([]byte, 2048) + attrs, err := getAttrList(".", attrList{CommonAttr: attrCmnFullpath}, buf, 0) + if err == nil && len(attrs) == 1 && len(attrs[0]) >= 2 { + wd := string(attrs[0]) + // Sanity check that it's an absolute path and ends + // in a null byte, which we then strip. + if wd[0] == '/' && wd[len(wd)-1] == 0 { + return wd[:len(wd)-1], nil + } + } + // If pkg/os/getwd.go gets ENOTSUP, it will fall back to the + // slow algorithm. + return "", ENOTSUP +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } +func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } + +const ( + attrBitMapCount = 5 + attrCmnFullpath = 0x08000000 +) + +type attrList struct { + bitmapCount uint16 + _ uint16 + CommonAttr uint32 + VolAttr uint32 + DirAttr uint32 + FileAttr uint32 + Forkattr uint32 +} + +func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (attrs [][]byte, err error) { + if len(attrBuf) < 4 { + return nil, errors.New("attrBuf too small") + } + attrList.bitmapCount = attrBitMapCount + + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return nil, err + } + + if err := getattrlist(_p0, unsafe.Pointer(&attrList), unsafe.Pointer(&attrBuf[0]), uintptr(len(attrBuf)), int(options)); err != nil { + return nil, err + } + size := *(*uint32)(unsafe.Pointer(&attrBuf[0])) + + // dat is the section of attrBuf that contains valid data, + // without the 4 byte length header. All attribute offsets + // are relative to dat. + dat := attrBuf + if int(size) < len(attrBuf) { + dat = dat[:size] + } + dat = dat[4:] // remove length prefix + + for i := uint32(0); int(i) < len(dat); { + header := dat[i:] + if len(header) < 8 { + return attrs, errors.New("truncated attribute header") + } + datOff := *(*int32)(unsafe.Pointer(&header[0])) + attrLen := *(*uint32)(unsafe.Pointer(&header[4])) + if datOff < 0 || uint32(datOff)+attrLen > uint32(len(dat)) { + return attrs, errors.New("truncated results; attrBuf too small") + } + end := uint32(datOff) + attrLen + attrs = append(attrs, dat[datOff:end]) + i = end + if r := i % 4; r != 0 { + i += (4 - r) + } + } + return +} + +//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + return getfsstat(_p0, bufsize, flags) +} + +func xattrPointer(dest []byte) *byte { + // It's only when dest is set to NULL that the OS X implementations of + // getxattr() and listxattr() return the current sizes of the named attributes. + // An empty byte array is not sufficient. To maintain the same behaviour as the + // linux implementation, we wrap around the system calls and pass in NULL when + // dest is empty. + var destp *byte + if len(dest) > 0 { + destp = &dest[0] + } + return destp +} + +//sys getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + return getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + return getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW) +} + +//sys fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + return fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0) +} + +//sys setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + // The parameters for the OS X implementation vary slightly compared to the + // linux system call, specifically the position parameter: + // + // linux: + // int setxattr( + // const char *path, + // const char *name, + // const void *value, + // size_t size, + // int flags + // ); + // + // darwin: + // int setxattr( + // const char *path, + // const char *name, + // void *value, + // size_t size, + // u_int32_t position, + // int options + // ); + // + // position specifies the offset within the extended attribute. In the + // current implementation, only the resource fork extended attribute makes + // use of this argument. For all others, position is reserved. We simply + // default to setting it to zero. + return setxattr(path, attr, xattrPointer(data), len(data), 0, flags) +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + return setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW) +} + +//sys fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + return fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0) +} + +//sys removexattr(path string, attr string, options int) (err error) + +func Removexattr(path string, attr string) (err error) { + // We wrap around and explicitly zero out the options provided to the OS X + // implementation of removexattr, we do so for interoperability with the + // linux variant. + return removexattr(path, attr, 0) +} + +func Lremovexattr(link string, attr string) (err error) { + return removexattr(link, attr, XATTR_NOFOLLOW) +} + +//sys fremovexattr(fd int, attr string, options int) (err error) + +func Fremovexattr(fd int, attr string) (err error) { + return fremovexattr(fd, attr, 0) +} + +//sys listxattr(path string, dest *byte, size int, options int) (sz int, err error) + +func Listxattr(path string, dest []byte) (sz int, err error) { + return listxattr(path, xattrPointer(dest), len(dest), 0) +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + return listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW) +} + +//sys flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + return flistxattr(fd, xattrPointer(dest), len(dest), 0) +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + _p0, err := BytePtrFromString(path) + if err != nil { + return err + } + + var attrList attrList + attrList.bitmapCount = ATTR_BIT_MAP_COUNT + attrList.CommonAttr = ATTR_CMN_MODTIME | ATTR_CMN_ACCTIME + + // order is mtime, atime: the opposite of Chtimes + attributes := [2]Timespec{times[1], times[0]} + options := 0 + if flags&AT_SYMLINK_NOFOLLOW != 0 { + options |= FSOPT_NOFOLLOW + } + return setattrlist( + _p0, + unsafe.Pointer(&attrList), + unsafe.Pointer(&attributes), + unsafe.Sizeof(attributes), + options) +} + +//sys setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) error { + // Darwin doesn't support SYS_UTIMENSAT + return ENOSYS +} + +/* + * Wrapped + */ + +//sys kill(pid int, signum int, posix int) (err error) + +func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) } + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var length = int64(count) + err = sendfile(infd, outfd, *offset, &length, nil, 0) + written = int(length) + return +} + +//sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exchangedata(path1 string, path2 string, options int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Getuid() (uid int) +//sysnb Issetugid() (tainted bool) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sys Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setprivexec(flag int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// sendfile +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go new file mode 100644 index 0000000..489726f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go new file mode 100644 index 0000000..914b89b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -0,0 +1,63 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64 +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) = SYS_GETDIRENTRIES64 +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Statfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64 diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go new file mode 100644 index 0000000..4a284cf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -0,0 +1,64 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = int32(sec) + tv.Usec = int32(usec) + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go new file mode 100644 index 0000000..52dcd88 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -0,0 +1,66 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,darwin + +package unix + +import ( + "syscall" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) +func Gettimeofday(tv *Timeval) (err error) { + // The tv passed to gettimeofday must be non-nil + // but is otherwise unused. The answers come back + // in the two registers. + sec, usec, err := gettimeofday(tv) + tv.Sec = sec + tv.Usec = usec + return err +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of darwin/arm64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL + +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return 0, ENOSYS +} diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go new file mode 100644 index 0000000..4b4ae46 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go @@ -0,0 +1,31 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin,go1.12 + +package unix + +import "unsafe" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only +func syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno) +func syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall syscall.syscall +//go:linkname syscall_syscall6 syscall.syscall6 +//go:linkname syscall_syscall6X syscall.syscall6X +//go:linkname syscall_syscall9 syscall.syscall9 +//go:linkname syscall_rawSyscall syscall.rawSyscall +//go:linkname syscall_rawSyscall6 syscall.rawSyscall6 + +// Find the entry point for f. See comments in runtime/proc.go for the +// function of the same name. +//go:nosplit +func funcPC(f func()) uintptr { + return **(**uintptr)(unsafe.Pointer(&f)) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go new file mode 100644 index 0000000..962eee3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -0,0 +1,539 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// DragonFly BSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import "unsafe" + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +//sysnb pipe() (r int, w int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pread(fd int, p []byte, offset int64) (n int, err error) { + return extpread(fd, p, 0, offset) +} + +//sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + return extpwrite(fd, p, 0, offset) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { + err := sysctl(mib, old, oldlen, nil, 0) + if err != nil { + // Utsname members on Dragonfly are only 32 bytes and + // the syscall returns ENOMEM in case the actual value + // is longer. + if err == ENOMEM { + err = nil + } + } + return err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil { + return err + } + uname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil { + return err + } + uname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctlUname(mib, &uname.Release[0], &n); err != nil { + return err + } + uname.Release[unsafe.Sizeof(uname.Release)-1] = 0 + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctlUname(mib, &uname.Version[0], &n); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctlUname(mib, &uname.Machine[0], &n); err != nil { + return err + } + uname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0 + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + * TODO(jsing): Update this list for DragonFly. + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Getxattr +// Fgetxattr +// Setxattr +// Fsetxattr +// Removexattr +// Fremovexattr +// Listxattr +// Flistxattr +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go new file mode 100644 index 0000000..9babb31 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,dragonfly + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go new file mode 100644 index 0000000..a7ca1eb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -0,0 +1,824 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// FreeBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sync" + "unsafe" +) + +const ( + SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } + SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ + SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ + SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ + SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ + SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ + SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ +) + +// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. +var ( + osreldateOnce sync.Once + osreldate uint32 +) + +// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h +const _ino64First = 1200031 + +func supportsABI(ver uint32) bool { + osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) + return osreldate >= ver +} + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 + raw RawSockaddrDatalink +} + +// Translate "kern.hostname" to []_C_int{0,1,2,3}. +func nametomib(name string) (mib []_C_int, err error) { + const siz = unsafe.Sizeof(mib[0]) + + // NOTE(rsc): It seems strange to set the buffer to have + // size CTL_MAXNAME+2 but use only CTL_MAXNAME + // as the size. I don't know why the +2 is here, but the + // kernel uses +2 for its own implementation of this function. + // I am scared that if we don't include the +2 here, the kernel + // will silently write 2 words farther than we specify + // and we'll get memory corruption. + var buf [CTL_MAXNAME + 2]_C_int + n := uintptr(CTL_MAXNAME) * siz + + p := (*byte)(unsafe.Pointer(&buf[0])) + bytes, err := ByteSliceFromString(name) + if err != nil { + return nil, err + } + + // Magic sysctl: "setting" 0.3 to a string name + // lets you read back the array of integers form. + if err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil { + return nil, err + } + return buf[0 : n/siz], nil +} + +func Pipe(p []int) (err error) { + return Pipe2(p, 0) +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) error { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err := pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return err +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + errno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, errno +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var ( + _p0 unsafe.Pointer + bufsize uintptr + oldBuf []statfs_freebsd11_t + needsConvert bool + ) + + if len(buf) > 0 { + if supportsABI(_ino64First) { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } else { + n := len(buf) + oldBuf = make([]statfs_freebsd11_t, n) + _p0 = unsafe.Pointer(&oldBuf[0]) + bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n) + needsConvert = true + } + } + var sysno uintptr = SYS_GETFSSTAT + if supportsABI(_ino64First) { + sysno = SYS_GETFSSTAT_FREEBSD12 + } + r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + if e1 == 0 && needsConvert { + for i := range oldBuf { + buf[i].convertFrom(&oldBuf[i]) + } + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Stat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, 0) + } + err = stat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Lstat(path string, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) + } + err = lstat(path, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstat(fd int, st *Stat_t) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstat_freebsd12(fd, st) + } + err = fstat(fd, &oldStat) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) { + var oldStat stat_freebsd11_t + if supportsABI(_ino64First) { + return fstatat_freebsd12(fd, path, st, flags) + } + err = fstatat(fd, path, &oldStat, flags) + if err != nil { + return err + } + + st.convertFrom(&oldStat) + return nil +} + +func Statfs(path string, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return statfs_freebsd12(path, st) + } + err = statfs(path, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Fstatfs(fd int, st *Statfs_t) (err error) { + var oldStatfs statfs_freebsd11_t + if supportsABI(_ino64First) { + return fstatfs_freebsd12(fd, st) + } + err = fstatfs(fd, &oldStatfs) + if err != nil { + return err + } + + st.convertFrom(&oldStatfs) + return nil +} + +func Getdents(fd int, buf []byte) (n int, err error) { + return Getdirentries(fd, buf, nil) +} + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + if supportsABI(_ino64First) { + return getdirentries_freebsd12(fd, buf, basep) + } + + // The old syscall entries are smaller than the new. Use 1/4 of the original + // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c). + oldBufLen := roundup(len(buf)/4, _dirblksiz) + oldBuf := make([]byte, oldBufLen) + n, err = getdirentries(fd, oldBuf, basep) + if err == nil && n > 0 { + n = convertFromDirents11(buf, oldBuf[:n]) + } + return +} + +func Mknod(path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(AT_FDCWD, path, mode, dev) + } + oldDev = int(dev) + return mknod(path, mode, oldDev) +} + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var oldDev int + if supportsABI(_ino64First) { + return mknodat_freebsd12(fd, path, mode, dev) + } + oldDev = int(dev) + return mknodat(fd, path, mode, oldDev) +} + +// round x to the nearest multiple of y, larger or equal to x. +// +// from /usr/include/sys/param.h Macros for counting and rounding. +// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) +func roundup(x, y int) int { + return ((x + y - 1) / y) * y +} + +func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { + *s = Stat_t{ + Dev: uint64(old.Dev), + Ino: uint64(old.Ino), + Nlink: uint64(old.Nlink), + Mode: old.Mode, + Uid: old.Uid, + Gid: old.Gid, + Rdev: uint64(old.Rdev), + Atim: old.Atim, + Mtim: old.Mtim, + Ctim: old.Ctim, + Birthtim: old.Birthtim, + Size: old.Size, + Blocks: old.Blocks, + Blksize: old.Blksize, + Flags: old.Flags, + Gen: uint64(old.Gen), + } +} + +func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) { + *s = Statfs_t{ + Version: _statfsVersion, + Type: old.Type, + Flags: old.Flags, + Bsize: old.Bsize, + Iosize: old.Iosize, + Blocks: old.Blocks, + Bfree: old.Bfree, + Bavail: old.Bavail, + Files: old.Files, + Ffree: old.Ffree, + Syncwrites: old.Syncwrites, + Asyncwrites: old.Asyncwrites, + Syncreads: old.Syncreads, + Asyncreads: old.Asyncreads, + // Spare + Namemax: old.Namemax, + Owner: old.Owner, + Fsid: old.Fsid, + // Charspare + // Fstypename + // Mntfromname + // Mntonname + } + + sl := old.Fstypename[:] + n := clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Fstypename[:], old.Fstypename[:n]) + + sl = old.Mntfromname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntfromname[:], old.Mntfromname[:n]) + + sl = old.Mntonname[:] + n = clen(*(*[]byte)(unsafe.Pointer(&sl))) + copy(s.Mntonname[:], old.Mntonname[:n]) +} + +func convertFromDirents11(buf []byte, old []byte) int { + const ( + fixedSize = int(unsafe.Offsetof(Dirent{}.Name)) + oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name)) + ) + + dstPos := 0 + srcPos := 0 + for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { + dstDirent := (*Dirent)(unsafe.Pointer(&buf[dstPos])) + srcDirent := (*dirent_freebsd11)(unsafe.Pointer(&old[srcPos])) + + reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) + if dstPos+reclen > len(buf) { + break + } + + dstDirent.Fileno = uint64(srcDirent.Fileno) + dstDirent.Off = 0 + dstDirent.Reclen = uint16(reclen) + dstDirent.Type = srcDirent.Type + dstDirent.Pad0 = 0 + dstDirent.Namlen = uint16(srcDirent.Namlen) + dstDirent.Pad1 = 0 + + copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) + padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] + for i := range padding { + padding[i] = 0 + } + + dstPos += int(dstDirent.Reclen) + srcPos += int(srcDirent.Reclen) + } + + return dstPos +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys CapEnter() (err error) +//sys capRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET +//sys capRightsLimit(fd int, rightsp *CapRights) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys fstat(fd int, stat *stat_freebsd11_t) (err error) +//sys fstat_freebsd12(fd int, stat *Stat_t) (err error) +//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) +//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) +//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error) +//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys Getdtablesize() (size int) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys lstat(path string, stat *stat_freebsd11_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys mknod(path string, mode uint32, dev int) (err error) +//sys mknodat(fd int, path string, mode uint32, dev int) (err error) +//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys stat(path string, stat *stat_freebsd11_t) (err error) +//sys statfs(path string, stat *statfs_freebsd11_t) (err error) +//sys statfs_freebsd12(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Undelete(path string) (err error) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// Profil +// Sigaction +// Sigprocmask +// Getlogin +// Sigpending +// Sigaltstack +// Ioctl +// Reboot +// Execve +// Vfork +// Sbrk +// Sstk +// Ovadvise +// Mincore +// Setitimer +// Swapon +// Select +// Sigsuspend +// Readv +// Writev +// Nfssvc +// Getfh +// Quotactl +// Mount +// Csops +// Waitid +// Add_profil +// Kdebug_trace +// Sigreturn +// Atsocket +// Kqueue_from_portset_np +// Kqueue_portset +// Getattrlist +// Setattrlist +// Getdents +// Getdirentriesattr +// Searchfs +// Delete +// Copyfile +// Watchevent +// Waitevent +// Modwatch +// Fsctl +// Initgroups +// Posix_spawn +// Nfsclnt +// Fhopen +// Minherit +// Semsys +// Msgsys +// Shmsys +// Semctl +// Semget +// Semop +// Msgctl +// Msgget +// Msgsnd +// Msgrcv +// Shmat +// Shmctl +// Shmdt +// Shmget +// Shm_open +// Shm_unlink +// Sem_open +// Sem_close +// Sem_unlink +// Sem_wait +// Sem_trywait +// Sem_post +// Sem_getvalue +// Sem_init +// Sem_destroy +// Open_extended +// Umask_extended +// Stat_extended +// Lstat_extended +// Fstat_extended +// Chmod_extended +// Fchmod_extended +// Access_extended +// Settid +// Gettid +// Setsgroups +// Getsgroups +// Setwgroups +// Getwgroups +// Mkfifo_extended +// Mkdir_extended +// Identitysvc +// Shared_region_check_np +// Shared_region_map_np +// __pthread_mutex_destroy +// __pthread_mutex_init +// __pthread_mutex_lock +// __pthread_mutex_trylock +// __pthread_mutex_unlock +// __pthread_cond_init +// __pthread_cond_destroy +// __pthread_cond_broadcast +// __pthread_cond_signal +// Setsid_with_pid +// __pthread_cond_timedwait +// Aio_fsync +// Aio_return +// Aio_suspend +// Aio_cancel +// Aio_error +// Aio_read +// Aio_write +// Lio_listio +// __pthread_cond_wait +// Iopolicysys +// __pthread_kill +// __pthread_sigmask +// __sigwait +// __disable_threadsignal +// __pthread_markcancel +// __pthread_canceled +// __semwait_signal +// Proc_info +// Stat64_extended +// Lstat64_extended +// Fstat64_extended +// __pthread_chdir +// __pthread_fchdir +// Audit +// Auditon +// Getauid +// Setauid +// Getaudit +// Setaudit +// Getaudit_addr +// Setaudit_addr +// Auditctl +// Bsdthread_create +// Bsdthread_terminate +// Stack_snapshot +// Bsdthread_register +// Workq_open +// Workq_ops +// __mac_execve +// __mac_syscall +// __mac_get_file +// __mac_set_file +// __mac_get_link +// __mac_set_link +// __mac_get_proc +// __mac_set_proc +// __mac_get_fd +// __mac_set_fd +// __mac_get_pid +// __mac_get_lcid +// __mac_get_lctx +// __mac_set_lctx +// Setlcid +// Read_nocancel +// Write_nocancel +// Open_nocancel +// Close_nocancel +// Wait4_nocancel +// Recvmsg_nocancel +// Sendmsg_nocancel +// Recvfrom_nocancel +// Accept_nocancel +// Fcntl_nocancel +// Select_nocancel +// Fsync_nocancel +// Connect_nocancel +// Sigsuspend_nocancel +// Readv_nocancel +// Writev_nocancel +// Sendto_nocancel +// Pread_nocancel +// Pwrite_nocancel +// Waitid_nocancel +// Poll_nocancel +// Msgsnd_nocancel +// Msgrcv_nocancel +// Sem_wait_nocancel +// Aio_suspend_nocancel +// __sigwait_nocancel +// __semwait_signal_nocancel +// __mac_mount +// __mac_get_mount +// __mac_getfsstat diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go new file mode 100644 index 0000000..21e0395 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go new file mode 100644 index 0000000..9c945a6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -0,0 +1,52 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go new file mode 100644 index 0000000..5cd6243 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -0,0 +1,52 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go new file mode 100644 index 0000000..a318054 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -0,0 +1,52 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go new file mode 100644 index 0000000..7e429ab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -0,0 +1,1771 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Linux system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and +// wrap it in our own nicer implementation. + +package unix + +import ( + "encoding/binary" + "net" + "runtime" + "syscall" + "unsafe" +) + +/* + * Wrapped + */ + +func Access(path string, mode uint32) (err error) { + return Faccessat(AT_FDCWD, path, mode, 0) +} + +func Chmod(path string, mode uint32) (err error) { + return Fchmodat(AT_FDCWD, path, mode, 0) +} + +func Chown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, 0) +} + +func Creat(path string, mode uint32) (fd int, err error) { + return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode) +} + +//sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) +//sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) + +func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) { + if pathname == "" { + return fanotifyMark(fd, flags, mask, dirFd, nil) + } + p, err := BytePtrFromString(pathname) + if err != nil { + return err + } + return fanotifyMark(fd, flags, mask, dirFd, p) +} + +//sys fchmodat(dirfd int, path string, mode uint32) (err error) + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + // Linux fchmodat doesn't support the flags parameter. Mimick glibc's behavior + // and check the flags. Otherwise the mode would be applied to the symlink + // destination which is not what the user expects. + if flags&^AT_SYMLINK_NOFOLLOW != 0 { + return EINVAL + } else if flags&AT_SYMLINK_NOFOLLOW != 0 { + return EOPNOTSUPP + } + return fchmodat(dirfd, path, mode) +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetPointerInt performs an ioctl operation which sets an +// integer value on fd, using the specified request number. The ioctl +// argument is called with a pointer to the integer value, rather than +// passing the integer value directly. +func IoctlSetPointerInt(fd int, req uint, value int) error { + v := int32(value) + return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) +} + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetRTCTime(fd int, value *RTCTime) error { + err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) + runtime.KeepAlive(value) + return err +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetRTCTime(fd int) (*RTCTime, error) { + var value RTCTime + err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) + +func Link(oldpath string, newpath string) (err error) { + return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0) +} + +func Mkdir(path string, mode uint32) (err error) { + return Mkdirat(AT_FDCWD, path, mode) +} + +func Mknod(path string, mode uint32, dev int) (err error) { + return Mknodat(AT_FDCWD, path, mode, dev) +} + +func Open(path string, mode int, perm uint32) (fd int, err error) { + return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm) +} + +//sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + return openat(dirfd, path, flags|O_LARGEFILE, mode) +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) + +func Readlink(path string, buf []byte) (n int, err error) { + return Readlinkat(AT_FDCWD, path, buf) +} + +func Rename(oldpath string, newpath string) (err error) { + return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath) +} + +func Rmdir(path string) error { + return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR) +} + +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) + +func Symlink(oldpath string, newpath string) (err error) { + return Symlinkat(oldpath, AT_FDCWD, newpath) +} + +func Unlink(path string) error { + return Unlinkat(AT_FDCWD, path, 0) +} + +//sys Unlinkat(dirfd int, path string, flags int) (err error) + +func Utimes(path string, tv []Timeval) error { + if tv == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + var ts [2]Timespec + ts[0] = NsecToTimespec(TimevalToNsec(tv[0])) + ts[1] = NsecToTimespec(TimevalToNsec(tv[1])) + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + err := utimensat(AT_FDCWD, path, nil, 0) + if err != ENOSYS { + return err + } + return utimes(path, nil) + } + if len(ts) != 2 { + return EINVAL + } + err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) + if err != ENOSYS { + return err + } + // If the utimensat syscall isn't available (utimensat was added to Linux + // in 2.6.22, Released, 8 July 2007) then fall back to utimes + var tv [2]Timeval + for i := 0; i < 2; i++ { + tv[i] = NsecToTimeval(TimespecToNsec(ts[i])) + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +func Futimesat(dirfd int, path string, tv []Timeval) error { + if tv == nil { + return futimesat(dirfd, path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func Futimes(fd int, tv []Timeval) (err error) { + // Believe it or not, this is the best we can do on Linux + // (and is what glibc does). + return Utimes("/proc/self/fd/"+itoa(fd), tv) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + n, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + // Getcwd returns the number of bytes written to buf, including the NUL. + if n < 1 || n > len(buf) || buf[n-1] != 0 { + return "", EINVAL + } + return string(buf[0 : n-1]), nil +} + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + if err != nil { + return nil, err + } + if n == 0 { + return nil, nil + } + + // Sanity check group count. Max is 1<<16 on Linux. + if n < 0 || n > 1<<20 { + return nil, EINVAL + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if err != nil { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +type WaitStatus uint32 + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. At least that's the idea. +// There are various irregularities. For example, the +// "continued" status is 0xFFFF, distinguishing itself +// from stopped via the core dump bit. + +const ( + mask = 0x7F + core = 0x80 + exited = 0x00 + stopped = 0x7F + shift = 8 +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited } + +func (w WaitStatus) Stopped() bool { return w&0xFF == stopped } + +func (w WaitStatus) Continued() bool { return w == 0xFFFF } + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) ExitStatus() int { + if !w.Exited() { + return -1 + } + return int(w>>shift) & 0xFF +} + +func (w WaitStatus) Signal() syscall.Signal { + if !w.Signaled() { + return -1 + } + return syscall.Signal(w & mask) +} + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { + if w.StopSignal() != SIGTRAP { + return -1 + } + return int(w>>shift) >> 8 +} + +//sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { + var status _C_int + wpid, err = wait4(pid, &status, options, rusage) + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return +} + +func Mkfifo(path string, mode uint32) error { + return Mknod(path, mode|S_IFIFO, 0) +} + +func Mkfifoat(dirfd int, path string, mode uint32) error { + return Mknodat(dirfd, path, mode|S_IFIFO, 0) +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets. +type SockaddrLinklayer struct { + Protocol uint16 + Ifindex int + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]byte + raw RawSockaddrLinklayer +} + +func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_PACKET + sa.raw.Protocol = sa.Protocol + sa.raw.Ifindex = int32(sa.Ifindex) + sa.raw.Hatype = sa.Hatype + sa.raw.Pkttype = sa.Pkttype + sa.raw.Halen = sa.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil +} + +// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets. +type SockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 + raw RawSockaddrNetlink +} + +func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_NETLINK + sa.raw.Pad = sa.Pad + sa.raw.Pid = sa.Pid + sa.raw.Groups = sa.Groups + return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil +} + +// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the HCI protocol. +type SockaddrHCI struct { + Dev uint16 + Channel uint16 + raw RawSockaddrHCI +} + +func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Dev = sa.Dev + sa.raw.Channel = sa.Channel + return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil +} + +// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the L2CAP protocol. +type SockaddrL2 struct { + PSM uint16 + CID uint16 + Addr [6]uint8 + AddrType uint8 + raw RawSockaddrL2 +} + +func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm)) + psm[0] = byte(sa.PSM) + psm[1] = byte(sa.PSM >> 8) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i] + } + cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid)) + cid[0] = byte(sa.CID) + cid[1] = byte(sa.CID >> 8) + sa.raw.Bdaddr_type = sa.AddrType + return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil +} + +// SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets +// using the RFCOMM protocol. +// +// Server example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) +// +// Client example: +// +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) +type SockaddrRFCOMM struct { + // Addr represents a bluetooth address, byte ordering is little-endian. + Addr [6]uint8 + + // Channel is a designated bluetooth channel, only 1-30 are available for use. + // Since Linux 2.6.7 and further zero value is the first available channel. + Channel uint8 + + raw RawSockaddrRFCOMM +} + +func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_BLUETOOTH + sa.raw.Channel = sa.Channel + sa.raw.Bdaddr = sa.Addr + return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil +} + +// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets. +// The RxID and TxID fields are used for transport protocol addressing in +// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with +// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning. +// +// The SockaddrCAN struct must be bound to the socket file descriptor +// using Bind before the CAN socket can be used. +// +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) +// +// The full SocketCAN documentation can be found in the linux kernel +// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt +type SockaddrCAN struct { + Ifindex int + RxID uint32 + TxID uint32 + raw RawSockaddrCAN +} + +func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff { + return nil, 0, EINVAL + } + sa.raw.Family = AF_CAN + sa.raw.Ifindex = int32(sa.Ifindex) + rx := (*[4]byte)(unsafe.Pointer(&sa.RxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i] = rx[i] + } + tx := (*[4]byte)(unsafe.Pointer(&sa.TxID)) + for i := 0; i < 4; i++ { + sa.raw.Addr[i+4] = tx[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil +} + +// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets. +// SockaddrALG enables userspace access to the Linux kernel's cryptography +// subsystem. The Type and Name fields specify which type of hash or cipher +// should be used with a given socket. +// +// To create a file descriptor that provides access to a hash or cipher, both +// Bind and Accept must be used. Once the setup process is complete, input +// data can be written to the socket, processed by the kernel, and then read +// back as hash output or ciphertext. +// +// Here is an example of using an AF_ALG socket with SHA1 hashing. +// The initial socket setup process is as follows: +// +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// +// Once a file descriptor has been returned from Accept, it may be used to +// perform SHA1 hashing. The descriptor is not safe for concurrent use, but +// may be re-used repeatedly with subsequent Write and Read operations. +// +// When hashing a small byte slice or string, a single Write and Read may +// be used: +// +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// +// For hashing larger byte slices, or byte streams such as those read from +// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update +// the hash digest instead of creating a new one for a given chunk and finalizing it. +// +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// +// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. +type SockaddrALG struct { + Type string + Name string + Feature uint32 + Mask uint32 + raw RawSockaddrALG +} + +func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) { + // Leave room for NUL byte terminator. + if len(sa.Type) > 13 { + return nil, 0, EINVAL + } + if len(sa.Name) > 63 { + return nil, 0, EINVAL + } + + sa.raw.Family = AF_ALG + sa.raw.Feat = sa.Feature + sa.raw.Mask = sa.Mask + + typ, err := ByteSliceFromString(sa.Type) + if err != nil { + return nil, 0, err + } + name, err := ByteSliceFromString(sa.Name) + if err != nil { + return nil, 0, err + } + + copy(sa.raw.Type[:], typ) + copy(sa.raw.Name[:], name) + + return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil +} + +// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets. +// SockaddrVM provides access to Linux VM sockets: a mechanism that enables +// bidirectional communication between a hypervisor and its guest virtual +// machines. +type SockaddrVM struct { + // CID and Port specify a context ID and port address for a VM socket. + // Guests have a unique CID, and hosts may have a well-known CID of: + // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process. + // - VMADDR_CID_HOST: refers to other processes on the host. + CID uint32 + Port uint32 + raw RawSockaddrVM +} + +func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_VSOCK + sa.raw.Port = sa.Port + sa.raw.Cid = sa.CID + + return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil +} + +type SockaddrXDP struct { + Flags uint16 + Ifindex uint32 + QueueID uint32 + SharedUmemFD uint32 + raw RawSockaddrXDP +} + +func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) { + sa.raw.Family = AF_XDP + sa.raw.Flags = sa.Flags + sa.raw.Ifindex = sa.Ifindex + sa.raw.Queue_id = sa.QueueID + sa.raw.Shared_umem_fd = sa.SharedUmemFD + + return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil +} + +// This constant mirrors the #define of PX_PROTO_OE in +// linux/if_pppox.h. We're defining this by hand here instead of +// autogenerating through mkerrors.sh because including +// linux/if_pppox.h causes some declaration conflicts with other +// includes (linux/if_pppox.h includes linux/in.h, which conflicts +// with netinet/in.h). Given that we only need a single zero constant +// out of that file, it's cleaner to just define it by hand here. +const px_proto_oe = 0 + +type SockaddrPPPoE struct { + SID uint16 + Remote net.HardwareAddr + Dev string + raw RawSockaddrPPPoX +} + +func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) { + if len(sa.Remote) != 6 { + return nil, 0, EINVAL + } + if len(sa.Dev) > IFNAMSIZ-1 { + return nil, 0, EINVAL + } + + *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX + // This next field is in host-endian byte order. We can't use the + // same unsafe pointer cast as above, because this value is not + // 32-bit aligned and some architectures don't allow unaligned + // access. + // + // However, the value of px_proto_oe is 0, so we can use + // encoding/binary helpers to write the bytes without worrying + // about the ordering. + binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe) + // This field is deliberately big-endian, unlike the previous + // one. The kernel expects SID to be in network byte order. + binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID) + copy(sa.raw[8:14], sa.Remote) + for i := 14; i < 14+IFNAMSIZ; i++ { + sa.raw[i] = 0 + } + copy(sa.raw[14:], sa.Dev) + return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_NETLINK: + pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa)) + sa := new(SockaddrNetlink) + sa.Family = pp.Family + sa.Pad = pp.Pad + sa.Pid = pp.Pid + sa.Groups = pp.Groups + return sa, nil + + case AF_PACKET: + pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa)) + sa := new(SockaddrLinklayer) + sa.Protocol = pp.Protocol + sa.Ifindex = int(pp.Ifindex) + sa.Hatype = pp.Hatype + sa.Pkttype = pp.Pkttype + sa.Halen = pp.Halen + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_VSOCK: + pp := (*RawSockaddrVM)(unsafe.Pointer(rsa)) + sa := &SockaddrVM{ + CID: pp.Cid, + Port: pp.Port, + } + return sa, nil + case AF_BLUETOOTH: + proto, err := GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL) + if err != nil { + return nil, err + } + // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections + switch proto { + case BTPROTO_L2CAP: + pp := (*RawSockaddrL2)(unsafe.Pointer(rsa)) + sa := &SockaddrL2{ + PSM: pp.Psm, + CID: pp.Cid, + Addr: pp.Bdaddr, + AddrType: pp.Bdaddr_type, + } + return sa, nil + case BTPROTO_RFCOMM: + pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa)) + sa := &SockaddrRFCOMM{ + Channel: pp.Channel, + Addr: pp.Bdaddr, + } + return sa, nil + } + case AF_XDP: + pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa)) + sa := &SockaddrXDP{ + Flags: pp.Flags, + Ifindex: pp.Ifindex, + QueueID: pp.Queue_id, + SharedUmemFD: pp.Shared_umem_fd, + } + return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe { + return nil, EINVAL + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: net.HardwareAddr(pp[8:14]), + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if err != nil { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept4(fd, &rsa, &len, flags) + if err != nil { + return + } + if len > SizeofSockaddrAny { + panic("RawSockaddrAny too small") + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) { + var value IPMreqn + vallen := _Socklen(SizeofIPMreqn) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptUcred(fd, level, opt int) (*Ucred, error) { + var value Ucred + vallen := _Socklen(SizeofUcred) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { + var value TCPInfo + vallen := _Socklen(SizeofTCPInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + if err == ERANGE { + buf = make([]byte, vallen) + err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + } + if err != nil { + return "", err + } + } + return string(buf[:vallen-1]), nil +} + +func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) { + var value TpacketStats + vallen := _Socklen(SizeofTpacketStats) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) { + var value TpacketStatsV3 + vallen := _Socklen(SizeofTpacketStatsV3) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq)) +} + +// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a +// socket to filter incoming packets. See 'man 7 socket' for usage information. +func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error { + return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog)) +} + +func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error { + var p unsafe.Pointer + if len(filter) > 0 { + p = unsafe.Pointer(&filter[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter)) +} + +func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error { + return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp)) +} + +// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html) + +// KeyctlInt calls keyctl commands in which each argument is an int. +// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK, +// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT, +// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT, +// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT. +//sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlBuffer calls keyctl commands in which the third and fourth +// arguments are a buffer and its length, respectively. +// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE. +//sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlString calls keyctl commands which return a string. +// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY. +func KeyctlString(cmd int, id int) (string, error) { + // We must loop as the string data may change in between the syscalls. + // We could allocate a large buffer here to reduce the chance that the + // syscall needs to be called twice; however, this is unnecessary as + // the performance loss is negligible. + var buffer []byte + for { + // Try to fill the buffer with data + length, err := KeyctlBuffer(cmd, id, buffer, 0) + if err != nil { + return "", err + } + + // Check if the data was written + if length <= len(buffer) { + // Exclude the null terminator + return string(buffer[:length-1]), nil + } + + // Make a bigger buffer if needed + buffer = make([]byte, length) + } +} + +// Keyctl commands with special signatures. + +// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html +func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) { + createInt := 0 + if create { + createInt = 1 + } + return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0) +} + +// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the +// key handle permission mask as described in the "keyctl setperm" section of +// http://man7.org/linux/man-pages/man1/keyctl.1.html. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html +func KeyctlSetperm(id int, perm uint32) error { + _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0) + return err +} + +//sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL + +// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html +func KeyctlJoinSessionKeyring(name string) (ringid int, err error) { + return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name) +} + +//sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL + +// KeyctlSearch implements the KEYCTL_SEARCH command. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_search.3.html +func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) { + return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid) +} + +//sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL + +// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This +// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice +// of Iovec (each of which represents a buffer) instead of a single buffer. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html +func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error { + return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid) +} + +//sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL + +// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command +// computes a Diffie-Hellman shared secret based on the provide params. The +// secret is written to the provided buffer and the returned size is the number +// of bytes written (returning an error if there is insufficient space in the +// buffer). If a nil buffer is passed in, this function returns the minimum +// buffer length needed to store the appropriate data. Note that this differs +// from KEYCTL_READ's behavior which always returns the requested payload size. +// See the full documentation at: +// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html +func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) { + return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer) +} + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return + } + // receive at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); err != nil { + return + } + oobn = int(msg.Controllen) + recvflags = int(msg.Flags) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + var err error + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(ptr) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = &p[0] + iov.SetLen(len(p)) + } + var dummy byte + if len(oob) > 0 { + if len(p) == 0 { + var sockType int + sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) + if err != nil { + return 0, err + } + // send at least one normal byte + if sockType != SOCK_DGRAM { + iov.Base = &dummy + iov.SetLen(1) + } + } + msg.Control = &oob[0] + msg.SetControllen(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +// BindToDevice binds the socket associated with fd to device. +func BindToDevice(fd int, device string) (err error) { + return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device) +} + +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + +func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) { + // The peek requests are machine-size oriented, so we wrap it + // to retrieve arbitrary-length data. + + // The ptrace syscall differs from glibc's ptrace. + // Peeks returns the word in *data, not as the return value. + + var buf [SizeofPtr]byte + + // Leading edge. PEEKTEXT/PEEKDATA don't require aligned + // access (PEEKUSER warns that it might), but if we don't + // align our reads, we might straddle an unmapped page + // boundary and not get the bytes leading up to the page + // boundary. + n := 0 + if addr%SizeofPtr != 0 { + err = ptrace(req, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(out, buf[addr%SizeofPtr:]) + out = out[n:] + } + + // Remainder. + for len(out) > 0 { + // We use an internal buffer to guarantee alignment. + // It's not documented if this is necessary, but we're paranoid. + err = ptrace(req, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copied := copy(out, buf[0:]) + n += copied + out = out[copied:] + } + + return n, nil +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKDATA, pid, addr, out) +} + +func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) { + return ptracePeek(PTRACE_PEEKUSR, pid, addr, out) +} + +func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) { + // As for ptracePeek, we need to align our accesses to deal + // with the possibility of straddling an invalid page. + + // Leading edge. + n := 0 + if addr%SizeofPtr != 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr-addr%SizeofPtr, uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return 0, err + } + n += copy(buf[addr%SizeofPtr:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word) + if err != nil { + return 0, err + } + data = data[n:] + } + + // Interior. + for len(data) > SizeofPtr { + word := *((*uintptr)(unsafe.Pointer(&data[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += SizeofPtr + data = data[SizeofPtr:] + } + + // Trailing edge. + if len(data) > 0 { + var buf [SizeofPtr]byte + err = ptrace(peekReq, pid, addr+uintptr(n), uintptr(unsafe.Pointer(&buf[0]))) + if err != nil { + return n, err + } + copy(buf[0:], data) + word := *((*uintptr)(unsafe.Pointer(&buf[0]))) + err = ptrace(pokeReq, pid, addr+uintptr(n), word) + if err != nil { + return n, err + } + n += len(data) + } + + return n, nil +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data) +} + +func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) { + return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data) +} + +func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +func PtraceSetOptions(pid int, options int) (err error) { + return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options)) +} + +func PtraceGetEventMsg(pid int) (msg uint, err error) { + var data _C_long + err = ptrace(PTRACE_GETEVENTMSG, pid, 0, uintptr(unsafe.Pointer(&data))) + msg = uint(data) + return +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 0, uintptr(signal)) +} + +func PtraceSyscall(pid int, signal int) (err error) { + return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal)) +} + +func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) } + +func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) } + +func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) } + +//sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) + +func Reboot(cmd int) (err error) { + return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + return Getdents(fd, buf) +} + +//sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) + +func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) { + // Certain file systems get rather angry and EINVAL if you give + // them an empty string of data, rather than NULL. + if data == "" { + return mount(source, target, fstype, flags, nil) + } + datap, err := BytePtrFromString(data) + if err != nil { + return err + } + return mount(source, target, fstype, flags, datap) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// Sendto +// Recvfrom +// Socketpair + +/* + * Direct access + */ +//sys Acct(path string) (err error) +//sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) +//sys Adjtimex(buf *Timex) (state int, err error) +//sys Chdir(path string) (err error) +//sys Chroot(path string) (err error) +//sys ClockGetres(clockid int32, res *Timespec) (err error) +//sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) +//sys Close(fd int) (err error) +//sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys DeleteModule(name string, flags int) (err error) +//sys Dup(oldfd int) (fd int, err error) +//sys Dup3(oldfd int, newfd int, flags int) (err error) +//sysnb EpollCreate1(flag int) (fd int, err error) +//sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) +//sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2 +//sys Exit(code int) = SYS_EXIT_GROUP +//sys Fallocate(fd int, mode uint32, off int64, len int64) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys fcntl(fd int, cmd int, arg int) (val int, err error) +//sys Fdatasync(fd int) (err error) +//sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) +//sys FinitModule(fd int, params string, flags int) (err error) +//sys Flistxattr(fd int, dest []byte) (sz int, err error) +//sys Flock(fd int, how int) (err error) +//sys Fremovexattr(fd int, attr string) (err error) +//sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64 +//sysnb Getpgid(pid int) (pgid int, err error) + +func Getpgrp() (pid int) { + pid, _ = Getpgid(0) + return +} + +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sys Getrandom(buf []byte, flags int) (n int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettid() (tid int) +//sys Getxattr(path string, attr string, dest []byte) (sz int, err error) +//sys InitModule(moduleImage []byte, params string) (err error) +//sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) +//sysnb InotifyInit1(flags int) (fd int, err error) +//sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) +//sysnb Kill(pid int, sig syscall.Signal) (err error) +//sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG +//sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error) +//sys Listxattr(path string, dest []byte) (sz int, err error) +//sys Llistxattr(path string, dest []byte) (sz int, err error) +//sys Lremovexattr(path string, attr string) (err error) +//sys Lsetxattr(path string, attr string, data []byte, flags int) (err error) +//sys MemfdCreate(name string, flags int) (fd int, err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) +//sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT +//sysnb prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) = SYS_PRLIMIT64 +//sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) +//sys Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) = SYS_PSELECT6 +//sys read(fd int, p []byte) (n int, err error) +//sys Removexattr(path string, attr string) (err error) +//sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) +//sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) +//sys Setdomainname(p []byte) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tv *Timeval) (err error) +//sys Setns(fd int, nstype int) (err error) + +// issue 1435. +// On linux Setuid and Setgid only affects the current thread, not the process. +// This does not match what most callers expect so we must return an error +// here rather than letting the caller think that the call succeeded. + +func Setuid(uid int) (err error) { + return EOPNOTSUPP +} + +func Setgid(uid int) (err error) { + return EOPNOTSUPP +} + +//sys Setpriority(which int, who int, prio int) (err error) +//sys Setxattr(path string, attr string, data []byte, flags int) (err error) +//sys Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4 +//sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) +//sys Sync() +//sys Syncfs(fd int) (err error) +//sysnb Sysinfo(info *Sysinfo_t) (err error) +//sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error) +//sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sysnb Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2 +//sys Unshare(flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys exitThread(code int) (err error) = SYS_EXIT +//sys readlen(fd int, p *byte, np int) (n int, err error) = SYS_READ +//sys writelen(fd int, p *byte, np int) (n int, err error) = SYS_WRITE + +// mmap varies by architecture; see syscall_linux_*.go. +//sys munmap(addr uintptr, length uintptr) (err error) + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} + +//sys Madvise(b []byte, advice int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) + +// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd, +// using the specified flags. +func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) { + var p unsafe.Pointer + if len(iovs) > 0 { + p = unsafe.Pointer(&iovs[0]) + } + + n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0) + if errno != 0 { + return 0, syscall.Errno(errno) + } + + return int(n), nil +} + +//sys faccessat(dirfd int, path string, mode uint32) (err error) + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 { + return EINVAL + } + + // The Linux kernel faccessat system call does not take any flags. + // The glibc faccessat implements the flags itself; see + // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD + // Because people naturally expect syscall.Faccessat to act + // like C faccessat, we do the same. + + if flags == 0 { + return faccessat(dirfd, path, mode) + } + + var st Stat_t + if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil { + return err + } + + mode &= 7 + if mode == 0 { + return nil + } + + var uid int + if flags&AT_EACCESS != 0 { + uid = Geteuid() + } else { + uid = Getuid() + } + + if uid == 0 { + if mode&1 == 0 { + // Root can read and write any file. + return nil + } + if st.Mode&0111 != 0 { + // Root can execute any file that anybody can execute. + return nil + } + return EACCES + } + + var fmode uint32 + if uint32(uid) == st.Uid { + fmode = (st.Mode >> 6) & 7 + } else { + var gid int + if flags&AT_EACCESS != 0 { + gid = Getegid() + } else { + gid = Getgid() + } + + if uint32(gid) == st.Gid { + fmode = (st.Mode >> 3) & 7 + } else { + fmode = st.Mode & 7 + } + } + + if fmode&mode == mode { + return nil + } + + return EACCES +} + +/* + * Unimplemented + */ +// AfsSyscall +// Alarm +// ArchPrctl +// Brk +// Capget +// Capset +// ClockNanosleep +// ClockSettime +// Clone +// EpollCtlOld +// EpollPwait +// EpollWaitOld +// Execve +// Fork +// Futex +// GetKernelSyms +// GetMempolicy +// GetRobustList +// GetThreadArea +// Getitimer +// Getpmsg +// IoCancel +// IoDestroy +// IoGetevents +// IoSetup +// IoSubmit +// IoprioGet +// IoprioSet +// KexecLoad +// LookupDcookie +// Mbind +// MigratePages +// Mincore +// ModifyLdt +// Mount +// MovePages +// MqGetsetattr +// MqNotify +// MqOpen +// MqTimedreceive +// MqTimedsend +// MqUnlink +// Mremap +// Msgctl +// Msgget +// Msgrcv +// Msgsnd +// Nfsservctl +// Personality +// Pselect6 +// Ptrace +// Putpmsg +// Quotactl +// Readahead +// Readv +// RemapFilePages +// RestartSyscall +// RtSigaction +// RtSigpending +// RtSigprocmask +// RtSigqueueinfo +// RtSigreturn +// RtSigsuspend +// RtSigtimedwait +// SchedGetPriorityMax +// SchedGetPriorityMin +// SchedGetparam +// SchedGetscheduler +// SchedRrGetInterval +// SchedSetparam +// SchedYield +// Security +// Semctl +// Semget +// Semop +// Semtimedop +// SetMempolicy +// SetRobustList +// SetThreadArea +// SetTidAddress +// Shmat +// Shmctl +// Shmdt +// Shmget +// Sigaltstack +// Swapoff +// Swapon +// Sysfs +// TimerCreate +// TimerDelete +// TimerGetoverrun +// TimerGettime +// TimerSettime +// Timerfd +// Tkill (obsolete) +// Tuxcall +// Umount2 +// Uselib +// Utimensat +// Vfork +// Vhangup +// Vserver +// Waitid +// _Sysctl diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_386.go new file mode 100644 index 0000000..e2f8cf6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_386.go @@ -0,0 +1,386 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP) +// so that go vet can check that they are correct. + +// +build 386,linux + +package unix + +import ( + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// 64-bit file system and 32-bit uid calls +// (386 default is 32-bit file system and 16-bit uid). +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64 +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) +//sys Pause() (err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +// On x86 Linux, all the socket calls go through an extra indirection, +// I think because the 5-register system call interface can't handle +// the 6-argument calls like sendto and recvfrom. Instead the +// arguments to the underlying system call are the number below +// and a pointer to an array of uintptr. We hide the pointer in the +// socketcall assembly to avoid allocation on every system call. + +const ( + // see linux/net.h + _SOCKET = 1 + _BIND = 2 + _CONNECT = 3 + _LISTEN = 4 + _ACCEPT = 5 + _GETSOCKNAME = 6 + _GETPEERNAME = 7 + _SOCKETPAIR = 8 + _SEND = 9 + _RECV = 10 + _SENDTO = 11 + _RECVFROM = 12 + _SHUTDOWN = 13 + _SETSOCKOPT = 14 + _GETSOCKOPT = 15 + _SENDMSG = 16 + _RECVMSG = 17 + _ACCEPT4 = 18 + _RECVMMSG = 19 + _SENDMMSG = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + fd, e := socketcall(_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + fd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e != 0 { + err = e + } + return +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func socket(domain int, typ int, proto int) (fd int, err error) { + fd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e != 0 { + err = e + } + return +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0) + if e != 0 { + err = e + } + return +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + n, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + if e != 0 { + err = e + } + return +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + _, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e != 0 { + err = e + } + return +} + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + n, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Listen(s int, n int) (err error) { + _, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Shutdown(s, how int) (err error) { + _, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e != 0 { + err = e + } + return +} + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go new file mode 100644 index 0000000..87a3074 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go @@ -0,0 +1,190 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb inotifyInit() (fd int, err error) + +func InotifyInit() (fd int, err error) { + // First try inotify_init1, because Android's seccomp policy blocks the latter. + fd, err = InotifyInit1(0) + if err == ENOSYS { + fd, err = inotifyInit() + } + return +} + +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + // Use fstatat, because Android's seccomp policy blocks stat. + return Fstatat(AT_FDCWD, path, stat, 0) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) + +func Gettimeofday(tv *Timeval) (err error) { + errno := gettimeofday(tv) + if errno != 0 { + return errno + } + return nil +} + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + errno := gettimeofday(&tv) + if errno != 0 { + return 0, errno + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Rip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go new file mode 100644 index 0000000..21a4946 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go @@ -0,0 +1,13 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,linux +// +build !gccgo + +package unix + +import "syscall" + +//go:noescape +func gettimeofday(tv *Timeval) (err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go new file mode 100644 index 0000000..3a3c37b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -0,0 +1,274 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,linux + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + // Try pipe2 first for Android O, then try pipe for kernel 2.6.23. + err = pipe2(&pp, 0) + if err == ENOSYS { + err = pipe(&pp) + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + newoffset, errno := seek(fd, offset, whence) + if errno != 0 { + return 0, errno + } + return newoffset, nil +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32 +//sysnb setgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32 +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +// 64-bit file system and 32-bit uid calls +// (16-bit uid calls are not always supported in newer kernels) +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sysnb Getegid() (egid int) = SYS_GETEGID32 +//sysnb Geteuid() (euid int) = SYS_GETEUID32 +//sysnb Getgid() (gid int) = SYS_GETGID32 +//sysnb Getuid() (uid int) = SYS_GETUID32 +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32 +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Pause() (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys Setfsgid(gid int) (err error) = SYS_SETFSGID32 +//sys Setfsuid(uid int) (err error) = SYS_SETFSUID32 +//sysnb Setregid(rgid int, egid int) (err error) = SYS_SETREGID32 +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) = SYS_SETRESGID32 +//sysnb Setresuid(ruid int, euid int, suid int) (err error) = SYS_SETRESUID32 +//sysnb Setreuid(ruid int, euid int) (err error) = SYS_SETREUID32 +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = e + } + return +} + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys armSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and arm_sync_file_range syscalls differ only in the + // order of their arguments. + return armSyncFileRange(fd, flags, off, n) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go new file mode 100644 index 0000000..cb20b15 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -0,0 +1,223 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go new file mode 100644 index 0000000..c26e6ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc.go @@ -0,0 +1,14 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo + +package unix + +// SyscallNoError may be used instead of Syscall for syscalls that don't fail. +func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) + +// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't +// fail. +func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go new file mode 100644 index 0000000..070bd38 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go @@ -0,0 +1,16 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!gccgo,386 + +package unix + +import "syscall" + +// Underlying system call writes to newoffset via pointer. +// Implemented in assembly to avoid allocation. +func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go new file mode 100644 index 0000000..308eb7a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go @@ -0,0 +1,30 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} + +func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} + +func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) { + fd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0) + return int(fd), err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go new file mode 100644 index 0000000..aa7fc9e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go @@ -0,0 +1,20 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,gccgo,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { + var newoffset int64 + offsetLow := uint32(offset & 0xffffffff) + offsetHigh := uint32((offset >> 32) & 0xffffffff) + _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) + return newoffset, err +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go new file mode 100644 index 0000000..b3b21ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go @@ -0,0 +1,222 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips64 mips64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +type stat_t struct { + Dev uint32 + Pad0 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad1 [3]uint32 + Size int64 + Atime uint32 + Atime_nsec uint32 + Mtime uint32 + Mtime_nsec uint32 + Ctime uint32 + Ctime_nsec uint32 + Blksize uint32 + Pad2 uint32 + Blocks int64 +} + +//sys fstat(fd int, st *stat_t) (err error) +//sys fstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys lstat(path string, st *stat_t) (err error) +//sys stat(path string, st *stat_t) (err error) + +func Fstat(fd int, s *Stat_t) (err error) { + st := &stat_t{} + err = fstat(fd, st) + fillStat_t(s, st) + return +} + +func Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) { + st := &stat_t{} + err = fstatat(dirfd, path, st, flags) + fillStat_t(s, st) + return +} + +func Lstat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = lstat(path, st) + fillStat_t(s, st) + return +} + +func Stat(path string, s *Stat_t) (err error) { + st := &stat_t{} + err = stat(path, st) + fillStat_t(s, st) + return +} + +func fillStat_t(s *Stat_t, st *stat_t) { + s.Dev = st.Dev + s.Ino = st.Ino + s.Mode = st.Mode + s.Nlink = st.Nlink + s.Uid = st.Uid + s.Gid = st.Gid + s.Rdev = st.Rdev + s.Size = st.Size + s.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)} + s.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)} + s.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)} + s.Blksize = st.Blksize + s.Blocks = st.Blocks +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go new file mode 100644 index 0000000..5144d4e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go @@ -0,0 +1,234 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build mips mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Ftruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64 +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64 +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) = SYS_TRUNCATE64 +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) + +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +//sys Lstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64 +//sys Fstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64 +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Stat(path string, stat *Stat_t) (err error) = SYS_STAT64 + +//sys Pause() (err error) + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Statfs(path string, buf *Statfs_t) (err error) { + p, err := BytePtrFromString(path) + if err != nil { + return err + } + _, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf))) + if e != 0 { + err = errnoErr(e) + } + return +} + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + _, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0) + if e != 0 { + err = errnoErr(e) + } + return +} + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: int32(sec), Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: int32(sec), Usec: int32(usec)} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe() (p1 int, p2 int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + page := uintptr(offset / 4096) + if offset != int64(page)*4096 { + return 0, EINVAL + } + return mmap2(addr, length, prot, flags, fd, page) +} + +const rlimInf32 = ^uint32(0) +const rlimInf64 = ^uint64(0) + +type rlimit32 struct { + Cur uint32 + Max uint32 +} + +//sysnb getrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, nil, rlim) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + err = getrlimit(resource, &rl) + if err != nil { + return + } + + if rl.Cur == rlimInf32 { + rlim.Cur = rlimInf64 + } else { + rlim.Cur = uint64(rl.Cur) + } + + if rl.Max == rlimInf32 { + rlim.Max = rlimInf64 + } else { + rlim.Max = uint64(rl.Max) + } + return +} + +//sysnb setrlimit(resource int, rlim *rlimit32) (err error) = SYS_SETRLIMIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = prlimit(0, resource, rlim, nil) + if err != ENOSYS { + return err + } + + rl := rlimit32{} + if rlim.Cur == rlimInf64 { + rl.Cur = rlimInf32 + } else if rlim.Cur < uint64(rlimInf32) { + rl.Cur = uint32(rlim.Cur) + } else { + return EINVAL + } + if rlim.Max == rlimInf64 { + rl.Max = rlimInf32 + } else if rlim.Max < uint64(rlimInf32) { + rl.Max = uint32(rlim.Max) + } else { + return EINVAL + } + + return setrlimit(resource, &rl) +} + +func (r *PtraceRegs) PC() uint64 { return r.Epc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go new file mode 100644 index 0000000..0a100b6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go @@ -0,0 +1,152 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64 ppc64le + +package unix + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Ioperm(from int, num int, on int) (err error) +//sys Iopl(level int) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Time(t *Time_t) (tt Time_t, err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (r *PtraceRegs) PC() uint64 { return r.Nip } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys syncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2 + +func SyncFileRange(fd int, off int64, n int64, flags int) error { + // The sync_file_range and sync_file_range2 syscalls differ only in the + // order of their arguments. + return syncFileRange2(fd, flags, off, n) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go new file mode 100644 index 0000000..6230f64 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -0,0 +1,226 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,linux + +package unix + +import "unsafe" + +func EpollCreate(size int) (fd int, err error) { + if size <= 0 { + return -1, EINVAL + } + return EpollCreate1(0) +} + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func (r *PtraceRegs) PC() uint64 { return r.Pc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func InotifyInit() (fd int, err error) { + return InotifyInit1(0) +} + +func Dup2(oldfd int, newfd int) (err error) { + return Dup3(oldfd, newfd, 0) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Poll(fds []PollFd, timeout int) (n int, err error) { + var ts *Timespec + if timeout >= 0 { + ts = new(Timespec) + *ts = NsecToTimespec(int64(timeout) * 1e6) + } + if len(fds) == 0 { + return ppoll(nil, 0, ts, nil) + } + return ppoll(&fds[0], len(fds), ts, nil) +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go new file mode 100644 index 0000000..f81dbdc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go @@ -0,0 +1,338 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build s390x,linux + +package unix + +import ( + "unsafe" +) + +//sys Dup2(oldfd int, newfd int) (err error) +//sysnb EpollCreate(size int) (fd int, err error) +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, 0) // pipe2 is the same as pipe when flags are set to 0. + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +func (r *PtraceRegs) PC() uint64 { return r.Psw.Addr } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct. +// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in . +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + mmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)} + r0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// On s390x Linux, all the socket calls go through an extra indirection. +// The arguments to the underlying system call (SYS_SOCKETCALL) are the +// number below and a pointer to an array of uintptr. +const ( + // see linux/net.h + netSocket = 1 + netBind = 2 + netConnect = 3 + netListen = 4 + netAccept = 5 + netGetSockName = 6 + netGetPeerName = 7 + netSocketPair = 8 + netSend = 9 + netRecv = 10 + netSendTo = 11 + netRecvFrom = 12 + netShutdown = 13 + netSetSockOpt = 14 + netGetSockOpt = 15 + netSendMsg = 16 + netRecvMsg = 17 + netAccept4 = 18 + netRecvMMsg = 19 + netSendMMsg = 20 +) + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) { + args := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)} + fd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socketpair(domain int, typ int, flags int, fd *[2]int32) error { + args := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))} + _, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) error { + args := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func socket(domain int, typ int, proto int) (int, error) { + args := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)} + fd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(fd), nil +} + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error { + args := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))} + _, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error { + args := [4]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val)} + _, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error { + var base uintptr + if len(p) > 0 { + base = uintptr(unsafe.Pointer(&p[0])) + } + args := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)} + _, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func recvmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func sendmsg(s int, msg *Msghdr, flags int) (int, error) { + args := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)} + n, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return 0, err + } + return int(n), nil +} + +func Listen(s int, n int) error { + args := [2]uintptr{uintptr(s), uintptr(n)} + _, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +func Shutdown(s, how int) error { + args := [2]uintptr{uintptr(s), uintptr(how)} + _, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0) + if err != 0 { + return err + } + return nil +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go new file mode 100644 index 0000000..b695656 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go @@ -0,0 +1,147 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build sparc64,linux + +package unix + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Dup2(oldfd int, newfd int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64 +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Getuid() (uid int) +//sysnb InotifyInit() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Listen(s int, n int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK +//sys Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys Setfsgid(gid int) (err error) +//sys Setfsuid(uid int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(resource int, rlim *Rlimit) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +func Ioperm(from int, num int, on int) (err error) { + return ENOSYS +} + +func Iopl(level int) (err error) { + return ENOSYS +} + +//sys futimesat(dirfd int, path string, times *[2]Timeval) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) + +func Time(t *Time_t) (tt Time_t, err error) { + var tv Timeval + err = Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +//sys Utime(path string, buf *Utimbuf) (err error) +//sys utimes(path string, times *[2]Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func (r *PtraceRegs) PC() uint64 { return r.Tpc } + +func (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +//sysnb pipe(p *[2]_C_int) (err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sysnb pipe2(p *[2]_C_int, flags int) (err error) + +func Pipe2(p []int, flags int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe2(&pp, flags) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go new file mode 100644 index 0000000..5240e16 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -0,0 +1,622 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// NetBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "runtime" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) { + var olen uintptr + + // Get a list of all sysctl nodes below the given MIB by performing + // a sysctl for the given MIB with CTL_QUERY appended. + mib = append(mib, CTL_QUERY) + qnode := Sysctlnode{Flags: SYSCTL_VERS_1} + qp := (*byte)(unsafe.Pointer(&qnode)) + sz := unsafe.Sizeof(qnode) + if err = sysctl(mib, nil, &olen, qp, sz); err != nil { + return nil, err + } + + // Now that we know the size, get the actual nodes. + nodes = make([]Sysctlnode, olen/sz) + np := (*byte)(unsafe.Pointer(&nodes[0])) + if err = sysctl(mib, np, &olen, qp, sz); err != nil { + return nil, err + } + + return nodes, nil +} + +func nametomib(name string) (mib []_C_int, err error) { + // Split name into components. + var parts []string + last := 0 + for i := 0; i < len(name); i++ { + if name[i] == '.' { + parts = append(parts, name[last:i]) + last = i + 1 + } + } + parts = append(parts, name[last:]) + + // Discover the nodes and construct the MIB OID. + for partno, part := range parts { + nodes, err := sysctlNodes(mib) + if err != nil { + return nil, err + } + for _, node := range nodes { + n := make([]byte, 0) + for i := range node.Name { + if node.Name[i] != 0 { + n = append(n, byte(node.Name[i])) + } + } + if string(n) == part { + mib = append(mib, _C_int(node.Num)) + break + } + } + if len(mib) != partno+1 { + return nil, EINVAL + } + } + + return mib, nil +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +//sysnb pipe() (fd1 int, fd2 int, err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + p[0], p[1], err = pipe() + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { + var value Ptmget + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + runtime.KeepAlive(value) + return &value, err +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) +//sys ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) +//sys ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) +//sys ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) +//sys ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// ____semctl13 +// __clone +// __fhopen40 +// __fhstat40 +// __fhstatvfs140 +// __fstat30 +// __getcwd +// __getfh30 +// __getlogin +// __lstat30 +// __mount50 +// __msgctl13 +// __msync13 +// __ntp_gettime30 +// __posix_chown +// __posix_fchown +// __posix_lchown +// __posix_rename +// __setlogin +// __shmctl13 +// __sigaction_sigtramp +// __sigaltstack14 +// __sigpending14 +// __sigprocmask14 +// __sigsuspend14 +// __sigtimedwait +// __stat30 +// __syscall +// __vfork14 +// _ksem_close +// _ksem_destroy +// _ksem_getvalue +// _ksem_init +// _ksem_open +// _ksem_post +// _ksem_trywait +// _ksem_unlink +// _ksem_wait +// _lwp_continue +// _lwp_create +// _lwp_ctl +// _lwp_detach +// _lwp_exit +// _lwp_getname +// _lwp_getprivate +// _lwp_kill +// _lwp_park +// _lwp_self +// _lwp_setname +// _lwp_setprivate +// _lwp_suspend +// _lwp_unpark +// _lwp_unpark_all +// _lwp_wait +// _lwp_wakeup +// _pset_bind +// _sched_getaffinity +// _sched_getparam +// _sched_setaffinity +// _sched_setparam +// acct +// aio_cancel +// aio_error +// aio_fsync +// aio_read +// aio_return +// aio_suspend +// aio_write +// break +// clock_getres +// clock_gettime +// clock_settime +// compat_09_ogetdomainname +// compat_09_osetdomainname +// compat_09_ouname +// compat_10_omsgsys +// compat_10_osemsys +// compat_10_oshmsys +// compat_12_fstat12 +// compat_12_getdirentries +// compat_12_lstat12 +// compat_12_msync +// compat_12_oreboot +// compat_12_oswapon +// compat_12_stat12 +// compat_13_sigaction13 +// compat_13_sigaltstack13 +// compat_13_sigpending13 +// compat_13_sigprocmask13 +// compat_13_sigreturn13 +// compat_13_sigsuspend13 +// compat_14___semctl +// compat_14_msgctl +// compat_14_shmctl +// compat_16___sigaction14 +// compat_16___sigreturn14 +// compat_20_fhstatfs +// compat_20_fstatfs +// compat_20_getfsstat +// compat_20_statfs +// compat_30___fhstat30 +// compat_30___fstat13 +// compat_30___lstat13 +// compat_30___stat13 +// compat_30_fhopen +// compat_30_fhstat +// compat_30_fhstatvfs1 +// compat_30_getdents +// compat_30_getfh +// compat_30_ntp_gettime +// compat_30_socket +// compat_40_mount +// compat_43_fstat43 +// compat_43_lstat43 +// compat_43_oaccept +// compat_43_ocreat +// compat_43_oftruncate +// compat_43_ogetdirentries +// compat_43_ogetdtablesize +// compat_43_ogethostid +// compat_43_ogethostname +// compat_43_ogetkerninfo +// compat_43_ogetpagesize +// compat_43_ogetpeername +// compat_43_ogetrlimit +// compat_43_ogetsockname +// compat_43_okillpg +// compat_43_olseek +// compat_43_ommap +// compat_43_oquota +// compat_43_orecv +// compat_43_orecvfrom +// compat_43_orecvmsg +// compat_43_osend +// compat_43_osendmsg +// compat_43_osethostid +// compat_43_osethostname +// compat_43_osetrlimit +// compat_43_osigblock +// compat_43_osigsetmask +// compat_43_osigstack +// compat_43_osigvec +// compat_43_otruncate +// compat_43_owait +// compat_43_stat43 +// execve +// extattr_delete_fd +// extattr_delete_file +// extattr_delete_link +// extattr_get_fd +// extattr_get_file +// extattr_get_link +// extattr_list_fd +// extattr_list_file +// extattr_list_link +// extattr_set_fd +// extattr_set_file +// extattr_set_link +// extattrctl +// fchroot +// fdatasync +// fgetxattr +// fktrace +// flistxattr +// fork +// fremovexattr +// fsetxattr +// fstatvfs1 +// fsync_range +// getcontext +// getitimer +// getvfsstat +// getxattr +// ktrace +// lchflags +// lchmod +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// lgetxattr +// lio_listio +// listxattr +// llistxattr +// lremovexattr +// lseek +// lsetxattr +// lutimes +// madvise +// mincore +// minherit +// modctl +// mq_close +// mq_getattr +// mq_notify +// mq_open +// mq_receive +// mq_send +// mq_setattr +// mq_timedreceive +// mq_timedsend +// mq_unlink +// mremap +// msgget +// msgrcv +// msgsnd +// nfssvc +// ntp_adjtime +// pmc_control +// pmc_get_info +// pollts +// preadv +// profil +// pselect +// pset_assign +// pset_create +// pset_destroy +// ptrace +// pwritev +// quotactl +// rasctl +// readv +// reboot +// removexattr +// sa_enable +// sa_preempt +// sa_register +// sa_setconcurrency +// sa_stacks +// sa_yield +// sbrk +// sched_yield +// semconfig +// semget +// semop +// setcontext +// setitimer +// setxattr +// shmat +// shmdt +// shmget +// sstk +// statvfs1 +// swapctl +// sysarch +// syscall +// timer_create +// timer_delete +// timer_getoverrun +// timer_gettime +// timer_settime +// undelete +// utrace +// uuidgen +// vadvise +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go new file mode 100644 index 0000000..24f74e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go new file mode 100644 index 0000000..6878bf7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go @@ -0,0 +1,33 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go new file mode 100644 index 0000000..dbbfcf7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go @@ -0,0 +1,33 @@ +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go new file mode 100644 index 0000000..f343446 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go @@ -0,0 +1,33 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,netbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = uint32(mode) + k.Flags = uint32(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go new file mode 100644 index 0000000..c8648ec --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -0,0 +1,416 @@ +// Copyright 2009,2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// OpenBSD system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_bsd.go or syscall_unix.go. + +package unix + +import ( + "sort" + "syscall" + "unsafe" +) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 + raw RawSockaddrDatalink +} + +func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func nametomib(name string) (mib []_C_int, err error) { + i := sort.Search(len(sysctlMib), func(i int) bool { + return sysctlMib[i].ctlname >= name + }) + if i < len(sysctlMib) && sysctlMib[i].ctlname == name { + return sysctlMib[i].ctloid, nil + } + return nil, EINVAL +} + +func SysctlClockinfo(name string) (*Clockinfo, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofClockinfo) + var ci Clockinfo + if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofClockinfo { + return nil, EIO + } + return &ci, nil +} + +func SysctlUvmexp(name string) (*Uvmexp, error) { + mib, err := sysctlmib(name) + if err != nil { + return nil, err + } + + n := uintptr(SizeofUvmexp) + var u Uvmexp + if err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil { + return nil, err + } + if n != SizeofUvmexp { + return nil, EIO + } + return &u, nil +} + +//sysnb pipe(p *[2]_C_int) (err error) +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + err = pipe(&pp) + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return +} + +//sys getdents(fd int, buf []byte) (n int, err error) +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + return getdents(fd, buf) +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) = SYS___GETCWD + +func Getwd() (string, error) { + var buf [PathMax]byte + _, err := Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +// TODO +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + return -1, ENOSYS +} + +func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { + var _p0 unsafe.Pointer + var bufsize uintptr + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) + } + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func setattrlistTimes(path string, times []Timespec, flags int) error { + // used on Darwin for UtimesNano + return ENOSYS +} + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) error { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) + +func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + if len(fds) == 0 { + return ppoll(nil, 0, timeout, sigmask) + } + return ppoll(&fds[0], len(fds), timeout, sigmask) +} + +func Uname(uname *Utsname) error { + mib := []_C_int{CTL_KERN, KERN_OSTYPE} + n := unsafe.Sizeof(uname.Sysname) + if err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_HOSTNAME} + n = unsafe.Sizeof(uname.Nodename) + if err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_OSRELEASE} + n = unsafe.Sizeof(uname.Release) + if err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil { + return err + } + + mib = []_C_int{CTL_KERN, KERN_VERSION} + n = unsafe.Sizeof(uname.Version) + if err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil { + return err + } + + // The version might have newlines or tabs in it, convert them to + // spaces. + for i, b := range uname.Version { + if b == '\n' || b == '\t' { + if i == len(uname.Version)-1 { + uname.Version[i] = 0 + } else { + uname.Version[i] = ' ' + } + } + } + + mib = []_C_int{CTL_HW, HW_MACHINE} + n = unsafe.Sizeof(uname.Machine) + if err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil { + return err + } + + return nil +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chflags(path string, flags int) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(from int, to int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchflags(fd int, flags int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (uid int) +//sysnb Getgid() (gid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgrp int) +//sysnb Getpid() (pid int) +//sysnb Getppid() (ppid int) +//sys Getpriority(which int, who int) (prio int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrtable() (rtable int, err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Issetugid() (tainted bool) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Kqueue() (fd int, err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) +//sys Listen(s int, backlog int) (err error) +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(fromfd int, from string, tofd int, to string) (err error) +//sys Revoke(path string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Setlogin(name string) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setrtable(rtable int) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Settimeofday(tp *Timeval) (err error) +//sysnb Setuid(uid int) (err error) +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) +//sys Sync() (err error) +//sys Truncate(path string, length int64) (err error) +//sys Umask(newmask int) (oldmask int) +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Unmount(path string, flags int) (err error) +//sys write(fd int, p []byte) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys readlen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_READ +//sys writelen(fd int, buf *byte, nbuf int) (n int, err error) = SYS_WRITE +//sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) + +/* + * Unimplemented + */ +// __getcwd +// __semctl +// __syscall +// __sysctl +// adjfreq +// break +// clock_getres +// clock_gettime +// clock_settime +// closefrom +// execve +// fcntl +// fhopen +// fhstat +// fhstatfs +// fork +// futimens +// getfh +// getgid +// getitimer +// getlogin +// getresgid +// getresuid +// getthrid +// ktrace +// lfs_bmapv +// lfs_markv +// lfs_segclean +// lfs_segwait +// mincore +// minherit +// mount +// mquery +// msgctl +// msgget +// msgrcv +// msgsnd +// nfssvc +// nnpfspioctl +// preadv +// profil +// pwritev +// quotactl +// readv +// reboot +// renameat +// rfork +// sched_yield +// semget +// semop +// setgroups +// setitimer +// setsockopt +// shmat +// shmctl +// shmdt +// shmget +// sigaction +// sigaltstack +// sigpending +// sigprocmask +// sigreturn +// sigsuspend +// sysarch +// syscall +// threxit +// thrsigdivert +// thrsleep +// thrwakeup +// vfork +// writev diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go new file mode 100644 index 0000000..d62da60 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build 386,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/386 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go new file mode 100644 index 0000000..9a35334 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go @@ -0,0 +1,37 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 0000000..5d812aa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,37 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: int32(nsec)} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: int32(usec)} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/arm the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go new file mode 100644 index 0000000..e478012 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -0,0 +1,737 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Solaris system calls. +// This file is compiled as ordinary Go code, +// but it is also input to mksyscall, +// which parses the //sys lines and generates system call stubs. +// Note that sometimes we use a lowercase //sys name and wrap +// it in our own nicer implementation, either here or in +// syscall_solaris.go or syscall_unix.go. + +package unix + +import ( + "syscall" + "unsafe" +) + +// Implemented in runtime/syscall_solaris.go. +type syscallFunc uintptr + +func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) + +// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets. +type SockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 + raw RawSockaddrDatalink +} + +//sysnb pipe(p *[2]_C_int) (n int, err error) + +func Pipe(p []int) (err error) { + if len(p) != 2 { + return EINVAL + } + var pp [2]_C_int + n, err := pipe(&pp) + if n != 0 { + return err + } + p[0] = int(pp[0]) + p[1] = int(pp[1]) + return nil +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) { + name := sa.Name + n := len(name) + if n >= len(sa.raw.Path) { + return nil, 0, EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := _Socklen(2) + if n > 0 { + sl += _Socklen(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +//sys getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname + +func Getsockname(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getsockname(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +// GetsockoptString returns the string value of the socket option opt for the +// socket associated with fd at the given socket level. +func GetsockoptString(fd, level, opt int) (string, error) { + buf := make([]byte, 256) + vallen := _Socklen(len(buf)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen) + if err != nil { + return "", err + } + return string(buf[:vallen-1]), nil +} + +const ImplementsGetwd = true + +//sys Getcwd(buf []byte) (n int, err error) + +func Getwd() (wd string, err error) { + var buf [PathMax]byte + // Getcwd will return an error if it failed for any reason. + _, err = Getcwd(buf[0:]) + if err != nil { + return "", err + } + n := clen(buf[:]) + if n < 1 { + return "", EINVAL + } + return string(buf[:n]), nil +} + +/* + * Wrapped + */ + +//sysnb getgroups(ngid int, gid *_Gid_t) (n int, err error) +//sysnb setgroups(ngid int, gid *_Gid_t) (err error) + +func Getgroups() (gids []int, err error) { + n, err := getgroups(0, nil) + // Check for error and sanity check group count. Newer versions of + // Solaris allow up to 1024 (NGROUPS_MAX). + if n < 0 || n > 1024 { + if err != nil { + return nil, err + } + return nil, EINVAL + } else if n == 0 { + return nil, nil + } + + a := make([]_Gid_t, n) + n, err = getgroups(n, &a[0]) + if n == -1 { + return nil, err + } + gids = make([]int, n) + for i, v := range a[0:n] { + gids[i] = int(v) + } + return +} + +func Setgroups(gids []int) (err error) { + if len(gids) == 0 { + return setgroups(0, nil) + } + + a := make([]_Gid_t, len(gids)) + for i, v := range gids { + a[i] = _Gid_t(v) + } + return setgroups(len(a), &a[0]) +} + +func ReadDirent(fd int, buf []byte) (n int, err error) { + // Final argument is (basep *uintptr) and the syscall doesn't take nil. + // TODO(rsc): Can we use a single global basep for all calls? + return Getdents(fd, buf, new(uintptr)) +} + +// Wait status is 7 bits at bottom, either 0 (exited), +// 0x7F (stopped), or a signal number that caused an exit. +// The 0x80 bit is whether there was a core dump. +// An extra number (exit code, signal causing a stop) +// is in the high bits. + +type WaitStatus uint32 + +const ( + mask = 0x7F + core = 0x80 + shift = 8 + + exited = 0 + stopped = 0x7F +) + +func (w WaitStatus) Exited() bool { return w&mask == exited } + +func (w WaitStatus) ExitStatus() int { + if w&mask != exited { + return -1 + } + return int(w >> shift) +} + +func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 } + +func (w WaitStatus) Signal() syscall.Signal { + sig := syscall.Signal(w & mask) + if sig == stopped || sig == 0 { + return -1 + } + return sig +} + +func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } + +func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } + +func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } + +func (w WaitStatus) StopSignal() syscall.Signal { + if !w.Stopped() { + return -1 + } + return syscall.Signal(w>>shift) & 0xFF +} + +func (w WaitStatus) TrapCause() int { return -1 } + +//sys wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) + +func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) { + var status _C_int + rpid, err := wait4(int32(pid), &status, options, rusage) + wpid := int(rpid) + if wpid == -1 { + return wpid, err + } + if wstatus != nil { + *wstatus = WaitStatus(status) + } + return wpid, nil +} + +//sys gethostname(buf []byte) (n int, err error) + +func Gethostname() (name string, err error) { + var buf [MaxHostNameLen]byte + n, err := gethostname(buf[:]) + if n != 0 { + return "", err + } + n = clen(buf[:]) + if n < 1 { + return "", EFAULT + } + return string(buf[:n]), nil +} + +//sys utimes(path string, times *[2]Timeval) (err error) + +func Utimes(path string, tv []Timeval) (err error) { + if tv == nil { + return utimes(path, nil) + } + if len(tv) != 2 { + return EINVAL + } + return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +//sys utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) + +func UtimesNano(path string, ts []Timespec) error { + if ts == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error { + if ts == nil { + return utimensat(dirfd, path, nil, flags) + } + if len(ts) != 2 { + return EINVAL + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags) +} + +//sys fcntl(fd int, cmd int, arg int) (val int, err error) + +// FcntlInt performs a fcntl syscall on fd with the provided command and argument. +func FcntlInt(fd uintptr, cmd, arg int) (int, error) { + valptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + var err error + if errno != 0 { + err = errno + } + return int(valptr), err +} + +// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0) + if e1 != 0 { + return e1 + } + return nil +} + +//sys futimesat(fildes int, path *byte, times *[2]Timeval) (err error) + +func Futimesat(dirfd int, path string, tv []Timeval) error { + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + if tv == nil { + return futimesat(dirfd, pathp, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +// Solaris doesn't have an futimes function because it allows NULL to be +// specified as the path for futimesat. However, Go doesn't like +// NULL-style string interfaces, so this simple wrapper is provided. +func Futimes(fd int, tv []Timeval) error { + if tv == nil { + return futimesat(fd, nil, nil) + } + if len(tv) != 2 { + return EINVAL + } + return futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0]))) +} + +func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + // Assume path ends at NUL. + // This is not technically the Solaris semantics for + // abstract Unix domain sockets -- they are supposed + // to be uninterpreted fixed-size binary blobs -- but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, EAFNOSUPPORT +} + +//sys accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept + +func Accept(fd int) (nfd int, sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + nfd, err = accept(fd, &rsa, &len) + if nfd == -1 { + return + } + sa, err = anyToSockaddr(fd, &rsa) + if err != nil { + Close(nfd) + nfd = 0 + } + return +} + +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg + +func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var msg Msghdr + var rsa RawSockaddrAny + msg.Name = (*byte)(unsafe.Pointer(&rsa)) + msg.Namelen = uint32(SizeofSockaddrAny) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // receive at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = recvmsg(fd, &msg, flags); n == -1 { + return + } + oobn = int(msg.Accrightslen) + // source address is only specified if the socket is unconnected + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { + _, err = SendmsgN(fd, p, oob, to, flags) + return +} + +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg + +func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + var msg Msghdr + msg.Name = (*byte)(unsafe.Pointer(ptr)) + msg.Namelen = uint32(salen) + var iov Iovec + if len(p) > 0 { + iov.Base = (*int8)(unsafe.Pointer(&p[0])) + iov.SetLen(len(p)) + } + var dummy int8 + if len(oob) > 0 { + // send at least one normal byte + if len(p) == 0 { + iov.Base = &dummy + iov.SetLen(1) + } + msg.Accrightslen = int32(len(oob)) + } + msg.Iov = &iov + msg.Iovlen = 1 + if n, err = sendmsg(fd, &msg, flags); err != nil { + return 0, err + } + if len(oob) > 0 && len(p) == 0 { + n = 0 + } + return n, nil +} + +//sys acct(path *byte) (err error) + +func Acct(path string) (err error) { + if len(path) == 0 { + // Assume caller wants to disable accounting. + return acct(nil) + } + + pathp, err := BytePtrFromString(path) + if err != nil { + return err + } + return acct(pathp) +} + +//sys __makedev(version int, major uint, minor uint) (val uint64) + +func Mkdev(major, minor uint32) uint64 { + return __makedev(NEWDEV, uint(major), uint(minor)) +} + +//sys __major(version int, dev uint64) (val uint) + +func Major(dev uint64) uint32 { + return uint32(__major(NEWDEV, dev)) +} + +//sys __minor(version int, dev uint64) (val uint) + +func Minor(dev uint64) uint32 { + return uint32(__minor(NEWDEV, dev)) +} + +/* + * Expose the ioctl function + */ + +//sys ioctl(fd int, req uint, arg uintptr) (err error) + +func IoctlSetInt(fd int, req uint, value int) (err error) { + return ioctl(fd, req, uintptr(value)) +} + +func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { + return ioctl(fd, req, uintptr(unsafe.Pointer(value))) +} + +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermio(fd int, req uint) (*Termio, error) { + var value Termio + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +//sys poll(fds *PollFd, nfds int, timeout int) (n int, err error) + +func Poll(fds []PollFd, timeout int) (n int, err error) { + if len(fds) == 0 { + return poll(nil, 0, timeout) + } + return poll(&fds[0], len(fds), timeout) +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +/* + * Exposed directly + */ +//sys Access(path string, mode uint32) (err error) +//sys Adjtime(delta *Timeval, olddelta *Timeval) (err error) +//sys Chdir(path string) (err error) +//sys Chmod(path string, mode uint32) (err error) +//sys Chown(path string, uid int, gid int) (err error) +//sys Chroot(path string) (err error) +//sys Close(fd int) (err error) +//sys Creat(path string, mode uint32) (fd int, err error) +//sys Dup(fd int) (nfd int, err error) +//sys Dup2(oldfd int, newfd int) (err error) +//sys Exit(code int) +//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchdir(fd int) (err error) +//sys Fchmod(fd int, mode uint32) (err error) +//sys Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) +//sys Fdatasync(fd int) (err error) +//sys Flock(fd int, how int) (err error) +//sys Fpathconf(fd int, name int) (val int, err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) +//sys Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) +//sysnb Getgid() (gid int) +//sysnb Getpid() (pid int) +//sysnb Getpgid(pid int) (pgid int, err error) +//sysnb Getpgrp() (pgid int, err error) +//sys Geteuid() (euid int) +//sys Getegid() (egid int) +//sys Getppid() (ppid int) +//sys Getpriority(which int, who int) (n int, err error) +//sysnb Getrlimit(which int, lim *Rlimit) (err error) +//sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Gettimeofday(tv *Timeval) (err error) +//sysnb Getuid() (uid int) +//sys Kill(pid int, signum syscall.Signal) (err error) +//sys Lchown(path string, uid int, gid int) (err error) +//sys Link(path string, link string) (err error) +//sys Listen(s int, backlog int) (err error) = libsocket.__xnet_llisten +//sys Lstat(path string, stat *Stat_t) (err error) +//sys Madvise(b []byte, advice int) (err error) +//sys Mkdir(path string, mode uint32) (err error) +//sys Mkdirat(dirfd int, path string, mode uint32) (err error) +//sys Mkfifo(path string, mode uint32) (err error) +//sys Mkfifoat(dirfd int, path string, mode uint32) (err error) +//sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mlock(b []byte) (err error) +//sys Mlockall(flags int) (err error) +//sys Mprotect(b []byte, prot int) (err error) +//sys Msync(b []byte, flags int) (err error) +//sys Munlock(b []byte) (err error) +//sys Munlockall() (err error) +//sys Nanosleep(time *Timespec, leftover *Timespec) (err error) +//sys Open(path string, mode int, perm uint32) (fd int, err error) +//sys Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) +//sys Pathconf(path string, name int) (val int, err error) +//sys Pause() (err error) +//sys Pread(fd int, p []byte, offset int64) (n int, err error) +//sys Pwrite(fd int, p []byte, offset int64) (n int, err error) +//sys read(fd int, p []byte) (n int, err error) +//sys Readlink(path string, buf []byte) (n int, err error) +//sys Rename(from string, to string) (err error) +//sys Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) +//sys Rmdir(path string) (err error) +//sys Seek(fd int, offset int64, whence int) (newoffset int64, err error) = lseek +//sys Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) +//sysnb Setegid(egid int) (err error) +//sysnb Seteuid(euid int) (err error) +//sysnb Setgid(gid int) (err error) +//sys Sethostname(p []byte) (err error) +//sysnb Setpgid(pid int, pgid int) (err error) +//sys Setpriority(which int, who int, prio int) (err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sysnb Setrlimit(which int, lim *Rlimit) (err error) +//sysnb Setsid() (pid int, err error) +//sysnb Setuid(uid int) (err error) +//sys Shutdown(s int, how int) (err error) = libsocket.shutdown +//sys Stat(path string, stat *Stat_t) (err error) +//sys Statvfs(path string, vfsstat *Statvfs_t) (err error) +//sys Symlink(path string, link string) (err error) +//sys Sync() (err error) +//sysnb Times(tms *Tms) (ticks uintptr, err error) +//sys Truncate(path string, length int64) (err error) +//sys Fsync(fd int) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sys Umask(mask int) (oldmask int) +//sysnb Uname(buf *Utsname) (err error) +//sys Unmount(target string, flags int) (err error) = libc.umount +//sys Unlink(path string) (err error) +//sys Unlinkat(dirfd int, path string, flags int) (err error) +//sys Ustat(dev int, ubuf *Ustat_t) (err error) +//sys Utime(path string, buf *Utimbuf) (err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect +//sys mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) +//sys munmap(addr uintptr, length uintptr) (err error) +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto +//sys socket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair +//sys write(fd int, p []byte) (n int, err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +var mapper = &mmapper{ + active: make(map[*byte][]byte), + mmap: mmap, + munmap: munmap, +} + +func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + return mapper.Mmap(fd, offset, length, prot, flags) +} + +func Munmap(b []byte) (err error) { + return mapper.Munmap(b) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go new file mode 100644 index 0000000..91c32dd --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go @@ -0,0 +1,23 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build amd64,solaris + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix.go b/vendor/golang.org/x/sys/unix/syscall_unix.go new file mode 100644 index 0000000..3de3756 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -0,0 +1,431 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import ( + "bytes" + "sort" + "sync" + "syscall" + "unsafe" +) + +var ( + Stdin = 0 + Stdout = 1 + Stderr = 2 +) + +// Do the interface allocations only once for common +// Errno values. +var ( + errEAGAIN error = syscall.EAGAIN + errEINVAL error = syscall.EINVAL + errENOENT error = syscall.ENOENT +) + +var ( + signalNameMapOnce sync.Once + signalNameMap map[string]syscall.Signal +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case EAGAIN: + return errEAGAIN + case EINVAL: + return errEINVAL + case ENOENT: + return errENOENT + } + return e +} + +// ErrnoName returns the error name for error number e. +func ErrnoName(e syscall.Errno) string { + i := sort.Search(len(errorList), func(i int) bool { + return errorList[i].num >= e + }) + if i < len(errorList) && errorList[i].num == e { + return errorList[i].name + } + return "" +} + +// SignalName returns the signal name for signal number s. +func SignalName(s syscall.Signal) string { + i := sort.Search(len(signalList), func(i int) bool { + return signalList[i].num >= s + }) + if i < len(signalList) && signalList[i].num == s { + return signalList[i].name + } + return "" +} + +// SignalNum returns the syscall.Signal for signal named s, +// or 0 if a signal with such name is not found. +// The signal name should start with "SIG". +func SignalNum(s string) syscall.Signal { + signalNameMapOnce.Do(func() { + signalNameMap = make(map[string]syscall.Signal) + for _, signal := range signalList { + signalNameMap[signal.name] = signal.num + } + }) + return signalNameMap[s] +} + +// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte. +func clen(n []byte) int { + i := bytes.IndexByte(n, 0) + if i == -1 { + i = len(n) + } + return i +} + +// Mmap manager, for use by operating system-specific implementations. + +type mmapper struct { + sync.Mutex + active map[*byte][]byte // active mappings; key is last byte in mapping + mmap func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error) + munmap func(addr uintptr, length uintptr) error +} + +func (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) { + if length <= 0 { + return nil, EINVAL + } + + // Map the requested memory. + addr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset) + if errno != nil { + return nil, errno + } + + // Slice memory layout + var sl = struct { + addr uintptr + len int + cap int + }{addr, length, length} + + // Use unsafe to turn sl into a []byte. + b := *(*[]byte)(unsafe.Pointer(&sl)) + + // Register mapping in m and return it. + p := &b[cap(b)-1] + m.Lock() + defer m.Unlock() + m.active[p] = b + return b, nil +} + +func (m *mmapper) Munmap(data []byte) (err error) { + if len(data) == 0 || len(data) != cap(data) { + return EINVAL + } + + // Find the base of the mapping. + p := &data[cap(data)-1] + m.Lock() + defer m.Unlock() + b := m.active[p] + if b == nil || &b[0] != &data[0] { + return EINVAL + } + + // Unmap the memory and update m. + if errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil { + return errno + } + delete(m.active, p) + return nil +} + +func Read(fd int, p []byte) (n int, err error) { + n, err = read(fd, p) + if raceenabled { + if n > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), n) + } + if err == nil { + raceAcquire(unsafe.Pointer(&ioSync)) + } + } + return +} + +func Write(fd int, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + n, err = write(fd, p) + if raceenabled && n > 0 { + raceReadRange(unsafe.Pointer(&p[0]), n) + } + return +} + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +// Sockaddr represents a socket address. +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs +} + +// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets. +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets. +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets. +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func Bind(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd int, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getpeername(fd int) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if err = getpeername(fd, &rsa, &len); err != nil { + return + } + return anyToSockaddr(fd, &rsa) +} + +func GetsockoptByte(fd, level, opt int) (value byte, err error) { + var n byte + vallen := _Socklen(1) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func GetsockoptInt(fd, level, opt int) (value int, err error) { + var n int32 + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return int(n), err +} + +func GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) { + vallen := _Socklen(4) + err = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + return value, err +} + +func GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) { + var value IPMreq + vallen := _Socklen(SizeofIPMreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) { + var value IPv6Mreq + vallen := _Socklen(SizeofIPv6Mreq) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) { + var value IPv6MTUInfo + vallen := _Socklen(SizeofIPv6MTUInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) { + var value ICMPv6Filter + vallen := _Socklen(SizeofICMPv6Filter) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + +func GetsockoptLinger(fd, level, opt int) (*Linger, error) { + var linger Linger + vallen := _Socklen(SizeofLinger) + err := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen) + return &linger, err +} + +func GetsockoptTimeval(fd, level, opt int) (*Timeval, error) { + var tv Timeval + vallen := _Socklen(unsafe.Sizeof(tv)) + err := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen) + return &tv, err +} + +func GetsockoptUint64(fd, level, opt int) (value uint64, err error) { + var n uint64 + vallen := _Socklen(8) + err = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen) + return n, err +} + +func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { + var rsa RawSockaddrAny + var len _Socklen = SizeofSockaddrAny + if n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil { + return + } + if rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + +func Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) { + ptr, n, err := to.sockaddr() + if err != nil { + return err + } + return sendto(fd, p, flags, ptr, n) +} + +func SetsockoptByte(fd, level, opt int, value byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 1) +} + +func SetsockoptInt(fd, level, opt int, value int) (err error) { + var n = int32(value) + return setsockopt(fd, level, opt, unsafe.Pointer(&n), 4) +} + +func SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4) +} + +func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq) +} + +func SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq) +} + +func SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error { + return setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter) +} + +func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger) +} + +func SetsockoptString(fd, level, opt int, s string) (err error) { + var p unsafe.Pointer + if len(s) > 0 { + p = unsafe.Pointer(&[]byte(s)[0]) + } + return setsockopt(fd, level, opt, p, uintptr(len(s))) +} + +func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv)) +} + +func SetsockoptUint64(fd, level, opt int, value uint64) (err error) { + return setsockopt(fd, level, opt, unsafe.Pointer(&value), 8) +} + +func Socket(domain, typ, proto int) (fd int, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return -1, EAFNOSUPPORT + } + fd, err = socket(domain, typ, proto) + return +} + +func Socketpair(domain, typ, proto int) (fd [2]int, err error) { + var fdx [2]int32 + err = socketpair(domain, typ, proto, &fdx) + if err == nil { + fd[0] = int(fdx[0]) + fd[1] = int(fdx[1]) + } + return +} + +var ioSync int64 + +func CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) } + +func SetNonblock(fd int, nonblocking bool) (err error) { + flag, err := fcntl(fd, F_GETFL, 0) + if err != nil { + return err + } + if nonblocking { + flag |= O_NONBLOCK + } else { + flag &= ^O_NONBLOCK + } + _, err = fcntl(fd, F_SETFL, flag) + return err +} + +// Exec calls execve(2), which replaces the calling executable in the process +// tree. argv0 should be the full path to an executable ("/bin/ls") and the +// executable name should also be the first argument in argv (["ls", "-l"]). +// envv are the environment variables that should be passed to the new +// process (["USER=go", "PWD=/tmp"]). +func Exec(argv0 string, argv []string, envv []string) error { + return syscall.Exec(argv0, argv, envv) +} + +// Lutimes sets the access and modification times tv on path. If path refers to +// a symlink, it is not dereferenced and the timestamps are set on the symlink. +// If tv is nil, the access and modification times are set to the current time. +// Otherwise tv must contain exactly 2 elements, with access time as the first +// element and modification time as the second element. +func Lutimes(path string, tv []Timeval) error { + if tv == nil { + return UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW) + } + if len(tv) != 2 { + return EINVAL + } + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go new file mode 100644 index 0000000..1c70d1b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc.go @@ -0,0 +1,15 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build darwin dragonfly freebsd linux netbsd openbsd solaris +// +build !gccgo,!ppc64le,!ppc64 + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) diff --git a/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go new file mode 100644 index 0000000..86dc765 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go @@ -0,0 +1,24 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux +// +build ppc64le ppc64 +// +build !gccgo + +package unix + +import "syscall" + +func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall(trap, a1, a2, a3) +} +func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) +} +func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall(trap, a1, a2, a3) +} +func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { + return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) +} diff --git a/vendor/golang.org/x/sys/unix/timestruct.go b/vendor/golang.org/x/sys/unix/timestruct.go new file mode 100644 index 0000000..4a672f5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/timestruct.go @@ -0,0 +1,82 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris + +package unix + +import "time" + +// TimespecToNsec converts a Timespec value into a number of +// nanoseconds since the Unix epoch. +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +// NsecToTimespec takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timespec value. +func NsecToTimespec(nsec int64) Timespec { + sec := nsec / 1e9 + nsec = nsec % 1e9 + if nsec < 0 { + nsec += 1e9 + sec-- + } + return setTimespec(sec, nsec) +} + +// TimeToTimespec converts t into a Timespec. +// On some 32-bit systems the range of valid Timespec values are smaller +// than that of time.Time values. So if t is out of the valid range of +// Timespec, it returns a zero Timespec and ERANGE. +func TimeToTimespec(t time.Time) (Timespec, error) { + sec := t.Unix() + nsec := int64(t.Nanosecond()) + ts := setTimespec(sec, nsec) + + // Currently all targets have either int32 or int64 for Timespec.Sec. + // If there were a new target with floating point type for it, we have + // to consider the rounding error. + if int64(ts.Sec) != sec { + return Timespec{}, ERANGE + } + return ts, nil +} + +// TimevalToNsec converts a Timeval value into a number of nanoseconds +// since the Unix epoch. +func TimevalToNsec(tv Timeval) int64 { return int64(tv.Sec)*1e9 + int64(tv.Usec)*1e3 } + +// NsecToTimeval takes a number of nanoseconds since the Unix epoch +// and returns the corresponding Timeval value. +func NsecToTimeval(nsec int64) Timeval { + nsec += 999 // round up to microsecond + usec := nsec % 1e9 / 1e3 + sec := nsec / 1e9 + if usec < 0 { + usec += 1e6 + sec-- + } + return setTimeval(sec, usec) +} + +// Unix returns ts as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +// Unix returns tv as the number of seconds and nanoseconds elapsed since the +// Unix epoch. +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +// Nano returns ts as the number of nanoseconds elapsed since the Unix epoch. +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +// Nano returns tv as the number of nanoseconds elapsed since the Unix epoch. +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/unix/types_aix.go b/vendor/golang.org/x/sys/unix/types_aix.go new file mode 100644 index 0000000..25e8349 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_aix.go @@ -0,0 +1,236 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore +// +build aix + +/* +Input to cgo -godefs. See also mkerrors.sh and mkall.sh +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + + +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +type off64 C.off64_t +type off C.off_t +type Mode_t C.mode_t + +// Time + +type Timespec C.struct_timespec + +type StTimespec C.struct_st_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Timex C.struct_timex + +type Time_t C.time_t + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +type Timezone C.struct_timezone + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit64 + +type Pid_t C.pid_t + +type _Gid_t C.gid_t + +type dev_t C.dev_t + +// Files + +type Stat_t C.struct_stat + +type StatxTimestamp C.struct_statx_timestamp + +type Statx_t C.struct_statx + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Cmsghdr C.struct_cmsghdr + +type ICMPv6Filter C.struct_icmp6_filter + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type Linger C.struct_linger + +type Msghdr C.struct_msghdr + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr +) + +type IfMsgHdr C.struct_if_msghdr + +// Misc + +type FdSet C.fd_set + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +type Sigset_t C.sigset_t + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +//poll + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +//flock_t + +type Flock_t C.struct_flock64 + +// Statfs + +type Fsid_t C.struct_fsid_t +type Fsid64_t C.struct_fsid64_t + +type Statfs_t C.struct_statfs + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/types_darwin.go b/vendor/golang.org/x/sys/unix/types_darwin.go new file mode 100644 index 0000000..155c2e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_darwin.go @@ -0,0 +1,283 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define __DARWIN_UNIX03 0 +#define KERNEL +#define _DARWIN_USE_64_BIT_INODE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat64 + +type Statfs_t C.struct_statfs64 + +type Flock_t C.struct_flock + +type Fstore_t C.struct_fstore + +type Radvisory_t C.struct_radvisory + +type Fbootstraptransfer_t C.struct_fbootstraptransfer + +type Log2phys_t C.struct_log2phys + +type Fsid C.struct_fsid + +type Dirent C.struct_dirent + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet4Pktinfo C.struct_in_pktinfo + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet4Pktinfo = C.sizeof_struct_in_pktinfo + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfmaMsghdr2 = C.sizeof_struct_ifma_msghdr2 + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfmaMsghdr2 C.struct_ifma_msghdr2 + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// uname + +type Utsname C.struct_utsname + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_dragonfly.go b/vendor/golang.org/x/sys/unix/types_dragonfly.go new file mode 100644 index 0000000..3365dd7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_dragonfly.go @@ -0,0 +1,263 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.struct_fsid + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go new file mode 100644 index 0000000..7470798 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -0,0 +1,356 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define _WANT_FREEBSD11_STAT 1 +#define _WANT_FREEBSD11_STATFS 1 +#define _WANT_FREEBSD11_DIRENT 1 +#define _WANT_FREEBSD11_KEVENT 1 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +// This structure is a duplicate of if_data on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_data8 { + u_char ifi_type; + u_char ifi_physical; + u_char ifi_addrlen; + u_char ifi_hdrlen; + u_char ifi_link_state; + u_char ifi_spare_char1; + u_char ifi_spare_char2; + u_char ifi_datalen; + u_long ifi_mtu; + u_long ifi_metric; + u_long ifi_baudrate; + u_long ifi_ipackets; + u_long ifi_ierrors; + u_long ifi_opackets; + u_long ifi_oerrors; + u_long ifi_collisions; + u_long ifi_ibytes; + u_long ifi_obytes; + u_long ifi_imcasts; + u_long ifi_omcasts; + u_long ifi_iqdrops; + u_long ifi_noproto; + u_long ifi_hwassist; +// FIXME: these are now unions, so maybe need to change definitions? +#undef ifi_epoch + time_t ifi_epoch; +#undef ifi_lastchange + struct timeval ifi_lastchange; +}; + +// This structure is a duplicate of if_msghdr on FreeBSD 8-STABLE. +// See /usr/include/net/if.h. +struct if_msghdr8 { + u_short ifm_msglen; + u_char ifm_version; + u_char ifm_type; + int ifm_addrs; + int ifm_flags; + u_short ifm_index; + struct if_data8 ifm_data; +}; +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +const ( + _statfsVersion = C.STATFS_VERSION + _dirblksiz = C.DIRBLKSIZ +) + +type Stat_t C.struct_stat + +type stat_freebsd11_t C.struct_freebsd11_stat + +type Statfs_t C.struct_statfs + +type statfs_freebsd11_t C.struct_freebsd11_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type dirent_freebsd11 C.struct_freebsd11_dirent + +type Fsid C.struct_fsid + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Advice to Fadvise + +const ( + FADV_NORMAL = C.POSIX_FADV_NORMAL + FADV_RANDOM = C.POSIX_FADV_RANDOM + FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL + FADV_WILLNEED = C.POSIX_FADV_WILLNEED + FADV_DONTNEED = C.POSIX_FADV_DONTNEED + FADV_NOREUSE = C.POSIX_FADV_NOREUSE +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPMreqn C.struct_ip_mreqn + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPMreqn = C.sizeof_struct_ip_mreqn + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent_freebsd11 + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + sizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfMsghdr = C.sizeof_struct_if_msghdr8 + sizeofIfData = C.sizeof_struct_if_data + SizeofIfData = C.sizeof_struct_if_data8 + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfmaMsghdr = C.sizeof_struct_ifma_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type ifMsghdr C.struct_if_msghdr + +type IfMsghdr C.struct_if_msghdr8 + +type ifData C.struct_if_data + +type IfData C.struct_if_data8 + +type IfaMsghdr C.struct_ifa_msghdr + +type IfmaMsghdr C.struct_ifma_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfZbuf = C.sizeof_struct_bpf_zbuf + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr + SizeofBpfZbufHeader = C.sizeof_struct_bpf_zbuf_header +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfZbuf C.struct_bpf_zbuf + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfZbufHeader C.struct_bpf_zbuf_header + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLINIGNEOF = C.POLLINIGNEOF + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Capabilities + +type CapRights C.struct_cap_rights + +// Uname + +type Utsname C.struct_utsname diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go new file mode 100644 index 0000000..2dd4f95 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_netbsd.go @@ -0,0 +1,289 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.fsid_t + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Advice to Fadvise + +const ( + FADV_NORMAL = C.POSIX_FADV_NORMAL + FADV_RANDOM = C.POSIX_FADV_RANDOM + FADV_SEQUENTIAL = C.POSIX_FADV_SEQUENTIAL + FADV_WILLNEED = C.POSIX_FADV_WILLNEED + FADV_DONTNEED = C.POSIX_FADV_DONTNEED + FADV_NOREUSE = C.POSIX_FADV_NOREUSE +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +type Mclpool C.struct_mclpool + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfTimeval C.struct_bpf_timeval + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +type Ptmget C.struct_ptmget + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Sysctl + +type Sysctlnode C.struct_sysctlnode + +// Uname + +type Utsname C.struct_utsname + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go new file mode 100644 index 0000000..8aafbe4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -0,0 +1,282 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Statfs_t C.struct_statfs + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +type Fsid C.fsid_t + +// File system limits + +const ( + PathMax = C.PATH_MAX +) + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Ptrace requests + +const ( + PTRACE_TRACEME = C.PT_TRACE_ME + PTRACE_CONT = C.PT_CONTINUE + PTRACE_KILL = C.PT_KILL +) + +// Events (kqueue, kevent) + +type Kevent_t C.struct_kevent + +// Select + +type FdSet C.fd_set + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofIfAnnounceMsghdr = C.sizeof_struct_if_announcemsghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type IfAnnounceMsghdr C.struct_if_announcemsghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +type Mclpool C.struct_mclpool + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfHdr C.struct_bpf_hdr + +type BpfTimeval C.struct_bpf_timeval + +// Terminal handling + +type Termios C.struct_termios + +type Winsize C.struct_winsize + +// fchmodat-like syscalls. + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW +) + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) + +// Signal Sets + +type Sigset_t C.sigset_t + +// Uname + +type Utsname C.struct_utsname + +// Uvmexp + +const SizeofUvmexp = C.sizeof_struct_uvmexp + +type Uvmexp C.struct_uvmexp + +// Clockinfo + +const SizeofClockinfo = C.sizeof_struct_clockinfo + +type Clockinfo C.struct_clockinfo diff --git a/vendor/golang.org/x/sys/unix/types_solaris.go b/vendor/golang.org/x/sys/unix/types_solaris.go new file mode 100644 index 0000000..2b716f9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/types_solaris.go @@ -0,0 +1,266 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +/* +Input to cgo -godefs. See README.md +*/ + +// +godefs map struct_in_addr [4]byte /* in_addr */ +// +godefs map struct_in6_addr [16]byte /* in6_addr */ + +package unix + +/* +#define KERNEL +// These defines ensure that builds done on newer versions of Solaris are +// backwards-compatible with older versions of Solaris and +// OpenSolaris-based derivatives. +#define __USE_SUNOS_SOCKETS__ // msghdr +#define __USE_LEGACY_PROTOTYPES__ // iovec +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum { + sizeofPtr = sizeof(void*), +}; + +union sockaddr_all { + struct sockaddr s1; // this one gets used for fields + struct sockaddr_in s2; // these pad it out + struct sockaddr_in6 s3; + struct sockaddr_un s4; + struct sockaddr_dl s5; +}; + +struct sockaddr_any { + struct sockaddr addr; + char pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)]; +}; + +*/ +import "C" + +// Machine characteristics + +const ( + SizeofPtr = C.sizeofPtr + SizeofShort = C.sizeof_short + SizeofInt = C.sizeof_int + SizeofLong = C.sizeof_long + SizeofLongLong = C.sizeof_longlong + PathMax = C.PATH_MAX + MaxHostNameLen = C.MAXHOSTNAMELEN +) + +// Basic types + +type ( + _C_short C.short + _C_int C.int + _C_long C.long + _C_long_long C.longlong +) + +// Time + +type Timespec C.struct_timespec + +type Timeval C.struct_timeval + +type Timeval32 C.struct_timeval32 + +type Tms C.struct_tms + +type Utimbuf C.struct_utimbuf + +// Processes + +type Rusage C.struct_rusage + +type Rlimit C.struct_rlimit + +type _Gid_t C.gid_t + +// Files + +type Stat_t C.struct_stat + +type Flock_t C.struct_flock + +type Dirent C.struct_dirent + +// Filesystems + +type _Fsblkcnt_t C.fsblkcnt_t + +type Statvfs_t C.struct_statvfs + +// Sockets + +type RawSockaddrInet4 C.struct_sockaddr_in + +type RawSockaddrInet6 C.struct_sockaddr_in6 + +type RawSockaddrUnix C.struct_sockaddr_un + +type RawSockaddrDatalink C.struct_sockaddr_dl + +type RawSockaddr C.struct_sockaddr + +type RawSockaddrAny C.struct_sockaddr_any + +type _Socklen C.socklen_t + +type Linger C.struct_linger + +type Iovec C.struct_iovec + +type IPMreq C.struct_ip_mreq + +type IPv6Mreq C.struct_ipv6_mreq + +type Msghdr C.struct_msghdr + +type Cmsghdr C.struct_cmsghdr + +type Inet6Pktinfo C.struct_in6_pktinfo + +type IPv6MTUInfo C.struct_ip6_mtuinfo + +type ICMPv6Filter C.struct_icmp6_filter + +const ( + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter +) + +// Select + +type FdSet C.fd_set + +// Misc + +type Utsname C.struct_utsname + +type Ustat_t C.struct_ustat + +const ( + AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW + AT_REMOVEDIR = C.AT_REMOVEDIR + AT_EACCESS = C.AT_EACCESS +) + +// Routing and interface messages + +const ( + SizeofIfMsghdr = C.sizeof_struct_if_msghdr + SizeofIfData = C.sizeof_struct_if_data + SizeofIfaMsghdr = C.sizeof_struct_ifa_msghdr + SizeofRtMsghdr = C.sizeof_struct_rt_msghdr + SizeofRtMetrics = C.sizeof_struct_rt_metrics +) + +type IfMsghdr C.struct_if_msghdr + +type IfData C.struct_if_data + +type IfaMsghdr C.struct_ifa_msghdr + +type RtMsghdr C.struct_rt_msghdr + +type RtMetrics C.struct_rt_metrics + +// Berkeley packet filter + +const ( + SizeofBpfVersion = C.sizeof_struct_bpf_version + SizeofBpfStat = C.sizeof_struct_bpf_stat + SizeofBpfProgram = C.sizeof_struct_bpf_program + SizeofBpfInsn = C.sizeof_struct_bpf_insn + SizeofBpfHdr = C.sizeof_struct_bpf_hdr +) + +type BpfVersion C.struct_bpf_version + +type BpfStat C.struct_bpf_stat + +type BpfProgram C.struct_bpf_program + +type BpfInsn C.struct_bpf_insn + +type BpfTimeval C.struct_bpf_timeval + +type BpfHdr C.struct_bpf_hdr + +// Terminal handling + +type Termios C.struct_termios + +type Termio C.struct_termio + +type Winsize C.struct_winsize + +// poll + +type PollFd C.struct_pollfd + +const ( + POLLERR = C.POLLERR + POLLHUP = C.POLLHUP + POLLIN = C.POLLIN + POLLNVAL = C.POLLNVAL + POLLOUT = C.POLLOUT + POLLPRI = C.POLLPRI + POLLRDBAND = C.POLLRDBAND + POLLRDNORM = C.POLLRDNORM + POLLWRBAND = C.POLLWRBAND + POLLWRNORM = C.POLLWRNORM +) diff --git a/vendor/golang.org/x/sys/unix/xattr_bsd.go b/vendor/golang.org/x/sys/unix/xattr_bsd.go new file mode 100644 index 0000000..30c1d71 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/xattr_bsd.go @@ -0,0 +1,240 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd netbsd + +package unix + +import ( + "strings" + "unsafe" +) + +// Derive extattr namespace and attribute name + +func xattrnamespace(fullattr string) (ns int, attr string, err error) { + s := strings.IndexByte(fullattr, '.') + if s == -1 { + return -1, "", ENOATTR + } + + namespace := fullattr[0:s] + attr = fullattr[s+1:] + + switch namespace { + case "user": + return EXTATTR_NAMESPACE_USER, attr, nil + case "system": + return EXTATTR_NAMESPACE_SYSTEM, attr, nil + default: + return -1, "", ENOATTR + } +} + +func initxattrdest(dest []byte, idx int) (d unsafe.Pointer) { + if len(dest) > idx { + return unsafe.Pointer(&dest[idx]) + } else { + return unsafe.Pointer(_zero) + } +} + +// FreeBSD and NetBSD implement their own syscalls to handle extended attributes + +func Getxattr(file string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFile(file, nsid, a, uintptr(d), destsize) +} + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetFd(fd, nsid, a, uintptr(d), destsize) +} + +func Lgetxattr(link string, attr string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsize := len(dest) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return -1, err + } + + return ExtattrGetLink(link, nsid, a, uintptr(d), destsize) +} + +// flags are unused on FreeBSD + +func Fsetxattr(fd int, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz) + return +} + +func Setxattr(file string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz) + return +} + +func Lsetxattr(link string, attr string, data []byte, flags int) (err error) { + var d unsafe.Pointer + if len(data) > 0 { + d = unsafe.Pointer(&data[0]) + } + datasiz := len(data) + + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + _, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz) + return +} + +func Removexattr(file string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFile(file, nsid, a) + return +} + +func Fremovexattr(fd int, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteFd(fd, nsid, a) + return +} + +func Lremovexattr(link string, attr string) (err error) { + nsid, a, err := xattrnamespace(attr) + if err != nil { + return + } + + err = ExtattrDeleteLink(link, nsid, a) + return +} + +func Listxattr(file string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + // FreeBSD won't allow you to list xattrs from multiple namespaces + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFile(file, nsid, uintptr(d), destsiz) + + /* Errors accessing system attrs are ignored so that + * we can implement the Linux-like behavior of omitting errors that + * we don't have read permissions on + * + * Linux will still error if we ask for user attributes on a file that + * we don't have read permissions on, so don't ignore those errors + */ + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} + +func Llistxattr(link string, dest []byte) (sz int, err error) { + d := initxattrdest(dest, 0) + destsiz := len(dest) + + s := 0 + for _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} { + stmp, e := ExtattrListLink(link, nsid, uintptr(d), destsiz) + if e != nil && e == EPERM && nsid != EXTATTR_NAMESPACE_USER { + continue + } else if e != nil { + return s, e + } + + s += stmp + destsiz -= s + if destsiz < 0 { + destsiz = 0 + } + d = initxattrdest(dest, s) + } + + return s, nil +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go new file mode 100644 index 0000000..4b7b965 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -0,0 +1,1372 @@ +// mkerrors.sh -maix32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3ff796dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x5 + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0xc + F_SETLKW = 0x7 + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fcf8df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fcf8df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3ff796bb + SIOCGIFCONFGLOB = -0x3ff79670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0x80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0x80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0x80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0x8004747e + TIOCLBIS = 0x8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0x8004747d + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0x80067411 + TIOCSETD = 0x80047401 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0x3f) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGKAP", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGSAK", "secure attention"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go new file mode 100644 index 0000000..ed04fd1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -0,0 +1,1373 @@ +// mkerrors.sh -maix64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -maix64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BYPASS = 0x19 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_INTF = 0x14 + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x1e + AF_NDD = 0x17 + AF_NETWARE = 0x16 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_RIF = 0x15 + AF_ROUTE = 0x11 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x400000 + ARPHRD_802_3 = 0x6 + ARPHRD_802_5 = 0x6 + ARPHRD_ETHER = 0x1 + ARPHRD_FDDI = 0x1 + B0 = 0x0 + B110 = 0x3 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2400 = 0xb + B300 = 0x7 + B38400 = 0xf + B4800 = 0xc + B50 = 0x1 + B600 = 0x8 + B75 = 0x2 + B9600 = 0xd + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x1000 + BSDLY = 0x1000 + CAP_AACCT = 0x6 + CAP_ARM_APPLICATION = 0x5 + CAP_BYPASS_RAC_VMM = 0x3 + CAP_CLEAR = 0x0 + CAP_CREDENTIALS = 0x7 + CAP_EFFECTIVE = 0x1 + CAP_EWLM_AGENT = 0x4 + CAP_INHERITABLE = 0x2 + CAP_MAXIMUM = 0x7 + CAP_NUMA_ATTACH = 0x2 + CAP_PERMITTED = 0x3 + CAP_PROPAGATE = 0x1 + CAP_PROPOGATE = 0x1 + CAP_SET = 0x1 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_MONOTONIC = 0xa + CLOCK_PROCESS_CPUTIME_ID = 0xb + CLOCK_REALTIME = 0x9 + CLOCK_THREAD_CPUTIME_ID = 0xc + CR0 = 0x0 + CR1 = 0x100 + CR2 = 0x200 + CR3 = 0x300 + CRDLY = 0x300 + CREAD = 0x80 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIOCGIFCONF = -0x3fef96dc + CSIZE = 0x30 + CSMAP_DIR = "/usr/lib/nls/csmap/" + CSTART = '\021' + CSTOP = '\023' + CSTOPB = 0x40 + CSUSP = 0x1a + ECHO = 0x8 + ECHOCTL = 0x20000 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x80000 + ECHONL = 0x40 + ECHOPRT = 0x40000 + ECH_ICMPID = 0x2 + ETHERNET_CSMACD = 0x6 + EVENP = 0x80 + EXCONTINUE = 0x0 + EXDLOK = 0x3 + EXIO = 0x2 + EXPGIO = 0x0 + EXRESUME = 0x2 + EXRETURN = 0x1 + EXSIG = 0x4 + EXTA = 0xe + EXTB = 0xf + EXTRAP = 0x1 + EYEC_RTENTRYA = 0x257274656e747241 + EYEC_RTENTRYF = 0x257274656e747246 + E_ACC = 0x0 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0xfffe + FF0 = 0x0 + FF1 = 0x2000 + FFDLY = 0x2000 + FLUSHBAND = 0x40 + FLUSHLOW = 0x8 + FLUSHO = 0x100000 + FLUSHR = 0x1 + FLUSHRW = 0x3 + FLUSHW = 0x2 + F_CLOSEM = 0xa + F_DUP2FD = 0xe + F_DUPFD = 0x0 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETLK64 = 0xb + F_GETOWN = 0x8 + F_LOCK = 0x1 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLK64 = 0xc + F_SETLKW = 0xd + F_SETLKW64 = 0xd + F_SETOWN = 0x9 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_TSTLK = 0xf + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMP6_FILTER = 0x26 + ICMP6_SEC_SEND_DEL = 0x46 + ICMP6_SEC_SEND_GET = 0x47 + ICMP6_SEC_SEND_SET = 0x44 + ICMP6_SEC_SEND_SET_CGA_ADDR = 0x45 + ICRNL = 0x100 + IEXTEN = 0x200000 + IFA_FIRSTALIAS = 0x2000 + IFA_ROUTE = 0x1 + IFF_64BIT = 0x4000000 + IFF_ALLCAST = 0x20000 + IFF_ALLMULTI = 0x200 + IFF_BPF = 0x8000000 + IFF_BRIDGE = 0x40000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x80c52 + IFF_CHECKSUM_OFFLOAD = 0x10000000 + IFF_D1 = 0x8000 + IFF_D2 = 0x4000 + IFF_D3 = 0x2000 + IFF_D4 = 0x1000 + IFF_DEBUG = 0x4 + IFF_DEVHEALTH = 0x4000 + IFF_DO_HW_LOOPBACK = 0x10000 + IFF_GROUP_ROUTING = 0x2000000 + IFF_IFBUFMGT = 0x800000 + IFF_LINK0 = 0x100000 + IFF_LINK1 = 0x200000 + IFF_LINK2 = 0x400000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x80000 + IFF_NOARP = 0x80 + IFF_NOECHO = 0x800 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_PSEG = 0x40000000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SNAP = 0x8000 + IFF_TCP_DISABLE_CKSUM = 0x20000000 + IFF_TCP_NOCKSUM = 0x1000000 + IFF_UP = 0x1 + IFF_VIPA = 0x80000000 + IFNAMSIZ = 0x10 + IFO_FLUSH = 0x1 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_CLUSTER = 0x3e + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FCS = 0x3a + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIFTUNNEL = 0x3c + IFT_HDH1822 = 0x3 + IFT_HF = 0x3d + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SN = 0x38 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SP = 0x39 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TUNNEL = 0x3b + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_VIPA = 0x37 + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x10000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_USE = 0x1 + IPPROTO_AH = 0x33 + IPPROTO_BIP = 0x53 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GIF = 0x8c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_LOCAL = 0x3f + IPPROTO_MAX = 0x100 + IPPROTO_MH = 0x87 + IPPROTO_NONE = 0x3b + IPPROTO_PUP = 0xc + IPPROTO_QOS = 0x2d + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_ADDRFORM = 0x16 + IPV6_ADDR_PREFERENCES = 0x4a + IPV6_ADD_MEMBERSHIP = 0xc + IPV6_AIXRAWSOCKET = 0x39 + IPV6_CHECKSUM = 0x27 + IPV6_DONTFRAG = 0x2d + IPV6_DROP_MEMBERSHIP = 0xd + IPV6_DSTOPTS = 0x36 + IPV6_FLOWINFO_FLOWLABEL = 0xffffff + IPV6_FLOWINFO_PRIFLOW = 0xfffffff + IPV6_FLOWINFO_PRIORITY = 0xf000000 + IPV6_FLOWINFO_SRFLAG = 0x10000000 + IPV6_FLOWINFO_VERSION = 0xf0000000 + IPV6_HOPLIMIT = 0x28 + IPV6_HOPOPTS = 0x34 + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MIPDSTOPTS = 0x36 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_NOPROBE = 0x1c + IPV6_PATHMTU = 0x2e + IPV6_PKTINFO = 0x21 + IPV6_PKTOPTIONS = 0x24 + IPV6_PRIORITY_10 = 0xa000000 + IPV6_PRIORITY_11 = 0xb000000 + IPV6_PRIORITY_12 = 0xc000000 + IPV6_PRIORITY_13 = 0xd000000 + IPV6_PRIORITY_14 = 0xe000000 + IPV6_PRIORITY_15 = 0xf000000 + IPV6_PRIORITY_8 = 0x8000000 + IPV6_PRIORITY_9 = 0x9000000 + IPV6_PRIORITY_BULK = 0x4000000 + IPV6_PRIORITY_CONTROL = 0x7000000 + IPV6_PRIORITY_FILLER = 0x1000000 + IPV6_PRIORITY_INTERACTIVE = 0x6000000 + IPV6_PRIORITY_RESERVED1 = 0x3000000 + IPV6_PRIORITY_RESERVED2 = 0x5000000 + IPV6_PRIORITY_UNATTENDED = 0x2000000 + IPV6_PRIORITY_UNCHARACTERIZED = 0x0 + IPV6_RECVDSTOPTS = 0x38 + IPV6_RECVHOPLIMIT = 0x29 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVHOPS = 0x22 + IPV6_RECVIF = 0x1e + IPV6_RECVPATHMTU = 0x2f + IPV6_RECVPKTINFO = 0x23 + IPV6_RECVRTHDR = 0x33 + IPV6_RECVSRCRT = 0x1d + IPV6_RECVTCLASS = 0x2a + IPV6_RTHDR = 0x32 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RTHDR_TYPE_2 = 0x2 + IPV6_SENDIF = 0x1f + IPV6_SRFLAG_LOOSE = 0x0 + IPV6_SRFLAG_STRICT = 0x10000000 + IPV6_TCLASS = 0x2b + IPV6_TOKEN_LENGTH = 0x40 + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2c + IPV6_V6ONLY = 0x25 + IPV6_VERSION = 0x60000000 + IP_ADDRFORM = 0x16 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x3c + IP_BLOCK_SOURCE = 0x3a + IP_BROADCAST_IF = 0x10 + IP_CACHE_LINE_SIZE = 0x80 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPMODE = 0x11 + IP_DONTFRAG = 0x19 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x3d + IP_FINDPMTU = 0x1a + IP_HDRINCL = 0x2 + IP_INC_MEMBERSHIPS = 0x14 + IP_INIT_MEMBERSHIP = 0x14 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_HOPS = 0xa + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OPT = 0x1b + IP_OPTIONS = 0x1 + IP_PMTUAGE = 0x1b + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVIFINFO = 0xf + IP_RECVINTERFACE = 0x20 + IP_RECVMACHDR = 0xe + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x22 + IP_RETOPTS = 0x8 + IP_SOURCE_FILTER = 0x48 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x3b + IP_UNICAST_HOPS = 0x4 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x800 + IXANY = 0x1000 + IXOFF = 0x400 + IXON = 0x200 + I_FLUSH = 0x20005305 + LNOFLSH = 0x8000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x10 + MAP_ANONYMOUS = 0x10 + MAP_FILE = 0x0 + MAP_FIXED = 0x100 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_TYPE = 0xf0 + MAP_VARIABLE = 0x0 + MCL_CURRENT = 0x100 + MCL_FUTURE = 0x200 + MSG_ANY = 0x4 + MSG_ARGEXT = 0x400 + MSG_BAND = 0x2 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_EOR = 0x8 + MSG_HIPRI = 0x1 + MSG_MAXIOVLEN = 0x10 + MSG_MPEG2 = 0x80 + MSG_NONBLOCK = 0x4000 + MSG_NOSIGNAL = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x200 + MS_ASYNC = 0x10 + MS_EINTR = 0x80 + MS_INVALIDATE = 0x40 + MS_PER_SEC = 0x3e8 + MS_SYNC = 0x20 + NL0 = 0x0 + NL1 = 0x4000 + NL2 = 0x8000 + NL3 = 0xc000 + NLDLY = 0x4000 + NOFLSH = 0x80 + NOFLUSH = 0x80000000 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + ONOEOT = 0x80000 + OPOST = 0x1 + OXTABS = 0x40000 + O_ACCMODE = 0x23 + O_APPEND = 0x8 + O_CIO = 0x80 + O_CIOR = 0x800000000 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DEFER = 0x2000 + O_DELAY = 0x4000 + O_DIRECT = 0x8000000 + O_DIRECTORY = 0x80000 + O_DSYNC = 0x400000 + O_EFSOFF = 0x400000000 + O_EFSON = 0x200000000 + O_EXCL = 0x400 + O_EXEC = 0x20 + O_LARGEFILE = 0x4000000 + O_NDELAY = 0x8000 + O_NOCACHE = 0x100000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x1000000 + O_NONBLOCK = 0x4 + O_NONE = 0x3 + O_NSHARE = 0x10000 + O_RAW = 0x100000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSHARE = 0x1000 + O_RSYNC = 0x200000 + O_SEARCH = 0x20 + O_SNAPSHOT = 0x40 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_TTY_INIT = 0x0 + O_WRONLY = 0x1 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_64BIT = 0x20 + PR_ADDR = 0x2 + PR_ARGEXT = 0x400 + PR_ATOMIC = 0x1 + PR_CONNREQUIRED = 0x4 + PR_FASTHZ = 0x5 + PR_INP = 0x40 + PR_INTRLEVEL = 0x8000 + PR_MLS = 0x100 + PR_MLS_1_LABEL = 0x200 + PR_NOEOR = 0x4000 + PR_RIGHTS = 0x10 + PR_SLOWHZ = 0x2 + PR_WANTRCVD = 0x8 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x9 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DOWNSTREAM = 0x100 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTC_IA64 = 0x3 + RTC_POWER = 0x1 + RTC_POWER_PC = 0x2 + RTF_ACTIVE_DGD = 0x1000000 + RTF_BCE = 0x80000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_BUL = 0x2000 + RTF_CLONE = 0x10000 + RTF_CLONED = 0x20000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FREE_IN_PROG = 0x4000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PERMANENT6 = 0x8000000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_SMALLMTU = 0x40000 + RTF_STATIC = 0x800 + RTF_STOPSRCH = 0x2000000 + RTF_UNREACHABLE = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_EXPIRE = 0xf + RTM_GET = 0x4 + RTM_GETNEXT = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTLOST = 0x10 + RTM_RTTUNIT = 0xf4240 + RTM_SAMEADDR = 0x12 + RTM_SET = 0x13 + RTM_VERSION = 0x2 + RTM_VERSION_GR = 0x4 + RTM_VERSION_GR_COMPAT = 0x3 + RTM_VERSION_POLICY = 0x5 + RTM_VERSION_POLICY_EXT = 0x6 + RTM_VERSION_POLICY_PRFN = 0x7 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIGMAX64 = 0xff + SIGQUEUE_MAX = 0x20 + SIOCADDIFVIPA = 0x20006942 + SIOCADDMTU = -0x7ffb9690 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDNETID = -0x7fd796a9 + SIOCADDRT = -0x7fc78df6 + SIOCAIFADDR = -0x7fbf96e6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fb396e0 + SIOCDELIFVIPA = 0x20006943 + SIOCDELMTU = -0x7ffb968f + SIOCDELMULTI = -0x7fdf96ce + SIOCDELPMTU = -0x7fd78ff6 + SIOCDELRT = -0x7fc78df5 + SIOCDIFADDR = -0x7fd796e7 + SIOCDNETOPT = -0x3ffe9680 + SIOCDX25XLATE = -0x7fd7969b + SIOCFIFADDR = -0x7fdf966d + SIOCGARP = -0x3fb396da + SIOCGETMTUS = 0x2000696f + SIOCGETSGCNT = -0x3feb8acc + SIOCGETVIFCNT = -0x3feb8acd + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fd796df + SIOCGIFADDRS = 0x2000698c + SIOCGIFBAUDRATE = -0x3fd79693 + SIOCGIFBRDADDR = -0x3fd796dd + SIOCGIFCONF = -0x3fef96bb + SIOCGIFCONFGLOB = -0x3fef9670 + SIOCGIFDSTADDR = -0x3fd796de + SIOCGIFFLAGS = -0x3fd796ef + SIOCGIFGIDLIST = 0x20006968 + SIOCGIFHWADDR = -0x3fab966b + SIOCGIFMETRIC = -0x3fd796e9 + SIOCGIFMTU = -0x3fd796aa + SIOCGIFNETMASK = -0x3fd796db + SIOCGIFOPTIONS = -0x3fd796d6 + SIOCGISNO = -0x3fd79695 + SIOCGLOADF = -0x3ffb967e + SIOCGLOWAT = 0x40047303 + SIOCGNETOPT = -0x3ffe96a5 + SIOCGNETOPT1 = -0x3fdf967f + SIOCGNMTUS = 0x2000696e + SIOCGPGRP = 0x40047309 + SIOCGSIZIFCONF = 0x4004696a + SIOCGSRCFILTER = -0x3fe796cb + SIOCGTUNEPHASE = -0x3ffb9676 + SIOCGX25XLATE = -0x3fd7969c + SIOCIFATTACH = -0x7fdf9699 + SIOCIFDETACH = -0x7fdf969a + SIOCIFGETPKEY = -0x7fdf969b + SIOCIF_ATM_DARP = -0x7fdf9683 + SIOCIF_ATM_DUMPARP = -0x7fdf9685 + SIOCIF_ATM_GARP = -0x7fdf9682 + SIOCIF_ATM_IDLE = -0x7fdf9686 + SIOCIF_ATM_SARP = -0x7fdf9681 + SIOCIF_ATM_SNMPARP = -0x7fdf9687 + SIOCIF_ATM_SVC = -0x7fdf9684 + SIOCIF_ATM_UBR = -0x7fdf9688 + SIOCIF_DEVHEALTH = -0x7ffb966c + SIOCIF_IB_ARP_INCOMP = -0x7fdf9677 + SIOCIF_IB_ARP_TIMER = -0x7fdf9678 + SIOCIF_IB_CLEAR_PINFO = -0x3fdf966f + SIOCIF_IB_DEL_ARP = -0x7fdf967f + SIOCIF_IB_DEL_PINFO = -0x3fdf9670 + SIOCIF_IB_DUMP_ARP = -0x7fdf9680 + SIOCIF_IB_GET_ARP = -0x7fdf967e + SIOCIF_IB_GET_INFO = -0x3f879675 + SIOCIF_IB_GET_STATS = -0x3f879672 + SIOCIF_IB_NOTIFY_ADDR_REM = -0x3f87966a + SIOCIF_IB_RESET_STATS = -0x3f879671 + SIOCIF_IB_RESIZE_CQ = -0x7fdf9679 + SIOCIF_IB_SET_ARP = -0x7fdf967d + SIOCIF_IB_SET_PKEY = -0x7fdf967c + SIOCIF_IB_SET_PORT = -0x7fdf967b + SIOCIF_IB_SET_QKEY = -0x7fdf9676 + SIOCIF_IB_SET_QSIZE = -0x7fdf967a + SIOCLISTIFVIPA = 0x20006944 + SIOCSARP = -0x7fb396e2 + SIOCSHIWAT = 0xffffffff80047300 + SIOCSIFADDR = -0x7fd796f4 + SIOCSIFADDRORI = -0x7fdb9673 + SIOCSIFBRDADDR = -0x7fd796ed + SIOCSIFDSTADDR = -0x7fd796f2 + SIOCSIFFLAGS = -0x7fd796f0 + SIOCSIFGIDLIST = 0x20006969 + SIOCSIFMETRIC = -0x7fd796e8 + SIOCSIFMTU = -0x7fd796a8 + SIOCSIFNETDUMP = -0x7fd796e4 + SIOCSIFNETMASK = -0x7fd796ea + SIOCSIFOPTIONS = -0x7fd796d7 + SIOCSIFSUBCHAN = -0x7fd796e5 + SIOCSISNO = -0x7fd79694 + SIOCSLOADF = -0x3ffb967d + SIOCSLOWAT = 0xffffffff80047302 + SIOCSNETOPT = -0x7ffe96a6 + SIOCSPGRP = 0xffffffff80047308 + SIOCSX25XLATE = -0x7fd7969d + SOCK_CONN_DGRAM = 0x6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x400 + SO_ACCEPTCONN = 0x2 + SO_AUDIT = 0x8000 + SO_BROADCAST = 0x20 + SO_CKSUMRECV = 0x800 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_KERNACCEPT = 0x2000 + SO_LINGER = 0x80 + SO_NOMULTIPATH = 0x4000 + SO_NOREUSEADDR = 0x1000 + SO_OOBINLINE = 0x100 + SO_PEERID = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMPNS = 0x100a + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USE_IFBUFS = 0x400 + S_BANDURG = 0x400 + S_EMODFMT = 0x3c000000 + S_ENFMT = 0x400 + S_ERROR = 0x100 + S_HANGUP = 0x200 + S_HIPRI = 0x2 + S_ICRYPTO = 0x80000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFJOURNAL = 0x10000 + S_IFLNK = 0xa000 + S_IFMPX = 0x2200 + S_IFMT = 0xf000 + S_IFPDIR = 0x4000000 + S_IFPSDIR = 0x8000000 + S_IFPSSDIR = 0xc000000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFSYSEA = 0x30000000 + S_INPUT = 0x1 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_ITCB = 0x1000000 + S_ITP = 0x800000 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXACL = 0x2000000 + S_IXATTR = 0x40000 + S_IXGRP = 0x8 + S_IXINTERFACE = 0x100000 + S_IXMOD = 0x40000000 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_MSG = 0x8 + S_OUTPUT = 0x4 + S_RDBAND = 0x20 + S_RDNORM = 0x10 + S_RESERVED1 = 0x20000 + S_RESERVED2 = 0x200000 + S_RESERVED3 = 0x400000 + S_RESERVED4 = 0x80000000 + S_RESFMT1 = 0x10000000 + S_RESFMT10 = 0x34000000 + S_RESFMT11 = 0x38000000 + S_RESFMT12 = 0x3c000000 + S_RESFMT2 = 0x14000000 + S_RESFMT3 = 0x18000000 + S_RESFMT4 = 0x1c000000 + S_RESFMT5 = 0x20000000 + S_RESFMT6 = 0x24000000 + S_RESFMT7 = 0x28000000 + S_RESFMT8 = 0x2c000000 + S_WRBAND = 0x80 + S_WRNORM = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TCFLSH = 0x540c + TCGETA = 0x5405 + TCGETS = 0x5401 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800 + TCP_ACLADD = 0x23 + TCP_ACLBIND = 0x26 + TCP_ACLCLEAR = 0x22 + TCP_ACLDEL = 0x24 + TCP_ACLDENY = 0x8 + TCP_ACLFLUSH = 0x21 + TCP_ACLGID = 0x1 + TCP_ACLLS = 0x25 + TCP_ACLSUBNET = 0x4 + TCP_ACLUID = 0x2 + TCP_CWND_DF = 0x16 + TCP_CWND_IF = 0x15 + TCP_DELAY_ACK_FIN = 0x2 + TCP_DELAY_ACK_SYN = 0x1 + TCP_FASTNAME = 0x101080a + TCP_KEEPCNT = 0x13 + TCP_KEEPIDLE = 0x11 + TCP_KEEPINTVL = 0x12 + TCP_LSPRIV = 0x29 + TCP_LUID = 0x20 + TCP_MAXBURST = 0x8 + TCP_MAXDF = 0x64 + TCP_MAXIF = 0x64 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAXWINDOWSCALE = 0xe + TCP_MAX_SACK = 0x4 + TCP_MSS = 0x5b4 + TCP_NODELAY = 0x1 + TCP_NODELAYACK = 0x14 + TCP_NOREDUCE_CWND_EXIT_FRXMT = 0x19 + TCP_NOREDUCE_CWND_IN_FRXMT = 0x18 + TCP_NOTENTER_SSTART = 0x17 + TCP_OPT = 0x19 + TCP_RFC1323 = 0x4 + TCP_SETPRIV = 0x27 + TCP_STDURG = 0x10 + TCP_TIMESTAMP_OPTLEN = 0xc + TCP_UNSETPRIV = 0x28 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETSF = 0x5404 + TCSETSW = 0x5403 + TCXONC = 0x540b + TIOC = 0x5400 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0xffffffff80047462 + TIOCEXCL = 0x2000740d + TIOCFLUSH = 0xffffffff80047410 + TIOCGETC = 0x40067412 + TIOCGETD = 0x40047400 + TIOCGETP = 0x40067408 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047448 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCHPCL = 0x20007402 + TIOCLBIC = 0xffffffff8004747e + TIOCLBIS = 0xffffffff8004747f + TIOCLGET = 0x4004747c + TIOCLSET = 0xffffffff8004747d + TIOCMBIC = 0xffffffff8004746b + TIOCMBIS = 0xffffffff8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0xffffffff80047464 + TIOCMODG = 0x40047403 + TIOCMODS = 0xffffffff80047404 + TIOCMSET = 0xffffffff8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0xffffffff80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0xffffffff80047469 + TIOCSBRK = 0x2000747b + TIOCSDTR = 0x20007479 + TIOCSETC = 0xffffffff80067411 + TIOCSETD = 0xffffffff80047401 + TIOCSETN = 0xffffffff8006740a + TIOCSETP = 0xffffffff80067409 + TIOCSLTC = 0xffffffff80067475 + TIOCSPGRP = 0xffffffff80047476 + TIOCSSIZE = 0xffffffff80087467 + TIOCSTART = 0x2000746e + TIOCSTI = 0xffffffff80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0xffffffff80087467 + TIOCUCNTL = 0xffffffff80047466 + TOSTOP = 0x10000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x3 + VDISCRD = 0xc + VDSUSP = 0xa + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xe + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0x7 + VSTOP = 0x8 + VSTRT = 0x7 + VSUSP = 0x9 + VT0 = 0x0 + VT1 = 0x8000 + VTDELAY = 0x2000 + VTDLY = 0x8000 + VTIME = 0x5 + VWERSE = 0xd + WPARSTART = 0x1 + WPARSTOP = 0x2 + WPARTTYNAME = "Global" + XCASE = 0x4 + XTABS = 0xc00 + _FDATAFLUSH = 0x2000000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x43) + EADDRNOTAVAIL = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x42) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x38) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x78) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x75) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECLONEME = syscall.Errno(0x52) + ECONNABORTED = syscall.Errno(0x48) + ECONNREFUSED = syscall.Errno(0x4f) + ECONNRESET = syscall.Errno(0x49) + ECORRUPT = syscall.Errno(0x59) + EDEADLK = syscall.Errno(0x2d) + EDESTADDREQ = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x3a) + EDIST = syscall.Errno(0x35) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x58) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFORMAT = syscall.Errno(0x30) + EHOSTDOWN = syscall.Errno(0x50) + EHOSTUNREACH = syscall.Errno(0x51) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x74) + EINPROGRESS = syscall.Errno(0x37) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x4b) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x55) + EMEDIA = syscall.Errno(0x6e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x3b) + EMULTIHOP = syscall.Errno(0x7d) + ENAMETOOLONG = syscall.Errno(0x56) + ENETDOWN = syscall.Errno(0x45) + ENETRESET = syscall.Errno(0x47) + ENETUNREACH = syscall.Errno(0x46) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x70) + ENOBUFS = syscall.Errno(0x4a) + ENOCONNECT = syscall.Errno(0x32) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x7a) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x31) + ENOLINK = syscall.Errno(0x7e) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENOPROTOOPT = syscall.Errno(0x3d) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x76) + ENOSTR = syscall.Errno(0x7b) + ENOSYS = syscall.Errno(0x6d) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x4c) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x11) + ENOTREADY = syscall.Errno(0x2e) + ENOTRECOVERABLE = syscall.Errno(0x5e) + ENOTRUST = syscall.Errno(0x72) + ENOTSOCK = syscall.Errno(0x39) + ENOTSUP = syscall.Errno(0x7c) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x40) + EOVERFLOW = syscall.Errno(0x7f) + EOWNERDEAD = syscall.Errno(0x5f) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x41) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x53) + EPROTO = syscall.Errno(0x79) + EPROTONOSUPPORT = syscall.Errno(0x3e) + EPROTOTYPE = syscall.Errno(0x3c) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x5d) + ERESTART = syscall.Errno(0x52) + EROFS = syscall.Errno(0x1e) + ESAD = syscall.Errno(0x71) + ESHUTDOWN = syscall.Errno(0x4d) + ESOCKTNOSUPPORT = syscall.Errno(0x3f) + ESOFT = syscall.Errno(0x6f) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x34) + ESYSERROR = syscall.Errno(0x5a) + ETIME = syscall.Errno(0x77) + ETIMEDOUT = syscall.Errno(0x4e) + ETOOMANYREFS = syscall.Errno(0x73) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x54) + EWOULDBLOCK = syscall.Errno(0xb) + EWRPROTECT = syscall.Errno(0x2f) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGAIO = syscall.Signal(0x17) + SIGALRM = syscall.Signal(0xe) + SIGALRM1 = syscall.Signal(0x26) + SIGBUS = syscall.Signal(0xa) + SIGCAPI = syscall.Signal(0x31) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGCPUFAIL = syscall.Signal(0x3b) + SIGDANGER = syscall.Signal(0x21) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGGRANT = syscall.Signal(0x3c) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOINT = syscall.Signal(0x10) + SIGIOT = syscall.Signal(0x6) + SIGKAP = syscall.Signal(0x3c) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x6) + SIGMAX = syscall.Signal(0xff) + SIGMAX32 = syscall.Signal(0x3f) + SIGMIGRATE = syscall.Signal(0x23) + SIGMSG = syscall.Signal(0x1b) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPRE = syscall.Signal(0x24) + SIGPROF = syscall.Signal(0x20) + SIGPTY = syscall.Signal(0x17) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGRECONFIG = syscall.Signal(0x3a) + SIGRETRACT = syscall.Signal(0x3d) + SIGSAK = syscall.Signal(0x3f) + SIGSEGV = syscall.Signal(0xb) + SIGSOUND = syscall.Signal(0x3e) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGSYSERROR = syscall.Signal(0x30) + SIGTALRM = syscall.Signal(0x26) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVIRT = syscall.Signal(0x25) + SIGVTALRM = syscall.Signal(0x22) + SIGWAITING = syscall.Signal(0x27) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EWOULDBLOCK", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "ENOTEMPTY", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "not a typewriter"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock condition if locked"}, + {46, "ENOTREADY", "device not ready"}, + {47, "EWRPROTECT", "write-protected media"}, + {48, "EFORMAT", "unformatted or incompatible media"}, + {49, "ENOLCK", "no locks available"}, + {50, "ENOCONNECT", "cannot Establish Connection"}, + {52, "ESTALE", "missing file or filesystem"}, + {53, "EDIST", "requests blocked by Administrator"}, + {55, "EINPROGRESS", "operation now in progress"}, + {56, "EALREADY", "operation already in progress"}, + {57, "ENOTSOCK", "socket operation on non-socket"}, + {58, "EDESTADDREQ", "destination address required"}, + {59, "EMSGSIZE", "message too long"}, + {60, "EPROTOTYPE", "protocol wrong type for socket"}, + {61, "ENOPROTOOPT", "protocol not available"}, + {62, "EPROTONOSUPPORT", "protocol not supported"}, + {63, "ESOCKTNOSUPPORT", "socket type not supported"}, + {64, "EOPNOTSUPP", "operation not supported on socket"}, + {65, "EPFNOSUPPORT", "protocol family not supported"}, + {66, "EAFNOSUPPORT", "addr family not supported by protocol"}, + {67, "EADDRINUSE", "address already in use"}, + {68, "EADDRNOTAVAIL", "can't assign requested address"}, + {69, "ENETDOWN", "network is down"}, + {70, "ENETUNREACH", "network is unreachable"}, + {71, "ENETRESET", "network dropped connection on reset"}, + {72, "ECONNABORTED", "software caused connection abort"}, + {73, "ECONNRESET", "connection reset by peer"}, + {74, "ENOBUFS", "no buffer space available"}, + {75, "EISCONN", "socket is already connected"}, + {76, "ENOTCONN", "socket is not connected"}, + {77, "ESHUTDOWN", "can't send after socket shutdown"}, + {78, "ETIMEDOUT", "connection timed out"}, + {79, "ECONNREFUSED", "connection refused"}, + {80, "EHOSTDOWN", "host is down"}, + {81, "EHOSTUNREACH", "no route to host"}, + {82, "ERESTART", "restart the system call"}, + {83, "EPROCLIM", "too many processes"}, + {84, "EUSERS", "too many users"}, + {85, "ELOOP", "too many levels of symbolic links"}, + {86, "ENAMETOOLONG", "file name too long"}, + {88, "EDQUOT", "disk quota exceeded"}, + {89, "ECORRUPT", "invalid file system control data detected"}, + {90, "ESYSERROR", "for future use "}, + {93, "EREMOTE", "item is not local to host"}, + {94, "ENOTRECOVERABLE", "state not recoverable "}, + {95, "EOWNERDEAD", "previous owner died "}, + {109, "ENOSYS", "function not implemented"}, + {110, "EMEDIA", "media surface error"}, + {111, "ESOFT", "I/O completed, but needs relocation"}, + {112, "ENOATTR", "no attribute found"}, + {113, "ESAD", "security Authentication Denied"}, + {114, "ENOTRUST", "not a Trusted Program"}, + {115, "ETOOMANYREFS", "too many references: can't splice"}, + {116, "EILSEQ", "invalid wide character"}, + {117, "ECANCELED", "asynchronous I/O cancelled"}, + {118, "ENOSR", "out of STREAMS resources"}, + {119, "ETIME", "system call timed out"}, + {120, "EBADMSG", "next message has wrong type"}, + {121, "EPROTO", "error in protocol"}, + {122, "ENODATA", "no message on stream head read q"}, + {123, "ENOSTR", "fd not associated with a stream"}, + {124, "ENOTSUP", "unsupported attribute value"}, + {125, "EMULTIHOP", "multihop is not allowed"}, + {126, "ENOLINK", "the server link has been severed"}, + {127, "EOVERFLOW", "value too large to be stored in data type"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "IOT/Abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible/complete"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {27, "SIGMSG", "input device data"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGPWR", "power-failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPROF", "profiling timer expired"}, + {33, "SIGDANGER", "paging space low"}, + {34, "SIGVTALRM", "virtual timer expired"}, + {35, "SIGMIGRATE", "signal 35"}, + {36, "SIGPRE", "signal 36"}, + {37, "SIGVIRT", "signal 37"}, + {38, "SIGTALRM", "signal 38"}, + {39, "SIGWAITING", "signal 39"}, + {48, "SIGSYSERROR", "signal 48"}, + {49, "SIGCAPI", "signal 49"}, + {58, "SIGRECONFIG", "signal 58"}, + {59, "SIGCPUFAIL", "CPU Failure Predicted"}, + {60, "SIGGRANT", "monitor mode granted"}, + {61, "SIGRETRACT", "monitor mode retracted"}, + {62, "SIGSOUND", "sound completed"}, + {63, "SIGMAX32", "secure attention"}, + {255, "SIGMAX", "signal 255"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go new file mode 100644 index 0000000..3b39d74 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_386.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x8008427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc0086924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6981 + SIOCRSLVMULTI = 0xc008693b + SIOCSDRVSPEC = 0x801c697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40087458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x20 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go new file mode 100644 index 0000000..8fe5547 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go new file mode 100644 index 0000000..7a97777 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go @@ -0,0 +1,1783 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go new file mode 100644 index 0000000..6d56d8a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -0,0 +1,1783 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1c + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1e + AF_IPX = 0x17 + AF_ISDN = 0x1c + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x28 + AF_NATM = 0x1f + AF_NDRV = 0x1b + AF_NETBIOS = 0x21 + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PPP = 0x22 + AF_PUP = 0x4 + AF_RESERVED_36 = 0x24 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_SYSTEM = 0x20 + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_UTUN = 0x26 + ALTWERASE = 0x200 + ATTR_BIT_MAP_COUNT = 0x5 + ATTR_CMN_ACCESSMASK = 0x20000 + ATTR_CMN_ACCTIME = 0x1000 + ATTR_CMN_ADDEDTIME = 0x10000000 + ATTR_CMN_BKUPTIME = 0x2000 + ATTR_CMN_CHGTIME = 0x800 + ATTR_CMN_CRTIME = 0x200 + ATTR_CMN_DATA_PROTECT_FLAGS = 0x40000000 + ATTR_CMN_DEVID = 0x2 + ATTR_CMN_DOCUMENT_ID = 0x100000 + ATTR_CMN_ERROR = 0x20000000 + ATTR_CMN_EXTENDED_SECURITY = 0x400000 + ATTR_CMN_FILEID = 0x2000000 + ATTR_CMN_FLAGS = 0x40000 + ATTR_CMN_FNDRINFO = 0x4000 + ATTR_CMN_FSID = 0x4 + ATTR_CMN_FULLPATH = 0x8000000 + ATTR_CMN_GEN_COUNT = 0x80000 + ATTR_CMN_GRPID = 0x10000 + ATTR_CMN_GRPUUID = 0x1000000 + ATTR_CMN_MODTIME = 0x400 + ATTR_CMN_NAME = 0x1 + ATTR_CMN_NAMEDATTRCOUNT = 0x80000 + ATTR_CMN_NAMEDATTRLIST = 0x100000 + ATTR_CMN_OBJID = 0x20 + ATTR_CMN_OBJPERMANENTID = 0x40 + ATTR_CMN_OBJTAG = 0x10 + ATTR_CMN_OBJTYPE = 0x8 + ATTR_CMN_OWNERID = 0x8000 + ATTR_CMN_PARENTID = 0x4000000 + ATTR_CMN_PAROBJID = 0x80 + ATTR_CMN_RETURNED_ATTRS = 0x80000000 + ATTR_CMN_SCRIPT = 0x100 + ATTR_CMN_SETMASK = 0x41c7ff00 + ATTR_CMN_USERACCESS = 0x200000 + ATTR_CMN_UUID = 0x800000 + ATTR_CMN_VALIDMASK = 0xffffffff + ATTR_CMN_VOLSETMASK = 0x6700 + ATTR_FILE_ALLOCSIZE = 0x4 + ATTR_FILE_CLUMPSIZE = 0x10 + ATTR_FILE_DATAALLOCSIZE = 0x400 + ATTR_FILE_DATAEXTENTS = 0x800 + ATTR_FILE_DATALENGTH = 0x200 + ATTR_FILE_DEVTYPE = 0x20 + ATTR_FILE_FILETYPE = 0x40 + ATTR_FILE_FORKCOUNT = 0x80 + ATTR_FILE_FORKLIST = 0x100 + ATTR_FILE_IOBLOCKSIZE = 0x8 + ATTR_FILE_LINKCOUNT = 0x1 + ATTR_FILE_RSRCALLOCSIZE = 0x2000 + ATTR_FILE_RSRCEXTENTS = 0x4000 + ATTR_FILE_RSRCLENGTH = 0x1000 + ATTR_FILE_SETMASK = 0x20 + ATTR_FILE_TOTALSIZE = 0x2 + ATTR_FILE_VALIDMASK = 0x37ff + ATTR_VOL_ALLOCATIONCLUMP = 0x40 + ATTR_VOL_ATTRIBUTES = 0x40000000 + ATTR_VOL_CAPABILITIES = 0x20000 + ATTR_VOL_DIRCOUNT = 0x400 + ATTR_VOL_ENCODINGSUSED = 0x10000 + ATTR_VOL_FILECOUNT = 0x200 + ATTR_VOL_FSTYPE = 0x1 + ATTR_VOL_INFO = 0x80000000 + ATTR_VOL_IOBLOCKSIZE = 0x80 + ATTR_VOL_MAXOBJCOUNT = 0x800 + ATTR_VOL_MINALLOCATION = 0x20 + ATTR_VOL_MOUNTEDDEVICE = 0x8000 + ATTR_VOL_MOUNTFLAGS = 0x4000 + ATTR_VOL_MOUNTPOINT = 0x1000 + ATTR_VOL_NAME = 0x2000 + ATTR_VOL_OBJCOUNT = 0x100 + ATTR_VOL_QUOTA_SIZE = 0x10000000 + ATTR_VOL_RESERVED_SIZE = 0x20000000 + ATTR_VOL_SETMASK = 0x80002000 + ATTR_VOL_SIGNATURE = 0x2 + ATTR_VOL_SIZE = 0x4 + ATTR_VOL_SPACEAVAIL = 0x10 + ATTR_VOL_SPACEFREE = 0x8 + ATTR_VOL_UUID = 0x40000 + ATTR_VOL_VALIDMASK = 0xf007ffff + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc00c4279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x8010427e + BIOCSETIF = 0x8020426c + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_MONOTONIC_RAW_APPROX = 0x5 + CLOCK_PROCESS_CPUTIME_ID = 0xc + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x10 + CLOCK_UPTIME_RAW = 0x8 + CLOCK_UPTIME_RAW_APPROX = 0x9 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0xf5 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0xf + EVFILT_FS = -0x9 + EVFILT_MACHPORT = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xf + EVFILT_THREADMARKER = 0xf + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xa + EVFILT_VM = -0xc + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DISPATCH2 = 0x180 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG0 = 0x1000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_OOBAND = 0x2000 + EV_POLL = 0x1000 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EV_UDATA_SPECIFIC = 0x100 + EV_VANISHED = 0x200 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FSOPT_ATTR_CMN_EXTENDED = 0x20 + FSOPT_NOFOLLOW = 0x1 + FSOPT_NOINMEMUPDATE = 0x2 + FSOPT_PACK_INVAL_ATTRS = 0x8 + FSOPT_REPORT_FULLSIZE = 0x4 + F_ADDFILESIGS = 0x3d + F_ADDFILESIGS_FOR_DYLD_SIM = 0x53 + F_ADDFILESIGS_RETURN = 0x61 + F_ADDSIGS = 0x3b + F_ALLOCATEALL = 0x4 + F_ALLOCATECONTIG = 0x2 + F_BARRIERFSYNC = 0x55 + F_CHECK_LV = 0x62 + F_CHKCLEAN = 0x29 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x43 + F_FINDSIGS = 0x4e + F_FLUSH_DATA = 0x28 + F_FREEZE_FS = 0x35 + F_FULLFSYNC = 0x33 + F_GETCODEDIR = 0x48 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETLKPID = 0x42 + F_GETNOSIGPIPE = 0x4a + F_GETOWN = 0x5 + F_GETPATH = 0x32 + F_GETPATH_MTMINFO = 0x47 + F_GETPROTECTIONCLASS = 0x3f + F_GETPROTECTIONLEVEL = 0x4d + F_GLOBAL_NOCACHE = 0x37 + F_LOG2PHYS = 0x31 + F_LOG2PHYS_EXT = 0x41 + F_NOCACHE = 0x30 + F_NODIRECT = 0x3e + F_OK = 0x0 + F_PATHPKG_CHECK = 0x34 + F_PEOFPOSMODE = 0x3 + F_PREALLOCATE = 0x2a + F_PUNCHHOLE = 0x63 + F_RDADVISE = 0x2c + F_RDAHEAD = 0x2d + F_RDLCK = 0x1 + F_SETBACKINGSTORE = 0x46 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETLKWTIMEOUT = 0xa + F_SETNOSIGPIPE = 0x49 + F_SETOWN = 0x6 + F_SETPROTECTIONCLASS = 0x40 + F_SETSIZE = 0x2b + F_SINGLE_WRITER = 0x4c + F_THAW_FS = 0x36 + F_TRANSCODEKEY = 0x4b + F_TRIM_ACTIVE_FILE = 0x64 + F_UNLCK = 0x2 + F_VOLPOSMODE = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_CELLULAR = 0xff + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FAITH = 0x38 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_GIF = 0x37 + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IEEE1394 = 0x90 + IFT_IEEE8023ADLAG = 0x88 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_L2VLAN = 0x87 + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PDP = 0xff + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PKTAP = 0xfe + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_STF = 0x39 + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LINKLOCALNETNUM = 0xa9fe0000 + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_2292DSTOPTS = 0x17 + IPV6_2292HOPLIMIT = 0x14 + IPV6_2292HOPOPTS = 0x16 + IPV6_2292NEXTHOP = 0x15 + IPV6_2292PKTINFO = 0x13 + IPV6_2292PKTOPTIONS = 0x19 + IPV6_2292RTHDR = 0x18 + IPV6_BINDV6ONLY = 0x1b + IPV6_BOUND_IF = 0x7d + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOW_ECN_MASK = 0x300 + IPV6_FRAGTTL = 0x3c + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVTCLASS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x24 + IPV6_UNICAST_HOPS = 0x4 + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BLOCK_SOURCE = 0x48 + IP_BOUND_IF = 0x19 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x28 + IP_FW_DEL = 0x29 + IP_FW_FLUSH = 0x2a + IP_FW_GET = 0x2c + IP_FW_RESETLOG = 0x2d + IP_FW_ZERO = 0x2b + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_IFINDEX = 0x42 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_NAT__XXX = 0x37 + IP_OFFMASK = 0x1fff + IP_OLD_FW_ADD = 0x32 + IP_OLD_FW_DEL = 0x33 + IP_OLD_FW_FLUSH = 0x34 + IP_OLD_FW_GET = 0x36 + IP_OLD_FW_RESETLOG = 0x38 + IP_OLD_FW_ZERO = 0x35 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVTOS = 0x1b + IP_RECVTTL = 0x18 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_STRIPHDR = 0x17 + IP_TOS = 0x3 + IP_TRAFFIC_MGT_BACKGROUND = 0x41 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_CAN_REUSE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_FREE_REUSABLE = 0x7 + MADV_FREE_REUSE = 0x8 + MADV_NORMAL = 0x0 + MADV_PAGEOUT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MADV_ZERO_WIRED_PAGES = 0x6 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_JIT = 0x800 + MAP_NOCACHE = 0x400 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_RESERVED0080 = 0x80 + MAP_RESILIENT_CODESIGN = 0x2000 + MAP_RESILIENT_MEDIA = 0x4000 + MAP_SHARED = 0x1 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x400000 + MNT_CMDFLAGS = 0xf0000 + MNT_CPROTECT = 0x80 + MNT_DEFWRITE = 0x2000000 + MNT_DONTBROWSE = 0x100000 + MNT_DOVOLFS = 0x8000 + MNT_DWAIT = 0x4 + MNT_EXPORTED = 0x100 + MNT_FORCE = 0x80000 + MNT_IGNORE_OWNERSHIP = 0x200000 + MNT_JOURNALED = 0x800000 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NOATIME = 0x10000000 + MNT_NOBLOCK = 0x20000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOUSERXATTR = 0x1000000 + MNT_NOWAIT = 0x2 + MNT_QUARANTINE = 0x400 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNKNOWNPERMISSIONS = 0x200000 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x17f0f5ff + MNT_WAIT = 0x1 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FLUSH = 0x400 + MSG_HAVEMORE = 0x2000 + MSG_HOLD = 0x800 + MSG_NEEDSA = 0x10000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_RCVMORE = 0x4000 + MSG_SEND = 0x1000 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITSTREAM = 0x200 + MS_ASYNC = 0x1 + MS_DEACTIVATE = 0x8 + MS_INVALIDATE = 0x2 + MS_KILLPAGES = 0x4 + MS_SYNC = 0x10 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_DUMP2 = 0x7 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLIST2 = 0x6 + NET_RT_MAXID = 0xa + NET_RT_STAT = 0x4 + NET_RT_TRASH = 0x5 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLDLY = 0x300 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSOLUTE = 0x8 + NOTE_ATTRIB = 0x8 + NOTE_BACKGROUND = 0x40 + NOTE_CHILD = 0x4 + NOTE_CRITICAL = 0x20 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXITSTATUS = 0x4000000 + NOTE_EXIT_CSERROR = 0x40000 + NOTE_EXIT_DECRYPTFAIL = 0x10000 + NOTE_EXIT_DETAIL = 0x2000000 + NOTE_EXIT_DETAIL_MASK = 0x70000 + NOTE_EXIT_MEMORY = 0x20000 + NOTE_EXIT_REPARENTED = 0x80000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_FUNLOCK = 0x100 + NOTE_LEEWAY = 0x10 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MACH_CONTINUOUS_TIME = 0x80 + NOTE_NONE = 0x80 + NOTE_NSECONDS = 0x4 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = -0x100000 + NOTE_PDATAMASK = 0xfffff + NOTE_REAP = 0x10000000 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_SIGNAL = 0x8000000 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x2 + NOTE_VM_ERROR = 0x10000000 + NOTE_VM_PRESSURE = 0x80000000 + NOTE_VM_PRESSURE_SUDDEN_TERMINATE = 0x20000000 + NOTE_VM_PRESSURE_TERMINATE = 0x40000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFDEL = 0x20000 + OFILL = 0x80 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_ALERT = 0x20000000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x1000000 + O_CREAT = 0x200 + O_DIRECTORY = 0x100000 + O_DP_GETRAWENCRYPTED = 0x1 + O_DP_GETRAWUNENCRYPTED = 0x2 + O_DSYNC = 0x400000 + O_EVTONLY = 0x8000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x20000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_POPUP = 0x80000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYMLINK = 0x200000 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_ATTACH = 0xa + PT_ATTACHEXC = 0xe + PT_CONTINUE = 0x7 + PT_DENY_ATTACH = 0x1f + PT_DETACH = 0xb + PT_FIRSTMACH = 0x20 + PT_FORCEQUOTA = 0x1e + PT_KILL = 0x8 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_READ_U = 0x3 + PT_SIGEXC = 0xc + PT_STEP = 0x9 + PT_THUPDATE = 0xd + PT_TRACE_ME = 0x0 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + PT_WRITE_U = 0x6 + RLIMIT_AS = 0x5 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_CPU_USAGE_MONITOR = 0x2 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_CONDEMNED = 0x2000000 + RTF_DELCLONE = 0x80 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_IFREF = 0x4000000 + RTF_IFSCOPE = 0x1000000 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_NOIFREF = 0x2000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_PROXY = 0x8000000 + RTF_REJECT = 0x8 + RTF_ROUTER = 0x10000000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_GET2 = 0x14 + RTM_IFINFO = 0xe + RTM_IFINFO2 = 0x12 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_NEWMADDR2 = 0x13 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIMESTAMP_MONOTONIC = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCARPIPLL = 0xc0206928 + SIOCATMARK = 0x40047307 + SIOCAUTOADDR = 0xc0206926 + SIOCAUTONETMASK = 0x80206927 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206941 + SIOCGDRVSPEC = 0xc028697b + SIOCGETVLAN = 0xc020697f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFALTMTU = 0xc0206948 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBOND = 0xc0206947 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020695b + SIOCGIFCONF = 0xc00c6924 + SIOCGIFDEVMTU = 0xc0206944 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFKPI = 0xc0206987 + SIOCGIFMAC = 0xc0206982 + SIOCGIFMEDIA = 0xc02c6938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206940 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc020693f + SIOCGIFSTATUS = 0xc331693d + SIOCGIFVLAN = 0xc020697f + SIOCGIFWAKEFLAGS = 0xc0206988 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCIFCREATE = 0xc0206978 + SIOCIFCREATE2 = 0xc020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106981 + SIOCRSLVMULTI = 0xc010693b + SIOCSDRVSPEC = 0x8028697b + SIOCSETVLAN = 0x8020697e + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFALTMTU = 0x80206945 + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBOND = 0x80206946 + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020695a + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFKPI = 0x80206986 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206983 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x8040693e + SIOCSIFPHYS = 0x80206936 + SIOCSIFVLAN = 0x8020697e + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_DONTTRUNC = 0x2000 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1010 + SO_LINGER = 0x80 + SO_LINGER_SEC = 0x1080 + SO_NETSVC_MARKING_LEVEL = 0x1119 + SO_NET_SERVICE_TYPE = 0x1116 + SO_NKE = 0x1021 + SO_NOADDRERR = 0x1023 + SO_NOSIGPIPE = 0x1022 + SO_NOTIFYCONFLICT = 0x1026 + SO_NP_EXTENSIONS = 0x1083 + SO_NREAD = 0x1020 + SO_NUMRCVPKT = 0x1112 + SO_NWRITE = 0x1024 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1011 + SO_RANDOMPORT = 0x1082 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSESHAREUID = 0x1025 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TIMESTAMP_MONOTONIC = 0x800 + SO_TYPE = 0x1008 + SO_UPCALLCLOSEWAIT = 0x1027 + SO_USELOOPBACK = 0x40 + SO_WANTMORE = 0x4000 + SO_WANTOOBFLAG = 0x8000 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0x4 + TABDLY = 0xc04 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CONNECTIONTIMEOUT = 0x20 + TCP_CONNECTION_INFO = 0x106 + TCP_ENABLE_ECN = 0x104 + TCP_FASTOPEN = 0x105 + TCP_KEEPALIVE = 0x10 + TCP_KEEPCNT = 0x102 + TCP_KEEPINTVL = 0x101 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0xd8 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NOTSENT_LOWAT = 0x201 + TCP_RXT_CONNDROPTIME = 0x80 + TCP_RXT_FINDROP = 0x100 + TCP_SENDMOREACKS = 0x103 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCDSIMICROCODE = 0x20007455 + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x40487413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGWINSZ = 0x40087468 + TIOCIXOFF = 0x20007480 + TIOCIXON = 0x20007481 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTYGNAME = 0x40807453 + TIOCPTYGRANT = 0x20007454 + TIOCPTYUNLK = 0x20007452 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCONS = 0x20007463 + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x80487414 + TIOCSETAF = 0x80487416 + TIOCSETAW = 0x80487415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_LOADAVG = 0x2 + VM_MACHFACTOR = 0x4 + VM_MAXID = 0x6 + VM_METER = 0x1 + VM_SWAPUSAGE = 0x5 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x10 + WCOREFLAG = 0x80 + WEXITED = 0x4 + WNOHANG = 0x1 + WNOWAIT = 0x20 + WORDSIZE = 0x40 + WSTOPPED = 0x8 + WUNTRACED = 0x2 + XATTR_CREATE = 0x2 + XATTR_NODEFAULT = 0x10 + XATTR_NOFOLLOW = 0x1 + XATTR_NOSECURITY = 0x8 + XATTR_REPLACE = 0x4 + XATTR_SHOWCOMPRESSION = 0x20 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADARCH = syscall.Errno(0x56) + EBADEXEC = syscall.Errno(0x55) + EBADF = syscall.Errno(0x9) + EBADMACHO = syscall.Errno(0x58) + EBADMSG = syscall.Errno(0x5e) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x59) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDEVERR = syscall.Errno(0x53) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x5a) + EILSEQ = syscall.Errno(0x5c) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x6a) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5f) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x60) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x61) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5b) + ENOPOLICY = syscall.Errno(0x67) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x62) + ENOSTR = syscall.Errno(0x63) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x68) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x66) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x69) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x64) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + EPWROFF = syscall.Errno(0x52) + EQFULL = syscall.Errno(0x6a) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHLIBVERS = syscall.Errno(0x57) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x65) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EPWROFF", "device power is off"}, + {83, "EDEVERR", "device error"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EBADEXEC", "bad executable (or shared library)"}, + {86, "EBADARCH", "bad CPU type in executable"}, + {87, "ESHLIBVERS", "shared library version mismatch"}, + {88, "EBADMACHO", "malformed Mach-o file"}, + {89, "ECANCELED", "operation canceled"}, + {90, "EIDRM", "identifier removed"}, + {91, "ENOMSG", "no message of desired type"}, + {92, "EILSEQ", "illegal byte sequence"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EBADMSG", "bad message"}, + {95, "EMULTIHOP", "EMULTIHOP (Reserved)"}, + {96, "ENODATA", "no message available on STREAM"}, + {97, "ENOLINK", "ENOLINK (Reserved)"}, + {98, "ENOSR", "no STREAM resources"}, + {99, "ENOSTR", "not a STREAM"}, + {100, "EPROTO", "protocol error"}, + {101, "ETIME", "STREAM ioctl timeout"}, + {102, "EOPNOTSUPP", "operation not supported on socket"}, + {103, "ENOPOLICY", "policy not found"}, + {104, "ENOTRECOVERABLE", "state not recoverable"}, + {105, "EOWNERDEAD", "previous owner died"}, + {106, "EQFULL", "interface output queue is full"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go new file mode 100644 index 0000000..bbe6089 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go @@ -0,0 +1,1650 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x21 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x23 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x22 + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x18 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETIF = 0x4020426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044278 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DEFAULTBUFSIZE = 0x1000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MAX_CLONES = 0x80 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DBF = 0xf + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_EXCEPT = -0x8 + EVFILT_FS = -0xa + EVFILT_MARKER = 0xf + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xa + EVFILT_TIMER = -0x7 + EVFILT_USER = -0x9 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_NODATA = 0x1000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTEXIT_LWP = 0x10000 + EXTEXIT_PROC = 0x0 + EXTEXIT_SETINT = 0x1 + EXTEXIT_SIMPLE = 0x0 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x118e72 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NPOLLING = 0x100000 + IFF_OACTIVE = 0x400 + IFF_OACTIVE_COMPAT = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_POLLING = 0x10000 + IFF_POLLING_COMPAT = 0x10000 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_SMART = 0x20 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xf3 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0xfe + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MEAS = 0x13 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SDRP = 0x2a + IPPROTO_SEP = 0x21 + IPPROTO_SKIP = 0x39 + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UNKNOWN = 0x102 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHLIM = 0x28 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PKTOPTIONS = 0x34 + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FAITH = 0x16 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_RESETLOG = 0x37 + IP_FW_X = 0x31 + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CONTROL_END = 0xb + MADV_CONTROL_START = 0xa + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_INVAL = 0xa + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SETMAP = 0xb + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_NOCORE = 0x20000 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_NOSYNC = 0x800 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SIZEALIGN = 0x40000 + MAP_STACK = 0x400 + MAP_TRYFIXED = 0x10000 + MAP_VPAGETABLE = 0x2000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x20 + MNT_CMDFLAGS = 0xf0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x4 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_TRIM = 0x1000000 + MNT_UPDATE = 0x10000 + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0xf1f0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x1000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_FBLOCKING = 0x10000 + MSG_FMASK = 0xffff0000 + MSG_FNONBLOCKING = 0x20000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_SYNC = 0x800 + MSG_TRUNC = 0x10 + MSG_UNUSED09 = 0x200 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_OOB = 0x2 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x20000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x8000000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FAPPEND = 0x100000 + O_FASYNCWRITE = 0x800000 + O_FBLOCKING = 0x40000 + O_FMASK = 0xfc0000 + O_FNONBLOCKING = 0x80000 + O_FOFFSET = 0x200000 + O_FSYNC = 0x80 + O_FSYNCWRITE = 0x400000 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0xb + RTAX_MPLS1 = 0x8 + RTAX_MPLS2 = 0x9 + RTAX_MPLS3 = 0xa + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_MPLS1 = 0x100 + RTA_MPLS2 = 0x200 + RTA_MPLS3 = 0x400 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPLSOPS = 0x1000000 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PRCLONING = 0x10000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_WASCLONED = 0x20000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x6 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_IWCAPSEGS = 0x400 + RTV_IWMAXSEGS = 0x200 + RTV_MSL = 0x100 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCADDRT = 0x8040720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691b + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDELRT = 0x8040720b + SIOCDIFADDR = 0x80206919 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8118691d + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc0206926 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPOLLCPU = 0xc020697e + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFTSOLEN = 0xc0206980 + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFPOLLCPU = 0x8020697d + SIOCSIFTSOLEN = 0x8020697f + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_CPUHINT = 0x1030 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDSPACE = 0x100a + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDB = 0x9000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_FASTKEEP = 0x80 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x20 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MINMSS = 0x100 + TCP_MIN_WINSHIFT = 0x5 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_SIGNATURE_ENABLE = 0x10 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCISPTMASTER = 0x20007455 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMODG = 0x40047403 + TIOCMODS = 0x80047404 + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2000745f + TIOCSPGRP = 0x80047476 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VCHECKPT = 0x13 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_BCACHE_SIZE_MAX = 0x0 + VM_SWZONE_SIZE_MAX = 0x4000000000 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EASYNC = syscall.Errno(0x63) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x63) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEDIUM = syscall.Errno(0x5d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUNUSED94 = syscall.Errno(0x5e) + EUNUSED95 = syscall.Errno(0x5f) + EUNUSED96 = syscall.Errno(0x60) + EUNUSED97 = syscall.Errno(0x61) + EUNUSED98 = syscall.Errno(0x62) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCKPT = syscall.Signal(0x21) + SIGCKPTEXIT = syscall.Signal(0x22) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOMEDIUM", "no medium found"}, + {94, "EUNUSED94", "unknown error: 94"}, + {95, "EUNUSED95", "unknown error: 95"}, + {96, "EUNUSED96", "unknown error: 96"}, + {97, "EUNUSED97", "unknown error: 97"}, + {98, "EUNUSED98", "unknown error: 98"}, + {99, "ELAST", "unknown error: 99"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread Scheduler"}, + {33, "SIGCKPT", "checkPoint"}, + {34, "SIGCKPTEXIT", "checkPointExit"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go new file mode 100644 index 0000000..d2bbaab --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -0,0 +1,1793 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4008426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8008426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40087459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go new file mode 100644 index 0000000..4f8db78 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go new file mode 100644 index 0000000..53e5de6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -0,0 +1,1802 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4004427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x400c4280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80084267 + BIOCSETFNR = 0x80084282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8008427b + BIOCSETZBUF = 0x800c4281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc01c697b + SIOCGETSGCNT = 0xc0147210 + SIOCGETVIFCNT = 0xc014720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0086924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0286938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc028698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSDRVSPEC = 0x801c697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go new file mode 100644 index 0000000..d4a192f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -0,0 +1,1794 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2a + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR02 = 0x2b + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HHDLC = 0x79 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x104 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EVFILT_AIO = -0x3 + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xc + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f52 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SEP = 0x21 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MIN_MEMBERSHIPS = 0x1f + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MAX_SOURCE_FILTER = 0x400 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MIN_MEMBERSHIPS = 0x1f + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0xd0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0x2d8d0807e + MNT_USER = 0x8000 + MNT_VISFLAGMASK = 0x3fef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_RNH_LOCKED = 0x40000000 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_CACHING_CONTEXT = 0x1 + RT_DEFAULT_FIB = 0x0 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_NORTREF = 0x2 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDESCR = 0xc020692a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_FASTOPEN = 0x401 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_INFO = 0x20 + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go new file mode 100644 index 0000000..9e99d67 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -0,0 +1,2835 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x8000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + X86_FXSR_MAGIC = 0x0 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go new file mode 100644 index 0000000..e3091f1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -0,0 +1,2835 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FP_XSTATE_MAGIC2 = 0x46505845 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_32BIT = 0x40 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ARCH_PRCTL = 0x1e + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPXREGS = 0x12 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPXREGS = 0x13 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SINGLEBLOCK = 0x21 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go new file mode 100644 index 0000000..a75dfeb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -0,0 +1,2841 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80041270 + BLKBSZSET = 0x40041271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80041272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xc + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0xd + F_SETLK64 = 0xd + F_SETLKW = 0xe + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x20000 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8008743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40087446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x400c744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40087447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETCRUNCHREGS = 0x19 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFDPIC = 0x1f + PTRACE_GETFDPIC_EXEC = 0x0 + PTRACE_GETFDPIC_INTERP = 0x1 + PTRACE_GETFPREGS = 0xe + PTRACE_GETHBPREGS = 0x1d + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVFPREGS = 0x1b + PTRACE_GETWMMXREGS = 0x12 + PTRACE_GET_THREAD_AREA = 0x16 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETCRUNCHREGS = 0x1a + PTRACE_SETFPREGS = 0xf + PTRACE_SETHBPREGS = 0x1e + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVFPREGS = 0x1c + PTRACE_SETWMMXREGS = 0x13 + PTRACE_SET_SYSCALL = 0x17 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PT_DATA_ADDR = 0x10004 + PT_TEXT_ADDR = 0x10000 + PT_TEXT_END_ADDR = 0x10008 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8004700d + RTC_EPOCH_SET = 0x4004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8004700b + RTC_IRQP_SET = 0x4004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x801c7011 + RTC_PLL_SET = 0x401c7012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x400854d5 + TUNDETACHFILTER = 0x400854d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x800854db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go new file mode 100644 index 0000000..393ad7c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -0,0 +1,2826 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ESR_MAGIC = 0x45535201 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + EXTRA_MAGIC = 0x45585401 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FPSIMD_MAGIC = 0x46508001 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SVE_MAGIC = 0x53564501 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go new file mode 100644 index 0000000..ba1beb9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go new file mode 100644 index 0000000..efba3e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go new file mode 100644 index 0000000..d3f6e90 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x0 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go new file mode 100644 index 0000000..7275cd8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -0,0 +1,2842 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40041270 + BLKBSZSET = 0x80041271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40041272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x80 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x2000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x21 + F_GETLK64 = 0x21 + F_GETOWN = 0x17 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x22 + F_SETLK64 = 0x22 + F_SETLKW = 0x23 + F_SETLKW64 = 0x23 + F_SETOWN = 0x18 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x100 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x80 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x800 + MAP_ANONYMOUS = 0x800 + MAP_DENYWRITE = 0x2000 + MAP_EXECUTABLE = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x1000 + MAP_HUGETLB = 0x80000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x8000 + MAP_NONBLOCK = 0x20000 + MAP_NORESERVE = 0x400 + MAP_POPULATE = 0x10000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x800 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x40000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x1000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x100 + O_DIRECT = 0x8000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x10 + O_EXCL = 0x400 + O_FSYNC = 0x4010 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x80 + O_NOATIME = 0x40000 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x80 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x4010 + O_SYNC = 0x4010 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40042407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc004240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80042406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4008743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80087446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x800c744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80087447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_THREAD_AREA = 0x19 + PTRACE_GET_THREAD_AREA_3264 = 0xc4 + PTRACE_GET_WATCH_REGS = 0xd0 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_3264 = 0xc1 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_3264 = 0xc0 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_3264 = 0xc3 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_3264 = 0xc2 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SET_THREAD_AREA = 0x1a + PTRACE_SET_WATCH_REGS = 0xd1 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x9 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x5 + RLIMIT_NPROC = 0x8 + RLIMIT_RSS = 0x7 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4004700d + RTC_EPOCH_SET = 0x8004700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4004700b + RTC_IRQP_SET = 0x8004700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x401c7011 + RTC_PLL_SET = 0x801c7012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x80 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x40047307 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x40047309 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x467f + SIOCOUTQ = 0x7472 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x80047308 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x1 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x80 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x2 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1009 + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x11 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x12 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x1f + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STYLE = 0x1008 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCGETS2 = 0x4030542a + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSBRKP = 0x5486 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETS2 = 0x8030542b + TCSETSF = 0x5410 + TCSETSF2 = 0x8030542d + TCSETSW = 0x540f + TCSETSW2 = 0x8030542c + TCXONC = 0x5406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x80047478 + TIOCEXCL = 0x740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x5492 + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x548b + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x4020542e + TIOCGSERIAL = 0x5484 + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5481 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x467f + TIOCLINUX = 0x5483 + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMIWAIT = 0x5491 + TIOCMSET = 0x741a + TIOCM_CAR = 0x100 + TIOCM_CD = 0x100 + TIOCM_CTS = 0x40 + TIOCM_DSR = 0x400 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x200 + TIOCM_RNG = 0x200 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x20 + TIOCM_ST = 0x10 + TIOCNOTTY = 0x5471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7472 + TIOCPKT = 0x5470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x5480 + TIOCSERCONFIG = 0x5488 + TIOCSERGETLSR = 0x548e + TIOCSERGETMULTI = 0x548f + TIOCSERGSTRUCT = 0x548d + TIOCSERGWILD = 0x5489 + TIOCSERSETMULTI = 0x5490 + TIOCSERSWILD = 0x548a + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x548c + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0xc020542f + TIOCSSERIAL = 0x5485 + TIOCSSOFTCAR = 0x5482 + TIOCSTI = 0x5472 + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x8000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x800854d5 + TUNDETACHFILTER = 0x800854d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x400854db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x10 + VEOL = 0x11 + VEOL2 = 0x6 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x4 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x20 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x9e) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x46d) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EHWPOISON = syscall.Errno(0xa8) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINIT = syscall.Errno(0x8d) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x8b) + EKEYEXPIRED = syscall.Errno(0xa2) + EKEYREJECTED = syscall.Errno(0xa4) + EKEYREVOKED = syscall.Errno(0xa3) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOOP = syscall.Errno(0x5a) + EMEDIUMTYPE = syscall.Errno(0xa0) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENAVAIL = syscall.Errno(0x8a) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0xa1) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x9f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTNAM = syscall.Errno(0x89) + ENOTRECOVERABLE = syscall.Errno(0xa6) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x7a) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0xa5) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMDEV = syscall.Errno(0x8e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x8c) + ERESTART = syscall.Errno(0x5b) + ERFKILL = syscall.Errno(0xa7) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x87) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "resource deadlock avoided"}, + {46, "ENOLCK", "no locks available"}, + {50, "EBADE", "invalid exchange"}, + {51, "EBADR", "invalid request descriptor"}, + {52, "EXFULL", "exchange full"}, + {53, "ENOANO", "no anode"}, + {54, "EBADRQC", "invalid request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "bad message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in too many shared libraries"}, + {87, "ELIBEXEC", "cannot exec a shared library directly"}, + {88, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {89, "ENOSYS", "function not implemented"}, + {90, "ELOOP", "too many levels of symbolic links"}, + {91, "ERESTART", "interrupted system call should be restarted"}, + {92, "ESTRPIPE", "streams pipe error"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "protocol not available"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "ENOTSUP", "operation not supported"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection on reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {135, "EUCLEAN", "structure needs cleaning"}, + {137, "ENOTNAM", "not a XENIX named type file"}, + {138, "ENAVAIL", "no XENIX semaphores available"}, + {139, "EISNAM", "is a named type file"}, + {140, "EREMOTEIO", "remote I/O error"}, + {141, "EINIT", "unknown error 141"}, + {142, "EREMDEV", "unknown error 142"}, + {143, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale file handle"}, + {158, "ECANCELED", "operation canceled"}, + {159, "ENOMEDIUM", "no medium found"}, + {160, "EMEDIUMTYPE", "wrong medium type"}, + {161, "ENOKEY", "required key not available"}, + {162, "EKEYEXPIRED", "key has expired"}, + {163, "EKEYREVOKED", "key has been revoked"}, + {164, "EKEYREJECTED", "key was rejected by service"}, + {165, "EOWNERDEAD", "owner died"}, + {166, "ENOTRECOVERABLE", "state not recoverable"}, + {167, "ERFKILL", "operation not possible due to RF-kill"}, + {168, "EHWPOISON", "memory page has hardware error"}, + {1133, "EDQUOT", "disk quota exceeded"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user defined signal 1"}, + {17, "SIGUSR2", "user defined signal 2"}, + {18, "SIGCHLD", "child exited"}, + {19, "SIGPWR", "power failure"}, + {20, "SIGWINCH", "window changed"}, + {21, "SIGURG", "urgent I/O condition"}, + {22, "SIGIO", "I/O possible"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual timer expired"}, + {29, "SIGPROF", "profiling timer expired"}, + {30, "SIGXCPU", "CPU time limit exceeded"}, + {31, "SIGXFSZ", "file size limit exceeded"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go new file mode 100644 index 0000000..7586a13 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -0,0 +1,2897 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go new file mode 100644 index 0000000..b861ec7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -0,0 +1,2897 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x17 + B110 = 0x3 + B115200 = 0x11 + B1152000 = 0x18 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x19 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x1a + B230400 = 0x12 + B2400 = 0xb + B2500000 = 0x1b + B300 = 0x7 + B3000000 = 0x1c + B3500000 = 0x1d + B38400 = 0xf + B4000000 = 0x1e + B460800 = 0x13 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x14 + B57600 = 0x10 + B576000 = 0x15 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x16 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1f + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x8000 + BSDLY = 0x8000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0xff + CBAUDEX = 0x0 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0xff0000 + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x1000 + CR2 = 0x2000 + CR3 = 0x3000 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x3000 + CREAD = 0x800 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIGNAL = 0xff + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x4000 + FFDLY = 0x4000 + FLUSHO = 0x800000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0xc + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0xd + F_SETLKW = 0x7 + F_SETLKW64 = 0xe + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x4000 + IBSHIFT = 0x10 + ICANON = 0x100 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x400 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x80 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x1000 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x80 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NL2 = 0x200 + NL3 = 0x300 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x300 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80000000 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x4 + ONLCR = 0x2 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x20000 + O_DIRECTORY = 0x4000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x8000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x404000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x1000 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_SAO = 0x10 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETEVRREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GETVRREGS = 0x12 + PTRACE_GETVSRREGS = 0x1b + PTRACE_GET_DEBUGREG = 0x19 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETEVRREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SETVRREGS = 0x13 + PTRACE_SETVSRREGS = 0x1c + PTRACE_SET_DEBUGREG = 0x1a + PTRACE_SINGLEBLOCK = 0x100 + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_SYSEMU = 0x1d + PTRACE_SYSEMU_SINGLESTEP = 0x1e + PTRACE_TRACEME = 0x0 + PT_CCR = 0x26 + PT_CTR = 0x23 + PT_DAR = 0x29 + PT_DSCR = 0x2c + PT_DSISR = 0x2a + PT_FPR0 = 0x30 + PT_FPSCR = 0x50 + PT_LNK = 0x24 + PT_MSR = 0x21 + PT_NIP = 0x20 + PT_ORIG_R3 = 0x22 + PT_R0 = 0x0 + PT_R1 = 0x1 + PT_R10 = 0xa + PT_R11 = 0xb + PT_R12 = 0xc + PT_R13 = 0xd + PT_R14 = 0xe + PT_R15 = 0xf + PT_R16 = 0x10 + PT_R17 = 0x11 + PT_R18 = 0x12 + PT_R19 = 0x13 + PT_R2 = 0x2 + PT_R20 = 0x14 + PT_R21 = 0x15 + PT_R22 = 0x16 + PT_R23 = 0x17 + PT_R24 = 0x18 + PT_R25 = 0x19 + PT_R26 = 0x1a + PT_R27 = 0x1b + PT_R28 = 0x1c + PT_R29 = 0x1d + PT_R3 = 0x3 + PT_R30 = 0x1e + PT_R31 = 0x1f + PT_R4 = 0x4 + PT_R5 = 0x5 + PT_R6 = 0x6 + PT_R7 = 0x7 + PT_R8 = 0x8 + PT_R9 = 0x9 + PT_REGS_COUNT = 0x2c + PT_RESULT = 0x2b + PT_SOFTE = 0x27 + PT_TRAP = 0x28 + PT_VR0 = 0x52 + PT_VRSAVE = 0x94 + PT_VSCR = 0x93 + PT_VSR0 = 0x96 + PT_VSR31 = 0xd4 + PT_XER = 0x25 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x14 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x15 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x10 + SO_RCVTIMEO = 0x12 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x11 + SO_SNDTIMEO = 0x13 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x400 + TAB2 = 0x800 + TAB3 = 0xc00 + TABDLY = 0xc00 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x2000741f + TCGETA = 0x40147417 + TCGETS = 0x402c7413 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x2000741d + TCSBRKP = 0x5425 + TCSETA = 0x80147418 + TCSETAF = 0x8014741c + TCSETAW = 0x80147419 + TCSETS = 0x802c7414 + TCSETSF = 0x802c7416 + TCSETSW = 0x802c7415 + TCXONC = 0x2000741e + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x40045432 + TIOCGETC = 0x40067412 + TIOCGETD = 0x5424 + TIOCGETP = 0x40067408 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGLTC = 0x40067474 + TIOCGPGRP = 0x40047477 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40045430 + TIOCGPTPEER = 0x20005441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_LOOP = 0x8000 + TIOCM_OUT1 = 0x2000 + TIOCM_OUT2 = 0x4000 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETC = 0x80067411 + TIOCSETD = 0x5423 + TIOCSETN = 0x8006740a + TIOCSETP = 0x80067409 + TIOCSIG = 0x80045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSLTC = 0x80067475 + TIOCSPGRP = 0x80047476 + TIOCSPTLCK = 0x80045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTART = 0x2000746e + TIOCSTI = 0x5412 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x400000 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0x10 + VEOF = 0x4 + VEOL = 0x6 + VEOL2 = 0x8 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x5 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xb + VSTART = 0xd + VSTOP = 0xe + VSUSP = 0xc + VSWTC = 0x9 + VT0 = 0x0 + VT1 = 0x10000 + VTDLY = 0x10000 + VTIME = 0x7 + VWERASE = 0xa + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4000 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0xc00 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x3a) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {58, "EDEADLOCK", "file locking deadlock error"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go new file mode 100644 index 0000000..a321ec2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -0,0 +1,2822 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go new file mode 100644 index 0000000..f6c9916 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -0,0 +1,2895 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include -fsigned-char +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x80000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x0 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x80000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x800 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCXFERUNIT = 0x744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_DISABLE_TE = 0x5010 + PTRACE_ENABLE_TE = 0x5009 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETREGS = 0xc + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_GET_LAST_BREAK = 0x5006 + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_OLDSETOPTIONS = 0x15 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKDATA_AREA = 0x5003 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKTEXT_AREA = 0x5002 + PTRACE_PEEKUSR = 0x3 + PTRACE_PEEKUSR_AREA = 0x5000 + PTRACE_PEEK_SYSTEM_CALL = 0x5007 + PTRACE_POKEDATA = 0x5 + PTRACE_POKEDATA_AREA = 0x5005 + PTRACE_POKETEXT = 0x4 + PTRACE_POKETEXT_AREA = 0x5004 + PTRACE_POKEUSR = 0x6 + PTRACE_POKEUSR_AREA = 0x5001 + PTRACE_POKE_SYSTEM_CALL = 0x5008 + PTRACE_PROT = 0x15 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLEBLOCK = 0xc + PTRACE_SINGLESTEP = 0x9 + PTRACE_SYSCALL = 0x18 + PTRACE_TE_ABORT_RAND = 0x5011 + PTRACE_TRACEME = 0x0 + PT_ACR0 = 0x90 + PT_ACR1 = 0x94 + PT_ACR10 = 0xb8 + PT_ACR11 = 0xbc + PT_ACR12 = 0xc0 + PT_ACR13 = 0xc4 + PT_ACR14 = 0xc8 + PT_ACR15 = 0xcc + PT_ACR2 = 0x98 + PT_ACR3 = 0x9c + PT_ACR4 = 0xa0 + PT_ACR5 = 0xa4 + PT_ACR6 = 0xa8 + PT_ACR7 = 0xac + PT_ACR8 = 0xb0 + PT_ACR9 = 0xb4 + PT_CR_10 = 0x168 + PT_CR_11 = 0x170 + PT_CR_9 = 0x160 + PT_ENDREGS = 0x1af + PT_FPC = 0xd8 + PT_FPR0 = 0xe0 + PT_FPR1 = 0xe8 + PT_FPR10 = 0x130 + PT_FPR11 = 0x138 + PT_FPR12 = 0x140 + PT_FPR13 = 0x148 + PT_FPR14 = 0x150 + PT_FPR15 = 0x158 + PT_FPR2 = 0xf0 + PT_FPR3 = 0xf8 + PT_FPR4 = 0x100 + PT_FPR5 = 0x108 + PT_FPR6 = 0x110 + PT_FPR7 = 0x118 + PT_FPR8 = 0x120 + PT_FPR9 = 0x128 + PT_GPR0 = 0x10 + PT_GPR1 = 0x18 + PT_GPR10 = 0x60 + PT_GPR11 = 0x68 + PT_GPR12 = 0x70 + PT_GPR13 = 0x78 + PT_GPR14 = 0x80 + PT_GPR15 = 0x88 + PT_GPR2 = 0x20 + PT_GPR3 = 0x28 + PT_GPR4 = 0x30 + PT_GPR5 = 0x38 + PT_GPR6 = 0x40 + PT_GPR7 = 0x48 + PT_GPR8 = 0x50 + PT_GPR9 = 0x58 + PT_IEEE_IP = 0x1a8 + PT_LASTOFF = 0x1a8 + PT_ORIGGPR2 = 0xd0 + PT_PSWADDR = 0x8 + PT_PSWMASK = 0x0 + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x80000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x800 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0x1 + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUSY_POLL = 0x2e + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x4 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NOFCS = 0x2b + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1f + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVTIMEO = 0x14 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7d) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x6a) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x6b) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x4c) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x60) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x1d) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go new file mode 100644 index 0000000..c1e95e2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -0,0 +1,2891 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + AAFS_MAGIC = 0x5a3c69f0 + ADFS_SUPER_MAGIC = 0xadf5 + AFFS_SUPER_MAGIC = 0xadff + AFS_FS_MAGIC = 0x6b414653 + AFS_SUPER_MAGIC = 0x5346414f + AF_ALG = 0x26 + AF_APPLETALK = 0x5 + AF_ASH = 0x12 + AF_ATMPVC = 0x8 + AF_ATMSVC = 0x14 + AF_AX25 = 0x3 + AF_BLUETOOTH = 0x1f + AF_BRIDGE = 0x7 + AF_CAIF = 0x25 + AF_CAN = 0x1d + AF_DECnet = 0xc + AF_ECONET = 0x13 + AF_FILE = 0x1 + AF_IB = 0x1b + AF_IEEE802154 = 0x24 + AF_INET = 0x2 + AF_INET6 = 0xa + AF_IPX = 0x4 + AF_IRDA = 0x17 + AF_ISDN = 0x22 + AF_IUCV = 0x20 + AF_KCM = 0x29 + AF_KEY = 0xf + AF_LLC = 0x1a + AF_LOCAL = 0x1 + AF_MAX = 0x2d + AF_MPLS = 0x1c + AF_NETBEUI = 0xd + AF_NETLINK = 0x10 + AF_NETROM = 0x6 + AF_NFC = 0x27 + AF_PACKET = 0x11 + AF_PHONET = 0x23 + AF_PPPOX = 0x18 + AF_QIPCRTR = 0x2a + AF_RDS = 0x15 + AF_ROSE = 0xb + AF_ROUTE = 0x10 + AF_RXRPC = 0x21 + AF_SECURITY = 0xe + AF_SMC = 0x2b + AF_SNA = 0x16 + AF_TIPC = 0x1e + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VSOCK = 0x28 + AF_WANPIPE = 0x19 + AF_X25 = 0x9 + AF_XDP = 0x2c + ALG_OP_DECRYPT = 0x0 + ALG_OP_ENCRYPT = 0x1 + ALG_SET_AEAD_ASSOCLEN = 0x4 + ALG_SET_AEAD_AUTHSIZE = 0x5 + ALG_SET_IV = 0x2 + ALG_SET_KEY = 0x1 + ALG_SET_OP = 0x3 + ANON_INODE_FS_MAGIC = 0x9041934 + ARPHRD_6LOWPAN = 0x339 + ARPHRD_ADAPT = 0x108 + ARPHRD_APPLETLK = 0x8 + ARPHRD_ARCNET = 0x7 + ARPHRD_ASH = 0x30d + ARPHRD_ATM = 0x13 + ARPHRD_AX25 = 0x3 + ARPHRD_BIF = 0x307 + ARPHRD_CAIF = 0x336 + ARPHRD_CAN = 0x118 + ARPHRD_CHAOS = 0x5 + ARPHRD_CISCO = 0x201 + ARPHRD_CSLIP = 0x101 + ARPHRD_CSLIP6 = 0x103 + ARPHRD_DDCMP = 0x205 + ARPHRD_DLCI = 0xf + ARPHRD_ECONET = 0x30e + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_EUI64 = 0x1b + ARPHRD_FCAL = 0x311 + ARPHRD_FCFABRIC = 0x313 + ARPHRD_FCPL = 0x312 + ARPHRD_FCPP = 0x310 + ARPHRD_FDDI = 0x306 + ARPHRD_FRAD = 0x302 + ARPHRD_HDLC = 0x201 + ARPHRD_HIPPI = 0x30c + ARPHRD_HWX25 = 0x110 + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IEEE80211 = 0x321 + ARPHRD_IEEE80211_PRISM = 0x322 + ARPHRD_IEEE80211_RADIOTAP = 0x323 + ARPHRD_IEEE802154 = 0x324 + ARPHRD_IEEE802154_MONITOR = 0x325 + ARPHRD_IEEE802_TR = 0x320 + ARPHRD_INFINIBAND = 0x20 + ARPHRD_IP6GRE = 0x337 + ARPHRD_IPDDP = 0x309 + ARPHRD_IPGRE = 0x30a + ARPHRD_IRDA = 0x30f + ARPHRD_LAPB = 0x204 + ARPHRD_LOCALTLK = 0x305 + ARPHRD_LOOPBACK = 0x304 + ARPHRD_METRICOM = 0x17 + ARPHRD_NETLINK = 0x338 + ARPHRD_NETROM = 0x0 + ARPHRD_NONE = 0xfffe + ARPHRD_PHONET = 0x334 + ARPHRD_PHONET_PIPE = 0x335 + ARPHRD_PIMREG = 0x30b + ARPHRD_PPP = 0x200 + ARPHRD_PRONET = 0x4 + ARPHRD_RAWHDLC = 0x206 + ARPHRD_RAWIP = 0x207 + ARPHRD_ROSE = 0x10e + ARPHRD_RSRVD = 0x104 + ARPHRD_SIT = 0x308 + ARPHRD_SKIP = 0x303 + ARPHRD_SLIP = 0x100 + ARPHRD_SLIP6 = 0x102 + ARPHRD_TUNNEL = 0x300 + ARPHRD_TUNNEL6 = 0x301 + ARPHRD_VOID = 0xffff + ARPHRD_VSOCKMON = 0x33a + ARPHRD_X25 = 0x10f + ASI_LEON_DFLUSH = 0x11 + ASI_LEON_IFLUSH = 0x10 + ASI_LEON_MMUFLUSH = 0x18 + AUTOFS_SUPER_MAGIC = 0x187 + B0 = 0x0 + B1000000 = 0x1008 + B110 = 0x3 + B115200 = 0x1002 + B1152000 = 0x1009 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B1500000 = 0x100a + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B2000000 = 0x100b + B230400 = 0x1003 + B2400 = 0xb + B2500000 = 0x100c + B300 = 0x7 + B3000000 = 0x100d + B3500000 = 0x100e + B38400 = 0xf + B4000000 = 0x100f + B460800 = 0x1004 + B4800 = 0xc + B50 = 0x1 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B600 = 0x8 + B75 = 0x2 + B921600 = 0x1007 + B9600 = 0xd + BALLOON_KVM_MAGIC = 0x13661366 + BDEVFS_MAGIC = 0x62646576 + BINDERFS_SUPER_MAGIC = 0x6c6f6f70 + BINFMTFS_MAGIC = 0x42494e4d + BLKBSZGET = 0x40081270 + BLKBSZSET = 0x80081271 + BLKFLSBUF = 0x20001261 + BLKFRAGET = 0x20001265 + BLKFRASET = 0x20001264 + BLKGETSIZE = 0x20001260 + BLKGETSIZE64 = 0x40081272 + BLKPBSZGET = 0x2000127b + BLKRAGET = 0x20001263 + BLKRASET = 0x20001262 + BLKROGET = 0x2000125e + BLKROSET = 0x2000125d + BLKRRPART = 0x2000125f + BLKSECTGET = 0x20001267 + BLKSECTSET = 0x20001266 + BLKSSZGET = 0x20001268 + BOTHER = 0x1000 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIV = 0x30 + BPF_FS_MAGIC = 0xcafe4a11 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LL_OFF = -0x200000 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXINSNS = 0x1000 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_NET_OFF = -0x100000 + BPF_OR = 0x40 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + BTRFS_SUPER_MAGIC = 0x9123683e + BTRFS_TEST_MAGIC = 0x73727279 + CAN_BCM = 0x2 + CAN_EFF_FLAG = 0x80000000 + CAN_EFF_ID_BITS = 0x1d + CAN_EFF_MASK = 0x1fffffff + CAN_ERR_FLAG = 0x20000000 + CAN_ERR_MASK = 0x1fffffff + CAN_INV_FILTER = 0x20000000 + CAN_ISOTP = 0x6 + CAN_MAX_DLC = 0x8 + CAN_MAX_DLEN = 0x8 + CAN_MCNET = 0x5 + CAN_MTU = 0x10 + CAN_NPROTO = 0x7 + CAN_RAW = 0x1 + CAN_RAW_FILTER_MAX = 0x200 + CAN_RTR_FLAG = 0x40000000 + CAN_SFF_ID_BITS = 0xb + CAN_SFF_MASK = 0x7ff + CAN_TP16 = 0x3 + CAN_TP20 = 0x4 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CFLUSH = 0xf + CGROUP2_SUPER_MAGIC = 0x63677270 + CGROUP_SUPER_MAGIC = 0x27e0eb + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CLOCK_BOOTTIME = 0x7 + CLOCK_BOOTTIME_ALARM = 0x9 + CLOCK_DEFAULT = 0x0 + CLOCK_EXT = 0x1 + CLOCK_INT = 0x2 + CLOCK_MONOTONIC = 0x1 + CLOCK_MONOTONIC_COARSE = 0x6 + CLOCK_MONOTONIC_RAW = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_ALARM = 0x8 + CLOCK_REALTIME_COARSE = 0x5 + CLOCK_TAI = 0xb + CLOCK_THREAD_CPUTIME_ID = 0x3 + CLOCK_TXFROMRX = 0x4 + CLOCK_TXINT = 0x3 + CLONE_CHILD_CLEARTID = 0x200000 + CLONE_CHILD_SETTID = 0x1000000 + CLONE_DETACHED = 0x400000 + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_IO = 0x80000000 + CLONE_NEWCGROUP = 0x2000000 + CLONE_NEWIPC = 0x8000000 + CLONE_NEWNET = 0x40000000 + CLONE_NEWNS = 0x20000 + CLONE_NEWPID = 0x20000000 + CLONE_NEWUSER = 0x10000000 + CLONE_NEWUTS = 0x4000000 + CLONE_PARENT = 0x8000 + CLONE_PARENT_SETTID = 0x100000 + CLONE_PTRACE = 0x2000 + CLONE_SETTLS = 0x80000 + CLONE_SIGHAND = 0x800 + CLONE_SYSVSEM = 0x40000 + CLONE_THREAD = 0x10000 + CLONE_UNTRACED = 0x800000 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CMSPAR = 0x40000000 + CODA_SUPER_MAGIC = 0x73757245 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRAMFS_MAGIC = 0x28cd3d45 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIGNAL = 0xff + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x0 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + DAXFS_MAGIC = 0x64646178 + DEBUGFS_MAGIC = 0x64626720 + DEVPTS_SUPER_MAGIC = 0x1cd1 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + ECRYPTFS_SUPER_MAGIC = 0xf15f + EFD_CLOEXEC = 0x400000 + EFD_NONBLOCK = 0x4000 + EFD_SEMAPHORE = 0x1 + EFIVARFS_MAGIC = 0xde5e81e4 + EFS_SUPER_MAGIC = 0x414a53 + EMT_TAGOVF = 0x1 + ENCODING_DEFAULT = 0x0 + ENCODING_FM_MARK = 0x3 + ENCODING_FM_SPACE = 0x4 + ENCODING_MANCHESTER = 0x5 + ENCODING_NRZ = 0x1 + ENCODING_NRZI = 0x2 + EPOLLERR = 0x8 + EPOLLET = 0x80000000 + EPOLLEXCLUSIVE = 0x10000000 + EPOLLHUP = 0x10 + EPOLLIN = 0x1 + EPOLLMSG = 0x400 + EPOLLONESHOT = 0x40000000 + EPOLLOUT = 0x4 + EPOLLPRI = 0x2 + EPOLLRDBAND = 0x80 + EPOLLRDHUP = 0x2000 + EPOLLRDNORM = 0x40 + EPOLLWAKEUP = 0x20000000 + EPOLLWRBAND = 0x200 + EPOLLWRNORM = 0x100 + EPOLL_CLOEXEC = 0x400000 + EPOLL_CTL_ADD = 0x1 + EPOLL_CTL_DEL = 0x2 + EPOLL_CTL_MOD = 0x3 + ETH_P_1588 = 0x88f7 + ETH_P_8021AD = 0x88a8 + ETH_P_8021AH = 0x88e7 + ETH_P_8021Q = 0x8100 + ETH_P_80221 = 0x8917 + ETH_P_802_2 = 0x4 + ETH_P_802_3 = 0x1 + ETH_P_802_3_MIN = 0x600 + ETH_P_802_EX1 = 0x88b5 + ETH_P_AARP = 0x80f3 + ETH_P_AF_IUCV = 0xfbfb + ETH_P_ALL = 0x3 + ETH_P_AOE = 0x88a2 + ETH_P_ARCNET = 0x1a + ETH_P_ARP = 0x806 + ETH_P_ATALK = 0x809b + ETH_P_ATMFATE = 0x8884 + ETH_P_ATMMPOA = 0x884c + ETH_P_AX25 = 0x2 + ETH_P_BATMAN = 0x4305 + ETH_P_BPQ = 0x8ff + ETH_P_CAIF = 0xf7 + ETH_P_CAN = 0xc + ETH_P_CANFD = 0xd + ETH_P_CONTROL = 0x16 + ETH_P_CUST = 0x6006 + ETH_P_DDCMP = 0x6 + ETH_P_DEC = 0x6000 + ETH_P_DIAG = 0x6005 + ETH_P_DNA_DL = 0x6001 + ETH_P_DNA_RC = 0x6002 + ETH_P_DNA_RT = 0x6003 + ETH_P_DSA = 0x1b + ETH_P_ECONET = 0x18 + ETH_P_EDSA = 0xdada + ETH_P_ERSPAN = 0x88be + ETH_P_ERSPAN2 = 0x22eb + ETH_P_FCOE = 0x8906 + ETH_P_FIP = 0x8914 + ETH_P_HDLC = 0x19 + ETH_P_HSR = 0x892f + ETH_P_IBOE = 0x8915 + ETH_P_IEEE802154 = 0xf6 + ETH_P_IEEEPUP = 0xa00 + ETH_P_IEEEPUPAT = 0xa01 + ETH_P_IFE = 0xed3e + ETH_P_IP = 0x800 + ETH_P_IPV6 = 0x86dd + ETH_P_IPX = 0x8137 + ETH_P_IRDA = 0x17 + ETH_P_LAT = 0x6004 + ETH_P_LINK_CTL = 0x886c + ETH_P_LOCALTALK = 0x9 + ETH_P_LOOP = 0x60 + ETH_P_LOOPBACK = 0x9000 + ETH_P_MACSEC = 0x88e5 + ETH_P_MAP = 0xf9 + ETH_P_MOBITEX = 0x15 + ETH_P_MPLS_MC = 0x8848 + ETH_P_MPLS_UC = 0x8847 + ETH_P_MVRP = 0x88f5 + ETH_P_NCSI = 0x88f8 + ETH_P_NSH = 0x894f + ETH_P_PAE = 0x888e + ETH_P_PAUSE = 0x8808 + ETH_P_PHONET = 0xf5 + ETH_P_PPPTALK = 0x10 + ETH_P_PPP_DISC = 0x8863 + ETH_P_PPP_MP = 0x8 + ETH_P_PPP_SES = 0x8864 + ETH_P_PREAUTH = 0x88c7 + ETH_P_PRP = 0x88fb + ETH_P_PUP = 0x200 + ETH_P_PUPAT = 0x201 + ETH_P_QINQ1 = 0x9100 + ETH_P_QINQ2 = 0x9200 + ETH_P_QINQ3 = 0x9300 + ETH_P_RARP = 0x8035 + ETH_P_SCA = 0x6007 + ETH_P_SLOW = 0x8809 + ETH_P_SNAP = 0x5 + ETH_P_TDLS = 0x890d + ETH_P_TEB = 0x6558 + ETH_P_TIPC = 0x88ca + ETH_P_TRAILER = 0x1c + ETH_P_TR_802_2 = 0x11 + ETH_P_TSN = 0x22f0 + ETH_P_WAN_PPP = 0x7 + ETH_P_WCCP = 0x883e + ETH_P_X25 = 0x805 + ETH_P_XDSA = 0xf8 + EXABYTE_ENABLE_NEST = 0xf0 + EXT2_SUPER_MAGIC = 0xef53 + EXT3_SUPER_MAGIC = 0xef53 + EXT4_SUPER_MAGIC = 0xef53 + EXTA = 0xe + EXTB = 0xf + EXTPROC = 0x10000 + F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_COLLAPSE_RANGE = 0x8 + FALLOC_FL_INSERT_RANGE = 0x20 + FALLOC_FL_KEEP_SIZE = 0x1 + FALLOC_FL_NO_HIDE_STALE = 0x4 + FALLOC_FL_PUNCH_HOLE = 0x2 + FALLOC_FL_UNSHARE_RANGE = 0x40 + FALLOC_FL_ZERO_RANGE = 0x10 + FANOTIFY_METADATA_VERSION = 0x3 + FAN_ACCESS = 0x1 + FAN_ACCESS_PERM = 0x20000 + FAN_ALLOW = 0x1 + FAN_ALL_CLASS_BITS = 0xc + FAN_ALL_EVENTS = 0x3b + FAN_ALL_INIT_FLAGS = 0x3f + FAN_ALL_MARK_FLAGS = 0xff + FAN_ALL_OUTGOING_EVENTS = 0x3403b + FAN_ALL_PERM_EVENTS = 0x30000 + FAN_AUDIT = 0x10 + FAN_CLASS_CONTENT = 0x4 + FAN_CLASS_NOTIF = 0x0 + FAN_CLASS_PRE_CONTENT = 0x8 + FAN_CLOEXEC = 0x1 + FAN_CLOSE = 0x18 + FAN_CLOSE_NOWRITE = 0x10 + FAN_CLOSE_WRITE = 0x8 + FAN_DENY = 0x2 + FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_METADATA_LEN = 0x18 + FAN_EVENT_ON_CHILD = 0x8000000 + FAN_MARK_ADD = 0x1 + FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_FILESYSTEM = 0x100 + FAN_MARK_FLUSH = 0x80 + FAN_MARK_IGNORED_MASK = 0x20 + FAN_MARK_IGNORED_SURV_MODIFY = 0x40 + FAN_MARK_INODE = 0x0 + FAN_MARK_MOUNT = 0x10 + FAN_MARK_ONLYDIR = 0x8 + FAN_MARK_REMOVE = 0x2 + FAN_MODIFY = 0x2 + FAN_NOFD = -0x1 + FAN_NONBLOCK = 0x2 + FAN_ONDIR = 0x40000000 + FAN_OPEN = 0x20 + FAN_OPEN_EXEC = 0x1000 + FAN_OPEN_EXEC_PERM = 0x40000 + FAN_OPEN_PERM = 0x10000 + FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_TID = 0x100 + FAN_UNLIMITED_MARKS = 0x20 + FAN_UNLIMITED_QUEUE = 0x10 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHO = 0x1000 + FS_ENCRYPTION_MODE_ADIANTUM = 0x9 + FS_ENCRYPTION_MODE_AES_128_CBC = 0x5 + FS_ENCRYPTION_MODE_AES_128_CTS = 0x6 + FS_ENCRYPTION_MODE_AES_256_CBC = 0x3 + FS_ENCRYPTION_MODE_AES_256_CTS = 0x4 + FS_ENCRYPTION_MODE_AES_256_GCM = 0x2 + FS_ENCRYPTION_MODE_AES_256_XTS = 0x1 + FS_ENCRYPTION_MODE_INVALID = 0x0 + FS_ENCRYPTION_MODE_SPECK128_256_CTS = 0x8 + FS_ENCRYPTION_MODE_SPECK128_256_XTS = 0x7 + FS_IOC_GET_ENCRYPTION_POLICY = 0x800c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x80106614 + FS_IOC_SET_ENCRYPTION_POLICY = 0x400c6613 + FS_KEY_DESCRIPTOR_SIZE = 0x8 + FS_KEY_DESC_PREFIX = "fscrypt:" + FS_KEY_DESC_PREFIX_SIZE = 0x8 + FS_MAX_KEY_SIZE = 0x40 + FS_POLICY_FLAGS_PAD_16 = 0x2 + FS_POLICY_FLAGS_PAD_32 = 0x3 + FS_POLICY_FLAGS_PAD_4 = 0x0 + FS_POLICY_FLAGS_PAD_8 = 0x1 + FS_POLICY_FLAGS_PAD_MASK = 0x3 + FS_POLICY_FLAGS_VALID = 0x7 + FUTEXFS_SUPER_MAGIC = 0xbad1dea + F_ADD_SEALS = 0x409 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x406 + F_EXLCK = 0x4 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLEASE = 0x401 + F_GETLK = 0x7 + F_GETLK64 = 0x7 + F_GETOWN = 0x5 + F_GETOWN_EX = 0x10 + F_GETPIPE_SZ = 0x408 + F_GETSIG = 0xb + F_GET_FILE_RW_HINT = 0x40d + F_GET_RW_HINT = 0x40b + F_GET_SEALS = 0x40a + F_LOCK = 0x1 + F_NOTIFY = 0x402 + F_OFD_GETLK = 0x24 + F_OFD_SETLK = 0x25 + F_OFD_SETLKW = 0x26 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLEASE = 0x400 + F_SETLK = 0x8 + F_SETLK64 = 0x8 + F_SETLKW = 0x9 + F_SETLKW64 = 0x9 + F_SETOWN = 0x6 + F_SETOWN_EX = 0xf + F_SETPIPE_SZ = 0x407 + F_SETSIG = 0xa + F_SET_FILE_RW_HINT = 0x40e + F_SET_RW_HINT = 0x40c + F_SHLCK = 0x8 + F_TEST = 0x3 + F_TLOCK = 0x2 + F_ULOCK = 0x0 + F_UNLCK = 0x3 + F_WRLCK = 0x2 + GENL_ADMIN_PERM = 0x1 + GENL_CMD_CAP_DO = 0x2 + GENL_CMD_CAP_DUMP = 0x4 + GENL_CMD_CAP_HASPOL = 0x8 + GENL_HDRLEN = 0x4 + GENL_ID_CTRL = 0x10 + GENL_ID_PMCRAID = 0x12 + GENL_ID_VFS_DQUOT = 0x11 + GENL_MAX_ID = 0x3ff + GENL_MIN_ID = 0x10 + GENL_NAMSIZ = 0x10 + GENL_START_ALLOC = 0x13 + GENL_UNS_ADMIN_PERM = 0x10 + GRND_NONBLOCK = 0x1 + GRND_RANDOM = 0x2 + HDIO_DRIVE_CMD = 0x31f + HDIO_DRIVE_CMD_AEB = 0x31e + HDIO_DRIVE_CMD_HDR_SIZE = 0x4 + HDIO_DRIVE_HOB_HDR_SIZE = 0x8 + HDIO_DRIVE_RESET = 0x31c + HDIO_DRIVE_TASK = 0x31e + HDIO_DRIVE_TASKFILE = 0x31d + HDIO_DRIVE_TASK_HDR_SIZE = 0x8 + HDIO_GETGEO = 0x301 + HDIO_GET_32BIT = 0x309 + HDIO_GET_ACOUSTIC = 0x30f + HDIO_GET_ADDRESS = 0x310 + HDIO_GET_BUSSTATE = 0x31a + HDIO_GET_DMA = 0x30b + HDIO_GET_IDENTITY = 0x30d + HDIO_GET_KEEPSETTINGS = 0x308 + HDIO_GET_MULTCOUNT = 0x304 + HDIO_GET_NICE = 0x30c + HDIO_GET_NOWERR = 0x30a + HDIO_GET_QDMA = 0x305 + HDIO_GET_UNMASKINTR = 0x302 + HDIO_GET_WCACHE = 0x30e + HDIO_OBSOLETE_IDENTITY = 0x307 + HDIO_SCAN_HWIF = 0x328 + HDIO_SET_32BIT = 0x324 + HDIO_SET_ACOUSTIC = 0x32c + HDIO_SET_ADDRESS = 0x32f + HDIO_SET_BUSSTATE = 0x32d + HDIO_SET_DMA = 0x326 + HDIO_SET_KEEPSETTINGS = 0x323 + HDIO_SET_MULTCOUNT = 0x321 + HDIO_SET_NICE = 0x329 + HDIO_SET_NOWERR = 0x325 + HDIO_SET_PIO_MODE = 0x327 + HDIO_SET_QDMA = 0x32e + HDIO_SET_UNMASKINTR = 0x322 + HDIO_SET_WCACHE = 0x32b + HDIO_SET_XFER = 0x306 + HDIO_TRISTATE_HWIF = 0x31b + HDIO_UNREGISTER_HWIF = 0x32a + HOSTFS_SUPER_MAGIC = 0xc0ffee + HPFS_SUPER_MAGIC = 0xf995e849 + HUGETLBFS_MAGIC = 0x958458f6 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICMPV6_FILTER = 0x1 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFA_F_DADFAILED = 0x8 + IFA_F_DEPRECATED = 0x20 + IFA_F_HOMEADDRESS = 0x10 + IFA_F_MANAGETEMPADDR = 0x100 + IFA_F_MCAUTOJOIN = 0x400 + IFA_F_NODAD = 0x2 + IFA_F_NOPREFIXROUTE = 0x200 + IFA_F_OPTIMISTIC = 0x4 + IFA_F_PERMANENT = 0x80 + IFA_F_SECONDARY = 0x1 + IFA_F_STABLE_PRIVACY = 0x800 + IFA_F_TEMPORARY = 0x1 + IFA_F_TENTATIVE = 0x40 + IFA_MAX = 0xa + IFF_ALLMULTI = 0x200 + IFF_ATTACH_QUEUE = 0x200 + IFF_AUTOMEDIA = 0x4000 + IFF_BROADCAST = 0x2 + IFF_DEBUG = 0x4 + IFF_DETACH_QUEUE = 0x400 + IFF_DORMANT = 0x20000 + IFF_DYNAMIC = 0x8000 + IFF_ECHO = 0x40000 + IFF_LOOPBACK = 0x8 + IFF_LOWER_UP = 0x10000 + IFF_MASTER = 0x400 + IFF_MULTICAST = 0x1000 + IFF_MULTI_QUEUE = 0x100 + IFF_NAPI = 0x10 + IFF_NAPI_FRAGS = 0x20 + IFF_NOARP = 0x80 + IFF_NOFILTER = 0x1000 + IFF_NOTRAILERS = 0x20 + IFF_NO_PI = 0x1000 + IFF_ONE_QUEUE = 0x2000 + IFF_PERSIST = 0x800 + IFF_POINTOPOINT = 0x10 + IFF_PORTSEL = 0x2000 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SLAVE = 0x800 + IFF_TAP = 0x2 + IFF_TUN = 0x1 + IFF_TUN_EXCL = 0x8000 + IFF_UP = 0x1 + IFF_VNET_HDR = 0x4000 + IFF_VOLATILE = 0x70c5a + IFNAMSIZ = 0x10 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_ACCESS = 0x1 + IN_ALL_EVENTS = 0xfff + IN_ATTRIB = 0x4 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLOEXEC = 0x400000 + IN_CLOSE = 0x18 + IN_CLOSE_NOWRITE = 0x10 + IN_CLOSE_WRITE = 0x8 + IN_CREATE = 0x100 + IN_DELETE = 0x200 + IN_DELETE_SELF = 0x400 + IN_DONT_FOLLOW = 0x2000000 + IN_EXCL_UNLINK = 0x4000000 + IN_IGNORED = 0x8000 + IN_ISDIR = 0x40000000 + IN_LOOPBACKNET = 0x7f + IN_MASK_ADD = 0x20000000 + IN_MASK_CREATE = 0x10000000 + IN_MODIFY = 0x2 + IN_MOVE = 0xc0 + IN_MOVED_FROM = 0x40 + IN_MOVED_TO = 0x80 + IN_MOVE_SELF = 0x800 + IN_NONBLOCK = 0x4000 + IN_ONESHOT = 0x80000000 + IN_ONLYDIR = 0x1000000 + IN_OPEN = 0x20 + IN_Q_OVERFLOW = 0x4000 + IN_UNMOUNT = 0x2000 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x200007b9 + IPPROTO_AH = 0x33 + IPPROTO_BEETPH = 0x5e + IPPROTO_COMP = 0x6c + IPPROTO_DCCP = 0x21 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPIP = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MH = 0x87 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_NONE = 0x3b + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPV6_2292DSTOPTS = 0x4 + IPV6_2292HOPLIMIT = 0x8 + IPV6_2292HOPOPTS = 0x3 + IPV6_2292PKTINFO = 0x2 + IPV6_2292PKTOPTIONS = 0x6 + IPV6_2292RTHDR = 0x5 + IPV6_ADDRFORM = 0x1 + IPV6_ADDR_PREFERENCES = 0x48 + IPV6_ADD_MEMBERSHIP = 0x14 + IPV6_AUTHHDR = 0xa + IPV6_AUTOFLOWLABEL = 0x46 + IPV6_CHECKSUM = 0x7 + IPV6_DONTFRAG = 0x3e + IPV6_DROP_MEMBERSHIP = 0x15 + IPV6_DSTOPTS = 0x3b + IPV6_FREEBIND = 0x4e + IPV6_HDRINCL = 0x24 + IPV6_HOPLIMIT = 0x34 + IPV6_HOPOPTS = 0x36 + IPV6_IPSEC_POLICY = 0x22 + IPV6_JOIN_ANYCAST = 0x1b + IPV6_JOIN_GROUP = 0x14 + IPV6_LEAVE_ANYCAST = 0x1c + IPV6_LEAVE_GROUP = 0x15 + IPV6_MINHOPCOUNT = 0x49 + IPV6_MTU = 0x18 + IPV6_MTU_DISCOVER = 0x17 + IPV6_MULTICAST_ALL = 0x1d + IPV6_MULTICAST_HOPS = 0x12 + IPV6_MULTICAST_IF = 0x11 + IPV6_MULTICAST_LOOP = 0x13 + IPV6_NEXTHOP = 0x9 + IPV6_ORIGDSTADDR = 0x4a + IPV6_PATHMTU = 0x3d + IPV6_PKTINFO = 0x32 + IPV6_PMTUDISC_DO = 0x2 + IPV6_PMTUDISC_DONT = 0x0 + IPV6_PMTUDISC_INTERFACE = 0x4 + IPV6_PMTUDISC_OMIT = 0x5 + IPV6_PMTUDISC_PROBE = 0x3 + IPV6_PMTUDISC_WANT = 0x1 + IPV6_RECVDSTOPTS = 0x3a + IPV6_RECVERR = 0x19 + IPV6_RECVFRAGSIZE = 0x4d + IPV6_RECVHOPLIMIT = 0x33 + IPV6_RECVHOPOPTS = 0x35 + IPV6_RECVORIGDSTADDR = 0x4a + IPV6_RECVPATHMTU = 0x3c + IPV6_RECVPKTINFO = 0x31 + IPV6_RECVRTHDR = 0x38 + IPV6_RECVTCLASS = 0x42 + IPV6_ROUTER_ALERT = 0x16 + IPV6_RTHDR = 0x39 + IPV6_RTHDRDSTOPTS = 0x37 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_RXDSTOPTS = 0x3b + IPV6_RXHOPOPTS = 0x36 + IPV6_TCLASS = 0x43 + IPV6_TRANSPARENT = 0x4b + IPV6_UNICAST_HOPS = 0x10 + IPV6_UNICAST_IF = 0x4c + IPV6_V6ONLY = 0x1a + IPV6_XFRM_POLICY = 0x23 + IP_ADD_MEMBERSHIP = 0x23 + IP_ADD_SOURCE_MEMBERSHIP = 0x27 + IP_BIND_ADDRESS_NO_PORT = 0x18 + IP_BLOCK_SOURCE = 0x26 + IP_CHECKSUM = 0x17 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0x24 + IP_DROP_SOURCE_MEMBERSHIP = 0x28 + IP_FREEBIND = 0xf + IP_HDRINCL = 0x3 + IP_IPSEC_POLICY = 0x10 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINTTL = 0x15 + IP_MSFILTER = 0x29 + IP_MSS = 0x240 + IP_MTU = 0xe + IP_MTU_DISCOVER = 0xa + IP_MULTICAST_ALL = 0x31 + IP_MULTICAST_IF = 0x20 + IP_MULTICAST_LOOP = 0x22 + IP_MULTICAST_TTL = 0x21 + IP_NODEFRAG = 0x16 + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x4 + IP_ORIGDSTADDR = 0x14 + IP_PASSSEC = 0x12 + IP_PKTINFO = 0x8 + IP_PKTOPTIONS = 0x9 + IP_PMTUDISC = 0xa + IP_PMTUDISC_DO = 0x2 + IP_PMTUDISC_DONT = 0x0 + IP_PMTUDISC_INTERFACE = 0x4 + IP_PMTUDISC_OMIT = 0x5 + IP_PMTUDISC_PROBE = 0x3 + IP_PMTUDISC_WANT = 0x1 + IP_RECVERR = 0xb + IP_RECVFRAGSIZE = 0x19 + IP_RECVOPTS = 0x6 + IP_RECVORIGDSTADDR = 0x14 + IP_RECVRETOPTS = 0x7 + IP_RECVTOS = 0xd + IP_RECVTTL = 0xc + IP_RETOPTS = 0x7 + IP_RF = 0x8000 + IP_ROUTER_ALERT = 0x5 + IP_TOS = 0x1 + IP_TRANSPARENT = 0x13 + IP_TTL = 0x2 + IP_UNBLOCK_SOURCE = 0x25 + IP_UNICAST_IF = 0x32 + IP_XFRM_POLICY = 0x11 + ISIG = 0x1 + ISOFS_SUPER_MAGIC = 0x9660 + ISTRIP = 0x20 + IUCLC = 0x200 + IUTF8 = 0x4000 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + JFFS2_SUPER_MAGIC = 0x72b6 + KEXEC_ARCH_386 = 0x30000 + KEXEC_ARCH_68K = 0x40000 + KEXEC_ARCH_AARCH64 = 0xb70000 + KEXEC_ARCH_ARM = 0x280000 + KEXEC_ARCH_DEFAULT = 0x0 + KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_MASK = 0xffff0000 + KEXEC_ARCH_MIPS = 0x80000 + KEXEC_ARCH_MIPS_LE = 0xa0000 + KEXEC_ARCH_PPC = 0x140000 + KEXEC_ARCH_PPC64 = 0x150000 + KEXEC_ARCH_S390 = 0x160000 + KEXEC_ARCH_SH = 0x2a0000 + KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_FILE_NO_INITRAMFS = 0x4 + KEXEC_FILE_ON_CRASH = 0x2 + KEXEC_FILE_UNLOAD = 0x1 + KEXEC_ON_CRASH = 0x1 + KEXEC_PRESERVE_CONTEXT = 0x2 + KEXEC_SEGMENT_MAX = 0x10 + KEYCTL_ASSUME_AUTHORITY = 0x10 + KEYCTL_CHOWN = 0x4 + KEYCTL_CLEAR = 0x7 + KEYCTL_DESCRIBE = 0x6 + KEYCTL_DH_COMPUTE = 0x17 + KEYCTL_GET_KEYRING_ID = 0x0 + KEYCTL_GET_PERSISTENT = 0x16 + KEYCTL_GET_SECURITY = 0x11 + KEYCTL_INSTANTIATE = 0xc + KEYCTL_INSTANTIATE_IOV = 0x14 + KEYCTL_INVALIDATE = 0x15 + KEYCTL_JOIN_SESSION_KEYRING = 0x1 + KEYCTL_LINK = 0x8 + KEYCTL_NEGATE = 0xd + KEYCTL_PKEY_DECRYPT = 0x1a + KEYCTL_PKEY_ENCRYPT = 0x19 + KEYCTL_PKEY_QUERY = 0x18 + KEYCTL_PKEY_SIGN = 0x1b + KEYCTL_PKEY_VERIFY = 0x1c + KEYCTL_READ = 0xb + KEYCTL_REJECT = 0x13 + KEYCTL_RESTRICT_KEYRING = 0x1d + KEYCTL_REVOKE = 0x3 + KEYCTL_SEARCH = 0xa + KEYCTL_SESSION_TO_PARENT = 0x12 + KEYCTL_SETPERM = 0x5 + KEYCTL_SET_REQKEY_KEYRING = 0xe + KEYCTL_SET_TIMEOUT = 0xf + KEYCTL_SUPPORTS_DECRYPT = 0x2 + KEYCTL_SUPPORTS_ENCRYPT = 0x1 + KEYCTL_SUPPORTS_SIGN = 0x4 + KEYCTL_SUPPORTS_VERIFY = 0x8 + KEYCTL_UNLINK = 0x9 + KEYCTL_UPDATE = 0x2 + KEY_REQKEY_DEFL_DEFAULT = 0x0 + KEY_REQKEY_DEFL_GROUP_KEYRING = 0x6 + KEY_REQKEY_DEFL_NO_CHANGE = -0x1 + KEY_REQKEY_DEFL_PROCESS_KEYRING = 0x2 + KEY_REQKEY_DEFL_REQUESTOR_KEYRING = 0x7 + KEY_REQKEY_DEFL_SESSION_KEYRING = 0x3 + KEY_REQKEY_DEFL_THREAD_KEYRING = 0x1 + KEY_REQKEY_DEFL_USER_KEYRING = 0x4 + KEY_REQKEY_DEFL_USER_SESSION_KEYRING = 0x5 + KEY_SPEC_GROUP_KEYRING = -0x6 + KEY_SPEC_PROCESS_KEYRING = -0x2 + KEY_SPEC_REQKEY_AUTH_KEY = -0x7 + KEY_SPEC_REQUESTOR_KEYRING = -0x8 + KEY_SPEC_SESSION_KEYRING = -0x3 + KEY_SPEC_THREAD_KEYRING = -0x1 + KEY_SPEC_USER_KEYRING = -0x4 + KEY_SPEC_USER_SESSION_KEYRING = -0x5 + LINUX_REBOOT_CMD_CAD_OFF = 0x0 + LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef + LINUX_REBOOT_CMD_HALT = 0xcdef0123 + LINUX_REBOOT_CMD_KEXEC = 0x45584543 + LINUX_REBOOT_CMD_POWER_OFF = 0x4321fedc + LINUX_REBOOT_CMD_RESTART = 0x1234567 + LINUX_REBOOT_CMD_RESTART2 = 0xa1b2c3d4 + LINUX_REBOOT_CMD_SW_SUSPEND = 0xd000fce2 + LINUX_REBOOT_MAGIC1 = 0xfee1dead + LINUX_REBOOT_MAGIC2 = 0x28121969 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DODUMP = 0x11 + MADV_DOFORK = 0xb + MADV_DONTDUMP = 0x10 + MADV_DONTFORK = 0xa + MADV_DONTNEED = 0x4 + MADV_FREE = 0x8 + MADV_HUGEPAGE = 0xe + MADV_HWPOISON = 0x64 + MADV_KEEPONFORK = 0x13 + MADV_MERGEABLE = 0xc + MADV_NOHUGEPAGE = 0xf + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_REMOVE = 0x9 + MADV_SEQUENTIAL = 0x2 + MADV_UNMERGEABLE = 0xd + MADV_WILLNEED = 0x3 + MADV_WIPEONFORK = 0x12 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FIXED_NOREPLACE = 0x100000 + MAP_GROWSDOWN = 0x200 + MAP_HUGETLB = 0x40000 + MAP_HUGE_MASK = 0x3f + MAP_HUGE_SHIFT = 0x1a + MAP_LOCKED = 0x100 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x40 + MAP_POPULATE = 0x8000 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_SHARED_VALIDATE = 0x3 + MAP_STACK = 0x20000 + MAP_TYPE = 0xf + MCL_CURRENT = 0x2000 + MCL_FUTURE = 0x4000 + MCL_ONFAULT = 0x8000 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0x3f + MFD_HUGE_SHIFT = 0x1a + MINIX2_SUPER_MAGIC = 0x2468 + MINIX2_SUPER_MAGIC2 = 0x2478 + MINIX3_SUPER_MAGIC = 0x4d5a + MINIX_SUPER_MAGIC = 0x137f + MINIX_SUPER_MAGIC2 = 0x138f + MNT_DETACH = 0x2 + MNT_EXPIRE = 0x4 + MNT_FORCE = 0x1 + MODULE_INIT_IGNORE_MODVERSIONS = 0x1 + MODULE_INIT_IGNORE_VERMAGIC = 0x2 + MSDOS_SUPER_MAGIC = 0x4d44 + MSG_BATCH = 0x40000 + MSG_CMSG_CLOEXEC = 0x40000000 + MSG_CONFIRM = 0x800 + MSG_CTRUNC = 0x8 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x40 + MSG_EOR = 0x80 + MSG_ERRQUEUE = 0x2000 + MSG_FASTOPEN = 0x20000000 + MSG_FIN = 0x200 + MSG_MORE = 0x8000 + MSG_NOSIGNAL = 0x4000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_PROXY = 0x10 + MSG_RST = 0x1000 + MSG_SYN = 0x400 + MSG_TRUNC = 0x20 + MSG_TRYHARD = 0x4 + MSG_WAITALL = 0x100 + MSG_WAITFORONE = 0x10000 + MSG_ZEROCOPY = 0x4000000 + MS_ACTIVE = 0x40000000 + MS_ASYNC = 0x1 + MS_BIND = 0x1000 + MS_BORN = 0x20000000 + MS_DIRSYNC = 0x80 + MS_INVALIDATE = 0x2 + MS_I_VERSION = 0x800000 + MS_KERNMOUNT = 0x400000 + MS_LAZYTIME = 0x2000000 + MS_MANDLOCK = 0x40 + MS_MGC_MSK = 0xffff0000 + MS_MGC_VAL = 0xc0ed0000 + MS_MOVE = 0x2000 + MS_NOATIME = 0x400 + MS_NODEV = 0x4 + MS_NODIRATIME = 0x800 + MS_NOEXEC = 0x8 + MS_NOREMOTELOCK = 0x8000000 + MS_NOSEC = 0x10000000 + MS_NOSUID = 0x2 + MS_NOUSER = -0x80000000 + MS_POSIXACL = 0x10000 + MS_PRIVATE = 0x40000 + MS_RDONLY = 0x1 + MS_REC = 0x4000 + MS_RELATIME = 0x200000 + MS_REMOUNT = 0x20 + MS_RMT_MASK = 0x2800051 + MS_SHARED = 0x100000 + MS_SILENT = 0x8000 + MS_SLAVE = 0x80000 + MS_STRICTATIME = 0x1000000 + MS_SUBMOUNT = 0x4000000 + MS_SYNC = 0x4 + MS_SYNCHRONOUS = 0x10 + MS_UNBINDABLE = 0x20000 + MS_VERBOSE = 0x8000 + MTD_INODE_FS_MAGIC = 0x11307854 + NAME_MAX = 0xff + NCP_SUPER_MAGIC = 0x564c + NETLINK_ADD_MEMBERSHIP = 0x1 + NETLINK_AUDIT = 0x9 + NETLINK_BROADCAST_ERROR = 0x4 + NETLINK_CAP_ACK = 0xa + NETLINK_CONNECTOR = 0xb + NETLINK_CRYPTO = 0x15 + NETLINK_DNRTMSG = 0xe + NETLINK_DROP_MEMBERSHIP = 0x2 + NETLINK_ECRYPTFS = 0x13 + NETLINK_EXT_ACK = 0xb + NETLINK_FIB_LOOKUP = 0xa + NETLINK_FIREWALL = 0x3 + NETLINK_GENERIC = 0x10 + NETLINK_GET_STRICT_CHK = 0xc + NETLINK_INET_DIAG = 0x4 + NETLINK_IP6_FW = 0xd + NETLINK_ISCSI = 0x8 + NETLINK_KOBJECT_UEVENT = 0xf + NETLINK_LISTEN_ALL_NSID = 0x8 + NETLINK_LIST_MEMBERSHIPS = 0x9 + NETLINK_NETFILTER = 0xc + NETLINK_NFLOG = 0x5 + NETLINK_NO_ENOBUFS = 0x5 + NETLINK_PKTINFO = 0x3 + NETLINK_RDMA = 0x14 + NETLINK_ROUTE = 0x0 + NETLINK_RX_RING = 0x6 + NETLINK_SCSITRANSPORT = 0x12 + NETLINK_SELINUX = 0x7 + NETLINK_SMC = 0x16 + NETLINK_SOCK_DIAG = 0x4 + NETLINK_TX_RING = 0x7 + NETLINK_UNUSED = 0x1 + NETLINK_USERSOCK = 0x2 + NETLINK_XFRM = 0x6 + NETNSA_MAX = 0x5 + NETNSA_NSID_NOT_ASSIGNED = -0x1 + NFNETLINK_V0 = 0x0 + NFNLGRP_ACCT_QUOTA = 0x8 + NFNLGRP_CONNTRACK_DESTROY = 0x3 + NFNLGRP_CONNTRACK_EXP_DESTROY = 0x6 + NFNLGRP_CONNTRACK_EXP_NEW = 0x4 + NFNLGRP_CONNTRACK_EXP_UPDATE = 0x5 + NFNLGRP_CONNTRACK_NEW = 0x1 + NFNLGRP_CONNTRACK_UPDATE = 0x2 + NFNLGRP_MAX = 0x9 + NFNLGRP_NFTABLES = 0x7 + NFNLGRP_NFTRACE = 0x9 + NFNLGRP_NONE = 0x0 + NFNL_BATCH_MAX = 0x1 + NFNL_MSG_BATCH_BEGIN = 0x10 + NFNL_MSG_BATCH_END = 0x11 + NFNL_NFA_NEST = 0x8000 + NFNL_SUBSYS_ACCT = 0x7 + NFNL_SUBSYS_COUNT = 0xc + NFNL_SUBSYS_CTHELPER = 0x9 + NFNL_SUBSYS_CTNETLINK = 0x1 + NFNL_SUBSYS_CTNETLINK_EXP = 0x2 + NFNL_SUBSYS_CTNETLINK_TIMEOUT = 0x8 + NFNL_SUBSYS_IPSET = 0x6 + NFNL_SUBSYS_NFTABLES = 0xa + NFNL_SUBSYS_NFT_COMPAT = 0xb + NFNL_SUBSYS_NONE = 0x0 + NFNL_SUBSYS_OSF = 0x5 + NFNL_SUBSYS_QUEUE = 0x3 + NFNL_SUBSYS_ULOG = 0x4 + NFS_SUPER_MAGIC = 0x6969 + NILFS_SUPER_MAGIC = 0x3434 + NL0 = 0x0 + NL1 = 0x100 + NLA_ALIGNTO = 0x4 + NLA_F_NESTED = 0x8000 + NLA_F_NET_BYTEORDER = 0x4000 + NLA_HDRLEN = 0x4 + NLDLY = 0x100 + NLMSG_ALIGNTO = 0x4 + NLMSG_DONE = 0x3 + NLMSG_ERROR = 0x2 + NLMSG_HDRLEN = 0x10 + NLMSG_MIN_TYPE = 0x10 + NLMSG_NOOP = 0x1 + NLMSG_OVERRUN = 0x4 + NLM_F_ACK = 0x4 + NLM_F_ACK_TLVS = 0x200 + NLM_F_APPEND = 0x800 + NLM_F_ATOMIC = 0x400 + NLM_F_CAPPED = 0x100 + NLM_F_CREATE = 0x400 + NLM_F_DUMP = 0x300 + NLM_F_DUMP_FILTERED = 0x20 + NLM_F_DUMP_INTR = 0x10 + NLM_F_ECHO = 0x8 + NLM_F_EXCL = 0x200 + NLM_F_MATCH = 0x200 + NLM_F_MULTI = 0x2 + NLM_F_NONREC = 0x100 + NLM_F_REPLACE = 0x100 + NLM_F_REQUEST = 0x1 + NLM_F_ROOT = 0x100 + NOFLSH = 0x80 + NSFS_MAGIC = 0x6e736673 + OCFS2_SUPER_MAGIC = 0x7461636f + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENPROM_SUPER_MAGIC = 0x9fa1 + OPOST = 0x1 + OVERLAYFS_SUPER_MAGIC = 0x794c7630 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x100000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x2000 + O_EXCL = 0x800 + O_FSYNC = 0x802000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x4004 + O_NOATIME = 0x200000 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x4000 + O_PATH = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x802000 + O_SYNC = 0x802000 + O_TMPFILE = 0x2010000 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PACKET_ADD_MEMBERSHIP = 0x1 + PACKET_AUXDATA = 0x8 + PACKET_BROADCAST = 0x1 + PACKET_COPY_THRESH = 0x7 + PACKET_DROP_MEMBERSHIP = 0x2 + PACKET_FANOUT = 0x12 + PACKET_FANOUT_CBPF = 0x6 + PACKET_FANOUT_CPU = 0x2 + PACKET_FANOUT_DATA = 0x16 + PACKET_FANOUT_EBPF = 0x7 + PACKET_FANOUT_FLAG_DEFRAG = 0x8000 + PACKET_FANOUT_FLAG_ROLLOVER = 0x1000 + PACKET_FANOUT_FLAG_UNIQUEID = 0x2000 + PACKET_FANOUT_HASH = 0x0 + PACKET_FANOUT_LB = 0x1 + PACKET_FANOUT_QM = 0x5 + PACKET_FANOUT_RND = 0x4 + PACKET_FANOUT_ROLLOVER = 0x3 + PACKET_FASTROUTE = 0x6 + PACKET_HDRLEN = 0xb + PACKET_HOST = 0x0 + PACKET_IGNORE_OUTGOING = 0x17 + PACKET_KERNEL = 0x7 + PACKET_LOOPBACK = 0x5 + PACKET_LOSS = 0xe + PACKET_MR_ALLMULTI = 0x2 + PACKET_MR_MULTICAST = 0x0 + PACKET_MR_PROMISC = 0x1 + PACKET_MR_UNICAST = 0x3 + PACKET_MULTICAST = 0x2 + PACKET_ORIGDEV = 0x9 + PACKET_OTHERHOST = 0x3 + PACKET_OUTGOING = 0x4 + PACKET_QDISC_BYPASS = 0x14 + PACKET_RECV_OUTPUT = 0x3 + PACKET_RESERVE = 0xc + PACKET_ROLLOVER_STATS = 0x15 + PACKET_RX_RING = 0x5 + PACKET_STATISTICS = 0x6 + PACKET_TIMESTAMP = 0x11 + PACKET_TX_HAS_OFF = 0x13 + PACKET_TX_RING = 0xd + PACKET_TX_TIMESTAMP = 0x10 + PACKET_USER = 0x6 + PACKET_VERSION = 0xa + PACKET_VNET_HDR = 0xf + PARENB = 0x100 + PARITY_CRC16_PR0 = 0x2 + PARITY_CRC16_PR0_CCITT = 0x4 + PARITY_CRC16_PR1 = 0x3 + PARITY_CRC16_PR1_CCITT = 0x5 + PARITY_CRC32_PR0_CCITT = 0x6 + PARITY_CRC32_PR1_CCITT = 0x7 + PARITY_DEFAULT = 0x0 + PARITY_NONE = 0x1 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x20002401 + PERF_EVENT_IOC_ENABLE = 0x20002400 + PERF_EVENT_IOC_ID = 0x40082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x80042409 + PERF_EVENT_IOC_PERIOD = 0x80082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x20002402 + PERF_EVENT_IOC_RESET = 0x20002403 + PERF_EVENT_IOC_SET_BPF = 0x80042408 + PERF_EVENT_IOC_SET_FILTER = 0x80082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x20002405 + PIPEFS_MAGIC = 0x50495045 + PPPIOCATTACH = 0x8004743d + PPPIOCATTCHAN = 0x80047438 + PPPIOCCONNECT = 0x8004743a + PPPIOCDETACH = 0x8004743c + PPPIOCDISCONN = 0x20007439 + PPPIOCGASYNCMAP = 0x40047458 + PPPIOCGCHAN = 0x40047437 + PPPIOCGDEBUG = 0x40047441 + PPPIOCGFLAGS = 0x4004745a + PPPIOCGIDLE = 0x4010743f + PPPIOCGL2TPSTATS = 0x40487436 + PPPIOCGMRU = 0x40047453 + PPPIOCGNPMODE = 0xc008744c + PPPIOCGRASYNCMAP = 0x40047455 + PPPIOCGUNIT = 0x40047456 + PPPIOCGXASYNCMAP = 0x40207450 + PPPIOCNEWUNIT = 0xc004743e + PPPIOCSACTIVE = 0x80107446 + PPPIOCSASYNCMAP = 0x80047457 + PPPIOCSCOMPRESS = 0x8010744d + PPPIOCSDEBUG = 0x80047440 + PPPIOCSFLAGS = 0x80047459 + PPPIOCSMAXCID = 0x80047451 + PPPIOCSMRRU = 0x8004743b + PPPIOCSMRU = 0x80047452 + PPPIOCSNPMODE = 0x8008744b + PPPIOCSPASS = 0x80107447 + PPPIOCSRASYNCMAP = 0x80047454 + PPPIOCSXASYNCMAP = 0x8020744f + PPPIOCXFERUNIT = 0x2000744e + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROC_SUPER_MAGIC = 0x9fa0 + PROT_EXEC = 0x4 + PROT_GROWSDOWN = 0x1000000 + PROT_GROWSUP = 0x2000000 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PR_CAPBSET_DROP = 0x18 + PR_CAPBSET_READ = 0x17 + PR_CAP_AMBIENT = 0x2f + PR_CAP_AMBIENT_CLEAR_ALL = 0x4 + PR_CAP_AMBIENT_IS_SET = 0x1 + PR_CAP_AMBIENT_LOWER = 0x3 + PR_CAP_AMBIENT_RAISE = 0x2 + PR_ENDIAN_BIG = 0x0 + PR_ENDIAN_LITTLE = 0x1 + PR_ENDIAN_PPC_LITTLE = 0x2 + PR_FPEMU_NOPRINT = 0x1 + PR_FPEMU_SIGFPE = 0x2 + PR_FP_EXC_ASYNC = 0x2 + PR_FP_EXC_DISABLED = 0x0 + PR_FP_EXC_DIV = 0x10000 + PR_FP_EXC_INV = 0x100000 + PR_FP_EXC_NONRECOV = 0x1 + PR_FP_EXC_OVF = 0x20000 + PR_FP_EXC_PRECISE = 0x3 + PR_FP_EXC_RES = 0x80000 + PR_FP_EXC_SW_ENABLE = 0x80 + PR_FP_EXC_UND = 0x40000 + PR_FP_MODE_FR = 0x1 + PR_FP_MODE_FRE = 0x2 + PR_GET_CHILD_SUBREAPER = 0x25 + PR_GET_DUMPABLE = 0x3 + PR_GET_ENDIAN = 0x13 + PR_GET_FPEMU = 0x9 + PR_GET_FPEXC = 0xb + PR_GET_FP_MODE = 0x2e + PR_GET_KEEPCAPS = 0x7 + PR_GET_NAME = 0x10 + PR_GET_NO_NEW_PRIVS = 0x27 + PR_GET_PDEATHSIG = 0x2 + PR_GET_SECCOMP = 0x15 + PR_GET_SECUREBITS = 0x1b + PR_GET_SPECULATION_CTRL = 0x34 + PR_GET_THP_DISABLE = 0x2a + PR_GET_TID_ADDRESS = 0x28 + PR_GET_TIMERSLACK = 0x1e + PR_GET_TIMING = 0xd + PR_GET_TSC = 0x19 + PR_GET_UNALIGN = 0x5 + PR_MCE_KILL = 0x21 + PR_MCE_KILL_CLEAR = 0x0 + PR_MCE_KILL_DEFAULT = 0x2 + PR_MCE_KILL_EARLY = 0x1 + PR_MCE_KILL_GET = 0x22 + PR_MCE_KILL_LATE = 0x0 + PR_MCE_KILL_SET = 0x1 + PR_MPX_DISABLE_MANAGEMENT = 0x2c + PR_MPX_ENABLE_MANAGEMENT = 0x2b + PR_PAC_APDAKEY = 0x4 + PR_PAC_APDBKEY = 0x8 + PR_PAC_APGAKEY = 0x10 + PR_PAC_APIAKEY = 0x1 + PR_PAC_APIBKEY = 0x2 + PR_PAC_RESET_KEYS = 0x36 + PR_SET_CHILD_SUBREAPER = 0x24 + PR_SET_DUMPABLE = 0x4 + PR_SET_ENDIAN = 0x14 + PR_SET_FPEMU = 0xa + PR_SET_FPEXC = 0xc + PR_SET_FP_MODE = 0x2d + PR_SET_KEEPCAPS = 0x8 + PR_SET_MM = 0x23 + PR_SET_MM_ARG_END = 0x9 + PR_SET_MM_ARG_START = 0x8 + PR_SET_MM_AUXV = 0xc + PR_SET_MM_BRK = 0x7 + PR_SET_MM_END_CODE = 0x2 + PR_SET_MM_END_DATA = 0x4 + PR_SET_MM_ENV_END = 0xb + PR_SET_MM_ENV_START = 0xa + PR_SET_MM_EXE_FILE = 0xd + PR_SET_MM_MAP = 0xe + PR_SET_MM_MAP_SIZE = 0xf + PR_SET_MM_START_BRK = 0x6 + PR_SET_MM_START_CODE = 0x1 + PR_SET_MM_START_DATA = 0x3 + PR_SET_MM_START_STACK = 0x5 + PR_SET_NAME = 0xf + PR_SET_NO_NEW_PRIVS = 0x26 + PR_SET_PDEATHSIG = 0x1 + PR_SET_PTRACER = 0x59616d61 + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PR_SET_SECCOMP = 0x16 + PR_SET_SECUREBITS = 0x1c + PR_SET_SPECULATION_CTRL = 0x35 + PR_SET_THP_DISABLE = 0x29 + PR_SET_TIMERSLACK = 0x1d + PR_SET_TIMING = 0xe + PR_SET_TSC = 0x1a + PR_SET_UNALIGN = 0x6 + PR_SPEC_DISABLE = 0x4 + PR_SPEC_ENABLE = 0x2 + PR_SPEC_FORCE_DISABLE = 0x8 + PR_SPEC_INDIRECT_BRANCH = 0x1 + PR_SPEC_NOT_AFFECTED = 0x0 + PR_SPEC_PRCTL = 0x1 + PR_SPEC_STORE_BYPASS = 0x0 + PR_SVE_GET_VL = 0x33 + PR_SVE_SET_VL = 0x32 + PR_SVE_SET_VL_ONEXEC = 0x40000 + PR_SVE_VL_INHERIT = 0x20000 + PR_SVE_VL_LEN_MASK = 0xffff + PR_TASK_PERF_EVENTS_DISABLE = 0x1f + PR_TASK_PERF_EVENTS_ENABLE = 0x20 + PR_TIMING_STATISTICAL = 0x0 + PR_TIMING_TIMESTAMP = 0x1 + PR_TSC_ENABLE = 0x1 + PR_TSC_SIGSEGV = 0x2 + PR_UNALIGN_NOPRINT = 0x1 + PR_UNALIGN_SIGBUS = 0x2 + PSTOREFS_MAGIC = 0x6165676c + PTRACE_ATTACH = 0x10 + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0x11 + PTRACE_EVENT_CLONE = 0x3 + PTRACE_EVENT_EXEC = 0x4 + PTRACE_EVENT_EXIT = 0x6 + PTRACE_EVENT_FORK = 0x1 + PTRACE_EVENT_SECCOMP = 0x7 + PTRACE_EVENT_STOP = 0x80 + PTRACE_EVENT_VFORK = 0x2 + PTRACE_EVENT_VFORK_DONE = 0x5 + PTRACE_GETEVENTMSG = 0x4201 + PTRACE_GETFPAREGS = 0x14 + PTRACE_GETFPREGS = 0xe + PTRACE_GETFPREGS64 = 0x19 + PTRACE_GETREGS = 0xc + PTRACE_GETREGS64 = 0x16 + PTRACE_GETREGSET = 0x4204 + PTRACE_GETSIGINFO = 0x4202 + PTRACE_GETSIGMASK = 0x420a + PTRACE_INTERRUPT = 0x4207 + PTRACE_KILL = 0x8 + PTRACE_LISTEN = 0x4208 + PTRACE_O_EXITKILL = 0x100000 + PTRACE_O_MASK = 0x3000ff + PTRACE_O_SUSPEND_SECCOMP = 0x200000 + PTRACE_O_TRACECLONE = 0x8 + PTRACE_O_TRACEEXEC = 0x10 + PTRACE_O_TRACEEXIT = 0x40 + PTRACE_O_TRACEFORK = 0x2 + PTRACE_O_TRACESECCOMP = 0x80 + PTRACE_O_TRACESYSGOOD = 0x1 + PTRACE_O_TRACEVFORK = 0x4 + PTRACE_O_TRACEVFORKDONE = 0x20 + PTRACE_PEEKDATA = 0x2 + PTRACE_PEEKSIGINFO = 0x4209 + PTRACE_PEEKSIGINFO_SHARED = 0x1 + PTRACE_PEEKTEXT = 0x1 + PTRACE_PEEKUSR = 0x3 + PTRACE_POKEDATA = 0x5 + PTRACE_POKETEXT = 0x4 + PTRACE_POKEUSR = 0x6 + PTRACE_READDATA = 0x10 + PTRACE_READTEXT = 0x12 + PTRACE_SECCOMP_GET_FILTER = 0x420c + PTRACE_SECCOMP_GET_METADATA = 0x420d + PTRACE_SEIZE = 0x4206 + PTRACE_SETFPAREGS = 0x15 + PTRACE_SETFPREGS = 0xf + PTRACE_SETFPREGS64 = 0x1a + PTRACE_SETOPTIONS = 0x4200 + PTRACE_SETREGS = 0xd + PTRACE_SETREGS64 = 0x17 + PTRACE_SETREGSET = 0x4205 + PTRACE_SETSIGINFO = 0x4203 + PTRACE_SETSIGMASK = 0x420b + PTRACE_SINGLESTEP = 0x9 + PTRACE_SPARC_DETACH = 0xb + PTRACE_SYSCALL = 0x18 + PTRACE_TRACEME = 0x0 + PTRACE_WRITEDATA = 0x11 + PTRACE_WRITETEXT = 0x13 + PT_FP = 0x48 + PT_G0 = 0x10 + PT_G1 = 0x14 + PT_G2 = 0x18 + PT_G3 = 0x1c + PT_G4 = 0x20 + PT_G5 = 0x24 + PT_G6 = 0x28 + PT_G7 = 0x2c + PT_I0 = 0x30 + PT_I1 = 0x34 + PT_I2 = 0x38 + PT_I3 = 0x3c + PT_I4 = 0x40 + PT_I5 = 0x44 + PT_I6 = 0x48 + PT_I7 = 0x4c + PT_NPC = 0x8 + PT_PC = 0x4 + PT_PSR = 0x0 + PT_REGS_MAGIC = 0x57ac6c00 + PT_TNPC = 0x90 + PT_TPC = 0x88 + PT_TSTATE = 0x80 + PT_V9_FP = 0x70 + PT_V9_G0 = 0x0 + PT_V9_G1 = 0x8 + PT_V9_G2 = 0x10 + PT_V9_G3 = 0x18 + PT_V9_G4 = 0x20 + PT_V9_G5 = 0x28 + PT_V9_G6 = 0x30 + PT_V9_G7 = 0x38 + PT_V9_I0 = 0x40 + PT_V9_I1 = 0x48 + PT_V9_I2 = 0x50 + PT_V9_I3 = 0x58 + PT_V9_I4 = 0x60 + PT_V9_I5 = 0x68 + PT_V9_I6 = 0x70 + PT_V9_I7 = 0x78 + PT_V9_MAGIC = 0x9c + PT_V9_TNPC = 0x90 + PT_V9_TPC = 0x88 + PT_V9_TSTATE = 0x80 + PT_V9_Y = 0x98 + PT_WIM = 0x10 + PT_Y = 0xc + QNX4_SUPER_MAGIC = 0x2f + QNX6_SUPER_MAGIC = 0x68191122 + RAMFS_MAGIC = 0x858458f6 + RDTGROUP_SUPER_MAGIC = 0x7655821 + REISERFS_SUPER_MAGIC = 0x52654973 + RENAME_EXCHANGE = 0x2 + RENAME_NOREPLACE = 0x1 + RENAME_WHITEOUT = 0x4 + RLIMIT_AS = 0x9 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_LOCKS = 0xa + RLIMIT_MEMLOCK = 0x8 + RLIMIT_MSGQUEUE = 0xc + RLIMIT_NICE = 0xd + RLIMIT_NOFILE = 0x6 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_RTPRIO = 0xe + RLIMIT_RTTIME = 0xf + RLIMIT_SIGPENDING = 0xb + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0xffffffffffffffff + RNDADDENTROPY = 0x80085203 + RNDADDTOENTCNT = 0x80045201 + RNDCLEARPOOL = 0x20005206 + RNDGETENTCNT = 0x40045200 + RNDGETPOOL = 0x40085202 + RNDRESEEDCRNG = 0x20005207 + RNDZAPENTCNT = 0x20005204 + RTAX_ADVMSS = 0x8 + RTAX_CC_ALGO = 0x10 + RTAX_CWND = 0x7 + RTAX_FASTOPEN_NO_COOKIE = 0x11 + RTAX_FEATURES = 0xc + RTAX_FEATURE_ALLFRAG = 0x8 + RTAX_FEATURE_ECN = 0x1 + RTAX_FEATURE_MASK = 0xf + RTAX_FEATURE_SACK = 0x2 + RTAX_FEATURE_TIMESTAMP = 0x4 + RTAX_HOPLIMIT = 0xa + RTAX_INITCWND = 0xb + RTAX_INITRWND = 0xe + RTAX_LOCK = 0x1 + RTAX_MAX = 0x11 + RTAX_MTU = 0x2 + RTAX_QUICKACK = 0xf + RTAX_REORDERING = 0x9 + RTAX_RTO_MIN = 0xd + RTAX_RTT = 0x4 + RTAX_RTTVAR = 0x5 + RTAX_SSTHRESH = 0x6 + RTAX_UNSPEC = 0x0 + RTAX_WINDOW = 0x3 + RTA_ALIGNTO = 0x4 + RTA_MAX = 0x1d + RTCF_DIRECTSRC = 0x4000000 + RTCF_DOREDIRECT = 0x1000000 + RTCF_LOG = 0x2000000 + RTCF_MASQ = 0x400000 + RTCF_NAT = 0x800000 + RTCF_VALVE = 0x200000 + RTC_AF = 0x20 + RTC_AIE_OFF = 0x20007002 + RTC_AIE_ON = 0x20007001 + RTC_ALM_READ = 0x40247008 + RTC_ALM_SET = 0x80247007 + RTC_EPOCH_READ = 0x4008700d + RTC_EPOCH_SET = 0x8008700e + RTC_IRQF = 0x80 + RTC_IRQP_READ = 0x4008700b + RTC_IRQP_SET = 0x8008700c + RTC_MAX_FREQ = 0x2000 + RTC_PF = 0x40 + RTC_PIE_OFF = 0x20007006 + RTC_PIE_ON = 0x20007005 + RTC_PLL_GET = 0x40207011 + RTC_PLL_SET = 0x80207012 + RTC_RD_TIME = 0x40247009 + RTC_SET_TIME = 0x8024700a + RTC_UF = 0x10 + RTC_UIE_OFF = 0x20007004 + RTC_UIE_ON = 0x20007003 + RTC_VL_CLR = 0x20007014 + RTC_VL_READ = 0x40047013 + RTC_WIE_OFF = 0x20007010 + RTC_WIE_ON = 0x2000700f + RTC_WKALM_RD = 0x40287010 + RTC_WKALM_SET = 0x8028700f + RTF_ADDRCLASSMASK = 0xf8000000 + RTF_ADDRCONF = 0x40000 + RTF_ALLONLINK = 0x20000 + RTF_BROADCAST = 0x10000000 + RTF_CACHE = 0x1000000 + RTF_DEFAULT = 0x10000 + RTF_DYNAMIC = 0x10 + RTF_FLOW = 0x2000000 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INTERFACE = 0x40000000 + RTF_IRTT = 0x100 + RTF_LINKRT = 0x100000 + RTF_LOCAL = 0x80000000 + RTF_MODIFIED = 0x20 + RTF_MSS = 0x40 + RTF_MTU = 0x40 + RTF_MULTICAST = 0x20000000 + RTF_NAT = 0x8000000 + RTF_NOFORWARD = 0x1000 + RTF_NONEXTHOP = 0x200000 + RTF_NOPMTUDISC = 0x4000 + RTF_POLICY = 0x4000000 + RTF_REINSTATE = 0x8 + RTF_REJECT = 0x200 + RTF_STATIC = 0x400 + RTF_THROW = 0x2000 + RTF_UP = 0x1 + RTF_WINDOW = 0x80 + RTF_XRESOLVE = 0x800 + RTM_BASE = 0x10 + RTM_DELACTION = 0x31 + RTM_DELADDR = 0x15 + RTM_DELADDRLABEL = 0x49 + RTM_DELCHAIN = 0x65 + RTM_DELLINK = 0x11 + RTM_DELMDB = 0x55 + RTM_DELNEIGH = 0x1d + RTM_DELNETCONF = 0x51 + RTM_DELNSID = 0x59 + RTM_DELQDISC = 0x25 + RTM_DELROUTE = 0x19 + RTM_DELRULE = 0x21 + RTM_DELTCLASS = 0x29 + RTM_DELTFILTER = 0x2d + RTM_F_CLONED = 0x200 + RTM_F_EQUALIZE = 0x400 + RTM_F_FIB_MATCH = 0x2000 + RTM_F_LOOKUP_TABLE = 0x1000 + RTM_F_NOTIFY = 0x100 + RTM_F_PREFIX = 0x800 + RTM_GETACTION = 0x32 + RTM_GETADDR = 0x16 + RTM_GETADDRLABEL = 0x4a + RTM_GETANYCAST = 0x3e + RTM_GETCHAIN = 0x66 + RTM_GETDCB = 0x4e + RTM_GETLINK = 0x12 + RTM_GETMDB = 0x56 + RTM_GETMULTICAST = 0x3a + RTM_GETNEIGH = 0x1e + RTM_GETNEIGHTBL = 0x42 + RTM_GETNETCONF = 0x52 + RTM_GETNSID = 0x5a + RTM_GETQDISC = 0x26 + RTM_GETROUTE = 0x1a + RTM_GETRULE = 0x22 + RTM_GETSTATS = 0x5e + RTM_GETTCLASS = 0x2a + RTM_GETTFILTER = 0x2e + RTM_MAX = 0x67 + RTM_NEWACTION = 0x30 + RTM_NEWADDR = 0x14 + RTM_NEWADDRLABEL = 0x48 + RTM_NEWCACHEREPORT = 0x60 + RTM_NEWCHAIN = 0x64 + RTM_NEWLINK = 0x10 + RTM_NEWMDB = 0x54 + RTM_NEWNDUSEROPT = 0x44 + RTM_NEWNEIGH = 0x1c + RTM_NEWNEIGHTBL = 0x40 + RTM_NEWNETCONF = 0x50 + RTM_NEWNSID = 0x58 + RTM_NEWPREFIX = 0x34 + RTM_NEWQDISC = 0x24 + RTM_NEWROUTE = 0x18 + RTM_NEWRULE = 0x20 + RTM_NEWSTATS = 0x5c + RTM_NEWTCLASS = 0x28 + RTM_NEWTFILTER = 0x2c + RTM_NR_FAMILIES = 0x16 + RTM_NR_MSGTYPES = 0x58 + RTM_SETDCB = 0x4f + RTM_SETLINK = 0x13 + RTM_SETNEIGHTBL = 0x43 + RTNH_ALIGNTO = 0x4 + RTNH_COMPARE_MASK = 0x19 + RTNH_F_DEAD = 0x1 + RTNH_F_LINKDOWN = 0x10 + RTNH_F_OFFLOAD = 0x8 + RTNH_F_ONLINK = 0x4 + RTNH_F_PERVASIVE = 0x2 + RTNH_F_UNRESOLVED = 0x20 + RTN_MAX = 0xb + RTPROT_BABEL = 0x2a + RTPROT_BGP = 0xba + RTPROT_BIRD = 0xc + RTPROT_BOOT = 0x3 + RTPROT_DHCP = 0x10 + RTPROT_DNROUTED = 0xd + RTPROT_EIGRP = 0xc0 + RTPROT_GATED = 0x8 + RTPROT_ISIS = 0xbb + RTPROT_KERNEL = 0x2 + RTPROT_MROUTED = 0x11 + RTPROT_MRT = 0xa + RTPROT_NTK = 0xf + RTPROT_OSPF = 0xbc + RTPROT_RA = 0x9 + RTPROT_REDIRECT = 0x1 + RTPROT_RIP = 0xbd + RTPROT_STATIC = 0x4 + RTPROT_UNSPEC = 0x0 + RTPROT_XORP = 0xe + RTPROT_ZEBRA = 0xb + RT_CLASS_DEFAULT = 0xfd + RT_CLASS_LOCAL = 0xff + RT_CLASS_MAIN = 0xfe + RT_CLASS_MAX = 0xff + RT_CLASS_UNSPEC = 0x0 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_CREDENTIALS = 0x2 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x1d + SCM_TIMESTAMPING = 0x23 + SCM_TIMESTAMPING_OPT_STATS = 0x38 + SCM_TIMESTAMPING_PKTINFO = 0x3c + SCM_TIMESTAMPNS = 0x21 + SCM_TXTIME = 0x3f + SCM_WIFI_STATUS = 0x25 + SC_LOG_FLUSH = 0x100000 + SECCOMP_MODE_DISABLED = 0x0 + SECCOMP_MODE_FILTER = 0x2 + SECCOMP_MODE_STRICT = 0x1 + SECURITYFS_MAGIC = 0x73636673 + SELINUX_MAGIC = 0xf97cff8c + SFD_CLOEXEC = 0x400000 + SFD_NONBLOCK = 0x4000 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDDLCI = 0x8980 + SIOCADDMULTI = 0x8931 + SIOCADDRT = 0x890b + SIOCATMARK = 0x8905 + SIOCBONDCHANGEACTIVE = 0x8995 + SIOCBONDENSLAVE = 0x8990 + SIOCBONDINFOQUERY = 0x8994 + SIOCBONDRELEASE = 0x8991 + SIOCBONDSETHWADDR = 0x8992 + SIOCBONDSLAVEINFOQUERY = 0x8993 + SIOCBRADDBR = 0x89a0 + SIOCBRADDIF = 0x89a2 + SIOCBRDELBR = 0x89a1 + SIOCBRDELIF = 0x89a3 + SIOCDARP = 0x8953 + SIOCDELDLCI = 0x8981 + SIOCDELMULTI = 0x8932 + SIOCDELRT = 0x890c + SIOCDEVPRIVATE = 0x89f0 + SIOCDIFADDR = 0x8936 + SIOCDRARP = 0x8960 + SIOCETHTOOL = 0x8946 + SIOCGARP = 0x8954 + SIOCGHWTSTAMP = 0x89b1 + SIOCGIFADDR = 0x8915 + SIOCGIFBR = 0x8940 + SIOCGIFBRDADDR = 0x8919 + SIOCGIFCONF = 0x8912 + SIOCGIFCOUNT = 0x8938 + SIOCGIFDSTADDR = 0x8917 + SIOCGIFENCAP = 0x8925 + SIOCGIFFLAGS = 0x8913 + SIOCGIFHWADDR = 0x8927 + SIOCGIFINDEX = 0x8933 + SIOCGIFMAP = 0x8970 + SIOCGIFMEM = 0x891f + SIOCGIFMETRIC = 0x891d + SIOCGIFMTU = 0x8921 + SIOCGIFNAME = 0x8910 + SIOCGIFNETMASK = 0x891b + SIOCGIFPFLAGS = 0x8935 + SIOCGIFSLAVE = 0x8929 + SIOCGIFTXQLEN = 0x8942 + SIOCGIFVLAN = 0x8982 + SIOCGMIIPHY = 0x8947 + SIOCGMIIREG = 0x8948 + SIOCGPGRP = 0x8904 + SIOCGPPPCSTATS = 0x89f2 + SIOCGPPPSTATS = 0x89f0 + SIOCGPPPVER = 0x89f1 + SIOCGRARP = 0x8961 + SIOCGSKNS = 0x894c + SIOCGSTAMP = 0x8906 + SIOCGSTAMPNS = 0x8907 + SIOCINQ = 0x4004667f + SIOCOUTQ = 0x40047473 + SIOCOUTQNSD = 0x894b + SIOCPROTOPRIVATE = 0x89e0 + SIOCRTMSG = 0x890d + SIOCSARP = 0x8955 + SIOCSHWTSTAMP = 0x89b0 + SIOCSIFADDR = 0x8916 + SIOCSIFBR = 0x8941 + SIOCSIFBRDADDR = 0x891a + SIOCSIFDSTADDR = 0x8918 + SIOCSIFENCAP = 0x8926 + SIOCSIFFLAGS = 0x8914 + SIOCSIFHWADDR = 0x8924 + SIOCSIFHWBROADCAST = 0x8937 + SIOCSIFLINK = 0x8911 + SIOCSIFMAP = 0x8971 + SIOCSIFMEM = 0x8920 + SIOCSIFMETRIC = 0x891e + SIOCSIFMTU = 0x8922 + SIOCSIFNAME = 0x8923 + SIOCSIFNETMASK = 0x891c + SIOCSIFPFLAGS = 0x8934 + SIOCSIFSLAVE = 0x8930 + SIOCSIFTXQLEN = 0x8943 + SIOCSIFVLAN = 0x8983 + SIOCSMIIREG = 0x8949 + SIOCSPGRP = 0x8902 + SIOCSRARP = 0x8962 + SIOCWANDEV = 0x894a + SMACK_MAGIC = 0x43415d53 + SMART_AUTOSAVE = 0xd2 + SMART_AUTO_OFFLINE = 0xdb + SMART_DISABLE = 0xd9 + SMART_ENABLE = 0xd8 + SMART_HCYL_PASS = 0xc2 + SMART_IMMEDIATE_OFFLINE = 0xd4 + SMART_LCYL_PASS = 0x4f + SMART_READ_LOG_SECTOR = 0xd5 + SMART_READ_THRESHOLDS = 0xd1 + SMART_READ_VALUES = 0xd0 + SMART_SAVE = 0xd3 + SMART_STATUS = 0xda + SMART_WRITE_LOG_SECTOR = 0xd6 + SMART_WRITE_THRESHOLDS = 0xd7 + SMB_SUPER_MAGIC = 0x517b + SOCKFS_MAGIC = 0x534f434b + SOCK_CLOEXEC = 0x400000 + SOCK_DCCP = 0x6 + SOCK_DGRAM = 0x2 + SOCK_IOC_TYPE = 0x89 + SOCK_NONBLOCK = 0x4000 + SOCK_PACKET = 0xa + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_AAL = 0x109 + SOL_ALG = 0x117 + SOL_ATM = 0x108 + SOL_CAIF = 0x116 + SOL_CAN_BASE = 0x64 + SOL_DCCP = 0x10d + SOL_DECNET = 0x105 + SOL_ICMPV6 = 0x3a + SOL_IP = 0x0 + SOL_IPV6 = 0x29 + SOL_IRDA = 0x10a + SOL_IUCV = 0x115 + SOL_KCM = 0x119 + SOL_LLC = 0x10c + SOL_NETBEUI = 0x10b + SOL_NETLINK = 0x10e + SOL_NFC = 0x118 + SOL_PACKET = 0x107 + SOL_PNPIPE = 0x113 + SOL_PPPOL2TP = 0x111 + SOL_RAW = 0xff + SOL_RDS = 0x114 + SOL_RXRPC = 0x110 + SOL_SOCKET = 0xffff + SOL_TCP = 0x6 + SOL_TIPC = 0x10f + SOL_TLS = 0x11a + SOL_X25 = 0x106 + SOL_XDP = 0x11b + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x8000 + SO_ATTACH_BPF = 0x34 + SO_ATTACH_FILTER = 0x1a + SO_ATTACH_REUSEPORT_CBPF = 0x35 + SO_ATTACH_REUSEPORT_EBPF = 0x36 + SO_BINDTODEVICE = 0xd + SO_BPF_EXTENSIONS = 0x32 + SO_BROADCAST = 0x20 + SO_BSDCOMPAT = 0x400 + SO_BUSY_POLL = 0x30 + SO_CNX_ADVICE = 0x37 + SO_COOKIE = 0x3b + SO_DEBUG = 0x1 + SO_DETACH_BPF = 0x1b + SO_DETACH_FILTER = 0x1b + SO_DOMAIN = 0x1029 + SO_DONTROUTE = 0x10 + SO_EE_CODE_TXTIME_INVALID_PARAM = 0x1 + SO_EE_CODE_TXTIME_MISSED = 0x2 + SO_EE_CODE_ZEROCOPY_COPIED = 0x1 + SO_EE_ORIGIN_ICMP = 0x2 + SO_EE_ORIGIN_ICMP6 = 0x3 + SO_EE_ORIGIN_LOCAL = 0x1 + SO_EE_ORIGIN_NONE = 0x0 + SO_EE_ORIGIN_TIMESTAMPING = 0x4 + SO_EE_ORIGIN_TXSTATUS = 0x4 + SO_EE_ORIGIN_TXTIME = 0x6 + SO_EE_ORIGIN_ZEROCOPY = 0x5 + SO_ERROR = 0x1007 + SO_GET_FILTER = 0x1a + SO_INCOMING_CPU = 0x33 + SO_INCOMING_NAPI_ID = 0x3a + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOCK_FILTER = 0x28 + SO_MARK = 0x22 + SO_MAX_PACING_RATE = 0x31 + SO_MEMINFO = 0x39 + SO_NOFCS = 0x27 + SO_NO_CHECK = 0xb + SO_OOBINLINE = 0x100 + SO_PASSCRED = 0x2 + SO_PASSSEC = 0x1f + SO_PEEK_OFF = 0x26 + SO_PEERCRED = 0x40 + SO_PEERGROUPS = 0x3d + SO_PEERNAME = 0x1c + SO_PEERSEC = 0x1e + SO_PRIORITY = 0xc + SO_PROTOCOL = 0x1028 + SO_RCVBUF = 0x1002 + SO_RCVBUFFORCE = 0x100b + SO_RCVLOWAT = 0x800 + SO_RCVTIMEO = 0x2000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RXQ_OVFL = 0x24 + SO_SECURITY_AUTHENTICATION = 0x5001 + SO_SECURITY_ENCRYPTION_NETWORK = 0x5004 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002 + SO_SELECT_ERR_QUEUE = 0x29 + SO_SNDBUF = 0x1001 + SO_SNDBUFFORCE = 0x100a + SO_SNDLOWAT = 0x1000 + SO_SNDTIMEO = 0x4000 + SO_TIMESTAMP = 0x1d + SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPNS = 0x21 + SO_TXTIME = 0x3f + SO_TYPE = 0x1008 + SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 + SO_VM_SOCKETS_BUFFER_MIN_SIZE = 0x1 + SO_VM_SOCKETS_BUFFER_SIZE = 0x0 + SO_VM_SOCKETS_CONNECT_TIMEOUT = 0x6 + SO_VM_SOCKETS_NONBLOCK_TXRX = 0x7 + SO_VM_SOCKETS_PEER_HOST_VM_ID = 0x3 + SO_VM_SOCKETS_TRUSTED = 0x5 + SO_WIFI_STATUS = 0x25 + SO_ZEROCOPY = 0x3e + SPLICE_F_GIFT = 0x8 + SPLICE_F_MORE = 0x4 + SPLICE_F_MOVE = 0x1 + SPLICE_F_NONBLOCK = 0x2 + SQUASHFS_MAGIC = 0x73717368 + STACK_END_MAGIC = 0x57ac6e9d + STATX_ALL = 0xfff + STATX_ATIME = 0x20 + STATX_ATTR_APPEND = 0x20 + STATX_ATTR_AUTOMOUNT = 0x1000 + STATX_ATTR_COMPRESSED = 0x4 + STATX_ATTR_ENCRYPTED = 0x800 + STATX_ATTR_IMMUTABLE = 0x10 + STATX_ATTR_NODUMP = 0x40 + STATX_BASIC_STATS = 0x7ff + STATX_BLOCKS = 0x400 + STATX_BTIME = 0x800 + STATX_CTIME = 0x80 + STATX_GID = 0x10 + STATX_INO = 0x100 + STATX_MODE = 0x2 + STATX_MTIME = 0x40 + STATX_NLINK = 0x4 + STATX_SIZE = 0x200 + STATX_TYPE = 0x1 + STATX_UID = 0x8 + STATX__RESERVED = 0x80000000 + SYNC_FILE_RANGE_WAIT_AFTER = 0x4 + SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 + SYNC_FILE_RANGE_WRITE = 0x2 + SYSFS_MAGIC = 0x62656572 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TASKSTATS_CMD_ATTR_MAX = 0x4 + TASKSTATS_CMD_MAX = 0x2 + TASKSTATS_GENL_NAME = "TASKSTATS" + TASKSTATS_GENL_VERSION = 0x1 + TASKSTATS_TYPE_MAX = 0x6 + TASKSTATS_VERSION = 0x9 + TCFLSH = 0x20005407 + TCGETA = 0x40125401 + TCGETS = 0x40245408 + TCGETS2 = 0x402c540c + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_CC_INFO = 0x1a + TCP_CM_INQ = 0x24 + TCP_CONGESTION = 0xd + TCP_COOKIE_IN_ALWAYS = 0x1 + TCP_COOKIE_MAX = 0x10 + TCP_COOKIE_MIN = 0x8 + TCP_COOKIE_OUT_NEVER = 0x2 + TCP_COOKIE_PAIR_SIZE = 0x20 + TCP_COOKIE_TRANSACTIONS = 0xf + TCP_CORK = 0x3 + TCP_DEFER_ACCEPT = 0x9 + TCP_FASTOPEN = 0x17 + TCP_FASTOPEN_CONNECT = 0x1e + TCP_FASTOPEN_KEY = 0x21 + TCP_FASTOPEN_NO_COOKIE = 0x22 + TCP_INFO = 0xb + TCP_INQ = 0x24 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x4 + TCP_KEEPINTVL = 0x5 + TCP_LINGER2 = 0x8 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0xe + TCP_MD5SIG_EXT = 0x20 + TCP_MD5SIG_FLAG_PREFIX = 0x1 + TCP_MD5SIG_MAXKEYLEN = 0x50 + TCP_MSS = 0x200 + TCP_MSS_DEFAULT = 0x218 + TCP_MSS_DESIRED = 0x4c4 + TCP_NODELAY = 0x1 + TCP_NOTSENT_LOWAT = 0x19 + TCP_QUEUE_SEQ = 0x15 + TCP_QUICKACK = 0xc + TCP_REPAIR = 0x13 + TCP_REPAIR_OFF = 0x0 + TCP_REPAIR_OFF_NO_WP = -0x1 + TCP_REPAIR_ON = 0x1 + TCP_REPAIR_OPTIONS = 0x16 + TCP_REPAIR_QUEUE = 0x14 + TCP_REPAIR_WINDOW = 0x1d + TCP_SAVED_SYN = 0x1c + TCP_SAVE_SYN = 0x1b + TCP_SYNCNT = 0x7 + TCP_S_DATA_IN = 0x4 + TCP_S_DATA_OUT = 0x8 + TCP_THIN_DUPACK = 0x11 + TCP_THIN_LINEAR_TIMEOUTS = 0x10 + TCP_TIMESTAMP = 0x18 + TCP_ULP = 0x1f + TCP_USER_TIMEOUT = 0x12 + TCP_WINDOW_CLAMP = 0xa + TCP_ZEROCOPY_RECEIVE = 0x23 + TCSAFLUSH = 0x2 + TCSBRK = 0x20005405 + TCSBRKP = 0x5425 + TCSETA = 0x80125402 + TCSETAF = 0x80125404 + TCSETAW = 0x80125403 + TCSETS = 0x80245409 + TCSETS2 = 0x802c540d + TCSETSF = 0x8024540b + TCSETSF2 = 0x802c540f + TCSETSW = 0x8024540a + TCSETSW2 = 0x802c540e + TCXONC = 0x20005406 + TIMER_ABSTIME = 0x1 + TIOCCBRK = 0x2000747a + TIOCCONS = 0x20007424 + TIOCEXCL = 0x2000740d + TIOCGDEV = 0x40045432 + TIOCGETD = 0x40047400 + TIOCGEXCL = 0x40045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x40285443 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x40047483 + TIOCGPKT = 0x40045438 + TIOCGPTLCK = 0x40045439 + TIOCGPTN = 0x40047486 + TIOCGPTPEER = 0x20007489 + TIOCGRS485 = 0x40205441 + TIOCGSERIAL = 0x541e + TIOCGSID = 0x40047485 + TIOCGSOFTCAR = 0x40047464 + TIOCGWINSZ = 0x40087468 + TIOCINQ = 0x4004667f + TIOCLINUX = 0x541c + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMIWAIT = 0x545c + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007484 + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSETD = 0x80047401 + TIOCSIG = 0x80047488 + TIOCSISO7816 = 0xc0285444 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x80047482 + TIOCSPTLCK = 0x80047487 + TIOCSRS485 = 0xc0205442 + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x80047465 + TIOCSTART = 0x2000746e + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCVHANGUP = 0x20005437 + TMPFS_MAGIC = 0x1021994 + TOSTOP = 0x100 + TPACKET_ALIGNMENT = 0x10 + TPACKET_HDRLEN = 0x34 + TP_STATUS_AVAILABLE = 0x0 + TP_STATUS_BLK_TMO = 0x20 + TP_STATUS_COPY = 0x2 + TP_STATUS_CSUMNOTREADY = 0x8 + TP_STATUS_CSUM_VALID = 0x80 + TP_STATUS_KERNEL = 0x0 + TP_STATUS_LOSING = 0x4 + TP_STATUS_SENDING = 0x2 + TP_STATUS_SEND_REQUEST = 0x1 + TP_STATUS_TS_RAW_HARDWARE = -0x80000000 + TP_STATUS_TS_SOFTWARE = 0x20000000 + TP_STATUS_TS_SYS_HARDWARE = 0x40000000 + TP_STATUS_USER = 0x1 + TP_STATUS_VLAN_TPID_VALID = 0x40 + TP_STATUS_VLAN_VALID = 0x10 + TP_STATUS_WRONG_FORMAT = 0x4 + TRACEFS_MAGIC = 0x74726163 + TS_COMM_LEN = 0x20 + TUNATTACHFILTER = 0x801054d5 + TUNDETACHFILTER = 0x801054d6 + TUNGETFEATURES = 0x400454cf + TUNGETFILTER = 0x401054db + TUNGETIFF = 0x400454d2 + TUNGETSNDBUF = 0x400454d3 + TUNGETVNETBE = 0x400454df + TUNGETVNETHDRSZ = 0x400454d7 + TUNGETVNETLE = 0x400454dd + TUNSETCARRIER = 0x800454e2 + TUNSETDEBUG = 0x800454c9 + TUNSETFILTEREBPF = 0x400454e1 + TUNSETGROUP = 0x800454ce + TUNSETIFF = 0x800454ca + TUNSETIFINDEX = 0x800454da + TUNSETLINK = 0x800454cd + TUNSETNOCSUM = 0x800454c8 + TUNSETOFFLOAD = 0x800454d0 + TUNSETOWNER = 0x800454cc + TUNSETPERSIST = 0x800454cb + TUNSETQUEUE = 0x800454d9 + TUNSETSNDBUF = 0x800454d4 + TUNSETSTEERINGEBPF = 0x400454e0 + TUNSETTXFILTER = 0x800454d1 + TUNSETVNETBE = 0x800454de + TUNSETVNETHDRSZ = 0x800454d8 + TUNSETVNETLE = 0x800454dc + UBI_IOCATT = 0x80186f40 + UBI_IOCDET = 0x80046f41 + UBI_IOCEBCH = 0x80044f02 + UBI_IOCEBER = 0x80044f01 + UBI_IOCEBISMAP = 0x40044f05 + UBI_IOCEBMAP = 0x80084f03 + UBI_IOCEBUNMAP = 0x80044f04 + UBI_IOCMKVOL = 0x80986f00 + UBI_IOCRMVOL = 0x80046f01 + UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRSVOL = 0x800c6f02 + UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCVOLCRBLK = 0x80804f07 + UBI_IOCVOLRMBLK = 0x20004f08 + UBI_IOCVOLUP = 0x80084f00 + UDF_SUPER_MAGIC = 0x15013346 + UMOUNT_NOFOLLOW = 0x8 + USBDEVICE_SUPER_MAGIC = 0x9fa2 + UTIME_NOW = 0x3fffffff + UTIME_OMIT = 0x3ffffffe + V9FS_MAGIC = 0x1021997 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VERASE = 0x2 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMADDR_CID_ANY = 0xffffffff + VMADDR_CID_HOST = 0x2 + VMADDR_CID_HYPERVISOR = 0x0 + VMADDR_CID_RESERVED = 0x1 + VMADDR_PORT_ANY = 0xffffffff + VMIN = 0x6 + VM_SOCKETS_INVALID_VERSION = 0xffffffff + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WALL = 0x40000000 + WCLONE = 0x80000000 + WCONTINUED = 0x8 + WDIOC_GETBOOTSTATUS = 0x40045702 + WDIOC_GETPRETIMEOUT = 0x40045709 + WDIOC_GETSTATUS = 0x40045701 + WDIOC_GETSUPPORT = 0x40285700 + WDIOC_GETTEMP = 0x40045703 + WDIOC_GETTIMELEFT = 0x4004570a + WDIOC_GETTIMEOUT = 0x40045707 + WDIOC_KEEPALIVE = 0x40045705 + WDIOC_SETOPTIONS = 0x40045704 + WDIOC_SETPRETIMEOUT = 0xc0045708 + WDIOC_SETTIMEOUT = 0xc0045706 + WEXITED = 0x4 + WIN_ACKMEDIACHANGE = 0xdb + WIN_CHECKPOWERMODE1 = 0xe5 + WIN_CHECKPOWERMODE2 = 0x98 + WIN_DEVICE_RESET = 0x8 + WIN_DIAGNOSE = 0x90 + WIN_DOORLOCK = 0xde + WIN_DOORUNLOCK = 0xdf + WIN_DOWNLOAD_MICROCODE = 0x92 + WIN_FLUSH_CACHE = 0xe7 + WIN_FLUSH_CACHE_EXT = 0xea + WIN_FORMAT = 0x50 + WIN_GETMEDIASTATUS = 0xda + WIN_IDENTIFY = 0xec + WIN_IDENTIFY_DMA = 0xee + WIN_IDLEIMMEDIATE = 0xe1 + WIN_INIT = 0x60 + WIN_MEDIAEJECT = 0xed + WIN_MULTREAD = 0xc4 + WIN_MULTREAD_EXT = 0x29 + WIN_MULTWRITE = 0xc5 + WIN_MULTWRITE_EXT = 0x39 + WIN_NOP = 0x0 + WIN_PACKETCMD = 0xa0 + WIN_PIDENTIFY = 0xa1 + WIN_POSTBOOT = 0xdc + WIN_PREBOOT = 0xdd + WIN_QUEUED_SERVICE = 0xa2 + WIN_READ = 0x20 + WIN_READDMA = 0xc8 + WIN_READDMA_EXT = 0x25 + WIN_READDMA_ONCE = 0xc9 + WIN_READDMA_QUEUED = 0xc7 + WIN_READDMA_QUEUED_EXT = 0x26 + WIN_READ_BUFFER = 0xe4 + WIN_READ_EXT = 0x24 + WIN_READ_LONG = 0x22 + WIN_READ_LONG_ONCE = 0x23 + WIN_READ_NATIVE_MAX = 0xf8 + WIN_READ_NATIVE_MAX_EXT = 0x27 + WIN_READ_ONCE = 0x21 + WIN_RECAL = 0x10 + WIN_RESTORE = 0x10 + WIN_SECURITY_DISABLE = 0xf6 + WIN_SECURITY_ERASE_PREPARE = 0xf3 + WIN_SECURITY_ERASE_UNIT = 0xf4 + WIN_SECURITY_FREEZE_LOCK = 0xf5 + WIN_SECURITY_SET_PASS = 0xf1 + WIN_SECURITY_UNLOCK = 0xf2 + WIN_SEEK = 0x70 + WIN_SETFEATURES = 0xef + WIN_SETIDLE1 = 0xe3 + WIN_SETIDLE2 = 0x97 + WIN_SETMULT = 0xc6 + WIN_SET_MAX = 0xf9 + WIN_SET_MAX_EXT = 0x37 + WIN_SLEEPNOW1 = 0xe6 + WIN_SLEEPNOW2 = 0x99 + WIN_SMART = 0xb0 + WIN_SPECIFY = 0x91 + WIN_SRST = 0x8 + WIN_STANDBY = 0xe2 + WIN_STANDBY2 = 0x96 + WIN_STANDBYNOW1 = 0xe0 + WIN_STANDBYNOW2 = 0x94 + WIN_VERIFY = 0x40 + WIN_VERIFY_EXT = 0x42 + WIN_VERIFY_ONCE = 0x41 + WIN_WRITE = 0x30 + WIN_WRITEDMA = 0xca + WIN_WRITEDMA_EXT = 0x35 + WIN_WRITEDMA_ONCE = 0xcb + WIN_WRITEDMA_QUEUED = 0xcc + WIN_WRITEDMA_QUEUED_EXT = 0x36 + WIN_WRITE_BUFFER = 0xe8 + WIN_WRITE_EXT = 0x34 + WIN_WRITE_LONG = 0x32 + WIN_WRITE_LONG_ONCE = 0x33 + WIN_WRITE_ONCE = 0x31 + WIN_WRITE_SAME = 0xe9 + WIN_WRITE_VERIFY = 0x3c + WNOHANG = 0x1 + WNOTHREAD = 0x20000000 + WNOWAIT = 0x1000000 + WORDSIZE = 0x40 + WSTOPPED = 0x2 + WUNTRACED = 0x2 + XATTR_CREATE = 0x1 + XATTR_REPLACE = 0x2 + XCASE = 0x4 + XDP_COPY = 0x2 + XDP_FLAGS_DRV_MODE = 0x4 + XDP_FLAGS_HW_MODE = 0x8 + XDP_FLAGS_MASK = 0xf + XDP_FLAGS_MODES = 0xe + XDP_FLAGS_SKB_MODE = 0x2 + XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 + XDP_MMAP_OFFSETS = 0x1 + XDP_PGOFF_RX_RING = 0x0 + XDP_PGOFF_TX_RING = 0x80000000 + XDP_RX_RING = 0x2 + XDP_SHARED_UMEM = 0x1 + XDP_STATISTICS = 0x7 + XDP_TX_RING = 0x3 + XDP_UMEM_COMPLETION_RING = 0x6 + XDP_UMEM_FILL_RING = 0x5 + XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 + XDP_UMEM_PGOFF_FILL_RING = 0x100000000 + XDP_UMEM_REG = 0x4 + XDP_ZEROCOPY = 0x4 + XENFS_SUPER_MAGIC = 0xabba1974 + XFS_SUPER_MAGIC = 0x58465342 + XTABS = 0x1800 + ZSMALLOC_MAGIC = 0x58295829 + __TIOCFLUSH = 0x80047410 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EADV = syscall.Errno(0x53) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x25) + EBADE = syscall.Errno(0x66) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x5d) + EBADMSG = syscall.Errno(0x4c) + EBADR = syscall.Errno(0x67) + EBADRQC = syscall.Errno(0x6a) + EBADSLT = syscall.Errno(0x6b) + EBFONT = syscall.Errno(0x6d) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x7f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x5e) + ECOMM = syscall.Errno(0x55) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0x4e) + EDEADLOCK = syscall.Errno(0x6c) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOTDOT = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EHWPOISON = syscall.Errno(0x87) + EIDRM = syscall.Errno(0x4d) + EILSEQ = syscall.Errno(0x7a) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x81) + EKEYREJECTED = syscall.Errno(0x83) + EKEYREVOKED = syscall.Errno(0x82) + EL2HLT = syscall.Errno(0x65) + EL2NSYNC = syscall.Errno(0x5f) + EL3HLT = syscall.Errno(0x60) + EL3RST = syscall.Errno(0x61) + ELIBACC = syscall.Errno(0x72) + ELIBBAD = syscall.Errno(0x70) + ELIBEXEC = syscall.Errno(0x6e) + ELIBMAX = syscall.Errno(0x7b) + ELIBSCN = syscall.Errno(0x7c) + ELNRNG = syscall.Errno(0x62) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x7e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x57) + ENAMETOOLONG = syscall.Errno(0x3f) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x69) + ENOBUFS = syscall.Errno(0x37) + ENOCSI = syscall.Errno(0x64) + ENODATA = syscall.Errno(0x6f) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOKEY = syscall.Errno(0x80) + ENOLCK = syscall.Errno(0x4f) + ENOLINK = syscall.Errno(0x52) + ENOMEDIUM = syscall.Errno(0x7d) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x4b) + ENONET = syscall.Errno(0x50) + ENOPKG = syscall.Errno(0x71) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x4a) + ENOSTR = syscall.Errno(0x48) + ENOSYS = syscall.Errno(0x5a) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x85) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x73) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x5c) + EOWNERDEAD = syscall.Errno(0x84) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROTO = syscall.Errno(0x56) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x59) + EREMOTE = syscall.Errno(0x47) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x74) + ERFKILL = syscall.Errno(0x86) + EROFS = syscall.Errno(0x1e) + ERREMOTE = syscall.Errno(0x51) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x54) + ESTALE = syscall.Errno(0x46) + ESTRPIPE = syscall.Errno(0x5b) + ETIME = syscall.Errno(0x49) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x63) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x68) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x1d) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x17) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1d) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "ENOTSUP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "cannot assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "transport endpoint is already connected"}, + {57, "ENOTCONN", "transport endpoint is not connected"}, + {58, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {59, "ETOOMANYREFS", "too many references: cannot splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale file handle"}, + {71, "EREMOTE", "object is remote"}, + {72, "ENOSTR", "device not a stream"}, + {73, "ETIME", "timer expired"}, + {74, "ENOSR", "out of streams resources"}, + {75, "ENOMSG", "no message of desired type"}, + {76, "EBADMSG", "bad message"}, + {77, "EIDRM", "identifier removed"}, + {78, "EDEADLK", "resource deadlock avoided"}, + {79, "ENOLCK", "no locks available"}, + {80, "ENONET", "machine is not on the network"}, + {81, "ERREMOTE", "unknown error 81"}, + {82, "ENOLINK", "link has been severed"}, + {83, "EADV", "advertise error"}, + {84, "ESRMNT", "srmount error"}, + {85, "ECOMM", "communication error on send"}, + {86, "EPROTO", "protocol error"}, + {87, "EMULTIHOP", "multihop attempted"}, + {88, "EDOTDOT", "RFS specific error"}, + {89, "EREMCHG", "remote address changed"}, + {90, "ENOSYS", "function not implemented"}, + {91, "ESTRPIPE", "streams pipe error"}, + {92, "EOVERFLOW", "value too large for defined data type"}, + {93, "EBADFD", "file descriptor in bad state"}, + {94, "ECHRNG", "channel number out of range"}, + {95, "EL2NSYNC", "level 2 not synchronized"}, + {96, "EL3HLT", "level 3 halted"}, + {97, "EL3RST", "level 3 reset"}, + {98, "ELNRNG", "link number out of range"}, + {99, "EUNATCH", "protocol driver not attached"}, + {100, "ENOCSI", "no CSI structure available"}, + {101, "EL2HLT", "level 2 halted"}, + {102, "EBADE", "invalid exchange"}, + {103, "EBADR", "invalid request descriptor"}, + {104, "EXFULL", "exchange full"}, + {105, "ENOANO", "no anode"}, + {106, "EBADRQC", "invalid request code"}, + {107, "EBADSLT", "invalid slot"}, + {108, "EDEADLOCK", "file locking deadlock error"}, + {109, "EBFONT", "bad font file format"}, + {110, "ELIBEXEC", "cannot exec a shared library directly"}, + {111, "ENODATA", "no data available"}, + {112, "ELIBBAD", "accessing a corrupted shared library"}, + {113, "ENOPKG", "package not installed"}, + {114, "ELIBACC", "can not access a needed shared library"}, + {115, "ENOTUNIQ", "name not unique on network"}, + {116, "ERESTART", "interrupted system call should be restarted"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {123, "ELIBMAX", "attempting to link in too many shared libraries"}, + {124, "ELIBSCN", ".lib section in a.out corrupted"}, + {125, "ENOMEDIUM", "no medium found"}, + {126, "EMEDIUMTYPE", "wrong medium type"}, + {127, "ECANCELED", "operation canceled"}, + {128, "ENOKEY", "required key not available"}, + {129, "EKEYEXPIRED", "key has expired"}, + {130, "EKEYREVOKED", "key has been revoked"}, + {131, "EKEYREJECTED", "key was rejected by service"}, + {132, "EOWNERDEAD", "owner died"}, + {133, "ENOTRECOVERABLE", "state not recoverable"}, + {134, "ERFKILL", "operation not possible due to RF-kill"}, + {135, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGLOST", "power failure"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go new file mode 100644 index 0000000..78cc04e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go @@ -0,0 +1,1772 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + EN_SW_CTL_INF = 0x1000 + EN_SW_CTL_PREC = 0x300 + EN_SW_CTL_ROUND = 0xc00 + EN_SW_DATACHAIN = 0x80 + EN_SW_DENORM = 0x2 + EN_SW_INVOP = 0x1 + EN_SW_OVERFLOW = 0x8 + EN_SW_PRECLOSS = 0x20 + EN_SW_UNDERFLOW = 0x10 + EN_SW_ZERODIV = 0x4 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go new file mode 100644 index 0000000..92185e6 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go new file mode 100644 index 0000000..373ad45 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go @@ -0,0 +1,1751 @@ +// mkerrors.sh -marm +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -marm _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0084277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x400c427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x800c427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80084272 + BIOCSUDPF = 0x80084273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PRI_IOFLUSH = 0x7c + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8030720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8030720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc01c697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0946920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0086926 + SIOCGIFDATA = 0xc0946985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc01c6987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCINITIFADDR = 0xc0446984 + SIOCSDRVSPEC = 0x801c697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8094691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x801c6988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0946986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x400c7458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x48087446 + TIOCPTSNAME = 0x48087448 + TIOCRCVFRAME = 0x80047445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80047444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go new file mode 100644 index 0000000..fb6c604 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go @@ -0,0 +1,1762 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x1c + AF_BLUETOOTH = 0x1f + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_IEEE80211 = 0x20 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x23 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OROUTE = 0x11 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x22 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ARCNET = 0x7 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + ARPHRD_STRIP = 0x17 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427d + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104277 + BIOCGETIF = 0x4090426b + BIOCGFEEDBACK = 0x4004427c + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDLT = 0x80044276 + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8090426c + BIOCSFEEDBACK = 0x8004427d + BIOCSHDRCMPLT = 0x80044275 + BIOCSRTIMEOUT = 0x8010427a + BIOCSSEESENT = 0x80044279 + BIOCSTCPF = 0x80104272 + BIOCSUDPF = 0x80104273 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALIGNMENT32 = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLONE_CSIGNAL = 0xff + CLONE_FILES = 0x400 + CLONE_FS = 0x200 + CLONE_PID = 0x1000 + CLONE_PTRACE = 0x2000 + CLONE_SIGHAND = 0x800 + CLONE_VFORK = 0x4000 + CLONE_VM = 0x100 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + CTL_QUERY = -0x2 + DIOCBSFLUSH = 0x20006478 + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DECT = 0xdd + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_IPMB = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPNET = 0xe2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_WIHART = 0xdf + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMUL_LINUX = 0x1 + EMUL_LINUX32 = 0x5 + EMUL_MAXID = 0x6 + ETHERCAP_JUMBO_MTU = 0x4 + ETHERCAP_VLAN_HWTAGGING = 0x2 + ETHERCAP_VLAN_MTU = 0x1 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERMTU_JUMBO = 0x2328 + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOWPROTOCOLS = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_LEN = 0x5ee + ETHER_MAX_LEN_JUMBO = 0x233a + ETHER_MIN_LEN = 0x40 + ETHER_PPPOE_ENCAP_LEN = 0x8 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = 0x2 + EVFILT_PROC = 0x4 + EVFILT_READ = 0x0 + EVFILT_SIGNAL = 0x5 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = 0x6 + EVFILT_VNODE = 0x3 + EVFILT_WRITE = 0x1 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_CMD_START = 0x1 + EXTATTR_CMD_STOP = 0x2 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x100 + FLUSHO = 0x800000 + F_CLOSEM = 0xa + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xc + F_FSCTL = -0x80000000 + F_FSDIRMASK = 0x70000000 + F_FSIN = 0x10000000 + F_FSINOUT = 0x30000000 + F_FSOUT = 0x20000000 + F_FSPRIV = 0x8000 + F_FSVOID = 0x40000000 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETNOSIGPIPE = 0xd + F_GETOWN = 0x5 + F_MAXFD = 0xb + F_OK = 0x0 + F_PARAM_MASK = 0xfff + F_PARAM_MAX = 0xfff + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETNOSIGPIPE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8f52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf8 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IPV6_ICMP = 0x3a + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x34 + IPPROTO_MOBILE = 0x37 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPPROTO_VRRP = 0x70 + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_EF = 0x8000 + IP_ERRORMTU = 0x15 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x16 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0x14 + IP_MF = 0x2000 + IP_MINFRAGSIZE = 0x45 + IP_MINTTL = 0x18 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVTTL = 0x17 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ALIGNMENT_16MB = 0x18000000 + MAP_ALIGNMENT_1TB = 0x28000000 + MAP_ALIGNMENT_256TB = 0x30000000 + MAP_ALIGNMENT_4GB = 0x20000000 + MAP_ALIGNMENT_64KB = 0x10000000 + MAP_ALIGNMENT_64PB = 0x38000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DEFAULT = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_STACK = 0x2000 + MAP_TRYFIXED = 0x400 + MAP_WIRED = 0x800 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_BASIC_FLAGS = 0xe782807f + MNT_DEFEXPORTED = 0x200 + MNT_DISCARD = 0x800000 + MNT_EXKERB = 0x800 + MNT_EXNORESPORT = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x10000000 + MNT_EXRDONLY = 0x80 + MNT_EXTATTR = 0x1000000 + MNT_FORCE = 0x80000 + MNT_GETARGS = 0x400000 + MNT_IGNORE = 0x100000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_LOG = 0x2000000 + MNT_NOATIME = 0x4000000 + MNT_NOCOREDUMP = 0x8000 + MNT_NODEV = 0x10 + MNT_NODEVMTIME = 0x40000000 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_OP_FLAGS = 0x4d0000 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELATIME = 0x20000 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x80000000 + MNT_SYMPERM = 0x20000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0xff90ffff + MNT_WAIT = 0x1 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CONTROLMBUF = 0x2000000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_IOVUSRSPACE = 0x4000000 + MSG_LENUSRSPACE = 0x8000000 + MSG_MCAST = 0x200 + MSG_NAMEMBUF = 0x1000000 + MSG_NBIO = 0x1000 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_USERFLAGS = 0xffffff + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x4 + NAME_MAX = 0x1ff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x5 + NET_RT_MAXID = 0x6 + NET_RT_OIFLIST = 0x4 + NET_RT_OOIFLIST = 0x3 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OFIOGETBMAP = 0xc004667a + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_ALT_IO = 0x40000 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x400000 + O_CREAT = 0x200 + O_DIRECT = 0x80000 + O_DIRECTORY = 0x200000 + O_DSYNC = 0x10000 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_NOSIGPIPE = 0x1000000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x20000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PRI_IOFLUSH = 0x7c + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_TAG = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_TAG = 0x100 + RTF_ANNOUNCE = 0x20000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x2000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SRC = 0x10000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0x15 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x11 + RTM_IFANNOUNCE = 0x10 + RTM_IFINFO = 0x14 + RTM_LLINFO_UPD = 0x13 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OIFINFO = 0xf + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_OOIFINFO = 0xe + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_SETGATE = 0x12 + RTM_VERSION = 0x4 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_CREDS = 0x4 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x8 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80906931 + SIOCADDRT = 0x8038720a + SIOCAIFADDR = 0x8040691a + SIOCALIFADDR = 0x8118691c + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80906932 + SIOCDELRT = 0x8038720b + SIOCDIFADDR = 0x80906919 + SIOCDIFPHYADDR = 0x80906949 + SIOCDLIFADDR = 0x8118691e + SIOCGDRVSPEC = 0xc028697b + SIOCGETPFSYNC = 0xc09069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0906921 + SIOCGIFADDRPREF = 0xc0986920 + SIOCGIFALIAS = 0xc040691b + SIOCGIFBRDADDR = 0xc0906923 + SIOCGIFCAP = 0xc0206976 + SIOCGIFCONF = 0xc0106926 + SIOCGIFDATA = 0xc0986985 + SIOCGIFDLT = 0xc0906977 + SIOCGIFDSTADDR = 0xc0906922 + SIOCGIFFLAGS = 0xc0906911 + SIOCGIFGENERIC = 0xc090693a + SIOCGIFMEDIA = 0xc0306936 + SIOCGIFMETRIC = 0xc0906917 + SIOCGIFMTU = 0xc090697e + SIOCGIFNETMASK = 0xc0906925 + SIOCGIFPDSTADDR = 0xc0906948 + SIOCGIFPSRCADDR = 0xc0906947 + SIOCGLIFADDR = 0xc118691d + SIOCGLIFPHYADDR = 0xc118694b + SIOCGLINKSTR = 0xc0286987 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGVH = 0xc0906983 + SIOCIFCREATE = 0x8090697a + SIOCIFDESTROY = 0x80906979 + SIOCIFGCLONERS = 0xc0106978 + SIOCINITIFADDR = 0xc0706984 + SIOCSDRVSPEC = 0x8028697b + SIOCSETPFSYNC = 0x809069f7 + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8090690c + SIOCSIFADDRPREF = 0x8098691f + SIOCSIFBRDADDR = 0x80906913 + SIOCSIFCAP = 0x80206975 + SIOCSIFDSTADDR = 0x8090690e + SIOCSIFFLAGS = 0x80906910 + SIOCSIFGENERIC = 0x80906939 + SIOCSIFMEDIA = 0xc0906935 + SIOCSIFMETRIC = 0x80906918 + SIOCSIFMTU = 0x8090697f + SIOCSIFNETMASK = 0x80906916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSLIFPHYADDR = 0x8118694a + SIOCSLINKSTR = 0x80286988 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSVH = 0xc0906982 + SIOCZIFDATA = 0xc0986986 + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_FLAGS_MASK = 0xf0000000 + SOCK_NONBLOCK = 0x20000000 + SOCK_NOSIGPIPE = 0x40000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NOHEADER = 0x100a + SO_NOSIGPIPE = 0x800 + SO_OOBINLINE = 0x100 + SO_OVERFLOWED = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x100c + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x100b + SO_TIMESTAMP = 0x2000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SYSCTL_VERSION = 0x1000000 + SYSCTL_VERS_0 = 0x0 + SYSCTL_VERS_1 = 0x1000000 + SYSCTL_VERS_MASK = 0xff000000 + S_ARCH1 = 0x10000 + S_ARCH2 = 0x20000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + S_LOGIN_SET = 0x1 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_CONGCTL = 0x20 + TCP_KEEPCNT = 0x6 + TCP_KEEPIDLE = 0x3 + TCP_KEEPINIT = 0x7 + TCP_KEEPINTVL = 0x5 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDCDTIMESTAMP = 0x40107458 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CDTRCTS = 0x10 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGLINED = 0x40207442 + TIOCGPGRP = 0x40047477 + TIOCGQSIZE = 0x40047481 + TIOCGRANTPT = 0x20007447 + TIOCGSID = 0x40047463 + TIOCGSIZE = 0x40087468 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMGET = 0x40287446 + TIOCPTSNAME = 0x40287448 + TIOCRCVFRAME = 0x80087445 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x2000745f + TIOCSLINED = 0x80207443 + TIOCSPGRP = 0x80047476 + TIOCSQSIZE = 0x80047480 + TIOCSSIZE = 0x80087467 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCXMTFRAME = 0x80087444 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALL = 0x8 + WALLSIG = 0x8 + WALTSIG = 0x4 + WCLONE = 0x4 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WNOWAIT = 0x10000 + WNOZOMBIE = 0x20000 + WOPTSCHECKED = 0x40000 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x58) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x57) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x55) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x60) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5e) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x5d) + ENOBUFS = syscall.Errno(0x37) + ENODATA = syscall.Errno(0x59) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5f) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x5a) + ENOSTR = syscall.Errno(0x5b) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x56) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x60) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIME = syscall.Errno(0x5c) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x20) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large or too small"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol option not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "connection timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "EILSEQ", "illegal byte sequence"}, + {86, "ENOTSUP", "not supported"}, + {87, "ECANCELED", "operation Canceled"}, + {88, "EBADMSG", "bad or Corrupt message"}, + {89, "ENODATA", "no message available"}, + {90, "ENOSR", "no STREAM resources"}, + {91, "ENOSTR", "not a STREAM"}, + {92, "ETIME", "STREAM ioctl timeout"}, + {93, "ENOATTR", "attribute not found"}, + {94, "EMULTIHOP", "multihop attempted"}, + {95, "ENOLINK", "link has been severed"}, + {96, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "stopped (signal)"}, + {18, "SIGTSTP", "stopped"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGPWR", "power fail/restart"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go new file mode 100644 index 0000000..d8be045 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go @@ -0,0 +1,1654 @@ +// mkerrors.sh -m32 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m32 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_COPY = 0x4 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x1ff7 + MAP_HASSEMAPHORE = 0x200 + MAP_INHERIT = 0x80 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_DONATE_COPY = 0x3 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_NOEXTEND = 0x100 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x400 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PT_MASK = 0x3ff000 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x10f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_SOURCE = 0x20000 + RTF_STATIC = 0x800 + RTF_TUNNEL = 0x100000 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_DGRAM = 0x2 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WSTOPPED = 0x7f + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go new file mode 100644 index 0000000..1f9e8a2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go @@ -0,0 +1,1765 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x7ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MAXID = 0xc + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 0000000..79d5695 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1656 @@ +// mkerrors.sh +// Code generated by the command above; see README.md. DO NOT EDIT. + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +// +build arm,openbsd + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x3ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x70f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ELAST", "not supported"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go new file mode 100644 index 0000000..22569db --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go @@ -0,0 +1,1532 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_802 = 0x12 + AF_APPLETALK = 0x10 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_ECMA = 0x8 + AF_FILE = 0x1 + AF_GOSIP = 0x16 + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1a + AF_INET_OFFLOAD = 0x1e + AF_IPX = 0x17 + AF_KEY = 0x1b + AF_LAT = 0xe + AF_LINK = 0x19 + AF_LOCAL = 0x1 + AF_MAX = 0x20 + AF_NBS = 0x7 + AF_NCA = 0x1c + AF_NIT = 0x11 + AF_NS = 0x6 + AF_OSI = 0x13 + AF_OSINET = 0x15 + AF_PACKET = 0x20 + AF_POLICY = 0x1d + AF_PUP = 0x4 + AF_ROUTE = 0x18 + AF_SNA = 0xb + AF_TRILL = 0x1f + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_X25 = 0x14 + ARPHRD_ARCNET = 0x7 + ARPHRD_ATM = 0x10 + ARPHRD_AX25 = 0x3 + ARPHRD_CHAOS = 0x5 + ARPHRD_EETHER = 0x2 + ARPHRD_ETHER = 0x1 + ARPHRD_FC = 0x12 + ARPHRD_FRAME = 0xf + ARPHRD_HDLC = 0x11 + ARPHRD_IB = 0x20 + ARPHRD_IEEE802 = 0x6 + ARPHRD_IPATM = 0x13 + ARPHRD_METRICOM = 0x17 + ARPHRD_TUNNEL = 0x1f + B0 = 0x0 + B110 = 0x3 + B115200 = 0x12 + B1200 = 0x9 + B134 = 0x4 + B150 = 0x5 + B153600 = 0x13 + B1800 = 0xa + B19200 = 0xe + B200 = 0x6 + B230400 = 0x14 + B2400 = 0xb + B300 = 0x7 + B307200 = 0x15 + B38400 = 0xf + B460800 = 0x16 + B4800 = 0xc + B50 = 0x1 + B57600 = 0x10 + B600 = 0x8 + B75 = 0x2 + B76800 = 0x11 + B921600 = 0x17 + B9600 = 0xd + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = -0x3fefbd89 + BIOCGDLTLIST32 = -0x3ff7bd89 + BIOCGETIF = 0x4020426b + BIOCGETLIF = 0x4078426b + BIOCGHDRCMPLT = 0x40044274 + BIOCGRTIMEOUT = 0x4010427b + BIOCGRTIMEOUT32 = 0x4008427b + BIOCGSEESENT = 0x40044278 + BIOCGSTATS = 0x4080426f + BIOCGSTATSOLD = 0x4008426f + BIOCIMMEDIATE = -0x7ffbbd90 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = -0x3ffbbd9a + BIOCSDLT = -0x7ffbbd8a + BIOCSETF = -0x7fefbd99 + BIOCSETF32 = -0x7ff7bd99 + BIOCSETIF = -0x7fdfbd94 + BIOCSETLIF = -0x7f87bd94 + BIOCSHDRCMPLT = -0x7ffbbd8b + BIOCSRTIMEOUT = -0x7fefbd86 + BIOCSRTIMEOUT32 = -0x7ff7bd86 + BIOCSSEESENT = -0x7ffbbd87 + BIOCSTCPF = -0x7fefbd8e + BIOCSUDPF = -0x7fefbd8d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DFLTBUFSIZE = 0x100000 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x1000000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + BS0 = 0x0 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0xf + CFLUSH = 0xf + CIBAUD = 0xf0000 + CLOCAL = 0x800 + CLOCK_HIGHRES = 0x4 + CLOCK_LEVEL = 0xa + CLOCK_MONOTONIC = 0x4 + CLOCK_PROCESS_CPUTIME_ID = 0x5 + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x3 + CLOCK_THREAD_CPUTIME_ID = 0x2 + CLOCK_VIRTUAL = 0x1 + CR0 = 0x0 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CRTSCTS = 0x80000000 + CS5 = 0x0 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x40 + CSUSP = 0x1a + CSWTCH = 0x1a + DLT_AIRONET_HEADER = 0x78 + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_BACNET_MS_TP = 0xa5 + DLT_CHAOS = 0x5 + DLT_CISCO_IOS = 0x76 + DLT_C_HDLC = 0x68 + DLT_DOCSIS = 0x8f + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_FDDI = 0xa + DLT_FRELAY = 0x6b + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_HDLC = 0x10 + DLT_HHDLC = 0x79 + DLT_HIPPI = 0xf + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xa2 + DLT_IP_OVER_FC = 0x7a + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_SLL = 0x71 + DLT_LOOP = 0x6c + DLT_LTALK = 0x72 + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_NULL = 0x0 + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_PPPD = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PRONET = 0x4 + DLT_RAW = 0xc + DLT_RAWAF_MASK = 0x2240000 + DLT_RIO = 0x7c + DLT_SCCP = 0x8e + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TZSP = 0x80 + ECHO = 0x8 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EMPTY_SET = 0x0 + EMT_CPCOVF = 0x1 + EQUALITY_CHECK = 0x0 + EXTA = 0xe + EXTB = 0xf + FD_CLOEXEC = 0x1 + FD_NFDBITS = 0x40 + FD_SETSIZE = 0x10000 + FF0 = 0x0 + FF1 = 0x8000 + FFDLY = 0x8000 + FLUSHALL = 0x1 + FLUSHDATA = 0x0 + FLUSHO = 0x2000 + F_ALLOCSP = 0xa + F_ALLOCSP64 = 0xa + F_BADFD = 0x2e + F_BLKSIZE = 0x13 + F_BLOCKS = 0x12 + F_CHKFL = 0x8 + F_COMPAT = 0x8 + F_DUP2FD = 0x9 + F_DUP2FD_CLOEXEC = 0x24 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x25 + F_FLOCK = 0x35 + F_FLOCK64 = 0x35 + F_FLOCKW = 0x36 + F_FLOCKW64 = 0x36 + F_FREESP = 0xb + F_FREESP64 = 0xb + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xe + F_GETLK64 = 0xe + F_GETOWN = 0x17 + F_GETXFL = 0x2d + F_HASREMOTELOCKS = 0x1a + F_ISSTREAM = 0xd + F_MANDDNY = 0x10 + F_MDACC = 0x20 + F_NODNY = 0x0 + F_NPRIV = 0x10 + F_OFD_GETLK = 0x2f + F_OFD_GETLK64 = 0x2f + F_OFD_SETLK = 0x30 + F_OFD_SETLK64 = 0x30 + F_OFD_SETLKW = 0x31 + F_OFD_SETLKW64 = 0x31 + F_PRIV = 0xf + F_QUOTACTL = 0x11 + F_RDACC = 0x1 + F_RDDNY = 0x1 + F_RDLCK = 0x1 + F_REVOKE = 0x19 + F_RMACC = 0x4 + F_RMDNY = 0x4 + F_RWACC = 0x3 + F_RWDNY = 0x3 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLK64_NBMAND = 0x2a + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETLK_NBMAND = 0x2a + F_SETOWN = 0x18 + F_SHARE = 0x28 + F_SHARE_NBMAND = 0x2b + F_UNLCK = 0x3 + F_UNLKSYS = 0x4 + F_UNSHARE = 0x29 + F_WRACC = 0x2 + F_WRDNY = 0x2 + F_WRLCK = 0x2 + HUPCL = 0x400 + IBSHIFT = 0x10 + ICANON = 0x2 + ICRNL = 0x100 + IEXTEN = 0x8000 + IFF_ADDRCONF = 0x80000 + IFF_ALLMULTI = 0x200 + IFF_ANYCAST = 0x400000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x7f203003b5a + IFF_COS_ENABLED = 0x200000000 + IFF_DEBUG = 0x4 + IFF_DEPRECATED = 0x40000 + IFF_DHCPRUNNING = 0x4000 + IFF_DUPLICATE = 0x4000000000 + IFF_FAILED = 0x10000000 + IFF_FIXEDMTU = 0x1000000000 + IFF_INACTIVE = 0x40000000 + IFF_INTELLIGENT = 0x400 + IFF_IPMP = 0x8000000000 + IFF_IPMP_CANTCHANGE = 0x10000000 + IFF_IPMP_INVALID = 0x1ec200080 + IFF_IPV4 = 0x1000000 + IFF_IPV6 = 0x2000000 + IFF_L3PROTECT = 0x40000000000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x800 + IFF_MULTI_BCAST = 0x1000 + IFF_NOACCEPT = 0x4000000 + IFF_NOARP = 0x80 + IFF_NOFAILOVER = 0x8000000 + IFF_NOLINKLOCAL = 0x20000000000 + IFF_NOLOCAL = 0x20000 + IFF_NONUD = 0x200000 + IFF_NORTEXCH = 0x800000 + IFF_NOTRAILERS = 0x20 + IFF_NOXMIT = 0x10000 + IFF_OFFLINE = 0x80000000 + IFF_POINTOPOINT = 0x10 + IFF_PREFERRED = 0x400000000 + IFF_PRIVATE = 0x8000 + IFF_PROMISC = 0x100 + IFF_ROUTER = 0x100000 + IFF_RUNNING = 0x40 + IFF_STANDBY = 0x20000000 + IFF_TEMPORARY = 0x800000000 + IFF_UNNUMBERED = 0x2000 + IFF_UP = 0x1 + IFF_VIRTUAL = 0x2000000000 + IFF_VRRP = 0x10000000000 + IFF_XRESOLV = 0x100000000 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_6TO4 = 0xca + IFT_AAL5 = 0x31 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ATM = 0x25 + IFT_CEPT = 0x13 + IFT_DS3 = 0x1e + IFT_EON = 0x19 + IFT_ETHER = 0x6 + IFT_FDDI = 0xf + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_HDH1822 = 0x3 + IFT_HIPPI = 0x2f + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IB = 0xc7 + IFT_IPV4 = 0xc8 + IFT_IPV6 = 0xc9 + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88026 = 0xa + IFT_LAPB = 0x10 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_NSIP = 0x1b + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PPP = 0x17 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PTPSERIAL = 0x16 + IFT_RS232 = 0x21 + IFT_SDLC = 0x11 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_ULTRA = 0x1d + IFT_V35 = 0x2d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_AUTOCONF_MASK = 0xffff0000 + IN_AUTOCONF_NET = 0xa9fe0000 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_CLASSE_NET = 0xffffffff + IN_LOOPBACKNET = 0x7f + IN_PRIVATE12_MASK = 0xfff00000 + IN_PRIVATE12_NET = 0xac100000 + IN_PRIVATE16_MASK = 0xffff0000 + IN_PRIVATE16_NET = 0xc0a80000 + IN_PRIVATE8_MASK = 0xff000000 + IN_PRIVATE8_NET = 0xa000000 + IPPROTO_AH = 0x33 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x4 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_HELLO = 0x3f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_ND = 0x4d + IPPROTO_NONE = 0x3b + IPPROTO_OSPF = 0x59 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_SCTP = 0x84 + IPPROTO_TCP = 0x6 + IPPROTO_UDP = 0x11 + IPV6_ADD_MEMBERSHIP = 0x9 + IPV6_BOUND_IF = 0x41 + IPV6_CHECKSUM = 0x18 + IPV6_DONTFRAG = 0x21 + IPV6_DROP_MEMBERSHIP = 0xa + IPV6_DSTOPTS = 0xf + IPV6_FLOWINFO_FLOWLABEL = 0xffff0f00 + IPV6_FLOWINFO_TCLASS = 0xf00f + IPV6_HOPLIMIT = 0xc + IPV6_HOPOPTS = 0xe + IPV6_JOIN_GROUP = 0x9 + IPV6_LEAVE_GROUP = 0xa + IPV6_MULTICAST_HOPS = 0x7 + IPV6_MULTICAST_IF = 0x6 + IPV6_MULTICAST_LOOP = 0x8 + IPV6_NEXTHOP = 0xd + IPV6_PAD1_OPT = 0x0 + IPV6_PATHMTU = 0x25 + IPV6_PKTINFO = 0xb + IPV6_PREFER_SRC_CGA = 0x20 + IPV6_PREFER_SRC_CGADEFAULT = 0x10 + IPV6_PREFER_SRC_CGAMASK = 0x30 + IPV6_PREFER_SRC_COA = 0x2 + IPV6_PREFER_SRC_DEFAULT = 0x15 + IPV6_PREFER_SRC_HOME = 0x1 + IPV6_PREFER_SRC_MASK = 0x3f + IPV6_PREFER_SRC_MIPDEFAULT = 0x1 + IPV6_PREFER_SRC_MIPMASK = 0x3 + IPV6_PREFER_SRC_NONCGA = 0x10 + IPV6_PREFER_SRC_PUBLIC = 0x4 + IPV6_PREFER_SRC_TMP = 0x8 + IPV6_PREFER_SRC_TMPDEFAULT = 0x4 + IPV6_PREFER_SRC_TMPMASK = 0xc + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVHOPLIMIT = 0x13 + IPV6_RECVHOPOPTS = 0x14 + IPV6_RECVPATHMTU = 0x24 + IPV6_RECVPKTINFO = 0x12 + IPV6_RECVRTHDR = 0x16 + IPV6_RECVRTHDRDSTOPTS = 0x17 + IPV6_RECVTCLASS = 0x19 + IPV6_RTHDR = 0x10 + IPV6_RTHDRDSTOPTS = 0x11 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SEC_OPT = 0x22 + IPV6_SRC_PREFERENCES = 0x23 + IPV6_TCLASS = 0x26 + IPV6_UNICAST_HOPS = 0x5 + IPV6_UNSPEC_SRC = 0x42 + IPV6_USE_MIN_MTU = 0x20 + IPV6_V6ONLY = 0x27 + IP_ADD_MEMBERSHIP = 0x13 + IP_ADD_SOURCE_MEMBERSHIP = 0x17 + IP_BLOCK_SOURCE = 0x15 + IP_BOUND_IF = 0x41 + IP_BROADCAST = 0x106 + IP_BROADCAST_TTL = 0x43 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DHCPINIT_IF = 0x45 + IP_DONTFRAG = 0x1b + IP_DONTROUTE = 0x105 + IP_DROP_MEMBERSHIP = 0x14 + IP_DROP_SOURCE_MEMBERSHIP = 0x18 + IP_HDRINCL = 0x2 + IP_MAXPACKET = 0xffff + IP_MF = 0x2000 + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x10 + IP_MULTICAST_LOOP = 0x12 + IP_MULTICAST_TTL = 0x11 + IP_NEXTHOP = 0x19 + IP_OPTIONS = 0x1 + IP_PKTINFO = 0x1a + IP_RECVDSTADDR = 0x7 + IP_RECVIF = 0x9 + IP_RECVOPTS = 0x5 + IP_RECVPKTINFO = 0x1a + IP_RECVRETOPTS = 0x6 + IP_RECVSLLA = 0xa + IP_RECVTTL = 0xb + IP_RETOPTS = 0x8 + IP_REUSEADDR = 0x104 + IP_SEC_OPT = 0x22 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x16 + IP_UNSPEC_SRC = 0x42 + ISIG = 0x1 + ISTRIP = 0x20 + IUCLC = 0x200 + IXANY = 0x800 + IXOFF = 0x1000 + IXON = 0x400 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_ACCESS_DEFAULT = 0x6 + MADV_ACCESS_LWP = 0x7 + MADV_ACCESS_MANY = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NORMAL = 0x0 + MADV_PURGE = 0x9 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80 + MAP_ALIGN = 0x200 + MAP_ANON = 0x100 + MAP_ANONYMOUS = 0x100 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_INITDATA = 0x800 + MAP_NORESERVE = 0x40 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x20 + MAP_SHARED = 0x1 + MAP_TEXT = 0x400 + MAP_TYPE = 0xf + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_CTRUNC = 0x10 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_DUPCTRL = 0x800 + MSG_EOR = 0x8 + MSG_MAXIOVLEN = 0x10 + MSG_NOTIFICATION = 0x100 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x20 + MSG_WAITALL = 0x40 + MSG_XPG4_2 = 0x8000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_OLDSYNC = 0x0 + MS_SYNC = 0x4 + M_FLUSH = 0x86 + NAME_MAX = 0xff + NEWDEV = 0x1 + NL0 = 0x0 + NL1 = 0x100 + NLDLY = 0x100 + NOFLSH = 0x80 + OCRNL = 0x8 + OFDEL = 0x80 + OFILL = 0x40 + OLCUC = 0x2 + OLDDEV = 0x0 + ONBITSMAJOR = 0x7 + ONBITSMINOR = 0x8 + ONLCR = 0x4 + ONLRET = 0x20 + ONOCR = 0x10 + OPENFAIL = -0x1 + OPOST = 0x1 + O_ACCMODE = 0x600003 + O_APPEND = 0x8 + O_CLOEXEC = 0x800000 + O_CREAT = 0x100 + O_DSYNC = 0x40 + O_EXCL = 0x400 + O_EXEC = 0x400000 + O_LARGEFILE = 0x2000 + O_NDELAY = 0x4 + O_NOCTTY = 0x800 + O_NOFOLLOW = 0x20000 + O_NOLINKS = 0x40000 + O_NONBLOCK = 0x80 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x8000 + O_SEARCH = 0x200000 + O_SIOCGIFCONF = -0x3ff796ec + O_SIOCGLIFCONF = -0x3fef9688 + O_SYNC = 0x10 + O_TRUNC = 0x200 + O_WRONLY = 0x1 + O_XATTR = 0x4000 + PARENB = 0x100 + PAREXT = 0x100000 + PARMRK = 0x8 + PARODD = 0x200 + PENDIN = 0x4000 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_AS = 0x6 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = -0x3 + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x9 + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTA_NUMBITS = 0x9 + RTA_SRC = 0x100 + RTF_BLACKHOLE = 0x1000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_INDIRECT = 0x40000 + RTF_KERNEL = 0x80000 + RTF_LLINFO = 0x400 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MULTIRT = 0x10000 + RTF_PRIVATE = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_REJECT = 0x8 + RTF_SETSRC = 0x20000 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTF_ZONE = 0x100000 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_CHGADDR = 0xf + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_FREEADDR = 0x10 + RTM_GET = 0x4 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_VERSION = 0x3 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_AWARE = 0x1 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + SCM_RIGHTS = 0x1010 + SCM_TIMESTAMP = 0x1013 + SCM_UCRED = 0x1012 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIG2STR_MAX = 0x20 + SIOCADDMULTI = -0x7fdf96cf + SIOCADDRT = -0x7fcf8df6 + SIOCATMARK = 0x40047307 + SIOCDARP = -0x7fdb96e0 + SIOCDELMULTI = -0x7fdf96ce + SIOCDELRT = -0x7fcf8df5 + SIOCDXARP = -0x7fff9658 + SIOCGARP = -0x3fdb96e1 + SIOCGDSTINFO = -0x3fff965c + SIOCGENADDR = -0x3fdf96ab + SIOCGENPSTATS = -0x3fdf96c7 + SIOCGETLSGCNT = -0x3fef8deb + SIOCGETNAME = 0x40107334 + SIOCGETPEER = 0x40107335 + SIOCGETPROP = -0x3fff8f44 + SIOCGETSGCNT = -0x3feb8deb + SIOCGETSYNC = -0x3fdf96d3 + SIOCGETVIFCNT = -0x3feb8dec + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = -0x3fdf96f3 + SIOCGIFBRDADDR = -0x3fdf96e9 + SIOCGIFCONF = -0x3ff796a4 + SIOCGIFDSTADDR = -0x3fdf96f1 + SIOCGIFFLAGS = -0x3fdf96ef + SIOCGIFHWADDR = -0x3fdf9647 + SIOCGIFINDEX = -0x3fdf96a6 + SIOCGIFMEM = -0x3fdf96ed + SIOCGIFMETRIC = -0x3fdf96e5 + SIOCGIFMTU = -0x3fdf96ea + SIOCGIFMUXID = -0x3fdf96a8 + SIOCGIFNETMASK = -0x3fdf96e7 + SIOCGIFNUM = 0x40046957 + SIOCGIP6ADDRPOLICY = -0x3fff965e + SIOCGIPMSFILTER = -0x3ffb964c + SIOCGLIFADDR = -0x3f87968f + SIOCGLIFBINDING = -0x3f879666 + SIOCGLIFBRDADDR = -0x3f879685 + SIOCGLIFCONF = -0x3fef965b + SIOCGLIFDADSTATE = -0x3f879642 + SIOCGLIFDSTADDR = -0x3f87968d + SIOCGLIFFLAGS = -0x3f87968b + SIOCGLIFGROUPINFO = -0x3f4b9663 + SIOCGLIFGROUPNAME = -0x3f879664 + SIOCGLIFHWADDR = -0x3f879640 + SIOCGLIFINDEX = -0x3f87967b + SIOCGLIFLNKINFO = -0x3f879674 + SIOCGLIFMETRIC = -0x3f879681 + SIOCGLIFMTU = -0x3f879686 + SIOCGLIFMUXID = -0x3f87967d + SIOCGLIFNETMASK = -0x3f879683 + SIOCGLIFNUM = -0x3ff3967e + SIOCGLIFSRCOF = -0x3fef964f + SIOCGLIFSUBNET = -0x3f879676 + SIOCGLIFTOKEN = -0x3f879678 + SIOCGLIFUSESRC = -0x3f879651 + SIOCGLIFZONE = -0x3f879656 + SIOCGLOWAT = 0x40047303 + SIOCGMSFILTER = -0x3ffb964e + SIOCGPGRP = 0x40047309 + SIOCGSTAMP = -0x3fef9646 + SIOCGXARP = -0x3fff9659 + SIOCIFDETACH = -0x7fdf96c8 + SIOCILB = -0x3ffb9645 + SIOCLIFADDIF = -0x3f879691 + SIOCLIFDELND = -0x7f879673 + SIOCLIFGETND = -0x3f879672 + SIOCLIFREMOVEIF = -0x7f879692 + SIOCLIFSETND = -0x7f879671 + SIOCLOWER = -0x7fdf96d7 + SIOCSARP = -0x7fdb96e2 + SIOCSCTPGOPT = -0x3fef9653 + SIOCSCTPPEELOFF = -0x3ffb9652 + SIOCSCTPSOPT = -0x7fef9654 + SIOCSENABLESDP = -0x3ffb9649 + SIOCSETPROP = -0x7ffb8f43 + SIOCSETSYNC = -0x7fdf96d4 + SIOCSHIWAT = -0x7ffb8d00 + SIOCSIFADDR = -0x7fdf96f4 + SIOCSIFBRDADDR = -0x7fdf96e8 + SIOCSIFDSTADDR = -0x7fdf96f2 + SIOCSIFFLAGS = -0x7fdf96f0 + SIOCSIFINDEX = -0x7fdf96a5 + SIOCSIFMEM = -0x7fdf96ee + SIOCSIFMETRIC = -0x7fdf96e4 + SIOCSIFMTU = -0x7fdf96eb + SIOCSIFMUXID = -0x7fdf96a7 + SIOCSIFNAME = -0x7fdf96b7 + SIOCSIFNETMASK = -0x7fdf96e6 + SIOCSIP6ADDRPOLICY = -0x7fff965d + SIOCSIPMSFILTER = -0x7ffb964b + SIOCSLGETREQ = -0x3fdf96b9 + SIOCSLIFADDR = -0x7f879690 + SIOCSLIFBRDADDR = -0x7f879684 + SIOCSLIFDSTADDR = -0x7f87968e + SIOCSLIFFLAGS = -0x7f87968c + SIOCSLIFGROUPNAME = -0x7f879665 + SIOCSLIFINDEX = -0x7f87967a + SIOCSLIFLNKINFO = -0x7f879675 + SIOCSLIFMETRIC = -0x7f879680 + SIOCSLIFMTU = -0x7f879687 + SIOCSLIFMUXID = -0x7f87967c + SIOCSLIFNAME = -0x3f87967f + SIOCSLIFNETMASK = -0x7f879682 + SIOCSLIFPREFIX = -0x3f879641 + SIOCSLIFSUBNET = -0x7f879677 + SIOCSLIFTOKEN = -0x7f879679 + SIOCSLIFUSESRC = -0x7f879650 + SIOCSLIFZONE = -0x7f879655 + SIOCSLOWAT = -0x7ffb8cfe + SIOCSLSTAT = -0x7fdf96b8 + SIOCSMSFILTER = -0x7ffb964d + SIOCSPGRP = -0x7ffb8cf8 + SIOCSPROMISC = -0x7ffb96d0 + SIOCSQPTR = -0x3ffb9648 + SIOCSSDSTATS = -0x3fdf96d2 + SIOCSSESTATS = -0x3fdf96d1 + SIOCSXARP = -0x7fff965a + SIOCTMYADDR = -0x3ff79670 + SIOCTMYSITE = -0x3ff7966e + SIOCTONLINK = -0x3ff7966f + SIOCUPPER = -0x7fdf96d8 + SIOCX25RCV = -0x3fdf96c4 + SIOCX25TBL = -0x3fdf96c3 + SIOCX25XMT = -0x3fdf96c5 + SIOCXPROTO = 0x20007337 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x1 + SOCK_NDELAY = 0x200000 + SOCK_NONBLOCK = 0x100000 + SOCK_RAW = 0x4 + SOCK_RDM = 0x5 + SOCK_SEQPACKET = 0x6 + SOCK_STREAM = 0x2 + SOCK_TYPE_MASK = 0xffff + SOL_FILTER = 0xfffc + SOL_PACKET = 0xfffd + SOL_ROUTE = 0xfffe + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ALL = 0x3f + SO_ALLZONES = 0x1014 + SO_ANON_MLP = 0x100a + SO_ATTACH_FILTER = 0x40000001 + SO_BAND = 0x4000 + SO_BROADCAST = 0x20 + SO_COPYOPT = 0x80000 + SO_DEBUG = 0x1 + SO_DELIM = 0x8000 + SO_DETACH_FILTER = 0x40000002 + SO_DGRAM_ERRIND = 0x200 + SO_DOMAIN = 0x100c + SO_DONTLINGER = -0x81 + SO_DONTROUTE = 0x10 + SO_ERROPT = 0x40000 + SO_ERROR = 0x1007 + SO_EXCLBIND = 0x1015 + SO_HIWAT = 0x10 + SO_ISNTTY = 0x800 + SO_ISTTY = 0x400 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_LOWAT = 0x20 + SO_MAC_EXEMPT = 0x100b + SO_MAC_IMPLICIT = 0x1016 + SO_MAXBLK = 0x100000 + SO_MAXPSZ = 0x8 + SO_MINPSZ = 0x4 + SO_MREADOFF = 0x80 + SO_MREADON = 0x40 + SO_NDELOFF = 0x200 + SO_NDELON = 0x100 + SO_NODELIM = 0x10000 + SO_OOBINLINE = 0x100 + SO_PROTOTYPE = 0x1009 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVPSH = 0x100d + SO_RCVTIMEO = 0x1006 + SO_READOPT = 0x1 + SO_RECVUCRED = 0x400 + SO_REUSEADDR = 0x4 + SO_SECATTR = 0x1011 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_STRHOLD = 0x20000 + SO_TAIL = 0x200000 + SO_TIMESTAMP = 0x1013 + SO_TONSTOP = 0x2000 + SO_TOSTOP = 0x1000 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_VRRP = 0x1017 + SO_WROFF = 0x2 + S_ENFMT = 0x400 + S_IAMB = 0x1ff + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFDOOR = 0xd000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFNAM = 0x5000 + S_IFPORT = 0xe000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_INSEM = 0x1 + S_INSHD = 0x2 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x5407 + TCGETA = 0x5401 + TCGETS = 0x540d + TCIFLUSH = 0x0 + TCIOFF = 0x2 + TCIOFLUSH = 0x2 + TCION = 0x3 + TCOFLUSH = 0x1 + TCOOFF = 0x0 + TCOON = 0x1 + TCP_ABORT_THRESHOLD = 0x11 + TCP_ANONPRIVBIND = 0x20 + TCP_CONN_ABORT_THRESHOLD = 0x13 + TCP_CONN_NOTIFY_THRESHOLD = 0x12 + TCP_CORK = 0x18 + TCP_EXCLBIND = 0x21 + TCP_INIT_CWND = 0x15 + TCP_KEEPALIVE = 0x8 + TCP_KEEPALIVE_ABORT_THRESHOLD = 0x17 + TCP_KEEPALIVE_THRESHOLD = 0x16 + TCP_KEEPCNT = 0x23 + TCP_KEEPIDLE = 0x22 + TCP_KEEPINTVL = 0x24 + TCP_LINGER2 = 0x1c + TCP_MAXSEG = 0x2 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOTIFY_THRESHOLD = 0x10 + TCP_RECVDSTADDR = 0x14 + TCP_RTO_INITIAL = 0x19 + TCP_RTO_MAX = 0x1b + TCP_RTO_MIN = 0x1a + TCSAFLUSH = 0x5410 + TCSBRK = 0x5405 + TCSETA = 0x5402 + TCSETAF = 0x5404 + TCSETAW = 0x5403 + TCSETS = 0x540e + TCSETSF = 0x5410 + TCSETSW = 0x540f + TCXONC = 0x5406 + TIOC = 0x5400 + TIOCCBRK = 0x747a + TIOCCDTR = 0x7478 + TIOCCILOOP = 0x746c + TIOCEXCL = 0x740d + TIOCFLUSH = 0x7410 + TIOCGETC = 0x7412 + TIOCGETD = 0x7400 + TIOCGETP = 0x7408 + TIOCGLTC = 0x7474 + TIOCGPGRP = 0x7414 + TIOCGPPS = 0x547d + TIOCGPPSEV = 0x547f + TIOCGSID = 0x7416 + TIOCGSOFTCAR = 0x5469 + TIOCGWINSZ = 0x5468 + TIOCHPCL = 0x7402 + TIOCKBOF = 0x5409 + TIOCKBON = 0x5408 + TIOCLBIC = 0x747e + TIOCLBIS = 0x747f + TIOCLGET = 0x747c + TIOCLSET = 0x747d + TIOCMBIC = 0x741c + TIOCMBIS = 0x741b + TIOCMGET = 0x741d + TIOCMSET = 0x741a + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x7471 + TIOCNXCL = 0x740e + TIOCOUTQ = 0x7473 + TIOCREMOTE = 0x741e + TIOCSBRK = 0x747b + TIOCSCTTY = 0x7484 + TIOCSDTR = 0x7479 + TIOCSETC = 0x7411 + TIOCSETD = 0x7401 + TIOCSETN = 0x740a + TIOCSETP = 0x7409 + TIOCSIGNAL = 0x741f + TIOCSILOOP = 0x746d + TIOCSLTC = 0x7475 + TIOCSPGRP = 0x7415 + TIOCSPPS = 0x547e + TIOCSSOFTCAR = 0x546a + TIOCSTART = 0x746e + TIOCSTI = 0x7417 + TIOCSTOP = 0x746f + TIOCSWINSZ = 0x5467 + TOSTOP = 0x100 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VCEOF = 0x8 + VCEOL = 0x9 + VDISCARD = 0xd + VDSUSP = 0xb + VEOF = 0x4 + VEOL = 0x5 + VEOL2 = 0x6 + VERASE = 0x2 + VERASE2 = 0x11 + VINTR = 0x0 + VKILL = 0x3 + VLNEXT = 0xf + VMIN = 0x4 + VQUIT = 0x1 + VREPRINT = 0xc + VSTART = 0x8 + VSTATUS = 0x10 + VSTOP = 0x9 + VSUSP = 0xa + VSWTCH = 0x7 + VT0 = 0x0 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WCONTFLG = 0xffff + WCONTINUED = 0x8 + WCOREFLG = 0x80 + WEXITED = 0x1 + WNOHANG = 0x40 + WNOWAIT = 0x80 + WOPTMASK = 0xcf + WRAP = 0x20000 + WSIGMASK = 0x7f + WSTOPFLG = 0x7f + WSTOPPED = 0x4 + WTRAPPED = 0x2 + WUNTRACED = 0x4 + XCASE = 0x4 + XTABS = 0x1800 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x7d) + EADDRNOTAVAIL = syscall.Errno(0x7e) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x7c) + EAGAIN = syscall.Errno(0xb) + EALREADY = syscall.Errno(0x95) + EBADE = syscall.Errno(0x32) + EBADF = syscall.Errno(0x9) + EBADFD = syscall.Errno(0x51) + EBADMSG = syscall.Errno(0x4d) + EBADR = syscall.Errno(0x33) + EBADRQC = syscall.Errno(0x36) + EBADSLT = syscall.Errno(0x37) + EBFONT = syscall.Errno(0x39) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x2f) + ECHILD = syscall.Errno(0xa) + ECHRNG = syscall.Errno(0x25) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x82) + ECONNREFUSED = syscall.Errno(0x92) + ECONNRESET = syscall.Errno(0x83) + EDEADLK = syscall.Errno(0x2d) + EDEADLOCK = syscall.Errno(0x38) + EDESTADDRREQ = syscall.Errno(0x60) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x31) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EHOSTDOWN = syscall.Errno(0x93) + EHOSTUNREACH = syscall.Errno(0x94) + EIDRM = syscall.Errno(0x24) + EILSEQ = syscall.Errno(0x58) + EINPROGRESS = syscall.Errno(0x96) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x85) + EISDIR = syscall.Errno(0x15) + EL2HLT = syscall.Errno(0x2c) + EL2NSYNC = syscall.Errno(0x26) + EL3HLT = syscall.Errno(0x27) + EL3RST = syscall.Errno(0x28) + ELIBACC = syscall.Errno(0x53) + ELIBBAD = syscall.Errno(0x54) + ELIBEXEC = syscall.Errno(0x57) + ELIBMAX = syscall.Errno(0x56) + ELIBSCN = syscall.Errno(0x55) + ELNRNG = syscall.Errno(0x29) + ELOCKUNMAPPED = syscall.Errno(0x48) + ELOOP = syscall.Errno(0x5a) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x61) + EMULTIHOP = syscall.Errno(0x4a) + ENAMETOOLONG = syscall.Errno(0x4e) + ENETDOWN = syscall.Errno(0x7f) + ENETRESET = syscall.Errno(0x81) + ENETUNREACH = syscall.Errno(0x80) + ENFILE = syscall.Errno(0x17) + ENOANO = syscall.Errno(0x35) + ENOBUFS = syscall.Errno(0x84) + ENOCSI = syscall.Errno(0x2b) + ENODATA = syscall.Errno(0x3d) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x2e) + ENOLINK = syscall.Errno(0x43) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x23) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x63) + ENOSPC = syscall.Errno(0x1c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x59) + ENOTACTIVE = syscall.Errno(0x49) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x86) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x5d) + ENOTRECOVERABLE = syscall.Errno(0x3b) + ENOTSOCK = syscall.Errno(0x5f) + ENOTSUP = syscall.Errno(0x30) + ENOTTY = syscall.Errno(0x19) + ENOTUNIQ = syscall.Errno(0x50) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x7a) + EOVERFLOW = syscall.Errno(0x4f) + EOWNERDEAD = syscall.Errno(0x3a) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x7b) + EPIPE = syscall.Errno(0x20) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x78) + EPROTOTYPE = syscall.Errno(0x62) + ERANGE = syscall.Errno(0x22) + EREMCHG = syscall.Errno(0x52) + EREMOTE = syscall.Errno(0x42) + ERESTART = syscall.Errno(0x5b) + EROFS = syscall.Errno(0x1e) + ESHUTDOWN = syscall.Errno(0x8f) + ESOCKTNOSUPPORT = syscall.Errno(0x79) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x97) + ESTRPIPE = syscall.Errno(0x5c) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x91) + ETOOMANYREFS = syscall.Errno(0x90) + ETXTBSY = syscall.Errno(0x1a) + EUNATCH = syscall.Errno(0x2a) + EUSERS = syscall.Errno(0x5e) + EWOULDBLOCK = syscall.Errno(0xb) + EXDEV = syscall.Errno(0x12) + EXFULL = syscall.Errno(0x34) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCANCEL = syscall.Signal(0x24) + SIGCHLD = syscall.Signal(0x12) + SIGCLD = syscall.Signal(0x12) + SIGCONT = syscall.Signal(0x19) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGFREEZE = syscall.Signal(0x22) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x29) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x16) + SIGIOT = syscall.Signal(0x6) + SIGJVM1 = syscall.Signal(0x27) + SIGJVM2 = syscall.Signal(0x28) + SIGKILL = syscall.Signal(0x9) + SIGLOST = syscall.Signal(0x25) + SIGLWP = syscall.Signal(0x21) + SIGPIPE = syscall.Signal(0xd) + SIGPOLL = syscall.Signal(0x16) + SIGPROF = syscall.Signal(0x1d) + SIGPWR = syscall.Signal(0x13) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x17) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHAW = syscall.Signal(0x23) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x18) + SIGTTIN = syscall.Signal(0x1a) + SIGTTOU = syscall.Signal(0x1b) + SIGURG = syscall.Signal(0x15) + SIGUSR1 = syscall.Signal(0x10) + SIGUSR2 = syscall.Signal(0x11) + SIGVTALRM = syscall.Signal(0x1c) + SIGWAITING = syscall.Signal(0x20) + SIGWINCH = syscall.Signal(0x14) + SIGXCPU = syscall.Signal(0x1e) + SIGXFSZ = syscall.Signal(0x1f) + SIGXRES = syscall.Signal(0x26) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "not owner"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "I/O error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "arg list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file number"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "not enough space"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "file table overflow"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "ENOMSG", "no message of desired type"}, + {36, "EIDRM", "identifier removed"}, + {37, "ECHRNG", "channel number out of range"}, + {38, "EL2NSYNC", "level 2 not synchronized"}, + {39, "EL3HLT", "level 3 halted"}, + {40, "EL3RST", "level 3 reset"}, + {41, "ELNRNG", "link number out of range"}, + {42, "EUNATCH", "protocol driver not attached"}, + {43, "ENOCSI", "no CSI structure available"}, + {44, "EL2HLT", "level 2 halted"}, + {45, "EDEADLK", "deadlock situation detected/avoided"}, + {46, "ENOLCK", "no record locks available"}, + {47, "ECANCELED", "operation canceled"}, + {48, "ENOTSUP", "operation not supported"}, + {49, "EDQUOT", "disc quota exceeded"}, + {50, "EBADE", "bad exchange descriptor"}, + {51, "EBADR", "bad request descriptor"}, + {52, "EXFULL", "message tables full"}, + {53, "ENOANO", "anode table overflow"}, + {54, "EBADRQC", "bad request code"}, + {55, "EBADSLT", "invalid slot"}, + {56, "EDEADLOCK", "file locking deadlock"}, + {57, "EBFONT", "bad font file format"}, + {58, "EOWNERDEAD", "owner of the lock died"}, + {59, "ENOTRECOVERABLE", "lock is not recoverable"}, + {60, "ENOSTR", "not a stream device"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of stream resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "ELOCKUNMAPPED", "locked lock was unmapped "}, + {73, "ENOTACTIVE", "facility is not active"}, + {74, "EMULTIHOP", "multihop attempted"}, + {77, "EBADMSG", "not a data message"}, + {78, "ENAMETOOLONG", "file name too long"}, + {79, "EOVERFLOW", "value too large for defined data type"}, + {80, "ENOTUNIQ", "name not unique on network"}, + {81, "EBADFD", "file descriptor in bad state"}, + {82, "EREMCHG", "remote address changed"}, + {83, "ELIBACC", "can not access a needed shared library"}, + {84, "ELIBBAD", "accessing a corrupted shared library"}, + {85, "ELIBSCN", ".lib section in a.out corrupted"}, + {86, "ELIBMAX", "attempting to link in more shared libraries than system limit"}, + {87, "ELIBEXEC", "can not exec a shared library directly"}, + {88, "EILSEQ", "illegal byte sequence"}, + {89, "ENOSYS", "operation not applicable"}, + {90, "ELOOP", "number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS"}, + {91, "ERESTART", "error 91"}, + {92, "ESTRPIPE", "error 92"}, + {93, "ENOTEMPTY", "directory not empty"}, + {94, "EUSERS", "too many users"}, + {95, "ENOTSOCK", "socket operation on non-socket"}, + {96, "EDESTADDRREQ", "destination address required"}, + {97, "EMSGSIZE", "message too long"}, + {98, "EPROTOTYPE", "protocol wrong type for socket"}, + {99, "ENOPROTOOPT", "option not supported by protocol"}, + {120, "EPROTONOSUPPORT", "protocol not supported"}, + {121, "ESOCKTNOSUPPORT", "socket type not supported"}, + {122, "EOPNOTSUPP", "operation not supported on transport endpoint"}, + {123, "EPFNOSUPPORT", "protocol family not supported"}, + {124, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {125, "EADDRINUSE", "address already in use"}, + {126, "EADDRNOTAVAIL", "cannot assign requested address"}, + {127, "ENETDOWN", "network is down"}, + {128, "ENETUNREACH", "network is unreachable"}, + {129, "ENETRESET", "network dropped connection because of reset"}, + {130, "ECONNABORTED", "software caused connection abort"}, + {131, "ECONNRESET", "connection reset by peer"}, + {132, "ENOBUFS", "no buffer space available"}, + {133, "EISCONN", "transport endpoint is already connected"}, + {134, "ENOTCONN", "transport endpoint is not connected"}, + {143, "ESHUTDOWN", "cannot send after socket shutdown"}, + {144, "ETOOMANYREFS", "too many references: cannot splice"}, + {145, "ETIMEDOUT", "connection timed out"}, + {146, "ECONNREFUSED", "connection refused"}, + {147, "EHOSTDOWN", "host is down"}, + {148, "EHOSTUNREACH", "no route to host"}, + {149, "EALREADY", "operation already in progress"}, + {150, "EINPROGRESS", "operation now in progress"}, + {151, "ESTALE", "stale NFS file handle"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal Instruction"}, + {5, "SIGTRAP", "trace/Breakpoint Trap"}, + {6, "SIGABRT", "abort"}, + {7, "SIGEMT", "emulation Trap"}, + {8, "SIGFPE", "arithmetic Exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus Error"}, + {11, "SIGSEGV", "segmentation Fault"}, + {12, "SIGSYS", "bad System Call"}, + {13, "SIGPIPE", "broken Pipe"}, + {14, "SIGALRM", "alarm Clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGUSR1", "user Signal 1"}, + {17, "SIGUSR2", "user Signal 2"}, + {18, "SIGCHLD", "child Status Changed"}, + {19, "SIGPWR", "power-Fail/Restart"}, + {20, "SIGWINCH", "window Size Change"}, + {21, "SIGURG", "urgent Socket Condition"}, + {22, "SIGIO", "pollable Event"}, + {23, "SIGSTOP", "stopped (signal)"}, + {24, "SIGTSTP", "stopped (user)"}, + {25, "SIGCONT", "continued"}, + {26, "SIGTTIN", "stopped (tty input)"}, + {27, "SIGTTOU", "stopped (tty output)"}, + {28, "SIGVTALRM", "virtual Timer Expired"}, + {29, "SIGPROF", "profiling Timer Expired"}, + {30, "SIGXCPU", "cpu Limit Exceeded"}, + {31, "SIGXFSZ", "file Size Limit Exceeded"}, + {32, "SIGWAITING", "no runnable lwp"}, + {33, "SIGLWP", "inter-lwp signal"}, + {34, "SIGFREEZE", "checkpoint Freeze"}, + {35, "SIGTHAW", "checkpoint Thaw"}, + {36, "SIGCANCEL", "thread Cancellation"}, + {37, "SIGLOST", "resource Lost"}, + {38, "SIGXRES", "resource Control Exceeded"}, + {39, "SIGJVM1", "reserved for JVM 1"}, + {40, "SIGJVM2", "reserved for JVM 2"}, + {41, "SIGINFO", "information Request"}, +} diff --git a/vendor/golang.org/x/sys/unix/zptrace386_linux.go b/vendor/golang.org/x/sys/unix/zptrace386_linux.go new file mode 100644 index 0000000..2d21c49 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptrace386_linux.go @@ -0,0 +1,80 @@ +// Code generated by linux/mkall.go generatePtracePair(386, amd64). DO NOT EDIT. + +// +build linux +// +build 386 amd64 + +package unix + +import "unsafe" + +// PtraceRegs386 is the registers used by 386 binaries. +type PtraceRegs386 struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +// PtraceGetRegs386 fetches the registers used by 386 binaries. +func PtraceGetRegs386(pid int, regsout *PtraceRegs386) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegs386 sets the registers used by 386 binaries. +func PtraceSetRegs386(pid int, regs *PtraceRegs386) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsAmd64 is the registers used by amd64 binaries. +type PtraceRegsAmd64 struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries. +func PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsAmd64 sets the registers used by amd64 binaries. +func PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracearm_linux.go b/vendor/golang.org/x/sys/unix/zptracearm_linux.go new file mode 100644 index 0000000..faf23bb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracearm_linux.go @@ -0,0 +1,41 @@ +// Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT. + +// +build linux +// +build arm arm64 + +package unix + +import "unsafe" + +// PtraceRegsArm is the registers used by arm binaries. +type PtraceRegsArm struct { + Uregs [18]uint32 +} + +// PtraceGetRegsArm fetches the registers used by arm binaries. +func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm sets the registers used by arm binaries. +func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsArm64 is the registers used by arm64 binaries. +type PtraceRegsArm64 struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +// PtraceGetRegsArm64 fetches the registers used by arm64 binaries. +func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsArm64 sets the registers used by arm64 binaries. +func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemips_linux.go b/vendor/golang.org/x/sys/unix/zptracemips_linux.go new file mode 100644 index 0000000..c431131 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemips_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT. + +// +build linux +// +build mips mips64 + +package unix + +import "unsafe" + +// PtraceRegsMips is the registers used by mips binaries. +type PtraceRegsMips struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips fetches the registers used by mips binaries. +func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips sets the registers used by mips binaries. +func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64 is the registers used by mips64 binaries. +type PtraceRegsMips64 struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64 fetches the registers used by mips64 binaries. +func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64 sets the registers used by mips64 binaries. +func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go new file mode 100644 index 0000000..dc3d6d3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go @@ -0,0 +1,50 @@ +// Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT. + +// +build linux +// +build mipsle mips64le + +package unix + +import "unsafe" + +// PtraceRegsMipsle is the registers used by mipsle binaries. +type PtraceRegsMipsle struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMipsle fetches the registers used by mipsle binaries. +func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMipsle sets the registers used by mipsle binaries. +func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} + +// PtraceRegsMips64le is the registers used by mips64le binaries. +type PtraceRegsMips64le struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +// PtraceGetRegsMips64le fetches the registers used by mips64le binaries. +func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error { + return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout))) +} + +// PtraceSetRegsMips64le sets the registers used by mips64le binaries. +func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error { + return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs))) +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go new file mode 100644 index 0000000..79f6e05 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -0,0 +1,1450 @@ +// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc + +package unix + +/* +#include +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +int getrlimit64(int, uintptr_t); +int setrlimit64(int, uintptr_t); +long long lseek64(int, long long, int); +uintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + wpid = Pid_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + r0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + r = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)) + val = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.acct(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chdir(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.chroot(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + r0, er := C.close(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, er := C.dup(C.int(oldfd)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + C.exit(C.int(code)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + r0, er := C.fchdir(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + r0, er := C.fchmod(C.int(fd), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + r0, er := C.fdatasync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + r0, er := C.fsync(C.int(fd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, er := C.getpgid(C.int(pid)) + pgid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := C.getpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := C.getpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := C.getppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, er := C.getpriority(C.int(which), C.int(who)) + prio = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + r0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, er := C.getsid(C.int(pid)) + sid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + r0, er := C.kill(C.int(pid), C.int(sig)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + r0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + var _p2 int + _p2 = len(buf) + r0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(oldpath))) + _p1 := uintptr(unsafe.Pointer(C.CString(newpath))) + r0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + r0, er := C.setpgid(C.int(pid), C.int(pgid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, er := C.setsid() + pid = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + r0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + r0, er := C.setuid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + r0, er := C.setgid(C.int(uid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + r0, er := C.setpriority(C.int(which), C.int(who), C.int(prio)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + C.sync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms)))) + ticks = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := C.umask(C.int(mask)) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + r0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlink(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + r0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(p))), C.size_t(np)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + r0, er := C.dup2(C.int(oldfd), C.int(newfd)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + r0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + r0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + r0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + r0, er := C.ftruncate(C.int(fd), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := C.getegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := C.geteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := C.getgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := C.getuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + r0, er := C.listen(C.int(s), C.int(n)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + r0, er := C.pause() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + r0, er := C.setregid(C.int(rgid), C.int(egid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + r0, er := C.setreuid(C.int(ruid), C.int(euid)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + r0, er := C.shutdown(C.int(fd), C.int(how)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags)) + n = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + r0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + nn = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + r0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + r0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + r0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, er := C.socket(C.int(domain), C.int(typ), C.int(proto)) + fd = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + r0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + r0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + var _p1 int + _p1 = len(p) + r0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + var _p1 int + _p1 = len(buf) + r0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + r0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + r0, er := C.mlockall(C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + var _p1 int + _p1 = len(b) + r0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + r0, er := C.munlockall() + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + r0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout)) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + r0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t)))) + tt = Time_t(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(path))) + r0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + r0, er := C.setrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence)) + off = int64(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)) + xaddr = uintptr(r0) + if uintptr(r0) == ^uintptr(0) && er != nil { + err = er + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go new file mode 100644 index 0000000..52802bf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -0,0 +1,1416 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 + +package unix + +import ( + "unsafe" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getcwd(buf []byte) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirent(fd int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) { + r0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage))) + wpid = Pid_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, e1 := callioctl(fd, int(req), arg) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) { + r0, e1 := callfcntl(fd, cmd, uintptr(arg)) + r = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) { + _, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callacct(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchdir(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callchroot(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, e1 := callclose(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, e1 := calldup(oldfd) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + callexit(code) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, e1 := callfchdir(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, e1 := callfchmod(fd, mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, e1 := callfdatasync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, e1 := callfsync(fd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, e1 := callgetpgid(pid) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pid int) { + r0, _ := callgetpgrp() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := callgetpid() + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := callgetppid() + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, e1 := callgetpriority(which, who) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, e1 := callgetsid(pid) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig Signal) (err error) { + _, e1 := callkill(pid, int(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, e1 := callsetpgid(pid, pgid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, e1 := callsetsid() + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, e1 := callsetuid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(uid int) (err error) { + _, e1 := callsetgid(uid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, e1 := callsetpriority(which, who, prio) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + callsync() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, e1 := calltimes(uintptr(unsafe.Pointer(tms))) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := callumask(mask) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, e1 := calluname(uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlink(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callread(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, e1 := callwrite(fd, uintptr(unsafe.Pointer(p)), np) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, e1 := calldup2(oldfd, newfd) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, e1 := callposix_fadvise64(fd, offset, length, advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, e1 := callfchown(fd, uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, e1 := callftruncate(fd, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := callgetegid() + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := callgeteuid() + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := callgetgid() + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := callgetuid() + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, e1 := calllisten(s, n) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, e1 := callpause() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, e1 := callsetregid(rgid, egid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, e1 := callsetreuid(ruid, euid) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, e1 := callshutdown(fd, how) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callbind(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, e1 := callconnect(s, uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list))) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, e1 := callsetsockopt(s, level, name, uintptr(val), vallen) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, e1 := callsocket(domain, typ, proto) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, e1 := callsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, e1 := callmunmap(addr, length) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, e1 := callmlockall(flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, e1 := callmunlockall() + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, e1 := callpipe(uintptr(unsafe.Pointer(p))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tv *Timeval, tzp *Timezone) (err error) { + _, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, e1 := calltime(uintptr(unsafe.Pointer(t))) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, e1 := callsetrlimit(resource, uintptr(unsafe.Pointer(rlim))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, e1 := calllseek(fd, offset, whence) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, e1 := callmmap64(addr, length, prot, flags, fd, offset) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go new file mode 100644 index 0000000..a2b24e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -0,0 +1,1172 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build !gccgo + +package unix + +import ( + "unsafe" +) + +//go:cgo_import_dynamic libc_utimes utimes "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_accept accept "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getdirent getdirent "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_acct acct "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chdir chdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_chroot chroot "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_close close "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup dup "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_exit exit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fsync fsync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpid getpid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getppid getppid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsid getsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_kill kill "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_syslog syslog "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknod mknod "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_open64 open64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_openat openat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_read read "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_readlink readlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_renameat renameat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setdomainname setdomainname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsid setsid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_settimeofday settimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setuid setuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgid setgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statx statx "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sync sync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_times times "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umask umask "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_uname uname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlink unlink "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ustat ustat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_write write "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fchown fchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstat fstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_fstatfs fstatfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getegid getegid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgid getgid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getuid getuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lchown lchown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_listen listen "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lstat lstat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_shutdown shutdown "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_splice splice "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_stat stat "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_statfs statfs "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_truncate truncate "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_bind bind "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_connect connect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockopt getsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socket socket "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_socketpair socketpair "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getpeername getpeername "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlock mlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_msync msync "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlock munlock "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_pipe pipe "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_poll poll "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_mmap64 mmap64 "libc.a/shr_64.o" + +//go:linkname libc_utimes libc_utimes +//go:linkname libc_utimensat libc_utimensat +//go:linkname libc_getcwd libc_getcwd +//go:linkname libc_accept libc_accept +//go:linkname libc_getdirent libc_getdirent +//go:linkname libc_wait4 libc_wait4 +//go:linkname libc_ioctl libc_ioctl +//go:linkname libc_fcntl libc_fcntl +//go:linkname libc_acct libc_acct +//go:linkname libc_chdir libc_chdir +//go:linkname libc_chroot libc_chroot +//go:linkname libc_close libc_close +//go:linkname libc_dup libc_dup +//go:linkname libc_exit libc_exit +//go:linkname libc_faccessat libc_faccessat +//go:linkname libc_fchdir libc_fchdir +//go:linkname libc_fchmod libc_fchmod +//go:linkname libc_fchmodat libc_fchmodat +//go:linkname libc_fchownat libc_fchownat +//go:linkname libc_fdatasync libc_fdatasync +//go:linkname libc_fsync libc_fsync +//go:linkname libc_getpgid libc_getpgid +//go:linkname libc_getpgrp libc_getpgrp +//go:linkname libc_getpid libc_getpid +//go:linkname libc_getppid libc_getppid +//go:linkname libc_getpriority libc_getpriority +//go:linkname libc_getrusage libc_getrusage +//go:linkname libc_getsid libc_getsid +//go:linkname libc_kill libc_kill +//go:linkname libc_syslog libc_syslog +//go:linkname libc_mkdir libc_mkdir +//go:linkname libc_mkdirat libc_mkdirat +//go:linkname libc_mkfifo libc_mkfifo +//go:linkname libc_mknod libc_mknod +//go:linkname libc_mknodat libc_mknodat +//go:linkname libc_nanosleep libc_nanosleep +//go:linkname libc_open64 libc_open64 +//go:linkname libc_openat libc_openat +//go:linkname libc_read libc_read +//go:linkname libc_readlink libc_readlink +//go:linkname libc_renameat libc_renameat +//go:linkname libc_setdomainname libc_setdomainname +//go:linkname libc_sethostname libc_sethostname +//go:linkname libc_setpgid libc_setpgid +//go:linkname libc_setsid libc_setsid +//go:linkname libc_settimeofday libc_settimeofday +//go:linkname libc_setuid libc_setuid +//go:linkname libc_setgid libc_setgid +//go:linkname libc_setpriority libc_setpriority +//go:linkname libc_statx libc_statx +//go:linkname libc_sync libc_sync +//go:linkname libc_times libc_times +//go:linkname libc_umask libc_umask +//go:linkname libc_uname libc_uname +//go:linkname libc_unlink libc_unlink +//go:linkname libc_unlinkat libc_unlinkat +//go:linkname libc_ustat libc_ustat +//go:linkname libc_write libc_write +//go:linkname libc_dup2 libc_dup2 +//go:linkname libc_posix_fadvise64 libc_posix_fadvise64 +//go:linkname libc_fchown libc_fchown +//go:linkname libc_fstat libc_fstat +//go:linkname libc_fstatat libc_fstatat +//go:linkname libc_fstatfs libc_fstatfs +//go:linkname libc_ftruncate libc_ftruncate +//go:linkname libc_getegid libc_getegid +//go:linkname libc_geteuid libc_geteuid +//go:linkname libc_getgid libc_getgid +//go:linkname libc_getuid libc_getuid +//go:linkname libc_lchown libc_lchown +//go:linkname libc_listen libc_listen +//go:linkname libc_lstat libc_lstat +//go:linkname libc_pause libc_pause +//go:linkname libc_pread64 libc_pread64 +//go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_pselect libc_pselect +//go:linkname libc_setregid libc_setregid +//go:linkname libc_setreuid libc_setreuid +//go:linkname libc_shutdown libc_shutdown +//go:linkname libc_splice libc_splice +//go:linkname libc_stat libc_stat +//go:linkname libc_statfs libc_statfs +//go:linkname libc_truncate libc_truncate +//go:linkname libc_bind libc_bind +//go:linkname libc_connect libc_connect +//go:linkname libc_getgroups libc_getgroups +//go:linkname libc_setgroups libc_setgroups +//go:linkname libc_getsockopt libc_getsockopt +//go:linkname libc_setsockopt libc_setsockopt +//go:linkname libc_socket libc_socket +//go:linkname libc_socketpair libc_socketpair +//go:linkname libc_getpeername libc_getpeername +//go:linkname libc_getsockname libc_getsockname +//go:linkname libc_recvfrom libc_recvfrom +//go:linkname libc_sendto libc_sendto +//go:linkname libc_recvmsg libc_recvmsg +//go:linkname libc_sendmsg libc_sendmsg +//go:linkname libc_munmap libc_munmap +//go:linkname libc_madvise libc_madvise +//go:linkname libc_mprotect libc_mprotect +//go:linkname libc_mlock libc_mlock +//go:linkname libc_mlockall libc_mlockall +//go:linkname libc_msync libc_msync +//go:linkname libc_munlock libc_munlock +//go:linkname libc_munlockall libc_munlockall +//go:linkname libc_pipe libc_pipe +//go:linkname libc_poll libc_poll +//go:linkname libc_gettimeofday libc_gettimeofday +//go:linkname libc_time libc_time +//go:linkname libc_utime libc_utime +//go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_getrlimit libc_getrlimit +//go:linkname libc_setrlimit libc_setrlimit +//go:linkname libc_lseek libc_lseek +//go:linkname libc_mmap64 libc_mmap64 + +type syscallFunc uintptr + +var ( + libc_utimes, + libc_utimensat, + libc_getcwd, + libc_accept, + libc_getdirent, + libc_wait4, + libc_ioctl, + libc_fcntl, + libc_acct, + libc_chdir, + libc_chroot, + libc_close, + libc_dup, + libc_exit, + libc_faccessat, + libc_fchdir, + libc_fchmod, + libc_fchmodat, + libc_fchownat, + libc_fdatasync, + libc_fsync, + libc_getpgid, + libc_getpgrp, + libc_getpid, + libc_getppid, + libc_getpriority, + libc_getrusage, + libc_getsid, + libc_kill, + libc_syslog, + libc_mkdir, + libc_mkdirat, + libc_mkfifo, + libc_mknod, + libc_mknodat, + libc_nanosleep, + libc_open64, + libc_openat, + libc_read, + libc_readlink, + libc_renameat, + libc_setdomainname, + libc_sethostname, + libc_setpgid, + libc_setsid, + libc_settimeofday, + libc_setuid, + libc_setgid, + libc_setpriority, + libc_statx, + libc_sync, + libc_times, + libc_umask, + libc_uname, + libc_unlink, + libc_unlinkat, + libc_ustat, + libc_write, + libc_dup2, + libc_posix_fadvise64, + libc_fchown, + libc_fstat, + libc_fstatat, + libc_fstatfs, + libc_ftruncate, + libc_getegid, + libc_geteuid, + libc_getgid, + libc_getuid, + libc_lchown, + libc_listen, + libc_lstat, + libc_pause, + libc_pread64, + libc_pwrite64, + libc_pselect, + libc_setregid, + libc_setreuid, + libc_shutdown, + libc_splice, + libc_stat, + libc_statfs, + libc_truncate, + libc_bind, + libc_connect, + libc_getgroups, + libc_setgroups, + libc_getsockopt, + libc_setsockopt, + libc_socket, + libc_socketpair, + libc_getpeername, + libc_getsockname, + libc_recvfrom, + libc_sendto, + libc_recvmsg, + libc_sendmsg, + libc_munmap, + libc_madvise, + libc_mprotect, + libc_mlock, + libc_mlockall, + libc_msync, + libc_munlock, + libc_munlockall, + libc_pipe, + libc_poll, + libc_gettimeofday, + libc_time, + libc_utime, + libc_getsystemcfg, + libc_getrlimit, + libc_setrlimit, + libc_lseek, + libc_mmap64 syscallFunc +) + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go new file mode 100644 index 0000000..5491c89 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -0,0 +1,1051 @@ +// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build aix,ppc64 +// +build gccgo + +package unix + +/* +#include +int utimes(uintptr_t, uintptr_t); +int utimensat(int, uintptr_t, uintptr_t, int); +int getcwd(uintptr_t, size_t); +int accept(int, uintptr_t, uintptr_t); +int getdirent(int, uintptr_t, size_t); +int wait4(int, uintptr_t, int, uintptr_t); +int ioctl(int, int, uintptr_t); +int fcntl(uintptr_t, int, uintptr_t); +int acct(uintptr_t); +int chdir(uintptr_t); +int chroot(uintptr_t); +int close(int); +int dup(int); +void exit(int); +int faccessat(int, uintptr_t, unsigned int, int); +int fchdir(int); +int fchmod(int, unsigned int); +int fchmodat(int, uintptr_t, unsigned int, int); +int fchownat(int, uintptr_t, int, int, int); +int fdatasync(int); +int fsync(int); +int getpgid(int); +int getpgrp(); +int getpid(); +int getppid(); +int getpriority(int, int); +int getrusage(int, uintptr_t); +int getsid(int); +int kill(int, int); +int syslog(int, uintptr_t, size_t); +int mkdir(int, uintptr_t, unsigned int); +int mkdirat(int, uintptr_t, unsigned int); +int mkfifo(uintptr_t, unsigned int); +int mknod(uintptr_t, unsigned int, int); +int mknodat(int, uintptr_t, unsigned int, int); +int nanosleep(uintptr_t, uintptr_t); +int open64(uintptr_t, int, unsigned int); +int openat(int, uintptr_t, int, unsigned int); +int read(int, uintptr_t, size_t); +int readlink(uintptr_t, uintptr_t, size_t); +int renameat(int, uintptr_t, int, uintptr_t); +int setdomainname(uintptr_t, size_t); +int sethostname(uintptr_t, size_t); +int setpgid(int, int); +int setsid(); +int settimeofday(uintptr_t); +int setuid(int); +int setgid(int); +int setpriority(int, int, int); +int statx(int, uintptr_t, int, int, uintptr_t); +int sync(); +uintptr_t times(uintptr_t); +int umask(int); +int uname(uintptr_t); +int unlink(uintptr_t); +int unlinkat(int, uintptr_t, int); +int ustat(int, uintptr_t); +int write(int, uintptr_t, size_t); +int dup2(int, int); +int posix_fadvise64(int, long long, long long, int); +int fchown(int, int, int); +int fstat(int, uintptr_t); +int fstatat(int, uintptr_t, uintptr_t, int); +int fstatfs(int, uintptr_t); +int ftruncate(int, long long); +int getegid(); +int geteuid(); +int getgid(); +int getuid(); +int lchown(uintptr_t, int, int); +int listen(int, int); +int lstat(uintptr_t, uintptr_t); +int pause(); +int pread64(int, uintptr_t, size_t, long long); +int pwrite64(int, uintptr_t, size_t, long long); +int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); +int setregid(int, int); +int setreuid(int, int); +int shutdown(int, int); +long long splice(int, uintptr_t, int, uintptr_t, int, int); +int stat(uintptr_t, uintptr_t); +int statfs(uintptr_t, uintptr_t); +int truncate(uintptr_t, long long); +int bind(int, uintptr_t, uintptr_t); +int connect(int, uintptr_t, uintptr_t); +int getgroups(int, uintptr_t); +int setgroups(int, uintptr_t); +int getsockopt(int, int, int, uintptr_t, uintptr_t); +int setsockopt(int, int, int, uintptr_t, uintptr_t); +int socket(int, int, int); +int socketpair(int, int, int, uintptr_t); +int getpeername(int, uintptr_t, uintptr_t); +int getsockname(int, uintptr_t, uintptr_t); +int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); +int recvmsg(int, uintptr_t, int); +int sendmsg(int, uintptr_t, int); +int munmap(uintptr_t, uintptr_t); +int madvise(uintptr_t, size_t, int); +int mprotect(uintptr_t, size_t, int); +int mlock(uintptr_t, size_t); +int mlockall(int); +int msync(uintptr_t, size_t, int); +int munlock(uintptr_t, size_t); +int munlockall(); +int pipe(uintptr_t); +int poll(uintptr_t, int, int); +int gettimeofday(uintptr_t, uintptr_t); +int time(uintptr_t); +int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int getrlimit(int, uintptr_t); +int setrlimit(int, uintptr_t); +long long lseek(int, long long, int); +uintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long); + +*/ +import "C" +import ( + "syscall" +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callacct(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.acct(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chdir(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.chroot(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callclose(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.close(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup(oldfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup(C.int(oldfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callexit(code int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.exit(C.int(code))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchdir(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchdir(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmod(C.int(fd), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfdatasync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fdatasync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfsync(fd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fsync(C.int(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpgrp() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpgrp()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetppid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getppid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpriority(which int, who int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpriority(C.int(which), C.int(who))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsid(pid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsid(C.int(pid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callkill(pid int, sig int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.kill(C.int(pid), C.int(sig))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpgid(C.int(pid), C.int(pgid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.settimeofday(C.uintptr_t(tv))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetuid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setuid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgid(uid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgid(C.int(uid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsync() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sync()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltimes(tms uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.times(C.uintptr_t(tms))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callumask(mask int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umask(C.int(mask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calluname(buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.uname(C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlink(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetegid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getegid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgeteuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.geteuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetuid() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getuid()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllisten(s int, n int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.listen(C.int(s), C.int(n))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpause() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pause()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setregid(C.int(rgid), C.int(egid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setreuid(C.int(ruid), C.int(euid))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callshutdown(fd int, how int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.shutdown(C.int(fd), C.int(how))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.recvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.sendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmlockall(flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mlockall(C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmunlockall() (r1 uintptr, e1 Errno) { + r1 = uintptr(C.munlockall()) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpipe(p uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.pipe(C.uintptr_t(p))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calltime(t uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.time(C.uintptr_t(t))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getsystemcfg(C.int(label))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callsetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.setrlimit(C.int(resource), C.uintptr_t(rlim))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))) + e1 = syscall.GetErrno() + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go new file mode 100644 index 0000000..c4ec7ff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -l32 -tags darwin,386,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go new file mode 100644 index 0000000..23346dc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -0,0 +1,2505 @@ +// go run mksyscall.go -l32 -tags darwin,386,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,386,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s new file mode 100644 index 0000000..37b85b4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -0,0 +1,284 @@ +// go run mkasm_darwin.go 386 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go new file mode 100644 index 0000000..2581e89 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -0,0 +1,1810 @@ +// go run mksyscall.go -tags darwin,amd64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES64, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT64, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go new file mode 100644 index 0000000..c142e33 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -0,0 +1,2520 @@ +// go run mksyscall.go -tags darwin,amd64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,amd64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_clock_gettime_trampoline), uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_clock_gettime_trampoline() + +//go:linkname libc_clock_gettime libc_clock_gettime +//go:cgo_import_dynamic libc_clock_gettime clock_gettime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat64_trampoline() + +//go:linkname libc_fstat64 libc_fstat64 +//go:cgo_import_dynamic libc_fstat64 fstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat64_trampoline() + +//go:linkname libc_fstatat64 libc_fstatat64 +//go:cgo_import_dynamic libc_fstatat64 fstatat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs64_trampoline() + +//go:linkname libc_fstatfs64 libc_fstatfs64 +//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc___getdirentries64_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___getdirentries64_trampoline() + +//go:linkname libc___getdirentries64 libc___getdirentries64 +//go:cgo_import_dynamic libc___getdirentries64 __getdirentries64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat64_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat64_trampoline() + +//go:linkname libc_getfsstat64 libc_getfsstat64 +//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat64_trampoline() + +//go:linkname libc_lstat64 libc_lstat64 +//go:cgo_import_dynamic libc_lstat64 lstat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat64_trampoline() + +//go:linkname libc_stat64 libc_stat64 +//go:cgo_import_dynamic libc_stat64 stat64 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs64_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs64_trampoline() + +//go:linkname libc_statfs64 libc_statfs64 +//go:cgo_import_dynamic libc_statfs64 statfs64 "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s new file mode 100644 index 0000000..1a39151 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -0,0 +1,286 @@ +// go run mkasm_darwin.go amd64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_clock_gettime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_clock_gettime(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat64(SB) +TEXT ·libc_fstatat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat64(SB) +TEXT ·libc_fstatfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs64(SB) +TEXT ·libc___getdirentries64_trampoline(SB),NOSPLIT,$0-0 + JMP libc___getdirentries64(SB) +TEXT ·libc_getfsstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat64(SB) +TEXT ·libc_lstat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat64(SB) +TEXT ·libc_stat64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat64(SB) +TEXT ·libc_statfs64_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs64(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go new file mode 100644 index 0000000..f8caece --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -l32 -tags darwin,arm,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go new file mode 100644 index 0000000..01cffbf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -l32 -tags darwin,arm,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall9(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(offset>>32), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := syscall_syscall6(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall9(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int32(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s new file mode 100644 index 0000000..994056f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go new file mode 100644 index 0000000..3fd0f3c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -0,0 +1,1793 @@ +// go run mksyscall.go -tags darwin,arm64,!go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,!go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := Syscall6(SYS_FLISTXATTR, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := Syscall6(SYS_SETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXCHANGEDATA, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := RawSyscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := Syscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIVEXEC, uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go new file mode 100644 index 0000000..8f2691d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -0,0 +1,2483 @@ +// go run mksyscall.go -tags darwin,arm64,go1.12 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build darwin,arm64,go1.12 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getgroups_trampoline() + +//go:linkname libc_getgroups libc_getgroups +//go:cgo_import_dynamic libc_getgroups getgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgroups_trampoline), uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgroups_trampoline() + +//go:linkname libc_setgroups libc_setgroups +//go:cgo_import_dynamic libc_setgroups setgroups "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_wait4_trampoline), uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_wait4_trampoline() + +//go:linkname libc_wait4 libc_wait4 +//go:cgo_import_dynamic libc_wait4 wait4 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_accept_trampoline), uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_accept_trampoline() + +//go:linkname libc_accept libc_accept +//go:cgo_import_dynamic libc_accept accept "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_bind_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_bind_trampoline() + +//go:linkname libc_bind libc_bind +//go:cgo_import_dynamic libc_bind bind "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_connect_trampoline), uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_connect_trampoline() + +//go:linkname libc_connect libc_connect +//go:cgo_import_dynamic libc_connect connect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_socket_trampoline), uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socket_trampoline() + +//go:linkname libc_socket libc_socket +//go:cgo_import_dynamic libc_socket socket "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockopt_trampoline() + +//go:linkname libc_getsockopt libc_getsockopt +//go:cgo_import_dynamic libc_getsockopt getsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setsockopt_trampoline), uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsockopt_trampoline() + +//go:linkname libc_setsockopt libc_setsockopt +//go:cgo_import_dynamic libc_setsockopt setsockopt "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getpeername_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpeername_trampoline() + +//go:linkname libc_getpeername libc_getpeername +//go:cgo_import_dynamic libc_getpeername getpeername "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getsockname_trampoline), uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsockname_trampoline() + +//go:linkname libc_getsockname libc_getsockname +//go:cgo_import_dynamic libc_getsockname getsockname "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_shutdown_trampoline), uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_shutdown_trampoline() + +//go:linkname libc_shutdown libc_shutdown +//go:cgo_import_dynamic libc_shutdown shutdown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := syscall_rawSyscall6(funcPC(libc_socketpair_trampoline), uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_socketpair_trampoline() + +//go:linkname libc_socketpair libc_socketpair +//go:cgo_import_dynamic libc_socketpair socketpair "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_recvfrom_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvfrom_trampoline() + +//go:linkname libc_recvfrom libc_recvfrom +//go:cgo_import_dynamic libc_recvfrom recvfrom "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc_sendto_trampoline), uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendto_trampoline() + +//go:linkname libc_sendto libc_sendto +//go:cgo_import_dynamic libc_sendto sendto "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_recvmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_recvmsg_trampoline() + +//go:linkname libc_recvmsg libc_recvmsg +//go:cgo_import_dynamic libc_recvmsg recvmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_sendmsg_trampoline), uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendmsg_trampoline() + +//go:linkname libc_sendmsg libc_sendmsg +//go:cgo_import_dynamic libc_sendmsg sendmsg "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_kevent_trampoline), uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kevent_trampoline() + +//go:linkname libc_kevent libc_kevent +//go:cgo_import_dynamic libc_kevent kevent "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall6(funcPC(libc___sysctl_trampoline), uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc___sysctl_trampoline() + +//go:linkname libc___sysctl libc___sysctl +//go:cgo_import_dynamic libc___sysctl __sysctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_utimes_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_utimes_trampoline() + +//go:linkname libc_utimes libc_utimes +//go:cgo_import_dynamic libc_utimes utimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_futimes_trampoline), uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_futimes_trampoline() + +//go:linkname libc_futimes libc_futimes +//go:cgo_import_dynamic libc_futimes futimes "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fcntl_trampoline), uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fcntl_trampoline() + +//go:linkname libc_fcntl libc_fcntl +//go:cgo_import_dynamic libc_fcntl fcntl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_poll_trampoline), uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_poll_trampoline() + +//go:linkname libc_poll libc_poll +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_madvise_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_madvise_trampoline() + +//go:linkname libc_madvise libc_madvise +//go:cgo_import_dynamic libc_madvise madvise "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlock_trampoline() + +//go:linkname libc_mlock libc_mlock +//go:cgo_import_dynamic libc_mlock mlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_mlockall_trampoline), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mlockall_trampoline() + +//go:linkname libc_mlockall libc_mlockall +//go:cgo_import_dynamic libc_mlockall mlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_mprotect_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mprotect_trampoline() + +//go:linkname libc_mprotect libc_mprotect +//go:cgo_import_dynamic libc_mprotect mprotect "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_msync_trampoline), uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_msync_trampoline() + +//go:linkname libc_msync libc_msync +//go:cgo_import_dynamic libc_msync msync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall(funcPC(libc_munlock_trampoline), uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlock_trampoline() + +//go:linkname libc_munlock libc_munlock +//go:cgo_import_dynamic libc_munlock munlock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munlockall_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munlockall_trampoline() + +//go:linkname libc_munlockall libc_munlockall +//go:cgo_import_dynamic libc_munlockall munlockall "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getattrlist_trampoline() + +//go:linkname libc_getattrlist libc_getattrlist +//go:cgo_import_dynamic libc_getattrlist getattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_pipe_trampoline), 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pipe_trampoline() + +//go:linkname libc_pipe libc_pipe +//go:cgo_import_dynamic libc_pipe pipe "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_getxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getxattr_trampoline() + +//go:linkname libc_getxattr libc_getxattr +//go:cgo_import_dynamic libc_getxattr getxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_fgetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options)) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fgetxattr_trampoline() + +//go:linkname libc_fgetxattr libc_fgetxattr +//go:cgo_import_dynamic libc_fgetxattr fgetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_setxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setxattr_trampoline() + +//go:linkname libc_setxattr libc_setxattr +//go:cgo_import_dynamic libc_setxattr setxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fsetxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsetxattr_trampoline() + +//go:linkname libc_fsetxattr libc_fsetxattr +//go:cgo_import_dynamic libc_fsetxattr fsetxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func removexattr(path string, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_removexattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_removexattr_trampoline() + +//go:linkname libc_removexattr libc_removexattr +//go:cgo_import_dynamic libc_removexattr removexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fremovexattr(fd int, attr string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_fremovexattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fremovexattr_trampoline() + +//go:linkname libc_fremovexattr libc_fremovexattr +//go:cgo_import_dynamic libc_fremovexattr fremovexattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func listxattr(path string, dest *byte, size int, options int) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_listxattr_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listxattr_trampoline() + +//go:linkname libc_listxattr libc_listxattr +//go:cgo_import_dynamic libc_listxattr listxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_flistxattr_trampoline), uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flistxattr_trampoline() + +//go:linkname libc_flistxattr libc_flistxattr +//go:cgo_import_dynamic libc_flistxattr flistxattr "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_setattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setattrlist_trampoline() + +//go:linkname libc_setattrlist libc_setattrlist +//go:cgo_import_dynamic libc_setattrlist setattrlist "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kill(pid int, signum int, posix int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_kill_trampoline), uintptr(pid), uintptr(signum), uintptr(posix)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kill_trampoline() + +//go:linkname libc_kill libc_kill +//go:cgo_import_dynamic libc_kill kill "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ioctl_trampoline), uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ioctl_trampoline() + +//go:linkname libc_ioctl libc_ioctl +//go:cgo_import_dynamic libc_ioctl ioctl "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_sendfile_trampoline), uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sendfile_trampoline() + +//go:linkname libc_sendfile libc_sendfile +//go:cgo_import_dynamic libc_sendfile sendfile "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_access_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_access_trampoline() + +//go:linkname libc_access libc_access +//go:cgo_import_dynamic libc_access access "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_adjtime_trampoline), uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_adjtime_trampoline() + +//go:linkname libc_adjtime libc_adjtime +//go:cgo_import_dynamic libc_adjtime adjtime "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chdir_trampoline() + +//go:linkname libc_chdir libc_chdir +//go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chflags_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chflags_trampoline() + +//go:linkname libc_chflags libc_chflags +//go:cgo_import_dynamic libc_chflags chflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chmod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chmod_trampoline() + +//go:linkname libc_chmod libc_chmod +//go:cgo_import_dynamic libc_chmod chmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chown_trampoline() + +//go:linkname libc_chown libc_chown +//go:cgo_import_dynamic libc_chown chown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_chroot_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_chroot_trampoline() + +//go:linkname libc_chroot libc_chroot +//go:cgo_import_dynamic libc_chroot chroot "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_close_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_close_trampoline() + +//go:linkname libc_close libc_close +//go:cgo_import_dynamic libc_close close "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_dup_trampoline), uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup_trampoline() + +//go:linkname libc_dup libc_dup +//go:cgo_import_dynamic libc_dup dup "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_dup2_trampoline), uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_dup2_trampoline() + +//go:linkname libc_dup2 libc_dup2 +//go:cgo_import_dynamic libc_dup2 dup2 "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exchangedata(path1 string, path2 string, options int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path1) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(path2) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_exchangedata_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_exchangedata_trampoline() + +//go:linkname libc_exchangedata libc_exchangedata +//go:cgo_import_dynamic libc_exchangedata exchangedata "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + syscall_syscall(funcPC(libc_exit_trampoline), uintptr(code), 0, 0) + return +} + +func libc_exit_trampoline() + +//go:linkname libc_exit libc_exit +//go:cgo_import_dynamic libc_exit exit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_faccessat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_faccessat_trampoline() + +//go:linkname libc_faccessat libc_faccessat +//go:cgo_import_dynamic libc_faccessat faccessat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchdir_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchdir_trampoline() + +//go:linkname libc_fchdir libc_fchdir +//go:cgo_import_dynamic libc_fchdir fchdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchflags_trampoline), uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchflags_trampoline() + +//go:linkname libc_fchflags libc_fchflags +//go:cgo_import_dynamic libc_fchflags fchflags "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchmod_trampoline), uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmod_trampoline() + +//go:linkname libc_fchmod libc_fchmod +//go:cgo_import_dynamic libc_fchmod fchmod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchmodat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchmodat_trampoline() + +//go:linkname libc_fchmodat libc_fchmodat +//go:cgo_import_dynamic libc_fchmodat fchmodat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fchown_trampoline), uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchown_trampoline() + +//go:linkname libc_fchown libc_fchown +//go:cgo_import_dynamic libc_fchown fchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fchownat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fchownat_trampoline() + +//go:linkname libc_fchownat libc_fchownat +//go:cgo_import_dynamic libc_fchownat fchownat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_flock_trampoline), uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_flock_trampoline() + +//go:linkname libc_flock libc_flock +//go:cgo_import_dynamic libc_flock flock "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_fpathconf_trampoline), uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fpathconf_trampoline() + +//go:linkname libc_fpathconf libc_fpathconf +//go:cgo_import_dynamic libc_fpathconf fpathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fsync_trampoline), uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fsync_trampoline() + +//go:linkname libc_fsync libc_fsync +//go:cgo_import_dynamic libc_fsync fsync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_ftruncate_trampoline), uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ftruncate_trampoline() + +//go:linkname libc_ftruncate libc_ftruncate +//go:cgo_import_dynamic libc_ftruncate ftruncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := syscall_syscall(funcPC(libc_getdtablesize_trampoline), 0, 0, 0) + size = int(r0) + return +} + +func libc_getdtablesize_trampoline() + +//go:linkname libc_getdtablesize libc_getdtablesize +//go:cgo_import_dynamic libc_getdtablesize getdtablesize "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getegid_trampoline), 0, 0, 0) + egid = int(r0) + return +} + +func libc_getegid_trampoline() + +//go:linkname libc_getegid libc_getegid +//go:cgo_import_dynamic libc_getegid getegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_geteuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_geteuid_trampoline() + +//go:linkname libc_geteuid libc_geteuid +//go:cgo_import_dynamic libc_geteuid geteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getgid_trampoline), 0, 0, 0) + gid = int(r0) + return +} + +func libc_getgid_trampoline() + +//go:linkname libc_getgid libc_getgid +//go:cgo_import_dynamic libc_getgid getgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getpgid_trampoline), uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpgid_trampoline() + +//go:linkname libc_getpgid libc_getpgid +//go:cgo_import_dynamic libc_getpgid getpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpgrp_trampoline), 0, 0, 0) + pgrp = int(r0) + return +} + +func libc_getpgrp_trampoline() + +//go:linkname libc_getpgrp libc_getpgrp +//go:cgo_import_dynamic libc_getpgrp getpgrp "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getpid_trampoline), 0, 0, 0) + pid = int(r0) + return +} + +func libc_getpid_trampoline() + +//go:linkname libc_getpid libc_getpid +//go:cgo_import_dynamic libc_getpid getpid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getppid_trampoline), 0, 0, 0) + ppid = int(r0) + return +} + +func libc_getppid_trampoline() + +//go:linkname libc_getppid libc_getppid +//go:cgo_import_dynamic libc_getppid getppid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getpriority_trampoline), uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getpriority_trampoline() + +//go:linkname libc_getpriority libc_getpriority +//go:cgo_import_dynamic libc_getpriority getpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrlimit_trampoline() + +//go:linkname libc_getrlimit libc_getrlimit +//go:cgo_import_dynamic libc_getrlimit getrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_getrusage_trampoline), uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getrusage_trampoline() + +//go:linkname libc_getrusage libc_getrusage +//go:cgo_import_dynamic libc_getrusage getrusage "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_getsid_trampoline), uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getsid_trampoline() + +//go:linkname libc_getsid libc_getsid +//go:cgo_import_dynamic libc_getsid getsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) + uid = int(r0) + return +} + +func libc_getuid_trampoline() + +//go:linkname libc_getuid libc_getuid +//go:cgo_import_dynamic libc_getuid getuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := syscall_rawSyscall(funcPC(libc_issetugid_trampoline), 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +func libc_issetugid_trampoline() + +//go:linkname libc_issetugid libc_issetugid +//go:cgo_import_dynamic libc_issetugid issetugid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_kqueue_trampoline), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_kqueue_trampoline() + +//go:linkname libc_kqueue libc_kqueue +//go:cgo_import_dynamic libc_kqueue kqueue "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lchown_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lchown_trampoline() + +//go:linkname libc_lchown libc_lchown +//go:cgo_import_dynamic libc_lchown lchown "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_link_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_link_trampoline() + +//go:linkname libc_link libc_link +//go:cgo_import_dynamic libc_link link "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_linkat_trampoline), uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_linkat_trampoline() + +//go:linkname libc_linkat libc_linkat +//go:cgo_import_dynamic libc_linkat linkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_listen_trampoline), uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_listen_trampoline() + +//go:linkname libc_listen libc_listen +//go:cgo_import_dynamic libc_listen listen "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdir_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdir_trampoline() + +//go:linkname libc_mkdir libc_mkdir +//go:cgo_import_dynamic libc_mkdir mkdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkdirat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkdirat_trampoline() + +//go:linkname libc_mkdirat libc_mkdirat +//go:cgo_import_dynamic libc_mkdirat mkdirat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mkfifo_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mkfifo_trampoline() + +//go:linkname libc_mkfifo libc_mkfifo +//go:cgo_import_dynamic libc_mkfifo mkfifo "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_mknod_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mknod_trampoline() + +//go:linkname libc_mknod libc_mknod +//go:cgo_import_dynamic libc_mknod mknod "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_open_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_open_trampoline() + +//go:linkname libc_open libc_open +//go:cgo_import_dynamic libc_open open "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall6(funcPC(libc_openat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_openat_trampoline() + +//go:linkname libc_openat libc_openat +//go:cgo_import_dynamic libc_openat openat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := syscall_syscall(funcPC(libc_pathconf_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pathconf_trampoline() + +//go:linkname libc_pathconf libc_pathconf +//go:cgo_import_dynamic libc_pathconf pathconf "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pread_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pread_trampoline() + +//go:linkname libc_pread libc_pread +//go:cgo_import_dynamic libc_pread pread "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_pwrite_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_pwrite_trampoline() + +//go:linkname libc_pwrite libc_pwrite +//go:cgo_import_dynamic libc_pwrite pwrite "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_read_trampoline() + +//go:linkname libc_read libc_read +//go:cgo_import_dynamic libc_read read "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_readlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlink_trampoline() + +//go:linkname libc_readlink libc_readlink +//go:cgo_import_dynamic libc_readlink readlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall6(funcPC(libc_readlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_readlinkat_trampoline() + +//go:linkname libc_readlinkat libc_readlinkat +//go:cgo_import_dynamic libc_readlinkat readlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rename_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rename_trampoline() + +//go:linkname libc_rename libc_rename +//go:cgo_import_dynamic libc_rename rename "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_renameat_trampoline), uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_renameat_trampoline() + +//go:linkname libc_renameat libc_renameat +//go:cgo_import_dynamic libc_renameat renameat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_revoke_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_revoke_trampoline() + +//go:linkname libc_revoke libc_revoke +//go:cgo_import_dynamic libc_revoke revoke "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_rmdir_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_rmdir_trampoline() + +//go:linkname libc_rmdir libc_rmdir +//go:cgo_import_dynamic libc_rmdir rmdir "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_lseek_trampoline), uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lseek_trampoline() + +//go:linkname libc_lseek libc_lseek +//go:cgo_import_dynamic libc_lseek lseek "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_select_trampoline), uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_select_trampoline() + +//go:linkname libc_select libc_select +//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setegid_trampoline), uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setegid_trampoline() + +//go:linkname libc_setegid libc_setegid +//go:cgo_import_dynamic libc_setegid setegid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_seteuid_trampoline), uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_seteuid_trampoline() + +//go:linkname libc_seteuid libc_seteuid +//go:cgo_import_dynamic libc_seteuid seteuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setgid_trampoline), uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setgid_trampoline() + +//go:linkname libc_setgid libc_setgid +//go:cgo_import_dynamic libc_setgid setgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_setlogin_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setlogin_trampoline() + +//go:linkname libc_setlogin libc_setlogin +//go:cgo_import_dynamic libc_setlogin setlogin "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setpgid_trampoline), uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpgid_trampoline() + +//go:linkname libc_setpgid libc_setpgid +//go:cgo_import_dynamic libc_setpgid setpgid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setpriority_trampoline), uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setpriority_trampoline() + +//go:linkname libc_setpriority libc_setpriority +//go:cgo_import_dynamic libc_setpriority setpriority "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setprivexec(flag int) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_setprivexec_trampoline), uintptr(flag), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setprivexec_trampoline() + +//go:linkname libc_setprivexec libc_setprivexec +//go:cgo_import_dynamic libc_setprivexec setprivexec "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setregid_trampoline), uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setregid_trampoline() + +//go:linkname libc_setregid libc_setregid +//go:cgo_import_dynamic libc_setregid setregid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setreuid_trampoline), uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setreuid_trampoline() + +//go:linkname libc_setreuid libc_setreuid +//go:cgo_import_dynamic libc_setreuid setreuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setrlimit_trampoline), uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setrlimit_trampoline() + +//go:linkname libc_setrlimit libc_setrlimit +//go:cgo_import_dynamic libc_setrlimit setrlimit "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := syscall_rawSyscall(funcPC(libc_setsid_trampoline), 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setsid_trampoline() + +//go:linkname libc_setsid libc_setsid +//go:cgo_import_dynamic libc_setsid setsid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_settimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_settimeofday_trampoline() + +//go:linkname libc_settimeofday libc_settimeofday +//go:cgo_import_dynamic libc_settimeofday settimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_setuid_trampoline), uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_setuid_trampoline() + +//go:linkname libc_setuid libc_setuid +//go:cgo_import_dynamic libc_setuid setuid "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlink_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlink_trampoline() + +//go:linkname libc_symlink libc_symlink +//go:cgo_import_dynamic libc_symlink symlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_symlinkat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_symlinkat_trampoline() + +//go:linkname libc_symlinkat libc_symlinkat +//go:cgo_import_dynamic libc_symlinkat symlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_sync_trampoline), 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_sync_trampoline() + +//go:linkname libc_sync libc_sync +//go:cgo_import_dynamic libc_sync sync "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_truncate_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_truncate_trampoline() + +//go:linkname libc_truncate libc_truncate +//go:cgo_import_dynamic libc_truncate truncate "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := syscall_syscall(funcPC(libc_umask_trampoline), uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +func libc_umask_trampoline() + +//go:linkname libc_umask libc_umask +//go:cgo_import_dynamic libc_umask umask "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_undelete_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_undelete_trampoline() + +//go:linkname libc_undelete libc_undelete +//go:cgo_import_dynamic libc_undelete undelete "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlink_trampoline), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlink_trampoline() + +//go:linkname libc_unlink libc_unlink +//go:cgo_import_dynamic libc_unlink unlink "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unlinkat_trampoline), uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unlinkat_trampoline() + +//go:linkname libc_unlinkat libc_unlinkat +//go:cgo_import_dynamic libc_unlinkat unlinkat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_unmount_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_unmount_trampoline() + +//go:linkname libc_unmount libc_unmount +//go:cgo_import_dynamic libc_unmount unmount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_write_trampoline() + +//go:linkname libc_write libc_write +//go:cgo_import_dynamic libc_write write "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := syscall_syscall6(funcPC(libc_mmap_trampoline), uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_mmap_trampoline() + +//go:linkname libc_mmap libc_mmap +//go:cgo_import_dynamic libc_mmap mmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_munmap_trampoline), uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_munmap_trampoline() + +//go:linkname libc_munmap libc_munmap +//go:cgo_import_dynamic libc_munmap munmap "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_read_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_write_trampoline), uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { + r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + sec = int64(r0) + usec = int32(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstat_trampoline() + +//go:linkname libc_fstat libc_fstat +//go:cgo_import_dynamic libc_fstat fstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(funcPC(libc_fstatat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatat_trampoline() + +//go:linkname libc_fstatat libc_fstatat +//go:cgo_import_dynamic libc_fstatat fstatat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := syscall_syscall(funcPC(libc_fstatfs_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_fstatfs_trampoline() + +//go:linkname libc_fstatfs libc_fstatfs +//go:cgo_import_dynamic libc_fstatfs fstatfs "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) { + r0, _, e1 := syscall_syscall(funcPC(libc_getfsstat_trampoline), uintptr(buf), uintptr(size), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_getfsstat_trampoline() + +//go:linkname libc_getfsstat libc_getfsstat +//go:cgo_import_dynamic libc_getfsstat getfsstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_lstat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_lstat_trampoline() + +//go:linkname libc_lstat libc_lstat +//go:cgo_import_dynamic libc_lstat lstat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_stat_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_stat_trampoline() + +//go:linkname libc_stat libc_stat +//go:cgo_import_dynamic libc_stat stat "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := syscall_syscall(funcPC(libc_statfs_trampoline), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_statfs_trampoline() + +//go:linkname libc_statfs libc_statfs +//go:cgo_import_dynamic libc_statfs statfs "/usr/lib/libSystem.B.dylib" diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s new file mode 100644 index 0000000..61dc0d4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -0,0 +1,282 @@ +// go run mkasm_darwin.go arm64 +// Code generated by the command above; DO NOT EDIT. + +// +build go1.12 + +#include "textflag.h" +TEXT ·libc_getgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgroups(SB) +TEXT ·libc_setgroups_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgroups(SB) +TEXT ·libc_wait4_trampoline(SB),NOSPLIT,$0-0 + JMP libc_wait4(SB) +TEXT ·libc_accept_trampoline(SB),NOSPLIT,$0-0 + JMP libc_accept(SB) +TEXT ·libc_bind_trampoline(SB),NOSPLIT,$0-0 + JMP libc_bind(SB) +TEXT ·libc_connect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_connect(SB) +TEXT ·libc_socket_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socket(SB) +TEXT ·libc_getsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockopt(SB) +TEXT ·libc_setsockopt_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsockopt(SB) +TEXT ·libc_getpeername_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpeername(SB) +TEXT ·libc_getsockname_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsockname(SB) +TEXT ·libc_shutdown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_shutdown(SB) +TEXT ·libc_socketpair_trampoline(SB),NOSPLIT,$0-0 + JMP libc_socketpair(SB) +TEXT ·libc_recvfrom_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvfrom(SB) +TEXT ·libc_sendto_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendto(SB) +TEXT ·libc_recvmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_recvmsg(SB) +TEXT ·libc_sendmsg_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendmsg(SB) +TEXT ·libc_kevent_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kevent(SB) +TEXT ·libc___sysctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc___sysctl(SB) +TEXT ·libc_utimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_utimes(SB) +TEXT ·libc_futimes_trampoline(SB),NOSPLIT,$0-0 + JMP libc_futimes(SB) +TEXT ·libc_fcntl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fcntl(SB) +TEXT ·libc_poll_trampoline(SB),NOSPLIT,$0-0 + JMP libc_poll(SB) +TEXT ·libc_madvise_trampoline(SB),NOSPLIT,$0-0 + JMP libc_madvise(SB) +TEXT ·libc_mlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlock(SB) +TEXT ·libc_mlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mlockall(SB) +TEXT ·libc_mprotect_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mprotect(SB) +TEXT ·libc_msync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_msync(SB) +TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlock(SB) +TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munlockall(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) +TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getattrlist(SB) +TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pipe(SB) +TEXT ·libc_getxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getxattr(SB) +TEXT ·libc_fgetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fgetxattr(SB) +TEXT ·libc_setxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setxattr(SB) +TEXT ·libc_fsetxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsetxattr(SB) +TEXT ·libc_removexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_removexattr(SB) +TEXT ·libc_fremovexattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fremovexattr(SB) +TEXT ·libc_listxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listxattr(SB) +TEXT ·libc_flistxattr_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flistxattr(SB) +TEXT ·libc_setattrlist_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setattrlist(SB) +TEXT ·libc_kill_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kill(SB) +TEXT ·libc_ioctl_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ioctl(SB) +TEXT ·libc_sendfile_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sendfile(SB) +TEXT ·libc_access_trampoline(SB),NOSPLIT,$0-0 + JMP libc_access(SB) +TEXT ·libc_adjtime_trampoline(SB),NOSPLIT,$0-0 + JMP libc_adjtime(SB) +TEXT ·libc_chdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chdir(SB) +TEXT ·libc_chflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chflags(SB) +TEXT ·libc_chmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chmod(SB) +TEXT ·libc_chown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chown(SB) +TEXT ·libc_chroot_trampoline(SB),NOSPLIT,$0-0 + JMP libc_chroot(SB) +TEXT ·libc_close_trampoline(SB),NOSPLIT,$0-0 + JMP libc_close(SB) +TEXT ·libc_dup_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup(SB) +TEXT ·libc_dup2_trampoline(SB),NOSPLIT,$0-0 + JMP libc_dup2(SB) +TEXT ·libc_exchangedata_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exchangedata(SB) +TEXT ·libc_exit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_exit(SB) +TEXT ·libc_faccessat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_faccessat(SB) +TEXT ·libc_fchdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchdir(SB) +TEXT ·libc_fchflags_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchflags(SB) +TEXT ·libc_fchmod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmod(SB) +TEXT ·libc_fchmodat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchmodat(SB) +TEXT ·libc_fchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchown(SB) +TEXT ·libc_fchownat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fchownat(SB) +TEXT ·libc_flock_trampoline(SB),NOSPLIT,$0-0 + JMP libc_flock(SB) +TEXT ·libc_fpathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fpathconf(SB) +TEXT ·libc_fsync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fsync(SB) +TEXT ·libc_ftruncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ftruncate(SB) +TEXT ·libc_getdtablesize_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getdtablesize(SB) +TEXT ·libc_getegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getegid(SB) +TEXT ·libc_geteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_geteuid(SB) +TEXT ·libc_getgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getgid(SB) +TEXT ·libc_getpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgid(SB) +TEXT ·libc_getpgrp_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpgrp(SB) +TEXT ·libc_getpid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpid(SB) +TEXT ·libc_getppid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getppid(SB) +TEXT ·libc_getpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getpriority(SB) +TEXT ·libc_getrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrlimit(SB) +TEXT ·libc_getrusage_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getrusage(SB) +TEXT ·libc_getsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getsid(SB) +TEXT ·libc_getuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getuid(SB) +TEXT ·libc_issetugid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_issetugid(SB) +TEXT ·libc_kqueue_trampoline(SB),NOSPLIT,$0-0 + JMP libc_kqueue(SB) +TEXT ·libc_lchown_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lchown(SB) +TEXT ·libc_link_trampoline(SB),NOSPLIT,$0-0 + JMP libc_link(SB) +TEXT ·libc_linkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_linkat(SB) +TEXT ·libc_listen_trampoline(SB),NOSPLIT,$0-0 + JMP libc_listen(SB) +TEXT ·libc_mkdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdir(SB) +TEXT ·libc_mkdirat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkdirat(SB) +TEXT ·libc_mkfifo_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mkfifo(SB) +TEXT ·libc_mknod_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mknod(SB) +TEXT ·libc_open_trampoline(SB),NOSPLIT,$0-0 + JMP libc_open(SB) +TEXT ·libc_openat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_openat(SB) +TEXT ·libc_pathconf_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pathconf(SB) +TEXT ·libc_pread_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pread(SB) +TEXT ·libc_pwrite_trampoline(SB),NOSPLIT,$0-0 + JMP libc_pwrite(SB) +TEXT ·libc_read_trampoline(SB),NOSPLIT,$0-0 + JMP libc_read(SB) +TEXT ·libc_readlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlink(SB) +TEXT ·libc_readlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_readlinkat(SB) +TEXT ·libc_rename_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rename(SB) +TEXT ·libc_renameat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_renameat(SB) +TEXT ·libc_revoke_trampoline(SB),NOSPLIT,$0-0 + JMP libc_revoke(SB) +TEXT ·libc_rmdir_trampoline(SB),NOSPLIT,$0-0 + JMP libc_rmdir(SB) +TEXT ·libc_lseek_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lseek(SB) +TEXT ·libc_select_trampoline(SB),NOSPLIT,$0-0 + JMP libc_select(SB) +TEXT ·libc_setegid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setegid(SB) +TEXT ·libc_seteuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_seteuid(SB) +TEXT ·libc_setgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setgid(SB) +TEXT ·libc_setlogin_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setlogin(SB) +TEXT ·libc_setpgid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpgid(SB) +TEXT ·libc_setpriority_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setpriority(SB) +TEXT ·libc_setprivexec_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setprivexec(SB) +TEXT ·libc_setregid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setregid(SB) +TEXT ·libc_setreuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setreuid(SB) +TEXT ·libc_setrlimit_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setrlimit(SB) +TEXT ·libc_setsid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setsid(SB) +TEXT ·libc_settimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_settimeofday(SB) +TEXT ·libc_setuid_trampoline(SB),NOSPLIT,$0-0 + JMP libc_setuid(SB) +TEXT ·libc_symlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlink(SB) +TEXT ·libc_symlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_symlinkat(SB) +TEXT ·libc_sync_trampoline(SB),NOSPLIT,$0-0 + JMP libc_sync(SB) +TEXT ·libc_truncate_trampoline(SB),NOSPLIT,$0-0 + JMP libc_truncate(SB) +TEXT ·libc_umask_trampoline(SB),NOSPLIT,$0-0 + JMP libc_umask(SB) +TEXT ·libc_undelete_trampoline(SB),NOSPLIT,$0-0 + JMP libc_undelete(SB) +TEXT ·libc_unlink_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlink(SB) +TEXT ·libc_unlinkat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unlinkat(SB) +TEXT ·libc_unmount_trampoline(SB),NOSPLIT,$0-0 + JMP libc_unmount(SB) +TEXT ·libc_write_trampoline(SB),NOSPLIT,$0-0 + JMP libc_write(SB) +TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_mmap(SB) +TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 + JMP libc_munmap(SB) +TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 + JMP libc_gettimeofday(SB) +TEXT ·libc_fstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstat(SB) +TEXT ·libc_fstatat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatat(SB) +TEXT ·libc_fstatfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_fstatfs(SB) +TEXT ·libc_getfsstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_getfsstat(SB) +TEXT ·libc_lstat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_lstat(SB) +TEXT ·libc_stat_trampoline(SB),NOSPLIT,$0-0 + JMP libc_stat(SB) +TEXT ·libc_statfs_trampoline(SB),NOSPLIT,$0-0 + JMP libc_statfs(SB) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go new file mode 100644 index 0000000..ae9f1a2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -0,0 +1,1659 @@ +// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build dragonfly,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (r int, w int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + r = int(r0) + w = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpread(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go new file mode 100644 index 0000000..80903e4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go new file mode 100644 index 0000000..cd250ff --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go new file mode 100644 index 0000000..290a9c2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go new file mode 100644 index 0000000..c6df9d2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -0,0 +1,2015 @@ +// go run mksyscall.go -tags freebsd,arm64 -- syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build freebsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, stat *stat_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat_freebsd12(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat(fd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, stat *stat_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs(path string, stat *statfs_freebsd11_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func statfs_freebsd12(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go new file mode 100644 index 0000000..9855afa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -0,0 +1,2220 @@ +// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go new file mode 100644 index 0000000..773e251 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -0,0 +1,2387 @@ +// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func inotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go new file mode 100644 index 0000000..ccea621 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -0,0 +1,2342 @@ +// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID32, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID32, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID32, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID32, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go new file mode 100644 index 0000000..712c7a3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -0,0 +1,2244 @@ +// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go new file mode 100644 index 0000000..68b3251 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -0,0 +1,2400 @@ +// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r0)<<32 | int64(r1)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go new file mode 100644 index 0000000..a8be407 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -0,0 +1,2371 @@ +// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go new file mode 100644 index 0000000..1351028 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -0,0 +1,2371 @@ +// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mips64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstat(fd int, st *stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fstatat(dirfd int, path string, st *stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func lstat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func stat(path string, st *stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go new file mode 100644 index 0000000..327b4f9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -0,0 +1,2400 @@ +// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,mipsle + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (p1 int, p2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + p1 = int(r0) + p2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setrlimit(resource int, rlim *rlimit32) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go new file mode 100644 index 0000000..c145bd3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -0,0 +1,2449 @@ +// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go new file mode 100644 index 0000000..cd8179c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -0,0 +1,2449 @@ +// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,ppc64le + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ioperm(from int, num int, on int) (err error) { + _, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Iopl(level int) (err error) { + _, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Time(t *Time_t) (tt Time_t, err error) { + r0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0) + tt = Time_t(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func syncFileRange2(fd int, flags int, off int64, n int64) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go new file mode 100644 index 0000000..2e90cf0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -0,0 +1,2224 @@ +// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go new file mode 100644 index 0000000..fe9c7e1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -0,0 +1,2219 @@ +// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,s390x + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate(size int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE, uintptr(size), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go new file mode 100644 index 0000000..d4a2100 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -0,0 +1,2382 @@ +// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build linux,sparc64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) { + r0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fchmodat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlJoin(cmd int, arg2 string) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg2) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg3) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(arg4) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) { + var _p0 unsafe.Pointer + if len(payload) > 0 { + _p0 = unsafe.Pointer(&payload[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(arg) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(source) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(target) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(fstype) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Acct(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(payload) > 0 { + _p2 = unsafe.Pointer(&payload[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtimex(buf *Timex) (state int, err error) { + r0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0) + state = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGetres(clockid int32, res *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockGettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { + _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) { + r0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func DeleteModule(name string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(oldfd int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup3(oldfd int, newfd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCreate1(flag int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) { + _, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Eventfd(initval uint, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + SyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func FinitModule(fd int, params string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flistxattr(fd int, dest []byte) (sz int, err error) { + var _p0 unsafe.Pointer + if len(dest) > 0 { + _p0 = unsafe.Pointer(&dest[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fremovexattr(fd int, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrandom(buf []byte, flags int) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettid() (tid int) { + r0, _ := RawSyscallNoError(SYS_GETTID, 0, 0, 0) + tid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InitModule(moduleImage []byte, params string) (err error) { + var _p0 unsafe.Pointer + if len(moduleImage) > 0 { + _p0 = unsafe.Pointer(&moduleImage[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + var _p1 *byte + _p1, err = BytePtrFromString(params) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_INIT_MODULE, uintptr(_p0), uintptr(len(moduleImage)), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_INOTIFY_ADD_WATCH, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mask)) + watchdesc = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit1(flags int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT1, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyRmWatch(fd int, watchdesc uint32) (success int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_RM_WATCH, uintptr(fd), uintptr(watchdesc), 0) + success = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_KILL, uintptr(pid), uintptr(sig), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Klogctl(typ int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lgetxattr(path string, attr string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(dest) > 0 { + _p2 = unsafe.Pointer(&dest[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_LGETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(dest)), 0, 0) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Llistxattr(path string, dest []byte) (sz int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(dest) > 0 { + _p1 = unsafe.Pointer(&dest[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_LLISTXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest))) + sz = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lremovexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LREMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lsetxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_LSETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func MemfdCreate(name string, flags int) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_MEMFD_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func PivotRoot(newroot string, putold string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(newroot) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(putold) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func prlimit(pid int, resource int, newlimit *Rlimit, old *Rlimit) (err error) { + _, _, e1 := RawSyscall6(SYS_PRLIMIT64, uintptr(pid), uintptr(resource), uintptr(unsafe.Pointer(newlimit)), uintptr(unsafe.Pointer(old)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Removexattr(path string, attr string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(keyType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(description) + if err != nil { + return + } + var _p2 *byte + _p2, err = BytePtrFromString(callback) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0) + id = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setdomainname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setns(fd int, nstype int) (err error) { + _, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setxattr(path string, attr string, data []byte, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attr) + if err != nil { + return + } + var _p2 unsafe.Pointer + if len(data) > 0 { + _p2 = unsafe.Pointer(&data[0]) + } else { + _p2 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Signalfd(fd int, mask *Sigset_t, flags int) { + SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() { + SyscallNoError(SYS_SYNC, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Syncfs(fd int) (err error) { + _, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sysinfo(info *Sysinfo_t) (err error) { + _, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tgkill(tgid int, tid int, sig syscall.Signal) (err error) { + _, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unshare(flags int) (err error) { + _, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func exitThread(code int) (err error) { + _, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, p *byte, np int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(p)), uintptr(np)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func faccessat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func InotifyInit() (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_INOTIFY_INIT, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsgid(gid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setfsuid(uid int) (err error) { + _, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(dirfd int, path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go new file mode 100644 index 0000000..642db76 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go new file mode 100644 index 0000000..59585fe --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go new file mode 100644 index 0000000..6ec3143 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go new file mode 100644 index 0000000..603d144 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -0,0 +1,1826 @@ +// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build netbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe() (fd1 int, fd2 int, err error) { + r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0) + fd1 = int(r0) + fd2 = int(r1) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go new file mode 100644 index 0000000..6a489fa --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,386 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go new file mode 100644 index 0000000..30cba43 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -openbsd -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 0000000..fa1beda --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go new file mode 100644 index 0000000..5f61476 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -0,0 +1,1953 @@ +// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build solaris,amd64 + +package unix + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_pipe pipe "libc.so" +//go:cgo_import_dynamic libc_getsockname getsockname "libsocket.so" +//go:cgo_import_dynamic libc_getcwd getcwd "libc.so" +//go:cgo_import_dynamic libc_getgroups getgroups "libc.so" +//go:cgo_import_dynamic libc_setgroups setgroups "libc.so" +//go:cgo_import_dynamic libc_wait4 wait4 "libc.so" +//go:cgo_import_dynamic libc_gethostname gethostname "libc.so" +//go:cgo_import_dynamic libc_utimes utimes "libc.so" +//go:cgo_import_dynamic libc_utimensat utimensat "libc.so" +//go:cgo_import_dynamic libc_fcntl fcntl "libc.so" +//go:cgo_import_dynamic libc_futimesat futimesat "libc.so" +//go:cgo_import_dynamic libc_accept accept "libsocket.so" +//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" +//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" +//go:cgo_import_dynamic libc_acct acct "libc.so" +//go:cgo_import_dynamic libc___makedev __makedev "libc.so" +//go:cgo_import_dynamic libc___major __major "libc.so" +//go:cgo_import_dynamic libc___minor __minor "libc.so" +//go:cgo_import_dynamic libc_ioctl ioctl "libc.so" +//go:cgo_import_dynamic libc_poll poll "libc.so" +//go:cgo_import_dynamic libc_access access "libc.so" +//go:cgo_import_dynamic libc_adjtime adjtime "libc.so" +//go:cgo_import_dynamic libc_chdir chdir "libc.so" +//go:cgo_import_dynamic libc_chmod chmod "libc.so" +//go:cgo_import_dynamic libc_chown chown "libc.so" +//go:cgo_import_dynamic libc_chroot chroot "libc.so" +//go:cgo_import_dynamic libc_close close "libc.so" +//go:cgo_import_dynamic libc_creat creat "libc.so" +//go:cgo_import_dynamic libc_dup dup "libc.so" +//go:cgo_import_dynamic libc_dup2 dup2 "libc.so" +//go:cgo_import_dynamic libc_exit exit "libc.so" +//go:cgo_import_dynamic libc_faccessat faccessat "libc.so" +//go:cgo_import_dynamic libc_fchdir fchdir "libc.so" +//go:cgo_import_dynamic libc_fchmod fchmod "libc.so" +//go:cgo_import_dynamic libc_fchmodat fchmodat "libc.so" +//go:cgo_import_dynamic libc_fchown fchown "libc.so" +//go:cgo_import_dynamic libc_fchownat fchownat "libc.so" +//go:cgo_import_dynamic libc_fdatasync fdatasync "libc.so" +//go:cgo_import_dynamic libc_flock flock "libc.so" +//go:cgo_import_dynamic libc_fpathconf fpathconf "libc.so" +//go:cgo_import_dynamic libc_fstat fstat "libc.so" +//go:cgo_import_dynamic libc_fstatat fstatat "libc.so" +//go:cgo_import_dynamic libc_fstatvfs fstatvfs "libc.so" +//go:cgo_import_dynamic libc_getdents getdents "libc.so" +//go:cgo_import_dynamic libc_getgid getgid "libc.so" +//go:cgo_import_dynamic libc_getpid getpid "libc.so" +//go:cgo_import_dynamic libc_getpgid getpgid "libc.so" +//go:cgo_import_dynamic libc_getpgrp getpgrp "libc.so" +//go:cgo_import_dynamic libc_geteuid geteuid "libc.so" +//go:cgo_import_dynamic libc_getegid getegid "libc.so" +//go:cgo_import_dynamic libc_getppid getppid "libc.so" +//go:cgo_import_dynamic libc_getpriority getpriority "libc.so" +//go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" +//go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" +//go:cgo_import_dynamic libc_getuid getuid "libc.so" +//go:cgo_import_dynamic libc_kill kill "libc.so" +//go:cgo_import_dynamic libc_lchown lchown "libc.so" +//go:cgo_import_dynamic libc_link link "libc.so" +//go:cgo_import_dynamic libc___xnet_llisten __xnet_llisten "libsocket.so" +//go:cgo_import_dynamic libc_lstat lstat "libc.so" +//go:cgo_import_dynamic libc_madvise madvise "libc.so" +//go:cgo_import_dynamic libc_mkdir mkdir "libc.so" +//go:cgo_import_dynamic libc_mkdirat mkdirat "libc.so" +//go:cgo_import_dynamic libc_mkfifo mkfifo "libc.so" +//go:cgo_import_dynamic libc_mkfifoat mkfifoat "libc.so" +//go:cgo_import_dynamic libc_mknod mknod "libc.so" +//go:cgo_import_dynamic libc_mknodat mknodat "libc.so" +//go:cgo_import_dynamic libc_mlock mlock "libc.so" +//go:cgo_import_dynamic libc_mlockall mlockall "libc.so" +//go:cgo_import_dynamic libc_mprotect mprotect "libc.so" +//go:cgo_import_dynamic libc_msync msync "libc.so" +//go:cgo_import_dynamic libc_munlock munlock "libc.so" +//go:cgo_import_dynamic libc_munlockall munlockall "libc.so" +//go:cgo_import_dynamic libc_nanosleep nanosleep "libc.so" +//go:cgo_import_dynamic libc_open open "libc.so" +//go:cgo_import_dynamic libc_openat openat "libc.so" +//go:cgo_import_dynamic libc_pathconf pathconf "libc.so" +//go:cgo_import_dynamic libc_pause pause "libc.so" +//go:cgo_import_dynamic libc_pread pread "libc.so" +//go:cgo_import_dynamic libc_pwrite pwrite "libc.so" +//go:cgo_import_dynamic libc_read read "libc.so" +//go:cgo_import_dynamic libc_readlink readlink "libc.so" +//go:cgo_import_dynamic libc_rename rename "libc.so" +//go:cgo_import_dynamic libc_renameat renameat "libc.so" +//go:cgo_import_dynamic libc_rmdir rmdir "libc.so" +//go:cgo_import_dynamic libc_lseek lseek "libc.so" +//go:cgo_import_dynamic libc_select select "libc.so" +//go:cgo_import_dynamic libc_setegid setegid "libc.so" +//go:cgo_import_dynamic libc_seteuid seteuid "libc.so" +//go:cgo_import_dynamic libc_setgid setgid "libc.so" +//go:cgo_import_dynamic libc_sethostname sethostname "libc.so" +//go:cgo_import_dynamic libc_setpgid setpgid "libc.so" +//go:cgo_import_dynamic libc_setpriority setpriority "libc.so" +//go:cgo_import_dynamic libc_setregid setregid "libc.so" +//go:cgo_import_dynamic libc_setreuid setreuid "libc.so" +//go:cgo_import_dynamic libc_setrlimit setrlimit "libc.so" +//go:cgo_import_dynamic libc_setsid setsid "libc.so" +//go:cgo_import_dynamic libc_setuid setuid "libc.so" +//go:cgo_import_dynamic libc_shutdown shutdown "libsocket.so" +//go:cgo_import_dynamic libc_stat stat "libc.so" +//go:cgo_import_dynamic libc_statvfs statvfs "libc.so" +//go:cgo_import_dynamic libc_symlink symlink "libc.so" +//go:cgo_import_dynamic libc_sync sync "libc.so" +//go:cgo_import_dynamic libc_times times "libc.so" +//go:cgo_import_dynamic libc_truncate truncate "libc.so" +//go:cgo_import_dynamic libc_fsync fsync "libc.so" +//go:cgo_import_dynamic libc_ftruncate ftruncate "libc.so" +//go:cgo_import_dynamic libc_umask umask "libc.so" +//go:cgo_import_dynamic libc_uname uname "libc.so" +//go:cgo_import_dynamic libc_umount umount "libc.so" +//go:cgo_import_dynamic libc_unlink unlink "libc.so" +//go:cgo_import_dynamic libc_unlinkat unlinkat "libc.so" +//go:cgo_import_dynamic libc_ustat ustat "libc.so" +//go:cgo_import_dynamic libc_utime utime "libc.so" +//go:cgo_import_dynamic libc___xnet_bind __xnet_bind "libsocket.so" +//go:cgo_import_dynamic libc___xnet_connect __xnet_connect "libsocket.so" +//go:cgo_import_dynamic libc_mmap mmap "libc.so" +//go:cgo_import_dynamic libc_munmap munmap "libc.so" +//go:cgo_import_dynamic libc_sendfile sendfile "libsendfile.so" +//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socket __xnet_socket "libsocket.so" +//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair "libsocket.so" +//go:cgo_import_dynamic libc_write write "libc.so" +//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" +//go:cgo_import_dynamic libc_getpeername getpeername "libsocket.so" +//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" +//go:cgo_import_dynamic libc_recvfrom recvfrom "libsocket.so" + +//go:linkname procpipe libc_pipe +//go:linkname procgetsockname libc_getsockname +//go:linkname procGetcwd libc_getcwd +//go:linkname procgetgroups libc_getgroups +//go:linkname procsetgroups libc_setgroups +//go:linkname procwait4 libc_wait4 +//go:linkname procgethostname libc_gethostname +//go:linkname procutimes libc_utimes +//go:linkname procutimensat libc_utimensat +//go:linkname procfcntl libc_fcntl +//go:linkname procfutimesat libc_futimesat +//go:linkname procaccept libc_accept +//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg +//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg +//go:linkname procacct libc_acct +//go:linkname proc__makedev libc___makedev +//go:linkname proc__major libc___major +//go:linkname proc__minor libc___minor +//go:linkname procioctl libc_ioctl +//go:linkname procpoll libc_poll +//go:linkname procAccess libc_access +//go:linkname procAdjtime libc_adjtime +//go:linkname procChdir libc_chdir +//go:linkname procChmod libc_chmod +//go:linkname procChown libc_chown +//go:linkname procChroot libc_chroot +//go:linkname procClose libc_close +//go:linkname procCreat libc_creat +//go:linkname procDup libc_dup +//go:linkname procDup2 libc_dup2 +//go:linkname procExit libc_exit +//go:linkname procFaccessat libc_faccessat +//go:linkname procFchdir libc_fchdir +//go:linkname procFchmod libc_fchmod +//go:linkname procFchmodat libc_fchmodat +//go:linkname procFchown libc_fchown +//go:linkname procFchownat libc_fchownat +//go:linkname procFdatasync libc_fdatasync +//go:linkname procFlock libc_flock +//go:linkname procFpathconf libc_fpathconf +//go:linkname procFstat libc_fstat +//go:linkname procFstatat libc_fstatat +//go:linkname procFstatvfs libc_fstatvfs +//go:linkname procGetdents libc_getdents +//go:linkname procGetgid libc_getgid +//go:linkname procGetpid libc_getpid +//go:linkname procGetpgid libc_getpgid +//go:linkname procGetpgrp libc_getpgrp +//go:linkname procGeteuid libc_geteuid +//go:linkname procGetegid libc_getegid +//go:linkname procGetppid libc_getppid +//go:linkname procGetpriority libc_getpriority +//go:linkname procGetrlimit libc_getrlimit +//go:linkname procGetrusage libc_getrusage +//go:linkname procGettimeofday libc_gettimeofday +//go:linkname procGetuid libc_getuid +//go:linkname procKill libc_kill +//go:linkname procLchown libc_lchown +//go:linkname procLink libc_link +//go:linkname proc__xnet_llisten libc___xnet_llisten +//go:linkname procLstat libc_lstat +//go:linkname procMadvise libc_madvise +//go:linkname procMkdir libc_mkdir +//go:linkname procMkdirat libc_mkdirat +//go:linkname procMkfifo libc_mkfifo +//go:linkname procMkfifoat libc_mkfifoat +//go:linkname procMknod libc_mknod +//go:linkname procMknodat libc_mknodat +//go:linkname procMlock libc_mlock +//go:linkname procMlockall libc_mlockall +//go:linkname procMprotect libc_mprotect +//go:linkname procMsync libc_msync +//go:linkname procMunlock libc_munlock +//go:linkname procMunlockall libc_munlockall +//go:linkname procNanosleep libc_nanosleep +//go:linkname procOpen libc_open +//go:linkname procOpenat libc_openat +//go:linkname procPathconf libc_pathconf +//go:linkname procPause libc_pause +//go:linkname procPread libc_pread +//go:linkname procPwrite libc_pwrite +//go:linkname procread libc_read +//go:linkname procReadlink libc_readlink +//go:linkname procRename libc_rename +//go:linkname procRenameat libc_renameat +//go:linkname procRmdir libc_rmdir +//go:linkname proclseek libc_lseek +//go:linkname procSelect libc_select +//go:linkname procSetegid libc_setegid +//go:linkname procSeteuid libc_seteuid +//go:linkname procSetgid libc_setgid +//go:linkname procSethostname libc_sethostname +//go:linkname procSetpgid libc_setpgid +//go:linkname procSetpriority libc_setpriority +//go:linkname procSetregid libc_setregid +//go:linkname procSetreuid libc_setreuid +//go:linkname procSetrlimit libc_setrlimit +//go:linkname procSetsid libc_setsid +//go:linkname procSetuid libc_setuid +//go:linkname procshutdown libc_shutdown +//go:linkname procStat libc_stat +//go:linkname procStatvfs libc_statvfs +//go:linkname procSymlink libc_symlink +//go:linkname procSync libc_sync +//go:linkname procTimes libc_times +//go:linkname procTruncate libc_truncate +//go:linkname procFsync libc_fsync +//go:linkname procFtruncate libc_ftruncate +//go:linkname procUmask libc_umask +//go:linkname procUname libc_uname +//go:linkname procumount libc_umount +//go:linkname procUnlink libc_unlink +//go:linkname procUnlinkat libc_unlinkat +//go:linkname procUstat libc_ustat +//go:linkname procUtime libc_utime +//go:linkname proc__xnet_bind libc___xnet_bind +//go:linkname proc__xnet_connect libc___xnet_connect +//go:linkname procmmap libc_mmap +//go:linkname procmunmap libc_munmap +//go:linkname procsendfile libc_sendfile +//go:linkname proc__xnet_sendto libc___xnet_sendto +//go:linkname proc__xnet_socket libc___xnet_socket +//go:linkname proc__xnet_socketpair libc___xnet_socketpair +//go:linkname procwrite libc_write +//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt +//go:linkname procgetpeername libc_getpeername +//go:linkname procsetsockopt libc_setsockopt +//go:linkname procrecvfrom libc_recvfrom + +var ( + procpipe, + procgetsockname, + procGetcwd, + procgetgroups, + procsetgroups, + procwait4, + procgethostname, + procutimes, + procutimensat, + procfcntl, + procfutimesat, + procaccept, + proc__xnet_recvmsg, + proc__xnet_sendmsg, + procacct, + proc__makedev, + proc__major, + proc__minor, + procioctl, + procpoll, + procAccess, + procAdjtime, + procChdir, + procChmod, + procChown, + procChroot, + procClose, + procCreat, + procDup, + procDup2, + procExit, + procFaccessat, + procFchdir, + procFchmod, + procFchmodat, + procFchown, + procFchownat, + procFdatasync, + procFlock, + procFpathconf, + procFstat, + procFstatat, + procFstatvfs, + procGetdents, + procGetgid, + procGetpid, + procGetpgid, + procGetpgrp, + procGeteuid, + procGetegid, + procGetppid, + procGetpriority, + procGetrlimit, + procGetrusage, + procGettimeofday, + procGetuid, + procKill, + procLchown, + procLink, + proc__xnet_llisten, + procLstat, + procMadvise, + procMkdir, + procMkdirat, + procMkfifo, + procMkfifoat, + procMknod, + procMknodat, + procMlock, + procMlockall, + procMprotect, + procMsync, + procMunlock, + procMunlockall, + procNanosleep, + procOpen, + procOpenat, + procPathconf, + procPause, + procPread, + procPwrite, + procread, + procReadlink, + procRename, + procRenameat, + procRmdir, + proclseek, + procSelect, + procSetegid, + procSeteuid, + procSetgid, + procSethostname, + procSetpgid, + procSetpriority, + procSetregid, + procSetreuid, + procSetrlimit, + procSetsid, + procSetuid, + procshutdown, + procStat, + procStatvfs, + procSymlink, + procSync, + procTimes, + procTruncate, + procFsync, + procFtruncate, + procUmask, + procUname, + procumount, + procUnlink, + procUnlinkat, + procUstat, + procUtime, + proc__xnet_bind, + proc__xnet_connect, + procmmap, + procmunmap, + procsendfile, + proc__xnet_sendto, + proc__xnet_socket, + proc__xnet_socketpair, + procwrite, + proc__xnet_getsockopt, + procgetpeername, + procsetsockopt, + procrecvfrom syscallFunc +) + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int32(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func gethostname(buf []byte) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, times *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimesat(fildes int, path *byte, times *[2]Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func acct(path *byte) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __makedev(version int, major uint, minor uint) (val uint64) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0) + val = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __major(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func __minor(version int, dev uint64) (val uint) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0) + val = uint(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Creat(path string, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0) + nfd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(oldfd int, newfd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + sysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fdatasync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0) + pgid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (n int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, advice int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 *byte + if len(b) > 0 { + _p0 = &b[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0) + val = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pause() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + if len(buf) > 0 { + _p1 = &buf[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sethostname(p []byte) (err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statvfs(path string, vfsstat *Statvfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Times(tms *Tms) (ticks uintptr, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0) + ticks = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(mask int) (oldmask int) { + r0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Uname(buf *Utsname) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(target string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Utime(path string, buf *Utimbuf) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 *byte + if len(p) > 0 { + _p0 = &p[0] + } + r0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = e1 + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go new file mode 100644 index 0000000..b005031 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go new file mode 100644 index 0000000..d014451 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.dnsjackport", []_C_int{1, 13}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go new file mode 100644 index 0000000..b005031 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -0,0 +1,270 @@ +// mksysctl_openbsd.pl +// Code generated by the command above; DO NOT EDIT. + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.arandom", []_C_int{1, 37}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cryptodevallowsoft", []_C_int{1, 53}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.random", []_C_int{1, 31}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.maxptys", []_C_int{1, 44, 6}}, + {"kern.tty.nptys", []_C_int{1, 44, 7}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.userasymcrypto", []_C_int{1, 60}}, + {"kern.usercrypto", []_C_int{1, 52}}, + {"kern.usermount", []_C_int{1, 30}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.vnode", []_C_int{1, 13}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.pim.stats", []_C_int{4, 2, 103, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_prune", []_C_int{4, 24, 30, 6}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.nd6_useloopback", []_C_int{4, 24, 30, 11}}, + {"net.inet6.icmp6.nodeinfo", []_C_int{4, 24, 30, 13}}, + {"net.inet6.icmp6.rediraccept", []_C_int{4, 24, 30, 2}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.accept_rtadv", []_C_int{4, 24, 17, 12}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.maxifdefrouters", []_C_int{4, 24, 17, 47}}, + {"net.inet6.ip6.maxifprefixes", []_C_int{4, 24, 17, 46}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.rr_prune", []_C_int{4, 24, 17, 22}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.inet6.ip6.v6only", []_C_int{4, 24, 17, 24}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go new file mode 100644 index 0000000..f336145 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go new file mode 100644 index 0000000..654dd3d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go @@ -0,0 +1,438 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_KQUEUE_WORKLOOP_CTL = 530 + SYS___MACH_BRIDGE_REMOTE_TIME = 531 + SYS_MAXSYSCALL = 532 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go new file mode 100644 index 0000000..103a72e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go new file mode 100644 index 0000000..7ab2130 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go @@ -0,0 +1,436 @@ +// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SYS_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_CHDIR = 12 + SYS_FCHDIR = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_CHOWN = 16 + SYS_GETFSSTAT = 18 + SYS_GETPID = 20 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_GETEUID = 25 + SYS_PTRACE = 26 + SYS_RECVMSG = 27 + SYS_SENDMSG = 28 + SYS_RECVFROM = 29 + SYS_ACCEPT = 30 + SYS_GETPEERNAME = 31 + SYS_GETSOCKNAME = 32 + SYS_ACCESS = 33 + SYS_CHFLAGS = 34 + SYS_FCHFLAGS = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_GETPPID = 39 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_GETEGID = 43 + SYS_SIGACTION = 46 + SYS_GETGID = 47 + SYS_SIGPROCMASK = 48 + SYS_GETLOGIN = 49 + SYS_SETLOGIN = 50 + SYS_ACCT = 51 + SYS_SIGPENDING = 52 + SYS_SIGALTSTACK = 53 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_REVOKE = 56 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETPGID = 82 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_GETDTABLESIZE = 89 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_GETPRIORITY = 100 + SYS_BIND = 104 + SYS_SETSOCKOPT = 105 + SYS_LISTEN = 106 + SYS_SIGSUSPEND = 111 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_FLOCK = 131 + SYS_MKFIFO = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_FUTIMES = 139 + SYS_ADJTIME = 140 + SYS_GETHOSTUUID = 142 + SYS_SETSID = 147 + SYS_GETPGID = 151 + SYS_SETPRIVEXEC = 152 + SYS_PREAD = 153 + SYS_PWRITE = 154 + SYS_NFSSVC = 155 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UNMOUNT = 159 + SYS_GETFH = 161 + SYS_QUOTACTL = 165 + SYS_MOUNT = 167 + SYS_CSOPS = 169 + SYS_CSOPS_AUDITTOKEN = 170 + SYS_WAITID = 173 + SYS_KDEBUG_TYPEFILTER = 177 + SYS_KDEBUG_TRACE_STRING = 178 + SYS_KDEBUG_TRACE64 = 179 + SYS_KDEBUG_TRACE = 180 + SYS_SETGID = 181 + SYS_SETEGID = 182 + SYS_SETEUID = 183 + SYS_SIGRETURN = 184 + SYS_THREAD_SELFCOUNTS = 186 + SYS_FDATASYNC = 187 + SYS_STAT = 188 + SYS_FSTAT = 189 + SYS_LSTAT = 190 + SYS_PATHCONF = 191 + SYS_FPATHCONF = 192 + SYS_GETRLIMIT = 194 + SYS_SETRLIMIT = 195 + SYS_GETDIRENTRIES = 196 + SYS_MMAP = 197 + SYS_LSEEK = 199 + SYS_TRUNCATE = 200 + SYS_FTRUNCATE = 201 + SYS_SYSCTL = 202 + SYS_MLOCK = 203 + SYS_MUNLOCK = 204 + SYS_UNDELETE = 205 + SYS_OPEN_DPROTECTED_NP = 216 + SYS_GETATTRLIST = 220 + SYS_SETATTRLIST = 221 + SYS_GETDIRENTRIESATTR = 222 + SYS_EXCHANGEDATA = 223 + SYS_SEARCHFS = 225 + SYS_DELETE = 226 + SYS_COPYFILE = 227 + SYS_FGETATTRLIST = 228 + SYS_FSETATTRLIST = 229 + SYS_POLL = 230 + SYS_WATCHEVENT = 231 + SYS_WAITEVENT = 232 + SYS_MODWATCH = 233 + SYS_GETXATTR = 234 + SYS_FGETXATTR = 235 + SYS_SETXATTR = 236 + SYS_FSETXATTR = 237 + SYS_REMOVEXATTR = 238 + SYS_FREMOVEXATTR = 239 + SYS_LISTXATTR = 240 + SYS_FLISTXATTR = 241 + SYS_FSCTL = 242 + SYS_INITGROUPS = 243 + SYS_POSIX_SPAWN = 244 + SYS_FFSCTL = 245 + SYS_NFSCLNT = 247 + SYS_FHOPEN = 248 + SYS_MINHERIT = 250 + SYS_SEMSYS = 251 + SYS_MSGSYS = 252 + SYS_SHMSYS = 253 + SYS_SEMCTL = 254 + SYS_SEMGET = 255 + SYS_SEMOP = 256 + SYS_MSGCTL = 258 + SYS_MSGGET = 259 + SYS_MSGSND = 260 + SYS_MSGRCV = 261 + SYS_SHMAT = 262 + SYS_SHMCTL = 263 + SYS_SHMDT = 264 + SYS_SHMGET = 265 + SYS_SHM_OPEN = 266 + SYS_SHM_UNLINK = 267 + SYS_SEM_OPEN = 268 + SYS_SEM_CLOSE = 269 + SYS_SEM_UNLINK = 270 + SYS_SEM_WAIT = 271 + SYS_SEM_TRYWAIT = 272 + SYS_SEM_POST = 273 + SYS_SYSCTLBYNAME = 274 + SYS_OPEN_EXTENDED = 277 + SYS_UMASK_EXTENDED = 278 + SYS_STAT_EXTENDED = 279 + SYS_LSTAT_EXTENDED = 280 + SYS_FSTAT_EXTENDED = 281 + SYS_CHMOD_EXTENDED = 282 + SYS_FCHMOD_EXTENDED = 283 + SYS_ACCESS_EXTENDED = 284 + SYS_SETTID = 285 + SYS_GETTID = 286 + SYS_SETSGROUPS = 287 + SYS_GETSGROUPS = 288 + SYS_SETWGROUPS = 289 + SYS_GETWGROUPS = 290 + SYS_MKFIFO_EXTENDED = 291 + SYS_MKDIR_EXTENDED = 292 + SYS_IDENTITYSVC = 293 + SYS_SHARED_REGION_CHECK_NP = 294 + SYS_VM_PRESSURE_MONITOR = 296 + SYS_PSYNCH_RW_LONGRDLOCK = 297 + SYS_PSYNCH_RW_YIELDWRLOCK = 298 + SYS_PSYNCH_RW_DOWNGRADE = 299 + SYS_PSYNCH_RW_UPGRADE = 300 + SYS_PSYNCH_MUTEXWAIT = 301 + SYS_PSYNCH_MUTEXDROP = 302 + SYS_PSYNCH_CVBROAD = 303 + SYS_PSYNCH_CVSIGNAL = 304 + SYS_PSYNCH_CVWAIT = 305 + SYS_PSYNCH_RW_RDLOCK = 306 + SYS_PSYNCH_RW_WRLOCK = 307 + SYS_PSYNCH_RW_UNLOCK = 308 + SYS_PSYNCH_RW_UNLOCK2 = 309 + SYS_GETSID = 310 + SYS_SETTID_WITH_PID = 311 + SYS_PSYNCH_CVCLRPREPOST = 312 + SYS_AIO_FSYNC = 313 + SYS_AIO_RETURN = 314 + SYS_AIO_SUSPEND = 315 + SYS_AIO_CANCEL = 316 + SYS_AIO_ERROR = 317 + SYS_AIO_READ = 318 + SYS_AIO_WRITE = 319 + SYS_LIO_LISTIO = 320 + SYS_IOPOLICYSYS = 322 + SYS_PROCESS_POLICY = 323 + SYS_MLOCKALL = 324 + SYS_MUNLOCKALL = 325 + SYS_ISSETUGID = 327 + SYS___PTHREAD_KILL = 328 + SYS___PTHREAD_SIGMASK = 329 + SYS___SIGWAIT = 330 + SYS___DISABLE_THREADSIGNAL = 331 + SYS___PTHREAD_MARKCANCEL = 332 + SYS___PTHREAD_CANCELED = 333 + SYS___SEMWAIT_SIGNAL = 334 + SYS_PROC_INFO = 336 + SYS_SENDFILE = 337 + SYS_STAT64 = 338 + SYS_FSTAT64 = 339 + SYS_LSTAT64 = 340 + SYS_STAT64_EXTENDED = 341 + SYS_LSTAT64_EXTENDED = 342 + SYS_FSTAT64_EXTENDED = 343 + SYS_GETDIRENTRIES64 = 344 + SYS_STATFS64 = 345 + SYS_FSTATFS64 = 346 + SYS_GETFSSTAT64 = 347 + SYS___PTHREAD_CHDIR = 348 + SYS___PTHREAD_FCHDIR = 349 + SYS_AUDIT = 350 + SYS_AUDITON = 351 + SYS_GETAUID = 353 + SYS_SETAUID = 354 + SYS_GETAUDIT_ADDR = 357 + SYS_SETAUDIT_ADDR = 358 + SYS_AUDITCTL = 359 + SYS_BSDTHREAD_CREATE = 360 + SYS_BSDTHREAD_TERMINATE = 361 + SYS_KQUEUE = 362 + SYS_KEVENT = 363 + SYS_LCHOWN = 364 + SYS_BSDTHREAD_REGISTER = 366 + SYS_WORKQ_OPEN = 367 + SYS_WORKQ_KERNRETURN = 368 + SYS_KEVENT64 = 369 + SYS___OLD_SEMWAIT_SIGNAL = 370 + SYS___OLD_SEMWAIT_SIGNAL_NOCANCEL = 371 + SYS_THREAD_SELFID = 372 + SYS_LEDGER = 373 + SYS_KEVENT_QOS = 374 + SYS_KEVENT_ID = 375 + SYS___MAC_EXECVE = 380 + SYS___MAC_SYSCALL = 381 + SYS___MAC_GET_FILE = 382 + SYS___MAC_SET_FILE = 383 + SYS___MAC_GET_LINK = 384 + SYS___MAC_SET_LINK = 385 + SYS___MAC_GET_PROC = 386 + SYS___MAC_SET_PROC = 387 + SYS___MAC_GET_FD = 388 + SYS___MAC_SET_FD = 389 + SYS___MAC_GET_PID = 390 + SYS_PSELECT = 394 + SYS_PSELECT_NOCANCEL = 395 + SYS_READ_NOCANCEL = 396 + SYS_WRITE_NOCANCEL = 397 + SYS_OPEN_NOCANCEL = 398 + SYS_CLOSE_NOCANCEL = 399 + SYS_WAIT4_NOCANCEL = 400 + SYS_RECVMSG_NOCANCEL = 401 + SYS_SENDMSG_NOCANCEL = 402 + SYS_RECVFROM_NOCANCEL = 403 + SYS_ACCEPT_NOCANCEL = 404 + SYS_MSYNC_NOCANCEL = 405 + SYS_FCNTL_NOCANCEL = 406 + SYS_SELECT_NOCANCEL = 407 + SYS_FSYNC_NOCANCEL = 408 + SYS_CONNECT_NOCANCEL = 409 + SYS_SIGSUSPEND_NOCANCEL = 410 + SYS_READV_NOCANCEL = 411 + SYS_WRITEV_NOCANCEL = 412 + SYS_SENDTO_NOCANCEL = 413 + SYS_PREAD_NOCANCEL = 414 + SYS_PWRITE_NOCANCEL = 415 + SYS_WAITID_NOCANCEL = 416 + SYS_POLL_NOCANCEL = 417 + SYS_MSGSND_NOCANCEL = 418 + SYS_MSGRCV_NOCANCEL = 419 + SYS_SEM_WAIT_NOCANCEL = 420 + SYS_AIO_SUSPEND_NOCANCEL = 421 + SYS___SIGWAIT_NOCANCEL = 422 + SYS___SEMWAIT_SIGNAL_NOCANCEL = 423 + SYS___MAC_MOUNT = 424 + SYS___MAC_GET_MOUNT = 425 + SYS___MAC_GETFSSTAT = 426 + SYS_FSGETPATH = 427 + SYS_AUDIT_SESSION_SELF = 428 + SYS_AUDIT_SESSION_JOIN = 429 + SYS_FILEPORT_MAKEPORT = 430 + SYS_FILEPORT_MAKEFD = 431 + SYS_AUDIT_SESSION_PORT = 432 + SYS_PID_SUSPEND = 433 + SYS_PID_RESUME = 434 + SYS_PID_HIBERNATE = 435 + SYS_PID_SHUTDOWN_SOCKETS = 436 + SYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438 + SYS_KAS_INFO = 439 + SYS_MEMORYSTATUS_CONTROL = 440 + SYS_GUARDED_OPEN_NP = 441 + SYS_GUARDED_CLOSE_NP = 442 + SYS_GUARDED_KQUEUE_NP = 443 + SYS_CHANGE_FDGUARD_NP = 444 + SYS_USRCTL = 445 + SYS_PROC_RLIMIT_CONTROL = 446 + SYS_CONNECTX = 447 + SYS_DISCONNECTX = 448 + SYS_PEELOFF = 449 + SYS_SOCKET_DELEGATE = 450 + SYS_TELEMETRY = 451 + SYS_PROC_UUID_POLICY = 452 + SYS_MEMORYSTATUS_GET_LEVEL = 453 + SYS_SYSTEM_OVERRIDE = 454 + SYS_VFS_PURGE = 455 + SYS_SFI_CTL = 456 + SYS_SFI_PIDCTL = 457 + SYS_COALITION = 458 + SYS_COALITION_INFO = 459 + SYS_NECP_MATCH_POLICY = 460 + SYS_GETATTRLISTBULK = 461 + SYS_CLONEFILEAT = 462 + SYS_OPENAT = 463 + SYS_OPENAT_NOCANCEL = 464 + SYS_RENAMEAT = 465 + SYS_FACCESSAT = 466 + SYS_FCHMODAT = 467 + SYS_FCHOWNAT = 468 + SYS_FSTATAT = 469 + SYS_FSTATAT64 = 470 + SYS_LINKAT = 471 + SYS_UNLINKAT = 472 + SYS_READLINKAT = 473 + SYS_SYMLINKAT = 474 + SYS_MKDIRAT = 475 + SYS_GETATTRLISTAT = 476 + SYS_PROC_TRACE_LOG = 477 + SYS_BSDTHREAD_CTL = 478 + SYS_OPENBYID_NP = 479 + SYS_RECVMSG_X = 480 + SYS_SENDMSG_X = 481 + SYS_THREAD_SELFUSAGE = 482 + SYS_CSRCTL = 483 + SYS_GUARDED_OPEN_DPROTECTED_NP = 484 + SYS_GUARDED_WRITE_NP = 485 + SYS_GUARDED_PWRITE_NP = 486 + SYS_GUARDED_WRITEV_NP = 487 + SYS_RENAMEATX_NP = 488 + SYS_MREMAP_ENCRYPTED = 489 + SYS_NETAGENT_TRIGGER = 490 + SYS_STACK_SNAPSHOT_WITH_CONFIG = 491 + SYS_MICROSTACKSHOT = 492 + SYS_GRAB_PGO_DATA = 493 + SYS_PERSONA = 494 + SYS_WORK_INTERVAL_CTL = 499 + SYS_GETENTROPY = 500 + SYS_NECP_OPEN = 501 + SYS_NECP_CLIENT_ACTION = 502 + SYS___NEXUS_OPEN = 503 + SYS___NEXUS_REGISTER = 504 + SYS___NEXUS_DEREGISTER = 505 + SYS___NEXUS_CREATE = 506 + SYS___NEXUS_DESTROY = 507 + SYS___NEXUS_GET_OPT = 508 + SYS___NEXUS_SET_OPT = 509 + SYS___CHANNEL_OPEN = 510 + SYS___CHANNEL_GET_INFO = 511 + SYS___CHANNEL_SYNC = 512 + SYS___CHANNEL_GET_OPT = 513 + SYS___CHANNEL_SET_OPT = 514 + SYS_ULOCK_WAIT = 515 + SYS_ULOCK_WAKE = 516 + SYS_FCLONEFILEAT = 517 + SYS_FS_SNAPSHOT = 518 + SYS_TERMINATE_WITH_PAYLOAD = 520 + SYS_ABORT_WITH_PAYLOAD = 521 + SYS_NECP_SESSION_OPEN = 522 + SYS_NECP_SESSION_ACTION = 523 + SYS_SETATTRLISTAT = 524 + SYS_NET_QOS_GUIDELINE = 525 + SYS_FMOUNT = 526 + SYS_NTP_ADJTIME = 527 + SYS_NTP_GETTIME = 528 + SYS_OS_FAULT_WITH_PAYLOAD = 529 + SYS_MAXSYSCALL = 530 + SYS_INVALID = 63 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go new file mode 100644 index 0000000..464c9a9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go @@ -0,0 +1,315 @@ +// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void exit(int rval); } + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETFSSTAT = 18 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, caddr_t msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, caddr_t name, int *anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, caddr_t asa, int *alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, caddr_t asa, int *alen); } + SYS_ACCESS = 33 // { int access(char *path, int flags); } + SYS_CHFLAGS = 34 // { int chflags(char *path, int flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, int flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { int readlink(char *path, char *buf, int count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { pid_t vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(int from, int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_STATFS = 157 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 158 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_GETDOMAINNAME = 162 // { int getdomainname(char *domainname, int len); } + SYS_SETDOMAINNAME = 163 // { int setdomainname(char *domainname, int len); } + SYS_UNAME = 164 // { int uname(struct utsname *name); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_EXTPREAD = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTPWRITE = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_MMAP = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + // SYS_NOSYS = 198; // { int nosys(void); } __syscall __syscall_args int + SYS_LSEEK = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int truncate(char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS___SEMCTL = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); } + SYS_MSGCTL = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMCTL = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_EXTPREADV = 289 // { ssize_t extpreadv(int fd, struct iovec *iovp, u_int iovcnt, int flags, off_t offset); } + SYS_EXTPWRITEV = 290 // { ssize_t extpwritev(int fd, struct iovec *iovp,u_int iovcnt, int flags, off_t offset); } + SYS_FHSTATFS = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_AIO_READ = 318 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 319 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(u_char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGACTION = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGRETURN = 344 // { int sigreturn(ucontext_t *sigcntxp); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(char *path, int flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_VARSYM_SET = 450 // { int varsym_set(int level, const char *name, const char *data); } + SYS_VARSYM_GET = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); } + SYS_VARSYM_LIST = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); } + SYS_EXEC_SYS_REGISTER = 465 // { int exec_sys_register(void *entry); } + SYS_EXEC_SYS_UNREGISTER = 466 // { int exec_sys_unregister(int id); } + SYS_SYS_CHECKPOINT = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); } + SYS_MOUNTCTL = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); } + SYS_UMTX_SLEEP = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); } + SYS_UMTX_WAKEUP = 470 // { int umtx_wakeup(volatile const int *ptr, int count); } + SYS_JAIL_ATTACH = 471 // { int jail_attach(int jid); } + SYS_SET_TLS_AREA = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_GET_TLS_AREA = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); } + SYS_CLOSEFROM = 474 // { int closefrom(int fd); } + SYS_STAT = 475 // { int stat(const char *path, struct stat *ub); } + SYS_FSTAT = 476 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 477 // { int lstat(const char *path, struct stat *ub); } + SYS_FHSTAT = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_GETDENTS = 480 // { int getdents(int fd, char *buf, size_t count); } + SYS_USCHED_SET = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); } + SYS_EXTACCEPT = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); } + SYS_EXTCONNECT = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); } + SYS_MCONTROL = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_CREATE = 486 // { int vmspace_create(void *id, int type, void *data); } + SYS_VMSPACE_DESTROY = 487 // { int vmspace_destroy(void *id); } + SYS_VMSPACE_CTL = 488 // { int vmspace_ctl(void *id, int cmd, struct trapframe *tframe, struct vextframe *vframe); } + SYS_VMSPACE_MMAP = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); } + SYS_VMSPACE_MUNMAP = 490 // { int vmspace_munmap(void *id, void *addr, size_t len); } + SYS_VMSPACE_MCONTROL = 491 // { int vmspace_mcontrol(void *id, void *addr, size_t len, int behav, off_t value); } + SYS_VMSPACE_PREAD = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); } + SYS_VMSPACE_PWRITE = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); } + SYS_EXTEXIT = 494 // { void extexit(int how, int status, void *addr); } + SYS_LWP_CREATE = 495 // { int lwp_create(struct lwp_params *params); } + SYS_LWP_GETTID = 496 // { lwpid_t lwp_gettid(void); } + SYS_LWP_KILL = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); } + SYS_LWP_RTPRIO = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); } + SYS_PSELECT = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sigmask); } + SYS_STATVFS = 500 // { int statvfs(const char *path, struct statvfs *buf); } + SYS_FSTATVFS = 501 // { int fstatvfs(int fd, struct statvfs *buf); } + SYS_FHSTATVFS = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); } + SYS_GETVFSSTAT = 503 // { int getvfsstat(struct statfs *buf, struct statvfs *vbuf, long vbufsize, int flags); } + SYS_OPENAT = 504 // { int openat(int fd, char *path, int flags, int mode); } + SYS_FSTATAT = 505 // { int fstatat(int fd, char *path, struct stat *sb, int flags); } + SYS_FCHMODAT = 506 // { int fchmodat(int fd, char *path, int mode, int flags); } + SYS_FCHOWNAT = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); } + SYS_UNLINKAT = 508 // { int unlinkat(int fd, char *path, int flags); } + SYS_FACCESSAT = 509 // { int faccessat(int fd, char *path, int amode, int flags); } + SYS_MQ_OPEN = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); } + SYS_MQ_CLOSE = 511 // { int mq_close(mqd_t mqdes); } + SYS_MQ_UNLINK = 512 // { int mq_unlink(const char *name); } + SYS_MQ_GETATTR = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); } + SYS_MQ_SETATTR = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); } + SYS_MQ_NOTIFY = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); } + SYS_MQ_SEND = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); } + SYS_MQ_RECEIVE = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); } + SYS_MQ_TIMEDSEND = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_MQ_TIMEDRECEIVE = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_IOPRIO_SET = 520 // { int ioprio_set(int which, int who, int prio); } + SYS_IOPRIO_GET = 521 // { int ioprio_get(int which, int who); } + SYS_CHROOT_KERNEL = 522 // { int chroot_kernel(char *path); } + SYS_RENAMEAT = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_MKDIRAT = 524 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 525 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_READLINKAT = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 528 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_SWAPOFF = 529 // { int swapoff(char *name); } + SYS_VQUOTACTL = 530 // { int vquotactl(const char *path, struct plistref *pref); } + SYS_LINKAT = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); } + SYS_EACCESS = 532 // { int eaccess(char *path, int flags); } + SYS_LPATHCONF = 533 // { int lpathconf(char *path, int name); } + SYS_VMM_GUEST_CTL = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); } + SYS_VMM_GUEST_SYNC_ADDR = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); } + SYS_PROCCTL = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); } + SYS_CHFLAGSAT = 537 // { int chflagsat(int fd, const char *path, int flags, int atflags);} + SYS_PIPE2 = 538 // { int pipe2(int *fildes, int flags); } + SYS_UTIMENSAT = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); } + SYS_FUTIMENS = 540 // { int futimens(int fd, const struct timespec *ts); } + SYS_ACCEPT4 = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); } + SYS_LWP_SETNAME = 542 // { int lwp_setname(lwpid_t tid, const char *name); } + SYS_PPOLL = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); } + SYS_LWP_SETAFFINITY = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); } + SYS_LWP_GETAFFINITY = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); } + SYS_LWP_CREATE2 = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go new file mode 100644 index 0000000..55c3a32 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go new file mode 100644 index 0000000..b39be6c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go new file mode 100644 index 0000000..44ffd4c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -0,0 +1,403 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } + SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } + SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } + SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } + SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } + SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } + SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go new file mode 100644 index 0000000..9f21e95 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -0,0 +1,395 @@ +// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ + SYS_ACCEPT = 30 // { int accept(int s, \ + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ + SYS_SOCKET = 97 // { int socket(int domain, int type, \ + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, \ + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ + SYS_GETRUSAGE = 117 // { int getrusage(int who, \ + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, \ + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, \ + SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } + SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } + SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, \ + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } + SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } + SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( \ + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_KEVENT = 363 // { int kevent(int fd, \ + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ + SYS_KENV = 390 // { int kenv(int what, const char *name, \ + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ + SYS_STATFS = 396 // { int statfs(char *path, \ + SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ + SYS_SIGACTION = 416 // { int sigaction(int sig, \ + SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext( \ + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ + SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, \ + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ + SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ + SYS_FUTIMENS = 546 // { int futimens(int fd, \ + SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, \ + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, \ + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go new file mode 100644 index 0000000..8d17873 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -0,0 +1,392 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m32 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go new file mode 100644 index 0000000..b3d8ad7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -0,0 +1,344 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -m64 /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SYS_READ = 0 + SYS_WRITE = 1 + SYS_OPEN = 2 + SYS_CLOSE = 3 + SYS_STAT = 4 + SYS_FSTAT = 5 + SYS_LSTAT = 6 + SYS_POLL = 7 + SYS_LSEEK = 8 + SYS_MMAP = 9 + SYS_MPROTECT = 10 + SYS_MUNMAP = 11 + SYS_BRK = 12 + SYS_RT_SIGACTION = 13 + SYS_RT_SIGPROCMASK = 14 + SYS_RT_SIGRETURN = 15 + SYS_IOCTL = 16 + SYS_PREAD64 = 17 + SYS_PWRITE64 = 18 + SYS_READV = 19 + SYS_WRITEV = 20 + SYS_ACCESS = 21 + SYS_PIPE = 22 + SYS_SELECT = 23 + SYS_SCHED_YIELD = 24 + SYS_MREMAP = 25 + SYS_MSYNC = 26 + SYS_MINCORE = 27 + SYS_MADVISE = 28 + SYS_SHMGET = 29 + SYS_SHMAT = 30 + SYS_SHMCTL = 31 + SYS_DUP = 32 + SYS_DUP2 = 33 + SYS_PAUSE = 34 + SYS_NANOSLEEP = 35 + SYS_GETITIMER = 36 + SYS_ALARM = 37 + SYS_SETITIMER = 38 + SYS_GETPID = 39 + SYS_SENDFILE = 40 + SYS_SOCKET = 41 + SYS_CONNECT = 42 + SYS_ACCEPT = 43 + SYS_SENDTO = 44 + SYS_RECVFROM = 45 + SYS_SENDMSG = 46 + SYS_RECVMSG = 47 + SYS_SHUTDOWN = 48 + SYS_BIND = 49 + SYS_LISTEN = 50 + SYS_GETSOCKNAME = 51 + SYS_GETPEERNAME = 52 + SYS_SOCKETPAIR = 53 + SYS_SETSOCKOPT = 54 + SYS_GETSOCKOPT = 55 + SYS_CLONE = 56 + SYS_FORK = 57 + SYS_VFORK = 58 + SYS_EXECVE = 59 + SYS_EXIT = 60 + SYS_WAIT4 = 61 + SYS_KILL = 62 + SYS_UNAME = 63 + SYS_SEMGET = 64 + SYS_SEMOP = 65 + SYS_SEMCTL = 66 + SYS_SHMDT = 67 + SYS_MSGGET = 68 + SYS_MSGSND = 69 + SYS_MSGRCV = 70 + SYS_MSGCTL = 71 + SYS_FCNTL = 72 + SYS_FLOCK = 73 + SYS_FSYNC = 74 + SYS_FDATASYNC = 75 + SYS_TRUNCATE = 76 + SYS_FTRUNCATE = 77 + SYS_GETDENTS = 78 + SYS_GETCWD = 79 + SYS_CHDIR = 80 + SYS_FCHDIR = 81 + SYS_RENAME = 82 + SYS_MKDIR = 83 + SYS_RMDIR = 84 + SYS_CREAT = 85 + SYS_LINK = 86 + SYS_UNLINK = 87 + SYS_SYMLINK = 88 + SYS_READLINK = 89 + SYS_CHMOD = 90 + SYS_FCHMOD = 91 + SYS_CHOWN = 92 + SYS_FCHOWN = 93 + SYS_LCHOWN = 94 + SYS_UMASK = 95 + SYS_GETTIMEOFDAY = 96 + SYS_GETRLIMIT = 97 + SYS_GETRUSAGE = 98 + SYS_SYSINFO = 99 + SYS_TIMES = 100 + SYS_PTRACE = 101 + SYS_GETUID = 102 + SYS_SYSLOG = 103 + SYS_GETGID = 104 + SYS_SETUID = 105 + SYS_SETGID = 106 + SYS_GETEUID = 107 + SYS_GETEGID = 108 + SYS_SETPGID = 109 + SYS_GETPPID = 110 + SYS_GETPGRP = 111 + SYS_SETSID = 112 + SYS_SETREUID = 113 + SYS_SETREGID = 114 + SYS_GETGROUPS = 115 + SYS_SETGROUPS = 116 + SYS_SETRESUID = 117 + SYS_GETRESUID = 118 + SYS_SETRESGID = 119 + SYS_GETRESGID = 120 + SYS_GETPGID = 121 + SYS_SETFSUID = 122 + SYS_SETFSGID = 123 + SYS_GETSID = 124 + SYS_CAPGET = 125 + SYS_CAPSET = 126 + SYS_RT_SIGPENDING = 127 + SYS_RT_SIGTIMEDWAIT = 128 + SYS_RT_SIGQUEUEINFO = 129 + SYS_RT_SIGSUSPEND = 130 + SYS_SIGALTSTACK = 131 + SYS_UTIME = 132 + SYS_MKNOD = 133 + SYS_USELIB = 134 + SYS_PERSONALITY = 135 + SYS_USTAT = 136 + SYS_STATFS = 137 + SYS_FSTATFS = 138 + SYS_SYSFS = 139 + SYS_GETPRIORITY = 140 + SYS_SETPRIORITY = 141 + SYS_SCHED_SETPARAM = 142 + SYS_SCHED_GETPARAM = 143 + SYS_SCHED_SETSCHEDULER = 144 + SYS_SCHED_GETSCHEDULER = 145 + SYS_SCHED_GET_PRIORITY_MAX = 146 + SYS_SCHED_GET_PRIORITY_MIN = 147 + SYS_SCHED_RR_GET_INTERVAL = 148 + SYS_MLOCK = 149 + SYS_MUNLOCK = 150 + SYS_MLOCKALL = 151 + SYS_MUNLOCKALL = 152 + SYS_VHANGUP = 153 + SYS_MODIFY_LDT = 154 + SYS_PIVOT_ROOT = 155 + SYS__SYSCTL = 156 + SYS_PRCTL = 157 + SYS_ARCH_PRCTL = 158 + SYS_ADJTIMEX = 159 + SYS_SETRLIMIT = 160 + SYS_CHROOT = 161 + SYS_SYNC = 162 + SYS_ACCT = 163 + SYS_SETTIMEOFDAY = 164 + SYS_MOUNT = 165 + SYS_UMOUNT2 = 166 + SYS_SWAPON = 167 + SYS_SWAPOFF = 168 + SYS_REBOOT = 169 + SYS_SETHOSTNAME = 170 + SYS_SETDOMAINNAME = 171 + SYS_IOPL = 172 + SYS_IOPERM = 173 + SYS_CREATE_MODULE = 174 + SYS_INIT_MODULE = 175 + SYS_DELETE_MODULE = 176 + SYS_GET_KERNEL_SYMS = 177 + SYS_QUERY_MODULE = 178 + SYS_QUOTACTL = 179 + SYS_NFSSERVCTL = 180 + SYS_GETPMSG = 181 + SYS_PUTPMSG = 182 + SYS_AFS_SYSCALL = 183 + SYS_TUXCALL = 184 + SYS_SECURITY = 185 + SYS_GETTID = 186 + SYS_READAHEAD = 187 + SYS_SETXATTR = 188 + SYS_LSETXATTR = 189 + SYS_FSETXATTR = 190 + SYS_GETXATTR = 191 + SYS_LGETXATTR = 192 + SYS_FGETXATTR = 193 + SYS_LISTXATTR = 194 + SYS_LLISTXATTR = 195 + SYS_FLISTXATTR = 196 + SYS_REMOVEXATTR = 197 + SYS_LREMOVEXATTR = 198 + SYS_FREMOVEXATTR = 199 + SYS_TKILL = 200 + SYS_TIME = 201 + SYS_FUTEX = 202 + SYS_SCHED_SETAFFINITY = 203 + SYS_SCHED_GETAFFINITY = 204 + SYS_SET_THREAD_AREA = 205 + SYS_IO_SETUP = 206 + SYS_IO_DESTROY = 207 + SYS_IO_GETEVENTS = 208 + SYS_IO_SUBMIT = 209 + SYS_IO_CANCEL = 210 + SYS_GET_THREAD_AREA = 211 + SYS_LOOKUP_DCOOKIE = 212 + SYS_EPOLL_CREATE = 213 + SYS_EPOLL_CTL_OLD = 214 + SYS_EPOLL_WAIT_OLD = 215 + SYS_REMAP_FILE_PAGES = 216 + SYS_GETDENTS64 = 217 + SYS_SET_TID_ADDRESS = 218 + SYS_RESTART_SYSCALL = 219 + SYS_SEMTIMEDOP = 220 + SYS_FADVISE64 = 221 + SYS_TIMER_CREATE = 222 + SYS_TIMER_SETTIME = 223 + SYS_TIMER_GETTIME = 224 + SYS_TIMER_GETOVERRUN = 225 + SYS_TIMER_DELETE = 226 + SYS_CLOCK_SETTIME = 227 + SYS_CLOCK_GETTIME = 228 + SYS_CLOCK_GETRES = 229 + SYS_CLOCK_NANOSLEEP = 230 + SYS_EXIT_GROUP = 231 + SYS_EPOLL_WAIT = 232 + SYS_EPOLL_CTL = 233 + SYS_TGKILL = 234 + SYS_UTIMES = 235 + SYS_VSERVER = 236 + SYS_MBIND = 237 + SYS_SET_MEMPOLICY = 238 + SYS_GET_MEMPOLICY = 239 + SYS_MQ_OPEN = 240 + SYS_MQ_UNLINK = 241 + SYS_MQ_TIMEDSEND = 242 + SYS_MQ_TIMEDRECEIVE = 243 + SYS_MQ_NOTIFY = 244 + SYS_MQ_GETSETATTR = 245 + SYS_KEXEC_LOAD = 246 + SYS_WAITID = 247 + SYS_ADD_KEY = 248 + SYS_REQUEST_KEY = 249 + SYS_KEYCTL = 250 + SYS_IOPRIO_SET = 251 + SYS_IOPRIO_GET = 252 + SYS_INOTIFY_INIT = 253 + SYS_INOTIFY_ADD_WATCH = 254 + SYS_INOTIFY_RM_WATCH = 255 + SYS_MIGRATE_PAGES = 256 + SYS_OPENAT = 257 + SYS_MKDIRAT = 258 + SYS_MKNODAT = 259 + SYS_FCHOWNAT = 260 + SYS_FUTIMESAT = 261 + SYS_NEWFSTATAT = 262 + SYS_UNLINKAT = 263 + SYS_RENAMEAT = 264 + SYS_LINKAT = 265 + SYS_SYMLINKAT = 266 + SYS_READLINKAT = 267 + SYS_FCHMODAT = 268 + SYS_FACCESSAT = 269 + SYS_PSELECT6 = 270 + SYS_PPOLL = 271 + SYS_UNSHARE = 272 + SYS_SET_ROBUST_LIST = 273 + SYS_GET_ROBUST_LIST = 274 + SYS_SPLICE = 275 + SYS_TEE = 276 + SYS_SYNC_FILE_RANGE = 277 + SYS_VMSPLICE = 278 + SYS_MOVE_PAGES = 279 + SYS_UTIMENSAT = 280 + SYS_EPOLL_PWAIT = 281 + SYS_SIGNALFD = 282 + SYS_TIMERFD_CREATE = 283 + SYS_EVENTFD = 284 + SYS_FALLOCATE = 285 + SYS_TIMERFD_SETTIME = 286 + SYS_TIMERFD_GETTIME = 287 + SYS_ACCEPT4 = 288 + SYS_SIGNALFD4 = 289 + SYS_EVENTFD2 = 290 + SYS_EPOLL_CREATE1 = 291 + SYS_DUP3 = 292 + SYS_PIPE2 = 293 + SYS_INOTIFY_INIT1 = 294 + SYS_PREADV = 295 + SYS_PWRITEV = 296 + SYS_RT_TGSIGQUEUEINFO = 297 + SYS_PERF_EVENT_OPEN = 298 + SYS_RECVMMSG = 299 + SYS_FANOTIFY_INIT = 300 + SYS_FANOTIFY_MARK = 301 + SYS_PRLIMIT64 = 302 + SYS_NAME_TO_HANDLE_AT = 303 + SYS_OPEN_BY_HANDLE_AT = 304 + SYS_CLOCK_ADJTIME = 305 + SYS_SYNCFS = 306 + SYS_SENDMMSG = 307 + SYS_SETNS = 308 + SYS_GETCPU = 309 + SYS_PROCESS_VM_READV = 310 + SYS_PROCESS_VM_WRITEV = 311 + SYS_KCMP = 312 + SYS_FINIT_MODULE = 313 + SYS_SCHED_SETATTR = 314 + SYS_SCHED_GETATTR = 315 + SYS_RENAMEAT2 = 316 + SYS_SECCOMP = 317 + SYS_GETRANDOM = 318 + SYS_MEMFD_CREATE = 319 + SYS_KEXEC_FILE_LOAD = 320 + SYS_BPF = 321 + SYS_EXECVEAT = 322 + SYS_USERFAULTFD = 323 + SYS_MEMBARRIER = 324 + SYS_MLOCK2 = 325 + SYS_COPY_FILE_RANGE = 326 + SYS_PREADV2 = 327 + SYS_PWRITEV2 = 328 + SYS_PKEY_MPROTECT = 329 + SYS_PKEY_ALLOC = 330 + SYS_PKEY_FREE = 331 + SYS_STATX = 332 + SYS_IO_PGETEVENTS = 333 + SYS_RSEQ = 334 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go new file mode 100644 index 0000000..e092822 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -0,0 +1,364 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go new file mode 100644 index 0000000..b81d508 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -0,0 +1,289 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_RENAMEAT = 38 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go new file mode 100644 index 0000000..6893a5b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go new file mode 100644 index 0000000..40164ca --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go new file mode 100644 index 0000000..8a90973 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SYS_READ = 5000 + SYS_WRITE = 5001 + SYS_OPEN = 5002 + SYS_CLOSE = 5003 + SYS_STAT = 5004 + SYS_FSTAT = 5005 + SYS_LSTAT = 5006 + SYS_POLL = 5007 + SYS_LSEEK = 5008 + SYS_MMAP = 5009 + SYS_MPROTECT = 5010 + SYS_MUNMAP = 5011 + SYS_BRK = 5012 + SYS_RT_SIGACTION = 5013 + SYS_RT_SIGPROCMASK = 5014 + SYS_IOCTL = 5015 + SYS_PREAD64 = 5016 + SYS_PWRITE64 = 5017 + SYS_READV = 5018 + SYS_WRITEV = 5019 + SYS_ACCESS = 5020 + SYS_PIPE = 5021 + SYS__NEWSELECT = 5022 + SYS_SCHED_YIELD = 5023 + SYS_MREMAP = 5024 + SYS_MSYNC = 5025 + SYS_MINCORE = 5026 + SYS_MADVISE = 5027 + SYS_SHMGET = 5028 + SYS_SHMAT = 5029 + SYS_SHMCTL = 5030 + SYS_DUP = 5031 + SYS_DUP2 = 5032 + SYS_PAUSE = 5033 + SYS_NANOSLEEP = 5034 + SYS_GETITIMER = 5035 + SYS_SETITIMER = 5036 + SYS_ALARM = 5037 + SYS_GETPID = 5038 + SYS_SENDFILE = 5039 + SYS_SOCKET = 5040 + SYS_CONNECT = 5041 + SYS_ACCEPT = 5042 + SYS_SENDTO = 5043 + SYS_RECVFROM = 5044 + SYS_SENDMSG = 5045 + SYS_RECVMSG = 5046 + SYS_SHUTDOWN = 5047 + SYS_BIND = 5048 + SYS_LISTEN = 5049 + SYS_GETSOCKNAME = 5050 + SYS_GETPEERNAME = 5051 + SYS_SOCKETPAIR = 5052 + SYS_SETSOCKOPT = 5053 + SYS_GETSOCKOPT = 5054 + SYS_CLONE = 5055 + SYS_FORK = 5056 + SYS_EXECVE = 5057 + SYS_EXIT = 5058 + SYS_WAIT4 = 5059 + SYS_KILL = 5060 + SYS_UNAME = 5061 + SYS_SEMGET = 5062 + SYS_SEMOP = 5063 + SYS_SEMCTL = 5064 + SYS_SHMDT = 5065 + SYS_MSGGET = 5066 + SYS_MSGSND = 5067 + SYS_MSGRCV = 5068 + SYS_MSGCTL = 5069 + SYS_FCNTL = 5070 + SYS_FLOCK = 5071 + SYS_FSYNC = 5072 + SYS_FDATASYNC = 5073 + SYS_TRUNCATE = 5074 + SYS_FTRUNCATE = 5075 + SYS_GETDENTS = 5076 + SYS_GETCWD = 5077 + SYS_CHDIR = 5078 + SYS_FCHDIR = 5079 + SYS_RENAME = 5080 + SYS_MKDIR = 5081 + SYS_RMDIR = 5082 + SYS_CREAT = 5083 + SYS_LINK = 5084 + SYS_UNLINK = 5085 + SYS_SYMLINK = 5086 + SYS_READLINK = 5087 + SYS_CHMOD = 5088 + SYS_FCHMOD = 5089 + SYS_CHOWN = 5090 + SYS_FCHOWN = 5091 + SYS_LCHOWN = 5092 + SYS_UMASK = 5093 + SYS_GETTIMEOFDAY = 5094 + SYS_GETRLIMIT = 5095 + SYS_GETRUSAGE = 5096 + SYS_SYSINFO = 5097 + SYS_TIMES = 5098 + SYS_PTRACE = 5099 + SYS_GETUID = 5100 + SYS_SYSLOG = 5101 + SYS_GETGID = 5102 + SYS_SETUID = 5103 + SYS_SETGID = 5104 + SYS_GETEUID = 5105 + SYS_GETEGID = 5106 + SYS_SETPGID = 5107 + SYS_GETPPID = 5108 + SYS_GETPGRP = 5109 + SYS_SETSID = 5110 + SYS_SETREUID = 5111 + SYS_SETREGID = 5112 + SYS_GETGROUPS = 5113 + SYS_SETGROUPS = 5114 + SYS_SETRESUID = 5115 + SYS_GETRESUID = 5116 + SYS_SETRESGID = 5117 + SYS_GETRESGID = 5118 + SYS_GETPGID = 5119 + SYS_SETFSUID = 5120 + SYS_SETFSGID = 5121 + SYS_GETSID = 5122 + SYS_CAPGET = 5123 + SYS_CAPSET = 5124 + SYS_RT_SIGPENDING = 5125 + SYS_RT_SIGTIMEDWAIT = 5126 + SYS_RT_SIGQUEUEINFO = 5127 + SYS_RT_SIGSUSPEND = 5128 + SYS_SIGALTSTACK = 5129 + SYS_UTIME = 5130 + SYS_MKNOD = 5131 + SYS_PERSONALITY = 5132 + SYS_USTAT = 5133 + SYS_STATFS = 5134 + SYS_FSTATFS = 5135 + SYS_SYSFS = 5136 + SYS_GETPRIORITY = 5137 + SYS_SETPRIORITY = 5138 + SYS_SCHED_SETPARAM = 5139 + SYS_SCHED_GETPARAM = 5140 + SYS_SCHED_SETSCHEDULER = 5141 + SYS_SCHED_GETSCHEDULER = 5142 + SYS_SCHED_GET_PRIORITY_MAX = 5143 + SYS_SCHED_GET_PRIORITY_MIN = 5144 + SYS_SCHED_RR_GET_INTERVAL = 5145 + SYS_MLOCK = 5146 + SYS_MUNLOCK = 5147 + SYS_MLOCKALL = 5148 + SYS_MUNLOCKALL = 5149 + SYS_VHANGUP = 5150 + SYS_PIVOT_ROOT = 5151 + SYS__SYSCTL = 5152 + SYS_PRCTL = 5153 + SYS_ADJTIMEX = 5154 + SYS_SETRLIMIT = 5155 + SYS_CHROOT = 5156 + SYS_SYNC = 5157 + SYS_ACCT = 5158 + SYS_SETTIMEOFDAY = 5159 + SYS_MOUNT = 5160 + SYS_UMOUNT2 = 5161 + SYS_SWAPON = 5162 + SYS_SWAPOFF = 5163 + SYS_REBOOT = 5164 + SYS_SETHOSTNAME = 5165 + SYS_SETDOMAINNAME = 5166 + SYS_CREATE_MODULE = 5167 + SYS_INIT_MODULE = 5168 + SYS_DELETE_MODULE = 5169 + SYS_GET_KERNEL_SYMS = 5170 + SYS_QUERY_MODULE = 5171 + SYS_QUOTACTL = 5172 + SYS_NFSSERVCTL = 5173 + SYS_GETPMSG = 5174 + SYS_PUTPMSG = 5175 + SYS_AFS_SYSCALL = 5176 + SYS_RESERVED177 = 5177 + SYS_GETTID = 5178 + SYS_READAHEAD = 5179 + SYS_SETXATTR = 5180 + SYS_LSETXATTR = 5181 + SYS_FSETXATTR = 5182 + SYS_GETXATTR = 5183 + SYS_LGETXATTR = 5184 + SYS_FGETXATTR = 5185 + SYS_LISTXATTR = 5186 + SYS_LLISTXATTR = 5187 + SYS_FLISTXATTR = 5188 + SYS_REMOVEXATTR = 5189 + SYS_LREMOVEXATTR = 5190 + SYS_FREMOVEXATTR = 5191 + SYS_TKILL = 5192 + SYS_RESERVED193 = 5193 + SYS_FUTEX = 5194 + SYS_SCHED_SETAFFINITY = 5195 + SYS_SCHED_GETAFFINITY = 5196 + SYS_CACHEFLUSH = 5197 + SYS_CACHECTL = 5198 + SYS_SYSMIPS = 5199 + SYS_IO_SETUP = 5200 + SYS_IO_DESTROY = 5201 + SYS_IO_GETEVENTS = 5202 + SYS_IO_SUBMIT = 5203 + SYS_IO_CANCEL = 5204 + SYS_EXIT_GROUP = 5205 + SYS_LOOKUP_DCOOKIE = 5206 + SYS_EPOLL_CREATE = 5207 + SYS_EPOLL_CTL = 5208 + SYS_EPOLL_WAIT = 5209 + SYS_REMAP_FILE_PAGES = 5210 + SYS_RT_SIGRETURN = 5211 + SYS_SET_TID_ADDRESS = 5212 + SYS_RESTART_SYSCALL = 5213 + SYS_SEMTIMEDOP = 5214 + SYS_FADVISE64 = 5215 + SYS_TIMER_CREATE = 5216 + SYS_TIMER_SETTIME = 5217 + SYS_TIMER_GETTIME = 5218 + SYS_TIMER_GETOVERRUN = 5219 + SYS_TIMER_DELETE = 5220 + SYS_CLOCK_SETTIME = 5221 + SYS_CLOCK_GETTIME = 5222 + SYS_CLOCK_GETRES = 5223 + SYS_CLOCK_NANOSLEEP = 5224 + SYS_TGKILL = 5225 + SYS_UTIMES = 5226 + SYS_MBIND = 5227 + SYS_GET_MEMPOLICY = 5228 + SYS_SET_MEMPOLICY = 5229 + SYS_MQ_OPEN = 5230 + SYS_MQ_UNLINK = 5231 + SYS_MQ_TIMEDSEND = 5232 + SYS_MQ_TIMEDRECEIVE = 5233 + SYS_MQ_NOTIFY = 5234 + SYS_MQ_GETSETATTR = 5235 + SYS_VSERVER = 5236 + SYS_WAITID = 5237 + SYS_ADD_KEY = 5239 + SYS_REQUEST_KEY = 5240 + SYS_KEYCTL = 5241 + SYS_SET_THREAD_AREA = 5242 + SYS_INOTIFY_INIT = 5243 + SYS_INOTIFY_ADD_WATCH = 5244 + SYS_INOTIFY_RM_WATCH = 5245 + SYS_MIGRATE_PAGES = 5246 + SYS_OPENAT = 5247 + SYS_MKDIRAT = 5248 + SYS_MKNODAT = 5249 + SYS_FCHOWNAT = 5250 + SYS_FUTIMESAT = 5251 + SYS_NEWFSTATAT = 5252 + SYS_UNLINKAT = 5253 + SYS_RENAMEAT = 5254 + SYS_LINKAT = 5255 + SYS_SYMLINKAT = 5256 + SYS_READLINKAT = 5257 + SYS_FCHMODAT = 5258 + SYS_FACCESSAT = 5259 + SYS_PSELECT6 = 5260 + SYS_PPOLL = 5261 + SYS_UNSHARE = 5262 + SYS_SPLICE = 5263 + SYS_SYNC_FILE_RANGE = 5264 + SYS_TEE = 5265 + SYS_VMSPLICE = 5266 + SYS_MOVE_PAGES = 5267 + SYS_SET_ROBUST_LIST = 5268 + SYS_GET_ROBUST_LIST = 5269 + SYS_KEXEC_LOAD = 5270 + SYS_GETCPU = 5271 + SYS_EPOLL_PWAIT = 5272 + SYS_IOPRIO_SET = 5273 + SYS_IOPRIO_GET = 5274 + SYS_UTIMENSAT = 5275 + SYS_SIGNALFD = 5276 + SYS_TIMERFD = 5277 + SYS_EVENTFD = 5278 + SYS_FALLOCATE = 5279 + SYS_TIMERFD_CREATE = 5280 + SYS_TIMERFD_GETTIME = 5281 + SYS_TIMERFD_SETTIME = 5282 + SYS_SIGNALFD4 = 5283 + SYS_EVENTFD2 = 5284 + SYS_EPOLL_CREATE1 = 5285 + SYS_DUP3 = 5286 + SYS_PIPE2 = 5287 + SYS_INOTIFY_INIT1 = 5288 + SYS_PREADV = 5289 + SYS_PWRITEV = 5290 + SYS_RT_TGSIGQUEUEINFO = 5291 + SYS_PERF_EVENT_OPEN = 5292 + SYS_ACCEPT4 = 5293 + SYS_RECVMMSG = 5294 + SYS_FANOTIFY_INIT = 5295 + SYS_FANOTIFY_MARK = 5296 + SYS_PRLIMIT64 = 5297 + SYS_NAME_TO_HANDLE_AT = 5298 + SYS_OPEN_BY_HANDLE_AT = 5299 + SYS_CLOCK_ADJTIME = 5300 + SYS_SYNCFS = 5301 + SYS_SENDMMSG = 5302 + SYS_SETNS = 5303 + SYS_PROCESS_VM_READV = 5304 + SYS_PROCESS_VM_WRITEV = 5305 + SYS_KCMP = 5306 + SYS_FINIT_MODULE = 5307 + SYS_GETDENTS64 = 5308 + SYS_SCHED_SETATTR = 5309 + SYS_SCHED_GETATTR = 5310 + SYS_RENAMEAT2 = 5311 + SYS_SECCOMP = 5312 + SYS_GETRANDOM = 5313 + SYS_MEMFD_CREATE = 5314 + SYS_BPF = 5315 + SYS_EXECVEAT = 5316 + SYS_USERFAULTFD = 5317 + SYS_MEMBARRIER = 5318 + SYS_MLOCK2 = 5319 + SYS_COPY_FILE_RANGE = 5320 + SYS_PREADV2 = 5321 + SYS_PWRITEV2 = 5322 + SYS_PKEY_MPROTECT = 5323 + SYS_PKEY_ALLOC = 5324 + SYS_PKEY_FREE = 5325 + SYS_STATX = 5326 + SYS_RSEQ = 5327 + SYS_IO_PGETEVENTS = 5328 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go new file mode 100644 index 0000000..8d78184 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -0,0 +1,377 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go new file mode 100644 index 0000000..ec5bde3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go new file mode 100644 index 0000000..bdbabdb --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -0,0 +1,375 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86 = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_QUERY_MODULE = 166 + SYS_POLL = 167 + SYS_NFSSERVCTL = 168 + SYS_SETRESGID = 169 + SYS_GETRESGID = 170 + SYS_PRCTL = 171 + SYS_RT_SIGRETURN = 172 + SYS_RT_SIGACTION = 173 + SYS_RT_SIGPROCMASK = 174 + SYS_RT_SIGPENDING = 175 + SYS_RT_SIGTIMEDWAIT = 176 + SYS_RT_SIGQUEUEINFO = 177 + SYS_RT_SIGSUSPEND = 178 + SYS_PREAD64 = 179 + SYS_PWRITE64 = 180 + SYS_CHOWN = 181 + SYS_GETCWD = 182 + SYS_CAPGET = 183 + SYS_CAPSET = 184 + SYS_SIGALTSTACK = 185 + SYS_SENDFILE = 186 + SYS_GETPMSG = 187 + SYS_PUTPMSG = 188 + SYS_VFORK = 189 + SYS_UGETRLIMIT = 190 + SYS_READAHEAD = 191 + SYS_PCICONFIG_READ = 198 + SYS_PCICONFIG_WRITE = 199 + SYS_PCICONFIG_IOBASE = 200 + SYS_MULTIPLEXER = 201 + SYS_GETDENTS64 = 202 + SYS_PIVOT_ROOT = 203 + SYS_MADVISE = 205 + SYS_MINCORE = 206 + SYS_GETTID = 207 + SYS_TKILL = 208 + SYS_SETXATTR = 209 + SYS_LSETXATTR = 210 + SYS_FSETXATTR = 211 + SYS_GETXATTR = 212 + SYS_LGETXATTR = 213 + SYS_FGETXATTR = 214 + SYS_LISTXATTR = 215 + SYS_LLISTXATTR = 216 + SYS_FLISTXATTR = 217 + SYS_REMOVEXATTR = 218 + SYS_LREMOVEXATTR = 219 + SYS_FREMOVEXATTR = 220 + SYS_FUTEX = 221 + SYS_SCHED_SETAFFINITY = 222 + SYS_SCHED_GETAFFINITY = 223 + SYS_TUXCALL = 225 + SYS_IO_SETUP = 227 + SYS_IO_DESTROY = 228 + SYS_IO_GETEVENTS = 229 + SYS_IO_SUBMIT = 230 + SYS_IO_CANCEL = 231 + SYS_SET_TID_ADDRESS = 232 + SYS_FADVISE64 = 233 + SYS_EXIT_GROUP = 234 + SYS_LOOKUP_DCOOKIE = 235 + SYS_EPOLL_CREATE = 236 + SYS_EPOLL_CTL = 237 + SYS_EPOLL_WAIT = 238 + SYS_REMAP_FILE_PAGES = 239 + SYS_TIMER_CREATE = 240 + SYS_TIMER_SETTIME = 241 + SYS_TIMER_GETTIME = 242 + SYS_TIMER_GETOVERRUN = 243 + SYS_TIMER_DELETE = 244 + SYS_CLOCK_SETTIME = 245 + SYS_CLOCK_GETTIME = 246 + SYS_CLOCK_GETRES = 247 + SYS_CLOCK_NANOSLEEP = 248 + SYS_SWAPCONTEXT = 249 + SYS_TGKILL = 250 + SYS_UTIMES = 251 + SYS_STATFS64 = 252 + SYS_FSTATFS64 = 253 + SYS_RTAS = 255 + SYS_SYS_DEBUG_SETCONTEXT = 256 + SYS_MIGRATE_PAGES = 258 + SYS_MBIND = 259 + SYS_GET_MEMPOLICY = 260 + SYS_SET_MEMPOLICY = 261 + SYS_MQ_OPEN = 262 + SYS_MQ_UNLINK = 263 + SYS_MQ_TIMEDSEND = 264 + SYS_MQ_TIMEDRECEIVE = 265 + SYS_MQ_NOTIFY = 266 + SYS_MQ_GETSETATTR = 267 + SYS_KEXEC_LOAD = 268 + SYS_ADD_KEY = 269 + SYS_REQUEST_KEY = 270 + SYS_KEYCTL = 271 + SYS_WAITID = 272 + SYS_IOPRIO_SET = 273 + SYS_IOPRIO_GET = 274 + SYS_INOTIFY_INIT = 275 + SYS_INOTIFY_ADD_WATCH = 276 + SYS_INOTIFY_RM_WATCH = 277 + SYS_SPU_RUN = 278 + SYS_SPU_CREATE = 279 + SYS_PSELECT6 = 280 + SYS_PPOLL = 281 + SYS_UNSHARE = 282 + SYS_SPLICE = 283 + SYS_TEE = 284 + SYS_VMSPLICE = 285 + SYS_OPENAT = 286 + SYS_MKDIRAT = 287 + SYS_MKNODAT = 288 + SYS_FCHOWNAT = 289 + SYS_FUTIMESAT = 290 + SYS_NEWFSTATAT = 291 + SYS_UNLINKAT = 292 + SYS_RENAMEAT = 293 + SYS_LINKAT = 294 + SYS_SYMLINKAT = 295 + SYS_READLINKAT = 296 + SYS_FCHMODAT = 297 + SYS_FACCESSAT = 298 + SYS_GET_ROBUST_LIST = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_MOVE_PAGES = 301 + SYS_GETCPU = 302 + SYS_EPOLL_PWAIT = 303 + SYS_UTIMENSAT = 304 + SYS_SIGNALFD = 305 + SYS_TIMERFD_CREATE = 306 + SYS_EVENTFD = 307 + SYS_SYNC_FILE_RANGE2 = 308 + SYS_FALLOCATE = 309 + SYS_SUBPAGE_PROT = 310 + SYS_TIMERFD_SETTIME = 311 + SYS_TIMERFD_GETTIME = 312 + SYS_SIGNALFD4 = 313 + SYS_EVENTFD2 = 314 + SYS_EPOLL_CREATE1 = 315 + SYS_DUP3 = 316 + SYS_PIPE2 = 317 + SYS_INOTIFY_INIT1 = 318 + SYS_PERF_EVENT_OPEN = 319 + SYS_PREADV = 320 + SYS_PWRITEV = 321 + SYS_RT_TGSIGQUEUEINFO = 322 + SYS_FANOTIFY_INIT = 323 + SYS_FANOTIFY_MARK = 324 + SYS_PRLIMIT64 = 325 + SYS_SOCKET = 326 + SYS_BIND = 327 + SYS_CONNECT = 328 + SYS_LISTEN = 329 + SYS_ACCEPT = 330 + SYS_GETSOCKNAME = 331 + SYS_GETPEERNAME = 332 + SYS_SOCKETPAIR = 333 + SYS_SEND = 334 + SYS_SENDTO = 335 + SYS_RECV = 336 + SYS_RECVFROM = 337 + SYS_SHUTDOWN = 338 + SYS_SETSOCKOPT = 339 + SYS_GETSOCKOPT = 340 + SYS_SENDMSG = 341 + SYS_RECVMSG = 342 + SYS_RECVMMSG = 343 + SYS_ACCEPT4 = 344 + SYS_NAME_TO_HANDLE_AT = 345 + SYS_OPEN_BY_HANDLE_AT = 346 + SYS_CLOCK_ADJTIME = 347 + SYS_SYNCFS = 348 + SYS_SENDMMSG = 349 + SYS_SETNS = 350 + SYS_PROCESS_VM_READV = 351 + SYS_PROCESS_VM_WRITEV = 352 + SYS_FINIT_MODULE = 353 + SYS_KCMP = 354 + SYS_SCHED_SETATTR = 355 + SYS_SCHED_GETATTR = 356 + SYS_RENAMEAT2 = 357 + SYS_SECCOMP = 358 + SYS_GETRANDOM = 359 + SYS_MEMFD_CREATE = 360 + SYS_BPF = 361 + SYS_EXECVEAT = 362 + SYS_SWITCH_ENDIAN = 363 + SYS_USERFAULTFD = 364 + SYS_MEMBARRIER = 365 + SYS_MLOCK2 = 378 + SYS_COPY_FILE_RANGE = 379 + SYS_PREADV2 = 380 + SYS_PWRITEV2 = 381 + SYS_KEXEC_FILE_LOAD = 382 + SYS_STATX = 383 + SYS_PKEY_ALLOC = 384 + SYS_PKEY_FREE = 385 + SYS_PKEY_MPROTECT = 386 + SYS_RSEQ = 387 + SYS_IO_PGETEVENTS = 388 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go new file mode 100644 index 0000000..2c8c46a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -0,0 +1,288 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_FSTATAT = 79 + SYS_FSTAT = 80 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRLIMIT = 163 + SYS_SETRLIMIT = 164 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go new file mode 100644 index 0000000..6eb7c25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -0,0 +1,337 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include -fsigned-char /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_RESTART_SYSCALL = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SIGNAL = 48 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_LOOKUP_DCOOKIE = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_GETDENTS = 141 + SYS_SELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_GETRLIMIT = 191 + SYS_LCHOWN = 198 + SYS_GETUID = 199 + SYS_GETGID = 200 + SYS_GETEUID = 201 + SYS_GETEGID = 202 + SYS_SETREUID = 203 + SYS_SETREGID = 204 + SYS_GETGROUPS = 205 + SYS_SETGROUPS = 206 + SYS_FCHOWN = 207 + SYS_SETRESUID = 208 + SYS_GETRESUID = 209 + SYS_SETRESGID = 210 + SYS_GETRESGID = 211 + SYS_CHOWN = 212 + SYS_SETUID = 213 + SYS_SETGID = 214 + SYS_SETFSUID = 215 + SYS_SETFSGID = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_READAHEAD = 222 + SYS_SETXATTR = 224 + SYS_LSETXATTR = 225 + SYS_FSETXATTR = 226 + SYS_GETXATTR = 227 + SYS_LGETXATTR = 228 + SYS_FGETXATTR = 229 + SYS_LISTXATTR = 230 + SYS_LLISTXATTR = 231 + SYS_FLISTXATTR = 232 + SYS_REMOVEXATTR = 233 + SYS_LREMOVEXATTR = 234 + SYS_FREMOVEXATTR = 235 + SYS_GETTID = 236 + SYS_TKILL = 237 + SYS_FUTEX = 238 + SYS_SCHED_SETAFFINITY = 239 + SYS_SCHED_GETAFFINITY = 240 + SYS_TGKILL = 241 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_EPOLL_CREATE = 249 + SYS_EPOLL_CTL = 250 + SYS_EPOLL_WAIT = 251 + SYS_SET_TID_ADDRESS = 252 + SYS_FADVISE64 = 253 + SYS_TIMER_CREATE = 254 + SYS_TIMER_SETTIME = 255 + SYS_TIMER_GETTIME = 256 + SYS_TIMER_GETOVERRUN = 257 + SYS_TIMER_DELETE = 258 + SYS_CLOCK_SETTIME = 259 + SYS_CLOCK_GETTIME = 260 + SYS_CLOCK_GETRES = 261 + SYS_CLOCK_NANOSLEEP = 262 + SYS_STATFS64 = 265 + SYS_FSTATFS64 = 266 + SYS_REMAP_FILE_PAGES = 267 + SYS_MBIND = 268 + SYS_GET_MEMPOLICY = 269 + SYS_SET_MEMPOLICY = 270 + SYS_MQ_OPEN = 271 + SYS_MQ_UNLINK = 272 + SYS_MQ_TIMEDSEND = 273 + SYS_MQ_TIMEDRECEIVE = 274 + SYS_MQ_NOTIFY = 275 + SYS_MQ_GETSETATTR = 276 + SYS_KEXEC_LOAD = 277 + SYS_ADD_KEY = 278 + SYS_REQUEST_KEY = 279 + SYS_KEYCTL = 280 + SYS_WAITID = 281 + SYS_IOPRIO_SET = 282 + SYS_IOPRIO_GET = 283 + SYS_INOTIFY_INIT = 284 + SYS_INOTIFY_ADD_WATCH = 285 + SYS_INOTIFY_RM_WATCH = 286 + SYS_MIGRATE_PAGES = 287 + SYS_OPENAT = 288 + SYS_MKDIRAT = 289 + SYS_MKNODAT = 290 + SYS_FCHOWNAT = 291 + SYS_FUTIMESAT = 292 + SYS_NEWFSTATAT = 293 + SYS_UNLINKAT = 294 + SYS_RENAMEAT = 295 + SYS_LINKAT = 296 + SYS_SYMLINKAT = 297 + SYS_READLINKAT = 298 + SYS_FCHMODAT = 299 + SYS_FACCESSAT = 300 + SYS_PSELECT6 = 301 + SYS_PPOLL = 302 + SYS_UNSHARE = 303 + SYS_SET_ROBUST_LIST = 304 + SYS_GET_ROBUST_LIST = 305 + SYS_SPLICE = 306 + SYS_SYNC_FILE_RANGE = 307 + SYS_TEE = 308 + SYS_VMSPLICE = 309 + SYS_MOVE_PAGES = 310 + SYS_GETCPU = 311 + SYS_EPOLL_PWAIT = 312 + SYS_UTIMES = 313 + SYS_FALLOCATE = 314 + SYS_UTIMENSAT = 315 + SYS_SIGNALFD = 316 + SYS_TIMERFD = 317 + SYS_EVENTFD = 318 + SYS_TIMERFD_CREATE = 319 + SYS_TIMERFD_SETTIME = 320 + SYS_TIMERFD_GETTIME = 321 + SYS_SIGNALFD4 = 322 + SYS_EVENTFD2 = 323 + SYS_INOTIFY_INIT1 = 324 + SYS_PIPE2 = 325 + SYS_DUP3 = 326 + SYS_EPOLL_CREATE1 = 327 + SYS_PREADV = 328 + SYS_PWRITEV = 329 + SYS_RT_TGSIGQUEUEINFO = 330 + SYS_PERF_EVENT_OPEN = 331 + SYS_FANOTIFY_INIT = 332 + SYS_FANOTIFY_MARK = 333 + SYS_PRLIMIT64 = 334 + SYS_NAME_TO_HANDLE_AT = 335 + SYS_OPEN_BY_HANDLE_AT = 336 + SYS_CLOCK_ADJTIME = 337 + SYS_SYNCFS = 338 + SYS_SETNS = 339 + SYS_PROCESS_VM_READV = 340 + SYS_PROCESS_VM_WRITEV = 341 + SYS_S390_RUNTIME_INSTR = 342 + SYS_KCMP = 343 + SYS_FINIT_MODULE = 344 + SYS_SCHED_SETATTR = 345 + SYS_SCHED_GETATTR = 346 + SYS_RENAMEAT2 = 347 + SYS_SECCOMP = 348 + SYS_GETRANDOM = 349 + SYS_MEMFD_CREATE = 350 + SYS_BPF = 351 + SYS_S390_PCI_MMIO_WRITE = 352 + SYS_S390_PCI_MMIO_READ = 353 + SYS_EXECVEAT = 354 + SYS_USERFAULTFD = 355 + SYS_MEMBARRIER = 356 + SYS_RECVMMSG = 357 + SYS_SENDMMSG = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_MLOCK2 = 374 + SYS_COPY_FILE_RANGE = 375 + SYS_PREADV2 = 376 + SYS_PWRITEV2 = 377 + SYS_S390_GUARDED_STORAGE = 378 + SYS_STATX = 379 + SYS_S390_STHYI = 380 + SYS_KEXEC_FILE_LOAD = 381 + SYS_IO_PGETEVENTS = 382 + SYS_RSEQ = 383 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go new file mode 100644 index 0000000..6ed3063 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -0,0 +1,351 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAIT4 = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECV = 11 + SYS_CHDIR = 12 + SYS_CHOWN = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BRK = 17 + SYS_PERFCTR = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_CAPGET = 21 + SYS_CAPSET = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_VMSPLICE = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_SIGALTSTACK = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_STAT = 38 + SYS_SENDFILE = 39 + SYS_LSTAT = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_UMOUNT2 = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_MEMORY_ORDERING = 52 + SYS_IOCTL = 54 + SYS_REBOOT = 55 + SYS_SYMLINK = 57 + SYS_READLINK = 58 + SYS_EXECVE = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_FSTAT = 62 + SYS_FSTAT64 = 63 + SYS_GETPAGESIZE = 64 + SYS_MSYNC = 65 + SYS_VFORK = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_MMAP = 71 + SYS_MUNMAP = 73 + SYS_MPROTECT = 74 + SYS_MADVISE = 75 + SYS_VHANGUP = 76 + SYS_MINCORE = 78 + SYS_GETGROUPS = 79 + SYS_SETGROUPS = 80 + SYS_GETPGRP = 81 + SYS_SETITIMER = 83 + SYS_SWAPON = 85 + SYS_GETITIMER = 86 + SYS_SETHOSTNAME = 88 + SYS_DUP2 = 90 + SYS_FCNTL = 92 + SYS_SELECT = 93 + SYS_FSYNC = 95 + SYS_SETPRIORITY = 96 + SYS_SOCKET = 97 + SYS_CONNECT = 98 + SYS_ACCEPT = 99 + SYS_GETPRIORITY = 100 + SYS_RT_SIGRETURN = 101 + SYS_RT_SIGACTION = 102 + SYS_RT_SIGPROCMASK = 103 + SYS_RT_SIGPENDING = 104 + SYS_RT_SIGTIMEDWAIT = 105 + SYS_RT_SIGQUEUEINFO = 106 + SYS_RT_SIGSUSPEND = 107 + SYS_SETRESUID = 108 + SYS_GETRESUID = 109 + SYS_SETRESGID = 110 + SYS_GETRESGID = 111 + SYS_RECVMSG = 113 + SYS_SENDMSG = 114 + SYS_GETTIMEOFDAY = 116 + SYS_GETRUSAGE = 117 + SYS_GETSOCKOPT = 118 + SYS_GETCWD = 119 + SYS_READV = 120 + SYS_WRITEV = 121 + SYS_SETTIMEOFDAY = 122 + SYS_FCHOWN = 123 + SYS_FCHMOD = 124 + SYS_RECVFROM = 125 + SYS_SETREUID = 126 + SYS_SETREGID = 127 + SYS_RENAME = 128 + SYS_TRUNCATE = 129 + SYS_FTRUNCATE = 130 + SYS_FLOCK = 131 + SYS_LSTAT64 = 132 + SYS_SENDTO = 133 + SYS_SHUTDOWN = 134 + SYS_SOCKETPAIR = 135 + SYS_MKDIR = 136 + SYS_RMDIR = 137 + SYS_UTIMES = 138 + SYS_STAT64 = 139 + SYS_SENDFILE64 = 140 + SYS_GETPEERNAME = 141 + SYS_FUTEX = 142 + SYS_GETTID = 143 + SYS_GETRLIMIT = 144 + SYS_SETRLIMIT = 145 + SYS_PIVOT_ROOT = 146 + SYS_PRCTL = 147 + SYS_PCICONFIG_READ = 148 + SYS_PCICONFIG_WRITE = 149 + SYS_GETSOCKNAME = 150 + SYS_INOTIFY_INIT = 151 + SYS_INOTIFY_ADD_WATCH = 152 + SYS_POLL = 153 + SYS_GETDENTS64 = 154 + SYS_INOTIFY_RM_WATCH = 156 + SYS_STATFS = 157 + SYS_FSTATFS = 158 + SYS_UMOUNT = 159 + SYS_SCHED_SET_AFFINITY = 160 + SYS_SCHED_GET_AFFINITY = 161 + SYS_GETDOMAINNAME = 162 + SYS_SETDOMAINNAME = 163 + SYS_UTRAP_INSTALL = 164 + SYS_QUOTACTL = 165 + SYS_SET_TID_ADDRESS = 166 + SYS_MOUNT = 167 + SYS_USTAT = 168 + SYS_SETXATTR = 169 + SYS_LSETXATTR = 170 + SYS_FSETXATTR = 171 + SYS_GETXATTR = 172 + SYS_LGETXATTR = 173 + SYS_GETDENTS = 174 + SYS_SETSID = 175 + SYS_FCHDIR = 176 + SYS_FGETXATTR = 177 + SYS_LISTXATTR = 178 + SYS_LLISTXATTR = 179 + SYS_FLISTXATTR = 180 + SYS_REMOVEXATTR = 181 + SYS_LREMOVEXATTR = 182 + SYS_SIGPENDING = 183 + SYS_QUERY_MODULE = 184 + SYS_SETPGID = 185 + SYS_FREMOVEXATTR = 186 + SYS_TKILL = 187 + SYS_EXIT_GROUP = 188 + SYS_UNAME = 189 + SYS_INIT_MODULE = 190 + SYS_PERSONALITY = 191 + SYS_REMAP_FILE_PAGES = 192 + SYS_EPOLL_CREATE = 193 + SYS_EPOLL_CTL = 194 + SYS_EPOLL_WAIT = 195 + SYS_IOPRIO_SET = 196 + SYS_GETPPID = 197 + SYS_SIGACTION = 198 + SYS_SGETMASK = 199 + SYS_SSETMASK = 200 + SYS_SIGSUSPEND = 201 + SYS_OLDLSTAT = 202 + SYS_USELIB = 203 + SYS_READDIR = 204 + SYS_READAHEAD = 205 + SYS_SOCKETCALL = 206 + SYS_SYSLOG = 207 + SYS_LOOKUP_DCOOKIE = 208 + SYS_FADVISE64 = 209 + SYS_FADVISE64_64 = 210 + SYS_TGKILL = 211 + SYS_WAITPID = 212 + SYS_SWAPOFF = 213 + SYS_SYSINFO = 214 + SYS_IPC = 215 + SYS_SIGRETURN = 216 + SYS_CLONE = 217 + SYS_IOPRIO_GET = 218 + SYS_ADJTIMEX = 219 + SYS_SIGPROCMASK = 220 + SYS_CREATE_MODULE = 221 + SYS_DELETE_MODULE = 222 + SYS_GET_KERNEL_SYMS = 223 + SYS_GETPGID = 224 + SYS_BDFLUSH = 225 + SYS_SYSFS = 226 + SYS_AFS_SYSCALL = 227 + SYS_SETFSUID = 228 + SYS_SETFSGID = 229 + SYS__NEWSELECT = 230 + SYS_SPLICE = 232 + SYS_STIME = 233 + SYS_STATFS64 = 234 + SYS_FSTATFS64 = 235 + SYS__LLSEEK = 236 + SYS_MLOCK = 237 + SYS_MUNLOCK = 238 + SYS_MLOCKALL = 239 + SYS_MUNLOCKALL = 240 + SYS_SCHED_SETPARAM = 241 + SYS_SCHED_GETPARAM = 242 + SYS_SCHED_SETSCHEDULER = 243 + SYS_SCHED_GETSCHEDULER = 244 + SYS_SCHED_YIELD = 245 + SYS_SCHED_GET_PRIORITY_MAX = 246 + SYS_SCHED_GET_PRIORITY_MIN = 247 + SYS_SCHED_RR_GET_INTERVAL = 248 + SYS_NANOSLEEP = 249 + SYS_MREMAP = 250 + SYS__SYSCTL = 251 + SYS_GETSID = 252 + SYS_FDATASYNC = 253 + SYS_NFSSERVCTL = 254 + SYS_SYNC_FILE_RANGE = 255 + SYS_CLOCK_SETTIME = 256 + SYS_CLOCK_GETTIME = 257 + SYS_CLOCK_GETRES = 258 + SYS_CLOCK_NANOSLEEP = 259 + SYS_SCHED_GETAFFINITY = 260 + SYS_SCHED_SETAFFINITY = 261 + SYS_TIMER_SETTIME = 262 + SYS_TIMER_GETTIME = 263 + SYS_TIMER_GETOVERRUN = 264 + SYS_TIMER_DELETE = 265 + SYS_TIMER_CREATE = 266 + SYS_VSERVER = 267 + SYS_IO_SETUP = 268 + SYS_IO_DESTROY = 269 + SYS_IO_SUBMIT = 270 + SYS_IO_CANCEL = 271 + SYS_IO_GETEVENTS = 272 + SYS_MQ_OPEN = 273 + SYS_MQ_UNLINK = 274 + SYS_MQ_TIMEDSEND = 275 + SYS_MQ_TIMEDRECEIVE = 276 + SYS_MQ_NOTIFY = 277 + SYS_MQ_GETSETATTR = 278 + SYS_WAITID = 279 + SYS_TEE = 280 + SYS_ADD_KEY = 281 + SYS_REQUEST_KEY = 282 + SYS_KEYCTL = 283 + SYS_OPENAT = 284 + SYS_MKDIRAT = 285 + SYS_MKNODAT = 286 + SYS_FCHOWNAT = 287 + SYS_FUTIMESAT = 288 + SYS_FSTATAT64 = 289 + SYS_UNLINKAT = 290 + SYS_RENAMEAT = 291 + SYS_LINKAT = 292 + SYS_SYMLINKAT = 293 + SYS_READLINKAT = 294 + SYS_FCHMODAT = 295 + SYS_FACCESSAT = 296 + SYS_PSELECT6 = 297 + SYS_PPOLL = 298 + SYS_UNSHARE = 299 + SYS_SET_ROBUST_LIST = 300 + SYS_GET_ROBUST_LIST = 301 + SYS_MIGRATE_PAGES = 302 + SYS_MBIND = 303 + SYS_GET_MEMPOLICY = 304 + SYS_SET_MEMPOLICY = 305 + SYS_KEXEC_LOAD = 306 + SYS_MOVE_PAGES = 307 + SYS_GETCPU = 308 + SYS_EPOLL_PWAIT = 309 + SYS_UTIMENSAT = 310 + SYS_SIGNALFD = 311 + SYS_TIMERFD_CREATE = 312 + SYS_EVENTFD = 313 + SYS_FALLOCATE = 314 + SYS_TIMERFD_SETTIME = 315 + SYS_TIMERFD_GETTIME = 316 + SYS_SIGNALFD4 = 317 + SYS_EVENTFD2 = 318 + SYS_EPOLL_CREATE1 = 319 + SYS_DUP3 = 320 + SYS_PIPE2 = 321 + SYS_INOTIFY_INIT1 = 322 + SYS_ACCEPT4 = 323 + SYS_PREADV = 324 + SYS_PWRITEV = 325 + SYS_RT_TGSIGQUEUEINFO = 326 + SYS_PERF_EVENT_OPEN = 327 + SYS_RECVMMSG = 328 + SYS_FANOTIFY_INIT = 329 + SYS_FANOTIFY_MARK = 330 + SYS_PRLIMIT64 = 331 + SYS_NAME_TO_HANDLE_AT = 332 + SYS_OPEN_BY_HANDLE_AT = 333 + SYS_CLOCK_ADJTIME = 334 + SYS_SYNCFS = 335 + SYS_SENDMMSG = 336 + SYS_SETNS = 337 + SYS_PROCESS_VM_READV = 338 + SYS_PROCESS_VM_WRITEV = 339 + SYS_KERN_FEATURES = 340 + SYS_KCMP = 341 + SYS_FINIT_MODULE = 342 + SYS_SCHED_SETATTR = 343 + SYS_SCHED_GETATTR = 344 + SYS_RENAMEAT2 = 345 + SYS_SECCOMP = 346 + SYS_GETRANDOM = 347 + SYS_MEMFD_CREATE = 348 + SYS_BPF = 349 + SYS_EXECVEAT = 350 + SYS_MEMBARRIER = 351 + SYS_USERFAULTFD = 352 + SYS_BIND = 353 + SYS_LISTEN = 354 + SYS_SETSOCKOPT = 355 + SYS_MLOCK2 = 356 + SYS_COPY_FILE_RANGE = 357 + SYS_PREADV2 = 358 + SYS_PWRITEV2 = 359 + SYS_STATX = 360 + SYS_IO_PGETEVENTS = 361 +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go new file mode 100644 index 0000000..e66a8c9 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go new file mode 100644 index 0000000..42c788f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go new file mode 100644 index 0000000..0a07571 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go new file mode 100644 index 0000000..0291c09 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go @@ -0,0 +1,274 @@ +// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SYS_EXIT = 1 // { void|sys||exit(int rval); } + SYS_FORK = 2 // { int|sys||fork(void); } + SYS_READ = 3 // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int|sys||open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int|sys||close(int fd); } + SYS_LINK = 9 // { int|sys||link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int|sys||unlink(const char *path); } + SYS_CHDIR = 12 // { int|sys||chdir(const char *path); } + SYS_FCHDIR = 13 // { int|sys||fchdir(int fd); } + SYS_CHMOD = 15 // { int|sys||chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int|sys||chown(const char *path, uid_t uid, gid_t gid); } + SYS_BREAK = 17 // { int|sys||obreak(char *nsize); } + SYS_GETPID = 20 // { pid_t|sys||getpid_with_ppid(void); } + SYS_UNMOUNT = 22 // { int|sys||unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int|sys||setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t|sys||getuid_with_euid(void); } + SYS_GETEUID = 25 // { uid_t|sys||geteuid(void); } + SYS_PTRACE = 26 // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); } + SYS_RECVMSG = 27 // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int|sys||access(const char *path, int flags); } + SYS_CHFLAGS = 34 // { int|sys||chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int|sys||fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { void|sys||sync(void); } + SYS_KILL = 37 // { int|sys||kill(pid_t pid, int signum); } + SYS_GETPPID = 39 // { pid_t|sys||getppid(void); } + SYS_DUP = 41 // { int|sys||dup(int fd); } + SYS_PIPE = 42 // { int|sys||pipe(void); } + SYS_GETEGID = 43 // { gid_t|sys||getegid(void); } + SYS_PROFIL = 44 // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_GETGID = 47 // { gid_t|sys||getgid_with_egid(void); } + SYS___GETLOGIN = 49 // { int|sys||__getlogin(char *namebuf, size_t namelen); } + SYS___SETLOGIN = 50 // { int|sys||__setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int|sys||acct(const char *path); } + SYS_IOCTL = 54 // { int|sys||ioctl(int fd, u_long com, ... void *data); } + SYS_REVOKE = 56 // { int|sys||revoke(const char *path); } + SYS_SYMLINK = 57 // { int|sys||symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int|sys||execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t|sys||umask(mode_t newmask); } + SYS_CHROOT = 61 // { int|sys||chroot(const char *path); } + SYS_VFORK = 66 // { int|sys||vfork(void); } + SYS_SBRK = 69 // { int|sys||sbrk(intptr_t incr); } + SYS_SSTK = 70 // { int|sys||sstk(int incr); } + SYS_VADVISE = 72 // { int|sys||ovadvise(int anom); } + SYS_MUNMAP = 73 // { int|sys||munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int|sys||mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int|sys||madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int|sys||mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int|sys||getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int|sys||getpgrp(void); } + SYS_SETPGID = 82 // { int|sys||setpgid(pid_t pid, pid_t pgid); } + SYS_DUP2 = 90 // { int|sys||dup2(int from, int to); } + SYS_FCNTL = 92 // { int|sys||fcntl(int fd, int cmd, ... void *arg); } + SYS_FSYNC = 95 // { int|sys||fsync(int fd); } + SYS_SETPRIORITY = 96 // { int|sys||setpriority(int which, id_t who, int prio); } + SYS_CONNECT = 98 // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETPRIORITY = 100 // { int|sys||getpriority(int which, id_t who); } + SYS_BIND = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int|sys||listen(int s, int backlog); } + SYS_GETSOCKOPT = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_READV = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_FCHOWN = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int|sys||fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int|sys||rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int|sys||flock(int fd, int how); } + SYS_MKFIFO = 132 // { int|sys||mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int|sys||shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int|sys||mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int|sys||rmdir(const char *path); } + SYS_SETSID = 147 // { int|sys||setsid(void); } + SYS_SYSARCH = 165 // { int|sys||sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_PWRITE = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); } + SYS_NTP_ADJTIME = 176 // { int|sys||ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int|sys||setgid(gid_t gid); } + SYS_SETEGID = 182 // { int|sys||setegid(gid_t egid); } + SYS_SETEUID = 183 // { int|sys||seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long|sys||pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long|sys||fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); } + SYS_LSEEK = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); } + SYS_FTRUNCATE = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); } + SYS___SYSCTL = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); } + SYS_MLOCK = 203 // { int|sys||mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int|sys||munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int|sys||undelete(const char *path); } + SYS_GETPGID = 207 // { pid_t|sys||getpgid(pid_t pid); } + SYS_REBOOT = 208 // { int|sys||reboot(int opt, char *bootstr); } + SYS_POLL = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int|sys||semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_SEMCONFIG = 223 // { int|sys||semconfig(int flag); } + SYS_MSGGET = 225 // { int|sys||msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int|sys||shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); } + SYS_TIMER_CREATE = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); } + SYS_TIMER_DELETE = 236 // { int|sys||timer_delete(timer_t timerid); } + SYS_TIMER_GETOVERRUN = 239 // { int|sys||timer_getoverrun(timer_t timerid); } + SYS_FDATASYNC = 241 // { int|sys||fdatasync(int fd); } + SYS_MLOCKALL = 242 // { int|sys||mlockall(int flags); } + SYS_MUNLOCKALL = 243 // { int|sys||munlockall(void); } + SYS_SIGQUEUEINFO = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); } + SYS_MODCTL = 246 // { int|sys||modctl(int cmd, void *arg); } + SYS___POSIX_RENAME = 270 // { int|sys||__posix_rename(const char *from, const char *to); } + SYS_SWAPCTL = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); } + SYS_MINHERIT = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); } + SYS_LCHMOD = 274 // { int|sys||lchmod(const char *path, mode_t mode); } + SYS_LCHOWN = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); } + SYS_MSYNC = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); } + SYS___POSIX_CHOWN = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); } + SYS___POSIX_FCHOWN = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); } + SYS___POSIX_LCHOWN = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 286 // { pid_t|sys||getsid(pid_t pid); } + SYS___CLONE = 287 // { pid_t|sys||__clone(int flags, void *stack); } + SYS_FKTRACE = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); } + SYS_PREADV = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); } + SYS___GETCWD = 296 // { int|sys||__getcwd(char *bufp, size_t length); } + SYS_FCHROOT = 297 // { int|sys||fchroot(int fd); } + SYS_LCHFLAGS = 304 // { int|sys||lchflags(const char *path, u_long flags); } + SYS_ISSETUGID = 305 // { int|sys||issetugid(void); } + SYS_UTRACE = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); } + SYS_GETCONTEXT = 307 // { int|sys||getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 308 // { int|sys||setcontext(const struct __ucontext *ucp); } + SYS__LWP_CREATE = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); } + SYS__LWP_EXIT = 310 // { int|sys||_lwp_exit(void); } + SYS__LWP_SELF = 311 // { lwpid_t|sys||_lwp_self(void); } + SYS__LWP_WAIT = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); } + SYS__LWP_SUSPEND = 313 // { int|sys||_lwp_suspend(lwpid_t target); } + SYS__LWP_CONTINUE = 314 // { int|sys||_lwp_continue(lwpid_t target); } + SYS__LWP_WAKEUP = 315 // { int|sys||_lwp_wakeup(lwpid_t target); } + SYS__LWP_GETPRIVATE = 316 // { void *|sys||_lwp_getprivate(void); } + SYS__LWP_SETPRIVATE = 317 // { void|sys||_lwp_setprivate(void *ptr); } + SYS__LWP_KILL = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); } + SYS__LWP_DETACH = 319 // { int|sys||_lwp_detach(lwpid_t target); } + SYS__LWP_UNPARK = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); } + SYS__LWP_UNPARK_ALL = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); } + SYS__LWP_SETNAME = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); } + SYS__LWP_GETNAME = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); } + SYS__LWP_CTL = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); } + SYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); } + SYS_PMC_GET_INFO = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); } + SYS_PMC_CONTROL = 342 // { int|sys||pmc_control(int ctr, int op, void *args); } + SYS_RASCTL = 343 // { int|sys||rasctl(void *addr, size_t len, int op); } + SYS_KQUEUE = 344 // { int|sys||kqueue(void); } + SYS__SCHED_SETPARAM = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); } + SYS__SCHED_GETPARAM = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); } + SYS__SCHED_SETAFFINITY = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); } + SYS__SCHED_GETAFFINITY = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); } + SYS_SCHED_YIELD = 350 // { int|sys||sched_yield(void); } + SYS_FSYNC_RANGE = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); } + SYS_UUIDGEN = 355 // { int|sys||uuidgen(struct uuid *store, int count); } + SYS_GETVFSSTAT = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); } + SYS_STATVFS1 = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); } + SYS_FSTATVFS1 = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); } + SYS_EXTATTRCTL = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FD = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_LIST_FD = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_SETXATTR = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_LSETXATTR = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); } + SYS_FSETXATTR = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); } + SYS_GETXATTR = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); } + SYS_LGETXATTR = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); } + SYS_FGETXATTR = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); } + SYS_LISTXATTR = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); } + SYS_LLISTXATTR = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); } + SYS_FLISTXATTR = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); } + SYS_REMOVEXATTR = 384 // { int|sys||removexattr(const char *path, const char *name); } + SYS_LREMOVEXATTR = 385 // { int|sys||lremovexattr(const char *path, const char *name); } + SYS_FREMOVEXATTR = 386 // { int|sys||fremovexattr(int fd, const char *name); } + SYS_GETDENTS = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); } + SYS_SOCKET = 394 // { int|sys|30|socket(int domain, int type, int protocol); } + SYS_GETFH = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); } + SYS_MOUNT = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); } + SYS_MREMAP = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); } + SYS_PSET_CREATE = 412 // { int|sys||pset_create(psetid_t *psid); } + SYS_PSET_DESTROY = 413 // { int|sys||pset_destroy(psetid_t psid); } + SYS_PSET_ASSIGN = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); } + SYS__PSET_BIND = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); } + SYS_POSIX_FADVISE = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); } + SYS_SELECT = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_GETTIMEOFDAY = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); } + SYS_SETTIMEOFDAY = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); } + SYS_UTIMES = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); } + SYS_ADJTIME = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_FUTIMES = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); } + SYS_LUTIMES = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); } + SYS_SETITIMER = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); } + SYS_CLOCK_GETTIME = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_NANOSLEEP = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS___SIGTIMEDWAIT = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); } + SYS__LWP_PARK = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); } + SYS_KEVENT = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); } + SYS_PSELECT = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_POLLTS = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_STAT = 439 // { int|sys|50|stat(const char *path, struct stat *ub); } + SYS_FSTAT = 440 // { int|sys|50|fstat(int fd, struct stat *sb); } + SYS_LSTAT = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); } + SYS___SEMCTL = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); } + SYS_SHMCTL = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_GETRUSAGE = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); } + SYS_TIMER_SETTIME = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_TIMER_GETTIME = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); } + SYS_NTP_GETTIME = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); } + SYS_WAIT4 = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_MKNOD = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); } + SYS_FHSTAT = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); } + SYS_PIPE2 = 453 // { int|sys||pipe2(int *fildes, int flags); } + SYS_DUP3 = 454 // { int|sys||dup3(int from, int to, int flags); } + SYS_KQUEUE1 = 455 // { int|sys||kqueue1(int flags); } + SYS_PACCEPT = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); } + SYS_LINKAT = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); } + SYS_RENAMEAT = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_MKFIFOAT = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); } + SYS_MKDIRAT = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); } + SYS_FACCESSAT = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); } + SYS_FEXECVE = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); } + SYS_FSTATAT = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_UTIMENSAT = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); } + SYS_OPENAT = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); } + SYS_READLINKAT = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); } + SYS_SYMLINKAT = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); } + SYS_UNLINKAT = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); } + SYS_FUTIMENS = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); } + SYS___QUOTACTL = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); } + SYS_POSIX_SPAWN = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); } + SYS_RECVMMSG = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); } + SYS_SENDMMSG = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go new file mode 100644 index 0000000..b0207d1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go new file mode 100644 index 0000000..f0dec6f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 0000000..33d1dc5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,218 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go new file mode 100644 index 0000000..cedc9b0 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -0,0 +1,345 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc,aix + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type off64 int64 +type off int32 +type Mode_t uint32 + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type StTimespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int32 + +type Tms struct{} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint32 + +type Stat_t struct { + Dev uint32 + Ino uint32 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Size int32 + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int32 + Blocks int32 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint32 + Ino uint32 + Reclen uint16 + Namlen uint16 + Name [256]uint8 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [2048]int32 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Losigs uint32 + Hisigs uint32 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint32 + Blocks uint32 + Bfree uint32 + Bavail uint32 + Files uint32 + Ffree uint32 + Fsid Fsid_t + Vfstype int32 + Fsize uint32 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go new file mode 100644 index 0000000..f46482d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -0,0 +1,354 @@ +// cgo -godefs types_aix.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,aix + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x3ff +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type off64 int64 +type off int64 +type Mode_t uint32 + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type StTimespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Timex struct{} + +type Time_t int64 + +type Tms struct{} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Timezone struct { + Minuteswest int32 + Dsttime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type Pid_t int32 + +type _Gid_t uint32 + +type dev_t uint64 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink int16 + Flag uint16 + Uid uint32 + Gid uint32 + Rdev uint64 + Ssize int32 + _ [4]byte + Atim StTimespec + Mtim StTimespec + Ctim StTimespec + Blksize int64 + Blocks int64 + Vfstype int32 + Vfs uint32 + Type uint32 + Gen uint32 + Reserved [9]uint32 + Padto_ll uint32 + Size int64 +} + +type StatxTimestamp struct{} + +type Statx_t struct{} + +type Dirent struct { + Offset uint64 + Ino uint64 + Reclen uint16 + Namlen uint16 + Name [256]uint8 + _ [4]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [1023]uint8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [1012]uint8 +} + +type _Socklen uint32 + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 +) + +const ( + SizeofIfMsghdr = 0x10 +) + +type IfMsgHdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Addrlen uint8 + _ [1]byte +} + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} + +type Ustat_t struct{} + +type Sigset_t struct { + Set [4]uint64 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x1 + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [16]uint8 +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line uint8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events uint16 + Revents uint16 +} + +const ( + POLLERR = 0x4000 + POLLHUP = 0x2000 + POLLIN = 0x1 + POLLNVAL = 0x8000 + POLLOUT = 0x2 + POLLPRI = 0x4 + POLLRDBAND = 0x20 + POLLRDNORM = 0x10 + POLLWRBAND = 0x40 + POLLWRNORM = 0x2 +) + +type Flock_t struct { + Type int16 + Whence int16 + Sysid uint32 + Pid int32 + Vfs int32 + Start int64 + Len int64 +} + +type Fsid_t struct { + Val [2]uint32 +} +type Fsid64_t struct { + Val [2]uint64 +} + +type Statfs_t struct { + Version int32 + Type int32 + Bsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid64_t + Vfstype int32 + _ [4]byte + Fsize uint64 + Vfsnumber int32 + Vfsoff int32 + Vfslen int32 + Vfsvers int32 + Fname [32]uint8 + Fpack [32]uint8 + Name_max int32 + _ [4]byte +} + +const RNDGETENTCNT = 0x80045200 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go new file mode 100644 index 0000000..cefe2f8 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -0,0 +1,499 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 struct{} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go new file mode 100644 index 0000000..c6bb883 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go new file mode 100644 index 0000000..94c23bc --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -0,0 +1,500 @@ +// NOTE: cgo can't generate struct Stat_t and struct Statfs_t yet +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_darwin.go + +// +build arm,darwin + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timeval32 [0]byte + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint32 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + Contigbytes int64 + Devoffset int64 +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go new file mode 100644 index 0000000..c82a930 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -0,0 +1,509 @@ +// cgo -godefs types_darwin.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,darwin + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 +} + +type Statfs_t struct { + Bsize uint32 + Iosize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Owner uint32 + Type uint32 + Flags uint32 + Fssubtype uint32 + Fstypename [16]int8 + Mntonname [1024]int8 + Mntfromname [1024]int8 + Reserved [8]uint32 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Fstore_t struct { + Flags uint32 + Posmode int32 + Offset int64 + Length int64 + Bytesalloc int64 +} + +type Radvisory_t struct { + Offset int64 + Count int32 + _ [4]byte +} + +type Fbootstraptransfer_t struct { + Offset int64 + Length uint64 + Buffer *byte +} + +type Log2phys_t struct { + Flags uint32 + _ [8]byte + _ [8]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Dirent struct { + Ino uint64 + Seekoff uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [1024]int8 + _ [3]byte +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex uint32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]int32 +} + +const ( + SizeofIfMsghdr = 0x70 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfmaMsghdr2 = 0x14 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 + Unused2 uint32 + Hwassist uint32 + Reserved1 uint32 + Reserved2 uint32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfmaMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Refcount int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire int32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Filler [4]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval32 + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint64 + Oflag uint64 + Cflag uint64 + Lflag uint64 + Cc [20]uint8 + _ [4]byte + Ispeed uint64 + Ospeed uint64 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x2 + AT_REMOVEDIR = 0x80 + AT_SYMLINK_FOLLOW = 0x40 + AT_SYMLINK_NOFOLLOW = 0x20 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go new file mode 100644 index 0000000..7b34e2e --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -0,0 +1,469 @@ +// cgo -godefs types_dragonfly.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,dragonfly + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + Padding1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare1 int64 + Qspare2 int64 +} + +type Statfs_t struct { + Spare2 int64 + Bsize int64 + Iosize int64 + Blocks int64 + Bfree int64 + Bavail int64 + Files int64 + Ffree int64 + Fsid Fsid + Owner uint32 + Type int32 + Flags int32 + _ [4]byte + Syncwrites int64 + Asyncwrites int64 + Fstypename [16]int8 + Mntonname [80]int8 + Syncreads int64 + Asyncreads int64 + Spares1 int16 + Mntfromname [80]int8 + Spares2 int16 + _ [4]byte + Spare [2]int64 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Namlen uint16 + Type uint8 + Unused1 uint8 + Unused2 uint32 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 + Rcf uint16 + Route [16]uint16 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + SizeofIfMsghdr = 0xb0 + SizeofIfData = 0xa0 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + _ [2]byte + Mtu uint64 + Metric uint64 + Link_state uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Oqdrops uint64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Pksent uint64 + Expire uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Recvpipe uint64 + Hopcount uint64 + Mssopt uint16 + Pad uint16 + _ [4]byte + Msl uint64 + Iwmaxsegs uint64 + Iwcapsegs uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = 0xfffafdcd + AT_SYMLINK_NOFOLLOW = 0x1 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Utsname struct { + Sysname [32]byte + Nodename [32]byte + Release [32]byte + Version [32]byte + Machine [32]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go new file mode 100644 index 0000000..c146c1a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -0,0 +1,603 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim_ext int32 + Atim Timespec + Mtim_ext int32 + Mtim Timespec + Ctim_ext int32 + Ctim Timespec + Btim_ext int32 + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec + _ [8]byte +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x60 + sizeofIfData = 0x98 + SizeofIfData = 0x50 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + Epoch int32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go new file mode 100644 index 0000000..ac33a8d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go new file mode 100644 index 0000000..e27511a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -0,0 +1,602 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,freebsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int32 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0x70 + sizeofIfData = 0x98 + SizeofIfData = 0x60 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x5c + SizeofRtMetrics = 0x38 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Hwassist uint32 + _ [4]byte + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 + Weight uint32 + Filler [3]uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0xc + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go new file mode 100644 index 0000000..2aadc1a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -0,0 +1,602 @@ +// cgo -godefs types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Birthtim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type stat_freebsd11_t struct { + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Birthtim Timespec +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [1024]int8 + Mntonname [1024]int8 +} + +type statfs_freebsd11_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]int8 + Mntfromname [88]int8 + Mntonname [88]int8 +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type dirent_freebsd11 struct { + Fileno uint32 + Reclen uint16 + Type uint8 + Namlen uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Filler [3]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_REMOVEDIR = 0x800 + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go new file mode 100644 index 0000000..a908f25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -0,0 +1,2135 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [1]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Ebx int32 + Ecx int32 + Edx int32 + Esi int32 + Edi int32 + Ebp int32 + Eax int32 + Xds int32 + Xes int32 + Xfs int32 + Xgs int32 + Orig_eax int32 + Eip int32 + Xcs int32 + Eflags int32 + Esp int32 + Xss int32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go new file mode 100644 index 0000000..e63fa74 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -0,0 +1,2148 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + R15 uint64 + R14 uint64 + R13 uint64 + R12 uint64 + Rbp uint64 + Rbx uint64 + R11 uint64 + R10 uint64 + R9 uint64 + R8 uint64 + Rax uint64 + Rcx uint64 + Rdx uint64 + Rsi uint64 + Rdi uint64 + Orig_rax uint64 + Rip uint64 + Cs uint64 + Eflags uint64 + Rsp uint64 + Ss uint64 + Fs_base uint64 + Gs_base uint64 + Ds uint64 + Es uint64 + Fs uint64 + Gs uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go new file mode 100644 index 0000000..34e4e6d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -0,0 +1,2126 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + _ uint32 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + _ [4]byte + Size int64 + Blksize int32 + _ [4]byte + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Ino uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Uregs [18]uint32 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]uint8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]uint8 + Fpack [6]uint8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]uint8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int32 + Frsize int32 + Flags int32 + Spare [4]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go new file mode 100644 index 0000000..7f2e26f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -0,0 +1,2127 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [31]uint64 + Sp uint64 + Pc uint64 + Pstate uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go new file mode 100644 index 0000000..66e408f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go new file mode 100644 index 0000000..e60575a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -0,0 +1,2129 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go new file mode 100644 index 0000000..af5836a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -0,0 +1,2129 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mips64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]uint32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]uint32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize uint32 + Pad4 uint32 + Blocks int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Frsize int64 + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int64 + Flags int64 + Spare [5]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go new file mode 100644 index 0000000..471706a --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build mipsle,linux + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int32 + Nsec int32 +} + +type Timeval struct { + Sec int32 + Usec int32 +} + +type Timex struct { + Modes uint32 + Offset int32 + Freq int32 + Maxerror int32 + Esterror int32 + Status int32 + Constant int32 + Precision int32 + Tolerance int32 + Time Timeval + Tick int32 + Ppsfreq int32 + Jitter int32 + Shift int32 + Stabil int32 + Jitcnt int32 + Calcnt int32 + Errcnt int32 + Stbcnt int32 + Tai int32 + _ [44]byte +} + +type Time_t int32 + +type Tms struct { + Utime int32 + Stime int32 + Cutime int32 + Cstime int32 +} + +type Utimbuf struct { + Actime int32 + Modtime int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint32 + Pad1 [3]int32 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint32 + Pad2 [3]int32 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + Pad4 int32 + Blocks int64 + Pad5 [14]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x8 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x8 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [32]uint64 + Lo uint64 + Hi uint64 + Epc uint64 + Badvaddr uint64 + Status uint64 + Cause uint64 +} + +type FdSet struct { + Bits [32]int32 +} + +type Sysinfo_t struct { + Uptime int32 + Loads [3]uint32 + Totalram uint32 + Freeram uint32 + Sharedram uint32 + Bufferram uint32 + Totalswap uint32 + Freeswap uint32 + Procs uint16 + Pad uint16 + Totalhigh uint32 + Freehigh uint32 + Unit uint32 + _ [8]int8 +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint32 + Fname [6]int8 + Fpack [6]int8 +} + +type EpollEvent struct { + Events uint32 + PadFd int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [32]uint32 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [23]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + _ [4]byte + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + _ [4]byte + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint32 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x20 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [122]int8 + _ uint32 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint32 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int32 + Bsize int32 + Frsize int32 + _ [4]byte + Blocks uint64 + Bfree uint64 + Files uint64 + Ffree uint64 + Bavail uint64 + Fsid Fsid + Namelen int32 + Flags int32 + Spare [5]int32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x18 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int32 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go new file mode 100644 index 0000000..6cfa149 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -0,0 +1,2137 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go new file mode 100644 index 0000000..acb3773 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -0,0 +1,2137 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build ppc64le,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Gpr [32]uint64 + Nip uint64 + Msr uint64 + Orig_gpr3 uint64 + Ctr uint64 + Link uint64 + Xer uint64 + Ccr uint64 + Softe uint64 + Trap uint64 + Dar uint64 + Dsisr uint64 + Result uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + Line uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go new file mode 100644 index 0000000..9735b25 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -0,0 +1,2154 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build riscv64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]uint8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]uint8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]uint8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Pc uint64 + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T0 uint64 + T1 uint64 + T2 uint64 + S0 uint64 + S1 uint64 + A0 uint64 + A1 uint64 + A2 uint64 + A3 uint64 + A4 uint64 + A5 uint64 + A6 uint64 + A7 uint64 + S2 uint64 + S3 uint64 + S4 uint64 + S5 uint64 + S6 uint64 + S7 uint64 + S8 uint64 + S9 uint64 + S10 uint64 + S11 uint64 + T3 uint64 + T4 uint64 + T5 uint64 + T6 uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]uint8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]uint8 + Fpack [6]uint8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]uint8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]uint8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go new file mode 100644 index 0000000..5369f65 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -0,0 +1,2151 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build s390x,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint32 + Uid uint32 + Gid uint32 + _ int32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int64 + Blocks int64 + _ [3]int64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x6 + FADV_NOREUSE = 0x7 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Psw PtracePsw + Gprs [16]uint64 + Acrs [16]uint32 + Orig_gpr2 uint64 + Fp_regs PtraceFpregs + Per_info PtracePer + Ieee_instruction_pointer uint64 +} + +type PtracePsw struct { + Mask uint64 + Addr uint64 +} + +type PtraceFpregs struct { + Fpc uint32 + Fprs [16]float64 +} + +type PtracePer struct { + _ [0]uint64 + _ [32]byte + Starting_addr uint64 + Ending_addr uint64 + Perc_atmid uint16 + Address uint64 + Access_id uint8 + _ [7]byte +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x2000 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type uint32 + Bsize uint32 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen uint32 + Frsize uint32 + Flags uint32 + Spare [4]uint32 + _ [4]byte +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go new file mode 100644 index 0000000..552dbe5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -0,0 +1,2132 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build sparc64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x1000 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + _ uint16 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint16 + Size int64 + Blksize int64 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ uint64 + _ uint64 +} + +type StatxTimestamp struct { + Sec int64 + Nsec uint32 + _ int32 +} + +type Statx_t struct { + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + _ [14]uint64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Fsid struct { + Val [2]int32 +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ int16 + _ [2]byte +} + +type FscryptPolicy struct { + Version uint8 + Contents_encryption_mode uint8 + Filenames_encryption_mode uint8 + Flags uint8 + Master_key_descriptor [8]uint8 +} + +type FscryptKey struct { + Mode uint32 + Raw [64]uint8 + Size uint32 +} + +type KeyctlDHParams struct { + Private int32 + Prime int32 + Base int32 +} + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrLinklayer struct { + Family uint16 + Protocol uint16 + Ifindex int32 + Hatype uint16 + Pkttype uint8 + Halen uint8 + Addr [8]uint8 +} + +type RawSockaddrNetlink struct { + Family uint16 + Pad uint16 + Pid uint32 + Groups uint32 +} + +type RawSockaddrHCI struct { + Family uint16 + Dev uint16 + Channel uint16 +} + +type RawSockaddrL2 struct { + Family uint16 + Psm uint16 + Bdaddr [6]uint8 + Cid uint16 + Bdaddr_type uint8 + _ [1]byte +} + +type RawSockaddrRFCOMM struct { + Family uint16 + Bdaddr [6]uint8 + Channel uint8 + _ [1]byte +} + +type RawSockaddrCAN struct { + Family uint16 + Ifindex int32 + Addr [8]byte +} + +type RawSockaddrALG struct { + Family uint16 + Type [14]uint8 + Feat uint32 + Mask uint32 + Name [64]uint8 +} + +type RawSockaddrVM struct { + Family uint16 + Reserved1 uint16 + Port uint32 + Cid uint32 + Zero [4]uint8 +} + +type RawSockaddrXDP struct { + Family uint16 + Flags uint16 + Ifindex uint32 + Queue_id uint32 + Shared_umem_fd uint32 +} + +type RawSockaddrPPPoX [0x1e]byte + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type PacketMreq struct { + Ifindex int32 + Type uint16 + Alen uint16 + Address [8]uint8 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type Inet4Pktinfo struct { + Ifindex int32 + Spec_dst [4]byte /* in_addr */ + Addr [4]byte /* in_addr */ +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Data [8]uint32 +} + +type Ucred struct { + Pid int32 + Uid uint32 + Gid uint32 +} + +type TCPInfo struct { + State uint8 + Ca_state uint8 + Retransmits uint8 + Probes uint8 + Backoff uint8 + Options uint8 + Rto uint32 + Ato uint32 + Snd_mss uint32 + Rcv_mss uint32 + Unacked uint32 + Sacked uint32 + Lost uint32 + Retrans uint32 + Fackets uint32 + Last_data_sent uint32 + Last_ack_sent uint32 + Last_data_recv uint32 + Last_ack_recv uint32 + Pmtu uint32 + Rcv_ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Advmss uint32 + Reordering uint32 + Rcv_rtt uint32 + Rcv_space uint32 + Total_retrans uint32 +} + +type CanFilter struct { + Id uint32 + Mask uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x70 + SizeofSockaddrUnix = 0x6e + SizeofSockaddrLinklayer = 0x14 + SizeofSockaddrNetlink = 0xc + SizeofSockaddrHCI = 0x6 + SizeofSockaddrL2 = 0xe + SizeofSockaddrRFCOMM = 0xa + SizeofSockaddrCAN = 0x10 + SizeofSockaddrALG = 0x58 + SizeofSockaddrVM = 0x10 + SizeofSockaddrXDP = 0x10 + SizeofSockaddrPPPoX = 0x1e + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofPacketMreq = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofUcred = 0xc + SizeofTCPInfo = 0x68 + SizeofCanFilter = 0x8 +) + +const ( + NDA_UNSPEC = 0x0 + NDA_DST = 0x1 + NDA_LLADDR = 0x2 + NDA_CACHEINFO = 0x3 + NDA_PROBES = 0x4 + NDA_VLAN = 0x5 + NDA_PORT = 0x6 + NDA_VNI = 0x7 + NDA_IFINDEX = 0x8 + NDA_MASTER = 0x9 + NDA_LINK_NETNSID = 0xa + NDA_SRC_VNI = 0xb + NTF_USE = 0x1 + NTF_SELF = 0x2 + NTF_MASTER = 0x4 + NTF_PROXY = 0x8 + NTF_EXT_LEARNED = 0x10 + NTF_OFFLOADED = 0x20 + NTF_ROUTER = 0x80 + NUD_INCOMPLETE = 0x1 + NUD_REACHABLE = 0x2 + NUD_STALE = 0x4 + NUD_DELAY = 0x8 + NUD_PROBE = 0x10 + NUD_FAILED = 0x20 + NUD_NOARP = 0x40 + NUD_PERMANENT = 0x80 + NUD_NONE = 0x0 + IFA_UNSPEC = 0x0 + IFA_ADDRESS = 0x1 + IFA_LOCAL = 0x2 + IFA_LABEL = 0x3 + IFA_BROADCAST = 0x4 + IFA_ANYCAST = 0x5 + IFA_CACHEINFO = 0x6 + IFA_MULTICAST = 0x7 + IFA_FLAGS = 0x8 + IFA_RT_PRIORITY = 0x9 + IFA_TARGET_NETNSID = 0xa + IFLA_UNSPEC = 0x0 + IFLA_ADDRESS = 0x1 + IFLA_BROADCAST = 0x2 + IFLA_IFNAME = 0x3 + IFLA_MTU = 0x4 + IFLA_LINK = 0x5 + IFLA_QDISC = 0x6 + IFLA_STATS = 0x7 + IFLA_COST = 0x8 + IFLA_PRIORITY = 0x9 + IFLA_MASTER = 0xa + IFLA_WIRELESS = 0xb + IFLA_PROTINFO = 0xc + IFLA_TXQLEN = 0xd + IFLA_MAP = 0xe + IFLA_WEIGHT = 0xf + IFLA_OPERSTATE = 0x10 + IFLA_LINKMODE = 0x11 + IFLA_LINKINFO = 0x12 + IFLA_NET_NS_PID = 0x13 + IFLA_IFALIAS = 0x14 + IFLA_NUM_VF = 0x15 + IFLA_VFINFO_LIST = 0x16 + IFLA_STATS64 = 0x17 + IFLA_VF_PORTS = 0x18 + IFLA_PORT_SELF = 0x19 + IFLA_AF_SPEC = 0x1a + IFLA_GROUP = 0x1b + IFLA_NET_NS_FD = 0x1c + IFLA_EXT_MASK = 0x1d + IFLA_PROMISCUITY = 0x1e + IFLA_NUM_TX_QUEUES = 0x1f + IFLA_NUM_RX_QUEUES = 0x20 + IFLA_CARRIER = 0x21 + IFLA_PHYS_PORT_ID = 0x22 + IFLA_CARRIER_CHANGES = 0x23 + IFLA_PHYS_SWITCH_ID = 0x24 + IFLA_LINK_NETNSID = 0x25 + IFLA_PHYS_PORT_NAME = 0x26 + IFLA_PROTO_DOWN = 0x27 + IFLA_GSO_MAX_SEGS = 0x28 + IFLA_GSO_MAX_SIZE = 0x29 + IFLA_PAD = 0x2a + IFLA_XDP = 0x2b + IFLA_EVENT = 0x2c + IFLA_NEW_NETNSID = 0x2d + IFLA_IF_NETNSID = 0x2e + IFLA_TARGET_NETNSID = 0x2e + IFLA_CARRIER_UP_COUNT = 0x2f + IFLA_CARRIER_DOWN_COUNT = 0x30 + IFLA_NEW_IFINDEX = 0x31 + IFLA_MIN_MTU = 0x32 + IFLA_MAX_MTU = 0x33 + IFLA_MAX = 0x33 + IFLA_INFO_KIND = 0x1 + IFLA_INFO_DATA = 0x2 + IFLA_INFO_XSTATS = 0x3 + IFLA_INFO_SLAVE_KIND = 0x4 + IFLA_INFO_SLAVE_DATA = 0x5 + RT_SCOPE_UNIVERSE = 0x0 + RT_SCOPE_SITE = 0xc8 + RT_SCOPE_LINK = 0xfd + RT_SCOPE_HOST = 0xfe + RT_SCOPE_NOWHERE = 0xff + RT_TABLE_UNSPEC = 0x0 + RT_TABLE_COMPAT = 0xfc + RT_TABLE_DEFAULT = 0xfd + RT_TABLE_MAIN = 0xfe + RT_TABLE_LOCAL = 0xff + RT_TABLE_MAX = 0xffffffff + RTA_UNSPEC = 0x0 + RTA_DST = 0x1 + RTA_SRC = 0x2 + RTA_IIF = 0x3 + RTA_OIF = 0x4 + RTA_GATEWAY = 0x5 + RTA_PRIORITY = 0x6 + RTA_PREFSRC = 0x7 + RTA_METRICS = 0x8 + RTA_MULTIPATH = 0x9 + RTA_FLOW = 0xb + RTA_CACHEINFO = 0xc + RTA_TABLE = 0xf + RTA_MARK = 0x10 + RTA_MFC_STATS = 0x11 + RTA_VIA = 0x12 + RTA_NEWDST = 0x13 + RTA_PREF = 0x14 + RTA_ENCAP_TYPE = 0x15 + RTA_ENCAP = 0x16 + RTA_EXPIRES = 0x17 + RTA_PAD = 0x18 + RTA_UID = 0x19 + RTA_TTL_PROPAGATE = 0x1a + RTA_IP_PROTO = 0x1b + RTA_SPORT = 0x1c + RTA_DPORT = 0x1d + RTN_UNSPEC = 0x0 + RTN_UNICAST = 0x1 + RTN_LOCAL = 0x2 + RTN_BROADCAST = 0x3 + RTN_ANYCAST = 0x4 + RTN_MULTICAST = 0x5 + RTN_BLACKHOLE = 0x6 + RTN_UNREACHABLE = 0x7 + RTN_PROHIBIT = 0x8 + RTN_THROW = 0x9 + RTN_NAT = 0xa + RTN_XRESOLVE = 0xb + RTNLGRP_NONE = 0x0 + RTNLGRP_LINK = 0x1 + RTNLGRP_NOTIFY = 0x2 + RTNLGRP_NEIGH = 0x3 + RTNLGRP_TC = 0x4 + RTNLGRP_IPV4_IFADDR = 0x5 + RTNLGRP_IPV4_MROUTE = 0x6 + RTNLGRP_IPV4_ROUTE = 0x7 + RTNLGRP_IPV4_RULE = 0x8 + RTNLGRP_IPV6_IFADDR = 0x9 + RTNLGRP_IPV6_MROUTE = 0xa + RTNLGRP_IPV6_ROUTE = 0xb + RTNLGRP_IPV6_IFINFO = 0xc + RTNLGRP_IPV6_PREFIX = 0x12 + RTNLGRP_IPV6_RULE = 0x13 + RTNLGRP_ND_USEROPT = 0x14 + SizeofNlMsghdr = 0x10 + SizeofNlMsgerr = 0x14 + SizeofRtGenmsg = 0x1 + SizeofNlAttr = 0x4 + SizeofRtAttr = 0x4 + SizeofIfInfomsg = 0x10 + SizeofIfAddrmsg = 0x8 + SizeofRtMsg = 0xc + SizeofRtNexthop = 0x8 + SizeofNdUseroptmsg = 0x10 + SizeofNdMsg = 0xc +) + +type NlMsghdr struct { + Len uint32 + Type uint16 + Flags uint16 + Seq uint32 + Pid uint32 +} + +type NlMsgerr struct { + Error int32 + Msg NlMsghdr +} + +type RtGenmsg struct { + Family uint8 +} + +type NlAttr struct { + Len uint16 + Type uint16 +} + +type RtAttr struct { + Len uint16 + Type uint16 +} + +type IfInfomsg struct { + Family uint8 + _ uint8 + Type uint16 + Index int32 + Flags uint32 + Change uint32 +} + +type IfAddrmsg struct { + Family uint8 + Prefixlen uint8 + Flags uint8 + Scope uint8 + Index uint32 +} + +type RtMsg struct { + Family uint8 + Dst_len uint8 + Src_len uint8 + Tos uint8 + Table uint8 + Protocol uint8 + Scope uint8 + Type uint8 + Flags uint32 +} + +type RtNexthop struct { + Len uint16 + Flags uint8 + Hops uint8 + Ifindex int32 +} + +type NdUseroptmsg struct { + Family uint8 + Pad1 uint8 + Opts_len uint16 + Ifindex int32 + Icmp_type uint8 + Icmp_code uint8 + Pad2 uint16 + Pad3 uint32 +} + +type NdMsg struct { + Family uint8 + Pad1 uint8 + Pad2 uint16 + Ifindex int32 + State uint16 + Flags uint8 + Type uint8 +} + +const ( + SizeofSockFilter = 0x8 + SizeofSockFprog = 0x10 +) + +type SockFilter struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type SockFprog struct { + Len uint16 + Filter *SockFilter +} + +type InotifyEvent struct { + Wd int32 + Mask uint32 + Cookie uint32 + Len uint32 +} + +const SizeofInotifyEvent = 0x10 + +type PtraceRegs struct { + Regs [16]uint64 + Tstate uint64 + Tpc uint64 + Tnpc uint64 + Y uint32 + Magic uint32 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Utsname struct { + Sysname [65]byte + Nodename [65]byte + Release [65]byte + Version [65]byte + Machine [65]byte + Domainname [65]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + AT_EMPTY_PATH = 0x1000 + AT_FDCWD = -0x64 + AT_NO_AUTOMOUNT = 0x800 + AT_REMOVEDIR = 0x200 + + AT_STATX_SYNC_AS_STAT = 0x0 + AT_STATX_FORCE_SYNC = 0x2000 + AT_STATX_DONT_SYNC = 0x4000 + + AT_SYMLINK_FOLLOW = 0x400 + AT_SYMLINK_NOFOLLOW = 0x100 + + AT_EACCESS = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLIN = 0x1 + POLLPRI = 0x2 + POLLOUT = 0x4 + POLLRDHUP = 0x800 + POLLERR = 0x8 + POLLHUP = 0x10 + POLLNVAL = 0x20 +) + +type Sigset_t struct { + Val [16]uint64 +} + +type SignalfdSiginfo struct { + Signo uint32 + Errno int32 + Code int32 + Pid uint32 + Uid uint32 + Fd int32 + Tid uint32 + Band uint32 + Overrun uint32 + Trapno uint32 + Status int32 + Int int32 + Ptr uint64 + Utime uint64 + Stime uint64 + Addr uint64 + Addr_lsb uint16 + _ uint16 + Syscall int32 + Call_addr uint64 + Arch uint32 + _ [28]uint8 +} + +const PERF_IOC_FLAG_GROUP = 0x1 + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 +} + +const ( + TASKSTATS_CMD_UNSPEC = 0x0 + TASKSTATS_CMD_GET = 0x1 + TASKSTATS_CMD_NEW = 0x2 + TASKSTATS_TYPE_UNSPEC = 0x0 + TASKSTATS_TYPE_PID = 0x1 + TASKSTATS_TYPE_TGID = 0x2 + TASKSTATS_TYPE_STATS = 0x3 + TASKSTATS_TYPE_AGGR_PID = 0x4 + TASKSTATS_TYPE_AGGR_TGID = 0x5 + TASKSTATS_TYPE_NULL = 0x6 + TASKSTATS_CMD_ATTR_UNSPEC = 0x0 + TASKSTATS_CMD_ATTR_PID = 0x1 + TASKSTATS_CMD_ATTR_TGID = 0x2 + TASKSTATS_CMD_ATTR_REGISTER_CPUMASK = 0x3 + TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4 +) + +type CGroupStats struct { + Sleeping uint64 + Running uint64 + Stopped uint64 + Uninterruptible uint64 + Io_wait uint64 +} + +const ( + CGROUPSTATS_CMD_UNSPEC = 0x3 + CGROUPSTATS_CMD_GET = 0x4 + CGROUPSTATS_CMD_NEW = 0x5 + CGROUPSTATS_TYPE_UNSPEC = 0x0 + CGROUPSTATS_TYPE_CGROUP_STATS = 0x1 + CGROUPSTATS_CMD_ATTR_UNSPEC = 0x0 + CGROUPSTATS_CMD_ATTR_FD = 0x1 +) + +type Genlmsghdr struct { + Cmd uint8 + Version uint8 + Reserved uint16 +} + +const ( + CTRL_CMD_UNSPEC = 0x0 + CTRL_CMD_NEWFAMILY = 0x1 + CTRL_CMD_DELFAMILY = 0x2 + CTRL_CMD_GETFAMILY = 0x3 + CTRL_CMD_NEWOPS = 0x4 + CTRL_CMD_DELOPS = 0x5 + CTRL_CMD_GETOPS = 0x6 + CTRL_CMD_NEWMCAST_GRP = 0x7 + CTRL_CMD_DELMCAST_GRP = 0x8 + CTRL_CMD_GETMCAST_GRP = 0x9 + CTRL_ATTR_UNSPEC = 0x0 + CTRL_ATTR_FAMILY_ID = 0x1 + CTRL_ATTR_FAMILY_NAME = 0x2 + CTRL_ATTR_VERSION = 0x3 + CTRL_ATTR_HDRSIZE = 0x4 + CTRL_ATTR_MAXATTR = 0x5 + CTRL_ATTR_OPS = 0x6 + CTRL_ATTR_MCAST_GROUPS = 0x7 + CTRL_ATTR_OP_UNSPEC = 0x0 + CTRL_ATTR_OP_ID = 0x1 + CTRL_ATTR_OP_FLAGS = 0x2 + CTRL_ATTR_MCAST_GRP_UNSPEC = 0x0 + CTRL_ATTR_MCAST_GRP_NAME = 0x1 + CTRL_ATTR_MCAST_GRP_ID = 0x2 +) + +type cpuMask uint64 + +const ( + _CPU_SETSIZE = 0x400 + _NCPUBITS = 0x40 +) + +const ( + BDADDR_BREDR = 0x0 + BDADDR_LE_PUBLIC = 0x1 + BDADDR_LE_RANDOM = 0x2 +) + +type PerfEventAttr struct { + Type uint32 + Size uint32 + Config uint64 + Sample uint64 + Sample_type uint64 + Read_format uint64 + Bits uint64 + Wakeup uint32 + Bp_type uint32 + Ext1 uint64 + Ext2 uint64 + Branch_sample_type uint64 + Sample_regs_user uint64 + Sample_stack_user uint32 + Clockid int32 + Sample_regs_intr uint64 + Aux_watermark uint32 + Sample_max_stack uint16 + _ uint16 +} + +type PerfEventMmapPage struct { + Version uint32 + Compat_version uint32 + Lock uint32 + Index uint32 + Offset int64 + Time_enabled uint64 + Time_running uint64 + Capabilities uint64 + Pmc_width uint16 + Time_shift uint16 + Time_mult uint32 + Time_offset uint64 + Time_zero uint64 + Size uint32 + _ [948]uint8 + Data_head uint64 + Data_tail uint64 + Data_offset uint64 + Data_size uint64 + Aux_head uint64 + Aux_tail uint64 + Aux_offset uint64 + Aux_size uint64 +} + +const ( + PerfBitDisabled uint64 = CBitFieldMaskBit0 + PerfBitInherit = CBitFieldMaskBit1 + PerfBitPinned = CBitFieldMaskBit2 + PerfBitExclusive = CBitFieldMaskBit3 + PerfBitExcludeUser = CBitFieldMaskBit4 + PerfBitExcludeKernel = CBitFieldMaskBit5 + PerfBitExcludeHv = CBitFieldMaskBit6 + PerfBitExcludeIdle = CBitFieldMaskBit7 + PerfBitMmap = CBitFieldMaskBit8 + PerfBitComm = CBitFieldMaskBit9 + PerfBitFreq = CBitFieldMaskBit10 + PerfBitInheritStat = CBitFieldMaskBit11 + PerfBitEnableOnExec = CBitFieldMaskBit12 + PerfBitTask = CBitFieldMaskBit13 + PerfBitWatermark = CBitFieldMaskBit14 + PerfBitPreciseIPBit1 = CBitFieldMaskBit15 + PerfBitPreciseIPBit2 = CBitFieldMaskBit16 + PerfBitMmapData = CBitFieldMaskBit17 + PerfBitSampleIDAll = CBitFieldMaskBit18 + PerfBitExcludeHost = CBitFieldMaskBit19 + PerfBitExcludeGuest = CBitFieldMaskBit20 + PerfBitExcludeCallchainKernel = CBitFieldMaskBit21 + PerfBitExcludeCallchainUser = CBitFieldMaskBit22 + PerfBitMmap2 = CBitFieldMaskBit23 + PerfBitCommExec = CBitFieldMaskBit24 + PerfBitUseClockID = CBitFieldMaskBit25 + PerfBitContextSwitch = CBitFieldMaskBit26 +) + +const ( + PERF_TYPE_HARDWARE = 0x0 + PERF_TYPE_SOFTWARE = 0x1 + PERF_TYPE_TRACEPOINT = 0x2 + PERF_TYPE_HW_CACHE = 0x3 + PERF_TYPE_RAW = 0x4 + PERF_TYPE_BREAKPOINT = 0x5 + + PERF_COUNT_HW_CPU_CYCLES = 0x0 + PERF_COUNT_HW_INSTRUCTIONS = 0x1 + PERF_COUNT_HW_CACHE_REFERENCES = 0x2 + PERF_COUNT_HW_CACHE_MISSES = 0x3 + PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 0x4 + PERF_COUNT_HW_BRANCH_MISSES = 0x5 + PERF_COUNT_HW_BUS_CYCLES = 0x6 + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7 + PERF_COUNT_HW_STALLED_CYCLES_BACKEND = 0x8 + PERF_COUNT_HW_REF_CPU_CYCLES = 0x9 + + PERF_COUNT_HW_CACHE_L1D = 0x0 + PERF_COUNT_HW_CACHE_L1I = 0x1 + PERF_COUNT_HW_CACHE_LL = 0x2 + PERF_COUNT_HW_CACHE_DTLB = 0x3 + PERF_COUNT_HW_CACHE_ITLB = 0x4 + PERF_COUNT_HW_CACHE_BPU = 0x5 + PERF_COUNT_HW_CACHE_NODE = 0x6 + + PERF_COUNT_HW_CACHE_OP_READ = 0x0 + PERF_COUNT_HW_CACHE_OP_WRITE = 0x1 + PERF_COUNT_HW_CACHE_OP_PREFETCH = 0x2 + + PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0x0 + PERF_COUNT_HW_CACHE_RESULT_MISS = 0x1 + + PERF_COUNT_SW_CPU_CLOCK = 0x0 + PERF_COUNT_SW_TASK_CLOCK = 0x1 + PERF_COUNT_SW_PAGE_FAULTS = 0x2 + PERF_COUNT_SW_CONTEXT_SWITCHES = 0x3 + PERF_COUNT_SW_CPU_MIGRATIONS = 0x4 + PERF_COUNT_SW_PAGE_FAULTS_MIN = 0x5 + PERF_COUNT_SW_PAGE_FAULTS_MAJ = 0x6 + PERF_COUNT_SW_ALIGNMENT_FAULTS = 0x7 + PERF_COUNT_SW_EMULATION_FAULTS = 0x8 + PERF_COUNT_SW_DUMMY = 0x9 + PERF_COUNT_SW_BPF_OUTPUT = 0xa + + PERF_SAMPLE_IP = 0x1 + PERF_SAMPLE_TID = 0x2 + PERF_SAMPLE_TIME = 0x4 + PERF_SAMPLE_ADDR = 0x8 + PERF_SAMPLE_READ = 0x10 + PERF_SAMPLE_CALLCHAIN = 0x20 + PERF_SAMPLE_ID = 0x40 + PERF_SAMPLE_CPU = 0x80 + PERF_SAMPLE_PERIOD = 0x100 + PERF_SAMPLE_STREAM_ID = 0x200 + PERF_SAMPLE_RAW = 0x400 + PERF_SAMPLE_BRANCH_STACK = 0x800 + + PERF_SAMPLE_BRANCH_USER = 0x1 + PERF_SAMPLE_BRANCH_KERNEL = 0x2 + PERF_SAMPLE_BRANCH_HV = 0x4 + PERF_SAMPLE_BRANCH_ANY = 0x8 + PERF_SAMPLE_BRANCH_ANY_CALL = 0x10 + PERF_SAMPLE_BRANCH_ANY_RETURN = 0x20 + PERF_SAMPLE_BRANCH_IND_CALL = 0x40 + PERF_SAMPLE_BRANCH_ABORT_TX = 0x80 + PERF_SAMPLE_BRANCH_IN_TX = 0x100 + PERF_SAMPLE_BRANCH_NO_TX = 0x200 + PERF_SAMPLE_BRANCH_COND = 0x400 + PERF_SAMPLE_BRANCH_CALL_STACK = 0x800 + PERF_SAMPLE_BRANCH_IND_JUMP = 0x1000 + PERF_SAMPLE_BRANCH_CALL = 0x2000 + PERF_SAMPLE_BRANCH_NO_FLAGS = 0x4000 + PERF_SAMPLE_BRANCH_NO_CYCLES = 0x8000 + PERF_SAMPLE_BRANCH_TYPE_SAVE = 0x10000 + + PERF_FORMAT_TOTAL_TIME_ENABLED = 0x1 + PERF_FORMAT_TOTAL_TIME_RUNNING = 0x2 + PERF_FORMAT_ID = 0x4 + PERF_FORMAT_GROUP = 0x8 + + PERF_RECORD_MMAP = 0x1 + PERF_RECORD_LOST = 0x2 + PERF_RECORD_COMM = 0x3 + PERF_RECORD_EXIT = 0x4 + PERF_RECORD_THROTTLE = 0x5 + PERF_RECORD_UNTHROTTLE = 0x6 + PERF_RECORD_FORK = 0x7 + PERF_RECORD_READ = 0x8 + PERF_RECORD_SAMPLE = 0x9 + PERF_RECORD_MMAP2 = 0xa + PERF_RECORD_AUX = 0xb + PERF_RECORD_ITRACE_START = 0xc + PERF_RECORD_LOST_SAMPLES = 0xd + PERF_RECORD_SWITCH = 0xe + PERF_RECORD_SWITCH_CPU_WIDE = 0xf + PERF_RECORD_NAMESPACES = 0x10 + + PERF_CONTEXT_HV = -0x20 + PERF_CONTEXT_KERNEL = -0x80 + PERF_CONTEXT_USER = -0x200 + + PERF_CONTEXT_GUEST = -0x800 + PERF_CONTEXT_GUEST_KERNEL = -0x880 + PERF_CONTEXT_GUEST_USER = -0xa00 + + PERF_FLAG_FD_NO_GROUP = 0x1 + PERF_FLAG_FD_OUTPUT = 0x2 + PERF_FLAG_PID_CGROUP = 0x4 + PERF_FLAG_FD_CLOEXEC = 0x8 +) + +const ( + CBitFieldMaskBit0 = 0x8000000000000000 + CBitFieldMaskBit1 = 0x4000000000000000 + CBitFieldMaskBit2 = 0x2000000000000000 + CBitFieldMaskBit3 = 0x1000000000000000 + CBitFieldMaskBit4 = 0x800000000000000 + CBitFieldMaskBit5 = 0x400000000000000 + CBitFieldMaskBit6 = 0x200000000000000 + CBitFieldMaskBit7 = 0x100000000000000 + CBitFieldMaskBit8 = 0x80000000000000 + CBitFieldMaskBit9 = 0x40000000000000 + CBitFieldMaskBit10 = 0x20000000000000 + CBitFieldMaskBit11 = 0x10000000000000 + CBitFieldMaskBit12 = 0x8000000000000 + CBitFieldMaskBit13 = 0x4000000000000 + CBitFieldMaskBit14 = 0x2000000000000 + CBitFieldMaskBit15 = 0x1000000000000 + CBitFieldMaskBit16 = 0x800000000000 + CBitFieldMaskBit17 = 0x400000000000 + CBitFieldMaskBit18 = 0x200000000000 + CBitFieldMaskBit19 = 0x100000000000 + CBitFieldMaskBit20 = 0x80000000000 + CBitFieldMaskBit21 = 0x40000000000 + CBitFieldMaskBit22 = 0x20000000000 + CBitFieldMaskBit23 = 0x10000000000 + CBitFieldMaskBit24 = 0x8000000000 + CBitFieldMaskBit25 = 0x4000000000 + CBitFieldMaskBit26 = 0x2000000000 + CBitFieldMaskBit27 = 0x1000000000 + CBitFieldMaskBit28 = 0x800000000 + CBitFieldMaskBit29 = 0x400000000 + CBitFieldMaskBit30 = 0x200000000 + CBitFieldMaskBit31 = 0x100000000 + CBitFieldMaskBit32 = 0x80000000 + CBitFieldMaskBit33 = 0x40000000 + CBitFieldMaskBit34 = 0x20000000 + CBitFieldMaskBit35 = 0x10000000 + CBitFieldMaskBit36 = 0x8000000 + CBitFieldMaskBit37 = 0x4000000 + CBitFieldMaskBit38 = 0x2000000 + CBitFieldMaskBit39 = 0x1000000 + CBitFieldMaskBit40 = 0x800000 + CBitFieldMaskBit41 = 0x400000 + CBitFieldMaskBit42 = 0x200000 + CBitFieldMaskBit43 = 0x100000 + CBitFieldMaskBit44 = 0x80000 + CBitFieldMaskBit45 = 0x40000 + CBitFieldMaskBit46 = 0x20000 + CBitFieldMaskBit47 = 0x10000 + CBitFieldMaskBit48 = 0x8000 + CBitFieldMaskBit49 = 0x4000 + CBitFieldMaskBit50 = 0x2000 + CBitFieldMaskBit51 = 0x1000 + CBitFieldMaskBit52 = 0x800 + CBitFieldMaskBit53 = 0x400 + CBitFieldMaskBit54 = 0x200 + CBitFieldMaskBit55 = 0x100 + CBitFieldMaskBit56 = 0x80 + CBitFieldMaskBit57 = 0x40 + CBitFieldMaskBit58 = 0x20 + CBitFieldMaskBit59 = 0x10 + CBitFieldMaskBit60 = 0x8 + CBitFieldMaskBit61 = 0x4 + CBitFieldMaskBit62 = 0x2 + CBitFieldMaskBit63 = 0x1 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type TCPMD5Sig struct { + Addr SockaddrStorage + Flags uint8 + Prefixlen uint8 + Keylen uint16 + _ uint32 + Key [80]uint8 +} + +type HDDriveCmdHdr struct { + Command uint8 + Number uint8 + Feature uint8 + Count uint8 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type HDDriveID struct { + Config uint16 + Cyls uint16 + Reserved2 uint16 + Heads uint16 + Track_bytes uint16 + Sector_bytes uint16 + Sectors uint16 + Vendor0 uint16 + Vendor1 uint16 + Vendor2 uint16 + Serial_no [20]uint8 + Buf_type uint16 + Buf_size uint16 + Ecc_bytes uint16 + Fw_rev [8]uint8 + Model [40]uint8 + Max_multsect uint8 + Vendor3 uint8 + Dword_io uint16 + Vendor4 uint8 + Capability uint8 + Reserved50 uint16 + Vendor5 uint8 + TPIO uint8 + Vendor6 uint8 + TDMA uint8 + Field_valid uint16 + Cur_cyls uint16 + Cur_heads uint16 + Cur_sectors uint16 + Cur_capacity0 uint16 + Cur_capacity1 uint16 + Multsect uint8 + Multsect_valid uint8 + Lba_capacity uint32 + Dma_1word uint16 + Dma_mword uint16 + Eide_pio_modes uint16 + Eide_dma_min uint16 + Eide_dma_time uint16 + Eide_pio uint16 + Eide_pio_iordy uint16 + Words69_70 [2]uint16 + Words71_74 [4]uint16 + Queue_depth uint16 + Words76_79 [4]uint16 + Major_rev_num uint16 + Minor_rev_num uint16 + Command_set_1 uint16 + Command_set_2 uint16 + Cfsse uint16 + Cfs_enable_1 uint16 + Cfs_enable_2 uint16 + Csf_default uint16 + Dma_ultra uint16 + Trseuc uint16 + TrsEuc uint16 + CurAPMvalues uint16 + Mprc uint16 + Hw_config uint16 + Acoustic uint16 + Msrqs uint16 + Sxfert uint16 + Sal uint16 + Spg uint32 + Lba_capacity_2 uint64 + Words104_125 [22]uint16 + Last_lun uint16 + Word127 uint16 + Dlf uint16 + Csfo uint16 + Words130_155 [26]uint16 + Word156 uint16 + Words157_159 [3]uint16 + Cfa_power uint16 + Words161_175 [15]uint16 + Words176_205 [30]uint16 + Words206_254 [49]uint16 + Integrity_word uint16 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +const ( + ST_MANDLOCK = 0x40 + ST_NOATIME = 0x400 + ST_NODEV = 0x4 + ST_NODIRATIME = 0x800 + ST_NOEXEC = 0x8 + ST_NOSUID = 0x2 + ST_RDONLY = 0x1 + ST_RELATIME = 0x1000 + ST_SYNCHRONOUS = 0x10 +) + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +type Tpacket2Hdr struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Nsec uint32 + Vlan_tci uint16 + Vlan_tpid uint16 + _ [4]uint8 +} + +type Tpacket3Hdr struct { + Next_offset uint32 + Sec uint32 + Nsec uint32 + Snaplen uint32 + Len uint32 + Status uint32 + Mac uint16 + Net uint16 + Hv1 TpacketHdrVariant1 + _ [8]uint8 +} + +type TpacketHdrVariant1 struct { + Rxhash uint32 + Vlan_tci uint32 + Vlan_tpid uint16 + _ uint16 +} + +type TpacketBlockDesc struct { + Version uint32 + To_priv uint32 + Hdr [40]byte +} + +type TpacketReq struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 +} + +type TpacketReq3 struct { + Block_size uint32 + Block_nr uint32 + Frame_size uint32 + Frame_nr uint32 + Retire_blk_tov uint32 + Sizeof_priv uint32 + Feature_req_word uint32 +} + +type TpacketStats struct { + Packets uint32 + Drops uint32 +} + +type TpacketStatsV3 struct { + Packets uint32 + Drops uint32 + Freeze_q_cnt uint32 +} + +type TpacketAuxdata struct { + Status uint32 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Vlan_tci uint16 + Vlan_tpid uint16 +} + +const ( + TPACKET_V1 = 0x0 + TPACKET_V2 = 0x1 + TPACKET_V3 = 0x2 +) + +const ( + SizeofTpacketHdr = 0x20 + SizeofTpacket2Hdr = 0x20 + SizeofTpacket3Hdr = 0x30 + + SizeofTpacketStats = 0x8 + SizeofTpacketStatsV3 = 0xc +) + +const ( + NF_INET_PRE_ROUTING = 0x0 + NF_INET_LOCAL_IN = 0x1 + NF_INET_FORWARD = 0x2 + NF_INET_LOCAL_OUT = 0x3 + NF_INET_POST_ROUTING = 0x4 + NF_INET_NUMHOOKS = 0x5 +) + +const ( + NF_NETDEV_INGRESS = 0x0 + NF_NETDEV_NUMHOOKS = 0x1 +) + +const ( + NFPROTO_UNSPEC = 0x0 + NFPROTO_INET = 0x1 + NFPROTO_IPV4 = 0x2 + NFPROTO_ARP = 0x3 + NFPROTO_NETDEV = 0x5 + NFPROTO_BRIDGE = 0x7 + NFPROTO_IPV6 = 0xa + NFPROTO_DECNET = 0xc + NFPROTO_NUMPROTO = 0xd +) + +type Nfgenmsg struct { + Nfgen_family uint8 + Version uint8 + Res_id uint16 +} + +const ( + NFNL_BATCH_UNSPEC = 0x0 + NFNL_BATCH_GENID = 0x1 +) + +const ( + NFT_REG_VERDICT = 0x0 + NFT_REG_1 = 0x1 + NFT_REG_2 = 0x2 + NFT_REG_3 = 0x3 + NFT_REG_4 = 0x4 + NFT_REG32_00 = 0x8 + NFT_REG32_01 = 0x9 + NFT_REG32_02 = 0xa + NFT_REG32_03 = 0xb + NFT_REG32_04 = 0xc + NFT_REG32_05 = 0xd + NFT_REG32_06 = 0xe + NFT_REG32_07 = 0xf + NFT_REG32_08 = 0x10 + NFT_REG32_09 = 0x11 + NFT_REG32_10 = 0x12 + NFT_REG32_11 = 0x13 + NFT_REG32_12 = 0x14 + NFT_REG32_13 = 0x15 + NFT_REG32_14 = 0x16 + NFT_REG32_15 = 0x17 + NFT_CONTINUE = -0x1 + NFT_BREAK = -0x2 + NFT_JUMP = -0x3 + NFT_GOTO = -0x4 + NFT_RETURN = -0x5 + NFT_MSG_NEWTABLE = 0x0 + NFT_MSG_GETTABLE = 0x1 + NFT_MSG_DELTABLE = 0x2 + NFT_MSG_NEWCHAIN = 0x3 + NFT_MSG_GETCHAIN = 0x4 + NFT_MSG_DELCHAIN = 0x5 + NFT_MSG_NEWRULE = 0x6 + NFT_MSG_GETRULE = 0x7 + NFT_MSG_DELRULE = 0x8 + NFT_MSG_NEWSET = 0x9 + NFT_MSG_GETSET = 0xa + NFT_MSG_DELSET = 0xb + NFT_MSG_NEWSETELEM = 0xc + NFT_MSG_GETSETELEM = 0xd + NFT_MSG_DELSETELEM = 0xe + NFT_MSG_NEWGEN = 0xf + NFT_MSG_GETGEN = 0x10 + NFT_MSG_TRACE = 0x11 + NFT_MSG_NEWOBJ = 0x12 + NFT_MSG_GETOBJ = 0x13 + NFT_MSG_DELOBJ = 0x14 + NFT_MSG_GETOBJ_RESET = 0x15 + NFT_MSG_MAX = 0x19 + NFTA_LIST_UNPEC = 0x0 + NFTA_LIST_ELEM = 0x1 + NFTA_HOOK_UNSPEC = 0x0 + NFTA_HOOK_HOOKNUM = 0x1 + NFTA_HOOK_PRIORITY = 0x2 + NFTA_HOOK_DEV = 0x3 + NFT_TABLE_F_DORMANT = 0x1 + NFTA_TABLE_UNSPEC = 0x0 + NFTA_TABLE_NAME = 0x1 + NFTA_TABLE_FLAGS = 0x2 + NFTA_TABLE_USE = 0x3 + NFTA_CHAIN_UNSPEC = 0x0 + NFTA_CHAIN_TABLE = 0x1 + NFTA_CHAIN_HANDLE = 0x2 + NFTA_CHAIN_NAME = 0x3 + NFTA_CHAIN_HOOK = 0x4 + NFTA_CHAIN_POLICY = 0x5 + NFTA_CHAIN_USE = 0x6 + NFTA_CHAIN_TYPE = 0x7 + NFTA_CHAIN_COUNTERS = 0x8 + NFTA_CHAIN_PAD = 0x9 + NFTA_RULE_UNSPEC = 0x0 + NFTA_RULE_TABLE = 0x1 + NFTA_RULE_CHAIN = 0x2 + NFTA_RULE_HANDLE = 0x3 + NFTA_RULE_EXPRESSIONS = 0x4 + NFTA_RULE_COMPAT = 0x5 + NFTA_RULE_POSITION = 0x6 + NFTA_RULE_USERDATA = 0x7 + NFTA_RULE_PAD = 0x8 + NFTA_RULE_ID = 0x9 + NFT_RULE_COMPAT_F_INV = 0x2 + NFT_RULE_COMPAT_F_MASK = 0x2 + NFTA_RULE_COMPAT_UNSPEC = 0x0 + NFTA_RULE_COMPAT_PROTO = 0x1 + NFTA_RULE_COMPAT_FLAGS = 0x2 + NFT_SET_ANONYMOUS = 0x1 + NFT_SET_CONSTANT = 0x2 + NFT_SET_INTERVAL = 0x4 + NFT_SET_MAP = 0x8 + NFT_SET_TIMEOUT = 0x10 + NFT_SET_EVAL = 0x20 + NFT_SET_OBJECT = 0x40 + NFT_SET_POL_PERFORMANCE = 0x0 + NFT_SET_POL_MEMORY = 0x1 + NFTA_SET_DESC_UNSPEC = 0x0 + NFTA_SET_DESC_SIZE = 0x1 + NFTA_SET_UNSPEC = 0x0 + NFTA_SET_TABLE = 0x1 + NFTA_SET_NAME = 0x2 + NFTA_SET_FLAGS = 0x3 + NFTA_SET_KEY_TYPE = 0x4 + NFTA_SET_KEY_LEN = 0x5 + NFTA_SET_DATA_TYPE = 0x6 + NFTA_SET_DATA_LEN = 0x7 + NFTA_SET_POLICY = 0x8 + NFTA_SET_DESC = 0x9 + NFTA_SET_ID = 0xa + NFTA_SET_TIMEOUT = 0xb + NFTA_SET_GC_INTERVAL = 0xc + NFTA_SET_USERDATA = 0xd + NFTA_SET_PAD = 0xe + NFTA_SET_OBJ_TYPE = 0xf + NFT_SET_ELEM_INTERVAL_END = 0x1 + NFTA_SET_ELEM_UNSPEC = 0x0 + NFTA_SET_ELEM_KEY = 0x1 + NFTA_SET_ELEM_DATA = 0x2 + NFTA_SET_ELEM_FLAGS = 0x3 + NFTA_SET_ELEM_TIMEOUT = 0x4 + NFTA_SET_ELEM_EXPIRATION = 0x5 + NFTA_SET_ELEM_USERDATA = 0x6 + NFTA_SET_ELEM_EXPR = 0x7 + NFTA_SET_ELEM_PAD = 0x8 + NFTA_SET_ELEM_OBJREF = 0x9 + NFTA_SET_ELEM_LIST_UNSPEC = 0x0 + NFTA_SET_ELEM_LIST_TABLE = 0x1 + NFTA_SET_ELEM_LIST_SET = 0x2 + NFTA_SET_ELEM_LIST_ELEMENTS = 0x3 + NFTA_SET_ELEM_LIST_SET_ID = 0x4 + NFT_DATA_VALUE = 0x0 + NFT_DATA_VERDICT = 0xffffff00 + NFTA_DATA_UNSPEC = 0x0 + NFTA_DATA_VALUE = 0x1 + NFTA_DATA_VERDICT = 0x2 + NFTA_VERDICT_UNSPEC = 0x0 + NFTA_VERDICT_CODE = 0x1 + NFTA_VERDICT_CHAIN = 0x2 + NFTA_EXPR_UNSPEC = 0x0 + NFTA_EXPR_NAME = 0x1 + NFTA_EXPR_DATA = 0x2 + NFTA_IMMEDIATE_UNSPEC = 0x0 + NFTA_IMMEDIATE_DREG = 0x1 + NFTA_IMMEDIATE_DATA = 0x2 + NFTA_BITWISE_UNSPEC = 0x0 + NFTA_BITWISE_SREG = 0x1 + NFTA_BITWISE_DREG = 0x2 + NFTA_BITWISE_LEN = 0x3 + NFTA_BITWISE_MASK = 0x4 + NFTA_BITWISE_XOR = 0x5 + NFT_BYTEORDER_NTOH = 0x0 + NFT_BYTEORDER_HTON = 0x1 + NFTA_BYTEORDER_UNSPEC = 0x0 + NFTA_BYTEORDER_SREG = 0x1 + NFTA_BYTEORDER_DREG = 0x2 + NFTA_BYTEORDER_OP = 0x3 + NFTA_BYTEORDER_LEN = 0x4 + NFTA_BYTEORDER_SIZE = 0x5 + NFT_CMP_EQ = 0x0 + NFT_CMP_NEQ = 0x1 + NFT_CMP_LT = 0x2 + NFT_CMP_LTE = 0x3 + NFT_CMP_GT = 0x4 + NFT_CMP_GTE = 0x5 + NFTA_CMP_UNSPEC = 0x0 + NFTA_CMP_SREG = 0x1 + NFTA_CMP_OP = 0x2 + NFTA_CMP_DATA = 0x3 + NFT_RANGE_EQ = 0x0 + NFT_RANGE_NEQ = 0x1 + NFTA_RANGE_UNSPEC = 0x0 + NFTA_RANGE_SREG = 0x1 + NFTA_RANGE_OP = 0x2 + NFTA_RANGE_FROM_DATA = 0x3 + NFTA_RANGE_TO_DATA = 0x4 + NFT_LOOKUP_F_INV = 0x1 + NFTA_LOOKUP_UNSPEC = 0x0 + NFTA_LOOKUP_SET = 0x1 + NFTA_LOOKUP_SREG = 0x2 + NFTA_LOOKUP_DREG = 0x3 + NFTA_LOOKUP_SET_ID = 0x4 + NFTA_LOOKUP_FLAGS = 0x5 + NFT_DYNSET_OP_ADD = 0x0 + NFT_DYNSET_OP_UPDATE = 0x1 + NFT_DYNSET_F_INV = 0x1 + NFTA_DYNSET_UNSPEC = 0x0 + NFTA_DYNSET_SET_NAME = 0x1 + NFTA_DYNSET_SET_ID = 0x2 + NFTA_DYNSET_OP = 0x3 + NFTA_DYNSET_SREG_KEY = 0x4 + NFTA_DYNSET_SREG_DATA = 0x5 + NFTA_DYNSET_TIMEOUT = 0x6 + NFTA_DYNSET_EXPR = 0x7 + NFTA_DYNSET_PAD = 0x8 + NFTA_DYNSET_FLAGS = 0x9 + NFT_PAYLOAD_LL_HEADER = 0x0 + NFT_PAYLOAD_NETWORK_HEADER = 0x1 + NFT_PAYLOAD_TRANSPORT_HEADER = 0x2 + NFT_PAYLOAD_CSUM_NONE = 0x0 + NFT_PAYLOAD_CSUM_INET = 0x1 + NFT_PAYLOAD_L4CSUM_PSEUDOHDR = 0x1 + NFTA_PAYLOAD_UNSPEC = 0x0 + NFTA_PAYLOAD_DREG = 0x1 + NFTA_PAYLOAD_BASE = 0x2 + NFTA_PAYLOAD_OFFSET = 0x3 + NFTA_PAYLOAD_LEN = 0x4 + NFTA_PAYLOAD_SREG = 0x5 + NFTA_PAYLOAD_CSUM_TYPE = 0x6 + NFTA_PAYLOAD_CSUM_OFFSET = 0x7 + NFTA_PAYLOAD_CSUM_FLAGS = 0x8 + NFT_EXTHDR_F_PRESENT = 0x1 + NFT_EXTHDR_OP_IPV6 = 0x0 + NFT_EXTHDR_OP_TCPOPT = 0x1 + NFTA_EXTHDR_UNSPEC = 0x0 + NFTA_EXTHDR_DREG = 0x1 + NFTA_EXTHDR_TYPE = 0x2 + NFTA_EXTHDR_OFFSET = 0x3 + NFTA_EXTHDR_LEN = 0x4 + NFTA_EXTHDR_FLAGS = 0x5 + NFTA_EXTHDR_OP = 0x6 + NFTA_EXTHDR_SREG = 0x7 + NFT_META_LEN = 0x0 + NFT_META_PROTOCOL = 0x1 + NFT_META_PRIORITY = 0x2 + NFT_META_MARK = 0x3 + NFT_META_IIF = 0x4 + NFT_META_OIF = 0x5 + NFT_META_IIFNAME = 0x6 + NFT_META_OIFNAME = 0x7 + NFT_META_IIFTYPE = 0x8 + NFT_META_OIFTYPE = 0x9 + NFT_META_SKUID = 0xa + NFT_META_SKGID = 0xb + NFT_META_NFTRACE = 0xc + NFT_META_RTCLASSID = 0xd + NFT_META_SECMARK = 0xe + NFT_META_NFPROTO = 0xf + NFT_META_L4PROTO = 0x10 + NFT_META_BRI_IIFNAME = 0x11 + NFT_META_BRI_OIFNAME = 0x12 + NFT_META_PKTTYPE = 0x13 + NFT_META_CPU = 0x14 + NFT_META_IIFGROUP = 0x15 + NFT_META_OIFGROUP = 0x16 + NFT_META_CGROUP = 0x17 + NFT_META_PRANDOM = 0x18 + NFT_RT_CLASSID = 0x0 + NFT_RT_NEXTHOP4 = 0x1 + NFT_RT_NEXTHOP6 = 0x2 + NFT_RT_TCPMSS = 0x3 + NFT_HASH_JENKINS = 0x0 + NFT_HASH_SYM = 0x1 + NFTA_HASH_UNSPEC = 0x0 + NFTA_HASH_SREG = 0x1 + NFTA_HASH_DREG = 0x2 + NFTA_HASH_LEN = 0x3 + NFTA_HASH_MODULUS = 0x4 + NFTA_HASH_SEED = 0x5 + NFTA_HASH_OFFSET = 0x6 + NFTA_HASH_TYPE = 0x7 + NFTA_META_UNSPEC = 0x0 + NFTA_META_DREG = 0x1 + NFTA_META_KEY = 0x2 + NFTA_META_SREG = 0x3 + NFTA_RT_UNSPEC = 0x0 + NFTA_RT_DREG = 0x1 + NFTA_RT_KEY = 0x2 + NFT_CT_STATE = 0x0 + NFT_CT_DIRECTION = 0x1 + NFT_CT_STATUS = 0x2 + NFT_CT_MARK = 0x3 + NFT_CT_SECMARK = 0x4 + NFT_CT_EXPIRATION = 0x5 + NFT_CT_HELPER = 0x6 + NFT_CT_L3PROTOCOL = 0x7 + NFT_CT_SRC = 0x8 + NFT_CT_DST = 0x9 + NFT_CT_PROTOCOL = 0xa + NFT_CT_PROTO_SRC = 0xb + NFT_CT_PROTO_DST = 0xc + NFT_CT_LABELS = 0xd + NFT_CT_PKTS = 0xe + NFT_CT_BYTES = 0xf + NFT_CT_AVGPKT = 0x10 + NFT_CT_ZONE = 0x11 + NFT_CT_EVENTMASK = 0x12 + NFTA_CT_UNSPEC = 0x0 + NFTA_CT_DREG = 0x1 + NFTA_CT_KEY = 0x2 + NFTA_CT_DIRECTION = 0x3 + NFTA_CT_SREG = 0x4 + NFT_LIMIT_PKTS = 0x0 + NFT_LIMIT_PKT_BYTES = 0x1 + NFT_LIMIT_F_INV = 0x1 + NFTA_LIMIT_UNSPEC = 0x0 + NFTA_LIMIT_RATE = 0x1 + NFTA_LIMIT_UNIT = 0x2 + NFTA_LIMIT_BURST = 0x3 + NFTA_LIMIT_TYPE = 0x4 + NFTA_LIMIT_FLAGS = 0x5 + NFTA_LIMIT_PAD = 0x6 + NFTA_COUNTER_UNSPEC = 0x0 + NFTA_COUNTER_BYTES = 0x1 + NFTA_COUNTER_PACKETS = 0x2 + NFTA_COUNTER_PAD = 0x3 + NFTA_LOG_UNSPEC = 0x0 + NFTA_LOG_GROUP = 0x1 + NFTA_LOG_PREFIX = 0x2 + NFTA_LOG_SNAPLEN = 0x3 + NFTA_LOG_QTHRESHOLD = 0x4 + NFTA_LOG_LEVEL = 0x5 + NFTA_LOG_FLAGS = 0x6 + NFTA_QUEUE_UNSPEC = 0x0 + NFTA_QUEUE_NUM = 0x1 + NFTA_QUEUE_TOTAL = 0x2 + NFTA_QUEUE_FLAGS = 0x3 + NFTA_QUEUE_SREG_QNUM = 0x4 + NFT_QUOTA_F_INV = 0x1 + NFT_QUOTA_F_DEPLETED = 0x2 + NFTA_QUOTA_UNSPEC = 0x0 + NFTA_QUOTA_BYTES = 0x1 + NFTA_QUOTA_FLAGS = 0x2 + NFTA_QUOTA_PAD = 0x3 + NFTA_QUOTA_CONSUMED = 0x4 + NFT_REJECT_ICMP_UNREACH = 0x0 + NFT_REJECT_TCP_RST = 0x1 + NFT_REJECT_ICMPX_UNREACH = 0x2 + NFT_REJECT_ICMPX_NO_ROUTE = 0x0 + NFT_REJECT_ICMPX_PORT_UNREACH = 0x1 + NFT_REJECT_ICMPX_HOST_UNREACH = 0x2 + NFT_REJECT_ICMPX_ADMIN_PROHIBITED = 0x3 + NFTA_REJECT_UNSPEC = 0x0 + NFTA_REJECT_TYPE = 0x1 + NFTA_REJECT_ICMP_CODE = 0x2 + NFT_NAT_SNAT = 0x0 + NFT_NAT_DNAT = 0x1 + NFTA_NAT_UNSPEC = 0x0 + NFTA_NAT_TYPE = 0x1 + NFTA_NAT_FAMILY = 0x2 + NFTA_NAT_REG_ADDR_MIN = 0x3 + NFTA_NAT_REG_ADDR_MAX = 0x4 + NFTA_NAT_REG_PROTO_MIN = 0x5 + NFTA_NAT_REG_PROTO_MAX = 0x6 + NFTA_NAT_FLAGS = 0x7 + NFTA_MASQ_UNSPEC = 0x0 + NFTA_MASQ_FLAGS = 0x1 + NFTA_MASQ_REG_PROTO_MIN = 0x2 + NFTA_MASQ_REG_PROTO_MAX = 0x3 + NFTA_REDIR_UNSPEC = 0x0 + NFTA_REDIR_REG_PROTO_MIN = 0x1 + NFTA_REDIR_REG_PROTO_MAX = 0x2 + NFTA_REDIR_FLAGS = 0x3 + NFTA_DUP_UNSPEC = 0x0 + NFTA_DUP_SREG_ADDR = 0x1 + NFTA_DUP_SREG_DEV = 0x2 + NFTA_FWD_UNSPEC = 0x0 + NFTA_FWD_SREG_DEV = 0x1 + NFTA_OBJREF_UNSPEC = 0x0 + NFTA_OBJREF_IMM_TYPE = 0x1 + NFTA_OBJREF_IMM_NAME = 0x2 + NFTA_OBJREF_SET_SREG = 0x3 + NFTA_OBJREF_SET_NAME = 0x4 + NFTA_OBJREF_SET_ID = 0x5 + NFTA_GEN_UNSPEC = 0x0 + NFTA_GEN_ID = 0x1 + NFTA_GEN_PROC_PID = 0x2 + NFTA_GEN_PROC_NAME = 0x3 + NFTA_FIB_UNSPEC = 0x0 + NFTA_FIB_DREG = 0x1 + NFTA_FIB_RESULT = 0x2 + NFTA_FIB_FLAGS = 0x3 + NFT_FIB_RESULT_UNSPEC = 0x0 + NFT_FIB_RESULT_OIF = 0x1 + NFT_FIB_RESULT_OIFNAME = 0x2 + NFT_FIB_RESULT_ADDRTYPE = 0x3 + NFTA_FIB_F_SADDR = 0x1 + NFTA_FIB_F_DADDR = 0x2 + NFTA_FIB_F_MARK = 0x4 + NFTA_FIB_F_IIF = 0x8 + NFTA_FIB_F_OIF = 0x10 + NFTA_FIB_F_PRESENT = 0x20 + NFTA_CT_HELPER_UNSPEC = 0x0 + NFTA_CT_HELPER_NAME = 0x1 + NFTA_CT_HELPER_L3PROTO = 0x2 + NFTA_CT_HELPER_L4PROTO = 0x3 + NFTA_OBJ_UNSPEC = 0x0 + NFTA_OBJ_TABLE = 0x1 + NFTA_OBJ_NAME = 0x2 + NFTA_OBJ_TYPE = 0x3 + NFTA_OBJ_DATA = 0x4 + NFTA_OBJ_USE = 0x5 + NFTA_TRACE_UNSPEC = 0x0 + NFTA_TRACE_TABLE = 0x1 + NFTA_TRACE_CHAIN = 0x2 + NFTA_TRACE_RULE_HANDLE = 0x3 + NFTA_TRACE_TYPE = 0x4 + NFTA_TRACE_VERDICT = 0x5 + NFTA_TRACE_ID = 0x6 + NFTA_TRACE_LL_HEADER = 0x7 + NFTA_TRACE_NETWORK_HEADER = 0x8 + NFTA_TRACE_TRANSPORT_HEADER = 0x9 + NFTA_TRACE_IIF = 0xa + NFTA_TRACE_IIFTYPE = 0xb + NFTA_TRACE_OIF = 0xc + NFTA_TRACE_OIFTYPE = 0xd + NFTA_TRACE_MARK = 0xe + NFTA_TRACE_NFPROTO = 0xf + NFTA_TRACE_POLICY = 0x10 + NFTA_TRACE_PAD = 0x11 + NFT_TRACETYPE_UNSPEC = 0x0 + NFT_TRACETYPE_POLICY = 0x1 + NFT_TRACETYPE_RETURN = 0x2 + NFT_TRACETYPE_RULE = 0x3 + NFTA_NG_UNSPEC = 0x0 + NFTA_NG_DREG = 0x1 + NFTA_NG_MODULUS = 0x2 + NFTA_NG_TYPE = 0x3 + NFTA_NG_OFFSET = 0x4 + NFT_NG_INCREMENTAL = 0x0 + NFT_NG_RANDOM = 0x1 +) + +type RTCTime struct { + Sec int32 + Min int32 + Hour int32 + Mday int32 + Mon int32 + Year int32 + Wday int32 + Yday int32 + Isdst int32 +} + +type RTCWkAlrm struct { + Enabled uint8 + Pending uint8 + Time RTCTime +} + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgIoctlArg struct { + Op int32 + Flags int32 + Datalen int32 + Data *byte +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x20001269 + BLKPG_ADD_PARTITION = 0x1 + BLKPG_DEL_PARTITION = 0x2 + BLKPG_RESIZE_PARTITION = 0x3 +) + +const ( + NETNSA_NONE = 0x0 + NETNSA_NSID = 0x1 + NETNSA_PID = 0x2 + NETNSA_FD = 0x3 +) + +type XDPRingOffset struct { + Producer uint64 + Consumer uint64 + Desc uint64 +} + +type XDPMmapOffsets struct { + Rx XDPRingOffset + Tx XDPRingOffset + Fr XDPRingOffset + Cr XDPRingOffset +} + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 +} + +type XDPStatistics struct { + Rx_dropped uint64 + Rx_invalid_descs uint64 + Tx_invalid_descs uint64 +} + +type XDPDesc struct { + Addr uint64 + Len uint32 + Options uint32 +} + +const ( + NCSI_CMD_UNSPEC = 0x0 + NCSI_CMD_PKG_INFO = 0x1 + NCSI_CMD_SET_INTERFACE = 0x2 + NCSI_CMD_CLEAR_INTERFACE = 0x3 + NCSI_ATTR_UNSPEC = 0x0 + NCSI_ATTR_IFINDEX = 0x1 + NCSI_ATTR_PACKAGE_LIST = 0x2 + NCSI_ATTR_PACKAGE_ID = 0x3 + NCSI_ATTR_CHANNEL_ID = 0x4 + NCSI_PKG_ATTR_UNSPEC = 0x0 + NCSI_PKG_ATTR = 0x1 + NCSI_PKG_ATTR_ID = 0x2 + NCSI_PKG_ATTR_FORCED = 0x3 + NCSI_PKG_ATTR_CHANNEL_LIST = 0x4 + NCSI_CHANNEL_ATTR_UNSPEC = 0x0 + NCSI_CHANNEL_ATTR = 0x1 + NCSI_CHANNEL_ATTR_ID = 0x2 + NCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3 + NCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4 + NCSI_CHANNEL_ATTR_VERSION_STR = 0x5 + NCSI_CHANNEL_ATTR_LINK_STATE = 0x6 + NCSI_CHANNEL_ATTR_ACTIVE = 0x7 + NCSI_CHANNEL_ATTR_FORCED = 0x8 + NCSI_CHANNEL_ATTR_VLAN_LIST = 0x9 + NCSI_CHANNEL_ATTR_VLAN_ID = 0xa +) + +type ScmTimestamping struct { + Ts [3]Timespec +} + +const ( + SOF_TIMESTAMPING_TX_HARDWARE = 0x1 + SOF_TIMESTAMPING_TX_SOFTWARE = 0x2 + SOF_TIMESTAMPING_RX_HARDWARE = 0x4 + SOF_TIMESTAMPING_RX_SOFTWARE = 0x8 + SOF_TIMESTAMPING_SOFTWARE = 0x10 + SOF_TIMESTAMPING_SYS_HARDWARE = 0x20 + SOF_TIMESTAMPING_RAW_HARDWARE = 0x40 + SOF_TIMESTAMPING_OPT_ID = 0x80 + SOF_TIMESTAMPING_TX_SCHED = 0x100 + SOF_TIMESTAMPING_TX_ACK = 0x200 + SOF_TIMESTAMPING_OPT_CMSG = 0x400 + SOF_TIMESTAMPING_OPT_TSONLY = 0x800 + SOF_TIMESTAMPING_OPT_STATS = 0x1000 + SOF_TIMESTAMPING_OPT_PKTINFO = 0x2000 + SOF_TIMESTAMPING_OPT_TX_SWHW = 0x4000 + + SOF_TIMESTAMPING_LAST = 0x4000 + SOF_TIMESTAMPING_MASK = 0x7fff + + SCM_TSTAMP_SND = 0x0 + SCM_TSTAMP_SCHED = 0x1 + SCM_TSTAMP_ACK = 0x2 +) + +type SockExtendedErr struct { + Errno uint32 + Origin uint8 + Type uint8 + Code uint8 + Pad uint8 + Info uint32 + Data uint32 +} + +type FanotifyEventMetadata struct { + Event_len uint32 + Vers uint8 + Reserved uint8 + Metadata_len uint16 + Mask uint64 + Fd int32 + Pid int32 +} + +type FanotifyResponse struct { + Fd int32 + Response uint32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go new file mode 100644 index 0000000..2dae0c1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -0,0 +1,465 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x84 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData + Pad_cgo_1 [4]byte +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go new file mode 100644 index 0000000..1f0e76c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go new file mode 100644 index 0000000..53f2159 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -0,0 +1,470 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,netbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + Pad_cgo_0 [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter uint32 + Flags uint32 + Fflags uint32 + Data int64 + Udata int32 + Pad_cgo_0 [4]byte +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go new file mode 100644 index 0000000..43da2c4 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -0,0 +1,472 @@ +// cgo -godefs types_netbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,netbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int32 + Pad_cgo_0 [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Mode uint32 + Pad_cgo_0 [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Pad_cgo_1 [4]byte + Rdev uint64 + Atimespec Timespec + Mtimespec Timespec + Ctimespec Timespec + Birthtimespec Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + Pad_cgo_2 [4]byte +} + +type Statfs_t [0]byte + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Reclen uint16 + Namlen uint16 + Type uint8 + Name [512]int8 + Pad_cgo_0 [3]byte +} + +type Fsid struct { + X__fsid_val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [12]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Pad_cgo_0 [4]byte + Iov *Iovec + Iovlen int32 + Pad_cgo_1 [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter uint32 + Flags uint32 + Fflags uint32 + Pad_cgo_0 [4]byte + Data int64 + Udata int64 +} + +type FdSet struct { + Bits [8]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x88 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x78 + SizeofRtMetrics = 0x50 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Pad_cgo_0 [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Pad_cgo_0 [1]byte + Link_state int32 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Lastchange Timespec +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Metric int32 + Index uint16 + Pad_cgo_0 [6]byte +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Pad_cgo_0 [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits int32 + Pad_cgo_1 [4]byte + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Expire int64 + Pksent int64 +} + +type Mclpool [0]byte + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + Pad_cgo_0 [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [6]byte +} + +type BpfTimeval struct { + Sec int64 + Usec int64 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type Ptmget struct { + Cfd int32 + Sfd int32 + Cn [1024]byte + Sn [1024]byte +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x200 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sysctlnode struct { + Flags uint32 + Num int32 + Name [32]int8 + Ver uint32 + X__rsvd uint32 + Un [16]byte + X_sysctl_size [8]byte + X_sysctl_func [8]byte + X_sysctl_parent [8]byte + X_sysctl_desc [8]byte +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go new file mode 100644 index 0000000..900fb44 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build 386,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + X__st_birthtim Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + Pad_cgo_0 [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + X__d_padding [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xec + SizeofIfData = 0xd4 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Pad uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval + Mclpool [7]Mclpool +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct { + Grown int32 + Alive uint16 + Hwm uint16 + Cwm uint16 + Lwm uint16 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go new file mode 100644 index 0000000..028fa78 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -0,0 +1,570 @@ +// cgo -godefs types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen uint32 + _ [4]byte + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Anonpages int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Nanonneeded int32 + Nfreeanon int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Obsolete_swapins int32 + Obsolete_swapouts int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Zeroaborts int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Pdreanon int32 + Pdrevnode int32 + Pdrevtext int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 0000000..b45d5ee --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,571 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm,openbsd + +package unix + +const ( + SizeofPtr = 0x4 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x4 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 + _ [4]byte +} + +type Timeval struct { + Sec int64 + Usec int32 + _ [4]byte +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ [4]byte + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + _ [4]byte + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + _ [4]byte + Data int64 + Udata *byte + _ [4]byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + _ [4]byte + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go new file mode 100644 index 0000000..8531a19 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -0,0 +1,442 @@ +// cgo -godefs types_solaris.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build amd64,solaris + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 + PathMax = 0x400 + MaxHostNameLen = 0x100 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timeval32 struct { + Sec int32 + Usec int32 +} + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Size int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Blksize int32 + _ [4]byte + Blocks int64 + Fstype [16]int8 +} + +type Flock_t struct { + Type int16 + Whence int16 + _ [4]byte + Start int64 + Len int64 + Sysid int32 + Pid int32 + Pad [4]int64 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Name [1]int8 + _ [5]byte +} + +type _Fsblkcnt_t uint64 + +type Statvfs_t struct { + Bsize uint64 + Frsize uint64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Favail uint64 + Fsid uint64 + Basetype [16]int8 + Flag uint64 + Namemax uint64 + Fstr [32]int8 +} + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 + X__sin6_src_id uint32 +} + +type RawSockaddrUnix struct { + Family uint16 + Path [108]int8 +} + +type RawSockaddrDatalink struct { + Family uint16 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [244]int8 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [236]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *int8 + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + _ [4]byte + Iov *Iovec + Iovlen int32 + _ [4]byte + Accrights *int8 + Accrightslen int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + X__icmp6_filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x20 + SizeofSockaddrAny = 0xfc + SizeofSockaddrUnix = 0x6e + SizeofSockaddrDatalink = 0xfc + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x24 + SizeofICMPv6Filter = 0x20 +) + +type FdSet struct { + Bits [1024]int64 +} + +type Utsname struct { + Sysname [257]byte + Nodename [257]byte + Release [257]byte + Version [257]byte + Machine [257]byte +} + +type Ustat_t struct { + Tfree int64 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +const ( + AT_FDCWD = 0xffd19553 + AT_SYMLINK_NOFOLLOW = 0x1000 + AT_SYMLINK_FOLLOW = 0x2000 + AT_REMOVEDIR = 0x1 + AT_EACCESS = 0x4 +) + +const ( + SizeofIfMsghdr = 0x54 + SizeofIfData = 0x44 + SizeofIfaMsghdr = 0x14 + SizeofRtMsghdr = 0x4c + SizeofRtMetrics = 0x28 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + _ [1]byte + Mtu uint32 + Metric uint32 + Baudrate uint32 + Ipackets uint32 + Ierrors uint32 + Opackets uint32 + Oerrors uint32 + Collisions uint32 + Ibytes uint32 + Obytes uint32 + Imcasts uint32 + Omcasts uint32 + Iqdrops uint32 + Noproto uint32 + Lastchange Timeval32 +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ [2]byte + Metric int32 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ [2]byte + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint32 + Mtu uint32 + Hopcount uint32 + Expire uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pksent uint32 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x80 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint64 + Drop uint64 + Capt uint64 + Padding [13]uint64 +} + +type BpfProgram struct { + Len uint32 + _ [4]byte + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfTimeval struct { + Sec int32 + Usec int32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [19]uint8 + _ [1]byte +} + +type Termio struct { + Iflag uint16 + Oflag uint16 + Cflag uint16 + Lflag uint16 + Line int8 + Cc [8]uint8 + _ [1]byte +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) diff --git a/vendor/golang.org/x/sys/windows/aliases.go b/vendor/golang.org/x/sys/windows/aliases.go new file mode 100644 index 0000000..af3af60 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/aliases.go @@ -0,0 +1,13 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows +// +build go1.9 + +package windows + +import "syscall" + +type Errno = syscall.Errno +type SysProcAttr = syscall.SysProcAttr diff --git a/vendor/golang.org/x/sys/windows/asm_windows_386.s b/vendor/golang.org/x/sys/windows/asm_windows_386.s new file mode 100644 index 0000000..21d994d --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_386.s @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +// System calls for 386, Windows are implemented in runtime/syscall_windows.goc +// + +TEXT ·getprocaddress(SB), 7, $0-16 + JMP syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB), 7, $0-12 + JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_amd64.s b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s new file mode 100644 index 0000000..5bfdf79 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_amd64.s @@ -0,0 +1,13 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +// System calls for amd64, Windows are implemented in runtime/syscall_windows.goc +// + +TEXT ·getprocaddress(SB), 7, $0-32 + JMP syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB), 7, $0-24 + JMP syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/asm_windows_arm.s b/vendor/golang.org/x/sys/windows/asm_windows_arm.s new file mode 100644 index 0000000..55d8b91 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/asm_windows_arm.s @@ -0,0 +1,11 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +#include "textflag.h" + +TEXT ·getprocaddress(SB),NOSPLIT,$0 + B syscall·getprocaddress(SB) + +TEXT ·loadlibrary(SB),NOSPLIT,$0 + B syscall·loadlibrary(SB) diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go new file mode 100644 index 0000000..ba67658 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -0,0 +1,378 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "sync" + "sync/atomic" + "syscall" + "unsafe" +) + +// DLLError describes reasons for DLL load failures. +type DLLError struct { + Err error + ObjName string + Msg string +} + +func (e *DLLError) Error() string { return e.Msg } + +// Implemented in runtime/syscall_windows.goc; we provide jumps to them in our assembly file. +func loadlibrary(filename *uint16) (handle uintptr, err syscall.Errno) +func getprocaddress(handle uintptr, procname *uint8) (proc uintptr, err syscall.Errno) + +// A DLL implements access to a single DLL. +type DLL struct { + Name string + Handle Handle +} + +// LoadDLL loads DLL file into memory. +// +// Warning: using LoadDLL without an absolute path name is subject to +// DLL preloading attacks. To safely load a system DLL, use LazyDLL +// with System set to true, or use LoadLibraryEx directly. +func LoadDLL(name string) (dll *DLL, err error) { + namep, err := UTF16PtrFromString(name) + if err != nil { + return nil, err + } + h, e := loadlibrary(namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to load " + name + ": " + e.Error(), + } + } + d := &DLL{ + Name: name, + Handle: Handle(h), + } + return d, nil +} + +// MustLoadDLL is like LoadDLL but panics if load operation failes. +func MustLoadDLL(name string) *DLL { + d, e := LoadDLL(name) + if e != nil { + panic(e) + } + return d +} + +// FindProc searches DLL d for procedure named name and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProc(name string) (proc *Proc, err error) { + namep, err := BytePtrFromString(name) + if err != nil { + return nil, err + } + a, e := getprocaddress(uintptr(d.Handle), namep) + if e != 0 { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProc is like FindProc but panics if search fails. +func (d *DLL) MustFindProc(name string) *Proc { + p, e := d.FindProc(name) + if e != nil { + panic(e) + } + return p +} + +// Release unloads DLL d from memory. +func (d *DLL) Release() (err error) { + return FreeLibrary(d.Handle) +} + +// A Proc implements access to a procedure inside a DLL. +type Proc struct { + Dll *DLL + Name string + addr uintptr +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +func (p *Proc) Addr() uintptr { + return p.addr +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + switch len(a) { + case 0: + return syscall.Syscall(p.Addr(), uintptr(len(a)), 0, 0, 0) + case 1: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], 0, 0) + case 2: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], 0) + case 3: + return syscall.Syscall(p.Addr(), uintptr(len(a)), a[0], a[1], a[2]) + case 4: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], 0, 0) + case 5: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], 0) + case 6: + return syscall.Syscall6(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5]) + case 7: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], 0, 0) + case 8: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], 0) + case 9: + return syscall.Syscall9(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]) + case 10: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], 0, 0) + case 11: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], 0) + case 12: + return syscall.Syscall12(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11]) + case 13: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], 0, 0) + case 14: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], 0) + case 15: + return syscall.Syscall15(p.Addr(), uintptr(len(a)), a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8], a[9], a[10], a[11], a[12], a[13], a[14]) + default: + panic("Call " + p.Name + " with too many arguments " + itoa(len(a)) + ".") + } +} + +// A LazyDLL implements access to a single DLL. +// It will delay the load of the DLL until the first +// call to its Handle method or to one of its +// LazyProc's Addr method. +type LazyDLL struct { + Name string + + // System determines whether the DLL must be loaded from the + // Windows System directory, bypassing the normal DLL search + // path. + System bool + + mu sync.Mutex + dll *DLL // non nil once DLL is loaded +} + +// Load loads DLL file d.Name into memory. It returns an error if fails. +// Load will not try to load DLL, if it is already loaded into memory. +func (d *LazyDLL) Load() error { + // Non-racy version of: + // if d.dll != nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll))) != nil { + return nil + } + d.mu.Lock() + defer d.mu.Unlock() + if d.dll != nil { + return nil + } + + // kernel32.dll is special, since it's where LoadLibraryEx comes from. + // The kernel already special-cases its name, so it's always + // loaded from system32. + var dll *DLL + var err error + if d.Name == "kernel32.dll" { + dll, err = LoadDLL(d.Name) + } else { + dll, err = loadLibraryEx(d.Name, d.System) + } + if err != nil { + return err + } + + // Non-racy version of: + // d.dll = dll + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&d.dll)), unsafe.Pointer(dll)) + return nil +} + +// mustLoad is like Load but panics if search fails. +func (d *LazyDLL) mustLoad() { + e := d.Load() + if e != nil { + panic(e) + } +} + +// Handle returns d's module handle. +func (d *LazyDLL) Handle() uintptr { + d.mustLoad() + return uintptr(d.dll.Handle) +} + +// NewProc returns a LazyProc for accessing the named procedure in the DLL d. +func (d *LazyDLL) NewProc(name string) *LazyProc { + return &LazyProc{l: d, Name: name} +} + +// NewLazyDLL creates new LazyDLL associated with DLL file. +func NewLazyDLL(name string) *LazyDLL { + return &LazyDLL{Name: name} +} + +// NewLazySystemDLL is like NewLazyDLL, but will only +// search Windows System directory for the DLL if name is +// a base name (like "advapi32.dll"). +func NewLazySystemDLL(name string) *LazyDLL { + return &LazyDLL{Name: name, System: true} +} + +// A LazyProc implements access to a procedure inside a LazyDLL. +// It delays the lookup until the Addr method is called. +type LazyProc struct { + Name string + + mu sync.Mutex + l *LazyDLL + proc *Proc +} + +// Find searches DLL for procedure named p.Name. It returns +// an error if search fails. Find will not search procedure, +// if it is already found and loaded into memory. +func (p *LazyProc) Find() error { + // Non-racy version of: + // if p.proc == nil { + if atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc))) == nil { + p.mu.Lock() + defer p.mu.Unlock() + if p.proc == nil { + e := p.l.Load() + if e != nil { + return e + } + proc, e := p.l.dll.FindProc(p.Name) + if e != nil { + return e + } + // Non-racy version of: + // p.proc = proc + atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&p.proc)), unsafe.Pointer(proc)) + } + } + return nil +} + +// mustFind is like Find but panics if search fails. +func (p *LazyProc) mustFind() { + e := p.Find() + if e != nil { + panic(e) + } +} + +// Addr returns the address of the procedure represented by p. +// The return value can be passed to Syscall to run the procedure. +// It will panic if the procedure cannot be found. +func (p *LazyProc) Addr() uintptr { + p.mustFind() + return p.proc.Addr() +} + +//go:uintptrescapes + +// Call executes procedure p with arguments a. It will panic, if more than 15 arguments +// are supplied. It will also panic if the procedure cannot be found. +// +// The returned error is always non-nil, constructed from the result of GetLastError. +// Callers must inspect the primary return value to decide whether an error occurred +// (according to the semantics of the specific function being called) before consulting +// the error. The error will be guaranteed to contain windows.Errno. +func (p *LazyProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) { + p.mustFind() + return p.proc.Call(a...) +} + +var canDoSearchSystem32Once struct { + sync.Once + v bool +} + +func initCanDoSearchSystem32() { + // https://msdn.microsoft.com/en-us/library/ms684179(v=vs.85).aspx says: + // "Windows 7, Windows Server 2008 R2, Windows Vista, and Windows + // Server 2008: The LOAD_LIBRARY_SEARCH_* flags are available on + // systems that have KB2533623 installed. To determine whether the + // flags are available, use GetProcAddress to get the address of the + // AddDllDirectory, RemoveDllDirectory, or SetDefaultDllDirectories + // function. If GetProcAddress succeeds, the LOAD_LIBRARY_SEARCH_* + // flags can be used with LoadLibraryEx." + canDoSearchSystem32Once.v = (modkernel32.NewProc("AddDllDirectory").Find() == nil) +} + +func canDoSearchSystem32() bool { + canDoSearchSystem32Once.Do(initCanDoSearchSystem32) + return canDoSearchSystem32Once.v +} + +func isBaseName(name string) bool { + for _, c := range name { + if c == ':' || c == '/' || c == '\\' { + return false + } + } + return true +} + +// loadLibraryEx wraps the Windows LoadLibraryEx function. +// +// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx +// +// If name is not an absolute path, LoadLibraryEx searches for the DLL +// in a variety of automatic locations unless constrained by flags. +// See: https://msdn.microsoft.com/en-us/library/ff919712%28VS.85%29.aspx +func loadLibraryEx(name string, system bool) (*DLL, error) { + loadDLL := name + var flags uintptr + if system { + if canDoSearchSystem32() { + const LOAD_LIBRARY_SEARCH_SYSTEM32 = 0x00000800 + flags = LOAD_LIBRARY_SEARCH_SYSTEM32 + } else if isBaseName(name) { + // WindowsXP or unpatched Windows machine + // trying to load "foo.dll" out of the system + // folder, but LoadLibraryEx doesn't support + // that yet on their system, so emulate it. + systemdir, err := GetSystemDirectory() + if err != nil { + return nil, err + } + loadDLL = systemdir + "\\" + name + } + } + h, err := LoadLibraryEx(loadDLL, 0, flags) + if err != nil { + return nil, err + } + return &DLL{Name: name, Handle: h}, nil +} + +type errString string + +func (s errString) Error() string { return string(s) } diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go new file mode 100644 index 0000000..bdc71e2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -0,0 +1,29 @@ +// Copyright 2010 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows environment variables. + +package windows + +import "syscall" + +func Getenv(key string) (value string, found bool) { + return syscall.Getenv(key) +} + +func Setenv(key, value string) error { + return syscall.Setenv(key, value) +} + +func Clearenv() { + syscall.Clearenv() +} + +func Environ() []string { + return syscall.Environ() +} + +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} diff --git a/vendor/golang.org/x/sys/windows/eventlog.go b/vendor/golang.org/x/sys/windows/eventlog.go new file mode 100644 index 0000000..40af946 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/eventlog.go @@ -0,0 +1,20 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +const ( + EVENTLOG_SUCCESS = 0 + EVENTLOG_ERROR_TYPE = 1 + EVENTLOG_WARNING_TYPE = 2 + EVENTLOG_INFORMATION_TYPE = 4 + EVENTLOG_AUDIT_SUCCESS = 8 + EVENTLOG_AUDIT_FAILURE = 16 +) + +//sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW +//sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource +//sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW diff --git a/vendor/golang.org/x/sys/windows/exec_windows.go b/vendor/golang.org/x/sys/windows/exec_windows.go new file mode 100644 index 0000000..3606c3a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/exec_windows.go @@ -0,0 +1,97 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Fork, exec, wait, etc. + +package windows + +// EscapeArg rewrites command line argument s as prescribed +// in http://msdn.microsoft.com/en-us/library/ms880421. +// This function returns "" (2 double quotes) if s is empty. +// Alternatively, these transformations are done: +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. +func EscapeArg(s string) string { + if len(s) == 0 { + return "\"\"" + } + n := len(s) + hasSpace := false + for i := 0; i < len(s); i++ { + switch s[i] { + case '"', '\\': + n++ + case ' ', '\t': + hasSpace = true + } + } + if hasSpace { + n += 2 + } + if n == len(s) { + return s + } + + qs := make([]byte, n) + j := 0 + if hasSpace { + qs[j] = '"' + j++ + } + slashes := 0 + for i := 0; i < len(s); i++ { + switch s[i] { + default: + slashes = 0 + qs[j] = s[i] + case '\\': + slashes++ + qs[j] = s[i] + case '"': + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '\\' + j++ + qs[j] = s[i] + } + j++ + } + if hasSpace { + for ; slashes > 0; slashes-- { + qs[j] = '\\' + j++ + } + qs[j] = '"' + j++ + } + return string(qs[:j]) +} + +func CloseOnExec(fd Handle) { + SetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0) +} + +// FullPath retrieves the full path of the specified file. +func FullPath(name string) (path string, err error) { + p, err := UTF16PtrFromString(name) + if err != nil { + return "", err + } + n := uint32(100) + for { + buf := make([]uint16, n) + n, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil) + if err != nil { + return "", err + } + if n <= uint32(len(buf)) { + return UTF16ToString(buf[:n]), nil + } + } +} diff --git a/vendor/golang.org/x/sys/windows/memory_windows.go b/vendor/golang.org/x/sys/windows/memory_windows.go new file mode 100644 index 0000000..f80a420 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/memory_windows.go @@ -0,0 +1,26 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +const ( + MEM_COMMIT = 0x00001000 + MEM_RESERVE = 0x00002000 + MEM_DECOMMIT = 0x00004000 + MEM_RELEASE = 0x00008000 + MEM_RESET = 0x00080000 + MEM_TOP_DOWN = 0x00100000 + MEM_WRITE_WATCH = 0x00200000 + MEM_PHYSICAL = 0x00400000 + MEM_RESET_UNDO = 0x01000000 + MEM_LARGE_PAGES = 0x20000000 + + PAGE_NOACCESS = 0x01 + PAGE_READONLY = 0x02 + PAGE_READWRITE = 0x04 + PAGE_WRITECOPY = 0x08 + PAGE_EXECUTE_READ = 0x20 + PAGE_EXECUTE_READWRITE = 0x40 + PAGE_EXECUTE_WRITECOPY = 0x80 +) diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash new file mode 100644 index 0000000..a70b24f --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -0,0 +1,64 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +[[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; } +winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" +[[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } + +declare -A errors + +{ + echo "// Code generated by 'go generate'; DO NOT EDIT." + echo + echo "package windows" + echo "import \"syscall\"" + echo "const (" + + while read -r line; do + unset vtype + if [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?([A-Z][A-Z0-9_]+k?)\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +([A-Z0-9_]+\()?((0x)?[0-9A-Fa-f]+)L?\)? ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + elif [[ $line =~ ^#define\ +([A-Z0-9_]+k?)\ +\(\(([A-Z]+)\)((0x)?[0-9A-Fa-f]+)L?\) ]]; then + key="${BASH_REMATCH[1]}" + value="${BASH_REMATCH[3]}" + vtype="${BASH_REMATCH[2]}" + else + continue + fi + [[ -n $key && -n $value ]] || continue + [[ -z ${errors["$key"]} ]] || continue + errors["$key"]="$value" + if [[ -v vtype ]]; then + if [[ $key == FACILITY_* || $key == NO_ERROR ]]; then + vtype="" + elif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then + vtype="Handle" + else + vtype="syscall.Errno" + fi + last_vtype="$vtype" + else + vtype="" + if [[ $last_vtype == Handle && $value == NO_ERROR ]]; then + value="S_OK" + elif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then + value="ERROR_SUCCESS" + fi + fi + + echo "$key $vtype = $value" + done < "$winerror" + + echo ")" +} | gofmt > "$1" diff --git a/vendor/golang.org/x/sys/windows/mkerrors.go b/vendor/golang.org/x/sys/windows/mkerrors.go new file mode 100644 index 0000000..cbf123e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkerrors.go @@ -0,0 +1,7 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +//go:generate ./mkerrors.bash zerrors_windows.go diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go new file mode 100644 index 0000000..fb7db0e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -0,0 +1,7 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go diff --git a/vendor/golang.org/x/sys/windows/race.go b/vendor/golang.org/x/sys/windows/race.go new file mode 100644 index 0000000..a74e3e2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race.go @@ -0,0 +1,30 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows,race + +package windows + +import ( + "runtime" + "unsafe" +) + +const raceenabled = true + +func raceAcquire(addr unsafe.Pointer) { + runtime.RaceAcquire(addr) +} + +func raceReleaseMerge(addr unsafe.Pointer) { + runtime.RaceReleaseMerge(addr) +} + +func raceReadRange(addr unsafe.Pointer, len int) { + runtime.RaceReadRange(addr, len) +} + +func raceWriteRange(addr unsafe.Pointer, len int) { + runtime.RaceWriteRange(addr, len) +} diff --git a/vendor/golang.org/x/sys/windows/race0.go b/vendor/golang.org/x/sys/windows/race0.go new file mode 100644 index 0000000..e44a3cb --- /dev/null +++ b/vendor/golang.org/x/sys/windows/race0.go @@ -0,0 +1,25 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows,!race + +package windows + +import ( + "unsafe" +) + +const raceenabled = false + +func raceAcquire(addr unsafe.Pointer) { +} + +func raceReleaseMerge(addr unsafe.Pointer) { +} + +func raceReadRange(addr unsafe.Pointer, len int) { +} + +func raceWriteRange(addr unsafe.Pointer, len int) { +} diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go new file mode 100644 index 0000000..da06406 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -0,0 +1,649 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import ( + "syscall" + "unsafe" +) + +const ( + STANDARD_RIGHTS_REQUIRED = 0xf0000 + STANDARD_RIGHTS_READ = 0x20000 + STANDARD_RIGHTS_WRITE = 0x20000 + STANDARD_RIGHTS_EXECUTE = 0x20000 + STANDARD_RIGHTS_ALL = 0x1F0000 +) + +const ( + NameUnknown = 0 + NameFullyQualifiedDN = 1 + NameSamCompatible = 2 + NameDisplay = 3 + NameUniqueId = 6 + NameCanonical = 7 + NameUserPrincipal = 8 + NameCanonicalEx = 9 + NameServicePrincipal = 10 + NameDnsDomain = 12 +) + +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +// http://blogs.msdn.com/b/drnick/archive/2007/12/19/windows-and-upn-format-credentials.aspx +//sys TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.TranslateNameW +//sys GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) [failretval&0xff==0] = secur32.GetUserNameExW + +// TranslateAccountName converts a directory service +// object name from one format to another. +func TranslateAccountName(username string, from, to uint32, initSize int) (string, error) { + u, e := UTF16PtrFromString(username) + if e != nil { + return "", e + } + n := uint32(50) + for { + b := make([]uint16, n) + e = TranslateName(u, from, to, &b[0], &n) + if e == nil { + return UTF16ToString(b[:n]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +const ( + // do not reorder + NetSetupUnknownStatus = iota + NetSetupUnjoined + NetSetupWorkgroupName + NetSetupDomainName +) + +type UserInfo10 struct { + Name *uint16 + Comment *uint16 + UsrComment *uint16 + FullName *uint16 +} + +//sys NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) = netapi32.NetUserGetInfo +//sys NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) = netapi32.NetGetJoinInformation +//sys NetApiBufferFree(buf *byte) (neterr error) = netapi32.NetApiBufferFree + +const ( + // do not reorder + SidTypeUser = 1 + iota + SidTypeGroup + SidTypeDomain + SidTypeAlias + SidTypeWellKnownGroup + SidTypeDeletedAccount + SidTypeInvalid + SidTypeUnknown + SidTypeComputer + SidTypeLabel +) + +type SidIdentifierAuthority struct { + Value [6]byte +} + +var ( + SECURITY_NULL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 0}} + SECURITY_WORLD_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 1}} + SECURITY_LOCAL_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 2}} + SECURITY_CREATOR_SID_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 3}} + SECURITY_NON_UNIQUE_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 4}} + SECURITY_NT_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 5}} + SECURITY_MANDATORY_LABEL_AUTHORITY = SidIdentifierAuthority{[6]byte{0, 0, 0, 0, 0, 16}} +) + +const ( + SECURITY_NULL_RID = 0 + SECURITY_WORLD_RID = 0 + SECURITY_LOCAL_RID = 0 + SECURITY_CREATOR_OWNER_RID = 0 + SECURITY_CREATOR_GROUP_RID = 1 + SECURITY_DIALUP_RID = 1 + SECURITY_NETWORK_RID = 2 + SECURITY_BATCH_RID = 3 + SECURITY_INTERACTIVE_RID = 4 + SECURITY_LOGON_IDS_RID = 5 + SECURITY_SERVICE_RID = 6 + SECURITY_LOCAL_SYSTEM_RID = 18 + SECURITY_BUILTIN_DOMAIN_RID = 32 + SECURITY_PRINCIPAL_SELF_RID = 10 + SECURITY_CREATOR_OWNER_SERVER_RID = 0x2 + SECURITY_CREATOR_GROUP_SERVER_RID = 0x3 + SECURITY_LOGON_IDS_RID_COUNT = 0x3 + SECURITY_ANONYMOUS_LOGON_RID = 0x7 + SECURITY_PROXY_RID = 0x8 + SECURITY_ENTERPRISE_CONTROLLERS_RID = 0x9 + SECURITY_SERVER_LOGON_RID = SECURITY_ENTERPRISE_CONTROLLERS_RID + SECURITY_AUTHENTICATED_USER_RID = 0xb + SECURITY_RESTRICTED_CODE_RID = 0xc + SECURITY_NT_NON_UNIQUE_RID = 0x15 +) + +// Predefined domain-relative RIDs for local groups. +// See https://msdn.microsoft.com/en-us/library/windows/desktop/aa379649(v=vs.85).aspx +const ( + DOMAIN_ALIAS_RID_ADMINS = 0x220 + DOMAIN_ALIAS_RID_USERS = 0x221 + DOMAIN_ALIAS_RID_GUESTS = 0x222 + DOMAIN_ALIAS_RID_POWER_USERS = 0x223 + DOMAIN_ALIAS_RID_ACCOUNT_OPS = 0x224 + DOMAIN_ALIAS_RID_SYSTEM_OPS = 0x225 + DOMAIN_ALIAS_RID_PRINT_OPS = 0x226 + DOMAIN_ALIAS_RID_BACKUP_OPS = 0x227 + DOMAIN_ALIAS_RID_REPLICATOR = 0x228 + DOMAIN_ALIAS_RID_RAS_SERVERS = 0x229 + DOMAIN_ALIAS_RID_PREW2KCOMPACCESS = 0x22a + DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS = 0x22b + DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS = 0x22c + DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS = 0x22d + DOMAIN_ALIAS_RID_MONITORING_USERS = 0x22e + DOMAIN_ALIAS_RID_LOGGING_USERS = 0x22f + DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS = 0x230 + DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS = 0x231 + DOMAIN_ALIAS_RID_DCOM_USERS = 0x232 + DOMAIN_ALIAS_RID_IUSERS = 0x238 + DOMAIN_ALIAS_RID_CRYPTO_OPERATORS = 0x239 + DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP = 0x23b + DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP = 0x23c + DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP = 0x23d + DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP = 0x23e +) + +//sys LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountSidW +//sys LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) = advapi32.LookupAccountNameW +//sys ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) = advapi32.ConvertSidToStringSidW +//sys ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) = advapi32.ConvertStringSidToSidW +//sys GetLengthSid(sid *SID) (len uint32) = advapi32.GetLengthSid +//sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid +//sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid +//sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid +//sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid + +// The security identifier (SID) structure is a variable-length +// structure used to uniquely identify users or groups. +type SID struct{} + +// StringToSid converts a string-format security identifier +// sid into a valid, functional sid. +func StringToSid(s string) (*SID, error) { + var sid *SID + p, e := UTF16PtrFromString(s) + if e != nil { + return nil, e + } + e = ConvertStringSidToSid(p, &sid) + if e != nil { + return nil, e + } + defer LocalFree((Handle)(unsafe.Pointer(sid))) + return sid.Copy() +} + +// LookupSID retrieves a security identifier sid for the account +// and the name of the domain on which the account was found. +// System specify target computer to search. +func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { + if len(account) == 0 { + return nil, "", 0, syscall.EINVAL + } + acc, e := UTF16PtrFromString(account) + if e != nil { + return nil, "", 0, e + } + var sys *uint16 + if len(system) > 0 { + sys, e = UTF16PtrFromString(system) + if e != nil { + return nil, "", 0, e + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]byte, n) + db := make([]uint16, dn) + sid = (*SID)(unsafe.Pointer(&b[0])) + e = LookupAccountName(sys, acc, sid, &n, &db[0], &dn, &accType) + if e == nil { + return sid, UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, "", 0, e + } + if n <= uint32(len(b)) { + return nil, "", 0, e + } + } +} + +// String converts sid to a string format +// suitable for display, storage, or transmission. +func (sid *SID) String() (string, error) { + var s *uint16 + e := ConvertSidToStringSid(sid, &s) + if e != nil { + return "", e + } + defer LocalFree((Handle)(unsafe.Pointer(s))) + return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil +} + +// Len returns the length, in bytes, of a valid security identifier sid. +func (sid *SID) Len() int { + return int(GetLengthSid(sid)) +} + +// Copy creates a duplicate of security identifier sid. +func (sid *SID) Copy() (*SID, error) { + b := make([]byte, sid.Len()) + sid2 := (*SID)(unsafe.Pointer(&b[0])) + e := CopySid(uint32(len(b)), sid2, sid) + if e != nil { + return nil, e + } + return sid2, nil +} + +// LookupAccount retrieves the name of the account for this sid +// and the name of the first domain on which this sid is found. +// System specify target computer to search for. +func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { + var sys *uint16 + if len(system) > 0 { + sys, err = UTF16PtrFromString(system) + if err != nil { + return "", "", 0, err + } + } + n := uint32(50) + dn := uint32(50) + for { + b := make([]uint16, n) + db := make([]uint16, dn) + e := LookupAccountSid(sys, sid, &b[0], &n, &db[0], &dn, &accType) + if e == nil { + return UTF16ToString(b), UTF16ToString(db), accType, nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", "", 0, e + } + if n <= uint32(len(b)) { + return "", "", 0, e + } + } +} + +// Various types of pre-specified sids that can be synthesized at runtime. +type WELL_KNOWN_SID_TYPE uint32 + +const ( + WinNullSid = 0 + WinWorldSid = 1 + WinLocalSid = 2 + WinCreatorOwnerSid = 3 + WinCreatorGroupSid = 4 + WinCreatorOwnerServerSid = 5 + WinCreatorGroupServerSid = 6 + WinNtAuthoritySid = 7 + WinDialupSid = 8 + WinNetworkSid = 9 + WinBatchSid = 10 + WinInteractiveSid = 11 + WinServiceSid = 12 + WinAnonymousSid = 13 + WinProxySid = 14 + WinEnterpriseControllersSid = 15 + WinSelfSid = 16 + WinAuthenticatedUserSid = 17 + WinRestrictedCodeSid = 18 + WinTerminalServerSid = 19 + WinRemoteLogonIdSid = 20 + WinLogonIdsSid = 21 + WinLocalSystemSid = 22 + WinLocalServiceSid = 23 + WinNetworkServiceSid = 24 + WinBuiltinDomainSid = 25 + WinBuiltinAdministratorsSid = 26 + WinBuiltinUsersSid = 27 + WinBuiltinGuestsSid = 28 + WinBuiltinPowerUsersSid = 29 + WinBuiltinAccountOperatorsSid = 30 + WinBuiltinSystemOperatorsSid = 31 + WinBuiltinPrintOperatorsSid = 32 + WinBuiltinBackupOperatorsSid = 33 + WinBuiltinReplicatorSid = 34 + WinBuiltinPreWindows2000CompatibleAccessSid = 35 + WinBuiltinRemoteDesktopUsersSid = 36 + WinBuiltinNetworkConfigurationOperatorsSid = 37 + WinAccountAdministratorSid = 38 + WinAccountGuestSid = 39 + WinAccountKrbtgtSid = 40 + WinAccountDomainAdminsSid = 41 + WinAccountDomainUsersSid = 42 + WinAccountDomainGuestsSid = 43 + WinAccountComputersSid = 44 + WinAccountControllersSid = 45 + WinAccountCertAdminsSid = 46 + WinAccountSchemaAdminsSid = 47 + WinAccountEnterpriseAdminsSid = 48 + WinAccountPolicyAdminsSid = 49 + WinAccountRasAndIasServersSid = 50 + WinNTLMAuthenticationSid = 51 + WinDigestAuthenticationSid = 52 + WinSChannelAuthenticationSid = 53 + WinThisOrganizationSid = 54 + WinOtherOrganizationSid = 55 + WinBuiltinIncomingForestTrustBuildersSid = 56 + WinBuiltinPerfMonitoringUsersSid = 57 + WinBuiltinPerfLoggingUsersSid = 58 + WinBuiltinAuthorizationAccessSid = 59 + WinBuiltinTerminalServerLicenseServersSid = 60 + WinBuiltinDCOMUsersSid = 61 + WinBuiltinIUsersSid = 62 + WinIUserSid = 63 + WinBuiltinCryptoOperatorsSid = 64 + WinUntrustedLabelSid = 65 + WinLowLabelSid = 66 + WinMediumLabelSid = 67 + WinHighLabelSid = 68 + WinSystemLabelSid = 69 + WinWriteRestrictedCodeSid = 70 + WinCreatorOwnerRightsSid = 71 + WinCacheablePrincipalsGroupSid = 72 + WinNonCacheablePrincipalsGroupSid = 73 + WinEnterpriseReadonlyControllersSid = 74 + WinAccountReadonlyControllersSid = 75 + WinBuiltinEventLogReadersGroup = 76 + WinNewEnterpriseReadonlyControllersSid = 77 + WinBuiltinCertSvcDComAccessGroup = 78 + WinMediumPlusLabelSid = 79 + WinLocalLogonSid = 80 + WinConsoleLogonSid = 81 + WinThisOrganizationCertificateSid = 82 + WinApplicationPackageAuthoritySid = 83 + WinBuiltinAnyPackageSid = 84 + WinCapabilityInternetClientSid = 85 + WinCapabilityInternetClientServerSid = 86 + WinCapabilityPrivateNetworkClientServerSid = 87 + WinCapabilityPicturesLibrarySid = 88 + WinCapabilityVideosLibrarySid = 89 + WinCapabilityMusicLibrarySid = 90 + WinCapabilityDocumentsLibrarySid = 91 + WinCapabilitySharedUserCertificatesSid = 92 + WinCapabilityEnterpriseAuthenticationSid = 93 + WinCapabilityRemovableStorageSid = 94 + WinBuiltinRDSRemoteAccessServersSid = 95 + WinBuiltinRDSEndpointServersSid = 96 + WinBuiltinRDSManagementServersSid = 97 + WinUserModeDriversSid = 98 + WinBuiltinHyperVAdminsSid = 99 + WinAccountCloneableControllersSid = 100 + WinBuiltinAccessControlAssistanceOperatorsSid = 101 + WinBuiltinRemoteManagementUsersSid = 102 + WinAuthenticationAuthorityAssertedSid = 103 + WinAuthenticationServiceAssertedSid = 104 + WinLocalAccountSid = 105 + WinLocalAccountAndAdministratorSid = 106 + WinAccountProtectedUsersSid = 107 + WinCapabilityAppointmentsSid = 108 + WinCapabilityContactsSid = 109 + WinAccountDefaultSystemManagedSid = 110 + WinBuiltinDefaultSystemManagedGroupSid = 111 + WinBuiltinStorageReplicaAdminsSid = 112 + WinAccountKeyAdminsSid = 113 + WinAccountEnterpriseKeyAdminsSid = 114 + WinAuthenticationKeyTrustSid = 115 + WinAuthenticationKeyPropertyMFASid = 116 + WinAuthenticationKeyPropertyAttestationSid = 117 + WinAuthenticationFreshKeyAuthSid = 118 + WinBuiltinDeviceOwnersSid = 119 +) + +// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the local machine. +func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { + return CreateWellKnownDomainSid(sidType, nil) +} + +// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Win*Sid, for the domain specified by the domainSid parameter. +func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { + n := uint32(50) + for { + b := make([]byte, n) + sid := (*SID)(unsafe.Pointer(&b[0])) + err := createWellKnownSid(sidType, domainSid, sid, &n) + if err == nil { + return sid, nil + } + if err != ERROR_INSUFFICIENT_BUFFER { + return nil, err + } + if n <= uint32(len(b)) { + return nil, err + } + } +} + +const ( + // do not reorder + TOKEN_ASSIGN_PRIMARY = 1 << iota + TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY + TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES + TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT + TOKEN_ADJUST_SESSIONID + + TOKEN_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | + TOKEN_ASSIGN_PRIMARY | + TOKEN_DUPLICATE | + TOKEN_IMPERSONATE | + TOKEN_QUERY | + TOKEN_QUERY_SOURCE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT | + TOKEN_ADJUST_SESSIONID + TOKEN_READ = STANDARD_RIGHTS_READ | TOKEN_QUERY + TOKEN_WRITE = STANDARD_RIGHTS_WRITE | + TOKEN_ADJUST_PRIVILEGES | + TOKEN_ADJUST_GROUPS | + TOKEN_ADJUST_DEFAULT + TOKEN_EXECUTE = STANDARD_RIGHTS_EXECUTE +) + +const ( + // do not reorder + TokenUser = 1 + iota + TokenGroups + TokenPrivileges + TokenOwner + TokenPrimaryGroup + TokenDefaultDacl + TokenSource + TokenType + TokenImpersonationLevel + TokenStatistics + TokenRestrictedSids + TokenSessionId + TokenGroupsAndPrivileges + TokenSessionReference + TokenSandBoxInert + TokenAuditPolicy + TokenOrigin + TokenElevationType + TokenLinkedToken + TokenElevation + TokenHasRestrictions + TokenAccessInformation + TokenVirtualizationAllowed + TokenVirtualizationEnabled + TokenIntegrityLevel + TokenUIAccess + TokenMandatoryPolicy + TokenLogonSid + MaxTokenInfoClass +) + +type SIDAndAttributes struct { + Sid *SID + Attributes uint32 +} + +type Tokenuser struct { + User SIDAndAttributes +} + +type Tokenprimarygroup struct { + PrimaryGroup *SID +} + +type Tokengroups struct { + GroupCount uint32 + Groups [1]SIDAndAttributes +} + +// Authorization Functions +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW +//sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW + +// An access token contains the security information for a logon session. +// The system creates an access token when a user logs on, and every +// process executed on behalf of the user has a copy of the token. +// The token identifies the user, the user's groups, and the user's +// privileges. The system uses the token to control access to securable +// objects and to control the ability of the user to perform various +// system-related operations on the local computer. +type Token Handle + +// OpenCurrentProcessToken opens the access token +// associated with current process. +func OpenCurrentProcessToken() (Token, error) { + p, e := GetCurrentProcess() + if e != nil { + return 0, e + } + var t Token + e = OpenProcessToken(p, TOKEN_QUERY, &t) + if e != nil { + return 0, e + } + return t, nil +} + +// Close releases access to access token. +func (t Token) Close() error { + return CloseHandle(Handle(t)) +} + +// getInfo retrieves a specified type of information about an access token. +func (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) { + n := uint32(initSize) + for { + b := make([]byte, n) + e := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n) + if e == nil { + return unsafe.Pointer(&b[0]), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return nil, e + } + if n <= uint32(len(b)) { + return nil, e + } + } +} + +// GetTokenUser retrieves access token t user account information. +func (t Token) GetTokenUser() (*Tokenuser, error) { + i, e := t.getInfo(TokenUser, 50) + if e != nil { + return nil, e + } + return (*Tokenuser)(i), nil +} + +// GetTokenGroups retrieves group accounts associated with access token t. +func (t Token) GetTokenGroups() (*Tokengroups, error) { + i, e := t.getInfo(TokenGroups, 50) + if e != nil { + return nil, e + } + return (*Tokengroups)(i), nil +} + +// GetTokenPrimaryGroup retrieves access token t primary group information. +// A pointer to a SID structure representing a group that will become +// the primary group of any objects created by a process using this access token. +func (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) { + i, e := t.getInfo(TokenPrimaryGroup, 50) + if e != nil { + return nil, e + } + return (*Tokenprimarygroup)(i), nil +} + +// GetUserProfileDirectory retrieves path to the +// root directory of the access token t user's profile. +func (t Token) GetUserProfileDirectory() (string, error) { + n := uint32(100) + for { + b := make([]uint16, n) + e := GetUserProfileDirectory(t, &b[0], &n) + if e == nil { + return UTF16ToString(b), nil + } + if e != ERROR_INSUFFICIENT_BUFFER { + return "", e + } + if n <= uint32(len(b)) { + return "", e + } + } +} + +// GetSystemDirectory retrieves path to current location of the system +// directory, which is typically, though not always, C:\Windows\System32. +func GetSystemDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// IsMember reports whether the access token t is a member of the provided SID. +func (t Token) IsMember(sid *SID) (bool, error) { + var b int32 + if e := checkTokenMembership(t, sid, &b); e != nil { + return false, e + } + return b != 0, nil +} diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go new file mode 100644 index 0000000..994b129 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/service.go @@ -0,0 +1,181 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +const ( + SC_MANAGER_CONNECT = 1 + SC_MANAGER_CREATE_SERVICE = 2 + SC_MANAGER_ENUMERATE_SERVICE = 4 + SC_MANAGER_LOCK = 8 + SC_MANAGER_QUERY_LOCK_STATUS = 16 + SC_MANAGER_MODIFY_BOOT_CONFIG = 32 + SC_MANAGER_ALL_ACCESS = 0xf003f +) + +//sys OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW + +const ( + SERVICE_KERNEL_DRIVER = 1 + SERVICE_FILE_SYSTEM_DRIVER = 2 + SERVICE_ADAPTER = 4 + SERVICE_RECOGNIZER_DRIVER = 8 + SERVICE_WIN32_OWN_PROCESS = 16 + SERVICE_WIN32_SHARE_PROCESS = 32 + SERVICE_WIN32 = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS + SERVICE_INTERACTIVE_PROCESS = 256 + SERVICE_DRIVER = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER + SERVICE_TYPE_ALL = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS + + SERVICE_BOOT_START = 0 + SERVICE_SYSTEM_START = 1 + SERVICE_AUTO_START = 2 + SERVICE_DEMAND_START = 3 + SERVICE_DISABLED = 4 + + SERVICE_ERROR_IGNORE = 0 + SERVICE_ERROR_NORMAL = 1 + SERVICE_ERROR_SEVERE = 2 + SERVICE_ERROR_CRITICAL = 3 + + SC_STATUS_PROCESS_INFO = 0 + + SC_ACTION_NONE = 0 + SC_ACTION_RESTART = 1 + SC_ACTION_REBOOT = 2 + SC_ACTION_RUN_COMMAND = 3 + + SERVICE_STOPPED = 1 + SERVICE_START_PENDING = 2 + SERVICE_STOP_PENDING = 3 + SERVICE_RUNNING = 4 + SERVICE_CONTINUE_PENDING = 5 + SERVICE_PAUSE_PENDING = 6 + SERVICE_PAUSED = 7 + SERVICE_NO_CHANGE = 0xffffffff + + SERVICE_ACCEPT_STOP = 1 + SERVICE_ACCEPT_PAUSE_CONTINUE = 2 + SERVICE_ACCEPT_SHUTDOWN = 4 + SERVICE_ACCEPT_PARAMCHANGE = 8 + SERVICE_ACCEPT_NETBINDCHANGE = 16 + SERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32 + SERVICE_ACCEPT_POWEREVENT = 64 + SERVICE_ACCEPT_SESSIONCHANGE = 128 + + SERVICE_CONTROL_STOP = 1 + SERVICE_CONTROL_PAUSE = 2 + SERVICE_CONTROL_CONTINUE = 3 + SERVICE_CONTROL_INTERROGATE = 4 + SERVICE_CONTROL_SHUTDOWN = 5 + SERVICE_CONTROL_PARAMCHANGE = 6 + SERVICE_CONTROL_NETBINDADD = 7 + SERVICE_CONTROL_NETBINDREMOVE = 8 + SERVICE_CONTROL_NETBINDENABLE = 9 + SERVICE_CONTROL_NETBINDDISABLE = 10 + SERVICE_CONTROL_DEVICEEVENT = 11 + SERVICE_CONTROL_HARDWAREPROFILECHANGE = 12 + SERVICE_CONTROL_POWEREVENT = 13 + SERVICE_CONTROL_SESSIONCHANGE = 14 + + SERVICE_ACTIVE = 1 + SERVICE_INACTIVE = 2 + SERVICE_STATE_ALL = 3 + + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + + SC_ENUM_PROCESS_INFO = 0 +) + +type SERVICE_STATUS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 +} + +type SERVICE_TABLE_ENTRY struct { + ServiceName *uint16 + ServiceProc uintptr +} + +type QUERY_SERVICE_CONFIG struct { + ServiceType uint32 + StartType uint32 + ErrorControl uint32 + BinaryPathName *uint16 + LoadOrderGroup *uint16 + TagId uint32 + Dependencies *uint16 + ServiceStartName *uint16 + DisplayName *uint16 +} + +type SERVICE_DESCRIPTION struct { + Description *uint16 +} + +type SERVICE_STATUS_PROCESS struct { + ServiceType uint32 + CurrentState uint32 + ControlsAccepted uint32 + Win32ExitCode uint32 + ServiceSpecificExitCode uint32 + CheckPoint uint32 + WaitHint uint32 + ProcessId uint32 + ServiceFlags uint32 +} + +type ENUM_SERVICE_STATUS_PROCESS struct { + ServiceName *uint16 + DisplayName *uint16 + ServiceStatusProcess SERVICE_STATUS_PROCESS +} + +type SERVICE_FAILURE_ACTIONS struct { + ResetPeriod uint32 + RebootMsg *uint16 + Command *uint16 + ActionsCount uint32 + Actions *SC_ACTION +} + +type SC_ACTION struct { + Type uint32 + Delay uint32 +} + +//sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle +//sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW +//sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW +//sys DeleteService(service Handle) (err error) = advapi32.DeleteService +//sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW +//sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService +//sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW +//sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus +//sys ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW +//sys QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW +//sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W +//sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W +//sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx diff --git a/vendor/golang.org/x/sys/windows/str.go b/vendor/golang.org/x/sys/windows/str.go new file mode 100644 index 0000000..917cc2a --- /dev/null +++ b/vendor/golang.org/x/sys/windows/str.go @@ -0,0 +1,22 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package windows + +func itoa(val int) string { // do it here rather than with fmt to avoid dependency + if val < 0 { + return "-" + itoa(-val) + } + var buf [32]byte // big enough for int64 + i := len(buf) - 1 + for val >= 10 { + buf[i] = byte(val%10 + '0') + i-- + val /= 10 + } + buf[i] = byte(val + '0') + return string(buf[i:]) +} diff --git a/vendor/golang.org/x/sys/windows/syscall.go b/vendor/golang.org/x/sys/windows/syscall.go new file mode 100644 index 0000000..af828a9 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall.go @@ -0,0 +1,74 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +// Package windows contains an interface to the low-level operating system +// primitives. OS details vary depending on the underlying system, and +// by default, godoc will display the OS-specific documentation for the current +// system. If you want godoc to display syscall documentation for another +// system, set $GOOS and $GOARCH to the desired system. For example, if +// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS +// to freebsd and $GOARCH to arm. +// +// The primary use of this package is inside other packages that provide a more +// portable interface to the system, such as "os", "time" and "net". Use +// those packages rather than this one if you can. +// +// For details of the functions and data types in this package consult +// the manuals for the appropriate operating system. +// +// These calls return err == nil to indicate success; otherwise +// err represents an operating system error describing the failure and +// holds a value of type syscall.Errno. +package windows // import "golang.org/x/sys/windows" + +import ( + "syscall" +) + +// ByteSliceFromString returns a NUL-terminated slice of bytes +// containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func ByteSliceFromString(s string) ([]byte, error) { + for i := 0; i < len(s); i++ { + if s[i] == 0 { + return nil, syscall.EINVAL + } + } + a := make([]byte, len(s)+1) + copy(a, s) + return a, nil +} + +// BytePtrFromString returns a pointer to a NUL-terminated array of +// bytes containing the text of s. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func BytePtrFromString(s string) (*byte, error) { + a, err := ByteSliceFromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +// Single-word zero for use when we need a valid pointer to 0 bytes. +// See mksyscall.pl. +var _zero uintptr + +func (ts *Timespec) Unix() (sec int64, nsec int64) { + return int64(ts.Sec), int64(ts.Nsec) +} + +func (tv *Timeval) Unix() (sec int64, nsec int64) { + return int64(tv.Sec), int64(tv.Usec) * 1000 +} + +func (ts *Timespec) Nano() int64 { + return int64(ts.Sec)*1e9 + int64(ts.Nsec) +} + +func (tv *Timeval) Nano() int64 { + return int64(tv.Sec)*1e9 + int64(tv.Usec)*1000 +} diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go new file mode 100644 index 0000000..4c9bc55 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -0,0 +1,1220 @@ +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Windows system calls. + +package windows + +import ( + errorspkg "errors" + "sync" + "syscall" + "unicode/utf16" + "unsafe" +) + +type Handle uintptr + +const ( + InvalidHandle = ^Handle(0) + + // Flags for DefineDosDevice. + DDD_EXACT_MATCH_ON_REMOVE = 0x00000004 + DDD_NO_BROADCAST_SYSTEM = 0x00000008 + DDD_RAW_TARGET_PATH = 0x00000001 + DDD_REMOVE_DEFINITION = 0x00000002 + + // Return values for GetDriveType. + DRIVE_UNKNOWN = 0 + DRIVE_NO_ROOT_DIR = 1 + DRIVE_REMOVABLE = 2 + DRIVE_FIXED = 3 + DRIVE_REMOTE = 4 + DRIVE_CDROM = 5 + DRIVE_RAMDISK = 6 + + // File system flags from GetVolumeInformation and GetVolumeInformationByHandle. + FILE_CASE_SENSITIVE_SEARCH = 0x00000001 + FILE_CASE_PRESERVED_NAMES = 0x00000002 + FILE_FILE_COMPRESSION = 0x00000010 + FILE_DAX_VOLUME = 0x20000000 + FILE_NAMED_STREAMS = 0x00040000 + FILE_PERSISTENT_ACLS = 0x00000008 + FILE_READ_ONLY_VOLUME = 0x00080000 + FILE_SEQUENTIAL_WRITE_ONCE = 0x00100000 + FILE_SUPPORTS_ENCRYPTION = 0x00020000 + FILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000 + FILE_SUPPORTS_HARD_LINKS = 0x00400000 + FILE_SUPPORTS_OBJECT_IDS = 0x00010000 + FILE_SUPPORTS_OPEN_BY_FILE_ID = 0x01000000 + FILE_SUPPORTS_REPARSE_POINTS = 0x00000080 + FILE_SUPPORTS_SPARSE_FILES = 0x00000040 + FILE_SUPPORTS_TRANSACTIONS = 0x00200000 + FILE_SUPPORTS_USN_JOURNAL = 0x02000000 + FILE_UNICODE_ON_DISK = 0x00000004 + FILE_VOLUME_IS_COMPRESSED = 0x00008000 + FILE_VOLUME_QUOTAS = 0x00000020 +) + +// StringToUTF16 is deprecated. Use UTF16FromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16(s string) []uint16 { + a, err := UTF16FromString(s) + if err != nil { + panic("windows: string with NUL passed to StringToUTF16") + } + return a +} + +// UTF16FromString returns the UTF-16 encoding of the UTF-8 string +// s, with a terminating NUL added. If s contains a NUL byte at any +// location, it returns (nil, syscall.EINVAL). +func UTF16FromString(s string) ([]uint16, error) { + for i := 0; i < len(s); i++ { + if s[i] == 0 { + return nil, syscall.EINVAL + } + } + return utf16.Encode([]rune(s + "\x00")), nil +} + +// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s, +// with a terminating NUL removed. +func UTF16ToString(s []uint16) string { + for i, v := range s { + if v == 0 { + s = s[0:i] + break + } + } + return string(utf16.Decode(s)) +} + +// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead. +// If s contains a NUL byte this function panics instead of +// returning an error. +func StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] } + +// UTF16PtrFromString returns pointer to the UTF-16 encoding of +// the UTF-8 string s, with a terminating NUL added. If s +// contains a NUL byte at any location, it returns (nil, syscall.EINVAL). +func UTF16PtrFromString(s string) (*uint16, error) { + a, err := UTF16FromString(s) + if err != nil { + return nil, err + } + return &a[0], nil +} + +func Getpagesize() int { return 4096 } + +// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallback(fn interface{}) uintptr { + return syscall.NewCallback(fn) +} + +// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention. +// This is useful when interoperating with Windows code requiring callbacks. +// The argument is expected to be a function with with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr. +func NewCallbackCDecl(fn interface{}) uintptr { + return syscall.NewCallbackCDecl(fn) +} + +// windows api calls + +//sys GetLastError() (lasterr error) +//sys LoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW +//sys LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW +//sys FreeLibrary(handle Handle) (err error) +//sys GetProcAddress(module Handle, procname string) (proc uintptr, err error) +//sys GetVersion() (ver uint32, err error) +//sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW +//sys ExitProcess(exitcode uint32) +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) +//sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) +//sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) +//sys SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff] +//sys CloseHandle(handle Handle) (err error) +//sys GetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle] +//sys SetStdHandle(stdhandle uint32, handle Handle) (err error) +//sys findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW +//sys findNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW +//sys FindClose(handle Handle) (err error) +//sys GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) +//sys GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) +//sys GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW +//sys SetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW +//sys CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW +//sys RemoveDirectory(path *uint16) (err error) = RemoveDirectoryW +//sys DeleteFile(path *uint16) (err error) = DeleteFileW +//sys MoveFile(from *uint16, to *uint16) (err error) = MoveFileW +//sys MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW +//sys GetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW +//sys GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW +//sys SetEndOfFile(handle Handle) (err error) +//sys GetSystemTimeAsFileTime(time *Filetime) +//sys GetSystemTimePreciseAsFileTime(time *Filetime) +//sys GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff] +//sys CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) +//sys GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) +//sys PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) +//sys CancelIo(s Handle) (err error) +//sys CancelIoEx(s Handle, o *Overlapped) (err error) +//sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW +//sys OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) +//sys TerminateProcess(handle Handle, exitcode uint32) (err error) +//sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) +//sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW +//sys GetCurrentProcess() (pseudoHandle Handle, err error) +//sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) +//sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) +//sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] +//sys waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects +//sys GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW +//sys CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) +//sys GetFileType(filehandle Handle) (n uint32, err error) +//sys CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW +//sys CryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext +//sys CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom +//sys GetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW +//sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW +//sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW +//sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) +//sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW +//sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW +//sys GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW +//sys GetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW +//sys CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW +//sys LocalFree(hmem Handle) (handle Handle, err error) [failretval!=0] +//sys SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) +//sys FlushFileBuffers(handle Handle) (err error) +//sys GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW +//sys GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW +//sys GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW +//sys CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) = kernel32.CreateFileMappingW +//sys MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) +//sys UnmapViewOfFile(addr uintptr) (err error) +//sys FlushViewOfFile(addr uintptr, length uintptr) (err error) +//sys VirtualLock(addr uintptr, length uintptr) (err error) +//sys VirtualUnlock(addr uintptr, length uintptr) (err error) +//sys VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc +//sys VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree +//sys VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect +//sys TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile +//sys ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW +//sys CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW +//sys CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) [failretval==InvalidHandle] = crypt32.CertOpenStore +//sys CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore +//sys CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore +//sys CertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore +//sys CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain +//sys CertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain +//sys CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext +//sys CertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext +//sys CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy +//sys RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW +//sys RegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey +//sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW +//sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW +//sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW +//sys getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode +//sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode +//sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo +//sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW +//sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW +//sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot +//sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW +//sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) +// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. +//sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW +//sys CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW +//sys GetCurrentThreadId() (id uint32) +//sys CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) = kernel32.CreateEventW +//sys CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateEventExW +//sys OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW +//sys SetEvent(event Handle) (err error) = kernel32.SetEvent +//sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent +//sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent + +// Volume Management Functions +//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW +//sys DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW +//sys FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW +//sys FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW +//sys FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW +//sys FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW +//sys FindVolumeClose(findVolume Handle) (err error) +//sys FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) +//sys GetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW +//sys GetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0] +//sys GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW +//sys GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW +//sys GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW +//sys GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW +//sys GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW +//sys GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW +//sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW +//sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW +//sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW + +// syscall interface implementation for other packages + +// GetProcAddressByOrdinal retrieves the address of the exported +// function from module by ordinal. +func GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0) + proc = uintptr(r0) + if proc == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Exit(code int) { ExitProcess(uint32(code)) } + +func makeInheritSa() *SecurityAttributes { + var sa SecurityAttributes + sa.Length = uint32(unsafe.Sizeof(sa)) + sa.InheritHandle = 1 + return &sa +} + +func Open(path string, mode int, perm uint32) (fd Handle, err error) { + if len(path) == 0 { + return InvalidHandle, ERROR_FILE_NOT_FOUND + } + pathp, err := UTF16PtrFromString(path) + if err != nil { + return InvalidHandle, err + } + var access uint32 + switch mode & (O_RDONLY | O_WRONLY | O_RDWR) { + case O_RDONLY: + access = GENERIC_READ + case O_WRONLY: + access = GENERIC_WRITE + case O_RDWR: + access = GENERIC_READ | GENERIC_WRITE + } + if mode&O_CREAT != 0 { + access |= GENERIC_WRITE + } + if mode&O_APPEND != 0 { + access &^= GENERIC_WRITE + access |= FILE_APPEND_DATA + } + sharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE) + var sa *SecurityAttributes + if mode&O_CLOEXEC == 0 { + sa = makeInheritSa() + } + var createmode uint32 + switch { + case mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL): + createmode = CREATE_NEW + case mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC): + createmode = CREATE_ALWAYS + case mode&O_CREAT == O_CREAT: + createmode = OPEN_ALWAYS + case mode&O_TRUNC == O_TRUNC: + createmode = TRUNCATE_EXISTING + default: + createmode = OPEN_EXISTING + } + h, e := CreateFile(pathp, access, sharemode, sa, createmode, FILE_ATTRIBUTE_NORMAL, 0) + return h, e +} + +func Read(fd Handle, p []byte) (n int, err error) { + var done uint32 + e := ReadFile(fd, p, &done, nil) + if e != nil { + if e == ERROR_BROKEN_PIPE { + // NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin + return 0, nil + } + return 0, e + } + if raceenabled { + if done > 0 { + raceWriteRange(unsafe.Pointer(&p[0]), int(done)) + } + raceAcquire(unsafe.Pointer(&ioSync)) + } + return int(done), nil +} + +func Write(fd Handle, p []byte) (n int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + var done uint32 + e := WriteFile(fd, p, &done, nil) + if e != nil { + return 0, e + } + if raceenabled && done > 0 { + raceReadRange(unsafe.Pointer(&p[0]), int(done)) + } + return int(done), nil +} + +var ioSync int64 + +func Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) { + var w uint32 + switch whence { + case 0: + w = FILE_BEGIN + case 1: + w = FILE_CURRENT + case 2: + w = FILE_END + } + hi := int32(offset >> 32) + lo := int32(offset) + // use GetFileType to check pipe, pipe can't do seek + ft, _ := GetFileType(fd) + if ft == FILE_TYPE_PIPE { + return 0, syscall.EPIPE + } + rlo, e := SetFilePointer(fd, lo, &hi, w) + if e != nil { + return 0, e + } + return int64(hi)<<32 + int64(rlo), nil +} + +func Close(fd Handle) (err error) { + return CloseHandle(fd) +} + +var ( + Stdin = getStdHandle(STD_INPUT_HANDLE) + Stdout = getStdHandle(STD_OUTPUT_HANDLE) + Stderr = getStdHandle(STD_ERROR_HANDLE) +) + +func getStdHandle(stdhandle uint32) (fd Handle) { + r, _ := GetStdHandle(stdhandle) + CloseOnExec(r) + return r +} + +const ImplementsGetwd = true + +func Getwd() (wd string, err error) { + b := make([]uint16, 300) + n, e := GetCurrentDirectory(uint32(len(b)), &b[0]) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Chdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return SetCurrentDirectory(pathp) +} + +func Mkdir(path string, mode uint32) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return CreateDirectory(pathp, nil) +} + +func Rmdir(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return RemoveDirectory(pathp) +} + +func Unlink(path string) (err error) { + pathp, err := UTF16PtrFromString(path) + if err != nil { + return err + } + return DeleteFile(pathp) +} + +func Rename(oldpath, newpath string) (err error) { + from, err := UTF16PtrFromString(oldpath) + if err != nil { + return err + } + to, err := UTF16PtrFromString(newpath) + if err != nil { + return err + } + return MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING) +} + +func ComputerName() (name string, err error) { + var n uint32 = MAX_COMPUTERNAME_LENGTH + 1 + b := make([]uint16, n) + e := GetComputerName(&b[0], &n) + if e != nil { + return "", e + } + return string(utf16.Decode(b[0:n])), nil +} + +func Ftruncate(fd Handle, length int64) (err error) { + curoffset, e := Seek(fd, 0, 1) + if e != nil { + return e + } + defer Seek(fd, curoffset, 0) + _, e = Seek(fd, length, 0) + if e != nil { + return e + } + e = SetEndOfFile(fd) + if e != nil { + return e + } + return nil +} + +func Gettimeofday(tv *Timeval) (err error) { + var ft Filetime + GetSystemTimeAsFileTime(&ft) + *tv = NsecToTimeval(ft.Nanoseconds()) + return nil +} + +func Pipe(p []Handle) (err error) { + if len(p) != 2 { + return syscall.EINVAL + } + var r, w Handle + e := CreatePipe(&r, &w, makeInheritSa(), 0) + if e != nil { + return e + } + p[0] = r + p[1] = w + return nil +} + +func Utimes(path string, tv []Timeval) (err error) { + if len(tv) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer Close(h) + a := NsecToFiletime(tv[0].Nanoseconds()) + w := NsecToFiletime(tv[1].Nanoseconds()) + return SetFileTime(h, nil, &a, &w) +} + +func UtimesNano(path string, ts []Timespec) (err error) { + if len(ts) != 2 { + return syscall.EINVAL + } + pathp, e := UTF16PtrFromString(path) + if e != nil { + return e + } + h, e := CreateFile(pathp, + FILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil, + OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0) + if e != nil { + return e + } + defer Close(h) + a := NsecToFiletime(TimespecToNsec(ts[0])) + w := NsecToFiletime(TimespecToNsec(ts[1])) + return SetFileTime(h, nil, &a, &w) +} + +func Fsync(fd Handle) (err error) { + return FlushFileBuffers(fd) +} + +func Chmod(path string, mode uint32) (err error) { + if mode == 0 { + return syscall.EINVAL + } + p, e := UTF16PtrFromString(path) + if e != nil { + return e + } + attrs, e := GetFileAttributes(p) + if e != nil { + return e + } + if mode&S_IWRITE != 0 { + attrs &^= FILE_ATTRIBUTE_READONLY + } else { + attrs |= FILE_ATTRIBUTE_READONLY + } + return SetFileAttributes(p, attrs) +} + +func LoadGetSystemTimePreciseAsFileTime() error { + return procGetSystemTimePreciseAsFileTime.Find() +} + +func LoadCancelIoEx() error { + return procCancelIoEx.Find() +} + +func LoadSetFileCompletionNotificationModes() error { + return procSetFileCompletionNotificationModes.Find() +} + +func WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + // Every other win32 array API takes arguments as "pointer, count", except for this function. So we + // can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore + // trivially stub this ourselves. + + var handlePtr *Handle + if len(handles) > 0 { + handlePtr = &handles[0] + } + return waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds) +} + +// net api calls + +const socket_error = uintptr(^uint32(0)) + +//sys WSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup +//sys WSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup +//sys WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl +//sys socket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket +//sys Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt +//sys Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt +//sys bind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind +//sys connect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect +//sys getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname +//sys getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername +//sys listen(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen +//sys shutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown +//sys Closesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket +//sys AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx +//sys GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs +//sys WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv +//sys WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend +//sys WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom +//sys WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo +//sys GetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname +//sys GetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname +//sys Ntohs(netshort uint16) (u uint16) = ws2_32.ntohs +//sys GetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname +//sys DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W +//sys DnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree +//sys DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W +//sys GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW +//sys FreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW +//sys GetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry +//sys GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo +//sys SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes +//sys WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW +//sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses +//sys GetACP() (acp uint32) = kernel32.GetACP +//sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar + +// For testing: clients can set this flag to force +// creation of IPv6 sockets to return EAFNOSUPPORT. +var SocketDisableIPv6 bool + +type RawSockaddrInet4 struct { + Family uint16 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]uint8 +} + +type RawSockaddrInet6 struct { + Family uint16 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [100]int8 +} + +type Sockaddr interface { + sockaddr() (ptr unsafe.Pointer, len int32, err error) // lowercase; only we can define Sockaddrs +} + +type SockaddrInet4 struct { + Port int + Addr [4]byte + raw RawSockaddrInet4 +} + +func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type SockaddrInet6 struct { + Port int + ZoneId uint32 + Addr [16]byte + raw RawSockaddrInet6 +} + +func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) { + if sa.Port < 0 || sa.Port > 0xFFFF { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_INET6 + p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) + p[0] = byte(sa.Port >> 8) + p[1] = byte(sa.Port) + sa.raw.Scope_id = sa.ZoneId + for i := 0; i < len(sa.Addr); i++ { + sa.raw.Addr[i] = sa.Addr[i] + } + return unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil +} + +type RawSockaddrUnix struct { + Family uint16 + Path [UNIX_PATH_MAX]int8 +} + +type SockaddrUnix struct { + Name string + raw RawSockaddrUnix +} + +func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) { + name := sa.Name + n := len(name) + if n > len(sa.raw.Path) { + return nil, 0, syscall.EINVAL + } + if n == len(sa.raw.Path) && name[0] != '@' { + return nil, 0, syscall.EINVAL + } + sa.raw.Family = AF_UNIX + for i := 0; i < n; i++ { + sa.raw.Path[i] = int8(name[i]) + } + // length is family (uint16), name, NUL. + sl := int32(2) + if n > 0 { + sl += int32(n) + 1 + } + if sa.raw.Path[0] == '@' { + sa.raw.Path[0] = 0 + // Don't count trailing NUL for abstract address. + sl-- + } + + return unsafe.Pointer(&sa.raw), sl, nil +} + +func (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) { + switch rsa.Addr.Family { + case AF_UNIX: + pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa)) + sa := new(SockaddrUnix) + if pp.Path[0] == 0 { + // "Abstract" Unix domain socket. + // Rewrite leading NUL as @ for textual display. + // (This is the standard convention.) + // Not friendly to overwrite in place, + // but the callers below don't care. + pp.Path[0] = '@' + } + + // Assume path ends at NUL. + // This is not technically the Linux semantics for + // abstract Unix domain sockets--they are supposed + // to be uninterpreted fixed-size binary blobs--but + // everyone uses this convention. + n := 0 + for n < len(pp.Path) && pp.Path[n] != 0 { + n++ + } + bytes := (*[10000]byte)(unsafe.Pointer(&pp.Path[0]))[0:n] + sa.Name = string(bytes) + return sa, nil + + case AF_INET: + pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet4) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + + case AF_INET6: + pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa)) + sa := new(SockaddrInet6) + p := (*[2]byte)(unsafe.Pointer(&pp.Port)) + sa.Port = int(p[0])<<8 + int(p[1]) + sa.ZoneId = pp.Scope_id + for i := 0; i < len(sa.Addr); i++ { + sa.Addr[i] = pp.Addr[i] + } + return sa, nil + } + return nil, syscall.EAFNOSUPPORT +} + +func Socket(domain, typ, proto int) (fd Handle, err error) { + if domain == AF_INET6 && SocketDisableIPv6 { + return InvalidHandle, syscall.EAFNOSUPPORT + } + return socket(int32(domain), int32(typ), int32(proto)) +} + +func SetsockoptInt(fd Handle, level, opt int, value int) (err error) { + v := int32(value) + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v))) +} + +func Bind(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return bind(fd, ptr, n) +} + +func Connect(fd Handle, sa Sockaddr) (err error) { + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connect(fd, ptr, n) +} + +func Getsockname(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getsockname(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Getpeername(fd Handle) (sa Sockaddr, err error) { + var rsa RawSockaddrAny + l := int32(unsafe.Sizeof(rsa)) + if err = getpeername(fd, &rsa, &l); err != nil { + return + } + return rsa.Sockaddr() +} + +func Listen(s Handle, n int) (err error) { + return listen(s, int32(n)) +} + +func Shutdown(fd Handle, how int) (err error) { + return shutdown(fd, int32(how)) +} + +func WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) { + rsa, l, err := to.sockaddr() + if err != nil { + return err + } + return WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine) +} + +func LoadGetAddrInfo() error { + return procGetAddrInfoW.Find() +} + +var connectExFunc struct { + once sync.Once + addr uintptr + err error +} + +func LoadConnectEx() error { + connectExFunc.once.Do(func() { + var s Handle + s, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) + if connectExFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + connectExFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_CONNECTEX)), + uint32(unsafe.Sizeof(WSAID_CONNECTEX)), + (*byte)(unsafe.Pointer(&connectExFunc.addr)), + uint32(unsafe.Sizeof(connectExFunc.addr)), + &n, nil, 0) + }) + return connectExFunc.err +} + +func connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = error(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error { + err := LoadConnectEx() + if err != nil { + return errorspkg.New("failed to find ConnectEx: " + err.Error()) + } + ptr, n, err := sa.sockaddr() + if err != nil { + return err + } + return connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped) +} + +var sendRecvMsgFunc struct { + once sync.Once + sendAddr uintptr + recvAddr uintptr + err error +} + +func loadWSASendRecvMsg() error { + sendRecvMsgFunc.once.Do(func() { + var s Handle + s, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP) + if sendRecvMsgFunc.err != nil { + return + } + defer CloseHandle(s) + var n uint32 + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)), + uint32(unsafe.Sizeof(WSAID_WSARECVMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)), + &n, nil, 0) + if sendRecvMsgFunc.err != nil { + return + } + sendRecvMsgFunc.err = WSAIoctl(s, + SIO_GET_EXTENSION_FUNCTION_POINTER, + (*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)), + uint32(unsafe.Sizeof(WSAID_WSASENDMSG)), + (*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)), + uint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)), + &n, nil, 0) + }) + return sendRecvMsgFunc.err +} + +func WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + +func WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error { + err := loadWSASendRecvMsg() + if err != nil { + return err + } + r1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return err +} + +// Invented structures to support what package os expects. +type Rusage struct { + CreationTime Filetime + ExitTime Filetime + KernelTime Filetime + UserTime Filetime +} + +type WaitStatus struct { + ExitCode uint32 +} + +func (w WaitStatus) Exited() bool { return true } + +func (w WaitStatus) ExitStatus() int { return int(w.ExitCode) } + +func (w WaitStatus) Signal() Signal { return -1 } + +func (w WaitStatus) CoreDump() bool { return false } + +func (w WaitStatus) Stopped() bool { return false } + +func (w WaitStatus) Continued() bool { return false } + +func (w WaitStatus) StopSignal() Signal { return -1 } + +func (w WaitStatus) Signaled() bool { return false } + +func (w WaitStatus) TrapCause() int { return -1 } + +// Timespec is an invented structure on Windows, but here for +// consistency with the corresponding package for other operating systems. +type Timespec struct { + Sec int64 + Nsec int64 +} + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = nsec / 1e9 + ts.Nsec = nsec % 1e9 + return +} + +// TODO(brainman): fix all needed for net + +func Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS } +func Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) { + return 0, nil, syscall.EWINDOWS +} +func Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) { return syscall.EWINDOWS } +func SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS } + +// The Linger struct is wrong but we only noticed after Go 1. +// sysLinger is the real system call structure. + +// BUG(brainman): The definition of Linger is not appropriate for direct use +// with Setsockopt and Getsockopt. +// Use SetsockoptLinger instead. + +type Linger struct { + Onoff int32 + Linger int32 +} + +type sysLinger struct { + Onoff uint16 + Linger uint16 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS } + +func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { + sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys))) +} + +func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) +} +func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { + return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) +} +func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { + return syscall.EWINDOWS +} + +func Getpid() (pid int) { return int(getCurrentProcessId()) } + +func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { + // NOTE(rsc): The Win32finddata struct is wrong for the system call: + // the two paths are each one uint16 short. Use the correct struct, + // a win32finddata1, and then copy the results out. + // There is no loss of expressivity here, because the final + // uint16, if it is used, is supposed to be a NUL, and Go doesn't need that. + // For Go 1.1, we might avoid the allocation of win32finddata1 here + // by adding a final Bug [2]uint16 field to the struct and then + // adjusting the fields in the result directly. + var data1 win32finddata1 + handle, err = findFirstFile1(name, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func FindNextFile(handle Handle, data *Win32finddata) (err error) { + var data1 win32finddata1 + err = findNextFile1(handle, &data1) + if err == nil { + copyFindData(data, &data1) + } + return +} + +func getProcessEntry(pid int) (*ProcessEntry32, error) { + snapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) + if err != nil { + return nil, err + } + defer CloseHandle(snapshot) + var procEntry ProcessEntry32 + procEntry.Size = uint32(unsafe.Sizeof(procEntry)) + if err = Process32First(snapshot, &procEntry); err != nil { + return nil, err + } + for { + if procEntry.ProcessID == uint32(pid) { + return &procEntry, nil + } + err = Process32Next(snapshot, &procEntry) + if err != nil { + return nil, err + } + } +} + +func Getppid() (ppid int) { + pe, err := getProcessEntry(Getpid()) + if err != nil { + return -1 + } + return int(pe.ParentProcessID) +} + +// TODO(brainman): fix all needed for os +func Fchdir(fd Handle) (err error) { return syscall.EWINDOWS } +func Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS } +func Symlink(path, link string) (err error) { return syscall.EWINDOWS } + +func Fchmod(fd Handle, mode uint32) (err error) { return syscall.EWINDOWS } +func Chown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS } +func Fchown(fd Handle, uid int, gid int) (err error) { return syscall.EWINDOWS } + +func Getuid() (uid int) { return -1 } +func Geteuid() (euid int) { return -1 } +func Getgid() (gid int) { return -1 } +func Getegid() (egid int) { return -1 } +func Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS } + +type Signal int + +func (s Signal) Signal() {} + +func (s Signal) String() string { + if 0 <= s && int(s) < len(signals) { + str := signals[s] + if str != "" { + return str + } + } + return "signal " + itoa(int(s)) +} + +func LoadCreateSymbolicLink() error { + return procCreateSymbolicLinkW.Find() +} + +// Readlink returns the destination of the named symbolic link. +func Readlink(path string, buf []byte) (n int, err error) { + fd, err := CreateFile(StringToUTF16Ptr(path), GENERIC_READ, 0, nil, OPEN_EXISTING, + FILE_FLAG_OPEN_REPARSE_POINT|FILE_FLAG_BACKUP_SEMANTICS, 0) + if err != nil { + return -1, err + } + defer CloseHandle(fd) + + rdbbuf := make([]byte, MAXIMUM_REPARSE_DATA_BUFFER_SIZE) + var bytesReturned uint32 + err = DeviceIoControl(fd, FSCTL_GET_REPARSE_POINT, nil, 0, &rdbbuf[0], uint32(len(rdbbuf)), &bytesReturned, nil) + if err != nil { + return -1, err + } + + rdb := (*reparseDataBuffer)(unsafe.Pointer(&rdbbuf[0])) + var s string + switch rdb.ReparseTag { + case IO_REPARSE_TAG_SYMLINK: + data := (*symbolicLinkReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + case IO_REPARSE_TAG_MOUNT_POINT: + data := (*mountPointReparseBuffer)(unsafe.Pointer(&rdb.reparseBuffer)) + p := (*[0xffff]uint16)(unsafe.Pointer(&data.PathBuffer[0])) + s = UTF16ToString(p[data.PrintNameOffset/2 : (data.PrintNameLength-data.PrintNameOffset)/2]) + default: + // the path is not a symlink or junction but another type of reparse + // point + return -1, syscall.ENOENT + } + n = copy(buf, []byte(s)) + + return n, nil +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000..ee27936 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,1441 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import "syscall" + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +const ( + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_APPEND_DATA = 0x00000004 + FILE_WRITE_ATTRIBUTES = 0x00000100 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_DEVICE = 0x00000040 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_TEMPORARY = 0x00000100 + FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + FILE_ATTRIBUTE_COMPRESSED = 0x00000800 + FILE_ATTRIBUTE_OFFLINE = 0x00001000 + FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000 + FILE_ATTRIBUTE_ENCRYPTED = 0x00004000 + FILE_ATTRIBUTE_INTEGRITY_STREAM = 0x00008000 + FILE_ATTRIBUTE_VIRTUAL = 0x00010000 + FILE_ATTRIBUTE_NO_SCRUB_DATA = 0x00020000 + FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000 + FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000 + FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000 + FILE_FLAG_OPEN_NO_RECALL = 0x00100000 + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_SESSION_AWARE = 0x00800000 + FILE_FLAG_POSIX_SEMANTICS = 0x01000000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_DELETE_ON_CLOSE = 0x04000000 + FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000 + FILE_FLAG_RANDOM_ACCESS = 0x10000000 + FILE_FLAG_NO_BUFFERING = 0x20000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + FILE_FLAG_WRITE_THROUGH = 0x80000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_COMPUTERNAME_LENGTH = 15 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + PROCESS_TERMINATE = 1 + PROCESS_QUERY_INFORMATION = 0x00000400 + SYNCHRONIZE = 0x00100000 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // Process creation flags. + CREATE_BREAKAWAY_FROM_JOB = 0x01000000 + CREATE_DEFAULT_ERROR_MODE = 0x04000000 + CREATE_NEW_CONSOLE = 0x00000010 + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_NO_WINDOW = 0x08000000 + CREATE_PROTECTED_PROCESS = 0x00040000 + CREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000 + CREATE_SEPARATE_WOW_VDM = 0x00000800 + CREATE_SHARED_WOW_VDM = 0x00001000 + CREATE_SUSPENDED = 0x00000004 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + DEBUG_ONLY_THIS_PROCESS = 0x00000002 + DEBUG_PROCESS = 0x00000001 + DETACHED_PROCESS = 0x00000008 + EXTENDED_STARTUPINFO_PRESENT = 0x00080000 + INHERIT_PARENT_AFFINITY = 0x00010000 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // filters for ReadDirectoryChangesW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + /* msgAndCertEncodingType values for CertOpenStore function */ + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + /* storeProvider values for CertOpenStore function */ + CERT_STORE_PROV_MSG = 1 + CERT_STORE_PROV_MEMORY = 2 + CERT_STORE_PROV_FILE = 3 + CERT_STORE_PROV_REG = 4 + CERT_STORE_PROV_PKCS7 = 5 + CERT_STORE_PROV_SERIALIZED = 6 + CERT_STORE_PROV_FILENAME_A = 7 + CERT_STORE_PROV_FILENAME_W = 8 + CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W + CERT_STORE_PROV_SYSTEM_A = 9 + CERT_STORE_PROV_SYSTEM_W = 10 + CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W + CERT_STORE_PROV_COLLECTION = 11 + CERT_STORE_PROV_SYSTEM_REGISTRY_A = 12 + CERT_STORE_PROV_SYSTEM_REGISTRY_W = 13 + CERT_STORE_PROV_SYSTEM_REGISTRY = CERT_STORE_PROV_SYSTEM_REGISTRY_W + CERT_STORE_PROV_PHYSICAL_W = 14 + CERT_STORE_PROV_PHYSICAL = CERT_STORE_PROV_PHYSICAL_W + CERT_STORE_PROV_SMART_CARD_W = 15 + CERT_STORE_PROV_SMART_CARD = CERT_STORE_PROV_SMART_CARD_W + CERT_STORE_PROV_LDAP_W = 16 + CERT_STORE_PROV_LDAP = CERT_STORE_PROV_LDAP_W + CERT_STORE_PROV_PKCS12 = 17 + + /* store characteristics (low WORD of flag) for CertOpenStore function */ + CERT_STORE_NO_CRYPT_RELEASE_FLAG = 0x00000001 + CERT_STORE_SET_LOCALIZED_NAME_FLAG = 0x00000002 + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + CERT_STORE_DELETE_FLAG = 0x00000010 + CERT_STORE_UNSAFE_PHYSICAL_FLAG = 0x00000020 + CERT_STORE_SHARE_STORE_FLAG = 0x00000040 + CERT_STORE_SHARE_CONTEXT_FLAG = 0x00000080 + CERT_STORE_MANIFOLD_FLAG = 0x00000100 + CERT_STORE_ENUM_ARCHIVED_FLAG = 0x00000200 + CERT_STORE_UPDATE_KEYID_FLAG = 0x00000400 + CERT_STORE_BACKUP_RESTORE_FLAG = 0x00000800 + CERT_STORE_MAXIMUM_ALLOWED_FLAG = 0x00001000 + CERT_STORE_CREATE_NEW_FLAG = 0x00002000 + CERT_STORE_OPEN_EXISTING_FLAG = 0x00004000 + CERT_STORE_READONLY_FLAG = 0x00008000 + + /* store locations (high WORD of flag) for CertOpenStore function */ + CERT_SYSTEM_STORE_CURRENT_USER = 0x00010000 + CERT_SYSTEM_STORE_LOCAL_MACHINE = 0x00020000 + CERT_SYSTEM_STORE_CURRENT_SERVICE = 0x00040000 + CERT_SYSTEM_STORE_SERVICES = 0x00050000 + CERT_SYSTEM_STORE_USERS = 0x00060000 + CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY = 0x00070000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000 + CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE = 0x00090000 + CERT_SYSTEM_STORE_UNPROTECTED_FLAG = 0x40000000 + CERT_SYSTEM_STORE_RELOCATE_FLAG = 0x80000000 + + /* Miscellaneous high-WORD flags for CertOpenStore function */ + CERT_REGISTRY_STORE_REMOTE_FLAG = 0x00010000 + CERT_REGISTRY_STORE_SERIALIZED_FLAG = 0x00020000 + CERT_REGISTRY_STORE_ROAMING_FLAG = 0x00040000 + CERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000 + CERT_REGISTRY_STORE_LM_GPT_FLAG = 0x01000000 + CERT_REGISTRY_STORE_CLIENT_GPT_FLAG = 0x80000000 + CERT_FILE_STORE_COMMIT_ENABLE_FLAG = 0x00010000 + CERT_LDAP_STORE_SIGN_FLAG = 0x00010000 + CERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG = 0x00020000 + CERT_LDAP_STORE_OPENED_FLAG = 0x00040000 + CERT_LDAP_STORE_UNBIND_FLAG = 0x00080000 + + /* addDisposition values for CertAddCertificateContextToStore function */ + CERT_STORE_ADD_NEW = 1 + CERT_STORE_ADD_USE_EXISTING = 2 + CERT_STORE_ADD_REPLACE_EXISTING = 3 + CERT_STORE_ADD_ALWAYS = 4 + CERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5 + CERT_STORE_ADD_NEWER = 6 + CERT_STORE_ADD_NEWER_INHERIT_PROPERTIES = 7 + + /* ErrorStatus values for CertTrustStatus struct */ + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_PARTIAL_CHAIN = 0x00010000 + CERT_TRUST_CTL_IS_NOT_TIME_VALID = 0x00020000 + CERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID = 0x00040000 + CERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE = 0x00080000 + CERT_TRUST_HAS_WEAK_SIGNATURE = 0x00100000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + /* InfoStatus values for CertTrustStatus struct */ + CERT_TRUST_HAS_EXACT_MATCH_ISSUER = 0x00000001 + CERT_TRUST_HAS_KEY_MATCH_ISSUER = 0x00000002 + CERT_TRUST_HAS_NAME_MATCH_ISSUER = 0x00000004 + CERT_TRUST_IS_SELF_SIGNED = 0x00000008 + CERT_TRUST_HAS_PREFERRED_ISSUER = 0x00000100 + CERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY = 0x00000400 + CERT_TRUST_HAS_VALID_NAME_CONSTRAINTS = 0x00000400 + CERT_TRUST_IS_PEER_TRUSTED = 0x00000800 + CERT_TRUST_HAS_CRL_VALIDITY_EXTENDED = 0x00001000 + CERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000 + CERT_TRUST_IS_CA_TRUSTED = 0x00004000 + CERT_TRUST_IS_COMPLEX_CHAIN = 0x00010000 + + /* policyOID values for CertVerifyCertificateChainPolicy function */ + CERT_CHAIN_POLICY_BASE = 1 + CERT_CHAIN_POLICY_AUTHENTICODE = 2 + CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 + CERT_CHAIN_POLICY_SSL = 4 + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 + CERT_CHAIN_POLICY_NT_AUTH = 6 + CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 + CERT_CHAIN_POLICY_EV = 8 + CERT_CHAIN_POLICY_SSL_F12 = 9 + + /* AuthType values for SSLExtraCertChainPolicyPara struct */ + AUTHTYPE_CLIENT = 1 + AUTHTYPE_SERVER = 2 + + /* Checks values for SSLExtraCertChainPolicyPara struct */ + SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080 + SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100 + SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200 + SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000 + SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 +) + +var ( + OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") + OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") + OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") +) + +// Pointer represents a pointer to an arbitrary Windows type. +// +// Pointer-typed fields may point to one of many different types. It's +// up to the caller to provide a pointer to the appropriate type, cast +// to Pointer. The caller must obey the unsafe.Pointer rules while +// doing so. +type Pointer *struct{} + +// Invented values to support what package os expects. +type Timeval struct { + Sec int32 + Usec int32 +} + +func (tv *Timeval) Nanoseconds() int64 { + return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + tv.Sec = int32(nsec / 1e9) + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor uintptr + InheritHandle uint32 +} + +type Overlapped struct { + Internal uintptr + InternalHigh uintptr + Offset uint32 + OffsetHigh uint32 + HEvent Handle +} + +type FileNotifyInformation struct { + NextEntryOffset uint32 + Action uint32 + FileNameLength uint32 + FileName uint16 +} + +type Filetime struct { + LowDateTime uint32 + HighDateTime uint32 +} + +// Nanoseconds returns Filetime ft in nanoseconds +// since Epoch (00:00:00 UTC, January 1, 1970). +func (ft *Filetime) Nanoseconds() int64 { + // 100-nanosecond intervals since January 1, 1601 + nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) + // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) + nsec -= 116444736000000000 + // convert into nanoseconds + nsec *= 100 + return nsec +} + +func NsecToFiletime(nsec int64) (ft Filetime) { + // convert into 100-nanosecond + nsec /= 100 + // change starting time to January 1, 1601 + nsec += 116444736000000000 + // split into high / low + ft.LowDateTime = uint32(nsec & 0xffffffff) + ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_INET6 = 23 + AF_NETBIOS = 17 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_IPV6 = 0x29 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_DONTROUTE = 0x4 + MSG_WAITALL = 0x8 + + MSG_TRUNC = 0x0100 + MSG_CTRUNC = 0x0200 + MSG_BCAST = 0x0400 + MSG_MCAST = 0x0800 + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +type WSAMsg struct { + Name *syscall.RawSockaddrAny + Namelen int32 + Buffers *WSABuf + BufferCount uint32 + Control WSABuf + Flags uint32 +} + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertInfo struct { + // Not implemented +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo *CertInfo + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertTrustListInfo struct { + // Not implemented +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo *CertTrustListInfo + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationCrlInfo struct { + // Not implemented +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo Pointer + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara Pointer +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus Pointer +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +var WSAID_WSASENDMSG = GUID{ + 0xa441e712, + 0x754f, + 0x43ca, + [8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d}, +} + +var WSAID_WSARECVMSG = GUID{ + 0xf689d7c8, + 0x6f1f, + 0x436b, + [8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_GET_REPARSE_POINT = 0x900A8 + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + /* more fields might be present here. */ +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retrieve information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} + +const UNIX_PATH_MAX = 108 // defined in afunix.h diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go new file mode 100644 index 0000000..fe0ddd0 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go new file mode 100644 index 0000000..7e154c2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_arm.go b/vendor/golang.org/x/sys/windows/types_windows_arm.go new file mode 100644 index 0000000..74571e3 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_arm.go @@ -0,0 +1,22 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go new file mode 100644 index 0000000..2b4cea5 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -0,0 +1,6853 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import "syscall" + +const ( + FACILITY_NULL = 0 + FACILITY_RPC = 1 + FACILITY_DISPATCH = 2 + FACILITY_STORAGE = 3 + FACILITY_ITF = 4 + FACILITY_WIN32 = 7 + FACILITY_WINDOWS = 8 + FACILITY_SSPI = 9 + FACILITY_SECURITY = 9 + FACILITY_CONTROL = 10 + FACILITY_CERT = 11 + FACILITY_INTERNET = 12 + FACILITY_MEDIASERVER = 13 + FACILITY_MSMQ = 14 + FACILITY_SETUPAPI = 15 + FACILITY_SCARD = 16 + FACILITY_COMPLUS = 17 + FACILITY_AAF = 18 + FACILITY_URT = 19 + FACILITY_ACS = 20 + FACILITY_DPLAY = 21 + FACILITY_UMI = 22 + FACILITY_SXS = 23 + FACILITY_WINDOWS_CE = 24 + FACILITY_HTTP = 25 + FACILITY_USERMODE_COMMONLOG = 26 + FACILITY_WER = 27 + FACILITY_USERMODE_FILTER_MANAGER = 31 + FACILITY_BACKGROUNDCOPY = 32 + FACILITY_CONFIGURATION = 33 + FACILITY_WIA = 33 + FACILITY_STATE_MANAGEMENT = 34 + FACILITY_METADIRECTORY = 35 + FACILITY_WINDOWSUPDATE = 36 + FACILITY_DIRECTORYSERVICE = 37 + FACILITY_GRAPHICS = 38 + FACILITY_SHELL = 39 + FACILITY_NAP = 39 + FACILITY_TPM_SERVICES = 40 + FACILITY_TPM_SOFTWARE = 41 + FACILITY_UI = 42 + FACILITY_XAML = 43 + FACILITY_ACTION_QUEUE = 44 + FACILITY_PLA = 48 + FACILITY_WINDOWS_SETUP = 48 + FACILITY_FVE = 49 + FACILITY_FWP = 50 + FACILITY_WINRM = 51 + FACILITY_NDIS = 52 + FACILITY_USERMODE_HYPERVISOR = 53 + FACILITY_CMI = 54 + FACILITY_USERMODE_VIRTUALIZATION = 55 + FACILITY_USERMODE_VOLMGR = 56 + FACILITY_BCD = 57 + FACILITY_USERMODE_VHD = 58 + FACILITY_USERMODE_HNS = 59 + FACILITY_SDIAG = 60 + FACILITY_WEBSERVICES = 61 + FACILITY_WINPE = 61 + FACILITY_WPN = 62 + FACILITY_WINDOWS_STORE = 63 + FACILITY_INPUT = 64 + FACILITY_EAP = 66 + FACILITY_WINDOWS_DEFENDER = 80 + FACILITY_OPC = 81 + FACILITY_XPS = 82 + FACILITY_MBN = 84 + FACILITY_POWERSHELL = 84 + FACILITY_RAS = 83 + FACILITY_P2P_INT = 98 + FACILITY_P2P = 99 + FACILITY_DAF = 100 + FACILITY_BLUETOOTH_ATT = 101 + FACILITY_AUDIO = 102 + FACILITY_STATEREPOSITORY = 103 + FACILITY_VISUALCPP = 109 + FACILITY_SCRIPT = 112 + FACILITY_PARSE = 113 + FACILITY_BLB = 120 + FACILITY_BLB_CLI = 121 + FACILITY_WSBAPP = 122 + FACILITY_BLBUI = 128 + FACILITY_USN = 129 + FACILITY_USERMODE_VOLSNAP = 130 + FACILITY_TIERING = 131 + FACILITY_WSB_ONLINE = 133 + FACILITY_ONLINE_ID = 134 + FACILITY_DEVICE_UPDATE_AGENT = 135 + FACILITY_DRVSERVICING = 136 + FACILITY_DLS = 153 + FACILITY_DELIVERY_OPTIMIZATION = 208 + FACILITY_USERMODE_SPACES = 231 + FACILITY_USER_MODE_SECURITY_CORE = 232 + FACILITY_USERMODE_LICENSING = 234 + FACILITY_SOS = 160 + FACILITY_DEBUGGERS = 176 + FACILITY_SPP = 256 + FACILITY_RESTORE = 256 + FACILITY_DMSERVER = 256 + FACILITY_DEPLOYMENT_SERVICES_SERVER = 257 + FACILITY_DEPLOYMENT_SERVICES_IMAGING = 258 + FACILITY_DEPLOYMENT_SERVICES_MANAGEMENT = 259 + FACILITY_DEPLOYMENT_SERVICES_UTIL = 260 + FACILITY_DEPLOYMENT_SERVICES_BINLSVC = 261 + FACILITY_DEPLOYMENT_SERVICES_PXE = 263 + FACILITY_DEPLOYMENT_SERVICES_TFTP = 264 + FACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272 + FACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING = 278 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER = 289 + FACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT = 290 + FACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER = 293 + FACILITY_LINGUISTIC_SERVICES = 305 + FACILITY_AUDIOSTREAMING = 1094 + FACILITY_ACCELERATOR = 1536 + FACILITY_WMAAECMA = 1996 + FACILITY_DIRECTMUSIC = 2168 + FACILITY_DIRECT3D10 = 2169 + FACILITY_DXGI = 2170 + FACILITY_DXGI_DDI = 2171 + FACILITY_DIRECT3D11 = 2172 + FACILITY_DIRECT3D11_DEBUG = 2173 + FACILITY_DIRECT3D12 = 2174 + FACILITY_DIRECT3D12_DEBUG = 2175 + FACILITY_LEAP = 2184 + FACILITY_AUDCLNT = 2185 + FACILITY_WINCODEC_DWRITE_DWM = 2200 + FACILITY_WINML = 2192 + FACILITY_DIRECT2D = 2201 + FACILITY_DEFRAG = 2304 + FACILITY_USERMODE_SDBUS = 2305 + FACILITY_JSCRIPT = 2306 + FACILITY_PIDGENX = 2561 + FACILITY_EAS = 85 + FACILITY_WEB = 885 + FACILITY_WEB_SOCKET = 886 + FACILITY_MOBILE = 1793 + FACILITY_SQLITE = 1967 + FACILITY_UTC = 1989 + FACILITY_WEP = 2049 + FACILITY_SYNCENGINE = 2050 + FACILITY_XBOX = 2339 + FACILITY_PIX = 2748 + ERROR_SUCCESS syscall.Errno = 0 + NO_ERROR = 0 + SEC_E_OK Handle = 0x00000000 + ERROR_INVALID_FUNCTION syscall.Errno = 1 + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_TOO_MANY_OPEN_FILES syscall.Errno = 4 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_INVALID_HANDLE syscall.Errno = 6 + ERROR_ARENA_TRASHED syscall.Errno = 7 + ERROR_NOT_ENOUGH_MEMORY syscall.Errno = 8 + ERROR_INVALID_BLOCK syscall.Errno = 9 + ERROR_BAD_ENVIRONMENT syscall.Errno = 10 + ERROR_BAD_FORMAT syscall.Errno = 11 + ERROR_INVALID_ACCESS syscall.Errno = 12 + ERROR_INVALID_DATA syscall.Errno = 13 + ERROR_OUTOFMEMORY syscall.Errno = 14 + ERROR_INVALID_DRIVE syscall.Errno = 15 + ERROR_CURRENT_DIRECTORY syscall.Errno = 16 + ERROR_NOT_SAME_DEVICE syscall.Errno = 17 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_WRITE_PROTECT syscall.Errno = 19 + ERROR_BAD_UNIT syscall.Errno = 20 + ERROR_NOT_READY syscall.Errno = 21 + ERROR_BAD_COMMAND syscall.Errno = 22 + ERROR_CRC syscall.Errno = 23 + ERROR_BAD_LENGTH syscall.Errno = 24 + ERROR_SEEK syscall.Errno = 25 + ERROR_NOT_DOS_DISK syscall.Errno = 26 + ERROR_SECTOR_NOT_FOUND syscall.Errno = 27 + ERROR_OUT_OF_PAPER syscall.Errno = 28 + ERROR_WRITE_FAULT syscall.Errno = 29 + ERROR_READ_FAULT syscall.Errno = 30 + ERROR_GEN_FAILURE syscall.Errno = 31 + ERROR_SHARING_VIOLATION syscall.Errno = 32 + ERROR_LOCK_VIOLATION syscall.Errno = 33 + ERROR_WRONG_DISK syscall.Errno = 34 + ERROR_SHARING_BUFFER_EXCEEDED syscall.Errno = 36 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_HANDLE_DISK_FULL syscall.Errno = 39 + ERROR_NOT_SUPPORTED syscall.Errno = 50 + ERROR_REM_NOT_LIST syscall.Errno = 51 + ERROR_DUP_NAME syscall.Errno = 52 + ERROR_BAD_NETPATH syscall.Errno = 53 + ERROR_NETWORK_BUSY syscall.Errno = 54 + ERROR_DEV_NOT_EXIST syscall.Errno = 55 + ERROR_TOO_MANY_CMDS syscall.Errno = 56 + ERROR_ADAP_HDW_ERR syscall.Errno = 57 + ERROR_BAD_NET_RESP syscall.Errno = 58 + ERROR_UNEXP_NET_ERR syscall.Errno = 59 + ERROR_BAD_REM_ADAP syscall.Errno = 60 + ERROR_PRINTQ_FULL syscall.Errno = 61 + ERROR_NO_SPOOL_SPACE syscall.Errno = 62 + ERROR_PRINT_CANCELLED syscall.Errno = 63 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_NETWORK_ACCESS_DENIED syscall.Errno = 65 + ERROR_BAD_DEV_TYPE syscall.Errno = 66 + ERROR_BAD_NET_NAME syscall.Errno = 67 + ERROR_TOO_MANY_NAMES syscall.Errno = 68 + ERROR_TOO_MANY_SESS syscall.Errno = 69 + ERROR_SHARING_PAUSED syscall.Errno = 70 + ERROR_REQ_NOT_ACCEP syscall.Errno = 71 + ERROR_REDIR_PAUSED syscall.Errno = 72 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_CANNOT_MAKE syscall.Errno = 82 + ERROR_FAIL_I24 syscall.Errno = 83 + ERROR_OUT_OF_STRUCTURES syscall.Errno = 84 + ERROR_ALREADY_ASSIGNED syscall.Errno = 85 + ERROR_INVALID_PASSWORD syscall.Errno = 86 + ERROR_INVALID_PARAMETER syscall.Errno = 87 + ERROR_NET_WRITE_FAULT syscall.Errno = 88 + ERROR_NO_PROC_SLOTS syscall.Errno = 89 + ERROR_TOO_MANY_SEMAPHORES syscall.Errno = 100 + ERROR_EXCL_SEM_ALREADY_OWNED syscall.Errno = 101 + ERROR_SEM_IS_SET syscall.Errno = 102 + ERROR_TOO_MANY_SEM_REQUESTS syscall.Errno = 103 + ERROR_INVALID_AT_INTERRUPT_TIME syscall.Errno = 104 + ERROR_SEM_OWNER_DIED syscall.Errno = 105 + ERROR_SEM_USER_LIMIT syscall.Errno = 106 + ERROR_DISK_CHANGE syscall.Errno = 107 + ERROR_DRIVE_LOCKED syscall.Errno = 108 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_OPEN_FAILED syscall.Errno = 110 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_DISK_FULL syscall.Errno = 112 + ERROR_NO_MORE_SEARCH_HANDLES syscall.Errno = 113 + ERROR_INVALID_TARGET_HANDLE syscall.Errno = 114 + ERROR_INVALID_CATEGORY syscall.Errno = 117 + ERROR_INVALID_VERIFY_SWITCH syscall.Errno = 118 + ERROR_BAD_DRIVER_LEVEL syscall.Errno = 119 + ERROR_CALL_NOT_IMPLEMENTED syscall.Errno = 120 + ERROR_SEM_TIMEOUT syscall.Errno = 121 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_INVALID_NAME syscall.Errno = 123 + ERROR_INVALID_LEVEL syscall.Errno = 124 + ERROR_NO_VOLUME_LABEL syscall.Errno = 125 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_WAIT_NO_CHILDREN syscall.Errno = 128 + ERROR_CHILD_NOT_COMPLETE syscall.Errno = 129 + ERROR_DIRECT_ACCESS_HANDLE syscall.Errno = 130 + ERROR_NEGATIVE_SEEK syscall.Errno = 131 + ERROR_SEEK_ON_DEVICE syscall.Errno = 132 + ERROR_IS_JOIN_TARGET syscall.Errno = 133 + ERROR_IS_JOINED syscall.Errno = 134 + ERROR_IS_SUBSTED syscall.Errno = 135 + ERROR_NOT_JOINED syscall.Errno = 136 + ERROR_NOT_SUBSTED syscall.Errno = 137 + ERROR_JOIN_TO_JOIN syscall.Errno = 138 + ERROR_SUBST_TO_SUBST syscall.Errno = 139 + ERROR_JOIN_TO_SUBST syscall.Errno = 140 + ERROR_SUBST_TO_JOIN syscall.Errno = 141 + ERROR_BUSY_DRIVE syscall.Errno = 142 + ERROR_SAME_DRIVE syscall.Errno = 143 + ERROR_DIR_NOT_ROOT syscall.Errno = 144 + ERROR_DIR_NOT_EMPTY syscall.Errno = 145 + ERROR_IS_SUBST_PATH syscall.Errno = 146 + ERROR_IS_JOIN_PATH syscall.Errno = 147 + ERROR_PATH_BUSY syscall.Errno = 148 + ERROR_IS_SUBST_TARGET syscall.Errno = 149 + ERROR_SYSTEM_TRACE syscall.Errno = 150 + ERROR_INVALID_EVENT_COUNT syscall.Errno = 151 + ERROR_TOO_MANY_MUXWAITERS syscall.Errno = 152 + ERROR_INVALID_LIST_FORMAT syscall.Errno = 153 + ERROR_LABEL_TOO_LONG syscall.Errno = 154 + ERROR_TOO_MANY_TCBS syscall.Errno = 155 + ERROR_SIGNAL_REFUSED syscall.Errno = 156 + ERROR_DISCARDED syscall.Errno = 157 + ERROR_NOT_LOCKED syscall.Errno = 158 + ERROR_BAD_THREADID_ADDR syscall.Errno = 159 + ERROR_BAD_ARGUMENTS syscall.Errno = 160 + ERROR_BAD_PATHNAME syscall.Errno = 161 + ERROR_SIGNAL_PENDING syscall.Errno = 162 + ERROR_MAX_THRDS_REACHED syscall.Errno = 164 + ERROR_LOCK_FAILED syscall.Errno = 167 + ERROR_BUSY syscall.Errno = 170 + ERROR_DEVICE_SUPPORT_IN_PROGRESS syscall.Errno = 171 + ERROR_CANCEL_VIOLATION syscall.Errno = 173 + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED syscall.Errno = 174 + ERROR_INVALID_SEGMENT_NUMBER syscall.Errno = 180 + ERROR_INVALID_ORDINAL syscall.Errno = 182 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_INVALID_FLAG_NUMBER syscall.Errno = 186 + ERROR_SEM_NOT_FOUND syscall.Errno = 187 + ERROR_INVALID_STARTING_CODESEG syscall.Errno = 188 + ERROR_INVALID_STACKSEG syscall.Errno = 189 + ERROR_INVALID_MODULETYPE syscall.Errno = 190 + ERROR_INVALID_EXE_SIGNATURE syscall.Errno = 191 + ERROR_EXE_MARKED_INVALID syscall.Errno = 192 + ERROR_BAD_EXE_FORMAT syscall.Errno = 193 + ERROR_ITERATED_DATA_EXCEEDS_64k syscall.Errno = 194 + ERROR_INVALID_MINALLOCSIZE syscall.Errno = 195 + ERROR_DYNLINK_FROM_INVALID_RING syscall.Errno = 196 + ERROR_IOPL_NOT_ENABLED syscall.Errno = 197 + ERROR_INVALID_SEGDPL syscall.Errno = 198 + ERROR_AUTODATASEG_EXCEEDS_64k syscall.Errno = 199 + ERROR_RING2SEG_MUST_BE_MOVABLE syscall.Errno = 200 + ERROR_RELOC_CHAIN_XEEDS_SEGLIM syscall.Errno = 201 + ERROR_INFLOOP_IN_RELOC_CHAIN syscall.Errno = 202 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_NO_SIGNAL_SENT syscall.Errno = 205 + ERROR_FILENAME_EXCED_RANGE syscall.Errno = 206 + ERROR_RING2_STACK_IN_USE syscall.Errno = 207 + ERROR_META_EXPANSION_TOO_LONG syscall.Errno = 208 + ERROR_INVALID_SIGNAL_NUMBER syscall.Errno = 209 + ERROR_THREAD_1_INACTIVE syscall.Errno = 210 + ERROR_LOCKED syscall.Errno = 212 + ERROR_TOO_MANY_MODULES syscall.Errno = 214 + ERROR_NESTING_NOT_ALLOWED syscall.Errno = 215 + ERROR_EXE_MACHINE_TYPE_MISMATCH syscall.Errno = 216 + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY syscall.Errno = 217 + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY syscall.Errno = 218 + ERROR_FILE_CHECKED_OUT syscall.Errno = 220 + ERROR_CHECKOUT_REQUIRED syscall.Errno = 221 + ERROR_BAD_FILE_TYPE syscall.Errno = 222 + ERROR_FILE_TOO_LARGE syscall.Errno = 223 + ERROR_FORMS_AUTH_REQUIRED syscall.Errno = 224 + ERROR_VIRUS_INFECTED syscall.Errno = 225 + ERROR_VIRUS_DELETED syscall.Errno = 226 + ERROR_PIPE_LOCAL syscall.Errno = 229 + ERROR_BAD_PIPE syscall.Errno = 230 + ERROR_PIPE_BUSY syscall.Errno = 231 + ERROR_NO_DATA syscall.Errno = 232 + ERROR_PIPE_NOT_CONNECTED syscall.Errno = 233 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_NO_WORK_DONE syscall.Errno = 235 + ERROR_VC_DISCONNECTED syscall.Errno = 240 + ERROR_INVALID_EA_NAME syscall.Errno = 254 + ERROR_EA_LIST_INCONSISTENT syscall.Errno = 255 + WAIT_TIMEOUT syscall.Errno = 258 + ERROR_NO_MORE_ITEMS syscall.Errno = 259 + ERROR_CANNOT_COPY syscall.Errno = 266 + ERROR_DIRECTORY syscall.Errno = 267 + ERROR_EAS_DIDNT_FIT syscall.Errno = 275 + ERROR_EA_FILE_CORRUPT syscall.Errno = 276 + ERROR_EA_TABLE_FULL syscall.Errno = 277 + ERROR_INVALID_EA_HANDLE syscall.Errno = 278 + ERROR_EAS_NOT_SUPPORTED syscall.Errno = 282 + ERROR_NOT_OWNER syscall.Errno = 288 + ERROR_TOO_MANY_POSTS syscall.Errno = 298 + ERROR_PARTIAL_COPY syscall.Errno = 299 + ERROR_OPLOCK_NOT_GRANTED syscall.Errno = 300 + ERROR_INVALID_OPLOCK_PROTOCOL syscall.Errno = 301 + ERROR_DISK_TOO_FRAGMENTED syscall.Errno = 302 + ERROR_DELETE_PENDING syscall.Errno = 303 + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING syscall.Errno = 304 + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME syscall.Errno = 305 + ERROR_SECURITY_STREAM_IS_INCONSISTENT syscall.Errno = 306 + ERROR_INVALID_LOCK_RANGE syscall.Errno = 307 + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT syscall.Errno = 308 + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED syscall.Errno = 309 + ERROR_INVALID_EXCEPTION_HANDLER syscall.Errno = 310 + ERROR_DUPLICATE_PRIVILEGES syscall.Errno = 311 + ERROR_NO_RANGES_PROCESSED syscall.Errno = 312 + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE syscall.Errno = 313 + ERROR_DISK_RESOURCES_EXHAUSTED syscall.Errno = 314 + ERROR_INVALID_TOKEN syscall.Errno = 315 + ERROR_DEVICE_FEATURE_NOT_SUPPORTED syscall.Errno = 316 + ERROR_MR_MID_NOT_FOUND syscall.Errno = 317 + ERROR_SCOPE_NOT_FOUND syscall.Errno = 318 + ERROR_UNDEFINED_SCOPE syscall.Errno = 319 + ERROR_INVALID_CAP syscall.Errno = 320 + ERROR_DEVICE_UNREACHABLE syscall.Errno = 321 + ERROR_DEVICE_NO_RESOURCES syscall.Errno = 322 + ERROR_DATA_CHECKSUM_ERROR syscall.Errno = 323 + ERROR_INTERMIXED_KERNEL_EA_OPERATION syscall.Errno = 324 + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED syscall.Errno = 326 + ERROR_OFFSET_ALIGNMENT_VIOLATION syscall.Errno = 327 + ERROR_INVALID_FIELD_IN_PARAMETER_LIST syscall.Errno = 328 + ERROR_OPERATION_IN_PROGRESS syscall.Errno = 329 + ERROR_BAD_DEVICE_PATH syscall.Errno = 330 + ERROR_TOO_MANY_DESCRIPTORS syscall.Errno = 331 + ERROR_SCRUB_DATA_DISABLED syscall.Errno = 332 + ERROR_NOT_REDUNDANT_STORAGE syscall.Errno = 333 + ERROR_RESIDENT_FILE_NOT_SUPPORTED syscall.Errno = 334 + ERROR_COMPRESSED_FILE_NOT_SUPPORTED syscall.Errno = 335 + ERROR_DIRECTORY_NOT_SUPPORTED syscall.Errno = 336 + ERROR_NOT_READ_FROM_COPY syscall.Errno = 337 + ERROR_FT_WRITE_FAILURE syscall.Errno = 338 + ERROR_FT_DI_SCAN_REQUIRED syscall.Errno = 339 + ERROR_INVALID_KERNEL_INFO_VERSION syscall.Errno = 340 + ERROR_INVALID_PEP_INFO_VERSION syscall.Errno = 341 + ERROR_OBJECT_NOT_EXTERNALLY_BACKED syscall.Errno = 342 + ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN syscall.Errno = 343 + ERROR_COMPRESSION_NOT_BENEFICIAL syscall.Errno = 344 + ERROR_STORAGE_TOPOLOGY_ID_MISMATCH syscall.Errno = 345 + ERROR_BLOCKED_BY_PARENTAL_CONTROLS syscall.Errno = 346 + ERROR_BLOCK_TOO_MANY_REFERENCES syscall.Errno = 347 + ERROR_MARKED_TO_DISALLOW_WRITES syscall.Errno = 348 + ERROR_ENCLAVE_FAILURE syscall.Errno = 349 + ERROR_FAIL_NOACTION_REBOOT syscall.Errno = 350 + ERROR_FAIL_SHUTDOWN syscall.Errno = 351 + ERROR_FAIL_RESTART syscall.Errno = 352 + ERROR_MAX_SESSIONS_REACHED syscall.Errno = 353 + ERROR_NETWORK_ACCESS_DENIED_EDP syscall.Errno = 354 + ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL syscall.Errno = 355 + ERROR_EDP_POLICY_DENIES_OPERATION syscall.Errno = 356 + ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED syscall.Errno = 357 + ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT syscall.Errno = 358 + ERROR_DEVICE_IN_MAINTENANCE syscall.Errno = 359 + ERROR_NOT_SUPPORTED_ON_DAX syscall.Errno = 360 + ERROR_DAX_MAPPING_EXISTS syscall.Errno = 361 + ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING syscall.Errno = 362 + ERROR_CLOUD_FILE_METADATA_CORRUPT syscall.Errno = 363 + ERROR_CLOUD_FILE_METADATA_TOO_LARGE syscall.Errno = 364 + ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE syscall.Errno = 365 + ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH syscall.Errno = 366 + ERROR_CHILD_PROCESS_BLOCKED syscall.Errno = 367 + ERROR_STORAGE_LOST_DATA_PERSISTENCE syscall.Errno = 368 + ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE syscall.Errno = 369 + ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT syscall.Errno = 370 + ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY syscall.Errno = 371 + ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN syscall.Errno = 372 + ERROR_GDI_HANDLE_LEAK syscall.Errno = 373 + ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS syscall.Errno = 374 + ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED syscall.Errno = 375 + ERROR_NOT_A_CLOUD_FILE syscall.Errno = 376 + ERROR_CLOUD_FILE_NOT_IN_SYNC syscall.Errno = 377 + ERROR_CLOUD_FILE_ALREADY_CONNECTED syscall.Errno = 378 + ERROR_CLOUD_FILE_NOT_SUPPORTED syscall.Errno = 379 + ERROR_CLOUD_FILE_INVALID_REQUEST syscall.Errno = 380 + ERROR_CLOUD_FILE_READ_ONLY_VOLUME syscall.Errno = 381 + ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY syscall.Errno = 382 + ERROR_CLOUD_FILE_VALIDATION_FAILED syscall.Errno = 383 + ERROR_SMB1_NOT_AVAILABLE syscall.Errno = 384 + ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION syscall.Errno = 385 + ERROR_CLOUD_FILE_AUTHENTICATION_FAILED syscall.Errno = 386 + ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES syscall.Errno = 387 + ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE syscall.Errno = 388 + ERROR_CLOUD_FILE_UNSUCCESSFUL syscall.Errno = 389 + ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT syscall.Errno = 390 + ERROR_CLOUD_FILE_IN_USE syscall.Errno = 391 + ERROR_CLOUD_FILE_PINNED syscall.Errno = 392 + ERROR_CLOUD_FILE_REQUEST_ABORTED syscall.Errno = 393 + ERROR_CLOUD_FILE_PROPERTY_CORRUPT syscall.Errno = 394 + ERROR_CLOUD_FILE_ACCESS_DENIED syscall.Errno = 395 + ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS syscall.Errno = 396 + ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT syscall.Errno = 397 + ERROR_CLOUD_FILE_REQUEST_CANCELED syscall.Errno = 398 + ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED syscall.Errno = 399 + ERROR_THREAD_MODE_ALREADY_BACKGROUND syscall.Errno = 400 + ERROR_THREAD_MODE_NOT_BACKGROUND syscall.Errno = 401 + ERROR_PROCESS_MODE_ALREADY_BACKGROUND syscall.Errno = 402 + ERROR_PROCESS_MODE_NOT_BACKGROUND syscall.Errno = 403 + ERROR_CLOUD_FILE_PROVIDER_TERMINATED syscall.Errno = 404 + ERROR_NOT_A_CLOUD_SYNC_ROOT syscall.Errno = 405 + ERROR_FILE_PROTECTED_UNDER_DPL syscall.Errno = 406 + ERROR_VOLUME_NOT_CLUSTER_ALIGNED syscall.Errno = 407 + ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND syscall.Errno = 408 + ERROR_APPX_FILE_NOT_ENCRYPTED syscall.Errno = 409 + ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED syscall.Errno = 410 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET syscall.Errno = 411 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE syscall.Errno = 412 + ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER syscall.Errno = 413 + ERROR_LINUX_SUBSYSTEM_NOT_PRESENT syscall.Errno = 414 + ERROR_FT_READ_FAILURE syscall.Errno = 415 + ERROR_STORAGE_RESERVE_ID_INVALID syscall.Errno = 416 + ERROR_STORAGE_RESERVE_DOES_NOT_EXIST syscall.Errno = 417 + ERROR_STORAGE_RESERVE_ALREADY_EXISTS syscall.Errno = 418 + ERROR_STORAGE_RESERVE_NOT_EMPTY syscall.Errno = 419 + ERROR_NOT_A_DAX_VOLUME syscall.Errno = 420 + ERROR_NOT_DAX_MAPPABLE syscall.Errno = 421 + ERROR_TIME_CRITICAL_THREAD syscall.Errno = 422 + ERROR_DPL_NOT_SUPPORTED_FOR_USER syscall.Errno = 423 + ERROR_CASE_DIFFERING_NAMES_IN_DIR syscall.Errno = 424 + ERROR_CAPAUTHZ_NOT_DEVUNLOCKED syscall.Errno = 450 + ERROR_CAPAUTHZ_CHANGE_TYPE syscall.Errno = 451 + ERROR_CAPAUTHZ_NOT_PROVISIONED syscall.Errno = 452 + ERROR_CAPAUTHZ_NOT_AUTHORIZED syscall.Errno = 453 + ERROR_CAPAUTHZ_NO_POLICY syscall.Errno = 454 + ERROR_CAPAUTHZ_DB_CORRUPTED syscall.Errno = 455 + ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG syscall.Errno = 456 + ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY syscall.Errno = 457 + ERROR_CAPAUTHZ_SCCD_PARSE_ERROR syscall.Errno = 458 + ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED syscall.Errno = 459 + ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH syscall.Errno = 460 + ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT syscall.Errno = 480 + ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT syscall.Errno = 481 + ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT syscall.Errno = 482 + ERROR_DEVICE_HARDWARE_ERROR syscall.Errno = 483 + ERROR_INVALID_ADDRESS syscall.Errno = 487 + ERROR_VRF_CFG_ENABLED syscall.Errno = 1183 + ERROR_PARTITION_TERMINATING syscall.Errno = 1184 + ERROR_USER_PROFILE_LOAD syscall.Errno = 500 + ERROR_ARITHMETIC_OVERFLOW syscall.Errno = 534 + ERROR_PIPE_CONNECTED syscall.Errno = 535 + ERROR_PIPE_LISTENING syscall.Errno = 536 + ERROR_VERIFIER_STOP syscall.Errno = 537 + ERROR_ABIOS_ERROR syscall.Errno = 538 + ERROR_WX86_WARNING syscall.Errno = 539 + ERROR_WX86_ERROR syscall.Errno = 540 + ERROR_TIMER_NOT_CANCELED syscall.Errno = 541 + ERROR_UNWIND syscall.Errno = 542 + ERROR_BAD_STACK syscall.Errno = 543 + ERROR_INVALID_UNWIND_TARGET syscall.Errno = 544 + ERROR_INVALID_PORT_ATTRIBUTES syscall.Errno = 545 + ERROR_PORT_MESSAGE_TOO_LONG syscall.Errno = 546 + ERROR_INVALID_QUOTA_LOWER syscall.Errno = 547 + ERROR_DEVICE_ALREADY_ATTACHED syscall.Errno = 548 + ERROR_INSTRUCTION_MISALIGNMENT syscall.Errno = 549 + ERROR_PROFILING_NOT_STARTED syscall.Errno = 550 + ERROR_PROFILING_NOT_STOPPED syscall.Errno = 551 + ERROR_COULD_NOT_INTERPRET syscall.Errno = 552 + ERROR_PROFILING_AT_LIMIT syscall.Errno = 553 + ERROR_CANT_WAIT syscall.Errno = 554 + ERROR_CANT_TERMINATE_SELF syscall.Errno = 555 + ERROR_UNEXPECTED_MM_CREATE_ERR syscall.Errno = 556 + ERROR_UNEXPECTED_MM_MAP_ERROR syscall.Errno = 557 + ERROR_UNEXPECTED_MM_EXTEND_ERR syscall.Errno = 558 + ERROR_BAD_FUNCTION_TABLE syscall.Errno = 559 + ERROR_NO_GUID_TRANSLATION syscall.Errno = 560 + ERROR_INVALID_LDT_SIZE syscall.Errno = 561 + ERROR_INVALID_LDT_OFFSET syscall.Errno = 563 + ERROR_INVALID_LDT_DESCRIPTOR syscall.Errno = 564 + ERROR_TOO_MANY_THREADS syscall.Errno = 565 + ERROR_THREAD_NOT_IN_PROCESS syscall.Errno = 566 + ERROR_PAGEFILE_QUOTA_EXCEEDED syscall.Errno = 567 + ERROR_LOGON_SERVER_CONFLICT syscall.Errno = 568 + ERROR_SYNCHRONIZATION_REQUIRED syscall.Errno = 569 + ERROR_NET_OPEN_FAILED syscall.Errno = 570 + ERROR_IO_PRIVILEGE_FAILED syscall.Errno = 571 + ERROR_CONTROL_C_EXIT syscall.Errno = 572 + ERROR_MISSING_SYSTEMFILE syscall.Errno = 573 + ERROR_UNHANDLED_EXCEPTION syscall.Errno = 574 + ERROR_APP_INIT_FAILURE syscall.Errno = 575 + ERROR_PAGEFILE_CREATE_FAILED syscall.Errno = 576 + ERROR_INVALID_IMAGE_HASH syscall.Errno = 577 + ERROR_NO_PAGEFILE syscall.Errno = 578 + ERROR_ILLEGAL_FLOAT_CONTEXT syscall.Errno = 579 + ERROR_NO_EVENT_PAIR syscall.Errno = 580 + ERROR_DOMAIN_CTRLR_CONFIG_ERROR syscall.Errno = 581 + ERROR_ILLEGAL_CHARACTER syscall.Errno = 582 + ERROR_UNDEFINED_CHARACTER syscall.Errno = 583 + ERROR_FLOPPY_VOLUME syscall.Errno = 584 + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT syscall.Errno = 585 + ERROR_BACKUP_CONTROLLER syscall.Errno = 586 + ERROR_MUTANT_LIMIT_EXCEEDED syscall.Errno = 587 + ERROR_FS_DRIVER_REQUIRED syscall.Errno = 588 + ERROR_CANNOT_LOAD_REGISTRY_FILE syscall.Errno = 589 + ERROR_DEBUG_ATTACH_FAILED syscall.Errno = 590 + ERROR_SYSTEM_PROCESS_TERMINATED syscall.Errno = 591 + ERROR_DATA_NOT_ACCEPTED syscall.Errno = 592 + ERROR_VDM_HARD_ERROR syscall.Errno = 593 + ERROR_DRIVER_CANCEL_TIMEOUT syscall.Errno = 594 + ERROR_REPLY_MESSAGE_MISMATCH syscall.Errno = 595 + ERROR_LOST_WRITEBEHIND_DATA syscall.Errno = 596 + ERROR_CLIENT_SERVER_PARAMETERS_INVALID syscall.Errno = 597 + ERROR_NOT_TINY_STREAM syscall.Errno = 598 + ERROR_STACK_OVERFLOW_READ syscall.Errno = 599 + ERROR_CONVERT_TO_LARGE syscall.Errno = 600 + ERROR_FOUND_OUT_OF_SCOPE syscall.Errno = 601 + ERROR_ALLOCATE_BUCKET syscall.Errno = 602 + ERROR_MARSHALL_OVERFLOW syscall.Errno = 603 + ERROR_INVALID_VARIANT syscall.Errno = 604 + ERROR_BAD_COMPRESSION_BUFFER syscall.Errno = 605 + ERROR_AUDIT_FAILED syscall.Errno = 606 + ERROR_TIMER_RESOLUTION_NOT_SET syscall.Errno = 607 + ERROR_INSUFFICIENT_LOGON_INFO syscall.Errno = 608 + ERROR_BAD_DLL_ENTRYPOINT syscall.Errno = 609 + ERROR_BAD_SERVICE_ENTRYPOINT syscall.Errno = 610 + ERROR_IP_ADDRESS_CONFLICT1 syscall.Errno = 611 + ERROR_IP_ADDRESS_CONFLICT2 syscall.Errno = 612 + ERROR_REGISTRY_QUOTA_LIMIT syscall.Errno = 613 + ERROR_NO_CALLBACK_ACTIVE syscall.Errno = 614 + ERROR_PWD_TOO_SHORT syscall.Errno = 615 + ERROR_PWD_TOO_RECENT syscall.Errno = 616 + ERROR_PWD_HISTORY_CONFLICT syscall.Errno = 617 + ERROR_UNSUPPORTED_COMPRESSION syscall.Errno = 618 + ERROR_INVALID_HW_PROFILE syscall.Errno = 619 + ERROR_INVALID_PLUGPLAY_DEVICE_PATH syscall.Errno = 620 + ERROR_QUOTA_LIST_INCONSISTENT syscall.Errno = 621 + ERROR_EVALUATION_EXPIRATION syscall.Errno = 622 + ERROR_ILLEGAL_DLL_RELOCATION syscall.Errno = 623 + ERROR_DLL_INIT_FAILED_LOGOFF syscall.Errno = 624 + ERROR_VALIDATE_CONTINUE syscall.Errno = 625 + ERROR_NO_MORE_MATCHES syscall.Errno = 626 + ERROR_RANGE_LIST_CONFLICT syscall.Errno = 627 + ERROR_SERVER_SID_MISMATCH syscall.Errno = 628 + ERROR_CANT_ENABLE_DENY_ONLY syscall.Errno = 629 + ERROR_FLOAT_MULTIPLE_FAULTS syscall.Errno = 630 + ERROR_FLOAT_MULTIPLE_TRAPS syscall.Errno = 631 + ERROR_NOINTERFACE syscall.Errno = 632 + ERROR_DRIVER_FAILED_SLEEP syscall.Errno = 633 + ERROR_CORRUPT_SYSTEM_FILE syscall.Errno = 634 + ERROR_COMMITMENT_MINIMUM syscall.Errno = 635 + ERROR_PNP_RESTART_ENUMERATION syscall.Errno = 636 + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE syscall.Errno = 637 + ERROR_PNP_REBOOT_REQUIRED syscall.Errno = 638 + ERROR_INSUFFICIENT_POWER syscall.Errno = 639 + ERROR_MULTIPLE_FAULT_VIOLATION syscall.Errno = 640 + ERROR_SYSTEM_SHUTDOWN syscall.Errno = 641 + ERROR_PORT_NOT_SET syscall.Errno = 642 + ERROR_DS_VERSION_CHECK_FAILURE syscall.Errno = 643 + ERROR_RANGE_NOT_FOUND syscall.Errno = 644 + ERROR_NOT_SAFE_MODE_DRIVER syscall.Errno = 646 + ERROR_FAILED_DRIVER_ENTRY syscall.Errno = 647 + ERROR_DEVICE_ENUMERATION_ERROR syscall.Errno = 648 + ERROR_MOUNT_POINT_NOT_RESOLVED syscall.Errno = 649 + ERROR_INVALID_DEVICE_OBJECT_PARAMETER syscall.Errno = 650 + ERROR_MCA_OCCURED syscall.Errno = 651 + ERROR_DRIVER_DATABASE_ERROR syscall.Errno = 652 + ERROR_SYSTEM_HIVE_TOO_LARGE syscall.Errno = 653 + ERROR_DRIVER_FAILED_PRIOR_UNLOAD syscall.Errno = 654 + ERROR_VOLSNAP_PREPARE_HIBERNATE syscall.Errno = 655 + ERROR_HIBERNATION_FAILURE syscall.Errno = 656 + ERROR_PWD_TOO_LONG syscall.Errno = 657 + ERROR_FILE_SYSTEM_LIMITATION syscall.Errno = 665 + ERROR_ASSERTION_FAILURE syscall.Errno = 668 + ERROR_ACPI_ERROR syscall.Errno = 669 + ERROR_WOW_ASSERTION syscall.Errno = 670 + ERROR_PNP_BAD_MPS_TABLE syscall.Errno = 671 + ERROR_PNP_TRANSLATION_FAILED syscall.Errno = 672 + ERROR_PNP_IRQ_TRANSLATION_FAILED syscall.Errno = 673 + ERROR_PNP_INVALID_ID syscall.Errno = 674 + ERROR_WAKE_SYSTEM_DEBUGGER syscall.Errno = 675 + ERROR_HANDLES_CLOSED syscall.Errno = 676 + ERROR_EXTRANEOUS_INFORMATION syscall.Errno = 677 + ERROR_RXACT_COMMIT_NECESSARY syscall.Errno = 678 + ERROR_MEDIA_CHECK syscall.Errno = 679 + ERROR_GUID_SUBSTITUTION_MADE syscall.Errno = 680 + ERROR_STOPPED_ON_SYMLINK syscall.Errno = 681 + ERROR_LONGJUMP syscall.Errno = 682 + ERROR_PLUGPLAY_QUERY_VETOED syscall.Errno = 683 + ERROR_UNWIND_CONSOLIDATE syscall.Errno = 684 + ERROR_REGISTRY_HIVE_RECOVERED syscall.Errno = 685 + ERROR_DLL_MIGHT_BE_INSECURE syscall.Errno = 686 + ERROR_DLL_MIGHT_BE_INCOMPATIBLE syscall.Errno = 687 + ERROR_DBG_EXCEPTION_NOT_HANDLED syscall.Errno = 688 + ERROR_DBG_REPLY_LATER syscall.Errno = 689 + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE syscall.Errno = 690 + ERROR_DBG_TERMINATE_THREAD syscall.Errno = 691 + ERROR_DBG_TERMINATE_PROCESS syscall.Errno = 692 + ERROR_DBG_CONTROL_C syscall.Errno = 693 + ERROR_DBG_PRINTEXCEPTION_C syscall.Errno = 694 + ERROR_DBG_RIPEXCEPTION syscall.Errno = 695 + ERROR_DBG_CONTROL_BREAK syscall.Errno = 696 + ERROR_DBG_COMMAND_EXCEPTION syscall.Errno = 697 + ERROR_OBJECT_NAME_EXISTS syscall.Errno = 698 + ERROR_THREAD_WAS_SUSPENDED syscall.Errno = 699 + ERROR_IMAGE_NOT_AT_BASE syscall.Errno = 700 + ERROR_RXACT_STATE_CREATED syscall.Errno = 701 + ERROR_SEGMENT_NOTIFICATION syscall.Errno = 702 + ERROR_BAD_CURRENT_DIRECTORY syscall.Errno = 703 + ERROR_FT_READ_RECOVERY_FROM_BACKUP syscall.Errno = 704 + ERROR_FT_WRITE_RECOVERY syscall.Errno = 705 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH syscall.Errno = 706 + ERROR_RECEIVE_PARTIAL syscall.Errno = 707 + ERROR_RECEIVE_EXPEDITED syscall.Errno = 708 + ERROR_RECEIVE_PARTIAL_EXPEDITED syscall.Errno = 709 + ERROR_EVENT_DONE syscall.Errno = 710 + ERROR_EVENT_PENDING syscall.Errno = 711 + ERROR_CHECKING_FILE_SYSTEM syscall.Errno = 712 + ERROR_FATAL_APP_EXIT syscall.Errno = 713 + ERROR_PREDEFINED_HANDLE syscall.Errno = 714 + ERROR_WAS_UNLOCKED syscall.Errno = 715 + ERROR_SERVICE_NOTIFICATION syscall.Errno = 716 + ERROR_WAS_LOCKED syscall.Errno = 717 + ERROR_LOG_HARD_ERROR syscall.Errno = 718 + ERROR_ALREADY_WIN32 syscall.Errno = 719 + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE syscall.Errno = 720 + ERROR_NO_YIELD_PERFORMED syscall.Errno = 721 + ERROR_TIMER_RESUME_IGNORED syscall.Errno = 722 + ERROR_ARBITRATION_UNHANDLED syscall.Errno = 723 + ERROR_CARDBUS_NOT_SUPPORTED syscall.Errno = 724 + ERROR_MP_PROCESSOR_MISMATCH syscall.Errno = 725 + ERROR_HIBERNATED syscall.Errno = 726 + ERROR_RESUME_HIBERNATION syscall.Errno = 727 + ERROR_FIRMWARE_UPDATED syscall.Errno = 728 + ERROR_DRIVERS_LEAKING_LOCKED_PAGES syscall.Errno = 729 + ERROR_WAKE_SYSTEM syscall.Errno = 730 + ERROR_WAIT_1 syscall.Errno = 731 + ERROR_WAIT_2 syscall.Errno = 732 + ERROR_WAIT_3 syscall.Errno = 733 + ERROR_WAIT_63 syscall.Errno = 734 + ERROR_ABANDONED_WAIT_0 syscall.Errno = 735 + ERROR_ABANDONED_WAIT_63 syscall.Errno = 736 + ERROR_USER_APC syscall.Errno = 737 + ERROR_KERNEL_APC syscall.Errno = 738 + ERROR_ALERTED syscall.Errno = 739 + ERROR_ELEVATION_REQUIRED syscall.Errno = 740 + ERROR_REPARSE syscall.Errno = 741 + ERROR_OPLOCK_BREAK_IN_PROGRESS syscall.Errno = 742 + ERROR_VOLUME_MOUNTED syscall.Errno = 743 + ERROR_RXACT_COMMITTED syscall.Errno = 744 + ERROR_NOTIFY_CLEANUP syscall.Errno = 745 + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED syscall.Errno = 746 + ERROR_PAGE_FAULT_TRANSITION syscall.Errno = 747 + ERROR_PAGE_FAULT_DEMAND_ZERO syscall.Errno = 748 + ERROR_PAGE_FAULT_COPY_ON_WRITE syscall.Errno = 749 + ERROR_PAGE_FAULT_GUARD_PAGE syscall.Errno = 750 + ERROR_PAGE_FAULT_PAGING_FILE syscall.Errno = 751 + ERROR_CACHE_PAGE_LOCKED syscall.Errno = 752 + ERROR_CRASH_DUMP syscall.Errno = 753 + ERROR_BUFFER_ALL_ZEROS syscall.Errno = 754 + ERROR_REPARSE_OBJECT syscall.Errno = 755 + ERROR_RESOURCE_REQUIREMENTS_CHANGED syscall.Errno = 756 + ERROR_TRANSLATION_COMPLETE syscall.Errno = 757 + ERROR_NOTHING_TO_TERMINATE syscall.Errno = 758 + ERROR_PROCESS_NOT_IN_JOB syscall.Errno = 759 + ERROR_PROCESS_IN_JOB syscall.Errno = 760 + ERROR_VOLSNAP_HIBERNATE_READY syscall.Errno = 761 + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY syscall.Errno = 762 + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED syscall.Errno = 763 + ERROR_INTERRUPT_STILL_CONNECTED syscall.Errno = 764 + ERROR_WAIT_FOR_OPLOCK syscall.Errno = 765 + ERROR_DBG_EXCEPTION_HANDLED syscall.Errno = 766 + ERROR_DBG_CONTINUE syscall.Errno = 767 + ERROR_CALLBACK_POP_STACK syscall.Errno = 768 + ERROR_COMPRESSION_DISABLED syscall.Errno = 769 + ERROR_CANTFETCHBACKWARDS syscall.Errno = 770 + ERROR_CANTSCROLLBACKWARDS syscall.Errno = 771 + ERROR_ROWSNOTRELEASED syscall.Errno = 772 + ERROR_BAD_ACCESSOR_FLAGS syscall.Errno = 773 + ERROR_ERRORS_ENCOUNTERED syscall.Errno = 774 + ERROR_NOT_CAPABLE syscall.Errno = 775 + ERROR_REQUEST_OUT_OF_SEQUENCE syscall.Errno = 776 + ERROR_VERSION_PARSE_ERROR syscall.Errno = 777 + ERROR_BADSTARTPOSITION syscall.Errno = 778 + ERROR_MEMORY_HARDWARE syscall.Errno = 779 + ERROR_DISK_REPAIR_DISABLED syscall.Errno = 780 + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE syscall.Errno = 781 + ERROR_SYSTEM_POWERSTATE_TRANSITION syscall.Errno = 782 + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION syscall.Errno = 783 + ERROR_MCA_EXCEPTION syscall.Errno = 784 + ERROR_ACCESS_AUDIT_BY_POLICY syscall.Errno = 785 + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY syscall.Errno = 786 + ERROR_ABANDON_HIBERFILE syscall.Errno = 787 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED syscall.Errno = 788 + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR syscall.Errno = 789 + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR syscall.Errno = 790 + ERROR_BAD_MCFG_TABLE syscall.Errno = 791 + ERROR_DISK_REPAIR_REDIRECTED syscall.Errno = 792 + ERROR_DISK_REPAIR_UNSUCCESSFUL syscall.Errno = 793 + ERROR_CORRUPT_LOG_OVERFULL syscall.Errno = 794 + ERROR_CORRUPT_LOG_CORRUPTED syscall.Errno = 795 + ERROR_CORRUPT_LOG_UNAVAILABLE syscall.Errno = 796 + ERROR_CORRUPT_LOG_DELETED_FULL syscall.Errno = 797 + ERROR_CORRUPT_LOG_CLEARED syscall.Errno = 798 + ERROR_ORPHAN_NAME_EXHAUSTED syscall.Errno = 799 + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE syscall.Errno = 800 + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK syscall.Errno = 801 + ERROR_CANNOT_BREAK_OPLOCK syscall.Errno = 802 + ERROR_OPLOCK_HANDLE_CLOSED syscall.Errno = 803 + ERROR_NO_ACE_CONDITION syscall.Errno = 804 + ERROR_INVALID_ACE_CONDITION syscall.Errno = 805 + ERROR_FILE_HANDLE_REVOKED syscall.Errno = 806 + ERROR_IMAGE_AT_DIFFERENT_BASE syscall.Errno = 807 + ERROR_ENCRYPTED_IO_NOT_POSSIBLE syscall.Errno = 808 + ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS syscall.Errno = 809 + ERROR_QUOTA_ACTIVITY syscall.Errno = 810 + ERROR_HANDLE_REVOKED syscall.Errno = 811 + ERROR_CALLBACK_INVOKE_INLINE syscall.Errno = 812 + ERROR_CPU_SET_INVALID syscall.Errno = 813 + ERROR_ENCLAVE_NOT_TERMINATED syscall.Errno = 814 + ERROR_ENCLAVE_VIOLATION syscall.Errno = 815 + ERROR_EA_ACCESS_DENIED syscall.Errno = 994 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_INCOMPLETE syscall.Errno = 996 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_NOACCESS syscall.Errno = 998 + ERROR_SWAPERROR syscall.Errno = 999 + ERROR_STACK_OVERFLOW syscall.Errno = 1001 + ERROR_INVALID_MESSAGE syscall.Errno = 1002 + ERROR_CAN_NOT_COMPLETE syscall.Errno = 1003 + ERROR_INVALID_FLAGS syscall.Errno = 1004 + ERROR_UNRECOGNIZED_VOLUME syscall.Errno = 1005 + ERROR_FILE_INVALID syscall.Errno = 1006 + ERROR_FULLSCREEN_MODE syscall.Errno = 1007 + ERROR_NO_TOKEN syscall.Errno = 1008 + ERROR_BADDB syscall.Errno = 1009 + ERROR_BADKEY syscall.Errno = 1010 + ERROR_CANTOPEN syscall.Errno = 1011 + ERROR_CANTREAD syscall.Errno = 1012 + ERROR_CANTWRITE syscall.Errno = 1013 + ERROR_REGISTRY_RECOVERED syscall.Errno = 1014 + ERROR_REGISTRY_CORRUPT syscall.Errno = 1015 + ERROR_REGISTRY_IO_FAILED syscall.Errno = 1016 + ERROR_NOT_REGISTRY_FILE syscall.Errno = 1017 + ERROR_KEY_DELETED syscall.Errno = 1018 + ERROR_NO_LOG_SPACE syscall.Errno = 1019 + ERROR_KEY_HAS_CHILDREN syscall.Errno = 1020 + ERROR_CHILD_MUST_BE_VOLATILE syscall.Errno = 1021 + ERROR_NOTIFY_ENUM_DIR syscall.Errno = 1022 + ERROR_DEPENDENT_SERVICES_RUNNING syscall.Errno = 1051 + ERROR_INVALID_SERVICE_CONTROL syscall.Errno = 1052 + ERROR_SERVICE_REQUEST_TIMEOUT syscall.Errno = 1053 + ERROR_SERVICE_NO_THREAD syscall.Errno = 1054 + ERROR_SERVICE_DATABASE_LOCKED syscall.Errno = 1055 + ERROR_SERVICE_ALREADY_RUNNING syscall.Errno = 1056 + ERROR_INVALID_SERVICE_ACCOUNT syscall.Errno = 1057 + ERROR_SERVICE_DISABLED syscall.Errno = 1058 + ERROR_CIRCULAR_DEPENDENCY syscall.Errno = 1059 + ERROR_SERVICE_DOES_NOT_EXIST syscall.Errno = 1060 + ERROR_SERVICE_CANNOT_ACCEPT_CTRL syscall.Errno = 1061 + ERROR_SERVICE_NOT_ACTIVE syscall.Errno = 1062 + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT syscall.Errno = 1063 + ERROR_EXCEPTION_IN_SERVICE syscall.Errno = 1064 + ERROR_DATABASE_DOES_NOT_EXIST syscall.Errno = 1065 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_PROCESS_ABORTED syscall.Errno = 1067 + ERROR_SERVICE_DEPENDENCY_FAIL syscall.Errno = 1068 + ERROR_SERVICE_LOGON_FAILED syscall.Errno = 1069 + ERROR_SERVICE_START_HANG syscall.Errno = 1070 + ERROR_INVALID_SERVICE_LOCK syscall.Errno = 1071 + ERROR_SERVICE_MARKED_FOR_DELETE syscall.Errno = 1072 + ERROR_SERVICE_EXISTS syscall.Errno = 1073 + ERROR_ALREADY_RUNNING_LKG syscall.Errno = 1074 + ERROR_SERVICE_DEPENDENCY_DELETED syscall.Errno = 1075 + ERROR_BOOT_ALREADY_ACCEPTED syscall.Errno = 1076 + ERROR_SERVICE_NEVER_STARTED syscall.Errno = 1077 + ERROR_DUPLICATE_SERVICE_NAME syscall.Errno = 1078 + ERROR_DIFFERENT_SERVICE_ACCOUNT syscall.Errno = 1079 + ERROR_CANNOT_DETECT_DRIVER_FAILURE syscall.Errno = 1080 + ERROR_CANNOT_DETECT_PROCESS_ABORT syscall.Errno = 1081 + ERROR_NO_RECOVERY_PROGRAM syscall.Errno = 1082 + ERROR_SERVICE_NOT_IN_EXE syscall.Errno = 1083 + ERROR_NOT_SAFEBOOT_SERVICE syscall.Errno = 1084 + ERROR_END_OF_MEDIA syscall.Errno = 1100 + ERROR_FILEMARK_DETECTED syscall.Errno = 1101 + ERROR_BEGINNING_OF_MEDIA syscall.Errno = 1102 + ERROR_SETMARK_DETECTED syscall.Errno = 1103 + ERROR_NO_DATA_DETECTED syscall.Errno = 1104 + ERROR_PARTITION_FAILURE syscall.Errno = 1105 + ERROR_INVALID_BLOCK_LENGTH syscall.Errno = 1106 + ERROR_DEVICE_NOT_PARTITIONED syscall.Errno = 1107 + ERROR_UNABLE_TO_LOCK_MEDIA syscall.Errno = 1108 + ERROR_UNABLE_TO_UNLOAD_MEDIA syscall.Errno = 1109 + ERROR_MEDIA_CHANGED syscall.Errno = 1110 + ERROR_BUS_RESET syscall.Errno = 1111 + ERROR_NO_MEDIA_IN_DRIVE syscall.Errno = 1112 + ERROR_NO_UNICODE_TRANSLATION syscall.Errno = 1113 + ERROR_DLL_INIT_FAILED syscall.Errno = 1114 + ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 1115 + ERROR_NO_SHUTDOWN_IN_PROGRESS syscall.Errno = 1116 + ERROR_IO_DEVICE syscall.Errno = 1117 + ERROR_SERIAL_NO_DEVICE syscall.Errno = 1118 + ERROR_IRQ_BUSY syscall.Errno = 1119 + ERROR_MORE_WRITES syscall.Errno = 1120 + ERROR_COUNTER_TIMEOUT syscall.Errno = 1121 + ERROR_FLOPPY_ID_MARK_NOT_FOUND syscall.Errno = 1122 + ERROR_FLOPPY_WRONG_CYLINDER syscall.Errno = 1123 + ERROR_FLOPPY_UNKNOWN_ERROR syscall.Errno = 1124 + ERROR_FLOPPY_BAD_REGISTERS syscall.Errno = 1125 + ERROR_DISK_RECALIBRATE_FAILED syscall.Errno = 1126 + ERROR_DISK_OPERATION_FAILED syscall.Errno = 1127 + ERROR_DISK_RESET_FAILED syscall.Errno = 1128 + ERROR_EOM_OVERFLOW syscall.Errno = 1129 + ERROR_NOT_ENOUGH_SERVER_MEMORY syscall.Errno = 1130 + ERROR_POSSIBLE_DEADLOCK syscall.Errno = 1131 + ERROR_MAPPED_ALIGNMENT syscall.Errno = 1132 + ERROR_SET_POWER_STATE_VETOED syscall.Errno = 1140 + ERROR_SET_POWER_STATE_FAILED syscall.Errno = 1141 + ERROR_TOO_MANY_LINKS syscall.Errno = 1142 + ERROR_OLD_WIN_VERSION syscall.Errno = 1150 + ERROR_APP_WRONG_OS syscall.Errno = 1151 + ERROR_SINGLE_INSTANCE_APP syscall.Errno = 1152 + ERROR_RMODE_APP syscall.Errno = 1153 + ERROR_INVALID_DLL syscall.Errno = 1154 + ERROR_NO_ASSOCIATION syscall.Errno = 1155 + ERROR_DDE_FAIL syscall.Errno = 1156 + ERROR_DLL_NOT_FOUND syscall.Errno = 1157 + ERROR_NO_MORE_USER_HANDLES syscall.Errno = 1158 + ERROR_MESSAGE_SYNC_ONLY syscall.Errno = 1159 + ERROR_SOURCE_ELEMENT_EMPTY syscall.Errno = 1160 + ERROR_DESTINATION_ELEMENT_FULL syscall.Errno = 1161 + ERROR_ILLEGAL_ELEMENT_ADDRESS syscall.Errno = 1162 + ERROR_MAGAZINE_NOT_PRESENT syscall.Errno = 1163 + ERROR_DEVICE_REINITIALIZATION_NEEDED syscall.Errno = 1164 + ERROR_DEVICE_REQUIRES_CLEANING syscall.Errno = 1165 + ERROR_DEVICE_DOOR_OPEN syscall.Errno = 1166 + ERROR_DEVICE_NOT_CONNECTED syscall.Errno = 1167 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_NO_MATCH syscall.Errno = 1169 + ERROR_SET_NOT_FOUND syscall.Errno = 1170 + ERROR_POINT_NOT_FOUND syscall.Errno = 1171 + ERROR_NO_TRACKING_SERVICE syscall.Errno = 1172 + ERROR_NO_VOLUME_ID syscall.Errno = 1173 + ERROR_UNABLE_TO_REMOVE_REPLACED syscall.Errno = 1175 + ERROR_UNABLE_TO_MOVE_REPLACEMENT syscall.Errno = 1176 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 syscall.Errno = 1177 + ERROR_JOURNAL_DELETE_IN_PROGRESS syscall.Errno = 1178 + ERROR_JOURNAL_NOT_ACTIVE syscall.Errno = 1179 + ERROR_POTENTIAL_FILE_FOUND syscall.Errno = 1180 + ERROR_JOURNAL_ENTRY_DELETED syscall.Errno = 1181 + ERROR_SHUTDOWN_IS_SCHEDULED syscall.Errno = 1190 + ERROR_SHUTDOWN_USERS_LOGGED_ON syscall.Errno = 1191 + ERROR_BAD_DEVICE syscall.Errno = 1200 + ERROR_CONNECTION_UNAVAIL syscall.Errno = 1201 + ERROR_DEVICE_ALREADY_REMEMBERED syscall.Errno = 1202 + ERROR_NO_NET_OR_BAD_PATH syscall.Errno = 1203 + ERROR_BAD_PROVIDER syscall.Errno = 1204 + ERROR_CANNOT_OPEN_PROFILE syscall.Errno = 1205 + ERROR_BAD_PROFILE syscall.Errno = 1206 + ERROR_NOT_CONTAINER syscall.Errno = 1207 + ERROR_EXTENDED_ERROR syscall.Errno = 1208 + ERROR_INVALID_GROUPNAME syscall.Errno = 1209 + ERROR_INVALID_COMPUTERNAME syscall.Errno = 1210 + ERROR_INVALID_EVENTNAME syscall.Errno = 1211 + ERROR_INVALID_DOMAINNAME syscall.Errno = 1212 + ERROR_INVALID_SERVICENAME syscall.Errno = 1213 + ERROR_INVALID_NETNAME syscall.Errno = 1214 + ERROR_INVALID_SHARENAME syscall.Errno = 1215 + ERROR_INVALID_PASSWORDNAME syscall.Errno = 1216 + ERROR_INVALID_MESSAGENAME syscall.Errno = 1217 + ERROR_INVALID_MESSAGEDEST syscall.Errno = 1218 + ERROR_SESSION_CREDENTIAL_CONFLICT syscall.Errno = 1219 + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED syscall.Errno = 1220 + ERROR_DUP_DOMAINNAME syscall.Errno = 1221 + ERROR_NO_NETWORK syscall.Errno = 1222 + ERROR_CANCELLED syscall.Errno = 1223 + ERROR_USER_MAPPED_FILE syscall.Errno = 1224 + ERROR_CONNECTION_REFUSED syscall.Errno = 1225 + ERROR_GRACEFUL_DISCONNECT syscall.Errno = 1226 + ERROR_ADDRESS_ALREADY_ASSOCIATED syscall.Errno = 1227 + ERROR_ADDRESS_NOT_ASSOCIATED syscall.Errno = 1228 + ERROR_CONNECTION_INVALID syscall.Errno = 1229 + ERROR_CONNECTION_ACTIVE syscall.Errno = 1230 + ERROR_NETWORK_UNREACHABLE syscall.Errno = 1231 + ERROR_HOST_UNREACHABLE syscall.Errno = 1232 + ERROR_PROTOCOL_UNREACHABLE syscall.Errno = 1233 + ERROR_PORT_UNREACHABLE syscall.Errno = 1234 + ERROR_REQUEST_ABORTED syscall.Errno = 1235 + ERROR_CONNECTION_ABORTED syscall.Errno = 1236 + ERROR_RETRY syscall.Errno = 1237 + ERROR_CONNECTION_COUNT_LIMIT syscall.Errno = 1238 + ERROR_LOGIN_TIME_RESTRICTION syscall.Errno = 1239 + ERROR_LOGIN_WKSTA_RESTRICTION syscall.Errno = 1240 + ERROR_INCORRECT_ADDRESS syscall.Errno = 1241 + ERROR_ALREADY_REGISTERED syscall.Errno = 1242 + ERROR_SERVICE_NOT_FOUND syscall.Errno = 1243 + ERROR_NOT_AUTHENTICATED syscall.Errno = 1244 + ERROR_NOT_LOGGED_ON syscall.Errno = 1245 + ERROR_CONTINUE syscall.Errno = 1246 + ERROR_ALREADY_INITIALIZED syscall.Errno = 1247 + ERROR_NO_MORE_DEVICES syscall.Errno = 1248 + ERROR_NO_SUCH_SITE syscall.Errno = 1249 + ERROR_DOMAIN_CONTROLLER_EXISTS syscall.Errno = 1250 + ERROR_ONLY_IF_CONNECTED syscall.Errno = 1251 + ERROR_OVERRIDE_NOCHANGES syscall.Errno = 1252 + ERROR_BAD_USER_PROFILE syscall.Errno = 1253 + ERROR_NOT_SUPPORTED_ON_SBS syscall.Errno = 1254 + ERROR_SERVER_SHUTDOWN_IN_PROGRESS syscall.Errno = 1255 + ERROR_HOST_DOWN syscall.Errno = 1256 + ERROR_NON_ACCOUNT_SID syscall.Errno = 1257 + ERROR_NON_DOMAIN_SID syscall.Errno = 1258 + ERROR_APPHELP_BLOCK syscall.Errno = 1259 + ERROR_ACCESS_DISABLED_BY_POLICY syscall.Errno = 1260 + ERROR_REG_NAT_CONSUMPTION syscall.Errno = 1261 + ERROR_CSCSHARE_OFFLINE syscall.Errno = 1262 + ERROR_PKINIT_FAILURE syscall.Errno = 1263 + ERROR_SMARTCARD_SUBSYSTEM_FAILURE syscall.Errno = 1264 + ERROR_DOWNGRADE_DETECTED syscall.Errno = 1265 + ERROR_MACHINE_LOCKED syscall.Errno = 1271 + ERROR_SMB_GUEST_LOGON_BLOCKED syscall.Errno = 1272 + ERROR_CALLBACK_SUPPLIED_INVALID_DATA syscall.Errno = 1273 + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED syscall.Errno = 1274 + ERROR_DRIVER_BLOCKED syscall.Errno = 1275 + ERROR_INVALID_IMPORT_OF_NON_DLL syscall.Errno = 1276 + ERROR_ACCESS_DISABLED_WEBBLADE syscall.Errno = 1277 + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER syscall.Errno = 1278 + ERROR_RECOVERY_FAILURE syscall.Errno = 1279 + ERROR_ALREADY_FIBER syscall.Errno = 1280 + ERROR_ALREADY_THREAD syscall.Errno = 1281 + ERROR_STACK_BUFFER_OVERRUN syscall.Errno = 1282 + ERROR_PARAMETER_QUOTA_EXCEEDED syscall.Errno = 1283 + ERROR_DEBUGGER_INACTIVE syscall.Errno = 1284 + ERROR_DELAY_LOAD_FAILED syscall.Errno = 1285 + ERROR_VDM_DISALLOWED syscall.Errno = 1286 + ERROR_UNIDENTIFIED_ERROR syscall.Errno = 1287 + ERROR_INVALID_CRUNTIME_PARAMETER syscall.Errno = 1288 + ERROR_BEYOND_VDL syscall.Errno = 1289 + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE syscall.Errno = 1290 + ERROR_DRIVER_PROCESS_TERMINATED syscall.Errno = 1291 + ERROR_IMPLEMENTATION_LIMIT syscall.Errno = 1292 + ERROR_PROCESS_IS_PROTECTED syscall.Errno = 1293 + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING syscall.Errno = 1294 + ERROR_DISK_QUOTA_EXCEEDED syscall.Errno = 1295 + ERROR_CONTENT_BLOCKED syscall.Errno = 1296 + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE syscall.Errno = 1297 + ERROR_APP_HANG syscall.Errno = 1298 + ERROR_INVALID_LABEL syscall.Errno = 1299 + ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 + ERROR_SOME_NOT_MAPPED syscall.Errno = 1301 + ERROR_NO_QUOTAS_FOR_ACCOUNT syscall.Errno = 1302 + ERROR_LOCAL_USER_SESSION_KEY syscall.Errno = 1303 + ERROR_NULL_LM_PASSWORD syscall.Errno = 1304 + ERROR_UNKNOWN_REVISION syscall.Errno = 1305 + ERROR_REVISION_MISMATCH syscall.Errno = 1306 + ERROR_INVALID_OWNER syscall.Errno = 1307 + ERROR_INVALID_PRIMARY_GROUP syscall.Errno = 1308 + ERROR_NO_IMPERSONATION_TOKEN syscall.Errno = 1309 + ERROR_CANT_DISABLE_MANDATORY syscall.Errno = 1310 + ERROR_NO_LOGON_SERVERS syscall.Errno = 1311 + ERROR_NO_SUCH_LOGON_SESSION syscall.Errno = 1312 + ERROR_NO_SUCH_PRIVILEGE syscall.Errno = 1313 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + ERROR_INVALID_ACCOUNT_NAME syscall.Errno = 1315 + ERROR_USER_EXISTS syscall.Errno = 1316 + ERROR_NO_SUCH_USER syscall.Errno = 1317 + ERROR_GROUP_EXISTS syscall.Errno = 1318 + ERROR_NO_SUCH_GROUP syscall.Errno = 1319 + ERROR_MEMBER_IN_GROUP syscall.Errno = 1320 + ERROR_MEMBER_NOT_IN_GROUP syscall.Errno = 1321 + ERROR_LAST_ADMIN syscall.Errno = 1322 + ERROR_WRONG_PASSWORD syscall.Errno = 1323 + ERROR_ILL_FORMED_PASSWORD syscall.Errno = 1324 + ERROR_PASSWORD_RESTRICTION syscall.Errno = 1325 + ERROR_LOGON_FAILURE syscall.Errno = 1326 + ERROR_ACCOUNT_RESTRICTION syscall.Errno = 1327 + ERROR_INVALID_LOGON_HOURS syscall.Errno = 1328 + ERROR_INVALID_WORKSTATION syscall.Errno = 1329 + ERROR_PASSWORD_EXPIRED syscall.Errno = 1330 + ERROR_ACCOUNT_DISABLED syscall.Errno = 1331 + ERROR_NONE_MAPPED syscall.Errno = 1332 + ERROR_TOO_MANY_LUIDS_REQUESTED syscall.Errno = 1333 + ERROR_LUIDS_EXHAUSTED syscall.Errno = 1334 + ERROR_INVALID_SUB_AUTHORITY syscall.Errno = 1335 + ERROR_INVALID_ACL syscall.Errno = 1336 + ERROR_INVALID_SID syscall.Errno = 1337 + ERROR_INVALID_SECURITY_DESCR syscall.Errno = 1338 + ERROR_BAD_INHERITANCE_ACL syscall.Errno = 1340 + ERROR_SERVER_DISABLED syscall.Errno = 1341 + ERROR_SERVER_NOT_DISABLED syscall.Errno = 1342 + ERROR_INVALID_ID_AUTHORITY syscall.Errno = 1343 + ERROR_ALLOTTED_SPACE_EXCEEDED syscall.Errno = 1344 + ERROR_INVALID_GROUP_ATTRIBUTES syscall.Errno = 1345 + ERROR_BAD_IMPERSONATION_LEVEL syscall.Errno = 1346 + ERROR_CANT_OPEN_ANONYMOUS syscall.Errno = 1347 + ERROR_BAD_VALIDATION_CLASS syscall.Errno = 1348 + ERROR_BAD_TOKEN_TYPE syscall.Errno = 1349 + ERROR_NO_SECURITY_ON_OBJECT syscall.Errno = 1350 + ERROR_CANT_ACCESS_DOMAIN_INFO syscall.Errno = 1351 + ERROR_INVALID_SERVER_STATE syscall.Errno = 1352 + ERROR_INVALID_DOMAIN_STATE syscall.Errno = 1353 + ERROR_INVALID_DOMAIN_ROLE syscall.Errno = 1354 + ERROR_NO_SUCH_DOMAIN syscall.Errno = 1355 + ERROR_DOMAIN_EXISTS syscall.Errno = 1356 + ERROR_DOMAIN_LIMIT_EXCEEDED syscall.Errno = 1357 + ERROR_INTERNAL_DB_CORRUPTION syscall.Errno = 1358 + ERROR_INTERNAL_ERROR syscall.Errno = 1359 + ERROR_GENERIC_NOT_MAPPED syscall.Errno = 1360 + ERROR_BAD_DESCRIPTOR_FORMAT syscall.Errno = 1361 + ERROR_NOT_LOGON_PROCESS syscall.Errno = 1362 + ERROR_LOGON_SESSION_EXISTS syscall.Errno = 1363 + ERROR_NO_SUCH_PACKAGE syscall.Errno = 1364 + ERROR_BAD_LOGON_SESSION_STATE syscall.Errno = 1365 + ERROR_LOGON_SESSION_COLLISION syscall.Errno = 1366 + ERROR_INVALID_LOGON_TYPE syscall.Errno = 1367 + ERROR_CANNOT_IMPERSONATE syscall.Errno = 1368 + ERROR_RXACT_INVALID_STATE syscall.Errno = 1369 + ERROR_RXACT_COMMIT_FAILURE syscall.Errno = 1370 + ERROR_SPECIAL_ACCOUNT syscall.Errno = 1371 + ERROR_SPECIAL_GROUP syscall.Errno = 1372 + ERROR_SPECIAL_USER syscall.Errno = 1373 + ERROR_MEMBERS_PRIMARY_GROUP syscall.Errno = 1374 + ERROR_TOKEN_ALREADY_IN_USE syscall.Errno = 1375 + ERROR_NO_SUCH_ALIAS syscall.Errno = 1376 + ERROR_MEMBER_NOT_IN_ALIAS syscall.Errno = 1377 + ERROR_MEMBER_IN_ALIAS syscall.Errno = 1378 + ERROR_ALIAS_EXISTS syscall.Errno = 1379 + ERROR_LOGON_NOT_GRANTED syscall.Errno = 1380 + ERROR_TOO_MANY_SECRETS syscall.Errno = 1381 + ERROR_SECRET_TOO_LONG syscall.Errno = 1382 + ERROR_INTERNAL_DB_ERROR syscall.Errno = 1383 + ERROR_TOO_MANY_CONTEXT_IDS syscall.Errno = 1384 + ERROR_LOGON_TYPE_NOT_GRANTED syscall.Errno = 1385 + ERROR_NT_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1386 + ERROR_NO_SUCH_MEMBER syscall.Errno = 1387 + ERROR_INVALID_MEMBER syscall.Errno = 1388 + ERROR_TOO_MANY_SIDS syscall.Errno = 1389 + ERROR_LM_CROSS_ENCRYPTION_REQUIRED syscall.Errno = 1390 + ERROR_NO_INHERITANCE syscall.Errno = 1391 + ERROR_FILE_CORRUPT syscall.Errno = 1392 + ERROR_DISK_CORRUPT syscall.Errno = 1393 + ERROR_NO_USER_SESSION_KEY syscall.Errno = 1394 + ERROR_LICENSE_QUOTA_EXCEEDED syscall.Errno = 1395 + ERROR_WRONG_TARGET_NAME syscall.Errno = 1396 + ERROR_MUTUAL_AUTH_FAILED syscall.Errno = 1397 + ERROR_TIME_SKEW syscall.Errno = 1398 + ERROR_CURRENT_DOMAIN_NOT_ALLOWED syscall.Errno = 1399 + ERROR_INVALID_WINDOW_HANDLE syscall.Errno = 1400 + ERROR_INVALID_MENU_HANDLE syscall.Errno = 1401 + ERROR_INVALID_CURSOR_HANDLE syscall.Errno = 1402 + ERROR_INVALID_ACCEL_HANDLE syscall.Errno = 1403 + ERROR_INVALID_HOOK_HANDLE syscall.Errno = 1404 + ERROR_INVALID_DWP_HANDLE syscall.Errno = 1405 + ERROR_TLW_WITH_WSCHILD syscall.Errno = 1406 + ERROR_CANNOT_FIND_WND_CLASS syscall.Errno = 1407 + ERROR_WINDOW_OF_OTHER_THREAD syscall.Errno = 1408 + ERROR_HOTKEY_ALREADY_REGISTERED syscall.Errno = 1409 + ERROR_CLASS_ALREADY_EXISTS syscall.Errno = 1410 + ERROR_CLASS_DOES_NOT_EXIST syscall.Errno = 1411 + ERROR_CLASS_HAS_WINDOWS syscall.Errno = 1412 + ERROR_INVALID_INDEX syscall.Errno = 1413 + ERROR_INVALID_ICON_HANDLE syscall.Errno = 1414 + ERROR_PRIVATE_DIALOG_INDEX syscall.Errno = 1415 + ERROR_LISTBOX_ID_NOT_FOUND syscall.Errno = 1416 + ERROR_NO_WILDCARD_CHARACTERS syscall.Errno = 1417 + ERROR_CLIPBOARD_NOT_OPEN syscall.Errno = 1418 + ERROR_HOTKEY_NOT_REGISTERED syscall.Errno = 1419 + ERROR_WINDOW_NOT_DIALOG syscall.Errno = 1420 + ERROR_CONTROL_ID_NOT_FOUND syscall.Errno = 1421 + ERROR_INVALID_COMBOBOX_MESSAGE syscall.Errno = 1422 + ERROR_WINDOW_NOT_COMBOBOX syscall.Errno = 1423 + ERROR_INVALID_EDIT_HEIGHT syscall.Errno = 1424 + ERROR_DC_NOT_FOUND syscall.Errno = 1425 + ERROR_INVALID_HOOK_FILTER syscall.Errno = 1426 + ERROR_INVALID_FILTER_PROC syscall.Errno = 1427 + ERROR_HOOK_NEEDS_HMOD syscall.Errno = 1428 + ERROR_GLOBAL_ONLY_HOOK syscall.Errno = 1429 + ERROR_JOURNAL_HOOK_SET syscall.Errno = 1430 + ERROR_HOOK_NOT_INSTALLED syscall.Errno = 1431 + ERROR_INVALID_LB_MESSAGE syscall.Errno = 1432 + ERROR_SETCOUNT_ON_BAD_LB syscall.Errno = 1433 + ERROR_LB_WITHOUT_TABSTOPS syscall.Errno = 1434 + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD syscall.Errno = 1435 + ERROR_CHILD_WINDOW_MENU syscall.Errno = 1436 + ERROR_NO_SYSTEM_MENU syscall.Errno = 1437 + ERROR_INVALID_MSGBOX_STYLE syscall.Errno = 1438 + ERROR_INVALID_SPI_VALUE syscall.Errno = 1439 + ERROR_SCREEN_ALREADY_LOCKED syscall.Errno = 1440 + ERROR_HWNDS_HAVE_DIFF_PARENT syscall.Errno = 1441 + ERROR_NOT_CHILD_WINDOW syscall.Errno = 1442 + ERROR_INVALID_GW_COMMAND syscall.Errno = 1443 + ERROR_INVALID_THREAD_ID syscall.Errno = 1444 + ERROR_NON_MDICHILD_WINDOW syscall.Errno = 1445 + ERROR_POPUP_ALREADY_ACTIVE syscall.Errno = 1446 + ERROR_NO_SCROLLBARS syscall.Errno = 1447 + ERROR_INVALID_SCROLLBAR_RANGE syscall.Errno = 1448 + ERROR_INVALID_SHOWWIN_COMMAND syscall.Errno = 1449 + ERROR_NO_SYSTEM_RESOURCES syscall.Errno = 1450 + ERROR_NONPAGED_SYSTEM_RESOURCES syscall.Errno = 1451 + ERROR_PAGED_SYSTEM_RESOURCES syscall.Errno = 1452 + ERROR_WORKING_SET_QUOTA syscall.Errno = 1453 + ERROR_PAGEFILE_QUOTA syscall.Errno = 1454 + ERROR_COMMITMENT_LIMIT syscall.Errno = 1455 + ERROR_MENU_ITEM_NOT_FOUND syscall.Errno = 1456 + ERROR_INVALID_KEYBOARD_HANDLE syscall.Errno = 1457 + ERROR_HOOK_TYPE_NOT_ALLOWED syscall.Errno = 1458 + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION syscall.Errno = 1459 + ERROR_TIMEOUT syscall.Errno = 1460 + ERROR_INVALID_MONITOR_HANDLE syscall.Errno = 1461 + ERROR_INCORRECT_SIZE syscall.Errno = 1462 + ERROR_SYMLINK_CLASS_DISABLED syscall.Errno = 1463 + ERROR_SYMLINK_NOT_SUPPORTED syscall.Errno = 1464 + ERROR_XML_PARSE_ERROR syscall.Errno = 1465 + ERROR_XMLDSIG_ERROR syscall.Errno = 1466 + ERROR_RESTART_APPLICATION syscall.Errno = 1467 + ERROR_WRONG_COMPARTMENT syscall.Errno = 1468 + ERROR_AUTHIP_FAILURE syscall.Errno = 1469 + ERROR_NO_NVRAM_RESOURCES syscall.Errno = 1470 + ERROR_NOT_GUI_PROCESS syscall.Errno = 1471 + ERROR_EVENTLOG_FILE_CORRUPT syscall.Errno = 1500 + ERROR_EVENTLOG_CANT_START syscall.Errno = 1501 + ERROR_LOG_FILE_FULL syscall.Errno = 1502 + ERROR_EVENTLOG_FILE_CHANGED syscall.Errno = 1503 + ERROR_CONTAINER_ASSIGNED syscall.Errno = 1504 + ERROR_JOB_NO_CONTAINER syscall.Errno = 1505 + ERROR_INVALID_TASK_NAME syscall.Errno = 1550 + ERROR_INVALID_TASK_INDEX syscall.Errno = 1551 + ERROR_THREAD_ALREADY_IN_TASK syscall.Errno = 1552 + ERROR_INSTALL_SERVICE_FAILURE syscall.Errno = 1601 + ERROR_INSTALL_USEREXIT syscall.Errno = 1602 + ERROR_INSTALL_FAILURE syscall.Errno = 1603 + ERROR_INSTALL_SUSPEND syscall.Errno = 1604 + ERROR_UNKNOWN_PRODUCT syscall.Errno = 1605 + ERROR_UNKNOWN_FEATURE syscall.Errno = 1606 + ERROR_UNKNOWN_COMPONENT syscall.Errno = 1607 + ERROR_UNKNOWN_PROPERTY syscall.Errno = 1608 + ERROR_INVALID_HANDLE_STATE syscall.Errno = 1609 + ERROR_BAD_CONFIGURATION syscall.Errno = 1610 + ERROR_INDEX_ABSENT syscall.Errno = 1611 + ERROR_INSTALL_SOURCE_ABSENT syscall.Errno = 1612 + ERROR_INSTALL_PACKAGE_VERSION syscall.Errno = 1613 + ERROR_PRODUCT_UNINSTALLED syscall.Errno = 1614 + ERROR_BAD_QUERY_SYNTAX syscall.Errno = 1615 + ERROR_INVALID_FIELD syscall.Errno = 1616 + ERROR_DEVICE_REMOVED syscall.Errno = 1617 + ERROR_INSTALL_ALREADY_RUNNING syscall.Errno = 1618 + ERROR_INSTALL_PACKAGE_OPEN_FAILED syscall.Errno = 1619 + ERROR_INSTALL_PACKAGE_INVALID syscall.Errno = 1620 + ERROR_INSTALL_UI_FAILURE syscall.Errno = 1621 + ERROR_INSTALL_LOG_FAILURE syscall.Errno = 1622 + ERROR_INSTALL_LANGUAGE_UNSUPPORTED syscall.Errno = 1623 + ERROR_INSTALL_TRANSFORM_FAILURE syscall.Errno = 1624 + ERROR_INSTALL_PACKAGE_REJECTED syscall.Errno = 1625 + ERROR_FUNCTION_NOT_CALLED syscall.Errno = 1626 + ERROR_FUNCTION_FAILED syscall.Errno = 1627 + ERROR_INVALID_TABLE syscall.Errno = 1628 + ERROR_DATATYPE_MISMATCH syscall.Errno = 1629 + ERROR_UNSUPPORTED_TYPE syscall.Errno = 1630 + ERROR_CREATE_FAILED syscall.Errno = 1631 + ERROR_INSTALL_TEMP_UNWRITABLE syscall.Errno = 1632 + ERROR_INSTALL_PLATFORM_UNSUPPORTED syscall.Errno = 1633 + ERROR_INSTALL_NOTUSED syscall.Errno = 1634 + ERROR_PATCH_PACKAGE_OPEN_FAILED syscall.Errno = 1635 + ERROR_PATCH_PACKAGE_INVALID syscall.Errno = 1636 + ERROR_PATCH_PACKAGE_UNSUPPORTED syscall.Errno = 1637 + ERROR_PRODUCT_VERSION syscall.Errno = 1638 + ERROR_INVALID_COMMAND_LINE syscall.Errno = 1639 + ERROR_INSTALL_REMOTE_DISALLOWED syscall.Errno = 1640 + ERROR_SUCCESS_REBOOT_INITIATED syscall.Errno = 1641 + ERROR_PATCH_TARGET_NOT_FOUND syscall.Errno = 1642 + ERROR_PATCH_PACKAGE_REJECTED syscall.Errno = 1643 + ERROR_INSTALL_TRANSFORM_REJECTED syscall.Errno = 1644 + ERROR_INSTALL_REMOTE_PROHIBITED syscall.Errno = 1645 + ERROR_PATCH_REMOVAL_UNSUPPORTED syscall.Errno = 1646 + ERROR_UNKNOWN_PATCH syscall.Errno = 1647 + ERROR_PATCH_NO_SEQUENCE syscall.Errno = 1648 + ERROR_PATCH_REMOVAL_DISALLOWED syscall.Errno = 1649 + ERROR_INVALID_PATCH_XML syscall.Errno = 1650 + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT syscall.Errno = 1651 + ERROR_INSTALL_SERVICE_SAFEBOOT syscall.Errno = 1652 + ERROR_FAIL_FAST_EXCEPTION syscall.Errno = 1653 + ERROR_INSTALL_REJECTED syscall.Errno = 1654 + ERROR_DYNAMIC_CODE_BLOCKED syscall.Errno = 1655 + ERROR_NOT_SAME_OBJECT syscall.Errno = 1656 + ERROR_STRICT_CFG_VIOLATION syscall.Errno = 1657 + ERROR_SET_CONTEXT_DENIED syscall.Errno = 1660 + ERROR_CROSS_PARTITION_VIOLATION syscall.Errno = 1661 + RPC_S_INVALID_STRING_BINDING syscall.Errno = 1700 + RPC_S_WRONG_KIND_OF_BINDING syscall.Errno = 1701 + RPC_S_INVALID_BINDING syscall.Errno = 1702 + RPC_S_PROTSEQ_NOT_SUPPORTED syscall.Errno = 1703 + RPC_S_INVALID_RPC_PROTSEQ syscall.Errno = 1704 + RPC_S_INVALID_STRING_UUID syscall.Errno = 1705 + RPC_S_INVALID_ENDPOINT_FORMAT syscall.Errno = 1706 + RPC_S_INVALID_NET_ADDR syscall.Errno = 1707 + RPC_S_NO_ENDPOINT_FOUND syscall.Errno = 1708 + RPC_S_INVALID_TIMEOUT syscall.Errno = 1709 + RPC_S_OBJECT_NOT_FOUND syscall.Errno = 1710 + RPC_S_ALREADY_REGISTERED syscall.Errno = 1711 + RPC_S_TYPE_ALREADY_REGISTERED syscall.Errno = 1712 + RPC_S_ALREADY_LISTENING syscall.Errno = 1713 + RPC_S_NO_PROTSEQS_REGISTERED syscall.Errno = 1714 + RPC_S_NOT_LISTENING syscall.Errno = 1715 + RPC_S_UNKNOWN_MGR_TYPE syscall.Errno = 1716 + RPC_S_UNKNOWN_IF syscall.Errno = 1717 + RPC_S_NO_BINDINGS syscall.Errno = 1718 + RPC_S_NO_PROTSEQS syscall.Errno = 1719 + RPC_S_CANT_CREATE_ENDPOINT syscall.Errno = 1720 + RPC_S_OUT_OF_RESOURCES syscall.Errno = 1721 + RPC_S_SERVER_UNAVAILABLE syscall.Errno = 1722 + RPC_S_SERVER_TOO_BUSY syscall.Errno = 1723 + RPC_S_INVALID_NETWORK_OPTIONS syscall.Errno = 1724 + RPC_S_NO_CALL_ACTIVE syscall.Errno = 1725 + RPC_S_CALL_FAILED syscall.Errno = 1726 + RPC_S_CALL_FAILED_DNE syscall.Errno = 1727 + RPC_S_PROTOCOL_ERROR syscall.Errno = 1728 + RPC_S_PROXY_ACCESS_DENIED syscall.Errno = 1729 + RPC_S_UNSUPPORTED_TRANS_SYN syscall.Errno = 1730 + RPC_S_UNSUPPORTED_TYPE syscall.Errno = 1732 + RPC_S_INVALID_TAG syscall.Errno = 1733 + RPC_S_INVALID_BOUND syscall.Errno = 1734 + RPC_S_NO_ENTRY_NAME syscall.Errno = 1735 + RPC_S_INVALID_NAME_SYNTAX syscall.Errno = 1736 + RPC_S_UNSUPPORTED_NAME_SYNTAX syscall.Errno = 1737 + RPC_S_UUID_NO_ADDRESS syscall.Errno = 1739 + RPC_S_DUPLICATE_ENDPOINT syscall.Errno = 1740 + RPC_S_UNKNOWN_AUTHN_TYPE syscall.Errno = 1741 + RPC_S_MAX_CALLS_TOO_SMALL syscall.Errno = 1742 + RPC_S_STRING_TOO_LONG syscall.Errno = 1743 + RPC_S_PROTSEQ_NOT_FOUND syscall.Errno = 1744 + RPC_S_PROCNUM_OUT_OF_RANGE syscall.Errno = 1745 + RPC_S_BINDING_HAS_NO_AUTH syscall.Errno = 1746 + RPC_S_UNKNOWN_AUTHN_SERVICE syscall.Errno = 1747 + RPC_S_UNKNOWN_AUTHN_LEVEL syscall.Errno = 1748 + RPC_S_INVALID_AUTH_IDENTITY syscall.Errno = 1749 + RPC_S_UNKNOWN_AUTHZ_SERVICE syscall.Errno = 1750 + EPT_S_INVALID_ENTRY syscall.Errno = 1751 + EPT_S_CANT_PERFORM_OP syscall.Errno = 1752 + EPT_S_NOT_REGISTERED syscall.Errno = 1753 + RPC_S_NOTHING_TO_EXPORT syscall.Errno = 1754 + RPC_S_INCOMPLETE_NAME syscall.Errno = 1755 + RPC_S_INVALID_VERS_OPTION syscall.Errno = 1756 + RPC_S_NO_MORE_MEMBERS syscall.Errno = 1757 + RPC_S_NOT_ALL_OBJS_UNEXPORTED syscall.Errno = 1758 + RPC_S_INTERFACE_NOT_FOUND syscall.Errno = 1759 + RPC_S_ENTRY_ALREADY_EXISTS syscall.Errno = 1760 + RPC_S_ENTRY_NOT_FOUND syscall.Errno = 1761 + RPC_S_NAME_SERVICE_UNAVAILABLE syscall.Errno = 1762 + RPC_S_INVALID_NAF_ID syscall.Errno = 1763 + RPC_S_CANNOT_SUPPORT syscall.Errno = 1764 + RPC_S_NO_CONTEXT_AVAILABLE syscall.Errno = 1765 + RPC_S_INTERNAL_ERROR syscall.Errno = 1766 + RPC_S_ZERO_DIVIDE syscall.Errno = 1767 + RPC_S_ADDRESS_ERROR syscall.Errno = 1768 + RPC_S_FP_DIV_ZERO syscall.Errno = 1769 + RPC_S_FP_UNDERFLOW syscall.Errno = 1770 + RPC_S_FP_OVERFLOW syscall.Errno = 1771 + RPC_X_NO_MORE_ENTRIES syscall.Errno = 1772 + RPC_X_SS_CHAR_TRANS_OPEN_FAIL syscall.Errno = 1773 + RPC_X_SS_CHAR_TRANS_SHORT_FILE syscall.Errno = 1774 + RPC_X_SS_IN_NULL_CONTEXT syscall.Errno = 1775 + RPC_X_SS_CONTEXT_DAMAGED syscall.Errno = 1777 + RPC_X_SS_HANDLES_MISMATCH syscall.Errno = 1778 + RPC_X_SS_CANNOT_GET_CALL_HANDLE syscall.Errno = 1779 + RPC_X_NULL_REF_POINTER syscall.Errno = 1780 + RPC_X_ENUM_VALUE_OUT_OF_RANGE syscall.Errno = 1781 + RPC_X_BYTE_COUNT_TOO_SMALL syscall.Errno = 1782 + RPC_X_BAD_STUB_DATA syscall.Errno = 1783 + ERROR_INVALID_USER_BUFFER syscall.Errno = 1784 + ERROR_UNRECOGNIZED_MEDIA syscall.Errno = 1785 + ERROR_NO_TRUST_LSA_SECRET syscall.Errno = 1786 + ERROR_NO_TRUST_SAM_ACCOUNT syscall.Errno = 1787 + ERROR_TRUSTED_DOMAIN_FAILURE syscall.Errno = 1788 + ERROR_TRUSTED_RELATIONSHIP_FAILURE syscall.Errno = 1789 + ERROR_TRUST_FAILURE syscall.Errno = 1790 + RPC_S_CALL_IN_PROGRESS syscall.Errno = 1791 + ERROR_NETLOGON_NOT_STARTED syscall.Errno = 1792 + ERROR_ACCOUNT_EXPIRED syscall.Errno = 1793 + ERROR_REDIRECTOR_HAS_OPEN_HANDLES syscall.Errno = 1794 + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED syscall.Errno = 1795 + ERROR_UNKNOWN_PORT syscall.Errno = 1796 + ERROR_UNKNOWN_PRINTER_DRIVER syscall.Errno = 1797 + ERROR_UNKNOWN_PRINTPROCESSOR syscall.Errno = 1798 + ERROR_INVALID_SEPARATOR_FILE syscall.Errno = 1799 + ERROR_INVALID_PRIORITY syscall.Errno = 1800 + ERROR_INVALID_PRINTER_NAME syscall.Errno = 1801 + ERROR_PRINTER_ALREADY_EXISTS syscall.Errno = 1802 + ERROR_INVALID_PRINTER_COMMAND syscall.Errno = 1803 + ERROR_INVALID_DATATYPE syscall.Errno = 1804 + ERROR_INVALID_ENVIRONMENT syscall.Errno = 1805 + RPC_S_NO_MORE_BINDINGS syscall.Errno = 1806 + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT syscall.Errno = 1807 + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT syscall.Errno = 1808 + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT syscall.Errno = 1809 + ERROR_DOMAIN_TRUST_INCONSISTENT syscall.Errno = 1810 + ERROR_SERVER_HAS_OPEN_HANDLES syscall.Errno = 1811 + ERROR_RESOURCE_DATA_NOT_FOUND syscall.Errno = 1812 + ERROR_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 1813 + ERROR_RESOURCE_NAME_NOT_FOUND syscall.Errno = 1814 + ERROR_RESOURCE_LANG_NOT_FOUND syscall.Errno = 1815 + ERROR_NOT_ENOUGH_QUOTA syscall.Errno = 1816 + RPC_S_NO_INTERFACES syscall.Errno = 1817 + RPC_S_CALL_CANCELLED syscall.Errno = 1818 + RPC_S_BINDING_INCOMPLETE syscall.Errno = 1819 + RPC_S_COMM_FAILURE syscall.Errno = 1820 + RPC_S_UNSUPPORTED_AUTHN_LEVEL syscall.Errno = 1821 + RPC_S_NO_PRINC_NAME syscall.Errno = 1822 + RPC_S_NOT_RPC_ERROR syscall.Errno = 1823 + RPC_S_UUID_LOCAL_ONLY syscall.Errno = 1824 + RPC_S_SEC_PKG_ERROR syscall.Errno = 1825 + RPC_S_NOT_CANCELLED syscall.Errno = 1826 + RPC_X_INVALID_ES_ACTION syscall.Errno = 1827 + RPC_X_WRONG_ES_VERSION syscall.Errno = 1828 + RPC_X_WRONG_STUB_VERSION syscall.Errno = 1829 + RPC_X_INVALID_PIPE_OBJECT syscall.Errno = 1830 + RPC_X_WRONG_PIPE_ORDER syscall.Errno = 1831 + RPC_X_WRONG_PIPE_VERSION syscall.Errno = 1832 + RPC_S_COOKIE_AUTH_FAILED syscall.Errno = 1833 + RPC_S_DO_NOT_DISTURB syscall.Errno = 1834 + RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED syscall.Errno = 1835 + RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH syscall.Errno = 1836 + RPC_S_GROUP_MEMBER_NOT_FOUND syscall.Errno = 1898 + EPT_S_CANT_CREATE syscall.Errno = 1899 + RPC_S_INVALID_OBJECT syscall.Errno = 1900 + ERROR_INVALID_TIME syscall.Errno = 1901 + ERROR_INVALID_FORM_NAME syscall.Errno = 1902 + ERROR_INVALID_FORM_SIZE syscall.Errno = 1903 + ERROR_ALREADY_WAITING syscall.Errno = 1904 + ERROR_PRINTER_DELETED syscall.Errno = 1905 + ERROR_INVALID_PRINTER_STATE syscall.Errno = 1906 + ERROR_PASSWORD_MUST_CHANGE syscall.Errno = 1907 + ERROR_DOMAIN_CONTROLLER_NOT_FOUND syscall.Errno = 1908 + ERROR_ACCOUNT_LOCKED_OUT syscall.Errno = 1909 + OR_INVALID_OXID syscall.Errno = 1910 + OR_INVALID_OID syscall.Errno = 1911 + OR_INVALID_SET syscall.Errno = 1912 + RPC_S_SEND_INCOMPLETE syscall.Errno = 1913 + RPC_S_INVALID_ASYNC_HANDLE syscall.Errno = 1914 + RPC_S_INVALID_ASYNC_CALL syscall.Errno = 1915 + RPC_X_PIPE_CLOSED syscall.Errno = 1916 + RPC_X_PIPE_DISCIPLINE_ERROR syscall.Errno = 1917 + RPC_X_PIPE_EMPTY syscall.Errno = 1918 + ERROR_NO_SITENAME syscall.Errno = 1919 + ERROR_CANT_ACCESS_FILE syscall.Errno = 1920 + ERROR_CANT_RESOLVE_FILENAME syscall.Errno = 1921 + RPC_S_ENTRY_TYPE_MISMATCH syscall.Errno = 1922 + RPC_S_NOT_ALL_OBJS_EXPORTED syscall.Errno = 1923 + RPC_S_INTERFACE_NOT_EXPORTED syscall.Errno = 1924 + RPC_S_PROFILE_NOT_ADDED syscall.Errno = 1925 + RPC_S_PRF_ELT_NOT_ADDED syscall.Errno = 1926 + RPC_S_PRF_ELT_NOT_REMOVED syscall.Errno = 1927 + RPC_S_GRP_ELT_NOT_ADDED syscall.Errno = 1928 + RPC_S_GRP_ELT_NOT_REMOVED syscall.Errno = 1929 + ERROR_KM_DRIVER_BLOCKED syscall.Errno = 1930 + ERROR_CONTEXT_EXPIRED syscall.Errno = 1931 + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1932 + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED syscall.Errno = 1933 + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED syscall.Errno = 1934 + ERROR_AUTHENTICATION_FIREWALL_FAILED syscall.Errno = 1935 + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED syscall.Errno = 1936 + ERROR_NTLM_BLOCKED syscall.Errno = 1937 + ERROR_PASSWORD_CHANGE_REQUIRED syscall.Errno = 1938 + ERROR_LOST_MODE_LOGON_RESTRICTION syscall.Errno = 1939 + ERROR_INVALID_PIXEL_FORMAT syscall.Errno = 2000 + ERROR_BAD_DRIVER syscall.Errno = 2001 + ERROR_INVALID_WINDOW_STYLE syscall.Errno = 2002 + ERROR_METAFILE_NOT_SUPPORTED syscall.Errno = 2003 + ERROR_TRANSFORM_NOT_SUPPORTED syscall.Errno = 2004 + ERROR_CLIPPING_NOT_SUPPORTED syscall.Errno = 2005 + ERROR_INVALID_CMM syscall.Errno = 2010 + ERROR_INVALID_PROFILE syscall.Errno = 2011 + ERROR_TAG_NOT_FOUND syscall.Errno = 2012 + ERROR_TAG_NOT_PRESENT syscall.Errno = 2013 + ERROR_DUPLICATE_TAG syscall.Errno = 2014 + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE syscall.Errno = 2015 + ERROR_PROFILE_NOT_FOUND syscall.Errno = 2016 + ERROR_INVALID_COLORSPACE syscall.Errno = 2017 + ERROR_ICM_NOT_ENABLED syscall.Errno = 2018 + ERROR_DELETING_ICM_XFORM syscall.Errno = 2019 + ERROR_INVALID_TRANSFORM syscall.Errno = 2020 + ERROR_COLORSPACE_MISMATCH syscall.Errno = 2021 + ERROR_INVALID_COLORINDEX syscall.Errno = 2022 + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE syscall.Errno = 2023 + ERROR_CONNECTED_OTHER_PASSWORD syscall.Errno = 2108 + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT syscall.Errno = 2109 + ERROR_BAD_USERNAME syscall.Errno = 2202 + ERROR_NOT_CONNECTED syscall.Errno = 2250 + ERROR_OPEN_FILES syscall.Errno = 2401 + ERROR_ACTIVE_CONNECTIONS syscall.Errno = 2402 + ERROR_DEVICE_IN_USE syscall.Errno = 2404 + ERROR_UNKNOWN_PRINT_MONITOR syscall.Errno = 3000 + ERROR_PRINTER_DRIVER_IN_USE syscall.Errno = 3001 + ERROR_SPOOL_FILE_NOT_FOUND syscall.Errno = 3002 + ERROR_SPL_NO_STARTDOC syscall.Errno = 3003 + ERROR_SPL_NO_ADDJOB syscall.Errno = 3004 + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED syscall.Errno = 3005 + ERROR_PRINT_MONITOR_ALREADY_INSTALLED syscall.Errno = 3006 + ERROR_INVALID_PRINT_MONITOR syscall.Errno = 3007 + ERROR_PRINT_MONITOR_IN_USE syscall.Errno = 3008 + ERROR_PRINTER_HAS_JOBS_QUEUED syscall.Errno = 3009 + ERROR_SUCCESS_REBOOT_REQUIRED syscall.Errno = 3010 + ERROR_SUCCESS_RESTART_REQUIRED syscall.Errno = 3011 + ERROR_PRINTER_NOT_FOUND syscall.Errno = 3012 + ERROR_PRINTER_DRIVER_WARNED syscall.Errno = 3013 + ERROR_PRINTER_DRIVER_BLOCKED syscall.Errno = 3014 + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE syscall.Errno = 3015 + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND syscall.Errno = 3016 + ERROR_FAIL_REBOOT_REQUIRED syscall.Errno = 3017 + ERROR_FAIL_REBOOT_INITIATED syscall.Errno = 3018 + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED syscall.Errno = 3019 + ERROR_PRINT_JOB_RESTART_REQUIRED syscall.Errno = 3020 + ERROR_INVALID_PRINTER_DRIVER_MANIFEST syscall.Errno = 3021 + ERROR_PRINTER_NOT_SHAREABLE syscall.Errno = 3022 + ERROR_REQUEST_PAUSED syscall.Errno = 3050 + ERROR_APPEXEC_CONDITION_NOT_SATISFIED syscall.Errno = 3060 + ERROR_APPEXEC_HANDLE_INVALIDATED syscall.Errno = 3061 + ERROR_APPEXEC_INVALID_HOST_GENERATION syscall.Errno = 3062 + ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION syscall.Errno = 3063 + ERROR_APPEXEC_INVALID_HOST_STATE syscall.Errno = 3064 + ERROR_APPEXEC_NO_DONOR syscall.Errno = 3065 + ERROR_APPEXEC_HOST_ID_MISMATCH syscall.Errno = 3066 + ERROR_APPEXEC_UNKNOWN_USER syscall.Errno = 3067 + ERROR_IO_REISSUE_AS_CACHED syscall.Errno = 3950 + ERROR_WINS_INTERNAL syscall.Errno = 4000 + ERROR_CAN_NOT_DEL_LOCAL_WINS syscall.Errno = 4001 + ERROR_STATIC_INIT syscall.Errno = 4002 + ERROR_INC_BACKUP syscall.Errno = 4003 + ERROR_FULL_BACKUP syscall.Errno = 4004 + ERROR_REC_NON_EXISTENT syscall.Errno = 4005 + ERROR_RPL_NOT_ALLOWED syscall.Errno = 4006 + PEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED syscall.Errno = 4050 + PEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO syscall.Errno = 4051 + PEERDIST_ERROR_MISSING_DATA syscall.Errno = 4052 + PEERDIST_ERROR_NO_MORE syscall.Errno = 4053 + PEERDIST_ERROR_NOT_INITIALIZED syscall.Errno = 4054 + PEERDIST_ERROR_ALREADY_INITIALIZED syscall.Errno = 4055 + PEERDIST_ERROR_SHUTDOWN_IN_PROGRESS syscall.Errno = 4056 + PEERDIST_ERROR_INVALIDATED syscall.Errno = 4057 + PEERDIST_ERROR_ALREADY_EXISTS syscall.Errno = 4058 + PEERDIST_ERROR_OPERATION_NOTFOUND syscall.Errno = 4059 + PEERDIST_ERROR_ALREADY_COMPLETED syscall.Errno = 4060 + PEERDIST_ERROR_OUT_OF_BOUNDS syscall.Errno = 4061 + PEERDIST_ERROR_VERSION_UNSUPPORTED syscall.Errno = 4062 + PEERDIST_ERROR_INVALID_CONFIGURATION syscall.Errno = 4063 + PEERDIST_ERROR_NOT_LICENSED syscall.Errno = 4064 + PEERDIST_ERROR_SERVICE_UNAVAILABLE syscall.Errno = 4065 + PEERDIST_ERROR_TRUST_FAILURE syscall.Errno = 4066 + ERROR_DHCP_ADDRESS_CONFLICT syscall.Errno = 4100 + ERROR_WMI_GUID_NOT_FOUND syscall.Errno = 4200 + ERROR_WMI_INSTANCE_NOT_FOUND syscall.Errno = 4201 + ERROR_WMI_ITEMID_NOT_FOUND syscall.Errno = 4202 + ERROR_WMI_TRY_AGAIN syscall.Errno = 4203 + ERROR_WMI_DP_NOT_FOUND syscall.Errno = 4204 + ERROR_WMI_UNRESOLVED_INSTANCE_REF syscall.Errno = 4205 + ERROR_WMI_ALREADY_ENABLED syscall.Errno = 4206 + ERROR_WMI_GUID_DISCONNECTED syscall.Errno = 4207 + ERROR_WMI_SERVER_UNAVAILABLE syscall.Errno = 4208 + ERROR_WMI_DP_FAILED syscall.Errno = 4209 + ERROR_WMI_INVALID_MOF syscall.Errno = 4210 + ERROR_WMI_INVALID_REGINFO syscall.Errno = 4211 + ERROR_WMI_ALREADY_DISABLED syscall.Errno = 4212 + ERROR_WMI_READ_ONLY syscall.Errno = 4213 + ERROR_WMI_SET_FAILURE syscall.Errno = 4214 + ERROR_NOT_APPCONTAINER syscall.Errno = 4250 + ERROR_APPCONTAINER_REQUIRED syscall.Errno = 4251 + ERROR_NOT_SUPPORTED_IN_APPCONTAINER syscall.Errno = 4252 + ERROR_INVALID_PACKAGE_SID_LENGTH syscall.Errno = 4253 + ERROR_INVALID_MEDIA syscall.Errno = 4300 + ERROR_INVALID_LIBRARY syscall.Errno = 4301 + ERROR_INVALID_MEDIA_POOL syscall.Errno = 4302 + ERROR_DRIVE_MEDIA_MISMATCH syscall.Errno = 4303 + ERROR_MEDIA_OFFLINE syscall.Errno = 4304 + ERROR_LIBRARY_OFFLINE syscall.Errno = 4305 + ERROR_EMPTY syscall.Errno = 4306 + ERROR_NOT_EMPTY syscall.Errno = 4307 + ERROR_MEDIA_UNAVAILABLE syscall.Errno = 4308 + ERROR_RESOURCE_DISABLED syscall.Errno = 4309 + ERROR_INVALID_CLEANER syscall.Errno = 4310 + ERROR_UNABLE_TO_CLEAN syscall.Errno = 4311 + ERROR_OBJECT_NOT_FOUND syscall.Errno = 4312 + ERROR_DATABASE_FAILURE syscall.Errno = 4313 + ERROR_DATABASE_FULL syscall.Errno = 4314 + ERROR_MEDIA_INCOMPATIBLE syscall.Errno = 4315 + ERROR_RESOURCE_NOT_PRESENT syscall.Errno = 4316 + ERROR_INVALID_OPERATION syscall.Errno = 4317 + ERROR_MEDIA_NOT_AVAILABLE syscall.Errno = 4318 + ERROR_DEVICE_NOT_AVAILABLE syscall.Errno = 4319 + ERROR_REQUEST_REFUSED syscall.Errno = 4320 + ERROR_INVALID_DRIVE_OBJECT syscall.Errno = 4321 + ERROR_LIBRARY_FULL syscall.Errno = 4322 + ERROR_MEDIUM_NOT_ACCESSIBLE syscall.Errno = 4323 + ERROR_UNABLE_TO_LOAD_MEDIUM syscall.Errno = 4324 + ERROR_UNABLE_TO_INVENTORY_DRIVE syscall.Errno = 4325 + ERROR_UNABLE_TO_INVENTORY_SLOT syscall.Errno = 4326 + ERROR_UNABLE_TO_INVENTORY_TRANSPORT syscall.Errno = 4327 + ERROR_TRANSPORT_FULL syscall.Errno = 4328 + ERROR_CONTROLLING_IEPORT syscall.Errno = 4329 + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA syscall.Errno = 4330 + ERROR_CLEANER_SLOT_SET syscall.Errno = 4331 + ERROR_CLEANER_SLOT_NOT_SET syscall.Errno = 4332 + ERROR_CLEANER_CARTRIDGE_SPENT syscall.Errno = 4333 + ERROR_UNEXPECTED_OMID syscall.Errno = 4334 + ERROR_CANT_DELETE_LAST_ITEM syscall.Errno = 4335 + ERROR_MESSAGE_EXCEEDS_MAX_SIZE syscall.Errno = 4336 + ERROR_VOLUME_CONTAINS_SYS_FILES syscall.Errno = 4337 + ERROR_INDIGENOUS_TYPE syscall.Errno = 4338 + ERROR_NO_SUPPORTING_DRIVES syscall.Errno = 4339 + ERROR_CLEANER_CARTRIDGE_INSTALLED syscall.Errno = 4340 + ERROR_IEPORT_FULL syscall.Errno = 4341 + ERROR_FILE_OFFLINE syscall.Errno = 4350 + ERROR_REMOTE_STORAGE_NOT_ACTIVE syscall.Errno = 4351 + ERROR_REMOTE_STORAGE_MEDIA_ERROR syscall.Errno = 4352 + ERROR_NOT_A_REPARSE_POINT syscall.Errno = 4390 + ERROR_REPARSE_ATTRIBUTE_CONFLICT syscall.Errno = 4391 + ERROR_INVALID_REPARSE_DATA syscall.Errno = 4392 + ERROR_REPARSE_TAG_INVALID syscall.Errno = 4393 + ERROR_REPARSE_TAG_MISMATCH syscall.Errno = 4394 + ERROR_REPARSE_POINT_ENCOUNTERED syscall.Errno = 4395 + ERROR_APP_DATA_NOT_FOUND syscall.Errno = 4400 + ERROR_APP_DATA_EXPIRED syscall.Errno = 4401 + ERROR_APP_DATA_CORRUPT syscall.Errno = 4402 + ERROR_APP_DATA_LIMIT_EXCEEDED syscall.Errno = 4403 + ERROR_APP_DATA_REBOOT_REQUIRED syscall.Errno = 4404 + ERROR_SECUREBOOT_ROLLBACK_DETECTED syscall.Errno = 4420 + ERROR_SECUREBOOT_POLICY_VIOLATION syscall.Errno = 4421 + ERROR_SECUREBOOT_INVALID_POLICY syscall.Errno = 4422 + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND syscall.Errno = 4423 + ERROR_SECUREBOOT_POLICY_NOT_SIGNED syscall.Errno = 4424 + ERROR_SECUREBOOT_NOT_ENABLED syscall.Errno = 4425 + ERROR_SECUREBOOT_FILE_REPLACED syscall.Errno = 4426 + ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED syscall.Errno = 4427 + ERROR_SECUREBOOT_POLICY_UNKNOWN syscall.Errno = 4428 + ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION syscall.Errno = 4429 + ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH syscall.Errno = 4430 + ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED syscall.Errno = 4431 + ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH syscall.Errno = 4432 + ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING syscall.Errno = 4433 + ERROR_SECUREBOOT_NOT_BASE_POLICY syscall.Errno = 4434 + ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY syscall.Errno = 4435 + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED syscall.Errno = 4440 + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED syscall.Errno = 4441 + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED syscall.Errno = 4442 + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED syscall.Errno = 4443 + ERROR_ALREADY_HAS_STREAM_ID syscall.Errno = 4444 + ERROR_SMR_GARBAGE_COLLECTION_REQUIRED syscall.Errno = 4445 + ERROR_WOF_WIM_HEADER_CORRUPT syscall.Errno = 4446 + ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT syscall.Errno = 4447 + ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT syscall.Errno = 4448 + ERROR_VOLUME_NOT_SIS_ENABLED syscall.Errno = 4500 + ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED syscall.Errno = 4550 + ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION syscall.Errno = 4551 + ERROR_SYSTEM_INTEGRITY_INVALID_POLICY syscall.Errno = 4552 + ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED syscall.Errno = 4553 + ERROR_VSM_NOT_INITIALIZED syscall.Errno = 4560 + ERROR_VSM_DMA_PROTECTION_NOT_IN_USE syscall.Errno = 4561 + ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED syscall.Errno = 4570 + ERROR_PLATFORM_MANIFEST_INVALID syscall.Errno = 4571 + ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED syscall.Errno = 4572 + ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED syscall.Errno = 4573 + ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND syscall.Errno = 4574 + ERROR_PLATFORM_MANIFEST_NOT_ACTIVE syscall.Errno = 4575 + ERROR_PLATFORM_MANIFEST_NOT_SIGNED syscall.Errno = 4576 + ERROR_DEPENDENT_RESOURCE_EXISTS syscall.Errno = 5001 + ERROR_DEPENDENCY_NOT_FOUND syscall.Errno = 5002 + ERROR_DEPENDENCY_ALREADY_EXISTS syscall.Errno = 5003 + ERROR_RESOURCE_NOT_ONLINE syscall.Errno = 5004 + ERROR_HOST_NODE_NOT_AVAILABLE syscall.Errno = 5005 + ERROR_RESOURCE_NOT_AVAILABLE syscall.Errno = 5006 + ERROR_RESOURCE_NOT_FOUND syscall.Errno = 5007 + ERROR_SHUTDOWN_CLUSTER syscall.Errno = 5008 + ERROR_CANT_EVICT_ACTIVE_NODE syscall.Errno = 5009 + ERROR_OBJECT_ALREADY_EXISTS syscall.Errno = 5010 + ERROR_OBJECT_IN_LIST syscall.Errno = 5011 + ERROR_GROUP_NOT_AVAILABLE syscall.Errno = 5012 + ERROR_GROUP_NOT_FOUND syscall.Errno = 5013 + ERROR_GROUP_NOT_ONLINE syscall.Errno = 5014 + ERROR_HOST_NODE_NOT_RESOURCE_OWNER syscall.Errno = 5015 + ERROR_HOST_NODE_NOT_GROUP_OWNER syscall.Errno = 5016 + ERROR_RESMON_CREATE_FAILED syscall.Errno = 5017 + ERROR_RESMON_ONLINE_FAILED syscall.Errno = 5018 + ERROR_RESOURCE_ONLINE syscall.Errno = 5019 + ERROR_QUORUM_RESOURCE syscall.Errno = 5020 + ERROR_NOT_QUORUM_CAPABLE syscall.Errno = 5021 + ERROR_CLUSTER_SHUTTING_DOWN syscall.Errno = 5022 + ERROR_INVALID_STATE syscall.Errno = 5023 + ERROR_RESOURCE_PROPERTIES_STORED syscall.Errno = 5024 + ERROR_NOT_QUORUM_CLASS syscall.Errno = 5025 + ERROR_CORE_RESOURCE syscall.Errno = 5026 + ERROR_QUORUM_RESOURCE_ONLINE_FAILED syscall.Errno = 5027 + ERROR_QUORUMLOG_OPEN_FAILED syscall.Errno = 5028 + ERROR_CLUSTERLOG_CORRUPT syscall.Errno = 5029 + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE syscall.Errno = 5030 + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE syscall.Errno = 5031 + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND syscall.Errno = 5032 + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE syscall.Errno = 5033 + ERROR_QUORUM_OWNER_ALIVE syscall.Errno = 5034 + ERROR_NETWORK_NOT_AVAILABLE syscall.Errno = 5035 + ERROR_NODE_NOT_AVAILABLE syscall.Errno = 5036 + ERROR_ALL_NODES_NOT_AVAILABLE syscall.Errno = 5037 + ERROR_RESOURCE_FAILED syscall.Errno = 5038 + ERROR_CLUSTER_INVALID_NODE syscall.Errno = 5039 + ERROR_CLUSTER_NODE_EXISTS syscall.Errno = 5040 + ERROR_CLUSTER_JOIN_IN_PROGRESS syscall.Errno = 5041 + ERROR_CLUSTER_NODE_NOT_FOUND syscall.Errno = 5042 + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND syscall.Errno = 5043 + ERROR_CLUSTER_NETWORK_EXISTS syscall.Errno = 5044 + ERROR_CLUSTER_NETWORK_NOT_FOUND syscall.Errno = 5045 + ERROR_CLUSTER_NETINTERFACE_EXISTS syscall.Errno = 5046 + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND syscall.Errno = 5047 + ERROR_CLUSTER_INVALID_REQUEST syscall.Errno = 5048 + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER syscall.Errno = 5049 + ERROR_CLUSTER_NODE_DOWN syscall.Errno = 5050 + ERROR_CLUSTER_NODE_UNREACHABLE syscall.Errno = 5051 + ERROR_CLUSTER_NODE_NOT_MEMBER syscall.Errno = 5052 + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS syscall.Errno = 5053 + ERROR_CLUSTER_INVALID_NETWORK syscall.Errno = 5054 + ERROR_CLUSTER_NODE_UP syscall.Errno = 5056 + ERROR_CLUSTER_IPADDR_IN_USE syscall.Errno = 5057 + ERROR_CLUSTER_NODE_NOT_PAUSED syscall.Errno = 5058 + ERROR_CLUSTER_NO_SECURITY_CONTEXT syscall.Errno = 5059 + ERROR_CLUSTER_NETWORK_NOT_INTERNAL syscall.Errno = 5060 + ERROR_CLUSTER_NODE_ALREADY_UP syscall.Errno = 5061 + ERROR_CLUSTER_NODE_ALREADY_DOWN syscall.Errno = 5062 + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE syscall.Errno = 5063 + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE syscall.Errno = 5064 + ERROR_CLUSTER_NODE_ALREADY_MEMBER syscall.Errno = 5065 + ERROR_CLUSTER_LAST_INTERNAL_NETWORK syscall.Errno = 5066 + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS syscall.Errno = 5067 + ERROR_INVALID_OPERATION_ON_QUORUM syscall.Errno = 5068 + ERROR_DEPENDENCY_NOT_ALLOWED syscall.Errno = 5069 + ERROR_CLUSTER_NODE_PAUSED syscall.Errno = 5070 + ERROR_NODE_CANT_HOST_RESOURCE syscall.Errno = 5071 + ERROR_CLUSTER_NODE_NOT_READY syscall.Errno = 5072 + ERROR_CLUSTER_NODE_SHUTTING_DOWN syscall.Errno = 5073 + ERROR_CLUSTER_JOIN_ABORTED syscall.Errno = 5074 + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS syscall.Errno = 5075 + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED syscall.Errno = 5076 + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED syscall.Errno = 5077 + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND syscall.Errno = 5078 + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED syscall.Errno = 5079 + ERROR_CLUSTER_RESNAME_NOT_FOUND syscall.Errno = 5080 + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED syscall.Errno = 5081 + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST syscall.Errno = 5082 + ERROR_CLUSTER_DATABASE_SEQMISMATCH syscall.Errno = 5083 + ERROR_RESMON_INVALID_STATE syscall.Errno = 5084 + ERROR_CLUSTER_GUM_NOT_LOCKER syscall.Errno = 5085 + ERROR_QUORUM_DISK_NOT_FOUND syscall.Errno = 5086 + ERROR_DATABASE_BACKUP_CORRUPT syscall.Errno = 5087 + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT syscall.Errno = 5088 + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE syscall.Errno = 5089 + ERROR_NO_ADMIN_ACCESS_POINT syscall.Errno = 5090 + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE syscall.Errno = 5890 + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND syscall.Errno = 5891 + ERROR_CLUSTER_MEMBERSHIP_HALT syscall.Errno = 5892 + ERROR_CLUSTER_INSTANCE_ID_MISMATCH syscall.Errno = 5893 + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP syscall.Errno = 5894 + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH syscall.Errno = 5895 + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP syscall.Errno = 5896 + ERROR_CLUSTER_PARAMETER_MISMATCH syscall.Errno = 5897 + ERROR_NODE_CANNOT_BE_CLUSTERED syscall.Errno = 5898 + ERROR_CLUSTER_WRONG_OS_VERSION syscall.Errno = 5899 + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME syscall.Errno = 5900 + ERROR_CLUSCFG_ALREADY_COMMITTED syscall.Errno = 5901 + ERROR_CLUSCFG_ROLLBACK_FAILED syscall.Errno = 5902 + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT syscall.Errno = 5903 + ERROR_CLUSTER_OLD_VERSION syscall.Errno = 5904 + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME syscall.Errno = 5905 + ERROR_CLUSTER_NO_NET_ADAPTERS syscall.Errno = 5906 + ERROR_CLUSTER_POISONED syscall.Errno = 5907 + ERROR_CLUSTER_GROUP_MOVING syscall.Errno = 5908 + ERROR_CLUSTER_RESOURCE_TYPE_BUSY syscall.Errno = 5909 + ERROR_RESOURCE_CALL_TIMED_OUT syscall.Errno = 5910 + ERROR_INVALID_CLUSTER_IPV6_ADDRESS syscall.Errno = 5911 + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION syscall.Errno = 5912 + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS syscall.Errno = 5913 + ERROR_CLUSTER_PARTIAL_SEND syscall.Errno = 5914 + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION syscall.Errno = 5915 + ERROR_CLUSTER_INVALID_STRING_TERMINATION syscall.Errno = 5916 + ERROR_CLUSTER_INVALID_STRING_FORMAT syscall.Errno = 5917 + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS syscall.Errno = 5918 + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS syscall.Errno = 5919 + ERROR_CLUSTER_NULL_DATA syscall.Errno = 5920 + ERROR_CLUSTER_PARTIAL_READ syscall.Errno = 5921 + ERROR_CLUSTER_PARTIAL_WRITE syscall.Errno = 5922 + ERROR_CLUSTER_CANT_DESERIALIZE_DATA syscall.Errno = 5923 + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT syscall.Errno = 5924 + ERROR_CLUSTER_NO_QUORUM syscall.Errno = 5925 + ERROR_CLUSTER_INVALID_IPV6_NETWORK syscall.Errno = 5926 + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK syscall.Errno = 5927 + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP syscall.Errno = 5928 + ERROR_DEPENDENCY_TREE_TOO_COMPLEX syscall.Errno = 5929 + ERROR_EXCEPTION_IN_RESOURCE_CALL syscall.Errno = 5930 + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION syscall.Errno = 5931 + ERROR_CLUSTER_NOT_INSTALLED syscall.Errno = 5932 + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE syscall.Errno = 5933 + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER syscall.Errno = 5934 + ERROR_CLUSTER_TOO_MANY_NODES syscall.Errno = 5935 + ERROR_CLUSTER_OBJECT_ALREADY_USED syscall.Errno = 5936 + ERROR_NONCORE_GROUPS_FOUND syscall.Errno = 5937 + ERROR_FILE_SHARE_RESOURCE_CONFLICT syscall.Errno = 5938 + ERROR_CLUSTER_EVICT_INVALID_REQUEST syscall.Errno = 5939 + ERROR_CLUSTER_SINGLETON_RESOURCE syscall.Errno = 5940 + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE syscall.Errno = 5941 + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED syscall.Errno = 5942 + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR syscall.Errno = 5943 + ERROR_CLUSTER_GROUP_BUSY syscall.Errno = 5944 + ERROR_CLUSTER_NOT_SHARED_VOLUME syscall.Errno = 5945 + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR syscall.Errno = 5946 + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE syscall.Errno = 5947 + ERROR_CLUSTER_USE_SHARED_VOLUMES_API syscall.Errno = 5948 + ERROR_CLUSTER_BACKUP_IN_PROGRESS syscall.Errno = 5949 + ERROR_NON_CSV_PATH syscall.Errno = 5950 + ERROR_CSV_VOLUME_NOT_LOCAL syscall.Errno = 5951 + ERROR_CLUSTER_WATCHDOG_TERMINATING syscall.Errno = 5952 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES syscall.Errno = 5953 + ERROR_CLUSTER_INVALID_NODE_WEIGHT syscall.Errno = 5954 + ERROR_CLUSTER_RESOURCE_VETOED_CALL syscall.Errno = 5955 + ERROR_RESMON_SYSTEM_RESOURCES_LACKING syscall.Errno = 5956 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION syscall.Errno = 5957 + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE syscall.Errno = 5958 + ERROR_CLUSTER_GROUP_QUEUED syscall.Errno = 5959 + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS syscall.Errno = 5960 + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED syscall.Errno = 5961 + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS syscall.Errno = 5962 + ERROR_CLUSTER_DISK_NOT_CONNECTED syscall.Errno = 5963 + ERROR_DISK_NOT_CSV_CAPABLE syscall.Errno = 5964 + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE syscall.Errno = 5965 + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED syscall.Errno = 5966 + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED syscall.Errno = 5967 + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES syscall.Errno = 5968 + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES syscall.Errno = 5969 + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE syscall.Errno = 5970 + ERROR_CLUSTER_AFFINITY_CONFLICT syscall.Errno = 5971 + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE syscall.Errno = 5972 + ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS syscall.Errno = 5973 + ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED syscall.Errno = 5974 + ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED syscall.Errno = 5975 + ERROR_CLUSTER_UPGRADE_IN_PROGRESS syscall.Errno = 5976 + ERROR_CLUSTER_UPGRADE_INCOMPLETE syscall.Errno = 5977 + ERROR_CLUSTER_NODE_IN_GRACE_PERIOD syscall.Errno = 5978 + ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT syscall.Errno = 5979 + ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER syscall.Errno = 5980 + ERROR_CLUSTER_RESOURCE_NOT_MONITORED syscall.Errno = 5981 + ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED syscall.Errno = 5982 + ERROR_CLUSTER_RESOURCE_IS_REPLICATED syscall.Errno = 5983 + ERROR_CLUSTER_NODE_ISOLATED syscall.Errno = 5984 + ERROR_CLUSTER_NODE_QUARANTINED syscall.Errno = 5985 + ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED syscall.Errno = 5986 + ERROR_CLUSTER_SPACE_DEGRADED syscall.Errno = 5987 + ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED syscall.Errno = 5988 + ERROR_CLUSTER_CSV_INVALID_HANDLE syscall.Errno = 5989 + ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR syscall.Errno = 5990 + ERROR_GROUPSET_NOT_AVAILABLE syscall.Errno = 5991 + ERROR_GROUPSET_NOT_FOUND syscall.Errno = 5992 + ERROR_GROUPSET_CANT_PROVIDE syscall.Errno = 5993 + ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND syscall.Errno = 5994 + ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY syscall.Errno = 5995 + ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION syscall.Errno = 5996 + ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS syscall.Errno = 5997 + ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME syscall.Errno = 5998 + ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE syscall.Errno = 5999 + ERROR_ENCRYPTION_FAILED syscall.Errno = 6000 + ERROR_DECRYPTION_FAILED syscall.Errno = 6001 + ERROR_FILE_ENCRYPTED syscall.Errno = 6002 + ERROR_NO_RECOVERY_POLICY syscall.Errno = 6003 + ERROR_NO_EFS syscall.Errno = 6004 + ERROR_WRONG_EFS syscall.Errno = 6005 + ERROR_NO_USER_KEYS syscall.Errno = 6006 + ERROR_FILE_NOT_ENCRYPTED syscall.Errno = 6007 + ERROR_NOT_EXPORT_FORMAT syscall.Errno = 6008 + ERROR_FILE_READ_ONLY syscall.Errno = 6009 + ERROR_DIR_EFS_DISALLOWED syscall.Errno = 6010 + ERROR_EFS_SERVER_NOT_TRUSTED syscall.Errno = 6011 + ERROR_BAD_RECOVERY_POLICY syscall.Errno = 6012 + ERROR_EFS_ALG_BLOB_TOO_BIG syscall.Errno = 6013 + ERROR_VOLUME_NOT_SUPPORT_EFS syscall.Errno = 6014 + ERROR_EFS_DISABLED syscall.Errno = 6015 + ERROR_EFS_VERSION_NOT_SUPPORT syscall.Errno = 6016 + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE syscall.Errno = 6017 + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER syscall.Errno = 6018 + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE syscall.Errno = 6019 + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE syscall.Errno = 6020 + ERROR_CS_ENCRYPTION_FILE_NOT_CSE syscall.Errno = 6021 + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION syscall.Errno = 6022 + ERROR_NO_BROWSER_SERVERS_FOUND syscall.Errno = 6118 + SCHED_E_SERVICE_NOT_LOCALSYSTEM syscall.Errno = 6200 + ERROR_LOG_SECTOR_INVALID syscall.Errno = 6600 + ERROR_LOG_SECTOR_PARITY_INVALID syscall.Errno = 6601 + ERROR_LOG_SECTOR_REMAPPED syscall.Errno = 6602 + ERROR_LOG_BLOCK_INCOMPLETE syscall.Errno = 6603 + ERROR_LOG_INVALID_RANGE syscall.Errno = 6604 + ERROR_LOG_BLOCKS_EXHAUSTED syscall.Errno = 6605 + ERROR_LOG_READ_CONTEXT_INVALID syscall.Errno = 6606 + ERROR_LOG_RESTART_INVALID syscall.Errno = 6607 + ERROR_LOG_BLOCK_VERSION syscall.Errno = 6608 + ERROR_LOG_BLOCK_INVALID syscall.Errno = 6609 + ERROR_LOG_READ_MODE_INVALID syscall.Errno = 6610 + ERROR_LOG_NO_RESTART syscall.Errno = 6611 + ERROR_LOG_METADATA_CORRUPT syscall.Errno = 6612 + ERROR_LOG_METADATA_INVALID syscall.Errno = 6613 + ERROR_LOG_METADATA_INCONSISTENT syscall.Errno = 6614 + ERROR_LOG_RESERVATION_INVALID syscall.Errno = 6615 + ERROR_LOG_CANT_DELETE syscall.Errno = 6616 + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED syscall.Errno = 6617 + ERROR_LOG_START_OF_LOG syscall.Errno = 6618 + ERROR_LOG_POLICY_ALREADY_INSTALLED syscall.Errno = 6619 + ERROR_LOG_POLICY_NOT_INSTALLED syscall.Errno = 6620 + ERROR_LOG_POLICY_INVALID syscall.Errno = 6621 + ERROR_LOG_POLICY_CONFLICT syscall.Errno = 6622 + ERROR_LOG_PINNED_ARCHIVE_TAIL syscall.Errno = 6623 + ERROR_LOG_RECORD_NONEXISTENT syscall.Errno = 6624 + ERROR_LOG_RECORDS_RESERVED_INVALID syscall.Errno = 6625 + ERROR_LOG_SPACE_RESERVED_INVALID syscall.Errno = 6626 + ERROR_LOG_TAIL_INVALID syscall.Errno = 6627 + ERROR_LOG_FULL syscall.Errno = 6628 + ERROR_COULD_NOT_RESIZE_LOG syscall.Errno = 6629 + ERROR_LOG_MULTIPLEXED syscall.Errno = 6630 + ERROR_LOG_DEDICATED syscall.Errno = 6631 + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS syscall.Errno = 6632 + ERROR_LOG_ARCHIVE_IN_PROGRESS syscall.Errno = 6633 + ERROR_LOG_EPHEMERAL syscall.Errno = 6634 + ERROR_LOG_NOT_ENOUGH_CONTAINERS syscall.Errno = 6635 + ERROR_LOG_CLIENT_ALREADY_REGISTERED syscall.Errno = 6636 + ERROR_LOG_CLIENT_NOT_REGISTERED syscall.Errno = 6637 + ERROR_LOG_FULL_HANDLER_IN_PROGRESS syscall.Errno = 6638 + ERROR_LOG_CONTAINER_READ_FAILED syscall.Errno = 6639 + ERROR_LOG_CONTAINER_WRITE_FAILED syscall.Errno = 6640 + ERROR_LOG_CONTAINER_OPEN_FAILED syscall.Errno = 6641 + ERROR_LOG_CONTAINER_STATE_INVALID syscall.Errno = 6642 + ERROR_LOG_STATE_INVALID syscall.Errno = 6643 + ERROR_LOG_PINNED syscall.Errno = 6644 + ERROR_LOG_METADATA_FLUSH_FAILED syscall.Errno = 6645 + ERROR_LOG_INCONSISTENT_SECURITY syscall.Errno = 6646 + ERROR_LOG_APPENDED_FLUSH_FAILED syscall.Errno = 6647 + ERROR_LOG_PINNED_RESERVATION syscall.Errno = 6648 + ERROR_INVALID_TRANSACTION syscall.Errno = 6700 + ERROR_TRANSACTION_NOT_ACTIVE syscall.Errno = 6701 + ERROR_TRANSACTION_REQUEST_NOT_VALID syscall.Errno = 6702 + ERROR_TRANSACTION_NOT_REQUESTED syscall.Errno = 6703 + ERROR_TRANSACTION_ALREADY_ABORTED syscall.Errno = 6704 + ERROR_TRANSACTION_ALREADY_COMMITTED syscall.Errno = 6705 + ERROR_TM_INITIALIZATION_FAILED syscall.Errno = 6706 + ERROR_RESOURCEMANAGER_READ_ONLY syscall.Errno = 6707 + ERROR_TRANSACTION_NOT_JOINED syscall.Errno = 6708 + ERROR_TRANSACTION_SUPERIOR_EXISTS syscall.Errno = 6709 + ERROR_CRM_PROTOCOL_ALREADY_EXISTS syscall.Errno = 6710 + ERROR_TRANSACTION_PROPAGATION_FAILED syscall.Errno = 6711 + ERROR_CRM_PROTOCOL_NOT_FOUND syscall.Errno = 6712 + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER syscall.Errno = 6713 + ERROR_CURRENT_TRANSACTION_NOT_VALID syscall.Errno = 6714 + ERROR_TRANSACTION_NOT_FOUND syscall.Errno = 6715 + ERROR_RESOURCEMANAGER_NOT_FOUND syscall.Errno = 6716 + ERROR_ENLISTMENT_NOT_FOUND syscall.Errno = 6717 + ERROR_TRANSACTIONMANAGER_NOT_FOUND syscall.Errno = 6718 + ERROR_TRANSACTIONMANAGER_NOT_ONLINE syscall.Errno = 6719 + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION syscall.Errno = 6720 + ERROR_TRANSACTION_NOT_ROOT syscall.Errno = 6721 + ERROR_TRANSACTION_OBJECT_EXPIRED syscall.Errno = 6722 + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED syscall.Errno = 6723 + ERROR_TRANSACTION_RECORD_TOO_LONG syscall.Errno = 6724 + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED syscall.Errno = 6725 + ERROR_TRANSACTION_INTEGRITY_VIOLATED syscall.Errno = 6726 + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH syscall.Errno = 6727 + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT syscall.Errno = 6728 + ERROR_TRANSACTION_MUST_WRITETHROUGH syscall.Errno = 6729 + ERROR_TRANSACTION_NO_SUPERIOR syscall.Errno = 6730 + ERROR_HEURISTIC_DAMAGE_POSSIBLE syscall.Errno = 6731 + ERROR_TRANSACTIONAL_CONFLICT syscall.Errno = 6800 + ERROR_RM_NOT_ACTIVE syscall.Errno = 6801 + ERROR_RM_METADATA_CORRUPT syscall.Errno = 6802 + ERROR_DIRECTORY_NOT_RM syscall.Errno = 6803 + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE syscall.Errno = 6805 + ERROR_LOG_RESIZE_INVALID_SIZE syscall.Errno = 6806 + ERROR_OBJECT_NO_LONGER_EXISTS syscall.Errno = 6807 + ERROR_STREAM_MINIVERSION_NOT_FOUND syscall.Errno = 6808 + ERROR_STREAM_MINIVERSION_NOT_VALID syscall.Errno = 6809 + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION syscall.Errno = 6810 + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT syscall.Errno = 6811 + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS syscall.Errno = 6812 + ERROR_REMOTE_FILE_VERSION_MISMATCH syscall.Errno = 6814 + ERROR_HANDLE_NO_LONGER_VALID syscall.Errno = 6815 + ERROR_NO_TXF_METADATA syscall.Errno = 6816 + ERROR_LOG_CORRUPTION_DETECTED syscall.Errno = 6817 + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN syscall.Errno = 6818 + ERROR_RM_DISCONNECTED syscall.Errno = 6819 + ERROR_ENLISTMENT_NOT_SUPERIOR syscall.Errno = 6820 + ERROR_RECOVERY_NOT_NEEDED syscall.Errno = 6821 + ERROR_RM_ALREADY_STARTED syscall.Errno = 6822 + ERROR_FILE_IDENTITY_NOT_PERSISTENT syscall.Errno = 6823 + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY syscall.Errno = 6824 + ERROR_CANT_CROSS_RM_BOUNDARY syscall.Errno = 6825 + ERROR_TXF_DIR_NOT_EMPTY syscall.Errno = 6826 + ERROR_INDOUBT_TRANSACTIONS_EXIST syscall.Errno = 6827 + ERROR_TM_VOLATILE syscall.Errno = 6828 + ERROR_ROLLBACK_TIMER_EXPIRED syscall.Errno = 6829 + ERROR_TXF_ATTRIBUTE_CORRUPT syscall.Errno = 6830 + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6831 + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED syscall.Errno = 6832 + ERROR_LOG_GROWTH_FAILED syscall.Errno = 6833 + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE syscall.Errno = 6834 + ERROR_TXF_METADATA_ALREADY_PRESENT syscall.Errno = 6835 + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET syscall.Errno = 6836 + ERROR_TRANSACTION_REQUIRED_PROMOTION syscall.Errno = 6837 + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION syscall.Errno = 6838 + ERROR_TRANSACTIONS_NOT_FROZEN syscall.Errno = 6839 + ERROR_TRANSACTION_FREEZE_IN_PROGRESS syscall.Errno = 6840 + ERROR_NOT_SNAPSHOT_VOLUME syscall.Errno = 6841 + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES syscall.Errno = 6842 + ERROR_DATA_LOST_REPAIR syscall.Errno = 6843 + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6844 + ERROR_TM_IDENTITY_MISMATCH syscall.Errno = 6845 + ERROR_FLOATED_SECTION syscall.Errno = 6846 + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK syscall.Errno = 6847 + ERROR_CANNOT_ABORT_TRANSACTIONS syscall.Errno = 6848 + ERROR_BAD_CLUSTERS syscall.Errno = 6849 + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION syscall.Errno = 6850 + ERROR_VOLUME_DIRTY syscall.Errno = 6851 + ERROR_NO_LINK_TRACKING_IN_TRANSACTION syscall.Errno = 6852 + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION syscall.Errno = 6853 + ERROR_EXPIRED_HANDLE syscall.Errno = 6854 + ERROR_TRANSACTION_NOT_ENLISTED syscall.Errno = 6855 + ERROR_CTX_WINSTATION_NAME_INVALID syscall.Errno = 7001 + ERROR_CTX_INVALID_PD syscall.Errno = 7002 + ERROR_CTX_PD_NOT_FOUND syscall.Errno = 7003 + ERROR_CTX_WD_NOT_FOUND syscall.Errno = 7004 + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY syscall.Errno = 7005 + ERROR_CTX_SERVICE_NAME_COLLISION syscall.Errno = 7006 + ERROR_CTX_CLOSE_PENDING syscall.Errno = 7007 + ERROR_CTX_NO_OUTBUF syscall.Errno = 7008 + ERROR_CTX_MODEM_INF_NOT_FOUND syscall.Errno = 7009 + ERROR_CTX_INVALID_MODEMNAME syscall.Errno = 7010 + ERROR_CTX_MODEM_RESPONSE_ERROR syscall.Errno = 7011 + ERROR_CTX_MODEM_RESPONSE_TIMEOUT syscall.Errno = 7012 + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER syscall.Errno = 7013 + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE syscall.Errno = 7014 + ERROR_CTX_MODEM_RESPONSE_BUSY syscall.Errno = 7015 + ERROR_CTX_MODEM_RESPONSE_VOICE syscall.Errno = 7016 + ERROR_CTX_TD_ERROR syscall.Errno = 7017 + ERROR_CTX_WINSTATION_NOT_FOUND syscall.Errno = 7022 + ERROR_CTX_WINSTATION_ALREADY_EXISTS syscall.Errno = 7023 + ERROR_CTX_WINSTATION_BUSY syscall.Errno = 7024 + ERROR_CTX_BAD_VIDEO_MODE syscall.Errno = 7025 + ERROR_CTX_GRAPHICS_INVALID syscall.Errno = 7035 + ERROR_CTX_LOGON_DISABLED syscall.Errno = 7037 + ERROR_CTX_NOT_CONSOLE syscall.Errno = 7038 + ERROR_CTX_CLIENT_QUERY_TIMEOUT syscall.Errno = 7040 + ERROR_CTX_CONSOLE_DISCONNECT syscall.Errno = 7041 + ERROR_CTX_CONSOLE_CONNECT syscall.Errno = 7042 + ERROR_CTX_SHADOW_DENIED syscall.Errno = 7044 + ERROR_CTX_WINSTATION_ACCESS_DENIED syscall.Errno = 7045 + ERROR_CTX_INVALID_WD syscall.Errno = 7049 + ERROR_CTX_SHADOW_INVALID syscall.Errno = 7050 + ERROR_CTX_SHADOW_DISABLED syscall.Errno = 7051 + ERROR_CTX_CLIENT_LICENSE_IN_USE syscall.Errno = 7052 + ERROR_CTX_CLIENT_LICENSE_NOT_SET syscall.Errno = 7053 + ERROR_CTX_LICENSE_NOT_AVAILABLE syscall.Errno = 7054 + ERROR_CTX_LICENSE_CLIENT_INVALID syscall.Errno = 7055 + ERROR_CTX_LICENSE_EXPIRED syscall.Errno = 7056 + ERROR_CTX_SHADOW_NOT_RUNNING syscall.Errno = 7057 + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE syscall.Errno = 7058 + ERROR_ACTIVATION_COUNT_EXCEEDED syscall.Errno = 7059 + ERROR_CTX_WINSTATIONS_DISABLED syscall.Errno = 7060 + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED syscall.Errno = 7061 + ERROR_CTX_SESSION_IN_USE syscall.Errno = 7062 + ERROR_CTX_NO_FORCE_LOGOFF syscall.Errno = 7063 + ERROR_CTX_ACCOUNT_RESTRICTION syscall.Errno = 7064 + ERROR_RDP_PROTOCOL_ERROR syscall.Errno = 7065 + ERROR_CTX_CDM_CONNECT syscall.Errno = 7066 + ERROR_CTX_CDM_DISCONNECT syscall.Errno = 7067 + ERROR_CTX_SECURITY_LAYER_ERROR syscall.Errno = 7068 + ERROR_TS_INCOMPATIBLE_SESSIONS syscall.Errno = 7069 + ERROR_TS_VIDEO_SUBSYSTEM_ERROR syscall.Errno = 7070 + FRS_ERR_INVALID_API_SEQUENCE syscall.Errno = 8001 + FRS_ERR_STARTING_SERVICE syscall.Errno = 8002 + FRS_ERR_STOPPING_SERVICE syscall.Errno = 8003 + FRS_ERR_INTERNAL_API syscall.Errno = 8004 + FRS_ERR_INTERNAL syscall.Errno = 8005 + FRS_ERR_SERVICE_COMM syscall.Errno = 8006 + FRS_ERR_INSUFFICIENT_PRIV syscall.Errno = 8007 + FRS_ERR_AUTHENTICATION syscall.Errno = 8008 + FRS_ERR_PARENT_INSUFFICIENT_PRIV syscall.Errno = 8009 + FRS_ERR_PARENT_AUTHENTICATION syscall.Errno = 8010 + FRS_ERR_CHILD_TO_PARENT_COMM syscall.Errno = 8011 + FRS_ERR_PARENT_TO_CHILD_COMM syscall.Errno = 8012 + FRS_ERR_SYSVOL_POPULATE syscall.Errno = 8013 + FRS_ERR_SYSVOL_POPULATE_TIMEOUT syscall.Errno = 8014 + FRS_ERR_SYSVOL_IS_BUSY syscall.Errno = 8015 + FRS_ERR_SYSVOL_DEMOTE syscall.Errno = 8016 + FRS_ERR_INVALID_SERVICE_PARAMETER syscall.Errno = 8017 + DS_S_SUCCESS = ERROR_SUCCESS + ERROR_DS_NOT_INSTALLED syscall.Errno = 8200 + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY syscall.Errno = 8201 + ERROR_DS_NO_ATTRIBUTE_OR_VALUE syscall.Errno = 8202 + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX syscall.Errno = 8203 + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED syscall.Errno = 8204 + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS syscall.Errno = 8205 + ERROR_DS_BUSY syscall.Errno = 8206 + ERROR_DS_UNAVAILABLE syscall.Errno = 8207 + ERROR_DS_NO_RIDS_ALLOCATED syscall.Errno = 8208 + ERROR_DS_NO_MORE_RIDS syscall.Errno = 8209 + ERROR_DS_INCORRECT_ROLE_OWNER syscall.Errno = 8210 + ERROR_DS_RIDMGR_INIT_ERROR syscall.Errno = 8211 + ERROR_DS_OBJ_CLASS_VIOLATION syscall.Errno = 8212 + ERROR_DS_CANT_ON_NON_LEAF syscall.Errno = 8213 + ERROR_DS_CANT_ON_RDN syscall.Errno = 8214 + ERROR_DS_CANT_MOD_OBJ_CLASS syscall.Errno = 8215 + ERROR_DS_CROSS_DOM_MOVE_ERROR syscall.Errno = 8216 + ERROR_DS_GC_NOT_AVAILABLE syscall.Errno = 8217 + ERROR_SHARED_POLICY syscall.Errno = 8218 + ERROR_POLICY_OBJECT_NOT_FOUND syscall.Errno = 8219 + ERROR_POLICY_ONLY_IN_DS syscall.Errno = 8220 + ERROR_PROMOTION_ACTIVE syscall.Errno = 8221 + ERROR_NO_PROMOTION_ACTIVE syscall.Errno = 8222 + ERROR_DS_OPERATIONS_ERROR syscall.Errno = 8224 + ERROR_DS_PROTOCOL_ERROR syscall.Errno = 8225 + ERROR_DS_TIMELIMIT_EXCEEDED syscall.Errno = 8226 + ERROR_DS_SIZELIMIT_EXCEEDED syscall.Errno = 8227 + ERROR_DS_ADMIN_LIMIT_EXCEEDED syscall.Errno = 8228 + ERROR_DS_COMPARE_FALSE syscall.Errno = 8229 + ERROR_DS_COMPARE_TRUE syscall.Errno = 8230 + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED syscall.Errno = 8231 + ERROR_DS_STRONG_AUTH_REQUIRED syscall.Errno = 8232 + ERROR_DS_INAPPROPRIATE_AUTH syscall.Errno = 8233 + ERROR_DS_AUTH_UNKNOWN syscall.Errno = 8234 + ERROR_DS_REFERRAL syscall.Errno = 8235 + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION syscall.Errno = 8236 + ERROR_DS_CONFIDENTIALITY_REQUIRED syscall.Errno = 8237 + ERROR_DS_INAPPROPRIATE_MATCHING syscall.Errno = 8238 + ERROR_DS_CONSTRAINT_VIOLATION syscall.Errno = 8239 + ERROR_DS_NO_SUCH_OBJECT syscall.Errno = 8240 + ERROR_DS_ALIAS_PROBLEM syscall.Errno = 8241 + ERROR_DS_INVALID_DN_SYNTAX syscall.Errno = 8242 + ERROR_DS_IS_LEAF syscall.Errno = 8243 + ERROR_DS_ALIAS_DEREF_PROBLEM syscall.Errno = 8244 + ERROR_DS_UNWILLING_TO_PERFORM syscall.Errno = 8245 + ERROR_DS_LOOP_DETECT syscall.Errno = 8246 + ERROR_DS_NAMING_VIOLATION syscall.Errno = 8247 + ERROR_DS_OBJECT_RESULTS_TOO_LARGE syscall.Errno = 8248 + ERROR_DS_AFFECTS_MULTIPLE_DSAS syscall.Errno = 8249 + ERROR_DS_SERVER_DOWN syscall.Errno = 8250 + ERROR_DS_LOCAL_ERROR syscall.Errno = 8251 + ERROR_DS_ENCODING_ERROR syscall.Errno = 8252 + ERROR_DS_DECODING_ERROR syscall.Errno = 8253 + ERROR_DS_FILTER_UNKNOWN syscall.Errno = 8254 + ERROR_DS_PARAM_ERROR syscall.Errno = 8255 + ERROR_DS_NOT_SUPPORTED syscall.Errno = 8256 + ERROR_DS_NO_RESULTS_RETURNED syscall.Errno = 8257 + ERROR_DS_CONTROL_NOT_FOUND syscall.Errno = 8258 + ERROR_DS_CLIENT_LOOP syscall.Errno = 8259 + ERROR_DS_REFERRAL_LIMIT_EXCEEDED syscall.Errno = 8260 + ERROR_DS_SORT_CONTROL_MISSING syscall.Errno = 8261 + ERROR_DS_OFFSET_RANGE_ERROR syscall.Errno = 8262 + ERROR_DS_RIDMGR_DISABLED syscall.Errno = 8263 + ERROR_DS_ROOT_MUST_BE_NC syscall.Errno = 8301 + ERROR_DS_ADD_REPLICA_INHIBITED syscall.Errno = 8302 + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA syscall.Errno = 8303 + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED syscall.Errno = 8304 + ERROR_DS_OBJ_STRING_NAME_EXISTS syscall.Errno = 8305 + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA syscall.Errno = 8306 + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA syscall.Errno = 8307 + ERROR_DS_NO_REQUESTED_ATTS_FOUND syscall.Errno = 8308 + ERROR_DS_USER_BUFFER_TO_SMALL syscall.Errno = 8309 + ERROR_DS_ATT_IS_NOT_ON_OBJ syscall.Errno = 8310 + ERROR_DS_ILLEGAL_MOD_OPERATION syscall.Errno = 8311 + ERROR_DS_OBJ_TOO_LARGE syscall.Errno = 8312 + ERROR_DS_BAD_INSTANCE_TYPE syscall.Errno = 8313 + ERROR_DS_MASTERDSA_REQUIRED syscall.Errno = 8314 + ERROR_DS_OBJECT_CLASS_REQUIRED syscall.Errno = 8315 + ERROR_DS_MISSING_REQUIRED_ATT syscall.Errno = 8316 + ERROR_DS_ATT_NOT_DEF_FOR_CLASS syscall.Errno = 8317 + ERROR_DS_ATT_ALREADY_EXISTS syscall.Errno = 8318 + ERROR_DS_CANT_ADD_ATT_VALUES syscall.Errno = 8320 + ERROR_DS_SINGLE_VALUE_CONSTRAINT syscall.Errno = 8321 + ERROR_DS_RANGE_CONSTRAINT syscall.Errno = 8322 + ERROR_DS_ATT_VAL_ALREADY_EXISTS syscall.Errno = 8323 + ERROR_DS_CANT_REM_MISSING_ATT syscall.Errno = 8324 + ERROR_DS_CANT_REM_MISSING_ATT_VAL syscall.Errno = 8325 + ERROR_DS_ROOT_CANT_BE_SUBREF syscall.Errno = 8326 + ERROR_DS_NO_CHAINING syscall.Errno = 8327 + ERROR_DS_NO_CHAINED_EVAL syscall.Errno = 8328 + ERROR_DS_NO_PARENT_OBJECT syscall.Errno = 8329 + ERROR_DS_PARENT_IS_AN_ALIAS syscall.Errno = 8330 + ERROR_DS_CANT_MIX_MASTER_AND_REPS syscall.Errno = 8331 + ERROR_DS_CHILDREN_EXIST syscall.Errno = 8332 + ERROR_DS_OBJ_NOT_FOUND syscall.Errno = 8333 + ERROR_DS_ALIASED_OBJ_MISSING syscall.Errno = 8334 + ERROR_DS_BAD_NAME_SYNTAX syscall.Errno = 8335 + ERROR_DS_ALIAS_POINTS_TO_ALIAS syscall.Errno = 8336 + ERROR_DS_CANT_DEREF_ALIAS syscall.Errno = 8337 + ERROR_DS_OUT_OF_SCOPE syscall.Errno = 8338 + ERROR_DS_OBJECT_BEING_REMOVED syscall.Errno = 8339 + ERROR_DS_CANT_DELETE_DSA_OBJ syscall.Errno = 8340 + ERROR_DS_GENERIC_ERROR syscall.Errno = 8341 + ERROR_DS_DSA_MUST_BE_INT_MASTER syscall.Errno = 8342 + ERROR_DS_CLASS_NOT_DSA syscall.Errno = 8343 + ERROR_DS_INSUFF_ACCESS_RIGHTS syscall.Errno = 8344 + ERROR_DS_ILLEGAL_SUPERIOR syscall.Errno = 8345 + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM syscall.Errno = 8346 + ERROR_DS_NAME_TOO_MANY_PARTS syscall.Errno = 8347 + ERROR_DS_NAME_TOO_LONG syscall.Errno = 8348 + ERROR_DS_NAME_VALUE_TOO_LONG syscall.Errno = 8349 + ERROR_DS_NAME_UNPARSEABLE syscall.Errno = 8350 + ERROR_DS_NAME_TYPE_UNKNOWN syscall.Errno = 8351 + ERROR_DS_NOT_AN_OBJECT syscall.Errno = 8352 + ERROR_DS_SEC_DESC_TOO_SHORT syscall.Errno = 8353 + ERROR_DS_SEC_DESC_INVALID syscall.Errno = 8354 + ERROR_DS_NO_DELETED_NAME syscall.Errno = 8355 + ERROR_DS_SUBREF_MUST_HAVE_PARENT syscall.Errno = 8356 + ERROR_DS_NCNAME_MUST_BE_NC syscall.Errno = 8357 + ERROR_DS_CANT_ADD_SYSTEM_ONLY syscall.Errno = 8358 + ERROR_DS_CLASS_MUST_BE_CONCRETE syscall.Errno = 8359 + ERROR_DS_INVALID_DMD syscall.Errno = 8360 + ERROR_DS_OBJ_GUID_EXISTS syscall.Errno = 8361 + ERROR_DS_NOT_ON_BACKLINK syscall.Errno = 8362 + ERROR_DS_NO_CROSSREF_FOR_NC syscall.Errno = 8363 + ERROR_DS_SHUTTING_DOWN syscall.Errno = 8364 + ERROR_DS_UNKNOWN_OPERATION syscall.Errno = 8365 + ERROR_DS_INVALID_ROLE_OWNER syscall.Errno = 8366 + ERROR_DS_COULDNT_CONTACT_FSMO syscall.Errno = 8367 + ERROR_DS_CROSS_NC_DN_RENAME syscall.Errno = 8368 + ERROR_DS_CANT_MOD_SYSTEM_ONLY syscall.Errno = 8369 + ERROR_DS_REPLICATOR_ONLY syscall.Errno = 8370 + ERROR_DS_OBJ_CLASS_NOT_DEFINED syscall.Errno = 8371 + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS syscall.Errno = 8372 + ERROR_DS_NAME_REFERENCE_INVALID syscall.Errno = 8373 + ERROR_DS_CROSS_REF_EXISTS syscall.Errno = 8374 + ERROR_DS_CANT_DEL_MASTER_CROSSREF syscall.Errno = 8375 + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD syscall.Errno = 8376 + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX syscall.Errno = 8377 + ERROR_DS_DUP_RDN syscall.Errno = 8378 + ERROR_DS_DUP_OID syscall.Errno = 8379 + ERROR_DS_DUP_MAPI_ID syscall.Errno = 8380 + ERROR_DS_DUP_SCHEMA_ID_GUID syscall.Errno = 8381 + ERROR_DS_DUP_LDAP_DISPLAY_NAME syscall.Errno = 8382 + ERROR_DS_SEMANTIC_ATT_TEST syscall.Errno = 8383 + ERROR_DS_SYNTAX_MISMATCH syscall.Errno = 8384 + ERROR_DS_EXISTS_IN_MUST_HAVE syscall.Errno = 8385 + ERROR_DS_EXISTS_IN_MAY_HAVE syscall.Errno = 8386 + ERROR_DS_NONEXISTENT_MAY_HAVE syscall.Errno = 8387 + ERROR_DS_NONEXISTENT_MUST_HAVE syscall.Errno = 8388 + ERROR_DS_AUX_CLS_TEST_FAIL syscall.Errno = 8389 + ERROR_DS_NONEXISTENT_POSS_SUP syscall.Errno = 8390 + ERROR_DS_SUB_CLS_TEST_FAIL syscall.Errno = 8391 + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX syscall.Errno = 8392 + ERROR_DS_EXISTS_IN_AUX_CLS syscall.Errno = 8393 + ERROR_DS_EXISTS_IN_SUB_CLS syscall.Errno = 8394 + ERROR_DS_EXISTS_IN_POSS_SUP syscall.Errno = 8395 + ERROR_DS_RECALCSCHEMA_FAILED syscall.Errno = 8396 + ERROR_DS_TREE_DELETE_NOT_FINISHED syscall.Errno = 8397 + ERROR_DS_CANT_DELETE syscall.Errno = 8398 + ERROR_DS_ATT_SCHEMA_REQ_ID syscall.Errno = 8399 + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX syscall.Errno = 8400 + ERROR_DS_CANT_CACHE_ATT syscall.Errno = 8401 + ERROR_DS_CANT_CACHE_CLASS syscall.Errno = 8402 + ERROR_DS_CANT_REMOVE_ATT_CACHE syscall.Errno = 8403 + ERROR_DS_CANT_REMOVE_CLASS_CACHE syscall.Errno = 8404 + ERROR_DS_CANT_RETRIEVE_DN syscall.Errno = 8405 + ERROR_DS_MISSING_SUPREF syscall.Errno = 8406 + ERROR_DS_CANT_RETRIEVE_INSTANCE syscall.Errno = 8407 + ERROR_DS_CODE_INCONSISTENCY syscall.Errno = 8408 + ERROR_DS_DATABASE_ERROR syscall.Errno = 8409 + ERROR_DS_GOVERNSID_MISSING syscall.Errno = 8410 + ERROR_DS_MISSING_EXPECTED_ATT syscall.Errno = 8411 + ERROR_DS_NCNAME_MISSING_CR_REF syscall.Errno = 8412 + ERROR_DS_SECURITY_CHECKING_ERROR syscall.Errno = 8413 + ERROR_DS_SCHEMA_NOT_LOADED syscall.Errno = 8414 + ERROR_DS_SCHEMA_ALLOC_FAILED syscall.Errno = 8415 + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX syscall.Errno = 8416 + ERROR_DS_GCVERIFY_ERROR syscall.Errno = 8417 + ERROR_DS_DRA_SCHEMA_MISMATCH syscall.Errno = 8418 + ERROR_DS_CANT_FIND_DSA_OBJ syscall.Errno = 8419 + ERROR_DS_CANT_FIND_EXPECTED_NC syscall.Errno = 8420 + ERROR_DS_CANT_FIND_NC_IN_CACHE syscall.Errno = 8421 + ERROR_DS_CANT_RETRIEVE_CHILD syscall.Errno = 8422 + ERROR_DS_SECURITY_ILLEGAL_MODIFY syscall.Errno = 8423 + ERROR_DS_CANT_REPLACE_HIDDEN_REC syscall.Errno = 8424 + ERROR_DS_BAD_HIERARCHY_FILE syscall.Errno = 8425 + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED syscall.Errno = 8426 + ERROR_DS_CONFIG_PARAM_MISSING syscall.Errno = 8427 + ERROR_DS_COUNTING_AB_INDICES_FAILED syscall.Errno = 8428 + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED syscall.Errno = 8429 + ERROR_DS_INTERNAL_FAILURE syscall.Errno = 8430 + ERROR_DS_UNKNOWN_ERROR syscall.Errno = 8431 + ERROR_DS_ROOT_REQUIRES_CLASS_TOP syscall.Errno = 8432 + ERROR_DS_REFUSING_FSMO_ROLES syscall.Errno = 8433 + ERROR_DS_MISSING_FSMO_SETTINGS syscall.Errno = 8434 + ERROR_DS_UNABLE_TO_SURRENDER_ROLES syscall.Errno = 8435 + ERROR_DS_DRA_GENERIC syscall.Errno = 8436 + ERROR_DS_DRA_INVALID_PARAMETER syscall.Errno = 8437 + ERROR_DS_DRA_BUSY syscall.Errno = 8438 + ERROR_DS_DRA_BAD_DN syscall.Errno = 8439 + ERROR_DS_DRA_BAD_NC syscall.Errno = 8440 + ERROR_DS_DRA_DN_EXISTS syscall.Errno = 8441 + ERROR_DS_DRA_INTERNAL_ERROR syscall.Errno = 8442 + ERROR_DS_DRA_INCONSISTENT_DIT syscall.Errno = 8443 + ERROR_DS_DRA_CONNECTION_FAILED syscall.Errno = 8444 + ERROR_DS_DRA_BAD_INSTANCE_TYPE syscall.Errno = 8445 + ERROR_DS_DRA_OUT_OF_MEM syscall.Errno = 8446 + ERROR_DS_DRA_MAIL_PROBLEM syscall.Errno = 8447 + ERROR_DS_DRA_REF_ALREADY_EXISTS syscall.Errno = 8448 + ERROR_DS_DRA_REF_NOT_FOUND syscall.Errno = 8449 + ERROR_DS_DRA_OBJ_IS_REP_SOURCE syscall.Errno = 8450 + ERROR_DS_DRA_DB_ERROR syscall.Errno = 8451 + ERROR_DS_DRA_NO_REPLICA syscall.Errno = 8452 + ERROR_DS_DRA_ACCESS_DENIED syscall.Errno = 8453 + ERROR_DS_DRA_NOT_SUPPORTED syscall.Errno = 8454 + ERROR_DS_DRA_RPC_CANCELLED syscall.Errno = 8455 + ERROR_DS_DRA_SOURCE_DISABLED syscall.Errno = 8456 + ERROR_DS_DRA_SINK_DISABLED syscall.Errno = 8457 + ERROR_DS_DRA_NAME_COLLISION syscall.Errno = 8458 + ERROR_DS_DRA_SOURCE_REINSTALLED syscall.Errno = 8459 + ERROR_DS_DRA_MISSING_PARENT syscall.Errno = 8460 + ERROR_DS_DRA_PREEMPTED syscall.Errno = 8461 + ERROR_DS_DRA_ABANDON_SYNC syscall.Errno = 8462 + ERROR_DS_DRA_SHUTDOWN syscall.Errno = 8463 + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET syscall.Errno = 8464 + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA syscall.Errno = 8465 + ERROR_DS_DRA_EXTN_CONNECTION_FAILED syscall.Errno = 8466 + ERROR_DS_INSTALL_SCHEMA_MISMATCH syscall.Errno = 8467 + ERROR_DS_DUP_LINK_ID syscall.Errno = 8468 + ERROR_DS_NAME_ERROR_RESOLVING syscall.Errno = 8469 + ERROR_DS_NAME_ERROR_NOT_FOUND syscall.Errno = 8470 + ERROR_DS_NAME_ERROR_NOT_UNIQUE syscall.Errno = 8471 + ERROR_DS_NAME_ERROR_NO_MAPPING syscall.Errno = 8472 + ERROR_DS_NAME_ERROR_DOMAIN_ONLY syscall.Errno = 8473 + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING syscall.Errno = 8474 + ERROR_DS_CONSTRUCTED_ATT_MOD syscall.Errno = 8475 + ERROR_DS_WRONG_OM_OBJ_CLASS syscall.Errno = 8476 + ERROR_DS_DRA_REPL_PENDING syscall.Errno = 8477 + ERROR_DS_DS_REQUIRED syscall.Errno = 8478 + ERROR_DS_INVALID_LDAP_DISPLAY_NAME syscall.Errno = 8479 + ERROR_DS_NON_BASE_SEARCH syscall.Errno = 8480 + ERROR_DS_CANT_RETRIEVE_ATTS syscall.Errno = 8481 + ERROR_DS_BACKLINK_WITHOUT_LINK syscall.Errno = 8482 + ERROR_DS_EPOCH_MISMATCH syscall.Errno = 8483 + ERROR_DS_SRC_NAME_MISMATCH syscall.Errno = 8484 + ERROR_DS_SRC_AND_DST_NC_IDENTICAL syscall.Errno = 8485 + ERROR_DS_DST_NC_MISMATCH syscall.Errno = 8486 + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC syscall.Errno = 8487 + ERROR_DS_SRC_GUID_MISMATCH syscall.Errno = 8488 + ERROR_DS_CANT_MOVE_DELETED_OBJECT syscall.Errno = 8489 + ERROR_DS_PDC_OPERATION_IN_PROGRESS syscall.Errno = 8490 + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD syscall.Errno = 8491 + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION syscall.Errno = 8492 + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS syscall.Errno = 8493 + ERROR_DS_NC_MUST_HAVE_NC_PARENT syscall.Errno = 8494 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE syscall.Errno = 8495 + ERROR_DS_DST_DOMAIN_NOT_NATIVE syscall.Errno = 8496 + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER syscall.Errno = 8497 + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP syscall.Errno = 8498 + ERROR_DS_CANT_MOVE_RESOURCE_GROUP syscall.Errno = 8499 + ERROR_DS_INVALID_SEARCH_FLAG syscall.Errno = 8500 + ERROR_DS_NO_TREE_DELETE_ABOVE_NC syscall.Errno = 8501 + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE syscall.Errno = 8502 + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE syscall.Errno = 8503 + ERROR_DS_SAM_INIT_FAILURE syscall.Errno = 8504 + ERROR_DS_SENSITIVE_GROUP_VIOLATION syscall.Errno = 8505 + ERROR_DS_CANT_MOD_PRIMARYGROUPID syscall.Errno = 8506 + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD syscall.Errno = 8507 + ERROR_DS_NONSAFE_SCHEMA_CHANGE syscall.Errno = 8508 + ERROR_DS_SCHEMA_UPDATE_DISALLOWED syscall.Errno = 8509 + ERROR_DS_CANT_CREATE_UNDER_SCHEMA syscall.Errno = 8510 + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION syscall.Errno = 8511 + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE syscall.Errno = 8512 + ERROR_DS_INVALID_GROUP_TYPE syscall.Errno = 8513 + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8514 + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN syscall.Errno = 8515 + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8516 + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8517 + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER syscall.Errno = 8518 + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER syscall.Errno = 8519 + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER syscall.Errno = 8520 + ERROR_DS_HAVE_PRIMARY_MEMBERS syscall.Errno = 8521 + ERROR_DS_STRING_SD_CONVERSION_FAILED syscall.Errno = 8522 + ERROR_DS_NAMING_MASTER_GC syscall.Errno = 8523 + ERROR_DS_DNS_LOOKUP_FAILURE syscall.Errno = 8524 + ERROR_DS_COULDNT_UPDATE_SPNS syscall.Errno = 8525 + ERROR_DS_CANT_RETRIEVE_SD syscall.Errno = 8526 + ERROR_DS_KEY_NOT_UNIQUE syscall.Errno = 8527 + ERROR_DS_WRONG_LINKED_ATT_SYNTAX syscall.Errno = 8528 + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD syscall.Errno = 8529 + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY syscall.Errno = 8530 + ERROR_DS_CANT_START syscall.Errno = 8531 + ERROR_DS_INIT_FAILURE syscall.Errno = 8532 + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION syscall.Errno = 8533 + ERROR_DS_SOURCE_DOMAIN_IN_FOREST syscall.Errno = 8534 + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST syscall.Errno = 8535 + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED syscall.Errno = 8536 + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN syscall.Errno = 8537 + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER syscall.Errno = 8538 + ERROR_DS_SRC_SID_EXISTS_IN_FOREST syscall.Errno = 8539 + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH syscall.Errno = 8540 + ERROR_SAM_INIT_FAILURE syscall.Errno = 8541 + ERROR_DS_DRA_SCHEMA_INFO_SHIP syscall.Errno = 8542 + ERROR_DS_DRA_SCHEMA_CONFLICT syscall.Errno = 8543 + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT syscall.Errno = 8544 + ERROR_DS_DRA_OBJ_NC_MISMATCH syscall.Errno = 8545 + ERROR_DS_NC_STILL_HAS_DSAS syscall.Errno = 8546 + ERROR_DS_GC_REQUIRED syscall.Errno = 8547 + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY syscall.Errno = 8548 + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS syscall.Errno = 8549 + ERROR_DS_CANT_ADD_TO_GC syscall.Errno = 8550 + ERROR_DS_NO_CHECKPOINT_WITH_PDC syscall.Errno = 8551 + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED syscall.Errno = 8552 + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC syscall.Errno = 8553 + ERROR_DS_INVALID_NAME_FOR_SPN syscall.Errno = 8554 + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS syscall.Errno = 8555 + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES syscall.Errno = 8556 + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED syscall.Errno = 8557 + ERROR_DS_MUST_BE_RUN_ON_DST_DC syscall.Errno = 8558 + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER syscall.Errno = 8559 + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ syscall.Errno = 8560 + ERROR_DS_INIT_FAILURE_CONSOLE syscall.Errno = 8561 + ERROR_DS_SAM_INIT_FAILURE_CONSOLE syscall.Errno = 8562 + ERROR_DS_FOREST_VERSION_TOO_HIGH syscall.Errno = 8563 + ERROR_DS_DOMAIN_VERSION_TOO_HIGH syscall.Errno = 8564 + ERROR_DS_FOREST_VERSION_TOO_LOW syscall.Errno = 8565 + ERROR_DS_DOMAIN_VERSION_TOO_LOW syscall.Errno = 8566 + ERROR_DS_INCOMPATIBLE_VERSION syscall.Errno = 8567 + ERROR_DS_LOW_DSA_VERSION syscall.Errno = 8568 + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN syscall.Errno = 8569 + ERROR_DS_NOT_SUPPORTED_SORT_ORDER syscall.Errno = 8570 + ERROR_DS_NAME_NOT_UNIQUE syscall.Errno = 8571 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 syscall.Errno = 8572 + ERROR_DS_OUT_OF_VERSION_STORE syscall.Errno = 8573 + ERROR_DS_INCOMPATIBLE_CONTROLS_USED syscall.Errno = 8574 + ERROR_DS_NO_REF_DOMAIN syscall.Errno = 8575 + ERROR_DS_RESERVED_LINK_ID syscall.Errno = 8576 + ERROR_DS_LINK_ID_NOT_AVAILABLE syscall.Errno = 8577 + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER syscall.Errno = 8578 + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE syscall.Errno = 8579 + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC syscall.Errno = 8580 + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG syscall.Errno = 8581 + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT syscall.Errno = 8582 + ERROR_DS_NAME_ERROR_TRUST_REFERRAL syscall.Errno = 8583 + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER syscall.Errno = 8584 + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD syscall.Errno = 8585 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 syscall.Errno = 8586 + ERROR_DS_THREAD_LIMIT_EXCEEDED syscall.Errno = 8587 + ERROR_DS_NOT_CLOSEST syscall.Errno = 8588 + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF syscall.Errno = 8589 + ERROR_DS_SINGLE_USER_MODE_FAILED syscall.Errno = 8590 + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR syscall.Errno = 8591 + ERROR_DS_NTDSCRIPT_PROCESS_ERROR syscall.Errno = 8592 + ERROR_DS_DIFFERENT_REPL_EPOCHS syscall.Errno = 8593 + ERROR_DS_DRS_EXTENSIONS_CHANGED syscall.Errno = 8594 + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR syscall.Errno = 8595 + ERROR_DS_NO_MSDS_INTID syscall.Errno = 8596 + ERROR_DS_DUP_MSDS_INTID syscall.Errno = 8597 + ERROR_DS_EXISTS_IN_RDNATTID syscall.Errno = 8598 + ERROR_DS_AUTHORIZATION_FAILED syscall.Errno = 8599 + ERROR_DS_INVALID_SCRIPT syscall.Errno = 8600 + ERROR_DS_REMOTE_CROSSREF_OP_FAILED syscall.Errno = 8601 + ERROR_DS_CROSS_REF_BUSY syscall.Errno = 8602 + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN syscall.Errno = 8603 + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC syscall.Errno = 8604 + ERROR_DS_DUPLICATE_ID_FOUND syscall.Errno = 8605 + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT syscall.Errno = 8606 + ERROR_DS_GROUP_CONVERSION_ERROR syscall.Errno = 8607 + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP syscall.Errno = 8608 + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP syscall.Errno = 8609 + ERROR_DS_ROLE_NOT_VERIFIED syscall.Errno = 8610 + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL syscall.Errno = 8611 + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS syscall.Errno = 8612 + ERROR_DS_EXISTING_AD_CHILD_NC syscall.Errno = 8613 + ERROR_DS_REPL_LIFETIME_EXCEEDED syscall.Errno = 8614 + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER syscall.Errno = 8615 + ERROR_DS_LDAP_SEND_QUEUE_FULL syscall.Errno = 8616 + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW syscall.Errno = 8617 + ERROR_DS_POLICY_NOT_KNOWN syscall.Errno = 8618 + ERROR_NO_SITE_SETTINGS_OBJECT syscall.Errno = 8619 + ERROR_NO_SECRETS syscall.Errno = 8620 + ERROR_NO_WRITABLE_DC_FOUND syscall.Errno = 8621 + ERROR_DS_NO_SERVER_OBJECT syscall.Errno = 8622 + ERROR_DS_NO_NTDSA_OBJECT syscall.Errno = 8623 + ERROR_DS_NON_ASQ_SEARCH syscall.Errno = 8624 + ERROR_DS_AUDIT_FAILURE syscall.Errno = 8625 + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE syscall.Errno = 8626 + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE syscall.Errno = 8627 + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP syscall.Errno = 8628 + ERROR_DS_DRA_CORRUPT_UTD_VECTOR syscall.Errno = 8629 + ERROR_DS_DRA_SECRETS_DENIED syscall.Errno = 8630 + ERROR_DS_RESERVED_MAPI_ID syscall.Errno = 8631 + ERROR_DS_MAPI_ID_NOT_AVAILABLE syscall.Errno = 8632 + ERROR_DS_DRA_MISSING_KRBTGT_SECRET syscall.Errno = 8633 + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST syscall.Errno = 8634 + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST syscall.Errno = 8635 + ERROR_INVALID_USER_PRINCIPAL_NAME syscall.Errno = 8636 + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS syscall.Errno = 8637 + ERROR_DS_OID_NOT_FOUND syscall.Errno = 8638 + ERROR_DS_DRA_RECYCLED_TARGET syscall.Errno = 8639 + ERROR_DS_DISALLOWED_NC_REDIRECT syscall.Errno = 8640 + ERROR_DS_HIGH_ADLDS_FFL syscall.Errno = 8641 + ERROR_DS_HIGH_DSA_VERSION syscall.Errno = 8642 + ERROR_DS_LOW_ADLDS_FFL syscall.Errno = 8643 + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION syscall.Errno = 8644 + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED syscall.Errno = 8645 + ERROR_INCORRECT_ACCOUNT_TYPE syscall.Errno = 8646 + ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8647 + ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST syscall.Errno = 8648 + ERROR_DS_MISSING_FOREST_TRUST syscall.Errno = 8649 + ERROR_DS_VALUE_KEY_NOT_UNIQUE syscall.Errno = 8650 + DNS_ERROR_RESPONSE_CODES_BASE syscall.Errno = 9000 + DNS_ERROR_RCODE_NO_ERROR = ERROR_SUCCESS + DNS_ERROR_MASK syscall.Errno = 0x00002328 + DNS_ERROR_RCODE_FORMAT_ERROR syscall.Errno = 9001 + DNS_ERROR_RCODE_SERVER_FAILURE syscall.Errno = 9002 + DNS_ERROR_RCODE_NAME_ERROR syscall.Errno = 9003 + DNS_ERROR_RCODE_NOT_IMPLEMENTED syscall.Errno = 9004 + DNS_ERROR_RCODE_REFUSED syscall.Errno = 9005 + DNS_ERROR_RCODE_YXDOMAIN syscall.Errno = 9006 + DNS_ERROR_RCODE_YXRRSET syscall.Errno = 9007 + DNS_ERROR_RCODE_NXRRSET syscall.Errno = 9008 + DNS_ERROR_RCODE_NOTAUTH syscall.Errno = 9009 + DNS_ERROR_RCODE_NOTZONE syscall.Errno = 9010 + DNS_ERROR_RCODE_BADSIG syscall.Errno = 9016 + DNS_ERROR_RCODE_BADKEY syscall.Errno = 9017 + DNS_ERROR_RCODE_BADTIME syscall.Errno = 9018 + DNS_ERROR_RCODE_LAST = DNS_ERROR_RCODE_BADTIME + DNS_ERROR_DNSSEC_BASE syscall.Errno = 9100 + DNS_ERROR_KEYMASTER_REQUIRED syscall.Errno = 9101 + DNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE syscall.Errno = 9102 + DNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1 syscall.Errno = 9103 + DNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS syscall.Errno = 9104 + DNS_ERROR_UNSUPPORTED_ALGORITHM syscall.Errno = 9105 + DNS_ERROR_INVALID_KEY_SIZE syscall.Errno = 9106 + DNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE syscall.Errno = 9107 + DNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION syscall.Errno = 9108 + DNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR syscall.Errno = 9109 + DNS_ERROR_UNEXPECTED_CNG_ERROR syscall.Errno = 9110 + DNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION syscall.Errno = 9111 + DNS_ERROR_KSP_NOT_ACCESSIBLE syscall.Errno = 9112 + DNS_ERROR_TOO_MANY_SKDS syscall.Errno = 9113 + DNS_ERROR_INVALID_ROLLOVER_PERIOD syscall.Errno = 9114 + DNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET syscall.Errno = 9115 + DNS_ERROR_ROLLOVER_IN_PROGRESS syscall.Errno = 9116 + DNS_ERROR_STANDBY_KEY_NOT_PRESENT syscall.Errno = 9117 + DNS_ERROR_NOT_ALLOWED_ON_ZSK syscall.Errno = 9118 + DNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD syscall.Errno = 9119 + DNS_ERROR_ROLLOVER_ALREADY_QUEUED syscall.Errno = 9120 + DNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE syscall.Errno = 9121 + DNS_ERROR_BAD_KEYMASTER syscall.Errno = 9122 + DNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD syscall.Errno = 9123 + DNS_ERROR_INVALID_NSEC3_ITERATION_COUNT syscall.Errno = 9124 + DNS_ERROR_DNSSEC_IS_DISABLED syscall.Errno = 9125 + DNS_ERROR_INVALID_XML syscall.Errno = 9126 + DNS_ERROR_NO_VALID_TRUST_ANCHORS syscall.Errno = 9127 + DNS_ERROR_ROLLOVER_NOT_POKEABLE syscall.Errno = 9128 + DNS_ERROR_NSEC3_NAME_COLLISION syscall.Errno = 9129 + DNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1 syscall.Errno = 9130 + DNS_ERROR_PACKET_FMT_BASE syscall.Errno = 9500 + DNS_INFO_NO_RECORDS syscall.Errno = 9501 + DNS_ERROR_BAD_PACKET syscall.Errno = 9502 + DNS_ERROR_NO_PACKET syscall.Errno = 9503 + DNS_ERROR_RCODE syscall.Errno = 9504 + DNS_ERROR_UNSECURE_PACKET syscall.Errno = 9505 + DNS_STATUS_PACKET_UNSECURE = DNS_ERROR_UNSECURE_PACKET + DNS_REQUEST_PENDING syscall.Errno = 9506 + DNS_ERROR_NO_MEMORY = ERROR_OUTOFMEMORY + DNS_ERROR_INVALID_NAME = ERROR_INVALID_NAME + DNS_ERROR_INVALID_DATA = ERROR_INVALID_DATA + DNS_ERROR_GENERAL_API_BASE syscall.Errno = 9550 + DNS_ERROR_INVALID_TYPE syscall.Errno = 9551 + DNS_ERROR_INVALID_IP_ADDRESS syscall.Errno = 9552 + DNS_ERROR_INVALID_PROPERTY syscall.Errno = 9553 + DNS_ERROR_TRY_AGAIN_LATER syscall.Errno = 9554 + DNS_ERROR_NOT_UNIQUE syscall.Errno = 9555 + DNS_ERROR_NON_RFC_NAME syscall.Errno = 9556 + DNS_STATUS_FQDN syscall.Errno = 9557 + DNS_STATUS_DOTTED_NAME syscall.Errno = 9558 + DNS_STATUS_SINGLE_PART_NAME syscall.Errno = 9559 + DNS_ERROR_INVALID_NAME_CHAR syscall.Errno = 9560 + DNS_ERROR_NUMERIC_NAME syscall.Errno = 9561 + DNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER syscall.Errno = 9562 + DNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION syscall.Errno = 9563 + DNS_ERROR_CANNOT_FIND_ROOT_HINTS syscall.Errno = 9564 + DNS_ERROR_INCONSISTENT_ROOT_HINTS syscall.Errno = 9565 + DNS_ERROR_DWORD_VALUE_TOO_SMALL syscall.Errno = 9566 + DNS_ERROR_DWORD_VALUE_TOO_LARGE syscall.Errno = 9567 + DNS_ERROR_BACKGROUND_LOADING syscall.Errno = 9568 + DNS_ERROR_NOT_ALLOWED_ON_RODC syscall.Errno = 9569 + DNS_ERROR_NOT_ALLOWED_UNDER_DNAME syscall.Errno = 9570 + DNS_ERROR_DELEGATION_REQUIRED syscall.Errno = 9571 + DNS_ERROR_INVALID_POLICY_TABLE syscall.Errno = 9572 + DNS_ERROR_ADDRESS_REQUIRED syscall.Errno = 9573 + DNS_ERROR_ZONE_BASE syscall.Errno = 9600 + DNS_ERROR_ZONE_DOES_NOT_EXIST syscall.Errno = 9601 + DNS_ERROR_NO_ZONE_INFO syscall.Errno = 9602 + DNS_ERROR_INVALID_ZONE_OPERATION syscall.Errno = 9603 + DNS_ERROR_ZONE_CONFIGURATION_ERROR syscall.Errno = 9604 + DNS_ERROR_ZONE_HAS_NO_SOA_RECORD syscall.Errno = 9605 + DNS_ERROR_ZONE_HAS_NO_NS_RECORDS syscall.Errno = 9606 + DNS_ERROR_ZONE_LOCKED syscall.Errno = 9607 + DNS_ERROR_ZONE_CREATION_FAILED syscall.Errno = 9608 + DNS_ERROR_ZONE_ALREADY_EXISTS syscall.Errno = 9609 + DNS_ERROR_AUTOZONE_ALREADY_EXISTS syscall.Errno = 9610 + DNS_ERROR_INVALID_ZONE_TYPE syscall.Errno = 9611 + DNS_ERROR_SECONDARY_REQUIRES_MASTER_IP syscall.Errno = 9612 + DNS_ERROR_ZONE_NOT_SECONDARY syscall.Errno = 9613 + DNS_ERROR_NEED_SECONDARY_ADDRESSES syscall.Errno = 9614 + DNS_ERROR_WINS_INIT_FAILED syscall.Errno = 9615 + DNS_ERROR_NEED_WINS_SERVERS syscall.Errno = 9616 + DNS_ERROR_NBSTAT_INIT_FAILED syscall.Errno = 9617 + DNS_ERROR_SOA_DELETE_INVALID syscall.Errno = 9618 + DNS_ERROR_FORWARDER_ALREADY_EXISTS syscall.Errno = 9619 + DNS_ERROR_ZONE_REQUIRES_MASTER_IP syscall.Errno = 9620 + DNS_ERROR_ZONE_IS_SHUTDOWN syscall.Errno = 9621 + DNS_ERROR_ZONE_LOCKED_FOR_SIGNING syscall.Errno = 9622 + DNS_ERROR_DATAFILE_BASE syscall.Errno = 9650 + DNS_ERROR_PRIMARY_REQUIRES_DATAFILE syscall.Errno = 9651 + DNS_ERROR_INVALID_DATAFILE_NAME syscall.Errno = 9652 + DNS_ERROR_DATAFILE_OPEN_FAILURE syscall.Errno = 9653 + DNS_ERROR_FILE_WRITEBACK_FAILED syscall.Errno = 9654 + DNS_ERROR_DATAFILE_PARSING syscall.Errno = 9655 + DNS_ERROR_DATABASE_BASE syscall.Errno = 9700 + DNS_ERROR_RECORD_DOES_NOT_EXIST syscall.Errno = 9701 + DNS_ERROR_RECORD_FORMAT syscall.Errno = 9702 + DNS_ERROR_NODE_CREATION_FAILED syscall.Errno = 9703 + DNS_ERROR_UNKNOWN_RECORD_TYPE syscall.Errno = 9704 + DNS_ERROR_RECORD_TIMED_OUT syscall.Errno = 9705 + DNS_ERROR_NAME_NOT_IN_ZONE syscall.Errno = 9706 + DNS_ERROR_CNAME_LOOP syscall.Errno = 9707 + DNS_ERROR_NODE_IS_CNAME syscall.Errno = 9708 + DNS_ERROR_CNAME_COLLISION syscall.Errno = 9709 + DNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT syscall.Errno = 9710 + DNS_ERROR_RECORD_ALREADY_EXISTS syscall.Errno = 9711 + DNS_ERROR_SECONDARY_DATA syscall.Errno = 9712 + DNS_ERROR_NO_CREATE_CACHE_DATA syscall.Errno = 9713 + DNS_ERROR_NAME_DOES_NOT_EXIST syscall.Errno = 9714 + DNS_WARNING_PTR_CREATE_FAILED syscall.Errno = 9715 + DNS_WARNING_DOMAIN_UNDELETED syscall.Errno = 9716 + DNS_ERROR_DS_UNAVAILABLE syscall.Errno = 9717 + DNS_ERROR_DS_ZONE_ALREADY_EXISTS syscall.Errno = 9718 + DNS_ERROR_NO_BOOTFILE_IF_DS_ZONE syscall.Errno = 9719 + DNS_ERROR_NODE_IS_DNAME syscall.Errno = 9720 + DNS_ERROR_DNAME_COLLISION syscall.Errno = 9721 + DNS_ERROR_ALIAS_LOOP syscall.Errno = 9722 + DNS_ERROR_OPERATION_BASE syscall.Errno = 9750 + DNS_INFO_AXFR_COMPLETE syscall.Errno = 9751 + DNS_ERROR_AXFR syscall.Errno = 9752 + DNS_INFO_ADDED_LOCAL_WINS syscall.Errno = 9753 + DNS_ERROR_SECURE_BASE syscall.Errno = 9800 + DNS_STATUS_CONTINUE_NEEDED syscall.Errno = 9801 + DNS_ERROR_SETUP_BASE syscall.Errno = 9850 + DNS_ERROR_NO_TCPIP syscall.Errno = 9851 + DNS_ERROR_NO_DNS_SERVERS syscall.Errno = 9852 + DNS_ERROR_DP_BASE syscall.Errno = 9900 + DNS_ERROR_DP_DOES_NOT_EXIST syscall.Errno = 9901 + DNS_ERROR_DP_ALREADY_EXISTS syscall.Errno = 9902 + DNS_ERROR_DP_NOT_ENLISTED syscall.Errno = 9903 + DNS_ERROR_DP_ALREADY_ENLISTED syscall.Errno = 9904 + DNS_ERROR_DP_NOT_AVAILABLE syscall.Errno = 9905 + DNS_ERROR_DP_FSMO_ERROR syscall.Errno = 9906 + DNS_ERROR_RRL_NOT_ENABLED syscall.Errno = 9911 + DNS_ERROR_RRL_INVALID_WINDOW_SIZE syscall.Errno = 9912 + DNS_ERROR_RRL_INVALID_IPV4_PREFIX syscall.Errno = 9913 + DNS_ERROR_RRL_INVALID_IPV6_PREFIX syscall.Errno = 9914 + DNS_ERROR_RRL_INVALID_TC_RATE syscall.Errno = 9915 + DNS_ERROR_RRL_INVALID_LEAK_RATE syscall.Errno = 9916 + DNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE syscall.Errno = 9917 + DNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS syscall.Errno = 9921 + DNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST syscall.Errno = 9922 + DNS_ERROR_VIRTUALIZATION_TREE_LOCKED syscall.Errno = 9923 + DNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME syscall.Errno = 9924 + DNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE syscall.Errno = 9925 + DNS_ERROR_ZONESCOPE_ALREADY_EXISTS syscall.Errno = 9951 + DNS_ERROR_ZONESCOPE_DOES_NOT_EXIST syscall.Errno = 9952 + DNS_ERROR_DEFAULT_ZONESCOPE syscall.Errno = 9953 + DNS_ERROR_INVALID_ZONESCOPE_NAME syscall.Errno = 9954 + DNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES syscall.Errno = 9955 + DNS_ERROR_LOAD_ZONESCOPE_FAILED syscall.Errno = 9956 + DNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED syscall.Errno = 9957 + DNS_ERROR_INVALID_SCOPE_NAME syscall.Errno = 9958 + DNS_ERROR_SCOPE_DOES_NOT_EXIST syscall.Errno = 9959 + DNS_ERROR_DEFAULT_SCOPE syscall.Errno = 9960 + DNS_ERROR_INVALID_SCOPE_OPERATION syscall.Errno = 9961 + DNS_ERROR_SCOPE_LOCKED syscall.Errno = 9962 + DNS_ERROR_SCOPE_ALREADY_EXISTS syscall.Errno = 9963 + DNS_ERROR_POLICY_ALREADY_EXISTS syscall.Errno = 9971 + DNS_ERROR_POLICY_DOES_NOT_EXIST syscall.Errno = 9972 + DNS_ERROR_POLICY_INVALID_CRITERIA syscall.Errno = 9973 + DNS_ERROR_POLICY_INVALID_SETTINGS syscall.Errno = 9974 + DNS_ERROR_CLIENT_SUBNET_IS_ACCESSED syscall.Errno = 9975 + DNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST syscall.Errno = 9976 + DNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS syscall.Errno = 9977 + DNS_ERROR_SUBNET_DOES_NOT_EXIST syscall.Errno = 9978 + DNS_ERROR_SUBNET_ALREADY_EXISTS syscall.Errno = 9979 + DNS_ERROR_POLICY_LOCKED syscall.Errno = 9980 + DNS_ERROR_POLICY_INVALID_WEIGHT syscall.Errno = 9981 + DNS_ERROR_POLICY_INVALID_NAME syscall.Errno = 9982 + DNS_ERROR_POLICY_MISSING_CRITERIA syscall.Errno = 9983 + DNS_ERROR_INVALID_CLIENT_SUBNET_NAME syscall.Errno = 9984 + DNS_ERROR_POLICY_PROCESSING_ORDER_INVALID syscall.Errno = 9985 + DNS_ERROR_POLICY_SCOPE_MISSING syscall.Errno = 9986 + DNS_ERROR_POLICY_SCOPE_NOT_ALLOWED syscall.Errno = 9987 + DNS_ERROR_SERVERSCOPE_IS_REFERENCED syscall.Errno = 9988 + DNS_ERROR_ZONESCOPE_IS_REFERENCED syscall.Errno = 9989 + DNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET syscall.Errno = 9990 + DNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL syscall.Errno = 9991 + DNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL syscall.Errno = 9992 + DNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE syscall.Errno = 9993 + DNS_ERROR_POLICY_INVALID_CRITERIA_FQDN syscall.Errno = 9994 + DNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE syscall.Errno = 9995 + DNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY syscall.Errno = 9996 + WSABASEERR syscall.Errno = 10000 + WSAEINTR syscall.Errno = 10004 + WSAEBADF syscall.Errno = 10009 + WSAEACCES syscall.Errno = 10013 + WSAEFAULT syscall.Errno = 10014 + WSAEINVAL syscall.Errno = 10022 + WSAEMFILE syscall.Errno = 10024 + WSAEWOULDBLOCK syscall.Errno = 10035 + WSAEINPROGRESS syscall.Errno = 10036 + WSAEALREADY syscall.Errno = 10037 + WSAENOTSOCK syscall.Errno = 10038 + WSAEDESTADDRREQ syscall.Errno = 10039 + WSAEMSGSIZE syscall.Errno = 10040 + WSAEPROTOTYPE syscall.Errno = 10041 + WSAENOPROTOOPT syscall.Errno = 10042 + WSAEPROTONOSUPPORT syscall.Errno = 10043 + WSAESOCKTNOSUPPORT syscall.Errno = 10044 + WSAEOPNOTSUPP syscall.Errno = 10045 + WSAEPFNOSUPPORT syscall.Errno = 10046 + WSAEAFNOSUPPORT syscall.Errno = 10047 + WSAEADDRINUSE syscall.Errno = 10048 + WSAEADDRNOTAVAIL syscall.Errno = 10049 + WSAENETDOWN syscall.Errno = 10050 + WSAENETUNREACH syscall.Errno = 10051 + WSAENETRESET syscall.Errno = 10052 + WSAECONNABORTED syscall.Errno = 10053 + WSAECONNRESET syscall.Errno = 10054 + WSAENOBUFS syscall.Errno = 10055 + WSAEISCONN syscall.Errno = 10056 + WSAENOTCONN syscall.Errno = 10057 + WSAESHUTDOWN syscall.Errno = 10058 + WSAETOOMANYREFS syscall.Errno = 10059 + WSAETIMEDOUT syscall.Errno = 10060 + WSAECONNREFUSED syscall.Errno = 10061 + WSAELOOP syscall.Errno = 10062 + WSAENAMETOOLONG syscall.Errno = 10063 + WSAEHOSTDOWN syscall.Errno = 10064 + WSAEHOSTUNREACH syscall.Errno = 10065 + WSAENOTEMPTY syscall.Errno = 10066 + WSAEPROCLIM syscall.Errno = 10067 + WSAEUSERS syscall.Errno = 10068 + WSAEDQUOT syscall.Errno = 10069 + WSAESTALE syscall.Errno = 10070 + WSAEREMOTE syscall.Errno = 10071 + WSASYSNOTREADY syscall.Errno = 10091 + WSAVERNOTSUPPORTED syscall.Errno = 10092 + WSANOTINITIALISED syscall.Errno = 10093 + WSAEDISCON syscall.Errno = 10101 + WSAENOMORE syscall.Errno = 10102 + WSAECANCELLED syscall.Errno = 10103 + WSAEINVALIDPROCTABLE syscall.Errno = 10104 + WSAEINVALIDPROVIDER syscall.Errno = 10105 + WSAEPROVIDERFAILEDINIT syscall.Errno = 10106 + WSASYSCALLFAILURE syscall.Errno = 10107 + WSASERVICE_NOT_FOUND syscall.Errno = 10108 + WSATYPE_NOT_FOUND syscall.Errno = 10109 + WSA_E_NO_MORE syscall.Errno = 10110 + WSA_E_CANCELLED syscall.Errno = 10111 + WSAEREFUSED syscall.Errno = 10112 + WSAHOST_NOT_FOUND syscall.Errno = 11001 + WSATRY_AGAIN syscall.Errno = 11002 + WSANO_RECOVERY syscall.Errno = 11003 + WSANO_DATA syscall.Errno = 11004 + WSA_QOS_RECEIVERS syscall.Errno = 11005 + WSA_QOS_SENDERS syscall.Errno = 11006 + WSA_QOS_NO_SENDERS syscall.Errno = 11007 + WSA_QOS_NO_RECEIVERS syscall.Errno = 11008 + WSA_QOS_REQUEST_CONFIRMED syscall.Errno = 11009 + WSA_QOS_ADMISSION_FAILURE syscall.Errno = 11010 + WSA_QOS_POLICY_FAILURE syscall.Errno = 11011 + WSA_QOS_BAD_STYLE syscall.Errno = 11012 + WSA_QOS_BAD_OBJECT syscall.Errno = 11013 + WSA_QOS_TRAFFIC_CTRL_ERROR syscall.Errno = 11014 + WSA_QOS_GENERIC_ERROR syscall.Errno = 11015 + WSA_QOS_ESERVICETYPE syscall.Errno = 11016 + WSA_QOS_EFLOWSPEC syscall.Errno = 11017 + WSA_QOS_EPROVSPECBUF syscall.Errno = 11018 + WSA_QOS_EFILTERSTYLE syscall.Errno = 11019 + WSA_QOS_EFILTERTYPE syscall.Errno = 11020 + WSA_QOS_EFILTERCOUNT syscall.Errno = 11021 + WSA_QOS_EOBJLENGTH syscall.Errno = 11022 + WSA_QOS_EFLOWCOUNT syscall.Errno = 11023 + WSA_QOS_EUNKOWNPSOBJ syscall.Errno = 11024 + WSA_QOS_EPOLICYOBJ syscall.Errno = 11025 + WSA_QOS_EFLOWDESC syscall.Errno = 11026 + WSA_QOS_EPSFLOWSPEC syscall.Errno = 11027 + WSA_QOS_EPSFILTERSPEC syscall.Errno = 11028 + WSA_QOS_ESDMODEOBJ syscall.Errno = 11029 + WSA_QOS_ESHAPERATEOBJ syscall.Errno = 11030 + WSA_QOS_RESERVED_PETYPE syscall.Errno = 11031 + WSA_SECURE_HOST_NOT_FOUND syscall.Errno = 11032 + WSA_IPSEC_NAME_POLICY_ERROR syscall.Errno = 11033 + ERROR_IPSEC_QM_POLICY_EXISTS syscall.Errno = 13000 + ERROR_IPSEC_QM_POLICY_NOT_FOUND syscall.Errno = 13001 + ERROR_IPSEC_QM_POLICY_IN_USE syscall.Errno = 13002 + ERROR_IPSEC_MM_POLICY_EXISTS syscall.Errno = 13003 + ERROR_IPSEC_MM_POLICY_NOT_FOUND syscall.Errno = 13004 + ERROR_IPSEC_MM_POLICY_IN_USE syscall.Errno = 13005 + ERROR_IPSEC_MM_FILTER_EXISTS syscall.Errno = 13006 + ERROR_IPSEC_MM_FILTER_NOT_FOUND syscall.Errno = 13007 + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS syscall.Errno = 13008 + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND syscall.Errno = 13009 + ERROR_IPSEC_MM_AUTH_EXISTS syscall.Errno = 13010 + ERROR_IPSEC_MM_AUTH_NOT_FOUND syscall.Errno = 13011 + ERROR_IPSEC_MM_AUTH_IN_USE syscall.Errno = 13012 + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND syscall.Errno = 13013 + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND syscall.Errno = 13014 + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND syscall.Errno = 13015 + ERROR_IPSEC_TUNNEL_FILTER_EXISTS syscall.Errno = 13016 + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND syscall.Errno = 13017 + ERROR_IPSEC_MM_FILTER_PENDING_DELETION syscall.Errno = 13018 + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION syscall.Errno = 13019 + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION syscall.Errno = 13020 + ERROR_IPSEC_MM_POLICY_PENDING_DELETION syscall.Errno = 13021 + ERROR_IPSEC_MM_AUTH_PENDING_DELETION syscall.Errno = 13022 + ERROR_IPSEC_QM_POLICY_PENDING_DELETION syscall.Errno = 13023 + WARNING_IPSEC_MM_POLICY_PRUNED syscall.Errno = 13024 + WARNING_IPSEC_QM_POLICY_PRUNED syscall.Errno = 13025 + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN syscall.Errno = 13800 + ERROR_IPSEC_IKE_AUTH_FAIL syscall.Errno = 13801 + ERROR_IPSEC_IKE_ATTRIB_FAIL syscall.Errno = 13802 + ERROR_IPSEC_IKE_NEGOTIATION_PENDING syscall.Errno = 13803 + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR syscall.Errno = 13804 + ERROR_IPSEC_IKE_TIMED_OUT syscall.Errno = 13805 + ERROR_IPSEC_IKE_NO_CERT syscall.Errno = 13806 + ERROR_IPSEC_IKE_SA_DELETED syscall.Errno = 13807 + ERROR_IPSEC_IKE_SA_REAPED syscall.Errno = 13808 + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP syscall.Errno = 13809 + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP syscall.Errno = 13810 + ERROR_IPSEC_IKE_QUEUE_DROP_MM syscall.Errno = 13811 + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM syscall.Errno = 13812 + ERROR_IPSEC_IKE_DROP_NO_RESPONSE syscall.Errno = 13813 + ERROR_IPSEC_IKE_MM_DELAY_DROP syscall.Errno = 13814 + ERROR_IPSEC_IKE_QM_DELAY_DROP syscall.Errno = 13815 + ERROR_IPSEC_IKE_ERROR syscall.Errno = 13816 + ERROR_IPSEC_IKE_CRL_FAILED syscall.Errno = 13817 + ERROR_IPSEC_IKE_INVALID_KEY_USAGE syscall.Errno = 13818 + ERROR_IPSEC_IKE_INVALID_CERT_TYPE syscall.Errno = 13819 + ERROR_IPSEC_IKE_NO_PRIVATE_KEY syscall.Errno = 13820 + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY syscall.Errno = 13821 + ERROR_IPSEC_IKE_DH_FAIL syscall.Errno = 13822 + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED syscall.Errno = 13823 + ERROR_IPSEC_IKE_INVALID_HEADER syscall.Errno = 13824 + ERROR_IPSEC_IKE_NO_POLICY syscall.Errno = 13825 + ERROR_IPSEC_IKE_INVALID_SIGNATURE syscall.Errno = 13826 + ERROR_IPSEC_IKE_KERBEROS_ERROR syscall.Errno = 13827 + ERROR_IPSEC_IKE_NO_PUBLIC_KEY syscall.Errno = 13828 + ERROR_IPSEC_IKE_PROCESS_ERR syscall.Errno = 13829 + ERROR_IPSEC_IKE_PROCESS_ERR_SA syscall.Errno = 13830 + ERROR_IPSEC_IKE_PROCESS_ERR_PROP syscall.Errno = 13831 + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS syscall.Errno = 13832 + ERROR_IPSEC_IKE_PROCESS_ERR_KE syscall.Errno = 13833 + ERROR_IPSEC_IKE_PROCESS_ERR_ID syscall.Errno = 13834 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT syscall.Errno = 13835 + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ syscall.Errno = 13836 + ERROR_IPSEC_IKE_PROCESS_ERR_HASH syscall.Errno = 13837 + ERROR_IPSEC_IKE_PROCESS_ERR_SIG syscall.Errno = 13838 + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE syscall.Errno = 13839 + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY syscall.Errno = 13840 + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE syscall.Errno = 13841 + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR syscall.Errno = 13842 + ERROR_IPSEC_IKE_INVALID_PAYLOAD syscall.Errno = 13843 + ERROR_IPSEC_IKE_LOAD_SOFT_SA syscall.Errno = 13844 + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN syscall.Errno = 13845 + ERROR_IPSEC_IKE_INVALID_COOKIE syscall.Errno = 13846 + ERROR_IPSEC_IKE_NO_PEER_CERT syscall.Errno = 13847 + ERROR_IPSEC_IKE_PEER_CRL_FAILED syscall.Errno = 13848 + ERROR_IPSEC_IKE_POLICY_CHANGE syscall.Errno = 13849 + ERROR_IPSEC_IKE_NO_MM_POLICY syscall.Errno = 13850 + ERROR_IPSEC_IKE_NOTCBPRIV syscall.Errno = 13851 + ERROR_IPSEC_IKE_SECLOADFAIL syscall.Errno = 13852 + ERROR_IPSEC_IKE_FAILSSPINIT syscall.Errno = 13853 + ERROR_IPSEC_IKE_FAILQUERYSSP syscall.Errno = 13854 + ERROR_IPSEC_IKE_SRVACQFAIL syscall.Errno = 13855 + ERROR_IPSEC_IKE_SRVQUERYCRED syscall.Errno = 13856 + ERROR_IPSEC_IKE_GETSPIFAIL syscall.Errno = 13857 + ERROR_IPSEC_IKE_INVALID_FILTER syscall.Errno = 13858 + ERROR_IPSEC_IKE_OUT_OF_MEMORY syscall.Errno = 13859 + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED syscall.Errno = 13860 + ERROR_IPSEC_IKE_INVALID_POLICY syscall.Errno = 13861 + ERROR_IPSEC_IKE_UNKNOWN_DOI syscall.Errno = 13862 + ERROR_IPSEC_IKE_INVALID_SITUATION syscall.Errno = 13863 + ERROR_IPSEC_IKE_DH_FAILURE syscall.Errno = 13864 + ERROR_IPSEC_IKE_INVALID_GROUP syscall.Errno = 13865 + ERROR_IPSEC_IKE_ENCRYPT syscall.Errno = 13866 + ERROR_IPSEC_IKE_DECRYPT syscall.Errno = 13867 + ERROR_IPSEC_IKE_POLICY_MATCH syscall.Errno = 13868 + ERROR_IPSEC_IKE_UNSUPPORTED_ID syscall.Errno = 13869 + ERROR_IPSEC_IKE_INVALID_HASH syscall.Errno = 13870 + ERROR_IPSEC_IKE_INVALID_HASH_ALG syscall.Errno = 13871 + ERROR_IPSEC_IKE_INVALID_HASH_SIZE syscall.Errno = 13872 + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG syscall.Errno = 13873 + ERROR_IPSEC_IKE_INVALID_AUTH_ALG syscall.Errno = 13874 + ERROR_IPSEC_IKE_INVALID_SIG syscall.Errno = 13875 + ERROR_IPSEC_IKE_LOAD_FAILED syscall.Errno = 13876 + ERROR_IPSEC_IKE_RPC_DELETE syscall.Errno = 13877 + ERROR_IPSEC_IKE_BENIGN_REINIT syscall.Errno = 13878 + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY syscall.Errno = 13879 + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION syscall.Errno = 13880 + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN syscall.Errno = 13881 + ERROR_IPSEC_IKE_MM_LIMIT syscall.Errno = 13882 + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED syscall.Errno = 13883 + ERROR_IPSEC_IKE_QM_LIMIT syscall.Errno = 13884 + ERROR_IPSEC_IKE_MM_EXPIRED syscall.Errno = 13885 + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID syscall.Errno = 13886 + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH syscall.Errno = 13887 + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID syscall.Errno = 13888 + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD syscall.Errno = 13889 + ERROR_IPSEC_IKE_DOS_COOKIE_SENT syscall.Errno = 13890 + ERROR_IPSEC_IKE_SHUTTING_DOWN syscall.Errno = 13891 + ERROR_IPSEC_IKE_CGA_AUTH_FAILED syscall.Errno = 13892 + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA syscall.Errno = 13893 + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM syscall.Errno = 13894 + ERROR_IPSEC_IKE_QM_EXPIRED syscall.Errno = 13895 + ERROR_IPSEC_IKE_TOO_MANY_FILTERS syscall.Errno = 13896 + ERROR_IPSEC_IKE_NEG_STATUS_END syscall.Errno = 13897 + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL syscall.Errno = 13898 + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE syscall.Errno = 13899 + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING syscall.Errno = 13900 + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING syscall.Errno = 13901 + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS syscall.Errno = 13902 + ERROR_IPSEC_IKE_RATELIMIT_DROP syscall.Errno = 13903 + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE syscall.Errno = 13904 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE syscall.Errno = 13905 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE syscall.Errno = 13906 + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY syscall.Errno = 13907 + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE syscall.Errno = 13908 + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END syscall.Errno = 13909 + ERROR_IPSEC_BAD_SPI syscall.Errno = 13910 + ERROR_IPSEC_SA_LIFETIME_EXPIRED syscall.Errno = 13911 + ERROR_IPSEC_WRONG_SA syscall.Errno = 13912 + ERROR_IPSEC_REPLAY_CHECK_FAILED syscall.Errno = 13913 + ERROR_IPSEC_INVALID_PACKET syscall.Errno = 13914 + ERROR_IPSEC_INTEGRITY_CHECK_FAILED syscall.Errno = 13915 + ERROR_IPSEC_CLEAR_TEXT_DROP syscall.Errno = 13916 + ERROR_IPSEC_AUTH_FIREWALL_DROP syscall.Errno = 13917 + ERROR_IPSEC_THROTTLE_DROP syscall.Errno = 13918 + ERROR_IPSEC_DOSP_BLOCK syscall.Errno = 13925 + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST syscall.Errno = 13926 + ERROR_IPSEC_DOSP_INVALID_PACKET syscall.Errno = 13927 + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED syscall.Errno = 13928 + ERROR_IPSEC_DOSP_MAX_ENTRIES syscall.Errno = 13929 + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED syscall.Errno = 13930 + ERROR_IPSEC_DOSP_NOT_INSTALLED syscall.Errno = 13931 + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES syscall.Errno = 13932 + ERROR_SXS_SECTION_NOT_FOUND syscall.Errno = 14000 + ERROR_SXS_CANT_GEN_ACTCTX syscall.Errno = 14001 + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT syscall.Errno = 14002 + ERROR_SXS_ASSEMBLY_NOT_FOUND syscall.Errno = 14003 + ERROR_SXS_MANIFEST_FORMAT_ERROR syscall.Errno = 14004 + ERROR_SXS_MANIFEST_PARSE_ERROR syscall.Errno = 14005 + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED syscall.Errno = 14006 + ERROR_SXS_KEY_NOT_FOUND syscall.Errno = 14007 + ERROR_SXS_VERSION_CONFLICT syscall.Errno = 14008 + ERROR_SXS_WRONG_SECTION_TYPE syscall.Errno = 14009 + ERROR_SXS_THREAD_QUERIES_DISABLED syscall.Errno = 14010 + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET syscall.Errno = 14011 + ERROR_SXS_UNKNOWN_ENCODING_GROUP syscall.Errno = 14012 + ERROR_SXS_UNKNOWN_ENCODING syscall.Errno = 14013 + ERROR_SXS_INVALID_XML_NAMESPACE_URI syscall.Errno = 14014 + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14015 + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED syscall.Errno = 14016 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14017 + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14018 + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE syscall.Errno = 14019 + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT syscall.Errno = 14020 + ERROR_SXS_DUPLICATE_DLL_NAME syscall.Errno = 14021 + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME syscall.Errno = 14022 + ERROR_SXS_DUPLICATE_CLSID syscall.Errno = 14023 + ERROR_SXS_DUPLICATE_IID syscall.Errno = 14024 + ERROR_SXS_DUPLICATE_TLBID syscall.Errno = 14025 + ERROR_SXS_DUPLICATE_PROGID syscall.Errno = 14026 + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME syscall.Errno = 14027 + ERROR_SXS_FILE_HASH_MISMATCH syscall.Errno = 14028 + ERROR_SXS_POLICY_PARSE_ERROR syscall.Errno = 14029 + ERROR_SXS_XML_E_MISSINGQUOTE syscall.Errno = 14030 + ERROR_SXS_XML_E_COMMENTSYNTAX syscall.Errno = 14031 + ERROR_SXS_XML_E_BADSTARTNAMECHAR syscall.Errno = 14032 + ERROR_SXS_XML_E_BADNAMECHAR syscall.Errno = 14033 + ERROR_SXS_XML_E_BADCHARINSTRING syscall.Errno = 14034 + ERROR_SXS_XML_E_XMLDECLSYNTAX syscall.Errno = 14035 + ERROR_SXS_XML_E_BADCHARDATA syscall.Errno = 14036 + ERROR_SXS_XML_E_MISSINGWHITESPACE syscall.Errno = 14037 + ERROR_SXS_XML_E_EXPECTINGTAGEND syscall.Errno = 14038 + ERROR_SXS_XML_E_MISSINGSEMICOLON syscall.Errno = 14039 + ERROR_SXS_XML_E_UNBALANCEDPAREN syscall.Errno = 14040 + ERROR_SXS_XML_E_INTERNALERROR syscall.Errno = 14041 + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE syscall.Errno = 14042 + ERROR_SXS_XML_E_INCOMPLETE_ENCODING syscall.Errno = 14043 + ERROR_SXS_XML_E_MISSING_PAREN syscall.Errno = 14044 + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE syscall.Errno = 14045 + ERROR_SXS_XML_E_MULTIPLE_COLONS syscall.Errno = 14046 + ERROR_SXS_XML_E_INVALID_DECIMAL syscall.Errno = 14047 + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL syscall.Errno = 14048 + ERROR_SXS_XML_E_INVALID_UNICODE syscall.Errno = 14049 + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK syscall.Errno = 14050 + ERROR_SXS_XML_E_UNEXPECTEDENDTAG syscall.Errno = 14051 + ERROR_SXS_XML_E_UNCLOSEDTAG syscall.Errno = 14052 + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE syscall.Errno = 14053 + ERROR_SXS_XML_E_MULTIPLEROOTS syscall.Errno = 14054 + ERROR_SXS_XML_E_INVALIDATROOTLEVEL syscall.Errno = 14055 + ERROR_SXS_XML_E_BADXMLDECL syscall.Errno = 14056 + ERROR_SXS_XML_E_MISSINGROOT syscall.Errno = 14057 + ERROR_SXS_XML_E_UNEXPECTEDEOF syscall.Errno = 14058 + ERROR_SXS_XML_E_BADPEREFINSUBSET syscall.Errno = 14059 + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG syscall.Errno = 14060 + ERROR_SXS_XML_E_UNCLOSEDENDTAG syscall.Errno = 14061 + ERROR_SXS_XML_E_UNCLOSEDSTRING syscall.Errno = 14062 + ERROR_SXS_XML_E_UNCLOSEDCOMMENT syscall.Errno = 14063 + ERROR_SXS_XML_E_UNCLOSEDDECL syscall.Errno = 14064 + ERROR_SXS_XML_E_UNCLOSEDCDATA syscall.Errno = 14065 + ERROR_SXS_XML_E_RESERVEDNAMESPACE syscall.Errno = 14066 + ERROR_SXS_XML_E_INVALIDENCODING syscall.Errno = 14067 + ERROR_SXS_XML_E_INVALIDSWITCH syscall.Errno = 14068 + ERROR_SXS_XML_E_BADXMLCASE syscall.Errno = 14069 + ERROR_SXS_XML_E_INVALID_STANDALONE syscall.Errno = 14070 + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE syscall.Errno = 14071 + ERROR_SXS_XML_E_INVALID_VERSION syscall.Errno = 14072 + ERROR_SXS_XML_E_MISSINGEQUALS syscall.Errno = 14073 + ERROR_SXS_PROTECTION_RECOVERY_FAILED syscall.Errno = 14074 + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT syscall.Errno = 14075 + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID syscall.Errno = 14076 + ERROR_SXS_UNTRANSLATABLE_HRESULT syscall.Errno = 14077 + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING syscall.Errno = 14078 + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE syscall.Errno = 14079 + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14080 + ERROR_SXS_ASSEMBLY_MISSING syscall.Errno = 14081 + ERROR_SXS_CORRUPT_ACTIVATION_STACK syscall.Errno = 14082 + ERROR_SXS_CORRUPTION syscall.Errno = 14083 + ERROR_SXS_EARLY_DEACTIVATION syscall.Errno = 14084 + ERROR_SXS_INVALID_DEACTIVATION syscall.Errno = 14085 + ERROR_SXS_MULTIPLE_DEACTIVATION syscall.Errno = 14086 + ERROR_SXS_PROCESS_TERMINATION_REQUESTED syscall.Errno = 14087 + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT syscall.Errno = 14088 + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY syscall.Errno = 14089 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE syscall.Errno = 14090 + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME syscall.Errno = 14091 + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE syscall.Errno = 14092 + ERROR_SXS_IDENTITY_PARSE_ERROR syscall.Errno = 14093 + ERROR_MALFORMED_SUBSTITUTION_STRING syscall.Errno = 14094 + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN syscall.Errno = 14095 + ERROR_UNMAPPED_SUBSTITUTION_STRING syscall.Errno = 14096 + ERROR_SXS_ASSEMBLY_NOT_LOCKED syscall.Errno = 14097 + ERROR_SXS_COMPONENT_STORE_CORRUPT syscall.Errno = 14098 + ERROR_ADVANCED_INSTALLER_FAILED syscall.Errno = 14099 + ERROR_XML_ENCODING_MISMATCH syscall.Errno = 14100 + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT syscall.Errno = 14101 + ERROR_SXS_IDENTITIES_DIFFERENT syscall.Errno = 14102 + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT syscall.Errno = 14103 + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY syscall.Errno = 14104 + ERROR_SXS_MANIFEST_TOO_BIG syscall.Errno = 14105 + ERROR_SXS_SETTING_NOT_REGISTERED syscall.Errno = 14106 + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE syscall.Errno = 14107 + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED syscall.Errno = 14108 + ERROR_GENERIC_COMMAND_FAILED syscall.Errno = 14109 + ERROR_SXS_FILE_HASH_MISSING syscall.Errno = 14110 + ERROR_EVT_INVALID_CHANNEL_PATH syscall.Errno = 15000 + ERROR_EVT_INVALID_QUERY syscall.Errno = 15001 + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND syscall.Errno = 15002 + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND syscall.Errno = 15003 + ERROR_EVT_INVALID_PUBLISHER_NAME syscall.Errno = 15004 + ERROR_EVT_INVALID_EVENT_DATA syscall.Errno = 15005 + ERROR_EVT_CHANNEL_NOT_FOUND syscall.Errno = 15007 + ERROR_EVT_MALFORMED_XML_TEXT syscall.Errno = 15008 + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL syscall.Errno = 15009 + ERROR_EVT_CONFIGURATION_ERROR syscall.Errno = 15010 + ERROR_EVT_QUERY_RESULT_STALE syscall.Errno = 15011 + ERROR_EVT_QUERY_RESULT_INVALID_POSITION syscall.Errno = 15012 + ERROR_EVT_NON_VALIDATING_MSXML syscall.Errno = 15013 + ERROR_EVT_FILTER_ALREADYSCOPED syscall.Errno = 15014 + ERROR_EVT_FILTER_NOTELTSET syscall.Errno = 15015 + ERROR_EVT_FILTER_INVARG syscall.Errno = 15016 + ERROR_EVT_FILTER_INVTEST syscall.Errno = 15017 + ERROR_EVT_FILTER_INVTYPE syscall.Errno = 15018 + ERROR_EVT_FILTER_PARSEERR syscall.Errno = 15019 + ERROR_EVT_FILTER_UNSUPPORTEDOP syscall.Errno = 15020 + ERROR_EVT_FILTER_UNEXPECTEDTOKEN syscall.Errno = 15021 + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL syscall.Errno = 15022 + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE syscall.Errno = 15023 + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE syscall.Errno = 15024 + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE syscall.Errno = 15025 + ERROR_EVT_FILTER_TOO_COMPLEX syscall.Errno = 15026 + ERROR_EVT_MESSAGE_NOT_FOUND syscall.Errno = 15027 + ERROR_EVT_MESSAGE_ID_NOT_FOUND syscall.Errno = 15028 + ERROR_EVT_UNRESOLVED_VALUE_INSERT syscall.Errno = 15029 + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT syscall.Errno = 15030 + ERROR_EVT_MAX_INSERTS_REACHED syscall.Errno = 15031 + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND syscall.Errno = 15032 + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND syscall.Errno = 15033 + ERROR_EVT_VERSION_TOO_OLD syscall.Errno = 15034 + ERROR_EVT_VERSION_TOO_NEW syscall.Errno = 15035 + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY syscall.Errno = 15036 + ERROR_EVT_PUBLISHER_DISABLED syscall.Errno = 15037 + ERROR_EVT_FILTER_OUT_OF_RANGE syscall.Errno = 15038 + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE syscall.Errno = 15080 + ERROR_EC_LOG_DISABLED syscall.Errno = 15081 + ERROR_EC_CIRCULAR_FORWARDING syscall.Errno = 15082 + ERROR_EC_CREDSTORE_FULL syscall.Errno = 15083 + ERROR_EC_CRED_NOT_FOUND syscall.Errno = 15084 + ERROR_EC_NO_ACTIVE_CHANNEL syscall.Errno = 15085 + ERROR_MUI_FILE_NOT_FOUND syscall.Errno = 15100 + ERROR_MUI_INVALID_FILE syscall.Errno = 15101 + ERROR_MUI_INVALID_RC_CONFIG syscall.Errno = 15102 + ERROR_MUI_INVALID_LOCALE_NAME syscall.Errno = 15103 + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME syscall.Errno = 15104 + ERROR_MUI_FILE_NOT_LOADED syscall.Errno = 15105 + ERROR_RESOURCE_ENUM_USER_STOP syscall.Errno = 15106 + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED syscall.Errno = 15107 + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME syscall.Errno = 15108 + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE syscall.Errno = 15110 + ERROR_MRM_INVALID_PRICONFIG syscall.Errno = 15111 + ERROR_MRM_INVALID_FILE_TYPE syscall.Errno = 15112 + ERROR_MRM_UNKNOWN_QUALIFIER syscall.Errno = 15113 + ERROR_MRM_INVALID_QUALIFIER_VALUE syscall.Errno = 15114 + ERROR_MRM_NO_CANDIDATE syscall.Errno = 15115 + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE syscall.Errno = 15116 + ERROR_MRM_RESOURCE_TYPE_MISMATCH syscall.Errno = 15117 + ERROR_MRM_DUPLICATE_MAP_NAME syscall.Errno = 15118 + ERROR_MRM_DUPLICATE_ENTRY syscall.Errno = 15119 + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER syscall.Errno = 15120 + ERROR_MRM_FILEPATH_TOO_LONG syscall.Errno = 15121 + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE syscall.Errno = 15122 + ERROR_MRM_INVALID_PRI_FILE syscall.Errno = 15126 + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND syscall.Errno = 15127 + ERROR_MRM_MAP_NOT_FOUND syscall.Errno = 15135 + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE syscall.Errno = 15136 + ERROR_MRM_INVALID_QUALIFIER_OPERATOR syscall.Errno = 15137 + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE syscall.Errno = 15138 + ERROR_MRM_AUTOMERGE_ENABLED syscall.Errno = 15139 + ERROR_MRM_TOO_MANY_RESOURCES syscall.Errno = 15140 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE syscall.Errno = 15141 + ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE syscall.Errno = 15142 + ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD syscall.Errno = 15143 + ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST syscall.Errno = 15144 + ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT syscall.Errno = 15145 + ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE syscall.Errno = 15146 + ERROR_MRM_GENERATION_COUNT_MISMATCH syscall.Errno = 15147 + ERROR_PRI_MERGE_VERSION_MISMATCH syscall.Errno = 15148 + ERROR_PRI_MERGE_MISSING_SCHEMA syscall.Errno = 15149 + ERROR_PRI_MERGE_LOAD_FILE_FAILED syscall.Errno = 15150 + ERROR_PRI_MERGE_ADD_FILE_FAILED syscall.Errno = 15151 + ERROR_PRI_MERGE_WRITE_FILE_FAILED syscall.Errno = 15152 + ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED syscall.Errno = 15153 + ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED syscall.Errno = 15154 + ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED syscall.Errno = 15155 + ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED syscall.Errno = 15156 + ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED syscall.Errno = 15157 + ERROR_PRI_MERGE_INVALID_FILE_NAME syscall.Errno = 15158 + ERROR_MRM_PACKAGE_NOT_FOUND syscall.Errno = 15159 + ERROR_MCA_INVALID_CAPABILITIES_STRING syscall.Errno = 15200 + ERROR_MCA_INVALID_VCP_VERSION syscall.Errno = 15201 + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION syscall.Errno = 15202 + ERROR_MCA_MCCS_VERSION_MISMATCH syscall.Errno = 15203 + ERROR_MCA_UNSUPPORTED_MCCS_VERSION syscall.Errno = 15204 + ERROR_MCA_INTERNAL_ERROR syscall.Errno = 15205 + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED syscall.Errno = 15206 + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE syscall.Errno = 15207 + ERROR_AMBIGUOUS_SYSTEM_DEVICE syscall.Errno = 15250 + ERROR_SYSTEM_DEVICE_NOT_FOUND syscall.Errno = 15299 + ERROR_HASH_NOT_SUPPORTED syscall.Errno = 15300 + ERROR_HASH_NOT_PRESENT syscall.Errno = 15301 + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED syscall.Errno = 15321 + ERROR_GPIO_CLIENT_INFORMATION_INVALID syscall.Errno = 15322 + ERROR_GPIO_VERSION_NOT_SUPPORTED syscall.Errno = 15323 + ERROR_GPIO_INVALID_REGISTRATION_PACKET syscall.Errno = 15324 + ERROR_GPIO_OPERATION_DENIED syscall.Errno = 15325 + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE syscall.Errno = 15326 + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED syscall.Errno = 15327 + ERROR_CANNOT_SWITCH_RUNLEVEL syscall.Errno = 15400 + ERROR_INVALID_RUNLEVEL_SETTING syscall.Errno = 15401 + ERROR_RUNLEVEL_SWITCH_TIMEOUT syscall.Errno = 15402 + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT syscall.Errno = 15403 + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS syscall.Errno = 15404 + ERROR_SERVICES_FAILED_AUTOSTART syscall.Errno = 15405 + ERROR_COM_TASK_STOP_PENDING syscall.Errno = 15501 + ERROR_INSTALL_OPEN_PACKAGE_FAILED syscall.Errno = 15600 + ERROR_INSTALL_PACKAGE_NOT_FOUND syscall.Errno = 15601 + ERROR_INSTALL_INVALID_PACKAGE syscall.Errno = 15602 + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED syscall.Errno = 15603 + ERROR_INSTALL_OUT_OF_DISK_SPACE syscall.Errno = 15604 + ERROR_INSTALL_NETWORK_FAILURE syscall.Errno = 15605 + ERROR_INSTALL_REGISTRATION_FAILURE syscall.Errno = 15606 + ERROR_INSTALL_DEREGISTRATION_FAILURE syscall.Errno = 15607 + ERROR_INSTALL_CANCEL syscall.Errno = 15608 + ERROR_INSTALL_FAILED syscall.Errno = 15609 + ERROR_REMOVE_FAILED syscall.Errno = 15610 + ERROR_PACKAGE_ALREADY_EXISTS syscall.Errno = 15611 + ERROR_NEEDS_REMEDIATION syscall.Errno = 15612 + ERROR_INSTALL_PREREQUISITE_FAILED syscall.Errno = 15613 + ERROR_PACKAGE_REPOSITORY_CORRUPTED syscall.Errno = 15614 + ERROR_INSTALL_POLICY_FAILURE syscall.Errno = 15615 + ERROR_PACKAGE_UPDATING syscall.Errno = 15616 + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY syscall.Errno = 15617 + ERROR_PACKAGES_IN_USE syscall.Errno = 15618 + ERROR_RECOVERY_FILE_CORRUPT syscall.Errno = 15619 + ERROR_INVALID_STAGED_SIGNATURE syscall.Errno = 15620 + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED syscall.Errno = 15621 + ERROR_INSTALL_PACKAGE_DOWNGRADE syscall.Errno = 15622 + ERROR_SYSTEM_NEEDS_REMEDIATION syscall.Errno = 15623 + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN syscall.Errno = 15624 + ERROR_RESILIENCY_FILE_CORRUPT syscall.Errno = 15625 + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING syscall.Errno = 15626 + ERROR_PACKAGE_MOVE_FAILED syscall.Errno = 15627 + ERROR_INSTALL_VOLUME_NOT_EMPTY syscall.Errno = 15628 + ERROR_INSTALL_VOLUME_OFFLINE syscall.Errno = 15629 + ERROR_INSTALL_VOLUME_CORRUPT syscall.Errno = 15630 + ERROR_NEEDS_REGISTRATION syscall.Errno = 15631 + ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE syscall.Errno = 15632 + ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED syscall.Errno = 15633 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE syscall.Errno = 15634 + ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM syscall.Errno = 15635 + ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING syscall.Errno = 15636 + ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE syscall.Errno = 15637 + ERROR_PACKAGE_STAGING_ONHOLD syscall.Errno = 15638 + ERROR_INSTALL_INVALID_RELATED_SET_UPDATE syscall.Errno = 15639 + ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640 + ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF syscall.Errno = 15641 + ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED syscall.Errno = 15642 + ERROR_PACKAGES_REPUTATION_CHECK_FAILED syscall.Errno = 15643 + ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT syscall.Errno = 15644 + ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED syscall.Errno = 15645 + ERROR_APPINSTALLER_ACTIVATION_BLOCKED syscall.Errno = 15646 + ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED syscall.Errno = 15647 + APPMODEL_ERROR_NO_PACKAGE syscall.Errno = 15700 + APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT syscall.Errno = 15701 + APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT syscall.Errno = 15702 + APPMODEL_ERROR_NO_APPLICATION syscall.Errno = 15703 + APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED syscall.Errno = 15704 + APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID syscall.Errno = 15705 + APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE syscall.Errno = 15706 + ERROR_STATE_LOAD_STORE_FAILED syscall.Errno = 15800 + ERROR_STATE_GET_VERSION_FAILED syscall.Errno = 15801 + ERROR_STATE_SET_VERSION_FAILED syscall.Errno = 15802 + ERROR_STATE_STRUCTURED_RESET_FAILED syscall.Errno = 15803 + ERROR_STATE_OPEN_CONTAINER_FAILED syscall.Errno = 15804 + ERROR_STATE_CREATE_CONTAINER_FAILED syscall.Errno = 15805 + ERROR_STATE_DELETE_CONTAINER_FAILED syscall.Errno = 15806 + ERROR_STATE_READ_SETTING_FAILED syscall.Errno = 15807 + ERROR_STATE_WRITE_SETTING_FAILED syscall.Errno = 15808 + ERROR_STATE_DELETE_SETTING_FAILED syscall.Errno = 15809 + ERROR_STATE_QUERY_SETTING_FAILED syscall.Errno = 15810 + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED syscall.Errno = 15811 + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED syscall.Errno = 15812 + ERROR_STATE_ENUMERATE_CONTAINER_FAILED syscall.Errno = 15813 + ERROR_STATE_ENUMERATE_SETTINGS_FAILED syscall.Errno = 15814 + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15815 + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED syscall.Errno = 15816 + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15817 + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED syscall.Errno = 15818 + ERROR_API_UNAVAILABLE syscall.Errno = 15841 + STORE_ERROR_UNLICENSED syscall.Errno = 15861 + STORE_ERROR_UNLICENSED_USER syscall.Errno = 15862 + STORE_ERROR_PENDING_COM_TRANSACTION syscall.Errno = 15863 + STORE_ERROR_LICENSE_REVOKED syscall.Errno = 15864 + SEVERITY_SUCCESS syscall.Errno = 0 + SEVERITY_ERROR syscall.Errno = 1 + FACILITY_NT_BIT = 0x10000000 + E_NOT_SET = ERROR_NOT_FOUND + E_NOT_VALID_STATE = ERROR_INVALID_STATE + E_NOT_SUFFICIENT_BUFFER = ERROR_INSUFFICIENT_BUFFER + E_TIME_CRITICAL_THREAD = ERROR_TIME_CRITICAL_THREAD + NOERROR syscall.Errno = 0 + E_UNEXPECTED Handle = 0x8000FFFF + E_NOTIMPL Handle = 0x80004001 + E_OUTOFMEMORY Handle = 0x8007000E + E_INVALIDARG Handle = 0x80070057 + E_NOINTERFACE Handle = 0x80004002 + E_POINTER Handle = 0x80004003 + E_HANDLE Handle = 0x80070006 + E_ABORT Handle = 0x80004004 + E_FAIL Handle = 0x80004005 + E_ACCESSDENIED Handle = 0x80070005 + E_PENDING Handle = 0x8000000A + E_BOUNDS Handle = 0x8000000B + E_CHANGED_STATE Handle = 0x8000000C + E_ILLEGAL_STATE_CHANGE Handle = 0x8000000D + E_ILLEGAL_METHOD_CALL Handle = 0x8000000E + RO_E_METADATA_NAME_NOT_FOUND Handle = 0x8000000F + RO_E_METADATA_NAME_IS_NAMESPACE Handle = 0x80000010 + RO_E_METADATA_INVALID_TYPE_FORMAT Handle = 0x80000011 + RO_E_INVALID_METADATA_FILE Handle = 0x80000012 + RO_E_CLOSED Handle = 0x80000013 + RO_E_EXCLUSIVE_WRITE Handle = 0x80000014 + RO_E_CHANGE_NOTIFICATION_IN_PROGRESS Handle = 0x80000015 + RO_E_ERROR_STRING_NOT_FOUND Handle = 0x80000016 + E_STRING_NOT_NULL_TERMINATED Handle = 0x80000017 + E_ILLEGAL_DELEGATE_ASSIGNMENT Handle = 0x80000018 + E_ASYNC_OPERATION_NOT_STARTED Handle = 0x80000019 + E_APPLICATION_EXITING Handle = 0x8000001A + E_APPLICATION_VIEW_EXITING Handle = 0x8000001B + RO_E_MUST_BE_AGILE Handle = 0x8000001C + RO_E_UNSUPPORTED_FROM_MTA Handle = 0x8000001D + RO_E_COMMITTED Handle = 0x8000001E + RO_E_BLOCKED_CROSS_ASTA_CALL Handle = 0x8000001F + RO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER Handle = 0x80000020 + RO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER Handle = 0x80000021 + CO_E_INIT_TLS Handle = 0x80004006 + CO_E_INIT_SHARED_ALLOCATOR Handle = 0x80004007 + CO_E_INIT_MEMORY_ALLOCATOR Handle = 0x80004008 + CO_E_INIT_CLASS_CACHE Handle = 0x80004009 + CO_E_INIT_RPC_CHANNEL Handle = 0x8000400A + CO_E_INIT_TLS_SET_CHANNEL_CONTROL Handle = 0x8000400B + CO_E_INIT_TLS_CHANNEL_CONTROL Handle = 0x8000400C + CO_E_INIT_UNACCEPTED_USER_ALLOCATOR Handle = 0x8000400D + CO_E_INIT_SCM_MUTEX_EXISTS Handle = 0x8000400E + CO_E_INIT_SCM_FILE_MAPPING_EXISTS Handle = 0x8000400F + CO_E_INIT_SCM_MAP_VIEW_OF_FILE Handle = 0x80004010 + CO_E_INIT_SCM_EXEC_FAILURE Handle = 0x80004011 + CO_E_INIT_ONLY_SINGLE_THREADED Handle = 0x80004012 + CO_E_CANT_REMOTE Handle = 0x80004013 + CO_E_BAD_SERVER_NAME Handle = 0x80004014 + CO_E_WRONG_SERVER_IDENTITY Handle = 0x80004015 + CO_E_OLE1DDE_DISABLED Handle = 0x80004016 + CO_E_RUNAS_SYNTAX Handle = 0x80004017 + CO_E_CREATEPROCESS_FAILURE Handle = 0x80004018 + CO_E_RUNAS_CREATEPROCESS_FAILURE Handle = 0x80004019 + CO_E_RUNAS_LOGON_FAILURE Handle = 0x8000401A + CO_E_LAUNCH_PERMSSION_DENIED Handle = 0x8000401B + CO_E_START_SERVICE_FAILURE Handle = 0x8000401C + CO_E_REMOTE_COMMUNICATION_FAILURE Handle = 0x8000401D + CO_E_SERVER_START_TIMEOUT Handle = 0x8000401E + CO_E_CLSREG_INCONSISTENT Handle = 0x8000401F + CO_E_IIDREG_INCONSISTENT Handle = 0x80004020 + CO_E_NOT_SUPPORTED Handle = 0x80004021 + CO_E_RELOAD_DLL Handle = 0x80004022 + CO_E_MSI_ERROR Handle = 0x80004023 + CO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT Handle = 0x80004024 + CO_E_SERVER_PAUSED Handle = 0x80004025 + CO_E_SERVER_NOT_PAUSED Handle = 0x80004026 + CO_E_CLASS_DISABLED Handle = 0x80004027 + CO_E_CLRNOTAVAILABLE Handle = 0x80004028 + CO_E_ASYNC_WORK_REJECTED Handle = 0x80004029 + CO_E_SERVER_INIT_TIMEOUT Handle = 0x8000402A + CO_E_NO_SECCTX_IN_ACTIVATE Handle = 0x8000402B + CO_E_TRACKER_CONFIG Handle = 0x80004030 + CO_E_THREADPOOL_CONFIG Handle = 0x80004031 + CO_E_SXS_CONFIG Handle = 0x80004032 + CO_E_MALFORMED_SPN Handle = 0x80004033 + CO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN Handle = 0x80004034 + CO_E_PREMATURE_STUB_RUNDOWN Handle = 0x80004035 + S_OK Handle = 0 + S_FALSE Handle = 1 + OLE_E_FIRST Handle = 0x80040000 + OLE_E_LAST Handle = 0x800400FF + OLE_S_FIRST Handle = 0x00040000 + OLE_S_LAST Handle = 0x000400FF + OLE_E_OLEVERB Handle = 0x80040000 + OLE_E_ADVF Handle = 0x80040001 + OLE_E_ENUM_NOMORE Handle = 0x80040002 + OLE_E_ADVISENOTSUPPORTED Handle = 0x80040003 + OLE_E_NOCONNECTION Handle = 0x80040004 + OLE_E_NOTRUNNING Handle = 0x80040005 + OLE_E_NOCACHE Handle = 0x80040006 + OLE_E_BLANK Handle = 0x80040007 + OLE_E_CLASSDIFF Handle = 0x80040008 + OLE_E_CANT_GETMONIKER Handle = 0x80040009 + OLE_E_CANT_BINDTOSOURCE Handle = 0x8004000A + OLE_E_STATIC Handle = 0x8004000B + OLE_E_PROMPTSAVECANCELLED Handle = 0x8004000C + OLE_E_INVALIDRECT Handle = 0x8004000D + OLE_E_WRONGCOMPOBJ Handle = 0x8004000E + OLE_E_INVALIDHWND Handle = 0x8004000F + OLE_E_NOT_INPLACEACTIVE Handle = 0x80040010 + OLE_E_CANTCONVERT Handle = 0x80040011 + OLE_E_NOSTORAGE Handle = 0x80040012 + DV_E_FORMATETC Handle = 0x80040064 + DV_E_DVTARGETDEVICE Handle = 0x80040065 + DV_E_STGMEDIUM Handle = 0x80040066 + DV_E_STATDATA Handle = 0x80040067 + DV_E_LINDEX Handle = 0x80040068 + DV_E_TYMED Handle = 0x80040069 + DV_E_CLIPFORMAT Handle = 0x8004006A + DV_E_DVASPECT Handle = 0x8004006B + DV_E_DVTARGETDEVICE_SIZE Handle = 0x8004006C + DV_E_NOIVIEWOBJECT Handle = 0x8004006D + DRAGDROP_E_FIRST syscall.Errno = 0x80040100 + DRAGDROP_E_LAST syscall.Errno = 0x8004010F + DRAGDROP_S_FIRST syscall.Errno = 0x00040100 + DRAGDROP_S_LAST syscall.Errno = 0x0004010F + DRAGDROP_E_NOTREGISTERED Handle = 0x80040100 + DRAGDROP_E_ALREADYREGISTERED Handle = 0x80040101 + DRAGDROP_E_INVALIDHWND Handle = 0x80040102 + DRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED Handle = 0x80040103 + CLASSFACTORY_E_FIRST syscall.Errno = 0x80040110 + CLASSFACTORY_E_LAST syscall.Errno = 0x8004011F + CLASSFACTORY_S_FIRST syscall.Errno = 0x00040110 + CLASSFACTORY_S_LAST syscall.Errno = 0x0004011F + CLASS_E_NOAGGREGATION Handle = 0x80040110 + CLASS_E_CLASSNOTAVAILABLE Handle = 0x80040111 + CLASS_E_NOTLICENSED Handle = 0x80040112 + MARSHAL_E_FIRST syscall.Errno = 0x80040120 + MARSHAL_E_LAST syscall.Errno = 0x8004012F + MARSHAL_S_FIRST syscall.Errno = 0x00040120 + MARSHAL_S_LAST syscall.Errno = 0x0004012F + DATA_E_FIRST syscall.Errno = 0x80040130 + DATA_E_LAST syscall.Errno = 0x8004013F + DATA_S_FIRST syscall.Errno = 0x00040130 + DATA_S_LAST syscall.Errno = 0x0004013F + VIEW_E_FIRST syscall.Errno = 0x80040140 + VIEW_E_LAST syscall.Errno = 0x8004014F + VIEW_S_FIRST syscall.Errno = 0x00040140 + VIEW_S_LAST syscall.Errno = 0x0004014F + VIEW_E_DRAW Handle = 0x80040140 + REGDB_E_FIRST syscall.Errno = 0x80040150 + REGDB_E_LAST syscall.Errno = 0x8004015F + REGDB_S_FIRST syscall.Errno = 0x00040150 + REGDB_S_LAST syscall.Errno = 0x0004015F + REGDB_E_READREGDB Handle = 0x80040150 + REGDB_E_WRITEREGDB Handle = 0x80040151 + REGDB_E_KEYMISSING Handle = 0x80040152 + REGDB_E_INVALIDVALUE Handle = 0x80040153 + REGDB_E_CLASSNOTREG Handle = 0x80040154 + REGDB_E_IIDNOTREG Handle = 0x80040155 + REGDB_E_BADTHREADINGMODEL Handle = 0x80040156 + REGDB_E_PACKAGEPOLICYVIOLATION Handle = 0x80040157 + CAT_E_FIRST syscall.Errno = 0x80040160 + CAT_E_LAST syscall.Errno = 0x80040161 + CAT_E_CATIDNOEXIST Handle = 0x80040160 + CAT_E_NODESCRIPTION Handle = 0x80040161 + CS_E_FIRST syscall.Errno = 0x80040164 + CS_E_LAST syscall.Errno = 0x8004016F + CS_E_PACKAGE_NOTFOUND Handle = 0x80040164 + CS_E_NOT_DELETABLE Handle = 0x80040165 + CS_E_CLASS_NOTFOUND Handle = 0x80040166 + CS_E_INVALID_VERSION Handle = 0x80040167 + CS_E_NO_CLASSSTORE Handle = 0x80040168 + CS_E_OBJECT_NOTFOUND Handle = 0x80040169 + CS_E_OBJECT_ALREADY_EXISTS Handle = 0x8004016A + CS_E_INVALID_PATH Handle = 0x8004016B + CS_E_NETWORK_ERROR Handle = 0x8004016C + CS_E_ADMIN_LIMIT_EXCEEDED Handle = 0x8004016D + CS_E_SCHEMA_MISMATCH Handle = 0x8004016E + CS_E_INTERNAL_ERROR Handle = 0x8004016F + CACHE_E_FIRST syscall.Errno = 0x80040170 + CACHE_E_LAST syscall.Errno = 0x8004017F + CACHE_S_FIRST syscall.Errno = 0x00040170 + CACHE_S_LAST syscall.Errno = 0x0004017F + CACHE_E_NOCACHE_UPDATED Handle = 0x80040170 + OLEOBJ_E_FIRST syscall.Errno = 0x80040180 + OLEOBJ_E_LAST syscall.Errno = 0x8004018F + OLEOBJ_S_FIRST syscall.Errno = 0x00040180 + OLEOBJ_S_LAST syscall.Errno = 0x0004018F + OLEOBJ_E_NOVERBS Handle = 0x80040180 + OLEOBJ_E_INVALIDVERB Handle = 0x80040181 + CLIENTSITE_E_FIRST syscall.Errno = 0x80040190 + CLIENTSITE_E_LAST syscall.Errno = 0x8004019F + CLIENTSITE_S_FIRST syscall.Errno = 0x00040190 + CLIENTSITE_S_LAST syscall.Errno = 0x0004019F + INPLACE_E_NOTUNDOABLE Handle = 0x800401A0 + INPLACE_E_NOTOOLSPACE Handle = 0x800401A1 + INPLACE_E_FIRST syscall.Errno = 0x800401A0 + INPLACE_E_LAST syscall.Errno = 0x800401AF + INPLACE_S_FIRST syscall.Errno = 0x000401A0 + INPLACE_S_LAST syscall.Errno = 0x000401AF + ENUM_E_FIRST syscall.Errno = 0x800401B0 + ENUM_E_LAST syscall.Errno = 0x800401BF + ENUM_S_FIRST syscall.Errno = 0x000401B0 + ENUM_S_LAST syscall.Errno = 0x000401BF + CONVERT10_E_FIRST syscall.Errno = 0x800401C0 + CONVERT10_E_LAST syscall.Errno = 0x800401CF + CONVERT10_S_FIRST syscall.Errno = 0x000401C0 + CONVERT10_S_LAST syscall.Errno = 0x000401CF + CONVERT10_E_OLESTREAM_GET Handle = 0x800401C0 + CONVERT10_E_OLESTREAM_PUT Handle = 0x800401C1 + CONVERT10_E_OLESTREAM_FMT Handle = 0x800401C2 + CONVERT10_E_OLESTREAM_BITMAP_TO_DIB Handle = 0x800401C3 + CONVERT10_E_STG_FMT Handle = 0x800401C4 + CONVERT10_E_STG_NO_STD_STREAM Handle = 0x800401C5 + CONVERT10_E_STG_DIB_TO_BITMAP Handle = 0x800401C6 + CLIPBRD_E_FIRST syscall.Errno = 0x800401D0 + CLIPBRD_E_LAST syscall.Errno = 0x800401DF + CLIPBRD_S_FIRST syscall.Errno = 0x000401D0 + CLIPBRD_S_LAST syscall.Errno = 0x000401DF + CLIPBRD_E_CANT_OPEN Handle = 0x800401D0 + CLIPBRD_E_CANT_EMPTY Handle = 0x800401D1 + CLIPBRD_E_CANT_SET Handle = 0x800401D2 + CLIPBRD_E_BAD_DATA Handle = 0x800401D3 + CLIPBRD_E_CANT_CLOSE Handle = 0x800401D4 + MK_E_FIRST syscall.Errno = 0x800401E0 + MK_E_LAST syscall.Errno = 0x800401EF + MK_S_FIRST syscall.Errno = 0x000401E0 + MK_S_LAST syscall.Errno = 0x000401EF + MK_E_CONNECTMANUALLY Handle = 0x800401E0 + MK_E_EXCEEDEDDEADLINE Handle = 0x800401E1 + MK_E_NEEDGENERIC Handle = 0x800401E2 + MK_E_UNAVAILABLE Handle = 0x800401E3 + MK_E_SYNTAX Handle = 0x800401E4 + MK_E_NOOBJECT Handle = 0x800401E5 + MK_E_INVALIDEXTENSION Handle = 0x800401E6 + MK_E_INTERMEDIATEINTERFACENOTSUPPORTED Handle = 0x800401E7 + MK_E_NOTBINDABLE Handle = 0x800401E8 + MK_E_NOTBOUND Handle = 0x800401E9 + MK_E_CANTOPENFILE Handle = 0x800401EA + MK_E_MUSTBOTHERUSER Handle = 0x800401EB + MK_E_NOINVERSE Handle = 0x800401EC + MK_E_NOSTORAGE Handle = 0x800401ED + MK_E_NOPREFIX Handle = 0x800401EE + MK_E_ENUMERATION_FAILED Handle = 0x800401EF + CO_E_FIRST syscall.Errno = 0x800401F0 + CO_E_LAST syscall.Errno = 0x800401FF + CO_S_FIRST syscall.Errno = 0x000401F0 + CO_S_LAST syscall.Errno = 0x000401FF + CO_E_NOTINITIALIZED Handle = 0x800401F0 + CO_E_ALREADYINITIALIZED Handle = 0x800401F1 + CO_E_CANTDETERMINECLASS Handle = 0x800401F2 + CO_E_CLASSSTRING Handle = 0x800401F3 + CO_E_IIDSTRING Handle = 0x800401F4 + CO_E_APPNOTFOUND Handle = 0x800401F5 + CO_E_APPSINGLEUSE Handle = 0x800401F6 + CO_E_ERRORINAPP Handle = 0x800401F7 + CO_E_DLLNOTFOUND Handle = 0x800401F8 + CO_E_ERRORINDLL Handle = 0x800401F9 + CO_E_WRONGOSFORAPP Handle = 0x800401FA + CO_E_OBJNOTREG Handle = 0x800401FB + CO_E_OBJISREG Handle = 0x800401FC + CO_E_OBJNOTCONNECTED Handle = 0x800401FD + CO_E_APPDIDNTREG Handle = 0x800401FE + CO_E_RELEASED Handle = 0x800401FF + EVENT_E_FIRST syscall.Errno = 0x80040200 + EVENT_E_LAST syscall.Errno = 0x8004021F + EVENT_S_FIRST syscall.Errno = 0x00040200 + EVENT_S_LAST syscall.Errno = 0x0004021F + EVENT_S_SOME_SUBSCRIBERS_FAILED Handle = 0x00040200 + EVENT_E_ALL_SUBSCRIBERS_FAILED Handle = 0x80040201 + EVENT_S_NOSUBSCRIBERS Handle = 0x00040202 + EVENT_E_QUERYSYNTAX Handle = 0x80040203 + EVENT_E_QUERYFIELD Handle = 0x80040204 + EVENT_E_INTERNALEXCEPTION Handle = 0x80040205 + EVENT_E_INTERNALERROR Handle = 0x80040206 + EVENT_E_INVALID_PER_USER_SID Handle = 0x80040207 + EVENT_E_USER_EXCEPTION Handle = 0x80040208 + EVENT_E_TOO_MANY_METHODS Handle = 0x80040209 + EVENT_E_MISSING_EVENTCLASS Handle = 0x8004020A + EVENT_E_NOT_ALL_REMOVED Handle = 0x8004020B + EVENT_E_COMPLUS_NOT_INSTALLED Handle = 0x8004020C + EVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT Handle = 0x8004020D + EVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT Handle = 0x8004020E + EVENT_E_INVALID_EVENT_CLASS_PARTITION Handle = 0x8004020F + EVENT_E_PER_USER_SID_NOT_LOGGED_ON Handle = 0x80040210 + TPC_E_INVALID_PROPERTY Handle = 0x80040241 + TPC_E_NO_DEFAULT_TABLET Handle = 0x80040212 + TPC_E_UNKNOWN_PROPERTY Handle = 0x8004021B + TPC_E_INVALID_INPUT_RECT Handle = 0x80040219 + TPC_E_INVALID_STROKE Handle = 0x80040222 + TPC_E_INITIALIZE_FAIL Handle = 0x80040223 + TPC_E_NOT_RELEVANT Handle = 0x80040232 + TPC_E_INVALID_PACKET_DESCRIPTION Handle = 0x80040233 + TPC_E_RECOGNIZER_NOT_REGISTERED Handle = 0x80040235 + TPC_E_INVALID_RIGHTS Handle = 0x80040236 + TPC_E_OUT_OF_ORDER_CALL Handle = 0x80040237 + TPC_E_QUEUE_FULL Handle = 0x80040238 + TPC_E_INVALID_CONFIGURATION Handle = 0x80040239 + TPC_E_INVALID_DATA_FROM_RECOGNIZER Handle = 0x8004023A + TPC_S_TRUNCATED Handle = 0x00040252 + TPC_S_INTERRUPTED Handle = 0x00040253 + TPC_S_NO_DATA_TO_PROCESS Handle = 0x00040254 + XACT_E_FIRST syscall.Errno = 0x8004D000 + XACT_E_LAST syscall.Errno = 0x8004D02B + XACT_S_FIRST syscall.Errno = 0x0004D000 + XACT_S_LAST syscall.Errno = 0x0004D010 + XACT_E_ALREADYOTHERSINGLEPHASE Handle = 0x8004D000 + XACT_E_CANTRETAIN Handle = 0x8004D001 + XACT_E_COMMITFAILED Handle = 0x8004D002 + XACT_E_COMMITPREVENTED Handle = 0x8004D003 + XACT_E_HEURISTICABORT Handle = 0x8004D004 + XACT_E_HEURISTICCOMMIT Handle = 0x8004D005 + XACT_E_HEURISTICDAMAGE Handle = 0x8004D006 + XACT_E_HEURISTICDANGER Handle = 0x8004D007 + XACT_E_ISOLATIONLEVEL Handle = 0x8004D008 + XACT_E_NOASYNC Handle = 0x8004D009 + XACT_E_NOENLIST Handle = 0x8004D00A + XACT_E_NOISORETAIN Handle = 0x8004D00B + XACT_E_NORESOURCE Handle = 0x8004D00C + XACT_E_NOTCURRENT Handle = 0x8004D00D + XACT_E_NOTRANSACTION Handle = 0x8004D00E + XACT_E_NOTSUPPORTED Handle = 0x8004D00F + XACT_E_UNKNOWNRMGRID Handle = 0x8004D010 + XACT_E_WRONGSTATE Handle = 0x8004D011 + XACT_E_WRONGUOW Handle = 0x8004D012 + XACT_E_XTIONEXISTS Handle = 0x8004D013 + XACT_E_NOIMPORTOBJECT Handle = 0x8004D014 + XACT_E_INVALIDCOOKIE Handle = 0x8004D015 + XACT_E_INDOUBT Handle = 0x8004D016 + XACT_E_NOTIMEOUT Handle = 0x8004D017 + XACT_E_ALREADYINPROGRESS Handle = 0x8004D018 + XACT_E_ABORTED Handle = 0x8004D019 + XACT_E_LOGFULL Handle = 0x8004D01A + XACT_E_TMNOTAVAILABLE Handle = 0x8004D01B + XACT_E_CONNECTION_DOWN Handle = 0x8004D01C + XACT_E_CONNECTION_DENIED Handle = 0x8004D01D + XACT_E_REENLISTTIMEOUT Handle = 0x8004D01E + XACT_E_TIP_CONNECT_FAILED Handle = 0x8004D01F + XACT_E_TIP_PROTOCOL_ERROR Handle = 0x8004D020 + XACT_E_TIP_PULL_FAILED Handle = 0x8004D021 + XACT_E_DEST_TMNOTAVAILABLE Handle = 0x8004D022 + XACT_E_TIP_DISABLED Handle = 0x8004D023 + XACT_E_NETWORK_TX_DISABLED Handle = 0x8004D024 + XACT_E_PARTNER_NETWORK_TX_DISABLED Handle = 0x8004D025 + XACT_E_XA_TX_DISABLED Handle = 0x8004D026 + XACT_E_UNABLE_TO_READ_DTC_CONFIG Handle = 0x8004D027 + XACT_E_UNABLE_TO_LOAD_DTC_PROXY Handle = 0x8004D028 + XACT_E_ABORTING Handle = 0x8004D029 + XACT_E_PUSH_COMM_FAILURE Handle = 0x8004D02A + XACT_E_PULL_COMM_FAILURE Handle = 0x8004D02B + XACT_E_LU_TX_DISABLED Handle = 0x8004D02C + XACT_E_CLERKNOTFOUND Handle = 0x8004D080 + XACT_E_CLERKEXISTS Handle = 0x8004D081 + XACT_E_RECOVERYINPROGRESS Handle = 0x8004D082 + XACT_E_TRANSACTIONCLOSED Handle = 0x8004D083 + XACT_E_INVALIDLSN Handle = 0x8004D084 + XACT_E_REPLAYREQUEST Handle = 0x8004D085 + XACT_S_ASYNC Handle = 0x0004D000 + XACT_S_DEFECT Handle = 0x0004D001 + XACT_S_READONLY Handle = 0x0004D002 + XACT_S_SOMENORETAIN Handle = 0x0004D003 + XACT_S_OKINFORM Handle = 0x0004D004 + XACT_S_MADECHANGESCONTENT Handle = 0x0004D005 + XACT_S_MADECHANGESINFORM Handle = 0x0004D006 + XACT_S_ALLNORETAIN Handle = 0x0004D007 + XACT_S_ABORTING Handle = 0x0004D008 + XACT_S_SINGLEPHASE Handle = 0x0004D009 + XACT_S_LOCALLY_OK Handle = 0x0004D00A + XACT_S_LASTRESOURCEMANAGER Handle = 0x0004D010 + CONTEXT_E_FIRST syscall.Errno = 0x8004E000 + CONTEXT_E_LAST syscall.Errno = 0x8004E02F + CONTEXT_S_FIRST syscall.Errno = 0x0004E000 + CONTEXT_S_LAST syscall.Errno = 0x0004E02F + CONTEXT_E_ABORTED Handle = 0x8004E002 + CONTEXT_E_ABORTING Handle = 0x8004E003 + CONTEXT_E_NOCONTEXT Handle = 0x8004E004 + CONTEXT_E_WOULD_DEADLOCK Handle = 0x8004E005 + CONTEXT_E_SYNCH_TIMEOUT Handle = 0x8004E006 + CONTEXT_E_OLDREF Handle = 0x8004E007 + CONTEXT_E_ROLENOTFOUND Handle = 0x8004E00C + CONTEXT_E_TMNOTAVAILABLE Handle = 0x8004E00F + CO_E_ACTIVATIONFAILED Handle = 0x8004E021 + CO_E_ACTIVATIONFAILED_EVENTLOGGED Handle = 0x8004E022 + CO_E_ACTIVATIONFAILED_CATALOGERROR Handle = 0x8004E023 + CO_E_ACTIVATIONFAILED_TIMEOUT Handle = 0x8004E024 + CO_E_INITIALIZATIONFAILED Handle = 0x8004E025 + CONTEXT_E_NOJIT Handle = 0x8004E026 + CONTEXT_E_NOTRANSACTION Handle = 0x8004E027 + CO_E_THREADINGMODEL_CHANGED Handle = 0x8004E028 + CO_E_NOIISINTRINSICS Handle = 0x8004E029 + CO_E_NOCOOKIES Handle = 0x8004E02A + CO_E_DBERROR Handle = 0x8004E02B + CO_E_NOTPOOLED Handle = 0x8004E02C + CO_E_NOTCONSTRUCTED Handle = 0x8004E02D + CO_E_NOSYNCHRONIZATION Handle = 0x8004E02E + CO_E_ISOLEVELMISMATCH Handle = 0x8004E02F + CO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED Handle = 0x8004E030 + CO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED Handle = 0x8004E031 + OLE_S_USEREG Handle = 0x00040000 + OLE_S_STATIC Handle = 0x00040001 + OLE_S_MAC_CLIPFORMAT Handle = 0x00040002 + DRAGDROP_S_DROP Handle = 0x00040100 + DRAGDROP_S_CANCEL Handle = 0x00040101 + DRAGDROP_S_USEDEFAULTCURSORS Handle = 0x00040102 + DATA_S_SAMEFORMATETC Handle = 0x00040130 + VIEW_S_ALREADY_FROZEN Handle = 0x00040140 + CACHE_S_FORMATETC_NOTSUPPORTED Handle = 0x00040170 + CACHE_S_SAMECACHE Handle = 0x00040171 + CACHE_S_SOMECACHES_NOTUPDATED Handle = 0x00040172 + OLEOBJ_S_INVALIDVERB Handle = 0x00040180 + OLEOBJ_S_CANNOT_DOVERB_NOW Handle = 0x00040181 + OLEOBJ_S_INVALIDHWND Handle = 0x00040182 + INPLACE_S_TRUNCATED Handle = 0x000401A0 + CONVERT10_S_NO_PRESENTATION Handle = 0x000401C0 + MK_S_REDUCED_TO_SELF Handle = 0x000401E2 + MK_S_ME Handle = 0x000401E4 + MK_S_HIM Handle = 0x000401E5 + MK_S_US Handle = 0x000401E6 + MK_S_MONIKERALREADYREGISTERED Handle = 0x000401E7 + SCHED_S_TASK_READY Handle = 0x00041300 + SCHED_S_TASK_RUNNING Handle = 0x00041301 + SCHED_S_TASK_DISABLED Handle = 0x00041302 + SCHED_S_TASK_HAS_NOT_RUN Handle = 0x00041303 + SCHED_S_TASK_NO_MORE_RUNS Handle = 0x00041304 + SCHED_S_TASK_NOT_SCHEDULED Handle = 0x00041305 + SCHED_S_TASK_TERMINATED Handle = 0x00041306 + SCHED_S_TASK_NO_VALID_TRIGGERS Handle = 0x00041307 + SCHED_S_EVENT_TRIGGER Handle = 0x00041308 + SCHED_E_TRIGGER_NOT_FOUND Handle = 0x80041309 + SCHED_E_TASK_NOT_READY Handle = 0x8004130A + SCHED_E_TASK_NOT_RUNNING Handle = 0x8004130B + SCHED_E_SERVICE_NOT_INSTALLED Handle = 0x8004130C + SCHED_E_CANNOT_OPEN_TASK Handle = 0x8004130D + SCHED_E_INVALID_TASK Handle = 0x8004130E + SCHED_E_ACCOUNT_INFORMATION_NOT_SET Handle = 0x8004130F + SCHED_E_ACCOUNT_NAME_NOT_FOUND Handle = 0x80041310 + SCHED_E_ACCOUNT_DBASE_CORRUPT Handle = 0x80041311 + SCHED_E_NO_SECURITY_SERVICES Handle = 0x80041312 + SCHED_E_UNKNOWN_OBJECT_VERSION Handle = 0x80041313 + SCHED_E_UNSUPPORTED_ACCOUNT_OPTION Handle = 0x80041314 + SCHED_E_SERVICE_NOT_RUNNING Handle = 0x80041315 + SCHED_E_UNEXPECTEDNODE Handle = 0x80041316 + SCHED_E_NAMESPACE Handle = 0x80041317 + SCHED_E_INVALIDVALUE Handle = 0x80041318 + SCHED_E_MISSINGNODE Handle = 0x80041319 + SCHED_E_MALFORMEDXML Handle = 0x8004131A + SCHED_S_SOME_TRIGGERS_FAILED Handle = 0x0004131B + SCHED_S_BATCH_LOGON_PROBLEM Handle = 0x0004131C + SCHED_E_TOO_MANY_NODES Handle = 0x8004131D + SCHED_E_PAST_END_BOUNDARY Handle = 0x8004131E + SCHED_E_ALREADY_RUNNING Handle = 0x8004131F + SCHED_E_USER_NOT_LOGGED_ON Handle = 0x80041320 + SCHED_E_INVALID_TASK_HASH Handle = 0x80041321 + SCHED_E_SERVICE_NOT_AVAILABLE Handle = 0x80041322 + SCHED_E_SERVICE_TOO_BUSY Handle = 0x80041323 + SCHED_E_TASK_ATTEMPTED Handle = 0x80041324 + SCHED_S_TASK_QUEUED Handle = 0x00041325 + SCHED_E_TASK_DISABLED Handle = 0x80041326 + SCHED_E_TASK_NOT_V1_COMPAT Handle = 0x80041327 + SCHED_E_START_ON_DEMAND Handle = 0x80041328 + SCHED_E_TASK_NOT_UBPM_COMPAT Handle = 0x80041329 + SCHED_E_DEPRECATED_FEATURE_USED Handle = 0x80041330 + CO_E_CLASS_CREATE_FAILED Handle = 0x80080001 + CO_E_SCM_ERROR Handle = 0x80080002 + CO_E_SCM_RPC_FAILURE Handle = 0x80080003 + CO_E_BAD_PATH Handle = 0x80080004 + CO_E_SERVER_EXEC_FAILURE Handle = 0x80080005 + CO_E_OBJSRV_RPC_FAILURE Handle = 0x80080006 + MK_E_NO_NORMALIZED Handle = 0x80080007 + CO_E_SERVER_STOPPING Handle = 0x80080008 + MEM_E_INVALID_ROOT Handle = 0x80080009 + MEM_E_INVALID_LINK Handle = 0x80080010 + MEM_E_INVALID_SIZE Handle = 0x80080011 + CO_S_NOTALLINTERFACES Handle = 0x00080012 + CO_S_MACHINENAMENOTFOUND Handle = 0x00080013 + CO_E_MISSING_DISPLAYNAME Handle = 0x80080015 + CO_E_RUNAS_VALUE_MUST_BE_AAA Handle = 0x80080016 + CO_E_ELEVATION_DISABLED Handle = 0x80080017 + APPX_E_PACKAGING_INTERNAL Handle = 0x80080200 + APPX_E_INTERLEAVING_NOT_ALLOWED Handle = 0x80080201 + APPX_E_RELATIONSHIPS_NOT_ALLOWED Handle = 0x80080202 + APPX_E_MISSING_REQUIRED_FILE Handle = 0x80080203 + APPX_E_INVALID_MANIFEST Handle = 0x80080204 + APPX_E_INVALID_BLOCKMAP Handle = 0x80080205 + APPX_E_CORRUPT_CONTENT Handle = 0x80080206 + APPX_E_BLOCK_HASH_INVALID Handle = 0x80080207 + APPX_E_REQUESTED_RANGE_TOO_LARGE Handle = 0x80080208 + APPX_E_INVALID_SIP_CLIENT_DATA Handle = 0x80080209 + APPX_E_INVALID_KEY_INFO Handle = 0x8008020A + APPX_E_INVALID_CONTENTGROUPMAP Handle = 0x8008020B + APPX_E_INVALID_APPINSTALLER Handle = 0x8008020C + APPX_E_DELTA_BASELINE_VERSION_MISMATCH Handle = 0x8008020D + APPX_E_DELTA_PACKAGE_MISSING_FILE Handle = 0x8008020E + APPX_E_INVALID_DELTA_PACKAGE Handle = 0x8008020F + APPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED Handle = 0x80080210 + APPX_E_INVALID_PACKAGING_LAYOUT Handle = 0x80080211 + APPX_E_INVALID_PACKAGESIGNCONFIG Handle = 0x80080212 + APPX_E_RESOURCESPRI_NOT_ALLOWED Handle = 0x80080213 + APPX_E_FILE_COMPRESSION_MISMATCH Handle = 0x80080214 + APPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION Handle = 0x80080215 + APPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST Handle = 0x80080216 + BT_E_SPURIOUS_ACTIVATION Handle = 0x80080300 + DISP_E_UNKNOWNINTERFACE Handle = 0x80020001 + DISP_E_MEMBERNOTFOUND Handle = 0x80020003 + DISP_E_PARAMNOTFOUND Handle = 0x80020004 + DISP_E_TYPEMISMATCH Handle = 0x80020005 + DISP_E_UNKNOWNNAME Handle = 0x80020006 + DISP_E_NONAMEDARGS Handle = 0x80020007 + DISP_E_BADVARTYPE Handle = 0x80020008 + DISP_E_EXCEPTION Handle = 0x80020009 + DISP_E_OVERFLOW Handle = 0x8002000A + DISP_E_BADINDEX Handle = 0x8002000B + DISP_E_UNKNOWNLCID Handle = 0x8002000C + DISP_E_ARRAYISLOCKED Handle = 0x8002000D + DISP_E_BADPARAMCOUNT Handle = 0x8002000E + DISP_E_PARAMNOTOPTIONAL Handle = 0x8002000F + DISP_E_BADCALLEE Handle = 0x80020010 + DISP_E_NOTACOLLECTION Handle = 0x80020011 + DISP_E_DIVBYZERO Handle = 0x80020012 + DISP_E_BUFFERTOOSMALL Handle = 0x80020013 + TYPE_E_BUFFERTOOSMALL Handle = 0x80028016 + TYPE_E_FIELDNOTFOUND Handle = 0x80028017 + TYPE_E_INVDATAREAD Handle = 0x80028018 + TYPE_E_UNSUPFORMAT Handle = 0x80028019 + TYPE_E_REGISTRYACCESS Handle = 0x8002801C + TYPE_E_LIBNOTREGISTERED Handle = 0x8002801D + TYPE_E_UNDEFINEDTYPE Handle = 0x80028027 + TYPE_E_QUALIFIEDNAMEDISALLOWED Handle = 0x80028028 + TYPE_E_INVALIDSTATE Handle = 0x80028029 + TYPE_E_WRONGTYPEKIND Handle = 0x8002802A + TYPE_E_ELEMENTNOTFOUND Handle = 0x8002802B + TYPE_E_AMBIGUOUSNAME Handle = 0x8002802C + TYPE_E_NAMECONFLICT Handle = 0x8002802D + TYPE_E_UNKNOWNLCID Handle = 0x8002802E + TYPE_E_DLLFUNCTIONNOTFOUND Handle = 0x8002802F + TYPE_E_BADMODULEKIND Handle = 0x800288BD + TYPE_E_SIZETOOBIG Handle = 0x800288C5 + TYPE_E_DUPLICATEID Handle = 0x800288C6 + TYPE_E_INVALIDID Handle = 0x800288CF + TYPE_E_TYPEMISMATCH Handle = 0x80028CA0 + TYPE_E_OUTOFBOUNDS Handle = 0x80028CA1 + TYPE_E_IOERROR Handle = 0x80028CA2 + TYPE_E_CANTCREATETMPFILE Handle = 0x80028CA3 + TYPE_E_CANTLOADLIBRARY Handle = 0x80029C4A + TYPE_E_INCONSISTENTPROPFUNCS Handle = 0x80029C83 + TYPE_E_CIRCULARTYPE Handle = 0x80029C84 + STG_E_INVALIDFUNCTION Handle = 0x80030001 + STG_E_FILENOTFOUND Handle = 0x80030002 + STG_E_PATHNOTFOUND Handle = 0x80030003 + STG_E_TOOMANYOPENFILES Handle = 0x80030004 + STG_E_ACCESSDENIED Handle = 0x80030005 + STG_E_INVALIDHANDLE Handle = 0x80030006 + STG_E_INSUFFICIENTMEMORY Handle = 0x80030008 + STG_E_INVALIDPOINTER Handle = 0x80030009 + STG_E_NOMOREFILES Handle = 0x80030012 + STG_E_DISKISWRITEPROTECTED Handle = 0x80030013 + STG_E_SEEKERROR Handle = 0x80030019 + STG_E_WRITEFAULT Handle = 0x8003001D + STG_E_READFAULT Handle = 0x8003001E + STG_E_SHAREVIOLATION Handle = 0x80030020 + STG_E_LOCKVIOLATION Handle = 0x80030021 + STG_E_FILEALREADYEXISTS Handle = 0x80030050 + STG_E_INVALIDPARAMETER Handle = 0x80030057 + STG_E_MEDIUMFULL Handle = 0x80030070 + STG_E_PROPSETMISMATCHED Handle = 0x800300F0 + STG_E_ABNORMALAPIEXIT Handle = 0x800300FA + STG_E_INVALIDHEADER Handle = 0x800300FB + STG_E_INVALIDNAME Handle = 0x800300FC + STG_E_UNKNOWN Handle = 0x800300FD + STG_E_UNIMPLEMENTEDFUNCTION Handle = 0x800300FE + STG_E_INVALIDFLAG Handle = 0x800300FF + STG_E_INUSE Handle = 0x80030100 + STG_E_NOTCURRENT Handle = 0x80030101 + STG_E_REVERTED Handle = 0x80030102 + STG_E_CANTSAVE Handle = 0x80030103 + STG_E_OLDFORMAT Handle = 0x80030104 + STG_E_OLDDLL Handle = 0x80030105 + STG_E_SHAREREQUIRED Handle = 0x80030106 + STG_E_NOTFILEBASEDSTORAGE Handle = 0x80030107 + STG_E_EXTANTMARSHALLINGS Handle = 0x80030108 + STG_E_DOCFILECORRUPT Handle = 0x80030109 + STG_E_BADBASEADDRESS Handle = 0x80030110 + STG_E_DOCFILETOOLARGE Handle = 0x80030111 + STG_E_NOTSIMPLEFORMAT Handle = 0x80030112 + STG_E_INCOMPLETE Handle = 0x80030201 + STG_E_TERMINATED Handle = 0x80030202 + STG_S_CONVERTED Handle = 0x00030200 + STG_S_BLOCK Handle = 0x00030201 + STG_S_RETRYNOW Handle = 0x00030202 + STG_S_MONITORING Handle = 0x00030203 + STG_S_MULTIPLEOPENS Handle = 0x00030204 + STG_S_CONSOLIDATIONFAILED Handle = 0x00030205 + STG_S_CANNOTCONSOLIDATE Handle = 0x00030206 + STG_S_POWER_CYCLE_REQUIRED Handle = 0x00030207 + STG_E_FIRMWARE_SLOT_INVALID Handle = 0x80030208 + STG_E_FIRMWARE_IMAGE_INVALID Handle = 0x80030209 + STG_E_DEVICE_UNRESPONSIVE Handle = 0x8003020A + STG_E_STATUS_COPY_PROTECTION_FAILURE Handle = 0x80030305 + STG_E_CSS_AUTHENTICATION_FAILURE Handle = 0x80030306 + STG_E_CSS_KEY_NOT_PRESENT Handle = 0x80030307 + STG_E_CSS_KEY_NOT_ESTABLISHED Handle = 0x80030308 + STG_E_CSS_SCRAMBLED_SECTOR Handle = 0x80030309 + STG_E_CSS_REGION_MISMATCH Handle = 0x8003030A + STG_E_RESETS_EXHAUSTED Handle = 0x8003030B + RPC_E_CALL_REJECTED Handle = 0x80010001 + RPC_E_CALL_CANCELED Handle = 0x80010002 + RPC_E_CANTPOST_INSENDCALL Handle = 0x80010003 + RPC_E_CANTCALLOUT_INASYNCCALL Handle = 0x80010004 + RPC_E_CANTCALLOUT_INEXTERNALCALL Handle = 0x80010005 + RPC_E_CONNECTION_TERMINATED Handle = 0x80010006 + RPC_E_SERVER_DIED Handle = 0x80010007 + RPC_E_CLIENT_DIED Handle = 0x80010008 + RPC_E_INVALID_DATAPACKET Handle = 0x80010009 + RPC_E_CANTTRANSMIT_CALL Handle = 0x8001000A + RPC_E_CLIENT_CANTMARSHAL_DATA Handle = 0x8001000B + RPC_E_CLIENT_CANTUNMARSHAL_DATA Handle = 0x8001000C + RPC_E_SERVER_CANTMARSHAL_DATA Handle = 0x8001000D + RPC_E_SERVER_CANTUNMARSHAL_DATA Handle = 0x8001000E + RPC_E_INVALID_DATA Handle = 0x8001000F + RPC_E_INVALID_PARAMETER Handle = 0x80010010 + RPC_E_CANTCALLOUT_AGAIN Handle = 0x80010011 + RPC_E_SERVER_DIED_DNE Handle = 0x80010012 + RPC_E_SYS_CALL_FAILED Handle = 0x80010100 + RPC_E_OUT_OF_RESOURCES Handle = 0x80010101 + RPC_E_ATTEMPTED_MULTITHREAD Handle = 0x80010102 + RPC_E_NOT_REGISTERED Handle = 0x80010103 + RPC_E_FAULT Handle = 0x80010104 + RPC_E_SERVERFAULT Handle = 0x80010105 + RPC_E_CHANGED_MODE Handle = 0x80010106 + RPC_E_INVALIDMETHOD Handle = 0x80010107 + RPC_E_DISCONNECTED Handle = 0x80010108 + RPC_E_RETRY Handle = 0x80010109 + RPC_E_SERVERCALL_RETRYLATER Handle = 0x8001010A + RPC_E_SERVERCALL_REJECTED Handle = 0x8001010B + RPC_E_INVALID_CALLDATA Handle = 0x8001010C + RPC_E_CANTCALLOUT_ININPUTSYNCCALL Handle = 0x8001010D + RPC_E_WRONG_THREAD Handle = 0x8001010E + RPC_E_THREAD_NOT_INIT Handle = 0x8001010F + RPC_E_VERSION_MISMATCH Handle = 0x80010110 + RPC_E_INVALID_HEADER Handle = 0x80010111 + RPC_E_INVALID_EXTENSION Handle = 0x80010112 + RPC_E_INVALID_IPID Handle = 0x80010113 + RPC_E_INVALID_OBJECT Handle = 0x80010114 + RPC_S_CALLPENDING Handle = 0x80010115 + RPC_S_WAITONTIMER Handle = 0x80010116 + RPC_E_CALL_COMPLETE Handle = 0x80010117 + RPC_E_UNSECURE_CALL Handle = 0x80010118 + RPC_E_TOO_LATE Handle = 0x80010119 + RPC_E_NO_GOOD_SECURITY_PACKAGES Handle = 0x8001011A + RPC_E_ACCESS_DENIED Handle = 0x8001011B + RPC_E_REMOTE_DISABLED Handle = 0x8001011C + RPC_E_INVALID_OBJREF Handle = 0x8001011D + RPC_E_NO_CONTEXT Handle = 0x8001011E + RPC_E_TIMEOUT Handle = 0x8001011F + RPC_E_NO_SYNC Handle = 0x80010120 + RPC_E_FULLSIC_REQUIRED Handle = 0x80010121 + RPC_E_INVALID_STD_NAME Handle = 0x80010122 + CO_E_FAILEDTOIMPERSONATE Handle = 0x80010123 + CO_E_FAILEDTOGETSECCTX Handle = 0x80010124 + CO_E_FAILEDTOOPENTHREADTOKEN Handle = 0x80010125 + CO_E_FAILEDTOGETTOKENINFO Handle = 0x80010126 + CO_E_TRUSTEEDOESNTMATCHCLIENT Handle = 0x80010127 + CO_E_FAILEDTOQUERYCLIENTBLANKET Handle = 0x80010128 + CO_E_FAILEDTOSETDACL Handle = 0x80010129 + CO_E_ACCESSCHECKFAILED Handle = 0x8001012A + CO_E_NETACCESSAPIFAILED Handle = 0x8001012B + CO_E_WRONGTRUSTEENAMESYNTAX Handle = 0x8001012C + CO_E_INVALIDSID Handle = 0x8001012D + CO_E_CONVERSIONFAILED Handle = 0x8001012E + CO_E_NOMATCHINGSIDFOUND Handle = 0x8001012F + CO_E_LOOKUPACCSIDFAILED Handle = 0x80010130 + CO_E_NOMATCHINGNAMEFOUND Handle = 0x80010131 + CO_E_LOOKUPACCNAMEFAILED Handle = 0x80010132 + CO_E_SETSERLHNDLFAILED Handle = 0x80010133 + CO_E_FAILEDTOGETWINDIR Handle = 0x80010134 + CO_E_PATHTOOLONG Handle = 0x80010135 + CO_E_FAILEDTOGENUUID Handle = 0x80010136 + CO_E_FAILEDTOCREATEFILE Handle = 0x80010137 + CO_E_FAILEDTOCLOSEHANDLE Handle = 0x80010138 + CO_E_EXCEEDSYSACLLIMIT Handle = 0x80010139 + CO_E_ACESINWRONGORDER Handle = 0x8001013A + CO_E_INCOMPATIBLESTREAMVERSION Handle = 0x8001013B + CO_E_FAILEDTOOPENPROCESSTOKEN Handle = 0x8001013C + CO_E_DECODEFAILED Handle = 0x8001013D + CO_E_ACNOTINITIALIZED Handle = 0x8001013F + CO_E_CANCEL_DISABLED Handle = 0x80010140 + RPC_E_UNEXPECTED Handle = 0x8001FFFF + ERROR_AUDITING_DISABLED Handle = 0xC0090001 + ERROR_ALL_SIDS_FILTERED Handle = 0xC0090002 + ERROR_BIZRULES_NOT_ENABLED Handle = 0xC0090003 + NTE_BAD_UID Handle = 0x80090001 + NTE_BAD_HASH Handle = 0x80090002 + NTE_BAD_KEY Handle = 0x80090003 + NTE_BAD_LEN Handle = 0x80090004 + NTE_BAD_DATA Handle = 0x80090005 + NTE_BAD_SIGNATURE Handle = 0x80090006 + NTE_BAD_VER Handle = 0x80090007 + NTE_BAD_ALGID Handle = 0x80090008 + NTE_BAD_FLAGS Handle = 0x80090009 + NTE_BAD_TYPE Handle = 0x8009000A + NTE_BAD_KEY_STATE Handle = 0x8009000B + NTE_BAD_HASH_STATE Handle = 0x8009000C + NTE_NO_KEY Handle = 0x8009000D + NTE_NO_MEMORY Handle = 0x8009000E + NTE_EXISTS Handle = 0x8009000F + NTE_PERM Handle = 0x80090010 + NTE_NOT_FOUND Handle = 0x80090011 + NTE_DOUBLE_ENCRYPT Handle = 0x80090012 + NTE_BAD_PROVIDER Handle = 0x80090013 + NTE_BAD_PROV_TYPE Handle = 0x80090014 + NTE_BAD_PUBLIC_KEY Handle = 0x80090015 + NTE_BAD_KEYSET Handle = 0x80090016 + NTE_PROV_TYPE_NOT_DEF Handle = 0x80090017 + NTE_PROV_TYPE_ENTRY_BAD Handle = 0x80090018 + NTE_KEYSET_NOT_DEF Handle = 0x80090019 + NTE_KEYSET_ENTRY_BAD Handle = 0x8009001A + NTE_PROV_TYPE_NO_MATCH Handle = 0x8009001B + NTE_SIGNATURE_FILE_BAD Handle = 0x8009001C + NTE_PROVIDER_DLL_FAIL Handle = 0x8009001D + NTE_PROV_DLL_NOT_FOUND Handle = 0x8009001E + NTE_BAD_KEYSET_PARAM Handle = 0x8009001F + NTE_FAIL Handle = 0x80090020 + NTE_SYS_ERR Handle = 0x80090021 + NTE_SILENT_CONTEXT Handle = 0x80090022 + NTE_TOKEN_KEYSET_STORAGE_FULL Handle = 0x80090023 + NTE_TEMPORARY_PROFILE Handle = 0x80090024 + NTE_FIXEDPARAMETER Handle = 0x80090025 + NTE_INVALID_HANDLE Handle = 0x80090026 + NTE_INVALID_PARAMETER Handle = 0x80090027 + NTE_BUFFER_TOO_SMALL Handle = 0x80090028 + NTE_NOT_SUPPORTED Handle = 0x80090029 + NTE_NO_MORE_ITEMS Handle = 0x8009002A + NTE_BUFFERS_OVERLAP Handle = 0x8009002B + NTE_DECRYPTION_FAILURE Handle = 0x8009002C + NTE_INTERNAL_ERROR Handle = 0x8009002D + NTE_UI_REQUIRED Handle = 0x8009002E + NTE_HMAC_NOT_SUPPORTED Handle = 0x8009002F + NTE_DEVICE_NOT_READY Handle = 0x80090030 + NTE_AUTHENTICATION_IGNORED Handle = 0x80090031 + NTE_VALIDATION_FAILED Handle = 0x80090032 + NTE_INCORRECT_PASSWORD Handle = 0x80090033 + NTE_ENCRYPTION_FAILURE Handle = 0x80090034 + NTE_DEVICE_NOT_FOUND Handle = 0x80090035 + NTE_USER_CANCELLED Handle = 0x80090036 + NTE_PASSWORD_CHANGE_REQUIRED Handle = 0x80090037 + NTE_NOT_ACTIVE_CONSOLE Handle = 0x80090038 + SEC_E_INSUFFICIENT_MEMORY Handle = 0x80090300 + SEC_E_INVALID_HANDLE Handle = 0x80090301 + SEC_E_UNSUPPORTED_FUNCTION Handle = 0x80090302 + SEC_E_TARGET_UNKNOWN Handle = 0x80090303 + SEC_E_INTERNAL_ERROR Handle = 0x80090304 + SEC_E_SECPKG_NOT_FOUND Handle = 0x80090305 + SEC_E_NOT_OWNER Handle = 0x80090306 + SEC_E_CANNOT_INSTALL Handle = 0x80090307 + SEC_E_INVALID_TOKEN Handle = 0x80090308 + SEC_E_CANNOT_PACK Handle = 0x80090309 + SEC_E_QOP_NOT_SUPPORTED Handle = 0x8009030A + SEC_E_NO_IMPERSONATION Handle = 0x8009030B + SEC_E_LOGON_DENIED Handle = 0x8009030C + SEC_E_UNKNOWN_CREDENTIALS Handle = 0x8009030D + SEC_E_NO_CREDENTIALS Handle = 0x8009030E + SEC_E_MESSAGE_ALTERED Handle = 0x8009030F + SEC_E_OUT_OF_SEQUENCE Handle = 0x80090310 + SEC_E_NO_AUTHENTICATING_AUTHORITY Handle = 0x80090311 + SEC_I_CONTINUE_NEEDED Handle = 0x00090312 + SEC_I_COMPLETE_NEEDED Handle = 0x00090313 + SEC_I_COMPLETE_AND_CONTINUE Handle = 0x00090314 + SEC_I_LOCAL_LOGON Handle = 0x00090315 + SEC_E_BAD_PKGID Handle = 0x80090316 + SEC_E_CONTEXT_EXPIRED Handle = 0x80090317 + SEC_I_CONTEXT_EXPIRED Handle = 0x00090317 + SEC_E_INCOMPLETE_MESSAGE Handle = 0x80090318 + SEC_E_INCOMPLETE_CREDENTIALS Handle = 0x80090320 + SEC_E_BUFFER_TOO_SMALL Handle = 0x80090321 + SEC_I_INCOMPLETE_CREDENTIALS Handle = 0x00090320 + SEC_I_RENEGOTIATE Handle = 0x00090321 + SEC_E_WRONG_PRINCIPAL Handle = 0x80090322 + SEC_I_NO_LSA_CONTEXT Handle = 0x00090323 + SEC_E_TIME_SKEW Handle = 0x80090324 + SEC_E_UNTRUSTED_ROOT Handle = 0x80090325 + SEC_E_ILLEGAL_MESSAGE Handle = 0x80090326 + SEC_E_CERT_UNKNOWN Handle = 0x80090327 + SEC_E_CERT_EXPIRED Handle = 0x80090328 + SEC_E_ENCRYPT_FAILURE Handle = 0x80090329 + SEC_E_DECRYPT_FAILURE Handle = 0x80090330 + SEC_E_ALGORITHM_MISMATCH Handle = 0x80090331 + SEC_E_SECURITY_QOS_FAILED Handle = 0x80090332 + SEC_E_UNFINISHED_CONTEXT_DELETED Handle = 0x80090333 + SEC_E_NO_TGT_REPLY Handle = 0x80090334 + SEC_E_NO_IP_ADDRESSES Handle = 0x80090335 + SEC_E_WRONG_CREDENTIAL_HANDLE Handle = 0x80090336 + SEC_E_CRYPTO_SYSTEM_INVALID Handle = 0x80090337 + SEC_E_MAX_REFERRALS_EXCEEDED Handle = 0x80090338 + SEC_E_MUST_BE_KDC Handle = 0x80090339 + SEC_E_STRONG_CRYPTO_NOT_SUPPORTED Handle = 0x8009033A + SEC_E_TOO_MANY_PRINCIPALS Handle = 0x8009033B + SEC_E_NO_PA_DATA Handle = 0x8009033C + SEC_E_PKINIT_NAME_MISMATCH Handle = 0x8009033D + SEC_E_SMARTCARD_LOGON_REQUIRED Handle = 0x8009033E + SEC_E_SHUTDOWN_IN_PROGRESS Handle = 0x8009033F + SEC_E_KDC_INVALID_REQUEST Handle = 0x80090340 + SEC_E_KDC_UNABLE_TO_REFER Handle = 0x80090341 + SEC_E_KDC_UNKNOWN_ETYPE Handle = 0x80090342 + SEC_E_UNSUPPORTED_PREAUTH Handle = 0x80090343 + SEC_E_DELEGATION_REQUIRED Handle = 0x80090345 + SEC_E_BAD_BINDINGS Handle = 0x80090346 + SEC_E_MULTIPLE_ACCOUNTS Handle = 0x80090347 + SEC_E_NO_KERB_KEY Handle = 0x80090348 + SEC_E_CERT_WRONG_USAGE Handle = 0x80090349 + SEC_E_DOWNGRADE_DETECTED Handle = 0x80090350 + SEC_E_SMARTCARD_CERT_REVOKED Handle = 0x80090351 + SEC_E_ISSUING_CA_UNTRUSTED Handle = 0x80090352 + SEC_E_REVOCATION_OFFLINE_C Handle = 0x80090353 + SEC_E_PKINIT_CLIENT_FAILURE Handle = 0x80090354 + SEC_E_SMARTCARD_CERT_EXPIRED Handle = 0x80090355 + SEC_E_NO_S4U_PROT_SUPPORT Handle = 0x80090356 + SEC_E_CROSSREALM_DELEGATION_FAILURE Handle = 0x80090357 + SEC_E_REVOCATION_OFFLINE_KDC Handle = 0x80090358 + SEC_E_ISSUING_CA_UNTRUSTED_KDC Handle = 0x80090359 + SEC_E_KDC_CERT_EXPIRED Handle = 0x8009035A + SEC_E_KDC_CERT_REVOKED Handle = 0x8009035B + SEC_I_SIGNATURE_NEEDED Handle = 0x0009035C + SEC_E_INVALID_PARAMETER Handle = 0x8009035D + SEC_E_DELEGATION_POLICY Handle = 0x8009035E + SEC_E_POLICY_NLTM_ONLY Handle = 0x8009035F + SEC_I_NO_RENEGOTIATION Handle = 0x00090360 + SEC_E_NO_CONTEXT Handle = 0x80090361 + SEC_E_PKU2U_CERT_FAILURE Handle = 0x80090362 + SEC_E_MUTUAL_AUTH_FAILED Handle = 0x80090363 + SEC_I_MESSAGE_FRAGMENT Handle = 0x00090364 + SEC_E_ONLY_HTTPS_ALLOWED Handle = 0x80090365 + SEC_I_CONTINUE_NEEDED_MESSAGE_OK Handle = 0x00090366 + SEC_E_APPLICATION_PROTOCOL_MISMATCH Handle = 0x80090367 + SEC_I_ASYNC_CALL_PENDING Handle = 0x00090368 + SEC_E_INVALID_UPN_NAME Handle = 0x80090369 + SEC_E_NO_SPM = SEC_E_INTERNAL_ERROR + SEC_E_NOT_SUPPORTED = SEC_E_UNSUPPORTED_FUNCTION + CRYPT_E_MSG_ERROR Handle = 0x80091001 + CRYPT_E_UNKNOWN_ALGO Handle = 0x80091002 + CRYPT_E_OID_FORMAT Handle = 0x80091003 + CRYPT_E_INVALID_MSG_TYPE Handle = 0x80091004 + CRYPT_E_UNEXPECTED_ENCODING Handle = 0x80091005 + CRYPT_E_AUTH_ATTR_MISSING Handle = 0x80091006 + CRYPT_E_HASH_VALUE Handle = 0x80091007 + CRYPT_E_INVALID_INDEX Handle = 0x80091008 + CRYPT_E_ALREADY_DECRYPTED Handle = 0x80091009 + CRYPT_E_NOT_DECRYPTED Handle = 0x8009100A + CRYPT_E_RECIPIENT_NOT_FOUND Handle = 0x8009100B + CRYPT_E_CONTROL_TYPE Handle = 0x8009100C + CRYPT_E_ISSUER_SERIALNUMBER Handle = 0x8009100D + CRYPT_E_SIGNER_NOT_FOUND Handle = 0x8009100E + CRYPT_E_ATTRIBUTES_MISSING Handle = 0x8009100F + CRYPT_E_STREAM_MSG_NOT_READY Handle = 0x80091010 + CRYPT_E_STREAM_INSUFFICIENT_DATA Handle = 0x80091011 + CRYPT_I_NEW_PROTECTION_REQUIRED Handle = 0x00091012 + CRYPT_E_BAD_LEN Handle = 0x80092001 + CRYPT_E_BAD_ENCODE Handle = 0x80092002 + CRYPT_E_FILE_ERROR Handle = 0x80092003 + CRYPT_E_NOT_FOUND Handle = 0x80092004 + CRYPT_E_EXISTS Handle = 0x80092005 + CRYPT_E_NO_PROVIDER Handle = 0x80092006 + CRYPT_E_SELF_SIGNED Handle = 0x80092007 + CRYPT_E_DELETED_PREV Handle = 0x80092008 + CRYPT_E_NO_MATCH Handle = 0x80092009 + CRYPT_E_UNEXPECTED_MSG_TYPE Handle = 0x8009200A + CRYPT_E_NO_KEY_PROPERTY Handle = 0x8009200B + CRYPT_E_NO_DECRYPT_CERT Handle = 0x8009200C + CRYPT_E_BAD_MSG Handle = 0x8009200D + CRYPT_E_NO_SIGNER Handle = 0x8009200E + CRYPT_E_PENDING_CLOSE Handle = 0x8009200F + CRYPT_E_REVOKED Handle = 0x80092010 + CRYPT_E_NO_REVOCATION_DLL Handle = 0x80092011 + CRYPT_E_NO_REVOCATION_CHECK Handle = 0x80092012 + CRYPT_E_REVOCATION_OFFLINE Handle = 0x80092013 + CRYPT_E_NOT_IN_REVOCATION_DATABASE Handle = 0x80092014 + CRYPT_E_INVALID_NUMERIC_STRING Handle = 0x80092020 + CRYPT_E_INVALID_PRINTABLE_STRING Handle = 0x80092021 + CRYPT_E_INVALID_IA5_STRING Handle = 0x80092022 + CRYPT_E_INVALID_X500_STRING Handle = 0x80092023 + CRYPT_E_NOT_CHAR_STRING Handle = 0x80092024 + CRYPT_E_FILERESIZED Handle = 0x80092025 + CRYPT_E_SECURITY_SETTINGS Handle = 0x80092026 + CRYPT_E_NO_VERIFY_USAGE_DLL Handle = 0x80092027 + CRYPT_E_NO_VERIFY_USAGE_CHECK Handle = 0x80092028 + CRYPT_E_VERIFY_USAGE_OFFLINE Handle = 0x80092029 + CRYPT_E_NOT_IN_CTL Handle = 0x8009202A + CRYPT_E_NO_TRUSTED_SIGNER Handle = 0x8009202B + CRYPT_E_MISSING_PUBKEY_PARA Handle = 0x8009202C + CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND Handle = 0x8009202D + CRYPT_E_OSS_ERROR Handle = 0x80093000 + OSS_MORE_BUF Handle = 0x80093001 + OSS_NEGATIVE_UINTEGER Handle = 0x80093002 + OSS_PDU_RANGE Handle = 0x80093003 + OSS_MORE_INPUT Handle = 0x80093004 + OSS_DATA_ERROR Handle = 0x80093005 + OSS_BAD_ARG Handle = 0x80093006 + OSS_BAD_VERSION Handle = 0x80093007 + OSS_OUT_MEMORY Handle = 0x80093008 + OSS_PDU_MISMATCH Handle = 0x80093009 + OSS_LIMITED Handle = 0x8009300A + OSS_BAD_PTR Handle = 0x8009300B + OSS_BAD_TIME Handle = 0x8009300C + OSS_INDEFINITE_NOT_SUPPORTED Handle = 0x8009300D + OSS_MEM_ERROR Handle = 0x8009300E + OSS_BAD_TABLE Handle = 0x8009300F + OSS_TOO_LONG Handle = 0x80093010 + OSS_CONSTRAINT_VIOLATED Handle = 0x80093011 + OSS_FATAL_ERROR Handle = 0x80093012 + OSS_ACCESS_SERIALIZATION_ERROR Handle = 0x80093013 + OSS_NULL_TBL Handle = 0x80093014 + OSS_NULL_FCN Handle = 0x80093015 + OSS_BAD_ENCRULES Handle = 0x80093016 + OSS_UNAVAIL_ENCRULES Handle = 0x80093017 + OSS_CANT_OPEN_TRACE_WINDOW Handle = 0x80093018 + OSS_UNIMPLEMENTED Handle = 0x80093019 + OSS_OID_DLL_NOT_LINKED Handle = 0x8009301A + OSS_CANT_OPEN_TRACE_FILE Handle = 0x8009301B + OSS_TRACE_FILE_ALREADY_OPEN Handle = 0x8009301C + OSS_TABLE_MISMATCH Handle = 0x8009301D + OSS_TYPE_NOT_SUPPORTED Handle = 0x8009301E + OSS_REAL_DLL_NOT_LINKED Handle = 0x8009301F + OSS_REAL_CODE_NOT_LINKED Handle = 0x80093020 + OSS_OUT_OF_RANGE Handle = 0x80093021 + OSS_COPIER_DLL_NOT_LINKED Handle = 0x80093022 + OSS_CONSTRAINT_DLL_NOT_LINKED Handle = 0x80093023 + OSS_COMPARATOR_DLL_NOT_LINKED Handle = 0x80093024 + OSS_COMPARATOR_CODE_NOT_LINKED Handle = 0x80093025 + OSS_MEM_MGR_DLL_NOT_LINKED Handle = 0x80093026 + OSS_PDV_DLL_NOT_LINKED Handle = 0x80093027 + OSS_PDV_CODE_NOT_LINKED Handle = 0x80093028 + OSS_API_DLL_NOT_LINKED Handle = 0x80093029 + OSS_BERDER_DLL_NOT_LINKED Handle = 0x8009302A + OSS_PER_DLL_NOT_LINKED Handle = 0x8009302B + OSS_OPEN_TYPE_ERROR Handle = 0x8009302C + OSS_MUTEX_NOT_CREATED Handle = 0x8009302D + OSS_CANT_CLOSE_TRACE_FILE Handle = 0x8009302E + CRYPT_E_ASN1_ERROR Handle = 0x80093100 + CRYPT_E_ASN1_INTERNAL Handle = 0x80093101 + CRYPT_E_ASN1_EOD Handle = 0x80093102 + CRYPT_E_ASN1_CORRUPT Handle = 0x80093103 + CRYPT_E_ASN1_LARGE Handle = 0x80093104 + CRYPT_E_ASN1_CONSTRAINT Handle = 0x80093105 + CRYPT_E_ASN1_MEMORY Handle = 0x80093106 + CRYPT_E_ASN1_OVERFLOW Handle = 0x80093107 + CRYPT_E_ASN1_BADPDU Handle = 0x80093108 + CRYPT_E_ASN1_BADARGS Handle = 0x80093109 + CRYPT_E_ASN1_BADREAL Handle = 0x8009310A + CRYPT_E_ASN1_BADTAG Handle = 0x8009310B + CRYPT_E_ASN1_CHOICE Handle = 0x8009310C + CRYPT_E_ASN1_RULE Handle = 0x8009310D + CRYPT_E_ASN1_UTF8 Handle = 0x8009310E + CRYPT_E_ASN1_PDU_TYPE Handle = 0x80093133 + CRYPT_E_ASN1_NYI Handle = 0x80093134 + CRYPT_E_ASN1_EXTENDED Handle = 0x80093201 + CRYPT_E_ASN1_NOEOD Handle = 0x80093202 + CERTSRV_E_BAD_REQUESTSUBJECT Handle = 0x80094001 + CERTSRV_E_NO_REQUEST Handle = 0x80094002 + CERTSRV_E_BAD_REQUESTSTATUS Handle = 0x80094003 + CERTSRV_E_PROPERTY_EMPTY Handle = 0x80094004 + CERTSRV_E_INVALID_CA_CERTIFICATE Handle = 0x80094005 + CERTSRV_E_SERVER_SUSPENDED Handle = 0x80094006 + CERTSRV_E_ENCODING_LENGTH Handle = 0x80094007 + CERTSRV_E_ROLECONFLICT Handle = 0x80094008 + CERTSRV_E_RESTRICTEDOFFICER Handle = 0x80094009 + CERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED Handle = 0x8009400A + CERTSRV_E_NO_VALID_KRA Handle = 0x8009400B + CERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL Handle = 0x8009400C + CERTSRV_E_NO_CAADMIN_DEFINED Handle = 0x8009400D + CERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE Handle = 0x8009400E + CERTSRV_E_NO_DB_SESSIONS Handle = 0x8009400F + CERTSRV_E_ALIGNMENT_FAULT Handle = 0x80094010 + CERTSRV_E_ENROLL_DENIED Handle = 0x80094011 + CERTSRV_E_TEMPLATE_DENIED Handle = 0x80094012 + CERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE Handle = 0x80094013 + CERTSRV_E_ADMIN_DENIED_REQUEST Handle = 0x80094014 + CERTSRV_E_NO_POLICY_SERVER Handle = 0x80094015 + CERTSRV_E_WEAK_SIGNATURE_OR_KEY Handle = 0x80094016 + CERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED Handle = 0x80094017 + CERTSRV_E_ENCRYPTION_CERT_REQUIRED Handle = 0x80094018 + CERTSRV_E_UNSUPPORTED_CERT_TYPE Handle = 0x80094800 + CERTSRV_E_NO_CERT_TYPE Handle = 0x80094801 + CERTSRV_E_TEMPLATE_CONFLICT Handle = 0x80094802 + CERTSRV_E_SUBJECT_ALT_NAME_REQUIRED Handle = 0x80094803 + CERTSRV_E_ARCHIVED_KEY_REQUIRED Handle = 0x80094804 + CERTSRV_E_SMIME_REQUIRED Handle = 0x80094805 + CERTSRV_E_BAD_RENEWAL_SUBJECT Handle = 0x80094806 + CERTSRV_E_BAD_TEMPLATE_VERSION Handle = 0x80094807 + CERTSRV_E_TEMPLATE_POLICY_REQUIRED Handle = 0x80094808 + CERTSRV_E_SIGNATURE_POLICY_REQUIRED Handle = 0x80094809 + CERTSRV_E_SIGNATURE_COUNT Handle = 0x8009480A + CERTSRV_E_SIGNATURE_REJECTED Handle = 0x8009480B + CERTSRV_E_ISSUANCE_POLICY_REQUIRED Handle = 0x8009480C + CERTSRV_E_SUBJECT_UPN_REQUIRED Handle = 0x8009480D + CERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED Handle = 0x8009480E + CERTSRV_E_SUBJECT_DNS_REQUIRED Handle = 0x8009480F + CERTSRV_E_ARCHIVED_KEY_UNEXPECTED Handle = 0x80094810 + CERTSRV_E_KEY_LENGTH Handle = 0x80094811 + CERTSRV_E_SUBJECT_EMAIL_REQUIRED Handle = 0x80094812 + CERTSRV_E_UNKNOWN_CERT_TYPE Handle = 0x80094813 + CERTSRV_E_CERT_TYPE_OVERLAP Handle = 0x80094814 + CERTSRV_E_TOO_MANY_SIGNATURES Handle = 0x80094815 + CERTSRV_E_RENEWAL_BAD_PUBLIC_KEY Handle = 0x80094816 + CERTSRV_E_INVALID_EK Handle = 0x80094817 + CERTSRV_E_INVALID_IDBINDING Handle = 0x80094818 + CERTSRV_E_INVALID_ATTESTATION Handle = 0x80094819 + CERTSRV_E_KEY_ATTESTATION Handle = 0x8009481A + CERTSRV_E_CORRUPT_KEY_ATTESTATION Handle = 0x8009481B + CERTSRV_E_EXPIRED_CHALLENGE Handle = 0x8009481C + CERTSRV_E_INVALID_RESPONSE Handle = 0x8009481D + CERTSRV_E_INVALID_REQUESTID Handle = 0x8009481E + CERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH Handle = 0x8009481F + CERTSRV_E_PENDING_CLIENT_RESPONSE Handle = 0x80094820 + XENROLL_E_KEY_NOT_EXPORTABLE Handle = 0x80095000 + XENROLL_E_CANNOT_ADD_ROOT_CERT Handle = 0x80095001 + XENROLL_E_RESPONSE_KA_HASH_NOT_FOUND Handle = 0x80095002 + XENROLL_E_RESPONSE_UNEXPECTED_KA_HASH Handle = 0x80095003 + XENROLL_E_RESPONSE_KA_HASH_MISMATCH Handle = 0x80095004 + XENROLL_E_KEYSPEC_SMIME_MISMATCH Handle = 0x80095005 + TRUST_E_SYSTEM_ERROR Handle = 0x80096001 + TRUST_E_NO_SIGNER_CERT Handle = 0x80096002 + TRUST_E_COUNTER_SIGNER Handle = 0x80096003 + TRUST_E_CERT_SIGNATURE Handle = 0x80096004 + TRUST_E_TIME_STAMP Handle = 0x80096005 + TRUST_E_BAD_DIGEST Handle = 0x80096010 + TRUST_E_MALFORMED_SIGNATURE Handle = 0x80096011 + TRUST_E_BASIC_CONSTRAINTS Handle = 0x80096019 + TRUST_E_FINANCIAL_CRITERIA Handle = 0x8009601E + MSSIPOTF_E_OUTOFMEMRANGE Handle = 0x80097001 + MSSIPOTF_E_CANTGETOBJECT Handle = 0x80097002 + MSSIPOTF_E_NOHEADTABLE Handle = 0x80097003 + MSSIPOTF_E_BAD_MAGICNUMBER Handle = 0x80097004 + MSSIPOTF_E_BAD_OFFSET_TABLE Handle = 0x80097005 + MSSIPOTF_E_TABLE_TAGORDER Handle = 0x80097006 + MSSIPOTF_E_TABLE_LONGWORD Handle = 0x80097007 + MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT Handle = 0x80097008 + MSSIPOTF_E_TABLES_OVERLAP Handle = 0x80097009 + MSSIPOTF_E_TABLE_PADBYTES Handle = 0x8009700A + MSSIPOTF_E_FILETOOSMALL Handle = 0x8009700B + MSSIPOTF_E_TABLE_CHECKSUM Handle = 0x8009700C + MSSIPOTF_E_FILE_CHECKSUM Handle = 0x8009700D + MSSIPOTF_E_FAILED_POLICY Handle = 0x80097010 + MSSIPOTF_E_FAILED_HINTS_CHECK Handle = 0x80097011 + MSSIPOTF_E_NOT_OPENTYPE Handle = 0x80097012 + MSSIPOTF_E_FILE Handle = 0x80097013 + MSSIPOTF_E_CRYPT Handle = 0x80097014 + MSSIPOTF_E_BADVERSION Handle = 0x80097015 + MSSIPOTF_E_DSIG_STRUCTURE Handle = 0x80097016 + MSSIPOTF_E_PCONST_CHECK Handle = 0x80097017 + MSSIPOTF_E_STRUCTURE Handle = 0x80097018 + ERROR_CRED_REQUIRES_CONFIRMATION Handle = 0x80097019 + NTE_OP_OK syscall.Errno = 0 + TRUST_E_PROVIDER_UNKNOWN Handle = 0x800B0001 + TRUST_E_ACTION_UNKNOWN Handle = 0x800B0002 + TRUST_E_SUBJECT_FORM_UNKNOWN Handle = 0x800B0003 + TRUST_E_SUBJECT_NOT_TRUSTED Handle = 0x800B0004 + DIGSIG_E_ENCODE Handle = 0x800B0005 + DIGSIG_E_DECODE Handle = 0x800B0006 + DIGSIG_E_EXTENSIBILITY Handle = 0x800B0007 + DIGSIG_E_CRYPTO Handle = 0x800B0008 + PERSIST_E_SIZEDEFINITE Handle = 0x800B0009 + PERSIST_E_SIZEINDEFINITE Handle = 0x800B000A + PERSIST_E_NOTSELFSIZING Handle = 0x800B000B + TRUST_E_NOSIGNATURE Handle = 0x800B0100 + CERT_E_EXPIRED Handle = 0x800B0101 + CERT_E_VALIDITYPERIODNESTING Handle = 0x800B0102 + CERT_E_ROLE Handle = 0x800B0103 + CERT_E_PATHLENCONST Handle = 0x800B0104 + CERT_E_CRITICAL Handle = 0x800B0105 + CERT_E_PURPOSE Handle = 0x800B0106 + CERT_E_ISSUERCHAINING Handle = 0x800B0107 + CERT_E_MALFORMED Handle = 0x800B0108 + CERT_E_UNTRUSTEDROOT Handle = 0x800B0109 + CERT_E_CHAINING Handle = 0x800B010A + TRUST_E_FAIL Handle = 0x800B010B + CERT_E_REVOKED Handle = 0x800B010C + CERT_E_UNTRUSTEDTESTROOT Handle = 0x800B010D + CERT_E_REVOCATION_FAILURE Handle = 0x800B010E + CERT_E_CN_NO_MATCH Handle = 0x800B010F + CERT_E_WRONG_USAGE Handle = 0x800B0110 + TRUST_E_EXPLICIT_DISTRUST Handle = 0x800B0111 + CERT_E_UNTRUSTEDCA Handle = 0x800B0112 + CERT_E_INVALID_POLICY Handle = 0x800B0113 + CERT_E_INVALID_NAME Handle = 0x800B0114 + SPAPI_E_EXPECTED_SECTION_NAME Handle = 0x800F0000 + SPAPI_E_BAD_SECTION_NAME_LINE Handle = 0x800F0001 + SPAPI_E_SECTION_NAME_TOO_LONG Handle = 0x800F0002 + SPAPI_E_GENERAL_SYNTAX Handle = 0x800F0003 + SPAPI_E_WRONG_INF_STYLE Handle = 0x800F0100 + SPAPI_E_SECTION_NOT_FOUND Handle = 0x800F0101 + SPAPI_E_LINE_NOT_FOUND Handle = 0x800F0102 + SPAPI_E_NO_BACKUP Handle = 0x800F0103 + SPAPI_E_NO_ASSOCIATED_CLASS Handle = 0x800F0200 + SPAPI_E_CLASS_MISMATCH Handle = 0x800F0201 + SPAPI_E_DUPLICATE_FOUND Handle = 0x800F0202 + SPAPI_E_NO_DRIVER_SELECTED Handle = 0x800F0203 + SPAPI_E_KEY_DOES_NOT_EXIST Handle = 0x800F0204 + SPAPI_E_INVALID_DEVINST_NAME Handle = 0x800F0205 + SPAPI_E_INVALID_CLASS Handle = 0x800F0206 + SPAPI_E_DEVINST_ALREADY_EXISTS Handle = 0x800F0207 + SPAPI_E_DEVINFO_NOT_REGISTERED Handle = 0x800F0208 + SPAPI_E_INVALID_REG_PROPERTY Handle = 0x800F0209 + SPAPI_E_NO_INF Handle = 0x800F020A + SPAPI_E_NO_SUCH_DEVINST Handle = 0x800F020B + SPAPI_E_CANT_LOAD_CLASS_ICON Handle = 0x800F020C + SPAPI_E_INVALID_CLASS_INSTALLER Handle = 0x800F020D + SPAPI_E_DI_DO_DEFAULT Handle = 0x800F020E + SPAPI_E_DI_NOFILECOPY Handle = 0x800F020F + SPAPI_E_INVALID_HWPROFILE Handle = 0x800F0210 + SPAPI_E_NO_DEVICE_SELECTED Handle = 0x800F0211 + SPAPI_E_DEVINFO_LIST_LOCKED Handle = 0x800F0212 + SPAPI_E_DEVINFO_DATA_LOCKED Handle = 0x800F0213 + SPAPI_E_DI_BAD_PATH Handle = 0x800F0214 + SPAPI_E_NO_CLASSINSTALL_PARAMS Handle = 0x800F0215 + SPAPI_E_FILEQUEUE_LOCKED Handle = 0x800F0216 + SPAPI_E_BAD_SERVICE_INSTALLSECT Handle = 0x800F0217 + SPAPI_E_NO_CLASS_DRIVER_LIST Handle = 0x800F0218 + SPAPI_E_NO_ASSOCIATED_SERVICE Handle = 0x800F0219 + SPAPI_E_NO_DEFAULT_DEVICE_INTERFACE Handle = 0x800F021A + SPAPI_E_DEVICE_INTERFACE_ACTIVE Handle = 0x800F021B + SPAPI_E_DEVICE_INTERFACE_REMOVED Handle = 0x800F021C + SPAPI_E_BAD_INTERFACE_INSTALLSECT Handle = 0x800F021D + SPAPI_E_NO_SUCH_INTERFACE_CLASS Handle = 0x800F021E + SPAPI_E_INVALID_REFERENCE_STRING Handle = 0x800F021F + SPAPI_E_INVALID_MACHINENAME Handle = 0x800F0220 + SPAPI_E_REMOTE_COMM_FAILURE Handle = 0x800F0221 + SPAPI_E_MACHINE_UNAVAILABLE Handle = 0x800F0222 + SPAPI_E_NO_CONFIGMGR_SERVICES Handle = 0x800F0223 + SPAPI_E_INVALID_PROPPAGE_PROVIDER Handle = 0x800F0224 + SPAPI_E_NO_SUCH_DEVICE_INTERFACE Handle = 0x800F0225 + SPAPI_E_DI_POSTPROCESSING_REQUIRED Handle = 0x800F0226 + SPAPI_E_INVALID_COINSTALLER Handle = 0x800F0227 + SPAPI_E_NO_COMPAT_DRIVERS Handle = 0x800F0228 + SPAPI_E_NO_DEVICE_ICON Handle = 0x800F0229 + SPAPI_E_INVALID_INF_LOGCONFIG Handle = 0x800F022A + SPAPI_E_DI_DONT_INSTALL Handle = 0x800F022B + SPAPI_E_INVALID_FILTER_DRIVER Handle = 0x800F022C + SPAPI_E_NON_WINDOWS_NT_DRIVER Handle = 0x800F022D + SPAPI_E_NON_WINDOWS_DRIVER Handle = 0x800F022E + SPAPI_E_NO_CATALOG_FOR_OEM_INF Handle = 0x800F022F + SPAPI_E_DEVINSTALL_QUEUE_NONNATIVE Handle = 0x800F0230 + SPAPI_E_NOT_DISABLEABLE Handle = 0x800F0231 + SPAPI_E_CANT_REMOVE_DEVINST Handle = 0x800F0232 + SPAPI_E_INVALID_TARGET Handle = 0x800F0233 + SPAPI_E_DRIVER_NONNATIVE Handle = 0x800F0234 + SPAPI_E_IN_WOW64 Handle = 0x800F0235 + SPAPI_E_SET_SYSTEM_RESTORE_POINT Handle = 0x800F0236 + SPAPI_E_INCORRECTLY_COPIED_INF Handle = 0x800F0237 + SPAPI_E_SCE_DISABLED Handle = 0x800F0238 + SPAPI_E_UNKNOWN_EXCEPTION Handle = 0x800F0239 + SPAPI_E_PNP_REGISTRY_ERROR Handle = 0x800F023A + SPAPI_E_REMOTE_REQUEST_UNSUPPORTED Handle = 0x800F023B + SPAPI_E_NOT_AN_INSTALLED_OEM_INF Handle = 0x800F023C + SPAPI_E_INF_IN_USE_BY_DEVICES Handle = 0x800F023D + SPAPI_E_DI_FUNCTION_OBSOLETE Handle = 0x800F023E + SPAPI_E_NO_AUTHENTICODE_CATALOG Handle = 0x800F023F + SPAPI_E_AUTHENTICODE_DISALLOWED Handle = 0x800F0240 + SPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER Handle = 0x800F0241 + SPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED Handle = 0x800F0242 + SPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED Handle = 0x800F0243 + SPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH Handle = 0x800F0244 + SPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE Handle = 0x800F0245 + SPAPI_E_DEVICE_INSTALLER_NOT_READY Handle = 0x800F0246 + SPAPI_E_DRIVER_STORE_ADD_FAILED Handle = 0x800F0247 + SPAPI_E_DEVICE_INSTALL_BLOCKED Handle = 0x800F0248 + SPAPI_E_DRIVER_INSTALL_BLOCKED Handle = 0x800F0249 + SPAPI_E_WRONG_INF_TYPE Handle = 0x800F024A + SPAPI_E_FILE_HASH_NOT_IN_CATALOG Handle = 0x800F024B + SPAPI_E_DRIVER_STORE_DELETE_FAILED Handle = 0x800F024C + SPAPI_E_UNRECOVERABLE_STACK_OVERFLOW Handle = 0x800F0300 + SPAPI_E_ERROR_NOT_INSTALLED Handle = 0x800F1000 + SCARD_S_SUCCESS = S_OK + SCARD_F_INTERNAL_ERROR Handle = 0x80100001 + SCARD_E_CANCELLED Handle = 0x80100002 + SCARD_E_INVALID_HANDLE Handle = 0x80100003 + SCARD_E_INVALID_PARAMETER Handle = 0x80100004 + SCARD_E_INVALID_TARGET Handle = 0x80100005 + SCARD_E_NO_MEMORY Handle = 0x80100006 + SCARD_F_WAITED_TOO_LONG Handle = 0x80100007 + SCARD_E_INSUFFICIENT_BUFFER Handle = 0x80100008 + SCARD_E_UNKNOWN_READER Handle = 0x80100009 + SCARD_E_TIMEOUT Handle = 0x8010000A + SCARD_E_SHARING_VIOLATION Handle = 0x8010000B + SCARD_E_NO_SMARTCARD Handle = 0x8010000C + SCARD_E_UNKNOWN_CARD Handle = 0x8010000D + SCARD_E_CANT_DISPOSE Handle = 0x8010000E + SCARD_E_PROTO_MISMATCH Handle = 0x8010000F + SCARD_E_NOT_READY Handle = 0x80100010 + SCARD_E_INVALID_VALUE Handle = 0x80100011 + SCARD_E_SYSTEM_CANCELLED Handle = 0x80100012 + SCARD_F_COMM_ERROR Handle = 0x80100013 + SCARD_F_UNKNOWN_ERROR Handle = 0x80100014 + SCARD_E_INVALID_ATR Handle = 0x80100015 + SCARD_E_NOT_TRANSACTED Handle = 0x80100016 + SCARD_E_READER_UNAVAILABLE Handle = 0x80100017 + SCARD_P_SHUTDOWN Handle = 0x80100018 + SCARD_E_PCI_TOO_SMALL Handle = 0x80100019 + SCARD_E_READER_UNSUPPORTED Handle = 0x8010001A + SCARD_E_DUPLICATE_READER Handle = 0x8010001B + SCARD_E_CARD_UNSUPPORTED Handle = 0x8010001C + SCARD_E_NO_SERVICE Handle = 0x8010001D + SCARD_E_SERVICE_STOPPED Handle = 0x8010001E + SCARD_E_UNEXPECTED Handle = 0x8010001F + SCARD_E_ICC_INSTALLATION Handle = 0x80100020 + SCARD_E_ICC_CREATEORDER Handle = 0x80100021 + SCARD_E_UNSUPPORTED_FEATURE Handle = 0x80100022 + SCARD_E_DIR_NOT_FOUND Handle = 0x80100023 + SCARD_E_FILE_NOT_FOUND Handle = 0x80100024 + SCARD_E_NO_DIR Handle = 0x80100025 + SCARD_E_NO_FILE Handle = 0x80100026 + SCARD_E_NO_ACCESS Handle = 0x80100027 + SCARD_E_WRITE_TOO_MANY Handle = 0x80100028 + SCARD_E_BAD_SEEK Handle = 0x80100029 + SCARD_E_INVALID_CHV Handle = 0x8010002A + SCARD_E_UNKNOWN_RES_MNG Handle = 0x8010002B + SCARD_E_NO_SUCH_CERTIFICATE Handle = 0x8010002C + SCARD_E_CERTIFICATE_UNAVAILABLE Handle = 0x8010002D + SCARD_E_NO_READERS_AVAILABLE Handle = 0x8010002E + SCARD_E_COMM_DATA_LOST Handle = 0x8010002F + SCARD_E_NO_KEY_CONTAINER Handle = 0x80100030 + SCARD_E_SERVER_TOO_BUSY Handle = 0x80100031 + SCARD_E_PIN_CACHE_EXPIRED Handle = 0x80100032 + SCARD_E_NO_PIN_CACHE Handle = 0x80100033 + SCARD_E_READ_ONLY_CARD Handle = 0x80100034 + SCARD_W_UNSUPPORTED_CARD Handle = 0x80100065 + SCARD_W_UNRESPONSIVE_CARD Handle = 0x80100066 + SCARD_W_UNPOWERED_CARD Handle = 0x80100067 + SCARD_W_RESET_CARD Handle = 0x80100068 + SCARD_W_REMOVED_CARD Handle = 0x80100069 + SCARD_W_SECURITY_VIOLATION Handle = 0x8010006A + SCARD_W_WRONG_CHV Handle = 0x8010006B + SCARD_W_CHV_BLOCKED Handle = 0x8010006C + SCARD_W_EOF Handle = 0x8010006D + SCARD_W_CANCELLED_BY_USER Handle = 0x8010006E + SCARD_W_CARD_NOT_AUTHENTICATED Handle = 0x8010006F + SCARD_W_CACHE_ITEM_NOT_FOUND Handle = 0x80100070 + SCARD_W_CACHE_ITEM_STALE Handle = 0x80100071 + SCARD_W_CACHE_ITEM_TOO_BIG Handle = 0x80100072 + COMADMIN_E_OBJECTERRORS Handle = 0x80110401 + COMADMIN_E_OBJECTINVALID Handle = 0x80110402 + COMADMIN_E_KEYMISSING Handle = 0x80110403 + COMADMIN_E_ALREADYINSTALLED Handle = 0x80110404 + COMADMIN_E_APP_FILE_WRITEFAIL Handle = 0x80110407 + COMADMIN_E_APP_FILE_READFAIL Handle = 0x80110408 + COMADMIN_E_APP_FILE_VERSION Handle = 0x80110409 + COMADMIN_E_BADPATH Handle = 0x8011040A + COMADMIN_E_APPLICATIONEXISTS Handle = 0x8011040B + COMADMIN_E_ROLEEXISTS Handle = 0x8011040C + COMADMIN_E_CANTCOPYFILE Handle = 0x8011040D + COMADMIN_E_NOUSER Handle = 0x8011040F + COMADMIN_E_INVALIDUSERIDS Handle = 0x80110410 + COMADMIN_E_NOREGISTRYCLSID Handle = 0x80110411 + COMADMIN_E_BADREGISTRYPROGID Handle = 0x80110412 + COMADMIN_E_AUTHENTICATIONLEVEL Handle = 0x80110413 + COMADMIN_E_USERPASSWDNOTVALID Handle = 0x80110414 + COMADMIN_E_CLSIDORIIDMISMATCH Handle = 0x80110418 + COMADMIN_E_REMOTEINTERFACE Handle = 0x80110419 + COMADMIN_E_DLLREGISTERSERVER Handle = 0x8011041A + COMADMIN_E_NOSERVERSHARE Handle = 0x8011041B + COMADMIN_E_DLLLOADFAILED Handle = 0x8011041D + COMADMIN_E_BADREGISTRYLIBID Handle = 0x8011041E + COMADMIN_E_APPDIRNOTFOUND Handle = 0x8011041F + COMADMIN_E_REGISTRARFAILED Handle = 0x80110423 + COMADMIN_E_COMPFILE_DOESNOTEXIST Handle = 0x80110424 + COMADMIN_E_COMPFILE_LOADDLLFAIL Handle = 0x80110425 + COMADMIN_E_COMPFILE_GETCLASSOBJ Handle = 0x80110426 + COMADMIN_E_COMPFILE_CLASSNOTAVAIL Handle = 0x80110427 + COMADMIN_E_COMPFILE_BADTLB Handle = 0x80110428 + COMADMIN_E_COMPFILE_NOTINSTALLABLE Handle = 0x80110429 + COMADMIN_E_NOTCHANGEABLE Handle = 0x8011042A + COMADMIN_E_NOTDELETEABLE Handle = 0x8011042B + COMADMIN_E_SESSION Handle = 0x8011042C + COMADMIN_E_COMP_MOVE_LOCKED Handle = 0x8011042D + COMADMIN_E_COMP_MOVE_BAD_DEST Handle = 0x8011042E + COMADMIN_E_REGISTERTLB Handle = 0x80110430 + COMADMIN_E_SYSTEMAPP Handle = 0x80110433 + COMADMIN_E_COMPFILE_NOREGISTRAR Handle = 0x80110434 + COMADMIN_E_COREQCOMPINSTALLED Handle = 0x80110435 + COMADMIN_E_SERVICENOTINSTALLED Handle = 0x80110436 + COMADMIN_E_PROPERTYSAVEFAILED Handle = 0x80110437 + COMADMIN_E_OBJECTEXISTS Handle = 0x80110438 + COMADMIN_E_COMPONENTEXISTS Handle = 0x80110439 + COMADMIN_E_REGFILE_CORRUPT Handle = 0x8011043B + COMADMIN_E_PROPERTY_OVERFLOW Handle = 0x8011043C + COMADMIN_E_NOTINREGISTRY Handle = 0x8011043E + COMADMIN_E_OBJECTNOTPOOLABLE Handle = 0x8011043F + COMADMIN_E_APPLID_MATCHES_CLSID Handle = 0x80110446 + COMADMIN_E_ROLE_DOES_NOT_EXIST Handle = 0x80110447 + COMADMIN_E_START_APP_NEEDS_COMPONENTS Handle = 0x80110448 + COMADMIN_E_REQUIRES_DIFFERENT_PLATFORM Handle = 0x80110449 + COMADMIN_E_CAN_NOT_EXPORT_APP_PROXY Handle = 0x8011044A + COMADMIN_E_CAN_NOT_START_APP Handle = 0x8011044B + COMADMIN_E_CAN_NOT_EXPORT_SYS_APP Handle = 0x8011044C + COMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT Handle = 0x8011044D + COMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER Handle = 0x8011044E + COMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE Handle = 0x8011044F + COMADMIN_E_BASE_PARTITION_ONLY Handle = 0x80110450 + COMADMIN_E_START_APP_DISABLED Handle = 0x80110451 + COMADMIN_E_CAT_DUPLICATE_PARTITION_NAME Handle = 0x80110457 + COMADMIN_E_CAT_INVALID_PARTITION_NAME Handle = 0x80110458 + COMADMIN_E_CAT_PARTITION_IN_USE Handle = 0x80110459 + COMADMIN_E_FILE_PARTITION_DUPLICATE_FILES Handle = 0x8011045A + COMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED Handle = 0x8011045B + COMADMIN_E_AMBIGUOUS_APPLICATION_NAME Handle = 0x8011045C + COMADMIN_E_AMBIGUOUS_PARTITION_NAME Handle = 0x8011045D + COMADMIN_E_REGDB_NOTINITIALIZED Handle = 0x80110472 + COMADMIN_E_REGDB_NOTOPEN Handle = 0x80110473 + COMADMIN_E_REGDB_SYSTEMERR Handle = 0x80110474 + COMADMIN_E_REGDB_ALREADYRUNNING Handle = 0x80110475 + COMADMIN_E_MIG_VERSIONNOTSUPPORTED Handle = 0x80110480 + COMADMIN_E_MIG_SCHEMANOTFOUND Handle = 0x80110481 + COMADMIN_E_CAT_BITNESSMISMATCH Handle = 0x80110482 + COMADMIN_E_CAT_UNACCEPTABLEBITNESS Handle = 0x80110483 + COMADMIN_E_CAT_WRONGAPPBITNESS Handle = 0x80110484 + COMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED Handle = 0x80110485 + COMADMIN_E_CAT_SERVERFAULT Handle = 0x80110486 + COMQC_E_APPLICATION_NOT_QUEUED Handle = 0x80110600 + COMQC_E_NO_QUEUEABLE_INTERFACES Handle = 0x80110601 + COMQC_E_QUEUING_SERVICE_NOT_AVAILABLE Handle = 0x80110602 + COMQC_E_NO_IPERSISTSTREAM Handle = 0x80110603 + COMQC_E_BAD_MESSAGE Handle = 0x80110604 + COMQC_E_UNAUTHENTICATED Handle = 0x80110605 + COMQC_E_UNTRUSTED_ENQUEUER Handle = 0x80110606 + MSDTC_E_DUPLICATE_RESOURCE Handle = 0x80110701 + COMADMIN_E_OBJECT_PARENT_MISSING Handle = 0x80110808 + COMADMIN_E_OBJECT_DOES_NOT_EXIST Handle = 0x80110809 + COMADMIN_E_APP_NOT_RUNNING Handle = 0x8011080A + COMADMIN_E_INVALID_PARTITION Handle = 0x8011080B + COMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE Handle = 0x8011080D + COMADMIN_E_USER_IN_SET Handle = 0x8011080E + COMADMIN_E_CANTRECYCLELIBRARYAPPS Handle = 0x8011080F + COMADMIN_E_CANTRECYCLESERVICEAPPS Handle = 0x80110811 + COMADMIN_E_PROCESSALREADYRECYCLED Handle = 0x80110812 + COMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED Handle = 0x80110813 + COMADMIN_E_CANTMAKEINPROCSERVICE Handle = 0x80110814 + COMADMIN_E_PROGIDINUSEBYCLSID Handle = 0x80110815 + COMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET Handle = 0x80110816 + COMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED Handle = 0x80110817 + COMADMIN_E_PARTITION_ACCESSDENIED Handle = 0x80110818 + COMADMIN_E_PARTITION_MSI_ONLY Handle = 0x80110819 + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT Handle = 0x8011081A + COMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS Handle = 0x8011081B + COMADMIN_E_COMP_MOVE_SOURCE Handle = 0x8011081C + COMADMIN_E_COMP_MOVE_DEST Handle = 0x8011081D + COMADMIN_E_COMP_MOVE_PRIVATE Handle = 0x8011081E + COMADMIN_E_BASEPARTITION_REQUIRED_IN_SET Handle = 0x8011081F + COMADMIN_E_CANNOT_ALIAS_EVENTCLASS Handle = 0x80110820 + COMADMIN_E_PRIVATE_ACCESSDENIED Handle = 0x80110821 + COMADMIN_E_SAFERINVALID Handle = 0x80110822 + COMADMIN_E_REGISTRY_ACCESSDENIED Handle = 0x80110823 + COMADMIN_E_PARTITIONS_DISABLED Handle = 0x80110824 + WER_S_REPORT_DEBUG Handle = 0x001B0000 + WER_S_REPORT_UPLOADED Handle = 0x001B0001 + WER_S_REPORT_QUEUED Handle = 0x001B0002 + WER_S_DISABLED Handle = 0x001B0003 + WER_S_SUSPENDED_UPLOAD Handle = 0x001B0004 + WER_S_DISABLED_QUEUE Handle = 0x001B0005 + WER_S_DISABLED_ARCHIVE Handle = 0x001B0006 + WER_S_REPORT_ASYNC Handle = 0x001B0007 + WER_S_IGNORE_ASSERT_INSTANCE Handle = 0x001B0008 + WER_S_IGNORE_ALL_ASSERTS Handle = 0x001B0009 + WER_S_ASSERT_CONTINUE Handle = 0x001B000A + WER_S_THROTTLED Handle = 0x001B000B + WER_S_REPORT_UPLOADED_CAB Handle = 0x001B000C + WER_E_CRASH_FAILURE Handle = 0x801B8000 + WER_E_CANCELED Handle = 0x801B8001 + WER_E_NETWORK_FAILURE Handle = 0x801B8002 + WER_E_NOT_INITIALIZED Handle = 0x801B8003 + WER_E_ALREADY_REPORTING Handle = 0x801B8004 + WER_E_DUMP_THROTTLED Handle = 0x801B8005 + WER_E_INSUFFICIENT_CONSENT Handle = 0x801B8006 + WER_E_TOO_HEAVY Handle = 0x801B8007 + ERROR_FLT_IO_COMPLETE Handle = 0x001F0001 + ERROR_FLT_NO_HANDLER_DEFINED Handle = 0x801F0001 + ERROR_FLT_CONTEXT_ALREADY_DEFINED Handle = 0x801F0002 + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST Handle = 0x801F0003 + ERROR_FLT_DISALLOW_FAST_IO Handle = 0x801F0004 + ERROR_FLT_INVALID_NAME_REQUEST Handle = 0x801F0005 + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION Handle = 0x801F0006 + ERROR_FLT_NOT_INITIALIZED Handle = 0x801F0007 + ERROR_FLT_FILTER_NOT_READY Handle = 0x801F0008 + ERROR_FLT_POST_OPERATION_CLEANUP Handle = 0x801F0009 + ERROR_FLT_INTERNAL_ERROR Handle = 0x801F000A + ERROR_FLT_DELETING_OBJECT Handle = 0x801F000B + ERROR_FLT_MUST_BE_NONPAGED_POOL Handle = 0x801F000C + ERROR_FLT_DUPLICATE_ENTRY Handle = 0x801F000D + ERROR_FLT_CBDQ_DISABLED Handle = 0x801F000E + ERROR_FLT_DO_NOT_ATTACH Handle = 0x801F000F + ERROR_FLT_DO_NOT_DETACH Handle = 0x801F0010 + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION Handle = 0x801F0011 + ERROR_FLT_INSTANCE_NAME_COLLISION Handle = 0x801F0012 + ERROR_FLT_FILTER_NOT_FOUND Handle = 0x801F0013 + ERROR_FLT_VOLUME_NOT_FOUND Handle = 0x801F0014 + ERROR_FLT_INSTANCE_NOT_FOUND Handle = 0x801F0015 + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND Handle = 0x801F0016 + ERROR_FLT_INVALID_CONTEXT_REGISTRATION Handle = 0x801F0017 + ERROR_FLT_NAME_CACHE_MISS Handle = 0x801F0018 + ERROR_FLT_NO_DEVICE_OBJECT Handle = 0x801F0019 + ERROR_FLT_VOLUME_ALREADY_MOUNTED Handle = 0x801F001A + ERROR_FLT_ALREADY_ENLISTED Handle = 0x801F001B + ERROR_FLT_CONTEXT_ALREADY_LINKED Handle = 0x801F001C + ERROR_FLT_NO_WAITER_FOR_REPLY Handle = 0x801F0020 + ERROR_FLT_REGISTRATION_BUSY Handle = 0x801F0023 + ERROR_HUNG_DISPLAY_DRIVER_THREAD Handle = 0x80260001 + DWM_E_COMPOSITIONDISABLED Handle = 0x80263001 + DWM_E_REMOTING_NOT_SUPPORTED Handle = 0x80263002 + DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x80263003 + DWM_E_NOT_QUEUING_PRESENTS Handle = 0x80263004 + DWM_E_ADAPTER_NOT_FOUND Handle = 0x80263005 + DWM_S_GDI_REDIRECTION_SURFACE Handle = 0x00263005 + DWM_E_TEXTURE_TOO_LARGE Handle = 0x80263007 + DWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI Handle = 0x00263008 + ERROR_MONITOR_NO_DESCRIPTOR Handle = 0x00261001 + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT Handle = 0x00261002 + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM Handle = 0xC0261003 + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK Handle = 0xC0261004 + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED Handle = 0xC0261005 + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK Handle = 0xC0261006 + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK Handle = 0xC0261007 + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA Handle = 0xC0261008 + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK Handle = 0xC0261009 + ERROR_MONITOR_INVALID_MANUFACTURE_DATE Handle = 0xC026100A + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER Handle = 0xC0262000 + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER Handle = 0xC0262001 + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER Handle = 0xC0262002 + ERROR_GRAPHICS_ADAPTER_WAS_RESET Handle = 0xC0262003 + ERROR_GRAPHICS_INVALID_DRIVER_MODEL Handle = 0xC0262004 + ERROR_GRAPHICS_PRESENT_MODE_CHANGED Handle = 0xC0262005 + ERROR_GRAPHICS_PRESENT_OCCLUDED Handle = 0xC0262006 + ERROR_GRAPHICS_PRESENT_DENIED Handle = 0xC0262007 + ERROR_GRAPHICS_CANNOTCOLORCONVERT Handle = 0xC0262008 + ERROR_GRAPHICS_DRIVER_MISMATCH Handle = 0xC0262009 + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED Handle = 0x4026200A + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED Handle = 0xC026200B + ERROR_GRAPHICS_PRESENT_UNOCCLUDED Handle = 0xC026200C + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE Handle = 0xC026200D + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED Handle = 0xC026200E + ERROR_GRAPHICS_PRESENT_INVALID_WINDOW Handle = 0xC026200F + ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND Handle = 0xC0262010 + ERROR_GRAPHICS_VAIL_STATE_CHANGED Handle = 0xC0262011 + ERROR_GRAPHICS_NO_VIDEO_MEMORY Handle = 0xC0262100 + ERROR_GRAPHICS_CANT_LOCK_MEMORY Handle = 0xC0262101 + ERROR_GRAPHICS_ALLOCATION_BUSY Handle = 0xC0262102 + ERROR_GRAPHICS_TOO_MANY_REFERENCES Handle = 0xC0262103 + ERROR_GRAPHICS_TRY_AGAIN_LATER Handle = 0xC0262104 + ERROR_GRAPHICS_TRY_AGAIN_NOW Handle = 0xC0262105 + ERROR_GRAPHICS_ALLOCATION_INVALID Handle = 0xC0262106 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE Handle = 0xC0262107 + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED Handle = 0xC0262108 + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION Handle = 0xC0262109 + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE Handle = 0xC0262110 + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION Handle = 0xC0262111 + ERROR_GRAPHICS_ALLOCATION_CLOSED Handle = 0xC0262112 + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE Handle = 0xC0262113 + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE Handle = 0xC0262114 + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE Handle = 0xC0262115 + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST Handle = 0xC0262116 + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE Handle = 0xC0262200 + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION Handle = 0x40262201 + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY Handle = 0xC0262300 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED Handle = 0xC0262301 + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED Handle = 0xC0262302 + ERROR_GRAPHICS_INVALID_VIDPN Handle = 0xC0262303 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE Handle = 0xC0262304 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET Handle = 0xC0262305 + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED Handle = 0xC0262306 + ERROR_GRAPHICS_MODE_NOT_PINNED Handle = 0x00262307 + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET Handle = 0xC0262308 + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET Handle = 0xC0262309 + ERROR_GRAPHICS_INVALID_FREQUENCY Handle = 0xC026230A + ERROR_GRAPHICS_INVALID_ACTIVE_REGION Handle = 0xC026230B + ERROR_GRAPHICS_INVALID_TOTAL_REGION Handle = 0xC026230C + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE Handle = 0xC0262310 + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE Handle = 0xC0262311 + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET Handle = 0xC0262312 + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY Handle = 0xC0262313 + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET Handle = 0xC0262314 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET Handle = 0xC0262315 + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET Handle = 0xC0262316 + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET Handle = 0xC0262317 + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET Handle = 0xC0262318 + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH Handle = 0xC0262319 + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY Handle = 0xC026231A + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET Handle = 0xC026231B + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE Handle = 0xC026231C + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET Handle = 0xC026231D + ERROR_GRAPHICS_NO_PREFERRED_MODE Handle = 0x0026231E + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET Handle = 0xC026231F + ERROR_GRAPHICS_STALE_MODESET Handle = 0xC0262320 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET Handle = 0xC0262321 + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE Handle = 0xC0262322 + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN Handle = 0xC0262323 + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE Handle = 0xC0262324 + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION Handle = 0xC0262325 + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES Handle = 0xC0262326 + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY Handle = 0xC0262327 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE Handle = 0xC0262328 + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET Handle = 0xC0262329 + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET Handle = 0xC026232A + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR Handle = 0xC026232B + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET Handle = 0xC026232C + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET Handle = 0xC026232D + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE Handle = 0xC026232E + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE Handle = 0xC026232F + ERROR_GRAPHICS_RESOURCES_NOT_RELATED Handle = 0xC0262330 + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE Handle = 0xC0262331 + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE Handle = 0xC0262332 + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET Handle = 0xC0262333 + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER Handle = 0xC0262334 + ERROR_GRAPHICS_NO_VIDPNMGR Handle = 0xC0262335 + ERROR_GRAPHICS_NO_ACTIVE_VIDPN Handle = 0xC0262336 + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY Handle = 0xC0262337 + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED Handle = 0xC0262338 + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY Handle = 0xC0262339 + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE Handle = 0xC026233A + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE Handle = 0xC026233B + ERROR_GRAPHICS_INVALID_STRIDE Handle = 0xC026233C + ERROR_GRAPHICS_INVALID_PIXELFORMAT Handle = 0xC026233D + ERROR_GRAPHICS_INVALID_COLORBASIS Handle = 0xC026233E + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE Handle = 0xC026233F + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY Handle = 0xC0262340 + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT Handle = 0xC0262341 + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0xC0262342 + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN Handle = 0xC0262343 + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL Handle = 0xC0262344 + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION Handle = 0xC0262345 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED Handle = 0xC0262346 + ERROR_GRAPHICS_INVALID_GAMMA_RAMP Handle = 0xC0262347 + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED Handle = 0xC0262348 + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED Handle = 0xC0262349 + ERROR_GRAPHICS_MODE_NOT_IN_MODESET Handle = 0xC026234A + ERROR_GRAPHICS_DATASET_IS_EMPTY Handle = 0x0026234B + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET Handle = 0x0026234C + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON Handle = 0xC026234D + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE Handle = 0xC026234E + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE Handle = 0xC026234F + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS Handle = 0xC0262350 + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED Handle = 0x00262351 + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING Handle = 0xC0262352 + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED Handle = 0xC0262353 + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS Handle = 0xC0262354 + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT Handle = 0xC0262355 + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM Handle = 0xC0262356 + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN Handle = 0xC0262357 + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT Handle = 0xC0262358 + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED Handle = 0xC0262359 + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION Handle = 0xC026235A + ERROR_GRAPHICS_INVALID_CLIENT_TYPE Handle = 0xC026235B + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET Handle = 0xC026235C + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED Handle = 0xC0262400 + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED Handle = 0xC0262401 + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS Handle = 0x4026242F + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER Handle = 0xC0262430 + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED Handle = 0xC0262431 + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED Handle = 0xC0262432 + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY Handle = 0xC0262433 + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED Handle = 0xC0262434 + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON Handle = 0xC0262435 + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE Handle = 0xC0262436 + ERROR_GRAPHICS_LEADLINK_START_DEFERRED Handle = 0x40262437 + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER Handle = 0xC0262438 + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY Handle = 0x40262439 + ERROR_GRAPHICS_START_DEFERRED Handle = 0x4026243A + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED Handle = 0xC026243B + ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS Handle = 0x4026243C + ERROR_GRAPHICS_OPM_NOT_SUPPORTED Handle = 0xC0262500 + ERROR_GRAPHICS_COPP_NOT_SUPPORTED Handle = 0xC0262501 + ERROR_GRAPHICS_UAB_NOT_SUPPORTED Handle = 0xC0262502 + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS Handle = 0xC0262503 + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST Handle = 0xC0262505 + ERROR_GRAPHICS_OPM_INTERNAL_ERROR Handle = 0xC026250B + ERROR_GRAPHICS_OPM_INVALID_HANDLE Handle = 0xC026250C + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH Handle = 0xC026250E + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED Handle = 0xC026250F + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED Handle = 0xC0262510 + ERROR_GRAPHICS_PVP_HFS_FAILED Handle = 0xC0262511 + ERROR_GRAPHICS_OPM_INVALID_SRM Handle = 0xC0262512 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP Handle = 0xC0262513 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP Handle = 0xC0262514 + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA Handle = 0xC0262515 + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET Handle = 0xC0262516 + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH Handle = 0xC0262517 + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE Handle = 0xC0262518 + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS Handle = 0xC026251A + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC026251B + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS Handle = 0xC026251C + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST Handle = 0xC026251D + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR Handle = 0xC026251E + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS Handle = 0xC026251F + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED Handle = 0xC0262520 + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST Handle = 0xC0262521 + ERROR_GRAPHICS_I2C_NOT_SUPPORTED Handle = 0xC0262580 + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST Handle = 0xC0262581 + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA Handle = 0xC0262582 + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA Handle = 0xC0262583 + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED Handle = 0xC0262584 + ERROR_GRAPHICS_DDCCI_INVALID_DATA Handle = 0xC0262585 + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE Handle = 0xC0262586 + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING Handle = 0xC0262587 + ERROR_GRAPHICS_MCA_INTERNAL_ERROR Handle = 0xC0262588 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND Handle = 0xC0262589 + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH Handle = 0xC026258A + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM Handle = 0xC026258B + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE Handle = 0xC026258C + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS Handle = 0xC026258D + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE Handle = 0xC02625D8 + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION Handle = 0xC02625D9 + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION Handle = 0xC02625DA + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH Handle = 0xC02625DB + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION Handle = 0xC02625DC + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED Handle = 0xC02625DE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE Handle = 0xC02625DF + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED Handle = 0xC02625E0 + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME Handle = 0xC02625E1 + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP Handle = 0xC02625E2 + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED Handle = 0xC02625E3 + ERROR_GRAPHICS_INVALID_POINTER Handle = 0xC02625E4 + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE Handle = 0xC02625E5 + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL Handle = 0xC02625E6 + ERROR_GRAPHICS_INTERNAL_ERROR Handle = 0xC02625E7 + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS Handle = 0xC02605E8 + NAP_E_INVALID_PACKET Handle = 0x80270001 + NAP_E_MISSING_SOH Handle = 0x80270002 + NAP_E_CONFLICTING_ID Handle = 0x80270003 + NAP_E_NO_CACHED_SOH Handle = 0x80270004 + NAP_E_STILL_BOUND Handle = 0x80270005 + NAP_E_NOT_REGISTERED Handle = 0x80270006 + NAP_E_NOT_INITIALIZED Handle = 0x80270007 + NAP_E_MISMATCHED_ID Handle = 0x80270008 + NAP_E_NOT_PENDING Handle = 0x80270009 + NAP_E_ID_NOT_FOUND Handle = 0x8027000A + NAP_E_MAXSIZE_TOO_SMALL Handle = 0x8027000B + NAP_E_SERVICE_NOT_RUNNING Handle = 0x8027000C + NAP_S_CERT_ALREADY_PRESENT Handle = 0x0027000D + NAP_E_ENTITY_DISABLED Handle = 0x8027000E + NAP_E_NETSH_GROUPPOLICY_ERROR Handle = 0x8027000F + NAP_E_TOO_MANY_CALLS Handle = 0x80270010 + NAP_E_SHV_CONFIG_EXISTED Handle = 0x80270011 + NAP_E_SHV_CONFIG_NOT_FOUND Handle = 0x80270012 + NAP_E_SHV_TIMEOUT Handle = 0x80270013 + TPM_E_ERROR_MASK Handle = 0x80280000 + TPM_E_AUTHFAIL Handle = 0x80280001 + TPM_E_BADINDEX Handle = 0x80280002 + TPM_E_BAD_PARAMETER Handle = 0x80280003 + TPM_E_AUDITFAILURE Handle = 0x80280004 + TPM_E_CLEAR_DISABLED Handle = 0x80280005 + TPM_E_DEACTIVATED Handle = 0x80280006 + TPM_E_DISABLED Handle = 0x80280007 + TPM_E_DISABLED_CMD Handle = 0x80280008 + TPM_E_FAIL Handle = 0x80280009 + TPM_E_BAD_ORDINAL Handle = 0x8028000A + TPM_E_INSTALL_DISABLED Handle = 0x8028000B + TPM_E_INVALID_KEYHANDLE Handle = 0x8028000C + TPM_E_KEYNOTFOUND Handle = 0x8028000D + TPM_E_INAPPROPRIATE_ENC Handle = 0x8028000E + TPM_E_MIGRATEFAIL Handle = 0x8028000F + TPM_E_INVALID_PCR_INFO Handle = 0x80280010 + TPM_E_NOSPACE Handle = 0x80280011 + TPM_E_NOSRK Handle = 0x80280012 + TPM_E_NOTSEALED_BLOB Handle = 0x80280013 + TPM_E_OWNER_SET Handle = 0x80280014 + TPM_E_RESOURCES Handle = 0x80280015 + TPM_E_SHORTRANDOM Handle = 0x80280016 + TPM_E_SIZE Handle = 0x80280017 + TPM_E_WRONGPCRVAL Handle = 0x80280018 + TPM_E_BAD_PARAM_SIZE Handle = 0x80280019 + TPM_E_SHA_THREAD Handle = 0x8028001A + TPM_E_SHA_ERROR Handle = 0x8028001B + TPM_E_FAILEDSELFTEST Handle = 0x8028001C + TPM_E_AUTH2FAIL Handle = 0x8028001D + TPM_E_BADTAG Handle = 0x8028001E + TPM_E_IOERROR Handle = 0x8028001F + TPM_E_ENCRYPT_ERROR Handle = 0x80280020 + TPM_E_DECRYPT_ERROR Handle = 0x80280021 + TPM_E_INVALID_AUTHHANDLE Handle = 0x80280022 + TPM_E_NO_ENDORSEMENT Handle = 0x80280023 + TPM_E_INVALID_KEYUSAGE Handle = 0x80280024 + TPM_E_WRONG_ENTITYTYPE Handle = 0x80280025 + TPM_E_INVALID_POSTINIT Handle = 0x80280026 + TPM_E_INAPPROPRIATE_SIG Handle = 0x80280027 + TPM_E_BAD_KEY_PROPERTY Handle = 0x80280028 + TPM_E_BAD_MIGRATION Handle = 0x80280029 + TPM_E_BAD_SCHEME Handle = 0x8028002A + TPM_E_BAD_DATASIZE Handle = 0x8028002B + TPM_E_BAD_MODE Handle = 0x8028002C + TPM_E_BAD_PRESENCE Handle = 0x8028002D + TPM_E_BAD_VERSION Handle = 0x8028002E + TPM_E_NO_WRAP_TRANSPORT Handle = 0x8028002F + TPM_E_AUDITFAIL_UNSUCCESSFUL Handle = 0x80280030 + TPM_E_AUDITFAIL_SUCCESSFUL Handle = 0x80280031 + TPM_E_NOTRESETABLE Handle = 0x80280032 + TPM_E_NOTLOCAL Handle = 0x80280033 + TPM_E_BAD_TYPE Handle = 0x80280034 + TPM_E_INVALID_RESOURCE Handle = 0x80280035 + TPM_E_NOTFIPS Handle = 0x80280036 + TPM_E_INVALID_FAMILY Handle = 0x80280037 + TPM_E_NO_NV_PERMISSION Handle = 0x80280038 + TPM_E_REQUIRES_SIGN Handle = 0x80280039 + TPM_E_KEY_NOTSUPPORTED Handle = 0x8028003A + TPM_E_AUTH_CONFLICT Handle = 0x8028003B + TPM_E_AREA_LOCKED Handle = 0x8028003C + TPM_E_BAD_LOCALITY Handle = 0x8028003D + TPM_E_READ_ONLY Handle = 0x8028003E + TPM_E_PER_NOWRITE Handle = 0x8028003F + TPM_E_FAMILYCOUNT Handle = 0x80280040 + TPM_E_WRITE_LOCKED Handle = 0x80280041 + TPM_E_BAD_ATTRIBUTES Handle = 0x80280042 + TPM_E_INVALID_STRUCTURE Handle = 0x80280043 + TPM_E_KEY_OWNER_CONTROL Handle = 0x80280044 + TPM_E_BAD_COUNTER Handle = 0x80280045 + TPM_E_NOT_FULLWRITE Handle = 0x80280046 + TPM_E_CONTEXT_GAP Handle = 0x80280047 + TPM_E_MAXNVWRITES Handle = 0x80280048 + TPM_E_NOOPERATOR Handle = 0x80280049 + TPM_E_RESOURCEMISSING Handle = 0x8028004A + TPM_E_DELEGATE_LOCK Handle = 0x8028004B + TPM_E_DELEGATE_FAMILY Handle = 0x8028004C + TPM_E_DELEGATE_ADMIN Handle = 0x8028004D + TPM_E_TRANSPORT_NOTEXCLUSIVE Handle = 0x8028004E + TPM_E_OWNER_CONTROL Handle = 0x8028004F + TPM_E_DAA_RESOURCES Handle = 0x80280050 + TPM_E_DAA_INPUT_DATA0 Handle = 0x80280051 + TPM_E_DAA_INPUT_DATA1 Handle = 0x80280052 + TPM_E_DAA_ISSUER_SETTINGS Handle = 0x80280053 + TPM_E_DAA_TPM_SETTINGS Handle = 0x80280054 + TPM_E_DAA_STAGE Handle = 0x80280055 + TPM_E_DAA_ISSUER_VALIDITY Handle = 0x80280056 + TPM_E_DAA_WRONG_W Handle = 0x80280057 + TPM_E_BAD_HANDLE Handle = 0x80280058 + TPM_E_BAD_DELEGATE Handle = 0x80280059 + TPM_E_BADCONTEXT Handle = 0x8028005A + TPM_E_TOOMANYCONTEXTS Handle = 0x8028005B + TPM_E_MA_TICKET_SIGNATURE Handle = 0x8028005C + TPM_E_MA_DESTINATION Handle = 0x8028005D + TPM_E_MA_SOURCE Handle = 0x8028005E + TPM_E_MA_AUTHORITY Handle = 0x8028005F + TPM_E_PERMANENTEK Handle = 0x80280061 + TPM_E_BAD_SIGNATURE Handle = 0x80280062 + TPM_E_NOCONTEXTSPACE Handle = 0x80280063 + TPM_20_E_ASYMMETRIC Handle = 0x80280081 + TPM_20_E_ATTRIBUTES Handle = 0x80280082 + TPM_20_E_HASH Handle = 0x80280083 + TPM_20_E_VALUE Handle = 0x80280084 + TPM_20_E_HIERARCHY Handle = 0x80280085 + TPM_20_E_KEY_SIZE Handle = 0x80280087 + TPM_20_E_MGF Handle = 0x80280088 + TPM_20_E_MODE Handle = 0x80280089 + TPM_20_E_TYPE Handle = 0x8028008A + TPM_20_E_HANDLE Handle = 0x8028008B + TPM_20_E_KDF Handle = 0x8028008C + TPM_20_E_RANGE Handle = 0x8028008D + TPM_20_E_AUTH_FAIL Handle = 0x8028008E + TPM_20_E_NONCE Handle = 0x8028008F + TPM_20_E_PP Handle = 0x80280090 + TPM_20_E_SCHEME Handle = 0x80280092 + TPM_20_E_SIZE Handle = 0x80280095 + TPM_20_E_SYMMETRIC Handle = 0x80280096 + TPM_20_E_TAG Handle = 0x80280097 + TPM_20_E_SELECTOR Handle = 0x80280098 + TPM_20_E_INSUFFICIENT Handle = 0x8028009A + TPM_20_E_SIGNATURE Handle = 0x8028009B + TPM_20_E_KEY Handle = 0x8028009C + TPM_20_E_POLICY_FAIL Handle = 0x8028009D + TPM_20_E_INTEGRITY Handle = 0x8028009F + TPM_20_E_TICKET Handle = 0x802800A0 + TPM_20_E_RESERVED_BITS Handle = 0x802800A1 + TPM_20_E_BAD_AUTH Handle = 0x802800A2 + TPM_20_E_EXPIRED Handle = 0x802800A3 + TPM_20_E_POLICY_CC Handle = 0x802800A4 + TPM_20_E_BINDING Handle = 0x802800A5 + TPM_20_E_CURVE Handle = 0x802800A6 + TPM_20_E_ECC_POINT Handle = 0x802800A7 + TPM_20_E_INITIALIZE Handle = 0x80280100 + TPM_20_E_FAILURE Handle = 0x80280101 + TPM_20_E_SEQUENCE Handle = 0x80280103 + TPM_20_E_PRIVATE Handle = 0x8028010B + TPM_20_E_HMAC Handle = 0x80280119 + TPM_20_E_DISABLED Handle = 0x80280120 + TPM_20_E_EXCLUSIVE Handle = 0x80280121 + TPM_20_E_ECC_CURVE Handle = 0x80280123 + TPM_20_E_AUTH_TYPE Handle = 0x80280124 + TPM_20_E_AUTH_MISSING Handle = 0x80280125 + TPM_20_E_POLICY Handle = 0x80280126 + TPM_20_E_PCR Handle = 0x80280127 + TPM_20_E_PCR_CHANGED Handle = 0x80280128 + TPM_20_E_UPGRADE Handle = 0x8028012D + TPM_20_E_TOO_MANY_CONTEXTS Handle = 0x8028012E + TPM_20_E_AUTH_UNAVAILABLE Handle = 0x8028012F + TPM_20_E_REBOOT Handle = 0x80280130 + TPM_20_E_UNBALANCED Handle = 0x80280131 + TPM_20_E_COMMAND_SIZE Handle = 0x80280142 + TPM_20_E_COMMAND_CODE Handle = 0x80280143 + TPM_20_E_AUTHSIZE Handle = 0x80280144 + TPM_20_E_AUTH_CONTEXT Handle = 0x80280145 + TPM_20_E_NV_RANGE Handle = 0x80280146 + TPM_20_E_NV_SIZE Handle = 0x80280147 + TPM_20_E_NV_LOCKED Handle = 0x80280148 + TPM_20_E_NV_AUTHORIZATION Handle = 0x80280149 + TPM_20_E_NV_UNINITIALIZED Handle = 0x8028014A + TPM_20_E_NV_SPACE Handle = 0x8028014B + TPM_20_E_NV_DEFINED Handle = 0x8028014C + TPM_20_E_BAD_CONTEXT Handle = 0x80280150 + TPM_20_E_CPHASH Handle = 0x80280151 + TPM_20_E_PARENT Handle = 0x80280152 + TPM_20_E_NEEDS_TEST Handle = 0x80280153 + TPM_20_E_NO_RESULT Handle = 0x80280154 + TPM_20_E_SENSITIVE Handle = 0x80280155 + TPM_E_COMMAND_BLOCKED Handle = 0x80280400 + TPM_E_INVALID_HANDLE Handle = 0x80280401 + TPM_E_DUPLICATE_VHANDLE Handle = 0x80280402 + TPM_E_EMBEDDED_COMMAND_BLOCKED Handle = 0x80280403 + TPM_E_EMBEDDED_COMMAND_UNSUPPORTED Handle = 0x80280404 + TPM_E_RETRY Handle = 0x80280800 + TPM_E_NEEDS_SELFTEST Handle = 0x80280801 + TPM_E_DOING_SELFTEST Handle = 0x80280802 + TPM_E_DEFEND_LOCK_RUNNING Handle = 0x80280803 + TPM_20_E_CONTEXT_GAP Handle = 0x80280901 + TPM_20_E_OBJECT_MEMORY Handle = 0x80280902 + TPM_20_E_SESSION_MEMORY Handle = 0x80280903 + TPM_20_E_MEMORY Handle = 0x80280904 + TPM_20_E_SESSION_HANDLES Handle = 0x80280905 + TPM_20_E_OBJECT_HANDLES Handle = 0x80280906 + TPM_20_E_LOCALITY Handle = 0x80280907 + TPM_20_E_YIELDED Handle = 0x80280908 + TPM_20_E_CANCELED Handle = 0x80280909 + TPM_20_E_TESTING Handle = 0x8028090A + TPM_20_E_NV_RATE Handle = 0x80280920 + TPM_20_E_LOCKOUT Handle = 0x80280921 + TPM_20_E_RETRY Handle = 0x80280922 + TPM_20_E_NV_UNAVAILABLE Handle = 0x80280923 + TBS_E_INTERNAL_ERROR Handle = 0x80284001 + TBS_E_BAD_PARAMETER Handle = 0x80284002 + TBS_E_INVALID_OUTPUT_POINTER Handle = 0x80284003 + TBS_E_INVALID_CONTEXT Handle = 0x80284004 + TBS_E_INSUFFICIENT_BUFFER Handle = 0x80284005 + TBS_E_IOERROR Handle = 0x80284006 + TBS_E_INVALID_CONTEXT_PARAM Handle = 0x80284007 + TBS_E_SERVICE_NOT_RUNNING Handle = 0x80284008 + TBS_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80284009 + TBS_E_TOO_MANY_RESOURCES Handle = 0x8028400A + TBS_E_SERVICE_START_PENDING Handle = 0x8028400B + TBS_E_PPI_NOT_SUPPORTED Handle = 0x8028400C + TBS_E_COMMAND_CANCELED Handle = 0x8028400D + TBS_E_BUFFER_TOO_LARGE Handle = 0x8028400E + TBS_E_TPM_NOT_FOUND Handle = 0x8028400F + TBS_E_SERVICE_DISABLED Handle = 0x80284010 + TBS_E_NO_EVENT_LOG Handle = 0x80284011 + TBS_E_ACCESS_DENIED Handle = 0x80284012 + TBS_E_PROVISIONING_NOT_ALLOWED Handle = 0x80284013 + TBS_E_PPI_FUNCTION_UNSUPPORTED Handle = 0x80284014 + TBS_E_OWNERAUTH_NOT_FOUND Handle = 0x80284015 + TBS_E_PROVISIONING_INCOMPLETE Handle = 0x80284016 + TPMAPI_E_INVALID_STATE Handle = 0x80290100 + TPMAPI_E_NOT_ENOUGH_DATA Handle = 0x80290101 + TPMAPI_E_TOO_MUCH_DATA Handle = 0x80290102 + TPMAPI_E_INVALID_OUTPUT_POINTER Handle = 0x80290103 + TPMAPI_E_INVALID_PARAMETER Handle = 0x80290104 + TPMAPI_E_OUT_OF_MEMORY Handle = 0x80290105 + TPMAPI_E_BUFFER_TOO_SMALL Handle = 0x80290106 + TPMAPI_E_INTERNAL_ERROR Handle = 0x80290107 + TPMAPI_E_ACCESS_DENIED Handle = 0x80290108 + TPMAPI_E_AUTHORIZATION_FAILED Handle = 0x80290109 + TPMAPI_E_INVALID_CONTEXT_HANDLE Handle = 0x8029010A + TPMAPI_E_TBS_COMMUNICATION_ERROR Handle = 0x8029010B + TPMAPI_E_TPM_COMMAND_ERROR Handle = 0x8029010C + TPMAPI_E_MESSAGE_TOO_LARGE Handle = 0x8029010D + TPMAPI_E_INVALID_ENCODING Handle = 0x8029010E + TPMAPI_E_INVALID_KEY_SIZE Handle = 0x8029010F + TPMAPI_E_ENCRYPTION_FAILED Handle = 0x80290110 + TPMAPI_E_INVALID_KEY_PARAMS Handle = 0x80290111 + TPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB Handle = 0x80290112 + TPMAPI_E_INVALID_PCR_INDEX Handle = 0x80290113 + TPMAPI_E_INVALID_DELEGATE_BLOB Handle = 0x80290114 + TPMAPI_E_INVALID_CONTEXT_PARAMS Handle = 0x80290115 + TPMAPI_E_INVALID_KEY_BLOB Handle = 0x80290116 + TPMAPI_E_INVALID_PCR_DATA Handle = 0x80290117 + TPMAPI_E_INVALID_OWNER_AUTH Handle = 0x80290118 + TPMAPI_E_FIPS_RNG_CHECK_FAILED Handle = 0x80290119 + TPMAPI_E_EMPTY_TCG_LOG Handle = 0x8029011A + TPMAPI_E_INVALID_TCG_LOG_ENTRY Handle = 0x8029011B + TPMAPI_E_TCG_SEPARATOR_ABSENT Handle = 0x8029011C + TPMAPI_E_TCG_INVALID_DIGEST_ENTRY Handle = 0x8029011D + TPMAPI_E_POLICY_DENIES_OPERATION Handle = 0x8029011E + TPMAPI_E_NV_BITS_NOT_DEFINED Handle = 0x8029011F + TPMAPI_E_NV_BITS_NOT_READY Handle = 0x80290120 + TPMAPI_E_SEALING_KEY_NOT_AVAILABLE Handle = 0x80290121 + TPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND Handle = 0x80290122 + TPMAPI_E_SVN_COUNTER_NOT_AVAILABLE Handle = 0x80290123 + TPMAPI_E_OWNER_AUTH_NOT_NULL Handle = 0x80290124 + TPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL Handle = 0x80290125 + TPMAPI_E_AUTHORIZATION_REVOKED Handle = 0x80290126 + TPMAPI_E_MALFORMED_AUTHORIZATION_KEY Handle = 0x80290127 + TPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED Handle = 0x80290128 + TPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE Handle = 0x80290129 + TPMAPI_E_MALFORMED_AUTHORIZATION_POLICY Handle = 0x8029012A + TPMAPI_E_MALFORMED_AUTHORIZATION_OTHER Handle = 0x8029012B + TPMAPI_E_SEALING_KEY_CHANGED Handle = 0x8029012C + TBSIMP_E_BUFFER_TOO_SMALL Handle = 0x80290200 + TBSIMP_E_CLEANUP_FAILED Handle = 0x80290201 + TBSIMP_E_INVALID_CONTEXT_HANDLE Handle = 0x80290202 + TBSIMP_E_INVALID_CONTEXT_PARAM Handle = 0x80290203 + TBSIMP_E_TPM_ERROR Handle = 0x80290204 + TBSIMP_E_HASH_BAD_KEY Handle = 0x80290205 + TBSIMP_E_DUPLICATE_VHANDLE Handle = 0x80290206 + TBSIMP_E_INVALID_OUTPUT_POINTER Handle = 0x80290207 + TBSIMP_E_INVALID_PARAMETER Handle = 0x80290208 + TBSIMP_E_RPC_INIT_FAILED Handle = 0x80290209 + TBSIMP_E_SCHEDULER_NOT_RUNNING Handle = 0x8029020A + TBSIMP_E_COMMAND_CANCELED Handle = 0x8029020B + TBSIMP_E_OUT_OF_MEMORY Handle = 0x8029020C + TBSIMP_E_LIST_NO_MORE_ITEMS Handle = 0x8029020D + TBSIMP_E_LIST_NOT_FOUND Handle = 0x8029020E + TBSIMP_E_NOT_ENOUGH_SPACE Handle = 0x8029020F + TBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS Handle = 0x80290210 + TBSIMP_E_COMMAND_FAILED Handle = 0x80290211 + TBSIMP_E_UNKNOWN_ORDINAL Handle = 0x80290212 + TBSIMP_E_RESOURCE_EXPIRED Handle = 0x80290213 + TBSIMP_E_INVALID_RESOURCE Handle = 0x80290214 + TBSIMP_E_NOTHING_TO_UNLOAD Handle = 0x80290215 + TBSIMP_E_HASH_TABLE_FULL Handle = 0x80290216 + TBSIMP_E_TOO_MANY_TBS_CONTEXTS Handle = 0x80290217 + TBSIMP_E_TOO_MANY_RESOURCES Handle = 0x80290218 + TBSIMP_E_PPI_NOT_SUPPORTED Handle = 0x80290219 + TBSIMP_E_TPM_INCOMPATIBLE Handle = 0x8029021A + TBSIMP_E_NO_EVENT_LOG Handle = 0x8029021B + TPM_E_PPI_ACPI_FAILURE Handle = 0x80290300 + TPM_E_PPI_USER_ABORT Handle = 0x80290301 + TPM_E_PPI_BIOS_FAILURE Handle = 0x80290302 + TPM_E_PPI_NOT_SUPPORTED Handle = 0x80290303 + TPM_E_PPI_BLOCKED_IN_BIOS Handle = 0x80290304 + TPM_E_PCP_ERROR_MASK Handle = 0x80290400 + TPM_E_PCP_DEVICE_NOT_READY Handle = 0x80290401 + TPM_E_PCP_INVALID_HANDLE Handle = 0x80290402 + TPM_E_PCP_INVALID_PARAMETER Handle = 0x80290403 + TPM_E_PCP_FLAG_NOT_SUPPORTED Handle = 0x80290404 + TPM_E_PCP_NOT_SUPPORTED Handle = 0x80290405 + TPM_E_PCP_BUFFER_TOO_SMALL Handle = 0x80290406 + TPM_E_PCP_INTERNAL_ERROR Handle = 0x80290407 + TPM_E_PCP_AUTHENTICATION_FAILED Handle = 0x80290408 + TPM_E_PCP_AUTHENTICATION_IGNORED Handle = 0x80290409 + TPM_E_PCP_POLICY_NOT_FOUND Handle = 0x8029040A + TPM_E_PCP_PROFILE_NOT_FOUND Handle = 0x8029040B + TPM_E_PCP_VALIDATION_FAILED Handle = 0x8029040C + TPM_E_PCP_WRONG_PARENT Handle = 0x8029040E + TPM_E_KEY_NOT_LOADED Handle = 0x8029040F + TPM_E_NO_KEY_CERTIFICATION Handle = 0x80290410 + TPM_E_KEY_NOT_FINALIZED Handle = 0x80290411 + TPM_E_ATTESTATION_CHALLENGE_NOT_SET Handle = 0x80290412 + TPM_E_NOT_PCR_BOUND Handle = 0x80290413 + TPM_E_KEY_ALREADY_FINALIZED Handle = 0x80290414 + TPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED Handle = 0x80290415 + TPM_E_KEY_USAGE_POLICY_INVALID Handle = 0x80290416 + TPM_E_SOFT_KEY_ERROR Handle = 0x80290417 + TPM_E_KEY_NOT_AUTHENTICATED Handle = 0x80290418 + TPM_E_PCP_KEY_NOT_AIK Handle = 0x80290419 + TPM_E_KEY_NOT_SIGNING_KEY Handle = 0x8029041A + TPM_E_LOCKED_OUT Handle = 0x8029041B + TPM_E_CLAIM_TYPE_NOT_SUPPORTED Handle = 0x8029041C + TPM_E_VERSION_NOT_SUPPORTED Handle = 0x8029041D + TPM_E_BUFFER_LENGTH_MISMATCH Handle = 0x8029041E + TPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED Handle = 0x8029041F + TPM_E_PCP_TICKET_MISSING Handle = 0x80290420 + TPM_E_PCP_RAW_POLICY_NOT_SUPPORTED Handle = 0x80290421 + TPM_E_PCP_KEY_HANDLE_INVALIDATED Handle = 0x80290422 + TPM_E_PCP_UNSUPPORTED_PSS_SALT Handle = 0x40290423 + TPM_E_ZERO_EXHAUST_ENABLED Handle = 0x80290500 + PLA_E_DCS_NOT_FOUND Handle = 0x80300002 + PLA_E_DCS_IN_USE Handle = 0x803000AA + PLA_E_TOO_MANY_FOLDERS Handle = 0x80300045 + PLA_E_NO_MIN_DISK Handle = 0x80300070 + PLA_E_DCS_ALREADY_EXISTS Handle = 0x803000B7 + PLA_S_PROPERTY_IGNORED Handle = 0x00300100 + PLA_E_PROPERTY_CONFLICT Handle = 0x80300101 + PLA_E_DCS_SINGLETON_REQUIRED Handle = 0x80300102 + PLA_E_CREDENTIALS_REQUIRED Handle = 0x80300103 + PLA_E_DCS_NOT_RUNNING Handle = 0x80300104 + PLA_E_CONFLICT_INCL_EXCL_API Handle = 0x80300105 + PLA_E_NETWORK_EXE_NOT_VALID Handle = 0x80300106 + PLA_E_EXE_ALREADY_CONFIGURED Handle = 0x80300107 + PLA_E_EXE_PATH_NOT_VALID Handle = 0x80300108 + PLA_E_DC_ALREADY_EXISTS Handle = 0x80300109 + PLA_E_DCS_START_WAIT_TIMEOUT Handle = 0x8030010A + PLA_E_DC_START_WAIT_TIMEOUT Handle = 0x8030010B + PLA_E_REPORT_WAIT_TIMEOUT Handle = 0x8030010C + PLA_E_NO_DUPLICATES Handle = 0x8030010D + PLA_E_EXE_FULL_PATH_REQUIRED Handle = 0x8030010E + PLA_E_INVALID_SESSION_NAME Handle = 0x8030010F + PLA_E_PLA_CHANNEL_NOT_ENABLED Handle = 0x80300110 + PLA_E_TASKSCHED_CHANNEL_NOT_ENABLED Handle = 0x80300111 + PLA_E_RULES_MANAGER_FAILED Handle = 0x80300112 + PLA_E_CABAPI_FAILURE Handle = 0x80300113 + FVE_E_LOCKED_VOLUME Handle = 0x80310000 + FVE_E_NOT_ENCRYPTED Handle = 0x80310001 + FVE_E_NO_TPM_BIOS Handle = 0x80310002 + FVE_E_NO_MBR_METRIC Handle = 0x80310003 + FVE_E_NO_BOOTSECTOR_METRIC Handle = 0x80310004 + FVE_E_NO_BOOTMGR_METRIC Handle = 0x80310005 + FVE_E_WRONG_BOOTMGR Handle = 0x80310006 + FVE_E_SECURE_KEY_REQUIRED Handle = 0x80310007 + FVE_E_NOT_ACTIVATED Handle = 0x80310008 + FVE_E_ACTION_NOT_ALLOWED Handle = 0x80310009 + FVE_E_AD_SCHEMA_NOT_INSTALLED Handle = 0x8031000A + FVE_E_AD_INVALID_DATATYPE Handle = 0x8031000B + FVE_E_AD_INVALID_DATASIZE Handle = 0x8031000C + FVE_E_AD_NO_VALUES Handle = 0x8031000D + FVE_E_AD_ATTR_NOT_SET Handle = 0x8031000E + FVE_E_AD_GUID_NOT_FOUND Handle = 0x8031000F + FVE_E_BAD_INFORMATION Handle = 0x80310010 + FVE_E_TOO_SMALL Handle = 0x80310011 + FVE_E_SYSTEM_VOLUME Handle = 0x80310012 + FVE_E_FAILED_WRONG_FS Handle = 0x80310013 + FVE_E_BAD_PARTITION_SIZE Handle = 0x80310014 + FVE_E_NOT_SUPPORTED Handle = 0x80310015 + FVE_E_BAD_DATA Handle = 0x80310016 + FVE_E_VOLUME_NOT_BOUND Handle = 0x80310017 + FVE_E_TPM_NOT_OWNED Handle = 0x80310018 + FVE_E_NOT_DATA_VOLUME Handle = 0x80310019 + FVE_E_AD_INSUFFICIENT_BUFFER Handle = 0x8031001A + FVE_E_CONV_READ Handle = 0x8031001B + FVE_E_CONV_WRITE Handle = 0x8031001C + FVE_E_KEY_REQUIRED Handle = 0x8031001D + FVE_E_CLUSTERING_NOT_SUPPORTED Handle = 0x8031001E + FVE_E_VOLUME_BOUND_ALREADY Handle = 0x8031001F + FVE_E_OS_NOT_PROTECTED Handle = 0x80310020 + FVE_E_PROTECTION_DISABLED Handle = 0x80310021 + FVE_E_RECOVERY_KEY_REQUIRED Handle = 0x80310022 + FVE_E_FOREIGN_VOLUME Handle = 0x80310023 + FVE_E_OVERLAPPED_UPDATE Handle = 0x80310024 + FVE_E_TPM_SRK_AUTH_NOT_ZERO Handle = 0x80310025 + FVE_E_FAILED_SECTOR_SIZE Handle = 0x80310026 + FVE_E_FAILED_AUTHENTICATION Handle = 0x80310027 + FVE_E_NOT_OS_VOLUME Handle = 0x80310028 + FVE_E_AUTOUNLOCK_ENABLED Handle = 0x80310029 + FVE_E_WRONG_BOOTSECTOR Handle = 0x8031002A + FVE_E_WRONG_SYSTEM_FS Handle = 0x8031002B + FVE_E_POLICY_PASSWORD_REQUIRED Handle = 0x8031002C + FVE_E_CANNOT_SET_FVEK_ENCRYPTED Handle = 0x8031002D + FVE_E_CANNOT_ENCRYPT_NO_KEY Handle = 0x8031002E + FVE_E_BOOTABLE_CDDVD Handle = 0x80310030 + FVE_E_PROTECTOR_EXISTS Handle = 0x80310031 + FVE_E_RELATIVE_PATH Handle = 0x80310032 + FVE_E_PROTECTOR_NOT_FOUND Handle = 0x80310033 + FVE_E_INVALID_KEY_FORMAT Handle = 0x80310034 + FVE_E_INVALID_PASSWORD_FORMAT Handle = 0x80310035 + FVE_E_FIPS_RNG_CHECK_FAILED Handle = 0x80310036 + FVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD Handle = 0x80310037 + FVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT Handle = 0x80310038 + FVE_E_NOT_DECRYPTED Handle = 0x80310039 + FVE_E_INVALID_PROTECTOR_TYPE Handle = 0x8031003A + FVE_E_NO_PROTECTORS_TO_TEST Handle = 0x8031003B + FVE_E_KEYFILE_NOT_FOUND Handle = 0x8031003C + FVE_E_KEYFILE_INVALID Handle = 0x8031003D + FVE_E_KEYFILE_NO_VMK Handle = 0x8031003E + FVE_E_TPM_DISABLED Handle = 0x8031003F + FVE_E_NOT_ALLOWED_IN_SAFE_MODE Handle = 0x80310040 + FVE_E_TPM_INVALID_PCR Handle = 0x80310041 + FVE_E_TPM_NO_VMK Handle = 0x80310042 + FVE_E_PIN_INVALID Handle = 0x80310043 + FVE_E_AUTH_INVALID_APPLICATION Handle = 0x80310044 + FVE_E_AUTH_INVALID_CONFIG Handle = 0x80310045 + FVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED Handle = 0x80310046 + FVE_E_FS_NOT_EXTENDED Handle = 0x80310047 + FVE_E_FIRMWARE_TYPE_NOT_SUPPORTED Handle = 0x80310048 + FVE_E_NO_LICENSE Handle = 0x80310049 + FVE_E_NOT_ON_STACK Handle = 0x8031004A + FVE_E_FS_MOUNTED Handle = 0x8031004B + FVE_E_TOKEN_NOT_IMPERSONATED Handle = 0x8031004C + FVE_E_DRY_RUN_FAILED Handle = 0x8031004D + FVE_E_REBOOT_REQUIRED Handle = 0x8031004E + FVE_E_DEBUGGER_ENABLED Handle = 0x8031004F + FVE_E_RAW_ACCESS Handle = 0x80310050 + FVE_E_RAW_BLOCKED Handle = 0x80310051 + FVE_E_BCD_APPLICATIONS_PATH_INCORRECT Handle = 0x80310052 + FVE_E_NOT_ALLOWED_IN_VERSION Handle = 0x80310053 + FVE_E_NO_AUTOUNLOCK_MASTER_KEY Handle = 0x80310054 + FVE_E_MOR_FAILED Handle = 0x80310055 + FVE_E_HIDDEN_VOLUME Handle = 0x80310056 + FVE_E_TRANSIENT_STATE Handle = 0x80310057 + FVE_E_PUBKEY_NOT_ALLOWED Handle = 0x80310058 + FVE_E_VOLUME_HANDLE_OPEN Handle = 0x80310059 + FVE_E_NO_FEATURE_LICENSE Handle = 0x8031005A + FVE_E_INVALID_STARTUP_OPTIONS Handle = 0x8031005B + FVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED Handle = 0x8031005C + FVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED Handle = 0x8031005D + FVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED Handle = 0x8031005E + FVE_E_POLICY_RECOVERY_KEY_REQUIRED Handle = 0x8031005F + FVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED Handle = 0x80310060 + FVE_E_POLICY_STARTUP_PIN_REQUIRED Handle = 0x80310061 + FVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED Handle = 0x80310062 + FVE_E_POLICY_STARTUP_KEY_REQUIRED Handle = 0x80310063 + FVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED Handle = 0x80310064 + FVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED Handle = 0x80310065 + FVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED Handle = 0x80310066 + FVE_E_POLICY_STARTUP_TPM_REQUIRED Handle = 0x80310067 + FVE_E_POLICY_INVALID_PIN_LENGTH Handle = 0x80310068 + FVE_E_KEY_PROTECTOR_NOT_SUPPORTED Handle = 0x80310069 + FVE_E_POLICY_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006A + FVE_E_POLICY_PASSPHRASE_REQUIRED Handle = 0x8031006B + FVE_E_FIPS_PREVENTS_PASSPHRASE Handle = 0x8031006C + FVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED Handle = 0x8031006D + FVE_E_INVALID_BITLOCKER_OID Handle = 0x8031006E + FVE_E_VOLUME_TOO_SMALL Handle = 0x8031006F + FVE_E_DV_NOT_SUPPORTED_ON_FS Handle = 0x80310070 + FVE_E_DV_NOT_ALLOWED_BY_GP Handle = 0x80310071 + FVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED Handle = 0x80310072 + FVE_E_POLICY_USER_CERTIFICATE_REQUIRED Handle = 0x80310073 + FVE_E_POLICY_USER_CERT_MUST_BE_HW Handle = 0x80310074 + FVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310075 + FVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED Handle = 0x80310076 + FVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED Handle = 0x80310077 + FVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED Handle = 0x80310078 + FVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED Handle = 0x80310079 + FVE_E_POLICY_INVALID_PASSPHRASE_LENGTH Handle = 0x80310080 + FVE_E_POLICY_PASSPHRASE_TOO_SIMPLE Handle = 0x80310081 + FVE_E_RECOVERY_PARTITION Handle = 0x80310082 + FVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON Handle = 0x80310083 + FVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON Handle = 0x80310084 + FVE_E_NON_BITLOCKER_OID Handle = 0x80310085 + FVE_E_POLICY_PROHIBITS_SELFSIGNED Handle = 0x80310086 + FVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED Handle = 0x80310087 + FVE_E_CONV_RECOVERY_FAILED Handle = 0x80310088 + FVE_E_VIRTUALIZED_SPACE_TOO_BIG Handle = 0x80310089 + FVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON Handle = 0x80310090 + FVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON Handle = 0x80310091 + FVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON Handle = 0x80310092 + FVE_E_NON_BITLOCKER_KU Handle = 0x80310093 + FVE_E_PRIVATEKEY_AUTH_FAILED Handle = 0x80310094 + FVE_E_REMOVAL_OF_DRA_FAILED Handle = 0x80310095 + FVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME Handle = 0x80310096 + FVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME Handle = 0x80310097 + FVE_E_FIPS_HASH_KDF_NOT_ALLOWED Handle = 0x80310098 + FVE_E_ENH_PIN_INVALID Handle = 0x80310099 + FVE_E_INVALID_PIN_CHARS Handle = 0x8031009A + FVE_E_INVALID_DATUM_TYPE Handle = 0x8031009B + FVE_E_EFI_ONLY Handle = 0x8031009C + FVE_E_MULTIPLE_NKP_CERTS Handle = 0x8031009D + FVE_E_REMOVAL_OF_NKP_FAILED Handle = 0x8031009E + FVE_E_INVALID_NKP_CERT Handle = 0x8031009F + FVE_E_NO_EXISTING_PIN Handle = 0x803100A0 + FVE_E_PROTECTOR_CHANGE_PIN_MISMATCH Handle = 0x803100A1 + FVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100A2 + FVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED Handle = 0x803100A3 + FVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII Handle = 0x803100A4 + FVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A5 + FVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE Handle = 0x803100A6 + FVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE Handle = 0x803100A7 + FVE_E_NO_EXISTING_PASSPHRASE Handle = 0x803100A8 + FVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH Handle = 0x803100A9 + FVE_E_PASSPHRASE_TOO_LONG Handle = 0x803100AA + FVE_E_NO_PASSPHRASE_WITH_TPM Handle = 0x803100AB + FVE_E_NO_TPM_WITH_PASSPHRASE Handle = 0x803100AC + FVE_E_NOT_ALLOWED_ON_CSV_STACK Handle = 0x803100AD + FVE_E_NOT_ALLOWED_ON_CLUSTER Handle = 0x803100AE + FVE_E_EDRIVE_NO_FAILOVER_TO_SW Handle = 0x803100AF + FVE_E_EDRIVE_BAND_IN_USE Handle = 0x803100B0 + FVE_E_EDRIVE_DISALLOWED_BY_GP Handle = 0x803100B1 + FVE_E_EDRIVE_INCOMPATIBLE_VOLUME Handle = 0x803100B2 + FVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING Handle = 0x803100B3 + FVE_E_EDRIVE_DV_NOT_SUPPORTED Handle = 0x803100B4 + FVE_E_NO_PREBOOT_KEYBOARD_DETECTED Handle = 0x803100B5 + FVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED Handle = 0x803100B6 + FVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE Handle = 0x803100B7 + FVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE Handle = 0x803100B8 + FVE_E_WIPE_CANCEL_NOT_APPLICABLE Handle = 0x803100B9 + FVE_E_SECUREBOOT_DISABLED Handle = 0x803100BA + FVE_E_SECUREBOOT_CONFIGURATION_INVALID Handle = 0x803100BB + FVE_E_EDRIVE_DRY_RUN_FAILED Handle = 0x803100BC + FVE_E_SHADOW_COPY_PRESENT Handle = 0x803100BD + FVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS Handle = 0x803100BE + FVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE Handle = 0x803100BF + FVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED Handle = 0x803100C0 + FVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED Handle = 0x803100C1 + FVE_E_LIVEID_ACCOUNT_SUSPENDED Handle = 0x803100C2 + FVE_E_LIVEID_ACCOUNT_BLOCKED Handle = 0x803100C3 + FVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x803100C4 + FVE_E_DE_FIXED_DATA_NOT_SUPPORTED Handle = 0x803100C5 + FVE_E_DE_HARDWARE_NOT_COMPLIANT Handle = 0x803100C6 + FVE_E_DE_WINRE_NOT_CONFIGURED Handle = 0x803100C7 + FVE_E_DE_PROTECTION_SUSPENDED Handle = 0x803100C8 + FVE_E_DE_OS_VOLUME_NOT_PROTECTED Handle = 0x803100C9 + FVE_E_DE_DEVICE_LOCKEDOUT Handle = 0x803100CA + FVE_E_DE_PROTECTION_NOT_YET_ENABLED Handle = 0x803100CB + FVE_E_INVALID_PIN_CHARS_DETAILED Handle = 0x803100CC + FVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE Handle = 0x803100CD + FVE_E_DEVICELOCKOUT_COUNTER_MISMATCH Handle = 0x803100CE + FVE_E_BUFFER_TOO_LARGE Handle = 0x803100CF + FVE_E_NO_SUCH_CAPABILITY_ON_TARGET Handle = 0x803100D0 + FVE_E_DE_PREVENTED_FOR_OS Handle = 0x803100D1 + FVE_E_DE_VOLUME_OPTED_OUT Handle = 0x803100D2 + FVE_E_DE_VOLUME_NOT_SUPPORTED Handle = 0x803100D3 + FVE_E_EOW_NOT_SUPPORTED_IN_VERSION Handle = 0x803100D4 + FVE_E_ADBACKUP_NOT_ENABLED Handle = 0x803100D5 + FVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT Handle = 0x803100D6 + FVE_E_NOT_DE_VOLUME Handle = 0x803100D7 + FVE_E_PROTECTION_CANNOT_BE_DISABLED Handle = 0x803100D8 + FVE_E_OSV_KSR_NOT_ALLOWED Handle = 0x803100D9 + FWP_E_CALLOUT_NOT_FOUND Handle = 0x80320001 + FWP_E_CONDITION_NOT_FOUND Handle = 0x80320002 + FWP_E_FILTER_NOT_FOUND Handle = 0x80320003 + FWP_E_LAYER_NOT_FOUND Handle = 0x80320004 + FWP_E_PROVIDER_NOT_FOUND Handle = 0x80320005 + FWP_E_PROVIDER_CONTEXT_NOT_FOUND Handle = 0x80320006 + FWP_E_SUBLAYER_NOT_FOUND Handle = 0x80320007 + FWP_E_NOT_FOUND Handle = 0x80320008 + FWP_E_ALREADY_EXISTS Handle = 0x80320009 + FWP_E_IN_USE Handle = 0x8032000A + FWP_E_DYNAMIC_SESSION_IN_PROGRESS Handle = 0x8032000B + FWP_E_WRONG_SESSION Handle = 0x8032000C + FWP_E_NO_TXN_IN_PROGRESS Handle = 0x8032000D + FWP_E_TXN_IN_PROGRESS Handle = 0x8032000E + FWP_E_TXN_ABORTED Handle = 0x8032000F + FWP_E_SESSION_ABORTED Handle = 0x80320010 + FWP_E_INCOMPATIBLE_TXN Handle = 0x80320011 + FWP_E_TIMEOUT Handle = 0x80320012 + FWP_E_NET_EVENTS_DISABLED Handle = 0x80320013 + FWP_E_INCOMPATIBLE_LAYER Handle = 0x80320014 + FWP_E_KM_CLIENTS_ONLY Handle = 0x80320015 + FWP_E_LIFETIME_MISMATCH Handle = 0x80320016 + FWP_E_BUILTIN_OBJECT Handle = 0x80320017 + FWP_E_TOO_MANY_CALLOUTS Handle = 0x80320018 + FWP_E_NOTIFICATION_DROPPED Handle = 0x80320019 + FWP_E_TRAFFIC_MISMATCH Handle = 0x8032001A + FWP_E_INCOMPATIBLE_SA_STATE Handle = 0x8032001B + FWP_E_NULL_POINTER Handle = 0x8032001C + FWP_E_INVALID_ENUMERATOR Handle = 0x8032001D + FWP_E_INVALID_FLAGS Handle = 0x8032001E + FWP_E_INVALID_NET_MASK Handle = 0x8032001F + FWP_E_INVALID_RANGE Handle = 0x80320020 + FWP_E_INVALID_INTERVAL Handle = 0x80320021 + FWP_E_ZERO_LENGTH_ARRAY Handle = 0x80320022 + FWP_E_NULL_DISPLAY_NAME Handle = 0x80320023 + FWP_E_INVALID_ACTION_TYPE Handle = 0x80320024 + FWP_E_INVALID_WEIGHT Handle = 0x80320025 + FWP_E_MATCH_TYPE_MISMATCH Handle = 0x80320026 + FWP_E_TYPE_MISMATCH Handle = 0x80320027 + FWP_E_OUT_OF_BOUNDS Handle = 0x80320028 + FWP_E_RESERVED Handle = 0x80320029 + FWP_E_DUPLICATE_CONDITION Handle = 0x8032002A + FWP_E_DUPLICATE_KEYMOD Handle = 0x8032002B + FWP_E_ACTION_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002C + FWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER Handle = 0x8032002D + FWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER Handle = 0x8032002E + FWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT Handle = 0x8032002F + FWP_E_INCOMPATIBLE_AUTH_METHOD Handle = 0x80320030 + FWP_E_INCOMPATIBLE_DH_GROUP Handle = 0x80320031 + FWP_E_EM_NOT_SUPPORTED Handle = 0x80320032 + FWP_E_NEVER_MATCH Handle = 0x80320033 + FWP_E_PROVIDER_CONTEXT_MISMATCH Handle = 0x80320034 + FWP_E_INVALID_PARAMETER Handle = 0x80320035 + FWP_E_TOO_MANY_SUBLAYERS Handle = 0x80320036 + FWP_E_CALLOUT_NOTIFICATION_FAILED Handle = 0x80320037 + FWP_E_INVALID_AUTH_TRANSFORM Handle = 0x80320038 + FWP_E_INVALID_CIPHER_TRANSFORM Handle = 0x80320039 + FWP_E_INCOMPATIBLE_CIPHER_TRANSFORM Handle = 0x8032003A + FWP_E_INVALID_TRANSFORM_COMBINATION Handle = 0x8032003B + FWP_E_DUPLICATE_AUTH_METHOD Handle = 0x8032003C + FWP_E_INVALID_TUNNEL_ENDPOINT Handle = 0x8032003D + FWP_E_L2_DRIVER_NOT_READY Handle = 0x8032003E + FWP_E_KEY_DICTATOR_ALREADY_REGISTERED Handle = 0x8032003F + FWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL Handle = 0x80320040 + FWP_E_CONNECTIONS_DISABLED Handle = 0x80320041 + FWP_E_INVALID_DNS_NAME Handle = 0x80320042 + FWP_E_STILL_ON Handle = 0x80320043 + FWP_E_IKEEXT_NOT_RUNNING Handle = 0x80320044 + FWP_E_DROP_NOICMP Handle = 0x80320104 + WS_S_ASYNC Handle = 0x003D0000 + WS_S_END Handle = 0x003D0001 + WS_E_INVALID_FORMAT Handle = 0x803D0000 + WS_E_OBJECT_FAULTED Handle = 0x803D0001 + WS_E_NUMERIC_OVERFLOW Handle = 0x803D0002 + WS_E_INVALID_OPERATION Handle = 0x803D0003 + WS_E_OPERATION_ABORTED Handle = 0x803D0004 + WS_E_ENDPOINT_ACCESS_DENIED Handle = 0x803D0005 + WS_E_OPERATION_TIMED_OUT Handle = 0x803D0006 + WS_E_OPERATION_ABANDONED Handle = 0x803D0007 + WS_E_QUOTA_EXCEEDED Handle = 0x803D0008 + WS_E_NO_TRANSLATION_AVAILABLE Handle = 0x803D0009 + WS_E_SECURITY_VERIFICATION_FAILURE Handle = 0x803D000A + WS_E_ADDRESS_IN_USE Handle = 0x803D000B + WS_E_ADDRESS_NOT_AVAILABLE Handle = 0x803D000C + WS_E_ENDPOINT_NOT_FOUND Handle = 0x803D000D + WS_E_ENDPOINT_NOT_AVAILABLE Handle = 0x803D000E + WS_E_ENDPOINT_FAILURE Handle = 0x803D000F + WS_E_ENDPOINT_UNREACHABLE Handle = 0x803D0010 + WS_E_ENDPOINT_ACTION_NOT_SUPPORTED Handle = 0x803D0011 + WS_E_ENDPOINT_TOO_BUSY Handle = 0x803D0012 + WS_E_ENDPOINT_FAULT_RECEIVED Handle = 0x803D0013 + WS_E_ENDPOINT_DISCONNECTED Handle = 0x803D0014 + WS_E_PROXY_FAILURE Handle = 0x803D0015 + WS_E_PROXY_ACCESS_DENIED Handle = 0x803D0016 + WS_E_NOT_SUPPORTED Handle = 0x803D0017 + WS_E_PROXY_REQUIRES_BASIC_AUTH Handle = 0x803D0018 + WS_E_PROXY_REQUIRES_DIGEST_AUTH Handle = 0x803D0019 + WS_E_PROXY_REQUIRES_NTLM_AUTH Handle = 0x803D001A + WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001B + WS_E_SERVER_REQUIRES_BASIC_AUTH Handle = 0x803D001C + WS_E_SERVER_REQUIRES_DIGEST_AUTH Handle = 0x803D001D + WS_E_SERVER_REQUIRES_NTLM_AUTH Handle = 0x803D001E + WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH Handle = 0x803D001F + WS_E_INVALID_ENDPOINT_URL Handle = 0x803D0020 + WS_E_OTHER Handle = 0x803D0021 + WS_E_SECURITY_TOKEN_EXPIRED Handle = 0x803D0022 + WS_E_SECURITY_SYSTEM_FAILURE Handle = 0x803D0023 + ERROR_NDIS_INTERFACE_CLOSING syscall.Errno = 0x80340002 + ERROR_NDIS_BAD_VERSION syscall.Errno = 0x80340004 + ERROR_NDIS_BAD_CHARACTERISTICS syscall.Errno = 0x80340005 + ERROR_NDIS_ADAPTER_NOT_FOUND syscall.Errno = 0x80340006 + ERROR_NDIS_OPEN_FAILED syscall.Errno = 0x80340007 + ERROR_NDIS_DEVICE_FAILED syscall.Errno = 0x80340008 + ERROR_NDIS_MULTICAST_FULL syscall.Errno = 0x80340009 + ERROR_NDIS_MULTICAST_EXISTS syscall.Errno = 0x8034000A + ERROR_NDIS_MULTICAST_NOT_FOUND syscall.Errno = 0x8034000B + ERROR_NDIS_REQUEST_ABORTED syscall.Errno = 0x8034000C + ERROR_NDIS_RESET_IN_PROGRESS syscall.Errno = 0x8034000D + ERROR_NDIS_NOT_SUPPORTED syscall.Errno = 0x803400BB + ERROR_NDIS_INVALID_PACKET syscall.Errno = 0x8034000F + ERROR_NDIS_ADAPTER_NOT_READY syscall.Errno = 0x80340011 + ERROR_NDIS_INVALID_LENGTH syscall.Errno = 0x80340014 + ERROR_NDIS_INVALID_DATA syscall.Errno = 0x80340015 + ERROR_NDIS_BUFFER_TOO_SHORT syscall.Errno = 0x80340016 + ERROR_NDIS_INVALID_OID syscall.Errno = 0x80340017 + ERROR_NDIS_ADAPTER_REMOVED syscall.Errno = 0x80340018 + ERROR_NDIS_UNSUPPORTED_MEDIA syscall.Errno = 0x80340019 + ERROR_NDIS_GROUP_ADDRESS_IN_USE syscall.Errno = 0x8034001A + ERROR_NDIS_FILE_NOT_FOUND syscall.Errno = 0x8034001B + ERROR_NDIS_ERROR_READING_FILE syscall.Errno = 0x8034001C + ERROR_NDIS_ALREADY_MAPPED syscall.Errno = 0x8034001D + ERROR_NDIS_RESOURCE_CONFLICT syscall.Errno = 0x8034001E + ERROR_NDIS_MEDIA_DISCONNECTED syscall.Errno = 0x8034001F + ERROR_NDIS_INVALID_ADDRESS syscall.Errno = 0x80340022 + ERROR_NDIS_INVALID_DEVICE_REQUEST syscall.Errno = 0x80340010 + ERROR_NDIS_PAUSED syscall.Errno = 0x8034002A + ERROR_NDIS_INTERFACE_NOT_FOUND syscall.Errno = 0x8034002B + ERROR_NDIS_UNSUPPORTED_REVISION syscall.Errno = 0x8034002C + ERROR_NDIS_INVALID_PORT syscall.Errno = 0x8034002D + ERROR_NDIS_INVALID_PORT_STATE syscall.Errno = 0x8034002E + ERROR_NDIS_LOW_POWER_STATE syscall.Errno = 0x8034002F + ERROR_NDIS_REINIT_REQUIRED syscall.Errno = 0x80340030 + ERROR_NDIS_NO_QUEUES syscall.Errno = 0x80340031 + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED syscall.Errno = 0x80342000 + ERROR_NDIS_DOT11_MEDIA_IN_USE syscall.Errno = 0x80342001 + ERROR_NDIS_DOT11_POWER_STATE_INVALID syscall.Errno = 0x80342002 + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL syscall.Errno = 0x80342003 + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL syscall.Errno = 0x80342004 + ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342005 + ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE syscall.Errno = 0x80342006 + ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED syscall.Errno = 0x80342007 + ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED syscall.Errno = 0x80342008 + ERROR_NDIS_INDICATION_REQUIRED syscall.Errno = 0x00340001 + ERROR_NDIS_OFFLOAD_POLICY syscall.Errno = 0xC034100F + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED syscall.Errno = 0xC0341012 + ERROR_NDIS_OFFLOAD_PATH_REJECTED syscall.Errno = 0xC0341013 + ERROR_HV_INVALID_HYPERCALL_CODE syscall.Errno = 0xC0350002 + ERROR_HV_INVALID_HYPERCALL_INPUT syscall.Errno = 0xC0350003 + ERROR_HV_INVALID_ALIGNMENT syscall.Errno = 0xC0350004 + ERROR_HV_INVALID_PARAMETER syscall.Errno = 0xC0350005 + ERROR_HV_ACCESS_DENIED syscall.Errno = 0xC0350006 + ERROR_HV_INVALID_PARTITION_STATE syscall.Errno = 0xC0350007 + ERROR_HV_OPERATION_DENIED syscall.Errno = 0xC0350008 + ERROR_HV_UNKNOWN_PROPERTY syscall.Errno = 0xC0350009 + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE syscall.Errno = 0xC035000A + ERROR_HV_INSUFFICIENT_MEMORY syscall.Errno = 0xC035000B + ERROR_HV_PARTITION_TOO_DEEP syscall.Errno = 0xC035000C + ERROR_HV_INVALID_PARTITION_ID syscall.Errno = 0xC035000D + ERROR_HV_INVALID_VP_INDEX syscall.Errno = 0xC035000E + ERROR_HV_INVALID_PORT_ID syscall.Errno = 0xC0350011 + ERROR_HV_INVALID_CONNECTION_ID syscall.Errno = 0xC0350012 + ERROR_HV_INSUFFICIENT_BUFFERS syscall.Errno = 0xC0350013 + ERROR_HV_NOT_ACKNOWLEDGED syscall.Errno = 0xC0350014 + ERROR_HV_INVALID_VP_STATE syscall.Errno = 0xC0350015 + ERROR_HV_ACKNOWLEDGED syscall.Errno = 0xC0350016 + ERROR_HV_INVALID_SAVE_RESTORE_STATE syscall.Errno = 0xC0350017 + ERROR_HV_INVALID_SYNIC_STATE syscall.Errno = 0xC0350018 + ERROR_HV_OBJECT_IN_USE syscall.Errno = 0xC0350019 + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO syscall.Errno = 0xC035001A + ERROR_HV_NO_DATA syscall.Errno = 0xC035001B + ERROR_HV_INACTIVE syscall.Errno = 0xC035001C + ERROR_HV_NO_RESOURCES syscall.Errno = 0xC035001D + ERROR_HV_FEATURE_UNAVAILABLE syscall.Errno = 0xC035001E + ERROR_HV_INSUFFICIENT_BUFFER syscall.Errno = 0xC0350033 + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS syscall.Errno = 0xC0350038 + ERROR_HV_CPUID_FEATURE_VALIDATION syscall.Errno = 0xC035003C + ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION syscall.Errno = 0xC035003D + ERROR_HV_PROCESSOR_STARTUP_TIMEOUT syscall.Errno = 0xC035003E + ERROR_HV_SMX_ENABLED syscall.Errno = 0xC035003F + ERROR_HV_INVALID_LP_INDEX syscall.Errno = 0xC0350041 + ERROR_HV_INVALID_REGISTER_VALUE syscall.Errno = 0xC0350050 + ERROR_HV_INVALID_VTL_STATE syscall.Errno = 0xC0350051 + ERROR_HV_NX_NOT_DETECTED syscall.Errno = 0xC0350055 + ERROR_HV_INVALID_DEVICE_ID syscall.Errno = 0xC0350057 + ERROR_HV_INVALID_DEVICE_STATE syscall.Errno = 0xC0350058 + ERROR_HV_PENDING_PAGE_REQUESTS syscall.Errno = 0x00350059 + ERROR_HV_PAGE_REQUEST_INVALID syscall.Errno = 0xC0350060 + ERROR_HV_INVALID_CPU_GROUP_ID syscall.Errno = 0xC035006F + ERROR_HV_INVALID_CPU_GROUP_STATE syscall.Errno = 0xC0350070 + ERROR_HV_OPERATION_FAILED syscall.Errno = 0xC0350071 + ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE syscall.Errno = 0xC0350072 + ERROR_HV_INSUFFICIENT_ROOT_MEMORY syscall.Errno = 0xC0350073 + ERROR_HV_NOT_PRESENT syscall.Errno = 0xC0351000 + ERROR_VID_DUPLICATE_HANDLER syscall.Errno = 0xC0370001 + ERROR_VID_TOO_MANY_HANDLERS syscall.Errno = 0xC0370002 + ERROR_VID_QUEUE_FULL syscall.Errno = 0xC0370003 + ERROR_VID_HANDLER_NOT_PRESENT syscall.Errno = 0xC0370004 + ERROR_VID_INVALID_OBJECT_NAME syscall.Errno = 0xC0370005 + ERROR_VID_PARTITION_NAME_TOO_LONG syscall.Errno = 0xC0370006 + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG syscall.Errno = 0xC0370007 + ERROR_VID_PARTITION_ALREADY_EXISTS syscall.Errno = 0xC0370008 + ERROR_VID_PARTITION_DOES_NOT_EXIST syscall.Errno = 0xC0370009 + ERROR_VID_PARTITION_NAME_NOT_FOUND syscall.Errno = 0xC037000A + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS syscall.Errno = 0xC037000B + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT syscall.Errno = 0xC037000C + ERROR_VID_MB_STILL_REFERENCED syscall.Errno = 0xC037000D + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED syscall.Errno = 0xC037000E + ERROR_VID_INVALID_NUMA_SETTINGS syscall.Errno = 0xC037000F + ERROR_VID_INVALID_NUMA_NODE_INDEX syscall.Errno = 0xC0370010 + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED syscall.Errno = 0xC0370011 + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE syscall.Errno = 0xC0370012 + ERROR_VID_PAGE_RANGE_OVERFLOW syscall.Errno = 0xC0370013 + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE syscall.Errno = 0xC0370014 + ERROR_VID_INVALID_GPA_RANGE_HANDLE syscall.Errno = 0xC0370015 + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE syscall.Errno = 0xC0370016 + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED syscall.Errno = 0xC0370017 + ERROR_VID_INVALID_PPM_HANDLE syscall.Errno = 0xC0370018 + ERROR_VID_MBPS_ARE_LOCKED syscall.Errno = 0xC0370019 + ERROR_VID_MESSAGE_QUEUE_CLOSED syscall.Errno = 0xC037001A + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED syscall.Errno = 0xC037001B + ERROR_VID_STOP_PENDING syscall.Errno = 0xC037001C + ERROR_VID_INVALID_PROCESSOR_STATE syscall.Errno = 0xC037001D + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT syscall.Errno = 0xC037001E + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED syscall.Errno = 0xC037001F + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET syscall.Errno = 0xC0370020 + ERROR_VID_MMIO_RANGE_DESTROYED syscall.Errno = 0xC0370021 + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET syscall.Errno = 0xC0370022 + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED syscall.Errno = 0xC0370023 + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL syscall.Errno = 0xC0370024 + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE syscall.Errno = 0xC0370025 + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT syscall.Errno = 0xC0370026 + ERROR_VID_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370027 + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM syscall.Errno = 0xC0370028 + ERROR_VID_SAVED_STATE_INCOMPATIBLE syscall.Errno = 0xC0370029 + ERROR_VID_VTL_ACCESS_DENIED syscall.Errno = 0xC037002A + ERROR_VMCOMPUTE_TERMINATED_DURING_START syscall.Errno = 0xC0370100 + ERROR_VMCOMPUTE_IMAGE_MISMATCH syscall.Errno = 0xC0370101 + ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED syscall.Errno = 0xC0370102 + ERROR_VMCOMPUTE_OPERATION_PENDING syscall.Errno = 0xC0370103 + ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS syscall.Errno = 0xC0370104 + ERROR_VMCOMPUTE_INVALID_STATE syscall.Errno = 0xC0370105 + ERROR_VMCOMPUTE_UNEXPECTED_EXIT syscall.Errno = 0xC0370106 + ERROR_VMCOMPUTE_TERMINATED syscall.Errno = 0xC0370107 + ERROR_VMCOMPUTE_CONNECT_FAILED syscall.Errno = 0xC0370108 + ERROR_VMCOMPUTE_TIMEOUT syscall.Errno = 0xC0370109 + ERROR_VMCOMPUTE_CONNECTION_CLOSED syscall.Errno = 0xC037010A + ERROR_VMCOMPUTE_UNKNOWN_MESSAGE syscall.Errno = 0xC037010B + ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION syscall.Errno = 0xC037010C + ERROR_VMCOMPUTE_INVALID_JSON syscall.Errno = 0xC037010D + ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND syscall.Errno = 0xC037010E + ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS syscall.Errno = 0xC037010F + ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED syscall.Errno = 0xC0370110 + ERROR_VMCOMPUTE_PROTOCOL_ERROR syscall.Errno = 0xC0370111 + ERROR_VMCOMPUTE_INVALID_LAYER syscall.Errno = 0xC0370112 + ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED syscall.Errno = 0xC0370113 + HCS_E_TERMINATED_DURING_START Handle = 0x80370100 + HCS_E_IMAGE_MISMATCH Handle = 0x80370101 + HCS_E_HYPERV_NOT_INSTALLED Handle = 0x80370102 + HCS_E_INVALID_STATE Handle = 0x80370105 + HCS_E_UNEXPECTED_EXIT Handle = 0x80370106 + HCS_E_TERMINATED Handle = 0x80370107 + HCS_E_CONNECT_FAILED Handle = 0x80370108 + HCS_E_CONNECTION_TIMEOUT Handle = 0x80370109 + HCS_E_CONNECTION_CLOSED Handle = 0x8037010A + HCS_E_UNKNOWN_MESSAGE Handle = 0x8037010B + HCS_E_UNSUPPORTED_PROTOCOL_VERSION Handle = 0x8037010C + HCS_E_INVALID_JSON Handle = 0x8037010D + HCS_E_SYSTEM_NOT_FOUND Handle = 0x8037010E + HCS_E_SYSTEM_ALREADY_EXISTS Handle = 0x8037010F + HCS_E_SYSTEM_ALREADY_STOPPED Handle = 0x80370110 + HCS_E_PROTOCOL_ERROR Handle = 0x80370111 + HCS_E_INVALID_LAYER Handle = 0x80370112 + HCS_E_WINDOWS_INSIDER_REQUIRED Handle = 0x80370113 + HCS_E_SERVICE_NOT_AVAILABLE Handle = 0x80370114 + HCS_E_OPERATION_NOT_STARTED Handle = 0x80370115 + HCS_E_OPERATION_ALREADY_STARTED Handle = 0x80370116 + HCS_E_OPERATION_PENDING Handle = 0x80370117 + HCS_E_OPERATION_TIMEOUT Handle = 0x80370118 + HCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET Handle = 0x80370119 + HCS_E_OPERATION_RESULT_ALLOCATION_FAILED Handle = 0x8037011A + HCS_E_ACCESS_DENIED Handle = 0x8037011B + HCS_E_GUEST_CRITICAL_ERROR Handle = 0x8037011C + ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND syscall.Errno = 0xC0370200 + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED syscall.Errno = 0x80370001 + WHV_E_UNKNOWN_CAPABILITY Handle = 0x80370300 + WHV_E_INSUFFICIENT_BUFFER Handle = 0x80370301 + WHV_E_UNKNOWN_PROPERTY Handle = 0x80370302 + WHV_E_UNSUPPORTED_HYPERVISOR_CONFIG Handle = 0x80370303 + WHV_E_INVALID_PARTITION_CONFIG Handle = 0x80370304 + WHV_E_GPA_RANGE_NOT_FOUND Handle = 0x80370305 + WHV_E_VP_ALREADY_EXISTS Handle = 0x80370306 + WHV_E_VP_DOES_NOT_EXIST Handle = 0x80370307 + WHV_E_INVALID_VP_STATE Handle = 0x80370308 + WHV_E_INVALID_VP_REGISTER_NAME Handle = 0x80370309 + ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND syscall.Errno = 0xC0370400 + ERROR_VSMB_SAVED_STATE_CORRUPT syscall.Errno = 0xC0370401 + ERROR_VOLMGR_INCOMPLETE_REGENERATION syscall.Errno = 0x80380001 + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION syscall.Errno = 0x80380002 + ERROR_VOLMGR_DATABASE_FULL syscall.Errno = 0xC0380001 + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED syscall.Errno = 0xC0380002 + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC syscall.Errno = 0xC0380003 + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED syscall.Errno = 0xC0380004 + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME syscall.Errno = 0xC0380005 + ERROR_VOLMGR_DISK_DUPLICATE syscall.Errno = 0xC0380006 + ERROR_VOLMGR_DISK_DYNAMIC syscall.Errno = 0xC0380007 + ERROR_VOLMGR_DISK_ID_INVALID syscall.Errno = 0xC0380008 + ERROR_VOLMGR_DISK_INVALID syscall.Errno = 0xC0380009 + ERROR_VOLMGR_DISK_LAST_VOTER syscall.Errno = 0xC038000A + ERROR_VOLMGR_DISK_LAYOUT_INVALID syscall.Errno = 0xC038000B + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS syscall.Errno = 0xC038000C + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED syscall.Errno = 0xC038000D + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL syscall.Errno = 0xC038000E + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS syscall.Errno = 0xC038000F + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS syscall.Errno = 0xC0380010 + ERROR_VOLMGR_DISK_MISSING syscall.Errno = 0xC0380011 + ERROR_VOLMGR_DISK_NOT_EMPTY syscall.Errno = 0xC0380012 + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE syscall.Errno = 0xC0380013 + ERROR_VOLMGR_DISK_REVECTORING_FAILED syscall.Errno = 0xC0380014 + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID syscall.Errno = 0xC0380015 + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED syscall.Errno = 0xC0380016 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS syscall.Errno = 0xC0380017 + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES syscall.Errno = 0xC0380018 + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED syscall.Errno = 0xC0380019 + ERROR_VOLMGR_EXTENT_ALREADY_USED syscall.Errno = 0xC038001A + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS syscall.Errno = 0xC038001B + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION syscall.Errno = 0xC038001C + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED syscall.Errno = 0xC038001D + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION syscall.Errno = 0xC038001E + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH syscall.Errno = 0xC038001F + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED syscall.Errno = 0xC0380020 + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID syscall.Errno = 0xC0380021 + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS syscall.Errno = 0xC0380022 + ERROR_VOLMGR_MEMBER_IN_SYNC syscall.Errno = 0xC0380023 + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE syscall.Errno = 0xC0380024 + ERROR_VOLMGR_MEMBER_INDEX_INVALID syscall.Errno = 0xC0380025 + ERROR_VOLMGR_MEMBER_MISSING syscall.Errno = 0xC0380026 + ERROR_VOLMGR_MEMBER_NOT_DETACHED syscall.Errno = 0xC0380027 + ERROR_VOLMGR_MEMBER_REGENERATING syscall.Errno = 0xC0380028 + ERROR_VOLMGR_ALL_DISKS_FAILED syscall.Errno = 0xC0380029 + ERROR_VOLMGR_NO_REGISTERED_USERS syscall.Errno = 0xC038002A + ERROR_VOLMGR_NO_SUCH_USER syscall.Errno = 0xC038002B + ERROR_VOLMGR_NOTIFICATION_RESET syscall.Errno = 0xC038002C + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID syscall.Errno = 0xC038002D + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID syscall.Errno = 0xC038002E + ERROR_VOLMGR_PACK_DUPLICATE syscall.Errno = 0xC038002F + ERROR_VOLMGR_PACK_ID_INVALID syscall.Errno = 0xC0380030 + ERROR_VOLMGR_PACK_INVALID syscall.Errno = 0xC0380031 + ERROR_VOLMGR_PACK_NAME_INVALID syscall.Errno = 0xC0380032 + ERROR_VOLMGR_PACK_OFFLINE syscall.Errno = 0xC0380033 + ERROR_VOLMGR_PACK_HAS_QUORUM syscall.Errno = 0xC0380034 + ERROR_VOLMGR_PACK_WITHOUT_QUORUM syscall.Errno = 0xC0380035 + ERROR_VOLMGR_PARTITION_STYLE_INVALID syscall.Errno = 0xC0380036 + ERROR_VOLMGR_PARTITION_UPDATE_FAILED syscall.Errno = 0xC0380037 + ERROR_VOLMGR_PLEX_IN_SYNC syscall.Errno = 0xC0380038 + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE syscall.Errno = 0xC0380039 + ERROR_VOLMGR_PLEX_INDEX_INVALID syscall.Errno = 0xC038003A + ERROR_VOLMGR_PLEX_LAST_ACTIVE syscall.Errno = 0xC038003B + ERROR_VOLMGR_PLEX_MISSING syscall.Errno = 0xC038003C + ERROR_VOLMGR_PLEX_REGENERATING syscall.Errno = 0xC038003D + ERROR_VOLMGR_PLEX_TYPE_INVALID syscall.Errno = 0xC038003E + ERROR_VOLMGR_PLEX_NOT_RAID5 syscall.Errno = 0xC038003F + ERROR_VOLMGR_PLEX_NOT_SIMPLE syscall.Errno = 0xC0380040 + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID syscall.Errno = 0xC0380041 + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS syscall.Errno = 0xC0380042 + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS syscall.Errno = 0xC0380043 + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE syscall.Errno = 0xC0380044 + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK syscall.Errno = 0xC0380045 + ERROR_VOLMGR_VOLUME_ID_INVALID syscall.Errno = 0xC0380046 + ERROR_VOLMGR_VOLUME_LENGTH_INVALID syscall.Errno = 0xC0380047 + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE syscall.Errno = 0xC0380048 + ERROR_VOLMGR_VOLUME_NOT_MIRRORED syscall.Errno = 0xC0380049 + ERROR_VOLMGR_VOLUME_NOT_RETAINED syscall.Errno = 0xC038004A + ERROR_VOLMGR_VOLUME_OFFLINE syscall.Errno = 0xC038004B + ERROR_VOLMGR_VOLUME_RETAINED syscall.Errno = 0xC038004C + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID syscall.Errno = 0xC038004D + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE syscall.Errno = 0xC038004E + ERROR_VOLMGR_BAD_BOOT_DISK syscall.Errno = 0xC038004F + ERROR_VOLMGR_PACK_CONFIG_OFFLINE syscall.Errno = 0xC0380050 + ERROR_VOLMGR_PACK_CONFIG_ONLINE syscall.Errno = 0xC0380051 + ERROR_VOLMGR_NOT_PRIMARY_PACK syscall.Errno = 0xC0380052 + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED syscall.Errno = 0xC0380053 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID syscall.Errno = 0xC0380054 + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID syscall.Errno = 0xC0380055 + ERROR_VOLMGR_VOLUME_MIRRORED syscall.Errno = 0xC0380056 + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED syscall.Errno = 0xC0380057 + ERROR_VOLMGR_NO_VALID_LOG_COPIES syscall.Errno = 0xC0380058 + ERROR_VOLMGR_PRIMARY_PACK_PRESENT syscall.Errno = 0xC0380059 + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID syscall.Errno = 0xC038005A + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED syscall.Errno = 0xC038005B + ERROR_VOLMGR_RAID5_NOT_SUPPORTED syscall.Errno = 0xC038005C + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED syscall.Errno = 0x80390001 + ERROR_BCD_TOO_MANY_ELEMENTS syscall.Errno = 0xC0390002 + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED syscall.Errno = 0x80390003 + ERROR_VHD_DRIVE_FOOTER_MISSING syscall.Errno = 0xC03A0001 + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0002 + ERROR_VHD_DRIVE_FOOTER_CORRUPT syscall.Errno = 0xC03A0003 + ERROR_VHD_FORMAT_UNKNOWN syscall.Errno = 0xC03A0004 + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0005 + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH syscall.Errno = 0xC03A0006 + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION syscall.Errno = 0xC03A0007 + ERROR_VHD_SPARSE_HEADER_CORRUPT syscall.Errno = 0xC03A0008 + ERROR_VHD_BLOCK_ALLOCATION_FAILURE syscall.Errno = 0xC03A0009 + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT syscall.Errno = 0xC03A000A + ERROR_VHD_INVALID_BLOCK_SIZE syscall.Errno = 0xC03A000B + ERROR_VHD_BITMAP_MISMATCH syscall.Errno = 0xC03A000C + ERROR_VHD_PARENT_VHD_NOT_FOUND syscall.Errno = 0xC03A000D + ERROR_VHD_CHILD_PARENT_ID_MISMATCH syscall.Errno = 0xC03A000E + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH syscall.Errno = 0xC03A000F + ERROR_VHD_METADATA_READ_FAILURE syscall.Errno = 0xC03A0010 + ERROR_VHD_METADATA_WRITE_FAILURE syscall.Errno = 0xC03A0011 + ERROR_VHD_INVALID_SIZE syscall.Errno = 0xC03A0012 + ERROR_VHD_INVALID_FILE_SIZE syscall.Errno = 0xC03A0013 + ERROR_VIRTDISK_PROVIDER_NOT_FOUND syscall.Errno = 0xC03A0014 + ERROR_VIRTDISK_NOT_VIRTUAL_DISK syscall.Errno = 0xC03A0015 + ERROR_VHD_PARENT_VHD_ACCESS_DENIED syscall.Errno = 0xC03A0016 + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH syscall.Errno = 0xC03A0017 + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED syscall.Errno = 0xC03A0018 + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT syscall.Errno = 0xC03A0019 + ERROR_VIRTUAL_DISK_LIMITATION syscall.Errno = 0xC03A001A + ERROR_VHD_INVALID_TYPE syscall.Errno = 0xC03A001B + ERROR_VHD_INVALID_STATE syscall.Errno = 0xC03A001C + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE syscall.Errno = 0xC03A001D + ERROR_VIRTDISK_DISK_ALREADY_OWNED syscall.Errno = 0xC03A001E + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE syscall.Errno = 0xC03A001F + ERROR_CTLOG_TRACKING_NOT_INITIALIZED syscall.Errno = 0xC03A0020 + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE syscall.Errno = 0xC03A0021 + ERROR_CTLOG_VHD_CHANGED_OFFLINE syscall.Errno = 0xC03A0022 + ERROR_CTLOG_INVALID_TRACKING_STATE syscall.Errno = 0xC03A0023 + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE syscall.Errno = 0xC03A0024 + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA syscall.Errno = 0xC03A0025 + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0026 + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE syscall.Errno = 0xC03A0027 + ERROR_VHD_METADATA_FULL syscall.Errno = 0xC03A0028 + ERROR_VHD_INVALID_CHANGE_TRACKING_ID syscall.Errno = 0xC03A0029 + ERROR_VHD_CHANGE_TRACKING_DISABLED syscall.Errno = 0xC03A002A + ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION syscall.Errno = 0xC03A0030 + ERROR_QUERY_STORAGE_ERROR syscall.Errno = 0x803A0001 + HCN_E_NETWORK_NOT_FOUND Handle = 0x803B0001 + HCN_E_ENDPOINT_NOT_FOUND Handle = 0x803B0002 + HCN_E_LAYER_NOT_FOUND Handle = 0x803B0003 + HCN_E_SWITCH_NOT_FOUND Handle = 0x803B0004 + HCN_E_SUBNET_NOT_FOUND Handle = 0x803B0005 + HCN_E_ADAPTER_NOT_FOUND Handle = 0x803B0006 + HCN_E_PORT_NOT_FOUND Handle = 0x803B0007 + HCN_E_POLICY_NOT_FOUND Handle = 0x803B0008 + HCN_E_VFP_PORTSETTING_NOT_FOUND Handle = 0x803B0009 + HCN_E_INVALID_NETWORK Handle = 0x803B000A + HCN_E_INVALID_NETWORK_TYPE Handle = 0x803B000B + HCN_E_INVALID_ENDPOINT Handle = 0x803B000C + HCN_E_INVALID_POLICY Handle = 0x803B000D + HCN_E_INVALID_POLICY_TYPE Handle = 0x803B000E + HCN_E_INVALID_REMOTE_ENDPOINT_OPERATION Handle = 0x803B000F + HCN_E_NETWORK_ALREADY_EXISTS Handle = 0x803B0010 + HCN_E_LAYER_ALREADY_EXISTS Handle = 0x803B0011 + HCN_E_POLICY_ALREADY_EXISTS Handle = 0x803B0012 + HCN_E_PORT_ALREADY_EXISTS Handle = 0x803B0013 + HCN_E_ENDPOINT_ALREADY_ATTACHED Handle = 0x803B0014 + HCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0015 + HCN_E_MAPPING_NOT_SUPPORTED Handle = 0x803B0016 + HCN_E_DEGRADED_OPERATION Handle = 0x803B0017 + HCN_E_SHARED_SWITCH_MODIFICATION Handle = 0x803B0018 + HCN_E_GUID_CONVERSION_FAILURE Handle = 0x803B0019 + HCN_E_REGKEY_FAILURE Handle = 0x803B001A + HCN_E_INVALID_JSON Handle = 0x803B001B + HCN_E_INVALID_JSON_REFERENCE Handle = 0x803B001C + HCN_E_ENDPOINT_SHARING_DISABLED Handle = 0x803B001D + HCN_E_INVALID_IP Handle = 0x803B001E + HCN_E_SWITCH_EXTENSION_NOT_FOUND Handle = 0x803B001F + HCN_E_MANAGER_STOPPED Handle = 0x803B0020 + GCN_E_MODULE_NOT_FOUND Handle = 0x803B0021 + GCN_E_NO_REQUEST_HANDLERS Handle = 0x803B0022 + GCN_E_REQUEST_UNSUPPORTED Handle = 0x803B0023 + GCN_E_RUNTIMEKEYS_FAILED Handle = 0x803B0024 + GCN_E_NETADAPTER_TIMEOUT Handle = 0x803B0025 + GCN_E_NETADAPTER_NOT_FOUND Handle = 0x803B0026 + GCN_E_NETCOMPARTMENT_NOT_FOUND Handle = 0x803B0027 + GCN_E_NETINTERFACE_NOT_FOUND Handle = 0x803B0028 + GCN_E_DEFAULTNAMESPACE_EXISTS Handle = 0x803B0029 + SDIAG_E_CANCELLED syscall.Errno = 0x803C0100 + SDIAG_E_SCRIPT syscall.Errno = 0x803C0101 + SDIAG_E_POWERSHELL syscall.Errno = 0x803C0102 + SDIAG_E_MANAGEDHOST syscall.Errno = 0x803C0103 + SDIAG_E_NOVERIFIER syscall.Errno = 0x803C0104 + SDIAG_S_CANNOTRUN syscall.Errno = 0x003C0105 + SDIAG_E_DISABLED syscall.Errno = 0x803C0106 + SDIAG_E_TRUST syscall.Errno = 0x803C0107 + SDIAG_E_CANNOTRUN syscall.Errno = 0x803C0108 + SDIAG_E_VERSION syscall.Errno = 0x803C0109 + SDIAG_E_RESOURCE syscall.Errno = 0x803C010A + SDIAG_E_ROOTCAUSE syscall.Errno = 0x803C010B + WPN_E_CHANNEL_CLOSED Handle = 0x803E0100 + WPN_E_CHANNEL_REQUEST_NOT_COMPLETE Handle = 0x803E0101 + WPN_E_INVALID_APP Handle = 0x803E0102 + WPN_E_OUTSTANDING_CHANNEL_REQUEST Handle = 0x803E0103 + WPN_E_DUPLICATE_CHANNEL Handle = 0x803E0104 + WPN_E_PLATFORM_UNAVAILABLE Handle = 0x803E0105 + WPN_E_NOTIFICATION_POSTED Handle = 0x803E0106 + WPN_E_NOTIFICATION_HIDDEN Handle = 0x803E0107 + WPN_E_NOTIFICATION_NOT_POSTED Handle = 0x803E0108 + WPN_E_CLOUD_DISABLED Handle = 0x803E0109 + WPN_E_CLOUD_INCAPABLE Handle = 0x803E0110 + WPN_E_CLOUD_AUTH_UNAVAILABLE Handle = 0x803E011A + WPN_E_CLOUD_SERVICE_UNAVAILABLE Handle = 0x803E011B + WPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION Handle = 0x803E011C + WPN_E_NOTIFICATION_DISABLED Handle = 0x803E0111 + WPN_E_NOTIFICATION_INCAPABLE Handle = 0x803E0112 + WPN_E_INTERNET_INCAPABLE Handle = 0x803E0113 + WPN_E_NOTIFICATION_TYPE_DISABLED Handle = 0x803E0114 + WPN_E_NOTIFICATION_SIZE Handle = 0x803E0115 + WPN_E_TAG_SIZE Handle = 0x803E0116 + WPN_E_ACCESS_DENIED Handle = 0x803E0117 + WPN_E_DUPLICATE_REGISTRATION Handle = 0x803E0118 + WPN_E_PUSH_NOTIFICATION_INCAPABLE Handle = 0x803E0119 + WPN_E_DEV_ID_SIZE Handle = 0x803E0120 + WPN_E_TAG_ALPHANUMERIC Handle = 0x803E012A + WPN_E_INVALID_HTTP_STATUS_CODE Handle = 0x803E012B + WPN_E_OUT_OF_SESSION Handle = 0x803E0200 + WPN_E_POWER_SAVE Handle = 0x803E0201 + WPN_E_IMAGE_NOT_FOUND_IN_CACHE Handle = 0x803E0202 + WPN_E_ALL_URL_NOT_COMPLETED Handle = 0x803E0203 + WPN_E_INVALID_CLOUD_IMAGE Handle = 0x803E0204 + WPN_E_NOTIFICATION_ID_MATCHED Handle = 0x803E0205 + WPN_E_CALLBACK_ALREADY_REGISTERED Handle = 0x803E0206 + WPN_E_TOAST_NOTIFICATION_DROPPED Handle = 0x803E0207 + WPN_E_STORAGE_LOCKED Handle = 0x803E0208 + WPN_E_GROUP_SIZE Handle = 0x803E0209 + WPN_E_GROUP_ALPHANUMERIC Handle = 0x803E020A + WPN_E_CLOUD_DISABLED_FOR_APP Handle = 0x803E020B + E_MBN_CONTEXT_NOT_ACTIVATED Handle = 0x80548201 + E_MBN_BAD_SIM Handle = 0x80548202 + E_MBN_DATA_CLASS_NOT_AVAILABLE Handle = 0x80548203 + E_MBN_INVALID_ACCESS_STRING Handle = 0x80548204 + E_MBN_MAX_ACTIVATED_CONTEXTS Handle = 0x80548205 + E_MBN_PACKET_SVC_DETACHED Handle = 0x80548206 + E_MBN_PROVIDER_NOT_VISIBLE Handle = 0x80548207 + E_MBN_RADIO_POWER_OFF Handle = 0x80548208 + E_MBN_SERVICE_NOT_ACTIVATED Handle = 0x80548209 + E_MBN_SIM_NOT_INSERTED Handle = 0x8054820A + E_MBN_VOICE_CALL_IN_PROGRESS Handle = 0x8054820B + E_MBN_INVALID_CACHE Handle = 0x8054820C + E_MBN_NOT_REGISTERED Handle = 0x8054820D + E_MBN_PROVIDERS_NOT_FOUND Handle = 0x8054820E + E_MBN_PIN_NOT_SUPPORTED Handle = 0x8054820F + E_MBN_PIN_REQUIRED Handle = 0x80548210 + E_MBN_PIN_DISABLED Handle = 0x80548211 + E_MBN_FAILURE Handle = 0x80548212 + E_MBN_INVALID_PROFILE Handle = 0x80548218 + E_MBN_DEFAULT_PROFILE_EXIST Handle = 0x80548219 + E_MBN_SMS_ENCODING_NOT_SUPPORTED Handle = 0x80548220 + E_MBN_SMS_FILTER_NOT_SUPPORTED Handle = 0x80548221 + E_MBN_SMS_INVALID_MEMORY_INDEX Handle = 0x80548222 + E_MBN_SMS_LANG_NOT_SUPPORTED Handle = 0x80548223 + E_MBN_SMS_MEMORY_FAILURE Handle = 0x80548224 + E_MBN_SMS_NETWORK_TIMEOUT Handle = 0x80548225 + E_MBN_SMS_UNKNOWN_SMSC_ADDRESS Handle = 0x80548226 + E_MBN_SMS_FORMAT_NOT_SUPPORTED Handle = 0x80548227 + E_MBN_SMS_OPERATION_NOT_ALLOWED Handle = 0x80548228 + E_MBN_SMS_MEMORY_FULL Handle = 0x80548229 + PEER_E_IPV6_NOT_INSTALLED Handle = 0x80630001 + PEER_E_NOT_INITIALIZED Handle = 0x80630002 + PEER_E_CANNOT_START_SERVICE Handle = 0x80630003 + PEER_E_NOT_LICENSED Handle = 0x80630004 + PEER_E_INVALID_GRAPH Handle = 0x80630010 + PEER_E_DBNAME_CHANGED Handle = 0x80630011 + PEER_E_DUPLICATE_GRAPH Handle = 0x80630012 + PEER_E_GRAPH_NOT_READY Handle = 0x80630013 + PEER_E_GRAPH_SHUTTING_DOWN Handle = 0x80630014 + PEER_E_GRAPH_IN_USE Handle = 0x80630015 + PEER_E_INVALID_DATABASE Handle = 0x80630016 + PEER_E_TOO_MANY_ATTRIBUTES Handle = 0x80630017 + PEER_E_CONNECTION_NOT_FOUND Handle = 0x80630103 + PEER_E_CONNECT_SELF Handle = 0x80630106 + PEER_E_ALREADY_LISTENING Handle = 0x80630107 + PEER_E_NODE_NOT_FOUND Handle = 0x80630108 + PEER_E_CONNECTION_FAILED Handle = 0x80630109 + PEER_E_CONNECTION_NOT_AUTHENTICATED Handle = 0x8063010A + PEER_E_CONNECTION_REFUSED Handle = 0x8063010B + PEER_E_CLASSIFIER_TOO_LONG Handle = 0x80630201 + PEER_E_TOO_MANY_IDENTITIES Handle = 0x80630202 + PEER_E_NO_KEY_ACCESS Handle = 0x80630203 + PEER_E_GROUPS_EXIST Handle = 0x80630204 + PEER_E_RECORD_NOT_FOUND Handle = 0x80630301 + PEER_E_DATABASE_ACCESSDENIED Handle = 0x80630302 + PEER_E_DBINITIALIZATION_FAILED Handle = 0x80630303 + PEER_E_MAX_RECORD_SIZE_EXCEEDED Handle = 0x80630304 + PEER_E_DATABASE_ALREADY_PRESENT Handle = 0x80630305 + PEER_E_DATABASE_NOT_PRESENT Handle = 0x80630306 + PEER_E_IDENTITY_NOT_FOUND Handle = 0x80630401 + PEER_E_EVENT_HANDLE_NOT_FOUND Handle = 0x80630501 + PEER_E_INVALID_SEARCH Handle = 0x80630601 + PEER_E_INVALID_ATTRIBUTES Handle = 0x80630602 + PEER_E_INVITATION_NOT_TRUSTED Handle = 0x80630701 + PEER_E_CHAIN_TOO_LONG Handle = 0x80630703 + PEER_E_INVALID_TIME_PERIOD Handle = 0x80630705 + PEER_E_CIRCULAR_CHAIN_DETECTED Handle = 0x80630706 + PEER_E_CERT_STORE_CORRUPTED Handle = 0x80630801 + PEER_E_NO_CLOUD Handle = 0x80631001 + PEER_E_CLOUD_NAME_AMBIGUOUS Handle = 0x80631005 + PEER_E_INVALID_RECORD Handle = 0x80632010 + PEER_E_NOT_AUTHORIZED Handle = 0x80632020 + PEER_E_PASSWORD_DOES_NOT_MEET_POLICY Handle = 0x80632021 + PEER_E_DEFERRED_VALIDATION Handle = 0x80632030 + PEER_E_INVALID_GROUP_PROPERTIES Handle = 0x80632040 + PEER_E_INVALID_PEER_NAME Handle = 0x80632050 + PEER_E_INVALID_CLASSIFIER Handle = 0x80632060 + PEER_E_INVALID_FRIENDLY_NAME Handle = 0x80632070 + PEER_E_INVALID_ROLE_PROPERTY Handle = 0x80632071 + PEER_E_INVALID_CLASSIFIER_PROPERTY Handle = 0x80632072 + PEER_E_INVALID_RECORD_EXPIRATION Handle = 0x80632080 + PEER_E_INVALID_CREDENTIAL_INFO Handle = 0x80632081 + PEER_E_INVALID_CREDENTIAL Handle = 0x80632082 + PEER_E_INVALID_RECORD_SIZE Handle = 0x80632083 + PEER_E_UNSUPPORTED_VERSION Handle = 0x80632090 + PEER_E_GROUP_NOT_READY Handle = 0x80632091 + PEER_E_GROUP_IN_USE Handle = 0x80632092 + PEER_E_INVALID_GROUP Handle = 0x80632093 + PEER_E_NO_MEMBERS_FOUND Handle = 0x80632094 + PEER_E_NO_MEMBER_CONNECTIONS Handle = 0x80632095 + PEER_E_UNABLE_TO_LISTEN Handle = 0x80632096 + PEER_E_IDENTITY_DELETED Handle = 0x806320A0 + PEER_E_SERVICE_NOT_AVAILABLE Handle = 0x806320A1 + PEER_E_CONTACT_NOT_FOUND Handle = 0x80636001 + PEER_S_GRAPH_DATA_CREATED Handle = 0x00630001 + PEER_S_NO_EVENT_DATA Handle = 0x00630002 + PEER_S_ALREADY_CONNECTED Handle = 0x00632000 + PEER_S_SUBSCRIPTION_EXISTS Handle = 0x00636000 + PEER_S_NO_CONNECTIVITY Handle = 0x00630005 + PEER_S_ALREADY_A_MEMBER Handle = 0x00630006 + PEER_E_CANNOT_CONVERT_PEER_NAME Handle = 0x80634001 + PEER_E_INVALID_PEER_HOST_NAME Handle = 0x80634002 + PEER_E_NO_MORE Handle = 0x80634003 + PEER_E_PNRP_DUPLICATE_PEER_NAME Handle = 0x80634005 + PEER_E_INVITE_CANCELLED Handle = 0x80637000 + PEER_E_INVITE_RESPONSE_NOT_AVAILABLE Handle = 0x80637001 + PEER_E_NOT_SIGNED_IN Handle = 0x80637003 + PEER_E_PRIVACY_DECLINED Handle = 0x80637004 + PEER_E_TIMEOUT Handle = 0x80637005 + PEER_E_INVALID_ADDRESS Handle = 0x80637007 + PEER_E_FW_EXCEPTION_DISABLED Handle = 0x80637008 + PEER_E_FW_BLOCKED_BY_POLICY Handle = 0x80637009 + PEER_E_FW_BLOCKED_BY_SHIELDS_UP Handle = 0x8063700A + PEER_E_FW_DECLINED Handle = 0x8063700B + UI_E_CREATE_FAILED Handle = 0x802A0001 + UI_E_SHUTDOWN_CALLED Handle = 0x802A0002 + UI_E_ILLEGAL_REENTRANCY Handle = 0x802A0003 + UI_E_OBJECT_SEALED Handle = 0x802A0004 + UI_E_VALUE_NOT_SET Handle = 0x802A0005 + UI_E_VALUE_NOT_DETERMINED Handle = 0x802A0006 + UI_E_INVALID_OUTPUT Handle = 0x802A0007 + UI_E_BOOLEAN_EXPECTED Handle = 0x802A0008 + UI_E_DIFFERENT_OWNER Handle = 0x802A0009 + UI_E_AMBIGUOUS_MATCH Handle = 0x802A000A + UI_E_FP_OVERFLOW Handle = 0x802A000B + UI_E_WRONG_THREAD Handle = 0x802A000C + UI_E_STORYBOARD_ACTIVE Handle = 0x802A0101 + UI_E_STORYBOARD_NOT_PLAYING Handle = 0x802A0102 + UI_E_START_KEYFRAME_AFTER_END Handle = 0x802A0103 + UI_E_END_KEYFRAME_NOT_DETERMINED Handle = 0x802A0104 + UI_E_LOOPS_OVERLAP Handle = 0x802A0105 + UI_E_TRANSITION_ALREADY_USED Handle = 0x802A0106 + UI_E_TRANSITION_NOT_IN_STORYBOARD Handle = 0x802A0107 + UI_E_TRANSITION_ECLIPSED Handle = 0x802A0108 + UI_E_TIME_BEFORE_LAST_UPDATE Handle = 0x802A0109 + UI_E_TIMER_CLIENT_ALREADY_CONNECTED Handle = 0x802A010A + UI_E_INVALID_DIMENSION Handle = 0x802A010B + UI_E_PRIMITIVE_OUT_OF_BOUNDS Handle = 0x802A010C + UI_E_WINDOW_CLOSED Handle = 0x802A0201 + E_BLUETOOTH_ATT_INVALID_HANDLE Handle = 0x80650001 + E_BLUETOOTH_ATT_READ_NOT_PERMITTED Handle = 0x80650002 + E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED Handle = 0x80650003 + E_BLUETOOTH_ATT_INVALID_PDU Handle = 0x80650004 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION Handle = 0x80650005 + E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED Handle = 0x80650006 + E_BLUETOOTH_ATT_INVALID_OFFSET Handle = 0x80650007 + E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION Handle = 0x80650008 + E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL Handle = 0x80650009 + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND Handle = 0x8065000A + E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG Handle = 0x8065000B + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE Handle = 0x8065000C + E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH Handle = 0x8065000D + E_BLUETOOTH_ATT_UNLIKELY Handle = 0x8065000E + E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION Handle = 0x8065000F + E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE Handle = 0x80650010 + E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES Handle = 0x80650011 + E_BLUETOOTH_ATT_UNKNOWN_ERROR Handle = 0x80651000 + E_AUDIO_ENGINE_NODE_NOT_FOUND Handle = 0x80660001 + E_HDAUDIO_EMPTY_CONNECTION_LIST Handle = 0x80660002 + E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED Handle = 0x80660003 + E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED Handle = 0x80660004 + E_HDAUDIO_NULL_LINKED_LIST_ENTRY Handle = 0x80660005 + STATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE Handle = 0x80670001 + STATEREPOSITORY_E_STATEMENT_INPROGRESS Handle = 0x80670002 + STATEREPOSITORY_E_CONFIGURATION_INVALID Handle = 0x80670003 + STATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION Handle = 0x80670004 + STATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED Handle = 0x80670005 + STATEREPOSITORY_E_BLOCKED Handle = 0x80670006 + STATEREPOSITORY_E_BUSY_RETRY Handle = 0x80670007 + STATEREPOSITORY_E_BUSY_RECOVERY_RETRY Handle = 0x80670008 + STATEREPOSITORY_E_LOCKED_RETRY Handle = 0x80670009 + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY Handle = 0x8067000A + STATEREPOSITORY_E_TRANSACTION_REQUIRED Handle = 0x8067000B + STATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED Handle = 0x8067000C + STATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED Handle = 0x8067000D + STATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED Handle = 0x8067000E + STATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED Handle = 0x8067000F + STATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS Handle = 0x80670010 + STATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED Handle = 0x80670011 + STATEREPOSITORY_ERROR_CACHE_CORRUPTED Handle = 0x80670012 + STATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED Handle = 0x00670013 + STATEREPOSITORY_TRANSACTION_IN_PROGRESS Handle = 0x00670014 + ERROR_SPACES_POOL_WAS_DELETED Handle = 0x00E70001 + ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID Handle = 0x80E70001 + ERROR_SPACES_INTERNAL_ERROR Handle = 0x80E70002 + ERROR_SPACES_RESILIENCY_TYPE_INVALID Handle = 0x80E70003 + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID Handle = 0x80E70004 + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID Handle = 0x80E70006 + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID Handle = 0x80E70007 + ERROR_SPACES_PARITY_LAYOUT_INVALID Handle = 0x80E70008 + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID Handle = 0x80E70009 + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID Handle = 0x80E7000A + ERROR_SPACES_NOT_ENOUGH_DRIVES Handle = 0x80E7000B + ERROR_SPACES_EXTENDED_ERROR Handle = 0x80E7000C + ERROR_SPACES_PROVISIONING_TYPE_INVALID Handle = 0x80E7000D + ERROR_SPACES_ALLOCATION_SIZE_INVALID Handle = 0x80E7000E + ERROR_SPACES_ENCLOSURE_AWARE_INVALID Handle = 0x80E7000F + ERROR_SPACES_WRITE_CACHE_SIZE_INVALID Handle = 0x80E70010 + ERROR_SPACES_NUMBER_OF_GROUPS_INVALID Handle = 0x80E70011 + ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID Handle = 0x80E70012 + ERROR_SPACES_ENTRY_INCOMPLETE Handle = 0x80E70013 + ERROR_SPACES_ENTRY_INVALID Handle = 0x80E70014 + ERROR_VOLSNAP_BOOTFILE_NOT_VALID Handle = 0x80820001 + ERROR_VOLSNAP_ACTIVATION_TIMEOUT Handle = 0x80820002 + ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME Handle = 0x80830001 + ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS Handle = 0x80830002 + ERROR_TIERING_STORAGE_TIER_NOT_FOUND Handle = 0x80830003 + ERROR_TIERING_INVALID_FILE_ID Handle = 0x80830004 + ERROR_TIERING_WRONG_CLUSTER_NODE Handle = 0x80830005 + ERROR_TIERING_ALREADY_PROCESSING Handle = 0x80830006 + ERROR_TIERING_CANNOT_PIN_OBJECT Handle = 0x80830007 + ERROR_TIERING_FILE_IS_NOT_PINNED Handle = 0x80830008 + ERROR_NOT_A_TIERED_VOLUME Handle = 0x80830009 + ERROR_ATTRIBUTE_NOT_PRESENT Handle = 0x8083000A + ERROR_SECCORE_INVALID_COMMAND Handle = 0xC0E80000 + ERROR_NO_APPLICABLE_APP_LICENSES_FOUND Handle = 0xC0EA0001 + ERROR_CLIP_LICENSE_NOT_FOUND Handle = 0xC0EA0002 + ERROR_CLIP_DEVICE_LICENSE_MISSING Handle = 0xC0EA0003 + ERROR_CLIP_LICENSE_INVALID_SIGNATURE Handle = 0xC0EA0004 + ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID Handle = 0xC0EA0005 + ERROR_CLIP_LICENSE_EXPIRED Handle = 0xC0EA0006 + ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE Handle = 0xC0EA0007 + ERROR_CLIP_LICENSE_NOT_SIGNED Handle = 0xC0EA0008 + ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE Handle = 0xC0EA0009 + ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH Handle = 0xC0EA000A + DXGI_STATUS_OCCLUDED Handle = 0x087A0001 + DXGI_STATUS_CLIPPED Handle = 0x087A0002 + DXGI_STATUS_NO_REDIRECTION Handle = 0x087A0004 + DXGI_STATUS_NO_DESKTOP_ACCESS Handle = 0x087A0005 + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x087A0006 + DXGI_STATUS_MODE_CHANGED Handle = 0x087A0007 + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS Handle = 0x087A0008 + DXGI_ERROR_INVALID_CALL Handle = 0x887A0001 + DXGI_ERROR_NOT_FOUND Handle = 0x887A0002 + DXGI_ERROR_MORE_DATA Handle = 0x887A0003 + DXGI_ERROR_UNSUPPORTED Handle = 0x887A0004 + DXGI_ERROR_DEVICE_REMOVED Handle = 0x887A0005 + DXGI_ERROR_DEVICE_HUNG Handle = 0x887A0006 + DXGI_ERROR_DEVICE_RESET Handle = 0x887A0007 + DXGI_ERROR_WAS_STILL_DRAWING Handle = 0x887A000A + DXGI_ERROR_FRAME_STATISTICS_DISJOINT Handle = 0x887A000B + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE Handle = 0x887A000C + DXGI_ERROR_DRIVER_INTERNAL_ERROR Handle = 0x887A0020 + DXGI_ERROR_NONEXCLUSIVE Handle = 0x887A0021 + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE Handle = 0x887A0022 + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED Handle = 0x887A0023 + DXGI_ERROR_REMOTE_OUTOFMEMORY Handle = 0x887A0024 + DXGI_ERROR_ACCESS_LOST Handle = 0x887A0026 + DXGI_ERROR_WAIT_TIMEOUT Handle = 0x887A0027 + DXGI_ERROR_SESSION_DISCONNECTED Handle = 0x887A0028 + DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE Handle = 0x887A0029 + DXGI_ERROR_CANNOT_PROTECT_CONTENT Handle = 0x887A002A + DXGI_ERROR_ACCESS_DENIED Handle = 0x887A002B + DXGI_ERROR_NAME_ALREADY_EXISTS Handle = 0x887A002C + DXGI_ERROR_SDK_COMPONENT_MISSING Handle = 0x887A002D + DXGI_ERROR_NOT_CURRENT Handle = 0x887A002E + DXGI_ERROR_HW_PROTECTION_OUTOFMEMORY Handle = 0x887A0030 + DXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION Handle = 0x887A0031 + DXGI_ERROR_NON_COMPOSITED_UI Handle = 0x887A0032 + DXGI_STATUS_UNOCCLUDED Handle = 0x087A0009 + DXGI_STATUS_DDA_WAS_STILL_DRAWING Handle = 0x087A000A + DXGI_ERROR_MODE_CHANGE_IN_PROGRESS Handle = 0x887A0025 + DXGI_STATUS_PRESENT_REQUIRED Handle = 0x087A002F + DXGI_ERROR_CACHE_CORRUPT Handle = 0x887A0033 + DXGI_ERROR_CACHE_FULL Handle = 0x887A0034 + DXGI_ERROR_CACHE_HASH_COLLISION Handle = 0x887A0035 + DXGI_ERROR_ALREADY_EXISTS Handle = 0x887A0036 + DXGI_DDI_ERR_WASSTILLDRAWING Handle = 0x887B0001 + DXGI_DDI_ERR_UNSUPPORTED Handle = 0x887B0002 + DXGI_DDI_ERR_NONEXCLUSIVE Handle = 0x887B0003 + D3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x88790001 + D3D10_ERROR_FILE_NOT_FOUND Handle = 0x88790002 + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS Handle = 0x887C0001 + D3D11_ERROR_FILE_NOT_FOUND Handle = 0x887C0002 + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS Handle = 0x887C0003 + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD Handle = 0x887C0004 + D3D12_ERROR_ADAPTER_NOT_FOUND Handle = 0x887E0001 + D3D12_ERROR_DRIVER_VERSION_MISMATCH Handle = 0x887E0002 + D2DERR_WRONG_STATE Handle = 0x88990001 + D2DERR_NOT_INITIALIZED Handle = 0x88990002 + D2DERR_UNSUPPORTED_OPERATION Handle = 0x88990003 + D2DERR_SCANNER_FAILED Handle = 0x88990004 + D2DERR_SCREEN_ACCESS_DENIED Handle = 0x88990005 + D2DERR_DISPLAY_STATE_INVALID Handle = 0x88990006 + D2DERR_ZERO_VECTOR Handle = 0x88990007 + D2DERR_INTERNAL_ERROR Handle = 0x88990008 + D2DERR_DISPLAY_FORMAT_NOT_SUPPORTED Handle = 0x88990009 + D2DERR_INVALID_CALL Handle = 0x8899000A + D2DERR_NO_HARDWARE_DEVICE Handle = 0x8899000B + D2DERR_RECREATE_TARGET Handle = 0x8899000C + D2DERR_TOO_MANY_SHADER_ELEMENTS Handle = 0x8899000D + D2DERR_SHADER_COMPILE_FAILED Handle = 0x8899000E + D2DERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8899000F + D2DERR_UNSUPPORTED_VERSION Handle = 0x88990010 + D2DERR_BAD_NUMBER Handle = 0x88990011 + D2DERR_WRONG_FACTORY Handle = 0x88990012 + D2DERR_LAYER_ALREADY_IN_USE Handle = 0x88990013 + D2DERR_POP_CALL_DID_NOT_MATCH_PUSH Handle = 0x88990014 + D2DERR_WRONG_RESOURCE_DOMAIN Handle = 0x88990015 + D2DERR_PUSH_POP_UNBALANCED Handle = 0x88990016 + D2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT Handle = 0x88990017 + D2DERR_INCOMPATIBLE_BRUSH_TYPES Handle = 0x88990018 + D2DERR_WIN32_ERROR Handle = 0x88990019 + D2DERR_TARGET_NOT_GDI_COMPATIBLE Handle = 0x8899001A + D2DERR_TEXT_EFFECT_IS_WRONG_TYPE Handle = 0x8899001B + D2DERR_TEXT_RENDERER_NOT_RELEASED Handle = 0x8899001C + D2DERR_EXCEEDS_MAX_BITMAP_SIZE Handle = 0x8899001D + D2DERR_INVALID_GRAPH_CONFIGURATION Handle = 0x8899001E + D2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION Handle = 0x8899001F + D2DERR_CYCLIC_GRAPH Handle = 0x88990020 + D2DERR_BITMAP_CANNOT_DRAW Handle = 0x88990021 + D2DERR_OUTSTANDING_BITMAP_REFERENCES Handle = 0x88990022 + D2DERR_ORIGINAL_TARGET_NOT_BOUND Handle = 0x88990023 + D2DERR_INVALID_TARGET Handle = 0x88990024 + D2DERR_BITMAP_BOUND_AS_TARGET Handle = 0x88990025 + D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES Handle = 0x88990026 + D2DERR_INTERMEDIATE_TOO_LARGE Handle = 0x88990027 + D2DERR_EFFECT_IS_NOT_REGISTERED Handle = 0x88990028 + D2DERR_INVALID_PROPERTY Handle = 0x88990029 + D2DERR_NO_SUBPROPERTIES Handle = 0x8899002A + D2DERR_PRINT_JOB_CLOSED Handle = 0x8899002B + D2DERR_PRINT_FORMAT_NOT_SUPPORTED Handle = 0x8899002C + D2DERR_TOO_MANY_TRANSFORM_INPUTS Handle = 0x8899002D + D2DERR_INVALID_GLYPH_IMAGE Handle = 0x8899002E + DWRITE_E_FILEFORMAT Handle = 0x88985000 + DWRITE_E_UNEXPECTED Handle = 0x88985001 + DWRITE_E_NOFONT Handle = 0x88985002 + DWRITE_E_FILENOTFOUND Handle = 0x88985003 + DWRITE_E_FILEACCESS Handle = 0x88985004 + DWRITE_E_FONTCOLLECTIONOBSOLETE Handle = 0x88985005 + DWRITE_E_ALREADYREGISTERED Handle = 0x88985006 + DWRITE_E_CACHEFORMAT Handle = 0x88985007 + DWRITE_E_CACHEVERSION Handle = 0x88985008 + DWRITE_E_UNSUPPORTEDOPERATION Handle = 0x88985009 + DWRITE_E_TEXTRENDERERINCOMPATIBLE Handle = 0x8898500A + DWRITE_E_FLOWDIRECTIONCONFLICTS Handle = 0x8898500B + DWRITE_E_NOCOLOR Handle = 0x8898500C + DWRITE_E_REMOTEFONT Handle = 0x8898500D + DWRITE_E_DOWNLOADCANCELLED Handle = 0x8898500E + DWRITE_E_DOWNLOADFAILED Handle = 0x8898500F + DWRITE_E_TOOMANYDOWNLOADS Handle = 0x88985010 + WINCODEC_ERR_WRONGSTATE Handle = 0x88982F04 + WINCODEC_ERR_VALUEOUTOFRANGE Handle = 0x88982F05 + WINCODEC_ERR_UNKNOWNIMAGEFORMAT Handle = 0x88982F07 + WINCODEC_ERR_UNSUPPORTEDVERSION Handle = 0x88982F0B + WINCODEC_ERR_NOTINITIALIZED Handle = 0x88982F0C + WINCODEC_ERR_ALREADYLOCKED Handle = 0x88982F0D + WINCODEC_ERR_PROPERTYNOTFOUND Handle = 0x88982F40 + WINCODEC_ERR_PROPERTYNOTSUPPORTED Handle = 0x88982F41 + WINCODEC_ERR_PROPERTYSIZE Handle = 0x88982F42 + WINCODEC_ERR_CODECPRESENT Handle = 0x88982F43 + WINCODEC_ERR_CODECNOTHUMBNAIL Handle = 0x88982F44 + WINCODEC_ERR_PALETTEUNAVAILABLE Handle = 0x88982F45 + WINCODEC_ERR_CODECTOOMANYSCANLINES Handle = 0x88982F46 + WINCODEC_ERR_INTERNALERROR Handle = 0x88982F48 + WINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS Handle = 0x88982F49 + WINCODEC_ERR_COMPONENTNOTFOUND Handle = 0x88982F50 + WINCODEC_ERR_IMAGESIZEOUTOFRANGE Handle = 0x88982F51 + WINCODEC_ERR_TOOMUCHMETADATA Handle = 0x88982F52 + WINCODEC_ERR_BADIMAGE Handle = 0x88982F60 + WINCODEC_ERR_BADHEADER Handle = 0x88982F61 + WINCODEC_ERR_FRAMEMISSING Handle = 0x88982F62 + WINCODEC_ERR_BADMETADATAHEADER Handle = 0x88982F63 + WINCODEC_ERR_BADSTREAMDATA Handle = 0x88982F70 + WINCODEC_ERR_STREAMWRITE Handle = 0x88982F71 + WINCODEC_ERR_STREAMREAD Handle = 0x88982F72 + WINCODEC_ERR_STREAMNOTAVAILABLE Handle = 0x88982F73 + WINCODEC_ERR_UNSUPPORTEDPIXELFORMAT Handle = 0x88982F80 + WINCODEC_ERR_UNSUPPORTEDOPERATION Handle = 0x88982F81 + WINCODEC_ERR_INVALIDREGISTRATION Handle = 0x88982F8A + WINCODEC_ERR_COMPONENTINITIALIZEFAILURE Handle = 0x88982F8B + WINCODEC_ERR_INSUFFICIENTBUFFER Handle = 0x88982F8C + WINCODEC_ERR_DUPLICATEMETADATAPRESENT Handle = 0x88982F8D + WINCODEC_ERR_PROPERTYUNEXPECTEDTYPE Handle = 0x88982F8E + WINCODEC_ERR_UNEXPECTEDSIZE Handle = 0x88982F8F + WINCODEC_ERR_INVALIDQUERYREQUEST Handle = 0x88982F90 + WINCODEC_ERR_UNEXPECTEDMETADATATYPE Handle = 0x88982F91 + WINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT Handle = 0x88982F92 + WINCODEC_ERR_INVALIDQUERYCHARACTER Handle = 0x88982F93 + WINCODEC_ERR_WIN32ERROR Handle = 0x88982F94 + WINCODEC_ERR_INVALIDPROGRESSIVELEVEL Handle = 0x88982F95 + WINCODEC_ERR_INVALIDJPEGSCANINDEX Handle = 0x88982F96 + MILERR_OBJECTBUSY Handle = 0x88980001 + MILERR_INSUFFICIENTBUFFER Handle = 0x88980002 + MILERR_WIN32ERROR Handle = 0x88980003 + MILERR_SCANNER_FAILED Handle = 0x88980004 + MILERR_SCREENACCESSDENIED Handle = 0x88980005 + MILERR_DISPLAYSTATEINVALID Handle = 0x88980006 + MILERR_NONINVERTIBLEMATRIX Handle = 0x88980007 + MILERR_ZEROVECTOR Handle = 0x88980008 + MILERR_TERMINATED Handle = 0x88980009 + MILERR_BADNUMBER Handle = 0x8898000A + MILERR_INTERNALERROR Handle = 0x88980080 + MILERR_DISPLAYFORMATNOTSUPPORTED Handle = 0x88980084 + MILERR_INVALIDCALL Handle = 0x88980085 + MILERR_ALREADYLOCKED Handle = 0x88980086 + MILERR_NOTLOCKED Handle = 0x88980087 + MILERR_DEVICECANNOTRENDERTEXT Handle = 0x88980088 + MILERR_GLYPHBITMAPMISSED Handle = 0x88980089 + MILERR_MALFORMEDGLYPHCACHE Handle = 0x8898008A + MILERR_GENERIC_IGNORE Handle = 0x8898008B + MILERR_MALFORMED_GUIDELINE_DATA Handle = 0x8898008C + MILERR_NO_HARDWARE_DEVICE Handle = 0x8898008D + MILERR_NEED_RECREATE_AND_PRESENT Handle = 0x8898008E + MILERR_ALREADY_INITIALIZED Handle = 0x8898008F + MILERR_MISMATCHED_SIZE Handle = 0x88980090 + MILERR_NO_REDIRECTION_SURFACE_AVAILABLE Handle = 0x88980091 + MILERR_REMOTING_NOT_SUPPORTED Handle = 0x88980092 + MILERR_QUEUED_PRESENT_NOT_SUPPORTED Handle = 0x88980093 + MILERR_NOT_QUEUING_PRESENTS Handle = 0x88980094 + MILERR_NO_REDIRECTION_SURFACE_RETRY_LATER Handle = 0x88980095 + MILERR_TOOMANYSHADERELEMNTS Handle = 0x88980096 + MILERR_MROW_READLOCK_FAILED Handle = 0x88980097 + MILERR_MROW_UPDATE_FAILED Handle = 0x88980098 + MILERR_SHADER_COMPILE_FAILED Handle = 0x88980099 + MILERR_MAX_TEXTURE_SIZE_EXCEEDED Handle = 0x8898009A + MILERR_QPC_TIME_WENT_BACKWARD Handle = 0x8898009B + MILERR_DXGI_ENUMERATION_OUT_OF_SYNC Handle = 0x8898009D + MILERR_ADAPTER_NOT_FOUND Handle = 0x8898009E + MILERR_COLORSPACE_NOT_SUPPORTED Handle = 0x8898009F + MILERR_PREFILTER_NOT_SUPPORTED Handle = 0x889800A0 + MILERR_DISPLAYID_ACCESS_DENIED Handle = 0x889800A1 + UCEERR_INVALIDPACKETHEADER Handle = 0x88980400 + UCEERR_UNKNOWNPACKET Handle = 0x88980401 + UCEERR_ILLEGALPACKET Handle = 0x88980402 + UCEERR_MALFORMEDPACKET Handle = 0x88980403 + UCEERR_ILLEGALHANDLE Handle = 0x88980404 + UCEERR_HANDLELOOKUPFAILED Handle = 0x88980405 + UCEERR_RENDERTHREADFAILURE Handle = 0x88980406 + UCEERR_CTXSTACKFRSTTARGETNULL Handle = 0x88980407 + UCEERR_CONNECTIONIDLOOKUPFAILED Handle = 0x88980408 + UCEERR_BLOCKSFULL Handle = 0x88980409 + UCEERR_MEMORYFAILURE Handle = 0x8898040A + UCEERR_PACKETRECORDOUTOFRANGE Handle = 0x8898040B + UCEERR_ILLEGALRECORDTYPE Handle = 0x8898040C + UCEERR_OUTOFHANDLES Handle = 0x8898040D + UCEERR_UNCHANGABLE_UPDATE_ATTEMPTED Handle = 0x8898040E + UCEERR_NO_MULTIPLE_WORKER_THREADS Handle = 0x8898040F + UCEERR_REMOTINGNOTSUPPORTED Handle = 0x88980410 + UCEERR_MISSINGENDCOMMAND Handle = 0x88980411 + UCEERR_MISSINGBEGINCOMMAND Handle = 0x88980412 + UCEERR_CHANNELSYNCTIMEDOUT Handle = 0x88980413 + UCEERR_CHANNELSYNCABANDONED Handle = 0x88980414 + UCEERR_UNSUPPORTEDTRANSPORTVERSION Handle = 0x88980415 + UCEERR_TRANSPORTUNAVAILABLE Handle = 0x88980416 + UCEERR_FEEDBACK_UNSUPPORTED Handle = 0x88980417 + UCEERR_COMMANDTRANSPORTDENIED Handle = 0x88980418 + UCEERR_GRAPHICSSTREAMUNAVAILABLE Handle = 0x88980419 + UCEERR_GRAPHICSSTREAMALREADYOPEN Handle = 0x88980420 + UCEERR_TRANSPORTDISCONNECTED Handle = 0x88980421 + UCEERR_TRANSPORTOVERLOADED Handle = 0x88980422 + UCEERR_PARTITION_ZOMBIED Handle = 0x88980423 + MILAVERR_NOCLOCK Handle = 0x88980500 + MILAVERR_NOMEDIATYPE Handle = 0x88980501 + MILAVERR_NOVIDEOMIXER Handle = 0x88980502 + MILAVERR_NOVIDEOPRESENTER Handle = 0x88980503 + MILAVERR_NOREADYFRAMES Handle = 0x88980504 + MILAVERR_MODULENOTLOADED Handle = 0x88980505 + MILAVERR_WMPFACTORYNOTREGISTERED Handle = 0x88980506 + MILAVERR_INVALIDWMPVERSION Handle = 0x88980507 + MILAVERR_INSUFFICIENTVIDEORESOURCES Handle = 0x88980508 + MILAVERR_VIDEOACCELERATIONNOTAVAILABLE Handle = 0x88980509 + MILAVERR_REQUESTEDTEXTURETOOBIG Handle = 0x8898050A + MILAVERR_SEEKFAILED Handle = 0x8898050B + MILAVERR_UNEXPECTEDWMPFAILURE Handle = 0x8898050C + MILAVERR_MEDIAPLAYERCLOSED Handle = 0x8898050D + MILAVERR_UNKNOWNHARDWAREERROR Handle = 0x8898050E + MILEFFECTSERR_UNKNOWNPROPERTY Handle = 0x8898060E + MILEFFECTSERR_EFFECTNOTPARTOFGROUP Handle = 0x8898060F + MILEFFECTSERR_NOINPUTSOURCEATTACHED Handle = 0x88980610 + MILEFFECTSERR_CONNECTORNOTCONNECTED Handle = 0x88980611 + MILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT Handle = 0x88980612 + MILEFFECTSERR_RESERVED Handle = 0x88980613 + MILEFFECTSERR_CYCLEDETECTED Handle = 0x88980614 + MILEFFECTSERR_EFFECTINMORETHANONEGRAPH Handle = 0x88980615 + MILEFFECTSERR_EFFECTALREADYINAGRAPH Handle = 0x88980616 + MILEFFECTSERR_EFFECTHASNOCHILDREN Handle = 0x88980617 + MILEFFECTSERR_ALREADYATTACHEDTOLISTENER Handle = 0x88980618 + MILEFFECTSERR_NOTAFFINETRANSFORM Handle = 0x88980619 + MILEFFECTSERR_EMPTYBOUNDS Handle = 0x8898061A + MILEFFECTSERR_OUTPUTSIZETOOLARGE Handle = 0x8898061B + DWMERR_STATE_TRANSITION_FAILED Handle = 0x88980700 + DWMERR_THEME_FAILED Handle = 0x88980701 + DWMERR_CATASTROPHIC_FAILURE Handle = 0x88980702 + DCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED Handle = 0x88980800 + DCOMPOSITION_ERROR_SURFACE_BEING_RENDERED Handle = 0x88980801 + DCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED Handle = 0x88980802 + ONL_E_INVALID_AUTHENTICATION_TARGET Handle = 0x80860001 + ONL_E_ACCESS_DENIED_BY_TOU Handle = 0x80860002 + ONL_E_INVALID_APPLICATION Handle = 0x80860003 + ONL_E_PASSWORD_UPDATE_REQUIRED Handle = 0x80860004 + ONL_E_ACCOUNT_UPDATE_REQUIRED Handle = 0x80860005 + ONL_E_FORCESIGNIN Handle = 0x80860006 + ONL_E_ACCOUNT_LOCKED Handle = 0x80860007 + ONL_E_PARENTAL_CONSENT_REQUIRED Handle = 0x80860008 + ONL_E_EMAIL_VERIFICATION_REQUIRED Handle = 0x80860009 + ONL_E_ACCOUNT_SUSPENDED_COMPROIMISE Handle = 0x8086000A + ONL_E_ACCOUNT_SUSPENDED_ABUSE Handle = 0x8086000B + ONL_E_ACTION_REQUIRED Handle = 0x8086000C + ONL_CONNECTION_COUNT_LIMIT Handle = 0x8086000D + ONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT Handle = 0x8086000E + ONL_E_USER_AUTHENTICATION_REQUIRED Handle = 0x8086000F + ONL_E_REQUEST_THROTTLED Handle = 0x80860010 + FA_E_MAX_PERSISTED_ITEMS_REACHED Handle = 0x80270220 + FA_E_HOMEGROUP_NOT_AVAILABLE Handle = 0x80270222 + E_MONITOR_RESOLUTION_TOO_LOW Handle = 0x80270250 + E_ELEVATED_ACTIVATION_NOT_SUPPORTED Handle = 0x80270251 + E_UAC_DISABLED Handle = 0x80270252 + E_FULL_ADMIN_NOT_SUPPORTED Handle = 0x80270253 + E_APPLICATION_NOT_REGISTERED Handle = 0x80270254 + E_MULTIPLE_EXTENSIONS_FOR_APPLICATION Handle = 0x80270255 + E_MULTIPLE_PACKAGES_FOR_FAMILY Handle = 0x80270256 + E_APPLICATION_MANAGER_NOT_RUNNING Handle = 0x80270257 + S_STORE_LAUNCHED_FOR_REMEDIATION Handle = 0x00270258 + S_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG Handle = 0x00270259 + E_APPLICATION_ACTIVATION_TIMED_OUT Handle = 0x8027025A + E_APPLICATION_ACTIVATION_EXEC_FAILURE Handle = 0x8027025B + E_APPLICATION_TEMPORARY_LICENSE_ERROR Handle = 0x8027025C + E_APPLICATION_TRIAL_LICENSE_EXPIRED Handle = 0x8027025D + E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED Handle = 0x80270260 + E_SKYDRIVE_ROOT_TARGET_OVERLAP Handle = 0x80270261 + E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX Handle = 0x80270262 + E_SKYDRIVE_FILE_NOT_UPLOADED Handle = 0x80270263 + E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL Handle = 0x80270264 + E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED Handle = 0x80270265 + E_SYNCENGINE_FILE_SIZE_OVER_LIMIT Handle = 0x8802B001 + E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA Handle = 0x8802B002 + E_SYNCENGINE_UNSUPPORTED_FILE_NAME Handle = 0x8802B003 + E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED Handle = 0x8802B004 + E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR Handle = 0x8802B005 + E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE Handle = 0x8802B006 + E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN Handle = 0x8802C002 + E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED Handle = 0x8802C003 + E_SYNCENGINE_UNKNOWN_SERVICE_ERROR Handle = 0x8802C004 + E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE Handle = 0x8802C005 + E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE Handle = 0x8802C006 + E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR Handle = 0x8802C007 + E_SYNCENGINE_FOLDER_INACCESSIBLE Handle = 0x8802D001 + E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME Handle = 0x8802D002 + E_SYNCENGINE_UNSUPPORTED_MARKET Handle = 0x8802D003 + E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D004 + E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED Handle = 0x8802D005 + E_SYNCENGINE_CLIENT_UPDATE_NEEDED Handle = 0x8802D006 + E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED Handle = 0x8802D007 + E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED Handle = 0x8802D008 + E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT Handle = 0x8802D009 + E_SYNCENGINE_STORAGE_SERVICE_BLOCKED Handle = 0x8802D00A + E_SYNCENGINE_FOLDER_IN_REDIRECTION Handle = 0x8802D00B + EAS_E_POLICY_NOT_MANAGED_BY_OS Handle = 0x80550001 + EAS_E_POLICY_COMPLIANT_WITH_ACTIONS Handle = 0x80550002 + EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE Handle = 0x80550003 + EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD Handle = 0x80550004 + EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE Handle = 0x80550005 + EAS_E_USER_CANNOT_CHANGE_PASSWORD Handle = 0x80550006 + EAS_E_ADMINS_HAVE_BLANK_PASSWORD Handle = 0x80550007 + EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD Handle = 0x80550008 + EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD Handle = 0x80550009 + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS Handle = 0x8055000A + EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000B + EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER Handle = 0x8055000C + EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD Handle = 0x8055000D + WEB_E_UNSUPPORTED_FORMAT Handle = 0x83750001 + WEB_E_INVALID_XML Handle = 0x83750002 + WEB_E_MISSING_REQUIRED_ELEMENT Handle = 0x83750003 + WEB_E_MISSING_REQUIRED_ATTRIBUTE Handle = 0x83750004 + WEB_E_UNEXPECTED_CONTENT Handle = 0x83750005 + WEB_E_RESOURCE_TOO_LARGE Handle = 0x83750006 + WEB_E_INVALID_JSON_STRING Handle = 0x83750007 + WEB_E_INVALID_JSON_NUMBER Handle = 0x83750008 + WEB_E_JSON_VALUE_NOT_FOUND Handle = 0x83750009 + HTTP_E_STATUS_UNEXPECTED Handle = 0x80190001 + HTTP_E_STATUS_UNEXPECTED_REDIRECTION Handle = 0x80190003 + HTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR Handle = 0x80190004 + HTTP_E_STATUS_UNEXPECTED_SERVER_ERROR Handle = 0x80190005 + HTTP_E_STATUS_AMBIGUOUS Handle = 0x8019012C + HTTP_E_STATUS_MOVED Handle = 0x8019012D + HTTP_E_STATUS_REDIRECT Handle = 0x8019012E + HTTP_E_STATUS_REDIRECT_METHOD Handle = 0x8019012F + HTTP_E_STATUS_NOT_MODIFIED Handle = 0x80190130 + HTTP_E_STATUS_USE_PROXY Handle = 0x80190131 + HTTP_E_STATUS_REDIRECT_KEEP_VERB Handle = 0x80190133 + HTTP_E_STATUS_BAD_REQUEST Handle = 0x80190190 + HTTP_E_STATUS_DENIED Handle = 0x80190191 + HTTP_E_STATUS_PAYMENT_REQ Handle = 0x80190192 + HTTP_E_STATUS_FORBIDDEN Handle = 0x80190193 + HTTP_E_STATUS_NOT_FOUND Handle = 0x80190194 + HTTP_E_STATUS_BAD_METHOD Handle = 0x80190195 + HTTP_E_STATUS_NONE_ACCEPTABLE Handle = 0x80190196 + HTTP_E_STATUS_PROXY_AUTH_REQ Handle = 0x80190197 + HTTP_E_STATUS_REQUEST_TIMEOUT Handle = 0x80190198 + HTTP_E_STATUS_CONFLICT Handle = 0x80190199 + HTTP_E_STATUS_GONE Handle = 0x8019019A + HTTP_E_STATUS_LENGTH_REQUIRED Handle = 0x8019019B + HTTP_E_STATUS_PRECOND_FAILED Handle = 0x8019019C + HTTP_E_STATUS_REQUEST_TOO_LARGE Handle = 0x8019019D + HTTP_E_STATUS_URI_TOO_LONG Handle = 0x8019019E + HTTP_E_STATUS_UNSUPPORTED_MEDIA Handle = 0x8019019F + HTTP_E_STATUS_RANGE_NOT_SATISFIABLE Handle = 0x801901A0 + HTTP_E_STATUS_EXPECTATION_FAILED Handle = 0x801901A1 + HTTP_E_STATUS_SERVER_ERROR Handle = 0x801901F4 + HTTP_E_STATUS_NOT_SUPPORTED Handle = 0x801901F5 + HTTP_E_STATUS_BAD_GATEWAY Handle = 0x801901F6 + HTTP_E_STATUS_SERVICE_UNAVAIL Handle = 0x801901F7 + HTTP_E_STATUS_GATEWAY_TIMEOUT Handle = 0x801901F8 + HTTP_E_STATUS_VERSION_NOT_SUP Handle = 0x801901F9 + E_INVALID_PROTOCOL_OPERATION Handle = 0x83760001 + E_INVALID_PROTOCOL_FORMAT Handle = 0x83760002 + E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED Handle = 0x83760003 + E_SUBPROTOCOL_NOT_SUPPORTED Handle = 0x83760004 + E_PROTOCOL_VERSION_NOT_SUPPORTED Handle = 0x83760005 + INPUT_E_OUT_OF_ORDER Handle = 0x80400000 + INPUT_E_REENTRANCY Handle = 0x80400001 + INPUT_E_MULTIMODAL Handle = 0x80400002 + INPUT_E_PACKET Handle = 0x80400003 + INPUT_E_FRAME Handle = 0x80400004 + INPUT_E_HISTORY Handle = 0x80400005 + INPUT_E_DEVICE_INFO Handle = 0x80400006 + INPUT_E_TRANSFORM Handle = 0x80400007 + INPUT_E_DEVICE_PROPERTY Handle = 0x80400008 + INET_E_INVALID_URL Handle = 0x800C0002 + INET_E_NO_SESSION Handle = 0x800C0003 + INET_E_CANNOT_CONNECT Handle = 0x800C0004 + INET_E_RESOURCE_NOT_FOUND Handle = 0x800C0005 + INET_E_OBJECT_NOT_FOUND Handle = 0x800C0006 + INET_E_DATA_NOT_AVAILABLE Handle = 0x800C0007 + INET_E_DOWNLOAD_FAILURE Handle = 0x800C0008 + INET_E_AUTHENTICATION_REQUIRED Handle = 0x800C0009 + INET_E_NO_VALID_MEDIA Handle = 0x800C000A + INET_E_CONNECTION_TIMEOUT Handle = 0x800C000B + INET_E_INVALID_REQUEST Handle = 0x800C000C + INET_E_UNKNOWN_PROTOCOL Handle = 0x800C000D + INET_E_SECURITY_PROBLEM Handle = 0x800C000E + INET_E_CANNOT_LOAD_DATA Handle = 0x800C000F + INET_E_CANNOT_INSTANTIATE_OBJECT Handle = 0x800C0010 + INET_E_INVALID_CERTIFICATE Handle = 0x800C0019 + INET_E_REDIRECT_FAILED Handle = 0x800C0014 + INET_E_REDIRECT_TO_DIR Handle = 0x800C0015 + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00001 + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN Handle = 0x80B00002 + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00003 + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN Handle = 0x80B00004 + ERROR_IO_PREEMPTED Handle = 0x89010001 + JSCRIPT_E_CANTEXECUTE Handle = 0x89020001 + WEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES Handle = 0x88010001 + WEP_E_FIXED_DATA_NOT_SUPPORTED Handle = 0x88010002 + WEP_E_HARDWARE_NOT_COMPLIANT Handle = 0x88010003 + WEP_E_LOCK_NOT_CONFIGURED Handle = 0x88010004 + WEP_E_PROTECTION_SUSPENDED Handle = 0x88010005 + WEP_E_NO_LICENSE Handle = 0x88010006 + WEP_E_OS_NOT_PROTECTED Handle = 0x88010007 + WEP_E_UNEXPECTED_FAIL Handle = 0x88010008 + WEP_E_BUFFER_TOO_LARGE Handle = 0x88010009 + ERROR_SVHDX_ERROR_STORED Handle = 0xC05C0000 + ERROR_SVHDX_ERROR_NOT_AVAILABLE Handle = 0xC05CFF00 + ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE Handle = 0xC05CFF01 + ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED Handle = 0xC05CFF02 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED Handle = 0xC05CFF03 + ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED Handle = 0xC05CFF04 + ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED Handle = 0xC05CFF05 + ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED Handle = 0xC05CFF06 + ERROR_SVHDX_RESERVATION_CONFLICT Handle = 0xC05CFF07 + ERROR_SVHDX_WRONG_FILE_TYPE Handle = 0xC05CFF08 + ERROR_SVHDX_VERSION_MISMATCH Handle = 0xC05CFF09 + ERROR_VHD_SHARED Handle = 0xC05CFF0A + ERROR_SVHDX_NO_INITIATOR Handle = 0xC05CFF0B + ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND Handle = 0xC05CFF0C + ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP Handle = 0xC05D0000 + ERROR_SMB_BAD_CLUSTER_DIALECT Handle = 0xC05D0001 + WININET_E_OUT_OF_HANDLES Handle = 0x80072EE1 + WININET_E_TIMEOUT Handle = 0x80072EE2 + WININET_E_EXTENDED_ERROR Handle = 0x80072EE3 + WININET_E_INTERNAL_ERROR Handle = 0x80072EE4 + WININET_E_INVALID_URL Handle = 0x80072EE5 + WININET_E_UNRECOGNIZED_SCHEME Handle = 0x80072EE6 + WININET_E_NAME_NOT_RESOLVED Handle = 0x80072EE7 + WININET_E_PROTOCOL_NOT_FOUND Handle = 0x80072EE8 + WININET_E_INVALID_OPTION Handle = 0x80072EE9 + WININET_E_BAD_OPTION_LENGTH Handle = 0x80072EEA + WININET_E_OPTION_NOT_SETTABLE Handle = 0x80072EEB + WININET_E_SHUTDOWN Handle = 0x80072EEC + WININET_E_INCORRECT_USER_NAME Handle = 0x80072EED + WININET_E_INCORRECT_PASSWORD Handle = 0x80072EEE + WININET_E_LOGIN_FAILURE Handle = 0x80072EEF + WININET_E_INVALID_OPERATION Handle = 0x80072EF0 + WININET_E_OPERATION_CANCELLED Handle = 0x80072EF1 + WININET_E_INCORRECT_HANDLE_TYPE Handle = 0x80072EF2 + WININET_E_INCORRECT_HANDLE_STATE Handle = 0x80072EF3 + WININET_E_NOT_PROXY_REQUEST Handle = 0x80072EF4 + WININET_E_REGISTRY_VALUE_NOT_FOUND Handle = 0x80072EF5 + WININET_E_BAD_REGISTRY_PARAMETER Handle = 0x80072EF6 + WININET_E_NO_DIRECT_ACCESS Handle = 0x80072EF7 + WININET_E_NO_CONTEXT Handle = 0x80072EF8 + WININET_E_NO_CALLBACK Handle = 0x80072EF9 + WININET_E_REQUEST_PENDING Handle = 0x80072EFA + WININET_E_INCORRECT_FORMAT Handle = 0x80072EFB + WININET_E_ITEM_NOT_FOUND Handle = 0x80072EFC + WININET_E_CANNOT_CONNECT Handle = 0x80072EFD + WININET_E_CONNECTION_ABORTED Handle = 0x80072EFE + WININET_E_CONNECTION_RESET Handle = 0x80072EFF + WININET_E_FORCE_RETRY Handle = 0x80072F00 + WININET_E_INVALID_PROXY_REQUEST Handle = 0x80072F01 + WININET_E_NEED_UI Handle = 0x80072F02 + WININET_E_HANDLE_EXISTS Handle = 0x80072F04 + WININET_E_SEC_CERT_DATE_INVALID Handle = 0x80072F05 + WININET_E_SEC_CERT_CN_INVALID Handle = 0x80072F06 + WININET_E_HTTP_TO_HTTPS_ON_REDIR Handle = 0x80072F07 + WININET_E_HTTPS_TO_HTTP_ON_REDIR Handle = 0x80072F08 + WININET_E_MIXED_SECURITY Handle = 0x80072F09 + WININET_E_CHG_POST_IS_NON_SECURE Handle = 0x80072F0A + WININET_E_POST_IS_NON_SECURE Handle = 0x80072F0B + WININET_E_CLIENT_AUTH_CERT_NEEDED Handle = 0x80072F0C + WININET_E_INVALID_CA Handle = 0x80072F0D + WININET_E_CLIENT_AUTH_NOT_SETUP Handle = 0x80072F0E + WININET_E_ASYNC_THREAD_FAILED Handle = 0x80072F0F + WININET_E_REDIRECT_SCHEME_CHANGE Handle = 0x80072F10 + WININET_E_DIALOG_PENDING Handle = 0x80072F11 + WININET_E_RETRY_DIALOG Handle = 0x80072F12 + WININET_E_NO_NEW_CONTAINERS Handle = 0x80072F13 + WININET_E_HTTPS_HTTP_SUBMIT_REDIR Handle = 0x80072F14 + WININET_E_SEC_CERT_ERRORS Handle = 0x80072F17 + WININET_E_SEC_CERT_REV_FAILED Handle = 0x80072F19 + WININET_E_HEADER_NOT_FOUND Handle = 0x80072F76 + WININET_E_DOWNLEVEL_SERVER Handle = 0x80072F77 + WININET_E_INVALID_SERVER_RESPONSE Handle = 0x80072F78 + WININET_E_INVALID_HEADER Handle = 0x80072F79 + WININET_E_INVALID_QUERY_REQUEST Handle = 0x80072F7A + WININET_E_HEADER_ALREADY_EXISTS Handle = 0x80072F7B + WININET_E_REDIRECT_FAILED Handle = 0x80072F7C + WININET_E_SECURITY_CHANNEL_ERROR Handle = 0x80072F7D + WININET_E_UNABLE_TO_CACHE_FILE Handle = 0x80072F7E + WININET_E_TCPIP_NOT_INSTALLED Handle = 0x80072F7F + WININET_E_DISCONNECTED Handle = 0x80072F83 + WININET_E_SERVER_UNREACHABLE Handle = 0x80072F84 + WININET_E_PROXY_SERVER_UNREACHABLE Handle = 0x80072F85 + WININET_E_BAD_AUTO_PROXY_SCRIPT Handle = 0x80072F86 + WININET_E_UNABLE_TO_DOWNLOAD_SCRIPT Handle = 0x80072F87 + WININET_E_SEC_INVALID_CERT Handle = 0x80072F89 + WININET_E_SEC_CERT_REVOKED Handle = 0x80072F8A + WININET_E_FAILED_DUETOSECURITYCHECK Handle = 0x80072F8B + WININET_E_NOT_INITIALIZED Handle = 0x80072F8C + WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY Handle = 0x80072F8E + WININET_E_DECODING_FAILED Handle = 0x80072F8F + WININET_E_NOT_REDIRECTED Handle = 0x80072F80 + WININET_E_COOKIE_NEEDS_CONFIRMATION Handle = 0x80072F81 + WININET_E_COOKIE_DECLINED Handle = 0x80072F82 + WININET_E_REDIRECT_NEEDS_CONFIRMATION Handle = 0x80072F88 + SQLITE_E_ERROR Handle = 0x87AF0001 + SQLITE_E_INTERNAL Handle = 0x87AF0002 + SQLITE_E_PERM Handle = 0x87AF0003 + SQLITE_E_ABORT Handle = 0x87AF0004 + SQLITE_E_BUSY Handle = 0x87AF0005 + SQLITE_E_LOCKED Handle = 0x87AF0006 + SQLITE_E_NOMEM Handle = 0x87AF0007 + SQLITE_E_READONLY Handle = 0x87AF0008 + SQLITE_E_INTERRUPT Handle = 0x87AF0009 + SQLITE_E_IOERR Handle = 0x87AF000A + SQLITE_E_CORRUPT Handle = 0x87AF000B + SQLITE_E_NOTFOUND Handle = 0x87AF000C + SQLITE_E_FULL Handle = 0x87AF000D + SQLITE_E_CANTOPEN Handle = 0x87AF000E + SQLITE_E_PROTOCOL Handle = 0x87AF000F + SQLITE_E_EMPTY Handle = 0x87AF0010 + SQLITE_E_SCHEMA Handle = 0x87AF0011 + SQLITE_E_TOOBIG Handle = 0x87AF0012 + SQLITE_E_CONSTRAINT Handle = 0x87AF0013 + SQLITE_E_MISMATCH Handle = 0x87AF0014 + SQLITE_E_MISUSE Handle = 0x87AF0015 + SQLITE_E_NOLFS Handle = 0x87AF0016 + SQLITE_E_AUTH Handle = 0x87AF0017 + SQLITE_E_FORMAT Handle = 0x87AF0018 + SQLITE_E_RANGE Handle = 0x87AF0019 + SQLITE_E_NOTADB Handle = 0x87AF001A + SQLITE_E_NOTICE Handle = 0x87AF001B + SQLITE_E_WARNING Handle = 0x87AF001C + SQLITE_E_ROW Handle = 0x87AF0064 + SQLITE_E_DONE Handle = 0x87AF0065 + SQLITE_E_IOERR_READ Handle = 0x87AF010A + SQLITE_E_IOERR_SHORT_READ Handle = 0x87AF020A + SQLITE_E_IOERR_WRITE Handle = 0x87AF030A + SQLITE_E_IOERR_FSYNC Handle = 0x87AF040A + SQLITE_E_IOERR_DIR_FSYNC Handle = 0x87AF050A + SQLITE_E_IOERR_TRUNCATE Handle = 0x87AF060A + SQLITE_E_IOERR_FSTAT Handle = 0x87AF070A + SQLITE_E_IOERR_UNLOCK Handle = 0x87AF080A + SQLITE_E_IOERR_RDLOCK Handle = 0x87AF090A + SQLITE_E_IOERR_DELETE Handle = 0x87AF0A0A + SQLITE_E_IOERR_BLOCKED Handle = 0x87AF0B0A + SQLITE_E_IOERR_NOMEM Handle = 0x87AF0C0A + SQLITE_E_IOERR_ACCESS Handle = 0x87AF0D0A + SQLITE_E_IOERR_CHECKRESERVEDLOCK Handle = 0x87AF0E0A + SQLITE_E_IOERR_LOCK Handle = 0x87AF0F0A + SQLITE_E_IOERR_CLOSE Handle = 0x87AF100A + SQLITE_E_IOERR_DIR_CLOSE Handle = 0x87AF110A + SQLITE_E_IOERR_SHMOPEN Handle = 0x87AF120A + SQLITE_E_IOERR_SHMSIZE Handle = 0x87AF130A + SQLITE_E_IOERR_SHMLOCK Handle = 0x87AF140A + SQLITE_E_IOERR_SHMMAP Handle = 0x87AF150A + SQLITE_E_IOERR_SEEK Handle = 0x87AF160A + SQLITE_E_IOERR_DELETE_NOENT Handle = 0x87AF170A + SQLITE_E_IOERR_MMAP Handle = 0x87AF180A + SQLITE_E_IOERR_GETTEMPPATH Handle = 0x87AF190A + SQLITE_E_IOERR_CONVPATH Handle = 0x87AF1A0A + SQLITE_E_IOERR_VNODE Handle = 0x87AF1A02 + SQLITE_E_IOERR_AUTH Handle = 0x87AF1A03 + SQLITE_E_LOCKED_SHAREDCACHE Handle = 0x87AF0106 + SQLITE_E_BUSY_RECOVERY Handle = 0x87AF0105 + SQLITE_E_BUSY_SNAPSHOT Handle = 0x87AF0205 + SQLITE_E_CANTOPEN_NOTEMPDIR Handle = 0x87AF010E + SQLITE_E_CANTOPEN_ISDIR Handle = 0x87AF020E + SQLITE_E_CANTOPEN_FULLPATH Handle = 0x87AF030E + SQLITE_E_CANTOPEN_CONVPATH Handle = 0x87AF040E + SQLITE_E_CORRUPT_VTAB Handle = 0x87AF010B + SQLITE_E_READONLY_RECOVERY Handle = 0x87AF0108 + SQLITE_E_READONLY_CANTLOCK Handle = 0x87AF0208 + SQLITE_E_READONLY_ROLLBACK Handle = 0x87AF0308 + SQLITE_E_READONLY_DBMOVED Handle = 0x87AF0408 + SQLITE_E_ABORT_ROLLBACK Handle = 0x87AF0204 + SQLITE_E_CONSTRAINT_CHECK Handle = 0x87AF0113 + SQLITE_E_CONSTRAINT_COMMITHOOK Handle = 0x87AF0213 + SQLITE_E_CONSTRAINT_FOREIGNKEY Handle = 0x87AF0313 + SQLITE_E_CONSTRAINT_FUNCTION Handle = 0x87AF0413 + SQLITE_E_CONSTRAINT_NOTNULL Handle = 0x87AF0513 + SQLITE_E_CONSTRAINT_PRIMARYKEY Handle = 0x87AF0613 + SQLITE_E_CONSTRAINT_TRIGGER Handle = 0x87AF0713 + SQLITE_E_CONSTRAINT_UNIQUE Handle = 0x87AF0813 + SQLITE_E_CONSTRAINT_VTAB Handle = 0x87AF0913 + SQLITE_E_CONSTRAINT_ROWID Handle = 0x87AF0A13 + SQLITE_E_NOTICE_RECOVER_WAL Handle = 0x87AF011B + SQLITE_E_NOTICE_RECOVER_ROLLBACK Handle = 0x87AF021B + SQLITE_E_WARNING_AUTOINDEX Handle = 0x87AF011C + UTC_E_TOGGLE_TRACE_STARTED Handle = 0x87C51001 + UTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT Handle = 0x87C51002 + UTC_E_AOT_NOT_RUNNING Handle = 0x87C51003 + UTC_E_SCRIPT_TYPE_INVALID Handle = 0x87C51004 + UTC_E_SCENARIODEF_NOT_FOUND Handle = 0x87C51005 + UTC_E_TRACEPROFILE_NOT_FOUND Handle = 0x87C51006 + UTC_E_FORWARDER_ALREADY_ENABLED Handle = 0x87C51007 + UTC_E_FORWARDER_ALREADY_DISABLED Handle = 0x87C51008 + UTC_E_EVENTLOG_ENTRY_MALFORMED Handle = 0x87C51009 + UTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH Handle = 0x87C5100A + UTC_E_SCRIPT_TERMINATED Handle = 0x87C5100B + UTC_E_INVALID_CUSTOM_FILTER Handle = 0x87C5100C + UTC_E_TRACE_NOT_RUNNING Handle = 0x87C5100D + UTC_E_REESCALATED_TOO_QUICKLY Handle = 0x87C5100E + UTC_E_ESCALATION_ALREADY_RUNNING Handle = 0x87C5100F + UTC_E_PERFTRACK_ALREADY_TRACING Handle = 0x87C51010 + UTC_E_REACHED_MAX_ESCALATIONS Handle = 0x87C51011 + UTC_E_FORWARDER_PRODUCER_MISMATCH Handle = 0x87C51012 + UTC_E_INTENTIONAL_SCRIPT_FAILURE Handle = 0x87C51013 + UTC_E_SQM_INIT_FAILED Handle = 0x87C51014 + UTC_E_NO_WER_LOGGER_SUPPORTED Handle = 0x87C51015 + UTC_E_TRACERS_DONT_EXIST Handle = 0x87C51016 + UTC_E_WINRT_INIT_FAILED Handle = 0x87C51017 + UTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH Handle = 0x87C51018 + UTC_E_INVALID_FILTER Handle = 0x87C51019 + UTC_E_EXE_TERMINATED Handle = 0x87C5101A + UTC_E_ESCALATION_NOT_AUTHORIZED Handle = 0x87C5101B + UTC_E_SETUP_NOT_AUTHORIZED Handle = 0x87C5101C + UTC_E_CHILD_PROCESS_FAILED Handle = 0x87C5101D + UTC_E_COMMAND_LINE_NOT_AUTHORIZED Handle = 0x87C5101E + UTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML Handle = 0x87C5101F + UTC_E_ESCALATION_TIMED_OUT Handle = 0x87C51020 + UTC_E_SETUP_TIMED_OUT Handle = 0x87C51021 + UTC_E_TRIGGER_MISMATCH Handle = 0x87C51022 + UTC_E_TRIGGER_NOT_FOUND Handle = 0x87C51023 + UTC_E_SIF_NOT_SUPPORTED Handle = 0x87C51024 + UTC_E_DELAY_TERMINATED Handle = 0x87C51025 + UTC_E_DEVICE_TICKET_ERROR Handle = 0x87C51026 + UTC_E_TRACE_BUFFER_LIMIT_EXCEEDED Handle = 0x87C51027 + UTC_E_API_RESULT_UNAVAILABLE Handle = 0x87C51028 + UTC_E_RPC_TIMEOUT Handle = 0x87C51029 + UTC_E_RPC_WAIT_FAILED Handle = 0x87C5102A + UTC_E_API_BUSY Handle = 0x87C5102B + UTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET Handle = 0x87C5102C + UTC_E_EXCLUSIVITY_NOT_AVAILABLE Handle = 0x87C5102D + UTC_E_GETFILE_FILE_PATH_NOT_APPROVED Handle = 0x87C5102E + UTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS Handle = 0x87C5102F + UTC_E_TIME_TRIGGER_ON_START_INVALID Handle = 0x87C51030 + UTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION Handle = 0x87C51031 + UTC_E_TIME_TRIGGER_INVALID_TIME_RANGE Handle = 0x87C51032 + UTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE Handle = 0x87C51033 + UTC_E_BINARY_MISSING Handle = 0x87C51034 + UTC_E_NETWORK_CAPTURE_NOT_ALLOWED Handle = 0x87C51035 + UTC_E_FAILED_TO_RESOLVE_CONTAINER_ID Handle = 0x87C51036 + UTC_E_UNABLE_TO_RESOLVE_SESSION Handle = 0x87C51037 + UTC_E_THROTTLED Handle = 0x87C51038 + UTC_E_UNAPPROVED_SCRIPT Handle = 0x87C51039 + UTC_E_SCRIPT_MISSING Handle = 0x87C5103A + UTC_E_SCENARIO_THROTTLED Handle = 0x87C5103B + UTC_E_API_NOT_SUPPORTED Handle = 0x87C5103C + UTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED Handle = 0x87C5103D + UTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED Handle = 0x87C5103E + UTC_E_CERT_REV_FAILED Handle = 0x87C5103F + UTC_E_FAILED_TO_START_NDISCAP Handle = 0x87C51040 + UTC_E_KERNELDUMP_LIMIT_REACHED Handle = 0x87C51041 + UTC_E_MISSING_AGGREGATE_EVENT_TAG Handle = 0x87C51042 + UTC_E_INVALID_AGGREGATION_STRUCT Handle = 0x87C51043 + UTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION Handle = 0x87C51044 + UTC_E_FILTER_MISSING_ATTRIBUTE Handle = 0x87C51045 + UTC_E_FILTER_INVALID_TYPE Handle = 0x87C51046 + UTC_E_FILTER_VARIABLE_NOT_FOUND Handle = 0x87C51047 + UTC_E_FILTER_FUNCTION_RESTRICTED Handle = 0x87C51048 + UTC_E_FILTER_VERSION_MISMATCH Handle = 0x87C51049 + UTC_E_FILTER_INVALID_FUNCTION Handle = 0x87C51050 + UTC_E_FILTER_INVALID_FUNCTION_PARAMS Handle = 0x87C51051 + UTC_E_FILTER_INVALID_COMMAND Handle = 0x87C51052 + UTC_E_FILTER_ILLEGAL_EVAL Handle = 0x87C51053 + UTC_E_TTTRACER_RETURNED_ERROR Handle = 0x87C51054 + UTC_E_AGENT_DIAGNOSTICS_TOO_LARGE Handle = 0x87C51055 + UTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS Handle = 0x87C51056 + UTC_E_SCENARIO_HAS_NO_ACTIONS Handle = 0x87C51057 + UTC_E_TTTRACER_STORAGE_FULL Handle = 0x87C51058 + UTC_E_INSUFFICIENT_SPACE_TO_START_TRACE Handle = 0x87C51059 + UTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN Handle = 0x87C5105A + UTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED Handle = 0x87C5105B + WINML_ERR_INVALID_DEVICE Handle = 0x88900001 + WINML_ERR_INVALID_BINDING Handle = 0x88900002 + WINML_ERR_VALUE_NOTFOUND Handle = 0x88900003 + WINML_ERR_SIZE_MISMATCH Handle = 0x88900004 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go new file mode 100644 index 0000000..7060f43 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -0,0 +1,2779 @@ +// Code generated by 'go generate'; DO NOT EDIT. + +package windows + +import ( + "syscall" + "unsafe" +) + +var _ unsafe.Pointer + +// Do the interface allocations only once for common +// Errno values. +const ( + errnoERROR_IO_PENDING = 997 +) + +var ( + errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) +) + +// errnoErr returns common boxed Errno values, to prevent +// allocations at runtime. +func errnoErr(e syscall.Errno) error { + switch e { + case 0: + return nil + case errnoERROR_IO_PENDING: + return errERROR_IO_PENDING + } + // TODO: add more here, after collecting data on the common + // error values see on Windows. (perhaps when running + // all.bat?) + return e +} + +var ( + modadvapi32 = NewLazySystemDLL("advapi32.dll") + modkernel32 = NewLazySystemDLL("kernel32.dll") + modshell32 = NewLazySystemDLL("shell32.dll") + modmswsock = NewLazySystemDLL("mswsock.dll") + modcrypt32 = NewLazySystemDLL("crypt32.dll") + modws2_32 = NewLazySystemDLL("ws2_32.dll") + moddnsapi = NewLazySystemDLL("dnsapi.dll") + modiphlpapi = NewLazySystemDLL("iphlpapi.dll") + modsecur32 = NewLazySystemDLL("secur32.dll") + modnetapi32 = NewLazySystemDLL("netapi32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") + + procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") + procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") + procReportEventW = modadvapi32.NewProc("ReportEventW") + procOpenSCManagerW = modadvapi32.NewProc("OpenSCManagerW") + procCloseServiceHandle = modadvapi32.NewProc("CloseServiceHandle") + procCreateServiceW = modadvapi32.NewProc("CreateServiceW") + procOpenServiceW = modadvapi32.NewProc("OpenServiceW") + procDeleteService = modadvapi32.NewProc("DeleteService") + procStartServiceW = modadvapi32.NewProc("StartServiceW") + procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procControlService = modadvapi32.NewProc("ControlService") + procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") + procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") + procChangeServiceConfigW = modadvapi32.NewProc("ChangeServiceConfigW") + procQueryServiceConfigW = modadvapi32.NewProc("QueryServiceConfigW") + procChangeServiceConfig2W = modadvapi32.NewProc("ChangeServiceConfig2W") + procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") + procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") + procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procGetLastError = modkernel32.NewProc("GetLastError") + procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") + procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") + procFreeLibrary = modkernel32.NewProc("FreeLibrary") + procGetProcAddress = modkernel32.NewProc("GetProcAddress") + procGetVersion = modkernel32.NewProc("GetVersion") + procFormatMessageW = modkernel32.NewProc("FormatMessageW") + procExitProcess = modkernel32.NewProc("ExitProcess") + procCreateFileW = modkernel32.NewProc("CreateFileW") + procReadFile = modkernel32.NewProc("ReadFile") + procWriteFile = modkernel32.NewProc("WriteFile") + procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") + procSetFilePointer = modkernel32.NewProc("SetFilePointer") + procCloseHandle = modkernel32.NewProc("CloseHandle") + procGetStdHandle = modkernel32.NewProc("GetStdHandle") + procSetStdHandle = modkernel32.NewProc("SetStdHandle") + procFindFirstFileW = modkernel32.NewProc("FindFirstFileW") + procFindNextFileW = modkernel32.NewProc("FindNextFileW") + procFindClose = modkernel32.NewProc("FindClose") + procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle") + procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") + procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") + procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") + procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW") + procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW") + procDeleteFileW = modkernel32.NewProc("DeleteFileW") + procMoveFileW = modkernel32.NewProc("MoveFileW") + procMoveFileExW = modkernel32.NewProc("MoveFileExW") + procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") + procSetEndOfFile = modkernel32.NewProc("SetEndOfFile") + procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime") + procGetSystemTimePreciseAsFileTime = modkernel32.NewProc("GetSystemTimePreciseAsFileTime") + procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation") + procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") + procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") + procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus") + procCancelIo = modkernel32.NewProc("CancelIo") + procCancelIoEx = modkernel32.NewProc("CancelIoEx") + procCreateProcessW = modkernel32.NewProc("CreateProcessW") + procOpenProcess = modkernel32.NewProc("OpenProcess") + procTerminateProcess = modkernel32.NewProc("TerminateProcess") + procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") + procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") + procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") + procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") + procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") + procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") + procWaitForMultipleObjects = modkernel32.NewProc("WaitForMultipleObjects") + procGetTempPathW = modkernel32.NewProc("GetTempPathW") + procCreatePipe = modkernel32.NewProc("CreatePipe") + procGetFileType = modkernel32.NewProc("GetFileType") + procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW") + procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext") + procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom") + procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW") + procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") + procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") + procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procSetFileTime = modkernel32.NewProc("SetFileTime") + procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") + procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") + procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW") + procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") + procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW") + procLocalFree = modkernel32.NewProc("LocalFree") + procSetHandleInformation = modkernel32.NewProc("SetHandleInformation") + procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers") + procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW") + procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW") + procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW") + procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW") + procMapViewOfFile = modkernel32.NewProc("MapViewOfFile") + procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile") + procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile") + procVirtualLock = modkernel32.NewProc("VirtualLock") + procVirtualUnlock = modkernel32.NewProc("VirtualUnlock") + procVirtualAlloc = modkernel32.NewProc("VirtualAlloc") + procVirtualFree = modkernel32.NewProc("VirtualFree") + procVirtualProtect = modkernel32.NewProc("VirtualProtect") + procTransmitFile = modmswsock.NewProc("TransmitFile") + procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW") + procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW") + procCertOpenStore = modcrypt32.NewProc("CertOpenStore") + procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore") + procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore") + procCertCloseStore = modcrypt32.NewProc("CertCloseStore") + procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain") + procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain") + procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext") + procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext") + procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy") + procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW") + procRegCloseKey = modadvapi32.NewProc("RegCloseKey") + procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW") + procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW") + procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW") + procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") + procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") + procWriteConsoleW = modkernel32.NewProc("WriteConsoleW") + procReadConsoleW = modkernel32.NewProc("ReadConsoleW") + procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") + procProcess32FirstW = modkernel32.NewProc("Process32FirstW") + procProcess32NextW = modkernel32.NewProc("Process32NextW") + procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") + procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") + procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") + procGetCurrentThreadId = modkernel32.NewProc("GetCurrentThreadId") + procCreateEventW = modkernel32.NewProc("CreateEventW") + procCreateEventExW = modkernel32.NewProc("CreateEventExW") + procOpenEventW = modkernel32.NewProc("OpenEventW") + procSetEvent = modkernel32.NewProc("SetEvent") + procResetEvent = modkernel32.NewProc("ResetEvent") + procPulseEvent = modkernel32.NewProc("PulseEvent") + procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") + procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") + procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") + procFindFirstVolumeMountPointW = modkernel32.NewProc("FindFirstVolumeMountPointW") + procFindNextVolumeW = modkernel32.NewProc("FindNextVolumeW") + procFindNextVolumeMountPointW = modkernel32.NewProc("FindNextVolumeMountPointW") + procFindVolumeClose = modkernel32.NewProc("FindVolumeClose") + procFindVolumeMountPointClose = modkernel32.NewProc("FindVolumeMountPointClose") + procGetDriveTypeW = modkernel32.NewProc("GetDriveTypeW") + procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives") + procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW") + procGetVolumeInformationW = modkernel32.NewProc("GetVolumeInformationW") + procGetVolumeInformationByHandleW = modkernel32.NewProc("GetVolumeInformationByHandleW") + procGetVolumeNameForVolumeMountPointW = modkernel32.NewProc("GetVolumeNameForVolumeMountPointW") + procGetVolumePathNameW = modkernel32.NewProc("GetVolumePathNameW") + procGetVolumePathNamesForVolumeNameW = modkernel32.NewProc("GetVolumePathNamesForVolumeNameW") + procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") + procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") + procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procWSAStartup = modws2_32.NewProc("WSAStartup") + procWSACleanup = modws2_32.NewProc("WSACleanup") + procWSAIoctl = modws2_32.NewProc("WSAIoctl") + procsocket = modws2_32.NewProc("socket") + procsetsockopt = modws2_32.NewProc("setsockopt") + procgetsockopt = modws2_32.NewProc("getsockopt") + procbind = modws2_32.NewProc("bind") + procconnect = modws2_32.NewProc("connect") + procgetsockname = modws2_32.NewProc("getsockname") + procgetpeername = modws2_32.NewProc("getpeername") + proclisten = modws2_32.NewProc("listen") + procshutdown = modws2_32.NewProc("shutdown") + procclosesocket = modws2_32.NewProc("closesocket") + procAcceptEx = modmswsock.NewProc("AcceptEx") + procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs") + procWSARecv = modws2_32.NewProc("WSARecv") + procWSASend = modws2_32.NewProc("WSASend") + procWSARecvFrom = modws2_32.NewProc("WSARecvFrom") + procWSASendTo = modws2_32.NewProc("WSASendTo") + procgethostbyname = modws2_32.NewProc("gethostbyname") + procgetservbyname = modws2_32.NewProc("getservbyname") + procntohs = modws2_32.NewProc("ntohs") + procgetprotobyname = modws2_32.NewProc("getprotobyname") + procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W") + procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") + procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W") + procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW") + procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW") + procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") + procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW") + procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") + procGetACP = modkernel32.NewProc("GetACP") + procMultiByteToWideChar = modkernel32.NewProc("MultiByteToWideChar") + procTranslateNameW = modsecur32.NewProc("TranslateNameW") + procGetUserNameExW = modsecur32.NewProc("GetUserNameExW") + procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo") + procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation") + procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree") + procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW") + procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") + procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") + procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW") + procGetLengthSid = modadvapi32.NewProc("GetLengthSid") + procCopySid = modadvapi32.NewProc("CopySid") + procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") + procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procFreeSid = modadvapi32.NewProc("FreeSid") + procEqualSid = modadvapi32.NewProc("EqualSid") + procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") + procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") + procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") +) + +func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procRegisterEventSourceW.Addr(), 2, uintptr(unsafe.Pointer(uncServerName)), uintptr(unsafe.Pointer(sourceName)), 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeregisterEventSource(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeregisterEventSource.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procReportEventW.Addr(), 9, uintptr(log), uintptr(etype), uintptr(category), uintptr(eventId), uintptr(usrSId), uintptr(numStrings), uintptr(dataSize), uintptr(unsafe.Pointer(strings)), uintptr(unsafe.Pointer(rawData))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CloseServiceHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseServiceHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall15(procCreateServiceW.Addr(), 13, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(unsafe.Pointer(displayName)), uintptr(access), uintptr(srvType), uintptr(startType), uintptr(errCtl), uintptr(unsafe.Pointer(pathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteService(service Handle) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteService.Addr(), 1, uintptr(service), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) { + r1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) { + r1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procChangeServiceConfigW.Addr(), 11, uintptr(service), uintptr(serviceType), uintptr(startType), uintptr(errorControl), uintptr(unsafe.Pointer(binaryPathName)), uintptr(unsafe.Pointer(loadOrderGroup)), uintptr(unsafe.Pointer(tagId)), uintptr(unsafe.Pointer(dependencies)), uintptr(unsafe.Pointer(serviceStartName)), uintptr(unsafe.Pointer(password)), uintptr(unsafe.Pointer(displayName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procChangeServiceConfig2W.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceConfig2W.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) { + r1, _, e1 := syscall.Syscall12(procEnumServicesStatusExW.Addr(), 10, uintptr(mgr), uintptr(infoLevel), uintptr(serviceType), uintptr(serviceState), uintptr(unsafe.Pointer(services)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)), uintptr(unsafe.Pointer(resumeHandle)), uintptr(unsafe.Pointer(groupName)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceStatusEx.Addr(), 5, uintptr(service), uintptr(infoLevel), uintptr(unsafe.Pointer(buff)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLastError() (lasterr error) { + r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) + if r0 != 0 { + lasterr = syscall.Errno(r0) + } + return +} + +func LoadLibrary(libname string) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibrary(_p0) +} + +func _LoadLibrary(libname *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) { + var _p0 *uint16 + _p0, err = syscall.UTF16PtrFromString(libname) + if err != nil { + return + } + return _LoadLibraryEx(_p0, zero, flags) +} + +func _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeLibrary(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFreeLibrary.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetProcAddress(module Handle, procname string) (proc uintptr, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(procname) + if err != nil { + return + } + return _GetProcAddress(module, _p0) +} + +func _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) { + r0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0) + proc = uintptr(r0) + if proc == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVersion() (ver uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetVersion.Addr(), 0, 0, 0, 0) + ver = uint32(r0) + if ver == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) { + var _p0 *uint16 + if len(buf) > 0 { + _p0 = &buf[0] + } + r0, _, e1 := syscall.Syscall9(procFormatMessageW.Addr(), 7, uintptr(flags), uintptr(msgsrc), uintptr(msgid), uintptr(langid), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(args)), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ExitProcess(exitcode uint32) { + syscall.Syscall(procExitProcess.Addr(), 1, uintptr(exitcode), 0, 0) + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procReadFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) { + var _p0 *byte + if len(buf) > 0 { + _p0 = &buf[0] + } + r1, _, e1 := syscall.Syscall6(procWriteFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(done)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { + var _p0 uint32 + if wait { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) { + r0, _, e1 := syscall.Syscall6(procSetFilePointer.Addr(), 4, uintptr(handle), uintptr(lowoffset), uintptr(unsafe.Pointer(highoffsetptr)), uintptr(whence), 0, 0) + newlowoffset = uint32(r0) + if newlowoffset == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CloseHandle(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetStdHandle(stdhandle uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetStdHandle.Addr(), 1, uintptr(stdhandle), 0, 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetStdHandle(stdhandle uint32, handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func findNextFile1(handle Handle, data *win32finddata1) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindClose(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentDirectoryW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetCurrentDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) { + r1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RemoveDirectory(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteFile(path *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MoveFile(from *uint16, to *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetComputerName(buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameW.Addr(), 2, uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetComputerNameExW.Addr(), 3, uintptr(nametype), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(n))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEndOfFile(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetSystemTimeAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimeAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func GetSystemTimePreciseAsFileTime(time *Filetime) { + syscall.Syscall(procGetSystemTimePreciseAsFileTime.Addr(), 1, uintptr(unsafe.Pointer(time)), 0, 0) + return +} + +func GetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTimeZoneInformation.Addr(), 1, uintptr(unsafe.Pointer(tzi)), 0, 0) + rc = uint32(r0) + if rc == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uint32, threadcnt uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uint32, overlapped **Overlapped, timeout uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(cphandle), uintptr(unsafe.Pointer(qty)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(overlapped)), uintptr(timeout), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CancelIo(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CancelIoEx(s Handle, o *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) { + var _p0 uint32 + if inheritHandles { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall12(procCreateProcessW.Addr(), 10, uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TerminateProcess(handle Handle, exitcode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetStartupInfo(startupInfo *StartupInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentProcess() (pseudoHandle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentProcess.Addr(), 0, 0, 0, 0) + pseudoHandle = Handle(r0) + if pseudoHandle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) { + var _p0 uint32 + if bInheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall9(procDuplicateHandle.Addr(), 7, uintptr(hSourceProcessHandle), uintptr(hSourceHandle), uintptr(hTargetProcessHandle), uintptr(unsafe.Pointer(lpTargetHandle)), uintptr(dwDesiredAccess), uintptr(_p0), uintptr(dwOptions), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) { + r0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0) + event = uint32(r0) + if event == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) { + var _p0 uint32 + if waitAll { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0) + event = uint32(r0) + if event == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTempPath(buflen uint32, buf *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetTempPathW.Addr(), 2, uintptr(buflen), uintptr(unsafe.Pointer(buf)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreatePipe.Addr(), 4, uintptr(unsafe.Pointer(readhandle)), uintptr(unsafe.Pointer(writehandle)), uintptr(unsafe.Pointer(sa)), uintptr(size), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileType(filehandle Handle) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCryptAcquireContextW.Addr(), 5, uintptr(unsafe.Pointer(provhandle)), uintptr(unsafe.Pointer(container)), uintptr(unsafe.Pointer(provider)), uintptr(provtype), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptReleaseContext(provhandle Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCryptReleaseContext.Addr(), 2, uintptr(provhandle), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) { + r1, _, e1 := syscall.Syscall(procCryptGenRandom.Addr(), 3, uintptr(provhandle), uintptr(buflen), uintptr(unsafe.Pointer(buf))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetEnvironmentStrings() (envs *uint16, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentStringsW.Addr(), 0, 0, 0, 0) + envs = (*uint16)(unsafe.Pointer(r0)) + if envs == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeEnvironmentStrings(envs *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procFreeEnvironmentStringsW.Addr(), 1, uintptr(unsafe.Pointer(envs)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { + r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileAttributes(name *uint16) (attrs uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + attrs = uint32(r0) + if attrs == INVALID_FILE_ATTRIBUTES { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetFileAttributes(name *uint16, attrs uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) { + r1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCommandLine() (cmd *uint16) { + r0, _, _ := syscall.Syscall(procGetCommandLineW.Addr(), 0, 0, 0, 0) + cmd = (*uint16)(unsafe.Pointer(r0)) + return +} + +func CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) { + r0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0) + argv = (*[8192]*[8192]uint16)(unsafe.Pointer(r0)) + if argv == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LocalFree(hmem Handle) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0) + handle = Handle(r0) + if handle != 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetHandleInformation(handle Handle, mask uint32, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetHandleInformation.Addr(), 3, uintptr(handle), uintptr(mask), uintptr(flags)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FlushFileBuffers(handle Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall6(procGetFullPathNameW.Addr(), 4, uintptr(unsafe.Pointer(path)), uintptr(buflen), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(fname)), 0, 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateFileMappingW.Addr(), 6, uintptr(fhandle), uintptr(unsafe.Pointer(sa)), uintptr(prot), uintptr(maxSizeHigh), uintptr(maxSizeLow), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procMapViewOfFile.Addr(), 5, uintptr(handle), uintptr(access), uintptr(offsetHigh), uintptr(offsetLow), uintptr(length), 0) + addr = uintptr(r0) + if addr == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func UnmapViewOfFile(addr uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FlushViewOfFile(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualLock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualUnlock(addr uintptr, length uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) { + r0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0) + value = uintptr(r0) + if value == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) { + r1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procTransmitFile.Addr(), 7, uintptr(s), uintptr(handle), uintptr(bytesToWrite), uintptr(bytsPerSend), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(transmitFileBuf)), uintptr(flags), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + var _p0 uint32 + if watchSubTree { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall9(procReadDirectoryChangesW.Addr(), 8, uintptr(handle), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(_p0), uintptr(mask), uintptr(unsafe.Pointer(retlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) { + r0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0) + store = Handle(r0) + if store == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertEnumCertificatesInStore.Addr(), 2, uintptr(store), uintptr(unsafe.Pointer(prevContext)), 0) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) { + r1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertCloseStore(store Handle, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) { + r1, _, e1 := syscall.Syscall9(procCertGetCertificateChain.Addr(), 8, uintptr(engine), uintptr(unsafe.Pointer(leaf)), uintptr(unsafe.Pointer(time)), uintptr(additionalStore), uintptr(unsafe.Pointer(para)), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(chainCtx)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertFreeCertificateChain(ctx *CertChainContext) { + syscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + return +} + +func CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) { + r0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen)) + context = (*CertContext)(unsafe.Pointer(r0)) + if context == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertFreeCertificateContext(ctx *CertContext) (err error) { + r1, _, e1 := syscall.Syscall(procCertFreeCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) { + r1, _, e1 := syscall.Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, uintptr(policyOID), uintptr(unsafe.Pointer(chain)), uintptr(unsafe.Pointer(para)), uintptr(unsafe.Pointer(status)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegOpenKeyExW.Addr(), 5, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(options), uintptr(desiredAccess), uintptr(unsafe.Pointer(result)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegCloseKey(key Handle) (regerrno error) { + r0, _, _ := syscall.Syscall(procRegCloseKey.Addr(), 1, uintptr(key), 0, 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall12(procRegQueryInfoKeyW.Addr(), 12, uintptr(key), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(subkeysLen)), uintptr(unsafe.Pointer(maxSubkeyLen)), uintptr(unsafe.Pointer(maxClassLen)), uintptr(unsafe.Pointer(valuesLen)), uintptr(unsafe.Pointer(maxValueNameLen)), uintptr(unsafe.Pointer(maxValueLen)), uintptr(unsafe.Pointer(saLen)), uintptr(unsafe.Pointer(lastWriteTime))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) { + r0, _, _ := syscall.Syscall9(procRegEnumKeyExW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(class)), uintptr(unsafe.Pointer(classLen)), uintptr(unsafe.Pointer(lastWriteTime)), 0) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) { + r0, _, _ := syscall.Syscall6(procRegQueryValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen))) + if r0 != 0 { + regerrno = syscall.Errno(r0) + } + return +} + +func getCurrentProcessId() (pid uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) + pid = uint32(r0) + return +} + +func GetConsoleMode(console Handle, mode *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetConsoleMode(console Handle, mode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { + r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(towrite), uintptr(unsafe.Pointer(written)), uintptr(unsafe.Pointer(reserved)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) { + r1, _, e1 := syscall.Syscall6(procReadConsoleW.Addr(), 5, uintptr(console), uintptr(unsafe.Pointer(buf)), uintptr(toread), uintptr(unsafe.Pointer(read)), uintptr(unsafe.Pointer(inputControl)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) { + r1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags)) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) { + r1, _, e1 := syscall.Syscall(procCreateHardLinkW.Addr(), 3, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(existingfilename)), uintptr(reserved)) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetCurrentThreadId() (id uint32) { + r0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0) + id = uint32(r0) + return +} + +func CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(manualReset), uintptr(initialState), uintptr(unsafe.Pointer(name)), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateEventExW.Addr(), 4, uintptr(unsafe.Pointer(eventAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ResetEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func PulseEvent(event Handle) (err error) { + r1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDeleteVolumeMountPointW.Addr(), 1, uintptr(unsafe.Pointer(volumeMountPoint)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeClose(findVolume Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) { + r1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetDriveType(rootPathName *uint16) (driveType uint32) { + r0, _, _ := syscall.Syscall(procGetDriveTypeW.Addr(), 1, uintptr(unsafe.Pointer(rootPathName)), 0, 0) + driveType = uint32(r0) + return +} + +func GetLogicalDrives() (drivesBitMask uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDrives.Addr(), 0, 0, 0, 0) + drivesBitMask = uint32(r0) + if drivesBitMask == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetLogicalDriveStringsW.Addr(), 2, uintptr(bufferLength), uintptr(unsafe.Pointer(buffer)), 0) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationW.Addr(), 8, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procGetVolumeInformationByHandleW.Addr(), 8, uintptr(file), uintptr(unsafe.Pointer(volumeNameBuffer)), uintptr(volumeNameSize), uintptr(unsafe.Pointer(volumeNameSerialNumber)), uintptr(unsafe.Pointer(maximumComponentLength)), uintptr(unsafe.Pointer(fileSystemFlags)), uintptr(unsafe.Pointer(fileSystemNameBuffer)), uintptr(fileSystemNameSize), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumeNameForVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferlength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetVolumePathNameW.Addr(), 3, uintptr(unsafe.Pointer(fileName)), uintptr(unsafe.Pointer(volumePathName)), uintptr(bufferLength)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetVolumePathNamesForVolumeNameW.Addr(), 4, uintptr(unsafe.Pointer(volumeName)), uintptr(unsafe.Pointer(volumePathNames)), uintptr(bufferLength), uintptr(unsafe.Pointer(returnLength)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) { + r0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max)) + n = uint32(r0) + if n == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { + r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func WSACleanup() (err error) { + r1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) { + r1, _, e1 := syscall.Syscall9(procWSAIoctl.Addr(), 9, uintptr(s), uintptr(iocc), uintptr(unsafe.Pointer(inbuf)), uintptr(cbif), uintptr(unsafe.Pointer(outbuf)), uintptr(cbob), uintptr(unsafe.Pointer(cbbr)), uintptr(unsafe.Pointer(overlapped)), uintptr(completionRoutine)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func socket(af int32, typ int32, protocol int32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol)) + handle = Handle(r0) + if handle == InvalidHandle { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) { + r1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) { + r1, _, e1 := syscall.Syscall6(procgetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(unsafe.Pointer(optlen)), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func bind(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procbind.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func connect(s Handle, name unsafe.Pointer, namelen int32) (err error) { + r1, _, e1 := syscall.Syscall(procconnect.Addr(), 3, uintptr(s), uintptr(name), uintptr(namelen)) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetsockname.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) { + r1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func listen(s Handle, backlog int32) (err error) { + r1, _, e1 := syscall.Syscall(proclisten.Addr(), 2, uintptr(s), uintptr(backlog), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func shutdown(s Handle, how int32) (err error) { + r1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Closesocket(s Handle) (err error) { + r1, _, e1 := syscall.Syscall(procclosesocket.Addr(), 1, uintptr(s), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) { + r1, _, e1 := syscall.Syscall9(procAcceptEx.Addr(), 8, uintptr(ls), uintptr(as), uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(overlapped)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) { + syscall.Syscall9(procGetAcceptExSockaddrs.Addr(), 8, uintptr(unsafe.Pointer(buf)), uintptr(rxdatalen), uintptr(laddrlen), uintptr(raddrlen), uintptr(unsafe.Pointer(lrsa)), uintptr(unsafe.Pointer(lrsalen)), uintptr(unsafe.Pointer(rrsa)), uintptr(unsafe.Pointer(rrsalen)), 0) + return +} + +func WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecv.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASend.Addr(), 7, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0, 0) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSARecvFrom.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(recvd)), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) { + r1, _, e1 := syscall.Syscall9(procWSASendTo.Addr(), 9, uintptr(s), uintptr(unsafe.Pointer(bufs)), uintptr(bufcnt), uintptr(unsafe.Pointer(sent)), uintptr(flags), uintptr(unsafe.Pointer(to)), uintptr(tolen), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine))) + if r1 == socket_error { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetHostByName(name string) (h *Hostent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetHostByName(_p0) +} + +func _GetHostByName(name *byte) (h *Hostent, err error) { + r0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + h = (*Hostent)(unsafe.Pointer(r0)) + if h == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetServByName(name string, proto string) (s *Servent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + var _p1 *byte + _p1, err = syscall.BytePtrFromString(proto) + if err != nil { + return + } + return _GetServByName(_p0, _p1) +} + +func _GetServByName(name *byte, proto *byte) (s *Servent, err error) { + r0, _, e1 := syscall.Syscall(procgetservbyname.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(proto)), 0) + s = (*Servent)(unsafe.Pointer(r0)) + if s == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Ntohs(netshort uint16) (u uint16) { + r0, _, _ := syscall.Syscall(procntohs.Addr(), 1, uintptr(netshort), 0, 0) + u = uint16(r0) + return +} + +func GetProtoByName(name string) (p *Protoent, err error) { + var _p0 *byte + _p0, err = syscall.BytePtrFromString(name) + if err != nil { + return + } + return _GetProtoByName(_p0) +} + +func _GetProtoByName(name *byte) (p *Protoent, err error) { + r0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0) + p = (*Protoent)(unsafe.Pointer(r0)) + if p == nil { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + var _p0 *uint16 + _p0, status = syscall.UTF16PtrFromString(name) + if status != nil { + return + } + return _DnsQuery(_p0, qtype, options, extra, qrs, pr) +} + +func _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) { + r0, _, _ := syscall.Syscall6(procDnsQuery_W.Addr(), 6, uintptr(unsafe.Pointer(name)), uintptr(qtype), uintptr(options), uintptr(unsafe.Pointer(extra)), uintptr(unsafe.Pointer(qrs)), uintptr(unsafe.Pointer(pr))) + if r0 != 0 { + status = syscall.Errno(r0) + } + return +} + +func DnsRecordListFree(rl *DNSRecord, freetype uint32) { + syscall.Syscall(procDnsRecordListFree.Addr(), 2, uintptr(unsafe.Pointer(rl)), uintptr(freetype), 0) + return +} + +func DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) { + r0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0) + same = r0 != 0 + return +} + +func GetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) { + r0, _, _ := syscall.Syscall6(procGetAddrInfoW.Addr(), 4, uintptr(unsafe.Pointer(nodename)), uintptr(unsafe.Pointer(servicename)), uintptr(unsafe.Pointer(hints)), uintptr(unsafe.Pointer(result)), 0, 0) + if r0 != 0 { + sockerr = syscall.Errno(r0) + } + return +} + +func FreeAddrInfoW(addrinfo *AddrinfoW) { + syscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 0) + return +} + +func GetIfEntry(pIfRow *MibIfRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetAdaptersInfo.Addr(), 2, uintptr(unsafe.Pointer(ai)), uintptr(unsafe.Pointer(ol)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) { + r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) { + r0, _, e1 := syscall.Syscall(procWSAEnumProtocolsW.Addr(), 3, uintptr(unsafe.Pointer(protocols)), uintptr(unsafe.Pointer(protocolBuffer)), uintptr(unsafe.Pointer(bufferLength))) + n = int32(r0) + if n == -1 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { + r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetACP() (acp uint32) { + r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0) + acp = uint32(r0) + return +} + +func MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) { + r0, _, e1 := syscall.Syscall6(procMultiByteToWideChar.Addr(), 6, uintptr(codePage), uintptr(dwFlags), uintptr(unsafe.Pointer(str)), uintptr(nstr), uintptr(unsafe.Pointer(wchar)), uintptr(nwchar)) + nwrite = int32(r0) + if nwrite == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procTranslateNameW.Addr(), 5, uintptr(unsafe.Pointer(accName)), uintptr(accNameFormat), uintptr(desiredNameFormat), uintptr(unsafe.Pointer(translatedName)), uintptr(unsafe.Pointer(nSize)), 0) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserNameEx(nameFormat uint32, nameBuffre *uint16, nSize *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserNameExW.Addr(), 3, uintptr(nameFormat), uintptr(unsafe.Pointer(nameBuffre)), uintptr(unsafe.Pointer(nSize))) + if r1&0xff == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func NetUserGetInfo(serverName *uint16, userName *uint16, level uint32, buf **byte) (neterr error) { + r0, _, _ := syscall.Syscall6(procNetUserGetInfo.Addr(), 4, uintptr(unsafe.Pointer(serverName)), uintptr(unsafe.Pointer(userName)), uintptr(level), uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetGetJoinInformation(server *uint16, name **uint16, bufType *uint32) (neterr error) { + r0, _, _ := syscall.Syscall(procNetGetJoinInformation.Addr(), 3, uintptr(unsafe.Pointer(server)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bufType))) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func NetApiBufferFree(buf *byte) (neterr error) { + r0, _, _ := syscall.Syscall(procNetApiBufferFree.Addr(), 1, uintptr(unsafe.Pointer(buf)), 0, 0) + if r0 != 0 { + neterr = syscall.Errno(r0) + } + return +} + +func LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountSidW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LookupAccountName(systemName *uint16, accountName *uint16, sid *SID, sidLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) { + r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidLen)), uintptr(unsafe.Pointer(refdDomainName)), uintptr(unsafe.Pointer(refdDomainNameLen)), uintptr(unsafe.Pointer(use)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertSidToStringSid(sid *SID, stringSid **uint16) (err error) { + r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(stringSid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ConvertStringSidToSid(stringSid *uint16, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall(procConvertStringSidToSidW.Addr(), 2, uintptr(unsafe.Pointer(stringSid)), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetLengthSid(sid *SID) (len uint32) { + r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + len = uint32(r0) + return +} + +func CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procCopySid.Addr(), 3, uintptr(destSidLen), uintptr(unsafe.Pointer(destSid)), uintptr(unsafe.Pointer(srcSid))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) { + r1, _, e1 := syscall.Syscall12(procAllocateAndInitializeSid.Addr(), 11, uintptr(unsafe.Pointer(identAuth)), uintptr(subAuth), uintptr(subAuth0), uintptr(subAuth1), uintptr(subAuth2), uintptr(subAuth3), uintptr(subAuth4), uintptr(subAuth5), uintptr(subAuth6), uintptr(subAuth7), uintptr(unsafe.Pointer(sid)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procCreateWellKnownSid.Addr(), 4, uintptr(sidType), uintptr(unsafe.Pointer(domainSid)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sizeSid)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func FreeSid(sid *SID) (err error) { + r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + if r1 != 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { + r0, _, _ := syscall.Syscall(procEqualSid.Addr(), 2, uintptr(unsafe.Pointer(sid1)), uintptr(unsafe.Pointer(sid2)), 0) + isEqual = r0 != 0 + return +} + +func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { + r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} diff --git a/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go b/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go new file mode 100644 index 0000000..fd6d16a --- /dev/null +++ b/vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go @@ -0,0 +1,97 @@ +package cexp + +import "gopkg.in/hlandau/measurable.v1" +import "sync/atomic" + +// Counter + +type Counter struct { + name string + value int64 +} + +func (c *Counter) MsName() string { + return c.name +} + +func (c *Counter) MsInt64() int64 { + return atomic.LoadInt64(&c.value) +} + +func (c *Counter) Get() int64 { + return c.MsInt64() +} + +// v must be non-negative. +func (c *Counter) Add(v int64) { + atomic.AddInt64(&c.value, v) +} + +func (c *Counter) Inc() { + c.Add(1) +} + +func (c *Counter) MsType() measurable.Type { + return measurable.CounterType +} + +func NewCounter(name string) *Counter { + c := &Counter{ + name: name, + } + + measurable.Register(c) + return c +} + +// Gauge + +type Gauge struct { + name string + value int64 +} + +func (c *Gauge) MsName() string { + return c.name +} + +func (c *Gauge) MsInt64() int64 { + return atomic.LoadInt64(&c.value) +} + +func (c *Gauge) Add(v int64) { + atomic.AddInt64(&c.value, v) +} + +func (c *Gauge) Sub(v int64) { + c.Add(-v) +} + +func (c *Gauge) Set(v int64) { + atomic.StoreInt64(&c.value, v) +} + +func (c *Gauge) Get() int64 { + return c.MsInt64() +} + +func (c *Gauge) Inc() { + c.Add(1) +} + +func (c *Gauge) Dec() { + c.Add(-1) +} + +func (c *Gauge) MsType() measurable.Type { + return measurable.GaugeType +} + +func NewGauge(name string) *Gauge { + c := &Gauge{ + name: name, + } + + measurable.Register(c) + return c +} diff --git a/vendor/gopkg.in/hlandau/measurable.v1/README.md b/vendor/gopkg.in/hlandau/measurable.v1/README.md new file mode 100644 index 0000000..f2d582d --- /dev/null +++ b/vendor/gopkg.in/hlandau/measurable.v1/README.md @@ -0,0 +1,82 @@ +Measurable: The useless Go metric registration package that doesn't do anything +=============================================================================== + +[![GoDoc](https://godoc.org/gopkg.in/hlandau/measurable.v1?status.svg)](https://godoc.org/gopkg.in/hlandau/measurable.v1) + +Measurable is a Go library for managing the registration of metrics such as +counters and gauges, no matter how that metric data is eventually consumed. + +The most noteworthy feature of measurable is that it doesn't do anything. It +contains no functionality for providing metric data to any external service, +and it contains no actual metric implementations. + +The purpose of measurable is to act as an [integration +nexus](https://www.devever.net/~hl/nexuses), essentially a matchmaker between +metric sources and metric consumers. This creates the important feature that +your application's metrics can be expressed completely independently of *how* +those metrics are exported. + +Measurable doesn't implement any metric or metric export logic because it +strives to be a neutral intermediary, which abstracts the interface between +metrics and metric exporters. + +**Import as:** `gopkg.in/hlandau/measurable.v1` + +Measurable +---------- + +A Measurable is an object that represents some metric. It is obliged only to +implement the following interface: + +```go +type Measurable interface { + MsName() string + MsType() Type +} +``` + +Measurable is designed around interface upgrades. If you want to actually +do anything with a Measurable, you must attempt to cast it to an interface +with the methods you need. A Measurable is not obliged to implement any +interface besides Measurable, but almost always will. + +Here are some common interfaces implemented by Measurables, in descending order +of importance: + + - `MsName() string` — get the Measurable name. + - `MsType() Type` — get the Measurable type. + - `MsInt64() int64` — get the Measurable as an int64. + - `String() string` — the standard Go `String()` interface. + +All Measurables should implement `MsName() string` and `MsType() Type`. + +Measurable-specific methods should always be prefixed by `Ms` so it is clear +they are intended for consumption by Measurable consumers. + +`MsName`, `MsType` and `MsInt64` should suffice for most consumers of Counter +and Gauge metric types. + +Metrics should be named in lowercase using dots to create a hierarchy and +dashes to separate words, e.g. `someserver.http.request-count`. These metric +names may be transmuted by consumers as necessary for some graphing systems, +such as Prometheus (which allows only underscores). + +Standard Bindings +----------------- + +For a package which makes it easy to register and consume measurables, see the +[easymetric](https://github.com/hlandau/easymetric) package. + +Of course, nothing requires you to use the easymetric package. You are free to escew it and make your own. + +Background Reading +------------------ + + - [On Nexuses](https://www.devever.net/~hl/nexuses) + - See also: [Configurable](https://github.com/hlandau/configurable) + +Licence +------- + + © 2015 Hugo Landau MIT License + diff --git a/vendor/gopkg.in/hlandau/measurable.v1/measurable.go b/vendor/gopkg.in/hlandau/measurable.v1/measurable.go new file mode 100644 index 0000000..4399d0a --- /dev/null +++ b/vendor/gopkg.in/hlandau/measurable.v1/measurable.go @@ -0,0 +1,189 @@ +// Package measurable provides a functionality-free integration nexus for +// metric registration. +// +// Measurable is a Go package for connecting service metrics and metric consumers. +// +// The most noteworthy feature of measurable is that it doesn't do anything. +// It contains no functionality for defining or exporting metrics. +// +// The purpose of measurable is to act as an integration nexus +// (https://www.devever.net/~hl/nexuses), essentially a matchmaker between +// application metrics and metric consumers. This creates the important feature +// that your application's metrics can be defined completely independently of +// *how* those metrics are defined. +// +// Measurable doesn't implement any metric definition or export logic because it +// strives to be a neutral intermediary, which abstracts the interface between +// measurables and measurable consumers +// +// Pursuant to this, package measurable is this and only this: an interface +// Measurable which all metrics must implement, and a facility for registering +// Measurables and visiting them. +package measurable // import "gopkg.in/hlandau/measurable.v1" + +import "sync" +import "fmt" + +// Measurable is the interface which must be implemented by any metric item to +// be used with package measurable. In the current version, v1, it contains +// only the MsName() and MsType() methods. All other functionality must be +// obtained by interface upgrades. +type Measurable interface { + // Returns the name of the metric. Names should be in the style + // "alpha.beta.gamma-delta", for example "foo.http.requests.count". That is, + // names should be lowercase, should express a hierarchy separated by dots, + // and have words separated by dashes. + // + // Some Measurable consumers may mutate these names to satisfy naming + // restrictions applied by some graphing systems. + MsName() string + + // Return the Measurable type. You can, of course, invent your own Measurable + // types, though consumers won't necessarily know what to do with them. + MsType() Type +} + +var measurablesMutex sync.RWMutex +var measurables = map[string]Measurable{} + +// Registers a top-level Configurable. +func Register(measurable Measurable) { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + if measurable == nil { + panic("cannot register nil measurable") + } + + name := measurable.MsName() + if name == "" { + panic("measurable cannot have empty name") + } + + _, exists := measurables[name] + if exists { + panic(fmt.Sprintf("A measurable with the same name already exists: %s", name)) + } + + measurables[name] = measurable + callRegistrationHooks(measurable, RegisterEvent) +} + +func Unregister(measurableName string) { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + measurable, ok := measurables[measurableName] + if !ok { + return + } + + callRegistrationHooks(measurable, UnregisterEvent) + delete(measurables, measurableName) +} + +func Get(measurableName string) Measurable { + measurablesMutex.RLock() + defer measurablesMutex.RUnlock() + + return measurables[measurableName] +} + +// Visits all registered top-level Measurables. +// +// Returning a non-nil error short-circuits the iteration process and returns +// that error. +func Visit(do func(measurable Measurable) error) error { + measurablesMutex.Lock() + defer measurablesMutex.Unlock() + + for _, measurable := range measurables { + err := do(measurable) + if err != nil { + return err + } + } + + return nil +} + +// Represents a measurable type. +type Type uint32 + +const ( + // A CounterType Measurable represents a non-negative integral value + // that monotonously increases. It must implement `MsInt64() int64`. + CounterType Type = 0x436E7472 + + // A GaugeType Measurable represents an integral value that varies over + // time. It must implement `MsInt64() int64`. + GaugeType = 0x47617567 +) + +// Registration hooks. +type HookEvent int + +const ( + // This event is issued when a measurable is registered. + RegisterEvent HookEvent = iota + + // This event is issued when a registration hook is registered. It is issued + // for every measurable which has already been registered. + RegisterCatchupEvent + + // This event is issued when a measurable is unregistered. + UnregisterEvent +) + +type HookFunc func(measurable Measurable, hookEvent HookEvent) + +var hooksMutex sync.RWMutex +var hooks = map[interface{}]HookFunc{} + +// Register for notifications on metric registration. The key must be usable as +// a key in a map and identifies the hook. No other hook with the same key must +// already exist. +// +// NOTE: The hook will be called for all registrations which already exist. +// This ensures that no registrations are missed in a threadsafe manner. +// For these calls, the event will be EventRegisterCatchup. +// +// The hook must not register or unregister registration hooks or metrics. +func RegisterHook(key interface{}, hook HookFunc) { + measurablesMutex.RLock() + defer measurablesMutex.RUnlock() + + registerHook(key, hook) + + for _, m := range measurables { + hook(m, RegisterCatchupEvent) + } +} + +func registerHook(key interface{}, hook HookFunc) { + hooksMutex.Lock() + defer hooksMutex.Unlock() + + _, exists := hooks[key] + if exists { + panic(fmt.Sprintf("A metric registration hook with the same key already exists: %+v", key)) + } + + hooks[key] = hook +} + +// Unregister an existing hook. +func UnregisterHook(key interface{}) { + hooksMutex.Lock() + defer hooksMutex.Unlock() + delete(hooks, key) +} + +func callRegistrationHooks(measurable Measurable, event HookEvent) { + hooksMutex.RLock() + defer hooksMutex.RUnlock() + + for _, v := range hooks { + v(measurable, event) + } +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml b/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml new file mode 100644 index 0000000..f817ef3 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/.travis.yml @@ -0,0 +1,12 @@ +language: go +os: + - linux +go: + - 1.10 + - tip +sudo: false +install: + - mkdir -p $HOME/gopath/src/gopkg.in/hlandau/ + - ln -s $TRAVIS_BUILD_DIR $HOME/gopath/src/gopkg.in/hlandau/passlib.v1 + - cd $HOME/gopath/src/gopkg.in/hlandau/passlib.v1 + - go get diff --git a/vendor/gopkg.in/hlandau/passlib.v1/COPYING b/vendor/gopkg.in/hlandau/passlib.v1/COPYING new file mode 100644 index 0000000..d2aa62a --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/COPYING @@ -0,0 +1,39 @@ +passlib is a Golang password verification library strongly inspired by and +derived from Python passlib (). The BSD +license is preserved and extended to all new code. + +License for Passlib +=================== +Passlib is (c) `Assurance Technologies `_, +and is released under the `BSD license `_:: + + Passlib + Copyright (c) 2008-2012 Assurance Technologies, LLC. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of Assurance Technologies, nor the names of the + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/gopkg.in/hlandau/passlib.v1/README.md b/vendor/gopkg.in/hlandau/passlib.v1/README.md new file mode 100644 index 0000000..ca79918 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/README.md @@ -0,0 +1,100 @@ +passlib for go +============== + +[![GoDoc](https://godoc.org/gopkg.in/hlandau/passlib.v1?status.svg)](https://godoc.org/gopkg.in/hlandau/passlib.v1) [![Build Status](https://travis-ci.org/hlandau/passlib.svg?branch=master)](https://travis-ci.org/hlandau/passlib) + +[Python's passlib](https://pythonhosted.org/passlib/) is quite an amazing +library. I'm not sure there's a password library in existence with more thought +put into it, or with more support for obscure password formats. + +This is a skeleton of a port of passlib to Go. It dogmatically adopts the +modular crypt format, which [passlib has excellent documentation for](https://pythonhosted.org/passlib/modular_crypt_format.html#modular-crypt-format). + +Currently, it supports: + + - sha256-crypt + - sha512-crypt + - scrypt-sha256 + - bcrypt + - passlib's bcrypt-sha256 variant + - pbkdf2-sha1 (in passlib format) + - pbkdf2-sha256 (in passlib format) + - pbkdf2-sha512 (in passlib format) + +By default, it will hash using scrypt-sha256 and verify existing hashes using +any of these schemes. + +Example Usage +------------- +There's a default context for ease of use. Most people need only concern +themselves with the functions `Hash` and `Verify`: + +```go +// Hash a plaintext, UTF-8 password. +func Hash(password string) (hash string, err error) + +// Verifies a plaintext, UTF-8 password using a previously derived hash. +// Returns non-nil err if verification fails. +// +// Also returns an upgraded password hash if the hash provided is +// deprecated. +func Verify(password, hash string) (newHash string, err error) +``` + +Here's a rough skeleton of typical usage. + +```go +import "gopkg.in/hlandau/passlib.v1" + +func RegisterUser() { + (...) + + password := get a (UTF-8, plaintext) password from somewhere + + hash, err := passlib.Hash(password) + if err != nil { + // couldn't hash password for some reason + return + } + + (store hash in database, etc.) +} + +func CheckPassword() bool { + password := get the password the user entered + hash := the hash you stored from the call to Hash() + + newHash, err := passlib.Verify(password, hash) + if err != nil { + // incorrect password, malformed hash, etc. + // either way, reject + return false + } + + // The context has decided, as per its policy, that + // the hash which was used to validate the password + // should be changed. It has upgraded the hash using + // the verified password. + if newHash != "" { + (store newHash in database, replacing old hash) + } + + return true +} +``` + +scrypt Modular Crypt Format +--------------------------- +Since scrypt does not have a pre-existing modular crypt format standard, I made one. It's as follows: + + $s2$N$r$p$salt$hash + +...where `N`, `r` and `p` are the respective difficulty parameters to scrypt as positive decimal integers without leading zeroes, and `salt` and `hash` are base64-encoded binary strings. Note that the RFC 4648 base64 encoding is used (not the one used by sha256-crypt and sha512-crypt). + +Licence +------- +passlib is partially derived from Python's passlib and so maintains its BSD license. + + © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License + © 2014 Hugo Landau BSD License + diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go new file mode 100644 index 0000000..d336f13 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go @@ -0,0 +1,11 @@ +package abstract + +import "crypto/subtle" + +// Compares two strings (typicaly password hashes) in a secure, constant-time +// fashion. Returns true iff they are equal. +func SecureCompare(a, b string) bool { + ab := []byte(a) + bb := []byte(b) + return subtle.ConstantTimeCompare(ab, bb) == 1 +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go new file mode 100644 index 0000000..3298f82 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go @@ -0,0 +1,15 @@ +// Package abstract contains the abstract description of the Scheme interface, +// plus supporting error definitions. +package abstract + +import "fmt" + +// Indicates that password verification failed because the provided password +// does not match the provided hash. +var ErrInvalidPassword = fmt.Errorf("invalid password") + +// Indicates that password verification is not possible because the hashing +// scheme used by the hash provided is not supported. +var ErrUnsupportedScheme = fmt.Errorf("unsupported scheme") + +// © 2014 Hugo Landau MIT License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go b/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go new file mode 100644 index 0000000..3589022 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go @@ -0,0 +1,34 @@ +package abstract + +// The Scheme interface provides an abstract interface to an implementation +// of a particular password hashing scheme. The Scheme generates password +// hashes from passwords, verifies passwords using password hashes, randomly +// generates new stubs and can determines whether it recognises a given +// stub or hash. It may also decide to issue upgrades. +type Scheme interface { + // Hashes a plaintext UTF-8 password using a modular crypt stub. Returns the + // hashed password in modular crypt format. + // + // A modular crypt stub is a prefix of a hash in modular crypt format which + // expresses all necessary configuration information, such as salt and + // iteration count. For example, for sha256-crypt, a valid stub would be: + // + // $5$rounds=6000$salt + // + // A full modular crypt hash may also be passed as the stub, in which case + // the hash is ignored. + Hash(password string) (string, error) + + // Verifies a plaintext UTF-8 password using a modular crypt hash. Returns + // an error if the inputs are malformed or the password does not match. + Verify(password, hash string) (err error) + + // Returns true iff this crypter supports the given stub. + SupportsStub(stub string) bool + + // Returns true iff this stub needs an update. + NeedsUpdate(stub string) bool + + // Make a stub with the configured defaults. The salt is generated randomly. + //MakeStub() (string, error) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/default.go b/vendor/gopkg.in/hlandau/passlib.v1/default.go new file mode 100644 index 0000000..d778584 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/default.go @@ -0,0 +1,141 @@ +package passlib + +import ( + "fmt" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/argon2" + "gopkg.in/hlandau/passlib.v1/hash/bcrypt" + "gopkg.in/hlandau/passlib.v1/hash/bcryptsha256" + "gopkg.in/hlandau/passlib.v1/hash/pbkdf2" + "gopkg.in/hlandau/passlib.v1/hash/scrypt" + "gopkg.in/hlandau/passlib.v1/hash/sha2crypt" + "time" +) + +// This is the first and default set of defaults used by passlib. It prefers +// scrypt-sha256. It is now obsolete. +const Defaults20160922 = "20160922" + +// This is the most up-to-date set of defaults preferred by passlib. It prefers +// Argon2i. You must opt into it by calling UseDefaults at startup. +const Defaults20180601 = "20180601" + +// This value, when passed to UseDefaults, causes passlib to always use the +// very latest set of defaults. DO NOT use this unless you are sure that +// opportunistic hash upgrades will not cause breakage for your application +// when future versions of passlib are released. See func UseDefaults. +const DefaultsLatest = "latest" + +// Default schemes as of 2016-09-22. +var defaultSchemes20160922 = []abstract.Scheme{ + scrypt.SHA256Crypter, + argon2.Crypter, + sha2crypt.Crypter512, + sha2crypt.Crypter256, + bcryptsha256.Crypter, + pbkdf2.SHA512Crypter, + pbkdf2.SHA256Crypter, + bcrypt.Crypter, + pbkdf2.SHA1Crypter, +} + +// Default schemes as of 2018-06-01. +var defaultSchemes20180601 = []abstract.Scheme{ + argon2.Crypter, + scrypt.SHA256Crypter, + sha2crypt.Crypter512, + sha2crypt.Crypter256, + bcryptsha256.Crypter, + pbkdf2.SHA512Crypter, + pbkdf2.SHA256Crypter, + bcrypt.Crypter, + pbkdf2.SHA1Crypter, +} + +// The default schemes, most preferred first. The first scheme will be used to +// hash passwords, and any of the schemes may be used to verify existing +// passwords. The contents of this value may change with subsequent releases. +// +// If you want to change this, set DefaultSchemes to a slice to an +// abstract.Scheme array of your own construction, rather than mutating the +// array the slice points to. +// +// To see the default schemes used in the current release of passlib, see +// default.go. See also the UseDefaults function for more information on how +// the list of default schemes is determined. The default value of +// DefaultSchemes (the default defaults) won't change; you need to call +// UseDefaults to allow your application to upgrade to newer hashing schemes +// (or set DefaultSchemes manually, or create a custom context with its own +// schemes set). +var DefaultSchemes []abstract.Scheme + +func init() { + DefaultSchemes = defaultSchemes20160922 +} + +// It is strongly recommended that you call this function like this before using passlib: +// +// passlib.UseDefaults("YYYYMMDD") +// +// where YYYYMMDD is a date. This will be used to select the preferred scheme +// to use. If you do not call UseDefaults, the preferred scheme (the first item +// in the default schemes list) current as of 2016-09-22 will always be used, +// meaning that upgrade will not occur even though better schemes are now +// available. +// +// Note that even if you don't call this function, new schemes will still be +// added to DefaultSchemes over time as non-initial values (items not at index +// 0), so servers will always, by default, be able to validate all schemes +// which passlib supports at any given time. +// +// The reason you must call this function is as follows: If passlib is deployed +// as part of a web application in a multi-server deployment, and passlib is +// updated, and the new version of that application with the updated passlib is +// deployed, that upgrade process is unlikely to be instantaneous. Old versions +// of the web application may continue to run on some servers. If merely +// upgrading passlib caused password hashes to be upgraded to the newer scheme +// on login, the older daemons may not be able to validate these passwords and +// users may have issues logging in. Although this can be ameliorated to some +// extent by introducing a new scheme to passlib, waiting some months, and only +// then making this the default, this could still cause issued if passlib is +// only updated very occasionally. +// +// Thus, you should update your call to UseDefaults only when all servers have +// been upgraded, and it is thus guaranteed that they will all be able to +// verify the new scheme. Making this value loadable from a configuration file +// is recommended. +// +// If you are using a single-server configuration, you can use the special +// value "latest" here (or, equivalently, a date far into the future), which +// will always use the most preferred scheme. This is hazardous in a +// multi-server environment. +// +// The constants beginning 'Defaults' in this package document dates +// which are meaningful to this function. The constant values they are equal to +// will never change, so there is no need to use them instead of string +// literals, although you may if you wish; they are intended mainly as +// documentation as to the significance of various dates. +// +// Example for opting in to the latest set of defaults: +// +// passlib.UseDefaults(passlib.Defaults20180601) +// +func UseDefaults(date string) error { + if date == "latest" { + DefaultSchemes = defaultSchemes20180601 + return nil + } + + t, err := time.ParseInLocation("20060102", date, time.UTC) + if err != nil { + return fmt.Errorf("invalid time string passed to passlib.UseDefaults: %q", date) + } + + if !t.Before(time.Date(2016, 9, 22, 0, 0, 0, 0, time.UTC)) { + DefaultSchemes = defaultSchemes20180601 + return nil + } + + DefaultSchemes = defaultSchemes20160922 + return nil +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go new file mode 100644 index 0000000..63629ac --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go @@ -0,0 +1,115 @@ +// Package argon2 implements the argon2 password hashing mechanism, wrapped in +// the argon2 encoded format. +package argon2 + +import ( + "crypto/rand" + "encoding/base64" + "fmt" + "strings" + + "golang.org/x/crypto/argon2" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/argon2/raw" +) + +// An implementation of Scheme performing argon2 hashing. +// +// Uses the recommended values for time, memory and threads defined in raw. +var Crypter abstract.Scheme + +const saltLength = 16 + +func init() { + Crypter = New( + raw.RecommendedTime, + raw.RecommendedMemory, + raw.RecommendedThreads, + ) +} + +// Returns an implementation of Scheme implementing argon2 +// with the specified parameters. +func New(time, memory uint32, threads uint8) abstract.Scheme { + return &scheme{ + time: time, + memory: memory, + threads: threads, + } +} + +type scheme struct { + time, memory uint32 + threads uint8 +} + +func (c *scheme) SetParams(time, memory uint32, threads uint8) error { + c.time = time + c.memory = memory + c.threads = threads + return nil +} + +func (c *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$argon2i$") +} + +func (c *scheme) Hash(password string) (string, error) { + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, _, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *scheme) Verify(password, hash string) (err error) { + + _, newHash, _, _, _, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *scheme) NeedsUpdate(stub string) bool { + salt, _, version, time, memory, threads, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, version, time, memory, threads) +} + +func (c *scheme) needsUpdate(salt []byte, version int, time, memory uint32, threads uint8) bool { + return len(salt) < saltLength || version < argon2.Version || time < c.time || memory < c.memory || threads < c.threads +} + +func (c *scheme) hash(password, stub string) (oldHashRaw []byte, newHash string, salt []byte, version int, memory, time uint32, threads uint8, err error) { + + salt, oldHashRaw, version, time, memory, threads, err = raw.Parse(stub) + if err != nil { + return + } + + return oldHashRaw, raw.Argon2(password, salt, time, memory, threads), salt, version, memory, time, threads, nil +} + +func (c *scheme) makeStub() (string, error) { + buf := make([]byte, saltLength) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := base64.RawStdEncoding.EncodeToString(buf) + + return fmt.Sprintf("$argon2i$v=%d$m=%d,t=%d,p=%d$%s$", argon2.Version, c.memory, c.time, c.threads, salt), nil +} + +func (c *scheme) String() string { + return fmt.Sprintf("argon2(%d,%d,%d,%d)", argon2.Version, c.memory, c.time, c.threads) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go new file mode 100644 index 0000000..47a8dde --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go @@ -0,0 +1,186 @@ +// Package raw provides a raw implementation of the modular-crypt-wrapped Argon2i primitive. +package raw + +import ( + "encoding/base64" + "fmt" + "golang.org/x/crypto/argon2" + "strconv" + "strings" +) + +// The current recommended time value for interactive logins. +const RecommendedTime uint32 = 4 + +// The current recommended memory for interactive logins. +const RecommendedMemory uint32 = 32 * 1024 + +// The current recommended number of threads for interactive logins. +const RecommendedThreads uint8 = 4 + +// Wrapper for golang.org/x/crypto/argon2 implementing a sensible +// hashing interface. +// +// password should be a UTF-8 plaintext password. +// salt should be a random salt value in binary form. +// +// Time, memory, and threads are parameters to argon2. +// +// Returns an argon2 encoded hash. +func Argon2(password string, salt []byte, time, memory uint32, threads uint8) string { + passwordb := []byte(password) + + hash := argon2.Key(passwordb, salt, time, memory, threads, 32) + + hstr := base64.RawStdEncoding.EncodeToString(hash) + sstr := base64.RawStdEncoding.EncodeToString(salt) + + return fmt.Sprintf("$argon2i$v=%d$m=%d,t=%d,p=%d$%s$%s", argon2.Version, memory, time, threads, sstr, hstr) +} + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid argon2 password stub") + +// Indicates that a key-value pair in the configuration part is malformed. +var ErrInvalidKeyValuePair = fmt.Errorf("invalid argon2 key-value pair") + +// Indicates that the version part had the wrong number of parameters. +var ErrParseVersion = fmt.Errorf("version section has wrong number of parameters") + +// Indicates that the hash config part had the wrong number of parameters. +var ErrParseConfig = fmt.Errorf("hash config section has wrong number of parameters") + +// Indicates that the version parameter ("v") was missing in the version part, +// even though it is required. +var ErrMissingVersion = fmt.Errorf("version parameter (v) is missing") + +// Indicates that the memory parameter ("m") was mossing in the hash config +// part, even though it is required. +var ErrMissingMemory = fmt.Errorf("memory parameter (m) is missing") + +// Indicates that the time parameter ("t") was mossing in the hash config part, +// even though it is required. +var ErrMissingTime = fmt.Errorf("time parameter (t) is missing") + +// Indicates that the parallelism parameter ("p") was mossing in the hash config +// part, even though it is required. +var ErrMissingParallelism = fmt.Errorf("parallelism parameter (p) is missing") + +// Parses an argon2 encoded hash. +// +// The format is as follows: +// +// $argon2i$v=version$m=memory,t=time,p=threads$salt$hash // hash +// $argon2i$v=version$m=memory,t=time,p=threads$salt // stub +// +func Parse(stub string) (salt, hash []byte, version int, time, memory uint32, parallelism uint8, err error) { + if len(stub) < 26 || !strings.HasPrefix(stub, "$argon2i$") { + err = ErrInvalidStub + return + } + + // $argon2i$ v=version$m=memory,t=time,p=threads$salt-base64$hash-base64 + parts := strings.Split(stub[9:], "$") + + // version-params$hash-config-params$salt[$hash] + if len(parts) < 3 || len(parts) > 4 { + err = ErrInvalidStub + return + } + + // Parse the first configuration part, the version parameters. + versionParams, err := parseKeyValuePair(parts[0]) + if err != nil { + return + } + + // Must be exactly one parameter in the version part. + if len(versionParams) != 1 { + err = ErrParseVersion + return + } + + // It must be "v". + val, ok := versionParams["v"] + if !ok { + err = ErrMissingVersion + return + } + + version = int(val) + + // Parse the second configuration part, the hash config parameters. + hashParams, err := parseKeyValuePair(parts[1]) + if err != nil { + return + } + + // It must have exactly three parameters. + if len(hashParams) != 3 { + err = ErrParseConfig + return + } + + // Memory parameter. + val, ok = hashParams["m"] + if !ok { + err = ErrMissingMemory + return + } + + memory = uint32(val) + + // Time parameter. + val, ok = hashParams["t"] + if !ok { + err = ErrMissingTime + return + } + + time = uint32(val) + + // Parallelism parameter. + val, ok = hashParams["p"] + if !ok { + err = ErrMissingParallelism + return + } + + parallelism = uint8(val) + + // Decode salt. + salt, err = base64.RawStdEncoding.DecodeString(parts[2]) + if err != nil { + return + } + + // Decode hash if present. + if len(parts) >= 4 { + hash, err = base64.RawStdEncoding.DecodeString(parts[3]) + } + + return +} + +func parseKeyValuePair(pairs string) (result map[string]uint64, err error) { + result = map[string]uint64{} + + parameterParts := strings.Split(pairs, ",") + + for _, parameter := range parameterParts { + parts := strings.SplitN(parameter, "=", 2) + if len(parts) != 2 { + err = ErrInvalidKeyValuePair + return + } + + parsedi, err := strconv.ParseUint(parts[1], 10, 32) + if err != nil { + return result, err + } + + result[parts[0]] = parsedi + } + + return result, nil +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go new file mode 100644 index 0000000..fbcc38d --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go @@ -0,0 +1,72 @@ +// Package bcrypt implements the bcrypt password hashing mechanism. +// +// Please note that bcrypt truncates passwords to 72 characters in length. Consider using +// a more modern hashing scheme such as scrypt or sha-crypt. If you must use bcrypt, +// consider using bcrypt-sha256 instead. +package bcrypt + +import "golang.org/x/crypto/bcrypt" +import "gopkg.in/hlandau/passlib.v1/abstract" +import "fmt" + +// An implementation of Scheme implementing bcrypt. +// +// Uses RecommendedCost. +var Crypter abstract.Scheme + +// The recommended cost for bcrypt. This may change with subsequent releases. +const RecommendedCost = 12 + +// bcrypt.DefaultCost is a bit low (10), so use 12 instead. + +func init() { + Crypter = New(RecommendedCost) +} + +// Create a new scheme implementing bcrypt. The recommended cost is RecommendedCost. +func New(cost int) abstract.Scheme { + return &scheme{ + Cost: cost, + } +} + +type scheme struct { + Cost int +} + +func (s *scheme) SupportsStub(stub string) bool { + return len(stub) >= 3 && stub[0] == '$' && stub[1] == '2' && + (stub[2] == '$' || (len(stub) >= 4 && stub[3] == '$' && + (stub[2] == 'a' || stub[2] == 'b' || stub[2] == 'y'))) +} + +func (s *scheme) Hash(password string) (string, error) { + h, err := bcrypt.GenerateFromPassword([]byte(password), s.Cost) + if err != nil { + return "", err + } + + return string(h), nil +} + +func (s *scheme) Verify(password, hash string) error { + err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) + if err == bcrypt.ErrMismatchedHashAndPassword { + err = abstract.ErrInvalidPassword + } + + return err +} + +func (s *scheme) NeedsUpdate(stub string) bool { + cost, err := bcrypt.Cost([]byte(stub)) + if err != nil { + return false + } + + return cost < s.Cost +} + +func (s *scheme) String() string { + return fmt.Sprintf("bcrypt(%d)", s.Cost) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go new file mode 100644 index 0000000..e11d083 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go @@ -0,0 +1,96 @@ +// Package bcryptsha256 implements bcrypt with a SHA256 prehash in a format that is compatible with Python passlib's equivalent bcrypt-sha256 scheme. +// +// This is preferred over bcrypt because the prehash essentially renders bcrypt's password length +// limitation irrelevant; although of course it is less compatible. +package bcryptsha256 + +import "gopkg.in/hlandau/passlib.v1/abstract" +import "gopkg.in/hlandau/passlib.v1/hash/bcrypt" +import "encoding/base64" +import "crypto/sha256" +import "strings" +import "fmt" + +type scheme struct { + underlying abstract.Scheme + cost int +} + +// An implementation of Scheme implementing Python passlib's `$bcrypt-sha256$` +// bcrypt variant. This is bcrypt with a SHA256 prehash, which removes bcrypt's +// password length limitation. +var Crypter abstract.Scheme + +// The recommended cost for bcrypt-sha256. This may change with subsequent releases. +const RecommendedCost = bcrypt.RecommendedCost + +func init() { + Crypter = New(bcrypt.RecommendedCost) +} + +// Instantiates a new Scheme implementing bcrypt with the given cost. +// +// The recommended cost is RecommendedCost. +func New(cost int) abstract.Scheme { + return &scheme{ + underlying: bcrypt.New(cost), + cost: cost, + } +} + +func (s *scheme) Hash(password string) (string, error) { + p := s.prehash(password) + h, err := s.underlying.Hash(p) + if err != nil { + return "", err + } + + return mangle(h), nil +} + +func (s *scheme) Verify(password, hash string) error { + p := s.prehash(password) + return s.underlying.Verify(p, demangle(hash)) +} + +func (s *scheme) prehash(password string) string { + h := sha256.New() + h.Write([]byte(password)) + v := base64.StdEncoding.EncodeToString(h.Sum(nil)) + return v +} + +func (s *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$bcrypt-sha256$") && s.underlying.SupportsStub(demangle(stub)) +} + +func (s *scheme) NeedsUpdate(stub string) bool { + return s.underlying.NeedsUpdate(demangle(stub)) +} + +func (s *scheme) String() string { + return fmt.Sprintf("bcrypt-sha256(%d)", s.cost) +} + +func demangle(stub string) string { + if strings.HasPrefix(stub, "$bcrypt-sha256$2") { + parts := strings.Split(stub[15:], "$") + // 0: 2a,12 + // 1: salt + // 2: hash + parts0 := strings.Split(parts[0], ",") + return "$" + parts0[0] + "$" + fmt.Sprintf("%02s", parts0[1]) + "$" + parts[1] + parts[2] + } else { + return stub + } +} + +func mangle(hash string) string { + parts := strings.Split(hash[1:], "$") + // 0: 2a + // 1: rounds + // 2: salt + hash + salt := parts[2][0:22] + h := parts[2][22:] + return "$bcrypt-sha256$" + parts[0] + "," + parts[1] + "$" + salt + "$" + h +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go new file mode 100644 index 0000000..8037bb1 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go @@ -0,0 +1,94 @@ +// Package pbkdf2 implements a modular crypt format for PBKDF2-SHA1, +// PBKDF2-SHA256 and PBKDF-SHA512. +// +// The format is the same as that used by Python's passlib and is compatible. +package pbkdf2 + +import ( + "crypto/rand" + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "gopkg.in/hlandau/passlib.v1/abstract" + "gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw" + "hash" + "strings" +) + +// An implementation of Scheme implementing a number of PBKDF2 modular crypt +// formats used by Python's passlib ($pbkdf2$, $pbkdf2-sha256$, +// $pbkdf2-sha512$). +// +// Uses RecommendedRounds. +// +// WARNING: SHA1 should not be used for new applications under any +// circumstances. It should be used for legacy compatibility only. +var SHA1Crypter abstract.Scheme +var SHA256Crypter abstract.Scheme +var SHA512Crypter abstract.Scheme + +const ( + RecommendedRoundsSHA1 = 131000 + RecommendedRoundsSHA256 = 29000 + RecommendedRoundsSHA512 = 25000 +) + +const SaltLength = 16 + +func init() { + SHA1Crypter = New("$pbkdf2$", sha1.New, RecommendedRoundsSHA1) + SHA256Crypter = New("$pbkdf2-sha256$", sha256.New, RecommendedRoundsSHA256) + SHA512Crypter = New("$pbkdf2-sha512$", sha512.New, RecommendedRoundsSHA512) +} + +type scheme struct { + Ident string + HashFunc func() hash.Hash + Rounds int +} + +func New(ident string, hf func() hash.Hash, rounds int) abstract.Scheme { + return &scheme{ + Ident: ident, + HashFunc: hf, + Rounds: rounds, + } +} + +func (s *scheme) Hash(password string) (string, error) { + salt := make([]byte, SaltLength) + _, err := rand.Read(salt) + if err != nil { + return "", err + } + + hash := raw.Hash([]byte(password), salt, s.Rounds, s.HashFunc) + + newHash := fmt.Sprintf("%s%d$%s$%s", s.Ident, s.Rounds, raw.Base64Encode(salt), hash) + return newHash, nil +} + +func (s *scheme) Verify(password, stub string) (err error) { + _, rounds, salt, oldHash, err := raw.Parse(stub) + if err != nil { + return + } + + newHash := raw.Hash([]byte(password), salt, rounds, s.HashFunc) + + if len(newHash) == 0 || !abstract.SecureCompare(oldHash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (s *scheme) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, s.Ident) +} + +func (s *scheme) NeedsUpdate(stub string) bool { + _, rounds, salt, _, err := raw.Parse(stub) + return err == raw.ErrInvalidRounds || rounds < s.Rounds || len(salt) < SaltLength +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go new file mode 100644 index 0000000..ad57957 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go @@ -0,0 +1,20 @@ +package raw + +import ( + "encoding/base64" + "strings" +) + +var b64 = base64.RawStdEncoding + +func Base64Encode(src []byte) (dst string) { + dst = b64.EncodeToString(src) + dst = strings.Replace(dst, "+", ".", -1) + return +} + +func Base64Decode(src string) (dst []byte, err error) { + src = strings.Replace(src, ".", "+", -1) + dst, err = b64.DecodeString(src) + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go new file mode 100644 index 0000000..54f7108 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go @@ -0,0 +1,62 @@ +package raw + +import ( + "crypto/sha1" + "crypto/sha256" + "crypto/sha512" + "fmt" + "hash" + "strconv" + "strings" +) + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid stub") + +// Indicates that the number of rounds specified is not in the valid range. +var ErrInvalidRounds = fmt.Errorf("invalid number of rounds") + +var hashMap = map[string]func() hash.Hash{ + "pbkdf2": sha1.New, + "pbkdf2-sha256": sha256.New, + "pbkdf2-sha512": sha512.New, +} + +func Parse(stub string) (hashFunc func() hash.Hash, rounds int, salt []byte, hash string, err error) { + // does not start with $pbkdf2 + if !strings.HasPrefix(stub, "$pbkdf2") { + err = ErrInvalidStub + return + } + + parts := strings.Split(stub, "$") + if f, ok := hashMap[parts[1]]; ok { + hashFunc = f + } else { + err = ErrInvalidStub + return + } + + roundsStr := parts[2] + var n uint64 + n, err = strconv.ParseUint(roundsStr, 10, 31) + if err != nil { + err = ErrInvalidStub + return + } + rounds = int(n) + + if rounds < MinRounds || rounds > MaxRounds { + err = ErrInvalidRounds + return + } + + salt, err = Base64Decode(parts[3]) + if err != nil { + err = fmt.Errorf("could not decode base64 salt") + return + } + hash = parts[4] + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go new file mode 100644 index 0000000..5b3299f --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go @@ -0,0 +1,15 @@ +package raw + +import ( + "golang.org/x/crypto/pbkdf2" + "hash" +) + +const ( + MinRounds = 1 + MaxRounds = 0xffffffff // setting at 32-bit limit for now +) + +func Hash(password, salt []byte, rounds int, hf func() hash.Hash) (hash string) { + return Base64Encode(pbkdf2.Key(password, salt, rounds, hf().Size(), hf)) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py new file mode 100644 index 0000000..f851848 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +import passlib.hash +import base64 +def f(p): + h = passlib.hash.pbkdf2_sha256.hash(p) + print(' {"%s", "%s"},' % (p,h)) + +f('') +f('a') +f('ab') +f('abc') +f('abcd') +f('abcde') +f('abcdef') +f('abcdefg') +f('abcdefgh') +f('abcdefghi') +f('abcdefghij') +f('abcdefghijk') +f('abcdefghijkl') +f('abcdefghijklm') +f('abcdefghijklmn') +f('abcdefghijklmno') +f('abcdefghijklmnop') +f('qrstuvwxyz012345') +f('67890./') +f('ABCDEFGHIJKLMNOP') +f('QRSTUVWXYZ012345') +for i in range(70): + f(('password'*10)[0:i]) diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go new file mode 100644 index 0000000..d2718b2 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go @@ -0,0 +1,95 @@ +// Package raw provides a raw implementation of the modular-crypt-wrapped scrypt primitive. +package raw + +import "golang.org/x/crypto/scrypt" +import "encoding/base64" +import "strings" +import "strconv" +import "fmt" + +// The current recommended N value for interactive logins. +const RecommendedN = 16384 + +// The current recommended r value for interactive logins. +const Recommendedr = 8 + +// The current recommended p value for interactive logins. +const Recommendedp = 1 + +// Wrapper for golang.org/x/crypto/scrypt implementing a sensible +// modular crypt interface. +// +// password should be a UTF-8 plaintext password. +// salt should be a random salt value in binary form. +// +// N, r and p are parameters to scrypt. +// +// Returns a modular crypt hash. +func ScryptSHA256(password string, salt []byte, N, r, p int) string { + passwordb := []byte(password) + + hash, err := scrypt.Key(passwordb, salt, N, r, p, 32) + if err != nil { + panic(err) + } + + hstr := base64.StdEncoding.EncodeToString(hash) + sstr := base64.StdEncoding.EncodeToString(salt) + + return fmt.Sprintf("$s2$%d$%d$%d$%s$%s", N, r, p, sstr, hstr) +} + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid scrypt password stub") + +// Parses an scrypt modular hash or stub string. +// +// The format is as follows: +// +// $s2$N$r$p$salt$hash // hash +// $s2$N$r$p$salt // stub +// +func Parse(stub string) (salt, hash []byte, N, r, p int, err error) { + if len(stub) < 10 || !strings.HasPrefix(stub, "$s2$") { + err = ErrInvalidStub + return + } + + // $s2$ N$r$p$salt-base64$hash-base64 + parts := strings.Split(stub[4:], "$") + + if len(parts) < 4 { + err = ErrInvalidStub + return + } + + var Ni, ri, pi uint64 + + Ni, err = strconv.ParseUint(parts[0], 10, 31) + if err != nil { + return + } + + ri, err = strconv.ParseUint(parts[1], 10, 31) + if err != nil { + return + } + + pi, err = strconv.ParseUint(parts[2], 10, 31) + if err != nil { + return + } + + N, r, p = int(Ni), int(ri), int(pi) + + salt, err = base64.StdEncoding.DecodeString(parts[3]) + if err != nil { + return + } + + if len(parts) >= 5 { + hash, err = base64.StdEncoding.DecodeString(parts[4]) + } + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go new file mode 100644 index 0000000..039182c --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go @@ -0,0 +1,113 @@ +// Package scrypt implements the scrypt password hashing mechanism, wrapped in +// the modular crypt format. +package scrypt + +import "fmt" +import "expvar" +import "strings" +import "crypto/rand" +import "encoding/base64" +import "gopkg.in/hlandau/passlib.v1/hash/scrypt/raw" +import "gopkg.in/hlandau/passlib.v1/abstract" + +var cScryptSHA256HashCalls = expvar.NewInt("passlib.scryptsha256.hashCalls") +var cScryptSHA256VerifyCalls = expvar.NewInt("passlib.scryptsha256.verifyCalls") + +// An implementation of Scheme performing scrypt-sha256. +// +// Uses the recommended values for N,r,p defined in raw. +var SHA256Crypter abstract.Scheme + +func init() { + SHA256Crypter = NewSHA256( + raw.RecommendedN, + raw.Recommendedr, + raw.Recommendedp, + ) +} + +// Returns an implementation of Scheme implementing scrypt-sha256 +// with the specified parameters. +func NewSHA256(N, r, p int) abstract.Scheme { + return &scryptSHA256Crypter{ + nN: N, + r: r, + p: p, + } +} + +type scryptSHA256Crypter struct { + nN, r, p int +} + +func (c *scryptSHA256Crypter) SetParams(N, r, p int) error { + c.nN = N + c.r = r + c.p = p + return nil +} + +func (c *scryptSHA256Crypter) SupportsStub(stub string) bool { + return strings.HasPrefix(stub, "$s2$") +} + +func (c *scryptSHA256Crypter) Hash(password string) (string, error) { + cScryptSHA256HashCalls.Add(1) + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *scryptSHA256Crypter) Verify(password, hash string) (err error) { + cScryptSHA256VerifyCalls.Add(1) + + _, newHash, _, _, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *scryptSHA256Crypter) NeedsUpdate(stub string) bool { + salt, _, N, r, p, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, N, r, p) +} + +func (c *scryptSHA256Crypter) needsUpdate(salt []byte, N, r, p int) bool { + return len(salt) < 18 || N < c.nN || r < c.r || p < c.p +} + +func (c *scryptSHA256Crypter) hash(password, stub string) (oldHashRaw []byte, newHash string, salt []byte, N, r, p int, err error) { + salt, oldHashRaw, N, r, p, err = raw.Parse(stub) + if err != nil { + return + } + + return oldHashRaw, raw.ScryptSHA256(password, salt, N, r, p), salt, N, r, p, nil +} + +func (c *scryptSHA256Crypter) makeStub() (string, error) { + buf := make([]byte, 18) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := base64.StdEncoding.EncodeToString(buf) + + return fmt.Sprintf("$s2$%d$%d$%d$%s", c.nN, c.r, c.p, salt), nil +} + +func (c *scryptSHA256Crypter) String() string { + return fmt.Sprintf("scrypt-sha256(%d,%d,%d)", c.nN, c.r, c.p) +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go new file mode 100644 index 0000000..2f96e6e --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go @@ -0,0 +1,34 @@ +package raw + +const bmap = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + +// Encodes a byte string using the sha2-crypt base64 variant. +func EncodeBase64(b []byte) string { + o := make([]byte, len(b)/3*4+4) + + for i, j := 0, 0; i < len(b); { + b1 := b[i] + b2 := byte(0) + b3 := byte(0) + + if (i + 1) < len(b) { + b2 = b[i+1] + } + if (i + 2) < len(b) { + b3 = b[i+2] + } + + o[j] = bmap[(b1 & 0x3F)] + o[j+1] = bmap[((b1&0xC0)>>6)|((b2&0x0F)<<2)] + o[j+2] = bmap[((b2&0xF0)>>4)|((b3&0x03)<<4)] + o[j+3] = bmap[(b3&0xFC)>>2] + i += 3 + j += 4 + } + + s := string(o) + return s[0 : len(b)*4/3-(len(b)%4)+1] +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go new file mode 100644 index 0000000..9e1fcfc --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go @@ -0,0 +1,82 @@ +package raw + +import "fmt" +import "strings" +import "strconv" + +// Indicates that a password hash or stub is invalid. +var ErrInvalidStub = fmt.Errorf("invalid stub") + +// Indicates that the number of rounds specified is not in the valid range. +var ErrInvalidRounds = fmt.Errorf("invalid number of rounds") + +// Scans a sha256-crypt or sha512-crypt modular crypt stub or modular crypt hash +// to determine configuration parameters. +func Parse(stub string) (isSHA512 bool, salt, hash string, rounds int, err error) { + // $5$ + if len(stub) < 3 || stub[0] != '$' || stub[2] != '$' { + err = ErrInvalidStub + return + } + + if stub[1] == '6' { + isSHA512 = true + } else if stub[1] != '5' { + err = ErrInvalidStub + return + } + + rest := stub[3:] + parts := strings.Split(rest, "$") + roundsStr := "" + + switch len(parts) { + case 1: + // $5$ + // $5$salt + salt = parts[0] + case 2: + // $5$salt$hash + // $5$rounds=1000$salt + if strings.HasPrefix(parts[0], "rounds=") { + roundsStr = parts[0] + salt = parts[1] + } else { + salt = parts[0] + hash = parts[1] + } + case 3: + // $5$rounds=1000$salt$hash + roundsStr = parts[0] + salt = parts[1] + hash = parts[2] + default: + err = ErrInvalidStub + } + + if roundsStr != "" { + if !strings.HasPrefix(roundsStr, "rounds=") { + err = ErrInvalidStub + return + } + + roundsStr = roundsStr[7:] + var n uint64 + n, err = strconv.ParseUint(roundsStr, 10, 31) + if err != nil { + err = ErrInvalidStub + return + } + + rounds = int(n) + + if rounds < MinimumRounds || rounds > MaximumRounds { + err = ErrInvalidRounds + return + } + } else { + rounds = DefaultRounds + } + + return +} diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go new file mode 100644 index 0000000..4b256fd --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go @@ -0,0 +1,187 @@ +// Package raw provides a raw implementation of the sha256-crypt and sha512-crypt primitives. +package raw + +import "io" +import "fmt" +import "hash" +import "crypto/sha256" +import "crypto/sha512" + +// The minimum number of rounds permissible for sha256-crypt and sha512-crypt. +const MinimumRounds = 1000 + +// The maximum number of rounds permissible for sha256-crypt and sha512-crypt. +// Don't use this! +const MaximumRounds = 999999999 + +// This is the 'default' number of rounds for sha256-crypt and sha512-crypt. If +// this rounds value is used the number of rounds is not explicitly specified +// in the modular crypt format, as it is the default. +const DefaultRounds = 5000 + +// This is the recommended number of rounds for sha256-crypt and sha512-crypt. +// This may change with subsequent releases of this package. It is recommended +// that you invoke sha256-crypt or sha512-crypt with this value, or a value +// proportional to it. +const RecommendedRounds = 10000 + +// Calculates sha256-crypt. The password must be in plaintext and be a UTF-8 +// string. +// +// The salt must be a valid ASCII between 0 and 16 characters in length +// inclusive. +// +// See the constants in this package for suggested values for rounds. +// +// Rounds must be in the range 1000 <= rounds <= 999999999. The function panics +// if this is not the case. +// +// The output is in modular crypt format. +func Crypt256(password, salt string, rounds int) string { + return "$5" + shaCrypt(password, salt, rounds, sha256.New, transpose256) +} + +// Calculates sha256-crypt. The password must be in plaintext and be a UTF-8 +// string. +// +// The salt must be a valid ASCII between 0 and 16 characters in length +// inclusive. +// +// See the constants in this package for suggested values for rounds. +// +// Rounds must be in the range 1000 <= rounds <= 999999999. The function panics +// if this is not the case. +// +// The output is in modular crypt format. +func Crypt512(password, salt string, rounds int) string { + return "$6" + shaCrypt(password, salt, rounds, sha512.New, transpose512) +} + +func shaCrypt(password, salt string, rounds int, newHash func() hash.Hash, transpose func(b []byte)) string { + if rounds < MinimumRounds || rounds > MaximumRounds { + panic("sha256-crypt rounds must be in 1000 <= rounds <= 999999999") + } + + passwordb := []byte(password) + saltb := []byte(salt) + if len(saltb) > 16 { + panic("salt must not exceed 16 bytes") + } + + // B + b := newHash() + b.Write(passwordb) + b.Write(saltb) + b.Write(passwordb) + bsum := b.Sum(nil) + + // A + a := newHash() + a.Write(passwordb) + a.Write(saltb) + repeat(a, bsum, len(passwordb)) + + plen := len(passwordb) + for plen != 0 { + if (plen & 1) != 0 { + a.Write(bsum) + } else { + a.Write(passwordb) + } + plen = plen >> 1 + } + + asum := a.Sum(nil) + + // DP + dp := newHash() + for i := 0; i < len(passwordb); i++ { + dp.Write(passwordb) + } + + dpsum := dp.Sum(nil) + + // P + p := make([]byte, len(passwordb)) + repeatTo(p, dpsum) + + // DS + ds := newHash() + for i := 0; i < (16 + int(asum[0])); i++ { + ds.Write(saltb) + } + + dssum := ds.Sum(nil)[0:len(saltb)] + + // S + s := make([]byte, len(saltb)) + repeatTo(s, dssum) + + // C + cur := asum[:] + for i := 0; i < rounds; i++ { + c := newHash() + if (i & 1) != 0 { + c.Write(p) + } else { + c.Write(cur) + } + if (i % 3) != 0 { + c.Write(s) + } + if (i % 7) != 0 { + c.Write(p) + } + if (i & 1) == 0 { + c.Write(p) + } else { + c.Write(cur) + } + cur = c.Sum(nil)[:] + } + + // Transposition + transpose(cur) + + // Hash + hstr := EncodeBase64(cur) + + if rounds == DefaultRounds { + return fmt.Sprintf("$%s$%s", salt, hstr) + } + + return fmt.Sprintf("$rounds=%d$%s$%s", rounds, salt, hstr) +} + +func repeat(w io.Writer, b []byte, sz int) { + var i int + for i = 0; (i + len(b)) <= sz; i += len(b) { + w.Write(b) + } + w.Write(b[0 : sz-i]) +} + +func repeatTo(out []byte, b []byte) { + if len(b) == 0 { + return + } + + var i int + for i = 0; (i + len(b)) <= len(out); i += len(b) { + copy(out[i:], b) + } + copy(out[i:], b) +} + +func transpose256(b []byte) { + b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30], b[31] = + b[20], b[10], b[0], b[11], b[1], b[21], b[2], b[22], b[12], b[23], b[13], b[3], b[14], b[4], b[24], b[5], b[25], b[15], b[26], b[16], b[6], b[17], b[7], b[27], b[8], b[28], b[18], b[29], b[19], b[9], b[30], b[31] +} + +func transpose512(b []byte) { + b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12], b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20], b[21], b[22], b[23], b[24], b[25], b[26], b[27], b[28], b[29], b[30], b[31], b[32], b[33], b[34], b[35], b[36], b[37], b[38], b[39], b[40], b[41], b[42], b[43], b[44], b[45], b[46], b[47], b[48], b[49], b[50], b[51], b[52], b[53], b[54], b[55], b[56], b[57], b[58], b[59], b[60], b[61], b[62], b[63] = + b[42], b[21], b[0], b[1], b[43], b[22], b[23], b[2], b[44], b[45], b[24], b[3], b[4], b[46], b[25], b[26], b[5], b[47], b[48], b[27], b[6], b[7], b[49], b[28], b[29], b[8], b[50], b[51], b[30], b[9], b[10], b[52], b[31], b[32], b[11], b[53], b[54], b[33], b[12], b[13], b[55], b[34], b[35], b[14], b[56], b[57], b[36], b[15], b[16], b[58], b[37], b[38], b[17], b[59], b[60], b[39], b[18], b[19], b[61], b[40], b[41], b[20], b[62], b[63] +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go new file mode 100644 index 0000000..c936469 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go @@ -0,0 +1,147 @@ +// Package sha2crypt implements sha256-crypt and sha512-crypt. +package sha2crypt + +import "fmt" +import "expvar" +import "crypto/rand" +import "gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw" +import "gopkg.in/hlandau/passlib.v1/abstract" + +var cSHA2CryptHashCalls = expvar.NewInt("passlib.sha2crypt.hashCalls") +var cSHA2CryptVerifyCalls = expvar.NewInt("passlib.sha2crypt.verifyCalls") + +// An implementation of Scheme performing sha256-crypt. +// +// The number of rounds is raw.RecommendedRounds. +var Crypter256 abstract.Scheme + +// An implementation of Scheme performing sha512-crypt. +// +// The number of rounds is raw.RecommendedRounds. +var Crypter512 abstract.Scheme + +func init() { + Crypter256 = NewCrypter256(raw.RecommendedRounds) + Crypter512 = NewCrypter512(raw.RecommendedRounds) +} + +// Returns a Scheme implementing sha256-crypt using the number of rounds +// specified. +func NewCrypter256(rounds int) abstract.Scheme { + return &sha2Crypter{false, rounds} +} + +// Returns a Scheme implementing sha512-crypt using the number of rounds +// specified. +func NewCrypter512(rounds int) abstract.Scheme { + return &sha2Crypter{true, rounds} +} + +type sha2Crypter struct { + sha512 bool + rounds int +} + +// Changes the default rounds for the crypter. Be warned that this +// is a global setting. The default default value is RecommendedRounds. +func (c *sha2Crypter) SetRounds(rounds int) error { + if rounds < raw.MinimumRounds || rounds > raw.MaximumRounds { + return raw.ErrInvalidRounds + } + + c.rounds = rounds + return nil +} + +func (c *sha2Crypter) SupportsStub(stub string) bool { + if len(stub) < 3 || stub[0] != '$' || stub[2] != '$' { + return false + } + return (stub[1] == '5' && !c.sha512) || (stub[1] == '6' && c.sha512) +} + +func (c *sha2Crypter) Hash(password string) (string, error) { + cSHA2CryptHashCalls.Add(1) + + stub, err := c.makeStub() + if err != nil { + return "", err + } + + _, newHash, _, _, err := c.hash(password, stub) + return newHash, err +} + +func (c *sha2Crypter) Verify(password, hash string) (err error) { + cSHA2CryptVerifyCalls.Add(1) + + _, newHash, _, _, err := c.hash(password, hash) + if err == nil && !abstract.SecureCompare(hash, newHash) { + err = abstract.ErrInvalidPassword + } + + return +} + +func (c *sha2Crypter) NeedsUpdate(stub string) bool { + _, salt, _, rounds, err := raw.Parse(stub) + if err != nil { + return false // ... + } + + return c.needsUpdate(salt, rounds) +} + +func (c *sha2Crypter) needsUpdate(salt string, rounds int) bool { + return rounds < c.rounds || len(salt) < 16 +} + +var errInvalidStub = fmt.Errorf("invalid sha2 password stub") + +func (c *sha2Crypter) hash(password, stub string) (oldHash, newHash, salt string, rounds int, err error) { + isSHA512, salt, oldHash, rounds, err := raw.Parse(stub) + if err != nil { + return "", "", "", 0, err + } + + if isSHA512 != c.sha512 { + return "", "", "", 0, errInvalidStub + } + + if c.sha512 { + return oldHash, raw.Crypt512(password, salt, rounds), salt, rounds, nil + } + + return oldHash, raw.Crypt256(password, salt, rounds), salt, rounds, nil +} + +func (c *sha2Crypter) makeStub() (string, error) { + ch := "5" + if c.sha512 { + ch = "6" + } + + buf := make([]byte, 12) + _, err := rand.Read(buf) + if err != nil { + return "", err + } + + salt := raw.EncodeBase64(buf)[0:16] + + if c.rounds == raw.DefaultRounds { + return fmt.Sprintf("$%s$%s", ch, salt), nil + } + + return fmt.Sprintf("$%s$rounds=%d$%s", ch, c.rounds, salt), nil +} + +func (c *sha2Crypter) String() string { + if c.sha512 { + return fmt.Sprintf("sha512-crypt(%d)", c.rounds) + } else { + return fmt.Sprintf("sha256-crypt(%d)", c.rounds) + } +} + +// © 2014 Hugo Landau BSD License diff --git a/vendor/gopkg.in/hlandau/passlib.v1/passlib.go b/vendor/gopkg.in/hlandau/passlib.v1/passlib.go new file mode 100644 index 0000000..0d13c75 --- /dev/null +++ b/vendor/gopkg.in/hlandau/passlib.v1/passlib.go @@ -0,0 +1,174 @@ +// Package passlib provides a simple password hashing and verification +// interface abstracting multiple password hashing schemes. +// +// After initialisation, most people need concern themselves only with the +// functions Hash and Verify, which uses the default context and sensible +// defaults. +// +// Library Initialization +// +// You should initialise the library before using it with the following line. +// +// // Call this at application startup. +// passlib.UseDefaults(passlib.Defaults20180601) +// +// See func UseDefaults for details. +package passlib // import "gopkg.in/hlandau/passlib.v1" + +import ( + "gopkg.in/hlandau/easymetric.v1/cexp" + "gopkg.in/hlandau/passlib.v1/abstract" +) + +var cHashCalls = cexp.NewCounter("passlib.ctx.hashCalls") +var cVerifyCalls = cexp.NewCounter("passlib.ctx.verifyCalls") +var cSuccessfulVerifyCalls = cexp.NewCounter("passlib.ctx.successfulVerifyCalls") +var cFailedVerifyCalls = cexp.NewCounter("passlib.ctx.failedVerifyCalls") +var cSuccessfulVerifyCallsWithUpgrade = cexp.NewCounter("passlib.ctx.successfulVerifyCallsWithUpgrade") +var cSuccessfulVerifyCallsDeferringUpgrade = cexp.NewCounter("passlib.ctx.successfulVerifyCallsDeferringUpgrade") + +// A password hashing context, that uses a given set of schemes to hash and +// verify passwords. +type Context struct { + // Slice of schemes to use, most preferred first. + // + // If left uninitialized, a sensible default set of schemes will be used. + // + // An upgrade hash (see the newHash return value of the Verify method of the + // abstract.Scheme interface) will be issued whenever a password is validated + // using a scheme which is not the first scheme in this slice. + Schemes []abstract.Scheme +} + +func (ctx *Context) schemes() []abstract.Scheme { + if ctx.Schemes == nil { + return DefaultSchemes + } + + return ctx.Schemes +} + +// Hashes a UTF-8 plaintext password using the context and produces a password hash. +// +// If stub is "", one is generated automaticaly for the preferred password hashing +// scheme; you should specify stub as "" in almost all cases. +// +// The provided or randomly generated stub is used to deterministically hash +// the password. The returned hash is in modular crypt format. +// +// If the context has not been specifically configured, a sensible default policy +// is used. See the fields of Context. +func (ctx *Context) Hash(password string) (hash string, err error) { + cHashCalls.Add(1) + + return ctx.schemes()[0].Hash(password) +} + +// Verifies a UTF-8 plaintext password using a previously derived password hash +// and the default context. Returns nil err only if the password is valid. +// +// If the hash is determined to be deprecated based on the context policy, and +// the password is valid, the password is hashed using the preferred password +// hashing scheme and returned in newHash. You should use this to upgrade any +// stored password hash in your database. +// +// newHash is empty if the password was not valid or if no upgrade is required. +// +// You should treat any non-nil err as a password verification error. +func (ctx *Context) Verify(password, hash string) (newHash string, err error) { + return ctx.verify(password, hash, true) +} + +// Like Verify, but does not hash an upgrade password when upgrade is required. +func (ctx *Context) VerifyNoUpgrade(password, hash string) error { + _, err := ctx.verify(password, hash, false) + return err +} + +func (ctx *Context) verify(password, hash string, canUpgrade bool) (newHash string, err error) { + cVerifyCalls.Add(1) + + for i, scheme := range ctx.schemes() { + if !scheme.SupportsStub(hash) { + continue + } + + err = scheme.Verify(password, hash) + if err != nil { + cFailedVerifyCalls.Add(1) + return "", err + } + + cSuccessfulVerifyCalls.Add(1) + if i != 0 || scheme.NeedsUpdate(hash) { + if canUpgrade { + cSuccessfulVerifyCallsWithUpgrade.Add(1) + + // If the scheme is not the first scheme, try and rehash with the + // preferred scheme. + if newHash, err2 := ctx.Hash(password); err2 == nil { + return newHash, nil + } + } else { + cSuccessfulVerifyCallsDeferringUpgrade.Add(1) + } + } + + return "", nil + } + + return "", abstract.ErrUnsupportedScheme +} + +// Determines whether a stub or hash needs updating according to the policy of +// the context. +func (ctx *Context) NeedsUpdate(stub string) bool { + for i, scheme := range ctx.schemes() { + if scheme.SupportsStub(stub) { + return i != 0 || scheme.NeedsUpdate(stub) + } + } + + return false +} + +// The default context, which uses sensible defaults. Most users should not +// reconfigure this. The defaults may change over time, so you may wish +// to reconfigure the context or use a custom context if you want precise +// control over the hashes used. +var DefaultContext Context + +// Hashes a UTF-8 plaintext password using the default context and produces a +// password hash. Chooses the preferred password hashing scheme based on the +// configured policy. The default policy is sensible. +func Hash(password string) (hash string, err error) { + return DefaultContext.Hash(password) +} + +// Verifies a UTF-8 plaintext password using a previously derived password hash +// and the default context. Returns nil err only if the password is valid. +// +// If the hash is determined to be deprecated based on policy, and the password +// is valid, the password is hashed using the preferred password hashing scheme +// and returned in newHash. You should use this to upgrade any stored password +// hash in your database. +// +// newHash is empty if the password was invalid or no upgrade is required. +// +// You should treat any non-nil err as a password verification error. +func Verify(password, hash string) (newHash string, err error) { + return DefaultContext.Verify(password, hash) +} + +// Like Verify, but never upgrades. +func VerifyNoUpgrade(password, hash string) error { + return DefaultContext.VerifyNoUpgrade(password, hash) +} + +// Uses the default context to determine whether a stub or hash needs updating. +func NeedsUpdate(stub string) bool { + return DefaultContext.NeedsUpdate(stub) +} + +// © 2008-2012 Assurance Technologies LLC. (Python passlib) BSD License +// © 2014 Hugo Landau BSD License diff --git a/vendor/modules.txt b/vendor/modules.txt new file mode 100644 index 0000000..af44b05 --- /dev/null +++ b/vendor/modules.txt @@ -0,0 +1,78 @@ +# blitter.com/go/cryptmt v1.0.0 +blitter.com/go/cryptmt +# blitter.com/go/goutmp v1.0.1 +blitter.com/go/goutmp +# blitter.com/go/herradurakex v1.0.0 +blitter.com/go/herradurakex +# blitter.com/go/mtwist v1.0.1 +blitter.com/go/mtwist +# blitter.com/go/wanderer v0.8.1 +blitter.com/go/wanderer +# git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 +git.schwanenlied.me/yawning/chacha20.git +# git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c +git.schwanenlied.me/yawning/kyber.git +# git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 +git.schwanenlied.me/yawning/newhope.git +# github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f +github.com/jameskeane/bcrypt +# github.com/klauspost/cpuid v1.2.2 +github.com/klauspost/cpuid +# github.com/klauspost/reedsolomon v1.9.3 +github.com/klauspost/reedsolomon +# github.com/kr/pty v1.1.4 +github.com/kr/pty +# github.com/mattn/go-isatty v0.0.7 +github.com/mattn/go-isatty +# github.com/pkg/errors v0.8.1 +github.com/pkg/errors +# github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 +github.com/templexxx/cpufeat +# github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b +github.com/templexxx/xor +# github.com/tjfoc/gmsm v1.0.1 +github.com/tjfoc/gmsm/sm4 +# github.com/xtaci/kcp-go v5.4.19+incompatible +github.com/xtaci/kcp-go +# golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af +golang.org/x/crypto/blowfish +golang.org/x/crypto/pbkdf2 +golang.org/x/crypto/twofish +golang.org/x/crypto/sha3 +golang.org/x/crypto/cast5 +golang.org/x/crypto/salsa20 +golang.org/x/crypto/tea +golang.org/x/crypto/xtea +golang.org/x/crypto/argon2 +golang.org/x/crypto/bcrypt +golang.org/x/crypto/internal/subtle +golang.org/x/crypto/salsa20/salsa +golang.org/x/crypto/blake2b +golang.org/x/crypto/scrypt +# golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 +golang.org/x/net/ipv4 +golang.org/x/net/ipv6 +golang.org/x/net/bpf +golang.org/x/net/internal/iana +golang.org/x/net/internal/socket +# golang.org/x/sys v0.0.0-20190416152802-12500544f89f +golang.org/x/sys/unix +golang.org/x/sys/windows +golang.org/x/sys/cpu +# gopkg.in/hlandau/easymetric.v1 v1.0.0 +gopkg.in/hlandau/easymetric.v1/cexp +# gopkg.in/hlandau/measurable.v1 v1.0.1 +gopkg.in/hlandau/measurable.v1 +# gopkg.in/hlandau/passlib.v1 v1.0.10 +gopkg.in/hlandau/passlib.v1 +gopkg.in/hlandau/passlib.v1/abstract +gopkg.in/hlandau/passlib.v1/hash/argon2 +gopkg.in/hlandau/passlib.v1/hash/bcrypt +gopkg.in/hlandau/passlib.v1/hash/bcryptsha256 +gopkg.in/hlandau/passlib.v1/hash/pbkdf2 +gopkg.in/hlandau/passlib.v1/hash/scrypt +gopkg.in/hlandau/passlib.v1/hash/sha2crypt +gopkg.in/hlandau/passlib.v1/hash/argon2/raw +gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw +gopkg.in/hlandau/passlib.v1/hash/scrypt/raw +gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw From eb9ce0e0e2255eda1213b819ee188a3249939ca7 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 12:18:39 -0800 Subject: [PATCH 058/134] Updated imports and vendor/ for local fork of schwanenlied.me crypto (chacha20, newhope, kyber) Signed-off-by: Russ Magee --- go.mod | 10 +- go.sum | 13 + vendor/blitter.com/go/chacha20/LICENSE | 661 ++++++ .../go/chacha20}/README.md | 5 +- .../go/chacha20}/chacha20.go | 309 +-- vendor/blitter.com/go/chacha20/go.mod | 8 + vendor/blitter.com/go/chacha20/go.sum | 12 + .../go/chacha20/internal/api/api.go | 59 + .../go/chacha20/internal/hardware/impl.go | 27 + .../chacha20/internal/hardware/impl_amd64.go | 88 + .../chacha20/internal/hardware/impl_amd64.s | 1682 ++++++++++++++++ .../go/chacha20/internal/ref/impl.go | 374 ++++ .../go/kyber}/.gitignore | 0 .../go/kyber}/LICENSE | 0 .../go/kyber}/README.md | 0 .../kyber.git => blitter.com/go/kyber}/cbd.go | 0 .../kyber.git => blitter.com/go/kyber}/doc.go | 0 vendor/blitter.com/go/kyber/go.mod | 5 + vendor/blitter.com/go/kyber/go.sum | 7 + .../go/kyber}/hwaccel.go | 0 .../go/kyber}/hwaccel_amd64.go | 0 .../go/kyber}/hwaccel_amd64.s | 0 .../go/kyber}/hwaccel_ref.go | 0 .../go/kyber}/indcpa.go | 0 .../kyber.git => blitter.com/go/kyber}/kem.go | 0 .../kyber.git => blitter.com/go/kyber}/kex.go | 0 .../kyber.git => blitter.com/go/kyber}/ntt.go | 0 .../go/kyber}/params.go | 0 .../go/kyber}/poly.go | 0 .../go/kyber}/polyvec.go | 0 .../go/kyber}/precomp.go | 0 .../go/kyber}/reduce.go | 0 .../go/newhope}/LICENSE | 0 .../go/newhope}/batcher.go | 0 .../go/newhope}/error_correction.go | 4 +- vendor/blitter.com/go/newhope/go.mod | 8 + vendor/blitter.com/go/newhope/go.sum | 19 + .../go/newhope}/newhope.go | 0 .../go/newhope}/newhope_simple.go | 0 .../go/newhope}/ntt.go | 0 .../go/newhope}/params.go | 0 .../go/newhope}/poly.go | 14 +- .../go/newhope}/poly_simple.go | 0 .../go/newhope}/precomp.go | 0 .../go/newhope}/reduce.go | 0 .../yawning/chacha20.git/chacha20_amd64.go | 95 - .../yawning/chacha20.git/chacha20_amd64.py | 1295 ------------ .../yawning/chacha20.git/chacha20_amd64.s | 1180 ----------- .../yawning/chacha20.git/chacha20_ref.go | 394 ---- .../yawning/chacha20.git/chacha20_ref_go19.go | 395 ---- .../yawning/newhope.git/LICENSE | 122 -- .../x/crypto/blake2b/blake2b_generic.go | 69 +- vendor/golang.org/x/crypto/scrypt/scrypt.go | 97 +- .../x/crypto/sha3/hashes_generic.go | 2 +- vendor/golang.org/x/crypto/sha3/sha3.go | 23 +- vendor/golang.org/x/crypto/sha3/sha3_s390x.go | 4 +- vendor/golang.org/x/crypto/sha3/sha3_s390x.s | 2 +- vendor/golang.org/x/crypto/sha3/shake.go | 6 +- .../golang.org/x/crypto/sha3/shake_generic.go | 2 +- vendor/golang.org/x/crypto/sha3/xor.go | 7 + .../golang.org/x/crypto/sha3/xor_unaligned.go | 9 +- vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s | 17 + vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go | 10 +- .../x/sys/cpu/syscall_aix_ppc64_gc.go | 36 + .../golang.org/x/sys/unix/affinity_linux.go | 42 +- .../golang.org/x/sys/unix/asm_linux_riscv64.s | 54 + .../golang.org/x/sys/unix/asm_openbsd_arm64.s | 29 + vendor/golang.org/x/sys/unix/dirent.go | 91 +- vendor/golang.org/x/sys/unix/endian_little.go | 2 +- vendor/golang.org/x/sys/unix/ioctl.go | 41 +- vendor/golang.org/x/sys/unix/mkall.sh | 29 +- vendor/golang.org/x/sys/unix/mkerrors.sh | 13 +- vendor/golang.org/x/sys/unix/mkpost.go | 20 +- .../x/sys/unix/mksyscall_aix_ppc.go | 13 +- .../x/sys/unix/mksyscall_aix_ppc64.go | 14 +- .../golang.org/x/sys/unix/mksysctl_openbsd.go | 355 ++++ .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 265 --- vendor/golang.org/x/sys/unix/mksysnum.go | 2 +- .../{openbsd_pledge.go => pledge_openbsd.go} | 3 - .../x/sys/unix/readdirent_getdents.go | 12 + .../x/sys/unix/readdirent_getdirentries.go | 19 + vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 8 +- vendor/golang.org/x/sys/unix/syscall.go | 1 - vendor/golang.org/x/sys/unix/syscall_aix.go | 85 +- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 16 + .../x/sys/unix/syscall_aix_ppc64.go | 47 + vendor/golang.org/x/sys/unix/syscall_bsd.go | 12 +- .../golang.org/x/sys/unix/syscall_darwin.go | 50 +- .../x/sys/unix/syscall_darwin_386.go | 2 + .../x/sys/unix/syscall_darwin_amd64.go | 2 + .../x/sys/unix/syscall_darwin_arm.go | 4 + .../x/sys/unix/syscall_darwin_arm64.go | 4 + .../x/sys/unix/syscall_dragonfly.go | 54 +- .../golang.org/x/sys/unix/syscall_freebsd.go | 163 +- vendor/golang.org/x/sys/unix/syscall_linux.go | 150 +- .../x/sys/unix/syscall_linux_arm.go | 13 + .../golang.org/x/sys/unix/syscall_netbsd.go | 74 +- .../golang.org/x/sys/unix/syscall_openbsd.go | 74 +- .../x/sys/unix/syscall_openbsd_arm64.go | 37 + .../golang.org/x/sys/unix/syscall_solaris.go | 47 +- vendor/golang.org/x/sys/unix/types_aix.go | 27 +- vendor/golang.org/x/sys/unix/types_freebsd.go | 50 +- vendor/golang.org/x/sys/unix/types_netbsd.go | 1 + vendor/golang.org/x/sys/unix/types_openbsd.go | 1 + .../{openbsd_unveil.go => unveil_openbsd.go} | 2 - .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 2 + .../x/sys/unix/zerrors_aix_ppc64.go | 4 +- .../x/sys/unix/zerrors_linux_386.go | 189 ++ .../x/sys/unix/zerrors_linux_amd64.go | 189 ++ .../x/sys/unix/zerrors_linux_arm.go | 189 ++ .../x/sys/unix/zerrors_linux_arm64.go | 189 ++ .../x/sys/unix/zerrors_linux_mips.go | 189 ++ .../x/sys/unix/zerrors_linux_mips64.go | 189 ++ .../x/sys/unix/zerrors_linux_mips64le.go | 189 ++ .../x/sys/unix/zerrors_linux_mipsle.go | 189 ++ .../x/sys/unix/zerrors_linux_ppc64.go | 189 ++ .../x/sys/unix/zerrors_linux_ppc64le.go | 189 ++ .../x/sys/unix/zerrors_linux_riscv64.go | 189 ++ .../x/sys/unix/zerrors_linux_s390x.go | 189 ++ .../x/sys/unix/zerrors_linux_sparc64.go | 189 ++ .../x/sys/unix/zerrors_openbsd_arm64.go | 1789 +++++++++++++++++ .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 52 +- .../x/sys/unix/zsyscall_aix_ppc64.go | 40 +- .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 44 +- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 35 +- .../x/sys/unix/zsyscall_darwin_386.1_11.go | 20 +- .../x/sys/unix/zsyscall_darwin_386.go | 30 +- .../x/sys/unix/zsyscall_darwin_386.s | 4 +- .../x/sys/unix/zsyscall_darwin_amd64.go | 30 +- .../x/sys/unix/zsyscall_darwin_amd64.s | 4 +- .../x/sys/unix/zsyscall_darwin_arm.go | 15 - .../x/sys/unix/zsyscall_darwin_arm.s | 2 - .../x/sys/unix/zsyscall_darwin_arm64.go | 15 - .../x/sys/unix/zsyscall_darwin_arm64.s | 2 - .../x/sys/unix/zsyscall_dragonfly_amd64.go | 17 + .../x/sys/unix/zsyscall_freebsd_386.go | 12 +- .../x/sys/unix/zsyscall_freebsd_amd64.go | 12 +- .../x/sys/unix/zsyscall_freebsd_arm.go | 12 +- .../x/sys/unix/zsyscall_freebsd_arm64.go | 12 +- .../x/sys/unix/zsyscall_linux_386.go | 54 +- .../x/sys/unix/zsyscall_linux_amd64.go | 54 +- .../x/sys/unix/zsyscall_linux_arm.go | 69 +- .../x/sys/unix/zsyscall_linux_arm64.go | 54 +- .../x/sys/unix/zsyscall_linux_mips.go | 54 +- .../x/sys/unix/zsyscall_linux_mips64.go | 54 +- .../x/sys/unix/zsyscall_linux_mips64le.go | 54 +- .../x/sys/unix/zsyscall_linux_mipsle.go | 54 +- .../x/sys/unix/zsyscall_linux_ppc64.go | 54 +- .../x/sys/unix/zsyscall_linux_ppc64le.go | 54 +- .../x/sys/unix/zsyscall_linux_riscv64.go | 54 +- .../x/sys/unix/zsyscall_linux_s390x.go | 54 +- .../x/sys/unix/zsyscall_linux_sparc64.go | 54 +- .../x/sys/unix/zsyscall_netbsd_386.go | 2 +- .../x/sys/unix/zsyscall_netbsd_amd64.go | 2 +- .../x/sys/unix/zsyscall_netbsd_arm.go | 2 +- .../x/sys/unix/zsyscall_netbsd_arm64.go | 2 +- .../x/sys/unix/zsyscall_openbsd_386.go | 2 +- .../x/sys/unix/zsyscall_openbsd_amd64.go | 2 +- .../x/sys/unix/zsyscall_openbsd_arm.go | 2 +- .../x/sys/unix/zsyscall_openbsd_arm64.go | 1692 ++++++++++++++++ .../x/sys/unix/zsysctl_openbsd_386.go | 2 + .../x/sys/unix/zsysctl_openbsd_amd64.go | 2 +- .../x/sys/unix/zsysctl_openbsd_arm.go | 4 +- .../x/sys/unix/zsysctl_openbsd_arm64.go | 275 +++ .../x/sys/unix/zsysnum_freebsd_386.go | 23 +- .../x/sys/unix/zsysnum_freebsd_amd64.go | 23 +- .../x/sys/unix/zsysnum_freebsd_arm.go | 23 +- .../x/sys/unix/zsysnum_freebsd_arm64.go | 445 ++-- .../x/sys/unix/zsysnum_linux_386.go | 806 ++++---- .../x/sys/unix/zsysnum_linux_amd64.go | 10 + .../x/sys/unix/zsysnum_linux_arm.go | 742 +++---- .../x/sys/unix/zsysnum_linux_arm64.go | 10 + .../x/sys/unix/zsysnum_linux_mips.go | 776 +++---- .../x/sys/unix/zsysnum_linux_mips64.go | 10 + .../x/sys/unix/zsysnum_linux_mips64le.go | 10 + .../x/sys/unix/zsysnum_linux_mipsle.go | 776 +++---- .../x/sys/unix/zsysnum_linux_ppc64.go | 21 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 21 + .../x/sys/unix/zsysnum_linux_riscv64.go | 10 + .../x/sys/unix/zsysnum_linux_s390x.go | 24 + .../x/sys/unix/zsysnum_linux_sparc64.go | 25 + .../x/sys/unix/zsysnum_openbsd_arm64.go | 217 ++ .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 45 +- .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 50 +- .../x/sys/unix/ztypes_darwin_386.go | 36 +- .../x/sys/unix/ztypes_darwin_amd64.go | 38 +- .../x/sys/unix/ztypes_darwin_arm.go | 36 +- .../x/sys/unix/ztypes_darwin_arm64.go | 38 +- .../x/sys/unix/ztypes_dragonfly_amd64.go | 38 +- .../x/sys/unix/ztypes_freebsd_386.go | 185 +- .../x/sys/unix/ztypes_freebsd_amd64.go | 182 +- .../x/sys/unix/ztypes_freebsd_arm.go | 159 +- .../x/sys/unix/ztypes_freebsd_arm64.go | 160 +- .../golang.org/x/sys/unix/ztypes_linux_386.go | 388 ++++ .../x/sys/unix/ztypes_linux_amd64.go | 389 ++++ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 388 ++++ .../x/sys/unix/ztypes_linux_arm64.go | 389 ++++ .../x/sys/unix/ztypes_linux_mips.go | 388 ++++ .../x/sys/unix/ztypes_linux_mips64.go | 389 ++++ .../x/sys/unix/ztypes_linux_mips64le.go | 389 ++++ .../x/sys/unix/ztypes_linux_mipsle.go | 388 ++++ .../x/sys/unix/ztypes_linux_ppc64.go | 389 ++++ .../x/sys/unix/ztypes_linux_ppc64le.go | 389 ++++ .../x/sys/unix/ztypes_linux_riscv64.go | 390 ++++ .../x/sys/unix/ztypes_linux_s390x.go | 389 ++++ .../x/sys/unix/ztypes_linux_sparc64.go | 389 ++++ .../x/sys/unix/ztypes_netbsd_386.go | 35 +- .../x/sys/unix/ztypes_netbsd_amd64.go | 41 +- .../x/sys/unix/ztypes_netbsd_arm.go | 41 +- .../x/sys/unix/ztypes_netbsd_arm64.go | 41 +- .../x/sys/unix/ztypes_openbsd_386.go | 1 + .../x/sys/unix/ztypes_openbsd_amd64.go | 1 + .../x/sys/unix/ztypes_openbsd_arm.go | 1 + .../x/sys/unix/ztypes_openbsd_arm64.go | 565 ++++++ .../golang.org/x/sys/windows/env_windows.go | 34 +- vendor/golang.org/x/sys/windows/mkerrors.bash | 5 +- vendor/golang.org/x/sys/windows/mkerrors.go | 7 - .../x/sys/windows/mkknownfolderids.bash | 27 + vendor/golang.org/x/sys/windows/mksyscall.go | 2 + .../x/sys/windows/security_windows.go | 279 ++- vendor/golang.org/x/sys/windows/service.go | 74 +- .../x/sys/windows/syscall_windows.go | 128 +- .../golang.org/x/sys/windows/types_windows.go | 261 ++- .../x/sys/windows/zerrors_windows.go | 2 +- .../x/sys/windows/zknownfolderids_windows.go | 149 ++ .../x/sys/windows/zsyscall_windows.go | 696 ++++++- vendor/modules.txt | 19 +- xsnet/net.go | 4 +- 228 files changed, 21925 insertions(+), 6795 deletions(-) create mode 100644 vendor/blitter.com/go/chacha20/LICENSE rename vendor/{git.schwanenlied.me/yawning/chacha20.git => blitter.com/go/chacha20}/README.md (88%) rename vendor/{git.schwanenlied.me/yawning/chacha20.git => blitter.com/go/chacha20}/chacha20.go (52%) create mode 100644 vendor/blitter.com/go/chacha20/go.mod create mode 100644 vendor/blitter.com/go/chacha20/go.sum create mode 100644 vendor/blitter.com/go/chacha20/internal/api/api.go create mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl.go create mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go create mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s create mode 100644 vendor/blitter.com/go/chacha20/internal/ref/impl.go rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/.gitignore (100%) rename vendor/{git.schwanenlied.me/yawning/chacha20.git => blitter.com/go/kyber}/LICENSE (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/README.md (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/cbd.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/doc.go (100%) create mode 100644 vendor/blitter.com/go/kyber/go.mod create mode 100644 vendor/blitter.com/go/kyber/go.sum rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/hwaccel.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/hwaccel_amd64.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/hwaccel_amd64.s (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/hwaccel_ref.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/indcpa.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/kem.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/kex.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/ntt.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/params.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/poly.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/polyvec.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/precomp.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/kyber}/reduce.go (100%) rename vendor/{git.schwanenlied.me/yawning/kyber.git => blitter.com/go/newhope}/LICENSE (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/batcher.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/error_correction.go (97%) create mode 100644 vendor/blitter.com/go/newhope/go.mod create mode 100644 vendor/blitter.com/go/newhope/go.sum rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/newhope.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/newhope_simple.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/ntt.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/params.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/poly.go (95%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/poly_simple.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/precomp.go (100%) rename vendor/{git.schwanenlied.me/yawning/newhope.git => blitter.com/go/newhope}/reduce.go (100%) delete mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go delete mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py delete mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s delete mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go delete mode 100644 vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go delete mode 100644 vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE create mode 100644 vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s create mode 100644 vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go create mode 100644 vendor/golang.org/x/sys/unix/asm_linux_riscv64.s create mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s create mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl rename vendor/golang.org/x/sys/unix/{openbsd_pledge.go => pledge_openbsd.go} (98%) create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdents.go create mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go create mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go rename vendor/golang.org/x/sys/unix/{openbsd_unveil.go => unveil_openbsd.go} (98%) create mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go create mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/windows/mkerrors.go create mode 100644 vendor/golang.org/x/sys/windows/mkknownfolderids.bash create mode 100644 vendor/golang.org/x/sys/windows/zknownfolderids_windows.go diff --git a/go.mod b/go.mod index 6f3a987..7fca59c 100644 --- a/go.mod +++ b/go.mod @@ -6,26 +6,24 @@ require ( blitter.com/go/cryptmt v1.0.0 blitter.com/go/goutmp v1.0.1 blitter.com/go/herradurakex v1.0.0 + blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 blitter.com/go/mtwist v1.0.1 // indirect + blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae blitter.com/go/wanderer v0.8.1 - git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 // indirect - git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c - git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/klauspost/cpuid v1.2.2 // indirect github.com/klauspost/reedsolomon v1.9.3 // indirect github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 github.com/pkg/errors v0.8.1 // indirect - github.com/stretchr/testify v1.4.0 // indirect github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect - golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af + golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect - golang.org/x/sys v0.0.0-20190416152802-12500544f89f + golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect gopkg.in/hlandau/passlib.v1 v1.0.10 diff --git a/go.sum b/go.sum index 9474418..5d792ba 100644 --- a/go.sum +++ b/go.sum @@ -1,11 +1,17 @@ +blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c h1:LcnFFg6MCIJHf26P7eOUST45fNLHJI5erq0gWZaDLCo= +blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= +blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 h1:D45AnrNphtvczBXRp5JQicZRTgaK/Is5bgPDDvRKhTc= +blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9/go.mod h1:SK6QfGG72lIfKW1Td0wH7f0wwN5nSIhV3K+wvzGNjrw= blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= blitter.com/go/mtwist v1.0.1/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= +blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae h1:YBBaCcdYRrI1btsmcMTv1VMPmaSXXz0RwKOTgMJYSRU= +blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae/go.mod h1:ywoxfDBqInPsqtnxYsmS4SYMJ5D/kNcrFgpvI+Xcun0= blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= @@ -46,13 +52,20 @@ github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae/go.mod h1:gXtu8J62 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/vendor/blitter.com/go/chacha20/LICENSE b/vendor/blitter.com/go/chacha20/LICENSE new file mode 100644 index 0000000..dba13ed --- /dev/null +++ b/vendor/blitter.com/go/chacha20/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md b/vendor/blitter.com/go/chacha20/README.md similarity index 88% rename from vendor/git.schwanenlied.me/yawning/chacha20.git/README.md rename to vendor/blitter.com/go/chacha20/README.md index 9080a84..104f4ac 100644 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/README.md +++ b/vendor/blitter.com/go/chacha20/README.md @@ -1,7 +1,7 @@ ### chacha20 - ChaCha20 #### Yawning Angel (yawning at schwanenlied dot me) -Yet another Go ChaCha20 implementation. Everything else I found was slow, +Yet another Go ChaCha20 implementation. Everything else I found was slow, didn't support all the variants I need to use, or relied on cgo to go fast. Features: @@ -9,6 +9,5 @@ Features: * 20 round, 256 bit key only. Everything else is pointless and stupid. * IETF 96 bit nonce variant. * XChaCha 24 byte nonce variant. - * SSE2 and AVX2 support on amd64 targets. + * SSSE3 and AVX2 support on amd64 targets. * Incremental encrypt/decrypt support, unlike golang.org/x/crypto/salsa20. - diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go b/vendor/blitter.com/go/chacha20/chacha20.go similarity index 52% rename from vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go rename to vendor/blitter.com/go/chacha20/chacha20.go index 07d5e4b..fa90fb1 100644 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20.go +++ b/vendor/blitter.com/go/chacha20/chacha20.go @@ -1,18 +1,30 @@ -// chacha20.go - A ChaCha stream cipher implementation. +// Copryright (C) 2019 Yawning Angel // -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to chacha20, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . -package chacha20 +// Package chacha20 implements the ChaCha20 stream cipher. +package chacha20 // import "blitter.com/go/chacha20" import ( "crypto/cipher" "encoding/binary" "errors" "math" - "runtime" + + "blitter.com/go/chacha20/internal/api" + "blitter.com/go/chacha20/internal/hardware" + "blitter.com/go/chacha20/internal/ref" ) const ( @@ -30,41 +42,29 @@ const ( // HNonceSize is the HChaCha20 nonce size in bytes. HNonceSize = 16 - - // BlockSize is the ChaCha20 block size in bytes. - BlockSize = 64 - - stateSize = 16 - chachaRounds = 20 - - // The constant "expand 32-byte k" as little endian uint32s. - sigma0 = uint32(0x61707865) - sigma1 = uint32(0x3320646e) - sigma2 = uint32(0x79622d32) - sigma3 = uint32(0x6b206574) ) var ( // ErrInvalidKey is the error returned when the key is invalid. - ErrInvalidKey = errors.New("key length must be KeySize bytes") + ErrInvalidKey = errors.New("chacha20: key length must be KeySize bytes") // ErrInvalidNonce is the error returned when the nonce is invalid. - ErrInvalidNonce = errors.New("nonce length must be NonceSize/INonceSize/XNonceSize bytes") + ErrInvalidNonce = errors.New("chacha20: nonce length must be NonceSize/INonceSize/XNonceSize bytes") // ErrInvalidCounter is the error returned when the counter is invalid. - ErrInvalidCounter = errors.New("block counter is invalid (out of range)") + ErrInvalidCounter = errors.New("chacha20: block counter is invalid (out of range)") - useUnsafe = false - usingVectors = false - blocksFn = blocksRef + supportedImpls []api.Implementation + activeImpl api.Implementation + + _ cipher.Stream = (*Cipher)(nil) ) -// A Cipher is an instance of ChaCha20/XChaCha20 using a particular key and -// nonce. +// Cipher is an instance of ChaCha20/XChaCha20 using a particular key and nonce. type Cipher struct { - state [stateSize]uint32 + state [api.StateSize]uint32 + buf [api.BlockSize]byte - buf [BlockSize]byte off int ietf bool } @@ -80,6 +80,99 @@ func (c *Cipher) Reset() { } } +// Seek sets the block counter to a given offset. +func (c *Cipher) Seek(blockCounter uint64) error { + if c.ietf { + if blockCounter > math.MaxUint32 { + return ErrInvalidCounter + } + c.state[12] = uint32(blockCounter) + } else { + c.state[12] = uint32(blockCounter) + c.state[13] = uint32(blockCounter >> 32) + } + c.off = api.BlockSize + return nil +} + +// ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key +// and nonce. +func (c *Cipher) ReKey(key, nonce []byte) error { + c.Reset() + return c.doReKey(key, nonce) +} + +func (c *Cipher) doReKey(key, nonce []byte) error { + if len(key) != KeySize { + return ErrInvalidKey + } + + var subKey []byte + switch len(nonce) { + case NonceSize, INonceSize: + case XNonceSize: + subKey = c.buf[:KeySize] + activeImpl.HChaCha(key, nonce, subKey) + key = subKey + nonce = nonce[16:24] + default: + return ErrInvalidNonce + } + + _ = key[31] // Force bounds check elimination. + + c.state[0] = api.Sigma0 + c.state[1] = api.Sigma1 + c.state[2] = api.Sigma2 + c.state[3] = api.Sigma3 + c.state[4] = binary.LittleEndian.Uint32(key[0:4]) + c.state[5] = binary.LittleEndian.Uint32(key[4:8]) + c.state[6] = binary.LittleEndian.Uint32(key[8:12]) + c.state[7] = binary.LittleEndian.Uint32(key[12:16]) + c.state[8] = binary.LittleEndian.Uint32(key[16:20]) + c.state[9] = binary.LittleEndian.Uint32(key[20:24]) + c.state[10] = binary.LittleEndian.Uint32(key[24:28]) + c.state[11] = binary.LittleEndian.Uint32(key[28:32]) + c.state[12] = 0 + if len(nonce) == INonceSize { + _ = nonce[11] // Force bounds check elimination. + c.state[13] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[14] = binary.LittleEndian.Uint32(nonce[4:8]) + c.state[15] = binary.LittleEndian.Uint32(nonce[8:12]) + c.ietf = true + } else { + _ = nonce[7] // Force bounds check elimination. + c.state[13] = 0 + c.state[14] = binary.LittleEndian.Uint32(nonce[0:4]) + c.state[15] = binary.LittleEndian.Uint32(nonce[4:8]) + c.ietf = false + } + c.off = api.BlockSize + + if subKey != nil { + for i := range subKey { + subKey[i] = 0 + } + } + + return nil +} + +// New returns a new ChaCha20/XChaCha20 instance. +func New(key, nonce []byte) (*Cipher, error) { + var c Cipher + if err := c.doReKey(key, nonce); err != nil { + return nil, err + } + + return &c, nil +} + +// HChaCha is the HChaCha20 hash function used to make XChaCha. +func HChaCha(key, nonce []byte, dst *[32]byte) { + activeImpl.HChaCha(key, nonce, dst[:]) +} + // XORKeyStream sets dst to the result of XORing src with the key stream. Dst // and src may be the same slice but otherwise should not overlap. func (c *Cipher) XORKeyStream(dst, src []byte) { @@ -89,11 +182,11 @@ func (c *Cipher) XORKeyStream(dst, src []byte) { for remaining := len(src); remaining > 0; { // Process multiple blocks at once. - if c.off == BlockSize { - nrBlocks := remaining / BlockSize - directBytes := nrBlocks * BlockSize + if c.off == api.BlockSize { + nrBlocks := remaining / api.BlockSize + directBytes := nrBlocks * api.BlockSize if nrBlocks > 0 { - blocksFn(&c.state, src, dst, nrBlocks, c.ietf) + c.doBlocks(dst, src, nrBlocks) remaining -= directBytes if remaining == 0 { return @@ -104,37 +197,54 @@ func (c *Cipher) XORKeyStream(dst, src []byte) { // If there's a partial block, generate 1 block of keystream into // the internal buffer. - blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.doBlocks(c.buf[:], nil, 1) c.off = 0 } // Process partial blocks from the buffered keystream. - toXor := BlockSize - c.off + toXor := api.BlockSize - c.off if remaining < toXor { toXor = remaining } if toXor > 0 { - for i, v := range src[:toXor] { - dst[i] = v ^ c.buf[c.off+i] - } + // The inliner doesn't want to inline this function, but my + // attempts to force BCE don't seem to work with manual + // inlining. + // + // Taking the extra function call overhead here appears to be + // worth it. + c.xorBufBytes(dst, src, toXor) + dst = dst[toXor:] src = src[toXor:] remaining -= toXor - c.off += toXor } } } +func (c *Cipher) xorBufBytes(dst, src []byte, n int) { + // Force bounds check elimination. + buf := c.buf[c.off:] + _ = buf[n-1] + _ = dst[n-1] + _ = src[n-1] + + for i := 0; i < n; i++ { + dst[i] = buf[i] ^ src[i] + } + c.off += n +} + // KeyStream sets dst to the raw keystream. func (c *Cipher) KeyStream(dst []byte) { for remaining := len(dst); remaining > 0; { // Process multiple blocks at once. - if c.off == BlockSize { - nrBlocks := remaining / BlockSize - directBytes := nrBlocks * BlockSize + if c.off == api.BlockSize { + nrBlocks := remaining / api.BlockSize + directBytes := nrBlocks * api.BlockSize if nrBlocks > 0 { - blocksFn(&c.state, nil, dst, nrBlocks, c.ietf) + c.doBlocks(dst, nil, nrBlocks) remaining -= directBytes if remaining == 0 { return @@ -144,12 +254,12 @@ func (c *Cipher) KeyStream(dst []byte) { // If there's a partial block, generate 1 block of keystream into // the internal buffer. - blocksFn(&c.state, nil, c.buf[:], 1, c.ietf) + c.doBlocks(c.buf[:], nil, 1) c.off = 0 } // Process partial blocks from the buffered keystream. - toCopy := BlockSize - c.off + toCopy := api.BlockSize - c.off if remaining < toCopy { toCopy = remaining } @@ -162,112 +272,19 @@ func (c *Cipher) KeyStream(dst []byte) { } } -// ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key -// and nonce. -func (c *Cipher) ReKey(key, nonce []byte) error { - if len(key) != KeySize { - return ErrInvalidKey - } - - switch len(nonce) { - case NonceSize: - case INonceSize: - case XNonceSize: - var subkey [KeySize]byte - var subnonce [HNonceSize]byte - copy(subnonce[:], nonce[0:16]) - HChaCha(key, &subnonce, &subkey) - key = subkey[:] - nonce = nonce[16:24] - defer func() { - for i := range subkey { - subkey[i] = 0 - } - }() - default: - return ErrInvalidNonce - } - - c.Reset() - c.state[0] = sigma0 - c.state[1] = sigma1 - c.state[2] = sigma2 - c.state[3] = sigma3 - c.state[4] = binary.LittleEndian.Uint32(key[0:4]) - c.state[5] = binary.LittleEndian.Uint32(key[4:8]) - c.state[6] = binary.LittleEndian.Uint32(key[8:12]) - c.state[7] = binary.LittleEndian.Uint32(key[12:16]) - c.state[8] = binary.LittleEndian.Uint32(key[16:20]) - c.state[9] = binary.LittleEndian.Uint32(key[20:24]) - c.state[10] = binary.LittleEndian.Uint32(key[24:28]) - c.state[11] = binary.LittleEndian.Uint32(key[28:32]) - c.state[12] = 0 - if len(nonce) == INonceSize { - c.state[13] = binary.LittleEndian.Uint32(nonce[0:4]) - c.state[14] = binary.LittleEndian.Uint32(nonce[4:8]) - c.state[15] = binary.LittleEndian.Uint32(nonce[8:12]) - c.ietf = true - } else { - c.state[13] = 0 - c.state[14] = binary.LittleEndian.Uint32(nonce[0:4]) - c.state[15] = binary.LittleEndian.Uint32(nonce[4:8]) - c.ietf = false - } - c.off = BlockSize - return nil - -} - -// Seek sets the block counter to a given offset. -func (c *Cipher) Seek(blockCounter uint64) error { +func (c *Cipher) doBlocks(dst, src []byte, nrBlocks int) { if c.ietf { - if blockCounter > math.MaxUint32 { - return ErrInvalidCounter + ctr := uint64(c.state[12]) + if ctr+uint64(nrBlocks) > math.MaxUint32 { + panic("chacha20: will exceed key stream per nonce limit") } - c.state[12] = uint32(blockCounter) - } else { - c.state[12] = uint32(blockCounter) - c.state[13] = uint32(blockCounter >> 32) } - c.off = BlockSize - return nil -} -// NewCipher returns a new ChaCha20/XChaCha20 instance. -func NewCipher(key, nonce []byte) (*Cipher, error) { - c := new(Cipher) - if err := c.ReKey(key, nonce); err != nil { - return nil, err - } - return c, nil -} - -// HChaCha is the HChaCha20 hash function used to make XChaCha. -func HChaCha(key []byte, nonce *[HNonceSize]byte, out *[32]byte) { - var x [stateSize]uint32 // Last 4 slots unused, sigma hardcoded. - x[0] = binary.LittleEndian.Uint32(key[0:4]) - x[1] = binary.LittleEndian.Uint32(key[4:8]) - x[2] = binary.LittleEndian.Uint32(key[8:12]) - x[3] = binary.LittleEndian.Uint32(key[12:16]) - x[4] = binary.LittleEndian.Uint32(key[16:20]) - x[5] = binary.LittleEndian.Uint32(key[20:24]) - x[6] = binary.LittleEndian.Uint32(key[24:28]) - x[7] = binary.LittleEndian.Uint32(key[28:32]) - x[8] = binary.LittleEndian.Uint32(nonce[0:4]) - x[9] = binary.LittleEndian.Uint32(nonce[4:8]) - x[10] = binary.LittleEndian.Uint32(nonce[8:12]) - x[11] = binary.LittleEndian.Uint32(nonce[12:16]) - hChaChaRef(&x, out) + activeImpl.Blocks(&c.state, dst, src, nrBlocks) } func init() { - switch runtime.GOARCH { - case "386", "amd64": - // Abuse unsafe to skip calling binary.LittleEndian.PutUint32 - // in the critical path. This is a big boost on systems that are - // little endian and not overly picky about alignment. - useUnsafe = true - } + supportedImpls = hardware.Register(supportedImpls) + supportedImpls = ref.Register(supportedImpls) + activeImpl = supportedImpls[0] } - -var _ cipher.Stream = (*Cipher)(nil) diff --git a/vendor/blitter.com/go/chacha20/go.mod b/vendor/blitter.com/go/chacha20/go.mod new file mode 100644 index 0000000..2aef045 --- /dev/null +++ b/vendor/blitter.com/go/chacha20/go.mod @@ -0,0 +1,8 @@ +module blitter.com/go/chacha20 + +go 1.12 + +require ( + github.com/stretchr/testify v1.4.0 + golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 +) diff --git a/vendor/blitter.com/go/chacha20/go.sum b/vendor/blitter.com/go/chacha20/go.sum new file mode 100644 index 0000000..2bba056 --- /dev/null +++ b/vendor/blitter.com/go/chacha20/go.sum @@ -0,0 +1,12 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/blitter.com/go/chacha20/internal/api/api.go b/vendor/blitter.com/go/chacha20/internal/api/api.go new file mode 100644 index 0000000..e347812 --- /dev/null +++ b/vendor/blitter.com/go/chacha20/internal/api/api.go @@ -0,0 +1,59 @@ +// Copryright (C) 2019 Yawning Angel +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// Package api provides the ChaCha20 implementation abstract interface. +package api + +const ( + // BlockSize is the size of a ChaCha20 block in bytes. + BlockSize = 64 + + // StateSize is the size of the ChaCha20 state as 32 bit unsigned words. + StateSize = 16 + + // HashSize is the size of the HChaCha output in bytes. + HashSize = 32 + + // HNonceSize is the HChaCha20 nonce size in bytes. + HNonceSize = 16 + + // Sigma0 is the first word of the ChaCha constant. + Sigma0 = uint32(0x61707865) + + // Sigma1 is the second word of the ChaCha constant. + Sigma1 = uint32(0x3320646e) + + // Sigma2 is the third word of the ChaCha constant. + Sigma2 = uint32(0x79622d32) + + // Sigma3 is the fourth word of the ChaCha constant. + Sigma3 = uint32(0x6b206574) +) + +// Implementation is a ChaCha20 implementation +type Implementation interface { + // Name returns the name of the implementation. + Name() string + + // Blocks calculates the ChaCha20 blocks. If src is not nil, dst will + // be set to the XOR of src with the key stream, otherwise dst will be + // set to the key stream. + Blocks(x *[StateSize]uint32, dst, src []byte, nrBlocks int) + + // HChaCha calculates the HChaCha20 hash. + // + // Note: `dst` is guaranteed to be HashSize bytes. + HChaCha(key, nonce []byte, dst []byte) +} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl.go b/vendor/blitter.com/go/chacha20/internal/hardware/impl.go new file mode 100644 index 0000000..0c63e3a --- /dev/null +++ b/vendor/blitter.com/go/chacha20/internal/hardware/impl.go @@ -0,0 +1,27 @@ +// Copryright (C) 2019 Yawning Angel +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// Package hardware provides the hardware accelerated ChaCha20 implementations. +package hardware + +import "blitter.com/go/chacha20/internal/api" + +var hardwareImpls []api.Implementation + +// Register appends the implementation(s) to the provided slice, and returns the +// new slice. +func Register(impls []api.Implementation) []api.Implementation { + return append(impls, hardwareImpls...) +} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go new file mode 100644 index 0000000..31cbf8b --- /dev/null +++ b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go @@ -0,0 +1,88 @@ +// Copryright (C) 2019 Yawning Angel +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// +build amd64,!noasm + +package hardware + +import ( + "golang.org/x/sys/cpu" + + "blitter.com/go/chacha20/internal/api" +) + +//go:noescape +func blocksAVX2(s *[api.StateSize]uint32, in, out []byte) + +//go:noescape +func hChaChaAVX2(key, nonce []byte, dst *byte) + +//go:noescape +func blocksSSSE3(s *[api.StateSize]uint32, in, out []byte) + +//go:noescape +func hChaChaSSSE3(key, nonce []byte, dst *byte) + +type implAmd64 struct { + name string + + blocksFn func(*[api.StateSize]uint32, []byte, []byte, int) + hChaChaFn func([]byte, []byte, *byte) +} + +func (impl *implAmd64) Name() string { + return impl.name +} + +func (impl *implAmd64) Blocks(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { + impl.blocksFn(x, dst, src, nrBlocks) +} + +func (impl *implAmd64) HChaCha(key, nonce []byte, dst []byte) { + impl.hChaChaFn(key, nonce, &dst[0]) +} + +func blockWrapper(fn func(*[api.StateSize]uint32, []byte, []byte)) func(*[api.StateSize]uint32, []byte, []byte, int) { + return func(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { + sz := nrBlocks * api.BlockSize + if src != nil { + fn(x, src[:sz], dst[:sz]) + } else { + // Sub-optimal, but the compiler special cases this to an assembly + // optimized runtime.memclrNoHeapPointers, so it's not terrible. + for i := range dst[:sz] { + dst[i] = 0 + } + fn(x, dst[:sz], dst[:sz]) + } + } +} + +func init() { + if cpu.X86.HasAVX2 { + hardwareImpls = append(hardwareImpls, &implAmd64{ + name: "amd64_avx2", + blocksFn: blockWrapper(blocksAVX2), + hChaChaFn: hChaChaAVX2, + }) + } + if cpu.X86.HasSSE3 { + hardwareImpls = append(hardwareImpls, &implAmd64{ + name: "amd64_ssse3", + blocksFn: blockWrapper(blocksSSSE3), + hChaChaFn: hChaChaSSSE3, + }) + } +} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s new file mode 100644 index 0000000..fb93eef --- /dev/null +++ b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s @@ -0,0 +1,1682 @@ +// Copryright (C) 2019 Yawning Angel +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// +build !noasm + +#include "textflag.h" + +DATA ·chacha_constants<>+0x00(SB)/4, $0x61707865 +DATA ·chacha_constants<>+0x04(SB)/4, $0x3320646E +DATA ·chacha_constants<>+0x08(SB)/4, $0x79622D32 +DATA ·chacha_constants<>+0x0c(SB)/4, $0x6B206574 +DATA ·chacha_constants<>+0x10(SB)/8, $0x0504070601000302 +DATA ·chacha_constants<>+0x18(SB)/8, $0x0D0C0F0E09080B0A +DATA ·chacha_constants<>+0x20(SB)/8, $0x0605040702010003 +DATA ·chacha_constants<>+0x28(SB)/8, $0x0E0D0C0F0A09080B +GLOBL ·chacha_constants<>(SB), (NOPTR+RODATA), $48 + +// func blocksAVX2(s *[api.StateSize]uint32, in, out []byte) +TEXT ·blocksAVX2(SB), NOSPLIT, $576-56 + // This is Andrew Moon's AVX2 ChaCha implementation taken from + // supercop-20171218, with some minor changes, primarily calling + // convention and assembly dialect related. + + // Align the stack on a 64 byte boundary. + MOVQ SP, BP + ADDQ $64, BP + ANDQ $-64, BP + + // Go calling convention -> SYSV AMD64 (and a fixup). + MOVQ s+0(FP), DI // &s -> DI + ADDQ $16, DI // Skip the ChaCha constants in the chachaState. + MOVQ in+8(FP), SI // &in[0] -> SI + MOVQ out+32(FP), DX // &out[0] -> DX + MOVQ in_len+16(FP), CX // len(in) -> CX + + // Begin the main body of `chacha_blocks_avx2`. + // + // Mostly a direct translation except: + // * The number of rounds is always 20. + // * %rbp is used instead of %rsp. + LEAQ ·chacha_constants<>(SB), AX + VMOVDQU 0(AX), X8 + VMOVDQU 16(AX), X6 + VMOVDQU 32(AX), X7 + VMOVDQU 0(DI), X9 + VMOVDQU 16(DI), X10 + VMOVDQU 32(DI), X11 + + // MOVQ 48(DI), AX + MOVQ $1, R9 + VMOVDQA X8, 0(BP) + VMOVDQA X9, 16(BP) + VMOVDQA X10, 32(BP) + VMOVDQA X11, 48(BP) + + // MOVQ AX, 64(BP) + VMOVDQA X6, 448(BP) + VMOVDQA X6, 464(BP) + VMOVDQA X7, 480(BP) + VMOVDQA X7, 496(BP) + CMPQ CX, $512 + JAE chacha_blocks_avx2_atleast512 + CMPQ CX, $256 + JAE chacha_blocks_avx2_atleast256 + JMP chacha_blocks_avx2_below256 + +chacha_blocks_avx2_atleast512: + MOVQ 48(BP), AX + LEAQ 1(AX), R8 + LEAQ 2(AX), R9 + LEAQ 3(AX), R10 + LEAQ 4(AX), BX + LEAQ 5(AX), R11 + LEAQ 6(AX), R12 + LEAQ 7(AX), R13 + LEAQ 8(AX), R14 + MOVL AX, 128(BP) + MOVL R8, 4+128(BP) + MOVL R9, 8+128(BP) + MOVL R10, 12+128(BP) + MOVL BX, 16+128(BP) + MOVL R11, 20+128(BP) + MOVL R12, 24+128(BP) + MOVL R13, 28+128(BP) + SHRQ $32, AX + SHRQ $32, R8 + SHRQ $32, R9 + SHRQ $32, R10 + SHRQ $32, BX + SHRQ $32, R11 + SHRQ $32, R12 + SHRQ $32, R13 + MOVL AX, 160(BP) + MOVL R8, 4+160(BP) + MOVL R9, 8+160(BP) + MOVL R10, 12+160(BP) + MOVL BX, 16+160(BP) + MOVL R11, 20+160(BP) + MOVL R12, 24+160(BP) + MOVL R13, 28+160(BP) + MOVQ R14, 48(BP) + + // MOVQ 64(BP), AX + MOVQ $20, AX + VPBROADCASTD 0(BP), Y0 + VPBROADCASTD 4+0(BP), Y1 + VPBROADCASTD 8+0(BP), Y2 + VPBROADCASTD 12+0(BP), Y3 + VPBROADCASTD 16(BP), Y4 + VPBROADCASTD 4+16(BP), Y5 + VPBROADCASTD 8+16(BP), Y6 + VPBROADCASTD 12+16(BP), Y7 + VPBROADCASTD 32(BP), Y8 + VPBROADCASTD 4+32(BP), Y9 + VPBROADCASTD 8+32(BP), Y10 + VPBROADCASTD 12+32(BP), Y11 + VPBROADCASTD 8+48(BP), Y14 + VPBROADCASTD 12+48(BP), Y15 + VMOVDQA 128(BP), Y12 + VMOVDQA 160(BP), Y13 + +chacha_blocks_avx2_mainloop1: + VPADDD Y0, Y4, Y0 + VPADDD Y1, Y5, Y1 + VPXOR Y12, Y0, Y12 + VPXOR Y13, Y1, Y13 + VPADDD Y2, Y6, Y2 + VPADDD Y3, Y7, Y3 + VPXOR Y14, Y2, Y14 + VPXOR Y15, Y3, Y15 + VPSHUFB 448(BP), Y12, Y12 + VPSHUFB 448(BP), Y13, Y13 + VPADDD Y8, Y12, Y8 + VPADDD Y9, Y13, Y9 + VPSHUFB 448(BP), Y14, Y14 + VPSHUFB 448(BP), Y15, Y15 + VPADDD Y10, Y14, Y10 + VPADDD Y11, Y15, Y11 + VMOVDQA Y12, 96(BP) + VPXOR Y4, Y8, Y4 + VPXOR Y5, Y9, Y5 + VPSLLD $ 12, Y4, Y12 + VPSRLD $20, Y4, Y4 + VPXOR Y4, Y12, Y4 + VPSLLD $ 12, Y5, Y12 + VPSRLD $20, Y5, Y5 + VPXOR Y5, Y12, Y5 + VPXOR Y6, Y10, Y6 + VPXOR Y7, Y11, Y7 + VPSLLD $ 12, Y6, Y12 + VPSRLD $20, Y6, Y6 + VPXOR Y6, Y12, Y6 + VPSLLD $ 12, Y7, Y12 + VPSRLD $20, Y7, Y7 + VPXOR Y7, Y12, Y7 + VPADDD Y0, Y4, Y0 + VPADDD Y1, Y5, Y1 + VPXOR 96(BP), Y0, Y12 + VPXOR Y13, Y1, Y13 + VPADDD Y2, Y6, Y2 + VPADDD Y3, Y7, Y3 + VPXOR Y14, Y2, Y14 + VPXOR Y15, Y3, Y15 + VPSHUFB 480(BP), Y12, Y12 + VPSHUFB 480(BP), Y13, Y13 + VPADDD Y8, Y12, Y8 + VPADDD Y9, Y13, Y9 + VPSHUFB 480(BP), Y14, Y14 + VPSHUFB 480(BP), Y15, Y15 + VPADDD Y10, Y14, Y10 + VPADDD Y11, Y15, Y11 + VMOVDQA Y12, 96(BP) + VPXOR Y4, Y8, Y4 + VPXOR Y5, Y9, Y5 + VPSLLD $ 7, Y4, Y12 + VPSRLD $25, Y4, Y4 + VPXOR Y4, Y12, Y4 + VPSLLD $ 7, Y5, Y12 + VPSRLD $25, Y5, Y5 + VPXOR Y5, Y12, Y5 + VPXOR Y6, Y10, Y6 + VPXOR Y7, Y11, Y7 + VPSLLD $ 7, Y6, Y12 + VPSRLD $25, Y6, Y6 + VPXOR Y6, Y12, Y6 + VPSLLD $ 7, Y7, Y12 + VPSRLD $25, Y7, Y7 + VPXOR Y7, Y12, Y7 + VPADDD Y0, Y5, Y0 + VPADDD Y1, Y6, Y1 + VPXOR Y15, Y0, Y15 + VPXOR 96(BP), Y1, Y12 + VPADDD Y2, Y7, Y2 + VPADDD Y3, Y4, Y3 + VPXOR Y13, Y2, Y13 + VPXOR Y14, Y3, Y14 + VPSHUFB 448(BP), Y15, Y15 + VPSHUFB 448(BP), Y12, Y12 + VPADDD Y10, Y15, Y10 + VPADDD Y11, Y12, Y11 + VPSHUFB 448(BP), Y13, Y13 + VPSHUFB 448(BP), Y14, Y14 + VPADDD Y8, Y13, Y8 + VPADDD Y9, Y14, Y9 + VMOVDQA Y15, 96(BP) + VPXOR Y5, Y10, Y5 + VPXOR Y6, Y11, Y6 + VPSLLD $ 12, Y5, Y15 + VPSRLD $20, Y5, Y5 + VPXOR Y5, Y15, Y5 + VPSLLD $ 12, Y6, Y15 + VPSRLD $20, Y6, Y6 + VPXOR Y6, Y15, Y6 + VPXOR Y7, Y8, Y7 + VPXOR Y4, Y9, Y4 + VPSLLD $ 12, Y7, Y15 + VPSRLD $20, Y7, Y7 + VPXOR Y7, Y15, Y7 + VPSLLD $ 12, Y4, Y15 + VPSRLD $20, Y4, Y4 + VPXOR Y4, Y15, Y4 + VPADDD Y0, Y5, Y0 + VPADDD Y1, Y6, Y1 + VPXOR 96(BP), Y0, Y15 + VPXOR Y12, Y1, Y12 + VPADDD Y2, Y7, Y2 + VPADDD Y3, Y4, Y3 + VPXOR Y13, Y2, Y13 + VPXOR Y14, Y3, Y14 + VPSHUFB 480(BP), Y15, Y15 + VPSHUFB 480(BP), Y12, Y12 + VPADDD Y10, Y15, Y10 + VPADDD Y11, Y12, Y11 + VPSHUFB 480(BP), Y13, Y13 + VPSHUFB 480(BP), Y14, Y14 + VPADDD Y8, Y13, Y8 + VPADDD Y9, Y14, Y9 + VMOVDQA Y15, 96(BP) + VPXOR Y5, Y10, Y5 + VPXOR Y6, Y11, Y6 + VPSLLD $ 7, Y5, Y15 + VPSRLD $25, Y5, Y5 + VPXOR Y5, Y15, Y5 + VPSLLD $ 7, Y6, Y15 + VPSRLD $25, Y6, Y6 + VPXOR Y6, Y15, Y6 + VPXOR Y7, Y8, Y7 + VPXOR Y4, Y9, Y4 + VPSLLD $ 7, Y7, Y15 + VPSRLD $25, Y7, Y7 + VPXOR Y7, Y15, Y7 + VPSLLD $ 7, Y4, Y15 + VPSRLD $25, Y4, Y4 + VPXOR Y4, Y15, Y4 + VMOVDQA 96(BP), Y15 + SUBQ $2, AX + JNZ chacha_blocks_avx2_mainloop1 + VMOVDQA Y8, 192(BP) + VMOVDQA Y9, 224(BP) + VMOVDQA Y10, 256(BP) + VMOVDQA Y11, 288(BP) + VMOVDQA Y12, 320(BP) + VMOVDQA Y13, 352(BP) + VMOVDQA Y14, 384(BP) + VMOVDQA Y15, 416(BP) + VPBROADCASTD 0(BP), Y8 + VPBROADCASTD 4+0(BP), Y9 + VPBROADCASTD 8+0(BP), Y10 + VPBROADCASTD 12+0(BP), Y11 + VPBROADCASTD 16(BP), Y12 + VPBROADCASTD 4+16(BP), Y13 + VPBROADCASTD 8+16(BP), Y14 + VPBROADCASTD 12+16(BP), Y15 + VPADDD Y8, Y0, Y0 + VPADDD Y9, Y1, Y1 + VPADDD Y10, Y2, Y2 + VPADDD Y11, Y3, Y3 + VPADDD Y12, Y4, Y4 + VPADDD Y13, Y5, Y5 + VPADDD Y14, Y6, Y6 + VPADDD Y15, Y7, Y7 + VPUNPCKLDQ Y1, Y0, Y8 + VPUNPCKLDQ Y3, Y2, Y9 + VPUNPCKHDQ Y1, Y0, Y12 + VPUNPCKHDQ Y3, Y2, Y13 + VPUNPCKLDQ Y5, Y4, Y10 + VPUNPCKLDQ Y7, Y6, Y11 + VPUNPCKHDQ Y5, Y4, Y14 + VPUNPCKHDQ Y7, Y6, Y15 + VPUNPCKLQDQ Y9, Y8, Y0 + VPUNPCKLQDQ Y11, Y10, Y1 + VPUNPCKHQDQ Y9, Y8, Y2 + VPUNPCKHQDQ Y11, Y10, Y3 + VPUNPCKLQDQ Y13, Y12, Y4 + VPUNPCKLQDQ Y15, Y14, Y5 + VPUNPCKHQDQ Y13, Y12, Y6 + VPUNPCKHQDQ Y15, Y14, Y7 + VPERM2I128 $0x20, Y1, Y0, Y8 + VPERM2I128 $0x20, Y3, Y2, Y9 + VPERM2I128 $0x31, Y1, Y0, Y12 + VPERM2I128 $0x31, Y3, Y2, Y13 + VPERM2I128 $0x20, Y5, Y4, Y10 + VPERM2I128 $0x20, Y7, Y6, Y11 + VPERM2I128 $0x31, Y5, Y4, Y14 + VPERM2I128 $0x31, Y7, Y6, Y15 + ANDQ SI, SI + JZ chacha_blocks_avx2_noinput1 + VPXOR 0(SI), Y8, Y8 + VPXOR 64(SI), Y9, Y9 + VPXOR 128(SI), Y10, Y10 + VPXOR 192(SI), Y11, Y11 + VPXOR 256(SI), Y12, Y12 + VPXOR 320(SI), Y13, Y13 + VPXOR 384(SI), Y14, Y14 + VPXOR 448(SI), Y15, Y15 + VMOVDQU Y8, 0(DX) + VMOVDQU Y9, 64(DX) + VMOVDQU Y10, 128(DX) + VMOVDQU Y11, 192(DX) + VMOVDQU Y12, 256(DX) + VMOVDQU Y13, 320(DX) + VMOVDQU Y14, 384(DX) + VMOVDQU Y15, 448(DX) + VMOVDQA 192(BP), Y0 + VMOVDQA 224(BP), Y1 + VMOVDQA 256(BP), Y2 + VMOVDQA 288(BP), Y3 + VMOVDQA 320(BP), Y4 + VMOVDQA 352(BP), Y5 + VMOVDQA 384(BP), Y6 + VMOVDQA 416(BP), Y7 + VPBROADCASTD 32(BP), Y8 + VPBROADCASTD 4+32(BP), Y9 + VPBROADCASTD 8+32(BP), Y10 + VPBROADCASTD 12+32(BP), Y11 + VMOVDQA 128(BP), Y12 + VMOVDQA 160(BP), Y13 + VPBROADCASTD 8+48(BP), Y14 + VPBROADCASTD 12+48(BP), Y15 + VPADDD Y8, Y0, Y0 + VPADDD Y9, Y1, Y1 + VPADDD Y10, Y2, Y2 + VPADDD Y11, Y3, Y3 + VPADDD Y12, Y4, Y4 + VPADDD Y13, Y5, Y5 + VPADDD Y14, Y6, Y6 + VPADDD Y15, Y7, Y7 + VPUNPCKLDQ Y1, Y0, Y8 + VPUNPCKLDQ Y3, Y2, Y9 + VPUNPCKHDQ Y1, Y0, Y12 + VPUNPCKHDQ Y3, Y2, Y13 + VPUNPCKLDQ Y5, Y4, Y10 + VPUNPCKLDQ Y7, Y6, Y11 + VPUNPCKHDQ Y5, Y4, Y14 + VPUNPCKHDQ Y7, Y6, Y15 + VPUNPCKLQDQ Y9, Y8, Y0 + VPUNPCKLQDQ Y11, Y10, Y1 + VPUNPCKHQDQ Y9, Y8, Y2 + VPUNPCKHQDQ Y11, Y10, Y3 + VPUNPCKLQDQ Y13, Y12, Y4 + VPUNPCKLQDQ Y15, Y14, Y5 + VPUNPCKHQDQ Y13, Y12, Y6 + VPUNPCKHQDQ Y15, Y14, Y7 + VPERM2I128 $0x20, Y1, Y0, Y8 + VPERM2I128 $0x20, Y3, Y2, Y9 + VPERM2I128 $0x31, Y1, Y0, Y12 + VPERM2I128 $0x31, Y3, Y2, Y13 + VPERM2I128 $0x20, Y5, Y4, Y10 + VPERM2I128 $0x20, Y7, Y6, Y11 + VPERM2I128 $0x31, Y5, Y4, Y14 + VPERM2I128 $0x31, Y7, Y6, Y15 + VPXOR 32(SI), Y8, Y8 + VPXOR 96(SI), Y9, Y9 + VPXOR 160(SI), Y10, Y10 + VPXOR 224(SI), Y11, Y11 + VPXOR 288(SI), Y12, Y12 + VPXOR 352(SI), Y13, Y13 + VPXOR 416(SI), Y14, Y14 + VPXOR 480(SI), Y15, Y15 + VMOVDQU Y8, 32(DX) + VMOVDQU Y9, 96(DX) + VMOVDQU Y10, 160(DX) + VMOVDQU Y11, 224(DX) + VMOVDQU Y12, 288(DX) + VMOVDQU Y13, 352(DX) + VMOVDQU Y14, 416(DX) + VMOVDQU Y15, 480(DX) + ADDQ $512, SI + JMP chacha_blocks_avx2_mainloop1_cont + +chacha_blocks_avx2_noinput1: + VMOVDQU Y8, 0(DX) + VMOVDQU Y9, 64(DX) + VMOVDQU Y10, 128(DX) + VMOVDQU Y11, 192(DX) + VMOVDQU Y12, 256(DX) + VMOVDQU Y13, 320(DX) + VMOVDQU Y14, 384(DX) + VMOVDQU Y15, 448(DX) + VMOVDQA 192(BP), Y0 + VMOVDQA 224(BP), Y1 + VMOVDQA 256(BP), Y2 + VMOVDQA 288(BP), Y3 + VMOVDQA 320(BP), Y4 + VMOVDQA 352(BP), Y5 + VMOVDQA 384(BP), Y6 + VMOVDQA 416(BP), Y7 + VPBROADCASTD 32(BP), Y8 + VPBROADCASTD 4+32(BP), Y9 + VPBROADCASTD 8+32(BP), Y10 + VPBROADCASTD 12+32(BP), Y11 + VMOVDQA 128(BP), Y12 + VMOVDQA 160(BP), Y13 + VPBROADCASTD 8+48(BP), Y14 + VPBROADCASTD 12+48(BP), Y15 + VPADDD Y8, Y0, Y0 + VPADDD Y9, Y1, Y1 + VPADDD Y10, Y2, Y2 + VPADDD Y11, Y3, Y3 + VPADDD Y12, Y4, Y4 + VPADDD Y13, Y5, Y5 + VPADDD Y14, Y6, Y6 + VPADDD Y15, Y7, Y7 + VPUNPCKLDQ Y1, Y0, Y8 + VPUNPCKLDQ Y3, Y2, Y9 + VPUNPCKHDQ Y1, Y0, Y12 + VPUNPCKHDQ Y3, Y2, Y13 + VPUNPCKLDQ Y5, Y4, Y10 + VPUNPCKLDQ Y7, Y6, Y11 + VPUNPCKHDQ Y5, Y4, Y14 + VPUNPCKHDQ Y7, Y6, Y15 + VPUNPCKLQDQ Y9, Y8, Y0 + VPUNPCKLQDQ Y11, Y10, Y1 + VPUNPCKHQDQ Y9, Y8, Y2 + VPUNPCKHQDQ Y11, Y10, Y3 + VPUNPCKLQDQ Y13, Y12, Y4 + VPUNPCKLQDQ Y15, Y14, Y5 + VPUNPCKHQDQ Y13, Y12, Y6 + VPUNPCKHQDQ Y15, Y14, Y7 + VPERM2I128 $0x20, Y1, Y0, Y8 + VPERM2I128 $0x20, Y3, Y2, Y9 + VPERM2I128 $0x31, Y1, Y0, Y12 + VPERM2I128 $0x31, Y3, Y2, Y13 + VPERM2I128 $0x20, Y5, Y4, Y10 + VPERM2I128 $0x20, Y7, Y6, Y11 + VPERM2I128 $0x31, Y5, Y4, Y14 + VPERM2I128 $0x31, Y7, Y6, Y15 + VMOVDQU Y8, 32(DX) + VMOVDQU Y9, 96(DX) + VMOVDQU Y10, 160(DX) + VMOVDQU Y11, 224(DX) + VMOVDQU Y12, 288(DX) + VMOVDQU Y13, 352(DX) + VMOVDQU Y14, 416(DX) + VMOVDQU Y15, 480(DX) + +chacha_blocks_avx2_mainloop1_cont: + ADDQ $512, DX + SUBQ $512, CX + CMPQ CX, $512 + JAE chacha_blocks_avx2_atleast512 + CMPQ CX, $256 + JB chacha_blocks_avx2_below256_fixup + +chacha_blocks_avx2_atleast256: + MOVQ 48(BP), AX + LEAQ 1(AX), R8 + LEAQ 2(AX), R9 + LEAQ 3(AX), R10 + LEAQ 4(AX), BX + MOVL AX, 128(BP) + MOVL R8, 4+128(BP) + MOVL R9, 8+128(BP) + MOVL R10, 12+128(BP) + SHRQ $32, AX + SHRQ $32, R8 + SHRQ $32, R9 + SHRQ $32, R10 + MOVL AX, 160(BP) + MOVL R8, 4+160(BP) + MOVL R9, 8+160(BP) + MOVL R10, 12+160(BP) + MOVQ BX, 48(BP) + + // MOVQ 64(BP), AX + MOVQ $20, AX + VPBROADCASTD 0(BP), X0 + VPBROADCASTD 4+0(BP), X1 + VPBROADCASTD 8+0(BP), X2 + VPBROADCASTD 12+0(BP), X3 + VPBROADCASTD 16(BP), X4 + VPBROADCASTD 4+16(BP), X5 + VPBROADCASTD 8+16(BP), X6 + VPBROADCASTD 12+16(BP), X7 + VPBROADCASTD 32(BP), X8 + VPBROADCASTD 4+32(BP), X9 + VPBROADCASTD 8+32(BP), X10 + VPBROADCASTD 12+32(BP), X11 + VMOVDQA 128(BP), X12 + VMOVDQA 160(BP), X13 + VPBROADCASTD 8+48(BP), X14 + VPBROADCASTD 12+48(BP), X15 + +chacha_blocks_avx2_mainloop2: + VPADDD X0, X4, X0 + VPADDD X1, X5, X1 + VPXOR X12, X0, X12 + VPXOR X13, X1, X13 + VPADDD X2, X6, X2 + VPADDD X3, X7, X3 + VPXOR X14, X2, X14 + VPXOR X15, X3, X15 + VPSHUFB 448(BP), X12, X12 + VPSHUFB 448(BP), X13, X13 + VPADDD X8, X12, X8 + VPADDD X9, X13, X9 + VPSHUFB 448(BP), X14, X14 + VPSHUFB 448(BP), X15, X15 + VPADDD X10, X14, X10 + VPADDD X11, X15, X11 + VMOVDQA X12, 96(BP) + VPXOR X4, X8, X4 + VPXOR X5, X9, X5 + VPSLLD $ 12, X4, X12 + VPSRLD $20, X4, X4 + VPXOR X4, X12, X4 + VPSLLD $ 12, X5, X12 + VPSRLD $20, X5, X5 + VPXOR X5, X12, X5 + VPXOR X6, X10, X6 + VPXOR X7, X11, X7 + VPSLLD $ 12, X6, X12 + VPSRLD $20, X6, X6 + VPXOR X6, X12, X6 + VPSLLD $ 12, X7, X12 + VPSRLD $20, X7, X7 + VPXOR X7, X12, X7 + VPADDD X0, X4, X0 + VPADDD X1, X5, X1 + VPXOR 96(BP), X0, X12 + VPXOR X13, X1, X13 + VPADDD X2, X6, X2 + VPADDD X3, X7, X3 + VPXOR X14, X2, X14 + VPXOR X15, X3, X15 + VPSHUFB 480(BP), X12, X12 + VPSHUFB 480(BP), X13, X13 + VPADDD X8, X12, X8 + VPADDD X9, X13, X9 + VPSHUFB 480(BP), X14, X14 + VPSHUFB 480(BP), X15, X15 + VPADDD X10, X14, X10 + VPADDD X11, X15, X11 + VMOVDQA X12, 96(BP) + VPXOR X4, X8, X4 + VPXOR X5, X9, X5 + VPSLLD $ 7, X4, X12 + VPSRLD $25, X4, X4 + VPXOR X4, X12, X4 + VPSLLD $ 7, X5, X12 + VPSRLD $25, X5, X5 + VPXOR X5, X12, X5 + VPXOR X6, X10, X6 + VPXOR X7, X11, X7 + VPSLLD $ 7, X6, X12 + VPSRLD $25, X6, X6 + VPXOR X6, X12, X6 + VPSLLD $ 7, X7, X12 + VPSRLD $25, X7, X7 + VPXOR X7, X12, X7 + VPADDD X0, X5, X0 + VPADDD X1, X6, X1 + VPXOR X15, X0, X15 + VPXOR 96(BP), X1, X12 + VPADDD X2, X7, X2 + VPADDD X3, X4, X3 + VPXOR X13, X2, X13 + VPXOR X14, X3, X14 + VPSHUFB 448(BP), X15, X15 + VPSHUFB 448(BP), X12, X12 + VPADDD X10, X15, X10 + VPADDD X11, X12, X11 + VPSHUFB 448(BP), X13, X13 + VPSHUFB 448(BP), X14, X14 + VPADDD X8, X13, X8 + VPADDD X9, X14, X9 + VMOVDQA X15, 96(BP) + VPXOR X5, X10, X5 + VPXOR X6, X11, X6 + VPSLLD $ 12, X5, X15 + VPSRLD $20, X5, X5 + VPXOR X5, X15, X5 + VPSLLD $ 12, X6, X15 + VPSRLD $20, X6, X6 + VPXOR X6, X15, X6 + VPXOR X7, X8, X7 + VPXOR X4, X9, X4 + VPSLLD $ 12, X7, X15 + VPSRLD $20, X7, X7 + VPXOR X7, X15, X7 + VPSLLD $ 12, X4, X15 + VPSRLD $20, X4, X4 + VPXOR X4, X15, X4 + VPADDD X0, X5, X0 + VPADDD X1, X6, X1 + VPXOR 96(BP), X0, X15 + VPXOR X12, X1, X12 + VPADDD X2, X7, X2 + VPADDD X3, X4, X3 + VPXOR X13, X2, X13 + VPXOR X14, X3, X14 + VPSHUFB 480(BP), X15, X15 + VPSHUFB 480(BP), X12, X12 + VPADDD X10, X15, X10 + VPADDD X11, X12, X11 + VPSHUFB 480(BP), X13, X13 + VPSHUFB 480(BP), X14, X14 + VPADDD X8, X13, X8 + VPADDD X9, X14, X9 + VMOVDQA X15, 96(BP) + VPXOR X5, X10, X5 + VPXOR X6, X11, X6 + VPSLLD $ 7, X5, X15 + VPSRLD $25, X5, X5 + VPXOR X5, X15, X5 + VPSLLD $ 7, X6, X15 + VPSRLD $25, X6, X6 + VPXOR X6, X15, X6 + VPXOR X7, X8, X7 + VPXOR X4, X9, X4 + VPSLLD $ 7, X7, X15 + VPSRLD $25, X7, X7 + VPXOR X7, X15, X7 + VPSLLD $ 7, X4, X15 + VPSRLD $25, X4, X4 + VPXOR X4, X15, X4 + VMOVDQA 96(BP), X15 + SUBQ $2, AX + JNZ chacha_blocks_avx2_mainloop2 + VMOVDQA X8, 192(BP) + VMOVDQA X9, 208(BP) + VMOVDQA X10, 224(BP) + VMOVDQA X11, 240(BP) + VMOVDQA X12, 256(BP) + VMOVDQA X13, 272(BP) + VMOVDQA X14, 288(BP) + VMOVDQA X15, 304(BP) + VPBROADCASTD 0(BP), X8 + VPBROADCASTD 4+0(BP), X9 + VPBROADCASTD 8+0(BP), X10 + VPBROADCASTD 12+0(BP), X11 + VPBROADCASTD 16(BP), X12 + VPBROADCASTD 4+16(BP), X13 + VPBROADCASTD 8+16(BP), X14 + VPBROADCASTD 12+16(BP), X15 + VPADDD X8, X0, X0 + VPADDD X9, X1, X1 + VPADDD X10, X2, X2 + VPADDD X11, X3, X3 + VPADDD X12, X4, X4 + VPADDD X13, X5, X5 + VPADDD X14, X6, X6 + VPADDD X15, X7, X7 + VPUNPCKLDQ X1, X0, X8 + VPUNPCKLDQ X3, X2, X9 + VPUNPCKHDQ X1, X0, X12 + VPUNPCKHDQ X3, X2, X13 + VPUNPCKLDQ X5, X4, X10 + VPUNPCKLDQ X7, X6, X11 + VPUNPCKHDQ X5, X4, X14 + VPUNPCKHDQ X7, X6, X15 + VPUNPCKLQDQ X9, X8, X0 + VPUNPCKLQDQ X11, X10, X1 + VPUNPCKHQDQ X9, X8, X2 + VPUNPCKHQDQ X11, X10, X3 + VPUNPCKLQDQ X13, X12, X4 + VPUNPCKLQDQ X15, X14, X5 + VPUNPCKHQDQ X13, X12, X6 + VPUNPCKHQDQ X15, X14, X7 + ANDQ SI, SI + JZ chacha_blocks_avx2_noinput2 + VPXOR 0(SI), X0, X0 + VPXOR 16(SI), X1, X1 + VPXOR 64(SI), X2, X2 + VPXOR 80(SI), X3, X3 + VPXOR 128(SI), X4, X4 + VPXOR 144(SI), X5, X5 + VPXOR 192(SI), X6, X6 + VPXOR 208(SI), X7, X7 + VMOVDQU X0, 0(DX) + VMOVDQU X1, 16(DX) + VMOVDQU X2, 64(DX) + VMOVDQU X3, 80(DX) + VMOVDQU X4, 128(DX) + VMOVDQU X5, 144(DX) + VMOVDQU X6, 192(DX) + VMOVDQU X7, 208(DX) + VMOVDQA 192(BP), X0 + VMOVDQA 208(BP), X1 + VMOVDQA 224(BP), X2 + VMOVDQA 240(BP), X3 + VMOVDQA 256(BP), X4 + VMOVDQA 272(BP), X5 + VMOVDQA 288(BP), X6 + VMOVDQA 304(BP), X7 + VPBROADCASTD 32(BP), X8 + VPBROADCASTD 4+32(BP), X9 + VPBROADCASTD 8+32(BP), X10 + VPBROADCASTD 12+32(BP), X11 + VMOVDQA 128(BP), X12 + VMOVDQA 160(BP), X13 + VPBROADCASTD 8+48(BP), X14 + VPBROADCASTD 12+48(BP), X15 + VPADDD X8, X0, X0 + VPADDD X9, X1, X1 + VPADDD X10, X2, X2 + VPADDD X11, X3, X3 + VPADDD X12, X4, X4 + VPADDD X13, X5, X5 + VPADDD X14, X6, X6 + VPADDD X15, X7, X7 + VPUNPCKLDQ X1, X0, X8 + VPUNPCKLDQ X3, X2, X9 + VPUNPCKHDQ X1, X0, X12 + VPUNPCKHDQ X3, X2, X13 + VPUNPCKLDQ X5, X4, X10 + VPUNPCKLDQ X7, X6, X11 + VPUNPCKHDQ X5, X4, X14 + VPUNPCKHDQ X7, X6, X15 + VPUNPCKLQDQ X9, X8, X0 + VPUNPCKLQDQ X11, X10, X1 + VPUNPCKHQDQ X9, X8, X2 + VPUNPCKHQDQ X11, X10, X3 + VPUNPCKLQDQ X13, X12, X4 + VPUNPCKLQDQ X15, X14, X5 + VPUNPCKHQDQ X13, X12, X6 + VPUNPCKHQDQ X15, X14, X7 + VPXOR 32(SI), X0, X0 + VPXOR 48(SI), X1, X1 + VPXOR 96(SI), X2, X2 + VPXOR 112(SI), X3, X3 + VPXOR 160(SI), X4, X4 + VPXOR 176(SI), X5, X5 + VPXOR 224(SI), X6, X6 + VPXOR 240(SI), X7, X7 + VMOVDQU X0, 32(DX) + VMOVDQU X1, 48(DX) + VMOVDQU X2, 96(DX) + VMOVDQU X3, 112(DX) + VMOVDQU X4, 160(DX) + VMOVDQU X5, 176(DX) + VMOVDQU X6, 224(DX) + VMOVDQU X7, 240(DX) + ADDQ $256, SI + JMP chacha_blocks_avx2_mainloop2_cont + +chacha_blocks_avx2_noinput2: + VMOVDQU X0, 0(DX) + VMOVDQU X1, 16(DX) + VMOVDQU X2, 64(DX) + VMOVDQU X3, 80(DX) + VMOVDQU X4, 128(DX) + VMOVDQU X5, 144(DX) + VMOVDQU X6, 192(DX) + VMOVDQU X7, 208(DX) + VMOVDQA 192(BP), X0 + VMOVDQA 208(BP), X1 + VMOVDQA 224(BP), X2 + VMOVDQA 240(BP), X3 + VMOVDQA 256(BP), X4 + VMOVDQA 272(BP), X5 + VMOVDQA 288(BP), X6 + VMOVDQA 304(BP), X7 + VPBROADCASTD 32(BP), X8 + VPBROADCASTD 4+32(BP), X9 + VPBROADCASTD 8+32(BP), X10 + VPBROADCASTD 12+32(BP), X11 + VMOVDQA 128(BP), X12 + VMOVDQA 160(BP), X13 + VPBROADCASTD 8+48(BP), X14 + VPBROADCASTD 12+48(BP), X15 + VPADDD X8, X0, X0 + VPADDD X9, X1, X1 + VPADDD X10, X2, X2 + VPADDD X11, X3, X3 + VPADDD X12, X4, X4 + VPADDD X13, X5, X5 + VPADDD X14, X6, X6 + VPADDD X15, X7, X7 + VPUNPCKLDQ X1, X0, X8 + VPUNPCKLDQ X3, X2, X9 + VPUNPCKHDQ X1, X0, X12 + VPUNPCKHDQ X3, X2, X13 + VPUNPCKLDQ X5, X4, X10 + VPUNPCKLDQ X7, X6, X11 + VPUNPCKHDQ X5, X4, X14 + VPUNPCKHDQ X7, X6, X15 + VPUNPCKLQDQ X9, X8, X0 + VPUNPCKLQDQ X11, X10, X1 + VPUNPCKHQDQ X9, X8, X2 + VPUNPCKHQDQ X11, X10, X3 + VPUNPCKLQDQ X13, X12, X4 + VPUNPCKLQDQ X15, X14, X5 + VPUNPCKHQDQ X13, X12, X6 + VPUNPCKHQDQ X15, X14, X7 + VMOVDQU X0, 32(DX) + VMOVDQU X1, 48(DX) + VMOVDQU X2, 96(DX) + VMOVDQU X3, 112(DX) + VMOVDQU X4, 160(DX) + VMOVDQU X5, 176(DX) + VMOVDQU X6, 224(DX) + VMOVDQU X7, 240(DX) + +chacha_blocks_avx2_mainloop2_cont: + ADDQ $256, DX + SUBQ $256, CX + CMPQ CX, $256 + JAE chacha_blocks_avx2_atleast256 + +chacha_blocks_avx2_below256_fixup: + VMOVDQA 448(BP), X6 + VMOVDQA 480(BP), X7 + VMOVDQA 0(BP), X8 + VMOVDQA 16(BP), X9 + VMOVDQA 32(BP), X10 + VMOVDQA 48(BP), X11 + MOVQ $1, R9 + +chacha_blocks_avx2_below256: + VMOVQ R9, X5 + ANDQ CX, CX + JZ chacha_blocks_avx2_done + CMPQ CX, $64 + JAE chacha_blocks_avx2_above63 + MOVQ DX, R9 + ANDQ SI, SI + JZ chacha_blocks_avx2_noinput3 + MOVQ CX, R10 + MOVQ BP, DX + ADDQ R10, SI + ADDQ R10, DX + NEGQ R10 + +chacha_blocks_avx2_copyinput: + MOVB (SI)(R10*1), AX + MOVB AX, (DX)(R10*1) + INCQ R10 + JNZ chacha_blocks_avx2_copyinput + MOVQ BP, SI + +chacha_blocks_avx2_noinput3: + MOVQ BP, DX + +chacha_blocks_avx2_above63: + VMOVDQA X8, X0 + VMOVDQA X9, X1 + VMOVDQA X10, X2 + VMOVDQA X11, X3 + + // MOVQ 64(BP), AX + MOVQ $20, AX + +chacha_blocks_avx2_mainloop3: + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X6, X3, X3 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSLLD $12, X1, X4 + VPSRLD $20, X1, X1 + VPXOR X1, X4, X1 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X7, X3, X3 + VPSHUFD $0x93, X0, X0 + VPADDD X2, X3, X2 + VPSHUFD $0x4e, X3, X3 + VPXOR X1, X2, X1 + VPSHUFD $0x39, X2, X2 + VPSLLD $7, X1, X4 + VPSRLD $25, X1, X1 + VPXOR X1, X4, X1 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X6, X3, X3 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSLLD $12, X1, X4 + VPSRLD $20, X1, X1 + VPXOR X1, X4, X1 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X7, X3, X3 + VPSHUFD $0x39, X0, X0 + VPADDD X2, X3, X2 + VPSHUFD $0x4e, X3, X3 + VPXOR X1, X2, X1 + VPSHUFD $0x93, X2, X2 + VPSLLD $7, X1, X4 + VPSRLD $25, X1, X1 + VPXOR X1, X4, X1 + SUBQ $2, AX + JNZ chacha_blocks_avx2_mainloop3 + VPADDD X0, X8, X0 + VPADDD X1, X9, X1 + VPADDD X2, X10, X2 + VPADDD X3, X11, X3 + ANDQ SI, SI + JZ chacha_blocks_avx2_noinput4 + VPXOR 0(SI), X0, X0 + VPXOR 16(SI), X1, X1 + VPXOR 32(SI), X2, X2 + VPXOR 48(SI), X3, X3 + ADDQ $64, SI + +chacha_blocks_avx2_noinput4: + VMOVDQU X0, 0(DX) + VMOVDQU X1, 16(DX) + VMOVDQU X2, 32(DX) + VMOVDQU X3, 48(DX) + VPADDQ X11, X5, X11 + CMPQ CX, $64 + JBE chacha_blocks_avx2_mainloop3_finishup + ADDQ $64, DX + SUBQ $64, CX + JMP chacha_blocks_avx2_below256 + +chacha_blocks_avx2_mainloop3_finishup: + CMPQ CX, $64 + JE chacha_blocks_avx2_done + ADDQ CX, R9 + ADDQ CX, DX + NEGQ CX + +chacha_blocks_avx2_copyoutput: + MOVB (DX)(CX*1), AX + MOVB AX, (R9)(CX*1) + INCQ CX + JNZ chacha_blocks_avx2_copyoutput + +chacha_blocks_avx2_done: + VMOVDQU X11, 32(DI) + + VZEROUPPER + RET + +// func hChaChaAVX2(key, nonce []byte, dst *byte) +TEXT ·hChaChaAVX2(SB), NOSPLIT|NOFRAME, $0-56 + MOVQ key+0(FP), DI + MOVQ nonce+24(FP), SI + MOVQ dst+48(FP), DX + + MOVL $20, CX + + LEAQ ·chacha_constants<>(SB), AX + VMOVDQA 0(AX), X0 + VMOVDQA 16(AX), X6 + VMOVDQA 32(AX), X5 + + VMOVDQU 0(DI), X1 + VMOVDQU 16(DI), X2 + VMOVDQU 0(SI), X3 + +hhacha_mainloop_avx2: + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X6, X3, X3 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSLLD $12, X1, X4 + VPSRLD $20, X1, X1 + VPXOR X1, X4, X1 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X5, X3, X3 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSLLD $7, X1, X4 + VPSRLD $25, X1, X1 + VPSHUFD $0x93, X0, X0 + VPXOR X1, X4, X1 + VPSHUFD $0x4e, X3, X3 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X6, X3, X3 + VPSHUFD $0x39, X2, X2 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSLLD $12, X1, X4 + VPSRLD $20, X1, X1 + VPXOR X1, X4, X1 + VPADDD X0, X1, X0 + VPXOR X3, X0, X3 + VPSHUFB X5, X3, X3 + VPADDD X2, X3, X2 + VPXOR X1, X2, X1 + VPSHUFD $0x39, X0, X0 + VPSLLD $7, X1, X4 + VPSHUFD $0x4e, X3, X3 + VPSRLD $25, X1, X1 + VPSHUFD $0x93, X2, X2 + VPXOR X1, X4, X1 + SUBL $2, CX + JNE hhacha_mainloop_avx2 + + VMOVDQU X0, (DX) + VMOVDQU X3, 16(DX) + + VZEROUPPER + RET + +// func blocksSSSE3(s *[api.StateSize]uint32, in, out []byte) +TEXT ·blocksSSSE3(SB), NOSPLIT, $576-56 + // This is Andrew Moon's SSSE3 ChaCha implementation taken from + // supercop-20190110, with some minor changes, primarily calling + // convention and assembly dialect related. + + // Align the stack on a 64 byte boundary. + MOVQ SP, BP + ADDQ $64, BP + ANDQ $-64, BP + + // Go calling convention -> SYSV AMD64 (and a fixup). + MOVQ s+0(FP), DI // &s -> DI + ADDQ $16, DI // Skip the ChaCha constants in the chachaState. + MOVQ in+8(FP), SI // &in[0] -> SI + MOVQ out+32(FP), DX // &out[0] -> DX + MOVQ in_len+16(FP), CX // len(in) -> CX + + // Begin the main body of `chacha_blocks_ssse3`. + // + // Mostly a direct translation except: + // * The number of rounds is always 20. + // * %rbp is used instead of BP. + LEAQ ·chacha_constants<>(SB), AX + MOVO 0(AX), X8 + MOVO 16(AX), X6 + MOVO 32(AX), X7 + MOVOU 0(DI), X9 + MOVOU 16(DI), X10 + MOVOU 32(DI), X11 + + // MOVQ 48(DI), AX + MOVQ $1, R9 + MOVO X8, 0(BP) + MOVO X9, 16(BP) + MOVO X10, 32(BP) + MOVO X11, 48(BP) + + MOVO X6, 80(BP) + MOVO X7, 96(BP) + // MOVQ AX, 64(BP) + CMPQ CX, $256 + JB chacha_blocks_ssse3_below256 + PSHUFD $0x00, X8, X0 + PSHUFD $0x55, X8, X1 + PSHUFD $0xaa, X8, X2 + PSHUFD $0xff, X8, X3 + MOVO X0, 128(BP) + MOVO X1, 144(BP) + MOVO X2, 160(BP) + MOVO X3, 176(BP) + PSHUFD $0x00, X9, X0 + PSHUFD $0x55, X9, X1 + PSHUFD $0xaa, X9, X2 + PSHUFD $0xff, X9, X3 + MOVO X0, 192(BP) + MOVO X1, 208(BP) + MOVO X2, 224(BP) + MOVO X3, 240(BP) + PSHUFD $0x00, X10, X0 + PSHUFD $0x55, X10, X1 + PSHUFD $0xaa, X10, X2 + PSHUFD $0xff, X10, X3 + MOVO X0, 256(BP) + MOVO X1, 272(BP) + MOVO X2, 288(BP) + MOVO X3, 304(BP) + PSHUFD $0xaa, X11, X0 + PSHUFD $0xff, X11, X1 + MOVO X0, 352(BP) + MOVO X1, 368(BP) + JMP chacha_blocks_ssse3_atleast256 + +// .p2align 6,,63 +// # align to 4 mod 64 +// nop;nop;nop;nop; +chacha_blocks_ssse3_atleast256: + MOVQ 48(BP), AX + LEAQ 1(AX), R8 + LEAQ 2(AX), R9 + LEAQ 3(AX), R10 + LEAQ 4(AX), BX + MOVL AX, 320(BP) + MOVL R8, 4+320(BP) + MOVL R9, 8+320(BP) + MOVL R10, 12+320(BP) + SHRQ $32, AX + SHRQ $32, R8 + SHRQ $32, R9 + SHRQ $32, R10 + MOVL AX, 336(BP) + MOVL R8, 4+336(BP) + MOVL R9, 8+336(BP) + MOVL R10, 12+336(BP) + MOVQ BX, 48(BP) + + // MOVQ 64(BP), AX + MOVQ $20, AX + MOVO 128(BP), X0 + MOVO 144(BP), X1 + MOVO 160(BP), X2 + MOVO 176(BP), X3 + MOVO 192(BP), X4 + MOVO 208(BP), X5 + MOVO 224(BP), X6 + MOVO 240(BP), X7 + MOVO 256(BP), X8 + MOVO 272(BP), X9 + MOVO 288(BP), X10 + MOVO 304(BP), X11 + MOVO 320(BP), X12 + MOVO 336(BP), X13 + MOVO 352(BP), X14 + MOVO 368(BP), X15 + +chacha_blocks_ssse3_mainloop1: + PADDD X4, X0 + PADDD X5, X1 + PXOR X0, X12 + PXOR X1, X13 + PADDD X6, X2 + PADDD X7, X3 + PXOR X2, X14 + PXOR X3, X15 + PSHUFB 80(BP), X12 + PSHUFB 80(BP), X13 + PADDD X12, X8 + PADDD X13, X9 + PSHUFB 80(BP), X14 + PSHUFB 80(BP), X15 + PADDD X14, X10 + PADDD X15, X11 + MOVO X12, 112(BP) + PXOR X8, X4 + PXOR X9, X5 + MOVO X4, X12 + PSLLL $ 12, X4 + PSRLL $20, X12 + PXOR X12, X4 + MOVO X5, X12 + PSLLL $ 12, X5 + PSRLL $20, X12 + PXOR X12, X5 + PXOR X10, X6 + PXOR X11, X7 + MOVO X6, X12 + PSLLL $ 12, X6 + PSRLL $20, X12 + PXOR X12, X6 + MOVO X7, X12 + PSLLL $ 12, X7 + PSRLL $20, X12 + PXOR X12, X7 + MOVO 112(BP), X12 + PADDD X4, X0 + PADDD X5, X1 + PXOR X0, X12 + PXOR X1, X13 + PADDD X6, X2 + PADDD X7, X3 + PXOR X2, X14 + PXOR X3, X15 + PSHUFB 96(BP), X12 + PSHUFB 96(BP), X13 + PADDD X12, X8 + PADDD X13, X9 + PSHUFB 96(BP), X14 + PSHUFB 96(BP), X15 + PADDD X14, X10 + PADDD X15, X11 + MOVO X12, 112(BP) + PXOR X8, X4 + PXOR X9, X5 + MOVO X4, X12 + PSLLL $ 7, X4 + PSRLL $25, X12 + PXOR X12, X4 + MOVO X5, X12 + PSLLL $ 7, X5 + PSRLL $25, X12 + PXOR X12, X5 + PXOR X10, X6 + PXOR X11, X7 + MOVO X6, X12 + PSLLL $ 7, X6 + PSRLL $25, X12 + PXOR X12, X6 + MOVO X7, X12 + PSLLL $ 7, X7 + PSRLL $25, X12 + PXOR X12, X7 + MOVO 112(BP), X12 + PADDD X5, X0 + PADDD X6, X1 + PXOR X0, X15 + PXOR X1, X12 + PADDD X7, X2 + PADDD X4, X3 + PXOR X2, X13 + PXOR X3, X14 + PSHUFB 80(BP), X15 + PSHUFB 80(BP), X12 + PADDD X15, X10 + PADDD X12, X11 + PSHUFB 80(BP), X13 + PSHUFB 80(BP), X14 + PADDD X13, X8 + PADDD X14, X9 + MOVO X15, 112(BP) + PXOR X10, X5 + PXOR X11, X6 + MOVO X5, X15 + PSLLL $ 12, X5 + PSRLL $20, X15 + PXOR X15, X5 + MOVO X6, X15 + PSLLL $ 12, X6 + PSRLL $20, X15 + PXOR X15, X6 + PXOR X8, X7 + PXOR X9, X4 + MOVO X7, X15 + PSLLL $ 12, X7 + PSRLL $20, X15 + PXOR X15, X7 + MOVO X4, X15 + PSLLL $ 12, X4 + PSRLL $20, X15 + PXOR X15, X4 + MOVO 112(BP), X15 + PADDD X5, X0 + PADDD X6, X1 + PXOR X0, X15 + PXOR X1, X12 + PADDD X7, X2 + PADDD X4, X3 + PXOR X2, X13 + PXOR X3, X14 + PSHUFB 96(BP), X15 + PSHUFB 96(BP), X12 + PADDD X15, X10 + PADDD X12, X11 + PSHUFB 96(BP), X13 + PSHUFB 96(BP), X14 + PADDD X13, X8 + PADDD X14, X9 + MOVO X15, 112(BP) + PXOR X10, X5 + PXOR X11, X6 + MOVO X5, X15 + PSLLL $ 7, X5 + PSRLL $25, X15 + PXOR X15, X5 + MOVO X6, X15 + PSLLL $ 7, X6 + PSRLL $25, X15 + PXOR X15, X6 + PXOR X8, X7 + PXOR X9, X4 + MOVO X7, X15 + PSLLL $ 7, X7 + PSRLL $25, X15 + PXOR X15, X7 + MOVO X4, X15 + PSLLL $ 7, X4 + PSRLL $25, X15 + PXOR X15, X4 + SUBQ $2, AX + MOVO 112(BP), X15 + JNZ chacha_blocks_ssse3_mainloop1 + PADDD 128(BP), X0 + PADDD 144(BP), X1 + PADDD 160(BP), X2 + PADDD 176(BP), X3 + PADDD 192(BP), X4 + PADDD 208(BP), X5 + PADDD 224(BP), X6 + PADDD 240(BP), X7 + PADDD 256(BP), X8 + PADDD 272(BP), X9 + PADDD 288(BP), X10 + PADDD 304(BP), X11 + PADDD 320(BP), X12 + PADDD 336(BP), X13 + PADDD 352(BP), X14 + PADDD 368(BP), X15 + MOVO X8, 384(BP) + MOVO X9, 400(BP) + MOVO X10, 416(BP) + MOVO X11, 432(BP) + MOVO X12, 448(BP) + MOVO X13, 464(BP) + MOVO X14, 480(BP) + MOVO X15, 496(BP) + MOVO X0, X8 + MOVO X2, X9 + MOVO X4, X10 + MOVO X6, X11 + PUNPCKHLQ X1, X0 + PUNPCKHLQ X3, X2 + PUNPCKHLQ X5, X4 + PUNPCKHLQ X7, X6 + PUNPCKLLQ X1, X8 + PUNPCKLLQ X3, X9 + PUNPCKLLQ X5, X10 + PUNPCKLLQ X7, X11 + MOVO X0, X1 + MOVO X4, X3 + MOVO X8, X5 + MOVO X10, X7 + PUNPCKHQDQ X2, X0 + PUNPCKHQDQ X6, X4 + PUNPCKHQDQ X9, X8 + PUNPCKHQDQ X11, X10 + PUNPCKLQDQ X2, X1 + PUNPCKLQDQ X6, X3 + PUNPCKLQDQ X9, X5 + PUNPCKLQDQ X11, X7 + ANDQ SI, SI + JZ chacha_blocks_ssse3_noinput1 + MOVOU 0(SI), X2 + MOVOU 16(SI), X6 + MOVOU 64(SI), X9 + MOVOU 80(SI), X11 + MOVOU 128(SI), X12 + MOVOU 144(SI), X13 + MOVOU 192(SI), X14 + MOVOU 208(SI), X15 + PXOR X2, X5 + PXOR X6, X7 + PXOR X9, X8 + PXOR X11, X10 + PXOR X12, X1 + PXOR X13, X3 + PXOR X14, X0 + PXOR X15, X4 + MOVOU X5, 0(DX) + MOVOU X7, 16(DX) + MOVOU X8, 64(DX) + MOVOU X10, 80(DX) + MOVOU X1, 128(DX) + MOVOU X3, 144(DX) + MOVOU X0, 192(DX) + MOVOU X4, 208(DX) + MOVO 384(BP), X0 + MOVO 400(BP), X1 + MOVO 416(BP), X2 + MOVO 432(BP), X3 + MOVO 448(BP), X4 + MOVO 464(BP), X5 + MOVO 480(BP), X6 + MOVO 496(BP), X7 + MOVO X0, X8 + MOVO X2, X9 + MOVO X4, X10 + MOVO X6, X11 + PUNPCKLLQ X1, X8 + PUNPCKLLQ X3, X9 + PUNPCKHLQ X1, X0 + PUNPCKHLQ X3, X2 + PUNPCKLLQ X5, X10 + PUNPCKLLQ X7, X11 + PUNPCKHLQ X5, X4 + PUNPCKHLQ X7, X6 + MOVO X8, X1 + MOVO X0, X3 + MOVO X10, X5 + MOVO X4, X7 + PUNPCKLQDQ X9, X1 + PUNPCKLQDQ X11, X5 + PUNPCKHQDQ X9, X8 + PUNPCKHQDQ X11, X10 + PUNPCKLQDQ X2, X3 + PUNPCKLQDQ X6, X7 + PUNPCKHQDQ X2, X0 + PUNPCKHQDQ X6, X4 + MOVOU 32(SI), X2 + MOVOU 48(SI), X6 + MOVOU 96(SI), X9 + MOVOU 112(SI), X11 + MOVOU 160(SI), X12 + MOVOU 176(SI), X13 + MOVOU 224(SI), X14 + MOVOU 240(SI), X15 + PXOR X2, X1 + PXOR X6, X5 + PXOR X9, X8 + PXOR X11, X10 + PXOR X12, X3 + PXOR X13, X7 + PXOR X14, X0 + PXOR X15, X4 + MOVOU X1, 32(DX) + MOVOU X5, 48(DX) + MOVOU X8, 96(DX) + MOVOU X10, 112(DX) + MOVOU X3, 160(DX) + MOVOU X7, 176(DX) + MOVOU X0, 224(DX) + MOVOU X4, 240(DX) + ADDQ $256, SI + JMP chacha_blocks_ssse3_mainloop_cont + +chacha_blocks_ssse3_noinput1: + MOVOU X5, 0(DX) + MOVOU X7, 16(DX) + MOVOU X8, 64(DX) + MOVOU X10, 80(DX) + MOVOU X1, 128(DX) + MOVOU X3, 144(DX) + MOVOU X0, 192(DX) + MOVOU X4, 208(DX) + MOVO 384(BP), X0 + MOVO 400(BP), X1 + MOVO 416(BP), X2 + MOVO 432(BP), X3 + MOVO 448(BP), X4 + MOVO 464(BP), X5 + MOVO 480(BP), X6 + MOVO 496(BP), X7 + MOVO X0, X8 + MOVO X2, X9 + MOVO X4, X10 + MOVO X6, X11 + PUNPCKLLQ X1, X8 + PUNPCKLLQ X3, X9 + PUNPCKHLQ X1, X0 + PUNPCKHLQ X3, X2 + PUNPCKLLQ X5, X10 + PUNPCKLLQ X7, X11 + PUNPCKHLQ X5, X4 + PUNPCKHLQ X7, X6 + MOVO X8, X1 + MOVO X0, X3 + MOVO X10, X5 + MOVO X4, X7 + PUNPCKLQDQ X9, X1 + PUNPCKLQDQ X11, X5 + PUNPCKHQDQ X9, X8 + PUNPCKHQDQ X11, X10 + PUNPCKLQDQ X2, X3 + PUNPCKLQDQ X6, X7 + PUNPCKHQDQ X2, X0 + PUNPCKHQDQ X6, X4 + MOVOU X1, 32(DX) + MOVOU X5, 48(DX) + MOVOU X8, 96(DX) + MOVOU X10, 112(DX) + MOVOU X3, 160(DX) + MOVOU X7, 176(DX) + MOVOU X0, 224(DX) + MOVOU X4, 240(DX) + +chacha_blocks_ssse3_mainloop_cont: + ADDQ $256, DX + SUBQ $256, CX + CMPQ CX, $256 + JAE chacha_blocks_ssse3_atleast256 + MOVO 80(BP), X6 + MOVO 96(BP), X7 + MOVO 0(BP), X8 + MOVO 16(BP), X9 + MOVO 32(BP), X10 + MOVO 48(BP), X11 + MOVQ $1, R9 + +chacha_blocks_ssse3_below256: + MOVQ R9, X5 + ANDQ CX, CX + JZ chacha_blocks_ssse3_done + CMPQ CX, $64 + JAE chacha_blocks_ssse3_above63 + MOVQ DX, R9 + ANDQ SI, SI + JZ chacha_blocks_ssse3_noinput2 + MOVQ CX, R10 + MOVQ BP, DX + ADDQ R10, SI + ADDQ R10, DX + NEGQ R10 + +chacha_blocks_ssse3_copyinput: + MOVB (SI)(R10*1), AX + MOVB AX, (DX)(R10*1) + INCQ R10 + JNZ chacha_blocks_ssse3_copyinput + MOVQ BP, SI + +chacha_blocks_ssse3_noinput2: + MOVQ BP, DX + +chacha_blocks_ssse3_above63: + MOVO X8, X0 + MOVO X9, X1 + MOVO X10, X2 + MOVO X11, X3 + + // MOVQ 64(BP), AX + MOVQ $20, AX + +chacha_blocks_ssse3_mainloop2: + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X6, X3 + PADDD X3, X2 + PXOR X2, X1 + MOVO X1, X4 + PSLLL $12, X4 + PSRLL $20, X1 + PXOR X4, X1 + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X7, X3 + PSHUFD $0x93, X0, X0 + PADDD X3, X2 + PSHUFD $0x4e, X3, X3 + PXOR X2, X1 + PSHUFD $0x39, X2, X2 + MOVO X1, X4 + PSLLL $7, X4 + PSRLL $25, X1 + PXOR X4, X1 + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X6, X3 + PADDD X3, X2 + PXOR X2, X1 + MOVO X1, X4 + PSLLL $12, X4 + PSRLL $20, X1 + PXOR X4, X1 + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X7, X3 + PSHUFD $0x39, X0, X0 + PADDD X3, X2 + PSHUFD $0x4e, X3, X3 + PXOR X2, X1 + PSHUFD $0x93, X2, X2 + MOVO X1, X4 + PSLLL $7, X4 + PSRLL $25, X1 + PXOR X4, X1 + SUBQ $2, AX + JNZ chacha_blocks_ssse3_mainloop2 + PADDD X8, X0 + PADDD X9, X1 + PADDD X10, X2 + PADDD X11, X3 + ANDQ SI, SI + JZ chacha_blocks_ssse3_noinput3 + MOVOU 0(SI), X12 + MOVOU 16(SI), X13 + MOVOU 32(SI), X14 + MOVOU 48(SI), X15 + PXOR X12, X0 + PXOR X13, X1 + PXOR X14, X2 + PXOR X15, X3 + ADDQ $64, SI + +chacha_blocks_ssse3_noinput3: + MOVOU X0, 0(DX) + MOVOU X1, 16(DX) + MOVOU X2, 32(DX) + MOVOU X3, 48(DX) + PADDQ X5, X11 + CMPQ CX, $64 + JBE chacha_blocks_ssse3_mainloop2_finishup + ADDQ $64, DX + SUBQ $64, CX + JMP chacha_blocks_ssse3_below256 + +chacha_blocks_ssse3_mainloop2_finishup: + CMPQ CX, $64 + JE chacha_blocks_ssse3_done + ADDQ CX, R9 + ADDQ CX, DX + NEGQ CX + +chacha_blocks_ssse3_copyoutput: + MOVB (DX)(CX*1), AX + MOVB AX, (R9)(CX*1) + INCQ CX + JNZ chacha_blocks_ssse3_copyoutput + +chacha_blocks_ssse3_done: + MOVOU X11, 32(DI) + + RET + +// func hChaChaSSSE3(key, nonce []byte, dst *byte) +TEXT ·hChaChaSSSE3(SB), NOSPLIT|NOFRAME, $0-56 + MOVQ key+0(FP), DI + MOVQ nonce+24(FP), SI + MOVQ dst+48(FP), DX + + MOVL $20, CX + + LEAQ ·chacha_constants<>(SB), AX + MOVO 0(AX), X0 + MOVO 16(AX), X5 + MOVO 32(AX), X6 + + MOVOU 0(DI), X1 + MOVOU 16(DI), X2 + MOVOU 0(SI), X3 + +hchacha_ssse3_mainloop: + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X5, X3 + PADDD X3, X2 + PXOR X2, X1 + MOVO X1, X4 + PSLLL $12, X1 + PSRLL $20, X4 + PXOR X4, X1 + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X6, X3 + PSHUFD $0X93, X0, X0 + PADDD X3, X2 + PSHUFD $0X4E, X3, X3 + PXOR X2, X1 + PSHUFD $0X39, X2, X2 + MOVO X1, X4 + PSLLL $7, X1 + PSRLL $25, X4 + PXOR X4, X1 + SUBQ $2, CX + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X5, X3 + PADDD X3, X2 + PXOR X2, X1 + MOVO X1, X4 + PSLLL $12, X1 + PSRLL $20, X4 + PXOR X4, X1 + PADDD X1, X0 + PXOR X0, X3 + PSHUFB X6, X3 + PSHUFD $0X39, X0, X0 + PADDD X3, X2 + PSHUFD $0X4E, X3, X3 + PXOR X2, X1 + PSHUFD $0X93, X2, X2 + MOVO X1, X4 + PSLLL $7, X1 + PSRLL $25, X4 + PXOR X4, X1 + JA hchacha_ssse3_mainloop + + MOVOU X0, 0(DX) + MOVOU X3, 16(DX) + + RET diff --git a/vendor/blitter.com/go/chacha20/internal/ref/impl.go b/vendor/blitter.com/go/chacha20/internal/ref/impl.go new file mode 100644 index 0000000..d3a8ca6 --- /dev/null +++ b/vendor/blitter.com/go/chacha20/internal/ref/impl.go @@ -0,0 +1,374 @@ +// Copryright (C) 2019 Yawning Angel +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// Package ref provides the portable ChaCha20 implementation. +package ref + +import ( + "encoding/binary" + "math/bits" + + "blitter.com/go/chacha20/internal/api" +) + +const rounds = 20 + +// Impl is the reference implementation (exposed for testing). +var Impl = &implRef{} + +type implRef struct{} + +func (impl *implRef) Name() string { + return "ref" +} + +func (impl *implRef) Blocks(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { + for n := 0; n < nrBlocks; n++ { + x0, x1, x2, x3 := api.Sigma0, api.Sigma1, api.Sigma2, api.Sigma3 + x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] + + for i := rounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + x0 += api.Sigma0 + x1 += api.Sigma1 + x2 += api.Sigma2 + x3 += api.Sigma3 + x4 += x[4] + x5 += x[5] + x6 += x[6] + x7 += x[7] + x8 += x[8] + x9 += x[9] + x10 += x[10] + x11 += x[11] + x12 += x[12] + x13 += x[13] + x14 += x[14] + x15 += x[15] + + _ = dst[api.BlockSize-1] // Force bounds check elimination. + + if src != nil { + _ = src[api.BlockSize-1] // Force bounds check elimination. + binary.LittleEndian.PutUint32(dst[0:4], binary.LittleEndian.Uint32(src[0:4])^x0) + binary.LittleEndian.PutUint32(dst[4:8], binary.LittleEndian.Uint32(src[4:8])^x1) + binary.LittleEndian.PutUint32(dst[8:12], binary.LittleEndian.Uint32(src[8:12])^x2) + binary.LittleEndian.PutUint32(dst[12:16], binary.LittleEndian.Uint32(src[12:16])^x3) + binary.LittleEndian.PutUint32(dst[16:20], binary.LittleEndian.Uint32(src[16:20])^x4) + binary.LittleEndian.PutUint32(dst[20:24], binary.LittleEndian.Uint32(src[20:24])^x5) + binary.LittleEndian.PutUint32(dst[24:28], binary.LittleEndian.Uint32(src[24:28])^x6) + binary.LittleEndian.PutUint32(dst[28:32], binary.LittleEndian.Uint32(src[28:32])^x7) + binary.LittleEndian.PutUint32(dst[32:36], binary.LittleEndian.Uint32(src[32:36])^x8) + binary.LittleEndian.PutUint32(dst[36:40], binary.LittleEndian.Uint32(src[36:40])^x9) + binary.LittleEndian.PutUint32(dst[40:44], binary.LittleEndian.Uint32(src[40:44])^x10) + binary.LittleEndian.PutUint32(dst[44:48], binary.LittleEndian.Uint32(src[44:48])^x11) + binary.LittleEndian.PutUint32(dst[48:52], binary.LittleEndian.Uint32(src[48:52])^x12) + binary.LittleEndian.PutUint32(dst[52:56], binary.LittleEndian.Uint32(src[52:56])^x13) + binary.LittleEndian.PutUint32(dst[56:60], binary.LittleEndian.Uint32(src[56:60])^x14) + binary.LittleEndian.PutUint32(dst[60:64], binary.LittleEndian.Uint32(src[60:64])^x15) + src = src[api.BlockSize:] + } else { + binary.LittleEndian.PutUint32(dst[0:4], x0) + binary.LittleEndian.PutUint32(dst[4:8], x1) + binary.LittleEndian.PutUint32(dst[8:12], x2) + binary.LittleEndian.PutUint32(dst[12:16], x3) + binary.LittleEndian.PutUint32(dst[16:20], x4) + binary.LittleEndian.PutUint32(dst[20:24], x5) + binary.LittleEndian.PutUint32(dst[24:28], x6) + binary.LittleEndian.PutUint32(dst[28:32], x7) + binary.LittleEndian.PutUint32(dst[32:36], x8) + binary.LittleEndian.PutUint32(dst[36:40], x9) + binary.LittleEndian.PutUint32(dst[40:44], x10) + binary.LittleEndian.PutUint32(dst[44:48], x11) + binary.LittleEndian.PutUint32(dst[48:52], x12) + binary.LittleEndian.PutUint32(dst[52:56], x13) + binary.LittleEndian.PutUint32(dst[56:60], x14) + binary.LittleEndian.PutUint32(dst[60:64], x15) + } + dst = dst[api.BlockSize:] + + // Stoping at 2^70 bytes per nonce is the user's responsibility. + ctr := uint64(x[13])<<32 | uint64(x[12]) + ctr++ + x[12] = uint32(ctr) + x[13] = uint32(ctr >> 32) + } +} + +func (impl *implRef) HChaCha(key, nonce []byte, dst []byte) { + // Force bounds check elimination. + _ = key[31] + _ = nonce[api.HNonceSize-1] + + x0, x1, x2, x3 := api.Sigma0, api.Sigma1, api.Sigma2, api.Sigma3 + x4 := binary.LittleEndian.Uint32(key[0:4]) + x5 := binary.LittleEndian.Uint32(key[4:8]) + x6 := binary.LittleEndian.Uint32(key[8:12]) + x7 := binary.LittleEndian.Uint32(key[12:16]) + x8 := binary.LittleEndian.Uint32(key[16:20]) + x9 := binary.LittleEndian.Uint32(key[20:24]) + x10 := binary.LittleEndian.Uint32(key[24:28]) + x11 := binary.LittleEndian.Uint32(key[28:32]) + x12 := binary.LittleEndian.Uint32(nonce[0:4]) + x13 := binary.LittleEndian.Uint32(nonce[4:8]) + x14 := binary.LittleEndian.Uint32(nonce[8:12]) + x15 := binary.LittleEndian.Uint32(nonce[12:16]) + + // Yes, this could be carved out into a function for code reuse (TM) + // however the go inliner won't inline it. + for i := rounds; i > 0; i -= 2 { + // quarterround(x, 0, 4, 8, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 16) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 12) + x0 += x4 + x12 ^= x0 + x12 = bits.RotateLeft32(x12, 8) + x8 += x12 + x4 ^= x8 + x4 = bits.RotateLeft32(x4, 7) + + // quarterround(x, 1, 5, 9, 13) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 16) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 12) + x1 += x5 + x13 ^= x1 + x13 = bits.RotateLeft32(x13, 8) + x9 += x13 + x5 ^= x9 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 2, 6, 10, 14) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 16) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 12) + x2 += x6 + x14 ^= x2 + x14 = bits.RotateLeft32(x14, 8) + x10 += x14 + x6 ^= x10 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 3, 7, 11, 15) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 16) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 12) + x3 += x7 + x15 ^= x3 + x15 = bits.RotateLeft32(x15, 8) + x11 += x15 + x7 ^= x11 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 0, 5, 10, 15) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 16) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 12) + x0 += x5 + x15 ^= x0 + x15 = bits.RotateLeft32(x15, 8) + x10 += x15 + x5 ^= x10 + x5 = bits.RotateLeft32(x5, 7) + + // quarterround(x, 1, 6, 11, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 16) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 12) + x1 += x6 + x12 ^= x1 + x12 = bits.RotateLeft32(x12, 8) + x11 += x12 + x6 ^= x11 + x6 = bits.RotateLeft32(x6, 7) + + // quarterround(x, 2, 7, 8, 13) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 16) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 12) + x2 += x7 + x13 ^= x2 + x13 = bits.RotateLeft32(x13, 8) + x8 += x13 + x7 ^= x8 + x7 = bits.RotateLeft32(x7, 7) + + // quarterround(x, 3, 4, 9, 14) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 16) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 12) + x3 += x4 + x14 ^= x3 + x14 = bits.RotateLeft32(x14, 8) + x9 += x14 + x4 ^= x9 + x4 = bits.RotateLeft32(x4, 7) + } + + // HChaCha returns x0...x3 | x12...x15, which corresponds to the + // indexes of the ChaCha constant and the indexes of the IV. + _ = dst[api.HashSize-1] // Force bounds check elimination. + binary.LittleEndian.PutUint32(dst[0:4], x0) + binary.LittleEndian.PutUint32(dst[4:8], x1) + binary.LittleEndian.PutUint32(dst[8:12], x2) + binary.LittleEndian.PutUint32(dst[12:16], x3) + binary.LittleEndian.PutUint32(dst[16:20], x12) + binary.LittleEndian.PutUint32(dst[20:24], x13) + binary.LittleEndian.PutUint32(dst[24:28], x14) + binary.LittleEndian.PutUint32(dst[28:32], x15) +} + +// Register appends the implementation to the provided slice, and returns the +// new slice. +func Register(impls []api.Implementation) []api.Implementation { + return append(impls, Impl) +} diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore b/vendor/blitter.com/go/kyber/.gitignore similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/.gitignore rename to vendor/blitter.com/go/kyber/.gitignore diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE b/vendor/blitter.com/go/kyber/LICENSE similarity index 100% rename from vendor/git.schwanenlied.me/yawning/chacha20.git/LICENSE rename to vendor/blitter.com/go/kyber/LICENSE diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/README.md b/vendor/blitter.com/go/kyber/README.md similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/README.md rename to vendor/blitter.com/go/kyber/README.md diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go b/vendor/blitter.com/go/kyber/cbd.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/cbd.go rename to vendor/blitter.com/go/kyber/cbd.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/doc.go b/vendor/blitter.com/go/kyber/doc.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/doc.go rename to vendor/blitter.com/go/kyber/doc.go diff --git a/vendor/blitter.com/go/kyber/go.mod b/vendor/blitter.com/go/kyber/go.mod new file mode 100644 index 0000000..034a8c8 --- /dev/null +++ b/vendor/blitter.com/go/kyber/go.mod @@ -0,0 +1,5 @@ +module blitter.com/go/kyber + +go 1.12 + +require golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d diff --git a/vendor/blitter.com/go/kyber/go.sum b/vendor/blitter.com/go/kyber/go.sum new file mode 100644 index 0000000..ce1301f --- /dev/null +++ b/vendor/blitter.com/go/kyber/go.sum @@ -0,0 +1,7 @@ +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U= +golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go b/vendor/blitter.com/go/kyber/hwaccel.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel.go rename to vendor/blitter.com/go/kyber/hwaccel.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go b/vendor/blitter.com/go/kyber/hwaccel_amd64.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.go rename to vendor/blitter.com/go/kyber/hwaccel_amd64.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s b/vendor/blitter.com/go/kyber/hwaccel_amd64.s similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_amd64.s rename to vendor/blitter.com/go/kyber/hwaccel_amd64.s diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go b/vendor/blitter.com/go/kyber/hwaccel_ref.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/hwaccel_ref.go rename to vendor/blitter.com/go/kyber/hwaccel_ref.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go b/vendor/blitter.com/go/kyber/indcpa.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/indcpa.go rename to vendor/blitter.com/go/kyber/indcpa.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kem.go b/vendor/blitter.com/go/kyber/kem.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/kem.go rename to vendor/blitter.com/go/kyber/kem.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/kex.go b/vendor/blitter.com/go/kyber/kex.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/kex.go rename to vendor/blitter.com/go/kyber/kex.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go b/vendor/blitter.com/go/kyber/ntt.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/ntt.go rename to vendor/blitter.com/go/kyber/ntt.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/params.go b/vendor/blitter.com/go/kyber/params.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/params.go rename to vendor/blitter.com/go/kyber/params.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/poly.go b/vendor/blitter.com/go/kyber/poly.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/poly.go rename to vendor/blitter.com/go/kyber/poly.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go b/vendor/blitter.com/go/kyber/polyvec.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/polyvec.go rename to vendor/blitter.com/go/kyber/polyvec.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go b/vendor/blitter.com/go/kyber/precomp.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/precomp.go rename to vendor/blitter.com/go/kyber/precomp.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go b/vendor/blitter.com/go/kyber/reduce.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/reduce.go rename to vendor/blitter.com/go/kyber/reduce.go diff --git a/vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE b/vendor/blitter.com/go/newhope/LICENSE similarity index 100% rename from vendor/git.schwanenlied.me/yawning/kyber.git/LICENSE rename to vendor/blitter.com/go/newhope/LICENSE diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go b/vendor/blitter.com/go/newhope/batcher.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/batcher.go rename to vendor/blitter.com/go/newhope/batcher.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go b/vendor/blitter.com/go/newhope/error_correction.go similarity index 97% rename from vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go rename to vendor/blitter.com/go/newhope/error_correction.go index 5b7e228..7855648 100644 --- a/vendor/git.schwanenlied.me/yawning/newhope.git/error_correction.go +++ b/vendor/blitter.com/go/newhope/error_correction.go @@ -7,7 +7,7 @@ package newhope -import "git.schwanenlied.me/yawning/chacha20.git" +import "blitter.com/go/chacha20" func abs(v int32) int32 { mask := v >> 31 @@ -73,7 +73,7 @@ func (c *poly) helpRec(v *poly, seed *[SeedBytes]byte, nonce byte) { n[7] = nonce - stream, err := chacha20.NewCipher(seed[:], n[:]) + stream, err := chacha20.New(seed[:], n[:]) if err != nil { panic(err) } diff --git a/vendor/blitter.com/go/newhope/go.mod b/vendor/blitter.com/go/newhope/go.mod new file mode 100644 index 0000000..198cb63 --- /dev/null +++ b/vendor/blitter.com/go/newhope/go.mod @@ -0,0 +1,8 @@ +module blitter.com/go/newhope + +go 1.12 + +require ( + blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c + golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 +) diff --git a/vendor/blitter.com/go/newhope/go.sum b/vendor/blitter.com/go/newhope/go.sum new file mode 100644 index 0000000..56f869d --- /dev/null +++ b/vendor/blitter.com/go/newhope/go.sum @@ -0,0 +1,19 @@ +blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c h1:LcnFFg6MCIJHf26P7eOUST45fNLHJI5erq0gWZaDLCo= +blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +gitlab.com/yawning/chacha20.git v0.0.0-20190902183103-644b09ac4e6e h1:QhupcTDYYRrhIY0f5Ad5v/nU8lJWjzzN6qQu1ndOm0c= +gitlab.com/yawning/chacha20.git v0.0.0-20190902183103-644b09ac4e6e/go.mod h1:3x6b94nWCP/a2XB/joOPMiGYUBvqbLfeY/BkHLeDs6s= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 h1:Gv7RPwsi3eZ2Fgewe3CBsuOebPwO27PoXzRpJPsvSSM= +golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= +golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go b/vendor/blitter.com/go/newhope/newhope.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/newhope.go rename to vendor/blitter.com/go/newhope/newhope.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go b/vendor/blitter.com/go/newhope/newhope_simple.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/newhope_simple.go rename to vendor/blitter.com/go/newhope/newhope_simple.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go b/vendor/blitter.com/go/newhope/ntt.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/ntt.go rename to vendor/blitter.com/go/newhope/ntt.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/params.go b/vendor/blitter.com/go/newhope/params.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/params.go rename to vendor/blitter.com/go/newhope/params.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go b/vendor/blitter.com/go/newhope/poly.go similarity index 95% rename from vendor/git.schwanenlied.me/yawning/newhope.git/poly.go rename to vendor/blitter.com/go/newhope/poly.go index bd1816e..860126e 100644 --- a/vendor/git.schwanenlied.me/yawning/newhope.git/poly.go +++ b/vendor/blitter.com/go/newhope/poly.go @@ -10,7 +10,7 @@ package newhope import ( "encoding/binary" - "git.schwanenlied.me/yawning/chacha20.git" + "blitter.com/go/chacha20" "golang.org/x/crypto/sha3" ) @@ -115,8 +115,8 @@ func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { // h and buf are left unscrubbed because the output is public. h := sha3.NewShake128() - h.Write(seed[:]) - h.Read(buf[:]) + _, _ = h.Write(seed[:]) + _, _ = h.Read(buf[:]) for ctr, pos := 0, 0; ctr < paramN; { val := binary.LittleEndian.Uint16(buf[pos:]) @@ -128,7 +128,7 @@ func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { pos += 2 if pos > shake128Rate*nBlocks-2 { nBlocks = 1 - h.Read(buf[:shake128Rate]) + _, _ = h.Read(buf[:shake128Rate]) pos = 0 } } @@ -140,10 +140,10 @@ func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { // h and buf are left unscrubbed because the output is public. h := sha3.NewShake128() - h.Write(seed[:]) + _, _ = h.Write(seed[:]) for { - h.Read(buf[:]) + _, _ = h.Read(buf[:]) if !p.discardTo(buf[:]) { break } @@ -159,7 +159,7 @@ func (p *poly) getNoise(seed *[SeedBytes]byte, nonce byte) { var n [8]byte n[0] = nonce - stream, err := chacha20.NewCipher(seed[:], n[:]) + stream, err := chacha20.New(seed[:], n[:]) if err != nil { panic(err) } diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go b/vendor/blitter.com/go/newhope/poly_simple.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/poly_simple.go rename to vendor/blitter.com/go/newhope/poly_simple.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go b/vendor/blitter.com/go/newhope/precomp.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/precomp.go rename to vendor/blitter.com/go/newhope/precomp.go diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go b/vendor/blitter.com/go/newhope/reduce.go similarity index 100% rename from vendor/git.schwanenlied.me/yawning/newhope.git/reduce.go rename to vendor/blitter.com/go/newhope/reduce.go diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go deleted file mode 100644 index 05adad1..0000000 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.go +++ /dev/null @@ -1,95 +0,0 @@ -// chacha20_amd64.go - AMD64 optimized chacha20. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to chacha20, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// +build amd64,!gccgo,!appengine - -package chacha20 - -import ( - "math" -) - -var usingAVX2 = false - -func blocksAmd64SSE2(x *uint32, inp, outp *byte, nrBlocks uint) - -func blocksAmd64AVX2(x *uint32, inp, outp *byte, nrBlocks uint) - -func cpuidAmd64(cpuidParams *uint32) - -func xgetbv0Amd64(xcrVec *uint32) - -func blocksAmd64(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { - // Probably unneeded, but stating this explicitly simplifies the assembly. - if nrBlocks == 0 { - return - } - - if isIetf { - var totalBlocks uint64 - totalBlocks = uint64(x[12]) + uint64(nrBlocks) - if totalBlocks > math.MaxUint32 { - panic("chacha20: Exceeded keystream per nonce limit") - } - } - - if in == nil { - for i := range out { - out[i] = 0 - } - in = out - } - - // Pointless to call the AVX2 code for just a single block, since half of - // the output gets discarded... - if usingAVX2 && nrBlocks > 1 { - blocksAmd64AVX2(&x[0], &in[0], &out[0], uint(nrBlocks)) - } else { - blocksAmd64SSE2(&x[0], &in[0], &out[0], uint(nrBlocks)) - } -} - -func supportsAVX2() bool { - // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family - const ( - osXsaveBit = 1 << 27 - avx2Bit = 1 << 5 - ) - - // Check to see if CPUID actually supports the leaf that indicates AVX2. - // CPUID.(EAX=0H, ECX=0H) >= 7 - regs := [4]uint32{0x00} - cpuidAmd64(®s[0]) - if regs[0] < 7 { - return false - } - - // Check to see if the OS knows how to save/restore XMM/YMM state. - // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 - regs = [4]uint32{0x01} - cpuidAmd64(®s[0]) - if regs[2]&osXsaveBit == 0 { - return false - } - xcrRegs := [2]uint32{} - xgetbv0Amd64(&xcrRegs[0]) - if xcrRegs[0]&6 != 6 { - return false - } - - // Check for AVX2 support. - // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 - regs = [4]uint32{0x07} - cpuidAmd64(®s[0]) - return regs[1]&avx2Bit != 0 -} - -func init() { - blocksFn = blocksAmd64 - usingVectors = true - usingAVX2 = supportsAVX2() -} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py deleted file mode 100644 index 3bfebf4..0000000 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.py +++ /dev/null @@ -1,1295 +0,0 @@ -#!/usr/bin/env python3 -# -# To the extent possible under law, Yawning Angel has waived all copyright -# and related or neighboring rights to chacha20, using the Creative -# Commons "CC0" public domain dedication. See LICENSE or -# for full details. - -# -# cgo sucks. Plan 9 assembly sucks. Real languages have SIMD intrinsics. -# The least terrible/retarded option is to use a Python code generator, so -# that's what I did. -# -# Code based on Ted Krovetz's vec128 C implementation, with corrections -# to use a 64 bit counter instead of 32 bit, and to allow unaligned input and -# output pointers. -# -# Dependencies: https://github.com/Maratyszcza/PeachPy -# -# python3 -m peachpy.x86_64 -mabi=goasm -S -o chacha20_amd64.s chacha20_amd64.py -# - -from peachpy import * -from peachpy.x86_64 import * - -x = Argument(ptr(uint32_t)) -inp = Argument(ptr(const_uint8_t)) -outp = Argument(ptr(uint8_t)) -nrBlocks = Argument(ptr(size_t)) - -# -# SSE2 helper functions. A temporary register is explicitly passed in because -# the main fast loop uses every single register (and even spills) so manual -# control is needed. -# -# This used to also have a DQROUNDS helper that did 2 rounds of ChaCha like -# in the C code, but the C code has the luxury of an optimizer reordering -# everything, while this does not. -# - -def ROTW16_sse2(tmp, d): - MOVDQA(tmp, d) - PSLLD(tmp, 16) - PSRLD(d, 16) - PXOR(d, tmp) - -def ROTW12_sse2(tmp, b): - MOVDQA(tmp, b) - PSLLD(tmp, 12) - PSRLD(b, 20) - PXOR(b, tmp) - -def ROTW8_sse2(tmp, d): - MOVDQA(tmp, d) - PSLLD(tmp, 8) - PSRLD(d, 24) - PXOR(d, tmp) - -def ROTW7_sse2(tmp, b): - MOVDQA(tmp, b) - PSLLD(tmp, 7) - PSRLD(b, 25) - PXOR(b, tmp) - -def WriteXor_sse2(tmp, inp, outp, d, v0, v1, v2, v3): - MOVDQU(tmp, [inp+d]) - PXOR(tmp, v0) - MOVDQU([outp+d], tmp) - MOVDQU(tmp, [inp+d+16]) - PXOR(tmp, v1) - MOVDQU([outp+d+16], tmp) - MOVDQU(tmp, [inp+d+32]) - PXOR(tmp, v2) - MOVDQU([outp+d+32], tmp) - MOVDQU(tmp, [inp+d+48]) - PXOR(tmp, v3) - MOVDQU([outp+d+48], tmp) - -# SSE2 ChaCha20 (aka vec128). Does not handle partial blocks, and will -# process 4/2/1 blocks at a time. -with Function("blocksAmd64SSE2", (x, inp, outp, nrBlocks)): - reg_x = GeneralPurposeRegister64() - reg_inp = GeneralPurposeRegister64() - reg_outp = GeneralPurposeRegister64() - reg_blocks = GeneralPurposeRegister64() - reg_sp_save = GeneralPurposeRegister64() - - LOAD.ARGUMENT(reg_x, x) - LOAD.ARGUMENT(reg_inp, inp) - LOAD.ARGUMENT(reg_outp, outp) - LOAD.ARGUMENT(reg_blocks, nrBlocks) - - # Align the stack to a 32 byte boundary. - MOV(reg_sp_save, registers.rsp) - AND(registers.rsp, 0xffffffffffffffe0) - SUB(registers.rsp, 0x20) - - # Build the counter increment vector on the stack, and allocate the scratch - # space - xmm_v0 = XMMRegister() - PXOR(xmm_v0, xmm_v0) - SUB(registers.rsp, 16+16) - MOVDQA([registers.rsp], xmm_v0) - reg_tmp = GeneralPurposeRegister32() - MOV(reg_tmp, 0x00000001) - MOV([registers.rsp], reg_tmp) - mem_one = [registers.rsp] # (Stack) Counter increment vector - mem_tmp0 = [registers.rsp+16] # (Stack) Scratch space. - - mem_s0 = [reg_x] # (Memory) Cipher state [0..3] - mem_s1 = [reg_x+16] # (Memory) Cipher state [4..7] - mem_s2 = [reg_x+32] # (Memory) Cipher state [8..11] - mem_s3 = [reg_x+48] # (Memory) Cipher state [12..15] - - # xmm_v0 allocated above... - xmm_v1 = XMMRegister() - xmm_v2 = XMMRegister() - xmm_v3 = XMMRegister() - - xmm_v4 = XMMRegister() - xmm_v5 = XMMRegister() - xmm_v6 = XMMRegister() - xmm_v7 = XMMRegister() - - xmm_v8 = XMMRegister() - xmm_v9 = XMMRegister() - xmm_v10 = XMMRegister() - xmm_v11 = XMMRegister() - - xmm_v12 = XMMRegister() - xmm_v13 = XMMRegister() - xmm_v14 = XMMRegister() - xmm_v15 = XMMRegister() - - xmm_tmp = xmm_v12 - - # - # 4 blocks at a time. - # - - reg_rounds = GeneralPurposeRegister64() - - vector_loop4 = Loop() - SUB(reg_blocks, 4) - JB(vector_loop4.end) - with vector_loop4: - MOVDQU(xmm_v0, mem_s0) - MOVDQU(xmm_v1, mem_s1) - MOVDQU(xmm_v2, mem_s2) - MOVDQU(xmm_v3, mem_s3) - - MOVDQA(xmm_v4, xmm_v0) - MOVDQA(xmm_v5, xmm_v1) - MOVDQA(xmm_v6, xmm_v2) - MOVDQA(xmm_v7, xmm_v3) - PADDQ(xmm_v7, mem_one) - - MOVDQA(xmm_v8, xmm_v0) - MOVDQA(xmm_v9, xmm_v1) - MOVDQA(xmm_v10, xmm_v2) - MOVDQA(xmm_v11, xmm_v7) - PADDQ(xmm_v11, mem_one) - - MOVDQA(xmm_v12, xmm_v0) - MOVDQA(xmm_v13, xmm_v1) - MOVDQA(xmm_v14, xmm_v2) - MOVDQA(xmm_v15, xmm_v11) - PADDQ(xmm_v15, mem_one) - - MOV(reg_rounds, 20) - rounds_loop4 = Loop() - with rounds_loop4: - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PADDD(xmm_v8, xmm_v9) - PADDD(xmm_v12, xmm_v13) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - PXOR(xmm_v11, xmm_v8) - PXOR(xmm_v15, xmm_v12) - - MOVDQA(mem_tmp0, xmm_tmp) # Save - - ROTW16_sse2(xmm_tmp, xmm_v3) - ROTW16_sse2(xmm_tmp, xmm_v7) - ROTW16_sse2(xmm_tmp, xmm_v11) - ROTW16_sse2(xmm_tmp, xmm_v15) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PADDD(xmm_v10, xmm_v11) - PADDD(xmm_v14, xmm_v15) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - PXOR(xmm_v9, xmm_v10) - PXOR(xmm_v13, xmm_v14) - ROTW12_sse2(xmm_tmp, xmm_v1) - ROTW12_sse2(xmm_tmp, xmm_v5) - ROTW12_sse2(xmm_tmp, xmm_v9) - ROTW12_sse2(xmm_tmp, xmm_v13) - - # a += b; d ^= a; d = ROTW8(d); - MOVDQA(xmm_tmp, mem_tmp0) # Restore - - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PADDD(xmm_v8, xmm_v9) - PADDD(xmm_v12, xmm_v13) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - PXOR(xmm_v11, xmm_v8) - PXOR(xmm_v15, xmm_v12) - - MOVDQA(mem_tmp0, xmm_tmp) # Save - - ROTW8_sse2(xmm_tmp, xmm_v3) - ROTW8_sse2(xmm_tmp, xmm_v7) - ROTW8_sse2(xmm_tmp, xmm_v11) - ROTW8_sse2(xmm_tmp, xmm_v15) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PADDD(xmm_v10, xmm_v11) - PADDD(xmm_v14, xmm_v15) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - PXOR(xmm_v9, xmm_v10) - PXOR(xmm_v13, xmm_v14) - ROTW7_sse2(xmm_tmp, xmm_v1) - ROTW7_sse2(xmm_tmp, xmm_v5) - ROTW7_sse2(xmm_tmp, xmm_v9) - ROTW7_sse2(xmm_tmp, xmm_v13) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x39) - PSHUFD(xmm_v5, xmm_v5, 0x39) - PSHUFD(xmm_v9, xmm_v9, 0x39) - PSHUFD(xmm_v13, xmm_v13, 0x39) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v6, xmm_v6, 0x4e) - PSHUFD(xmm_v10, xmm_v10, 0x4e) - PSHUFD(xmm_v14, xmm_v14, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x93) - PSHUFD(xmm_v7, xmm_v7, 0x93) - PSHUFD(xmm_v11, xmm_v11, 0x93) - PSHUFD(xmm_v15, xmm_v15, 0x93) - - MOVDQA(xmm_tmp, mem_tmp0) # Restore - - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PADDD(xmm_v8, xmm_v9) - PADDD(xmm_v12, xmm_v13) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - PXOR(xmm_v11, xmm_v8) - PXOR(xmm_v15, xmm_v12) - - MOVDQA(mem_tmp0, xmm_tmp) # Save - - ROTW16_sse2(xmm_tmp, xmm_v3) - ROTW16_sse2(xmm_tmp, xmm_v7) - ROTW16_sse2(xmm_tmp, xmm_v11) - ROTW16_sse2(xmm_tmp, xmm_v15) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PADDD(xmm_v10, xmm_v11) - PADDD(xmm_v14, xmm_v15) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - PXOR(xmm_v9, xmm_v10) - PXOR(xmm_v13, xmm_v14) - ROTW12_sse2(xmm_tmp, xmm_v1) - ROTW12_sse2(xmm_tmp, xmm_v5) - ROTW12_sse2(xmm_tmp, xmm_v9) - ROTW12_sse2(xmm_tmp, xmm_v13) - - # a += b; d ^= a; d = ROTW8(d); - MOVDQA(xmm_tmp, mem_tmp0) # Restore - - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PADDD(xmm_v8, xmm_v9) - PADDD(xmm_v12, xmm_v13) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - PXOR(xmm_v11, xmm_v8) - PXOR(xmm_v15, xmm_v12) - - MOVDQA(mem_tmp0, xmm_tmp) # Save - - ROTW8_sse2(xmm_tmp, xmm_v3) - ROTW8_sse2(xmm_tmp, xmm_v7) - ROTW8_sse2(xmm_tmp, xmm_v11) - ROTW8_sse2(xmm_tmp, xmm_v15) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PADDD(xmm_v10, xmm_v11) - PADDD(xmm_v14, xmm_v15) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - PXOR(xmm_v9, xmm_v10) - PXOR(xmm_v13, xmm_v14) - ROTW7_sse2(xmm_tmp, xmm_v1) - ROTW7_sse2(xmm_tmp, xmm_v5) - ROTW7_sse2(xmm_tmp, xmm_v9) - ROTW7_sse2(xmm_tmp, xmm_v13) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x93) - PSHUFD(xmm_v5, xmm_v5, 0x93) - PSHUFD(xmm_v9, xmm_v9, 0x93) - PSHUFD(xmm_v13, xmm_v13, 0x93) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v6, xmm_v6, 0x4e) - PSHUFD(xmm_v10, xmm_v10, 0x4e) - PSHUFD(xmm_v14, xmm_v14, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x39) - PSHUFD(xmm_v7, xmm_v7, 0x39) - PSHUFD(xmm_v11, xmm_v11, 0x39) - PSHUFD(xmm_v15, xmm_v15, 0x39) - - MOVDQA(xmm_tmp, mem_tmp0) # Restore - - SUB(reg_rounds, 2) - JNZ(rounds_loop4.begin) - - MOVDQA(mem_tmp0, xmm_tmp) - - PADDD(xmm_v0, mem_s0) - PADDD(xmm_v1, mem_s1) - PADDD(xmm_v2, mem_s2) - PADDD(xmm_v3, mem_s3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) - MOVDQU(xmm_v3, mem_s3) - PADDQ(xmm_v3, mem_one) - - PADDD(xmm_v4, mem_s0) - PADDD(xmm_v5, mem_s1) - PADDD(xmm_v6, mem_s2) - PADDD(xmm_v7, xmm_v3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) - PADDQ(xmm_v3, mem_one) - - PADDD(xmm_v8, mem_s0) - PADDD(xmm_v9, mem_s1) - PADDD(xmm_v10, mem_s2) - PADDD(xmm_v11, xmm_v3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 128, xmm_v8, xmm_v9, xmm_v10, xmm_v11) - PADDQ(xmm_v3, mem_one) - - MOVDQA(xmm_tmp, mem_tmp0) - - PADDD(xmm_v12, mem_s0) - PADDD(xmm_v13, mem_s1) - PADDD(xmm_v14, mem_s2) - PADDD(xmm_v15, xmm_v3) - WriteXor_sse2(xmm_v0, reg_inp, reg_outp, 192, xmm_v12, xmm_v13, xmm_v14, xmm_v15) - PADDQ(xmm_v3, mem_one) - - MOVDQU(mem_s3, xmm_v3) - - ADD(reg_inp, 4 * 64) - ADD(reg_outp, 4 * 64) - - SUB(reg_blocks, 4) - JAE(vector_loop4.begin) - - ADD(reg_blocks, 4) - out = Label() - JZ(out) - - # Past this point, we no longer need to use every single register to hold - # the in progress state. - - xmm_s0 = xmm_v8 - xmm_s1 = xmm_v9 - xmm_s2 = xmm_v10 - xmm_s3 = xmm_v11 - xmm_one = xmm_v13 - MOVDQU(xmm_s0, mem_s0) - MOVDQU(xmm_s1, mem_s1) - MOVDQU(xmm_s2, mem_s2) - MOVDQU(xmm_s3, mem_s3) - MOVDQA(xmm_one, mem_one) - - # - # 2 blocks at a time. - # - - process_1_block = Label() - SUB(reg_blocks, 2) - JB(process_1_block) # < 2 blocks remaining. - - MOVDQA(xmm_v0, xmm_s0) - MOVDQA(xmm_v1, xmm_s1) - MOVDQA(xmm_v2, xmm_s2) - MOVDQA(xmm_v3, xmm_s3) - - MOVDQA(xmm_v4, xmm_v0) - MOVDQA(xmm_v5, xmm_v1) - MOVDQA(xmm_v6, xmm_v2) - MOVDQA(xmm_v7, xmm_v3) - PADDQ(xmm_v7, xmm_one) - - MOV(reg_rounds, 20) - rounds_loop2 = Loop() - with rounds_loop2: - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - ROTW16_sse2(xmm_tmp, xmm_v3) - ROTW16_sse2(xmm_tmp, xmm_v7) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - ROTW12_sse2(xmm_tmp, xmm_v1) - ROTW12_sse2(xmm_tmp, xmm_v5) - - # a += b; d ^= a; d = ROTW8(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - ROTW8_sse2(xmm_tmp, xmm_v3) - ROTW8_sse2(xmm_tmp, xmm_v7) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - ROTW7_sse2(xmm_tmp, xmm_v1) - ROTW7_sse2(xmm_tmp, xmm_v5) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x39) - PSHUFD(xmm_v5, xmm_v5, 0x39) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v6, xmm_v6, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x93) - PSHUFD(xmm_v7, xmm_v7, 0x93) - - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - ROTW16_sse2(xmm_tmp, xmm_v3) - ROTW16_sse2(xmm_tmp, xmm_v7) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - ROTW12_sse2(xmm_tmp, xmm_v1) - ROTW12_sse2(xmm_tmp, xmm_v5) - - # a += b; d ^= a; d = ROTW8(d); - PADDD(xmm_v0, xmm_v1) - PADDD(xmm_v4, xmm_v5) - PXOR(xmm_v3, xmm_v0) - PXOR(xmm_v7, xmm_v4) - ROTW8_sse2(xmm_tmp, xmm_v3) - ROTW8_sse2(xmm_tmp, xmm_v7) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PADDD(xmm_v6, xmm_v7) - PXOR(xmm_v1, xmm_v2) - PXOR(xmm_v5, xmm_v6) - ROTW7_sse2(xmm_tmp, xmm_v1) - ROTW7_sse2(xmm_tmp, xmm_v5) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x93) - PSHUFD(xmm_v5, xmm_v5, 0x93) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v6, xmm_v6, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x39) - PSHUFD(xmm_v7, xmm_v7, 0x39) - - SUB(reg_rounds, 2) - JNZ(rounds_loop2.begin) - - PADDD(xmm_v0, xmm_s0) - PADDD(xmm_v1, xmm_s1) - PADDD(xmm_v2, xmm_s2) - PADDD(xmm_v3, xmm_s3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) - PADDQ(xmm_s3, xmm_one) - - PADDD(xmm_v4, xmm_s0) - PADDD(xmm_v5, xmm_s1) - PADDD(xmm_v6, xmm_s2) - PADDD(xmm_v7, xmm_s3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 64, xmm_v4, xmm_v5, xmm_v6, xmm_v7) - PADDQ(xmm_s3, xmm_one) - - ADD(reg_inp, 2 * 64) - ADD(reg_outp, 2 * 64) - SUB(reg_blocks, 2) - - LABEL(process_1_block) - ADD(reg_blocks, 2) - out_serial = Label() - JZ(out_serial) - - # - # 1 block at a time. Only executed once, because if there was > 1, - # the parallel code would have processed it already. - # - - MOVDQA(xmm_v0, xmm_s0) - MOVDQA(xmm_v1, xmm_s1) - MOVDQA(xmm_v2, xmm_s2) - MOVDQA(xmm_v3, xmm_s3) - - MOV(reg_rounds, 20) - rounds_loop1 = Loop() - with rounds_loop1: - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PXOR(xmm_v3, xmm_v0) - ROTW16_sse2(xmm_tmp, xmm_v3) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PXOR(xmm_v1, xmm_v2) - ROTW12_sse2(xmm_tmp, xmm_v1) - - # a += b; d ^= a; d = ROTW8(d); - PADDD(xmm_v0, xmm_v1) - PXOR(xmm_v3, xmm_v0) - ROTW8_sse2(xmm_tmp, xmm_v3) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PXOR(xmm_v1, xmm_v2) - ROTW7_sse2(xmm_tmp, xmm_v1) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x39) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x93) - - # a += b; d ^= a; d = ROTW16(d); - PADDD(xmm_v0, xmm_v1) - PXOR(xmm_v3, xmm_v0) - ROTW16_sse2(xmm_tmp, xmm_v3) - - # c += d; b ^= c; b = ROTW12(b); - PADDD(xmm_v2, xmm_v3) - PXOR(xmm_v1, xmm_v2) - ROTW12_sse2(xmm_tmp, xmm_v1) - - # a += b; d ^= a; d = ROTW8(d); - PADDD(xmm_v0, xmm_v1) - PXOR(xmm_v3, xmm_v0) - ROTW8_sse2(xmm_tmp, xmm_v3) - - # c += d; b ^= c; b = ROTW7(b) - PADDD(xmm_v2, xmm_v3) - PXOR(xmm_v1, xmm_v2) - ROTW7_sse2(xmm_tmp, xmm_v1) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - PSHUFD(xmm_v1, xmm_v1, 0x93) - PSHUFD(xmm_v2, xmm_v2, 0x4e) - PSHUFD(xmm_v3, xmm_v3, 0x39) - - SUB(reg_rounds, 2) - JNZ(rounds_loop1.begin) - - PADDD(xmm_v0, xmm_s0) - PADDD(xmm_v1, xmm_s1) - PADDD(xmm_v2, xmm_s2) - PADDD(xmm_v3, xmm_s3) - WriteXor_sse2(xmm_tmp, reg_inp, reg_outp, 0, xmm_v0, xmm_v1, xmm_v2, xmm_v3) - PADDQ(xmm_s3, xmm_one) - - LABEL(out_serial) - - # Write back the updated counter. Stoping at 2^70 bytes is the user's - # problem, not mine. (Skipped if there's exactly a multiple of 4 blocks - # because the counter is incremented in memory while looping.) - MOVDQU(mem_s3, xmm_s3) - - LABEL(out) - - # Paranoia, cleanse the scratch space. - PXOR(xmm_v0, xmm_v0) - MOVDQA(mem_tmp0, xmm_v0) - - # Remove our stack allocation. - MOV(registers.rsp, reg_sp_save) - - RETURN() - -# -# AVX2 helpers. Like the SSE2 equivalents, the scratch register is explicit, -# and more helpers are used to increase readability for destructive operations. -# -# XXX/Performance: ROTW16_avx2/ROTW8_avx2 both can use VPSHUFFB. -# - -def ADD_avx2(dst, src): - VPADDD(dst, dst, src) - -def XOR_avx2(dst, src): - VPXOR(dst, dst, src) - -def ROTW16_avx2(tmp, d): - VPSLLD(tmp, d, 16) - VPSRLD(d, d, 16) - XOR_avx2(d, tmp) - -def ROTW12_avx2(tmp, b): - VPSLLD(tmp, b, 12) - VPSRLD(b, b, 20) - XOR_avx2(b, tmp) - -def ROTW8_avx2(tmp, d): - VPSLLD(tmp, d, 8) - VPSRLD(d, d, 24) - XOR_avx2(d, tmp) - -def ROTW7_avx2(tmp, b): - VPSLLD(tmp, b, 7) - VPSRLD(b, b, 25) - XOR_avx2(b, tmp) - -def WriteXor_avx2(tmp, inp, outp, d, v0, v1, v2, v3): - # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); - VPERM2I128(tmp, v0, v1, 0x20) - VPXOR(tmp, tmp, [inp+d]) - VMOVDQU([outp+d], tmp) - - # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); - VPERM2I128(tmp, v2, v3, 0x20) - VPXOR(tmp, tmp, [inp+d+32]) - VMOVDQU([outp+d+32], tmp) - - # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); - VPERM2I128(tmp, v0, v1, 0x31) - VPXOR(tmp, tmp, [inp+d+64]) - VMOVDQU([outp+d+64], tmp) - - # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); - VPERM2I128(tmp, v2, v3, 0x31) - VPXOR(tmp, tmp, [inp+d+96]) - VMOVDQU([outp+d+96], tmp) - -# AVX2 ChaCha20 (aka avx2). Does not handle partial blocks, will process -# 8/4/2 blocks at a time. -with Function("blocksAmd64AVX2", (x, inp, outp, nrBlocks), target=uarch.broadwell): - reg_x = GeneralPurposeRegister64() - reg_inp = GeneralPurposeRegister64() - reg_outp = GeneralPurposeRegister64() - reg_blocks = GeneralPurposeRegister64() - reg_sp_save = GeneralPurposeRegister64() - - LOAD.ARGUMENT(reg_x, x) - LOAD.ARGUMENT(reg_inp, inp) - LOAD.ARGUMENT(reg_outp, outp) - LOAD.ARGUMENT(reg_blocks, nrBlocks) - - # Align the stack to a 32 byte boundary. - MOV(reg_sp_save, registers.rsp) - AND(registers.rsp, 0xffffffffffffffe0) - SUB(registers.rsp, 0x20) - - x_s0 = [reg_x] # (Memory) Cipher state [0..3] - x_s1 = [reg_x+16] # (Memory) Cipher state [4..7] - x_s2 = [reg_x+32] # (Memory) Cipher state [8..11] - x_s3 = [reg_x+48] # (Memory) Cipher state [12..15] - - ymm_v0 = YMMRegister() - ymm_v1 = YMMRegister() - ymm_v2 = YMMRegister() - ymm_v3 = YMMRegister() - - ymm_v4 = YMMRegister() - ymm_v5 = YMMRegister() - ymm_v6 = YMMRegister() - ymm_v7 = YMMRegister() - - ymm_v8 = YMMRegister() - ymm_v9 = YMMRegister() - ymm_v10 = YMMRegister() - ymm_v11 = YMMRegister() - - ymm_v12 = YMMRegister() - ymm_v13 = YMMRegister() - ymm_v14 = YMMRegister() - ymm_v15 = YMMRegister() - - ymm_tmp0 = ymm_v12 - - # Allocate the neccecary stack space for the counter vector and two ymm - # registers that we will spill. - SUB(registers.rsp, 96) - mem_tmp0 = [registers.rsp+64] # (Stack) Scratch space. - mem_s3 = [registers.rsp+32] # (Stack) Working copy of s3. (8x) - mem_inc = [registers.rsp] # (Stack) Counter increment vector. - - # Increment the counter for one side of the state vector. - VPXOR(ymm_tmp0, ymm_tmp0, ymm_tmp0) - VMOVDQU(mem_inc, ymm_tmp0) - reg_tmp = GeneralPurposeRegister32() - MOV(reg_tmp, 0x00000001) - MOV([registers.rsp+16], reg_tmp) - VBROADCASTI128(ymm_v3, x_s3) - VPADDQ(ymm_v3, ymm_v3, [registers.rsp]) - VMOVDQA(mem_s3, ymm_v3) - - # As we process 2xN blocks at a time, so the counter increment for both - # sides of the state vector is 2. - MOV(reg_tmp, 0x00000002) - MOV([registers.rsp], reg_tmp) - MOV([registers.rsp+16], reg_tmp) - - out_write_even = Label() - out_write_odd = Label() - - # - # 8 blocks at a time. Ted Krovetz's avx2 code does not do this, but it's - # a decent gain despite all the pain... - # - - reg_rounds = GeneralPurposeRegister64() - - vector_loop8 = Loop() - SUB(reg_blocks, 8) - JB(vector_loop8.end) - with vector_loop8: - VBROADCASTI128(ymm_v0, x_s0) - VBROADCASTI128(ymm_v1, x_s1) - VBROADCASTI128(ymm_v2, x_s2) - VMOVDQA(ymm_v3, mem_s3) - - VMOVDQA(ymm_v4, ymm_v0) - VMOVDQA(ymm_v5, ymm_v1) - VMOVDQA(ymm_v6, ymm_v2) - VPADDQ(ymm_v7, ymm_v3, mem_inc) - - VMOVDQA(ymm_v8, ymm_v0) - VMOVDQA(ymm_v9, ymm_v1) - VMOVDQA(ymm_v10, ymm_v2) - VPADDQ(ymm_v11, ymm_v7, mem_inc) - - VMOVDQA(ymm_v12, ymm_v0) - VMOVDQA(ymm_v13, ymm_v1) - VMOVDQA(ymm_v14, ymm_v2) - VPADDQ(ymm_v15, ymm_v11, mem_inc) - - MOV(reg_rounds, 20) - rounds_loop8 = Loop() - with rounds_loop8: - # a += b; d ^= a; d = ROTW16(d); - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - ADD_avx2(ymm_v8, ymm_v9) - ADD_avx2(ymm_v12, ymm_v13) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - XOR_avx2(ymm_v11, ymm_v8) - XOR_avx2(ymm_v15, ymm_v12) - - VMOVDQA(mem_tmp0, ymm_tmp0) # Save - - ROTW16_avx2(ymm_tmp0, ymm_v3) - ROTW16_avx2(ymm_tmp0, ymm_v7) - ROTW16_avx2(ymm_tmp0, ymm_v11) - ROTW16_avx2(ymm_tmp0, ymm_v15) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - ADD_avx2(ymm_v10, ymm_v11) - ADD_avx2(ymm_v14, ymm_v15) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - XOR_avx2(ymm_v9, ymm_v10) - XOR_avx2(ymm_v13, ymm_v14) - ROTW12_avx2(ymm_tmp0, ymm_v1) - ROTW12_avx2(ymm_tmp0, ymm_v5) - ROTW12_avx2(ymm_tmp0, ymm_v9) - ROTW12_avx2(ymm_tmp0, ymm_v13) - - # a += b; d ^= a; d = ROTW8(d); - VMOVDQA(ymm_tmp0, mem_tmp0) # Restore - - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - ADD_avx2(ymm_v8, ymm_v9) - ADD_avx2(ymm_v12, ymm_v13) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - XOR_avx2(ymm_v11, ymm_v8) - XOR_avx2(ymm_v15, ymm_v12) - - VMOVDQA(mem_tmp0, ymm_tmp0) # Save - - ROTW8_avx2(ymm_tmp0, ymm_v3) - ROTW8_avx2(ymm_tmp0, ymm_v7) - ROTW8_avx2(ymm_tmp0, ymm_v11) - ROTW8_avx2(ymm_tmp0, ymm_v15) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - ADD_avx2(ymm_v10, ymm_v11) - ADD_avx2(ymm_v14, ymm_v15) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - XOR_avx2(ymm_v9, ymm_v10) - XOR_avx2(ymm_v13, ymm_v14) - ROTW7_avx2(ymm_tmp0, ymm_v1) - ROTW7_avx2(ymm_tmp0, ymm_v5) - ROTW7_avx2(ymm_tmp0, ymm_v9) - ROTW7_avx2(ymm_tmp0, ymm_v13) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x39) - VPSHUFD(ymm_v5, ymm_v5, 0x39) - VPSHUFD(ymm_v9, ymm_v9, 0x39) - VPSHUFD(ymm_v13, ymm_v13, 0x39) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v6, ymm_v6, 0x4e) - VPSHUFD(ymm_v10, ymm_v10, 0x4e) - VPSHUFD(ymm_v14, ymm_v14, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x93) - VPSHUFD(ymm_v7, ymm_v7, 0x93) - VPSHUFD(ymm_v11, ymm_v11, 0x93) - VPSHUFD(ymm_v15, ymm_v15, 0x93) - - # a += b; d ^= a; d = ROTW16(d); - VMOVDQA(ymm_tmp0, mem_tmp0) # Restore - - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - ADD_avx2(ymm_v8, ymm_v9) - ADD_avx2(ymm_v12, ymm_v13) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - XOR_avx2(ymm_v11, ymm_v8) - XOR_avx2(ymm_v15, ymm_v12) - - VMOVDQA(mem_tmp0, ymm_tmp0) # Save - - ROTW16_avx2(ymm_tmp0, ymm_v3) - ROTW16_avx2(ymm_tmp0, ymm_v7) - ROTW16_avx2(ymm_tmp0, ymm_v11) - ROTW16_avx2(ymm_tmp0, ymm_v15) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - ADD_avx2(ymm_v10, ymm_v11) - ADD_avx2(ymm_v14, ymm_v15) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - XOR_avx2(ymm_v9, ymm_v10) - XOR_avx2(ymm_v13, ymm_v14) - ROTW12_avx2(ymm_tmp0, ymm_v1) - ROTW12_avx2(ymm_tmp0, ymm_v5) - ROTW12_avx2(ymm_tmp0, ymm_v9) - ROTW12_avx2(ymm_tmp0, ymm_v13) - - # a += b; d ^= a; d = ROTW8(d); - VMOVDQA(ymm_tmp0, mem_tmp0) # Restore - - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - ADD_avx2(ymm_v8, ymm_v9) - ADD_avx2(ymm_v12, ymm_v13) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - XOR_avx2(ymm_v11, ymm_v8) - XOR_avx2(ymm_v15, ymm_v12) - - VMOVDQA(mem_tmp0, ymm_tmp0) # Save - - ROTW8_avx2(ymm_tmp0, ymm_v3) - ROTW8_avx2(ymm_tmp0, ymm_v7) - ROTW8_avx2(ymm_tmp0, ymm_v11) - ROTW8_avx2(ymm_tmp0, ymm_v15) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - ADD_avx2(ymm_v10, ymm_v11) - ADD_avx2(ymm_v14, ymm_v15) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - XOR_avx2(ymm_v9, ymm_v10) - XOR_avx2(ymm_v13, ymm_v14) - ROTW7_avx2(ymm_tmp0, ymm_v1) - ROTW7_avx2(ymm_tmp0, ymm_v5) - ROTW7_avx2(ymm_tmp0, ymm_v9) - ROTW7_avx2(ymm_tmp0, ymm_v13) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x93) - VPSHUFD(ymm_v5, ymm_v5, 0x93) - VPSHUFD(ymm_v9, ymm_v9, 0x93) - VPSHUFD(ymm_v13, ymm_v13, 0x93) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v6, ymm_v6, 0x4e) - VPSHUFD(ymm_v10, ymm_v10, 0x4e) - VPSHUFD(ymm_v14, ymm_v14, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x39) - VPSHUFD(ymm_v7, ymm_v7, 0x39) - VPSHUFD(ymm_v11, ymm_v11, 0x39) - VPSHUFD(ymm_v15, ymm_v15, 0x39) - - VMOVDQA(ymm_tmp0, mem_tmp0) # Restore - - SUB(reg_rounds, 2) - JNZ(rounds_loop8.begin) - - # ymm_v12 is in mem_tmp0 and is current.... - - # XXX: I assume VBROADCASTI128 is about as fast as VMOVDQA.... - VBROADCASTI128(ymm_tmp0, x_s0) - ADD_avx2(ymm_v0, ymm_tmp0) - ADD_avx2(ymm_v4, ymm_tmp0) - ADD_avx2(ymm_v8, ymm_tmp0) - ADD_avx2(ymm_tmp0, mem_tmp0) - VMOVDQA(mem_tmp0, ymm_tmp0) - - VBROADCASTI128(ymm_tmp0, x_s1) - ADD_avx2(ymm_v1, ymm_tmp0) - ADD_avx2(ymm_v5, ymm_tmp0) - ADD_avx2(ymm_v9, ymm_tmp0) - ADD_avx2(ymm_v13, ymm_tmp0) - - VBROADCASTI128(ymm_tmp0, x_s2) - ADD_avx2(ymm_v2, ymm_tmp0) - ADD_avx2(ymm_v6, ymm_tmp0) - ADD_avx2(ymm_v10, ymm_tmp0) - ADD_avx2(ymm_v14, ymm_tmp0) - - ADD_avx2(ymm_v3, mem_s3) - WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) - VMOVDQA(ymm_v3, mem_s3) - ADD_avx2(ymm_v3, mem_inc) - - ADD_avx2(ymm_v7, ymm_v3) - WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) - ADD_avx2(ymm_v3, mem_inc) - - ADD_avx2(ymm_v11, ymm_v3) - WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 256, ymm_v8, ymm_v9, ymm_v10, ymm_v11) - ADD_avx2(ymm_v3, mem_inc) - - VMOVDQA(ymm_v12, mem_tmp0) - ADD_avx2(ymm_v15, ymm_v3) - WriteXor_avx2(ymm_v0, reg_inp, reg_outp, 384, ymm_v12, ymm_v13, ymm_v14, ymm_v15) - ADD_avx2(ymm_v3, mem_inc) - - VMOVDQA(mem_s3, ymm_v3) - - ADD(reg_inp, 8 * 64) - ADD(reg_outp, 8 * 64) - - SUB(reg_blocks, 8) - JAE(vector_loop8.begin) - - # ymm_v3 contains a current copy of mem_s3 either from when it was built, - # or because the loop updates it. Copy this before we mess with the block - # counter in case we need to write it back and return. - ymm_s3 = ymm_v11 - VMOVDQA(ymm_s3, ymm_v3) - - ADD(reg_blocks, 8) - JZ(out_write_even) - - # We now actually can do everything in registers. - ymm_s0 = ymm_v8 - VBROADCASTI128(ymm_s0, x_s0) - ymm_s1 = ymm_v9 - VBROADCASTI128(ymm_s1, x_s1) - ymm_s2 = ymm_v10 - VBROADCASTI128(ymm_s2, x_s2) - ymm_inc = ymm_v14 - VMOVDQA(ymm_inc, mem_inc) - - # - # 4 blocks at a time. - # - - process_2_blocks = Label() - SUB(reg_blocks, 4) - JB(process_2_blocks) # < 4 blocks remaining. - - VMOVDQA(ymm_v0, ymm_s0) - VMOVDQA(ymm_v1, ymm_s1) - VMOVDQA(ymm_v2, ymm_s2) - VMOVDQA(ymm_v3, ymm_s3) - - VMOVDQA(ymm_v4, ymm_v0) - VMOVDQA(ymm_v5, ymm_v1) - VMOVDQA(ymm_v6, ymm_v2) - VPADDQ(ymm_v7, ymm_v3, ymm_inc) - - MOV(reg_rounds, 20) - rounds_loop4 = Loop() - with rounds_loop4: - # a += b; d ^= a; d = ROTW16(d); - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - ROTW16_avx2(ymm_tmp0, ymm_v3) - ROTW16_avx2(ymm_tmp0, ymm_v7) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - ROTW12_avx2(ymm_tmp0, ymm_v1) - ROTW12_avx2(ymm_tmp0, ymm_v5) - - # a += b; d ^= a; d = ROTW8(d); - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - ROTW8_avx2(ymm_tmp0, ymm_v3) - ROTW8_avx2(ymm_tmp0, ymm_v7) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - ROTW7_avx2(ymm_tmp0, ymm_v1) - ROTW7_avx2(ymm_tmp0, ymm_v5) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x39) - VPSHUFD(ymm_v5, ymm_v5, 0x39) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v6, ymm_v6, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x93) - VPSHUFD(ymm_v7, ymm_v7, 0x93) - - # a += b; d ^= a; d = ROTW16(d); - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - ROTW16_avx2(ymm_tmp0, ymm_v3) - ROTW16_avx2(ymm_tmp0, ymm_v7) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - ROTW12_avx2(ymm_tmp0, ymm_v1) - ROTW12_avx2(ymm_tmp0, ymm_v5) - - # a += b; d ^= a; d = ROTW8(d); - ADD_avx2(ymm_v0, ymm_v1) - ADD_avx2(ymm_v4, ymm_v5) - XOR_avx2(ymm_v3, ymm_v0) - XOR_avx2(ymm_v7, ymm_v4) - ROTW8_avx2(ymm_tmp0, ymm_v3) - ROTW8_avx2(ymm_tmp0, ymm_v7) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - ADD_avx2(ymm_v6, ymm_v7) - XOR_avx2(ymm_v1, ymm_v2) - XOR_avx2(ymm_v5, ymm_v6) - ROTW7_avx2(ymm_tmp0, ymm_v1) - ROTW7_avx2(ymm_tmp0, ymm_v5) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x93) - VPSHUFD(ymm_v5, ymm_v5, 0x93) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v6, ymm_v6, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x39) - VPSHUFD(ymm_v7, ymm_v7, 0x39) - - SUB(reg_rounds, 2) - JNZ(rounds_loop4.begin) - - ADD_avx2(ymm_v0, ymm_s0) - ADD_avx2(ymm_v1, ymm_s1) - ADD_avx2(ymm_v2, ymm_s2) - ADD_avx2(ymm_v3, ymm_s3) - WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 0, ymm_v0, ymm_v1, ymm_v2, ymm_v3) - ADD_avx2(ymm_s3, ymm_inc) - - ADD_avx2(ymm_v4, ymm_s0) - ADD_avx2(ymm_v5, ymm_s1) - ADD_avx2(ymm_v6, ymm_s2) - ADD_avx2(ymm_v7, ymm_s3) - WriteXor_avx2(ymm_tmp0, reg_inp, reg_outp, 128, ymm_v4, ymm_v5, ymm_v6, ymm_v7) - ADD_avx2(ymm_s3, ymm_inc) - - ADD(reg_inp, 4 * 64) - ADD(reg_outp, 4 * 64) - SUB(reg_blocks, 4) - - LABEL(process_2_blocks) - ADD(reg_blocks, 4) - JZ(out_write_even) # 0 blocks left. - - # - # 2/1 blocks at a time. The two codepaths are unified because - # with AVX2 we do 2 blocks at a time anyway, and this only gets called - # if 3/2/1 blocks are remaining, so the extra branches don't hurt that - # much. - # - - vector_loop2 = Loop() - with vector_loop2: - VMOVDQA(ymm_v0, ymm_s0) - VMOVDQA(ymm_v1, ymm_s1) - VMOVDQA(ymm_v2, ymm_s2) - VMOVDQA(ymm_v3, ymm_s3) - - MOV(reg_rounds, 20) - rounds_loop2 = Loop() - with rounds_loop2: - # a += b; d ^= a; d = ROTW16(d); - ADD_avx2(ymm_v0, ymm_v1) - XOR_avx2(ymm_v3, ymm_v0) - ROTW16_avx2(ymm_tmp0, ymm_v3) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - XOR_avx2(ymm_v1, ymm_v2) - ROTW12_avx2(ymm_tmp0, ymm_v1) - - # a += b; d ^= a; d = ROTW8(d); - ADD_avx2(ymm_v0, ymm_v1) - XOR_avx2(ymm_v3, ymm_v0) - ROTW8_avx2(ymm_tmp0, ymm_v3) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - XOR_avx2(ymm_v1, ymm_v2) - ROTW7_avx2(ymm_tmp0, ymm_v1) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x39) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x93) - - # a += b; d ^= a; d = ROTW16(d); - ADD_avx2(ymm_v0, ymm_v1) - XOR_avx2(ymm_v3, ymm_v0) - ROTW16_avx2(ymm_tmp0, ymm_v3) - - # c += d; b ^= c; b = ROTW12(b); - ADD_avx2(ymm_v2, ymm_v3) - XOR_avx2(ymm_v1, ymm_v2) - ROTW12_avx2(ymm_tmp0, ymm_v1) - - # a += b; d ^= a; d = ROTW8(d); - ADD_avx2(ymm_v0, ymm_v1) - XOR_avx2(ymm_v3, ymm_v0) - ROTW8_avx2(ymm_tmp0, ymm_v3) - - # c += d; b ^= c; b = ROTW7(b) - ADD_avx2(ymm_v2, ymm_v3) - XOR_avx2(ymm_v1, ymm_v2) - ROTW7_avx2(ymm_tmp0, ymm_v1) - - # b = ROTV1(b); c = ROTV2(c); d = ROTV3(d); - VPSHUFD(ymm_v1, ymm_v1, 0x93) - VPSHUFD(ymm_v2, ymm_v2, 0x4e) - VPSHUFD(ymm_v3, ymm_v3, 0x39) - - SUB(reg_rounds, 2) - JNZ(rounds_loop2.begin) - - ADD_avx2(ymm_v0, ymm_s0) - ADD_avx2(ymm_v1, ymm_s1) - ADD_avx2(ymm_v2, ymm_s2) - ADD_avx2(ymm_v3, ymm_s3) - - # XOR_WRITE(out+ 0, in+ 0, _mm256_permute2x128_si256(v0,v1,0x20)); - VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x20) - VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp]) - VMOVDQU([reg_outp], ymm_tmp0) - - # XOR_WRITE(out+32, in+32, _mm256_permute2x128_si256(v2,v3,0x20)); - VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x20) - VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+32]) - VMOVDQU([reg_outp+32], ymm_tmp0) - - SUB(reg_blocks, 1) - JZ(out_write_odd) - - ADD_avx2(ymm_s3, ymm_inc) - - # XOR_WRITE(out+64, in+64, _mm256_permute2x128_si256(v0,v1,0x31)); - VPERM2I128(ymm_tmp0, ymm_v0, ymm_v1, 0x31) - VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+64]) - VMOVDQU([reg_outp+64], ymm_tmp0) - - # XOR_WRITE(out+96, in+96, _mm256_permute2x128_si256(v2,v3,0x31)); - VPERM2I128(ymm_tmp0, ymm_v2, ymm_v3, 0x31) - VPXOR(ymm_tmp0, ymm_tmp0, [reg_inp+96]) - VMOVDQU([reg_outp+96], ymm_tmp0) - - SUB(reg_blocks, 1) - JZ(out_write_even) - - ADD(reg_inp, 2 * 64) - ADD(reg_outp, 2 * 64) - JMP(vector_loop2.begin) - - LABEL(out_write_odd) - VPERM2I128(ymm_s3, ymm_s3, ymm_s3, 0x01) # Odd number of blocks. - - LABEL(out_write_even) - VMOVDQU(x_s3, ymm_s3.as_xmm) # Write back ymm_s3 to x_v3 - - # Paranoia, cleanse the scratch space. - VPXOR(ymm_v0, ymm_v0, ymm_v0) - VMOVDQA(mem_tmp0, ymm_v0) - VMOVDQA(mem_s3, ymm_v0) - - # Clear all YMM (and XMM) registers. - VZEROALL() - - # Remove our stack allocation. - MOV(registers.rsp, reg_sp_save) - - RETURN() - -# -# CPUID -# - -cpuidParams = Argument(ptr(uint32_t)) - -with Function("cpuidAmd64", (cpuidParams,)): - reg_params = registers.r15 - LOAD.ARGUMENT(reg_params, cpuidParams) - - MOV(registers.eax, [reg_params]) - MOV(registers.ecx, [reg_params+8]) - - CPUID() - - MOV([reg_params], registers.eax) - MOV([reg_params+4], registers.ebx) - MOV([reg_params+8], registers.ecx) - MOV([reg_params+12], registers.edx) - - RETURN() - -# -# XGETBV (ECX = 0) -# - -xcrVec = Argument(ptr(uint32_t)) - -with Function("xgetbv0Amd64", (xcrVec,)): - reg_vec = GeneralPurposeRegister64() - - LOAD.ARGUMENT(reg_vec, xcrVec) - - XOR(registers.ecx, registers.ecx) - - XGETBV() - - MOV([reg_vec], registers.eax) - MOV([reg_vec+4], registers.edx) - - RETURN() diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s deleted file mode 100644 index e3792af..0000000 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_amd64.s +++ /dev/null @@ -1,1180 +0,0 @@ -// +build !noasm -// Generated by PeachPy 0.2.0 from chacha20_amd64.py - - -// func blocksAmd64SSE2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) -TEXT ·blocksAmd64SSE2(SB),4,$0-32 - MOVQ x+0(FP), AX - MOVQ inp+8(FP), BX - MOVQ outp+16(FP), CX - MOVQ nrBlocks+24(FP), DX - MOVQ SP, DI - ANDQ $18446744073709551584, SP - SUBQ $32, SP - PXOR X0, X0 - SUBQ $32, SP - MOVO X0, 0(SP) - MOVL $1, SI - MOVL SI, 0(SP) - SUBQ $4, DX - JCS vector_loop4_end -vector_loop4_begin: - MOVOU 0(AX), X0 - MOVOU 16(AX), X1 - MOVOU 32(AX), X2 - MOVOU 48(AX), X3 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - PADDQ 0(SP), X7 - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X7, X11 - PADDQ 0(SP), X11 - MOVO X0, X12 - MOVO X1, X13 - MOVO X2, X14 - MOVO X11, X15 - PADDQ 0(SP), X15 - MOVQ $20, SI -rounds_loop4_begin: - PADDL X1, X0 - PADDL X5, X4 - PADDL X9, X8 - PADDL X13, X12 - PXOR X0, X3 - PXOR X4, X7 - PXOR X8, X11 - PXOR X12, X15 - MOVO X12, 16(SP) - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $16, X12 - PSRLL $16, X7 - PXOR X12, X7 - MOVO X11, X12 - PSLLL $16, X12 - PSRLL $16, X11 - PXOR X12, X11 - MOVO X15, X12 - PSLLL $16, X12 - PSRLL $16, X15 - PXOR X12, X15 - PADDL X3, X2 - PADDL X7, X6 - PADDL X11, X10 - PADDL X15, X14 - PXOR X2, X1 - PXOR X6, X5 - PXOR X10, X9 - PXOR X14, X13 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $12, X12 - PSRLL $20, X5 - PXOR X12, X5 - MOVO X9, X12 - PSLLL $12, X12 - PSRLL $20, X9 - PXOR X12, X9 - MOVO X13, X12 - PSLLL $12, X12 - PSRLL $20, X13 - PXOR X12, X13 - MOVO 16(SP), X12 - PADDL X1, X0 - PADDL X5, X4 - PADDL X9, X8 - PADDL X13, X12 - PXOR X0, X3 - PXOR X4, X7 - PXOR X8, X11 - PXOR X12, X15 - MOVO X12, 16(SP) - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $8, X12 - PSRLL $24, X7 - PXOR X12, X7 - MOVO X11, X12 - PSLLL $8, X12 - PSRLL $24, X11 - PXOR X12, X11 - MOVO X15, X12 - PSLLL $8, X12 - PSRLL $24, X15 - PXOR X12, X15 - PADDL X3, X2 - PADDL X7, X6 - PADDL X11, X10 - PADDL X15, X14 - PXOR X2, X1 - PXOR X6, X5 - PXOR X10, X9 - PXOR X14, X13 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $7, X12 - PSRLL $25, X5 - PXOR X12, X5 - MOVO X9, X12 - PSLLL $7, X12 - PSRLL $25, X9 - PXOR X12, X9 - MOVO X13, X12 - PSLLL $7, X12 - PSRLL $25, X13 - PXOR X12, X13 - PSHUFL $57, X1, X1 - PSHUFL $57, X5, X5 - PSHUFL $57, X9, X9 - PSHUFL $57, X13, X13 - PSHUFL $78, X2, X2 - PSHUFL $78, X6, X6 - PSHUFL $78, X10, X10 - PSHUFL $78, X14, X14 - PSHUFL $147, X3, X3 - PSHUFL $147, X7, X7 - PSHUFL $147, X11, X11 - PSHUFL $147, X15, X15 - MOVO 16(SP), X12 - PADDL X1, X0 - PADDL X5, X4 - PADDL X9, X8 - PADDL X13, X12 - PXOR X0, X3 - PXOR X4, X7 - PXOR X8, X11 - PXOR X12, X15 - MOVO X12, 16(SP) - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $16, X12 - PSRLL $16, X7 - PXOR X12, X7 - MOVO X11, X12 - PSLLL $16, X12 - PSRLL $16, X11 - PXOR X12, X11 - MOVO X15, X12 - PSLLL $16, X12 - PSRLL $16, X15 - PXOR X12, X15 - PADDL X3, X2 - PADDL X7, X6 - PADDL X11, X10 - PADDL X15, X14 - PXOR X2, X1 - PXOR X6, X5 - PXOR X10, X9 - PXOR X14, X13 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $12, X12 - PSRLL $20, X5 - PXOR X12, X5 - MOVO X9, X12 - PSLLL $12, X12 - PSRLL $20, X9 - PXOR X12, X9 - MOVO X13, X12 - PSLLL $12, X12 - PSRLL $20, X13 - PXOR X12, X13 - MOVO 16(SP), X12 - PADDL X1, X0 - PADDL X5, X4 - PADDL X9, X8 - PADDL X13, X12 - PXOR X0, X3 - PXOR X4, X7 - PXOR X8, X11 - PXOR X12, X15 - MOVO X12, 16(SP) - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $8, X12 - PSRLL $24, X7 - PXOR X12, X7 - MOVO X11, X12 - PSLLL $8, X12 - PSRLL $24, X11 - PXOR X12, X11 - MOVO X15, X12 - PSLLL $8, X12 - PSRLL $24, X15 - PXOR X12, X15 - PADDL X3, X2 - PADDL X7, X6 - PADDL X11, X10 - PADDL X15, X14 - PXOR X2, X1 - PXOR X6, X5 - PXOR X10, X9 - PXOR X14, X13 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $7, X12 - PSRLL $25, X5 - PXOR X12, X5 - MOVO X9, X12 - PSLLL $7, X12 - PSRLL $25, X9 - PXOR X12, X9 - MOVO X13, X12 - PSLLL $7, X12 - PSRLL $25, X13 - PXOR X12, X13 - PSHUFL $147, X1, X1 - PSHUFL $147, X5, X5 - PSHUFL $147, X9, X9 - PSHUFL $147, X13, X13 - PSHUFL $78, X2, X2 - PSHUFL $78, X6, X6 - PSHUFL $78, X10, X10 - PSHUFL $78, X14, X14 - PSHUFL $57, X3, X3 - PSHUFL $57, X7, X7 - PSHUFL $57, X11, X11 - PSHUFL $57, X15, X15 - MOVO 16(SP), X12 - SUBQ $2, SI - JNE rounds_loop4_begin - MOVO X12, 16(SP) - PADDL 0(AX), X0 - PADDL 16(AX), X1 - PADDL 32(AX), X2 - PADDL 48(AX), X3 - MOVOU 0(BX), X12 - PXOR X0, X12 - MOVOU X12, 0(CX) - MOVOU 16(BX), X12 - PXOR X1, X12 - MOVOU X12, 16(CX) - MOVOU 32(BX), X12 - PXOR X2, X12 - MOVOU X12, 32(CX) - MOVOU 48(BX), X12 - PXOR X3, X12 - MOVOU X12, 48(CX) - MOVOU 48(AX), X3 - PADDQ 0(SP), X3 - PADDL 0(AX), X4 - PADDL 16(AX), X5 - PADDL 32(AX), X6 - PADDL X3, X7 - MOVOU 64(BX), X12 - PXOR X4, X12 - MOVOU X12, 64(CX) - MOVOU 80(BX), X12 - PXOR X5, X12 - MOVOU X12, 80(CX) - MOVOU 96(BX), X12 - PXOR X6, X12 - MOVOU X12, 96(CX) - MOVOU 112(BX), X12 - PXOR X7, X12 - MOVOU X12, 112(CX) - PADDQ 0(SP), X3 - PADDL 0(AX), X8 - PADDL 16(AX), X9 - PADDL 32(AX), X10 - PADDL X3, X11 - MOVOU 128(BX), X12 - PXOR X8, X12 - MOVOU X12, 128(CX) - MOVOU 144(BX), X12 - PXOR X9, X12 - MOVOU X12, 144(CX) - MOVOU 160(BX), X12 - PXOR X10, X12 - MOVOU X12, 160(CX) - MOVOU 176(BX), X12 - PXOR X11, X12 - MOVOU X12, 176(CX) - PADDQ 0(SP), X3 - MOVO 16(SP), X12 - PADDL 0(AX), X12 - PADDL 16(AX), X13 - PADDL 32(AX), X14 - PADDL X3, X15 - MOVOU 192(BX), X0 - PXOR X12, X0 - MOVOU X0, 192(CX) - MOVOU 208(BX), X0 - PXOR X13, X0 - MOVOU X0, 208(CX) - MOVOU 224(BX), X0 - PXOR X14, X0 - MOVOU X0, 224(CX) - MOVOU 240(BX), X0 - PXOR X15, X0 - MOVOU X0, 240(CX) - PADDQ 0(SP), X3 - MOVOU X3, 48(AX) - ADDQ $256, BX - ADDQ $256, CX - SUBQ $4, DX - JCC vector_loop4_begin -vector_loop4_end: - ADDQ $4, DX - JEQ out - MOVOU 0(AX), X8 - MOVOU 16(AX), X9 - MOVOU 32(AX), X10 - MOVOU 48(AX), X11 - MOVO 0(SP), X13 - SUBQ $2, DX - JCS process_1_block - MOVO X8, X0 - MOVO X9, X1 - MOVO X10, X2 - MOVO X11, X3 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - PADDQ X13, X7 - MOVQ $20, SI -rounds_loop2_begin: - PADDL X1, X0 - PADDL X5, X4 - PXOR X0, X3 - PXOR X4, X7 - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $16, X12 - PSRLL $16, X7 - PXOR X12, X7 - PADDL X3, X2 - PADDL X7, X6 - PXOR X2, X1 - PXOR X6, X5 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $12, X12 - PSRLL $20, X5 - PXOR X12, X5 - PADDL X1, X0 - PADDL X5, X4 - PXOR X0, X3 - PXOR X4, X7 - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $8, X12 - PSRLL $24, X7 - PXOR X12, X7 - PADDL X3, X2 - PADDL X7, X6 - PXOR X2, X1 - PXOR X6, X5 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $7, X12 - PSRLL $25, X5 - PXOR X12, X5 - PSHUFL $57, X1, X1 - PSHUFL $57, X5, X5 - PSHUFL $78, X2, X2 - PSHUFL $78, X6, X6 - PSHUFL $147, X3, X3 - PSHUFL $147, X7, X7 - PADDL X1, X0 - PADDL X5, X4 - PXOR X0, X3 - PXOR X4, X7 - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $16, X12 - PSRLL $16, X7 - PXOR X12, X7 - PADDL X3, X2 - PADDL X7, X6 - PXOR X2, X1 - PXOR X6, X5 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $12, X12 - PSRLL $20, X5 - PXOR X12, X5 - PADDL X1, X0 - PADDL X5, X4 - PXOR X0, X3 - PXOR X4, X7 - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - MOVO X7, X12 - PSLLL $8, X12 - PSRLL $24, X7 - PXOR X12, X7 - PADDL X3, X2 - PADDL X7, X6 - PXOR X2, X1 - PXOR X6, X5 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - MOVO X5, X12 - PSLLL $7, X12 - PSRLL $25, X5 - PXOR X12, X5 - PSHUFL $147, X1, X1 - PSHUFL $147, X5, X5 - PSHUFL $78, X2, X2 - PSHUFL $78, X6, X6 - PSHUFL $57, X3, X3 - PSHUFL $57, X7, X7 - SUBQ $2, SI - JNE rounds_loop2_begin - PADDL X8, X0 - PADDL X9, X1 - PADDL X10, X2 - PADDL X11, X3 - MOVOU 0(BX), X12 - PXOR X0, X12 - MOVOU X12, 0(CX) - MOVOU 16(BX), X12 - PXOR X1, X12 - MOVOU X12, 16(CX) - MOVOU 32(BX), X12 - PXOR X2, X12 - MOVOU X12, 32(CX) - MOVOU 48(BX), X12 - PXOR X3, X12 - MOVOU X12, 48(CX) - PADDQ X13, X11 - PADDL X8, X4 - PADDL X9, X5 - PADDL X10, X6 - PADDL X11, X7 - MOVOU 64(BX), X12 - PXOR X4, X12 - MOVOU X12, 64(CX) - MOVOU 80(BX), X12 - PXOR X5, X12 - MOVOU X12, 80(CX) - MOVOU 96(BX), X12 - PXOR X6, X12 - MOVOU X12, 96(CX) - MOVOU 112(BX), X12 - PXOR X7, X12 - MOVOU X12, 112(CX) - PADDQ X13, X11 - ADDQ $128, BX - ADDQ $128, CX - SUBQ $2, DX -process_1_block: - ADDQ $2, DX - JEQ out_serial - MOVO X8, X0 - MOVO X9, X1 - MOVO X10, X2 - MOVO X11, X3 - MOVQ $20, SI -rounds_loop1_begin: - PADDL X1, X0 - PXOR X0, X3 - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - PADDL X3, X2 - PXOR X2, X1 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - PADDL X1, X0 - PXOR X0, X3 - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - PADDL X3, X2 - PXOR X2, X1 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - PSHUFL $57, X1, X1 - PSHUFL $78, X2, X2 - PSHUFL $147, X3, X3 - PADDL X1, X0 - PXOR X0, X3 - MOVO X3, X12 - PSLLL $16, X12 - PSRLL $16, X3 - PXOR X12, X3 - PADDL X3, X2 - PXOR X2, X1 - MOVO X1, X12 - PSLLL $12, X12 - PSRLL $20, X1 - PXOR X12, X1 - PADDL X1, X0 - PXOR X0, X3 - MOVO X3, X12 - PSLLL $8, X12 - PSRLL $24, X3 - PXOR X12, X3 - PADDL X3, X2 - PXOR X2, X1 - MOVO X1, X12 - PSLLL $7, X12 - PSRLL $25, X1 - PXOR X12, X1 - PSHUFL $147, X1, X1 - PSHUFL $78, X2, X2 - PSHUFL $57, X3, X3 - SUBQ $2, SI - JNE rounds_loop1_begin - PADDL X8, X0 - PADDL X9, X1 - PADDL X10, X2 - PADDL X11, X3 - MOVOU 0(BX), X12 - PXOR X0, X12 - MOVOU X12, 0(CX) - MOVOU 16(BX), X12 - PXOR X1, X12 - MOVOU X12, 16(CX) - MOVOU 32(BX), X12 - PXOR X2, X12 - MOVOU X12, 32(CX) - MOVOU 48(BX), X12 - PXOR X3, X12 - MOVOU X12, 48(CX) - PADDQ X13, X11 -out_serial: - MOVOU X11, 48(AX) -out: - PXOR X0, X0 - MOVO X0, 16(SP) - MOVQ DI, SP - RET - -// func blocksAmd64AVX2(x *uint32, inp *uint8, outp *uint8, nrBlocks *uint) -TEXT ·blocksAmd64AVX2(SB),4,$0-32 - MOVQ x+0(FP), AX - MOVQ inp+8(FP), BX - MOVQ outp+16(FP), CX - MOVQ nrBlocks+24(FP), DX - MOVQ SP, DI - ANDQ $18446744073709551584, SP - SUBQ $32, SP - SUBQ $96, SP - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm0, ymm0, ymm0 - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x04; BYTE $0x24 // VMOVDQU [rsp], ymm0 - MOVL $1, SI - MOVL SI, 16(SP) - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x48; BYTE $0x30 // VBROADCASTI128 ymm1, [rax + 48] - BYTE $0xC5; BYTE $0xF5; BYTE $0xD4; BYTE $0x0C; BYTE $0x24 // VPADDQ ymm1, ymm1, [rsp] - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 - MOVL $2, SI - MOVL SI, 0(SP) - MOVL SI, 16(SP) - SUBQ $8, DX - JCS vector_loop8_end -vector_loop8_begin: - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x10 // VBROADCASTI128 ymm2, [rax] - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x10 // VBROADCASTI128 ymm3, [rax + 16] - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x60; BYTE $0x20 // VBROADCASTI128 ymm4, [rax + 32] - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 - BYTE $0xC5; BYTE $0x75; BYTE $0xD4; BYTE $0x04; BYTE $0x24 // VPADDQ ymm8, ymm1, [rsp] - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xCA // VMOVDQA ymm9, ymm2 - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xD3 // VMOVDQA ymm10, ymm3 - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xDC // VMOVDQA ymm11, ymm4 - BYTE $0xC5; BYTE $0x3D; BYTE $0xD4; BYTE $0x24; BYTE $0x24 // VPADDQ ymm12, ymm8, [rsp] - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xC2 // VMOVDQA ymm0, ymm2 - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xEB // VMOVDQA ymm13, ymm3 - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xF4 // VMOVDQA ymm14, ymm4 - BYTE $0xC5; BYTE $0x1D; BYTE $0xD4; BYTE $0x3C; BYTE $0x24 // VPADDQ ymm15, ymm12, [rsp] - MOVQ $20, SI -rounds_loop8_begin: - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 - BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 - BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 - BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 - BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 - BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 - BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 - BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 - BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 - BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 - BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 - BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 - BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 - BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 - BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x39 // VPSHUFD ymm10, ymm10, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x39 // VPSHUFD ymm13, ymm13, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x93 // VPSHUFD ymm12, ymm12, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x93 // VPSHUFD ymm15, ymm15, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x10 // VPSLLD ymm0, ymm12, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x10 // VPSRLD ymm12, ymm12, 16 - BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x10 // VPSLLD ymm0, ymm15, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x10 // VPSRLD ymm15, ymm15, 16 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 - BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 - BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x0C // VPSLLD ymm0, ymm10, 12 - BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x14 // VPSRLD ymm10, ymm10, 20 - BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x0C // VPSLLD ymm0, ymm13, 12 - BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x14 // VPSRLD ymm13, ymm13, 20 - BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC4; BYTE $0x41; BYTE $0x35; BYTE $0xFE; BYTE $0xCA // VPADDD ymm9, ymm9, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0xFE; BYTE $0xC5 // VPADDD ymm0, ymm0, ymm13 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xEF; BYTE $0xE1 // VPXOR ymm12, ymm12, ymm9 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF4; BYTE $0x08 // VPSLLD ymm0, ymm12, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x1D; BYTE $0x72; BYTE $0xD4; BYTE $0x18 // VPSRLD ymm12, ymm12, 24 - BYTE $0xC5; BYTE $0x1D; BYTE $0xEF; BYTE $0xE0 // VPXOR ymm12, ymm12, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF7; BYTE $0x08 // VPSLLD ymm0, ymm15, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x05; BYTE $0x72; BYTE $0xD7; BYTE $0x18 // VPSRLD ymm15, ymm15, 24 - BYTE $0xC5; BYTE $0x05; BYTE $0xEF; BYTE $0xF8 // VPXOR ymm15, ymm15, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC4; BYTE $0x41; BYTE $0x25; BYTE $0xFE; BYTE $0xDC // VPADDD ymm11, ymm11, ymm12 - BYTE $0xC4; BYTE $0x41; BYTE $0x0D; BYTE $0xFE; BYTE $0xF7 // VPADDD ymm14, ymm14, ymm15 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC4; BYTE $0x41; BYTE $0x2D; BYTE $0xEF; BYTE $0xD3 // VPXOR ymm10, ymm10, ymm11 - BYTE $0xC4; BYTE $0x41; BYTE $0x15; BYTE $0xEF; BYTE $0xEE // VPXOR ymm13, ymm13, ymm14 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF2; BYTE $0x07 // VPSLLD ymm0, ymm10, 7 - BYTE $0xC4; BYTE $0xC1; BYTE $0x2D; BYTE $0x72; BYTE $0xD2; BYTE $0x19 // VPSRLD ymm10, ymm10, 25 - BYTE $0xC5; BYTE $0x2D; BYTE $0xEF; BYTE $0xD0 // VPXOR ymm10, ymm10, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF5; BYTE $0x07 // VPSLLD ymm0, ymm13, 7 - BYTE $0xC4; BYTE $0xC1; BYTE $0x15; BYTE $0x72; BYTE $0xD5; BYTE $0x19 // VPSRLD ymm13, ymm13, 25 - BYTE $0xC5; BYTE $0x15; BYTE $0xEF; BYTE $0xE8 // VPXOR ymm13, ymm13, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xD2; BYTE $0x93 // VPSHUFD ymm10, ymm10, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xED; BYTE $0x93 // VPSHUFD ymm13, ymm13, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xDB; BYTE $0x4E // VPSHUFD ymm11, ymm11, 78 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xF6; BYTE $0x4E // VPSHUFD ymm14, ymm14, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xE4; BYTE $0x39 // VPSHUFD ymm12, ymm12, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xFF; BYTE $0x39 // VPSHUFD ymm15, ymm15, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] - SUBQ $2, SI - JNE rounds_loop8_begin - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x00 // VBROADCASTI128 ymm0, [rax] - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm2, ymm2, ymm0 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm5, ymm5, ymm0 - BYTE $0xC5; BYTE $0x35; BYTE $0xFE; BYTE $0xC8 // VPADDD ymm9, ymm9, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0xFE; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VPADDD ymm0, ymm0, [rsp + 64] - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm0 - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x10 // VBROADCASTI128 ymm0, [rax + 16] - BYTE $0xC5; BYTE $0xE5; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xCD; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm6, ymm6, ymm0 - BYTE $0xC5; BYTE $0x2D; BYTE $0xFE; BYTE $0xD0 // VPADDD ymm10, ymm10, ymm0 - BYTE $0xC5; BYTE $0x15; BYTE $0xFE; BYTE $0xE8 // VPADDD ymm13, ymm13, ymm0 - BYTE $0xC4; BYTE $0xE2; BYTE $0x7D; BYTE $0x5A; BYTE $0x40; BYTE $0x20 // VBROADCASTI128 ymm0, [rax + 32] - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE0 // VPADDD ymm4, ymm4, ymm0 - BYTE $0xC5; BYTE $0xC5; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm0 - BYTE $0xC5; BYTE $0x25; BYTE $0xFE; BYTE $0xD8 // VPADDD ymm11, ymm11, ymm0 - BYTE $0xC5; BYTE $0x0D; BYTE $0xFE; BYTE $0xF0 // VPADDD ymm14, ymm14, ymm0 - BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VPADDD ymm1, ymm1, [rsp + 32] - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA ymm1, [rsp + 32] - BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] - BYTE $0xC5; BYTE $0x3D; BYTE $0xFE; BYTE $0xC1 // VPADDD ymm8, ymm8, ymm1 - BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 - BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] - BYTE $0xC5; BYTE $0x1D; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm12, ymm12, ymm1 - BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x20 // VPERM2I128 ymm0, ymm9, ymm10, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 256] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x00; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 256], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x20 // VPERM2I128 ymm0, ymm11, ymm12, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 288] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x20; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 288], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x35; BYTE $0x46; BYTE $0xC2; BYTE $0x31 // VPERM2I128 ymm0, ymm9, ymm10, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 320] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x40; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 320], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x25; BYTE $0x46; BYTE $0xC4; BYTE $0x31 // VPERM2I128 ymm0, ymm11, ymm12, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 352] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x60; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 352], ymm0 - BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0x44; BYTE $0x24; BYTE $0x40 // VMOVDQA ymm0, [rsp + 64] - BYTE $0xC5; BYTE $0x05; BYTE $0xFE; BYTE $0xF9 // VPADDD ymm15, ymm15, ymm1 - BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x20 // VPERM2I128 ymm2, ymm0, ymm13, 32 - BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 384] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0x80; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 384], ymm2 - BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x20 // VPERM2I128 ymm2, ymm14, ymm15, 32 - BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 416] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xA0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 416], ymm2 - BYTE $0xC4; BYTE $0xC3; BYTE $0x7D; BYTE $0x46; BYTE $0xD5; BYTE $0x31 // VPERM2I128 ymm2, ymm0, ymm13, 49 - BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 448] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xC0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 448], ymm2 - BYTE $0xC4; BYTE $0xC3; BYTE $0x0D; BYTE $0x46; BYTE $0xD7; BYTE $0x31 // VPERM2I128 ymm2, ymm14, ymm15, 49 - BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0x93; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VPXOR ymm2, ymm2, [rbx + 480] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x91; BYTE $0xE0; BYTE $0x01; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 480], ymm2 - BYTE $0xC5; BYTE $0xF5; BYTE $0xFE; BYTE $0x0C; BYTE $0x24 // VPADDD ymm1, ymm1, [rsp] - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x4C; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm1 - ADDQ $512, BX - ADDQ $512, CX - SUBQ $8, DX - JCC vector_loop8_begin -vector_loop8_end: - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0xE1 // VMOVDQA ymm12, ymm1 - ADDQ $8, DX - JEQ out_write_even - BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x08 // VBROADCASTI128 ymm9, [rax] - BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x50; BYTE $0x10 // VBROADCASTI128 ymm10, [rax + 16] - BYTE $0xC4; BYTE $0x62; BYTE $0x7D; BYTE $0x5A; BYTE $0x58; BYTE $0x20 // VBROADCASTI128 ymm11, [rax + 32] - BYTE $0xC5; BYTE $0x7D; BYTE $0x6F; BYTE $0x34; BYTE $0x24 // VMOVDQA ymm14, [rsp] - SUBQ $4, DX - JCS process_2_blocks - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xEA // VMOVDQA ymm5, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xF3 // VMOVDQA ymm6, ymm3 - BYTE $0xC5; BYTE $0xFD; BYTE $0x6F; BYTE $0xFC // VMOVDQA ymm7, ymm4 - BYTE $0xC4; BYTE $0x41; BYTE $0x75; BYTE $0xD4; BYTE $0xC6 // VPADDQ ymm8, ymm1, ymm14 - MOVQ $20, SI -rounds_loop4_begin: - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x39 // VPSHUFD ymm6, ymm6, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x93 // VPSHUFD ymm8, ymm8, 147 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x10 // VPSLLD ymm0, ymm8, 16 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x10 // VPSRLD ymm8, ymm8, 16 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x0C // VPSLLD ymm0, ymm6, 12 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x14 // VPSRLD ymm6, ymm6, 20 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xD5; BYTE $0xFE; BYTE $0xEE // VPADDD ymm5, ymm5, ymm6 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC5 // VPXOR ymm8, ymm8, ymm5 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC4; BYTE $0xC1; BYTE $0x7D; BYTE $0x72; BYTE $0xF0; BYTE $0x08 // VPSLLD ymm0, ymm8, 8 - BYTE $0xC4; BYTE $0xC1; BYTE $0x3D; BYTE $0x72; BYTE $0xD0; BYTE $0x18 // VPSRLD ymm8, ymm8, 24 - BYTE $0xC5; BYTE $0x3D; BYTE $0xEF; BYTE $0xC0 // VPXOR ymm8, ymm8, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xF8 // VPADDD ymm7, ymm7, ymm8 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF7 // VPXOR ymm6, ymm6, ymm7 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF6; BYTE $0x07 // VPSLLD ymm0, ymm6, 7 - BYTE $0xC5; BYTE $0xCD; BYTE $0x72; BYTE $0xD6; BYTE $0x19 // VPSRLD ymm6, ymm6, 25 - BYTE $0xC5; BYTE $0xCD; BYTE $0xEF; BYTE $0xF0 // VPXOR ymm6, ymm6, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xF6; BYTE $0x93 // VPSHUFD ymm6, ymm6, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xFF; BYTE $0x4E // VPSHUFD ymm7, ymm7, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 - BYTE $0xC4; BYTE $0x41; BYTE $0x7D; BYTE $0x70; BYTE $0xC0; BYTE $0x39 // VPSHUFD ymm8, ymm8, 57 - SUBQ $2, SI - JNE rounds_loop4_begin - BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 - BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 - BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 - BYTE $0xC4; BYTE $0xC1; BYTE $0x55; BYTE $0xFE; BYTE $0xE9 // VPADDD ymm5, ymm5, ymm9 - BYTE $0xC4; BYTE $0xC1; BYTE $0x4D; BYTE $0xFE; BYTE $0xF2 // VPADDD ymm6, ymm6, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x45; BYTE $0xFE; BYTE $0xFB // VPADDD ymm7, ymm7, ymm11 - BYTE $0xC4; BYTE $0x41; BYTE $0x3D; BYTE $0xFE; BYTE $0xC4 // VPADDD ymm8, ymm8, ymm12 - BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x20 // VPERM2I128 ymm0, ymm5, ymm6, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 128] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0x80; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 128], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x20 // VPERM2I128 ymm0, ymm7, ymm8, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 160] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xA0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 160], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x55; BYTE $0x46; BYTE $0xC6; BYTE $0x31 // VPERM2I128 ymm0, ymm5, ymm6, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 192] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xC0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 192], ymm0 - BYTE $0xC4; BYTE $0xC3; BYTE $0x45; BYTE $0x46; BYTE $0xC0; BYTE $0x31 // VPERM2I128 ymm0, ymm7, ymm8, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x83; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VPXOR ymm0, ymm0, [rbx + 224] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x81; BYTE $0xE0; BYTE $0x00; BYTE $0x00; BYTE $0x00 // VMOVDQU [rcx + 224], ymm0 - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 - ADDQ $256, BX - ADDQ $256, CX - SUBQ $4, DX -process_2_blocks: - ADDQ $4, DX - JEQ out_write_even -vector_loop2_begin: - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xCA // VMOVDQA ymm2, ymm9 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xD3 // VMOVDQA ymm3, ymm10 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xDC // VMOVDQA ymm4, ymm11 - BYTE $0xC5; BYTE $0x7D; BYTE $0x7F; BYTE $0xE1 // VMOVDQA ymm1, ymm12 - MOVQ $20, SI -rounds_loop2_begin: - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x39 // VPSHUFD ymm3, ymm3, 57 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x93 // VPSHUFD ymm1, ymm1, 147 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x10 // VPSLLD ymm0, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x10 // VPSRLD ymm1, ymm1, 16 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x0C // VPSLLD ymm0, ymm3, 12 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x14 // VPSRLD ymm3, ymm3, 20 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xED; BYTE $0xFE; BYTE $0xD3 // VPADDD ymm2, ymm2, ymm3 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xCA // VPXOR ymm1, ymm1, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF1; BYTE $0x08 // VPSLLD ymm0, ymm1, 8 - BYTE $0xC5; BYTE $0xF5; BYTE $0x72; BYTE $0xD1; BYTE $0x18 // VPSRLD ymm1, ymm1, 24 - BYTE $0xC5; BYTE $0xF5; BYTE $0xEF; BYTE $0xC8 // VPXOR ymm1, ymm1, ymm0 - BYTE $0xC5; BYTE $0xDD; BYTE $0xFE; BYTE $0xE1 // VPADDD ymm4, ymm4, ymm1 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xDC // VPXOR ymm3, ymm3, ymm4 - BYTE $0xC5; BYTE $0xFD; BYTE $0x72; BYTE $0xF3; BYTE $0x07 // VPSLLD ymm0, ymm3, 7 - BYTE $0xC5; BYTE $0xE5; BYTE $0x72; BYTE $0xD3; BYTE $0x19 // VPSRLD ymm3, ymm3, 25 - BYTE $0xC5; BYTE $0xE5; BYTE $0xEF; BYTE $0xD8 // VPXOR ymm3, ymm3, ymm0 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xDB; BYTE $0x93 // VPSHUFD ymm3, ymm3, 147 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xE4; BYTE $0x4E // VPSHUFD ymm4, ymm4, 78 - BYTE $0xC5; BYTE $0xFD; BYTE $0x70; BYTE $0xC9; BYTE $0x39 // VPSHUFD ymm1, ymm1, 57 - SUBQ $2, SI - JNE rounds_loop2_begin - BYTE $0xC4; BYTE $0xC1; BYTE $0x6D; BYTE $0xFE; BYTE $0xD1 // VPADDD ymm2, ymm2, ymm9 - BYTE $0xC4; BYTE $0xC1; BYTE $0x65; BYTE $0xFE; BYTE $0xDA // VPADDD ymm3, ymm3, ymm10 - BYTE $0xC4; BYTE $0xC1; BYTE $0x5D; BYTE $0xFE; BYTE $0xE3 // VPADDD ymm4, ymm4, ymm11 - BYTE $0xC4; BYTE $0xC1; BYTE $0x75; BYTE $0xFE; BYTE $0xCC // VPADDD ymm1, ymm1, ymm12 - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x20 // VPERM2I128 ymm0, ymm2, ymm3, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x03 // VPXOR ymm0, ymm0, [rbx] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x01 // VMOVDQU [rcx], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x20 // VPERM2I128 ymm0, ymm4, ymm1, 32 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x20 // VPXOR ymm0, ymm0, [rbx + 32] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x20 // VMOVDQU [rcx + 32], ymm0 - SUBQ $1, DX - JEQ out_write_odd - BYTE $0xC4; BYTE $0x41; BYTE $0x1D; BYTE $0xFE; BYTE $0xE6 // VPADDD ymm12, ymm12, ymm14 - BYTE $0xC4; BYTE $0xE3; BYTE $0x6D; BYTE $0x46; BYTE $0xC3; BYTE $0x31 // VPERM2I128 ymm0, ymm2, ymm3, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x40 // VPXOR ymm0, ymm0, [rbx + 64] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x40 // VMOVDQU [rcx + 64], ymm0 - BYTE $0xC4; BYTE $0xE3; BYTE $0x5D; BYTE $0x46; BYTE $0xC1; BYTE $0x31 // VPERM2I128 ymm0, ymm4, ymm1, 49 - BYTE $0xC5; BYTE $0xFD; BYTE $0xEF; BYTE $0x43; BYTE $0x60 // VPXOR ymm0, ymm0, [rbx + 96] - BYTE $0xC5; BYTE $0xFE; BYTE $0x7F; BYTE $0x41; BYTE $0x60 // VMOVDQU [rcx + 96], ymm0 - SUBQ $1, DX - JEQ out_write_even - ADDQ $128, BX - ADDQ $128, CX - JMP vector_loop2_begin -out_write_odd: - BYTE $0xC4; BYTE $0x43; BYTE $0x1D; BYTE $0x46; BYTE $0xE4; BYTE $0x01 // VPERM2I128 ymm12, ymm12, ymm12, 1 -out_write_even: - BYTE $0xC5; BYTE $0x7A; BYTE $0x7F; BYTE $0x60; BYTE $0x30 // VMOVDQU [rax + 48], xmm12 - BYTE $0xC5; BYTE $0xED; BYTE $0xEF; BYTE $0xD2 // VPXOR ymm2, ymm2, ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x40 // VMOVDQA [rsp + 64], ymm2 - BYTE $0xC5; BYTE $0xFD; BYTE $0x7F; BYTE $0x54; BYTE $0x24; BYTE $0x20 // VMOVDQA [rsp + 32], ymm2 - BYTE $0xC5; BYTE $0xFC; BYTE $0x77 // VZEROALL - MOVQ DI, SP - RET - -// func cpuidAmd64(cpuidParams *uint32) -TEXT ·cpuidAmd64(SB),4,$0-8 - MOVQ cpuidParams+0(FP), R15 - MOVL 0(R15), AX - MOVL 8(R15), CX - CPUID - MOVL AX, 0(R15) - MOVL BX, 4(R15) - MOVL CX, 8(R15) - MOVL DX, 12(R15) - RET - -// func xgetbv0Amd64(xcrVec *uint32) -TEXT ·xgetbv0Amd64(SB),4,$0-8 - MOVQ xcrVec+0(FP), BX - XORL CX, CX - BYTE $0x0F; BYTE $0x01; BYTE $0xD0 // XGETBV - MOVL AX, 0(BX) - MOVL DX, 4(BX) - RET diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go deleted file mode 100644 index fcdc8c6..0000000 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref.go +++ /dev/null @@ -1,394 +0,0 @@ -// chacha20_ref.go - Reference ChaCha20. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to chacha20, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// +build !go1.9 - -package chacha20 - -import ( - "encoding/binary" - "math" - "unsafe" -) - -func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { - if isIetf { - var totalBlocks uint64 - totalBlocks = uint64(x[12]) + uint64(nrBlocks) - if totalBlocks > math.MaxUint32 { - panic("chacha20: Exceeded keystream per nonce limit") - } - } - - // This routine ignores x[0]...x[4] in favor the const values since it's - // ever so slightly faster. - - for n := 0; n < nrBlocks; n++ { - x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 - x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] - - for i := chachaRounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = (x12 << 16) | (x12 >> 16) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 12) | (x4 >> 20) - x0 += x4 - x12 ^= x0 - x12 = (x12 << 8) | (x12 >> 24) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 7) | (x4 >> 25) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 16) | (x13 >> 16) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 12) | (x5 >> 20) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 8) | (x13 >> 24) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 7) | (x5 >> 25) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 16) | (x14 >> 16) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 12) | (x6 >> 20) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 8) | (x14 >> 24) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 7) | (x6 >> 25) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 16) | (x15 >> 16) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 12) | (x7 >> 20) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 8) | (x15 >> 24) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 7) | (x7 >> 25) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 16) | (x15 >> 16) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 12) | (x5 >> 20) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 8) | (x15 >> 24) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 7) | (x5 >> 25) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 16) | (x12 >> 16) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 12) | (x6 >> 20) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 8) | (x12 >> 24) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 7) | (x6 >> 25) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 16) | (x13 >> 16) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 12) | (x7 >> 20) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 8) | (x13 >> 24) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 7) | (x7 >> 25) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 16) | (x14 >> 16) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 12) | (x4 >> 20) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 8) | (x14 >> 24) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 7) | (x4 >> 25) - } - - // On amd64 at least, this is a rather big boost. - if useUnsafe { - if in != nil { - inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) - outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) - outArr[0] = inArr[0] ^ (x0 + sigma0) - outArr[1] = inArr[1] ^ (x1 + sigma1) - outArr[2] = inArr[2] ^ (x2 + sigma2) - outArr[3] = inArr[3] ^ (x3 + sigma3) - outArr[4] = inArr[4] ^ (x4 + x[4]) - outArr[5] = inArr[5] ^ (x5 + x[5]) - outArr[6] = inArr[6] ^ (x6 + x[6]) - outArr[7] = inArr[7] ^ (x7 + x[7]) - outArr[8] = inArr[8] ^ (x8 + x[8]) - outArr[9] = inArr[9] ^ (x9 + x[9]) - outArr[10] = inArr[10] ^ (x10 + x[10]) - outArr[11] = inArr[11] ^ (x11 + x[11]) - outArr[12] = inArr[12] ^ (x12 + x[12]) - outArr[13] = inArr[13] ^ (x13 + x[13]) - outArr[14] = inArr[14] ^ (x14 + x[14]) - outArr[15] = inArr[15] ^ (x15 + x[15]) - } else { - outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) - outArr[0] = x0 + sigma0 - outArr[1] = x1 + sigma1 - outArr[2] = x2 + sigma2 - outArr[3] = x3 + sigma3 - outArr[4] = x4 + x[4] - outArr[5] = x5 + x[5] - outArr[6] = x6 + x[6] - outArr[7] = x7 + x[7] - outArr[8] = x8 + x[8] - outArr[9] = x9 + x[9] - outArr[10] = x10 + x[10] - outArr[11] = x11 + x[11] - outArr[12] = x12 + x[12] - outArr[13] = x13 + x[13] - outArr[14] = x14 + x[14] - outArr[15] = x15 + x[15] - } - } else { - // Slow path, either the architecture cares about alignment, or is not little endian. - x0 += sigma0 - x1 += sigma1 - x2 += sigma2 - x3 += sigma3 - x4 += x[4] - x5 += x[5] - x6 += x[6] - x7 += x[7] - x8 += x[8] - x9 += x[9] - x10 += x[10] - x11 += x[11] - x12 += x[12] - x13 += x[13] - x14 += x[14] - x15 += x[15] - if in != nil { - binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) - binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) - binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) - binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) - binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) - binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) - binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) - binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) - binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) - binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) - binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) - binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) - binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) - binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) - binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) - binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) - in = in[BlockSize:] - } else { - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x4) - binary.LittleEndian.PutUint32(out[20:24], x5) - binary.LittleEndian.PutUint32(out[24:28], x6) - binary.LittleEndian.PutUint32(out[28:32], x7) - binary.LittleEndian.PutUint32(out[32:36], x8) - binary.LittleEndian.PutUint32(out[36:40], x9) - binary.LittleEndian.PutUint32(out[40:44], x10) - binary.LittleEndian.PutUint32(out[44:48], x11) - binary.LittleEndian.PutUint32(out[48:52], x12) - binary.LittleEndian.PutUint32(out[52:56], x13) - binary.LittleEndian.PutUint32(out[56:60], x14) - binary.LittleEndian.PutUint32(out[60:64], x15) - } - out = out[BlockSize:] - } - - // Stoping at 2^70 bytes per nonce is the user's responsibility. - ctr := uint64(x[13])<<32 | uint64(x[12]) - ctr++ - x[12] = uint32(ctr) - x[13] = uint32(ctr >> 32) - } -} - -func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { - x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 - x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] - - for i := chachaRounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = (x12 << 16) | (x12 >> 16) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 12) | (x4 >> 20) - x0 += x4 - x12 ^= x0 - x12 = (x12 << 8) | (x12 >> 24) - x8 += x12 - x4 ^= x8 - x4 = (x4 << 7) | (x4 >> 25) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 16) | (x13 >> 16) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 12) | (x5 >> 20) - x1 += x5 - x13 ^= x1 - x13 = (x13 << 8) | (x13 >> 24) - x9 += x13 - x5 ^= x9 - x5 = (x5 << 7) | (x5 >> 25) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 16) | (x14 >> 16) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 12) | (x6 >> 20) - x2 += x6 - x14 ^= x2 - x14 = (x14 << 8) | (x14 >> 24) - x10 += x14 - x6 ^= x10 - x6 = (x6 << 7) | (x6 >> 25) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 16) | (x15 >> 16) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 12) | (x7 >> 20) - x3 += x7 - x15 ^= x3 - x15 = (x15 << 8) | (x15 >> 24) - x11 += x15 - x7 ^= x11 - x7 = (x7 << 7) | (x7 >> 25) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 16) | (x15 >> 16) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 12) | (x5 >> 20) - x0 += x5 - x15 ^= x0 - x15 = (x15 << 8) | (x15 >> 24) - x10 += x15 - x5 ^= x10 - x5 = (x5 << 7) | (x5 >> 25) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 16) | (x12 >> 16) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 12) | (x6 >> 20) - x1 += x6 - x12 ^= x1 - x12 = (x12 << 8) | (x12 >> 24) - x11 += x12 - x6 ^= x11 - x6 = (x6 << 7) | (x6 >> 25) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 16) | (x13 >> 16) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 12) | (x7 >> 20) - x2 += x7 - x13 ^= x2 - x13 = (x13 << 8) | (x13 >> 24) - x8 += x13 - x7 ^= x8 - x7 = (x7 << 7) | (x7 >> 25) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 16) | (x14 >> 16) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 12) | (x4 >> 20) - x3 += x4 - x14 ^= x3 - x14 = (x14 << 8) | (x14 >> 24) - x9 += x14 - x4 ^= x9 - x4 = (x4 << 7) | (x4 >> 25) - } - - // HChaCha returns x0...x3 | x12...x15, which corresponds to the - // indexes of the ChaCha constant and the indexes of the IV. - if useUnsafe { - outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) - outArr[0] = x0 - outArr[1] = x1 - outArr[2] = x2 - outArr[3] = x3 - outArr[4] = x12 - outArr[5] = x13 - outArr[6] = x14 - outArr[7] = x15 - } else { - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x12) - binary.LittleEndian.PutUint32(out[20:24], x13) - binary.LittleEndian.PutUint32(out[24:28], x14) - binary.LittleEndian.PutUint32(out[28:32], x15) - } - return -} diff --git a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go b/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go deleted file mode 100644 index 8405c22..0000000 --- a/vendor/git.schwanenlied.me/yawning/chacha20.git/chacha20_ref_go19.go +++ /dev/null @@ -1,395 +0,0 @@ -// chacha20_ref.go - Reference ChaCha20. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to chacha20, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// +build go1.9 - -package chacha20 - -import ( - "encoding/binary" - "math" - "math/bits" - "unsafe" -) - -func blocksRef(x *[stateSize]uint32, in []byte, out []byte, nrBlocks int, isIetf bool) { - if isIetf { - var totalBlocks uint64 - totalBlocks = uint64(x[12]) + uint64(nrBlocks) - if totalBlocks > math.MaxUint32 { - panic("chacha20: Exceeded keystream per nonce limit") - } - } - - // This routine ignores x[0]...x[4] in favor the const values since it's - // ever so slightly faster. - - for n := 0; n < nrBlocks; n++ { - x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 - x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] - - for i := chachaRounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 16) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 8) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 7) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 16) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 12) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 8) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 16) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 12) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 8) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 16) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 12) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 8) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 16) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 12) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 8) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 16) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 8) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 16) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 12) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 8) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 16) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 12) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 8) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 7) - } - - // On amd64 at least, this is a rather big boost. - if useUnsafe { - if in != nil { - inArr := (*[16]uint32)(unsafe.Pointer(&in[n*BlockSize])) - outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) - outArr[0] = inArr[0] ^ (x0 + sigma0) - outArr[1] = inArr[1] ^ (x1 + sigma1) - outArr[2] = inArr[2] ^ (x2 + sigma2) - outArr[3] = inArr[3] ^ (x3 + sigma3) - outArr[4] = inArr[4] ^ (x4 + x[4]) - outArr[5] = inArr[5] ^ (x5 + x[5]) - outArr[6] = inArr[6] ^ (x6 + x[6]) - outArr[7] = inArr[7] ^ (x7 + x[7]) - outArr[8] = inArr[8] ^ (x8 + x[8]) - outArr[9] = inArr[9] ^ (x9 + x[9]) - outArr[10] = inArr[10] ^ (x10 + x[10]) - outArr[11] = inArr[11] ^ (x11 + x[11]) - outArr[12] = inArr[12] ^ (x12 + x[12]) - outArr[13] = inArr[13] ^ (x13 + x[13]) - outArr[14] = inArr[14] ^ (x14 + x[14]) - outArr[15] = inArr[15] ^ (x15 + x[15]) - } else { - outArr := (*[16]uint32)(unsafe.Pointer(&out[n*BlockSize])) - outArr[0] = x0 + sigma0 - outArr[1] = x1 + sigma1 - outArr[2] = x2 + sigma2 - outArr[3] = x3 + sigma3 - outArr[4] = x4 + x[4] - outArr[5] = x5 + x[5] - outArr[6] = x6 + x[6] - outArr[7] = x7 + x[7] - outArr[8] = x8 + x[8] - outArr[9] = x9 + x[9] - outArr[10] = x10 + x[10] - outArr[11] = x11 + x[11] - outArr[12] = x12 + x[12] - outArr[13] = x13 + x[13] - outArr[14] = x14 + x[14] - outArr[15] = x15 + x[15] - } - } else { - // Slow path, either the architecture cares about alignment, or is not little endian. - x0 += sigma0 - x1 += sigma1 - x2 += sigma2 - x3 += sigma3 - x4 += x[4] - x5 += x[5] - x6 += x[6] - x7 += x[7] - x8 += x[8] - x9 += x[9] - x10 += x[10] - x11 += x[11] - x12 += x[12] - x13 += x[13] - x14 += x[14] - x15 += x[15] - if in != nil { - binary.LittleEndian.PutUint32(out[0:4], binary.LittleEndian.Uint32(in[0:4])^x0) - binary.LittleEndian.PutUint32(out[4:8], binary.LittleEndian.Uint32(in[4:8])^x1) - binary.LittleEndian.PutUint32(out[8:12], binary.LittleEndian.Uint32(in[8:12])^x2) - binary.LittleEndian.PutUint32(out[12:16], binary.LittleEndian.Uint32(in[12:16])^x3) - binary.LittleEndian.PutUint32(out[16:20], binary.LittleEndian.Uint32(in[16:20])^x4) - binary.LittleEndian.PutUint32(out[20:24], binary.LittleEndian.Uint32(in[20:24])^x5) - binary.LittleEndian.PutUint32(out[24:28], binary.LittleEndian.Uint32(in[24:28])^x6) - binary.LittleEndian.PutUint32(out[28:32], binary.LittleEndian.Uint32(in[28:32])^x7) - binary.LittleEndian.PutUint32(out[32:36], binary.LittleEndian.Uint32(in[32:36])^x8) - binary.LittleEndian.PutUint32(out[36:40], binary.LittleEndian.Uint32(in[36:40])^x9) - binary.LittleEndian.PutUint32(out[40:44], binary.LittleEndian.Uint32(in[40:44])^x10) - binary.LittleEndian.PutUint32(out[44:48], binary.LittleEndian.Uint32(in[44:48])^x11) - binary.LittleEndian.PutUint32(out[48:52], binary.LittleEndian.Uint32(in[48:52])^x12) - binary.LittleEndian.PutUint32(out[52:56], binary.LittleEndian.Uint32(in[52:56])^x13) - binary.LittleEndian.PutUint32(out[56:60], binary.LittleEndian.Uint32(in[56:60])^x14) - binary.LittleEndian.PutUint32(out[60:64], binary.LittleEndian.Uint32(in[60:64])^x15) - in = in[BlockSize:] - } else { - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x4) - binary.LittleEndian.PutUint32(out[20:24], x5) - binary.LittleEndian.PutUint32(out[24:28], x6) - binary.LittleEndian.PutUint32(out[28:32], x7) - binary.LittleEndian.PutUint32(out[32:36], x8) - binary.LittleEndian.PutUint32(out[36:40], x9) - binary.LittleEndian.PutUint32(out[40:44], x10) - binary.LittleEndian.PutUint32(out[44:48], x11) - binary.LittleEndian.PutUint32(out[48:52], x12) - binary.LittleEndian.PutUint32(out[52:56], x13) - binary.LittleEndian.PutUint32(out[56:60], x14) - binary.LittleEndian.PutUint32(out[60:64], x15) - } - out = out[BlockSize:] - } - - // Stoping at 2^70 bytes per nonce is the user's responsibility. - ctr := uint64(x[13])<<32 | uint64(x[12]) - ctr++ - x[12] = uint32(ctr) - x[13] = uint32(ctr >> 32) - } -} - -func hChaChaRef(x *[stateSize]uint32, out *[32]byte) { - x0, x1, x2, x3 := sigma0, sigma1, sigma2, sigma3 - x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11] - - for i := chachaRounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 16) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 8) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 7) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 16) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 12) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 8) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 16) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 12) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 8) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 16) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 12) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 8) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 16) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 12) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 8) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 16) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 8) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 16) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 12) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 8) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 16) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 12) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 8) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 7) - } - - // HChaCha returns x0...x3 | x12...x15, which corresponds to the - // indexes of the ChaCha constant and the indexes of the IV. - if useUnsafe { - outArr := (*[16]uint32)(unsafe.Pointer(&out[0])) - outArr[0] = x0 - outArr[1] = x1 - outArr[2] = x2 - outArr[3] = x3 - outArr[4] = x12 - outArr[5] = x13 - outArr[6] = x14 - outArr[7] = x15 - } else { - binary.LittleEndian.PutUint32(out[0:4], x0) - binary.LittleEndian.PutUint32(out[4:8], x1) - binary.LittleEndian.PutUint32(out[8:12], x2) - binary.LittleEndian.PutUint32(out[12:16], x3) - binary.LittleEndian.PutUint32(out[16:20], x12) - binary.LittleEndian.PutUint32(out[20:24], x13) - binary.LittleEndian.PutUint32(out[24:28], x14) - binary.LittleEndian.PutUint32(out[28:32], x15) - } - return -} diff --git a/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE b/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE deleted file mode 100644 index 6ca207e..0000000 --- a/vendor/git.schwanenlied.me/yawning/newhope.git/LICENSE +++ /dev/null @@ -1,122 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. - diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go index 4bd2abc..3168a8a 100644 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go @@ -4,7 +4,10 @@ package blake2b -import "encoding/binary" +import ( + "encoding/binary" + "math/bits" +) // the precomputed values for BLAKE2b // there are 12 16-byte arrays - one for each round @@ -51,118 +54,118 @@ func hashBlocksGeneric(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { v0 += m[s[0]] v0 += v4 v12 ^= v0 - v12 = v12<<(64-32) | v12>>32 + v12 = bits.RotateLeft64(v12, -32) v8 += v12 v4 ^= v8 - v4 = v4<<(64-24) | v4>>24 + v4 = bits.RotateLeft64(v4, -24) v1 += m[s[1]] v1 += v5 v13 ^= v1 - v13 = v13<<(64-32) | v13>>32 + v13 = bits.RotateLeft64(v13, -32) v9 += v13 v5 ^= v9 - v5 = v5<<(64-24) | v5>>24 + v5 = bits.RotateLeft64(v5, -24) v2 += m[s[2]] v2 += v6 v14 ^= v2 - v14 = v14<<(64-32) | v14>>32 + v14 = bits.RotateLeft64(v14, -32) v10 += v14 v6 ^= v10 - v6 = v6<<(64-24) | v6>>24 + v6 = bits.RotateLeft64(v6, -24) v3 += m[s[3]] v3 += v7 v15 ^= v3 - v15 = v15<<(64-32) | v15>>32 + v15 = bits.RotateLeft64(v15, -32) v11 += v15 v7 ^= v11 - v7 = v7<<(64-24) | v7>>24 + v7 = bits.RotateLeft64(v7, -24) v0 += m[s[4]] v0 += v4 v12 ^= v0 - v12 = v12<<(64-16) | v12>>16 + v12 = bits.RotateLeft64(v12, -16) v8 += v12 v4 ^= v8 - v4 = v4<<(64-63) | v4>>63 + v4 = bits.RotateLeft64(v4, -63) v1 += m[s[5]] v1 += v5 v13 ^= v1 - v13 = v13<<(64-16) | v13>>16 + v13 = bits.RotateLeft64(v13, -16) v9 += v13 v5 ^= v9 - v5 = v5<<(64-63) | v5>>63 + v5 = bits.RotateLeft64(v5, -63) v2 += m[s[6]] v2 += v6 v14 ^= v2 - v14 = v14<<(64-16) | v14>>16 + v14 = bits.RotateLeft64(v14, -16) v10 += v14 v6 ^= v10 - v6 = v6<<(64-63) | v6>>63 + v6 = bits.RotateLeft64(v6, -63) v3 += m[s[7]] v3 += v7 v15 ^= v3 - v15 = v15<<(64-16) | v15>>16 + v15 = bits.RotateLeft64(v15, -16) v11 += v15 v7 ^= v11 - v7 = v7<<(64-63) | v7>>63 + v7 = bits.RotateLeft64(v7, -63) v0 += m[s[8]] v0 += v5 v15 ^= v0 - v15 = v15<<(64-32) | v15>>32 + v15 = bits.RotateLeft64(v15, -32) v10 += v15 v5 ^= v10 - v5 = v5<<(64-24) | v5>>24 + v5 = bits.RotateLeft64(v5, -24) v1 += m[s[9]] v1 += v6 v12 ^= v1 - v12 = v12<<(64-32) | v12>>32 + v12 = bits.RotateLeft64(v12, -32) v11 += v12 v6 ^= v11 - v6 = v6<<(64-24) | v6>>24 + v6 = bits.RotateLeft64(v6, -24) v2 += m[s[10]] v2 += v7 v13 ^= v2 - v13 = v13<<(64-32) | v13>>32 + v13 = bits.RotateLeft64(v13, -32) v8 += v13 v7 ^= v8 - v7 = v7<<(64-24) | v7>>24 + v7 = bits.RotateLeft64(v7, -24) v3 += m[s[11]] v3 += v4 v14 ^= v3 - v14 = v14<<(64-32) | v14>>32 + v14 = bits.RotateLeft64(v14, -32) v9 += v14 v4 ^= v9 - v4 = v4<<(64-24) | v4>>24 + v4 = bits.RotateLeft64(v4, -24) v0 += m[s[12]] v0 += v5 v15 ^= v0 - v15 = v15<<(64-16) | v15>>16 + v15 = bits.RotateLeft64(v15, -16) v10 += v15 v5 ^= v10 - v5 = v5<<(64-63) | v5>>63 + v5 = bits.RotateLeft64(v5, -63) v1 += m[s[13]] v1 += v6 v12 ^= v1 - v12 = v12<<(64-16) | v12>>16 + v12 = bits.RotateLeft64(v12, -16) v11 += v12 v6 ^= v11 - v6 = v6<<(64-63) | v6>>63 + v6 = bits.RotateLeft64(v6, -63) v2 += m[s[14]] v2 += v7 v13 ^= v2 - v13 = v13<<(64-16) | v13>>16 + v13 = bits.RotateLeft64(v13, -16) v8 += v13 v7 ^= v8 - v7 = v7<<(64-63) | v7>>63 + v7 = bits.RotateLeft64(v7, -63) v3 += m[s[15]] v3 += v4 v14 ^= v3 - v14 = v14<<(64-16) | v14>>16 + v14 = bits.RotateLeft64(v14, -16) v9 += v14 v4 ^= v9 - v4 = v4<<(64-63) | v4>>63 + v4 = bits.RotateLeft64(v4, -63) } diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go index 3362afd..2f81fe4 100644 --- a/vendor/golang.org/x/crypto/scrypt/scrypt.go +++ b/vendor/golang.org/x/crypto/scrypt/scrypt.go @@ -10,6 +10,7 @@ package scrypt // import "golang.org/x/crypto/scrypt" import ( "crypto/sha256" "errors" + "math/bits" "golang.org/x/crypto/pbkdf2" ) @@ -52,77 +53,45 @@ func salsaXOR(tmp *[16]uint32, in, out []uint32) { x9, x10, x11, x12, x13, x14, x15 := w9, w10, w11, w12, w13, w14, w15 for i := 0; i < 8; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) + x4 ^= bits.RotateLeft32(x0+x12, 7) + x8 ^= bits.RotateLeft32(x4+x0, 9) + x12 ^= bits.RotateLeft32(x8+x4, 13) + x0 ^= bits.RotateLeft32(x12+x8, 18) - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) + x9 ^= bits.RotateLeft32(x5+x1, 7) + x13 ^= bits.RotateLeft32(x9+x5, 9) + x1 ^= bits.RotateLeft32(x13+x9, 13) + x5 ^= bits.RotateLeft32(x1+x13, 18) - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) + x14 ^= bits.RotateLeft32(x10+x6, 7) + x2 ^= bits.RotateLeft32(x14+x10, 9) + x6 ^= bits.RotateLeft32(x2+x14, 13) + x10 ^= bits.RotateLeft32(x6+x2, 18) - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) + x3 ^= bits.RotateLeft32(x15+x11, 7) + x7 ^= bits.RotateLeft32(x3+x15, 9) + x11 ^= bits.RotateLeft32(x7+x3, 13) + x15 ^= bits.RotateLeft32(x11+x7, 18) - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) + x1 ^= bits.RotateLeft32(x0+x3, 7) + x2 ^= bits.RotateLeft32(x1+x0, 9) + x3 ^= bits.RotateLeft32(x2+x1, 13) + x0 ^= bits.RotateLeft32(x3+x2, 18) - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) + x6 ^= bits.RotateLeft32(x5+x4, 7) + x7 ^= bits.RotateLeft32(x6+x5, 9) + x4 ^= bits.RotateLeft32(x7+x6, 13) + x5 ^= bits.RotateLeft32(x4+x7, 18) - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) + x11 ^= bits.RotateLeft32(x10+x9, 7) + x8 ^= bits.RotateLeft32(x11+x10, 9) + x9 ^= bits.RotateLeft32(x8+x11, 13) + x10 ^= bits.RotateLeft32(x9+x8, 18) - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) + x12 ^= bits.RotateLeft32(x15+x14, 7) + x13 ^= bits.RotateLeft32(x12+x15, 9) + x14 ^= bits.RotateLeft32(x13+x12, 13) + x15 ^= bits.RotateLeft32(x14+x13, 18) } x0 += w0 x1 += w1 diff --git a/vendor/golang.org/x/crypto/sha3/hashes_generic.go b/vendor/golang.org/x/crypto/sha3/hashes_generic.go index c4ff3f6..f455147 100644 --- a/vendor/golang.org/x/crypto/sha3/hashes_generic.go +++ b/vendor/golang.org/x/crypto/sha3/hashes_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//+build gccgo appengine !s390x +// +build gccgo appengine !s390x package sha3 diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go index b12a35c..ba269a0 100644 --- a/vendor/golang.org/x/crypto/sha3/sha3.go +++ b/vendor/golang.org/x/crypto/sha3/sha3.go @@ -38,8 +38,9 @@ type state struct { // [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf // "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and // Extendable-Output Functions (May 2014)" - dsbyte byte - storage [maxRate]byte + dsbyte byte + + storage storageBuf // Specific to SHA-3 and SHAKE. outputLen int // the default output size in bytes @@ -60,15 +61,15 @@ func (d *state) Reset() { d.a[i] = 0 } d.state = spongeAbsorbing - d.buf = d.storage[:0] + d.buf = d.storage.asBytes()[:0] } func (d *state) clone() *state { ret := *d if ret.state == spongeAbsorbing { - ret.buf = ret.storage[:len(ret.buf)] + ret.buf = ret.storage.asBytes()[:len(ret.buf)] } else { - ret.buf = ret.storage[d.rate-cap(d.buf) : d.rate] + ret.buf = ret.storage.asBytes()[d.rate-cap(d.buf) : d.rate] } return &ret @@ -82,13 +83,13 @@ func (d *state) permute() { // If we're absorbing, we need to xor the input into the state // before applying the permutation. xorIn(d, d.buf) - d.buf = d.storage[:0] + d.buf = d.storage.asBytes()[:0] keccakF1600(&d.a) case spongeSqueezing: // If we're squeezing, we need to apply the permutatin before // copying more output. keccakF1600(&d.a) - d.buf = d.storage[:d.rate] + d.buf = d.storage.asBytes()[:d.rate] copyOut(d, d.buf) } } @@ -97,7 +98,7 @@ func (d *state) permute() { // the multi-bitrate 10..1 padding rule, and permutes the state. func (d *state) padAndPermute(dsbyte byte) { if d.buf == nil { - d.buf = d.storage[:0] + d.buf = d.storage.asBytes()[:0] } // Pad with this instance's domain-separator bits. We know that there's // at least one byte of space in d.buf because, if it were full, @@ -105,7 +106,7 @@ func (d *state) padAndPermute(dsbyte byte) { // first one bit for the padding. See the comment in the state struct. d.buf = append(d.buf, dsbyte) zerosStart := len(d.buf) - d.buf = d.storage[:d.rate] + d.buf = d.storage.asBytes()[:d.rate] for i := zerosStart; i < d.rate; i++ { d.buf[i] = 0 } @@ -116,7 +117,7 @@ func (d *state) padAndPermute(dsbyte byte) { // Apply the permutation d.permute() d.state = spongeSqueezing - d.buf = d.storage[:d.rate] + d.buf = d.storage.asBytes()[:d.rate] copyOut(d, d.buf) } @@ -127,7 +128,7 @@ func (d *state) Write(p []byte) (written int, err error) { panic("sha3: write to sponge after read") } if d.buf == nil { - d.buf = d.storage[:0] + d.buf = d.storage.asBytes()[:0] } written = len(p) diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go index b6cbc5c..259ff4d 100644 --- a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//+build !gccgo,!appengine +// +build !gccgo,!appengine package sha3 @@ -112,7 +112,7 @@ func (s *asmState) Write(b []byte) (int, error) { if len(s.buf) == 0 && len(b) >= cap(s.buf) { // Hash the data directly and push any remaining bytes // into the buffer. - remainder := len(s.buf) % s.rate + remainder := len(b) % s.rate kimd(s.function, &s.a, b[:len(b)-remainder]) if remainder != 0 { s.copyIntoBuf(b[len(b)-remainder:]) diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s index b2ef69f..8a4458f 100644 --- a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s +++ b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//+build !gccgo,!appengine +// +build !gccgo,!appengine #include "textflag.h" diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go index a39e5d5..d7be295 100644 --- a/vendor/golang.org/x/crypto/sha3/shake.go +++ b/vendor/golang.org/x/crypto/sha3/shake.go @@ -41,7 +41,7 @@ type ShakeHash interface { // cSHAKE specific context type cshakeState struct { - state // SHA-3 state context and Read/Write operations + *state // SHA-3 state context and Read/Write operations // initBlock is the cSHAKE specific initialization set of bytes. It is initialized // by newCShake function and stores concatenation of N followed by S, encoded @@ -82,7 +82,7 @@ func leftEncode(value uint64) []byte { } func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash { - c := cshakeState{state: state{rate: rate, dsbyte: dsbyte}} + c := cshakeState{state: &state{rate: rate, dsbyte: dsbyte}} // leftEncode returns max 9 bytes c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) @@ -104,7 +104,7 @@ func (c *cshakeState) Reset() { func (c *cshakeState) Clone() ShakeHash { b := make([]byte, len(c.initBlock)) copy(b, c.initBlock) - return &cshakeState{state: *c.clone(), initBlock: b} + return &cshakeState{state: c.clone(), initBlock: b} } // Clone returns copy of SHAKE context within its current state. diff --git a/vendor/golang.org/x/crypto/sha3/shake_generic.go b/vendor/golang.org/x/crypto/sha3/shake_generic.go index 73d0c90..add4e73 100644 --- a/vendor/golang.org/x/crypto/sha3/shake_generic.go +++ b/vendor/golang.org/x/crypto/sha3/shake_generic.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//+build gccgo appengine !s390x +// +build gccgo appengine !s390x package sha3 diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go index 46a0d63..079b650 100644 --- a/vendor/golang.org/x/crypto/sha3/xor.go +++ b/vendor/golang.org/x/crypto/sha3/xor.go @@ -6,6 +6,13 @@ package sha3 +// A storageBuf is an aligned array of maxRate bytes. +type storageBuf [maxRate]byte + +func (b *storageBuf) asBytes() *[maxRate]byte { + return (*[maxRate]byte)(b) +} + var ( xorIn = xorInGeneric copyOut = copyOutGeneric diff --git a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go index 929a486..a3d0686 100644 --- a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go +++ b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go @@ -9,9 +9,16 @@ package sha3 import "unsafe" +// A storageBuf is an aligned array of maxRate bytes. +type storageBuf [maxRate / 8]uint64 + +func (b *storageBuf) asBytes() *[maxRate]byte { + return (*[maxRate]byte)(unsafe.Pointer(b)) +} + func xorInUnaligned(d *state, buf []byte) { - bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0])) n := len(buf) + bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0]))[: n/8 : n/8] if n >= 72 { d.a[0] ^= bw[0] d.a[1] ^= bw[1] diff --git a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s new file mode 100644 index 0000000..06f84b8 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s @@ -0,0 +1,17 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go +// + +TEXT ·syscall6(SB),NOSPLIT,$0-88 + JMP syscall·syscall6(SB) + +TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 + JMP syscall·rawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go index d8c26a0..be60272 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go @@ -6,8 +6,6 @@ package cpu -import "golang.org/x/sys/unix" - const cacheLineSize = 128 const ( @@ -18,7 +16,7 @@ const ( ) func init() { - impl := unix.Getsystemcfg(_SC_IMPL) + impl := getsystemcfg(_SC_IMPL) if impl&_IMPL_POWER8 != 0 { PPC64.IsPOWER8 = true } @@ -28,3 +26,9 @@ func init() { Initialized = true } + +func getsystemcfg(label int) (n uint64) { + r0, _ := callgetsystemcfg(label) + n = uint64(r0) + return +} diff --git a/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go new file mode 100644 index 0000000..78fe25e --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go @@ -0,0 +1,36 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on AIX without depending on x/sys/unix. +// (See golang.org/issue/32102) + +// +build aix,ppc64 +// +build !gccgo + +package cpu + +import ( + "syscall" + "unsafe" +) + +//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" + +//go:linkname libc_getsystemcfg libc_getsystemcfg + +type syscallFunc uintptr + +var libc_getsystemcfg syscallFunc + +type errno = syscall.Errno + +// Implemented in runtime/syscall_aix.go. +func rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) +func syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err errno) + +func callgetsystemcfg(label int) (r1 uintptr, e1 errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0) + return +} diff --git a/vendor/golang.org/x/sys/unix/affinity_linux.go b/vendor/golang.org/x/sys/unix/affinity_linux.go index 72afe33..6e5c81a 100644 --- a/vendor/golang.org/x/sys/unix/affinity_linux.go +++ b/vendor/golang.org/x/sys/unix/affinity_linux.go @@ -7,6 +7,7 @@ package unix import ( + "math/bits" "unsafe" ) @@ -79,46 +80,7 @@ func (s *CPUSet) IsSet(cpu int) bool { func (s *CPUSet) Count() int { c := 0 for _, b := range s { - c += onesCount64(uint64(b)) + c += bits.OnesCount64(uint64(b)) } return c } - -// onesCount64 is a copy of Go 1.9's math/bits.OnesCount64. -// Once this package can require Go 1.9, we can delete this -// and update the caller to use bits.OnesCount64. -func onesCount64(x uint64) int { - const m0 = 0x5555555555555555 // 01010101 ... - const m1 = 0x3333333333333333 // 00110011 ... - const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ... - const m3 = 0x00ff00ff00ff00ff // etc. - const m4 = 0x0000ffff0000ffff - - // Implementation: Parallel summing of adjacent bits. - // See "Hacker's Delight", Chap. 5: Counting Bits. - // The following pattern shows the general approach: - // - // x = x>>1&(m0&m) + x&(m0&m) - // x = x>>2&(m1&m) + x&(m1&m) - // x = x>>4&(m2&m) + x&(m2&m) - // x = x>>8&(m3&m) + x&(m3&m) - // x = x>>16&(m4&m) + x&(m4&m) - // x = x>>32&(m5&m) + x&(m5&m) - // return int(x) - // - // Masking (& operations) can be left away when there's no - // danger that a field's sum will carry over into the next - // field: Since the result cannot be > 64, 8 bits is enough - // and we can ignore the masks for the shifts by 8 and up. - // Per "Hacker's Delight", the first line can be simplified - // more, but it saves at best one instruction, so we leave - // it alone for clarity. - const m = 1<<64 - 1 - x = x>>1&(m0&m) + x&(m0&m) - x = x>>2&(m1&m) + x&(m1&m) - x = (x>>4 + x) & (m2 & m) - x += x >> 8 - x += x >> 16 - x += x >> 32 - return int(x) & (1<<7 - 1) -} diff --git a/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s new file mode 100644 index 0000000..6db717d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s @@ -0,0 +1,54 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build riscv64,!gccgo + +#include "textflag.h" + +// +// System calls for linux/riscv64. +// +// Where available, just jump to package syscall's implementation of +// these functions. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 + CALL runtime·entersyscall(SB) + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV $0, A3 + MOV $0, A4 + MOV $0, A5 + MOV $0, A6 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) // r1 + MOV A1, r2+40(FP) // r2 + CALL runtime·exitsyscall(SB) + RET + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) + +TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 + MOV a1+8(FP), A0 + MOV a2+16(FP), A1 + MOV a3+24(FP), A2 + MOV ZERO, A3 + MOV ZERO, A4 + MOV ZERO, A5 + MOV trap+0(FP), A7 // syscall entry + ECALL + MOV A0, r1+32(FP) + MOV A1, r2+40(FP) + RET diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s new file mode 100644 index 0000000..0cedea3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s @@ -0,0 +1,29 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for arm64, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/dirent.go b/vendor/golang.org/x/sys/unix/dirent.go index 4407c50..304016b 100644 --- a/vendor/golang.org/x/sys/unix/dirent.go +++ b/vendor/golang.org/x/sys/unix/dirent.go @@ -2,16 +2,101 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build aix darwin dragonfly freebsd linux nacl netbsd openbsd solaris +// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris package unix -import "syscall" +import "unsafe" + +// readInt returns the size-bytes unsigned integer in native byte order at offset off. +func readInt(b []byte, off, size uintptr) (u uint64, ok bool) { + if len(b) < int(off+size) { + return 0, false + } + if isBigEndian { + return readIntBE(b[off:], size), true + } + return readIntLE(b[off:], size), true +} + +func readIntBE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[1]) | uint64(b[0])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 | + uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} + +func readIntLE(b []byte, size uintptr) uint64 { + switch size { + case 1: + return uint64(b[0]) + case 2: + _ = b[1] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 + case 4: + _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 + case 8: + _ = b[7] // bounds check hint to compiler; see golang.org/issue/14808 + return uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | + uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56 + default: + panic("syscall: readInt with unsupported size") + } +} // ParseDirent parses up to max directory entries in buf, // appending the names to names. It returns the number of // bytes consumed from buf, the number of entries added // to names, and the new names slice. func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) { - return syscall.ParseDirent(buf, max, names) + origlen := len(buf) + count = 0 + for max != 0 && len(buf) > 0 { + reclen, ok := direntReclen(buf) + if !ok || reclen > uint64(len(buf)) { + return origlen, count, names + } + rec := buf[:reclen] + buf = buf[reclen:] + ino, ok := direntIno(rec) + if !ok { + break + } + if ino == 0 { // File absent in directory. + continue + } + const namoff = uint64(unsafe.Offsetof(Dirent{}.Name)) + namlen, ok := direntNamlen(rec) + if !ok || namoff+namlen > uint64(len(rec)) { + break + } + name := rec[namoff : namoff+namlen] + for i, c := range name { + if c == 0 { + name = name[:i] + break + } + } + // Check for useless names before allocating a string. + if string(name) == "." || string(name) == ".." { + continue + } + max-- + count++ + names = append(names, string(name)) + } + return origlen - len(buf), count, names } diff --git a/vendor/golang.org/x/sys/unix/endian_little.go b/vendor/golang.org/x/sys/unix/endian_little.go index 085df2d..bcdb5d3 100644 --- a/vendor/golang.org/x/sys/unix/endian_little.go +++ b/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // -// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le +// +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le riscv64 package unix diff --git a/vendor/golang.org/x/sys/unix/ioctl.go b/vendor/golang.org/x/sys/unix/ioctl.go index f121a8d..3559e5d 100644 --- a/vendor/golang.org/x/sys/unix/ioctl.go +++ b/vendor/golang.org/x/sys/unix/ioctl.go @@ -6,7 +6,19 @@ package unix -import "runtime" +import ( + "runtime" + "unsafe" +) + +// ioctl itself should not be exposed directly, but additional get/set +// functions for specific types are permissible. + +// IoctlSetInt performs an ioctl operation which sets an integer value +// on fd, using the specified request number. +func IoctlSetInt(fd int, req uint, value int) error { + return ioctl(fd, req, uintptr(value)) +} // IoctlSetWinsize performs an ioctl on fd with a *Winsize argument. // @@ -14,7 +26,7 @@ import "runtime" func IoctlSetWinsize(fd int, req uint, value *Winsize) error { // TODO: if we get the chance, remove the req parameter and // hardcode TIOCSWINSZ. - err := ioctlSetWinsize(fd, req, value) + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } @@ -24,7 +36,30 @@ func IoctlSetWinsize(fd int, req uint, value *Winsize) error { // The req value will usually be TCSETA or TIOCSETA. func IoctlSetTermios(fd int, req uint, value *Termios) error { // TODO: if we get the chance, remove the req parameter. - err := ioctlSetTermios(fd, req, value) + err := ioctl(fd, req, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } + +// IoctlGetInt performs an ioctl operation which gets an integer value +// from fd, using the specified request number. +// +// A few ioctl requests use the return value as an output parameter; +// for those, IoctlRetInt should be used instead of this function. +func IoctlGetInt(fd int, req uint) (int, error) { + var value int + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return value, err +} + +func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { + var value Winsize + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} + +func IoctlGetTermios(fd int, req uint) (*Termios, error) { + var value Termios + err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) + return &value, err +} diff --git a/vendor/golang.org/x/sys/unix/mkall.sh b/vendor/golang.org/x/sys/unix/mkall.sh index 1e5c59d..5a22eca 100644 --- a/vendor/golang.org/x/sys/unix/mkall.sh +++ b/vendor/golang.org/x/sys/unix/mkall.sh @@ -105,25 +105,25 @@ dragonfly_amd64) freebsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_amd64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -arm" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; freebsd_arm64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; netbsd_386) @@ -146,24 +146,39 @@ netbsd_arm) # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; +netbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -netbsd" + mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs" + ;; openbsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32 -openbsd" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_amd64) mkerrors="$mkerrors -m64" mksyscall="go run mksyscall.go -openbsd" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; openbsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -openbsd -arm" - mksysctl="./mksysctl_openbsd.pl" + mksysctl="go run mksysctl_openbsd.go" + mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" + # Let the type of C char be signed for making the bare syscall + # API consistent across platforms. + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +openbsd_arm64) + mkerrors="$mkerrors -m64" + mksyscall="go run mksyscall.go -openbsd" + mksysctl="go run mksysctl_openbsd.go" mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index cfb61ba..85cfbd0 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -182,6 +182,8 @@ struct ltchars { #include #include #include +#include +#include #include #include #include @@ -197,12 +199,14 @@ struct ltchars { #include #include #include +#include #include #include #include #include #include #include +#include #include #include #include @@ -222,6 +226,7 @@ struct ltchars { #include #include #include +#include #include #include @@ -432,7 +437,9 @@ ccflags="$@" $2 ~ /^TC[IO](ON|OFF)$/ || $2 ~ /^IN_/ || $2 ~ /^LOCK_(SH|EX|NB|UN)$/ || - $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || + $2 ~ /^LO_(KEY|NAME)_SIZE$/ || + $2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ || + $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|MCAST|EVFILT|NOTE|EV|SHUT|PROT|MAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ || $2 ~ /^TP_STATUS_/ || $2 ~ /^FALLOC_/ || $2 == "ICMPV6_FILTER" || @@ -445,6 +452,7 @@ ccflags="$@" $2 ~ /^SYSCTL_VERS/ || $2 !~ "MNT_BITS" && $2 ~ /^(MS|MNT|UMOUNT)_/ || + $2 ~ /^NS_GET_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT)_/ || $2 ~ /^KEXEC_/ || @@ -465,7 +473,7 @@ ccflags="$@" $2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ || $2 ~ /^PRIO_(PROCESS|PGRP|USER)/ || $2 ~ /^CLONE_[A-Z_]+/ || - $2 !~ /^(BPF_TIMEVAL)$/ && + $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+)$/ && $2 ~ /^(BPF|DLT)_/ || $2 ~ /^(CLOCK|TIMER)_/ || $2 ~ /^CAN_/ || @@ -499,6 +507,7 @@ ccflags="$@" $2 ~ /^NFN/ || $2 ~ /^XDP_/ || $2 ~ /^(HDIO|WIN|SMART)_/ || + $2 ~ /^CRYPTO_/ || $2 !~ "WMESGLEN" && $2 ~ /^W[A-Z0-9]+$/ || $2 ~/^PPPIOC/ || diff --git a/vendor/golang.org/x/sys/unix/mkpost.go b/vendor/golang.org/x/sys/unix/mkpost.go index 9feddd0..eb43320 100644 --- a/vendor/golang.org/x/sys/unix/mkpost.go +++ b/vendor/golang.org/x/sys/unix/mkpost.go @@ -42,9 +42,16 @@ func main() { log.Fatal(err) } + if goos == "aix" { + // Replace type of Atim, Mtim and Ctim by Timespec in Stat_t + // to avoid having both StTimespec and Timespec. + sttimespec := regexp.MustCompile(`_Ctype_struct_st_timespec`) + b = sttimespec.ReplaceAll(b, []byte("Timespec")) + } + // Intentionally export __val fields in Fsid and Sigset_t - valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__val(\s+\S+\s+)}`) - b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$3}")) + valRegex := regexp.MustCompile(`type (Fsid|Sigset_t) struct {(\s+)X__(bits|val)(\s+\S+\s+)}`) + b = valRegex.ReplaceAll(b, []byte("type $1 struct {${2}Val$4}")) // Intentionally export __fds_bits field in FdSet fdSetRegex := regexp.MustCompile(`type (FdSet) struct {(\s+)X__fds_bits(\s+\S+\s+)}`) @@ -96,6 +103,15 @@ func main() { cgoCommandRegex := regexp.MustCompile(`(cgo -godefs .*)`) b = cgoCommandRegex.ReplaceAll(b, []byte(replacement)) + // Rename Stat_t time fields + if goos == "freebsd" && goarch == "386" { + // Hide Stat_t.[AMCB]tim_ext fields + renameStatTimeExtFieldsRegex := regexp.MustCompile(`[AMCB]tim_ext`) + b = renameStatTimeExtFieldsRegex.ReplaceAll(b, []byte("_")) + } + renameStatTimeFieldsRegex := regexp.MustCompile(`([AMCB])(?:irth)?time?(?:spec)?\s+(Timespec|StTimespec)`) + b = renameStatTimeFieldsRegex.ReplaceAll(b, []byte("${1}tim ${2}")) + // gofmt b, err = format.Source(b) if err != nil { diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go index f2c58fb..3be3cdf 100644 --- a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go @@ -214,6 +214,11 @@ func main() { } if funct != "fcntl" && funct != "FcntlInt" && funct != "readlen" && funct != "writelen" { + if sysname == "select" { + // select is a keyword of Go. Its name is + // changed to c_select. + cExtern += "#define c_select select\n" + } // Imports of system calls from libc cExtern += fmt.Sprintf("%s %s", cRettype, sysname) cIn := strings.Join(cIn, ", ") @@ -328,7 +333,13 @@ func main() { } else { call += "" } - call += fmt.Sprintf("C.%s(%s)", sysname, arglist) + if sysname == "select" { + // select is a keyword of Go. Its name is + // changed to c_select. + call += fmt.Sprintf("C.c_%s(%s)", sysname, arglist) + } else { + call += fmt.Sprintf("C.%s(%s)", sysname, arglist) + } // Assign return values. body := "" diff --git a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go index 45b4429..c960099 100644 --- a/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go @@ -282,6 +282,11 @@ func main() { if !onlyCommon { // GCCGO Prototype Generation // Imports of system calls from libc + if sysname == "select" { + // select is a keyword of Go. Its name is + // changed to c_select. + cExtern += "#define c_select select\n" + } cExtern += fmt.Sprintf("%s %s", cRettype, sysname) cIn := strings.Join(cIn, ", ") cExtern += fmt.Sprintf("(%s);\n", cIn) @@ -490,7 +495,14 @@ func main() { // GCCGO function generation argsgccgolist := strings.Join(argsgccgo, ", ") - callgccgo := fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist) + var callgccgo string + if sysname == "select" { + // select is a keyword of Go. Its name is + // changed to c_select. + callgccgo = fmt.Sprintf("C.c_%s(%s)", sysname, argsgccgolist) + } else { + callgccgo = fmt.Sprintf("C.%s(%s)", sysname, argsgccgolist) + } textgccgo += callProto textgccgo += fmt.Sprintf("\tr1 = uintptr(%s)\n", callgccgo) textgccgo += "\te1 = syscall.GetErrno()\n" diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go new file mode 100644 index 0000000..b6b4099 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.go @@ -0,0 +1,355 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build ignore + +// Parse the header files for OpenBSD and generate a Go usable sysctl MIB. +// +// Build a MIB with each entry being an array containing the level, type and +// a hash that will contain additional entries if the current entry is a node. +// We then walk this MIB and create a flattened sysctl name to OID hash. + +package main + +import ( + "bufio" + "fmt" + "os" + "path/filepath" + "regexp" + "sort" + "strings" +) + +var ( + goos, goarch string +) + +// cmdLine returns this programs's commandline arguments. +func cmdLine() string { + return "go run mksysctl_openbsd.go " + strings.Join(os.Args[1:], " ") +} + +// buildTags returns build tags. +func buildTags() string { + return fmt.Sprintf("%s,%s", goarch, goos) +} + +// reMatch performs regular expression match and stores the substring slice to value pointed by m. +func reMatch(re *regexp.Regexp, str string, m *[]string) bool { + *m = re.FindStringSubmatch(str) + if *m != nil { + return true + } + return false +} + +type nodeElement struct { + n int + t string + pE *map[string]nodeElement +} + +var ( + debugEnabled bool + mib map[string]nodeElement + node *map[string]nodeElement + nodeMap map[string]string + sysCtl []string +) + +var ( + ctlNames1RE = regexp.MustCompile(`^#define\s+(CTL_NAMES)\s+{`) + ctlNames2RE = regexp.MustCompile(`^#define\s+(CTL_(.*)_NAMES)\s+{`) + ctlNames3RE = regexp.MustCompile(`^#define\s+((.*)CTL_NAMES)\s+{`) + netInetRE = regexp.MustCompile(`^netinet/`) + netInet6RE = regexp.MustCompile(`^netinet6/`) + netRE = regexp.MustCompile(`^net/`) + bracesRE = regexp.MustCompile(`{.*}`) + ctlTypeRE = regexp.MustCompile(`{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}`) + fsNetKernRE = regexp.MustCompile(`^(fs|net|kern)_`) +) + +func debug(s string) { + if debugEnabled { + fmt.Fprintln(os.Stderr, s) + } +} + +// Walk the MIB and build a sysctl name to OID mapping. +func buildSysctl(pNode *map[string]nodeElement, name string, oid []int) { + lNode := pNode // local copy of pointer to node + var keys []string + for k := range *lNode { + keys = append(keys, k) + } + sort.Strings(keys) + + for _, key := range keys { + nodename := name + if name != "" { + nodename += "." + } + nodename += key + + nodeoid := append(oid, (*pNode)[key].n) + + if (*pNode)[key].t == `CTLTYPE_NODE` { + if _, ok := nodeMap[nodename]; ok { + lNode = &mib + ctlName := nodeMap[nodename] + for _, part := range strings.Split(ctlName, ".") { + lNode = ((*lNode)[part]).pE + } + } else { + lNode = (*pNode)[key].pE + } + buildSysctl(lNode, nodename, nodeoid) + } else if (*pNode)[key].t != "" { + oidStr := []string{} + for j := range nodeoid { + oidStr = append(oidStr, fmt.Sprintf("%d", nodeoid[j])) + } + text := "\t{ \"" + nodename + "\", []_C_int{ " + strings.Join(oidStr, ", ") + " } }, \n" + sysCtl = append(sysCtl, text) + } + } +} + +func main() { + // Get the OS (using GOOS_TARGET if it exist) + goos = os.Getenv("GOOS_TARGET") + if goos == "" { + goos = os.Getenv("GOOS") + } + // Get the architecture (using GOARCH_TARGET if it exists) + goarch = os.Getenv("GOARCH_TARGET") + if goarch == "" { + goarch = os.Getenv("GOARCH") + } + // Check if GOOS and GOARCH environment variables are defined + if goarch == "" || goos == "" { + fmt.Fprintf(os.Stderr, "GOARCH or GOOS not defined in environment\n") + os.Exit(1) + } + + mib = make(map[string]nodeElement) + headers := [...]string{ + `sys/sysctl.h`, + `sys/socket.h`, + `sys/tty.h`, + `sys/malloc.h`, + `sys/mount.h`, + `sys/namei.h`, + `sys/sem.h`, + `sys/shm.h`, + `sys/vmmeter.h`, + `uvm/uvmexp.h`, + `uvm/uvm_param.h`, + `uvm/uvm_swap_encrypt.h`, + `ddb/db_var.h`, + `net/if.h`, + `net/if_pfsync.h`, + `net/pipex.h`, + `netinet/in.h`, + `netinet/icmp_var.h`, + `netinet/igmp_var.h`, + `netinet/ip_ah.h`, + `netinet/ip_carp.h`, + `netinet/ip_divert.h`, + `netinet/ip_esp.h`, + `netinet/ip_ether.h`, + `netinet/ip_gre.h`, + `netinet/ip_ipcomp.h`, + `netinet/ip_ipip.h`, + `netinet/pim_var.h`, + `netinet/tcp_var.h`, + `netinet/udp_var.h`, + `netinet6/in6.h`, + `netinet6/ip6_divert.h`, + `netinet6/pim6_var.h`, + `netinet/icmp6.h`, + `netmpls/mpls.h`, + } + + ctls := [...]string{ + `kern`, + `vm`, + `fs`, + `net`, + //debug /* Special handling required */ + `hw`, + //machdep /* Arch specific */ + `user`, + `ddb`, + //vfs /* Special handling required */ + `fs.posix`, + `kern.forkstat`, + `kern.intrcnt`, + `kern.malloc`, + `kern.nchstats`, + `kern.seminfo`, + `kern.shminfo`, + `kern.timecounter`, + `kern.tty`, + `kern.watchdog`, + `net.bpf`, + `net.ifq`, + `net.inet`, + `net.inet.ah`, + `net.inet.carp`, + `net.inet.divert`, + `net.inet.esp`, + `net.inet.etherip`, + `net.inet.gre`, + `net.inet.icmp`, + `net.inet.igmp`, + `net.inet.ip`, + `net.inet.ip.ifq`, + `net.inet.ipcomp`, + `net.inet.ipip`, + `net.inet.mobileip`, + `net.inet.pfsync`, + `net.inet.pim`, + `net.inet.tcp`, + `net.inet.udp`, + `net.inet6`, + `net.inet6.divert`, + `net.inet6.ip6`, + `net.inet6.icmp6`, + `net.inet6.pim6`, + `net.inet6.tcp6`, + `net.inet6.udp6`, + `net.mpls`, + `net.mpls.ifq`, + `net.key`, + `net.pflow`, + `net.pfsync`, + `net.pipex`, + `net.rt`, + `vm.swapencrypt`, + //vfsgenctl /* Special handling required */ + } + + // Node name "fixups" + ctlMap := map[string]string{ + "ipproto": "net.inet", + "net.inet.ipproto": "net.inet", + "net.inet6.ipv6proto": "net.inet6", + "net.inet6.ipv6": "net.inet6.ip6", + "net.inet.icmpv6": "net.inet6.icmp6", + "net.inet6.divert6": "net.inet6.divert", + "net.inet6.tcp6": "net.inet.tcp", + "net.inet6.udp6": "net.inet.udp", + "mpls": "net.mpls", + "swpenc": "vm.swapencrypt", + } + + // Node mappings + nodeMap = map[string]string{ + "net.inet.ip.ifq": "net.ifq", + "net.inet.pfsync": "net.pfsync", + "net.mpls.ifq": "net.ifq", + } + + mCtls := make(map[string]bool) + for _, ctl := range ctls { + mCtls[ctl] = true + } + + for _, header := range headers { + debug("Processing " + header) + file, err := os.Open(filepath.Join("/usr/include", header)) + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + os.Exit(1) + } + s := bufio.NewScanner(file) + for s.Scan() { + var sub []string + if reMatch(ctlNames1RE, s.Text(), &sub) || + reMatch(ctlNames2RE, s.Text(), &sub) || + reMatch(ctlNames3RE, s.Text(), &sub) { + if sub[1] == `CTL_NAMES` { + // Top level. + node = &mib + } else { + // Node. + nodename := strings.ToLower(sub[2]) + ctlName := "" + if reMatch(netInetRE, header, &sub) { + ctlName = "net.inet." + nodename + } else if reMatch(netInet6RE, header, &sub) { + ctlName = "net.inet6." + nodename + } else if reMatch(netRE, header, &sub) { + ctlName = "net." + nodename + } else { + ctlName = nodename + ctlName = fsNetKernRE.ReplaceAllString(ctlName, `$1.`) + } + + if val, ok := ctlMap[ctlName]; ok { + ctlName = val + } + if _, ok := mCtls[ctlName]; !ok { + debug("Ignoring " + ctlName + "...") + continue + } + + // Walk down from the top of the MIB. + node = &mib + for _, part := range strings.Split(ctlName, ".") { + if _, ok := (*node)[part]; !ok { + debug("Missing node " + part) + (*node)[part] = nodeElement{n: 0, t: "", pE: &map[string]nodeElement{}} + } + node = (*node)[part].pE + } + } + + // Populate current node with entries. + i := -1 + for !strings.HasPrefix(s.Text(), "}") { + s.Scan() + if reMatch(bracesRE, s.Text(), &sub) { + i++ + } + if !reMatch(ctlTypeRE, s.Text(), &sub) { + continue + } + (*node)[sub[1]] = nodeElement{n: i, t: sub[2], pE: &map[string]nodeElement{}} + } + } + } + err = s.Err() + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + os.Exit(1) + } + file.Close() + } + buildSysctl(&mib, "", []int{}) + + sort.Strings(sysCtl) + text := strings.Join(sysCtl, "") + + fmt.Printf(srcTemplate, cmdLine(), buildTags(), text) +} + +const srcTemplate = `// %s +// Code generated by the command above; DO NOT EDIT. + +// +build %s + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry { +%s +} +` diff --git a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl b/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl deleted file mode 100644 index 20632e1..0000000 --- a/vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env perl - -# Copyright 2011 The Go Authors. All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# -# Parse the header files for OpenBSD and generate a Go usable sysctl MIB. -# -# Build a MIB with each entry being an array containing the level, type and -# a hash that will contain additional entries if the current entry is a node. -# We then walk this MIB and create a flattened sysctl name to OID hash. -# - -use strict; - -if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") { - print STDERR "GOARCH or GOOS not defined in environment\n"; - exit 1; -} - -my $debug = 0; -my %ctls = (); - -my @headers = qw ( - sys/sysctl.h - sys/socket.h - sys/tty.h - sys/malloc.h - sys/mount.h - sys/namei.h - sys/sem.h - sys/shm.h - sys/vmmeter.h - uvm/uvmexp.h - uvm/uvm_param.h - uvm/uvm_swap_encrypt.h - ddb/db_var.h - net/if.h - net/if_pfsync.h - net/pipex.h - netinet/in.h - netinet/icmp_var.h - netinet/igmp_var.h - netinet/ip_ah.h - netinet/ip_carp.h - netinet/ip_divert.h - netinet/ip_esp.h - netinet/ip_ether.h - netinet/ip_gre.h - netinet/ip_ipcomp.h - netinet/ip_ipip.h - netinet/pim_var.h - netinet/tcp_var.h - netinet/udp_var.h - netinet6/in6.h - netinet6/ip6_divert.h - netinet6/pim6_var.h - netinet/icmp6.h - netmpls/mpls.h -); - -my @ctls = qw ( - kern - vm - fs - net - #debug # Special handling required - hw - #machdep # Arch specific - user - ddb - #vfs # Special handling required - fs.posix - kern.forkstat - kern.intrcnt - kern.malloc - kern.nchstats - kern.seminfo - kern.shminfo - kern.timecounter - kern.tty - kern.watchdog - net.bpf - net.ifq - net.inet - net.inet.ah - net.inet.carp - net.inet.divert - net.inet.esp - net.inet.etherip - net.inet.gre - net.inet.icmp - net.inet.igmp - net.inet.ip - net.inet.ip.ifq - net.inet.ipcomp - net.inet.ipip - net.inet.mobileip - net.inet.pfsync - net.inet.pim - net.inet.tcp - net.inet.udp - net.inet6 - net.inet6.divert - net.inet6.ip6 - net.inet6.icmp6 - net.inet6.pim6 - net.inet6.tcp6 - net.inet6.udp6 - net.mpls - net.mpls.ifq - net.key - net.pflow - net.pfsync - net.pipex - net.rt - vm.swapencrypt - #vfsgenctl # Special handling required -); - -# Node name "fixups" -my %ctl_map = ( - "ipproto" => "net.inet", - "net.inet.ipproto" => "net.inet", - "net.inet6.ipv6proto" => "net.inet6", - "net.inet6.ipv6" => "net.inet6.ip6", - "net.inet.icmpv6" => "net.inet6.icmp6", - "net.inet6.divert6" => "net.inet6.divert", - "net.inet6.tcp6" => "net.inet.tcp", - "net.inet6.udp6" => "net.inet.udp", - "mpls" => "net.mpls", - "swpenc" => "vm.swapencrypt" -); - -# Node mappings -my %node_map = ( - "net.inet.ip.ifq" => "net.ifq", - "net.inet.pfsync" => "net.pfsync", - "net.mpls.ifq" => "net.ifq" -); - -my $ctlname; -my %mib = (); -my %sysctl = (); -my $node; - -sub debug() { - print STDERR "$_[0]\n" if $debug; -} - -# Walk the MIB and build a sysctl name to OID mapping. -sub build_sysctl() { - my ($node, $name, $oid) = @_; - my %node = %{$node}; - my @oid = @{$oid}; - - foreach my $key (sort keys %node) { - my @node = @{$node{$key}}; - my $nodename = $name.($name ne '' ? '.' : '').$key; - my @nodeoid = (@oid, $node[0]); - if ($node[1] eq 'CTLTYPE_NODE') { - if (exists $node_map{$nodename}) { - $node = \%mib; - $ctlname = $node_map{$nodename}; - foreach my $part (split /\./, $ctlname) { - $node = \%{@{$$node{$part}}[2]}; - } - } else { - $node = $node[2]; - } - &build_sysctl($node, $nodename, \@nodeoid); - } elsif ($node[1] ne '') { - $sysctl{$nodename} = \@nodeoid; - } - } -} - -foreach my $ctl (@ctls) { - $ctls{$ctl} = $ctl; -} - -# Build MIB -foreach my $header (@headers) { - &debug("Processing $header..."); - open HEADER, "/usr/include/$header" || - print STDERR "Failed to open $header\n"; - while (
          ) { - if ($_ =~ /^#define\s+(CTL_NAMES)\s+{/ || - $_ =~ /^#define\s+(CTL_(.*)_NAMES)\s+{/ || - $_ =~ /^#define\s+((.*)CTL_NAMES)\s+{/) { - if ($1 eq 'CTL_NAMES') { - # Top level. - $node = \%mib; - } else { - # Node. - my $nodename = lc($2); - if ($header =~ /^netinet\//) { - $ctlname = "net.inet.$nodename"; - } elsif ($header =~ /^netinet6\//) { - $ctlname = "net.inet6.$nodename"; - } elsif ($header =~ /^net\//) { - $ctlname = "net.$nodename"; - } else { - $ctlname = "$nodename"; - $ctlname =~ s/^(fs|net|kern)_/$1\./; - } - if (exists $ctl_map{$ctlname}) { - $ctlname = $ctl_map{$ctlname}; - } - if (not exists $ctls{$ctlname}) { - &debug("Ignoring $ctlname..."); - next; - } - - # Walk down from the top of the MIB. - $node = \%mib; - foreach my $part (split /\./, $ctlname) { - if (not exists $$node{$part}) { - &debug("Missing node $part"); - $$node{$part} = [ 0, '', {} ]; - } - $node = \%{@{$$node{$part}}[2]}; - } - } - - # Populate current node with entries. - my $i = -1; - while (defined($_) && $_ !~ /^}/) { - $_ =
          ; - $i++ if $_ =~ /{.*}/; - next if $_ !~ /{\s+"(\w+)",\s+(CTLTYPE_[A-Z]+)\s+}/; - $$node{$1} = [ $i, $2, {} ]; - } - } - } - close HEADER; -} - -&build_sysctl(\%mib, "", []); - -print <>= 32 + stat.Mtim.Nsec >>= 32 + stat.Ctim.Nsec >>= 32 +} + +func Fstat(fd int, stat *Stat_t) error { + err := fstat(fd, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Fstatat(dirfd int, path string, stat *Stat_t, flags int) error { + err := fstatat(dirfd, path, stat, flags) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Lstat(path string, stat *Stat_t) error { + err := lstat(path, stat) + if err != nil { + return err + } + fixStatTimFields(stat) + return nil +} + +func Stat(path string, statptr *Stat_t) error { + err := stat(path, statptr) + if err != nil { + return err + } + fixStatTimFields(statptr) + return nil +} diff --git a/vendor/golang.org/x/sys/unix/syscall_bsd.go b/vendor/golang.org/x/sys/unix/syscall_bsd.go index 33c8b5f..97a8eef 100644 --- a/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -63,15 +63,6 @@ func Setgroups(gids []int) (err error) { return setgroups(len(a), &a[0]) } -func ReadDirent(fd int, buf []byte) (n int, err error) { - // Final argument is (basep *uintptr) and the syscall doesn't take nil. - // 64 bits should be enough. (32 bits isn't even on 386). Since the - // actual system call is getdirentries64, 64 is a good guess. - // TODO(rsc): Can we use a single global basep for all calls? - var base = (*uintptr)(unsafe.Pointer(new(uint64))) - return Getdirentries(fd, buf, base) -} - // Wait status is 7 bits at bottom, either 0 (exited), // 0x7F (stopped), or a signal number that caused an exit. // The 0x80 bit is whether there was a core dump. @@ -86,6 +77,7 @@ const ( shift = 8 exited = 0 + killed = 9 stopped = 0x7F ) @@ -112,6 +104,8 @@ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 } func (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP } +func (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL } + func (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP } func (w WaitStatus) StopSignal() syscall.Signal { diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 2120091..f26a19e 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -77,7 +77,18 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } -//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) } func PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) } @@ -328,43 +339,6 @@ func Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(sig //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} n := unsafe.Sizeof(uname.Sysname) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index 489726f..cd8be18 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -10,6 +10,8 @@ import ( "syscall" ) +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index 914b89b..d0d0724 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -10,6 +10,8 @@ import ( "syscall" ) +//sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error) + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index 4a284cf..01e8a38 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -8,6 +8,10 @@ import ( "syscall" ) +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: int32(sec), Nsec: int32(nsec)} } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 52dcd88..e674f81 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -10,6 +10,10 @@ import ( "syscall" ) +func ptrace(request int, pid int, addr uintptr, data uintptr) error { + return ENOTSUP +} + func setTimespec(sec, nsec int64) Timespec { return Timespec{Sec: sec, Nsec: nsec} } diff --git a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index 962eee3..474181c 100644 --- a/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -57,6 +57,22 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + namlen, ok := direntNamlen(buf) + if !ok { + return 0, false + } + return (16 + namlen + 1 + 7) &^ 7, true +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + //sysnb pipe() (r int, w int, err error) func Pipe(p []int) (err error) { @@ -134,43 +150,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error { err := sysctl(mib, old, oldlen, nil, 0) if err != nil { @@ -269,6 +248,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) +//sys Getdents(fd int, buf []byte) (n int, err error) //sys Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) diff --git a/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/vendor/golang.org/x/sys/unix/syscall_freebsd.go index a7ca1eb..d95c443 100644 --- a/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -82,6 +82,18 @@ func nametomib(name string) (mib []_C_int, err error) { return buf[0 : n/siz], nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func Pipe(p []int) (err error) { return Pipe2(p, 0) } @@ -189,43 +201,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func Uname(uname *Utsname) error { mib := []_C_int{CTL_KERN, KERN_OSTYPE} n := unsafe.Sizeof(uname.Sysname) @@ -362,7 +337,21 @@ func Getdents(fd int, buf []byte) (n int, err error) { func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { if supportsABI(_ino64First) { - return getdirentries_freebsd12(fd, buf, basep) + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) + } + // The freebsd12 syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries_freebsd12(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return } // The old syscall entries are smaller than the new. Use 1/4 of the original @@ -404,22 +393,22 @@ func roundup(x, y int) int { func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { *s = Stat_t{ - Dev: uint64(old.Dev), - Ino: uint64(old.Ino), - Nlink: uint64(old.Nlink), - Mode: old.Mode, - Uid: old.Uid, - Gid: old.Gid, - Rdev: uint64(old.Rdev), - Atim: old.Atim, - Mtim: old.Mtim, - Ctim: old.Ctim, - Birthtim: old.Birthtim, - Size: old.Size, - Blocks: old.Blocks, - Blksize: old.Blksize, - Flags: old.Flags, - Gen: uint64(old.Gen), + Dev: uint64(old.Dev), + Ino: uint64(old.Ino), + Nlink: uint64(old.Nlink), + Mode: old.Mode, + Uid: old.Uid, + Gid: old.Gid, + Rdev: uint64(old.Rdev), + Atim: old.Atim, + Mtim: old.Mtim, + Ctim: old.Ctim, + Btim: old.Btim, + Size: old.Size, + Blocks: old.Blocks, + Blksize: old.Blksize, + Flags: old.Flags, + Gen: uint64(old.Gen), } } @@ -507,6 +496,70 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e return sendfile(outfd, infd, offset, count) } +//sys ptrace(request int, pid int, addr uintptr, data int) (err error) + +func PtraceAttach(pid int) (err error) { + return ptrace(PTRACE_ATTACH, pid, 0, 0) +} + +func PtraceCont(pid int, signal int) (err error) { + return ptrace(PTRACE_CONT, pid, 1, signal) +} + +func PtraceDetach(pid int) (err error) { + return ptrace(PTRACE_DETACH, pid, 1, 0) +} + +func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { + return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) +} + +func PtraceGetFsBase(pid int, fsbase *int64) (err error) { + return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) +} + +func PtraceGetRegs(pid int, regsout *Reg) (err error) { + return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) +} + +func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint(countin)} + err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + return int(ioDesc.Len), err +} + +func PtraceLwpEvents(pid int, enable int) (err error) { + return ptrace(PTRACE_LWPEVENTS, pid, 0, enable) +} + +func PtraceLwpInfo(pid int, info uintptr) (err error) { + return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) +} + +func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong) +} + +func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) { + return PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong) +} + +func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong) +} + +func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { + return PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong) +} + +func PtraceSetRegs(pid int, regs *Reg) (err error) { + return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) +} + +func PtraceSingleStep(pid int) (err error) { + return ptrace(PTRACE_SINGLESTEP, pid, 1, 0) +} + /* * Exposed directly */ @@ -555,7 +608,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) //sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) -//sys getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) +//sys getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) //sysnb Geteuid() (uid int) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 7e429ab..fe30b95 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -13,7 +13,6 @@ package unix import ( "encoding/binary" - "net" "runtime" "syscall" "unsafe" @@ -72,6 +71,17 @@ func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { // ioctl itself should not be exposed directly, but additional get/set // functions for specific types are permissible. +// IoctlRetInt performs an ioctl operation specified by req on a device +// associated with opened file descriptor fd, and returns a non-negative +// integer that is returned by the ioctl syscall. +func IoctlRetInt(fd int, req uint) (int, error) { + ret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0) + if err != 0 { + return 0, err + } + return int(ret), nil +} + // IoctlSetPointerInt performs an ioctl operation which sets an // integer value on fd, using the specified request number. The ioctl // argument is called with a pointer to the integer value, rather than @@ -81,46 +91,18 @@ func IoctlSetPointerInt(fd int, req uint, value int) error { return ioctl(fd, req, uintptr(unsafe.Pointer(&v))) } -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - func IoctlSetRTCTime(fd int, value *RTCTime) error { err := ioctl(fd, RTC_SET_TIME, uintptr(unsafe.Pointer(value))) runtime.KeepAlive(value) return err } -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int +func IoctlGetUint32(fd int, req uint) (uint32, error) { + var value uint32 err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) return value, err } -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetRTCTime(fd int) (*RTCTime, error) { var value RTCTime err := ioctl(fd, RTC_RD_TIME, uintptr(unsafe.Pointer(&value))) @@ -759,7 +741,7 @@ const px_proto_oe = 0 type SockaddrPPPoE struct { SID uint16 - Remote net.HardwareAddr + Remote []byte Dev string raw RawSockaddrPPPoX } @@ -910,7 +892,7 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { } sa := &SockaddrPPPoE{ SID: binary.BigEndian.Uint16(pp[6:8]), - Remote: net.HardwareAddr(pp[8:14]), + Remote: pp[8:14], } for i := 14; i < 14+IFNAMSIZ; i++ { if pp[i] == 0 { @@ -1408,8 +1390,20 @@ func Reboot(cmd int) (err error) { return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "") } -func ReadDirent(fd int, buf []byte) (n int, err error) { - return Getdents(fd, buf) +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true } //sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) @@ -1444,6 +1438,8 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Acct(path string) (err error) //sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) //sys Adjtimex(buf *Timex) (state int, err error) +//sys Capget(hdr *CapUserHeader, data *CapUserData) (err error) +//sys Capset(hdr *CapUserHeader, data *CapUserData) (err error) //sys Chdir(path string) (err error) //sys Chroot(path string) (err error) //sys ClockGetres(clockid int32, res *Timespec) (err error) @@ -1531,9 +1527,13 @@ func Setgid(uid int) (err error) { return EOPNOTSUPP } +func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) { + return signalfd(fd, sigmask, _C__NSIG/8, flags) +} + //sys Setpriority(which int, who int, prio int) (err error) //sys Setxattr(path string, attr string, data []byte, flags int) (err error) -//sys Signalfd(fd int, mask *Sigset_t, flags int) = SYS_SIGNALFD4 +//sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4 //sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) //sys Sync() //sys Syncfs(fd int) (err error) @@ -1662,6 +1662,82 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { return EACCES } +//sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT +//sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT + +// fileHandle is the argument to nameToHandleAt and openByHandleAt. We +// originally tried to generate it via unix/linux/types.go with "type +// fileHandle C.struct_file_handle" but that generated empty structs +// for mips64 and mips64le. Instead, hard code it for now (it's the +// same everywhere else) until the mips64 generator issue is fixed. +type fileHandle struct { + Bytes uint32 + Type int32 +} + +// FileHandle represents the C struct file_handle used by +// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see +// OpenByHandleAt). +type FileHandle struct { + *fileHandle +} + +// NewFileHandle constructs a FileHandle. +func NewFileHandle(handleType int32, handle []byte) FileHandle { + const hdrSize = unsafe.Sizeof(fileHandle{}) + buf := make([]byte, hdrSize+uintptr(len(handle))) + copy(buf[hdrSize:], handle) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Type = handleType + fh.Bytes = uint32(len(handle)) + return FileHandle{fh} +} + +func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) } +func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type } +func (fh *FileHandle) Bytes() []byte { + n := fh.Size() + if n == 0 { + return nil + } + return (*[1 << 30]byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type)) + 4))[:n:n] +} + +// NameToHandleAt wraps the name_to_handle_at system call; it obtains +// a handle for a path name. +func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) { + var mid _C_int + // Try first with a small buffer, assuming the handle will + // only be 32 bytes. + size := uint32(32 + unsafe.Sizeof(fileHandle{})) + didResize := false + for { + buf := make([]byte, size) + fh := (*fileHandle)(unsafe.Pointer(&buf[0])) + fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{})) + err = nameToHandleAt(dirfd, path, fh, &mid, flags) + if err == EOVERFLOW { + if didResize { + // We shouldn't need to resize more than once + return + } + didResize = true + size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{})) + continue + } + if err != nil { + return + } + return FileHandle{fh}, int(mid), nil + } +} + +// OpenByHandleAt wraps the open_by_handle_at system call; it opens a +// file via a handle as previously returned by NameToHandleAt. +func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) { + return openByHandleAt(mountFD, handle.fileHandle, flags) +} + /* * Unimplemented */ @@ -1669,8 +1745,6 @@ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { // Alarm // ArchPrctl // Brk -// Capget -// Capset // ClockNanosleep // ClockSettime // Clone diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go index 3a3c37b..f626794 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm.go @@ -272,3 +272,16 @@ func SyncFileRange(fd int, off int64, n int64, flags int) error { // order of their arguments. return armSyncFileRange(fd, flags, off, n) } + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/vendor/golang.org/x/sys/unix/syscall_netbsd.go b/vendor/golang.org/x/sys/unix/syscall_netbsd.go index 5240e16..7f9812b 100644 --- a/vendor/golang.org/x/sys/unix/syscall_netbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_netbsd.go @@ -94,6 +94,18 @@ func nametomib(name string) (mib []_C_int, err error) { return mib, nil } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func SysctlClockinfo(name string) (*Clockinfo, error) { mib, err := sysctlmib(name) if err != nil { @@ -120,9 +132,30 @@ func Pipe(p []int) (err error) { return } -//sys getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return getdents(fd, buf) + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO + } + return } const ImplementsGetwd = true @@ -154,43 +187,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetPtmget(fd int, req uint) (*Ptmget, error) { var value Ptmget err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index c8648ec..9a26768 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -43,6 +43,18 @@ func nametomib(name string) (mib []_C_int, err error) { return nil, EINVAL } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen)) +} + func SysctlClockinfo(name string) (*Clockinfo, error) { mib, err := sysctlmib(name) if err != nil { @@ -89,9 +101,30 @@ func Pipe(p []int) (err error) { return } -//sys getdents(fd int, buf []byte) (n int, err error) +//sys Getdents(fd int, buf []byte) (n int, err error) func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - return getdents(fd, buf) + n, err = Getdents(fd, buf) + if err != nil || basep == nil { + return + } + + var off int64 + off, err = Seek(fd, 0, 1 /* SEEK_CUR */) + if err != nil { + *basep = ^uintptr(0) + return + } + *basep = uintptr(off) + if unsafe.Sizeof(*basep) == 8 { + return + } + if off>>32 != 0 { + // We can't stuff the offset back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO was allowed by getdirentries. + err = EIO + } + return } const ImplementsGetwd = true @@ -145,43 +178,6 @@ func setattrlistTimes(path string, times []Timespec, flags int) error { //sys ioctl(fd int, req uint, arg uintptr) (err error) -// ioctl itself should not be exposed directly, but additional get/set -// functions for specific types are permissible. - -// IoctlSetInt performs an ioctl operation which sets an integer value -// on fd, using the specified request number. -func IoctlSetInt(fd int, req uint, value int) error { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) error { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -// IoctlGetInt performs an ioctl operation which gets an integer value -// from fd, using the specified request number. -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go new file mode 100644 index 0000000..0fb39cf --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go @@ -0,0 +1,37 @@ +// Copyright 2019 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm64,openbsd + +package unix + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions +// of openbsd/amd64 the syscall is called sysctl instead of __sysctl. +const SYS___SYSCTL = SYS_SYSCTL diff --git a/vendor/golang.org/x/sys/unix/syscall_solaris.go b/vendor/golang.org/x/sys/unix/syscall_solaris.go index e478012..1610f55 100644 --- a/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -35,6 +35,22 @@ type SockaddrDatalink struct { raw RawSockaddrDatalink } +func direntIno(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino)) +} + +func direntReclen(buf []byte) (uint64, bool) { + return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen)) +} + +func direntNamlen(buf []byte) (uint64, bool) { + reclen, ok := direntReclen(buf) + if !ok { + return 0, false + } + return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true +} + //sysnb pipe(p *[2]_C_int) (n int, err error) func Pipe(p []int) (err error) { @@ -189,6 +205,7 @@ func Setgroups(gids []int) (err error) { return setgroups(len(a), &a[0]) } +// ReadDirent reads directory entries from fd and writes them into buf. func ReadDirent(fd int, buf []byte) (n int, err error) { // Final argument is (basep *uintptr) and the syscall doesn't take nil. // TODO(rsc): Can we use a single global basep for all calls? @@ -536,40 +553,10 @@ func Minor(dev uint64) uint32 { //sys ioctl(fd int, req uint, arg uintptr) (err error) -func IoctlSetInt(fd int, req uint, value int) (err error) { - return ioctl(fd, req, uintptr(value)) -} - -func ioctlSetWinsize(fd int, req uint, value *Winsize) (err error) { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - -func ioctlSetTermios(fd int, req uint, value *Termios) (err error) { - return ioctl(fd, req, uintptr(unsafe.Pointer(value))) -} - func IoctlSetTermio(fd int, req uint, value *Termio) (err error) { return ioctl(fd, req, uintptr(unsafe.Pointer(value))) } -func IoctlGetInt(fd int, req uint) (int, error) { - var value int - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return value, err -} - -func IoctlGetWinsize(fd int, req uint) (*Winsize, error) { - var value Winsize - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - -func IoctlGetTermios(fd int, req uint) (*Termios, error) { - var value Termios - err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) - return &value, err -} - func IoctlGetTermio(fd int, req uint) (*Termio, error) { var value Termio err := ioctl(fd, req, uintptr(unsafe.Pointer(&value))) diff --git a/vendor/golang.org/x/sys/unix/types_aix.go b/vendor/golang.org/x/sys/unix/types_aix.go index 25e8349..40d2bee 100644 --- a/vendor/golang.org/x/sys/unix/types_aix.go +++ b/vendor/golang.org/x/sys/unix/types_aix.go @@ -87,8 +87,6 @@ type Mode_t C.mode_t type Timespec C.struct_timespec -type StTimespec C.struct_st_timespec - type Timeval C.struct_timeval type Timeval32 C.struct_timeval32 @@ -133,6 +131,8 @@ type RawSockaddrInet6 C.struct_sockaddr_in6 type RawSockaddrUnix C.struct_sockaddr_un +type RawSockaddrDatalink C.struct_sockaddr_dl + type RawSockaddr C.struct_sockaddr type RawSockaddrAny C.struct_sockaddr_any @@ -156,17 +156,18 @@ type Linger C.struct_linger type Msghdr C.struct_msghdr const ( - SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in - SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - SizeofSockaddrAny = C.sizeof_struct_sockaddr_any - SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un - SizeofLinger = C.sizeof_struct_linger - SizeofIPMreq = C.sizeof_struct_ip_mreq - SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo - SizeofMsghdr = C.sizeof_struct_msghdr - SizeofCmsghdr = C.sizeof_struct_cmsghdr - SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter + SizeofSockaddrInet4 = C.sizeof_struct_sockaddr_in + SizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 + SizeofSockaddrAny = C.sizeof_struct_sockaddr_any + SizeofSockaddrUnix = C.sizeof_struct_sockaddr_un + SizeofSockaddrDatalink = C.sizeof_struct_sockaddr_dl + SizeofLinger = C.sizeof_struct_linger + SizeofIPMreq = C.sizeof_struct_ip_mreq + SizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq + SizeofIPv6MTUInfo = C.sizeof_struct_ip6_mtuinfo + SizeofMsghdr = C.sizeof_struct_msghdr + SizeofCmsghdr = C.sizeof_struct_cmsghdr + SizeofICMPv6Filter = C.sizeof_struct_icmp6_filter ) // Routing and interface messages diff --git a/vendor/golang.org/x/sys/unix/types_freebsd.go b/vendor/golang.org/x/sys/unix/types_freebsd.go index 7470798..a121dc3 100644 --- a/vendor/golang.org/x/sys/unix/types_freebsd.go +++ b/vendor/golang.org/x/sys/unix/types_freebsd.go @@ -243,11 +243,55 @@ const ( // Ptrace requests const ( - PTRACE_TRACEME = C.PT_TRACE_ME - PTRACE_CONT = C.PT_CONTINUE - PTRACE_KILL = C.PT_KILL + PTRACE_ATTACH = C.PT_ATTACH + PTRACE_CONT = C.PT_CONTINUE + PTRACE_DETACH = C.PT_DETACH + PTRACE_GETFPREGS = C.PT_GETFPREGS + PTRACE_GETFSBASE = C.PT_GETFSBASE + PTRACE_GETLWPLIST = C.PT_GETLWPLIST + PTRACE_GETNUMLWPS = C.PT_GETNUMLWPS + PTRACE_GETREGS = C.PT_GETREGS + PTRACE_GETXSTATE = C.PT_GETXSTATE + PTRACE_IO = C.PT_IO + PTRACE_KILL = C.PT_KILL + PTRACE_LWPEVENTS = C.PT_LWP_EVENTS + PTRACE_LWPINFO = C.PT_LWPINFO + PTRACE_SETFPREGS = C.PT_SETFPREGS + PTRACE_SETREGS = C.PT_SETREGS + PTRACE_SINGLESTEP = C.PT_STEP + PTRACE_TRACEME = C.PT_TRACE_ME ) +const ( + PIOD_READ_D = C.PIOD_READ_D + PIOD_WRITE_D = C.PIOD_WRITE_D + PIOD_READ_I = C.PIOD_READ_I + PIOD_WRITE_I = C.PIOD_WRITE_I +) + +const ( + PL_FLAG_BORN = C.PL_FLAG_BORN + PL_FLAG_EXITED = C.PL_FLAG_EXITED + PL_FLAG_SI = C.PL_FLAG_SI +) + +const ( + TRAP_BRKPT = C.TRAP_BRKPT + TRAP_TRACE = C.TRAP_TRACE +) + +type PtraceLwpInfoStruct C.struct_ptrace_lwpinfo + +type __Siginfo C.struct___siginfo + +type Sigset_t C.sigset_t + +type Reg C.struct_reg + +type FpReg C.struct_fpreg + +type PtraceIoDesc C.struct_ptrace_io_desc + // Events (kqueue, kevent) type Kevent_t C.struct_kevent_freebsd11 diff --git a/vendor/golang.org/x/sys/unix/types_netbsd.go b/vendor/golang.org/x/sys/unix/types_netbsd.go index 2dd4f95..4a96d72 100644 --- a/vendor/golang.org/x/sys/unix/types_netbsd.go +++ b/vendor/golang.org/x/sys/unix/types_netbsd.go @@ -254,6 +254,7 @@ type Ptmget C.struct_ptmget const ( AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) diff --git a/vendor/golang.org/x/sys/unix/types_openbsd.go b/vendor/golang.org/x/sys/unix/types_openbsd.go index 8aafbe4..775cb57 100644 --- a/vendor/golang.org/x/sys/unix/types_openbsd.go +++ b/vendor/golang.org/x/sys/unix/types_openbsd.go @@ -241,6 +241,7 @@ type Winsize C.struct_winsize const ( AT_FDCWD = C.AT_FDCWD + AT_SYMLINK_FOLLOW = C.AT_SYMLINK_FOLLOW AT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW ) diff --git a/vendor/golang.org/x/sys/unix/openbsd_unveil.go b/vendor/golang.org/x/sys/unix/unveil_openbsd.go similarity index 98% rename from vendor/golang.org/x/sys/unix/openbsd_unveil.go rename to vendor/golang.org/x/sys/unix/unveil_openbsd.go index aebc2dc..168d5ae 100644 --- a/vendor/golang.org/x/sys/unix/openbsd_unveil.go +++ b/vendor/golang.org/x/sys/unix/unveil_openbsd.go @@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build openbsd - package unix import ( diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go index 4b7b965..1def8a5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go @@ -926,6 +926,8 @@ const ( TCSETSF = 0x5404 TCSETSW = 0x5403 TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 TIOC = 0x5400 TIOCCBRK = 0x2000747a TIOCCDTR = 0x20007478 diff --git a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go index ed04fd1..03187de 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go @@ -3,7 +3,7 @@ // +build ppc64,aix -// Created by cgo -godefs - DO NOT EDIT +// Code generated by cmd/cgo -godefs; DO NOT EDIT. // cgo -godefs -- -maix64 _const.go package unix @@ -926,6 +926,8 @@ const ( TCSETSF = 0x5404 TCSETSW = 0x5403 TCXONC = 0x540b + TIMER_ABSTIME = 0x3e7 + TIMER_MAX = 0x20 TIOC = 0x5400 TIOCCBRK = 0x2000747a TIOCCDTR = 0x20007478 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 9e99d67..2839b3d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -585,6 +722,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -850,6 +988,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1012,6 +1151,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1052,6 +1205,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1246,6 +1408,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1653,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1864,6 +2031,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1957,6 +2128,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2005,6 +2177,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2016,9 +2190,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2060,6 +2242,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2294,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2277,6 +2462,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x800854db TUNGETIFF = 0x800454d2 @@ -2312,8 +2498,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2462,6 +2650,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index e3091f1..99e3a3d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -585,6 +722,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -850,6 +988,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1012,6 +1151,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1052,6 +1205,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1246,6 +1408,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1653,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1865,6 +2032,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1958,6 +2129,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2006,6 +2178,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2017,9 +2191,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2243,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2112,6 +2295,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2278,6 +2463,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2313,8 +2499,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2462,6 +2650,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index a75dfeb..f5f5ee5 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1871,6 +2038,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1964,6 +2135,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2012,6 +2184,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2023,9 +2197,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2067,6 +2249,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2118,6 +2301,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2284,6 +2469,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x400854d5 TUNDETACHFILTER = 0x400854d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x800854db TUNGETIFF = 0x800454d2 @@ -2319,8 +2505,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2468,6 +2656,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 393ad7c..64573bd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -415,6 +541,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -499,6 +626,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -507,8 +635,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -522,6 +654,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -530,6 +666,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -587,6 +724,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -852,6 +990,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1014,6 +1153,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1053,6 +1206,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1247,6 +1409,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1488,6 +1654,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1855,6 +2022,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1948,6 +2119,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1996,6 +2168,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2007,9 +2181,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2052,6 +2234,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2103,6 +2286,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2269,6 +2454,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2304,8 +2490,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2453,6 +2641,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index ba1beb9..3e948be 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1864,6 +2031,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2128,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -2005,6 +2177,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2190,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2243,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2294,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2279,6 +2464,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x400854db TUNGETIFF = 0x400454d2 @@ -2314,8 +2500,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2652,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index efba3e5..8ac128b 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1864,6 +2031,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2128,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -2005,6 +2177,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2190,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2243,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2294,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2279,6 +2464,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2314,8 +2500,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2652,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index d3f6e90..e8845a7 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1864,6 +2031,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2128,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -2005,6 +2177,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2190,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2243,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2294,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2279,6 +2464,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2314,8 +2500,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2652,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 7275cd8..338c044 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x40000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1864,6 +2031,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x467f SIOCOUTQ = 0x7472 SIOCOUTQNSD = 0x894b @@ -1957,6 +2128,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0xe @@ -2005,6 +2177,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x1006 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x28 @@ -2016,10 +2190,18 @@ const ( SO_SNDBUFFORCE = 0x1f SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x1005 SO_STYLE = 0x1008 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2061,6 +2243,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2111,6 +2294,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2279,6 +2464,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x800854d5 TUNDETACHFILTER = 0x800854d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x400854db TUNGETIFF = 0x400454d2 @@ -2314,8 +2500,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2464,6 +2652,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index 7586a13..a696532 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1049,6 +1202,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1245,6 +1407,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1653,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1922,6 +2089,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2015,6 +2186,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2063,6 +2235,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2074,9 +2248,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x11 SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2118,6 +2300,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2167,6 +2350,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2339,6 +2524,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2374,8 +2560,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2523,6 +2711,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index b861ec7..9197b33 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0xff CBAUDEX = 0x0 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x3000 CREAD = 0x800 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x100 CS7 = 0x200 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1049,6 +1202,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1245,6 +1407,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80000000 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1487,6 +1653,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1922,6 +2089,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2015,6 +2186,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2063,6 +2235,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 SO_RCVTIMEO = 0x12 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x12 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2074,9 +2248,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x11 SO_SNDTIMEO = 0x13 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x13 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2118,6 +2300,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2167,6 +2350,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2339,6 +2524,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2374,8 +2560,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2523,6 +2711,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index a321ec2..d1e023e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1852,6 +2019,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -1945,6 +2116,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -1993,6 +2165,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2004,9 +2178,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2048,6 +2230,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2099,6 +2282,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2265,6 +2450,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2300,8 +2486,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2449,6 +2637,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index f6c9916..1dfacf1 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -196,11 +196,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -208,8 +267,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -223,20 +290,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -264,6 +346,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -302,6 +423,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -320,6 +442,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -414,6 +540,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -497,6 +624,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -505,8 +633,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -520,6 +652,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -528,6 +664,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -584,6 +721,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x0 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -849,6 +987,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1011,6 +1150,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1050,6 +1203,15 @@ const ( MAP_STACK = 0x20000 MAP_SYNC = 0x80000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x1 MCL_FUTURE = 0x2 MCL_ONFAULT = 0x4 @@ -1244,6 +1406,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1485,6 +1651,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1925,6 +2092,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x541b SIOCOUTQ = 0x5411 SIOCOUTQNSD = 0x894b @@ -2018,6 +2189,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x33 SO_ATTACH_REUSEPORT_EBPF = 0x34 SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e SO_BPF_EXTENSIONS = 0x30 SO_BROADCAST = 0x6 SO_BSDCOMPAT = 0xe @@ -2066,6 +2238,8 @@ const ( SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 SO_REUSEADDR = 0x2 SO_REUSEPORT = 0xf SO_RXQ_OVFL = 0x28 @@ -2077,9 +2251,17 @@ const ( SO_SNDBUFFORCE = 0x20 SO_SNDLOWAT = 0x13 SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2121,6 +2303,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2172,6 +2355,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2338,6 +2523,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x401054d5 TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 TUNGETFEATURES = 0x800454cf TUNGETFILTER = 0x801054db TUNGETIFF = 0x800454d2 @@ -2373,8 +2559,10 @@ const ( UBI_IOCMKVOL = 0x40986f00 UBI_IOCRMVOL = 0x40046f01 UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 UBI_IOCRSVOL = 0x400c6f02 UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 UBI_IOCVOLCRBLK = 0x40804f07 UBI_IOCVOLRMBLK = 0x4f08 UBI_IOCVOLUP = 0x40084f00 @@ -2522,6 +2710,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index c1e95e2..b78e49f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -199,11 +199,70 @@ const ( BPF_A = 0x10 BPF_ABS = 0x20 BPF_ADD = 0x0 + BPF_ADJ_ROOM_ENCAP_L2_MASK = 0xff + BPF_ADJ_ROOM_ENCAP_L2_SHIFT = 0x38 BPF_ALU = 0x4 + BPF_ALU64 = 0x7 BPF_AND = 0x50 + BPF_ANY = 0x0 + BPF_ARSH = 0xc0 BPF_B = 0x10 + BPF_BUILD_ID_SIZE = 0x14 + BPF_CALL = 0x80 + BPF_DEVCG_ACC_MKNOD = 0x1 + BPF_DEVCG_ACC_READ = 0x2 + BPF_DEVCG_ACC_WRITE = 0x4 + BPF_DEVCG_DEV_BLOCK = 0x1 + BPF_DEVCG_DEV_CHAR = 0x2 BPF_DIV = 0x30 + BPF_DW = 0x18 + BPF_END = 0xd0 + BPF_EXIST = 0x2 + BPF_EXIT = 0x90 + BPF_FROM_BE = 0x8 + BPF_FROM_LE = 0x0 BPF_FS_MAGIC = 0xcafe4a11 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 = 0x2 + BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 = 0x4 + BPF_F_ADJ_ROOM_ENCAP_L4_GRE = 0x8 + BPF_F_ADJ_ROOM_ENCAP_L4_UDP = 0x10 + BPF_F_ADJ_ROOM_FIXED_GSO = 0x1 + BPF_F_ALLOW_MULTI = 0x2 + BPF_F_ALLOW_OVERRIDE = 0x1 + BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_CTXLEN_MASK = 0xfffff00000000 + BPF_F_CURRENT_CPU = 0xffffffff + BPF_F_CURRENT_NETNS = -0x1 + BPF_F_DONT_FRAGMENT = 0x4 + BPF_F_FAST_STACK_CMP = 0x200 + BPF_F_HDR_FIELD_MASK = 0xf + BPF_F_INDEX_MASK = 0xffffffff + BPF_F_INGRESS = 0x1 + BPF_F_INVALIDATE_HASH = 0x2 + BPF_F_LOCK = 0x4 + BPF_F_MARK_ENFORCE = 0x40 + BPF_F_MARK_MANGLED_0 = 0x20 + BPF_F_NO_COMMON_LRU = 0x2 + BPF_F_NO_PREALLOC = 0x1 + BPF_F_NUMA_NODE = 0x4 + BPF_F_PSEUDO_HDR = 0x10 + BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_RDONLY = 0x8 + BPF_F_RDONLY_PROG = 0x80 + BPF_F_RECOMPUTE_CSUM = 0x1 + BPF_F_REUSE_STACKID = 0x400 + BPF_F_SEQ_NUMBER = 0x8 + BPF_F_SKIP_FIELD_MASK = 0xff + BPF_F_STACK_BUILD_ID = 0x20 + BPF_F_STRICT_ALIGNMENT = 0x1 + BPF_F_SYSCTL_BASE_NAME = 0x1 + BPF_F_TUNINFO_IPV6 = 0x1 + BPF_F_USER_BUILD_ID = 0x800 + BPF_F_USER_STACK = 0x100 + BPF_F_WRONLY = 0x10 + BPF_F_WRONLY_PROG = 0x100 + BPF_F_ZERO_CSUM_TX = 0x2 + BPF_F_ZERO_SEED = 0x40 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -211,8 +270,16 @@ const ( BPF_JEQ = 0x10 BPF_JGE = 0x30 BPF_JGT = 0x20 + BPF_JLE = 0xb0 + BPF_JLT = 0xa0 BPF_JMP = 0x5 + BPF_JMP32 = 0x6 + BPF_JNE = 0x50 BPF_JSET = 0x40 + BPF_JSGE = 0x70 + BPF_JSGT = 0x60 + BPF_JSLE = 0xd0 + BPF_JSLT = 0xc0 BPF_K = 0x0 BPF_LD = 0x0 BPF_LDX = 0x1 @@ -226,20 +293,35 @@ const ( BPF_MINOR_VERSION = 0x1 BPF_MISC = 0x7 BPF_MOD = 0x90 + BPF_MOV = 0xb0 BPF_MSH = 0xa0 BPF_MUL = 0x20 BPF_NEG = 0x80 BPF_NET_OFF = -0x100000 + BPF_NOEXIST = 0x1 + BPF_OBJ_NAME_LEN = 0x10 BPF_OR = 0x40 + BPF_PSEUDO_CALL = 0x1 + BPF_PSEUDO_MAP_FD = 0x1 + BPF_PSEUDO_MAP_VALUE = 0x2 BPF_RET = 0x6 BPF_RSH = 0x70 + BPF_SK_STORAGE_GET_F_CREATE = 0x1 + BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7 + BPF_SOCK_OPS_RETRANS_CB_FLAG = 0x2 + BPF_SOCK_OPS_RTO_CB_FLAG = 0x1 + BPF_SOCK_OPS_STATE_CB_FLAG = 0x4 BPF_ST = 0x2 BPF_STX = 0x3 BPF_SUB = 0x10 + BPF_TAG_SIZE = 0x8 BPF_TAX = 0x0 + BPF_TO_BE = 0x8 + BPF_TO_LE = 0x0 BPF_TXA = 0x80 BPF_W = 0x0 BPF_X = 0x8 + BPF_XADD = 0xc0 BPF_XOR = 0xa0 BRKINT = 0x2 BS0 = 0x0 @@ -267,6 +349,45 @@ const ( CAN_SFF_MASK = 0x7ff CAN_TP16 = 0x3 CAN_TP20 = 0x4 + CAP_AUDIT_CONTROL = 0x1e + CAP_AUDIT_READ = 0x25 + CAP_AUDIT_WRITE = 0x1d + CAP_BLOCK_SUSPEND = 0x24 + CAP_CHOWN = 0x0 + CAP_DAC_OVERRIDE = 0x1 + CAP_DAC_READ_SEARCH = 0x2 + CAP_FOWNER = 0x3 + CAP_FSETID = 0x4 + CAP_IPC_LOCK = 0xe + CAP_IPC_OWNER = 0xf + CAP_KILL = 0x5 + CAP_LAST_CAP = 0x25 + CAP_LEASE = 0x1c + CAP_LINUX_IMMUTABLE = 0x9 + CAP_MAC_ADMIN = 0x21 + CAP_MAC_OVERRIDE = 0x20 + CAP_MKNOD = 0x1b + CAP_NET_ADMIN = 0xc + CAP_NET_BIND_SERVICE = 0xa + CAP_NET_BROADCAST = 0xb + CAP_NET_RAW = 0xd + CAP_SETFCAP = 0x1f + CAP_SETGID = 0x6 + CAP_SETPCAP = 0x8 + CAP_SETUID = 0x7 + CAP_SYSLOG = 0x22 + CAP_SYS_ADMIN = 0x15 + CAP_SYS_BOOT = 0x16 + CAP_SYS_CHROOT = 0x12 + CAP_SYS_MODULE = 0x10 + CAP_SYS_NICE = 0x17 + CAP_SYS_PACCT = 0x14 + CAP_SYS_PTRACE = 0x13 + CAP_SYS_RAWIO = 0x11 + CAP_SYS_RESOURCE = 0x18 + CAP_SYS_TIME = 0x19 + CAP_SYS_TTY_CONFIG = 0x1a + CAP_WAKE_ALARM = 0x23 CBAUD = 0x100f CBAUDEX = 0x1000 CFLUSH = 0xf @@ -305,6 +426,7 @@ const ( CLONE_NEWUTS = 0x4000000 CLONE_PARENT = 0x8000 CLONE_PARENT_SETTID = 0x100000 + CLONE_PIDFD = 0x1000 CLONE_PTRACE = 0x2000 CLONE_SETTLS = 0x80000 CLONE_SIGHAND = 0x800 @@ -323,6 +445,10 @@ const ( CRDLY = 0x600 CREAD = 0x80 CRTSCTS = 0x80000000 + CRYPTO_MAX_NAME = 0x40 + CRYPTO_MSG_MAX = 0x15 + CRYPTO_NR_MSGTYPES = 0x6 + CRYPTO_REPORT_MAXSIZE = 0x160 CS5 = 0x0 CS6 = 0x10 CS7 = 0x20 @@ -418,6 +544,7 @@ const ( ETH_P_DNA_RC = 0x6002 ETH_P_DNA_RT = 0x6003 ETH_P_DSA = 0x1b + ETH_P_DSA_8021Q = 0xdadb ETH_P_ECONET = 0x18 ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be @@ -501,6 +628,7 @@ const ( FAN_ALL_MARK_FLAGS = 0xff FAN_ALL_OUTGOING_EVENTS = 0x3403b FAN_ALL_PERM_EVENTS = 0x30000 + FAN_ATTRIB = 0x4 FAN_AUDIT = 0x10 FAN_CLASS_CONTENT = 0x4 FAN_CLASS_NOTIF = 0x0 @@ -509,8 +637,12 @@ const ( FAN_CLOSE = 0x18 FAN_CLOSE_NOWRITE = 0x10 FAN_CLOSE_WRITE = 0x8 + FAN_CREATE = 0x100 + FAN_DELETE = 0x200 + FAN_DELETE_SELF = 0x400 FAN_DENY = 0x2 FAN_ENABLE_AUDIT = 0x40 + FAN_EVENT_INFO_TYPE_FID = 0x1 FAN_EVENT_METADATA_LEN = 0x18 FAN_EVENT_ON_CHILD = 0x8000000 FAN_MARK_ADD = 0x1 @@ -524,6 +656,10 @@ const ( FAN_MARK_ONLYDIR = 0x8 FAN_MARK_REMOVE = 0x2 FAN_MODIFY = 0x2 + FAN_MOVE = 0xc0 + FAN_MOVED_FROM = 0x40 + FAN_MOVED_TO = 0x80 + FAN_MOVE_SELF = 0x800 FAN_NOFD = -0x1 FAN_NONBLOCK = 0x2 FAN_ONDIR = 0x40000000 @@ -532,6 +668,7 @@ const ( FAN_OPEN_EXEC_PERM = 0x40000 FAN_OPEN_PERM = 0x10000 FAN_Q_OVERFLOW = 0x4000 + FAN_REPORT_FID = 0x200 FAN_REPORT_TID = 0x100 FAN_UNLIMITED_MARKS = 0x20 FAN_UNLIMITED_QUEUE = 0x10 @@ -588,6 +725,7 @@ const ( F_OFD_SETLKW = 0x26 F_OK = 0x0 F_RDLCK = 0x1 + F_SEAL_FUTURE_WRITE = 0x10 F_SEAL_GROW = 0x4 F_SEAL_SEAL = 0x1 F_SEAL_SHRINK = 0x2 @@ -853,6 +991,7 @@ const ( IPV6_RECVRTHDR = 0x38 IPV6_RECVTCLASS = 0x42 IPV6_ROUTER_ALERT = 0x16 + IPV6_ROUTER_ALERT_ISOLATE = 0x1e IPV6_RTHDR = 0x39 IPV6_RTHDRDSTOPTS = 0x37 IPV6_RTHDR_LOOSE = 0x0 @@ -1015,6 +1154,20 @@ const ( LOCK_NB = 0x4 LOCK_SH = 0x1 LOCK_UN = 0x8 + LOOP_CLR_FD = 0x4c01 + LOOP_CTL_ADD = 0x4c80 + LOOP_CTL_GET_FREE = 0x4c82 + LOOP_CTL_REMOVE = 0x4c81 + LOOP_GET_STATUS = 0x4c03 + LOOP_GET_STATUS64 = 0x4c05 + LOOP_SET_BLOCK_SIZE = 0x4c09 + LOOP_SET_CAPACITY = 0x4c07 + LOOP_SET_DIRECT_IO = 0x4c08 + LOOP_SET_FD = 0x4c00 + LOOP_SET_STATUS = 0x4c02 + LOOP_SET_STATUS64 = 0x4c04 + LO_KEY_SIZE = 0x20 + LO_NAME_SIZE = 0x40 MADV_DODUMP = 0x11 MADV_DOFORK = 0xb MADV_DONTDUMP = 0x10 @@ -1054,6 +1207,15 @@ const ( MAP_SHARED_VALIDATE = 0x3 MAP_STACK = 0x20000 MAP_TYPE = 0xf + MCAST_BLOCK_SOURCE = 0x2b + MCAST_EXCLUDE = 0x0 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x2a + MCAST_JOIN_SOURCE_GROUP = 0x2e + MCAST_LEAVE_GROUP = 0x2d + MCAST_LEAVE_SOURCE_GROUP = 0x2f + MCAST_MSFILTER = 0x30 + MCAST_UNBLOCK_SOURCE = 0x2c MCL_CURRENT = 0x2000 MCL_FUTURE = 0x4000 MCL_ONFAULT = 0x8000 @@ -1248,6 +1410,10 @@ const ( NLM_F_ROOT = 0x100 NOFLSH = 0x80 NSFS_MAGIC = 0x6e736673 + NS_GET_NSTYPE = 0x2000b703 + NS_GET_OWNER_UID = 0x2000b704 + NS_GET_PARENT = 0x2000b702 + NS_GET_USERNS = 0x2000b701 OCFS2_SUPER_MAGIC = 0x7461636f OCRNL = 0x8 OFDEL = 0x80 @@ -1489,6 +1655,7 @@ const ( PR_SET_TSC = 0x1a PR_SET_UNALIGN = 0x6 PR_SPEC_DISABLE = 0x4 + PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 PR_SPEC_FORCE_DISABLE = 0x8 PR_SPEC_INDIRECT_BRANCH = 0x1 @@ -1917,6 +2084,10 @@ const ( SIOCGSKNS = 0x894c SIOCGSTAMP = 0x8906 SIOCGSTAMPNS = 0x8907 + SIOCGSTAMPNS_NEW = 0x40108907 + SIOCGSTAMPNS_OLD = 0x8907 + SIOCGSTAMP_NEW = 0x40108906 + SIOCGSTAMP_OLD = 0x8906 SIOCINQ = 0x4004667f SIOCOUTQ = 0x40047473 SIOCOUTQNSD = 0x894b @@ -2010,6 +2181,7 @@ const ( SO_ATTACH_REUSEPORT_CBPF = 0x35 SO_ATTACH_REUSEPORT_EBPF = 0x36 SO_BINDTODEVICE = 0xd + SO_BINDTOIFINDEX = 0x41 SO_BPF_EXTENSIONS = 0x32 SO_BROADCAST = 0x20 SO_BSDCOMPAT = 0x400 @@ -2058,6 +2230,8 @@ const ( SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 SO_RCVTIMEO = 0x2000 + SO_RCVTIMEO_NEW = 0x44 + SO_RCVTIMEO_OLD = 0x2000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_RXQ_OVFL = 0x24 @@ -2069,9 +2243,17 @@ const ( SO_SNDBUFFORCE = 0x100a SO_SNDLOWAT = 0x1000 SO_SNDTIMEO = 0x4000 + SO_SNDTIMEO_NEW = 0x45 + SO_SNDTIMEO_OLD = 0x4000 SO_TIMESTAMP = 0x1d SO_TIMESTAMPING = 0x23 + SO_TIMESTAMPING_NEW = 0x43 + SO_TIMESTAMPING_OLD = 0x23 SO_TIMESTAMPNS = 0x21 + SO_TIMESTAMPNS_NEW = 0x42 + SO_TIMESTAMPNS_OLD = 0x21 + SO_TIMESTAMP_NEW = 0x46 + SO_TIMESTAMP_OLD = 0x1d SO_TXTIME = 0x3f SO_TYPE = 0x1008 SO_VM_SOCKETS_BUFFER_MAX_SIZE = 0x2 @@ -2113,6 +2295,7 @@ const ( SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 SYNC_FILE_RANGE_WRITE = 0x2 + SYNC_FILE_RANGE_WRITE_AND_WAIT = 0x7 SYSFS_MAGIC = 0x62656572 S_BLKSIZE = 0x200 S_IEXEC = 0x40 @@ -2163,6 +2346,8 @@ const ( TCOFLUSH = 0x1 TCOOFF = 0x0 TCOON = 0x1 + TCP_BPF_IW = 0x3e9 + TCP_BPF_SNDCWND_CLAMP = 0x3ea TCP_CC_INFO = 0x1a TCP_CM_INQ = 0x24 TCP_CONGESTION = 0xd @@ -2327,6 +2512,7 @@ const ( TS_COMM_LEN = 0x20 TUNATTACHFILTER = 0x801054d5 TUNDETACHFILTER = 0x801054d6 + TUNGETDEVNETNS = 0x200054e3 TUNGETFEATURES = 0x400454cf TUNGETFILTER = 0x401054db TUNGETIFF = 0x400454d2 @@ -2362,8 +2548,10 @@ const ( UBI_IOCMKVOL = 0x80986f00 UBI_IOCRMVOL = 0x80046f01 UBI_IOCRNVOL = 0x91106f03 + UBI_IOCRPEB = 0x80046f04 UBI_IOCRSVOL = 0x800c6f02 UBI_IOCSETVOLPROP = 0x80104f06 + UBI_IOCSPEB = 0x80046f05 UBI_IOCVOLCRBLK = 0x80804f07 UBI_IOCVOLRMBLK = 0x20004f08 UBI_IOCVOLUP = 0x80084f00 @@ -2511,6 +2699,7 @@ const ( XDP_FLAGS_SKB_MODE = 0x2 XDP_FLAGS_UPDATE_IF_NOEXIST = 0x1 XDP_MMAP_OFFSETS = 0x1 + XDP_PACKET_HEADROOM = 0x100 XDP_PGOFF_RX_RING = 0x0 XDP_PGOFF_TX_RING = 0x80000000 XDP_RX_RING = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go new file mode 100644 index 0000000..ec5f92d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go @@ -0,0 +1,1789 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ALTWERASE = 0x200 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc010427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80104267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80104277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x8010426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_FILDROP_CAPTURE = 0x1 + BPF_FILDROP_DROP = 0x2 + BPF_FILDROP_PASS = 0x0 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x6 + CLOCK_MONOTONIC = 0x3 + CLOCK_PROCESS_CPUTIME_ID = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_THREAD_CPUTIME_ID = 0x4 + CLOCK_UPTIME = 0x5 + CREAD = 0x800 + CRTSCTS = 0x10000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DLT_USBPCAP = 0xf9 + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PBB = 0x88e7 + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_HARDMTU_LEN = 0xff9b + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_DEVICE = -0x8 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x8 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVL_ENCAPLEN = 0x4 + EVL_PRIO_BITS = 0xd + EVL_PRIO_MAX = 0x7 + EVL_VLID_MASK = 0xfff + EVL_VLID_MAX = 0xffe + EVL_VLID_MIN = 0x1 + EVL_VLID_NULL = 0x0 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_ISATTY = 0xb + F_OK = 0x0 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x20 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MBIM = 0xfa + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MINHOPCOUNT = 0x41 + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPDEFTTL = 0x25 + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IUCLC = 0x1000 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_CONCEAL = 0x8000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0xfff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_STACK = 0x4000 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MNT_ASYNC = 0x40 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_DOOMED = 0x8000000 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXRDONLY = 0x80 + MNT_FORCE = 0x80000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_NOATIME = 0x8000 + MNT_NODEV = 0x10 + MNT_NOEXEC = 0x4 + MNT_NOPERM = 0x20 + MNT_NOSUID = 0x8 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SOFTDEP = 0x4000000 + MNT_STALLED = 0x100000 + MNT_SWAPPABLE = 0x200000 + MNT_SYNCHRONOUS = 0x2 + MNT_UPDATE = 0x10000 + MNT_VISFLAGMASK = 0x400ffff + MNT_WAIT = 0x1 + MNT_WANTRDWR = 0x2000000 + MNT_WXALLOWED = 0x800 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFNAMES = 0x6 + NET_RT_MAXID = 0x7 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ATTRIB = 0x8 + NOTE_CHANGE = 0x1 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + OLCUC = 0x20 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BFD = 0xb + RTAX_BRD = 0x7 + RTAX_DNS = 0xc + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xf + RTAX_NETMASK = 0x2 + RTAX_SEARCH = 0xe + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTAX_STATIC = 0xd + RTA_AUTHOR = 0x40 + RTA_BFD = 0x800 + RTA_BRD = 0x80 + RTA_DNS = 0x1000 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SEARCH = 0x4000 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTA_STATIC = 0x2000 + RTF_ANNOUNCE = 0x4000 + RTF_BFD = 0x1000000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CACHED = 0x20000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_CONNECTED = 0x800000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x110fc08 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_MULTICAST = 0x200 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTM_80211INFO = 0x15 + RTM_ADD = 0x1 + RTM_BFD = 0x12 + RTM_CHANGE = 0x3 + RTM_CHGADDRATTR = 0x14 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_INVALIDATE = 0x11 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_PROPOSAL = 0x13 + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_BITS = 0x8 + RT_TABLEID_MASK = 0xff + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8060693c + SIOCBRDGADDL = 0x80606949 + SIOCBRDGADDS = 0x80606941 + SIOCBRDGARL = 0x808c694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8060693d + SIOCBRDGDELS = 0x80606942 + SIOCBRDGFLUSH = 0x80606948 + SIOCBRDGFRL = 0x808c694e + SIOCBRDGGCACHE = 0xc0186941 + SIOCBRDGGFD = 0xc0186952 + SIOCBRDGGHT = 0xc0186951 + SIOCBRDGGIFFLGS = 0xc060693e + SIOCBRDGGMA = 0xc0186953 + SIOCBRDGGPARAM = 0xc0406958 + SIOCBRDGGPRI = 0xc0186950 + SIOCBRDGGRL = 0xc030694f + SIOCBRDGGTO = 0xc0186946 + SIOCBRDGIFS = 0xc0606942 + SIOCBRDGRTS = 0xc0206943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80186940 + SIOCBRDGSFD = 0x80186952 + SIOCBRDGSHT = 0x80186951 + SIOCBRDGSIFCOST = 0x80606955 + SIOCBRDGSIFFLGS = 0x8060693f + SIOCBRDGSIFPRIO = 0x80606954 + SIOCBRDGSIFPROT = 0x8060694a + SIOCBRDGSMA = 0x80186953 + SIOCBRDGSPRI = 0x80186950 + SIOCBRDGSPROTO = 0x8018695a + SIOCBRDGSTO = 0x80186945 + SIOCBRDGSTXHC = 0x80186959 + SIOCDELLABEL = 0x80206997 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPARENT = 0x802069b4 + SIOCDIFPHYADDR = 0x80206949 + SIOCDPWE3NEIGHBOR = 0x802069de + SIOCDVNETID = 0x802069af + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETMPWCFG = 0xc02069ae + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0207534 + SIOCGETVIFCNT = 0xc0287533 + SIOCGETVLAN = 0xc0206990 + SIOCGIFADDR = 0xc0206921 + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc028698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGLIST = 0xc028698d + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFLLPRIO = 0xc02069b6 + SIOCGIFMEDIA = 0xc0406938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPAIR = 0xc02069b1 + SIOCGIFPARENT = 0xc02069b3 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFSFFPAGE = 0xc1126939 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYDF = 0xc02069c2 + SIOCGLIFPHYECN = 0xc02069c8 + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGPGRP = 0x40047309 + SIOCGPWE3 = 0xc0206998 + SIOCGPWE3CTRLWORD = 0xc02069dc + SIOCGPWE3FAT = 0xc02069dd + SIOCGPWE3NEIGHBOR = 0xc21869de + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGTXHPRIO = 0xc02069c6 + SIOCGUMBINFO = 0xc02069be + SIOCGUMBPARAM = 0xc02069c0 + SIOCGVH = 0xc02069f6 + SIOCGVNETFLOWID = 0xc02069c4 + SIOCGVNETID = 0xc02069a7 + SIOCIFAFATTACH = 0x801169ab + SIOCIFAFDETACH = 0x801169ac + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETMPWCFG = 0x802069ad + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8028698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFLLPRIO = 0x802069b5 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPAIR = 0x802069b0 + SIOCSIFPARENT = 0x802069b2 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYDF = 0x802069c1 + SIOCSLIFPHYECN = 0x802069c7 + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSPGRP = 0x80047308 + SIOCSPWE3CTRLWORD = 0x802069dc + SIOCSPWE3FAT = 0x802069dd + SIOCSPWE3NEIGHBOR = 0x821869de + SIOCSSPPPPARAMS = 0x80206993 + SIOCSTXHPRIO = 0x802069c5 + SIOCSUMBPARAM = 0x802069bf + SIOCSVH = 0xc02069f5 + SIOCSVNETFLOWID = 0x802069c3 + SIOCSVNETID = 0x802069a6 + SIOCSWGDPID = 0xc018695b + SIOCSWGMAXFLOW = 0xc0186960 + SIOCSWGMAXGROUP = 0xc018695d + SIOCSWSDPID = 0x8018695c + SIOCSWSPORTNO = 0xc060695f + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_DNS = 0x1000 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_ZEROIZE = 0x2000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCHKVERAUTH = 0x2000741e + TIOCCLRVERAUTH = 0x2000741d + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x4010745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSETVERAUTH = 0x8004741c + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TIOCUCNTL_CBRK = 0x7a + TIOCUCNTL_SBRK = 0x7b + TOSTOP = 0x400000 + UTIME_NOW = -0x2 + UTIME_OMIT = -0x1 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VM_ANONMIN = 0x7 + VM_LOADAVG = 0x2 + VM_MALLOC_CONF = 0xc + VM_MAXID = 0xd + VM_MAXSLP = 0xa + VM_METER = 0x1 + VM_NKMEMPAGES = 0x6 + VM_PSSTRINGS = 0x3 + VM_SWAPENCRYPT = 0x5 + VM_USPACE = 0xb + VM_UVMEXP = 0x4 + VM_VNODEMIN = 0x9 + VM_VTEXTMIN = 0x8 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 + XCASE = 0x1000000 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x5c) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5f) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5d) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EOWNERDEAD = syscall.Errno(0x5e) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5f) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EAGAIN", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disk quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC program not available"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIPSEC", "IPsec processing failure"}, + {83, "ENOATTR", "attribute not found"}, + {84, "EILSEQ", "illegal byte sequence"}, + {85, "ENOMEDIUM", "no medium found"}, + {86, "EMEDIUMTYPE", "wrong medium type"}, + {87, "EOVERFLOW", "value too large to be stored in data type"}, + {88, "ECANCELED", "operation canceled"}, + {89, "EIDRM", "identifier removed"}, + {90, "ENOMSG", "no message of desired type"}, + {91, "ENOTSUP", "not supported"}, + {92, "EBADMSG", "bad message"}, + {93, "ENOTRECOVERABLE", "state not recoverable"}, + {94, "EOWNERDEAD", "previous owner died"}, + {95, "ELAST", "protocol error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGABRT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "thread AST"}, +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go index 79f6e05..ed657ff 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go @@ -83,6 +83,8 @@ int lstat(uintptr_t, uintptr_t); int pause(); int pread64(int, uintptr_t, size_t, long long); int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); int setregid(int, int); int setreuid(int, int); @@ -103,8 +105,8 @@ int getpeername(int, uintptr_t, uintptr_t); int getsockname(int, uintptr_t, uintptr_t); int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); -int recvmsg(int, uintptr_t, int); -int sendmsg(int, uintptr_t, int); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); int munmap(uintptr_t, uintptr_t); int madvise(uintptr_t, size_t, int); int mprotect(uintptr_t, size_t, int); @@ -118,6 +120,8 @@ int poll(uintptr_t, int, int); int gettimeofday(uintptr_t, uintptr_t); int time(uintptr_t); int utime(uintptr_t, uintptr_t); +unsigned long long getsystemcfg(int); +int umount(uintptr_t); int getrlimit64(int, uintptr_t); int setrlimit64(int, uintptr_t); long long lseek64(int, long long, int); @@ -855,7 +859,7 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstat(fd int, stat *Stat_t) (err error) { +func fstat(fd int, stat *Stat_t) (err error) { r0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) if r0 == -1 && er != nil { err = er @@ -865,7 +869,7 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) r0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags)) if r0 == -1 && er != nil { @@ -949,7 +953,7 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Lstat(path string, stat *Stat_t) (err error) { +func lstat(path string, stat *Stat_t) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) r0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) if r0 == -1 && er != nil { @@ -1004,6 +1008,17 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout)))) + n = int(r0) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask)))) n = int(r0) @@ -1056,9 +1071,9 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Stat(path string, stat *Stat_t) (err error) { +func stat(path string, statptr *Stat_t) (err error) { _p0 := uintptr(unsafe.Pointer(C.CString(path))) - r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat)))) + r0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr)))) if r0 == -1 && er != nil { err = er } @@ -1225,7 +1240,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, er := C.recvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + r0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) n = int(r0) if r0 == -1 && er != nil { err = er @@ -1236,7 +1251,7 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, er := C.sendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) + r0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags)) n = int(r0) if r0 == -1 && er != nil { err = er @@ -1409,6 +1424,25 @@ func Utime(path string, buf *Utimbuf) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsystemcfg(label int) (n uint64) { + r0, _ := C.getsystemcfg(C.int(label)) + n = uint64(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func umount(target string) (err error) { + _p0 := uintptr(unsafe.Pointer(C.CString(target))) + r0, er := C.umount(C.uintptr_t(_p0)) + if r0 == -1 && er != nil { + err = er + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrlimit(resource int, rlim *Rlimit) (err error) { r0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim)))) if r0 == -1 && er != nil { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go index 52802bf..664b293 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go @@ -803,7 +803,7 @@ func Fchown(fd int, uid int, gid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstat(fd int, stat *Stat_t) (err error) { +func fstat(fd int, stat *Stat_t) (err error) { _, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat))) if e1 != 0 { err = errnoErr(e1) @@ -813,7 +813,7 @@ func Fstat(fd int, stat *Stat_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { +func fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -905,7 +905,7 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Lstat(path string, stat *Stat_t) (err error) { +func lstat(path string, stat *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -960,6 +960,17 @@ func Pwrite(fd int, p []byte, offset int64) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { r0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask))) n = int(r0) @@ -1012,13 +1023,13 @@ func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n i // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Stat(path string, stat *Stat_t) (err error) { +func stat(path string, statptr *Stat_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat))) + _, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr))) if e1 != 0 { err = errnoErr(e1) } @@ -1189,7 +1200,7 @@ func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) ( // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, e1 := callrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) + r0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1200,7 +1211,7 @@ func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { - r0, e1 := callsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) + r0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags) n = int(r0) if e1 != 0 { err = errnoErr(e1) @@ -1375,6 +1386,21 @@ func Getsystemcfg(label int) (n uint64) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func umount(target string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(target) + if err != nil { + return + } + _, e1 := callumount(uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getrlimit(resource int, rlim *Rlimit) (err error) { _, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim))) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go index a2b24e4..4b3a8ad 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go @@ -85,6 +85,7 @@ import ( //go:cgo_import_dynamic libc_pause pause "libc.a/shr_64.o" //go:cgo_import_dynamic libc_pread64 pread64 "libc.a/shr_64.o" //go:cgo_import_dynamic libc_pwrite64 pwrite64 "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_select select "libc.a/shr_64.o" //go:cgo_import_dynamic libc_pselect pselect "libc.a/shr_64.o" //go:cgo_import_dynamic libc_setregid setregid "libc.a/shr_64.o" //go:cgo_import_dynamic libc_setreuid setreuid "libc.a/shr_64.o" @@ -105,8 +106,8 @@ import ( //go:cgo_import_dynamic libc_getsockname getsockname "libc.a/shr_64.o" //go:cgo_import_dynamic libc_recvfrom recvfrom "libc.a/shr_64.o" //go:cgo_import_dynamic libc_sendto sendto "libc.a/shr_64.o" -//go:cgo_import_dynamic libc_recvmsg recvmsg "libc.a/shr_64.o" -//go:cgo_import_dynamic libc_sendmsg sendmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_nsendmsg nsendmsg "libc.a/shr_64.o" //go:cgo_import_dynamic libc_munmap munmap "libc.a/shr_64.o" //go:cgo_import_dynamic libc_madvise madvise "libc.a/shr_64.o" //go:cgo_import_dynamic libc_mprotect mprotect "libc.a/shr_64.o" @@ -121,6 +122,7 @@ import ( //go:cgo_import_dynamic libc_time time "libc.a/shr_64.o" //go:cgo_import_dynamic libc_utime utime "libc.a/shr_64.o" //go:cgo_import_dynamic libc_getsystemcfg getsystemcfg "libc.a/shr_64.o" +//go:cgo_import_dynamic libc_umount umount "libc.a/shr_64.o" //go:cgo_import_dynamic libc_getrlimit getrlimit "libc.a/shr_64.o" //go:cgo_import_dynamic libc_setrlimit setrlimit "libc.a/shr_64.o" //go:cgo_import_dynamic libc_lseek lseek "libc.a/shr_64.o" @@ -201,6 +203,7 @@ import ( //go:linkname libc_pause libc_pause //go:linkname libc_pread64 libc_pread64 //go:linkname libc_pwrite64 libc_pwrite64 +//go:linkname libc_select libc_select //go:linkname libc_pselect libc_pselect //go:linkname libc_setregid libc_setregid //go:linkname libc_setreuid libc_setreuid @@ -221,8 +224,8 @@ import ( //go:linkname libc_getsockname libc_getsockname //go:linkname libc_recvfrom libc_recvfrom //go:linkname libc_sendto libc_sendto -//go:linkname libc_recvmsg libc_recvmsg -//go:linkname libc_sendmsg libc_sendmsg +//go:linkname libc_nrecvmsg libc_nrecvmsg +//go:linkname libc_nsendmsg libc_nsendmsg //go:linkname libc_munmap libc_munmap //go:linkname libc_madvise libc_madvise //go:linkname libc_mprotect libc_mprotect @@ -237,6 +240,7 @@ import ( //go:linkname libc_time libc_time //go:linkname libc_utime libc_utime //go:linkname libc_getsystemcfg libc_getsystemcfg +//go:linkname libc_umount libc_umount //go:linkname libc_getrlimit libc_getrlimit //go:linkname libc_setrlimit libc_setrlimit //go:linkname libc_lseek libc_lseek @@ -320,6 +324,7 @@ var ( libc_pause, libc_pread64, libc_pwrite64, + libc_select, libc_pselect, libc_setregid, libc_setreuid, @@ -340,8 +345,8 @@ var ( libc_getsockname, libc_recvfrom, libc_sendto, - libc_recvmsg, - libc_sendmsg, + libc_nrecvmsg, + libc_nsendmsg, libc_munmap, libc_madvise, libc_mprotect, @@ -356,6 +361,7 @@ var ( libc_time, libc_utime, libc_getsystemcfg, + libc_umount, libc_getrlimit, libc_setrlimit, libc_lseek, @@ -893,6 +899,13 @@ func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask) return @@ -928,8 +941,8 @@ func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, stat, 0, 0, 0, 0) +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0) return } @@ -1033,15 +1046,15 @@ func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen u // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { - r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0) return } @@ -1145,6 +1158,13 @@ func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { r1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0) return diff --git a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go index 5491c89..cde4dbc 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go @@ -83,6 +83,8 @@ int lstat(uintptr_t, uintptr_t); int pause(); int pread64(int, uintptr_t, size_t, long long); int pwrite64(int, uintptr_t, size_t, long long); +#define c_select select +int select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t); int pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); int setregid(int, int); int setreuid(int, int); @@ -103,8 +105,8 @@ int getpeername(int, uintptr_t, uintptr_t); int getsockname(int, uintptr_t, uintptr_t); int recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); int sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t); -int recvmsg(int, uintptr_t, int); -int sendmsg(int, uintptr_t, int); +int nrecvmsg(int, uintptr_t, int); +int nsendmsg(int, uintptr_t, int); int munmap(uintptr_t, uintptr_t); int madvise(uintptr_t, size_t, int); int mprotect(uintptr_t, size_t, int); @@ -119,6 +121,7 @@ int gettimeofday(uintptr_t, uintptr_t); int time(uintptr_t); int utime(uintptr_t, uintptr_t); unsigned long long getsystemcfg(int); +int umount(uintptr_t); int getrlimit(int, uintptr_t); int setrlimit(int, uintptr_t); long long lseek(int, long long, int); @@ -732,6 +735,14 @@ func callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) { r1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask))) e1 = syscall.GetErrno() @@ -772,8 +783,8 @@ func callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(stat))) +func callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr))) e1 = syscall.GetErrno() return } @@ -892,16 +903,16 @@ func callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen u // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.recvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) +func callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) e1 = syscall.GetErrno() return } // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func callsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { - r1 = uintptr(C.sendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) +func callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags))) e1 = syscall.GetErrno() return } @@ -1020,6 +1031,14 @@ func callgetsystemcfg(label int) (r1 uintptr, e1 Errno) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func callumount(_p0 uintptr) (r1 uintptr, e1 Errno) { + r1 = uintptr(C.umount(C.uintptr_t(_p0))) + e1 = syscall.GetErrno() + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) { r1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim))) e1 = syscall.GetErrno() diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go index c4ec7ff..dd5ea36 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -377,16 +377,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := Syscall6(SYS_GETATTRLIST, uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -1691,6 +1681,16 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) sec = int32(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index 23346dc..78ca923 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -527,21 +527,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -2341,6 +2326,21 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) sec = int32(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s index 37b85b4..f40465c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s @@ -64,8 +64,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -264,6 +262,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index c142e33..64df03c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -527,21 +527,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { @@ -2356,6 +2341,21 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { + _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_ptrace_trampoline() + +//go:linkname libc_ptrace libc_ptrace +//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) sec = int64(r0) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 1a39151..debcb8e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -64,8 +64,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 @@ -266,6 +264,8 @@ TEXT ·libc_mmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_mmap(SB) TEXT ·libc_munmap_trampoline(SB),NOSPLIT,$0-0 JMP libc_munmap(SB) +TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 + JMP libc_ptrace(SB) TEXT ·libc_gettimeofday_trampoline(SB),NOSPLIT,$0-0 JMP libc_gettimeofday(SB) TEXT ·libc_fstat64_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index 01cffbf..ed33062 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -527,21 +527,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s index 994056f..66af9f4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s @@ -64,8 +64,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 8f2691d..5258a73 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -527,21 +527,6 @@ func libc_munlockall_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { - _, _, e1 := syscall_syscall6(funcPC(libc_ptrace_trampoline), uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_ptrace_trampoline() - -//go:linkname libc_ptrace libc_ptrace -//go:cgo_import_dynamic libc_ptrace ptrace "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error) { _, _, e1 := syscall_syscall6(funcPC(libc_getattrlist_trampoline), uintptr(unsafe.Pointer(path)), uintptr(list), uintptr(buf), uintptr(size), uintptr(options), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 61dc0d4..f57f48f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -64,8 +64,6 @@ TEXT ·libc_munlock_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlock(SB) TEXT ·libc_munlockall_trampoline(SB),NOSPLIT,$0-0 JMP libc_munlockall(SB) -TEXT ·libc_ptrace_trampoline(SB),NOSPLIT,$0-0 - JMP libc_ptrace(SB) TEXT ·libc_getattrlist_trampoline(SB),NOSPLIT,$0-0 JMP libc_getattrlist(SB) TEXT ·libc_pipe_trampoline(SB),NOSPLIT,$0-0 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go index ae9f1a2..cdfe931 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go @@ -749,6 +749,23 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index 80903e4..a783306 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index cd250ff..f995520 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 290a9c2..d681acd 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -387,6 +387,16 @@ func pipe2(p *[2]_C_int, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getcwd(buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index c6df9d2..5049b2e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -404,6 +404,16 @@ func Getcwd(buf []byte) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ioctl(fd int, req uint, arg uintptr) (err error) { _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) if e1 != 0 { @@ -1019,7 +1029,7 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go index 9855afa..c5e46e4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go index 773e251..da8819e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go index ccea621..6ad9be6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pipe(p *[2]_C_int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) if e1 != 0 { @@ -2340,3 +2390,18 @@ func armSyncFileRange(fd int, flags int, off int64, n int64) (err error) { } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go index 712c7a3..f883317 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go index 68b3251..8eebc6c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go index a8be407..ecf62a6 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go index 1351028..1ba0f7b 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go index 327b4f9..20012b2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go index c145bd3..2b520de 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go index cd8179c..d9f044c 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index 2e90cf0..9feed65 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go index fe9c7e1..0a65150 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Dup2(oldfd int, newfd int) (err error) { _, _, e1 := Syscall(SYS_DUP2, uintptr(oldfd), uintptr(newfd), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go index d4a2100..e27f669 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go @@ -408,6 +408,26 @@ func Adjtimex(buf *Timex) (state int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Capget(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Capset(hdr *CapUserHeader, data *CapUserData) (err error) { + _, _, e1 := Syscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Chdir(path string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1381,8 +1401,12 @@ func Setxattr(path string, attr string, data []byte, flags int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Signalfd(fd int, mask *Sigset_t, flags int) { - SyscallNoError(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(mask)), uintptr(flags)) +func signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) { + r0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0) + newfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } return } @@ -1679,6 +1703,32 @@ func faccessat(dirfd int, path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(pathname) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { var _p0 unsafe.Pointer if len(events) > 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go index 642db76..7e05826 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go index 59585fe..d94d076 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go index 6ec3143..cf5bf3d 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go index 603d144..243a931 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go @@ -389,7 +389,7 @@ func pipe() (fd1 int, fd2 int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 6a489fa..a9532d0 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 30cba43..0cb9f01 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index fa1beda..6fc99b5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -387,7 +387,7 @@ func pipe(p *[2]_C_int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdents(fd int, buf []byte) (n int, err error) { +func Getdents(fd int, buf []byte) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go new file mode 100644 index 0000000..27878a7 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -0,0 +1,1692 @@ +// go run mksyscall.go -openbsd -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) { + r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrtable() (rtable int, err error) { + r0, _, e1 := RawSyscall(SYS_GETRTABLE, 0, 0, 0) + rtable = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifoat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(dirfd int, path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrtable(rtable int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRTABLE, uintptr(rtable), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index b005031..37dcc74 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,6 +1,8 @@ // mksysctl_openbsd.pl // Code generated by the command above; DO NOT EDIT. +// +build 386,openbsd + package unix type mibentry struct { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index d014451..fe6caa6 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -1,4 +1,4 @@ -// mksysctl_openbsd.pl +// go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. // +build amd64,openbsd diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index b005031..6eb8c0b 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -1,6 +1,8 @@ -// mksysctl_openbsd.pl +// go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. +// +build arm,openbsd + package unix type mibentry struct { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go new file mode 100644 index 0000000..ba4304f --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go @@ -0,0 +1,275 @@ +// go run mksysctl_openbsd.go +// Code generated by the command above; DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +type mibentry struct { + ctlname string + ctloid []_C_int +} + +var sysctlMib = []mibentry{ + {"ddb.console", []_C_int{9, 6}}, + {"ddb.log", []_C_int{9, 7}}, + {"ddb.max_line", []_C_int{9, 3}}, + {"ddb.max_width", []_C_int{9, 2}}, + {"ddb.panic", []_C_int{9, 5}}, + {"ddb.profile", []_C_int{9, 9}}, + {"ddb.radix", []_C_int{9, 1}}, + {"ddb.tab_stop_width", []_C_int{9, 4}}, + {"ddb.trigger", []_C_int{9, 8}}, + {"fs.posix.setuid", []_C_int{3, 1, 1}}, + {"hw.allowpowerdown", []_C_int{6, 22}}, + {"hw.byteorder", []_C_int{6, 4}}, + {"hw.cpuspeed", []_C_int{6, 12}}, + {"hw.diskcount", []_C_int{6, 10}}, + {"hw.disknames", []_C_int{6, 8}}, + {"hw.diskstats", []_C_int{6, 9}}, + {"hw.machine", []_C_int{6, 1}}, + {"hw.model", []_C_int{6, 2}}, + {"hw.ncpu", []_C_int{6, 3}}, + {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, + {"hw.pagesize", []_C_int{6, 7}}, + {"hw.perfpolicy", []_C_int{6, 23}}, + {"hw.physmem", []_C_int{6, 19}}, + {"hw.product", []_C_int{6, 15}}, + {"hw.serialno", []_C_int{6, 17}}, + {"hw.setperf", []_C_int{6, 13}}, + {"hw.smt", []_C_int{6, 24}}, + {"hw.usermem", []_C_int{6, 20}}, + {"hw.uuid", []_C_int{6, 18}}, + {"hw.vendor", []_C_int{6, 14}}, + {"hw.version", []_C_int{6, 16}}, + {"kern.allowkmem", []_C_int{1, 52}}, + {"kern.argmax", []_C_int{1, 8}}, + {"kern.audio", []_C_int{1, 84}}, + {"kern.boottime", []_C_int{1, 21}}, + {"kern.bufcachepercent", []_C_int{1, 72}}, + {"kern.ccpu", []_C_int{1, 45}}, + {"kern.clockrate", []_C_int{1, 12}}, + {"kern.consdev", []_C_int{1, 75}}, + {"kern.cp_time", []_C_int{1, 40}}, + {"kern.cp_time2", []_C_int{1, 71}}, + {"kern.cpustats", []_C_int{1, 85}}, + {"kern.domainname", []_C_int{1, 22}}, + {"kern.file", []_C_int{1, 73}}, + {"kern.forkstat", []_C_int{1, 42}}, + {"kern.fscale", []_C_int{1, 46}}, + {"kern.fsync", []_C_int{1, 33}}, + {"kern.global_ptrace", []_C_int{1, 81}}, + {"kern.hostid", []_C_int{1, 11}}, + {"kern.hostname", []_C_int{1, 10}}, + {"kern.intrcnt.nintrcnt", []_C_int{1, 63, 1}}, + {"kern.job_control", []_C_int{1, 19}}, + {"kern.malloc.buckets", []_C_int{1, 39, 1}}, + {"kern.malloc.kmemnames", []_C_int{1, 39, 3}}, + {"kern.maxclusters", []_C_int{1, 67}}, + {"kern.maxfiles", []_C_int{1, 7}}, + {"kern.maxlocksperuid", []_C_int{1, 70}}, + {"kern.maxpartitions", []_C_int{1, 23}}, + {"kern.maxproc", []_C_int{1, 6}}, + {"kern.maxthread", []_C_int{1, 25}}, + {"kern.maxvnodes", []_C_int{1, 5}}, + {"kern.mbstat", []_C_int{1, 59}}, + {"kern.msgbuf", []_C_int{1, 48}}, + {"kern.msgbufsize", []_C_int{1, 38}}, + {"kern.nchstats", []_C_int{1, 41}}, + {"kern.netlivelocks", []_C_int{1, 76}}, + {"kern.nfiles", []_C_int{1, 56}}, + {"kern.ngroups", []_C_int{1, 18}}, + {"kern.nosuidcoredump", []_C_int{1, 32}}, + {"kern.nprocs", []_C_int{1, 47}}, + {"kern.nselcoll", []_C_int{1, 43}}, + {"kern.nthreads", []_C_int{1, 26}}, + {"kern.numvnodes", []_C_int{1, 58}}, + {"kern.osrelease", []_C_int{1, 2}}, + {"kern.osrevision", []_C_int{1, 3}}, + {"kern.ostype", []_C_int{1, 1}}, + {"kern.osversion", []_C_int{1, 27}}, + {"kern.pool_debug", []_C_int{1, 77}}, + {"kern.posix1version", []_C_int{1, 17}}, + {"kern.proc", []_C_int{1, 66}}, + {"kern.rawpartition", []_C_int{1, 24}}, + {"kern.saved_ids", []_C_int{1, 20}}, + {"kern.securelevel", []_C_int{1, 9}}, + {"kern.seminfo", []_C_int{1, 61}}, + {"kern.shminfo", []_C_int{1, 62}}, + {"kern.somaxconn", []_C_int{1, 28}}, + {"kern.sominconn", []_C_int{1, 29}}, + {"kern.splassert", []_C_int{1, 54}}, + {"kern.stackgap_random", []_C_int{1, 50}}, + {"kern.sysvipc_info", []_C_int{1, 51}}, + {"kern.sysvmsg", []_C_int{1, 34}}, + {"kern.sysvsem", []_C_int{1, 35}}, + {"kern.sysvshm", []_C_int{1, 36}}, + {"kern.timecounter.choice", []_C_int{1, 69, 4}}, + {"kern.timecounter.hardware", []_C_int{1, 69, 3}}, + {"kern.timecounter.tick", []_C_int{1, 69, 1}}, + {"kern.timecounter.timestepwarnings", []_C_int{1, 69, 2}}, + {"kern.tty.tk_cancc", []_C_int{1, 44, 4}}, + {"kern.tty.tk_nin", []_C_int{1, 44, 1}}, + {"kern.tty.tk_nout", []_C_int{1, 44, 2}}, + {"kern.tty.tk_rawcc", []_C_int{1, 44, 3}}, + {"kern.tty.ttyinfo", []_C_int{1, 44, 5}}, + {"kern.ttycount", []_C_int{1, 57}}, + {"kern.version", []_C_int{1, 4}}, + {"kern.watchdog.auto", []_C_int{1, 64, 2}}, + {"kern.watchdog.period", []_C_int{1, 64, 1}}, + {"kern.witnesswatch", []_C_int{1, 53}}, + {"kern.wxabort", []_C_int{1, 74}}, + {"net.bpf.bufsize", []_C_int{4, 31, 1}}, + {"net.bpf.maxbufsize", []_C_int{4, 31, 2}}, + {"net.inet.ah.enable", []_C_int{4, 2, 51, 1}}, + {"net.inet.ah.stats", []_C_int{4, 2, 51, 2}}, + {"net.inet.carp.allow", []_C_int{4, 2, 112, 1}}, + {"net.inet.carp.log", []_C_int{4, 2, 112, 3}}, + {"net.inet.carp.preempt", []_C_int{4, 2, 112, 2}}, + {"net.inet.carp.stats", []_C_int{4, 2, 112, 4}}, + {"net.inet.divert.recvspace", []_C_int{4, 2, 258, 1}}, + {"net.inet.divert.sendspace", []_C_int{4, 2, 258, 2}}, + {"net.inet.divert.stats", []_C_int{4, 2, 258, 3}}, + {"net.inet.esp.enable", []_C_int{4, 2, 50, 1}}, + {"net.inet.esp.stats", []_C_int{4, 2, 50, 4}}, + {"net.inet.esp.udpencap", []_C_int{4, 2, 50, 2}}, + {"net.inet.esp.udpencap_port", []_C_int{4, 2, 50, 3}}, + {"net.inet.etherip.allow", []_C_int{4, 2, 97, 1}}, + {"net.inet.etherip.stats", []_C_int{4, 2, 97, 2}}, + {"net.inet.gre.allow", []_C_int{4, 2, 47, 1}}, + {"net.inet.gre.wccp", []_C_int{4, 2, 47, 2}}, + {"net.inet.icmp.bmcastecho", []_C_int{4, 2, 1, 2}}, + {"net.inet.icmp.errppslimit", []_C_int{4, 2, 1, 3}}, + {"net.inet.icmp.maskrepl", []_C_int{4, 2, 1, 1}}, + {"net.inet.icmp.rediraccept", []_C_int{4, 2, 1, 4}}, + {"net.inet.icmp.redirtimeout", []_C_int{4, 2, 1, 5}}, + {"net.inet.icmp.stats", []_C_int{4, 2, 1, 7}}, + {"net.inet.icmp.tstamprepl", []_C_int{4, 2, 1, 6}}, + {"net.inet.igmp.stats", []_C_int{4, 2, 2, 1}}, + {"net.inet.ip.arpdown", []_C_int{4, 2, 0, 40}}, + {"net.inet.ip.arpqueued", []_C_int{4, 2, 0, 36}}, + {"net.inet.ip.arptimeout", []_C_int{4, 2, 0, 39}}, + {"net.inet.ip.encdebug", []_C_int{4, 2, 0, 12}}, + {"net.inet.ip.forwarding", []_C_int{4, 2, 0, 1}}, + {"net.inet.ip.ifq.congestion", []_C_int{4, 2, 0, 30, 4}}, + {"net.inet.ip.ifq.drops", []_C_int{4, 2, 0, 30, 3}}, + {"net.inet.ip.ifq.len", []_C_int{4, 2, 0, 30, 1}}, + {"net.inet.ip.ifq.maxlen", []_C_int{4, 2, 0, 30, 2}}, + {"net.inet.ip.maxqueue", []_C_int{4, 2, 0, 11}}, + {"net.inet.ip.mforwarding", []_C_int{4, 2, 0, 31}}, + {"net.inet.ip.mrtmfc", []_C_int{4, 2, 0, 37}}, + {"net.inet.ip.mrtproto", []_C_int{4, 2, 0, 34}}, + {"net.inet.ip.mrtstats", []_C_int{4, 2, 0, 35}}, + {"net.inet.ip.mrtvif", []_C_int{4, 2, 0, 38}}, + {"net.inet.ip.mtu", []_C_int{4, 2, 0, 4}}, + {"net.inet.ip.mtudisc", []_C_int{4, 2, 0, 27}}, + {"net.inet.ip.mtudisctimeout", []_C_int{4, 2, 0, 28}}, + {"net.inet.ip.multipath", []_C_int{4, 2, 0, 32}}, + {"net.inet.ip.portfirst", []_C_int{4, 2, 0, 7}}, + {"net.inet.ip.porthifirst", []_C_int{4, 2, 0, 9}}, + {"net.inet.ip.porthilast", []_C_int{4, 2, 0, 10}}, + {"net.inet.ip.portlast", []_C_int{4, 2, 0, 8}}, + {"net.inet.ip.redirect", []_C_int{4, 2, 0, 2}}, + {"net.inet.ip.sourceroute", []_C_int{4, 2, 0, 5}}, + {"net.inet.ip.stats", []_C_int{4, 2, 0, 33}}, + {"net.inet.ip.ttl", []_C_int{4, 2, 0, 3}}, + {"net.inet.ipcomp.enable", []_C_int{4, 2, 108, 1}}, + {"net.inet.ipcomp.stats", []_C_int{4, 2, 108, 2}}, + {"net.inet.ipip.allow", []_C_int{4, 2, 4, 1}}, + {"net.inet.ipip.stats", []_C_int{4, 2, 4, 2}}, + {"net.inet.mobileip.allow", []_C_int{4, 2, 55, 1}}, + {"net.inet.pfsync.stats", []_C_int{4, 2, 240, 1}}, + {"net.inet.tcp.ackonpush", []_C_int{4, 2, 6, 13}}, + {"net.inet.tcp.always_keepalive", []_C_int{4, 2, 6, 22}}, + {"net.inet.tcp.baddynamic", []_C_int{4, 2, 6, 6}}, + {"net.inet.tcp.drop", []_C_int{4, 2, 6, 19}}, + {"net.inet.tcp.ecn", []_C_int{4, 2, 6, 14}}, + {"net.inet.tcp.ident", []_C_int{4, 2, 6, 9}}, + {"net.inet.tcp.keepidle", []_C_int{4, 2, 6, 3}}, + {"net.inet.tcp.keepinittime", []_C_int{4, 2, 6, 2}}, + {"net.inet.tcp.keepintvl", []_C_int{4, 2, 6, 4}}, + {"net.inet.tcp.mssdflt", []_C_int{4, 2, 6, 11}}, + {"net.inet.tcp.reasslimit", []_C_int{4, 2, 6, 18}}, + {"net.inet.tcp.rfc1323", []_C_int{4, 2, 6, 1}}, + {"net.inet.tcp.rfc3390", []_C_int{4, 2, 6, 17}}, + {"net.inet.tcp.rootonly", []_C_int{4, 2, 6, 24}}, + {"net.inet.tcp.rstppslimit", []_C_int{4, 2, 6, 12}}, + {"net.inet.tcp.sack", []_C_int{4, 2, 6, 10}}, + {"net.inet.tcp.sackholelimit", []_C_int{4, 2, 6, 20}}, + {"net.inet.tcp.slowhz", []_C_int{4, 2, 6, 5}}, + {"net.inet.tcp.stats", []_C_int{4, 2, 6, 21}}, + {"net.inet.tcp.synbucketlimit", []_C_int{4, 2, 6, 16}}, + {"net.inet.tcp.syncachelimit", []_C_int{4, 2, 6, 15}}, + {"net.inet.tcp.synhashsize", []_C_int{4, 2, 6, 25}}, + {"net.inet.tcp.synuselimit", []_C_int{4, 2, 6, 23}}, + {"net.inet.udp.baddynamic", []_C_int{4, 2, 17, 2}}, + {"net.inet.udp.checksum", []_C_int{4, 2, 17, 1}}, + {"net.inet.udp.recvspace", []_C_int{4, 2, 17, 3}}, + {"net.inet.udp.rootonly", []_C_int{4, 2, 17, 6}}, + {"net.inet.udp.sendspace", []_C_int{4, 2, 17, 4}}, + {"net.inet.udp.stats", []_C_int{4, 2, 17, 5}}, + {"net.inet6.divert.recvspace", []_C_int{4, 24, 86, 1}}, + {"net.inet6.divert.sendspace", []_C_int{4, 24, 86, 2}}, + {"net.inet6.divert.stats", []_C_int{4, 24, 86, 3}}, + {"net.inet6.icmp6.errppslimit", []_C_int{4, 24, 30, 14}}, + {"net.inet6.icmp6.mtudisc_hiwat", []_C_int{4, 24, 30, 16}}, + {"net.inet6.icmp6.mtudisc_lowat", []_C_int{4, 24, 30, 17}}, + {"net.inet6.icmp6.nd6_debug", []_C_int{4, 24, 30, 18}}, + {"net.inet6.icmp6.nd6_delay", []_C_int{4, 24, 30, 8}}, + {"net.inet6.icmp6.nd6_maxnudhint", []_C_int{4, 24, 30, 15}}, + {"net.inet6.icmp6.nd6_mmaxtries", []_C_int{4, 24, 30, 10}}, + {"net.inet6.icmp6.nd6_umaxtries", []_C_int{4, 24, 30, 9}}, + {"net.inet6.icmp6.redirtimeout", []_C_int{4, 24, 30, 3}}, + {"net.inet6.ip6.auto_flowlabel", []_C_int{4, 24, 17, 17}}, + {"net.inet6.ip6.dad_count", []_C_int{4, 24, 17, 16}}, + {"net.inet6.ip6.dad_pending", []_C_int{4, 24, 17, 49}}, + {"net.inet6.ip6.defmcasthlim", []_C_int{4, 24, 17, 18}}, + {"net.inet6.ip6.forwarding", []_C_int{4, 24, 17, 1}}, + {"net.inet6.ip6.forwsrcrt", []_C_int{4, 24, 17, 5}}, + {"net.inet6.ip6.hdrnestlimit", []_C_int{4, 24, 17, 15}}, + {"net.inet6.ip6.hlim", []_C_int{4, 24, 17, 3}}, + {"net.inet6.ip6.log_interval", []_C_int{4, 24, 17, 14}}, + {"net.inet6.ip6.maxdynroutes", []_C_int{4, 24, 17, 48}}, + {"net.inet6.ip6.maxfragpackets", []_C_int{4, 24, 17, 9}}, + {"net.inet6.ip6.maxfrags", []_C_int{4, 24, 17, 41}}, + {"net.inet6.ip6.mforwarding", []_C_int{4, 24, 17, 42}}, + {"net.inet6.ip6.mrtmfc", []_C_int{4, 24, 17, 53}}, + {"net.inet6.ip6.mrtmif", []_C_int{4, 24, 17, 52}}, + {"net.inet6.ip6.mrtproto", []_C_int{4, 24, 17, 8}}, + {"net.inet6.ip6.mtudisctimeout", []_C_int{4, 24, 17, 50}}, + {"net.inet6.ip6.multicast_mtudisc", []_C_int{4, 24, 17, 44}}, + {"net.inet6.ip6.multipath", []_C_int{4, 24, 17, 43}}, + {"net.inet6.ip6.neighborgcthresh", []_C_int{4, 24, 17, 45}}, + {"net.inet6.ip6.redirect", []_C_int{4, 24, 17, 2}}, + {"net.inet6.ip6.soiikey", []_C_int{4, 24, 17, 54}}, + {"net.inet6.ip6.sourcecheck", []_C_int{4, 24, 17, 10}}, + {"net.inet6.ip6.sourcecheck_logint", []_C_int{4, 24, 17, 11}}, + {"net.inet6.ip6.use_deprecated", []_C_int{4, 24, 17, 21}}, + {"net.key.sadb_dump", []_C_int{4, 30, 1}}, + {"net.key.spd_dump", []_C_int{4, 30, 2}}, + {"net.mpls.ifq.congestion", []_C_int{4, 33, 3, 4}}, + {"net.mpls.ifq.drops", []_C_int{4, 33, 3, 3}}, + {"net.mpls.ifq.len", []_C_int{4, 33, 3, 1}}, + {"net.mpls.ifq.maxlen", []_C_int{4, 33, 3, 2}}, + {"net.mpls.mapttl_ip", []_C_int{4, 33, 5}}, + {"net.mpls.mapttl_ip6", []_C_int{4, 33, 6}}, + {"net.mpls.maxloop_inkernel", []_C_int{4, 33, 4}}, + {"net.mpls.ttl", []_C_int{4, 33, 2}}, + {"net.pflow.stats", []_C_int{4, 34, 1}}, + {"net.pipex.enable", []_C_int{4, 35, 1}}, + {"vm.anonmin", []_C_int{2, 7}}, + {"vm.loadavg", []_C_int{2, 2}}, + {"vm.malloc_conf", []_C_int{2, 12}}, + {"vm.maxslp", []_C_int{2, 10}}, + {"vm.nkmempages", []_C_int{2, 6}}, + {"vm.psstrings", []_C_int{2, 3}}, + {"vm.swapencrypt.enable", []_C_int{2, 5, 0}}, + {"vm.swapencrypt.keyscreated", []_C_int{2, 5, 1}}, + {"vm.swapencrypt.keysdeleted", []_C_int{2, 5, 2}}, + {"vm.uspace", []_C_int{2, 11}}, + {"vm.uvmexp", []_C_int{2, 4}}, + {"vm.vmmeter", []_C_int{2, 1}}, + {"vm.vnodemin", []_C_int{2, 9}}, + {"vm.vtextmin", []_C_int{2, 8}}, +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 55c3a32..9474974 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build 386,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index b39be6c..48a7bea 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build amd64,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index 44ffd4c..4a6dfd4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm,freebsd @@ -118,8 +118,6 @@ const ( SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } - SYS_FREEBSD6_PREAD = 173 // { ssize_t freebsd6_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } - SYS_FREEBSD6_PWRITE = 174 // { ssize_t freebsd6_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -133,10 +131,6 @@ const ( SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } - SYS_FREEBSD6_MMAP = 197 // { caddr_t freebsd6_mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); } - SYS_FREEBSD6_LSEEK = 199 // { off_t freebsd6_lseek(int fd, int pad, off_t offset, int whence); } - SYS_FREEBSD6_TRUNCATE = 200 // { int freebsd6_truncate(char *path, int pad, off_t length); } - SYS_FREEBSD6_FTRUNCATE = 201 // { int freebsd6_ftruncate(int fd, int pad, off_t length); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -164,6 +158,7 @@ const ( SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } @@ -197,13 +192,10 @@ const ( SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } - SYS_AIO_RETURN = 314 // { int aio_return(struct aiocb *aiocbp); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } - SYS_OAIO_READ = 318 // { int oaio_read(struct oaiocb *aiocbp); } - SYS_OAIO_WRITE = 319 // { int oaio_write(struct oaiocb *aiocbp); } - SYS_OLIO_LISTIO = 320 // { int olio_listio(int mode, struct oaiocb * const *acb_list, int nent, struct osigevent *sig); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } @@ -236,7 +228,7 @@ const ( SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { int aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } @@ -258,7 +250,7 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int flags); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } @@ -293,8 +285,6 @@ const ( SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } - SYS__UMTX_LOCK = 434 // { int _umtx_lock(struct umtx *umtx); } - SYS__UMTX_UNLOCK = 435 // { int _umtx_unlock(struct umtx *umtx); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } @@ -400,4 +390,7 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 9f21e95..3e51af8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master +// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master // Code generated by the command above; see README.md. DO NOT EDIT. // +build arm64,freebsd @@ -7,13 +7,13 @@ package unix const ( // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int - SYS_EXIT = 1 // { void sys_exit(int rval); } exit \ + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void SYS_FORK = 2 // { int fork(void); } - SYS_READ = 3 // { ssize_t read(int fd, void *buf, \ - SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, \ + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } SYS_CLOSE = 6 // { int close(int fd); } - SYS_WAIT4 = 7 // { int wait4(int pid, int *status, \ + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } SYS_LINK = 9 // { int link(char *path, char *link); } SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } @@ -21,20 +21,20 @@ const ( SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break \ + SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int SYS_GETPID = 20 // { pid_t getpid(void); } - SYS_MOUNT = 21 // { int mount(char *type, char *path, \ + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } SYS_SETUID = 23 // { int setuid(uid_t uid); } SYS_GETUID = 24 // { uid_t getuid(void); } SYS_GETEUID = 25 // { uid_t geteuid(void); } - SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, \ - SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, \ - SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, \ - SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, \ - SYS_ACCEPT = 30 // { int accept(int s, \ - SYS_GETPEERNAME = 31 // { int getpeername(int fdes, \ - SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, \ + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } SYS_ACCESS = 33 // { int access(char *path, int amode); } SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } @@ -42,56 +42,57 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } + SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } - SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, \ - SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, \ + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } SYS_GETGID = 47 // { gid_t getgid(void); } - SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int \ + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } SYS_ACCT = 51 // { int acct(char *path); } - SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, \ - SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, \ + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } SYS_REBOOT = 55 // { int reboot(int opt); } SYS_REVOKE = 56 // { int revoke(char *path); } SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } - SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, \ - SYS_EXECVE = 59 // { int execve(char *fname, char **argv, \ - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args \ + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int SYS_CHROOT = 61 // { int chroot(char *path); } - SYS_MSYNC = 65 // { int msync(void *addr, size_t len, \ + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise \ + SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, \ - SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, \ - SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, \ - SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, \ - SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, \ + SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } SYS_GETPGRP = 81 // { int getpgrp(void); } SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } - SYS_SETITIMER = 83 // { int setitimer(u_int which, struct \ + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } SYS_SWAPON = 85 // { int swapon(char *name); } - SYS_GETITIMER = 86 // { int getitimer(u_int which, \ + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } - SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, \ + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } SYS_FSYNC = 95 // { int fsync(int fd); } - SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, \ - SYS_SOCKET = 97 // { int socket(int domain, int type, \ - SYS_CONNECT = 98 // { int connect(int s, caddr_t name, \ + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } - SYS_BIND = 104 // { int bind(int s, caddr_t name, \ - SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, \ + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } SYS_LISTEN = 106 // { int listen(int s, int backlog); } - SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, \ - SYS_GETRUSAGE = 117 // { int getrusage(int who, \ - SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, \ - SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, \ - SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, \ - SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, \ + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } @@ -99,24 +100,24 @@ const ( SYS_RENAME = 128 // { int rename(char *from, char *to); } SYS_FLOCK = 131 // { int flock(int fd, int how); } SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } - SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, \ + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } - SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, \ + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } SYS_RMDIR = 137 // { int rmdir(char *path); } - SYS_UTIMES = 138 // { int utimes(char *path, \ - SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, \ + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } SYS_SETSID = 147 // { int setsid(void); } - SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, \ + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } - SYS_LGETFH = 160 // { int lgetfh(char *fname, \ - SYS_GETFH = 161 // { int getfh(char *fname, \ + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } - SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, \ - SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, \ - SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, \ - SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, \ + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } SYS_SETFIB = 175 // { int setfib(int fibnum); } SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } SYS_SETGID = 181 // { int setgid(gid_t gid); } @@ -127,269 +128,269 @@ const ( SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } - SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, \ - SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, \ - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, \ - SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, \ + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } SYS_UNDELETE = 205 // { int undelete(char *path); } SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } SYS_GETPGID = 207 // { int getpgid(pid_t pid); } - SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, \ - SYS_SEMGET = 221 // { int semget(key_t key, int nsems, \ - SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, \ + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } - SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, \ - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, \ - SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, \ + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } - SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, \ - SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, \ - SYS_CLOCK_SETTIME = 233 // { int clock_settime( \ - SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, \ - SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, \ + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } - SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, \ - SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct \ + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } - SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, \ + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( \ - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( \ - SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, \ - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,\ + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } - SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, \ + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, \ + SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, \ - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, \ + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } + SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } - SYS_LUTIMES = 276 // { int lutimes(char *path, \ + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } - SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, \ - SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, \ - SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, \ - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, \ + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, \ + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct \ + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } - SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, \ - SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, \ + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( \ - SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, \ + SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } - SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, \ - SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct \ - SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int \ + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } SYS_SCHED_YIELD = 331 // { int sched_yield (void); } SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } - SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, \ + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } - SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, \ + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } SYS_JAIL = 338 // { int jail(struct jail *jail); } - SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, \ + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } - SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, \ - SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, \ - SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, \ - SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, \ - SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, \ - SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, \ - SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, \ - SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, \ - SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, \ - SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, \ - SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, \ - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( \ - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( \ - SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, \ - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( \ - SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, \ - SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, \ + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, \ - SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, \ - SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, \ - SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, \ + SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } SYS___SETUGID = 374 // { int __setugid(int flag); } SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } - SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, \ + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } - SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, \ - SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, \ - SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, \ - SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, \ - SYS_KENV = 390 // { int kenv(int what, const char *name, \ - SYS_LCHFLAGS = 391 // { int lchflags(const char *path, \ - SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, \ - SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, \ - SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, \ - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, \ - SYS_STATFS = 396 // { int statfs(char *path, \ + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, \ + SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } - SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, \ - SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, \ + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } - SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, \ - SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, \ - SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, \ - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( \ - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( \ - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( \ - SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, \ - SYS_SIGACTION = 416 // { int sigaction(int sig, \ - SYS_SIGRETURN = 417 // { int sigreturn( \ + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( \ - SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, \ + SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } - SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, \ - SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, \ - SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, \ - SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, \ - SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, \ - SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, \ + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } SYS_THR_EXIT = 431 // { void thr_exit(long *state); } SYS_THR_SELF = 432 // { int thr_self(long *id); } SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } - SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, \ - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( \ - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( \ - SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, \ - SYS_THR_SUSPEND = 442 // { int thr_suspend( \ + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } - SYS_AUDIT = 445 // { int audit(const void *record, \ - SYS_AUDITON = 446 // { int auditon(int cmd, void *data, \ + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } SYS_GETAUID = 447 // { int getauid(uid_t *auid); } SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( \ - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( \ + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } - SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, \ - SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, \ + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } - SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, \ - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, \ - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, \ - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, \ - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, \ + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } - SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, \ + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } - SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, \ - SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, \ - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, \ - SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, \ - SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, \ - SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, \ - SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, \ + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } - SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, \ + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } - SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, \ - SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, \ - SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, \ - SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, \ - SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, \ - SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, \ - SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, \ - SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, \ - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, \ - SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, \ - SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, \ + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, \ - SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, \ - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, \ - SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, \ - SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, \ + SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } - SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, \ - SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, \ + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } - SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, \ - SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, \ - SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, \ + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } - SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, \ + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } SYS_CAP_ENTER = 516 // { int cap_enter(void); } SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } - SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, \ - SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, \ + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } - SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, \ - SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, \ - SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, \ - SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, \ - SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, \ - SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, \ - SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, \ - SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, \ - SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, \ - SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, \ - SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, \ - SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, \ - SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, \ - SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, \ - SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, \ - SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, \ - SYS_ACCEPT4 = 541 // { int accept4(int s, \ + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } - SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, \ - SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, \ - SYS_FUTIMENS = 546 // { int futimens(int fd, \ - SYS_UTIMENSAT = 547 // { int utimensat(int fd, \ - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, \ - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, \ + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } + SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 8d17873..e869c06 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -6,387 +6,427 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_WAITPID = 7 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_TIME = 13 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_BREAK = 17 - SYS_OLDSTAT = 18 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_UMOUNT = 22 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_STIME = 25 - SYS_PTRACE = 26 - SYS_ALARM = 27 - SYS_OLDFSTAT = 28 - SYS_PAUSE = 29 - SYS_UTIME = 30 - SYS_STTY = 31 - SYS_GTTY = 32 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_FTIME = 35 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_PROF = 44 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_SIGNAL = 48 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_LOCK = 53 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_MPX = 56 - SYS_SETPGID = 57 - SYS_ULIMIT = 58 - SYS_OLDOLDUNAME = 59 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SGETMASK = 68 - SYS_SSETMASK = 69 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRLIMIT = 76 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SELECT = 82 - SYS_SYMLINK = 83 - SYS_OLDLSTAT = 84 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_READDIR = 89 - SYS_MMAP = 90 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_PROFIL = 98 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_IOPERM = 101 - SYS_SOCKETCALL = 102 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_OLDUNAME = 109 - SYS_IOPL = 110 - SYS_VHANGUP = 111 - SYS_IDLE = 112 - SYS_VM86OLD = 113 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_IPC = 117 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_MODIFY_LDT = 123 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_CREATE_MODULE = 127 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_GET_KERNEL_SYMS = 130 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_AFS_SYSCALL = 137 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_VM86 = 166 - SYS_QUERY_MODULE = 167 - SYS_POLL = 168 - SYS_NFSSERVCTL = 169 - SYS_SETRESGID = 170 - SYS_GETRESGID = 171 - SYS_PRCTL = 172 - SYS_RT_SIGRETURN = 173 - SYS_RT_SIGACTION = 174 - SYS_RT_SIGPROCMASK = 175 - SYS_RT_SIGPENDING = 176 - SYS_RT_SIGTIMEDWAIT = 177 - SYS_RT_SIGQUEUEINFO = 178 - SYS_RT_SIGSUSPEND = 179 - SYS_PREAD64 = 180 - SYS_PWRITE64 = 181 - SYS_CHOWN = 182 - SYS_GETCWD = 183 - SYS_CAPGET = 184 - SYS_CAPSET = 185 - SYS_SIGALTSTACK = 186 - SYS_SENDFILE = 187 - SYS_GETPMSG = 188 - SYS_PUTPMSG = 189 - SYS_VFORK = 190 - SYS_UGETRLIMIT = 191 - SYS_MMAP2 = 192 - SYS_TRUNCATE64 = 193 - SYS_FTRUNCATE64 = 194 - SYS_STAT64 = 195 - SYS_LSTAT64 = 196 - SYS_FSTAT64 = 197 - SYS_LCHOWN32 = 198 - SYS_GETUID32 = 199 - SYS_GETGID32 = 200 - SYS_GETEUID32 = 201 - SYS_GETEGID32 = 202 - SYS_SETREUID32 = 203 - SYS_SETREGID32 = 204 - SYS_GETGROUPS32 = 205 - SYS_SETGROUPS32 = 206 - SYS_FCHOWN32 = 207 - SYS_SETRESUID32 = 208 - SYS_GETRESUID32 = 209 - SYS_SETRESGID32 = 210 - SYS_GETRESGID32 = 211 - SYS_CHOWN32 = 212 - SYS_SETUID32 = 213 - SYS_SETGID32 = 214 - SYS_SETFSUID32 = 215 - SYS_SETFSGID32 = 216 - SYS_PIVOT_ROOT = 217 - SYS_MINCORE = 218 - SYS_MADVISE = 219 - SYS_GETDENTS64 = 220 - SYS_FCNTL64 = 221 - SYS_GETTID = 224 - SYS_READAHEAD = 225 - SYS_SETXATTR = 226 - SYS_LSETXATTR = 227 - SYS_FSETXATTR = 228 - SYS_GETXATTR = 229 - SYS_LGETXATTR = 230 - SYS_FGETXATTR = 231 - SYS_LISTXATTR = 232 - SYS_LLISTXATTR = 233 - SYS_FLISTXATTR = 234 - SYS_REMOVEXATTR = 235 - SYS_LREMOVEXATTR = 236 - SYS_FREMOVEXATTR = 237 - SYS_TKILL = 238 - SYS_SENDFILE64 = 239 - SYS_FUTEX = 240 - SYS_SCHED_SETAFFINITY = 241 - SYS_SCHED_GETAFFINITY = 242 - SYS_SET_THREAD_AREA = 243 - SYS_GET_THREAD_AREA = 244 - SYS_IO_SETUP = 245 - SYS_IO_DESTROY = 246 - SYS_IO_GETEVENTS = 247 - SYS_IO_SUBMIT = 248 - SYS_IO_CANCEL = 249 - SYS_FADVISE64 = 250 - SYS_EXIT_GROUP = 252 - SYS_LOOKUP_DCOOKIE = 253 - SYS_EPOLL_CREATE = 254 - SYS_EPOLL_CTL = 255 - SYS_EPOLL_WAIT = 256 - SYS_REMAP_FILE_PAGES = 257 - SYS_SET_TID_ADDRESS = 258 - SYS_TIMER_CREATE = 259 - SYS_TIMER_SETTIME = 260 - SYS_TIMER_GETTIME = 261 - SYS_TIMER_GETOVERRUN = 262 - SYS_TIMER_DELETE = 263 - SYS_CLOCK_SETTIME = 264 - SYS_CLOCK_GETTIME = 265 - SYS_CLOCK_GETRES = 266 - SYS_CLOCK_NANOSLEEP = 267 - SYS_STATFS64 = 268 - SYS_FSTATFS64 = 269 - SYS_TGKILL = 270 - SYS_UTIMES = 271 - SYS_FADVISE64_64 = 272 - SYS_VSERVER = 273 - SYS_MBIND = 274 - SYS_GET_MEMPOLICY = 275 - SYS_SET_MEMPOLICY = 276 - SYS_MQ_OPEN = 277 - SYS_MQ_UNLINK = 278 - SYS_MQ_TIMEDSEND = 279 - SYS_MQ_TIMEDRECEIVE = 280 - SYS_MQ_NOTIFY = 281 - SYS_MQ_GETSETATTR = 282 - SYS_KEXEC_LOAD = 283 - SYS_WAITID = 284 - SYS_ADD_KEY = 286 - SYS_REQUEST_KEY = 287 - SYS_KEYCTL = 288 - SYS_IOPRIO_SET = 289 - SYS_IOPRIO_GET = 290 - SYS_INOTIFY_INIT = 291 - SYS_INOTIFY_ADD_WATCH = 292 - SYS_INOTIFY_RM_WATCH = 293 - SYS_MIGRATE_PAGES = 294 - SYS_OPENAT = 295 - SYS_MKDIRAT = 296 - SYS_MKNODAT = 297 - SYS_FCHOWNAT = 298 - SYS_FUTIMESAT = 299 - SYS_FSTATAT64 = 300 - SYS_UNLINKAT = 301 - SYS_RENAMEAT = 302 - SYS_LINKAT = 303 - SYS_SYMLINKAT = 304 - SYS_READLINKAT = 305 - SYS_FCHMODAT = 306 - SYS_FACCESSAT = 307 - SYS_PSELECT6 = 308 - SYS_PPOLL = 309 - SYS_UNSHARE = 310 - SYS_SET_ROBUST_LIST = 311 - SYS_GET_ROBUST_LIST = 312 - SYS_SPLICE = 313 - SYS_SYNC_FILE_RANGE = 314 - SYS_TEE = 315 - SYS_VMSPLICE = 316 - SYS_MOVE_PAGES = 317 - SYS_GETCPU = 318 - SYS_EPOLL_PWAIT = 319 - SYS_UTIMENSAT = 320 - SYS_SIGNALFD = 321 - SYS_TIMERFD_CREATE = 322 - SYS_EVENTFD = 323 - SYS_FALLOCATE = 324 - SYS_TIMERFD_SETTIME = 325 - SYS_TIMERFD_GETTIME = 326 - SYS_SIGNALFD4 = 327 - SYS_EVENTFD2 = 328 - SYS_EPOLL_CREATE1 = 329 - SYS_DUP3 = 330 - SYS_PIPE2 = 331 - SYS_INOTIFY_INIT1 = 332 - SYS_PREADV = 333 - SYS_PWRITEV = 334 - SYS_RT_TGSIGQUEUEINFO = 335 - SYS_PERF_EVENT_OPEN = 336 - SYS_RECVMMSG = 337 - SYS_FANOTIFY_INIT = 338 - SYS_FANOTIFY_MARK = 339 - SYS_PRLIMIT64 = 340 - SYS_NAME_TO_HANDLE_AT = 341 - SYS_OPEN_BY_HANDLE_AT = 342 - SYS_CLOCK_ADJTIME = 343 - SYS_SYNCFS = 344 - SYS_SENDMMSG = 345 - SYS_SETNS = 346 - SYS_PROCESS_VM_READV = 347 - SYS_PROCESS_VM_WRITEV = 348 - SYS_KCMP = 349 - SYS_FINIT_MODULE = 350 - SYS_SCHED_SETATTR = 351 - SYS_SCHED_GETATTR = 352 - SYS_RENAMEAT2 = 353 - SYS_SECCOMP = 354 - SYS_GETRANDOM = 355 - SYS_MEMFD_CREATE = 356 - SYS_BPF = 357 - SYS_EXECVEAT = 358 - SYS_SOCKET = 359 - SYS_SOCKETPAIR = 360 - SYS_BIND = 361 - SYS_CONNECT = 362 - SYS_LISTEN = 363 - SYS_ACCEPT4 = 364 - SYS_GETSOCKOPT = 365 - SYS_SETSOCKOPT = 366 - SYS_GETSOCKNAME = 367 - SYS_GETPEERNAME = 368 - SYS_SENDTO = 369 - SYS_SENDMSG = 370 - SYS_RECVFROM = 371 - SYS_RECVMSG = 372 - SYS_SHUTDOWN = 373 - SYS_USERFAULTFD = 374 - SYS_MEMBARRIER = 375 - SYS_MLOCK2 = 376 - SYS_COPY_FILE_RANGE = 377 - SYS_PREADV2 = 378 - SYS_PWRITEV2 = 379 - SYS_PKEY_MPROTECT = 380 - SYS_PKEY_ALLOC = 381 - SYS_PKEY_FREE = 382 - SYS_STATX = 383 - SYS_ARCH_PRCTL = 384 - SYS_IO_PGETEVENTS = 385 - SYS_RSEQ = 386 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_WAITPID = 7 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_TIME = 13 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_BREAK = 17 + SYS_OLDSTAT = 18 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_UMOUNT = 22 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_STIME = 25 + SYS_PTRACE = 26 + SYS_ALARM = 27 + SYS_OLDFSTAT = 28 + SYS_PAUSE = 29 + SYS_UTIME = 30 + SYS_STTY = 31 + SYS_GTTY = 32 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_FTIME = 35 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_PROF = 44 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_SIGNAL = 48 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_LOCK = 53 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_MPX = 56 + SYS_SETPGID = 57 + SYS_ULIMIT = 58 + SYS_OLDOLDUNAME = 59 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SGETMASK = 68 + SYS_SSETMASK = 69 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRLIMIT = 76 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SELECT = 82 + SYS_SYMLINK = 83 + SYS_OLDLSTAT = 84 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_READDIR = 89 + SYS_MMAP = 90 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_PROFIL = 98 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_IOPERM = 101 + SYS_SOCKETCALL = 102 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_OLDUNAME = 109 + SYS_IOPL = 110 + SYS_VHANGUP = 111 + SYS_IDLE = 112 + SYS_VM86OLD = 113 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_IPC = 117 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_MODIFY_LDT = 123 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_CREATE_MODULE = 127 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_GET_KERNEL_SYMS = 130 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_AFS_SYSCALL = 137 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_VM86 = 166 + SYS_QUERY_MODULE = 167 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_GETPMSG = 188 + SYS_PUTPMSG = 189 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_PIVOT_ROOT = 217 + SYS_MINCORE = 218 + SYS_MADVISE = 219 + SYS_GETDENTS64 = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_SET_THREAD_AREA = 243 + SYS_GET_THREAD_AREA = 244 + SYS_IO_SETUP = 245 + SYS_IO_DESTROY = 246 + SYS_IO_GETEVENTS = 247 + SYS_IO_SUBMIT = 248 + SYS_IO_CANCEL = 249 + SYS_FADVISE64 = 250 + SYS_EXIT_GROUP = 252 + SYS_LOOKUP_DCOOKIE = 253 + SYS_EPOLL_CREATE = 254 + SYS_EPOLL_CTL = 255 + SYS_EPOLL_WAIT = 256 + SYS_REMAP_FILE_PAGES = 257 + SYS_SET_TID_ADDRESS = 258 + SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 + SYS_STATFS64 = 268 + SYS_FSTATFS64 = 269 + SYS_TGKILL = 270 + SYS_UTIMES = 271 + SYS_FADVISE64_64 = 272 + SYS_VSERVER = 273 + SYS_MBIND = 274 + SYS_GET_MEMPOLICY = 275 + SYS_SET_MEMPOLICY = 276 + SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 + SYS_KEXEC_LOAD = 283 + SYS_WAITID = 284 + SYS_ADD_KEY = 286 + SYS_REQUEST_KEY = 287 + SYS_KEYCTL = 288 + SYS_IOPRIO_SET = 289 + SYS_IOPRIO_GET = 290 + SYS_INOTIFY_INIT = 291 + SYS_INOTIFY_ADD_WATCH = 292 + SYS_INOTIFY_RM_WATCH = 293 + SYS_MIGRATE_PAGES = 294 + SYS_OPENAT = 295 + SYS_MKDIRAT = 296 + SYS_MKNODAT = 297 + SYS_FCHOWNAT = 298 + SYS_FUTIMESAT = 299 + SYS_FSTATAT64 = 300 + SYS_UNLINKAT = 301 + SYS_RENAMEAT = 302 + SYS_LINKAT = 303 + SYS_SYMLINKAT = 304 + SYS_READLINKAT = 305 + SYS_FCHMODAT = 306 + SYS_FACCESSAT = 307 + SYS_PSELECT6 = 308 + SYS_PPOLL = 309 + SYS_UNSHARE = 310 + SYS_SET_ROBUST_LIST = 311 + SYS_GET_ROBUST_LIST = 312 + SYS_SPLICE = 313 + SYS_SYNC_FILE_RANGE = 314 + SYS_TEE = 315 + SYS_VMSPLICE = 316 + SYS_MOVE_PAGES = 317 + SYS_GETCPU = 318 + SYS_EPOLL_PWAIT = 319 + SYS_UTIMENSAT = 320 + SYS_SIGNALFD = 321 + SYS_TIMERFD_CREATE = 322 + SYS_EVENTFD = 323 + SYS_FALLOCATE = 324 + SYS_TIMERFD_SETTIME = 325 + SYS_TIMERFD_GETTIME = 326 + SYS_SIGNALFD4 = 327 + SYS_EVENTFD2 = 328 + SYS_EPOLL_CREATE1 = 329 + SYS_DUP3 = 330 + SYS_PIPE2 = 331 + SYS_INOTIFY_INIT1 = 332 + SYS_PREADV = 333 + SYS_PWRITEV = 334 + SYS_RT_TGSIGQUEUEINFO = 335 + SYS_PERF_EVENT_OPEN = 336 + SYS_RECVMMSG = 337 + SYS_FANOTIFY_INIT = 338 + SYS_FANOTIFY_MARK = 339 + SYS_PRLIMIT64 = 340 + SYS_NAME_TO_HANDLE_AT = 341 + SYS_OPEN_BY_HANDLE_AT = 342 + SYS_CLOCK_ADJTIME = 343 + SYS_SYNCFS = 344 + SYS_SENDMMSG = 345 + SYS_SETNS = 346 + SYS_PROCESS_VM_READV = 347 + SYS_PROCESS_VM_WRITEV = 348 + SYS_KCMP = 349 + SYS_FINIT_MODULE = 350 + SYS_SCHED_SETATTR = 351 + SYS_SCHED_GETATTR = 352 + SYS_RENAMEAT2 = 353 + SYS_SECCOMP = 354 + SYS_GETRANDOM = 355 + SYS_MEMFD_CREATE = 356 + SYS_BPF = 357 + SYS_EXECVEAT = 358 + SYS_SOCKET = 359 + SYS_SOCKETPAIR = 360 + SYS_BIND = 361 + SYS_CONNECT = 362 + SYS_LISTEN = 363 + SYS_ACCEPT4 = 364 + SYS_GETSOCKOPT = 365 + SYS_SETSOCKOPT = 366 + SYS_GETSOCKNAME = 367 + SYS_GETPEERNAME = 368 + SYS_SENDTO = 369 + SYS_SENDMSG = 370 + SYS_RECVFROM = 371 + SYS_RECVMSG = 372 + SYS_SHUTDOWN = 373 + SYS_USERFAULTFD = 374 + SYS_MEMBARRIER = 375 + SYS_MLOCK2 = 376 + SYS_COPY_FILE_RANGE = 377 + SYS_PREADV2 = 378 + SYS_PWRITEV2 = 379 + SYS_PKEY_MPROTECT = 380 + SYS_PKEY_ALLOC = 381 + SYS_PKEY_FREE = 382 + SYS_STATX = 383 + SYS_ARCH_PRCTL = 384 + SYS_IO_PGETEVENTS = 385 + SYS_RSEQ = 386 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index b3d8ad7..4917b8a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -341,4 +341,14 @@ const ( SYS_STATX = 332 SYS_IO_PGETEVENTS = 333 SYS_RSEQ = 334 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index e092822..f85fcb4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -6,359 +6,391 @@ package unix const ( - SYS_RESTART_SYSCALL = 0 - SYS_EXIT = 1 - SYS_FORK = 2 - SYS_READ = 3 - SYS_WRITE = 4 - SYS_OPEN = 5 - SYS_CLOSE = 6 - SYS_CREAT = 8 - SYS_LINK = 9 - SYS_UNLINK = 10 - SYS_EXECVE = 11 - SYS_CHDIR = 12 - SYS_MKNOD = 14 - SYS_CHMOD = 15 - SYS_LCHOWN = 16 - SYS_LSEEK = 19 - SYS_GETPID = 20 - SYS_MOUNT = 21 - SYS_SETUID = 23 - SYS_GETUID = 24 - SYS_PTRACE = 26 - SYS_PAUSE = 29 - SYS_ACCESS = 33 - SYS_NICE = 34 - SYS_SYNC = 36 - SYS_KILL = 37 - SYS_RENAME = 38 - SYS_MKDIR = 39 - SYS_RMDIR = 40 - SYS_DUP = 41 - SYS_PIPE = 42 - SYS_TIMES = 43 - SYS_BRK = 45 - SYS_SETGID = 46 - SYS_GETGID = 47 - SYS_GETEUID = 49 - SYS_GETEGID = 50 - SYS_ACCT = 51 - SYS_UMOUNT2 = 52 - SYS_IOCTL = 54 - SYS_FCNTL = 55 - SYS_SETPGID = 57 - SYS_UMASK = 60 - SYS_CHROOT = 61 - SYS_USTAT = 62 - SYS_DUP2 = 63 - SYS_GETPPID = 64 - SYS_GETPGRP = 65 - SYS_SETSID = 66 - SYS_SIGACTION = 67 - SYS_SETREUID = 70 - SYS_SETREGID = 71 - SYS_SIGSUSPEND = 72 - SYS_SIGPENDING = 73 - SYS_SETHOSTNAME = 74 - SYS_SETRLIMIT = 75 - SYS_GETRUSAGE = 77 - SYS_GETTIMEOFDAY = 78 - SYS_SETTIMEOFDAY = 79 - SYS_GETGROUPS = 80 - SYS_SETGROUPS = 81 - SYS_SYMLINK = 83 - SYS_READLINK = 85 - SYS_USELIB = 86 - SYS_SWAPON = 87 - SYS_REBOOT = 88 - SYS_MUNMAP = 91 - SYS_TRUNCATE = 92 - SYS_FTRUNCATE = 93 - SYS_FCHMOD = 94 - SYS_FCHOWN = 95 - SYS_GETPRIORITY = 96 - SYS_SETPRIORITY = 97 - SYS_STATFS = 99 - SYS_FSTATFS = 100 - SYS_SYSLOG = 103 - SYS_SETITIMER = 104 - SYS_GETITIMER = 105 - SYS_STAT = 106 - SYS_LSTAT = 107 - SYS_FSTAT = 108 - SYS_VHANGUP = 111 - SYS_WAIT4 = 114 - SYS_SWAPOFF = 115 - SYS_SYSINFO = 116 - SYS_FSYNC = 118 - SYS_SIGRETURN = 119 - SYS_CLONE = 120 - SYS_SETDOMAINNAME = 121 - SYS_UNAME = 122 - SYS_ADJTIMEX = 124 - SYS_MPROTECT = 125 - SYS_SIGPROCMASK = 126 - SYS_INIT_MODULE = 128 - SYS_DELETE_MODULE = 129 - SYS_QUOTACTL = 131 - SYS_GETPGID = 132 - SYS_FCHDIR = 133 - SYS_BDFLUSH = 134 - SYS_SYSFS = 135 - SYS_PERSONALITY = 136 - SYS_SETFSUID = 138 - SYS_SETFSGID = 139 - SYS__LLSEEK = 140 - SYS_GETDENTS = 141 - SYS__NEWSELECT = 142 - SYS_FLOCK = 143 - SYS_MSYNC = 144 - SYS_READV = 145 - SYS_WRITEV = 146 - SYS_GETSID = 147 - SYS_FDATASYNC = 148 - SYS__SYSCTL = 149 - SYS_MLOCK = 150 - SYS_MUNLOCK = 151 - SYS_MLOCKALL = 152 - SYS_MUNLOCKALL = 153 - SYS_SCHED_SETPARAM = 154 - SYS_SCHED_GETPARAM = 155 - SYS_SCHED_SETSCHEDULER = 156 - SYS_SCHED_GETSCHEDULER = 157 - SYS_SCHED_YIELD = 158 - SYS_SCHED_GET_PRIORITY_MAX = 159 - SYS_SCHED_GET_PRIORITY_MIN = 160 - SYS_SCHED_RR_GET_INTERVAL = 161 - SYS_NANOSLEEP = 162 - SYS_MREMAP = 163 - SYS_SETRESUID = 164 - SYS_GETRESUID = 165 - SYS_POLL = 168 - SYS_NFSSERVCTL = 169 - SYS_SETRESGID = 170 - SYS_GETRESGID = 171 - SYS_PRCTL = 172 - SYS_RT_SIGRETURN = 173 - SYS_RT_SIGACTION = 174 - SYS_RT_SIGPROCMASK = 175 - SYS_RT_SIGPENDING = 176 - SYS_RT_SIGTIMEDWAIT = 177 - SYS_RT_SIGQUEUEINFO = 178 - SYS_RT_SIGSUSPEND = 179 - SYS_PREAD64 = 180 - SYS_PWRITE64 = 181 - SYS_CHOWN = 182 - SYS_GETCWD = 183 - SYS_CAPGET = 184 - SYS_CAPSET = 185 - SYS_SIGALTSTACK = 186 - SYS_SENDFILE = 187 - SYS_VFORK = 190 - SYS_UGETRLIMIT = 191 - SYS_MMAP2 = 192 - SYS_TRUNCATE64 = 193 - SYS_FTRUNCATE64 = 194 - SYS_STAT64 = 195 - SYS_LSTAT64 = 196 - SYS_FSTAT64 = 197 - SYS_LCHOWN32 = 198 - SYS_GETUID32 = 199 - SYS_GETGID32 = 200 - SYS_GETEUID32 = 201 - SYS_GETEGID32 = 202 - SYS_SETREUID32 = 203 - SYS_SETREGID32 = 204 - SYS_GETGROUPS32 = 205 - SYS_SETGROUPS32 = 206 - SYS_FCHOWN32 = 207 - SYS_SETRESUID32 = 208 - SYS_GETRESUID32 = 209 - SYS_SETRESGID32 = 210 - SYS_GETRESGID32 = 211 - SYS_CHOWN32 = 212 - SYS_SETUID32 = 213 - SYS_SETGID32 = 214 - SYS_SETFSUID32 = 215 - SYS_SETFSGID32 = 216 - SYS_GETDENTS64 = 217 - SYS_PIVOT_ROOT = 218 - SYS_MINCORE = 219 - SYS_MADVISE = 220 - SYS_FCNTL64 = 221 - SYS_GETTID = 224 - SYS_READAHEAD = 225 - SYS_SETXATTR = 226 - SYS_LSETXATTR = 227 - SYS_FSETXATTR = 228 - SYS_GETXATTR = 229 - SYS_LGETXATTR = 230 - SYS_FGETXATTR = 231 - SYS_LISTXATTR = 232 - SYS_LLISTXATTR = 233 - SYS_FLISTXATTR = 234 - SYS_REMOVEXATTR = 235 - SYS_LREMOVEXATTR = 236 - SYS_FREMOVEXATTR = 237 - SYS_TKILL = 238 - SYS_SENDFILE64 = 239 - SYS_FUTEX = 240 - SYS_SCHED_SETAFFINITY = 241 - SYS_SCHED_GETAFFINITY = 242 - SYS_IO_SETUP = 243 - SYS_IO_DESTROY = 244 - SYS_IO_GETEVENTS = 245 - SYS_IO_SUBMIT = 246 - SYS_IO_CANCEL = 247 - SYS_EXIT_GROUP = 248 - SYS_LOOKUP_DCOOKIE = 249 - SYS_EPOLL_CREATE = 250 - SYS_EPOLL_CTL = 251 - SYS_EPOLL_WAIT = 252 - SYS_REMAP_FILE_PAGES = 253 - SYS_SET_TID_ADDRESS = 256 - SYS_TIMER_CREATE = 257 - SYS_TIMER_SETTIME = 258 - SYS_TIMER_GETTIME = 259 - SYS_TIMER_GETOVERRUN = 260 - SYS_TIMER_DELETE = 261 - SYS_CLOCK_SETTIME = 262 - SYS_CLOCK_GETTIME = 263 - SYS_CLOCK_GETRES = 264 - SYS_CLOCK_NANOSLEEP = 265 - SYS_STATFS64 = 266 - SYS_FSTATFS64 = 267 - SYS_TGKILL = 268 - SYS_UTIMES = 269 - SYS_ARM_FADVISE64_64 = 270 - SYS_PCICONFIG_IOBASE = 271 - SYS_PCICONFIG_READ = 272 - SYS_PCICONFIG_WRITE = 273 - SYS_MQ_OPEN = 274 - SYS_MQ_UNLINK = 275 - SYS_MQ_TIMEDSEND = 276 - SYS_MQ_TIMEDRECEIVE = 277 - SYS_MQ_NOTIFY = 278 - SYS_MQ_GETSETATTR = 279 - SYS_WAITID = 280 - SYS_SOCKET = 281 - SYS_BIND = 282 - SYS_CONNECT = 283 - SYS_LISTEN = 284 - SYS_ACCEPT = 285 - SYS_GETSOCKNAME = 286 - SYS_GETPEERNAME = 287 - SYS_SOCKETPAIR = 288 - SYS_SEND = 289 - SYS_SENDTO = 290 - SYS_RECV = 291 - SYS_RECVFROM = 292 - SYS_SHUTDOWN = 293 - SYS_SETSOCKOPT = 294 - SYS_GETSOCKOPT = 295 - SYS_SENDMSG = 296 - SYS_RECVMSG = 297 - SYS_SEMOP = 298 - SYS_SEMGET = 299 - SYS_SEMCTL = 300 - SYS_MSGSND = 301 - SYS_MSGRCV = 302 - SYS_MSGGET = 303 - SYS_MSGCTL = 304 - SYS_SHMAT = 305 - SYS_SHMDT = 306 - SYS_SHMGET = 307 - SYS_SHMCTL = 308 - SYS_ADD_KEY = 309 - SYS_REQUEST_KEY = 310 - SYS_KEYCTL = 311 - SYS_SEMTIMEDOP = 312 - SYS_VSERVER = 313 - SYS_IOPRIO_SET = 314 - SYS_IOPRIO_GET = 315 - SYS_INOTIFY_INIT = 316 - SYS_INOTIFY_ADD_WATCH = 317 - SYS_INOTIFY_RM_WATCH = 318 - SYS_MBIND = 319 - SYS_GET_MEMPOLICY = 320 - SYS_SET_MEMPOLICY = 321 - SYS_OPENAT = 322 - SYS_MKDIRAT = 323 - SYS_MKNODAT = 324 - SYS_FCHOWNAT = 325 - SYS_FUTIMESAT = 326 - SYS_FSTATAT64 = 327 - SYS_UNLINKAT = 328 - SYS_RENAMEAT = 329 - SYS_LINKAT = 330 - SYS_SYMLINKAT = 331 - SYS_READLINKAT = 332 - SYS_FCHMODAT = 333 - SYS_FACCESSAT = 334 - SYS_PSELECT6 = 335 - SYS_PPOLL = 336 - SYS_UNSHARE = 337 - SYS_SET_ROBUST_LIST = 338 - SYS_GET_ROBUST_LIST = 339 - SYS_SPLICE = 340 - SYS_ARM_SYNC_FILE_RANGE = 341 - SYS_TEE = 342 - SYS_VMSPLICE = 343 - SYS_MOVE_PAGES = 344 - SYS_GETCPU = 345 - SYS_EPOLL_PWAIT = 346 - SYS_KEXEC_LOAD = 347 - SYS_UTIMENSAT = 348 - SYS_SIGNALFD = 349 - SYS_TIMERFD_CREATE = 350 - SYS_EVENTFD = 351 - SYS_FALLOCATE = 352 - SYS_TIMERFD_SETTIME = 353 - SYS_TIMERFD_GETTIME = 354 - SYS_SIGNALFD4 = 355 - SYS_EVENTFD2 = 356 - SYS_EPOLL_CREATE1 = 357 - SYS_DUP3 = 358 - SYS_PIPE2 = 359 - SYS_INOTIFY_INIT1 = 360 - SYS_PREADV = 361 - SYS_PWRITEV = 362 - SYS_RT_TGSIGQUEUEINFO = 363 - SYS_PERF_EVENT_OPEN = 364 - SYS_RECVMMSG = 365 - SYS_ACCEPT4 = 366 - SYS_FANOTIFY_INIT = 367 - SYS_FANOTIFY_MARK = 368 - SYS_PRLIMIT64 = 369 - SYS_NAME_TO_HANDLE_AT = 370 - SYS_OPEN_BY_HANDLE_AT = 371 - SYS_CLOCK_ADJTIME = 372 - SYS_SYNCFS = 373 - SYS_SENDMMSG = 374 - SYS_SETNS = 375 - SYS_PROCESS_VM_READV = 376 - SYS_PROCESS_VM_WRITEV = 377 - SYS_KCMP = 378 - SYS_FINIT_MODULE = 379 - SYS_SCHED_SETATTR = 380 - SYS_SCHED_GETATTR = 381 - SYS_RENAMEAT2 = 382 - SYS_SECCOMP = 383 - SYS_GETRANDOM = 384 - SYS_MEMFD_CREATE = 385 - SYS_BPF = 386 - SYS_EXECVEAT = 387 - SYS_USERFAULTFD = 388 - SYS_MEMBARRIER = 389 - SYS_MLOCK2 = 390 - SYS_COPY_FILE_RANGE = 391 - SYS_PREADV2 = 392 - SYS_PWRITEV2 = 393 - SYS_PKEY_MPROTECT = 394 - SYS_PKEY_ALLOC = 395 - SYS_PKEY_FREE = 396 - SYS_STATX = 397 - SYS_RSEQ = 398 - SYS_IO_PGETEVENTS = 399 + SYS_RESTART_SYSCALL = 0 + SYS_EXIT = 1 + SYS_FORK = 2 + SYS_READ = 3 + SYS_WRITE = 4 + SYS_OPEN = 5 + SYS_CLOSE = 6 + SYS_CREAT = 8 + SYS_LINK = 9 + SYS_UNLINK = 10 + SYS_EXECVE = 11 + SYS_CHDIR = 12 + SYS_MKNOD = 14 + SYS_CHMOD = 15 + SYS_LCHOWN = 16 + SYS_LSEEK = 19 + SYS_GETPID = 20 + SYS_MOUNT = 21 + SYS_SETUID = 23 + SYS_GETUID = 24 + SYS_PTRACE = 26 + SYS_PAUSE = 29 + SYS_ACCESS = 33 + SYS_NICE = 34 + SYS_SYNC = 36 + SYS_KILL = 37 + SYS_RENAME = 38 + SYS_MKDIR = 39 + SYS_RMDIR = 40 + SYS_DUP = 41 + SYS_PIPE = 42 + SYS_TIMES = 43 + SYS_BRK = 45 + SYS_SETGID = 46 + SYS_GETGID = 47 + SYS_GETEUID = 49 + SYS_GETEGID = 50 + SYS_ACCT = 51 + SYS_UMOUNT2 = 52 + SYS_IOCTL = 54 + SYS_FCNTL = 55 + SYS_SETPGID = 57 + SYS_UMASK = 60 + SYS_CHROOT = 61 + SYS_USTAT = 62 + SYS_DUP2 = 63 + SYS_GETPPID = 64 + SYS_GETPGRP = 65 + SYS_SETSID = 66 + SYS_SIGACTION = 67 + SYS_SETREUID = 70 + SYS_SETREGID = 71 + SYS_SIGSUSPEND = 72 + SYS_SIGPENDING = 73 + SYS_SETHOSTNAME = 74 + SYS_SETRLIMIT = 75 + SYS_GETRUSAGE = 77 + SYS_GETTIMEOFDAY = 78 + SYS_SETTIMEOFDAY = 79 + SYS_GETGROUPS = 80 + SYS_SETGROUPS = 81 + SYS_SYMLINK = 83 + SYS_READLINK = 85 + SYS_USELIB = 86 + SYS_SWAPON = 87 + SYS_REBOOT = 88 + SYS_MUNMAP = 91 + SYS_TRUNCATE = 92 + SYS_FTRUNCATE = 93 + SYS_FCHMOD = 94 + SYS_FCHOWN = 95 + SYS_GETPRIORITY = 96 + SYS_SETPRIORITY = 97 + SYS_STATFS = 99 + SYS_FSTATFS = 100 + SYS_SYSLOG = 103 + SYS_SETITIMER = 104 + SYS_GETITIMER = 105 + SYS_STAT = 106 + SYS_LSTAT = 107 + SYS_FSTAT = 108 + SYS_VHANGUP = 111 + SYS_WAIT4 = 114 + SYS_SWAPOFF = 115 + SYS_SYSINFO = 116 + SYS_FSYNC = 118 + SYS_SIGRETURN = 119 + SYS_CLONE = 120 + SYS_SETDOMAINNAME = 121 + SYS_UNAME = 122 + SYS_ADJTIMEX = 124 + SYS_MPROTECT = 125 + SYS_SIGPROCMASK = 126 + SYS_INIT_MODULE = 128 + SYS_DELETE_MODULE = 129 + SYS_QUOTACTL = 131 + SYS_GETPGID = 132 + SYS_FCHDIR = 133 + SYS_BDFLUSH = 134 + SYS_SYSFS = 135 + SYS_PERSONALITY = 136 + SYS_SETFSUID = 138 + SYS_SETFSGID = 139 + SYS__LLSEEK = 140 + SYS_GETDENTS = 141 + SYS__NEWSELECT = 142 + SYS_FLOCK = 143 + SYS_MSYNC = 144 + SYS_READV = 145 + SYS_WRITEV = 146 + SYS_GETSID = 147 + SYS_FDATASYNC = 148 + SYS__SYSCTL = 149 + SYS_MLOCK = 150 + SYS_MUNLOCK = 151 + SYS_MLOCKALL = 152 + SYS_MUNLOCKALL = 153 + SYS_SCHED_SETPARAM = 154 + SYS_SCHED_GETPARAM = 155 + SYS_SCHED_SETSCHEDULER = 156 + SYS_SCHED_GETSCHEDULER = 157 + SYS_SCHED_YIELD = 158 + SYS_SCHED_GET_PRIORITY_MAX = 159 + SYS_SCHED_GET_PRIORITY_MIN = 160 + SYS_SCHED_RR_GET_INTERVAL = 161 + SYS_NANOSLEEP = 162 + SYS_MREMAP = 163 + SYS_SETRESUID = 164 + SYS_GETRESUID = 165 + SYS_POLL = 168 + SYS_NFSSERVCTL = 169 + SYS_SETRESGID = 170 + SYS_GETRESGID = 171 + SYS_PRCTL = 172 + SYS_RT_SIGRETURN = 173 + SYS_RT_SIGACTION = 174 + SYS_RT_SIGPROCMASK = 175 + SYS_RT_SIGPENDING = 176 + SYS_RT_SIGTIMEDWAIT = 177 + SYS_RT_SIGQUEUEINFO = 178 + SYS_RT_SIGSUSPEND = 179 + SYS_PREAD64 = 180 + SYS_PWRITE64 = 181 + SYS_CHOWN = 182 + SYS_GETCWD = 183 + SYS_CAPGET = 184 + SYS_CAPSET = 185 + SYS_SIGALTSTACK = 186 + SYS_SENDFILE = 187 + SYS_VFORK = 190 + SYS_UGETRLIMIT = 191 + SYS_MMAP2 = 192 + SYS_TRUNCATE64 = 193 + SYS_FTRUNCATE64 = 194 + SYS_STAT64 = 195 + SYS_LSTAT64 = 196 + SYS_FSTAT64 = 197 + SYS_LCHOWN32 = 198 + SYS_GETUID32 = 199 + SYS_GETGID32 = 200 + SYS_GETEUID32 = 201 + SYS_GETEGID32 = 202 + SYS_SETREUID32 = 203 + SYS_SETREGID32 = 204 + SYS_GETGROUPS32 = 205 + SYS_SETGROUPS32 = 206 + SYS_FCHOWN32 = 207 + SYS_SETRESUID32 = 208 + SYS_GETRESUID32 = 209 + SYS_SETRESGID32 = 210 + SYS_GETRESGID32 = 211 + SYS_CHOWN32 = 212 + SYS_SETUID32 = 213 + SYS_SETGID32 = 214 + SYS_SETFSUID32 = 215 + SYS_SETFSGID32 = 216 + SYS_GETDENTS64 = 217 + SYS_PIVOT_ROOT = 218 + SYS_MINCORE = 219 + SYS_MADVISE = 220 + SYS_FCNTL64 = 221 + SYS_GETTID = 224 + SYS_READAHEAD = 225 + SYS_SETXATTR = 226 + SYS_LSETXATTR = 227 + SYS_FSETXATTR = 228 + SYS_GETXATTR = 229 + SYS_LGETXATTR = 230 + SYS_FGETXATTR = 231 + SYS_LISTXATTR = 232 + SYS_LLISTXATTR = 233 + SYS_FLISTXATTR = 234 + SYS_REMOVEXATTR = 235 + SYS_LREMOVEXATTR = 236 + SYS_FREMOVEXATTR = 237 + SYS_TKILL = 238 + SYS_SENDFILE64 = 239 + SYS_FUTEX = 240 + SYS_SCHED_SETAFFINITY = 241 + SYS_SCHED_GETAFFINITY = 242 + SYS_IO_SETUP = 243 + SYS_IO_DESTROY = 244 + SYS_IO_GETEVENTS = 245 + SYS_IO_SUBMIT = 246 + SYS_IO_CANCEL = 247 + SYS_EXIT_GROUP = 248 + SYS_LOOKUP_DCOOKIE = 249 + SYS_EPOLL_CREATE = 250 + SYS_EPOLL_CTL = 251 + SYS_EPOLL_WAIT = 252 + SYS_REMAP_FILE_PAGES = 253 + SYS_SET_TID_ADDRESS = 256 + SYS_TIMER_CREATE = 257 + SYS_TIMER_SETTIME = 258 + SYS_TIMER_GETTIME = 259 + SYS_TIMER_GETOVERRUN = 260 + SYS_TIMER_DELETE = 261 + SYS_CLOCK_SETTIME = 262 + SYS_CLOCK_GETTIME = 263 + SYS_CLOCK_GETRES = 264 + SYS_CLOCK_NANOSLEEP = 265 + SYS_STATFS64 = 266 + SYS_FSTATFS64 = 267 + SYS_TGKILL = 268 + SYS_UTIMES = 269 + SYS_ARM_FADVISE64_64 = 270 + SYS_PCICONFIG_IOBASE = 271 + SYS_PCICONFIG_READ = 272 + SYS_PCICONFIG_WRITE = 273 + SYS_MQ_OPEN = 274 + SYS_MQ_UNLINK = 275 + SYS_MQ_TIMEDSEND = 276 + SYS_MQ_TIMEDRECEIVE = 277 + SYS_MQ_NOTIFY = 278 + SYS_MQ_GETSETATTR = 279 + SYS_WAITID = 280 + SYS_SOCKET = 281 + SYS_BIND = 282 + SYS_CONNECT = 283 + SYS_LISTEN = 284 + SYS_ACCEPT = 285 + SYS_GETSOCKNAME = 286 + SYS_GETPEERNAME = 287 + SYS_SOCKETPAIR = 288 + SYS_SEND = 289 + SYS_SENDTO = 290 + SYS_RECV = 291 + SYS_RECVFROM = 292 + SYS_SHUTDOWN = 293 + SYS_SETSOCKOPT = 294 + SYS_GETSOCKOPT = 295 + SYS_SENDMSG = 296 + SYS_RECVMSG = 297 + SYS_SEMOP = 298 + SYS_SEMGET = 299 + SYS_SEMCTL = 300 + SYS_MSGSND = 301 + SYS_MSGRCV = 302 + SYS_MSGGET = 303 + SYS_MSGCTL = 304 + SYS_SHMAT = 305 + SYS_SHMDT = 306 + SYS_SHMGET = 307 + SYS_SHMCTL = 308 + SYS_ADD_KEY = 309 + SYS_REQUEST_KEY = 310 + SYS_KEYCTL = 311 + SYS_SEMTIMEDOP = 312 + SYS_VSERVER = 313 + SYS_IOPRIO_SET = 314 + SYS_IOPRIO_GET = 315 + SYS_INOTIFY_INIT = 316 + SYS_INOTIFY_ADD_WATCH = 317 + SYS_INOTIFY_RM_WATCH = 318 + SYS_MBIND = 319 + SYS_GET_MEMPOLICY = 320 + SYS_SET_MEMPOLICY = 321 + SYS_OPENAT = 322 + SYS_MKDIRAT = 323 + SYS_MKNODAT = 324 + SYS_FCHOWNAT = 325 + SYS_FUTIMESAT = 326 + SYS_FSTATAT64 = 327 + SYS_UNLINKAT = 328 + SYS_RENAMEAT = 329 + SYS_LINKAT = 330 + SYS_SYMLINKAT = 331 + SYS_READLINKAT = 332 + SYS_FCHMODAT = 333 + SYS_FACCESSAT = 334 + SYS_PSELECT6 = 335 + SYS_PPOLL = 336 + SYS_UNSHARE = 337 + SYS_SET_ROBUST_LIST = 338 + SYS_GET_ROBUST_LIST = 339 + SYS_SPLICE = 340 + SYS_ARM_SYNC_FILE_RANGE = 341 + SYS_TEE = 342 + SYS_VMSPLICE = 343 + SYS_MOVE_PAGES = 344 + SYS_GETCPU = 345 + SYS_EPOLL_PWAIT = 346 + SYS_KEXEC_LOAD = 347 + SYS_UTIMENSAT = 348 + SYS_SIGNALFD = 349 + SYS_TIMERFD_CREATE = 350 + SYS_EVENTFD = 351 + SYS_FALLOCATE = 352 + SYS_TIMERFD_SETTIME = 353 + SYS_TIMERFD_GETTIME = 354 + SYS_SIGNALFD4 = 355 + SYS_EVENTFD2 = 356 + SYS_EPOLL_CREATE1 = 357 + SYS_DUP3 = 358 + SYS_PIPE2 = 359 + SYS_INOTIFY_INIT1 = 360 + SYS_PREADV = 361 + SYS_PWRITEV = 362 + SYS_RT_TGSIGQUEUEINFO = 363 + SYS_PERF_EVENT_OPEN = 364 + SYS_RECVMMSG = 365 + SYS_ACCEPT4 = 366 + SYS_FANOTIFY_INIT = 367 + SYS_FANOTIFY_MARK = 368 + SYS_PRLIMIT64 = 369 + SYS_NAME_TO_HANDLE_AT = 370 + SYS_OPEN_BY_HANDLE_AT = 371 + SYS_CLOCK_ADJTIME = 372 + SYS_SYNCFS = 373 + SYS_SENDMMSG = 374 + SYS_SETNS = 375 + SYS_PROCESS_VM_READV = 376 + SYS_PROCESS_VM_WRITEV = 377 + SYS_KCMP = 378 + SYS_FINIT_MODULE = 379 + SYS_SCHED_SETATTR = 380 + SYS_SCHED_GETATTR = 381 + SYS_RENAMEAT2 = 382 + SYS_SECCOMP = 383 + SYS_GETRANDOM = 384 + SYS_MEMFD_CREATE = 385 + SYS_BPF = 386 + SYS_EXECVEAT = 387 + SYS_USERFAULTFD = 388 + SYS_MEMBARRIER = 389 + SYS_MLOCK2 = 390 + SYS_COPY_FILE_RANGE = 391 + SYS_PREADV2 = 392 + SYS_PWRITEV2 = 393 + SYS_PKEY_MPROTECT = 394 + SYS_PKEY_ALLOC = 395 + SYS_PKEY_FREE = 396 + SYS_STATX = 397 + SYS_RSEQ = 398 + SYS_IO_PGETEVENTS = 399 + SYS_MIGRATE_PAGES = 400 + SYS_KEXEC_FILE_LOAD = 401 + SYS_CLOCK_GETTIME64 = 403 + SYS_CLOCK_SETTIME64 = 404 + SYS_CLOCK_ADJTIME64 = 405 + SYS_CLOCK_GETRES_TIME64 = 406 + SYS_CLOCK_NANOSLEEP_TIME64 = 407 + SYS_TIMER_GETTIME64 = 408 + SYS_TIMER_SETTIME64 = 409 + SYS_TIMERFD_GETTIME64 = 410 + SYS_TIMERFD_SETTIME64 = 411 + SYS_UTIMENSAT_TIME64 = 412 + SYS_PSELECT6_TIME64 = 413 + SYS_PPOLL_TIME64 = 414 + SYS_IO_PGETEVENTS_TIME64 = 416 + SYS_RECVMMSG_TIME64 = 417 + SYS_MQ_TIMEDSEND_TIME64 = 418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 419 + SYS_SEMTIMEDOP_TIME64 = 420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 421 + SYS_FUTEX_TIME64 = 422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 423 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index b81d508..678a119 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -286,4 +286,14 @@ const ( SYS_IO_PGETEVENTS = 292 SYS_RSEQ = 293 SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index 6893a5b..222c9f9 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -6,372 +6,412 @@ package unix const ( - SYS_SYSCALL = 4000 - SYS_EXIT = 4001 - SYS_FORK = 4002 - SYS_READ = 4003 - SYS_WRITE = 4004 - SYS_OPEN = 4005 - SYS_CLOSE = 4006 - SYS_WAITPID = 4007 - SYS_CREAT = 4008 - SYS_LINK = 4009 - SYS_UNLINK = 4010 - SYS_EXECVE = 4011 - SYS_CHDIR = 4012 - SYS_TIME = 4013 - SYS_MKNOD = 4014 - SYS_CHMOD = 4015 - SYS_LCHOWN = 4016 - SYS_BREAK = 4017 - SYS_UNUSED18 = 4018 - SYS_LSEEK = 4019 - SYS_GETPID = 4020 - SYS_MOUNT = 4021 - SYS_UMOUNT = 4022 - SYS_SETUID = 4023 - SYS_GETUID = 4024 - SYS_STIME = 4025 - SYS_PTRACE = 4026 - SYS_ALARM = 4027 - SYS_UNUSED28 = 4028 - SYS_PAUSE = 4029 - SYS_UTIME = 4030 - SYS_STTY = 4031 - SYS_GTTY = 4032 - SYS_ACCESS = 4033 - SYS_NICE = 4034 - SYS_FTIME = 4035 - SYS_SYNC = 4036 - SYS_KILL = 4037 - SYS_RENAME = 4038 - SYS_MKDIR = 4039 - SYS_RMDIR = 4040 - SYS_DUP = 4041 - SYS_PIPE = 4042 - SYS_TIMES = 4043 - SYS_PROF = 4044 - SYS_BRK = 4045 - SYS_SETGID = 4046 - SYS_GETGID = 4047 - SYS_SIGNAL = 4048 - SYS_GETEUID = 4049 - SYS_GETEGID = 4050 - SYS_ACCT = 4051 - SYS_UMOUNT2 = 4052 - SYS_LOCK = 4053 - SYS_IOCTL = 4054 - SYS_FCNTL = 4055 - SYS_MPX = 4056 - SYS_SETPGID = 4057 - SYS_ULIMIT = 4058 - SYS_UNUSED59 = 4059 - SYS_UMASK = 4060 - SYS_CHROOT = 4061 - SYS_USTAT = 4062 - SYS_DUP2 = 4063 - SYS_GETPPID = 4064 - SYS_GETPGRP = 4065 - SYS_SETSID = 4066 - SYS_SIGACTION = 4067 - SYS_SGETMASK = 4068 - SYS_SSETMASK = 4069 - SYS_SETREUID = 4070 - SYS_SETREGID = 4071 - SYS_SIGSUSPEND = 4072 - SYS_SIGPENDING = 4073 - SYS_SETHOSTNAME = 4074 - SYS_SETRLIMIT = 4075 - SYS_GETRLIMIT = 4076 - SYS_GETRUSAGE = 4077 - SYS_GETTIMEOFDAY = 4078 - SYS_SETTIMEOFDAY = 4079 - SYS_GETGROUPS = 4080 - SYS_SETGROUPS = 4081 - SYS_RESERVED82 = 4082 - SYS_SYMLINK = 4083 - SYS_UNUSED84 = 4084 - SYS_READLINK = 4085 - SYS_USELIB = 4086 - SYS_SWAPON = 4087 - SYS_REBOOT = 4088 - SYS_READDIR = 4089 - SYS_MMAP = 4090 - SYS_MUNMAP = 4091 - SYS_TRUNCATE = 4092 - SYS_FTRUNCATE = 4093 - SYS_FCHMOD = 4094 - SYS_FCHOWN = 4095 - SYS_GETPRIORITY = 4096 - SYS_SETPRIORITY = 4097 - SYS_PROFIL = 4098 - SYS_STATFS = 4099 - SYS_FSTATFS = 4100 - SYS_IOPERM = 4101 - SYS_SOCKETCALL = 4102 - SYS_SYSLOG = 4103 - SYS_SETITIMER = 4104 - SYS_GETITIMER = 4105 - SYS_STAT = 4106 - SYS_LSTAT = 4107 - SYS_FSTAT = 4108 - SYS_UNUSED109 = 4109 - SYS_IOPL = 4110 - SYS_VHANGUP = 4111 - SYS_IDLE = 4112 - SYS_VM86 = 4113 - SYS_WAIT4 = 4114 - SYS_SWAPOFF = 4115 - SYS_SYSINFO = 4116 - SYS_IPC = 4117 - SYS_FSYNC = 4118 - SYS_SIGRETURN = 4119 - SYS_CLONE = 4120 - SYS_SETDOMAINNAME = 4121 - SYS_UNAME = 4122 - SYS_MODIFY_LDT = 4123 - SYS_ADJTIMEX = 4124 - SYS_MPROTECT = 4125 - SYS_SIGPROCMASK = 4126 - SYS_CREATE_MODULE = 4127 - SYS_INIT_MODULE = 4128 - SYS_DELETE_MODULE = 4129 - SYS_GET_KERNEL_SYMS = 4130 - SYS_QUOTACTL = 4131 - SYS_GETPGID = 4132 - SYS_FCHDIR = 4133 - SYS_BDFLUSH = 4134 - SYS_SYSFS = 4135 - SYS_PERSONALITY = 4136 - SYS_AFS_SYSCALL = 4137 - SYS_SETFSUID = 4138 - SYS_SETFSGID = 4139 - SYS__LLSEEK = 4140 - SYS_GETDENTS = 4141 - SYS__NEWSELECT = 4142 - SYS_FLOCK = 4143 - SYS_MSYNC = 4144 - SYS_READV = 4145 - SYS_WRITEV = 4146 - SYS_CACHEFLUSH = 4147 - SYS_CACHECTL = 4148 - SYS_SYSMIPS = 4149 - SYS_UNUSED150 = 4150 - SYS_GETSID = 4151 - SYS_FDATASYNC = 4152 - SYS__SYSCTL = 4153 - SYS_MLOCK = 4154 - SYS_MUNLOCK = 4155 - SYS_MLOCKALL = 4156 - SYS_MUNLOCKALL = 4157 - SYS_SCHED_SETPARAM = 4158 - SYS_SCHED_GETPARAM = 4159 - SYS_SCHED_SETSCHEDULER = 4160 - SYS_SCHED_GETSCHEDULER = 4161 - SYS_SCHED_YIELD = 4162 - SYS_SCHED_GET_PRIORITY_MAX = 4163 - SYS_SCHED_GET_PRIORITY_MIN = 4164 - SYS_SCHED_RR_GET_INTERVAL = 4165 - SYS_NANOSLEEP = 4166 - SYS_MREMAP = 4167 - SYS_ACCEPT = 4168 - SYS_BIND = 4169 - SYS_CONNECT = 4170 - SYS_GETPEERNAME = 4171 - SYS_GETSOCKNAME = 4172 - SYS_GETSOCKOPT = 4173 - SYS_LISTEN = 4174 - SYS_RECV = 4175 - SYS_RECVFROM = 4176 - SYS_RECVMSG = 4177 - SYS_SEND = 4178 - SYS_SENDMSG = 4179 - SYS_SENDTO = 4180 - SYS_SETSOCKOPT = 4181 - SYS_SHUTDOWN = 4182 - SYS_SOCKET = 4183 - SYS_SOCKETPAIR = 4184 - SYS_SETRESUID = 4185 - SYS_GETRESUID = 4186 - SYS_QUERY_MODULE = 4187 - SYS_POLL = 4188 - SYS_NFSSERVCTL = 4189 - SYS_SETRESGID = 4190 - SYS_GETRESGID = 4191 - SYS_PRCTL = 4192 - SYS_RT_SIGRETURN = 4193 - SYS_RT_SIGACTION = 4194 - SYS_RT_SIGPROCMASK = 4195 - SYS_RT_SIGPENDING = 4196 - SYS_RT_SIGTIMEDWAIT = 4197 - SYS_RT_SIGQUEUEINFO = 4198 - SYS_RT_SIGSUSPEND = 4199 - SYS_PREAD64 = 4200 - SYS_PWRITE64 = 4201 - SYS_CHOWN = 4202 - SYS_GETCWD = 4203 - SYS_CAPGET = 4204 - SYS_CAPSET = 4205 - SYS_SIGALTSTACK = 4206 - SYS_SENDFILE = 4207 - SYS_GETPMSG = 4208 - SYS_PUTPMSG = 4209 - SYS_MMAP2 = 4210 - SYS_TRUNCATE64 = 4211 - SYS_FTRUNCATE64 = 4212 - SYS_STAT64 = 4213 - SYS_LSTAT64 = 4214 - SYS_FSTAT64 = 4215 - SYS_PIVOT_ROOT = 4216 - SYS_MINCORE = 4217 - SYS_MADVISE = 4218 - SYS_GETDENTS64 = 4219 - SYS_FCNTL64 = 4220 - SYS_RESERVED221 = 4221 - SYS_GETTID = 4222 - SYS_READAHEAD = 4223 - SYS_SETXATTR = 4224 - SYS_LSETXATTR = 4225 - SYS_FSETXATTR = 4226 - SYS_GETXATTR = 4227 - SYS_LGETXATTR = 4228 - SYS_FGETXATTR = 4229 - SYS_LISTXATTR = 4230 - SYS_LLISTXATTR = 4231 - SYS_FLISTXATTR = 4232 - SYS_REMOVEXATTR = 4233 - SYS_LREMOVEXATTR = 4234 - SYS_FREMOVEXATTR = 4235 - SYS_TKILL = 4236 - SYS_SENDFILE64 = 4237 - SYS_FUTEX = 4238 - SYS_SCHED_SETAFFINITY = 4239 - SYS_SCHED_GETAFFINITY = 4240 - SYS_IO_SETUP = 4241 - SYS_IO_DESTROY = 4242 - SYS_IO_GETEVENTS = 4243 - SYS_IO_SUBMIT = 4244 - SYS_IO_CANCEL = 4245 - SYS_EXIT_GROUP = 4246 - SYS_LOOKUP_DCOOKIE = 4247 - SYS_EPOLL_CREATE = 4248 - SYS_EPOLL_CTL = 4249 - SYS_EPOLL_WAIT = 4250 - SYS_REMAP_FILE_PAGES = 4251 - SYS_SET_TID_ADDRESS = 4252 - SYS_RESTART_SYSCALL = 4253 - SYS_FADVISE64 = 4254 - SYS_STATFS64 = 4255 - SYS_FSTATFS64 = 4256 - SYS_TIMER_CREATE = 4257 - SYS_TIMER_SETTIME = 4258 - SYS_TIMER_GETTIME = 4259 - SYS_TIMER_GETOVERRUN = 4260 - SYS_TIMER_DELETE = 4261 - SYS_CLOCK_SETTIME = 4262 - SYS_CLOCK_GETTIME = 4263 - SYS_CLOCK_GETRES = 4264 - SYS_CLOCK_NANOSLEEP = 4265 - SYS_TGKILL = 4266 - SYS_UTIMES = 4267 - SYS_MBIND = 4268 - SYS_GET_MEMPOLICY = 4269 - SYS_SET_MEMPOLICY = 4270 - SYS_MQ_OPEN = 4271 - SYS_MQ_UNLINK = 4272 - SYS_MQ_TIMEDSEND = 4273 - SYS_MQ_TIMEDRECEIVE = 4274 - SYS_MQ_NOTIFY = 4275 - SYS_MQ_GETSETATTR = 4276 - SYS_VSERVER = 4277 - SYS_WAITID = 4278 - SYS_ADD_KEY = 4280 - SYS_REQUEST_KEY = 4281 - SYS_KEYCTL = 4282 - SYS_SET_THREAD_AREA = 4283 - SYS_INOTIFY_INIT = 4284 - SYS_INOTIFY_ADD_WATCH = 4285 - SYS_INOTIFY_RM_WATCH = 4286 - SYS_MIGRATE_PAGES = 4287 - SYS_OPENAT = 4288 - SYS_MKDIRAT = 4289 - SYS_MKNODAT = 4290 - SYS_FCHOWNAT = 4291 - SYS_FUTIMESAT = 4292 - SYS_FSTATAT64 = 4293 - SYS_UNLINKAT = 4294 - SYS_RENAMEAT = 4295 - SYS_LINKAT = 4296 - SYS_SYMLINKAT = 4297 - SYS_READLINKAT = 4298 - SYS_FCHMODAT = 4299 - SYS_FACCESSAT = 4300 - SYS_PSELECT6 = 4301 - SYS_PPOLL = 4302 - SYS_UNSHARE = 4303 - SYS_SPLICE = 4304 - SYS_SYNC_FILE_RANGE = 4305 - SYS_TEE = 4306 - SYS_VMSPLICE = 4307 - SYS_MOVE_PAGES = 4308 - SYS_SET_ROBUST_LIST = 4309 - SYS_GET_ROBUST_LIST = 4310 - SYS_KEXEC_LOAD = 4311 - SYS_GETCPU = 4312 - SYS_EPOLL_PWAIT = 4313 - SYS_IOPRIO_SET = 4314 - SYS_IOPRIO_GET = 4315 - SYS_UTIMENSAT = 4316 - SYS_SIGNALFD = 4317 - SYS_TIMERFD = 4318 - SYS_EVENTFD = 4319 - SYS_FALLOCATE = 4320 - SYS_TIMERFD_CREATE = 4321 - SYS_TIMERFD_GETTIME = 4322 - SYS_TIMERFD_SETTIME = 4323 - SYS_SIGNALFD4 = 4324 - SYS_EVENTFD2 = 4325 - SYS_EPOLL_CREATE1 = 4326 - SYS_DUP3 = 4327 - SYS_PIPE2 = 4328 - SYS_INOTIFY_INIT1 = 4329 - SYS_PREADV = 4330 - SYS_PWRITEV = 4331 - SYS_RT_TGSIGQUEUEINFO = 4332 - SYS_PERF_EVENT_OPEN = 4333 - SYS_ACCEPT4 = 4334 - SYS_RECVMMSG = 4335 - SYS_FANOTIFY_INIT = 4336 - SYS_FANOTIFY_MARK = 4337 - SYS_PRLIMIT64 = 4338 - SYS_NAME_TO_HANDLE_AT = 4339 - SYS_OPEN_BY_HANDLE_AT = 4340 - SYS_CLOCK_ADJTIME = 4341 - SYS_SYNCFS = 4342 - SYS_SENDMMSG = 4343 - SYS_SETNS = 4344 - SYS_PROCESS_VM_READV = 4345 - SYS_PROCESS_VM_WRITEV = 4346 - SYS_KCMP = 4347 - SYS_FINIT_MODULE = 4348 - SYS_SCHED_SETATTR = 4349 - SYS_SCHED_GETATTR = 4350 - SYS_RENAMEAT2 = 4351 - SYS_SECCOMP = 4352 - SYS_GETRANDOM = 4353 - SYS_MEMFD_CREATE = 4354 - SYS_BPF = 4355 - SYS_EXECVEAT = 4356 - SYS_USERFAULTFD = 4357 - SYS_MEMBARRIER = 4358 - SYS_MLOCK2 = 4359 - SYS_COPY_FILE_RANGE = 4360 - SYS_PREADV2 = 4361 - SYS_PWRITEV2 = 4362 - SYS_PKEY_MPROTECT = 4363 - SYS_PKEY_ALLOC = 4364 - SYS_PKEY_FREE = 4365 - SYS_STATX = 4366 - SYS_RSEQ = 4367 - SYS_IO_PGETEVENTS = 4368 + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 40164ca..28e6d0e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -334,4 +334,14 @@ const ( SYS_STATX = 5326 SYS_RSEQ = 5327 SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index 8a90973..e643c6f 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -334,4 +334,14 @@ const ( SYS_STATX = 5326 SYS_RSEQ = 5327 SYS_IO_PGETEVENTS = 5328 + SYS_PIDFD_SEND_SIGNAL = 5424 + SYS_IO_URING_SETUP = 5425 + SYS_IO_URING_ENTER = 5426 + SYS_IO_URING_REGISTER = 5427 + SYS_OPEN_TREE = 5428 + SYS_MOVE_MOUNT = 5429 + SYS_FSOPEN = 5430 + SYS_FSCONFIG = 5431 + SYS_FSMOUNT = 5432 + SYS_FSPICK = 5433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index 8d78184..01d93c4 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -6,372 +6,412 @@ package unix const ( - SYS_SYSCALL = 4000 - SYS_EXIT = 4001 - SYS_FORK = 4002 - SYS_READ = 4003 - SYS_WRITE = 4004 - SYS_OPEN = 4005 - SYS_CLOSE = 4006 - SYS_WAITPID = 4007 - SYS_CREAT = 4008 - SYS_LINK = 4009 - SYS_UNLINK = 4010 - SYS_EXECVE = 4011 - SYS_CHDIR = 4012 - SYS_TIME = 4013 - SYS_MKNOD = 4014 - SYS_CHMOD = 4015 - SYS_LCHOWN = 4016 - SYS_BREAK = 4017 - SYS_UNUSED18 = 4018 - SYS_LSEEK = 4019 - SYS_GETPID = 4020 - SYS_MOUNT = 4021 - SYS_UMOUNT = 4022 - SYS_SETUID = 4023 - SYS_GETUID = 4024 - SYS_STIME = 4025 - SYS_PTRACE = 4026 - SYS_ALARM = 4027 - SYS_UNUSED28 = 4028 - SYS_PAUSE = 4029 - SYS_UTIME = 4030 - SYS_STTY = 4031 - SYS_GTTY = 4032 - SYS_ACCESS = 4033 - SYS_NICE = 4034 - SYS_FTIME = 4035 - SYS_SYNC = 4036 - SYS_KILL = 4037 - SYS_RENAME = 4038 - SYS_MKDIR = 4039 - SYS_RMDIR = 4040 - SYS_DUP = 4041 - SYS_PIPE = 4042 - SYS_TIMES = 4043 - SYS_PROF = 4044 - SYS_BRK = 4045 - SYS_SETGID = 4046 - SYS_GETGID = 4047 - SYS_SIGNAL = 4048 - SYS_GETEUID = 4049 - SYS_GETEGID = 4050 - SYS_ACCT = 4051 - SYS_UMOUNT2 = 4052 - SYS_LOCK = 4053 - SYS_IOCTL = 4054 - SYS_FCNTL = 4055 - SYS_MPX = 4056 - SYS_SETPGID = 4057 - SYS_ULIMIT = 4058 - SYS_UNUSED59 = 4059 - SYS_UMASK = 4060 - SYS_CHROOT = 4061 - SYS_USTAT = 4062 - SYS_DUP2 = 4063 - SYS_GETPPID = 4064 - SYS_GETPGRP = 4065 - SYS_SETSID = 4066 - SYS_SIGACTION = 4067 - SYS_SGETMASK = 4068 - SYS_SSETMASK = 4069 - SYS_SETREUID = 4070 - SYS_SETREGID = 4071 - SYS_SIGSUSPEND = 4072 - SYS_SIGPENDING = 4073 - SYS_SETHOSTNAME = 4074 - SYS_SETRLIMIT = 4075 - SYS_GETRLIMIT = 4076 - SYS_GETRUSAGE = 4077 - SYS_GETTIMEOFDAY = 4078 - SYS_SETTIMEOFDAY = 4079 - SYS_GETGROUPS = 4080 - SYS_SETGROUPS = 4081 - SYS_RESERVED82 = 4082 - SYS_SYMLINK = 4083 - SYS_UNUSED84 = 4084 - SYS_READLINK = 4085 - SYS_USELIB = 4086 - SYS_SWAPON = 4087 - SYS_REBOOT = 4088 - SYS_READDIR = 4089 - SYS_MMAP = 4090 - SYS_MUNMAP = 4091 - SYS_TRUNCATE = 4092 - SYS_FTRUNCATE = 4093 - SYS_FCHMOD = 4094 - SYS_FCHOWN = 4095 - SYS_GETPRIORITY = 4096 - SYS_SETPRIORITY = 4097 - SYS_PROFIL = 4098 - SYS_STATFS = 4099 - SYS_FSTATFS = 4100 - SYS_IOPERM = 4101 - SYS_SOCKETCALL = 4102 - SYS_SYSLOG = 4103 - SYS_SETITIMER = 4104 - SYS_GETITIMER = 4105 - SYS_STAT = 4106 - SYS_LSTAT = 4107 - SYS_FSTAT = 4108 - SYS_UNUSED109 = 4109 - SYS_IOPL = 4110 - SYS_VHANGUP = 4111 - SYS_IDLE = 4112 - SYS_VM86 = 4113 - SYS_WAIT4 = 4114 - SYS_SWAPOFF = 4115 - SYS_SYSINFO = 4116 - SYS_IPC = 4117 - SYS_FSYNC = 4118 - SYS_SIGRETURN = 4119 - SYS_CLONE = 4120 - SYS_SETDOMAINNAME = 4121 - SYS_UNAME = 4122 - SYS_MODIFY_LDT = 4123 - SYS_ADJTIMEX = 4124 - SYS_MPROTECT = 4125 - SYS_SIGPROCMASK = 4126 - SYS_CREATE_MODULE = 4127 - SYS_INIT_MODULE = 4128 - SYS_DELETE_MODULE = 4129 - SYS_GET_KERNEL_SYMS = 4130 - SYS_QUOTACTL = 4131 - SYS_GETPGID = 4132 - SYS_FCHDIR = 4133 - SYS_BDFLUSH = 4134 - SYS_SYSFS = 4135 - SYS_PERSONALITY = 4136 - SYS_AFS_SYSCALL = 4137 - SYS_SETFSUID = 4138 - SYS_SETFSGID = 4139 - SYS__LLSEEK = 4140 - SYS_GETDENTS = 4141 - SYS__NEWSELECT = 4142 - SYS_FLOCK = 4143 - SYS_MSYNC = 4144 - SYS_READV = 4145 - SYS_WRITEV = 4146 - SYS_CACHEFLUSH = 4147 - SYS_CACHECTL = 4148 - SYS_SYSMIPS = 4149 - SYS_UNUSED150 = 4150 - SYS_GETSID = 4151 - SYS_FDATASYNC = 4152 - SYS__SYSCTL = 4153 - SYS_MLOCK = 4154 - SYS_MUNLOCK = 4155 - SYS_MLOCKALL = 4156 - SYS_MUNLOCKALL = 4157 - SYS_SCHED_SETPARAM = 4158 - SYS_SCHED_GETPARAM = 4159 - SYS_SCHED_SETSCHEDULER = 4160 - SYS_SCHED_GETSCHEDULER = 4161 - SYS_SCHED_YIELD = 4162 - SYS_SCHED_GET_PRIORITY_MAX = 4163 - SYS_SCHED_GET_PRIORITY_MIN = 4164 - SYS_SCHED_RR_GET_INTERVAL = 4165 - SYS_NANOSLEEP = 4166 - SYS_MREMAP = 4167 - SYS_ACCEPT = 4168 - SYS_BIND = 4169 - SYS_CONNECT = 4170 - SYS_GETPEERNAME = 4171 - SYS_GETSOCKNAME = 4172 - SYS_GETSOCKOPT = 4173 - SYS_LISTEN = 4174 - SYS_RECV = 4175 - SYS_RECVFROM = 4176 - SYS_RECVMSG = 4177 - SYS_SEND = 4178 - SYS_SENDMSG = 4179 - SYS_SENDTO = 4180 - SYS_SETSOCKOPT = 4181 - SYS_SHUTDOWN = 4182 - SYS_SOCKET = 4183 - SYS_SOCKETPAIR = 4184 - SYS_SETRESUID = 4185 - SYS_GETRESUID = 4186 - SYS_QUERY_MODULE = 4187 - SYS_POLL = 4188 - SYS_NFSSERVCTL = 4189 - SYS_SETRESGID = 4190 - SYS_GETRESGID = 4191 - SYS_PRCTL = 4192 - SYS_RT_SIGRETURN = 4193 - SYS_RT_SIGACTION = 4194 - SYS_RT_SIGPROCMASK = 4195 - SYS_RT_SIGPENDING = 4196 - SYS_RT_SIGTIMEDWAIT = 4197 - SYS_RT_SIGQUEUEINFO = 4198 - SYS_RT_SIGSUSPEND = 4199 - SYS_PREAD64 = 4200 - SYS_PWRITE64 = 4201 - SYS_CHOWN = 4202 - SYS_GETCWD = 4203 - SYS_CAPGET = 4204 - SYS_CAPSET = 4205 - SYS_SIGALTSTACK = 4206 - SYS_SENDFILE = 4207 - SYS_GETPMSG = 4208 - SYS_PUTPMSG = 4209 - SYS_MMAP2 = 4210 - SYS_TRUNCATE64 = 4211 - SYS_FTRUNCATE64 = 4212 - SYS_STAT64 = 4213 - SYS_LSTAT64 = 4214 - SYS_FSTAT64 = 4215 - SYS_PIVOT_ROOT = 4216 - SYS_MINCORE = 4217 - SYS_MADVISE = 4218 - SYS_GETDENTS64 = 4219 - SYS_FCNTL64 = 4220 - SYS_RESERVED221 = 4221 - SYS_GETTID = 4222 - SYS_READAHEAD = 4223 - SYS_SETXATTR = 4224 - SYS_LSETXATTR = 4225 - SYS_FSETXATTR = 4226 - SYS_GETXATTR = 4227 - SYS_LGETXATTR = 4228 - SYS_FGETXATTR = 4229 - SYS_LISTXATTR = 4230 - SYS_LLISTXATTR = 4231 - SYS_FLISTXATTR = 4232 - SYS_REMOVEXATTR = 4233 - SYS_LREMOVEXATTR = 4234 - SYS_FREMOVEXATTR = 4235 - SYS_TKILL = 4236 - SYS_SENDFILE64 = 4237 - SYS_FUTEX = 4238 - SYS_SCHED_SETAFFINITY = 4239 - SYS_SCHED_GETAFFINITY = 4240 - SYS_IO_SETUP = 4241 - SYS_IO_DESTROY = 4242 - SYS_IO_GETEVENTS = 4243 - SYS_IO_SUBMIT = 4244 - SYS_IO_CANCEL = 4245 - SYS_EXIT_GROUP = 4246 - SYS_LOOKUP_DCOOKIE = 4247 - SYS_EPOLL_CREATE = 4248 - SYS_EPOLL_CTL = 4249 - SYS_EPOLL_WAIT = 4250 - SYS_REMAP_FILE_PAGES = 4251 - SYS_SET_TID_ADDRESS = 4252 - SYS_RESTART_SYSCALL = 4253 - SYS_FADVISE64 = 4254 - SYS_STATFS64 = 4255 - SYS_FSTATFS64 = 4256 - SYS_TIMER_CREATE = 4257 - SYS_TIMER_SETTIME = 4258 - SYS_TIMER_GETTIME = 4259 - SYS_TIMER_GETOVERRUN = 4260 - SYS_TIMER_DELETE = 4261 - SYS_CLOCK_SETTIME = 4262 - SYS_CLOCK_GETTIME = 4263 - SYS_CLOCK_GETRES = 4264 - SYS_CLOCK_NANOSLEEP = 4265 - SYS_TGKILL = 4266 - SYS_UTIMES = 4267 - SYS_MBIND = 4268 - SYS_GET_MEMPOLICY = 4269 - SYS_SET_MEMPOLICY = 4270 - SYS_MQ_OPEN = 4271 - SYS_MQ_UNLINK = 4272 - SYS_MQ_TIMEDSEND = 4273 - SYS_MQ_TIMEDRECEIVE = 4274 - SYS_MQ_NOTIFY = 4275 - SYS_MQ_GETSETATTR = 4276 - SYS_VSERVER = 4277 - SYS_WAITID = 4278 - SYS_ADD_KEY = 4280 - SYS_REQUEST_KEY = 4281 - SYS_KEYCTL = 4282 - SYS_SET_THREAD_AREA = 4283 - SYS_INOTIFY_INIT = 4284 - SYS_INOTIFY_ADD_WATCH = 4285 - SYS_INOTIFY_RM_WATCH = 4286 - SYS_MIGRATE_PAGES = 4287 - SYS_OPENAT = 4288 - SYS_MKDIRAT = 4289 - SYS_MKNODAT = 4290 - SYS_FCHOWNAT = 4291 - SYS_FUTIMESAT = 4292 - SYS_FSTATAT64 = 4293 - SYS_UNLINKAT = 4294 - SYS_RENAMEAT = 4295 - SYS_LINKAT = 4296 - SYS_SYMLINKAT = 4297 - SYS_READLINKAT = 4298 - SYS_FCHMODAT = 4299 - SYS_FACCESSAT = 4300 - SYS_PSELECT6 = 4301 - SYS_PPOLL = 4302 - SYS_UNSHARE = 4303 - SYS_SPLICE = 4304 - SYS_SYNC_FILE_RANGE = 4305 - SYS_TEE = 4306 - SYS_VMSPLICE = 4307 - SYS_MOVE_PAGES = 4308 - SYS_SET_ROBUST_LIST = 4309 - SYS_GET_ROBUST_LIST = 4310 - SYS_KEXEC_LOAD = 4311 - SYS_GETCPU = 4312 - SYS_EPOLL_PWAIT = 4313 - SYS_IOPRIO_SET = 4314 - SYS_IOPRIO_GET = 4315 - SYS_UTIMENSAT = 4316 - SYS_SIGNALFD = 4317 - SYS_TIMERFD = 4318 - SYS_EVENTFD = 4319 - SYS_FALLOCATE = 4320 - SYS_TIMERFD_CREATE = 4321 - SYS_TIMERFD_GETTIME = 4322 - SYS_TIMERFD_SETTIME = 4323 - SYS_SIGNALFD4 = 4324 - SYS_EVENTFD2 = 4325 - SYS_EPOLL_CREATE1 = 4326 - SYS_DUP3 = 4327 - SYS_PIPE2 = 4328 - SYS_INOTIFY_INIT1 = 4329 - SYS_PREADV = 4330 - SYS_PWRITEV = 4331 - SYS_RT_TGSIGQUEUEINFO = 4332 - SYS_PERF_EVENT_OPEN = 4333 - SYS_ACCEPT4 = 4334 - SYS_RECVMMSG = 4335 - SYS_FANOTIFY_INIT = 4336 - SYS_FANOTIFY_MARK = 4337 - SYS_PRLIMIT64 = 4338 - SYS_NAME_TO_HANDLE_AT = 4339 - SYS_OPEN_BY_HANDLE_AT = 4340 - SYS_CLOCK_ADJTIME = 4341 - SYS_SYNCFS = 4342 - SYS_SENDMMSG = 4343 - SYS_SETNS = 4344 - SYS_PROCESS_VM_READV = 4345 - SYS_PROCESS_VM_WRITEV = 4346 - SYS_KCMP = 4347 - SYS_FINIT_MODULE = 4348 - SYS_SCHED_SETATTR = 4349 - SYS_SCHED_GETATTR = 4350 - SYS_RENAMEAT2 = 4351 - SYS_SECCOMP = 4352 - SYS_GETRANDOM = 4353 - SYS_MEMFD_CREATE = 4354 - SYS_BPF = 4355 - SYS_EXECVEAT = 4356 - SYS_USERFAULTFD = 4357 - SYS_MEMBARRIER = 4358 - SYS_MLOCK2 = 4359 - SYS_COPY_FILE_RANGE = 4360 - SYS_PREADV2 = 4361 - SYS_PWRITEV2 = 4362 - SYS_PKEY_MPROTECT = 4363 - SYS_PKEY_ALLOC = 4364 - SYS_PKEY_FREE = 4365 - SYS_STATX = 4366 - SYS_RSEQ = 4367 - SYS_IO_PGETEVENTS = 4368 + SYS_SYSCALL = 4000 + SYS_EXIT = 4001 + SYS_FORK = 4002 + SYS_READ = 4003 + SYS_WRITE = 4004 + SYS_OPEN = 4005 + SYS_CLOSE = 4006 + SYS_WAITPID = 4007 + SYS_CREAT = 4008 + SYS_LINK = 4009 + SYS_UNLINK = 4010 + SYS_EXECVE = 4011 + SYS_CHDIR = 4012 + SYS_TIME = 4013 + SYS_MKNOD = 4014 + SYS_CHMOD = 4015 + SYS_LCHOWN = 4016 + SYS_BREAK = 4017 + SYS_UNUSED18 = 4018 + SYS_LSEEK = 4019 + SYS_GETPID = 4020 + SYS_MOUNT = 4021 + SYS_UMOUNT = 4022 + SYS_SETUID = 4023 + SYS_GETUID = 4024 + SYS_STIME = 4025 + SYS_PTRACE = 4026 + SYS_ALARM = 4027 + SYS_UNUSED28 = 4028 + SYS_PAUSE = 4029 + SYS_UTIME = 4030 + SYS_STTY = 4031 + SYS_GTTY = 4032 + SYS_ACCESS = 4033 + SYS_NICE = 4034 + SYS_FTIME = 4035 + SYS_SYNC = 4036 + SYS_KILL = 4037 + SYS_RENAME = 4038 + SYS_MKDIR = 4039 + SYS_RMDIR = 4040 + SYS_DUP = 4041 + SYS_PIPE = 4042 + SYS_TIMES = 4043 + SYS_PROF = 4044 + SYS_BRK = 4045 + SYS_SETGID = 4046 + SYS_GETGID = 4047 + SYS_SIGNAL = 4048 + SYS_GETEUID = 4049 + SYS_GETEGID = 4050 + SYS_ACCT = 4051 + SYS_UMOUNT2 = 4052 + SYS_LOCK = 4053 + SYS_IOCTL = 4054 + SYS_FCNTL = 4055 + SYS_MPX = 4056 + SYS_SETPGID = 4057 + SYS_ULIMIT = 4058 + SYS_UNUSED59 = 4059 + SYS_UMASK = 4060 + SYS_CHROOT = 4061 + SYS_USTAT = 4062 + SYS_DUP2 = 4063 + SYS_GETPPID = 4064 + SYS_GETPGRP = 4065 + SYS_SETSID = 4066 + SYS_SIGACTION = 4067 + SYS_SGETMASK = 4068 + SYS_SSETMASK = 4069 + SYS_SETREUID = 4070 + SYS_SETREGID = 4071 + SYS_SIGSUSPEND = 4072 + SYS_SIGPENDING = 4073 + SYS_SETHOSTNAME = 4074 + SYS_SETRLIMIT = 4075 + SYS_GETRLIMIT = 4076 + SYS_GETRUSAGE = 4077 + SYS_GETTIMEOFDAY = 4078 + SYS_SETTIMEOFDAY = 4079 + SYS_GETGROUPS = 4080 + SYS_SETGROUPS = 4081 + SYS_RESERVED82 = 4082 + SYS_SYMLINK = 4083 + SYS_UNUSED84 = 4084 + SYS_READLINK = 4085 + SYS_USELIB = 4086 + SYS_SWAPON = 4087 + SYS_REBOOT = 4088 + SYS_READDIR = 4089 + SYS_MMAP = 4090 + SYS_MUNMAP = 4091 + SYS_TRUNCATE = 4092 + SYS_FTRUNCATE = 4093 + SYS_FCHMOD = 4094 + SYS_FCHOWN = 4095 + SYS_GETPRIORITY = 4096 + SYS_SETPRIORITY = 4097 + SYS_PROFIL = 4098 + SYS_STATFS = 4099 + SYS_FSTATFS = 4100 + SYS_IOPERM = 4101 + SYS_SOCKETCALL = 4102 + SYS_SYSLOG = 4103 + SYS_SETITIMER = 4104 + SYS_GETITIMER = 4105 + SYS_STAT = 4106 + SYS_LSTAT = 4107 + SYS_FSTAT = 4108 + SYS_UNUSED109 = 4109 + SYS_IOPL = 4110 + SYS_VHANGUP = 4111 + SYS_IDLE = 4112 + SYS_VM86 = 4113 + SYS_WAIT4 = 4114 + SYS_SWAPOFF = 4115 + SYS_SYSINFO = 4116 + SYS_IPC = 4117 + SYS_FSYNC = 4118 + SYS_SIGRETURN = 4119 + SYS_CLONE = 4120 + SYS_SETDOMAINNAME = 4121 + SYS_UNAME = 4122 + SYS_MODIFY_LDT = 4123 + SYS_ADJTIMEX = 4124 + SYS_MPROTECT = 4125 + SYS_SIGPROCMASK = 4126 + SYS_CREATE_MODULE = 4127 + SYS_INIT_MODULE = 4128 + SYS_DELETE_MODULE = 4129 + SYS_GET_KERNEL_SYMS = 4130 + SYS_QUOTACTL = 4131 + SYS_GETPGID = 4132 + SYS_FCHDIR = 4133 + SYS_BDFLUSH = 4134 + SYS_SYSFS = 4135 + SYS_PERSONALITY = 4136 + SYS_AFS_SYSCALL = 4137 + SYS_SETFSUID = 4138 + SYS_SETFSGID = 4139 + SYS__LLSEEK = 4140 + SYS_GETDENTS = 4141 + SYS__NEWSELECT = 4142 + SYS_FLOCK = 4143 + SYS_MSYNC = 4144 + SYS_READV = 4145 + SYS_WRITEV = 4146 + SYS_CACHEFLUSH = 4147 + SYS_CACHECTL = 4148 + SYS_SYSMIPS = 4149 + SYS_UNUSED150 = 4150 + SYS_GETSID = 4151 + SYS_FDATASYNC = 4152 + SYS__SYSCTL = 4153 + SYS_MLOCK = 4154 + SYS_MUNLOCK = 4155 + SYS_MLOCKALL = 4156 + SYS_MUNLOCKALL = 4157 + SYS_SCHED_SETPARAM = 4158 + SYS_SCHED_GETPARAM = 4159 + SYS_SCHED_SETSCHEDULER = 4160 + SYS_SCHED_GETSCHEDULER = 4161 + SYS_SCHED_YIELD = 4162 + SYS_SCHED_GET_PRIORITY_MAX = 4163 + SYS_SCHED_GET_PRIORITY_MIN = 4164 + SYS_SCHED_RR_GET_INTERVAL = 4165 + SYS_NANOSLEEP = 4166 + SYS_MREMAP = 4167 + SYS_ACCEPT = 4168 + SYS_BIND = 4169 + SYS_CONNECT = 4170 + SYS_GETPEERNAME = 4171 + SYS_GETSOCKNAME = 4172 + SYS_GETSOCKOPT = 4173 + SYS_LISTEN = 4174 + SYS_RECV = 4175 + SYS_RECVFROM = 4176 + SYS_RECVMSG = 4177 + SYS_SEND = 4178 + SYS_SENDMSG = 4179 + SYS_SENDTO = 4180 + SYS_SETSOCKOPT = 4181 + SYS_SHUTDOWN = 4182 + SYS_SOCKET = 4183 + SYS_SOCKETPAIR = 4184 + SYS_SETRESUID = 4185 + SYS_GETRESUID = 4186 + SYS_QUERY_MODULE = 4187 + SYS_POLL = 4188 + SYS_NFSSERVCTL = 4189 + SYS_SETRESGID = 4190 + SYS_GETRESGID = 4191 + SYS_PRCTL = 4192 + SYS_RT_SIGRETURN = 4193 + SYS_RT_SIGACTION = 4194 + SYS_RT_SIGPROCMASK = 4195 + SYS_RT_SIGPENDING = 4196 + SYS_RT_SIGTIMEDWAIT = 4197 + SYS_RT_SIGQUEUEINFO = 4198 + SYS_RT_SIGSUSPEND = 4199 + SYS_PREAD64 = 4200 + SYS_PWRITE64 = 4201 + SYS_CHOWN = 4202 + SYS_GETCWD = 4203 + SYS_CAPGET = 4204 + SYS_CAPSET = 4205 + SYS_SIGALTSTACK = 4206 + SYS_SENDFILE = 4207 + SYS_GETPMSG = 4208 + SYS_PUTPMSG = 4209 + SYS_MMAP2 = 4210 + SYS_TRUNCATE64 = 4211 + SYS_FTRUNCATE64 = 4212 + SYS_STAT64 = 4213 + SYS_LSTAT64 = 4214 + SYS_FSTAT64 = 4215 + SYS_PIVOT_ROOT = 4216 + SYS_MINCORE = 4217 + SYS_MADVISE = 4218 + SYS_GETDENTS64 = 4219 + SYS_FCNTL64 = 4220 + SYS_RESERVED221 = 4221 + SYS_GETTID = 4222 + SYS_READAHEAD = 4223 + SYS_SETXATTR = 4224 + SYS_LSETXATTR = 4225 + SYS_FSETXATTR = 4226 + SYS_GETXATTR = 4227 + SYS_LGETXATTR = 4228 + SYS_FGETXATTR = 4229 + SYS_LISTXATTR = 4230 + SYS_LLISTXATTR = 4231 + SYS_FLISTXATTR = 4232 + SYS_REMOVEXATTR = 4233 + SYS_LREMOVEXATTR = 4234 + SYS_FREMOVEXATTR = 4235 + SYS_TKILL = 4236 + SYS_SENDFILE64 = 4237 + SYS_FUTEX = 4238 + SYS_SCHED_SETAFFINITY = 4239 + SYS_SCHED_GETAFFINITY = 4240 + SYS_IO_SETUP = 4241 + SYS_IO_DESTROY = 4242 + SYS_IO_GETEVENTS = 4243 + SYS_IO_SUBMIT = 4244 + SYS_IO_CANCEL = 4245 + SYS_EXIT_GROUP = 4246 + SYS_LOOKUP_DCOOKIE = 4247 + SYS_EPOLL_CREATE = 4248 + SYS_EPOLL_CTL = 4249 + SYS_EPOLL_WAIT = 4250 + SYS_REMAP_FILE_PAGES = 4251 + SYS_SET_TID_ADDRESS = 4252 + SYS_RESTART_SYSCALL = 4253 + SYS_FADVISE64 = 4254 + SYS_STATFS64 = 4255 + SYS_FSTATFS64 = 4256 + SYS_TIMER_CREATE = 4257 + SYS_TIMER_SETTIME = 4258 + SYS_TIMER_GETTIME = 4259 + SYS_TIMER_GETOVERRUN = 4260 + SYS_TIMER_DELETE = 4261 + SYS_CLOCK_SETTIME = 4262 + SYS_CLOCK_GETTIME = 4263 + SYS_CLOCK_GETRES = 4264 + SYS_CLOCK_NANOSLEEP = 4265 + SYS_TGKILL = 4266 + SYS_UTIMES = 4267 + SYS_MBIND = 4268 + SYS_GET_MEMPOLICY = 4269 + SYS_SET_MEMPOLICY = 4270 + SYS_MQ_OPEN = 4271 + SYS_MQ_UNLINK = 4272 + SYS_MQ_TIMEDSEND = 4273 + SYS_MQ_TIMEDRECEIVE = 4274 + SYS_MQ_NOTIFY = 4275 + SYS_MQ_GETSETATTR = 4276 + SYS_VSERVER = 4277 + SYS_WAITID = 4278 + SYS_ADD_KEY = 4280 + SYS_REQUEST_KEY = 4281 + SYS_KEYCTL = 4282 + SYS_SET_THREAD_AREA = 4283 + SYS_INOTIFY_INIT = 4284 + SYS_INOTIFY_ADD_WATCH = 4285 + SYS_INOTIFY_RM_WATCH = 4286 + SYS_MIGRATE_PAGES = 4287 + SYS_OPENAT = 4288 + SYS_MKDIRAT = 4289 + SYS_MKNODAT = 4290 + SYS_FCHOWNAT = 4291 + SYS_FUTIMESAT = 4292 + SYS_FSTATAT64 = 4293 + SYS_UNLINKAT = 4294 + SYS_RENAMEAT = 4295 + SYS_LINKAT = 4296 + SYS_SYMLINKAT = 4297 + SYS_READLINKAT = 4298 + SYS_FCHMODAT = 4299 + SYS_FACCESSAT = 4300 + SYS_PSELECT6 = 4301 + SYS_PPOLL = 4302 + SYS_UNSHARE = 4303 + SYS_SPLICE = 4304 + SYS_SYNC_FILE_RANGE = 4305 + SYS_TEE = 4306 + SYS_VMSPLICE = 4307 + SYS_MOVE_PAGES = 4308 + SYS_SET_ROBUST_LIST = 4309 + SYS_GET_ROBUST_LIST = 4310 + SYS_KEXEC_LOAD = 4311 + SYS_GETCPU = 4312 + SYS_EPOLL_PWAIT = 4313 + SYS_IOPRIO_SET = 4314 + SYS_IOPRIO_GET = 4315 + SYS_UTIMENSAT = 4316 + SYS_SIGNALFD = 4317 + SYS_TIMERFD = 4318 + SYS_EVENTFD = 4319 + SYS_FALLOCATE = 4320 + SYS_TIMERFD_CREATE = 4321 + SYS_TIMERFD_GETTIME = 4322 + SYS_TIMERFD_SETTIME = 4323 + SYS_SIGNALFD4 = 4324 + SYS_EVENTFD2 = 4325 + SYS_EPOLL_CREATE1 = 4326 + SYS_DUP3 = 4327 + SYS_PIPE2 = 4328 + SYS_INOTIFY_INIT1 = 4329 + SYS_PREADV = 4330 + SYS_PWRITEV = 4331 + SYS_RT_TGSIGQUEUEINFO = 4332 + SYS_PERF_EVENT_OPEN = 4333 + SYS_ACCEPT4 = 4334 + SYS_RECVMMSG = 4335 + SYS_FANOTIFY_INIT = 4336 + SYS_FANOTIFY_MARK = 4337 + SYS_PRLIMIT64 = 4338 + SYS_NAME_TO_HANDLE_AT = 4339 + SYS_OPEN_BY_HANDLE_AT = 4340 + SYS_CLOCK_ADJTIME = 4341 + SYS_SYNCFS = 4342 + SYS_SENDMMSG = 4343 + SYS_SETNS = 4344 + SYS_PROCESS_VM_READV = 4345 + SYS_PROCESS_VM_WRITEV = 4346 + SYS_KCMP = 4347 + SYS_FINIT_MODULE = 4348 + SYS_SCHED_SETATTR = 4349 + SYS_SCHED_GETATTR = 4350 + SYS_RENAMEAT2 = 4351 + SYS_SECCOMP = 4352 + SYS_GETRANDOM = 4353 + SYS_MEMFD_CREATE = 4354 + SYS_BPF = 4355 + SYS_EXECVEAT = 4356 + SYS_USERFAULTFD = 4357 + SYS_MEMBARRIER = 4358 + SYS_MLOCK2 = 4359 + SYS_COPY_FILE_RANGE = 4360 + SYS_PREADV2 = 4361 + SYS_PWRITEV2 = 4362 + SYS_PKEY_MPROTECT = 4363 + SYS_PKEY_ALLOC = 4364 + SYS_PKEY_FREE = 4365 + SYS_STATX = 4366 + SYS_RSEQ = 4367 + SYS_IO_PGETEVENTS = 4368 + SYS_SEMGET = 4393 + SYS_SEMCTL = 4394 + SYS_SHMGET = 4395 + SYS_SHMCTL = 4396 + SYS_SHMAT = 4397 + SYS_SHMDT = 4398 + SYS_MSGGET = 4399 + SYS_MSGSND = 4400 + SYS_MSGRCV = 4401 + SYS_MSGCTL = 4402 + SYS_CLOCK_GETTIME64 = 4403 + SYS_CLOCK_SETTIME64 = 4404 + SYS_CLOCK_ADJTIME64 = 4405 + SYS_CLOCK_GETRES_TIME64 = 4406 + SYS_CLOCK_NANOSLEEP_TIME64 = 4407 + SYS_TIMER_GETTIME64 = 4408 + SYS_TIMER_SETTIME64 = 4409 + SYS_TIMERFD_GETTIME64 = 4410 + SYS_TIMERFD_SETTIME64 = 4411 + SYS_UTIMENSAT_TIME64 = 4412 + SYS_PSELECT6_TIME64 = 4413 + SYS_PPOLL_TIME64 = 4414 + SYS_IO_PGETEVENTS_TIME64 = 4416 + SYS_RECVMMSG_TIME64 = 4417 + SYS_MQ_TIMEDSEND_TIME64 = 4418 + SYS_MQ_TIMEDRECEIVE_TIME64 = 4419 + SYS_SEMTIMEDOP_TIME64 = 4420 + SYS_RT_SIGTIMEDWAIT_TIME64 = 4421 + SYS_FUTEX_TIME64 = 4422 + SYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423 + SYS_PIDFD_SEND_SIGNAL = 4424 + SYS_IO_URING_SETUP = 4425 + SYS_IO_URING_ENTER = 4426 + SYS_IO_URING_REGISTER = 4427 + SYS_OPEN_TREE = 4428 + SYS_MOVE_MOUNT = 4429 + SYS_FSOPEN = 4430 + SYS_FSCONFIG = 4431 + SYS_FSMOUNT = 4432 + SYS_FSPICK = 4433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index ec5bde3..5744149 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -372,4 +372,25 @@ const ( SYS_PKEY_MPROTECT = 386 SYS_RSEQ = 387 SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index bdbabdb..21c8320 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -372,4 +372,25 @@ const ( SYS_PKEY_MPROTECT = 386 SYS_RSEQ = 387 SYS_IO_PGETEVENTS = 388 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 2c8c46a..c1bb6d8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -285,4 +285,14 @@ const ( SYS_IO_PGETEVENTS = 292 SYS_RSEQ = 293 SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 6eb7c25..bc3cc6b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -334,4 +334,28 @@ const ( SYS_KEXEC_FILE_LOAD = 381 SYS_IO_PGETEVENTS = 382 SYS_RSEQ = 383 + SYS_PKEY_MPROTECT = 384 + SYS_PKEY_ALLOC = 385 + SYS_PKEY_FREE = 386 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 6ed3063..0a2841b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -348,4 +348,29 @@ const ( SYS_PWRITEV2 = 359 SYS_STATX = 360 SYS_IO_PGETEVENTS = 361 + SYS_PKEY_MPROTECT = 362 + SYS_PKEY_ALLOC = 363 + SYS_PKEY_FREE = 364 + SYS_RSEQ = 365 + SYS_SEMTIMEDOP = 392 + SYS_SEMGET = 393 + SYS_SEMCTL = 394 + SYS_SHMGET = 395 + SYS_SHMCTL = 396 + SYS_SHMAT = 397 + SYS_SHMDT = 398 + SYS_MSGGET = 399 + SYS_MSGSND = 400 + SYS_MSGRCV = 401 + SYS_MSGCTL = 402 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go new file mode 100644 index 0000000..fe2b689 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go @@ -0,0 +1,217 @@ +// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int sys_open(const char *path, int flags, ... mode_t mode); } + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, size_t psize); } + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); } + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, dev_t dev); } + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, gid_t gid); } + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, struct rusage *rusage); } + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, int flags, void *data); } + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); } + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); } + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); } + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); } + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); } + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); } + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); } + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, u_long com, ... void *data); } + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, const char *link); } + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int sys_execve(const char *path, char * const *argp, char * const *envp); } + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); } + SYS_STATFS = 63 // { int sys_statfs(const char *path, struct statfs *buf); } + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); } + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); } + SYS_SETITIMER = 69 // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); } + SYS_GETITIMER = 70 // { int sys_getitimer(int which, struct itimerval *itv); } + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_KEVENT = 72 // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, int behav); } + SYS_UTIMES = 76 // { int sys_utimes(const char *path, const struct timeval *tptr); } + SYS_FUTIMES = 77 // { int sys_futimes(int fd, const struct timeval *tptr); } + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, const gid_t *gidset); } + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_FUTEX = 83 // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); } + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, const struct timespec *times); } + SYS_KBIND = 86 // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); } + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); } + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); } + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); } + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); } + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); } + SYS_PLEDGE = 108 // { int sys_pledge(const char *promises, const char *execpromises); } + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); } + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); } + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_SENDSYSLOG = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); } + SYS_UNVEIL = 114 // { int sys_unveil(const char *path, const char *permissions); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); } + SYS_THRKILL = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); } + SYS_READV = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); } + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); } + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); } + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); } + SYS_GETLOGIN_R = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); } + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); } + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); } + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); } + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); } + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); } + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); } + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, off_t length); } + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS_SYSCTL = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); } + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, int inherit); } + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); } + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); } + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); } + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); } + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, int n); } + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); } + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); } + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); } + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); } + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); } + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); } + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); } + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); } + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); } + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); } + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); } + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); } + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, int flag); } + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go index cedc9b0..2c1f815 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go @@ -30,11 +30,6 @@ type Timespec struct { Nsec int32 } -type StTimespec struct { - Sec int32 - Nsec int32 -} - type Timeval struct { Sec int32 Usec int32 @@ -101,9 +96,9 @@ type Stat_t struct { Gid uint32 Rdev uint32 Size int32 - Atim StTimespec - Mtim StTimespec - Ctim StTimespec + Atim Timespec + Mtim Timespec + Ctim Timespec Blksize int32 Blocks int32 Vfstype int32 @@ -148,6 +143,17 @@ type RawSockaddrUnix struct { Path [1023]uint8 } +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + type RawSockaddr struct { Len uint8 Family uint8 @@ -207,17 +213,18 @@ type Msghdr struct { } const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x404 - SizeofSockaddrUnix = 0x401 - SizeofLinger = 0x8 - SizeofIPMreq = 0x8 - SizeofIPv6Mreq = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofMsghdr = 0x1c - SizeofCmsghdr = 0xc - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 ) const ( diff --git a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go index f46482d..b4a069e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go @@ -30,12 +30,6 @@ type Timespec struct { Nsec int64 } -type StTimespec struct { - Sec int64 - Nsec int32 - _ [4]byte -} - type Timeval struct { Sec int64 Usec int32 @@ -103,10 +97,9 @@ type Stat_t struct { Gid uint32 Rdev uint64 Ssize int32 - _ [4]byte - Atim StTimespec - Mtim StTimespec - Ctim StTimespec + Atim Timespec + Mtim Timespec + Ctim Timespec Blksize int64 Blocks int64 Vfstype int32 @@ -154,6 +147,17 @@ type RawSockaddrUnix struct { Path [1023]uint8 } +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [120]uint8 +} + type RawSockaddr struct { Len uint8 Family uint8 @@ -205,27 +209,26 @@ type Linger struct { type Msghdr struct { Name *byte Namelen uint32 - _ [4]byte Iov *Iovec Iovlen int32 - _ [4]byte Control *byte Controllen uint32 Flags int32 } const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x404 - SizeofSockaddrUnix = 0x401 - SizeofLinger = 0x8 - SizeofIPMreq = 0x8 - SizeofIPv6Mreq = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x404 + SizeofSockaddrUnix = 0x401 + SizeofSockaddrDatalink = 0x80 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofICMPv6Filter = 0x20 ) const ( @@ -339,7 +342,6 @@ type Statfs_t struct { Ffree uint64 Fsid Fsid64_t Vfstype int32 - _ [4]byte Fsize uint64 Vfsnumber int32 Vfsoff int32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go index cefe2f8..9f47b87 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_386.go @@ -59,24 +59,24 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index c6bb883..966798a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -63,25 +63,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - _ [4]byte - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go index 94c23bc..4fe4c9c 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go @@ -60,24 +60,24 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index c82a930..21999e4 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -63,25 +63,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev int32 - Mode uint16 - Nlink uint16 - Ino uint64 - Uid uint32 - Gid uint32 - Rdev int32 - _ [4]byte - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare [2]int64 + Dev int32 + Mode uint16 + Nlink uint16 + Ino uint64 + Uid uint32 + Gid uint32 + Rdev int32 + _ [4]byte + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare [2]int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go index 7b34e2e..c206f2b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go @@ -57,25 +57,25 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Ino uint64 - Nlink uint32 - Dev uint32 - Mode uint16 - Padding1 uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Lspare int32 - Qspare1 int64 - Qspare2 int64 + Ino uint64 + Nlink uint32 + Dev uint32 + Mode uint16 + _1 uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Lspare int32 + Qspare1 int64 + Qspare2 int64 } type Statfs_t struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index c146c1a..7312e95 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -62,50 +62,50 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim_ext int32 - Atim Timespec - Mtim_ext int32 - Mtim Timespec - Ctim_ext int32 - Ctim Timespec - Btim_ext int32 - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + _ int32 + Atim Timespec + _ int32 + Mtim Timespec + _ int32 + Ctim Timespec + _ int32 + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec - _ [8]byte + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec + _ [8]byte } type Statfs_t struct { @@ -324,11 +324,108 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 ) +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + X_reason [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Fs uint32 + Es uint32 + Ds uint32 + Edi uint32 + Esi uint32 + Ebp uint32 + Isp uint32 + Ebx uint32 + Edx uint32 + Ecx uint32 + Eax uint32 + Trapno uint32 + Err uint32 + Eip uint32 + Cs uint32 + Eflags uint32 + Esp uint32 + Ss uint32 + Gs uint32 +} + +type FpReg struct { + Env [7]uint32 + Acc [8][10]uint8 + Ex_sw uint32 + Pad [64]uint8 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint32 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index ac33a8d..29ba2f5 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -62,45 +62,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,115 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 ) +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R15 int64 + R14 int64 + R13 int64 + R12 int64 + R11 int64 + R10 int64 + R9 int64 + R8 int64 + Rdi int64 + Rsi int64 + Rbp int64 + Rbx int64 + Rdx int64 + Rcx int64 + Rax int64 + Trapno uint32 + Fs uint16 + Gs uint16 + Err uint32 + Es uint16 + Ds uint16 + Rip int64 + Cs int64 + Rflags int64 + Rsp int64 + Ss int64 +} + +type FpReg struct { + Env [4]uint64 + Acc [8][16]uint8 + Xacc [16][16]uint8 + Spare [12]uint64 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint64 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index e27511a..b4090ef 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -64,45 +64,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,92 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 ) +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + X_reason [32]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + R [13]uint32 + R_sp uint32 + R_lr uint32 + R_pc uint32 + R_cpsr uint32 +} + +type FpReg struct { + Fpr_fpsr uint32 + Fpr [8][3]uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint32 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 2aadc1a..1542a87 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -62,45 +62,45 @@ const ( ) type Stat_t struct { - Dev uint64 - Ino uint64 - Nlink uint64 - Mode uint16 - _0 int16 - Uid uint32 - Gid uint32 - _1 int32 - Rdev uint64 - Atim Timespec - Mtim Timespec - Ctim Timespec - Birthtim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint64 - Spare [10]uint64 + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 } type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Birthtim Timespec + Dev uint32 + Ino uint32 + Mode uint16 + Nlink uint16 + Uid uint32 + Gid uint32 + Rdev uint32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + Lspare int32 + Btim Timespec } type Statfs_t struct { @@ -322,11 +322,93 @@ const ( ) const ( - PTRACE_TRACEME = 0x0 - PTRACE_CONT = 0x7 - PTRACE_KILL = 0x8 + PTRACE_ATTACH = 0xa + PTRACE_CONT = 0x7 + PTRACE_DETACH = 0xb + PTRACE_GETFPREGS = 0x23 + PTRACE_GETFSBASE = 0x47 + PTRACE_GETLWPLIST = 0xf + PTRACE_GETNUMLWPS = 0xe + PTRACE_GETREGS = 0x21 + PTRACE_GETXSTATE = 0x45 + PTRACE_IO = 0xc + PTRACE_KILL = 0x8 + PTRACE_LWPEVENTS = 0x18 + PTRACE_LWPINFO = 0xd + PTRACE_SETFPREGS = 0x24 + PTRACE_SETREGS = 0x22 + PTRACE_SINGLESTEP = 0x9 + PTRACE_TRACEME = 0x0 ) +const ( + PIOD_READ_D = 0x1 + PIOD_WRITE_D = 0x2 + PIOD_READ_I = 0x3 + PIOD_WRITE_I = 0x4 +) + +const ( + PL_FLAG_BORN = 0x100 + PL_FLAG_EXITED = 0x200 + PL_FLAG_SI = 0x20 +) + +const ( + TRAP_BRKPT = 0x1 + TRAP_TRACE = 0x2 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + X_reason [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + X [30]uint64 + Lr uint64 + Sp uint64 + Elr uint64 + Spsr uint32 +} + +type FpReg struct { + Fp_q [32]uint128 + Fp_sr uint32 + Fp_cr uint32 +} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint +} + type Kevent_t struct { Ident uint64 Filter int16 diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index a908f25..50bc412 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -829,6 +829,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1452,6 +1454,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2133,3 +2150,374 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index e63fa74..055eaa7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -842,6 +842,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1464,6 +1466,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2146,3 +2163,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 34e4e6d..66019c9 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -818,6 +818,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1442,6 +1444,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2124,3 +2141,374 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint32 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]uint8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index 7f2e26f..3104798 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -821,6 +821,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1443,6 +1445,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2125,3 +2142,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 66e408f..46c8602 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -823,6 +823,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,374 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index e60575a..c2fe1a6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -823,6 +823,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1445,6 +1447,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2127,3 +2144,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index af5836a..f1eb0d3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -823,6 +823,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1445,6 +1447,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2127,3 +2144,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index 471706a..8759bc3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -823,6 +823,8 @@ type Sigset_t struct { Val [32]uint32 } +const _C__NSIG = 0x80 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,374 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint32 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint32 + Reserved [4]int8 +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 6cfa149..a812005 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -831,6 +831,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1453,6 +1455,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2135,3 +2152,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index acb3773..74b7a91 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -831,6 +831,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1453,6 +1455,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2135,3 +2152,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint64 + Inode uint64 + Rdevice uint64 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 9735b25..ccea3e6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -808,6 +808,7 @@ type Ustat_t struct { type EpollEvent struct { Events uint32 + _ int32 Fd int32 Pad int32 } @@ -848,6 +849,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1470,6 +1473,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2152,3 +2170,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]uint8 + Driver_name [64]uint8 + Module_name [64]uint8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]uint8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]uint8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]uint8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]uint8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]uint8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]uint8 +} + +type CryptoReportLarval struct { + Type [64]uint8 +} + +type CryptoReportHash struct { + Type [64]uint8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]uint8 + Geniv [64]uint8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]uint8 +} + +type CryptoReportRNG struct { + Type [64]uint8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]uint8 +} + +type CryptoReportKPP struct { + Type [64]uint8 +} + +type CryptoReportAcomp struct { + Type [64]uint8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]uint8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 5369f65..d8fc0bc 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -844,6 +844,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1467,6 +1469,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2149,3 +2166,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint16 + Inode uint64 + Rdevice uint16 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index 552dbe5..5e0ab93 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -826,6 +826,8 @@ type Sigset_t struct { Val [16]uint64 } +const _C__NSIG = 0x41 + type SignalfdSiginfo struct { Signo uint32 Errno int32 @@ -1448,6 +1450,21 @@ type TpacketBlockDesc struct { Hdr [40]byte } +type TpacketBDTS struct { + Sec uint32 + Usec uint32 +} + +type TpacketHdrV1 struct { + Block_status uint32 + Num_pkts uint32 + Offset_to_first_pkt uint32 + Blk_len uint32 + Seq_num uint64 + Ts_first_pkt TpacketBDTS + Ts_last_pkt TpacketBDTS +} + type TpacketReq struct { Block_size uint32 Block_nr uint32 @@ -2130,3 +2147,375 @@ type FanotifyResponse struct { Fd int32 Response uint32 } + +const ( + CRYPTO_MSG_BASE = 0x10 + CRYPTO_MSG_NEWALG = 0x10 + CRYPTO_MSG_DELALG = 0x11 + CRYPTO_MSG_UPDATEALG = 0x12 + CRYPTO_MSG_GETALG = 0x13 + CRYPTO_MSG_DELRNG = 0x14 + CRYPTO_MSG_GETSTAT = 0x15 +) + +const ( + CRYPTOCFGA_UNSPEC = 0x0 + CRYPTOCFGA_PRIORITY_VAL = 0x1 + CRYPTOCFGA_REPORT_LARVAL = 0x2 + CRYPTOCFGA_REPORT_HASH = 0x3 + CRYPTOCFGA_REPORT_BLKCIPHER = 0x4 + CRYPTOCFGA_REPORT_AEAD = 0x5 + CRYPTOCFGA_REPORT_COMPRESS = 0x6 + CRYPTOCFGA_REPORT_RNG = 0x7 + CRYPTOCFGA_REPORT_CIPHER = 0x8 + CRYPTOCFGA_REPORT_AKCIPHER = 0x9 + CRYPTOCFGA_REPORT_KPP = 0xa + CRYPTOCFGA_REPORT_ACOMP = 0xb + CRYPTOCFGA_STAT_LARVAL = 0xc + CRYPTOCFGA_STAT_HASH = 0xd + CRYPTOCFGA_STAT_BLKCIPHER = 0xe + CRYPTOCFGA_STAT_AEAD = 0xf + CRYPTOCFGA_STAT_COMPRESS = 0x10 + CRYPTOCFGA_STAT_RNG = 0x11 + CRYPTOCFGA_STAT_CIPHER = 0x12 + CRYPTOCFGA_STAT_AKCIPHER = 0x13 + CRYPTOCFGA_STAT_KPP = 0x14 + CRYPTOCFGA_STAT_ACOMP = 0x15 +) + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +const ( + BPF_REG_0 = 0x0 + BPF_REG_1 = 0x1 + BPF_REG_2 = 0x2 + BPF_REG_3 = 0x3 + BPF_REG_4 = 0x4 + BPF_REG_5 = 0x5 + BPF_REG_6 = 0x6 + BPF_REG_7 = 0x7 + BPF_REG_8 = 0x8 + BPF_REG_9 = 0x9 + BPF_REG_10 = 0xa + BPF_MAP_CREATE = 0x0 + BPF_MAP_LOOKUP_ELEM = 0x1 + BPF_MAP_UPDATE_ELEM = 0x2 + BPF_MAP_DELETE_ELEM = 0x3 + BPF_MAP_GET_NEXT_KEY = 0x4 + BPF_PROG_LOAD = 0x5 + BPF_OBJ_PIN = 0x6 + BPF_OBJ_GET = 0x7 + BPF_PROG_ATTACH = 0x8 + BPF_PROG_DETACH = 0x9 + BPF_PROG_TEST_RUN = 0xa + BPF_PROG_GET_NEXT_ID = 0xb + BPF_MAP_GET_NEXT_ID = 0xc + BPF_PROG_GET_FD_BY_ID = 0xd + BPF_MAP_GET_FD_BY_ID = 0xe + BPF_OBJ_GET_INFO_BY_FD = 0xf + BPF_PROG_QUERY = 0x10 + BPF_RAW_TRACEPOINT_OPEN = 0x11 + BPF_BTF_LOAD = 0x12 + BPF_BTF_GET_FD_BY_ID = 0x13 + BPF_TASK_FD_QUERY = 0x14 + BPF_MAP_LOOKUP_AND_DELETE_ELEM = 0x15 + BPF_MAP_TYPE_UNSPEC = 0x0 + BPF_MAP_TYPE_HASH = 0x1 + BPF_MAP_TYPE_ARRAY = 0x2 + BPF_MAP_TYPE_PROG_ARRAY = 0x3 + BPF_MAP_TYPE_PERF_EVENT_ARRAY = 0x4 + BPF_MAP_TYPE_PERCPU_HASH = 0x5 + BPF_MAP_TYPE_PERCPU_ARRAY = 0x6 + BPF_MAP_TYPE_STACK_TRACE = 0x7 + BPF_MAP_TYPE_CGROUP_ARRAY = 0x8 + BPF_MAP_TYPE_LRU_HASH = 0x9 + BPF_MAP_TYPE_LRU_PERCPU_HASH = 0xa + BPF_MAP_TYPE_LPM_TRIE = 0xb + BPF_MAP_TYPE_ARRAY_OF_MAPS = 0xc + BPF_MAP_TYPE_HASH_OF_MAPS = 0xd + BPF_MAP_TYPE_DEVMAP = 0xe + BPF_MAP_TYPE_SOCKMAP = 0xf + BPF_MAP_TYPE_CPUMAP = 0x10 + BPF_MAP_TYPE_XSKMAP = 0x11 + BPF_MAP_TYPE_SOCKHASH = 0x12 + BPF_MAP_TYPE_CGROUP_STORAGE = 0x13 + BPF_MAP_TYPE_REUSEPORT_SOCKARRAY = 0x14 + BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = 0x15 + BPF_MAP_TYPE_QUEUE = 0x16 + BPF_MAP_TYPE_STACK = 0x17 + BPF_PROG_TYPE_UNSPEC = 0x0 + BPF_PROG_TYPE_SOCKET_FILTER = 0x1 + BPF_PROG_TYPE_KPROBE = 0x2 + BPF_PROG_TYPE_SCHED_CLS = 0x3 + BPF_PROG_TYPE_SCHED_ACT = 0x4 + BPF_PROG_TYPE_TRACEPOINT = 0x5 + BPF_PROG_TYPE_XDP = 0x6 + BPF_PROG_TYPE_PERF_EVENT = 0x7 + BPF_PROG_TYPE_CGROUP_SKB = 0x8 + BPF_PROG_TYPE_CGROUP_SOCK = 0x9 + BPF_PROG_TYPE_LWT_IN = 0xa + BPF_PROG_TYPE_LWT_OUT = 0xb + BPF_PROG_TYPE_LWT_XMIT = 0xc + BPF_PROG_TYPE_SOCK_OPS = 0xd + BPF_PROG_TYPE_SK_SKB = 0xe + BPF_PROG_TYPE_CGROUP_DEVICE = 0xf + BPF_PROG_TYPE_SK_MSG = 0x10 + BPF_PROG_TYPE_RAW_TRACEPOINT = 0x11 + BPF_PROG_TYPE_CGROUP_SOCK_ADDR = 0x12 + BPF_PROG_TYPE_LWT_SEG6LOCAL = 0x13 + BPF_PROG_TYPE_LIRC_MODE2 = 0x14 + BPF_PROG_TYPE_SK_REUSEPORT = 0x15 + BPF_PROG_TYPE_FLOW_DISSECTOR = 0x16 + BPF_CGROUP_INET_INGRESS = 0x0 + BPF_CGROUP_INET_EGRESS = 0x1 + BPF_CGROUP_INET_SOCK_CREATE = 0x2 + BPF_CGROUP_SOCK_OPS = 0x3 + BPF_SK_SKB_STREAM_PARSER = 0x4 + BPF_SK_SKB_STREAM_VERDICT = 0x5 + BPF_CGROUP_DEVICE = 0x6 + BPF_SK_MSG_VERDICT = 0x7 + BPF_CGROUP_INET4_BIND = 0x8 + BPF_CGROUP_INET6_BIND = 0x9 + BPF_CGROUP_INET4_CONNECT = 0xa + BPF_CGROUP_INET6_CONNECT = 0xb + BPF_CGROUP_INET4_POST_BIND = 0xc + BPF_CGROUP_INET6_POST_BIND = 0xd + BPF_CGROUP_UDP4_SENDMSG = 0xe + BPF_CGROUP_UDP6_SENDMSG = 0xf + BPF_LIRC_MODE2 = 0x10 + BPF_FLOW_DISSECTOR = 0x11 + BPF_STACK_BUILD_ID_EMPTY = 0x0 + BPF_STACK_BUILD_ID_VALID = 0x1 + BPF_STACK_BUILD_ID_IP = 0x2 + BPF_ADJ_ROOM_NET = 0x0 + BPF_HDR_START_MAC = 0x0 + BPF_HDR_START_NET = 0x1 + BPF_LWT_ENCAP_SEG6 = 0x0 + BPF_LWT_ENCAP_SEG6_INLINE = 0x1 + BPF_OK = 0x0 + BPF_DROP = 0x2 + BPF_REDIRECT = 0x7 + BPF_SOCK_OPS_VOID = 0x0 + BPF_SOCK_OPS_TIMEOUT_INIT = 0x1 + BPF_SOCK_OPS_RWND_INIT = 0x2 + BPF_SOCK_OPS_TCP_CONNECT_CB = 0x3 + BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB = 0x4 + BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB = 0x5 + BPF_SOCK_OPS_NEEDS_ECN = 0x6 + BPF_SOCK_OPS_BASE_RTT = 0x7 + BPF_SOCK_OPS_RTO_CB = 0x8 + BPF_SOCK_OPS_RETRANS_CB = 0x9 + BPF_SOCK_OPS_STATE_CB = 0xa + BPF_SOCK_OPS_TCP_LISTEN_CB = 0xb + BPF_TCP_ESTABLISHED = 0x1 + BPF_TCP_SYN_SENT = 0x2 + BPF_TCP_SYN_RECV = 0x3 + BPF_TCP_FIN_WAIT1 = 0x4 + BPF_TCP_FIN_WAIT2 = 0x5 + BPF_TCP_TIME_WAIT = 0x6 + BPF_TCP_CLOSE = 0x7 + BPF_TCP_CLOSE_WAIT = 0x8 + BPF_TCP_LAST_ACK = 0x9 + BPF_TCP_LISTEN = 0xa + BPF_TCP_CLOSING = 0xb + BPF_TCP_NEW_SYN_RECV = 0xc + BPF_TCP_MAX_STATES = 0xd + BPF_FIB_LKUP_RET_SUCCESS = 0x0 + BPF_FIB_LKUP_RET_BLACKHOLE = 0x1 + BPF_FIB_LKUP_RET_UNREACHABLE = 0x2 + BPF_FIB_LKUP_RET_PROHIBIT = 0x3 + BPF_FIB_LKUP_RET_NOT_FWDED = 0x4 + BPF_FIB_LKUP_RET_FWD_DISABLED = 0x5 + BPF_FIB_LKUP_RET_UNSUPP_LWT = 0x6 + BPF_FIB_LKUP_RET_NO_NEIGH = 0x7 + BPF_FIB_LKUP_RET_FRAG_NEEDED = 0x8 + BPF_FD_TYPE_RAW_TRACEPOINT = 0x0 + BPF_FD_TYPE_TRACEPOINT = 0x1 + BPF_FD_TYPE_KPROBE = 0x2 + BPF_FD_TYPE_KRETPROBE = 0x3 + BPF_FD_TYPE_UPROBE = 0x4 + BPF_FD_TYPE_URETPROBE = 0x5 +) + +type CapUserHeader struct { + Version uint32 + Pid int32 +} + +type CapUserData struct { + Effective uint32 + Permitted uint32 + Inheritable uint32 +} + +const ( + LINUX_CAPABILITY_VERSION_1 = 0x19980330 + LINUX_CAPABILITY_VERSION_2 = 0x20071026 + LINUX_CAPABILITY_VERSION_3 = 0x20080522 +) + +const ( + LO_FLAGS_READ_ONLY = 0x1 + LO_FLAGS_AUTOCLEAR = 0x4 + LO_FLAGS_PARTSCAN = 0x8 + LO_FLAGS_DIRECT_IO = 0x10 +) + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} +type LoopInfo64 struct { + Device uint64 + Inode uint64 + Rdevice uint64 + Offset uint64 + Sizelimit uint64 + Number uint32 + Encrypt_type uint32 + Encrypt_key_size uint32 + Flags uint32 + File_name [64]uint8 + Crypt_name [64]uint8 + Encrypt_key [32]uint8 + Init [2]uint64 +} diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go index 2dae0c1..86736ab 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go @@ -57,23 +57,23 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 + Dev uint64 + Mode uint32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 } type Statfs_t [0]byte @@ -411,6 +411,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go index 1f0e76c..3427811 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go @@ -58,26 +58,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -418,6 +418,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go index 53f2159..399f37a 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go @@ -59,26 +59,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -416,6 +416,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go index 43da2c4..32f0c15 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go @@ -58,26 +58,26 @@ type Rlimit struct { type _Gid_t uint32 type Stat_t struct { - Dev uint64 - Mode uint32 - Pad_cgo_0 [4]byte - Ino uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Pad_cgo_1 [4]byte - Rdev uint64 - Atimespec Timespec - Mtimespec Timespec - Ctimespec Timespec - Birthtimespec Timespec - Size int64 - Blocks int64 - Blksize uint32 - Flags uint32 - Gen uint32 - Spare [2]uint32 - Pad_cgo_2 [4]byte + Dev uint64 + Mode uint32 + _ [4]byte + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + _ [4]byte + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize uint32 + Flags uint32 + Gen uint32 + Spare [2]uint32 + _ [4]byte } type Statfs_t [0]byte @@ -418,6 +418,7 @@ type Ptmget struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x400 AT_SYMLINK_NOFOLLOW = 0x200 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index 900fb44..61ea001 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -436,6 +436,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index 028fa78..87a493f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -436,6 +436,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index b45d5ee..d80836e 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -437,6 +437,7 @@ type Winsize struct { const ( AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 AT_SYMLINK_NOFOLLOW = 0x2 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go new file mode 100644 index 0000000..4e15874 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -0,0 +1,565 @@ +// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build arm64,openbsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + _ Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]int8 + F_mntonname [90]int8 + F_mntfromname [90]int8 + F_mntfromspec [90]int8 + _ [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + _ [4]uint8 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0xa8 + SizeofIfData = 0x90 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Rdomain uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]int8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_FOLLOW = 0x4 + AT_SYMLINK_NOFOLLOW = 0x2 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type Sigset_t uint32 + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofUvmexp = 0x158 + +type Uvmexp struct { + Pagesize int32 + Pagemask int32 + Pageshift int32 + Npages int32 + Free int32 + Active int32 + Inactive int32 + Paging int32 + Wired int32 + Zeropages int32 + Reserve_pagedaemon int32 + Reserve_kernel int32 + Unused01 int32 + Vnodepages int32 + Vtextpages int32 + Freemin int32 + Freetarg int32 + Inactarg int32 + Wiredmax int32 + Anonmin int32 + Vtextmin int32 + Vnodemin int32 + Anonminpct int32 + Vtextminpct int32 + Vnodeminpct int32 + Nswapdev int32 + Swpages int32 + Swpginuse int32 + Swpgonly int32 + Nswget int32 + Nanon int32 + Unused05 int32 + Unused06 int32 + Faults int32 + Traps int32 + Intrs int32 + Swtch int32 + Softs int32 + Syscalls int32 + Pageins int32 + Unused07 int32 + Unused08 int32 + Pgswapin int32 + Pgswapout int32 + Forks int32 + Forks_ppwait int32 + Forks_sharevm int32 + Pga_zerohit int32 + Pga_zeromiss int32 + Unused09 int32 + Fltnoram int32 + Fltnoanon int32 + Fltnoamap int32 + Fltpgwait int32 + Fltpgrele int32 + Fltrelck int32 + Fltrelckok int32 + Fltanget int32 + Fltanretry int32 + Fltamcopy int32 + Fltnamap int32 + Fltnomap int32 + Fltlget int32 + Fltget int32 + Flt_anon int32 + Flt_acow int32 + Flt_obj int32 + Flt_prcopy int32 + Flt_przero int32 + Pdwoke int32 + Pdrevs int32 + Pdswout int32 + Pdfreed int32 + Pdscans int32 + Pdanscan int32 + Pdobscan int32 + Pdreact int32 + Pdbusy int32 + Pdpageouts int32 + Pdpending int32 + Pddeact int32 + Unused11 int32 + Unused12 int32 + Unused13 int32 + Fpswtch int32 + Kmapent int32 +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Tickadj int32 + Stathz int32 + Profhz int32 +} diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go index bdc71e2..f482a9f 100644 --- a/vendor/golang.org/x/sys/windows/env_windows.go +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -6,7 +6,11 @@ package windows -import "syscall" +import ( + "syscall" + "unicode/utf16" + "unsafe" +) func Getenv(key string) (value string, found bool) { return syscall.Getenv(key) @@ -24,6 +28,34 @@ func Environ() []string { return syscall.Environ() } +// Returns a default environment associated with the token, rather than the current +// process. If inheritExisting is true, then this environment also inherits the +// environment of the current process. +func (token Token) Environ(inheritExisting bool) (env []string, err error) { + var block *uint16 + err = CreateEnvironmentBlock(&block, token, inheritExisting) + if err != nil { + return nil, err + } + defer DestroyEnvironmentBlock(block) + blockp := uintptr(unsafe.Pointer(block)) + for { + entry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:] + for i, v := range entry { + if v == 0 { + entry = entry[:i] + break + } + } + if len(entry) == 0 { + break + } + env = append(env, string(utf16.Decode(entry))) + blockp += 2 * (uintptr(len(entry)) + 1) + } + return env, nil +} + func Unsetenv(key string) error { return syscall.Unsetenv(key) } diff --git a/vendor/golang.org/x/sys/windows/mkerrors.bash b/vendor/golang.org/x/sys/windows/mkerrors.bash index a70b24f..2163843 100644 --- a/vendor/golang.org/x/sys/windows/mkerrors.bash +++ b/vendor/golang.org/x/sys/windows/mkerrors.bash @@ -7,14 +7,13 @@ set -e shopt -s nullglob -[[ $# -eq 1 ]] || { echo "Usage: $0 OUTPUT_FILE.go" >&2; exit 1; } winerror="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)" [[ -n $winerror ]] || { echo "Unable to find winerror.h" >&2; exit 1; } declare -A errors { - echo "// Code generated by 'go generate'; DO NOT EDIT." + echo "// Code generated by 'mkerrors.bash'; DO NOT EDIT." echo echo "package windows" echo "import \"syscall\"" @@ -61,4 +60,4 @@ declare -A errors done < "$winerror" echo ")" -} | gofmt > "$1" +} | gofmt > "zerrors_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mkerrors.go b/vendor/golang.org/x/sys/windows/mkerrors.go deleted file mode 100644 index cbf123e..0000000 --- a/vendor/golang.org/x/sys/windows/mkerrors.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package windows - -//go:generate ./mkerrors.bash zerrors_windows.go diff --git a/vendor/golang.org/x/sys/windows/mkknownfolderids.bash b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash new file mode 100644 index 0000000..ab8924e --- /dev/null +++ b/vendor/golang.org/x/sys/windows/mkknownfolderids.bash @@ -0,0 +1,27 @@ +#!/bin/bash + +# Copyright 2019 The Go Authors. All rights reserved. +# Use of this source code is governed by a BSD-style +# license that can be found in the LICENSE file. + +set -e +shopt -s nullglob + +knownfolders="$(printf '%s\n' "/mnt/c/Program Files (x86)/Windows Kits/"/*/Include/*/um/KnownFolders.h | sort -Vr | head -n 1)" +[[ -n $knownfolders ]] || { echo "Unable to find KnownFolders.h" >&2; exit 1; } + +{ + echo "// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT." + echo + echo "package windows" + echo "type KNOWNFOLDERID GUID" + echo "var (" + while read -r line; do + [[ $line =~ DEFINE_KNOWN_FOLDER\((FOLDERID_[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+),[\t\ ]*(0x[^,]+)\) ]] || continue + printf "%s = &KNOWNFOLDERID{0x%08x, 0x%04x, 0x%04x, [8]byte{0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x}}\n" \ + "${BASH_REMATCH[1]}" $(( "${BASH_REMATCH[2]}" )) $(( "${BASH_REMATCH[3]}" )) $(( "${BASH_REMATCH[4]}" )) \ + $(( "${BASH_REMATCH[5]}" )) $(( "${BASH_REMATCH[6]}" )) $(( "${BASH_REMATCH[7]}" )) $(( "${BASH_REMATCH[8]}" )) \ + $(( "${BASH_REMATCH[9]}" )) $(( "${BASH_REMATCH[10]}" )) $(( "${BASH_REMATCH[11]}" )) $(( "${BASH_REMATCH[12]}" )) + done < "$knownfolders" + echo ")" +} | gofmt > "zknownfolderids_windows.go" diff --git a/vendor/golang.org/x/sys/windows/mksyscall.go b/vendor/golang.org/x/sys/windows/mksyscall.go index fb7db0e..6277057 100644 --- a/vendor/golang.org/x/sys/windows/mksyscall.go +++ b/vendor/golang.org/x/sys/windows/mksyscall.go @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +// +build generate + package windows //go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index da06406..7b2cfb9 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -170,15 +170,20 @@ const ( //sys CopySid(destSidLen uint32, destSid *SID, srcSid *SID) (err error) = advapi32.CopySid //sys AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) = advapi32.AllocateAndInitializeSid //sys createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) = advapi32.CreateWellKnownSid +//sys isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) = advapi32.IsWellKnownSid //sys FreeSid(sid *SID) (err error) [failretval!=0] = advapi32.FreeSid //sys EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) = advapi32.EqualSid +//sys getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) = advapi32.GetSidIdentifierAuthority +//sys getSidSubAuthorityCount(sid *SID) (count *uint8) = advapi32.GetSidSubAuthorityCount +//sys getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) = advapi32.GetSidSubAuthority +//sys isValidSid(sid *SID) (isValid bool) = advapi32.IsValidSid // The security identifier (SID) structure is a variable-length // structure used to uniquely identify users or groups. type SID struct{} // StringToSid converts a string-format security identifier -// sid into a valid, functional sid. +// SID into a valid, functional SID. func StringToSid(s string) (*SID, error) { var sid *SID p, e := UTF16PtrFromString(s) @@ -193,7 +198,7 @@ func StringToSid(s string) (*SID, error) { return sid.Copy() } -// LookupSID retrieves a security identifier sid for the account +// LookupSID retrieves a security identifier SID for the account // and the name of the domain on which the account was found. // System specify target computer to search. func LookupSID(system, account string) (sid *SID, domain string, accType uint32, err error) { @@ -230,7 +235,7 @@ func LookupSID(system, account string) (sid *SID, domain string, accType uint32, } } -// String converts sid to a string format +// String converts SID to a string format // suitable for display, storage, or transmission. func (sid *SID) String() (string, error) { var s *uint16 @@ -242,12 +247,12 @@ func (sid *SID) String() (string, error) { return UTF16ToString((*[256]uint16)(unsafe.Pointer(s))[:]), nil } -// Len returns the length, in bytes, of a valid security identifier sid. +// Len returns the length, in bytes, of a valid security identifier SID. func (sid *SID) Len() int { return int(GetLengthSid(sid)) } -// Copy creates a duplicate of security identifier sid. +// Copy creates a duplicate of security identifier SID. func (sid *SID) Copy() (*SID, error) { b := make([]byte, sid.Len()) sid2 := (*SID)(unsafe.Pointer(&b[0])) @@ -258,8 +263,42 @@ func (sid *SID) Copy() (*SID, error) { return sid2, nil } -// LookupAccount retrieves the name of the account for this sid -// and the name of the first domain on which this sid is found. +// IdentifierAuthority returns the identifier authority of the SID. +func (sid *SID) IdentifierAuthority() SidIdentifierAuthority { + return *getSidIdentifierAuthority(sid) +} + +// SubAuthorityCount returns the number of sub-authorities in the SID. +func (sid *SID) SubAuthorityCount() uint8 { + return *getSidSubAuthorityCount(sid) +} + +// SubAuthority returns the sub-authority of the SID as specified by +// the index, which must be less than sid.SubAuthorityCount(). +func (sid *SID) SubAuthority(idx uint32) uint32 { + if idx >= uint32(sid.SubAuthorityCount()) { + panic("sub-authority index out of range") + } + return *getSidSubAuthority(sid, idx) +} + +// IsValid returns whether the SID has a valid revision and length. +func (sid *SID) IsValid() bool { + return isValidSid(sid) +} + +// Equals compares two SIDs for equality. +func (sid *SID) Equals(sid2 *SID) bool { + return EqualSid(sid, sid2) +} + +// IsWellKnown determines whether the SID matches the well-known sidType. +func (sid *SID) IsWellKnown(sidType WELL_KNOWN_SID_TYPE) bool { + return isWellKnownSid(sid, sidType) +} + +// LookupAccount retrieves the name of the account for this SID +// and the name of the first domain on which this SID is found. // System specify target computer to search for. func (sid *SID) LookupAccount(system string) (account, domain string, accType uint32, err error) { var sys *uint16 @@ -287,7 +326,7 @@ func (sid *SID) LookupAccount(system string) (account, domain string, accType ui } } -// Various types of pre-specified sids that can be synthesized at runtime. +// Various types of pre-specified SIDs that can be synthesized and compared at runtime. type WELL_KNOWN_SID_TYPE uint32 const ( @@ -413,13 +452,13 @@ const ( WinBuiltinDeviceOwnersSid = 119 ) -// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Creates a SID for a well-known predefined alias, generally using the constants of the form // Win*Sid, for the local machine. func CreateWellKnownSid(sidType WELL_KNOWN_SID_TYPE) (*SID, error) { return CreateWellKnownDomainSid(sidType, nil) } -// Creates a sid for a well-known predefined alias, generally using the constants of the form +// Creates a SID for a well-known predefined alias, generally using the constants of the form // Win*Sid, for the domain specified by the domainSid parameter. func CreateWellKnownDomainSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID) (*SID, error) { n := uint32(50) @@ -502,6 +541,53 @@ const ( MaxTokenInfoClass ) +// Group attributes inside of Tokengroups.Groups[i].Attributes +const ( + SE_GROUP_MANDATORY = 0x00000001 + SE_GROUP_ENABLED_BY_DEFAULT = 0x00000002 + SE_GROUP_ENABLED = 0x00000004 + SE_GROUP_OWNER = 0x00000008 + SE_GROUP_USE_FOR_DENY_ONLY = 0x00000010 + SE_GROUP_INTEGRITY = 0x00000020 + SE_GROUP_INTEGRITY_ENABLED = 0x00000040 + SE_GROUP_LOGON_ID = 0xC0000000 + SE_GROUP_RESOURCE = 0x20000000 + SE_GROUP_VALID_ATTRIBUTES = SE_GROUP_MANDATORY | SE_GROUP_ENABLED_BY_DEFAULT | SE_GROUP_ENABLED | SE_GROUP_OWNER | SE_GROUP_USE_FOR_DENY_ONLY | SE_GROUP_LOGON_ID | SE_GROUP_RESOURCE | SE_GROUP_INTEGRITY | SE_GROUP_INTEGRITY_ENABLED +) + +// Privilege attributes +const ( + SE_PRIVILEGE_ENABLED_BY_DEFAULT = 0x00000001 + SE_PRIVILEGE_ENABLED = 0x00000002 + SE_PRIVILEGE_REMOVED = 0x00000004 + SE_PRIVILEGE_USED_FOR_ACCESS = 0x80000000 + SE_PRIVILEGE_VALID_ATTRIBUTES = SE_PRIVILEGE_ENABLED_BY_DEFAULT | SE_PRIVILEGE_ENABLED | SE_PRIVILEGE_REMOVED | SE_PRIVILEGE_USED_FOR_ACCESS +) + +// Token types +const ( + TokenPrimary = 1 + TokenImpersonation = 2 +) + +// Impersonation levels +const ( + SecurityAnonymous = 0 + SecurityIdentification = 1 + SecurityImpersonation = 2 + SecurityDelegation = 3 +) + +type LUID struct { + LowPart uint32 + HighPart int32 +} + +type LUIDAndAttributes struct { + Luid LUID + Attributes uint32 +} + type SIDAndAttributes struct { Sid *SID Attributes uint32 @@ -517,15 +603,49 @@ type Tokenprimarygroup struct { type Tokengroups struct { GroupCount uint32 - Groups [1]SIDAndAttributes + Groups [1]SIDAndAttributes // Use AllGroups() for iterating. +} + +// AllGroups returns a slice that can be used to iterate over the groups in g. +func (g *Tokengroups) AllGroups() []SIDAndAttributes { + return (*[(1 << 28) - 1]SIDAndAttributes)(unsafe.Pointer(&g.Groups[0]))[:g.GroupCount:g.GroupCount] +} + +type Tokenprivileges struct { + PrivilegeCount uint32 + Privileges [1]LUIDAndAttributes // Use AllPrivileges() for iterating. +} + +// AllPrivileges returns a slice that can be used to iterate over the privileges in p. +func (p *Tokenprivileges) AllPrivileges() []LUIDAndAttributes { + return (*[(1 << 27) - 1]LUIDAndAttributes)(unsafe.Pointer(&p.Privileges[0]))[:p.PrivilegeCount:p.PrivilegeCount] +} + +type Tokenmandatorylabel struct { + Label SIDAndAttributes +} + +func (tml *Tokenmandatorylabel) Size() uint32 { + return uint32(unsafe.Sizeof(Tokenmandatorylabel{})) + GetLengthSid(tml.Label.Sid) } // Authorization Functions -//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership -//sys OpenProcessToken(h Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken -//sys GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) = advapi32.CheckTokenMembership +//sys OpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken +//sys OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken +//sys ImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf +//sys RevertToSelf() (err error) = advapi32.RevertToSelf +//sys SetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken +//sys LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW +//sys AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges +//sys AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups +//sys GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation +//sys SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation +//sys DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx //sys GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW //sys getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW +//sys getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW +//sys getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW // An access token contains the security information for a logon session. // The system creates an access token when a user logs on, and every @@ -537,20 +657,43 @@ type Tokengroups struct { type Token Handle // OpenCurrentProcessToken opens the access token -// associated with current process. +// associated with current process. It is a real +// token that needs to be closed, unlike +// GetCurrentProcessToken. func OpenCurrentProcessToken() (Token, error) { p, e := GetCurrentProcess() if e != nil { return 0, e } var t Token - e = OpenProcessToken(p, TOKEN_QUERY, &t) + e = OpenProcessToken(p, TOKEN_QUERY|TOKEN_DUPLICATE, &t) if e != nil { return 0, e } return t, nil } +// GetCurrentProcessToken returns the access token associated with +// the current process. It is a pseudo token that does not need +// to be closed. +func GetCurrentProcessToken() Token { + return Token(^uintptr(4 - 1)) +} + +// GetCurrentThreadToken return the access token associated with +// the current thread. It is a pseudo token that does not need +// to be closed. +func GetCurrentThreadToken() Token { + return Token(^uintptr(5 - 1)) +} + +// GetCurrentThreadEffectiveToken returns the effective access token +// associated with the current thread. It is a pseudo token that does +// not need to be closed. +func GetCurrentThreadEffectiveToken() Token { + return Token(^uintptr(6 - 1)) +} + // Close releases access to access token. func (t Token) Close() error { return CloseHandle(Handle(t)) @@ -622,8 +765,30 @@ func (t Token) GetUserProfileDirectory() (string, error) { } } -// GetSystemDirectory retrieves path to current location of the system -// directory, which is typically, though not always, C:\Windows\System32. +// IsElevated returns whether the current token is elevated from a UAC perspective. +func (token Token) IsElevated() bool { + var isElevated uint32 + var outLen uint32 + err := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen) + if err != nil { + return false + } + return outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0 +} + +// GetLinkedToken returns the linked token, which may be an elevated UAC token. +func (token Token) GetLinkedToken() (Token, error) { + var linkedToken Token + var outLen uint32 + err := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen) + if err != nil { + return Token(0), err + } + return linkedToken, nil +} + +// GetSystemDirectory retrieves the path to current location of the system +// directory, which is typically, though not always, `C:\Windows\System32`. func GetSystemDirectory() (string, error) { n := uint32(MAX_PATH) for { @@ -639,6 +804,42 @@ func GetSystemDirectory() (string, error) { } } +// GetWindowsDirectory retrieves the path to current location of the Windows +// directory, which is typically, though not always, `C:\Windows`. This may +// be a private user directory in the case that the application is running +// under a terminal server. +func GetWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + +// GetSystemWindowsDirectory retrieves the path to current location of the +// Windows directory, which is typically, though not always, `C:\Windows`. +func GetSystemWindowsDirectory() (string, error) { + n := uint32(MAX_PATH) + for { + b := make([]uint16, n) + l, e := getSystemWindowsDirectory(&b[0], n) + if e != nil { + return "", e + } + if l <= n { + return UTF16ToString(b[:l]), nil + } + n = l + } +} + // IsMember reports whether the access token t is a member of the provided SID. func (t Token) IsMember(sid *SID) (bool, error) { var b int32 @@ -647,3 +848,45 @@ func (t Token) IsMember(sid *SID) (bool, error) { } return b != 0, nil } + +const ( + WTS_CONSOLE_CONNECT = 0x1 + WTS_CONSOLE_DISCONNECT = 0x2 + WTS_REMOTE_CONNECT = 0x3 + WTS_REMOTE_DISCONNECT = 0x4 + WTS_SESSION_LOGON = 0x5 + WTS_SESSION_LOGOFF = 0x6 + WTS_SESSION_LOCK = 0x7 + WTS_SESSION_UNLOCK = 0x8 + WTS_SESSION_REMOTE_CONTROL = 0x9 + WTS_SESSION_CREATE = 0xa + WTS_SESSION_TERMINATE = 0xb +) + +const ( + WTSActive = 0 + WTSConnected = 1 + WTSConnectQuery = 2 + WTSShadow = 3 + WTSDisconnected = 4 + WTSIdle = 5 + WTSListen = 6 + WTSReset = 7 + WTSDown = 8 + WTSInit = 9 +) + +type WTSSESSION_NOTIFICATION struct { + Size uint32 + SessionID uint32 +} + +type WTS_SESSION_INFO struct { + SessionID uint32 + WindowStationName *uint16 + State uint32 +} + +//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken +//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW +//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory diff --git a/vendor/golang.org/x/sys/windows/service.go b/vendor/golang.org/x/sys/windows/service.go index 994b129..847e00b 100644 --- a/vendor/golang.org/x/sys/windows/service.go +++ b/vendor/golang.org/x/sys/windows/service.go @@ -85,21 +85,47 @@ const ( SERVICE_INACTIVE = 2 SERVICE_STATE_ALL = 3 - SERVICE_QUERY_CONFIG = 1 - SERVICE_CHANGE_CONFIG = 2 - SERVICE_QUERY_STATUS = 4 - SERVICE_ENUMERATE_DEPENDENTS = 8 - SERVICE_START = 16 - SERVICE_STOP = 32 - SERVICE_PAUSE_CONTINUE = 64 - SERVICE_INTERROGATE = 128 - SERVICE_USER_DEFINED_CONTROL = 256 - SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_QUERY_CONFIG = 1 + SERVICE_CHANGE_CONFIG = 2 + SERVICE_QUERY_STATUS = 4 + SERVICE_ENUMERATE_DEPENDENTS = 8 + SERVICE_START = 16 + SERVICE_STOP = 32 + SERVICE_PAUSE_CONTINUE = 64 + SERVICE_INTERROGATE = 128 + SERVICE_USER_DEFINED_CONTROL = 256 + SERVICE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL + SERVICE_RUNS_IN_SYSTEM_PROCESS = 1 - SERVICE_CONFIG_DESCRIPTION = 1 - SERVICE_CONFIG_FAILURE_ACTIONS = 2 + + SERVICE_CONFIG_DESCRIPTION = 1 + SERVICE_CONFIG_FAILURE_ACTIONS = 2 + SERVICE_CONFIG_DELAYED_AUTO_START_INFO = 3 + SERVICE_CONFIG_FAILURE_ACTIONS_FLAG = 4 + SERVICE_CONFIG_SERVICE_SID_INFO = 5 + SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6 + SERVICE_CONFIG_PRESHUTDOWN_INFO = 7 + SERVICE_CONFIG_TRIGGER_INFO = 8 + SERVICE_CONFIG_PREFERRED_NODE = 9 + SERVICE_CONFIG_LAUNCH_PROTECTED = 12 + + SERVICE_SID_TYPE_NONE = 0 + SERVICE_SID_TYPE_UNRESTRICTED = 1 + SERVICE_SID_TYPE_RESTRICTED = 2 | SERVICE_SID_TYPE_UNRESTRICTED SC_ENUM_PROCESS_INFO = 0 + + SERVICE_NOTIFY_STATUS_CHANGE = 2 + SERVICE_NOTIFY_STOPPED = 0x00000001 + SERVICE_NOTIFY_START_PENDING = 0x00000002 + SERVICE_NOTIFY_STOP_PENDING = 0x00000004 + SERVICE_NOTIFY_RUNNING = 0x00000008 + SERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010 + SERVICE_NOTIFY_PAUSE_PENDING = 0x00000020 + SERVICE_NOTIFY_PAUSED = 0x00000040 + SERVICE_NOTIFY_CREATED = 0x00000080 + SERVICE_NOTIFY_DELETED = 0x00000100 + SERVICE_NOTIFY_DELETE_PENDING = 0x00000200 ) type SERVICE_STATUS struct { @@ -133,6 +159,10 @@ type SERVICE_DESCRIPTION struct { Description *uint16 } +type SERVICE_DELAYED_AUTO_START_INFO struct { + IsDelayedAutoStartUp uint32 +} + type SERVICE_STATUS_PROCESS struct { ServiceType uint32 CurrentState uint32 @@ -151,6 +181,16 @@ type ENUM_SERVICE_STATUS_PROCESS struct { ServiceStatusProcess SERVICE_STATUS_PROCESS } +type SERVICE_NOTIFY struct { + Version uint32 + NotifyCallback uintptr + Context uintptr + NotificationStatus uint32 + ServiceStatus SERVICE_STATUS_PROCESS + NotificationTriggered uint32 + ServiceNames *uint16 +} + type SERVICE_FAILURE_ACTIONS struct { ResetPeriod uint32 RebootMsg *uint16 @@ -164,12 +204,19 @@ type SC_ACTION struct { Delay uint32 } +type QUERY_SERVICE_LOCK_STATUS struct { + IsLocked uint32 + LockOwner *uint16 + LockDuration uint32 +} + //sys CloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle //sys CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW //sys OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW //sys DeleteService(service Handle) (err error) = advapi32.DeleteService //sys StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW //sys QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus +//sys QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW //sys ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService //sys StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW //sys SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus @@ -178,4 +225,5 @@ type SC_ACTION struct { //sys ChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W //sys QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W //sys EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW -//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx +//sys NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 4c9bc55..abdefc3 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -10,6 +10,7 @@ import ( errorspkg "errors" "sync" "syscall" + "time" "unicode/utf16" "unsafe" ) @@ -55,6 +56,10 @@ const ( FILE_UNICODE_ON_DISK = 0x00000004 FILE_VOLUME_IS_COMPRESSED = 0x00008000 FILE_VOLUME_QUOTAS = 0x00000020 + + // Return values of SleepEx and other APC functions + STATUS_USER_APC = 0x000000C0 + WAIT_IO_COMPLETION = STATUS_USER_APC ) // StringToUTF16 is deprecated. Use UTF16FromString instead. @@ -134,7 +139,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys GetVersion() (ver uint32, err error) //sys FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW //sys ExitProcess(exitcode uint32) -//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW +//sys IsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process +//sys CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW //sys ReadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys WriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) //sys GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) @@ -166,11 +172,14 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CancelIo(s Handle) (err error) //sys CancelIoEx(s Handle, o *Overlapped) (err error) //sys CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW -//sys OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) +//sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) +//sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) = shell32.ShellExecuteW +//sys shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath //sys TerminateProcess(handle Handle, exitcode uint32) (err error) //sys GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) //sys GetStartupInfo(startupInfo *StartupInfo) (err error) = GetStartupInfoW //sys GetCurrentProcess() (pseudoHandle Handle, err error) +//sys GetCurrentThread() (pseudoHandle Handle, err error) //sys GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) //sys DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) //sys WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] @@ -185,6 +194,9 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys FreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW //sys GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW //sys SetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW +//sys CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock +//sys DestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock +//sys getTickCount64() (ms uint64) = kernel32.GetTickCount64 //sys SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) //sys GetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW //sys SetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW @@ -223,7 +235,7 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys RegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW //sys RegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW //sys RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW -//sys getCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId +//sys GetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId //sys GetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo @@ -232,6 +244,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot //sys Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW //sys Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW +//sys Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) +//sys Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) //sys DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) // This function returns 1 byte BOOLEAN rather than the 4 byte BOOL. //sys CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW @@ -243,6 +257,23 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetEvent(event Handle) (err error) = kernel32.SetEvent //sys ResetEvent(event Handle) (err error) = kernel32.ResetEvent //sys PulseEvent(event Handle) (err error) = kernel32.PulseEvent +//sys CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) = kernel32.CreateMutexW +//sys CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) = kernel32.CreateMutexExW +//sys OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW +//sys ReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex +//sys SleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx +//sys CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW +//sys AssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject +//sys TerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject +//sys SetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode +//sys ResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread +//sys SetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass +//sys GetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass +//sys SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) +//sys GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) +//sys GetProcessId(process Handle) (id uint32, err error) +//sys OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) +//sys SetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost // Volume Management Functions //sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW @@ -264,6 +295,13 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW //sys SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW //sys SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW +//sys MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW +//sys clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString +//sys stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2 +//sys coCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid +//sys CoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree +//sys rtlGetVersion(info *OsVersionInfoEx) (ret error) = ntdll.RtlGetVersion +//sys rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers // syscall interface implementation for other packages @@ -478,6 +516,10 @@ func ComputerName() (name string, err error) { return string(utf16.Decode(b[0:n])), nil } +func DurationSinceBoot() time.Duration { + return time.Duration(getTickCount64()) * time.Millisecond +} + func Ftruncate(fd Handle, length int64) (err error) { curoffset, e := Seek(fd, 0, 1) if e != nil { @@ -561,9 +603,6 @@ func Fsync(fd Handle) (err error) { } func Chmod(path string, mode uint32) (err error) { - if mode == 0 { - return syscall.EINVAL - } p, e := UTF16PtrFromString(path) if e != nil { return e @@ -1090,7 +1129,7 @@ func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { return syscall.EWINDOWS } -func Getpid() (pid int) { return int(getCurrentProcessId()) } +func Getpid() (pid int) { return int(GetCurrentProcessId()) } func FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) { // NOTE(rsc): The Win32finddata struct is wrong for the system call: @@ -1218,3 +1257,78 @@ func Readlink(path string, buf []byte) (n int, err error) { return n, nil } + +// GUIDFromString parses a string in the form of +// "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" into a GUID. +func GUIDFromString(str string) (GUID, error) { + guid := GUID{} + str16, err := syscall.UTF16PtrFromString(str) + if err != nil { + return guid, err + } + err = clsidFromString(str16, &guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// GenerateGUID creates a new random GUID. +func GenerateGUID() (GUID, error) { + guid := GUID{} + err := coCreateGuid(&guid) + if err != nil { + return guid, err + } + return guid, nil +} + +// String returns the canonical string form of the GUID, +// in the form of "{XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}". +func (guid GUID) String() string { + var str [100]uint16 + chars := stringFromGUID2(&guid, &str[0], int32(len(str))) + if chars <= 1 { + return "" + } + return string(utf16.Decode(str[:chars-1])) +} + +// KnownFolderPath returns a well-known folder path for the current user, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + return Token(0).KnownFolderPath(folderID, flags) +} + +// KnownFolderPath returns a well-known folder path for the user token, specified by one of +// the FOLDERID_ constants, and chosen and optionally created based on a KF_ flag. +func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, error) { + var p *uint16 + err := shGetKnownFolderPath(folderID, flags, t, &p) + if err != nil { + return "", err + } + defer CoTaskMemFree(unsafe.Pointer(p)) + return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(p))[:]), nil +} + +// RtlGetVersion returns the version of the underlying operating system, ignoring +// manifest semantics but is affected by the application compatibility layer. +func RtlGetVersion() *OsVersionInfoEx { + info := &OsVersionInfoEx{} + info.osVersionInfoSize = uint32(unsafe.Sizeof(*info)) + // According to documentation, this function always succeeds. + // The function doesn't even check the validity of the + // osVersionInfoSize member. Disassembling ntdll.dll indicates + // that the documentation is indeed correct about that. + _ = rtlGetVersion(info) + return info +} + +// RtlGetNtVersionNumbers returns the version of the underlying operating system, +// ignoring manifest semantics and the application compatibility layer. +func RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) { + rtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber) + buildNumber &= 0xffff + return +} diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index ee27936..1ef80cd 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -4,7 +4,11 @@ package windows -import "syscall" +import ( + "net" + "syscall" + "unsafe" +) const ( // Invented values to support what package os expects. @@ -154,17 +158,50 @@ const ( WAIT_OBJECT_0 = 0x00000000 WAIT_FAILED = 0xFFFFFFFF - PROCESS_TERMINATE = 1 - PROCESS_QUERY_INFORMATION = 0x00000400 - SYNCHRONIZE = 0x00100000 + // Standard access rights. + DELETE = 0x00010000 + READ_CONTROL = 0x00020000 + SYNCHRONIZE = 0x00100000 + WRITE_DAC = 0x00040000 + WRITE_OWNER = 0x00080000 + + // Access rights for process. + PROCESS_CREATE_PROCESS = 0x0080 + PROCESS_CREATE_THREAD = 0x0002 + PROCESS_DUP_HANDLE = 0x0040 + PROCESS_QUERY_INFORMATION = 0x0400 + PROCESS_QUERY_LIMITED_INFORMATION = 0x1000 + PROCESS_SET_INFORMATION = 0x0200 + PROCESS_SET_QUOTA = 0x0100 + PROCESS_SUSPEND_RESUME = 0x0800 + PROCESS_TERMINATE = 0x0001 + PROCESS_VM_OPERATION = 0x0008 + PROCESS_VM_READ = 0x0010 + PROCESS_VM_WRITE = 0x0020 + + // Access rights for thread. + THREAD_DIRECT_IMPERSONATION = 0x0200 + THREAD_GET_CONTEXT = 0x0008 + THREAD_IMPERSONATE = 0x0100 + THREAD_QUERY_INFORMATION = 0x0040 + THREAD_QUERY_LIMITED_INFORMATION = 0x0800 + THREAD_SET_CONTEXT = 0x0010 + THREAD_SET_INFORMATION = 0x0020 + THREAD_SET_LIMITED_INFORMATION = 0x0400 + THREAD_SET_THREAD_TOKEN = 0x0080 + THREAD_SUSPEND_RESUME = 0x0002 + THREAD_TERMINATE = 0x0001 FILE_MAP_COPY = 0x01 FILE_MAP_WRITE = 0x02 FILE_MAP_READ = 0x04 FILE_MAP_EXECUTE = 0x20 - CTRL_C_EVENT = 0 - CTRL_BREAK_EVENT = 1 + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + CTRL_CLOSE_EVENT = 2 + CTRL_LOGOFF_EVENT = 5 + CTRL_SHUTDOWN_EVENT = 6 // Windows reserves errors >= 1<<29 for application use. APPLICATION_ERROR = 1 << 29 @@ -396,6 +433,26 @@ const ( SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000 ) +const ( + // flags for SetErrorMode + SEM_FAILCRITICALERRORS = 0x0001 + SEM_NOALIGNMENTFAULTEXCEPT = 0x0004 + SEM_NOGPFAULTERRORBOX = 0x0002 + SEM_NOOPENFILEERRORBOX = 0x8000 +) + +const ( + // Priority class. + ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000 + BELOW_NORMAL_PRIORITY_CLASS = 0x00004000 + HIGH_PRIORITY_CLASS = 0x00000080 + IDLE_PRIORITY_CLASS = 0x00000040 + NORMAL_PRIORITY_CLASS = 0x00000020 + PROCESS_MODE_BACKGROUND_BEGIN = 0x00100000 + PROCESS_MODE_BACKGROUND_END = 0x00200000 + REALTIME_PRIORITY_CLASS = 0x00000100 +) + var ( OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") @@ -605,6 +662,16 @@ type ProcessEntry32 struct { ExeFile [MAX_PATH]uint16 } +type ThreadEntry32 struct { + Size uint32 + Usage uint32 + ThreadID uint32 + OwnerProcessID uint32 + BasePri int32 + DeltaPri int32 + Flags uint32 +} + type Systemtime struct { Year uint16 Month uint16 @@ -1123,6 +1190,28 @@ const ( REG_QWORD = REG_QWORD_LITTLE_ENDIAN ) +const ( + EVENT_MODIFY_STATE = 0x0002 + EVENT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + MUTANT_QUERY_STATE = 0x0001 + MUTANT_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE + + SEMAPHORE_MODIFY_STATE = 0x0002 + SEMAPHORE_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3 + + TIMER_QUERY_STATE = 0x0001 + TIMER_MODIFY_STATE = 0x0002 + TIMER_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE + + MUTEX_MODIFY_STATE = MUTANT_QUERY_STATE + MUTEX_ALL_ACCESS = MUTANT_ALL_ACCESS + + CREATE_EVENT_MANUAL_RESET = 0x1 + CREATE_EVENT_INITIAL_SET = 0x2 + CREATE_MUTEX_INITIAL_OWNER = 0x1 +) + type AddrinfoW struct { Flags int32 Family int32 @@ -1286,6 +1375,41 @@ const ( ComputerNameMax = 8 ) +// For MessageBox() +const ( + MB_OK = 0x00000000 + MB_OKCANCEL = 0x00000001 + MB_ABORTRETRYIGNORE = 0x00000002 + MB_YESNOCANCEL = 0x00000003 + MB_YESNO = 0x00000004 + MB_RETRYCANCEL = 0x00000005 + MB_CANCELTRYCONTINUE = 0x00000006 + MB_ICONHAND = 0x00000010 + MB_ICONQUESTION = 0x00000020 + MB_ICONEXCLAMATION = 0x00000030 + MB_ICONASTERISK = 0x00000040 + MB_USERICON = 0x00000080 + MB_ICONWARNING = MB_ICONEXCLAMATION + MB_ICONERROR = MB_ICONHAND + MB_ICONINFORMATION = MB_ICONASTERISK + MB_ICONSTOP = MB_ICONHAND + MB_DEFBUTTON1 = 0x00000000 + MB_DEFBUTTON2 = 0x00000100 + MB_DEFBUTTON3 = 0x00000200 + MB_DEFBUTTON4 = 0x00000300 + MB_APPLMODAL = 0x00000000 + MB_SYSTEMMODAL = 0x00001000 + MB_TASKMODAL = 0x00002000 + MB_HELP = 0x00004000 + MB_NOFOCUS = 0x00008000 + MB_SETFOREGROUND = 0x00010000 + MB_DEFAULT_DESKTOP_ONLY = 0x00020000 + MB_TOPMOST = 0x00040000 + MB_RIGHT = 0x00080000 + MB_RTLREADING = 0x00100000 + MB_SERVICE_NOTIFICATION = 0x00200000 +) + const ( MOVEFILE_REPLACE_EXISTING = 0x1 MOVEFILE_COPY_ALLOWED = 0x2 @@ -1314,6 +1438,16 @@ type SocketAddress struct { SockaddrLength int32 } +// IP returns an IPv4 or IPv6 address, or nil if the underlying SocketAddress is neither. +func (addr *SocketAddress) IP() net.IP { + if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet4{}) && addr.Sockaddr.Addr.Family == AF_INET { + return (*RawSockaddrInet4)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } else if uintptr(addr.SockaddrLength) >= unsafe.Sizeof(RawSockaddrInet6{}) && addr.Sockaddr.Addr.Family == AF_INET6 { + return (*RawSockaddrInet6)(unsafe.Pointer(addr.Sockaddr)).Addr[:] + } + return nil +} + type IpAdapterUnicastAddress struct { Length uint32 Flags uint32 @@ -1439,3 +1573,118 @@ type ConsoleScreenBufferInfo struct { } const UNIX_PATH_MAX = 108 // defined in afunix.h + +const ( + // flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags + JOB_OBJECT_LIMIT_ACTIVE_PROCESS = 0x00000008 + JOB_OBJECT_LIMIT_AFFINITY = 0x00000010 + JOB_OBJECT_LIMIT_BREAKAWAY_OK = 0x00000800 + JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400 + JOB_OBJECT_LIMIT_JOB_MEMORY = 0x00000200 + JOB_OBJECT_LIMIT_JOB_TIME = 0x00000004 + JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE = 0x00002000 + JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME = 0x00000040 + JOB_OBJECT_LIMIT_PRIORITY_CLASS = 0x00000020 + JOB_OBJECT_LIMIT_PROCESS_MEMORY = 0x00000100 + JOB_OBJECT_LIMIT_PROCESS_TIME = 0x00000002 + JOB_OBJECT_LIMIT_SCHEDULING_CLASS = 0x00000080 + JOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK = 0x00001000 + JOB_OBJECT_LIMIT_SUBSET_AFFINITY = 0x00004000 + JOB_OBJECT_LIMIT_WORKINGSET = 0x00000001 +) + +type JOBOBJECT_BASIC_LIMIT_INFORMATION struct { + PerProcessUserTimeLimit int64 + PerJobUserTimeLimit int64 + LimitFlags uint32 + MinimumWorkingSetSize uintptr + MaximumWorkingSetSize uintptr + ActiveProcessLimit uint32 + Affinity uintptr + PriorityClass uint32 + SchedulingClass uint32 +} + +type IO_COUNTERS struct { + ReadOperationCount uint64 + WriteOperationCount uint64 + OtherOperationCount uint64 + ReadTransferCount uint64 + WriteTransferCount uint64 + OtherTransferCount uint64 +} + +type JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct { + BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION + IoInfo IO_COUNTERS + ProcessMemoryLimit uintptr + JobMemoryLimit uintptr + PeakProcessMemoryUsed uintptr + PeakJobMemoryUsed uintptr +} + +const ( + // UIRestrictionsClass + JOB_OBJECT_UILIMIT_DESKTOP = 0x00000040 + JOB_OBJECT_UILIMIT_DISPLAYSETTINGS = 0x00000010 + JOB_OBJECT_UILIMIT_EXITWINDOWS = 0x00000080 + JOB_OBJECT_UILIMIT_GLOBALATOMS = 0x00000020 + JOB_OBJECT_UILIMIT_HANDLES = 0x00000001 + JOB_OBJECT_UILIMIT_READCLIPBOARD = 0x00000002 + JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008 + JOB_OBJECT_UILIMIT_WRITECLIPBOARD = 0x00000004 +) + +type JOBOBJECT_BASIC_UI_RESTRICTIONS struct { + UIRestrictionsClass uint32 +} + +const ( + // JobObjectInformationClass + JobObjectAssociateCompletionPortInformation = 7 + JobObjectBasicLimitInformation = 2 + JobObjectBasicUIRestrictions = 4 + JobObjectCpuRateControlInformation = 15 + JobObjectEndOfJobTimeInformation = 6 + JobObjectExtendedLimitInformation = 9 + JobObjectGroupInformation = 11 + JobObjectGroupInformationEx = 14 + JobObjectLimitViolationInformation2 = 35 + JobObjectNetRateControlInformation = 32 + JobObjectNotificationLimitInformation = 12 + JobObjectNotificationLimitInformation2 = 34 + JobObjectSecurityLimitInformation = 5 +) + +const ( + KF_FLAG_DEFAULT = 0x00000000 + KF_FLAG_FORCE_APP_DATA_REDIRECTION = 0x00080000 + KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000 + KF_FLAG_FORCE_PACKAGE_REDIRECTION = 0x00020000 + KF_FLAG_NO_PACKAGE_REDIRECTION = 0x00010000 + KF_FLAG_FORCE_APPCONTAINER_REDIRECTION = 0x00020000 + KF_FLAG_NO_APPCONTAINER_REDIRECTION = 0x00010000 + KF_FLAG_CREATE = 0x00008000 + KF_FLAG_DONT_VERIFY = 0x00004000 + KF_FLAG_DONT_UNEXPAND = 0x00002000 + KF_FLAG_NO_ALIAS = 0x00001000 + KF_FLAG_INIT = 0x00000800 + KF_FLAG_DEFAULT_PATH = 0x00000400 + KF_FLAG_NOT_PARENT_RELATIVE = 0x00000200 + KF_FLAG_SIMPLE_IDLIST = 0x00000100 + KF_FLAG_ALIAS_ONLY = 0x80000000 +) + +type OsVersionInfoEx struct { + osVersionInfoSize uint32 + MajorVersion uint32 + MinorVersion uint32 + BuildNumber uint32 + PlatformId uint32 + CsdVersion [128]uint16 + ServicePackMajor uint16 + ServicePackMinor uint16 + SuiteMask uint16 + ProductType byte + _ byte +} diff --git a/vendor/golang.org/x/sys/windows/zerrors_windows.go b/vendor/golang.org/x/sys/windows/zerrors_windows.go index 2b4cea5..f021200 100644 --- a/vendor/golang.org/x/sys/windows/zerrors_windows.go +++ b/vendor/golang.org/x/sys/windows/zerrors_windows.go @@ -1,4 +1,4 @@ -// Code generated by 'go generate'; DO NOT EDIT. +// Code generated by 'mkerrors.bash'; DO NOT EDIT. package windows diff --git a/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go new file mode 100644 index 0000000..6048ac6 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go @@ -0,0 +1,149 @@ +// Code generated by 'mkknownfolderids.bash'; DO NOT EDIT. + +package windows + +type KNOWNFOLDERID GUID + +var ( + FOLDERID_NetworkFolder = &KNOWNFOLDERID{0xd20beec4, 0x5ca8, 0x4905, [8]byte{0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53}} + FOLDERID_ComputerFolder = &KNOWNFOLDERID{0x0ac0837c, 0xbbf8, 0x452a, [8]byte{0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7}} + FOLDERID_InternetFolder = &KNOWNFOLDERID{0x4d9f7874, 0x4e0c, 0x4904, [8]byte{0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b}} + FOLDERID_ControlPanelFolder = &KNOWNFOLDERID{0x82a74aeb, 0xaeb4, 0x465c, [8]byte{0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63}} + FOLDERID_PrintersFolder = &KNOWNFOLDERID{0x76fc4e2d, 0xd6ad, 0x4519, [8]byte{0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85}} + FOLDERID_SyncManagerFolder = &KNOWNFOLDERID{0x43668bf8, 0xc14e, 0x49b2, [8]byte{0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7}} + FOLDERID_SyncSetupFolder = &KNOWNFOLDERID{0x0f214138, 0xb1d3, 0x4a90, [8]byte{0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a}} + FOLDERID_ConflictFolder = &KNOWNFOLDERID{0x4bfefb45, 0x347d, 0x4006, [8]byte{0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92}} + FOLDERID_SyncResultsFolder = &KNOWNFOLDERID{0x289a9a43, 0xbe44, 0x4057, [8]byte{0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9}} + FOLDERID_RecycleBinFolder = &KNOWNFOLDERID{0xb7534046, 0x3ecb, 0x4c18, [8]byte{0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac}} + FOLDERID_ConnectionsFolder = &KNOWNFOLDERID{0x6f0cd92b, 0x2e97, 0x45d1, [8]byte{0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd}} + FOLDERID_Fonts = &KNOWNFOLDERID{0xfd228cb7, 0xae11, 0x4ae3, [8]byte{0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe}} + FOLDERID_Desktop = &KNOWNFOLDERID{0xb4bfcc3a, 0xdb2c, 0x424c, [8]byte{0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41}} + FOLDERID_Startup = &KNOWNFOLDERID{0xb97d20bb, 0xf46a, 0x4c97, [8]byte{0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54}} + FOLDERID_Programs = &KNOWNFOLDERID{0xa77f5d77, 0x2e2b, 0x44c3, [8]byte{0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51}} + FOLDERID_StartMenu = &KNOWNFOLDERID{0x625b53c3, 0xab48, 0x4ec1, [8]byte{0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19}} + FOLDERID_Recent = &KNOWNFOLDERID{0xae50c081, 0xebd2, 0x438a, [8]byte{0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a}} + FOLDERID_SendTo = &KNOWNFOLDERID{0x8983036c, 0x27c0, 0x404b, [8]byte{0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74}} + FOLDERID_Documents = &KNOWNFOLDERID{0xfdd39ad0, 0x238f, 0x46af, [8]byte{0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7}} + FOLDERID_Favorites = &KNOWNFOLDERID{0x1777f761, 0x68ad, 0x4d8a, [8]byte{0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd}} + FOLDERID_NetHood = &KNOWNFOLDERID{0xc5abbf53, 0xe17f, 0x4121, [8]byte{0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73}} + FOLDERID_PrintHood = &KNOWNFOLDERID{0x9274bd8d, 0xcfd1, 0x41c3, [8]byte{0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4}} + FOLDERID_Templates = &KNOWNFOLDERID{0xa63293e8, 0x664e, 0x48db, [8]byte{0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7}} + FOLDERID_CommonStartup = &KNOWNFOLDERID{0x82a5ea35, 0xd9cd, 0x47c5, [8]byte{0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e}} + FOLDERID_CommonPrograms = &KNOWNFOLDERID{0x0139d44e, 0x6afe, 0x49f2, [8]byte{0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8}} + FOLDERID_CommonStartMenu = &KNOWNFOLDERID{0xa4115719, 0xd62e, 0x491d, [8]byte{0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67}} + FOLDERID_PublicDesktop = &KNOWNFOLDERID{0xc4aa340d, 0xf20f, 0x4863, [8]byte{0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25}} + FOLDERID_ProgramData = &KNOWNFOLDERID{0x62ab5d82, 0xfdc1, 0x4dc3, [8]byte{0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97}} + FOLDERID_CommonTemplates = &KNOWNFOLDERID{0xb94237e7, 0x57ac, 0x4347, [8]byte{0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7}} + FOLDERID_PublicDocuments = &KNOWNFOLDERID{0xed4824af, 0xdce4, 0x45a8, [8]byte{0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34}} + FOLDERID_RoamingAppData = &KNOWNFOLDERID{0x3eb685db, 0x65f9, 0x4cf6, [8]byte{0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d}} + FOLDERID_LocalAppData = &KNOWNFOLDERID{0xf1b32785, 0x6fba, 0x4fcf, [8]byte{0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91}} + FOLDERID_LocalAppDataLow = &KNOWNFOLDERID{0xa520a1a4, 0x1780, 0x4ff6, [8]byte{0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16}} + FOLDERID_InternetCache = &KNOWNFOLDERID{0x352481e8, 0x33be, 0x4251, [8]byte{0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d}} + FOLDERID_Cookies = &KNOWNFOLDERID{0x2b0f765d, 0xc0e9, 0x4171, [8]byte{0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6}} + FOLDERID_History = &KNOWNFOLDERID{0xd9dc8a3b, 0xb784, 0x432e, [8]byte{0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63}} + FOLDERID_System = &KNOWNFOLDERID{0x1ac14e77, 0x02e7, 0x4e5d, [8]byte{0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7}} + FOLDERID_SystemX86 = &KNOWNFOLDERID{0xd65231b0, 0xb2f1, 0x4857, [8]byte{0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27}} + FOLDERID_Windows = &KNOWNFOLDERID{0xf38bf404, 0x1d43, 0x42f2, [8]byte{0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23}} + FOLDERID_Profile = &KNOWNFOLDERID{0x5e6c858f, 0x0e22, 0x4760, [8]byte{0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73}} + FOLDERID_Pictures = &KNOWNFOLDERID{0x33e28130, 0x4e1e, 0x4676, [8]byte{0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb}} + FOLDERID_ProgramFilesX86 = &KNOWNFOLDERID{0x7c5a40ef, 0xa0fb, 0x4bfc, [8]byte{0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e}} + FOLDERID_ProgramFilesCommonX86 = &KNOWNFOLDERID{0xde974d24, 0xd9c6, 0x4d3e, [8]byte{0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17}} + FOLDERID_ProgramFilesX64 = &KNOWNFOLDERID{0x6d809377, 0x6af0, 0x444b, [8]byte{0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e}} + FOLDERID_ProgramFilesCommonX64 = &KNOWNFOLDERID{0x6365d5a7, 0x0f0d, 0x45e5, [8]byte{0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d}} + FOLDERID_ProgramFiles = &KNOWNFOLDERID{0x905e63b6, 0xc1bf, 0x494e, [8]byte{0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a}} + FOLDERID_ProgramFilesCommon = &KNOWNFOLDERID{0xf7f1ed05, 0x9f6d, 0x47a2, [8]byte{0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66}} + FOLDERID_UserProgramFiles = &KNOWNFOLDERID{0x5cd7aee2, 0x2219, 0x4a67, [8]byte{0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb}} + FOLDERID_UserProgramFilesCommon = &KNOWNFOLDERID{0xbcbd3057, 0xca5c, 0x4622, [8]byte{0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16}} + FOLDERID_AdminTools = &KNOWNFOLDERID{0x724ef170, 0xa42d, 0x4fef, [8]byte{0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f}} + FOLDERID_CommonAdminTools = &KNOWNFOLDERID{0xd0384e7d, 0xbac3, 0x4797, [8]byte{0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5}} + FOLDERID_Music = &KNOWNFOLDERID{0x4bd8d571, 0x6d19, 0x48d3, [8]byte{0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43}} + FOLDERID_Videos = &KNOWNFOLDERID{0x18989b1d, 0x99b5, 0x455b, [8]byte{0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc}} + FOLDERID_Ringtones = &KNOWNFOLDERID{0xc870044b, 0xf49e, 0x4126, [8]byte{0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8}} + FOLDERID_PublicPictures = &KNOWNFOLDERID{0xb6ebfb86, 0x6907, 0x413c, [8]byte{0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5}} + FOLDERID_PublicMusic = &KNOWNFOLDERID{0x3214fab5, 0x9757, 0x4298, [8]byte{0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff}} + FOLDERID_PublicVideos = &KNOWNFOLDERID{0x2400183a, 0x6185, 0x49fb, [8]byte{0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3}} + FOLDERID_PublicRingtones = &KNOWNFOLDERID{0xe555ab60, 0x153b, 0x4d17, [8]byte{0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec}} + FOLDERID_ResourceDir = &KNOWNFOLDERID{0x8ad10c31, 0x2adb, 0x4296, [8]byte{0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72}} + FOLDERID_LocalizedResourcesDir = &KNOWNFOLDERID{0x2a00375e, 0x224c, 0x49de, [8]byte{0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc}} + FOLDERID_CommonOEMLinks = &KNOWNFOLDERID{0xc1bae2d0, 0x10df, 0x4334, [8]byte{0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d}} + FOLDERID_CDBurning = &KNOWNFOLDERID{0x9e52ab10, 0xf80d, 0x49df, [8]byte{0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55}} + FOLDERID_UserProfiles = &KNOWNFOLDERID{0x0762d272, 0xc50a, 0x4bb0, [8]byte{0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80}} + FOLDERID_Playlists = &KNOWNFOLDERID{0xde92c1c7, 0x837f, 0x4f69, [8]byte{0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23}} + FOLDERID_SamplePlaylists = &KNOWNFOLDERID{0x15ca69b3, 0x30ee, 0x49c1, [8]byte{0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5}} + FOLDERID_SampleMusic = &KNOWNFOLDERID{0xb250c668, 0xf57d, 0x4ee1, [8]byte{0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f}} + FOLDERID_SamplePictures = &KNOWNFOLDERID{0xc4900540, 0x2379, 0x4c75, [8]byte{0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b}} + FOLDERID_SampleVideos = &KNOWNFOLDERID{0x859ead94, 0x2e85, 0x48ad, [8]byte{0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd}} + FOLDERID_PhotoAlbums = &KNOWNFOLDERID{0x69d2cf90, 0xfc33, 0x4fb7, [8]byte{0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c}} + FOLDERID_Public = &KNOWNFOLDERID{0xdfdf76a2, 0xc82a, 0x4d63, [8]byte{0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85}} + FOLDERID_ChangeRemovePrograms = &KNOWNFOLDERID{0xdf7266ac, 0x9274, 0x4867, [8]byte{0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d}} + FOLDERID_AppUpdates = &KNOWNFOLDERID{0xa305ce99, 0xf527, 0x492b, [8]byte{0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4}} + FOLDERID_AddNewPrograms = &KNOWNFOLDERID{0xde61d971, 0x5ebc, 0x4f02, [8]byte{0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04}} + FOLDERID_Downloads = &KNOWNFOLDERID{0x374de290, 0x123f, 0x4565, [8]byte{0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b}} + FOLDERID_PublicDownloads = &KNOWNFOLDERID{0x3d644c9b, 0x1fb8, 0x4f30, [8]byte{0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0}} + FOLDERID_SavedSearches = &KNOWNFOLDERID{0x7d1d3a04, 0xdebb, 0x4115, [8]byte{0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda}} + FOLDERID_QuickLaunch = &KNOWNFOLDERID{0x52a4f021, 0x7b75, 0x48a9, [8]byte{0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f}} + FOLDERID_Contacts = &KNOWNFOLDERID{0x56784854, 0xc6cb, 0x462b, [8]byte{0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82}} + FOLDERID_SidebarParts = &KNOWNFOLDERID{0xa75d362e, 0x50fc, 0x4fb7, [8]byte{0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93}} + FOLDERID_SidebarDefaultParts = &KNOWNFOLDERID{0x7b396e54, 0x9ec5, 0x4300, [8]byte{0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26}} + FOLDERID_PublicGameTasks = &KNOWNFOLDERID{0xdebf2536, 0xe1a8, 0x4c59, [8]byte{0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea}} + FOLDERID_GameTasks = &KNOWNFOLDERID{0x054fae61, 0x4dd8, 0x4787, [8]byte{0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00}} + FOLDERID_SavedGames = &KNOWNFOLDERID{0x4c5c32ff, 0xbb9d, 0x43b0, [8]byte{0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4}} + FOLDERID_Games = &KNOWNFOLDERID{0xcac52c1a, 0xb53d, 0x4edc, [8]byte{0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34}} + FOLDERID_SEARCH_MAPI = &KNOWNFOLDERID{0x98ec0e18, 0x2098, 0x4d44, [8]byte{0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81}} + FOLDERID_SEARCH_CSC = &KNOWNFOLDERID{0xee32e446, 0x31ca, 0x4aba, [8]byte{0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e}} + FOLDERID_Links = &KNOWNFOLDERID{0xbfb9d5e0, 0xc6a9, 0x404c, [8]byte{0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68}} + FOLDERID_UsersFiles = &KNOWNFOLDERID{0xf3ce0f7c, 0x4901, 0x4acc, [8]byte{0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f}} + FOLDERID_UsersLibraries = &KNOWNFOLDERID{0xa302545d, 0xdeff, 0x464b, [8]byte{0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b}} + FOLDERID_SearchHome = &KNOWNFOLDERID{0x190337d1, 0xb8ca, 0x4121, [8]byte{0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a}} + FOLDERID_OriginalImages = &KNOWNFOLDERID{0x2c36c0aa, 0x5812, 0x4b87, [8]byte{0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39}} + FOLDERID_DocumentsLibrary = &KNOWNFOLDERID{0x7b0db17d, 0x9cd2, 0x4a93, [8]byte{0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c}} + FOLDERID_MusicLibrary = &KNOWNFOLDERID{0x2112ab0a, 0xc86a, 0x4ffe, [8]byte{0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e}} + FOLDERID_PicturesLibrary = &KNOWNFOLDERID{0xa990ae9f, 0xa03b, 0x4e80, [8]byte{0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04}} + FOLDERID_VideosLibrary = &KNOWNFOLDERID{0x491e922f, 0x5643, 0x4af4, [8]byte{0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74}} + FOLDERID_RecordedTVLibrary = &KNOWNFOLDERID{0x1a6fdba2, 0xf42d, 0x4358, [8]byte{0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5}} + FOLDERID_HomeGroup = &KNOWNFOLDERID{0x52528a6b, 0xb9e3, 0x4add, [8]byte{0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d}} + FOLDERID_HomeGroupCurrentUser = &KNOWNFOLDERID{0x9b74b6a3, 0x0dfd, 0x4f11, [8]byte{0x9e, 0x78, 0x5f, 0x78, 0x00, 0xf2, 0xe7, 0x72}} + FOLDERID_DeviceMetadataStore = &KNOWNFOLDERID{0x5ce4a5e9, 0xe4eb, 0x479d, [8]byte{0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55}} + FOLDERID_Libraries = &KNOWNFOLDERID{0x1b3ea5dc, 0xb587, 0x4786, [8]byte{0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae}} + FOLDERID_PublicLibraries = &KNOWNFOLDERID{0x48daf80b, 0xe6cf, 0x4f4e, [8]byte{0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84}} + FOLDERID_UserPinned = &KNOWNFOLDERID{0x9e3995ab, 0x1f9c, 0x4f13, [8]byte{0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74}} + FOLDERID_ImplicitAppShortcuts = &KNOWNFOLDERID{0xbcb5256f, 0x79f6, 0x4cee, [8]byte{0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46}} + FOLDERID_AccountPictures = &KNOWNFOLDERID{0x008ca0b1, 0x55b4, 0x4c56, [8]byte{0xb8, 0xa8, 0x4d, 0xe4, 0xb2, 0x99, 0xd3, 0xbe}} + FOLDERID_PublicUserTiles = &KNOWNFOLDERID{0x0482af6c, 0x08f1, 0x4c34, [8]byte{0x8c, 0x90, 0xe1, 0x7e, 0xc9, 0x8b, 0x1e, 0x17}} + FOLDERID_AppsFolder = &KNOWNFOLDERID{0x1e87508d, 0x89c2, 0x42f0, [8]byte{0x8a, 0x7e, 0x64, 0x5a, 0x0f, 0x50, 0xca, 0x58}} + FOLDERID_StartMenuAllPrograms = &KNOWNFOLDERID{0xf26305ef, 0x6948, 0x40b9, [8]byte{0xb2, 0x55, 0x81, 0x45, 0x3d, 0x09, 0xc7, 0x85}} + FOLDERID_CommonStartMenuPlaces = &KNOWNFOLDERID{0xa440879f, 0x87a0, 0x4f7d, [8]byte{0xb7, 0x00, 0x02, 0x07, 0xb9, 0x66, 0x19, 0x4a}} + FOLDERID_ApplicationShortcuts = &KNOWNFOLDERID{0xa3918781, 0xe5f2, 0x4890, [8]byte{0xb3, 0xd9, 0xa7, 0xe5, 0x43, 0x32, 0x32, 0x8c}} + FOLDERID_RoamingTiles = &KNOWNFOLDERID{0x00bcfc5a, 0xed94, 0x4e48, [8]byte{0x96, 0xa1, 0x3f, 0x62, 0x17, 0xf2, 0x19, 0x90}} + FOLDERID_RoamedTileImages = &KNOWNFOLDERID{0xaaa8d5a5, 0xf1d6, 0x4259, [8]byte{0xba, 0xa8, 0x78, 0xe7, 0xef, 0x60, 0x83, 0x5e}} + FOLDERID_Screenshots = &KNOWNFOLDERID{0xb7bede81, 0xdf94, 0x4682, [8]byte{0xa7, 0xd8, 0x57, 0xa5, 0x26, 0x20, 0xb8, 0x6f}} + FOLDERID_CameraRoll = &KNOWNFOLDERID{0xab5fb87b, 0x7ce2, 0x4f83, [8]byte{0x91, 0x5d, 0x55, 0x08, 0x46, 0xc9, 0x53, 0x7b}} + FOLDERID_SkyDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_OneDrive = &KNOWNFOLDERID{0xa52bba46, 0xe9e1, 0x435f, [8]byte{0xb3, 0xd9, 0x28, 0xda, 0xa6, 0x48, 0xc0, 0xf6}} + FOLDERID_SkyDriveDocuments = &KNOWNFOLDERID{0x24d89e24, 0x2f19, 0x4534, [8]byte{0x9d, 0xde, 0x6a, 0x66, 0x71, 0xfb, 0xb8, 0xfe}} + FOLDERID_SkyDrivePictures = &KNOWNFOLDERID{0x339719b5, 0x8c47, 0x4894, [8]byte{0x94, 0xc2, 0xd8, 0xf7, 0x7a, 0xdd, 0x44, 0xa6}} + FOLDERID_SkyDriveMusic = &KNOWNFOLDERID{0xc3f2459e, 0x80d6, 0x45dc, [8]byte{0xbf, 0xef, 0x1f, 0x76, 0x9f, 0x2b, 0xe7, 0x30}} + FOLDERID_SkyDriveCameraRoll = &KNOWNFOLDERID{0x767e6811, 0x49cb, 0x4273, [8]byte{0x87, 0xc2, 0x20, 0xf3, 0x55, 0xe1, 0x08, 0x5b}} + FOLDERID_SearchHistory = &KNOWNFOLDERID{0x0d4c3db6, 0x03a3, 0x462f, [8]byte{0xa0, 0xe6, 0x08, 0x92, 0x4c, 0x41, 0xb5, 0xd4}} + FOLDERID_SearchTemplates = &KNOWNFOLDERID{0x7e636bfe, 0xdfa9, 0x4d5e, [8]byte{0xb4, 0x56, 0xd7, 0xb3, 0x98, 0x51, 0xd8, 0xa9}} + FOLDERID_CameraRollLibrary = &KNOWNFOLDERID{0x2b20df75, 0x1eda, 0x4039, [8]byte{0x80, 0x97, 0x38, 0x79, 0x82, 0x27, 0xd5, 0xb7}} + FOLDERID_SavedPictures = &KNOWNFOLDERID{0x3b193882, 0xd3ad, 0x4eab, [8]byte{0x96, 0x5a, 0x69, 0x82, 0x9d, 0x1f, 0xb5, 0x9f}} + FOLDERID_SavedPicturesLibrary = &KNOWNFOLDERID{0xe25b5812, 0xbe88, 0x4bd9, [8]byte{0x94, 0xb0, 0x29, 0x23, 0x34, 0x77, 0xb6, 0xc3}} + FOLDERID_RetailDemo = &KNOWNFOLDERID{0x12d4c69e, 0x24ad, 0x4923, [8]byte{0xbe, 0x19, 0x31, 0x32, 0x1c, 0x43, 0xa7, 0x67}} + FOLDERID_Device = &KNOWNFOLDERID{0x1c2ac1dc, 0x4358, 0x4b6c, [8]byte{0x97, 0x33, 0xaf, 0x21, 0x15, 0x65, 0x76, 0xf0}} + FOLDERID_DevelopmentFiles = &KNOWNFOLDERID{0xdbe8e08e, 0x3053, 0x4bbc, [8]byte{0xb1, 0x83, 0x2a, 0x7b, 0x2b, 0x19, 0x1e, 0x59}} + FOLDERID_Objects3D = &KNOWNFOLDERID{0x31c0dd25, 0x9439, 0x4f12, [8]byte{0xbf, 0x41, 0x7f, 0xf4, 0xed, 0xa3, 0x87, 0x22}} + FOLDERID_AppCaptures = &KNOWNFOLDERID{0xedc0fe71, 0x98d8, 0x4f4a, [8]byte{0xb9, 0x20, 0xc8, 0xdc, 0x13, 0x3c, 0xb1, 0x65}} + FOLDERID_LocalDocuments = &KNOWNFOLDERID{0xf42ee2d3, 0x909f, 0x4907, [8]byte{0x88, 0x71, 0x4c, 0x22, 0xfc, 0x0b, 0xf7, 0x56}} + FOLDERID_LocalPictures = &KNOWNFOLDERID{0x0ddd015d, 0xb06c, 0x45d5, [8]byte{0x8c, 0x4c, 0xf5, 0x97, 0x13, 0x85, 0x46, 0x39}} + FOLDERID_LocalVideos = &KNOWNFOLDERID{0x35286a68, 0x3c57, 0x41a1, [8]byte{0xbb, 0xb1, 0x0e, 0xae, 0x73, 0xd7, 0x6c, 0x95}} + FOLDERID_LocalMusic = &KNOWNFOLDERID{0xa0c69a99, 0x21c8, 0x4671, [8]byte{0x87, 0x03, 0x79, 0x34, 0x16, 0x2f, 0xcf, 0x1d}} + FOLDERID_LocalDownloads = &KNOWNFOLDERID{0x7d83ee9b, 0x2244, 0x4e70, [8]byte{0xb1, 0xf5, 0x53, 0x93, 0x04, 0x2a, 0xf1, 0xe4}} + FOLDERID_RecordedCalls = &KNOWNFOLDERID{0x2f8b40c2, 0x83ed, 0x48ee, [8]byte{0xb3, 0x83, 0xa1, 0xf1, 0x57, 0xec, 0x6f, 0x9a}} + FOLDERID_AllAppMods = &KNOWNFOLDERID{0x7ad67899, 0x66af, 0x43ba, [8]byte{0x91, 0x56, 0x6a, 0xad, 0x42, 0xe6, 0xc5, 0x96}} + FOLDERID_CurrentAppMods = &KNOWNFOLDERID{0x3db40b20, 0x2a30, 0x4dbe, [8]byte{0x91, 0x7e, 0x77, 0x1d, 0xd2, 0x1d, 0xd0, 0x99}} + FOLDERID_AppDataDesktop = &KNOWNFOLDERID{0xb2c5e279, 0x7add, 0x439f, [8]byte{0xb2, 0x8c, 0xc4, 0x1f, 0xe1, 0xbb, 0xf6, 0x72}} + FOLDERID_AppDataDocuments = &KNOWNFOLDERID{0x7be16610, 0x1f7f, 0x44ac, [8]byte{0xbf, 0xf0, 0x83, 0xe1, 0x5f, 0x2f, 0xfc, 0xa1}} + FOLDERID_AppDataFavorites = &KNOWNFOLDERID{0x7cfbefbc, 0xde1f, 0x45aa, [8]byte{0xb8, 0x43, 0xa5, 0x42, 0xac, 0x53, 0x6c, 0xc9}} + FOLDERID_AppDataProgramData = &KNOWNFOLDERID{0x559d40a3, 0xa036, 0x40fa, [8]byte{0xaf, 0x61, 0x84, 0xcb, 0x43, 0x0a, 0x4d, 0x34}} +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 7060f43..9c448be 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -38,14 +38,18 @@ var ( modadvapi32 = NewLazySystemDLL("advapi32.dll") modkernel32 = NewLazySystemDLL("kernel32.dll") modshell32 = NewLazySystemDLL("shell32.dll") + moduserenv = NewLazySystemDLL("userenv.dll") modmswsock = NewLazySystemDLL("mswsock.dll") modcrypt32 = NewLazySystemDLL("crypt32.dll") + moduser32 = NewLazySystemDLL("user32.dll") + modole32 = NewLazySystemDLL("ole32.dll") + modntdll = NewLazySystemDLL("ntdll.dll") modws2_32 = NewLazySystemDLL("ws2_32.dll") moddnsapi = NewLazySystemDLL("dnsapi.dll") modiphlpapi = NewLazySystemDLL("iphlpapi.dll") modsecur32 = NewLazySystemDLL("secur32.dll") modnetapi32 = NewLazySystemDLL("netapi32.dll") - moduserenv = NewLazySystemDLL("userenv.dll") + modwtsapi32 = NewLazySystemDLL("wtsapi32.dll") procRegisterEventSourceW = modadvapi32.NewProc("RegisterEventSourceW") procDeregisterEventSource = modadvapi32.NewProc("DeregisterEventSource") @@ -57,6 +61,7 @@ var ( procDeleteService = modadvapi32.NewProc("DeleteService") procStartServiceW = modadvapi32.NewProc("StartServiceW") procQueryServiceStatus = modadvapi32.NewProc("QueryServiceStatus") + procQueryServiceLockStatusW = modadvapi32.NewProc("QueryServiceLockStatusW") procControlService = modadvapi32.NewProc("ControlService") procStartServiceCtrlDispatcherW = modadvapi32.NewProc("StartServiceCtrlDispatcherW") procSetServiceStatus = modadvapi32.NewProc("SetServiceStatus") @@ -66,6 +71,7 @@ var ( procQueryServiceConfig2W = modadvapi32.NewProc("QueryServiceConfig2W") procEnumServicesStatusExW = modadvapi32.NewProc("EnumServicesStatusExW") procQueryServiceStatusEx = modadvapi32.NewProc("QueryServiceStatusEx") + procNotifyServiceStatusChangeW = modadvapi32.NewProc("NotifyServiceStatusChangeW") procGetLastError = modkernel32.NewProc("GetLastError") procLoadLibraryW = modkernel32.NewProc("LoadLibraryW") procLoadLibraryExW = modkernel32.NewProc("LoadLibraryExW") @@ -74,6 +80,7 @@ var ( procGetVersion = modkernel32.NewProc("GetVersion") procFormatMessageW = modkernel32.NewProc("FormatMessageW") procExitProcess = modkernel32.NewProc("ExitProcess") + procIsWow64Process = modkernel32.NewProc("IsWow64Process") procCreateFileW = modkernel32.NewProc("CreateFileW") procReadFile = modkernel32.NewProc("ReadFile") procWriteFile = modkernel32.NewProc("WriteFile") @@ -107,10 +114,13 @@ var ( procCancelIoEx = modkernel32.NewProc("CancelIoEx") procCreateProcessW = modkernel32.NewProc("CreateProcessW") procOpenProcess = modkernel32.NewProc("OpenProcess") + procShellExecuteW = modshell32.NewProc("ShellExecuteW") + procSHGetKnownFolderPath = modshell32.NewProc("SHGetKnownFolderPath") procTerminateProcess = modkernel32.NewProc("TerminateProcess") procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess") procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW") procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess") + procGetCurrentThread = modkernel32.NewProc("GetCurrentThread") procGetProcessTimes = modkernel32.NewProc("GetProcessTimes") procDuplicateHandle = modkernel32.NewProc("DuplicateHandle") procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject") @@ -125,6 +135,9 @@ var ( procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW") procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW") procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW") + procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") + procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") + procGetTickCount64 = modkernel32.NewProc("GetTickCount64") procSetFileTime = modkernel32.NewProc("SetFileTime") procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW") procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW") @@ -172,6 +185,8 @@ var ( procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot") procProcess32FirstW = modkernel32.NewProc("Process32FirstW") procProcess32NextW = modkernel32.NewProc("Process32NextW") + procThread32First = modkernel32.NewProc("Thread32First") + procThread32Next = modkernel32.NewProc("Thread32Next") procDeviceIoControl = modkernel32.NewProc("DeviceIoControl") procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW") procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW") @@ -182,6 +197,23 @@ var ( procSetEvent = modkernel32.NewProc("SetEvent") procResetEvent = modkernel32.NewProc("ResetEvent") procPulseEvent = modkernel32.NewProc("PulseEvent") + procCreateMutexW = modkernel32.NewProc("CreateMutexW") + procCreateMutexExW = modkernel32.NewProc("CreateMutexExW") + procOpenMutexW = modkernel32.NewProc("OpenMutexW") + procReleaseMutex = modkernel32.NewProc("ReleaseMutex") + procSleepEx = modkernel32.NewProc("SleepEx") + procCreateJobObjectW = modkernel32.NewProc("CreateJobObjectW") + procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") + procTerminateJobObject = modkernel32.NewProc("TerminateJobObject") + procSetErrorMode = modkernel32.NewProc("SetErrorMode") + procResumeThread = modkernel32.NewProc("ResumeThread") + procSetPriorityClass = modkernel32.NewProc("SetPriorityClass") + procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") + procSetInformationJobObject = modkernel32.NewProc("SetInformationJobObject") + procGenerateConsoleCtrlEvent = modkernel32.NewProc("GenerateConsoleCtrlEvent") + procGetProcessId = modkernel32.NewProc("GetProcessId") + procOpenThread = modkernel32.NewProc("OpenThread") + procSetProcessPriorityBoost = modkernel32.NewProc("SetProcessPriorityBoost") procDefineDosDeviceW = modkernel32.NewProc("DefineDosDeviceW") procDeleteVolumeMountPointW = modkernel32.NewProc("DeleteVolumeMountPointW") procFindFirstVolumeW = modkernel32.NewProc("FindFirstVolumeW") @@ -201,6 +233,13 @@ var ( procQueryDosDeviceW = modkernel32.NewProc("QueryDosDeviceW") procSetVolumeLabelW = modkernel32.NewProc("SetVolumeLabelW") procSetVolumeMountPointW = modkernel32.NewProc("SetVolumeMountPointW") + procMessageBoxW = moduser32.NewProc("MessageBoxW") + procCLSIDFromString = modole32.NewProc("CLSIDFromString") + procStringFromGUID2 = modole32.NewProc("StringFromGUID2") + procCoCreateGuid = modole32.NewProc("CoCreateGuid") + procCoTaskMemFree = modole32.NewProc("CoTaskMemFree") + procRtlGetVersion = modntdll.NewProc("RtlGetVersion") + procRtlGetNtVersionNumbers = modntdll.NewProc("RtlGetNtVersionNumbers") procWSAStartup = modws2_32.NewProc("WSAStartup") procWSACleanup = modws2_32.NewProc("WSACleanup") procWSAIoctl = modws2_32.NewProc("WSAIoctl") @@ -249,13 +288,32 @@ var ( procCopySid = modadvapi32.NewProc("CopySid") procAllocateAndInitializeSid = modadvapi32.NewProc("AllocateAndInitializeSid") procCreateWellKnownSid = modadvapi32.NewProc("CreateWellKnownSid") + procIsWellKnownSid = modadvapi32.NewProc("IsWellKnownSid") procFreeSid = modadvapi32.NewProc("FreeSid") procEqualSid = modadvapi32.NewProc("EqualSid") + procGetSidIdentifierAuthority = modadvapi32.NewProc("GetSidIdentifierAuthority") + procGetSidSubAuthorityCount = modadvapi32.NewProc("GetSidSubAuthorityCount") + procGetSidSubAuthority = modadvapi32.NewProc("GetSidSubAuthority") + procIsValidSid = modadvapi32.NewProc("IsValidSid") procCheckTokenMembership = modadvapi32.NewProc("CheckTokenMembership") procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken") + procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") + procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") + procRevertToSelf = modadvapi32.NewProc("RevertToSelf") + procSetThreadToken = modadvapi32.NewProc("SetThreadToken") + procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") + procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") + procAdjustTokenGroups = modadvapi32.NewProc("AdjustTokenGroups") procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation") + procSetTokenInformation = modadvapi32.NewProc("SetTokenInformation") + procDuplicateTokenEx = modadvapi32.NewProc("DuplicateTokenEx") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") procGetSystemDirectoryW = modkernel32.NewProc("GetSystemDirectoryW") + procGetWindowsDirectoryW = modkernel32.NewProc("GetWindowsDirectoryW") + procGetSystemWindowsDirectoryW = modkernel32.NewProc("GetSystemWindowsDirectoryW") + procWTSQueryUserToken = modwtsapi32.NewProc("WTSQueryUserToken") + procWTSEnumerateSessionsW = modwtsapi32.NewProc("WTSEnumerateSessionsW") + procWTSFreeMemory = modwtsapi32.NewProc("WTSFreeMemory") ) func RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) { @@ -382,6 +440,18 @@ func QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) { return } +func QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func ControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) { r1, _, e1 := syscall.Syscall(procControlService.Addr(), 3, uintptr(service), uintptr(control), uintptr(unsafe.Pointer(status))) if r1 == 0 { @@ -490,6 +560,14 @@ func QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize return } +func NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) { + r0, _, _ := syscall.Syscall(procNotifyServiceStatusChangeW.Addr(), 3, uintptr(service), uintptr(notifyMask), uintptr(unsafe.Pointer(notifier))) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + func GetLastError() (lasterr error) { r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0) if r0 != 0 { @@ -611,7 +689,19 @@ func ExitProcess(exitcode uint32) { return } -func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile int32) (handle Handle, err error) { +func IsWow64Process(handle Handle, isWow64 *bool) (err error) { + r1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(isWow64)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) { r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) handle = Handle(r0) if handle == InvalidHandle { @@ -1008,14 +1098,14 @@ func CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityA return } -func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err error) { +func OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) { var _p0 uint32 if inheritHandle { _p0 = 1 } else { _p0 = 0 } - r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(da), uintptr(_p0), uintptr(pid)) + r0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId)) handle = Handle(r0) if handle == 0 { if e1 != 0 { @@ -1027,6 +1117,26 @@ func OpenProcess(da uint32, inheritHandle bool, pid uint32) (handle Handle, err return } +func ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) { + r1, _, e1 := syscall.Syscall6(procShellExecuteW.Addr(), 6, uintptr(hwnd), uintptr(unsafe.Pointer(verb)), uintptr(unsafe.Pointer(file)), uintptr(unsafe.Pointer(args)), uintptr(unsafe.Pointer(cwd)), uintptr(showCmd)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) { + r0, _, _ := syscall.Syscall6(procSHGetKnownFolderPath.Addr(), 4, uintptr(unsafe.Pointer(id)), uintptr(flags), uintptr(token), uintptr(unsafe.Pointer(path)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + func TerminateProcess(handle Handle, exitcode uint32) (err error) { r1, _, e1 := syscall.Syscall(procTerminateProcess.Addr(), 2, uintptr(handle), uintptr(exitcode), 0) if r1 == 0 { @@ -1076,6 +1186,19 @@ func GetCurrentProcess() (pseudoHandle Handle, err error) { return } +func GetCurrentThread() (pseudoHandle Handle, err error) { + r0, _, e1 := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0) + pseudoHandle = Handle(r0) + if pseudoHandle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) { r1, _, e1 := syscall.Syscall6(procGetProcessTimes.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(creationTime)), uintptr(unsafe.Pointer(exitTime)), uintptr(unsafe.Pointer(kernelTime)), uintptr(unsafe.Pointer(userTime)), 0) if r1 == 0 { @@ -1262,6 +1385,42 @@ func SetEnvironmentVariable(name *uint16, value *uint16) (err error) { return } +func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { + var _p0 uint32 + if inheritExisting { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0)) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DestroyEnvironmentBlock(block *uint16) (err error) { + r1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getTickCount64() (ms uint64) { + r0, _, _ := syscall.Syscall(procGetTickCount64.Addr(), 0, 0, 0, 0) + ms = uint64(r0) + return +} + func SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) { r1, _, e1 := syscall.Syscall6(procSetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0) if r1 == 0 { @@ -1704,7 +1863,7 @@ func RegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32 return } -func getCurrentProcessId() (pid uint32) { +func GetCurrentProcessId() (pid uint32) { r0, _, _ := syscall.Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0) pid = uint32(r0) return @@ -1807,6 +1966,30 @@ func Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) { return } +func Thread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32First.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func Thread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error) { + r1, _, e1 := syscall.Syscall(procThread32Next.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(threadEntry)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) { r1, _, e1 := syscall.Syscall9(procDeviceIoControl.Addr(), 8, uintptr(handle), uintptr(ioControlCode), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferSize), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferSize), uintptr(unsafe.Pointer(bytesReturned)), uintptr(unsafe.Pointer(overlapped)), 0) if r1 == 0 { @@ -1930,6 +2113,237 @@ func PulseEvent(event Handle) (err error) { return } +func CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if initialOwner { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall6(procCreateMutexExW.Addr(), 4, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(desiredAccess), 0, 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name))) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ReleaseMutex(mutex Handle) (err error) { + r1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SleepEx(milliseconds uint32, alertable bool) (ret uint32) { + var _p0 uint32 + if alertable { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0) + ret = uint32(r0) + return +} + +func CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) { + r0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AssignProcessToJobObject(job Handle, process Handle) (err error) { + r1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func TerminateJobObject(job Handle, exitCode uint32) (err error) { + r1, _, e1 := syscall.Syscall(procTerminateJobObject.Addr(), 2, uintptr(job), uintptr(exitCode), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetErrorMode(mode uint32) (ret uint32) { + r0, _, _ := syscall.Syscall(procSetErrorMode.Addr(), 1, uintptr(mode), 0, 0) + ret = uint32(r0) + return +} + +func ResumeThread(thread Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0) + ret = uint32(r0) + if ret == 0xffffffff { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetPriorityClass(process Handle, priorityClass uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetPriorityClass(process Handle) (ret uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0) + ret = uint32(r0) + if ret == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) { + r0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0) + ret = int(r0) + if ret == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGenerateConsoleCtrlEvent.Addr(), 2, uintptr(ctrlEvent), uintptr(processGroupID), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetProcessId(process Handle) (id uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0) + id = uint32(r0) + if id == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) { + var _p0 uint32 + if inheritHandle { + _p0 = 1 + } else { + _p0 = 0 + } + r0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId)) + handle = Handle(r0) + if handle == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetProcessPriorityBoost(process Handle, disable bool) (err error) { + var _p0 uint32 + if disable { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + func DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) { r1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath))) if r1 == 0 { @@ -2157,6 +2571,59 @@ func SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err erro return } +func MessageBox(hwnd Handle, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { + r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) + ret = int32(r0) + if ret == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func clsidFromString(lpsz *uint16, pclsid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCLSIDFromString.Addr(), 2, uintptr(unsafe.Pointer(lpsz)), uintptr(unsafe.Pointer(pclsid)), 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func stringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) { + r0, _, _ := syscall.Syscall(procStringFromGUID2.Addr(), 3, uintptr(unsafe.Pointer(rguid)), uintptr(unsafe.Pointer(lpsz)), uintptr(cchMax)) + chars = int32(r0) + return +} + +func coCreateGuid(pguid *GUID) (ret error) { + r0, _, _ := syscall.Syscall(procCoCreateGuid.Addr(), 1, uintptr(unsafe.Pointer(pguid)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func CoTaskMemFree(address unsafe.Pointer) { + syscall.Syscall(procCoTaskMemFree.Addr(), 1, uintptr(address), 0, 0) + return +} + +func rtlGetVersion(info *OsVersionInfoEx) (ret error) { + r0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0) + if r0 != 0 { + ret = syscall.Errno(r0) + } + return +} + +func rtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) { + syscall.Syscall(procRtlGetNtVersionNumbers.Addr(), 3, uintptr(unsafe.Pointer(majorVersion)), uintptr(unsafe.Pointer(minorVersion)), uintptr(unsafe.Pointer(buildNumber))) + return +} + func WSAStartup(verreq uint32, data *WSAData) (sockerr error) { r0, _, _ := syscall.Syscall(procWSAStartup.Addr(), 2, uintptr(verreq), uintptr(unsafe.Pointer(data)), 0) if r0 != 0 { @@ -2699,6 +3166,12 @@ func createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, s return } +func isWellKnownSid(sid *SID, sidType WELL_KNOWN_SID_TYPE) (isWellKnown bool) { + r0, _, _ := syscall.Syscall(procIsWellKnownSid.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(sidType), 0) + isWellKnown = r0 != 0 + return +} + func FreeSid(sid *SID) (err error) { r1, _, e1 := syscall.Syscall(procFreeSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) if r1 != 0 { @@ -2717,6 +3190,30 @@ func EqualSid(sid1 *SID, sid2 *SID) (isEqual bool) { return } +func getSidIdentifierAuthority(sid *SID) (authority *SidIdentifierAuthority) { + r0, _, _ := syscall.Syscall(procGetSidIdentifierAuthority.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + authority = (*SidIdentifierAuthority)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthorityCount(sid *SID) (count *uint8) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthorityCount.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + count = (*uint8)(unsafe.Pointer(r0)) + return +} + +func getSidSubAuthority(sid *SID, index uint32) (subAuthority *uint32) { + r0, _, _ := syscall.Syscall(procGetSidSubAuthority.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(index), 0) + subAuthority = (*uint32)(unsafe.Pointer(r0)) + return +} + +func isValidSid(sid *SID) (isValid bool) { + r0, _, _ := syscall.Syscall(procIsValidSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) + isValid = r0 != 0 + return +} + func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) (err error) { r1, _, e1 := syscall.Syscall(procCheckTokenMembership.Addr(), 3, uintptr(tokenHandle), uintptr(unsafe.Pointer(sidToCheck)), uintptr(unsafe.Pointer(isMember))) if r1 == 0 { @@ -2729,8 +3226,8 @@ func checkTokenMembership(tokenHandle Token, sidToCheck *SID, isMember *int32) ( return } -func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { - r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(h), uintptr(access), uintptr(unsafe.Pointer(token))) +func OpenProcessToken(process Handle, access uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procOpenProcessToken.Addr(), 3, uintptr(process), uintptr(access), uintptr(unsafe.Pointer(token))) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2741,8 +3238,134 @@ func OpenProcessToken(h Handle, access uint32, token *Token) (err error) { return } -func GetTokenInformation(t Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(t), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) +func OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) { + var _p0 uint32 + if openAsSelf { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func ImpersonateSelf(impersonationlevel uint32) (err error) { + r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(impersonationlevel), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func RevertToSelf() (err error) { + r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetThreadToken(thread *Handle, token Token) (err error) { + r1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func LookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) { + r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemname)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) { + var _p0 uint32 + if disableAllPrivileges { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) { + var _p0 uint32 + if resetToDefault { + _p0 = 1 + } else { + _p0 = 0 + } + r1, _, e1 := syscall.Syscall6(procAdjustTokenGroups.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(newstate)), uintptr(buflen), uintptr(unsafe.Pointer(prevstate)), uintptr(unsafe.Pointer(returnlen))) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func GetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procGetTokenInformation.Addr(), 5, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), uintptr(unsafe.Pointer(returnedLen)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) { + r1, _, e1 := syscall.Syscall6(procDuplicateTokenEx.Addr(), 6, uintptr(existingToken), uintptr(desiredAccess), uintptr(unsafe.Pointer(tokenAttributes)), uintptr(impersonationLevel), uintptr(tokenType), uintptr(unsafe.Pointer(newToken))) if r1 == 0 { if e1 != 0 { err = errnoErr(e1) @@ -2777,3 +3400,58 @@ func getSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { } return } + +func getWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func getSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetSystemWindowsDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(dir)), uintptr(dirLen), 0) + len = uint32(r0) + if len == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSQueryUserToken(session uint32, token *Token) (err error) { + r1, _, e1 := syscall.Syscall(procWTSQueryUserToken.Addr(), 2, uintptr(session), uintptr(unsafe.Pointer(token)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) { + r1, _, e1 := syscall.Syscall6(procWTSEnumerateSessionsW.Addr(), 5, uintptr(handle), uintptr(reserved), uintptr(version), uintptr(unsafe.Pointer(sessions)), uintptr(unsafe.Pointer(count)), 0) + if r1 == 0 { + if e1 != 0 { + err = errnoErr(e1) + } else { + err = syscall.EINVAL + } + } + return +} + +func WTSFreeMemory(ptr uintptr) { + syscall.Syscall(procWTSFreeMemory.Addr(), 1, uintptr(ptr), 0, 0) + return +} diff --git a/vendor/modules.txt b/vendor/modules.txt index af44b05..35598c6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,19 +1,22 @@ +# blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c +blitter.com/go/chacha20 +blitter.com/go/chacha20/internal/api +blitter.com/go/chacha20/internal/hardware +blitter.com/go/chacha20/internal/ref # blitter.com/go/cryptmt v1.0.0 blitter.com/go/cryptmt # blitter.com/go/goutmp v1.0.1 blitter.com/go/goutmp # blitter.com/go/herradurakex v1.0.0 blitter.com/go/herradurakex +# blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 +blitter.com/go/kyber # blitter.com/go/mtwist v1.0.1 blitter.com/go/mtwist +# blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae +blitter.com/go/newhope # blitter.com/go/wanderer v0.8.1 blitter.com/go/wanderer -# git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 -git.schwanenlied.me/yawning/chacha20.git -# git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c -git.schwanenlied.me/yawning/kyber.git -# git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 -git.schwanenlied.me/yawning/newhope.git # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/jameskeane/bcrypt # github.com/klauspost/cpuid v1.2.2 @@ -34,7 +37,7 @@ github.com/templexxx/xor github.com/tjfoc/gmsm/sm4 # github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/kcp-go -# golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af +# golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/crypto/blowfish golang.org/x/crypto/pbkdf2 golang.org/x/crypto/twofish @@ -55,7 +58,7 @@ golang.org/x/net/ipv6 golang.org/x/net/bpf golang.org/x/net/internal/iana golang.org/x/net/internal/socket -# golang.org/x/sys v0.0.0-20190416152802-12500544f89f +# golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/cpu diff --git a/xsnet/net.go b/xsnet/net.go index cc5b238..60ab5db 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -42,8 +42,8 @@ import ( hkex "blitter.com/go/herradurakex" "blitter.com/go/xs/logger" - kyber "git.schwanenlied.me/yawning/kyber.git" - newhope "git.schwanenlied.me/yawning/newhope.git" + "blitter.com/go/kyber" + "blitter.com/go/newhope" ) /*---------------------------------------------------------------------*/ From 89b6e8bce78f2a060c56c1e61edc0e3b47e5ab34 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 12:40:18 -0800 Subject: [PATCH 059/134] Version tags now reflect mod/vendor build setup. Switched 'make lint' to use golangci-lint as gometalinter is deprecated. Signed-off-by: Russ Magee --- Makefile | 22 ++++++++++++++-------- xs/Makefile | 2 +- xsd/Makefile | 2 +- xspasswd/Makefile | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 034f101..efcd2c8 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,28 @@ .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall -#ifeq ($(MAKEOPTS),) - MAKEOPTS = $(MAKEOPTS) -#endif - -GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.12 +## Tag version of binaries with build info wrt. +## GO111MODULE(=on) and vendor/ setup vs. $GOPATH pkg builds +############################################################ +ifeq ($(shell go env GOMOD),) +MTAG= +else +MTAG="-m" +endif ifneq ($(VENDOR),) GOBUILDOPTS :=-v -mod vendor -VTAG = "-vendor" +VTAG = "-v" else GOBUILDOPTS= VTAG = endif +############################################################ + +GIT_COMMIT := $(shell git rev-list -1 HEAD) +VERSION := 0.8.12 #ifeq ($(BUILDOPTS),) -BUILDOPTS :=$(BUILDOPTS)"$(GOBUILDOPTS) -ldflags \"-X main.version=$(VERSION)$(VTAG) -X main.gitCommit=$(GIT_COMMIT)\"" +BUILDOPTS :=$(BUILDOPTS)"$(GOBUILDOPTS) -ldflags \"-X main.version=$(VERSION)$(MTAG)$(VTAG) -X main.gitCommit=$(GIT_COMMIT)\"" #endif SUBPKGS = logger spinsult xsnet diff --git a/xs/Makefile b/xs/Makefile index 9527cea..c3f582b 100644 --- a/xs/Makefile +++ b/xs/Makefile @@ -15,4 +15,4 @@ vis: ../fixup-gv.sh xs.go && cat xs-vis.gv | dot -Tpng -oxs-vis-fixedup.png lint: - -gometalinter --deadline=60s | sort + -golangci-lint run diff --git a/xsd/Makefile b/xsd/Makefile index f36bc82..deef212 100644 --- a/xsd/Makefile +++ b/xsd/Makefile @@ -14,5 +14,5 @@ vis: ../fixup-gv.sh xsd.go && cat xsd-vis.gv | dot -Tpng -oxsd-vis-fixedup.png lint: - -gometalinter --deadline=60s | sort + -golangci-lint run diff --git a/xspasswd/Makefile b/xspasswd/Makefile index 99e709b..1f8e2c6 100644 --- a/xspasswd/Makefile +++ b/xspasswd/Makefile @@ -13,4 +13,4 @@ vis: go-callvis -format png -file xspasswd-vis -ignore $(EXTPKGS) -group pkg,type . lint: - -gometalinter --deadline=60s | sort + -golangci-lint run From d3ebcab1d4458c5be835fa0c66970f9674327ed5 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 12:50:38 -0800 Subject: [PATCH 060/134] Added golangci-lint config Signed-off-by: Russ Magee --- .golangci.yml | 327 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 327 insertions(+) create mode 100644 .golangci.yml diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..2ea8fb8 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,327 @@ +# This file contains all available configuration options +# with their default values. + +# options for analysis running +run: + # default concurrency is a available CPU number + concurrency: 4 + + # timeout for analysis, e.g. 30s, 5m, default is 1m + timeout: 1m + + # exit code when at least one issue was found, default is 1 + issues-exit-code: 1 + + # include test files or not, default is true + tests: true + + # list of build tags, all linters use it. Default is empty list. + build-tags: + - mytag + + # which dirs to skip: issues from them won't be reported; + # can use regexp here: generated.*, regexp is applied on full path; + # default value is empty list, but default dirs are skipped independently + # from this option's value (see skip-dirs-use-default). + skip-dirs: + - src/external_libs + - autogenerated_by_my_lib + + # default is true. Enables skipping of directories: + # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ + skip-dirs-use-default: true + + # which files to skip: they will be analyzed, but issues from them + # won't be reported. Default value is empty list, but there is + # no need to include all autogenerated files, we confidently recognize + # autogenerated files. If it's not please let us know. + skip-files: + - ".*\\.my\\.go$" + - lib/bad.go + + # by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules": + # If invoked with -mod=readonly, the go command is disallowed from the implicit + # automatic updating of go.mod described above. Instead, it fails when any changes + # to go.mod are needed. This setting is most useful to check that go.mod does + # not need updates, such as in a continuous integration and testing system. + # If invoked with -mod=vendor, the go command assumes that the vendor + # directory holds the correct copies of dependencies and ignores + # the dependency descriptions in go.mod. + #! modules-download-mode: readonly|release|vendor + + +# output configuration options +output: + # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" + format: colored-line-number + + # print lines of code with issue, default is true + print-issued-lines: true + + # print linter name in the end of issue text, default is true + print-linter-name: true + + # make issues output unique by line, default is true + uniq-by-line: true + + +# all available settings of specific linters +linters-settings: + dogsled: + # checks assignments with too many blank identifiers; default is 2 + max-blank-identifiers: 2 + dupl: + # tokens count to trigger issue, 150 by default + threshold: 100 + errcheck: + # report about not checking of errors in type assetions: `a := b.(MyStruct)`; + # default is false: such cases aren't reported by default. + check-type-assertions: false + + # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; + # default is false: such cases aren't reported by default. + check-blank: false + + # [deprecated] comma-separated list of pairs of the form pkg:regex + # the regex is used to ignore names within pkg. (default "fmt:.*"). + # see https://github.com/kisielk/errcheck#the-deprecated-method for details + ignore: fmt:.*,io/ioutil:^Read.* + + # path to a file containing a list of functions to exclude from checking + # see https://github.com/kisielk/errcheck#excluding-functions for details + #!exclude: /path/to/file.txt + funlen: + lines: 60 + statements: 40 + gocognit: + # minimal code complexity to report, 30 by default (but we recommend 10-20) + min-complexity: 10 + goconst: + # minimal length of string constant, 3 by default + min-len: 3 + # minimal occurrences count to trigger, 3 by default + min-occurrences: 3 + gocritic: + # Which checks should be enabled; can't be combined with 'disabled-checks'; + # See https://go-critic.github.io/overview#checks-overview + # To check which checks are enabled run `GL_DEBUG=gocritic golangci-lint run` + # By default list of stable checks is used. + enabled-checks: + #!- rangeValCopy + + # Which checks should be disabled; can't be combined with 'enabled-checks'; default is empty + disabled-checks: + - regexpMust + + # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint run` to see all tags and checks. + # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags". + enabled-tags: + - performance + + settings: # settings passed to gocritic + captLocal: # must be valid enabled check name + paramsOnly: true + rangeValCopy: + sizeThreshold: 32 + gocyclo: + # minimal code complexity to report, 30 by default (but we recommend 10-20) + min-complexity: 10 + godox: + # report any comments starting with keywords, this is useful for TODO or FIXME comments that + # might be left in the code accidentally and should be resolved before merging + keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting + - NOTE + - OPTIMIZE # marks code that should be optimized before merging + - HACK # marks hack-arounds that should be removed before merging + gofmt: + # simplify code: gofmt with `-s` option, true by default + simplify: true + goimports: + # put imports beginning with prefix after 3rd-party packages; + # it's a comma-separated list of prefixes + local-prefixes: github.com/org/project + golint: + # minimal confidence for issues, default is 0.8 + min-confidence: 0.8 + gomnd: + settings: + mnd: + # the list of enabled checks, see https://github.com/tommy-muehle/go-mnd/#checks for description. + checks: argument,case,condition,operation,return,assign + govet: + # report about shadowed variables + check-shadowing: true + + # settings per analyzer + settings: + printf: # analyzer name, run `go tool vet help` to see all analyzers + funcs: # run `go tool vet help printf` to see available settings for `printf` analyzer + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf + - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf + + # enable or disable analyzers by name + enable: + - atomicalign + enable-all: false + disable: + - shadow + disable-all: false + depguard: + list-type: blacklist + include-go-root: false + packages: + - github.com/sirupsen/logrus + packages-with-error-message: + # specify an error message to output when a blacklisted package is used + - github.com/sirupsen/logrus: "logging is allowed only by logutils.Log" + lll: + # max line length, lines longer will be reported. Default is 120. + # '\t' is counted as 1 character by default, and can be changed with the tab-width option + line-length: 120 + # tab width in spaces. Default to 1. + tab-width: 1 + maligned: + # print struct with more effective memory layout or not, false by default + suggest-new: true + misspell: + # Correct spellings using locale preferences for US or UK. + # Default is to use a neutral variety of English. + # Setting locale to US will correct the British spelling of 'colour' to 'color'. + locale: US + ignore-words: + - someword + nakedret: + # make an issue if func has more lines of code than this setting and it has naked returns; default is 30 + max-func-lines: 30 + prealloc: + # XXX: we don't recommend using this linter before doing performance profiling. + # For most programs usage of prealloc will be a premature optimization. + + # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them. + # True by default. + simple: true + range-loops: true # Report preallocation suggestions on range loops, true by default + for-loops: false # Report preallocation suggestions on for loops, false by default + rowserrcheck: + packages: + - github.com/jmoiron/sqlx + unparam: + # Inspect exported functions, default is false. Set to true if no external program/library imports your code. + # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: + # if it's called for subdir of a project it can't find external interfaces. All text editor integrations + # with golangci-lint call it on a directory with the changed file. + check-exported: false + unused: + # treat code as a program (not a library) and report unused exported identifiers; default is false. + # XXX: if you enable this setting, unused will report a lot of false-positives in text editors: + # if it's called for subdir of a project it can't find funcs usages. All text editor integrations + # with golangci-lint call it on a directory with the changed file. + check-exported: false + whitespace: + multi-if: false # Enforces newlines (or comments) after every multi-line if statement + multi-func: false # Enforces newlines (or comments) after every multi-line function signature + wsl: + # If true append is only allowed to be cuddled if appending value is + # matching variables, fields or types on line above. Default is true. + strict-append: true + # Allow calls and assignments to be cuddled as long as the lines have any + # matching variables, fields or types. Default is true. + allow-assign-and-call: true + # Allow multiline assignments to be cuddled. Default is true. + allow-multiline-assign: true + # Allow declarations (var) to be cuddled. + allow-cuddle-declarations: false + # Allow trailing comments in ending of blocks + allow-trailing-comment: false + # Force newlines in end of case at this limit (0 = never). + force-case-trailing-whitespace: 0 + + # The custom section can be used to define linter plugins to be loaded at runtime. See README doc + # for more info. + custom: + # Each custom linter should have a unique name. + #! example: + #! # The path to the plugin *.so. Can be absolute or local. Required for each custom linter + #! path: /path/to/example.so + #! # The description of the linter. Optional, just for documentation purposes. + #! description: This is an example usage of a plugin linter. + #! # Intended to point to the repo location of the linter. Optional, just for documentation purposes. + #! original-url: github.com/golangci/example-linter + +linters: + enable: + - megacheck + - govet + disable: + - maligned + - prealloc + disable-all: false + presets: + - bugs + - unused + fast: false + + +issues: + # List of regexps of issue texts to exclude, empty list by default. + # But independently from this option we use default exclude patterns, + # it can be disabled by `exclude-use-default: false`. To list all + # excluded by default patterns execute `golangci-lint run --help` + exclude: + - abcdef + + # Excluding configuration per-path, per-linter, per-text and per-source + exclude-rules: + # Exclude some linters from running on tests files. + - path: _test\.go + linters: + - gocyclo + - errcheck + - dupl + - gosec + + # Exclude known linters from partially hard-vendored code, + # which is impossible to exclude via "nolint" comments. + - path: internal/hmac/ + text: "weak cryptographic primitive" + linters: + - gosec + + # Exclude some staticcheck messages + - linters: + - staticcheck + text: "SA9003:" + + # Exclude lll issues for long lines with go:generate + - linters: + - lll + source: "^//go:generate " + + # Independently from option `exclude` we use default exclude patterns, + # it can be disabled by this option. To list all + # excluded by default patterns execute `golangci-lint run --help`. + # Default value for this option is true. + exclude-use-default: false + + # Maximum issues count per one linter. Set to 0 to disable. Default is 50. + max-issues-per-linter: 0 + + # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. + max-same-issues: 0 + + # Show only new issues: if there are unstaged changes or untracked files, + # only those changes are analyzed, else only changes in HEAD~ are analyzed. + # It's a super-useful option for integration of golangci-lint into existing + # large codebase. It's not practical to fix all existing issues at the moment + # of integration: much better don't allow issues in new code. + # Default is false. + new: false + + # Show only new issues created after git revision `REV` + #!new-from-rev: REV + #new-from-rev: HEAD^ + + # Show only new issues created in git patch with set file path. + #!new-from-patch: path/to/patch/file From 0933aa4ea511688788f4ba77ac51d80f2c783d1b Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 12:55:15 -0800 Subject: [PATCH 061/134] Added lint stage to push script Signed-off-by: Russ Magee --- bacillus/ci_pushbuild.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bacillus/ci_pushbuild.sh b/bacillus/ci_pushbuild.sh index bdadbc1..e763c98 100755 --- a/bacillus/ci_pushbuild.sh +++ b/bacillus/ci_pushbuild.sh @@ -63,6 +63,9 @@ fi stage "Test(C->S)" echo "TODO ..." +stage "Lint" +make lint >lint.out + stage "Artifacts" echo -n "Creating tarfile ..." tar -cz --exclude=.git --exclude=cptest -f ${BACILLUS_ARTFDIR}/xs.tgz . From 0303b394c8ba9c0384cbb8836cb59127f247b33a Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 12:58:08 -0800 Subject: [PATCH 062/134] fixed /home/russtopia/bin:/opt/eclipse:/usr/lib/go/bin:/home/russtopia/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin in push build script Signed-off-by: Russ Magee --- bacillus/ci_pushbuild.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bacillus/ci_pushbuild.sh b/bacillus/ci_pushbuild.sh index e763c98..19e1c57 100755 --- a/bacillus/ci_pushbuild.sh +++ b/bacillus/ci_pushbuild.sh @@ -1,14 +1,14 @@ #!/bin/bash -export PATH=/usr/local/bin:/usr/bin:/usr/lib/ccache/bin:/bin -echo "workdir: ${BACILLUS_WORKDIR}" -mkdir -p "${BACILLUS_ARTFDIR}" - -export GO111MODULE=on export GOPATH="${HOME}/go" +export PATH=/usr/local/bin:/usr/bin:/usr/lib/ccache/bin:/bin:$GOPATH/bin +export GO111MODULE=on # GOCACHE will be phased out in v1.12. [github.com/golang/go/issues/26809] export GOCACHE="${HOME}/.cache/go-build" +echo "workdir: ${BACILLUS_WORKDIR}" +mkdir -p "${BACILLUS_ARTFDIR}" + echo "---" go env echo "---" From 399babd62a347722c474fa595e51faec906e7032 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 13:01:10 -0800 Subject: [PATCH 063/134] Removed stdout redir in push build script Signed-off-by: Russ Magee --- bacillus/ci_pushbuild.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bacillus/ci_pushbuild.sh b/bacillus/ci_pushbuild.sh index 19e1c57..46cc42a 100755 --- a/bacillus/ci_pushbuild.sh +++ b/bacillus/ci_pushbuild.sh @@ -64,7 +64,7 @@ stage "Test(C->S)" echo "TODO ..." stage "Lint" -make lint >lint.out +make lint stage "Artifacts" echo -n "Creating tarfile ..." From bebfd1cb1fe1730c70565fb8d90236acca660c67 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 17:14:56 -0800 Subject: [PATCH 064/134] Removed redundant assigns of stdin/out/err to conn prior to ptmx setup --- go.mod | 2 +- go.sum | 2 ++ xsd/xsd.go | 3 --- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 7fca59c..9860336 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( blitter.com/go/cryptmt v1.0.0 - blitter.com/go/goutmp v1.0.1 + blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 blitter.com/go/mtwist v1.0.1 // indirect diff --git a/go.sum b/go.sum index 5d792ba..23bb532 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= +blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= +blitter.com/go/goutmp v1.0.2/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 h1:D45AnrNphtvczBXRp5JQicZRTgaK/Is5bgPDDvRKhTc= diff --git a/xsd/xsd.go b/xsd/xsd.go index e83ae9d..e20096d 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -307,9 +307,6 @@ func runShellAs(who, hname, ttype, cmd string, interactive bool, conn *xsnet.Con } else { c.SysProcAttr.Credential = &syscall.Credential{Uid: uid, Gid: gid} } - c.Stdin = conn - c.Stdout = conn - c.Stderr = conn // Start the command with a pty. ptmx, err := pty.Start(c) // returns immediately with ptmx file From 977380e61ffbbc0f03a2d14dbd7bde646ec90568 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 17:22:36 -0800 Subject: [PATCH 065/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index efcd2c8..42238eb 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +VERSION := 0.8.13 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. @@ -19,7 +20,6 @@ endif ############################################################ GIT_COMMIT := $(shell git rev-list -1 HEAD) -VERSION := 0.8.12 #ifeq ($(BUILDOPTS),) BUILDOPTS :=$(BUILDOPTS)"$(GOBUILDOPTS) -ldflags \"-X main.version=$(VERSION)$(MTAG)$(VTAG) -X main.gitCommit=$(GIT_COMMIT)\"" From 15a1a39d814275c95b54761f583996cbcf85ceb8 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 17:38:22 -0800 Subject: [PATCH 066/134] Fixed xsd.initrc $ARGS passing --- xsd.initrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xsd.initrc b/xsd.initrc index f76a9af..955dbfd 100755 --- a/xsd.initrc +++ b/xsd.initrc @@ -6,7 +6,7 @@ XSD_USER=root XSD_HOME=/var/run INST_PREFIX=/usr/local COMMAND=$INST_PREFIX/sbin/xsd -ARGS="" +ARGS="-L" depend() { need net @@ -28,7 +28,7 @@ start() { -d ${XSD_HOME} \ --make-pidfile --pidfile ${XSD_PIDFILE} \ --start --quiet --background \ - --exec "${COMMAND}" "${ARGS}" + --exec "${COMMAND}" -- "${ARGS}" eend $? } From 862c0c3d7f5a6630f3f6ed1609c43c7048650b49 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 21:14:35 -0800 Subject: [PATCH 067/134] Hack to throttle data overrun (sender->rcvr) during large xc operations Signed-off-by: Russ Magee --- xsnet/net.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xsnet/net.go b/xsnet/net.go index 60ab5db..23a2c91 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -1319,7 +1319,11 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { hc.wm.Write(b[0:payloadLen]) hmacOut = hc.wm.Sum(nil)[0:HMAC_CHK_SZ] - log.Printf(" (%04x> HMAC(o):%s\r\n", payloadLen, hex.EncodeToString(hmacOut)) + //log.Printf(" (%08x> HMAC(o):%s\r\n", payloadLen, hex.EncodeToString(hmacOut)) + // HACK: Bug #22: (xc) Need flow control so sender can't overwhelm rcvr with data. + if payloadLen > 8192 { + time.Sleep(time.Duration(10 * time.Millisecond)) // Let rcvr set this on setup? + } var wb bytes.Buffer // The StreamWriter acts like a pipe, forwarding whatever is From 6c049dde083564af008d0e48417239953c044410 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 30 Jan 2020 23:32:36 -0800 Subject: [PATCH 068/134] More throughput-friendly hack (just delay at very end vs. each packet) Signed-off-by: Russ Magee --- xsd/xsd.go | 7 +++++++ xsnet/net.go | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/xsd/xsd.go b/xsd/xsd.go index e20096d..23d6f25 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -26,6 +26,7 @@ import ( "strings" "sync" "syscall" + "time" "unsafe" "blitter.com/go/goutmp" @@ -796,6 +797,8 @@ func main() { } else { logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck } + // TODO: Test this with huge files.. see Bug #22 - do we need to + // sync w/sender (client) that we've gotten all data? hc.SetStatus(xsnet.CSOType(cmdStatus)) // Send CSOExitStatus *before* client closes channel @@ -816,6 +819,10 @@ func main() { // Returned hopefully via an EOF or exit/logout; logger.LogNotice(fmt.Sprintf("[Command completed for %s@%s, status %d]\n", rec.Who(), hname, cmdStatus)) // nolint: gosec,errcheck } + // HACK: Bug #22: (xc) Need to wait for rcvr to get final data + // TODO: Await specific msg from client to inform they have gotten all data from the tarpipe + time.Sleep(time.Duration(900 * time.Millisecond)) // Let rcvr set this on setup? + // Clear current op so user can enter next, or EOF rec.SetOp([]byte{0}) hc.SetStatus(xsnet.CSOType(cmdStatus)) diff --git a/xsnet/net.go b/xsnet/net.go index 23a2c91..421b552 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -1320,10 +1320,6 @@ func (hc *Conn) WritePacket(b []byte, ctrlStatOp byte) (n int, err error) { hmacOut = hc.wm.Sum(nil)[0:HMAC_CHK_SZ] //log.Printf(" (%08x> HMAC(o):%s\r\n", payloadLen, hex.EncodeToString(hmacOut)) - // HACK: Bug #22: (xc) Need flow control so sender can't overwhelm rcvr with data. - if payloadLen > 8192 { - time.Sleep(time.Duration(10 * time.Millisecond)) // Let rcvr set this on setup? - } var wb bytes.Buffer // The StreamWriter acts like a pipe, forwarding whatever is From 3eee573231dacad5e87758f849d16ad4e17ab543 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 5 Feb 2020 21:26:03 -0800 Subject: [PATCH 069/134] Resync w/cryptmt, wanderer repos Signed-off-by: Russ Magee --- go.mod | 24 ++--- go.sum | 4 + vendor/blitter.com/go/cryptmt/cryptmt.go | 10 +- vendor/blitter.com/go/goutmp/README.md | 4 +- vendor/blitter.com/go/wanderer/wanderer.go | 113 +++++++++++---------- vendor/modules.txt | 18 ++-- xsnet/chan.go | 4 +- 7 files changed, 92 insertions(+), 85 deletions(-) diff --git a/go.mod b/go.mod index 9860336..dab7a12 100644 --- a/go.mod +++ b/go.mod @@ -3,28 +3,28 @@ module blitter.com/go/xs go 1.12 require ( - blitter.com/go/cryptmt v1.0.0 + blitter.com/go/cryptmt v1.0.1 blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 - blitter.com/go/mtwist v1.0.1 // indirect + blitter.com/go/mtwist v1.0.1 blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae - blitter.com/go/wanderer v0.8.1 + blitter.com/go/wanderer v0.8.2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f - github.com/klauspost/cpuid v1.2.2 // indirect - github.com/klauspost/reedsolomon v1.9.3 // indirect + github.com/klauspost/cpuid v1.2.2 + github.com/klauspost/reedsolomon v1.9.3 github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 - github.com/pkg/errors v0.8.1 // indirect - github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect - github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect - github.com/tjfoc/gmsm v1.0.1 // indirect + github.com/pkg/errors v0.8.1 + github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 + github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b + github.com/tjfoc/gmsm v1.0.1 github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d - golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect + golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 - gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect - gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect + gopkg.in/hlandau/easymetric.v1 v1.0.0 + gopkg.in/hlandau/measurable.v1 v1.0.1 gopkg.in/hlandau/passlib.v1 v1.0.10 ) diff --git a/go.sum b/go.sum index 23bb532..ce9ef5f 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c h1:LcnFFg6MCIJHf26P7e blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= +blitter.com/go/cryptmt v1.0.1 h1:NAi4FrZqo52bhPJopYw1jbausj1NnHEWELaINC60Nk0= +blitter.com/go/cryptmt v1.0.1/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= @@ -16,6 +18,8 @@ blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae h1:YBBaCcdYRrI1btsmcMT blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae/go.mod h1:ywoxfDBqInPsqtnxYsmS4SYMJ5D/kNcrFgpvI+Xcun0= blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= +blitter.com/go/wanderer v0.8.2 h1:fzwRn60RDDxy4GEYxSyfA4gXkkZb33WQRk/Fv5ugPAI= +blitter.com/go/wanderer v0.8.2/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= diff --git a/vendor/blitter.com/go/cryptmt/cryptmt.go b/vendor/blitter.com/go/cryptmt/cryptmt.go index 6b3960f..6888667 100644 --- a/vendor/blitter.com/go/cryptmt/cryptmt.go +++ b/vendor/blitter.com/go/cryptmt/cryptmt.go @@ -20,21 +20,21 @@ type Cipher struct { m *mtwist.MT19937_64 } -func (c *Cipher) yield8() (r byte) { +func (c *Cipher) yield() (r byte) { c.accum = c.accum * (c.m.Int63() | 1) r = byte(c.accum>>56) & 0xFF return } -// NewCipher creates and returns a Cipher. The key argument should be the +// New creates and returns a Cipher. The key argument should be the // CryptMT key, 64 bytes. -func NewCipher(key []byte) (c *Cipher) { +func New(key []byte) (c *Cipher) { c = &Cipher{m: mtwist.New()} c.m.SeedFullState(key) c.accum = 1 // from paper, discard first 64 bytes of output for idx := 0; idx < 64; idx++ { - _ = c.yield8() + _ = c.yield() } return c } @@ -55,6 +55,6 @@ func (c *Cipher) XORKeyStream(dst, src []byte) { } for i, b := range src { - dst[i] = b ^ c.yield8() + dst[i] = b ^ c.yield() } } diff --git a/vendor/blitter.com/go/goutmp/README.md b/vendor/blitter.com/go/goutmp/README.md index ec6fe95..cb956fc 100644 --- a/vendor/blitter.com/go/goutmp/README.md +++ b/vendor/blitter.com/go/goutmp/README.md @@ -10,8 +10,8 @@ Golang bindings for basic login/utmp accounting type UtmpEntry struct{ ... } -func Put_lastlog_entry(app string, usr string, host string) +func Put_lastlog_entry(app, usr, ptsname, host string) func Unput_utmp(entry UtmpEntry) -func Put_utmp(user string, host string) UtmpEntry +func Put_utmp(user, ptsname, host string) UtmpEntry ``` diff --git a/vendor/blitter.com/go/wanderer/wanderer.go b/vendor/blitter.com/go/wanderer/wanderer.go index fe24277..efc0ca9 100644 --- a/vendor/blitter.com/go/wanderer/wanderer.go +++ b/vendor/blitter.com/go/wanderer/wanderer.go @@ -1,4 +1,4 @@ -// WANDERER - a crypto doodle that appears to give adequate +// Package wanderer - a crypto doodle that appears to give adequate // protection to data in a stream cipher context // // Properties visualized using https://github.com/circulosmeos/circle @@ -23,6 +23,20 @@ const ( sboxCount = keylen / 8 ) +type Cipher struct { + prng *mtwist.MT19937_64 + r io.Reader + w io.Writer + k []byte + kidx uint + sboxen [][]byte + sw int + sh int + sctr int // TODO: used to count down to re-keying & sbox regen + mode int + n byte +} + // Given input byte x (treated as 2-bit dirs), // 'walk' box applying XOR of each position (E/S/W/N) given box // dimensions w,h @@ -74,53 +88,7 @@ func (c *Cipher) genSBoxen(n uint) { //fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) } -// Mutate the session key (intended to be called as encryption -// proceeds), so that the 'walk path' through sboxes also does so. -func (c *Cipher) keyUpdate(perturb byte) { - c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] - c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) - c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) -} - -// slow - perturb a single octet of a single sbox for each octet -// (CV = ~8.725% over 700 MiB of 0-byte pt) -func (c *Cipher) sboxUpdateA(perturb byte) { - c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= - perturb -} - -// slower - perturb a single sbox for each octet -// (CV = ~?% over 700 MiB of 0-byte pt) -func (c *Cipher) sboxUpdateB(perturb byte) { - lim := c.sw * c.sh - for idx := 0; idx < lim; idx++ { - c.sboxen[perturb%sboxCount][idx] ^= perturb - } -} - -// slowest -- full sbox re-gen after each octet -// (but lowest CV, ~0.05% over 700MiB of 0-byte pt) -func (c *Cipher) sboxUpdateC(perturb byte) { - c.genSBoxen(sboxCount) - //c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= - // perturb -} - -type Cipher struct { - prng *mtwist.MT19937_64 - r io.Reader - w io.Writer - k []byte - kidx uint - sboxen [][]byte - sw int - sh int - sctr int // TODO: used to count down to re-keying & sbox regen - mode int - n byte -} - -func NewCodec(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { +func New(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { c = &Cipher{} c.prng = mtwist.New() if len(key) == 0 { @@ -163,20 +131,55 @@ func (c *Cipher) Write(p []byte) (n int, err error) { return n, err } -func (c *Cipher) yield(pt byte) (ct byte) { - ct = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, pt) +// Mutate the session key (intended to be called as encryption +// proceeds), so that the 'walk path' through sboxes also does so. +func (c *Cipher) keyUpdate(perturb byte) { + c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] + c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) + c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) + //for idx := 0; idx < len(c.k); idx++ { + // c.k[idx] = c.k[idx] ^ byte(c.prng.Int63() % 256) + //} +} + +// slow - perturb a single octet of a single sbox for each octet +// (CV = ~8.725% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateA(perturb byte) { + c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + perturb +} + +// slower - perturb a single sbox for each octet +// (CV = ~5.6369% over 700 MiB of 0-byte pt) +func (c *Cipher) sboxUpdateB(perturb byte) { + lim := c.sw * c.sh + for idx := 0; idx < lim; idx++ { + c.sboxen[perturb%sboxCount][idx] ^= perturb + } +} + +// slowest -- full sbox re-gen after each octet +// (but lowest CV, ~0.0554% over 700MiB of 0-byte pt) +func (c *Cipher) sboxUpdateC(perturb byte) { + c.genSBoxen(sboxCount) + //c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= + // perturb +} + +func (c *Cipher) yield(ib byte) (ob byte) { + ob = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, ib) c.n = (c.n + 1) % byte(len(c.sboxen)) - c.keyUpdate(ct ^ pt) // must be equal in either encrypt/decrypt dirs + c.keyUpdate(ob ^ ib) // must be equal in either encrypt/decrypt dirs switch c.mode { case 0: // [nothing - varA] break case 1: - c.sboxUpdateA(ct ^ pt) // varA + c.sboxUpdateA(ob ^ ib) // varA case 2: - c.sboxUpdateB(ct ^ pt) // varB + c.sboxUpdateB(ob ^ ib) // varB case 3: - c.sboxUpdateC(ct ^ pt) // varC + c.sboxUpdateC(ob ^ ib) // varC default: // [nothing] } @@ -185,7 +188,7 @@ func (c *Cipher) yield(pt byte) (ct byte) { // c.genSBoxen(sboxCount) // c.sctr = c.sw // } - return ct + return ob } // XORKeyStream XORs each byte in the given slice with a byte from the diff --git a/vendor/modules.txt b/vendor/modules.txt index 35598c6..ce9a3c6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -3,9 +3,9 @@ blitter.com/go/chacha20 blitter.com/go/chacha20/internal/api blitter.com/go/chacha20/internal/hardware blitter.com/go/chacha20/internal/ref -# blitter.com/go/cryptmt v1.0.0 +# blitter.com/go/cryptmt v1.0.1 blitter.com/go/cryptmt -# blitter.com/go/goutmp v1.0.1 +# blitter.com/go/goutmp v1.0.2 blitter.com/go/goutmp # blitter.com/go/herradurakex v1.0.0 blitter.com/go/herradurakex @@ -15,7 +15,7 @@ blitter.com/go/kyber blitter.com/go/mtwist # blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae blitter.com/go/newhope -# blitter.com/go/wanderer v0.8.1 +# blitter.com/go/wanderer v0.8.2 blitter.com/go/wanderer # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/jameskeane/bcrypt @@ -39,19 +39,19 @@ github.com/tjfoc/gmsm/sm4 github.com/xtaci/kcp-go # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/crypto/blowfish -golang.org/x/crypto/pbkdf2 -golang.org/x/crypto/twofish -golang.org/x/crypto/sha3 golang.org/x/crypto/cast5 +golang.org/x/crypto/pbkdf2 golang.org/x/crypto/salsa20 golang.org/x/crypto/tea +golang.org/x/crypto/twofish golang.org/x/crypto/xtea -golang.org/x/crypto/argon2 -golang.org/x/crypto/bcrypt +golang.org/x/crypto/blake2b golang.org/x/crypto/internal/subtle golang.org/x/crypto/salsa20/salsa -golang.org/x/crypto/blake2b +golang.org/x/crypto/argon2 +golang.org/x/crypto/bcrypt golang.org/x/crypto/scrypt +golang.org/x/crypto/sha3 # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/net/ipv4 golang.org/x/net/ipv6 diff --git a/xsnet/chan.go b/xsnet/chan.go index cfc3722..a9758a9 100644 --- a/xsnet/chan.go +++ b/xsnet/chan.go @@ -103,10 +103,10 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err rc = cipher.NewOFB(block, iv) log.Printf("[cipher BLOWFISH_64 (%d)]\n", copts) case CAlgCryptMT1: - rc = cryptmt.NewCipher(keymat) + rc = cryptmt.New(keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) case CAlgWanderer: - rc = wanderer.NewCodec(nil, nil, 1, keymat, 3, 3) + rc = wanderer.New(nil, nil, 1, keymat, 3, 3) log.Printf("[cipher WANDERER mode 1 (%d)]\n", copts) default: log.Printf("[invalid cipher (%d)]\n", copts) From 1b964a4066f3198fbb12be95040bc9b456f43028 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 6 Feb 2020 18:56:36 -0800 Subject: [PATCH 070/134] Updated intf to cryptmt Signed-off-by: Russ Magee --- go.mod | 20 ++++++++++---------- vendor/modules.txt | 12 ++++++------ xsnet/chan.go | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index dab7a12..2bce810 100644 --- a/go.mod +++ b/go.mod @@ -7,24 +7,24 @@ require ( blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 - blitter.com/go/mtwist v1.0.1 + blitter.com/go/mtwist v1.0.1 // indirect blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae blitter.com/go/wanderer v0.8.2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f - github.com/klauspost/cpuid v1.2.2 - github.com/klauspost/reedsolomon v1.9.3 + github.com/klauspost/cpuid v1.2.2 // indirect + github.com/klauspost/reedsolomon v1.9.3 // indirect github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 - github.com/pkg/errors v0.8.1 - github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 - github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b - github.com/tjfoc/gmsm v1.0.1 + github.com/pkg/errors v0.8.1 // indirect + github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect + github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect + github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d - golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 + golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 - gopkg.in/hlandau/easymetric.v1 v1.0.0 - gopkg.in/hlandau/measurable.v1 v1.0.1 + gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect + gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect gopkg.in/hlandau/passlib.v1 v1.0.10 ) diff --git a/vendor/modules.txt b/vendor/modules.txt index ce9a3c6..48f0fc9 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -39,19 +39,19 @@ github.com/tjfoc/gmsm/sm4 github.com/xtaci/kcp-go # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/crypto/blowfish -golang.org/x/crypto/cast5 golang.org/x/crypto/pbkdf2 +golang.org/x/crypto/twofish +golang.org/x/crypto/sha3 +golang.org/x/crypto/cast5 golang.org/x/crypto/salsa20 golang.org/x/crypto/tea -golang.org/x/crypto/twofish golang.org/x/crypto/xtea -golang.org/x/crypto/blake2b -golang.org/x/crypto/internal/subtle -golang.org/x/crypto/salsa20/salsa golang.org/x/crypto/argon2 golang.org/x/crypto/bcrypt +golang.org/x/crypto/internal/subtle +golang.org/x/crypto/salsa20/salsa +golang.org/x/crypto/blake2b golang.org/x/crypto/scrypt -golang.org/x/crypto/sha3 # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/net/ipv4 golang.org/x/net/ipv6 diff --git a/xsnet/chan.go b/xsnet/chan.go index a9758a9..9721c55 100644 --- a/xsnet/chan.go +++ b/xsnet/chan.go @@ -103,7 +103,7 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err rc = cipher.NewOFB(block, iv) log.Printf("[cipher BLOWFISH_64 (%d)]\n", copts) case CAlgCryptMT1: - rc = cryptmt.New(keymat) + rc = cryptmt.New(nil, nil, keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) case CAlgWanderer: rc = wanderer.New(nil, nil, 1, keymat, 3, 3) From 58652ce935a78acf954419c932abc56ed2fd4e96 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 6 Feb 2020 19:02:34 -0800 Subject: [PATCH 071/134] Updated go.mod deps Signed-off-by: Russ Magee --- go.mod | 2 +- go.sum | 2 ++ vendor/blitter.com/go/cryptmt/cryptmt.go | 26 ++++++++++++++++++++---- vendor/modules.txt | 2 +- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 2bce810..6309a93 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module blitter.com/go/xs go 1.12 require ( - blitter.com/go/cryptmt v1.0.1 + blitter.com/go/cryptmt v1.0.2 blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 diff --git a/go.sum b/go.sum index ce9ef5f..32142b8 100644 --- a/go.sum +++ b/go.sum @@ -4,6 +4,8 @@ blitter.com/go/cryptmt v1.0.0 h1:n+cNP/ReZrNe/w5FbD8DSfv0Wpj48nxhmMoLEk4hPXs= blitter.com/go/cryptmt v1.0.0/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= blitter.com/go/cryptmt v1.0.1 h1:NAi4FrZqo52bhPJopYw1jbausj1NnHEWELaINC60Nk0= blitter.com/go/cryptmt v1.0.1/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= +blitter.com/go/cryptmt v1.0.2 h1:ZcLhQk7onUssXyQwG3GdXDXctCVnNL+b7aFuvwOdKXc= +blitter.com/go/cryptmt v1.0.2/go.mod h1:tdME2J3O4agaDAYIYNQzzuB28yVGnPSMmV3a/ucSU84= blitter.com/go/goutmp v1.0.1 h1:jBqtp6pDwSbF4QEC3DjNfyaS8Nv5dFCOyaTfSbbb7TU= blitter.com/go/goutmp v1.0.1/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= diff --git a/vendor/blitter.com/go/cryptmt/cryptmt.go b/vendor/blitter.com/go/cryptmt/cryptmt.go index 6888667..3a627ed 100644 --- a/vendor/blitter.com/go/cryptmt/cryptmt.go +++ b/vendor/blitter.com/go/cryptmt/cryptmt.go @@ -1,6 +1,6 @@ // Package CryptMT - implementation of cryptMTv1 stream cipher -// (but with mtwist64 as base accum) -// https://eprint.iacr.org/2005/165.pdf +// (but with mtwist64 as base accum) +// https://eprint.iacr.org/2005/165.pdf package cryptmt // TODO rlm: according to go docs, stream ciphers do not implement the @@ -11,11 +11,14 @@ package cryptmt import ( "errors" + "io" mtwist "blitter.com/go/mtwist" ) type Cipher struct { + r io.Reader + w io.Writer accum uint64 m *mtwist.MT19937_64 } @@ -28,8 +31,8 @@ func (c *Cipher) yield() (r byte) { // New creates and returns a Cipher. The key argument should be the // CryptMT key, 64 bytes. -func New(key []byte) (c *Cipher) { - c = &Cipher{m: mtwist.New()} +func New(r io.Reader, w io.Writer, key []byte) (c *Cipher) { + c = &Cipher{m: mtwist.New(), r: r, w: w} c.m.SeedFullState(key) c.accum = 1 // from paper, discard first 64 bytes of output @@ -39,6 +42,21 @@ func New(key []byte) (c *Cipher) { return c } +func (c *Cipher) Read(p []byte) (n int, err error) { + n, err = c.r.Read(p) + if err == nil { + for idx := 0; idx < n; idx++ { + p[idx] = p[idx] ^ c.yield() + } + } + return n, err +} + +func (c *Cipher) Write(p []byte) (n int, err error) { + n, err = c.w.Write(p) + return n, err +} + // XORKeyStream XORs each byte in the given slice with a byte from the // cipher's key stream. Dst and src must overlap entirely or not at all. // diff --git a/vendor/modules.txt b/vendor/modules.txt index 48f0fc9..69badde 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -3,7 +3,7 @@ blitter.com/go/chacha20 blitter.com/go/chacha20/internal/api blitter.com/go/chacha20/internal/hardware blitter.com/go/chacha20/internal/ref -# blitter.com/go/cryptmt v1.0.1 +# blitter.com/go/cryptmt v1.0.2 blitter.com/go/cryptmt # blitter.com/go/goutmp v1.0.2 blitter.com/go/goutmp From 0eb785a9dc8ccd863055596aa72a00b48de33c42 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 6 Feb 2020 19:12:45 -0800 Subject: [PATCH 072/134] Removed WANDERER exp c_alg Signed-off-by: Russ Magee --- go.mod | 21 +- vendor/blitter.com/go/wanderer/wanderer.go | 213 --------------------- vendor/modules.txt | 14 +- xsnet/chan.go | 4 - xsnet/consts.go | 1 - xsnet/net.go | 6 - 6 files changed, 16 insertions(+), 243 deletions(-) delete mode 100644 vendor/blitter.com/go/wanderer/wanderer.go diff --git a/go.mod b/go.mod index 6309a93..8762b02 100644 --- a/go.mod +++ b/go.mod @@ -7,24 +7,23 @@ require ( blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 - blitter.com/go/mtwist v1.0.1 // indirect + blitter.com/go/mtwist v1.0.1 blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae - blitter.com/go/wanderer v0.8.2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f - github.com/klauspost/cpuid v1.2.2 // indirect - github.com/klauspost/reedsolomon v1.9.3 // indirect + github.com/klauspost/cpuid v1.2.2 + github.com/klauspost/reedsolomon v1.9.3 github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 - github.com/pkg/errors v0.8.1 // indirect - github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect - github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect - github.com/tjfoc/gmsm v1.0.1 // indirect + github.com/pkg/errors v0.8.1 + github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 + github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b + github.com/tjfoc/gmsm v1.0.1 github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d - golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect + golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 - gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect - gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect + gopkg.in/hlandau/easymetric.v1 v1.0.0 + gopkg.in/hlandau/measurable.v1 v1.0.1 gopkg.in/hlandau/passlib.v1 v1.0.10 ) diff --git a/vendor/blitter.com/go/wanderer/wanderer.go b/vendor/blitter.com/go/wanderer/wanderer.go deleted file mode 100644 index efc0ca9..0000000 --- a/vendor/blitter.com/go/wanderer/wanderer.go +++ /dev/null @@ -1,213 +0,0 @@ -// Package wanderer - a crypto doodle that appears to give adequate -// protection to data in a stream cipher context -// -// Properties visualized using https://github.com/circulosmeos/circle -package wanderer - -// TODOs: -// -define s-box rotation/shuffle schema -// -devise p-box schema (? Meh. Need to blockify & re-streamify to do this) -// ... - -import ( - "errors" - "fmt" - "io" - "time" - - mtwist "blitter.com/go/mtwist" -) - -const ( - keylen = 512 - sboxCount = keylen / 8 -) - -type Cipher struct { - prng *mtwist.MT19937_64 - r io.Reader - w io.Writer - k []byte - kidx uint - sboxen [][]byte - sw int - sh int - sctr int // TODO: used to count down to re-keying & sbox regen - mode int - n byte -} - -// Given input byte x (treated as 2-bit dirs), -// 'walk' box applying XOR of each position (E/S/W/N) given box -// dimensions w,h -// NOTE to ensure reachability of all values within a box, w,h -// should not each exceed 3 and should probably stay at 2, to -// give more even coverage given random input. -func walkingXOR(key, s []byte, w, h int, x byte) (r byte) { - i := 0 - r = x - for sidx := range key { - ktemp := key[sidx] - r = r ^ (s[i]) - for shift := uint(0); shift < 8; shift += 2 { - // fmt.Println("i:", i, "r:", r) - dir := (ktemp >> shift) & 0x03 - switch dir { - case 0: - i = i + 1 - i = i % len(s) - case 1: - i = i + w - i = i % len(s) - case 2: - if i%w != 0 { - i = i - 1 - } else { - i = i + w - 1 - } - case 3: - if i >= w { - i = i - w - } else { - i = len(s) + i - w - } - } - r = r ^ (s[i]) - } - } - return -} - -func (c *Cipher) genSBoxen(n uint) { - c.sboxen = make([][]byte, n) - var idx uint - for ; idx < n; idx++ { - c.sboxen[idx] = make([]byte, c.sw*c.sh) - _, _ = c.prng.Read(c.sboxen[idx]) - } - //fmt.Fprintf(os.Stderr, "sboxen[0]:%v\n", c.sboxen[0]) -} - -func New(r io.Reader, w io.Writer, mode int, key []byte, width, height int) (c *Cipher) { - c = &Cipher{} - c.prng = mtwist.New() - if len(key) == 0 { - c.k = []byte(fmt.Sprintf("%s", time.Now())) - } else { - c.k = key - } - c.prng.SeedFullState(c.k) - - // Discard first 64 bytes of MT output - for idx := 0; idx < 64; idx++ { - _ = c.prng.Int63() - } - c.mode = mode - c.r = r - c.w = w - c.sw = width - c.sh = height - c.sctr = c.sw // sbox ctr: countdown to regen sboxes - c.n = 0 - c.genSBoxen(sboxCount) - - // fmt.Printf("%+v\n", sboxen) - // c.buf = make([]byte, 4) - return c -} - -func (c *Cipher) Read(p []byte) (n int, err error) { - n, err = c.r.Read(p) - if err == nil { - for idx := 0; idx < n; idx++ { - p[idx] = c.yield(p[idx]) - } - } - return n, err -} - -func (c *Cipher) Write(p []byte) (n int, err error) { - n, err = c.w.Write(p) - return n, err -} - -// Mutate the session key (intended to be called as encryption -// proceeds), so that the 'walk path' through sboxes also does so. -func (c *Cipher) keyUpdate(perturb byte) { - c.k[c.kidx] = c.k[c.kidx] ^ c.k[(c.kidx+1)%uint(len(c.k))] - c.k[c.kidx] = c.k[c.kidx] ^ byte((c.prng.Int63()>>4)%256) - c.kidx = (c.kidx + uint(perturb)) % uint(len(c.k)) - //for idx := 0; idx < len(c.k); idx++ { - // c.k[idx] = c.k[idx] ^ byte(c.prng.Int63() % 256) - //} -} - -// slow - perturb a single octet of a single sbox for each octet -// (CV = ~8.725% over 700 MiB of 0-byte pt) -func (c *Cipher) sboxUpdateA(perturb byte) { - c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= - perturb -} - -// slower - perturb a single sbox for each octet -// (CV = ~5.6369% over 700 MiB of 0-byte pt) -func (c *Cipher) sboxUpdateB(perturb byte) { - lim := c.sw * c.sh - for idx := 0; idx < lim; idx++ { - c.sboxen[perturb%sboxCount][idx] ^= perturb - } -} - -// slowest -- full sbox re-gen after each octet -// (but lowest CV, ~0.0554% over 700MiB of 0-byte pt) -func (c *Cipher) sboxUpdateC(perturb byte) { - c.genSBoxen(sboxCount) - //c.sboxen[perturb%sboxCount][int(perturb)%(c.sw+c.sh)] ^= - // perturb -} - -func (c *Cipher) yield(ib byte) (ob byte) { - ob = walkingXOR(c.k, c.sboxen[c.n], c.sw, c.sh, ib) - c.n = (c.n + 1) % byte(len(c.sboxen)) - c.keyUpdate(ob ^ ib) // must be equal in either encrypt/decrypt dirs - switch c.mode { - case 0: - // [nothing - varA] - break - case 1: - c.sboxUpdateA(ob ^ ib) // varA - case 2: - c.sboxUpdateB(ob ^ ib) // varB - case 3: - c.sboxUpdateC(ob ^ ib) // varC - default: - // [nothing] - } - // c.sctr = c.sctr - 1 - // if c.sctr == 0 { - // c.genSBoxen(sboxCount) - // c.sctr = c.sw - // } - return ob -} - -// XORKeyStream XORs each byte in the given slice with a byte from the -// cipher's key stream. Dst and src must overlap entirely or not at all. -// -// If len(dst) < len(src), XORKeyStream should panic. It is acceptable -// to pass a dst bigger than src, and in that case, XORKeyStream will -// only update dst[:len(src)] and will not touch the rest of dst. -// -// Multiple calls to XORKeyStream behave as if the concatenation of -// the src buffers was passed in a single run. That is, Stream -// maintains state and does not reset at each XORKeyStream call. -func (c *Cipher) XORKeyStream(dst, src []byte) { - //fmt.Printf("len dst:%d len src:%d\n", len(dst), len(src)) - if len(dst) < len(src) { - panic(errors.New("len(dst) < len(src)")) - } - - for idx, v := range src { - dst[idx] = c.yield(v) - } -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 69badde..89bf2f2 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -15,8 +15,6 @@ blitter.com/go/kyber blitter.com/go/mtwist # blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae blitter.com/go/newhope -# blitter.com/go/wanderer v0.8.2 -blitter.com/go/wanderer # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/jameskeane/bcrypt # github.com/klauspost/cpuid v1.2.2 @@ -39,19 +37,19 @@ github.com/tjfoc/gmsm/sm4 github.com/xtaci/kcp-go # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/crypto/blowfish -golang.org/x/crypto/pbkdf2 -golang.org/x/crypto/twofish -golang.org/x/crypto/sha3 golang.org/x/crypto/cast5 +golang.org/x/crypto/pbkdf2 golang.org/x/crypto/salsa20 golang.org/x/crypto/tea +golang.org/x/crypto/twofish golang.org/x/crypto/xtea -golang.org/x/crypto/argon2 -golang.org/x/crypto/bcrypt +golang.org/x/crypto/blake2b golang.org/x/crypto/internal/subtle golang.org/x/crypto/salsa20/salsa -golang.org/x/crypto/blake2b +golang.org/x/crypto/argon2 +golang.org/x/crypto/bcrypt golang.org/x/crypto/scrypt +golang.org/x/crypto/sha3 # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/net/ipv4 golang.org/x/net/ipv6 diff --git a/xsnet/chan.go b/xsnet/chan.go index 9721c55..6df470a 100644 --- a/xsnet/chan.go +++ b/xsnet/chan.go @@ -21,7 +21,6 @@ import ( "log" "blitter.com/go/cryptmt" - "blitter.com/go/wanderer" "golang.org/x/crypto/blowfish" "golang.org/x/crypto/twofish" @@ -105,9 +104,6 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err case CAlgCryptMT1: rc = cryptmt.New(nil, nil, keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) - case CAlgWanderer: - rc = wanderer.New(nil, nil, 1, keymat, 3, 3) - log.Printf("[cipher WANDERER mode 1 (%d)]\n", copts) default: log.Printf("[invalid cipher (%d)]\n", copts) fmt.Printf("DOOFUS SET A VALID CIPHER ALG (%d)\n", copts) diff --git a/xsnet/consts.go b/xsnet/consts.go index a32d501..6492c67 100644 --- a/xsnet/consts.go +++ b/xsnet/consts.go @@ -99,7 +99,6 @@ const ( CAlgTwofish128 // golang.org/x/crypto/twofish CAlgBlowfish64 // golang.org/x/crypto/blowfish CAlgCryptMT1 //cryptmt using mtwist64 - CAlgWanderer // inhouse experimental crypto alg CAlgNoneDisallowed ) diff --git a/xsnet/net.go b/xsnet/net.go index 60ab5db..b2d5900 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -145,8 +145,6 @@ func (c *CSCipherAlg) String() string { return "C_BLOWFISH_64" case CAlgCryptMT1: return "C_CRYPTMT1" - case CAlgWanderer: - return "C_WANDERER" default: return "C_ERR_UNK" } @@ -324,10 +322,6 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { log.Println("[extension arg = C_CRYPTMT1]") hc.cipheropts &= (0xFFFFFF00) hc.cipheropts |= CAlgCryptMT1 - case "C_WANDERER": - log.Println("[extension arg = C_WANDERER]") - hc.cipheropts &= (0xFFFFFF00) - hc.cipheropts |= CAlgWanderer case "H_SHA256": log.Println("[extension arg = H_SHA256]") hc.cipheropts &= (0xFFFF00FF) From 9ffeab24562dd132a39070259729a062139c4c87 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 6 Feb 2020 19:15:52 -0800 Subject: [PATCH 073/134] Tagged version v0.8.16 Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 42238eb..71a6c07 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.13 +VERSION := 0.8.16 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. From c2c43c1c505b58235f8d3fec110d90d8ccbcd280 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 17 Feb 2020 00:02:28 -0800 Subject: [PATCH 074/134] Fix for issue #23: null panic if logger obj is null due no active syslog sink Signed-off-by: Russ Magee --- logger/logger_linux.go | 32 ++++++++++++++++++++++++++++++++ xsnet/net.go | 2 +- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/logger/logger_linux.go b/logger/logger_linux.go index 7c635fa..5e6f304 100644 --- a/logger/logger_linux.go +++ b/logger/logger_linux.go @@ -11,6 +11,7 @@ import ( // Priority is the logger priority type Priority = sl.Priority + // Writer is a syslog Writer type Writer = sl.Writer @@ -75,50 +76,81 @@ func New(flags Priority, tag string) (w *Writer, e error) { // Alert returns a log Alert error func Alert(s string) error { + if l != nil { return l.Alert(s) + } + return nil + } // LogClose closes the log Writer. func LogClose() error { + if l != nil { return l.Close() + } + return nil } // LogCrit returns a log Alert error func LogCrit(s string) error { + if l != nil { return l.Crit(s) + } + return nil } // LogDebug returns a log Debug error func LogDebug(s string) error { + if l != nil { return l.Debug(s) + } + return nil } // LogEmerg returns a log Emerg error func LogEmerg(s string) error { + if l != nil { return l.Emerg(s) + } + return nil } // LogErr returns a log Err error func LogErr(s string) error { + if l != nil { return l.Err(s) + } + return nil } // LogInfo returns a log Info error func LogInfo(s string) error { + if l != nil { return l.Info(s) + } + return nil } // LogNotice returns a log Notice error func LogNotice(s string) error { + if l != nil { return l.Notice(s) + } + return nil } // LogWarning returns a log Warning error func LogWarning(s string) error { + if l != nil { return l.Warning(s) + } + return nil } // LogWrite writes to the logger at default level func LogWrite(b []byte) (int, error) { + if l != nil { return l.Write(b) + } + return len(b),nil } diff --git a/xsnet/net.go b/xsnet/net.go index b2d5900..56ef46d 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -41,9 +41,9 @@ import ( "time" hkex "blitter.com/go/herradurakex" - "blitter.com/go/xs/logger" "blitter.com/go/kyber" "blitter.com/go/newhope" + "blitter.com/go/xs/logger" ) /*---------------------------------------------------------------------*/ From d4a3521437462439f1fc694ff65e687e0c08c26e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 17 Feb 2020 00:06:38 -0800 Subject: [PATCH 075/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 71a6c07..9bbf816 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.16 +VERSION := 0.8.17 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. From e320725e0753274d24bb24bd9d6d7b0565e622ee Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 17 Feb 2020 21:16:10 -0800 Subject: [PATCH 076/134] Added unit tests for auth.go Signed-off-by: Russ Magee --- auth.go | 4 ++-- bacillus/ci_pushbuild.sh | 3 +++ go.mod | 20 ++++++++++---------- vendor/modules.txt | 12 ++++++------ xsd/xsd.go | 2 +- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/auth.go b/auth.go index 6e0adcb..c4f329e 100644 --- a/auth.go +++ b/auth.go @@ -29,9 +29,9 @@ import ( // --------- System passwd/shadow auth routine(s) -------------- // Verify a password against system standard shadow file // Note auxilliary fields for expiry policy are *not* inspected. -func VerifyPass(user, password string) (bool, error) { +func VerifyPass(reader func(string) ([]byte, error), user, password string) (bool, error) { passlib.UseDefaults(passlib.Defaults20180601) - pwFileData, e := ioutil.ReadFile("/etc/shadow") + pwFileData, e := reader("/etc/shadow") if e != nil { return false, e } diff --git a/bacillus/ci_pushbuild.sh b/bacillus/ci_pushbuild.sh index 46cc42a..c49a483 100755 --- a/bacillus/ci_pushbuild.sh +++ b/bacillus/ci_pushbuild.sh @@ -25,6 +25,9 @@ ls stage "Build" make all +stage "UnitTests" +go test -v . + stage "Test(Authtoken)" echo "Clearing test user $USER ~/.xs_id file ..." rm -f ~/.xs_id diff --git a/go.mod b/go.mod index 8762b02..acded96 100644 --- a/go.mod +++ b/go.mod @@ -7,23 +7,23 @@ require ( blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 - blitter.com/go/mtwist v1.0.1 + blitter.com/go/mtwist v1.0.1 // indirect blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f - github.com/klauspost/cpuid v1.2.2 - github.com/klauspost/reedsolomon v1.9.3 + github.com/klauspost/cpuid v1.2.2 // indirect + github.com/klauspost/reedsolomon v1.9.3 // indirect github.com/kr/pty v1.1.4 github.com/mattn/go-isatty v0.0.7 - github.com/pkg/errors v0.8.1 - github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 - github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b - github.com/tjfoc/gmsm v1.0.1 + github.com/pkg/errors v0.8.1 // indirect + github.com/templexxx/cpufeat v0.0.0-20180724012125-cef66df7f161 // indirect + github.com/templexxx/xor v0.0.0-20181023030647-4e92f724b73b // indirect + github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d - golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 + golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 - gopkg.in/hlandau/easymetric.v1 v1.0.0 - gopkg.in/hlandau/measurable.v1 v1.0.1 + gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect + gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect gopkg.in/hlandau/passlib.v1 v1.0.10 ) diff --git a/vendor/modules.txt b/vendor/modules.txt index 89bf2f2..3cdfc45 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -37,19 +37,19 @@ github.com/tjfoc/gmsm/sm4 github.com/xtaci/kcp-go # golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d golang.org/x/crypto/blowfish -golang.org/x/crypto/cast5 golang.org/x/crypto/pbkdf2 +golang.org/x/crypto/twofish +golang.org/x/crypto/sha3 +golang.org/x/crypto/cast5 golang.org/x/crypto/salsa20 golang.org/x/crypto/tea -golang.org/x/crypto/twofish golang.org/x/crypto/xtea -golang.org/x/crypto/blake2b -golang.org/x/crypto/internal/subtle -golang.org/x/crypto/salsa20/salsa golang.org/x/crypto/argon2 golang.org/x/crypto/bcrypt +golang.org/x/crypto/internal/subtle +golang.org/x/crypto/salsa20/salsa +golang.org/x/crypto/blake2b golang.org/x/crypto/scrypt -golang.org/x/crypto/sha3 # golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 golang.org/x/net/ipv4 golang.org/x/net/ipv6 diff --git a/xsd/xsd.go b/xsd/xsd.go index e20096d..567e02e 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -713,7 +713,7 @@ func main() { } else { if useSystemPasswd { //var passErr error - valid, _ /*passErr*/ = xs.VerifyPass(string(rec.Who()), string(rec.AuthCookie(true))) + valid, _ /*passErr*/ = xs.VerifyPass(ioutil.ReadFile, string(rec.Who()), string(rec.AuthCookie(true))) } else { valid, allowedCmds = xs.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") } From d18396f535d66e8c0f434a5cd94646c3a02871e7 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 17 Feb 2020 21:17:11 -0800 Subject: [PATCH 077/134] Added unit tests for auth.go Signed-off-by: Russ Magee --- auth_test.go | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 auth_test.go diff --git a/auth_test.go b/auth_test.go new file mode 100644 index 0000000..6d23c49 --- /dev/null +++ b/auth_test.go @@ -0,0 +1,66 @@ +package xs + +import ( + "errors" + "testing" +) + +type userVerifs struct { + user string + passwd string + good bool +} + +var ( + dummyShadowA = `johndoe:$6$EeQlTtn/KXdSh6CW$UHbFuEw3UA0Jg9/GoPHxgWk6Ws31x3IjqsP22a9pVMOte0yQwX1.K34oI4FACu8GRg9DArJ5RyWUE9m98qwzZ1:18310:0:99999:7::: +joebloggs:$6$F.0IXOrb0w0VJHG1$3O4PYyng7F3hlh42mbroEdQZvslybY5etPPiLMQJ1xosjABY.Q4xqAfyIfe03Du61ZjGQIt3nL0j12P9k1fsK/:18310:0:99999:7::: +disableduser:!:18310::::::` + + testGoodUsers = []userVerifs{ + {"johndoe", "testpass", true}, + {"joebloggs", "testpass2", true}, + {"johndoe", "badpass", false}, + } +) + +func _mock_ioutil_ReadFile(f string) ([]byte, error) { + return []byte(dummyShadowA), nil +} + +func _mock_ioutil_ReadFileEmpty(f string) ([]byte, error) { + return []byte{}, nil +} + +func _mock_ioutil_ReadFileHasError(f string) ([]byte, error) { + return []byte{}, errors.New("IO Error") +} + +func TestVerifyPass(t *testing.T) { + for idx, rec := range testGoodUsers { + stat, e := VerifyPass(_mock_ioutil_ReadFile, rec.user, rec.passwd) + if rec.good && (!stat || e != nil) { + t.Fatalf("failed %d\n", idx) + } + } +} + +func TestVerifyPassFailsOnEmptyFile(t *testing.T) { + stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "johndoe", "sompass") + if stat || (e == nil) { + t.Fatal("failed to fail w/empty file") + } +} + +func TestVerifyPassFailsOnFileError(t *testing.T) { + stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "johndoe", "somepass") + if stat || (e == nil) { + t.Fatal("failed to fail on ioutil.ReadFile error") + } +} + +func TestVerifyPassFailsOnDisabledEntry(t *testing.T) { + stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "disableduser", "!") + if stat || (e == nil) { + t.Fatal("failed to fail on disabled user entry") + } +} From 733fc46d86882225f2280ebf7a391d7e65fbffe7 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 17 Feb 2020 23:14:37 -0800 Subject: [PATCH 078/134] Added unit tests for auth.go: AuthUserByToken Signed-off-by: Russ Magee --- auth.go | 34 ++++++++++++++++--------- auth_test.go | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++- xsd/xsd.go | 4 +-- 3 files changed, 93 insertions(+), 15 deletions(-) diff --git a/auth.go b/auth.go index c4f329e..f62b328 100644 --- a/auth.go +++ b/auth.go @@ -30,6 +30,9 @@ import ( // Verify a password against system standard shadow file // Note auxilliary fields for expiry policy are *not* inspected. func VerifyPass(reader func(string) ([]byte, error), user, password string) (bool, error) { + if reader == nil { + reader = ioutil.ReadFile // dependency injection hides that this is required + } passlib.UseDefaults(passlib.Defaults20180601) pwFileData, e := reader("/etc/shadow") if e != nil { @@ -70,8 +73,11 @@ func VerifyPass(reader func(string) ([]byte, error), user, password string) (boo // This checks /etc/xs.passwd for auth info, and system /etc/passwd // to cross-check the user actually exists. // nolint: gocyclo -func AuthUserByPasswd(username string, auth string, fname string) (valid bool, allowedCmds string) { - b, e := ioutil.ReadFile(fname) // nolint: gosec +func AuthUserByPasswd(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error), username string, auth string, fname string) (valid bool, allowedCmds string) { + if reader == nil { + reader = ioutil.ReadFile // dependency injection hides that this is required + } + b, e := reader(fname) // nolint: gosec if e != nil { valid = false log.Printf("ERROR: Cannot read %s!\n", fname) @@ -115,7 +121,8 @@ func AuthUserByPasswd(username string, auth string, fname string) (valid bool, a r = nil runtime.GC() - if !userExistsOnSystem(username) { + _, userErr := userlookup(username) + if userErr != nil { valid = false } return @@ -123,24 +130,26 @@ func AuthUserByPasswd(username string, auth string, fname string) (valid bool, a // ------------- End xs-local passwd auth routine(s) ----------- -func userExistsOnSystem(who string) bool { - _, userErr := user.Lookup(who) - return userErr == nil -} - // AuthUserByToken checks user login information against an auth token. // Auth tokens are stored in each user's $HOME/.xs_id and are requested // via the -g option. // The function also check system /etc/passwd to cross-check the user // actually exists. -func AuthUserByToken(username string, connhostname string, auth string) (valid bool) { +func AuthUserByToken(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error), username string, connhostname string, auth string) (valid bool) { + if reader == nil { + reader = ioutil.ReadFile // dependency injection hides that this is required + } + if userlookup == nil { + userlookup = user.Lookup // again for dependency injection as dep is now hidden + } + auth = strings.TrimSpace(auth) - u, ue := user.Lookup(username) + u, ue := userlookup(username) if ue != nil { return false } - b, e := ioutil.ReadFile(fmt.Sprintf("%s/.xs_id", u.HomeDir)) + b, e := reader(fmt.Sprintf("%s/.xs_id", u.HomeDir)) if e != nil { log.Printf("INFO: Cannot read %s/.xs_id\n", u.HomeDir) return false @@ -167,7 +176,8 @@ func AuthUserByToken(username string, connhostname string, auth string) (valid b break } } - if !userExistsOnSystem(username) { + _, userErr := userlookup(username) + if userErr != nil { valid = false } return diff --git a/auth_test.go b/auth_test.go index 6d23c49..2d90e33 100644 --- a/auth_test.go +++ b/auth_test.go @@ -2,6 +2,9 @@ package xs import ( "errors" + "fmt" + "os/user" + "strings" "testing" ) @@ -16,15 +19,39 @@ var ( joebloggs:$6$F.0IXOrb0w0VJHG1$3O4PYyng7F3hlh42mbroEdQZvslybY5etPPiLMQJ1xosjABY.Q4xqAfyIfe03Du61ZjGQIt3nL0j12P9k1fsK/:18310:0:99999:7::: disableduser:!:18310::::::` + dummyAuthTokenFile = "hostA:abcdefg\nhostB:wxyz\n" + testGoodUsers = []userVerifs{ {"johndoe", "testpass", true}, {"joebloggs", "testpass2", true}, {"johndoe", "badpass", false}, } + + userlookup_arg_u string + readfile_arg_f string ) +func _mock_user_Lookup(username string) (*user.User, error) { + username = userlookup_arg_u + if username == "baduser" { + return &user.User{}, errors.New("bad user") + } + urec := &user.User{Uid: "1000", Gid: "1000", Username: username, Name: "Full Name", HomeDir: "/home/user"} + fmt.Printf(" [mock user rec:%v]\n", urec) + return urec, nil +} + func _mock_ioutil_ReadFile(f string) ([]byte, error) { - return []byte(dummyShadowA), nil + f = readfile_arg_f + if f == "/etc/shadow" { + fmt.Println(" [mocking ReadFile(\"/etc/shadow\")]") + return []byte(dummyShadowA), nil + } + if strings.Contains(f, "/.xs_id") { + fmt.Println(" [mocking ReadFile(\".xs_id\")]") + return []byte(dummyAuthTokenFile), nil + } + return []byte{}, errors.New("no readfile_arg_f supplied") } func _mock_ioutil_ReadFileEmpty(f string) ([]byte, error) { @@ -36,6 +63,7 @@ func _mock_ioutil_ReadFileHasError(f string) ([]byte, error) { } func TestVerifyPass(t *testing.T) { + readfile_arg_f = "/etc/shadow" for idx, rec := range testGoodUsers { stat, e := VerifyPass(_mock_ioutil_ReadFile, rec.user, rec.passwd) if rec.good && (!stat || e != nil) { @@ -64,3 +92,43 @@ func TestVerifyPassFailsOnDisabledEntry(t *testing.T) { t.Fatal("failed to fail on disabled user entry") } } + +//// + +func TestAuthUserByTokenFailsOnMissingEntryForHost(t *testing.T) { + stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostZ", "abcdefg") + if stat { + t.Fatal("failed to fail on missing/mismatched host entry") + } +} + +func TestAuthUserByTokenFailsOnMissingEntryForUser(t *testing.T) { + stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "unkuser", "hostA", "abcdefg") + if stat { + t.Fatal("failed to fail on wrong user") + } +} + +func TestAuthUserByTokenFailsOnUserLookupFailure(t *testing.T) { + userlookup_arg_u = "baduser" + stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostA", "abcdefg") + if stat { + t.Fatal("failed to fail with bad return from user.Lookup()") + } +} + +func TestAuthUserByTokenFailsOnMismatchedTokenForUser(t *testing.T) { + stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostA", "badtoken") + if stat { + t.Fatal("failed to fail with valid user, bad token") + } +} + +func TestAuthUserByTokenSucceedsWithMatchedUserAndToken(t *testing.T) { + userlookup_arg_u = "johndoe" + readfile_arg_f = "/.xs_id" + stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, userlookup_arg_u, "hostA", "hostA:abcdefg") + if !stat { + t.Fatal("failed with valid user and token") + } +} diff --git a/xsd/xsd.go b/xsd/xsd.go index 567e02e..528d094 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -708,14 +708,14 @@ func main() { var valid bool var allowedCmds string // Currently unused - if xs.AuthUserByToken(string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { + if xs.AuthUserByToken(ioutil.ReadFile, user.Lookup, string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { valid = true } else { if useSystemPasswd { //var passErr error valid, _ /*passErr*/ = xs.VerifyPass(ioutil.ReadFile, string(rec.Who()), string(rec.AuthCookie(true))) } else { - valid, allowedCmds = xs.AuthUserByPasswd(string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") + valid, allowedCmds = xs.AuthUserByPasswd(ioutil.ReadFile, user.Lookup, string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") } } From 654de563dcf291454ad5ebb5116bb88a118f0ceb Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 18 Feb 2020 10:53:04 -0800 Subject: [PATCH 079/134] auth.go: AuthCtx added to structure mockable entities for testing Signed-off-by: Russ Magee --- auth.go | 47 ++++++++++++++++++++++++++++++----------------- auth_test.go | 32 +++++++++++++++++++++++--------- xsd/xsd.go | 6 +++--- 3 files changed, 56 insertions(+), 29 deletions(-) diff --git a/auth.go b/auth.go index f62b328..8fe59e3 100644 --- a/auth.go +++ b/auth.go @@ -26,15 +26,25 @@ import ( passlib "gopkg.in/hlandau/passlib.v1" ) +type AuthCtx struct { + reader func(string) ([]byte, error) // eg. ioutil.ReadFile() + userlookup func(string) (*user.User, error) // eg. os/user.Lookup() +} + +func NewAuthCtx(/*reader func(string) ([]byte, error), userlookup func(string) (*user.User, error)*/) (ret *AuthCtx) { + ret = &AuthCtx{ioutil.ReadFile, user.Lookup} + return +} + // --------- System passwd/shadow auth routine(s) -------------- // Verify a password against system standard shadow file // Note auxilliary fields for expiry policy are *not* inspected. -func VerifyPass(reader func(string) ([]byte, error), user, password string) (bool, error) { - if reader == nil { - reader = ioutil.ReadFile // dependency injection hides that this is required +func VerifyPass(ctx *AuthCtx, user, password string) (bool, error) { + if ctx.reader == nil { + ctx.reader = ioutil.ReadFile // dependency injection hides that this is required } passlib.UseDefaults(passlib.Defaults20180601) - pwFileData, e := reader("/etc/shadow") + pwFileData, e := ctx.reader("/etc/shadow") if e != nil { return false, e } @@ -73,11 +83,14 @@ func VerifyPass(reader func(string) ([]byte, error), user, password string) (boo // This checks /etc/xs.passwd for auth info, and system /etc/passwd // to cross-check the user actually exists. // nolint: gocyclo -func AuthUserByPasswd(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error), username string, auth string, fname string) (valid bool, allowedCmds string) { - if reader == nil { - reader = ioutil.ReadFile // dependency injection hides that this is required +func AuthUserByPasswd(ctx *AuthCtx, username string, auth string, fname string) (valid bool, allowedCmds string) { + if ctx.reader == nil { + ctx.reader = ioutil.ReadFile // dependency injection hides that this is required } - b, e := reader(fname) // nolint: gosec + if ctx.userlookup == nil { + ctx.userlookup = user.Lookup // again for dependency injection as dep is now hidden + } + b, e := ctx.reader(fname) // nolint: gosec if e != nil { valid = false log.Printf("ERROR: Cannot read %s!\n", fname) @@ -121,7 +134,7 @@ func AuthUserByPasswd(reader func(string) ([]byte, error), userlookup func(strin r = nil runtime.GC() - _, userErr := userlookup(username) + _, userErr := ctx.userlookup(username) if userErr != nil { valid = false } @@ -135,21 +148,21 @@ func AuthUserByPasswd(reader func(string) ([]byte, error), userlookup func(strin // via the -g option. // The function also check system /etc/passwd to cross-check the user // actually exists. -func AuthUserByToken(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error), username string, connhostname string, auth string) (valid bool) { - if reader == nil { - reader = ioutil.ReadFile // dependency injection hides that this is required +func AuthUserByToken(ctx *AuthCtx, username string, connhostname string, auth string) (valid bool) { + if ctx.reader == nil { + ctx.reader = ioutil.ReadFile // dependency injection hides that this is required } - if userlookup == nil { - userlookup = user.Lookup // again for dependency injection as dep is now hidden + if ctx.userlookup == nil { + ctx.userlookup = user.Lookup // again for dependency injection as dep is now hidden } auth = strings.TrimSpace(auth) - u, ue := userlookup(username) + u, ue := ctx.userlookup(username) if ue != nil { return false } - b, e := reader(fmt.Sprintf("%s/.xs_id", u.HomeDir)) + b, e := ctx.reader(fmt.Sprintf("%s/.xs_id", u.HomeDir)) if e != nil { log.Printf("INFO: Cannot read %s/.xs_id\n", u.HomeDir) return false @@ -176,7 +189,7 @@ func AuthUserByToken(reader func(string) ([]byte, error), userlookup func(string break } } - _, userErr := userlookup(username) + _, userErr := ctx.userlookup(username) if userErr != nil { valid = false } diff --git a/auth_test.go b/auth_test.go index 2d90e33..3672607 100644 --- a/auth_test.go +++ b/auth_test.go @@ -31,6 +31,11 @@ disableduser:!:18310::::::` readfile_arg_f string ) +func newMockAuthCtx(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error)) (ret *AuthCtx) { + ret = &AuthCtx{reader, userlookup} + return +} + func _mock_user_Lookup(username string) (*user.User, error) { username = userlookup_arg_u if username == "baduser" { @@ -64,8 +69,9 @@ func _mock_ioutil_ReadFileHasError(f string) ([]byte, error) { func TestVerifyPass(t *testing.T) { readfile_arg_f = "/etc/shadow" + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, nil) for idx, rec := range testGoodUsers { - stat, e := VerifyPass(_mock_ioutil_ReadFile, rec.user, rec.passwd) + stat, e := VerifyPass(ctx, rec.user, rec.passwd) if rec.good && (!stat || e != nil) { t.Fatalf("failed %d\n", idx) } @@ -73,21 +79,24 @@ func TestVerifyPass(t *testing.T) { } func TestVerifyPassFailsOnEmptyFile(t *testing.T) { - stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "johndoe", "sompass") + ctx := newMockAuthCtx(_mock_ioutil_ReadFileEmpty, nil) + stat, e := VerifyPass(ctx, "johndoe", "somepass") if stat || (e == nil) { t.Fatal("failed to fail w/empty file") } } func TestVerifyPassFailsOnFileError(t *testing.T) { - stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "johndoe", "somepass") + ctx := newMockAuthCtx(_mock_ioutil_ReadFileEmpty, nil) + stat, e := VerifyPass(ctx, "johndoe", "somepass") if stat || (e == nil) { t.Fatal("failed to fail on ioutil.ReadFile error") } } func TestVerifyPassFailsOnDisabledEntry(t *testing.T) { - stat, e := VerifyPass(_mock_ioutil_ReadFileEmpty, "disableduser", "!") + ctx := newMockAuthCtx(_mock_ioutil_ReadFileEmpty, nil) + stat, e := VerifyPass(ctx, "disableduser", "!") if stat || (e == nil) { t.Fatal("failed to fail on disabled user entry") } @@ -96,38 +105,43 @@ func TestVerifyPassFailsOnDisabledEntry(t *testing.T) { //// func TestAuthUserByTokenFailsOnMissingEntryForHost(t *testing.T) { - stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostZ", "abcdefg") + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + stat := AuthUserByToken(ctx, "johndoe", "hostZ", "abcdefg") if stat { t.Fatal("failed to fail on missing/mismatched host entry") } } func TestAuthUserByTokenFailsOnMissingEntryForUser(t *testing.T) { - stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "unkuser", "hostA", "abcdefg") + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + stat := AuthUserByToken(ctx, "unkuser", "hostA", "abcdefg") if stat { t.Fatal("failed to fail on wrong user") } } func TestAuthUserByTokenFailsOnUserLookupFailure(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) userlookup_arg_u = "baduser" - stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostA", "abcdefg") + stat := AuthUserByToken(ctx, "johndoe", "hostA", "abcdefg") if stat { t.Fatal("failed to fail with bad return from user.Lookup()") } } func TestAuthUserByTokenFailsOnMismatchedTokenForUser(t *testing.T) { - stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, "johndoe", "hostA", "badtoken") + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + stat := AuthUserByToken(ctx, "johndoe", "hostA", "badtoken") if stat { t.Fatal("failed to fail with valid user, bad token") } } func TestAuthUserByTokenSucceedsWithMatchedUserAndToken(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) userlookup_arg_u = "johndoe" readfile_arg_f = "/.xs_id" - stat := AuthUserByToken(_mock_ioutil_ReadFile, _mock_user_Lookup, userlookup_arg_u, "hostA", "hostA:abcdefg") + stat := AuthUserByToken(ctx, userlookup_arg_u, "hostA", "hostA:abcdefg") if !stat { t.Fatal("failed with valid user and token") } diff --git a/xsd/xsd.go b/xsd/xsd.go index 528d094..e46c2a7 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -708,14 +708,14 @@ func main() { var valid bool var allowedCmds string // Currently unused - if xs.AuthUserByToken(ioutil.ReadFile, user.Lookup, string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { + if xs.AuthUserByToken(xs.NewAuthCtx(), string(rec.Who()), string(rec.ConnHost()), string(rec.AuthCookie(true))) { valid = true } else { if useSystemPasswd { //var passErr error - valid, _ /*passErr*/ = xs.VerifyPass(ioutil.ReadFile, string(rec.Who()), string(rec.AuthCookie(true))) + valid, _ /*passErr*/ = xs.VerifyPass(xs.NewAuthCtx(), string(rec.Who()), string(rec.AuthCookie(true))) } else { - valid, allowedCmds = xs.AuthUserByPasswd(ioutil.ReadFile, user.Lookup, string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") + valid, allowedCmds = xs.AuthUserByPasswd(xs.NewAuthCtx(), string(rec.Who()), string(rec.AuthCookie(true)), "/etc/xs.passwd") } } From e84f4320330a71016a89812a91e0251534486421 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 18 Feb 2020 13:41:44 -0800 Subject: [PATCH 080/134] auth.go: added new unit tests Signed-off-by: Russ Magee --- auth.go | 6 ++--- auth_test.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 5 deletions(-) diff --git a/auth.go b/auth.go index 8fe59e3..017dd98 100644 --- a/auth.go +++ b/auth.go @@ -31,9 +31,9 @@ type AuthCtx struct { userlookup func(string) (*user.User, error) // eg. os/user.Lookup() } -func NewAuthCtx(/*reader func(string) ([]byte, error), userlookup func(string) (*user.User, error)*/) (ret *AuthCtx) { - ret = &AuthCtx{ioutil.ReadFile, user.Lookup} - return +func NewAuthCtx( /*reader func(string) ([]byte, error), userlookup func(string) (*user.User, error)*/ ) (ret *AuthCtx) { + ret = &AuthCtx{ioutil.ReadFile, user.Lookup} + return } // --------- System passwd/shadow auth routine(s) -------------- diff --git a/auth_test.go b/auth_test.go index 3672607..cfcec60 100644 --- a/auth_test.go +++ b/auth_test.go @@ -21,19 +21,29 @@ disableduser:!:18310::::::` dummyAuthTokenFile = "hostA:abcdefg\nhostB:wxyz\n" + dummyXsPasswdFile = `#username:salt:authCookie +bobdobbs:$2a$12$9vqGkFqikspe/2dTARqu1O:$2a$12$9vqGkFqikspe/2dTARqu1OuDKCQ/RYWsnaFjmi.HtmECRkxcZ.kBK +notbob:$2a$12$cZpiYaq5U998cOkXzRKdyu:$2a$12$cZpiYaq5U998cOkXzRKdyuJ2FoEQyVLa3QkYdPQk74VXMoAzhvuP6 +` + testGoodUsers = []userVerifs{ {"johndoe", "testpass", true}, {"joebloggs", "testpass2", true}, {"johndoe", "badpass", false}, } + testXsPasswdUsers = []userVerifs{ + {"bobdobbs", "praisebob", true}, + {"notbob", "imposter", false}, + } + userlookup_arg_u string readfile_arg_f string ) func newMockAuthCtx(reader func(string) ([]byte, error), userlookup func(string) (*user.User, error)) (ret *AuthCtx) { - ret = &AuthCtx{reader, userlookup} - return + ret = &AuthCtx{reader, userlookup} + return } func _mock_user_Lookup(username string) (*user.User, error) { @@ -52,6 +62,10 @@ func _mock_ioutil_ReadFile(f string) ([]byte, error) { fmt.Println(" [mocking ReadFile(\"/etc/shadow\")]") return []byte(dummyShadowA), nil } + if f == "/etc/xs.passwd" { + fmt.Println(" [mocking ReadFile(\"/etc/xs.passwd\")]") + return []byte(dummyXsPasswdFile), nil + } if strings.Contains(f, "/.xs_id") { fmt.Println(" [mocking ReadFile(\".xs_id\")]") return []byte(dummyAuthTokenFile), nil @@ -146,3 +160,53 @@ func TestAuthUserByTokenSucceedsWithMatchedUserAndToken(t *testing.T) { t.Fatal("failed with valid user and token") } } + +func TestAuthUserByPasswdFailsOnEmptyFile(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFileEmpty, _mock_user_Lookup) + userlookup_arg_u = "bobdobbs" + readfile_arg_f = "/etc/xs.passwd" + stat, _ := AuthUserByPasswd(ctx, userlookup_arg_u, "praisebob", readfile_arg_f) + if stat { + t.Fatal("failed to fail with missing xs.passwd file") + } +} + +func TestAuthUserByPasswdFailsOnBadAuth(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + userlookup_arg_u = "bobdobbs" + readfile_arg_f = "/etc/xs.passwd" + stat, _ := AuthUserByPasswd(ctx, userlookup_arg_u, "wrongpass", readfile_arg_f) + if stat { + t.Fatal("failed to fail with valid user, incorrect passwd in xs.passwd file") + } +} + +func TestAuthUserByPasswdFailsOnBadUser(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + userlookup_arg_u = "bobdobbs" + readfile_arg_f = "/etc/xs.passwd" + stat, _ := AuthUserByPasswd(ctx, userlookup_arg_u, "theotherbob", readfile_arg_f) + if stat { + t.Fatal("failed to fail on invalid user vs. xs.passwd file") + } +} + +func TestAuthUserByPasswdPassesOnGoodAuth(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + userlookup_arg_u = "bobdobbs" + readfile_arg_f = "/etc/xs.passwd" + stat, _ := AuthUserByPasswd(ctx, userlookup_arg_u, "praisebob", readfile_arg_f) + if !stat { + t.Fatal("failed on valid user w/correct passwd in xs.passwd file") + } +} + +func TestAuthUserByPasswdPassesOnOtherGoodAuth(t *testing.T) { + ctx := newMockAuthCtx(_mock_ioutil_ReadFile, _mock_user_Lookup) + userlookup_arg_u = "notbob" + readfile_arg_f = "/etc/xs.passwd" + stat, _ := AuthUserByPasswd(ctx, userlookup_arg_u, "imposter", readfile_arg_f) + if !stat { + t.Fatal("failed on valid user 2nd entry w/correct passwd in xs.passwd file") + } +} From 8de76520e44857c335e62906a466cdbc5560f144 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 19 Feb 2020 13:27:56 -0800 Subject: [PATCH 081/134] Added session_test.go Signed-off-by: Russ Magee --- session_test.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 session_test.go diff --git a/session_test.go b/session_test.go new file mode 100644 index 0000000..0670ea8 --- /dev/null +++ b/session_test.go @@ -0,0 +1,30 @@ +package xs + +import ( + "testing" +) + +func _newMockSession() (s *Session) { + s = &Session{op: []byte("A"), + who: []byte("johndoe"), + connhost: []byte("host"), + termtype: []byte("vt100"), + cmd: []byte("/bin/false"), + authCookie: []byte("authcookie"), + status: 0} + return s +} + +func TestSessionAuthCookieShowTrue(t *testing.T) { + sess := _newMockSession() + if string(sess.AuthCookie(true)) != string(sess.authCookie) { + t.Fatal("Failed to return unredacted authcookie on request") + } +} + +func TestSessionAuthCookieShowFalse(t *testing.T) { + sess := _newMockSession() + if string(sess.AuthCookie(false)) != string("**REDACTED**") { + t.Fatal("Failed to return redacted authcookie on request") + } +} From e9aa0072a5d412d1f11c8683722f614cb1855a2c Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 21 Feb 2020 17:21:19 -0800 Subject: [PATCH 082/134] Initial aead/chacha20 support (ChaCha20_12) Signed-off-by: Russ Magee --- go.mod | 1 + go.sum | 2 + vendor/github.com/aead/chacha20/LICENSE | 21 + .../github.com/aead/chacha20/chacha/chacha.go | 197 +++ .../aead/chacha20/chacha/chachaAVX2_amd64.s | 406 +++++++ .../aead/chacha20/chacha/chacha_386.go | 60 + .../aead/chacha20/chacha/chacha_386.s | 163 +++ .../aead/chacha20/chacha/chacha_amd64.go | 76 ++ .../aead/chacha20/chacha/chacha_amd64.s | 1072 +++++++++++++++++ .../aead/chacha20/chacha/chacha_generic.go | 319 +++++ .../aead/chacha20/chacha/chacha_ref.go | 33 + .../github.com/aead/chacha20/chacha/const.s | 53 + .../github.com/aead/chacha20/chacha/macro.s | 163 +++ vendor/modules.txt | 2 + xs/xs.go | 2 +- xsnet/chan.go | 13 + xsnet/consts.go | 1 + xsnet/net.go | 10 +- 18 files changed, 2592 insertions(+), 2 deletions(-) create mode 100644 vendor/github.com/aead/chacha20/LICENSE create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha.go create mode 100644 vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_386.go create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_386.s create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_amd64.go create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_amd64.s create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_generic.go create mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_ref.go create mode 100644 vendor/github.com/aead/chacha20/chacha/const.s create mode 100644 vendor/github.com/aead/chacha20/chacha/macro.s diff --git a/go.mod b/go.mod index acded96..1e35ba1 100644 --- a/go.mod +++ b/go.mod @@ -9,6 +9,7 @@ require ( blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 blitter.com/go/mtwist v1.0.1 // indirect blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae + github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/klauspost/cpuid v1.2.2 // indirect github.com/klauspost/reedsolomon v1.9.3 // indirect diff --git a/go.sum b/go.sum index 32142b8..7760711 100644 --- a/go.sum +++ b/go.sum @@ -28,6 +28,8 @@ git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= +github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y= diff --git a/vendor/github.com/aead/chacha20/LICENSE b/vendor/github.com/aead/chacha20/LICENSE new file mode 100644 index 0000000..b6a9210 --- /dev/null +++ b/vendor/github.com/aead/chacha20/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Andreas Auernhammer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/aead/chacha20/chacha/chacha.go b/vendor/github.com/aead/chacha20/chacha/chacha.go new file mode 100644 index 0000000..c2b39da --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha.go @@ -0,0 +1,197 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// Package chacha implements some low-level functions of the +// ChaCha cipher family. +package chacha // import "github.com/aead/chacha20/chacha" + +import ( + "encoding/binary" + "errors" + "math" +) + +const ( + // NonceSize is the size of the ChaCha20 nonce in bytes. + NonceSize = 8 + + // INonceSize is the size of the IETF-ChaCha20 nonce in bytes. + INonceSize = 12 + + // XNonceSize is the size of the XChaCha20 nonce in bytes. + XNonceSize = 24 + + // KeySize is the size of the key in bytes. + KeySize = 32 +) + +var ( + useSSE2 bool + useSSSE3 bool + useAVX bool + useAVX2 bool +) + +var ( + errKeySize = errors.New("chacha20/chacha: bad key length") + errInvalidNonce = errors.New("chacha20/chacha: bad nonce length") +) + +func setup(state *[64]byte, nonce, key []byte) (err error) { + if len(key) != KeySize { + err = errKeySize + return + } + var Nonce [16]byte + switch len(nonce) { + case NonceSize: + copy(Nonce[8:], nonce) + initialize(state, key, &Nonce) + case INonceSize: + copy(Nonce[4:], nonce) + initialize(state, key, &Nonce) + case XNonceSize: + var tmpKey [32]byte + var hNonce [16]byte + + copy(hNonce[:], nonce[:16]) + copy(tmpKey[:], key) + HChaCha20(&tmpKey, &hNonce, &tmpKey) + copy(Nonce[8:], nonce[16:]) + initialize(state, tmpKey[:], &Nonce) + + // BUG(aead): A "good" compiler will remove this (optimizations) + // But using the provided key instead of tmpKey, + // will change the key (-> probably confuses users) + for i := range tmpKey { + tmpKey[i] = 0 + } + default: + err = errInvalidNonce + } + return +} + +// XORKeyStream crypts bytes from src to dst using the given nonce and key. +// The length of the nonce determinds the version of ChaCha20: +// - NonceSize: ChaCha20/r with a 64 bit nonce and a 2^64 * 64 byte period. +// - INonceSize: ChaCha20/r as defined in RFC 7539 and a 2^32 * 64 byte period. +// - XNonceSize: XChaCha20/r with a 192 bit nonce and a 2^64 * 64 byte period. +// The rounds argument specifies the number of rounds performed for keystream +// generation - valid values are 8, 12 or 20. The src and dst may be the same slice +// but otherwise should not overlap. If len(dst) < len(src) this function panics. +// If the nonce is neither 64, 96 nor 192 bits long, this function panics. +func XORKeyStream(dst, src, nonce, key []byte, rounds int) { + if rounds != 20 && rounds != 12 && rounds != 8 { + panic("chacha20/chacha: bad number of rounds") + } + if len(dst) < len(src) { + panic("chacha20/chacha: dst buffer is to small") + } + if len(nonce) == INonceSize && uint64(len(src)) > (1<<38) { + panic("chacha20/chacha: src is too large") + } + + var block, state [64]byte + if err := setup(&state, nonce, key); err != nil { + panic(err) + } + xorKeyStream(dst, src, &block, &state, rounds) +} + +// Cipher implements ChaCha20/r (XChaCha20/r) for a given number of rounds r. +type Cipher struct { + state, block [64]byte + off int + rounds int // 20 for ChaCha20 + noncesize int +} + +// NewCipher returns a new *chacha.Cipher implementing the ChaCha20/r or XChaCha20/r +// (r = 8, 12 or 20) stream cipher. The nonce must be unique for one key for all time. +// The length of the nonce determinds the version of ChaCha20: +// - NonceSize: ChaCha20/r with a 64 bit nonce and a 2^64 * 64 byte period. +// - INonceSize: ChaCha20/r as defined in RFC 7539 and a 2^32 * 64 byte period. +// - XNonceSize: XChaCha20/r with a 192 bit nonce and a 2^64 * 64 byte period. +// If the nonce is neither 64, 96 nor 192 bits long, a non-nil error is returned. +func NewCipher(nonce, key []byte, rounds int) (*Cipher, error) { + if rounds != 20 && rounds != 12 && rounds != 8 { + panic("chacha20/chacha: bad number of rounds") + } + + c := new(Cipher) + if err := setup(&(c.state), nonce, key); err != nil { + return nil, err + } + c.rounds = rounds + + if len(nonce) == INonceSize { + c.noncesize = INonceSize + } else { + c.noncesize = NonceSize + } + + return c, nil +} + +// XORKeyStream crypts bytes from src to dst. Src and dst may be the same slice +// but otherwise should not overlap. If len(dst) < len(src) the function panics. +func (c *Cipher) XORKeyStream(dst, src []byte) { + if len(dst) < len(src) { + panic("chacha20/chacha: dst buffer is to small") + } + + if c.off > 0 { + n := len(c.block[c.off:]) + if len(src) <= n { + for i, v := range src { + dst[i] = v ^ c.block[c.off] + c.off++ + } + if c.off == 64 { + c.off = 0 + } + return + } + + for i, v := range c.block[c.off:] { + dst[i] = src[i] ^ v + } + src = src[n:] + dst = dst[n:] + c.off = 0 + } + + // check for counter overflow + blocksToXOR := len(src) / 64 + if len(src)%64 != 0 { + blocksToXOR++ + } + var overflow bool + if c.noncesize == INonceSize { + overflow = binary.LittleEndian.Uint32(c.state[48:]) > math.MaxUint32-uint32(blocksToXOR) + } else { + overflow = binary.LittleEndian.Uint64(c.state[48:]) > math.MaxUint64-uint64(blocksToXOR) + } + if overflow { + panic("chacha20/chacha: counter overflow") + } + + c.off += xorKeyStream(dst, src, &(c.block), &(c.state), c.rounds) +} + +// SetCounter skips ctr * 64 byte blocks. SetCounter(0) resets the cipher. +// This function always skips the unused keystream of the current 64 byte block. +func (c *Cipher) SetCounter(ctr uint64) { + if c.noncesize == INonceSize { + binary.LittleEndian.PutUint32(c.state[48:], uint32(ctr)) + } else { + binary.LittleEndian.PutUint64(c.state[48:], ctr) + } + c.off = 0 +} + +// HChaCha20 generates 32 pseudo-random bytes from a 128 bit nonce and a 256 bit secret key. +// It can be used as a key-derivation-function (KDF). +func HChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { hChaCha20(out, nonce, key) } diff --git a/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s b/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s new file mode 100644 index 0000000..c2b5f52 --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s @@ -0,0 +1,406 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build amd64,!gccgo,!appengine,!nacl + +#include "const.s" +#include "macro.s" + +#define TWO 0(SP) +#define C16 32(SP) +#define C8 64(SP) +#define STATE_0 96(SP) +#define STATE_1 128(SP) +#define STATE_2 160(SP) +#define STATE_3 192(SP) +#define TMP_0 224(SP) +#define TMP_1 256(SP) + +// func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int +TEXT ·xorKeyStreamAVX2(SB), 4, $320-80 + MOVQ dst_base+0(FP), DI + MOVQ src_base+24(FP), SI + MOVQ block+48(FP), BX + MOVQ state+56(FP), AX + MOVQ rounds+64(FP), DX + MOVQ src_len+32(FP), CX + + MOVQ SP, R8 + ADDQ $32, SP + ANDQ $-32, SP + + VMOVDQU 0(AX), Y2 + VMOVDQU 32(AX), Y3 + VPERM2I128 $0x22, Y2, Y0, Y0 + VPERM2I128 $0x33, Y2, Y1, Y1 + VPERM2I128 $0x22, Y3, Y2, Y2 + VPERM2I128 $0x33, Y3, Y3, Y3 + + TESTQ CX, CX + JZ done + + VMOVDQU ·one_AVX2<>(SB), Y4 + VPADDD Y4, Y3, Y3 + + VMOVDQA Y0, STATE_0 + VMOVDQA Y1, STATE_1 + VMOVDQA Y2, STATE_2 + VMOVDQA Y3, STATE_3 + + VMOVDQU ·rol16_AVX2<>(SB), Y4 + VMOVDQU ·rol8_AVX2<>(SB), Y5 + VMOVDQU ·two_AVX2<>(SB), Y6 + VMOVDQA Y4, Y14 + VMOVDQA Y5, Y15 + VMOVDQA Y4, C16 + VMOVDQA Y5, C8 + VMOVDQA Y6, TWO + + CMPQ CX, $64 + JBE between_0_and_64 + CMPQ CX, $192 + JBE between_64_and_192 + CMPQ CX, $320 + JBE between_192_and_320 + CMPQ CX, $448 + JBE between_320_and_448 + +at_least_512: + VMOVDQA Y0, Y4 + VMOVDQA Y1, Y5 + VMOVDQA Y2, Y6 + VPADDQ TWO, Y3, Y7 + VMOVDQA Y0, Y8 + VMOVDQA Y1, Y9 + VMOVDQA Y2, Y10 + VPADDQ TWO, Y7, Y11 + VMOVDQA Y0, Y12 + VMOVDQA Y1, Y13 + VMOVDQA Y2, Y14 + VPADDQ TWO, Y11, Y15 + + MOVQ DX, R9 + +chacha_loop_512: + VMOVDQA Y8, TMP_0 + CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y8, C16, C8) + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y8, C16, C8) + VMOVDQA TMP_0, Y8 + VMOVDQA Y0, TMP_0 + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y0, C16, C8) + CHACHA_QROUND_AVX(Y12, Y13, Y14, Y15, Y0, C16, C8) + CHACHA_SHUFFLE_AVX(Y1, Y2, Y3) + CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) + CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) + CHACHA_SHUFFLE_AVX(Y13, Y14, Y15) + + CHACHA_QROUND_AVX(Y12, Y13, Y14, Y15, Y0, C16, C8) + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y0, C16, C8) + VMOVDQA TMP_0, Y0 + VMOVDQA Y8, TMP_0 + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y8, C16, C8) + CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y8, C16, C8) + VMOVDQA TMP_0, Y8 + CHACHA_SHUFFLE_AVX(Y3, Y2, Y1) + CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) + CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) + CHACHA_SHUFFLE_AVX(Y15, Y14, Y13) + SUBQ $2, R9 + JA chacha_loop_512 + + VMOVDQA Y12, TMP_0 + VMOVDQA Y13, TMP_1 + VPADDD STATE_0, Y0, Y0 + VPADDD STATE_1, Y1, Y1 + VPADDD STATE_2, Y2, Y2 + VPADDD STATE_3, Y3, Y3 + XOR_AVX2(DI, SI, 0, Y0, Y1, Y2, Y3, Y12, Y13) + VMOVDQA STATE_0, Y0 + VMOVDQA STATE_1, Y1 + VMOVDQA STATE_2, Y2 + VMOVDQA STATE_3, Y3 + VPADDQ TWO, Y3, Y3 + + VPADDD Y0, Y4, Y4 + VPADDD Y1, Y5, Y5 + VPADDD Y2, Y6, Y6 + VPADDD Y3, Y7, Y7 + XOR_AVX2(DI, SI, 128, Y4, Y5, Y6, Y7, Y12, Y13) + VPADDQ TWO, Y3, Y3 + + VPADDD Y0, Y8, Y8 + VPADDD Y1, Y9, Y9 + VPADDD Y2, Y10, Y10 + VPADDD Y3, Y11, Y11 + XOR_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) + VPADDQ TWO, Y3, Y3 + + VPADDD TMP_0, Y0, Y12 + VPADDD TMP_1, Y1, Y13 + VPADDD Y2, Y14, Y14 + VPADDD Y3, Y15, Y15 + VPADDQ TWO, Y3, Y3 + + CMPQ CX, $512 + JB less_than_512 + + XOR_AVX2(DI, SI, 384, Y12, Y13, Y14, Y15, Y4, Y5) + VMOVDQA Y3, STATE_3 + ADDQ $512, SI + ADDQ $512, DI + SUBQ $512, CX + CMPQ CX, $448 + JA at_least_512 + + TESTQ CX, CX + JZ done + + VMOVDQA C16, Y14 + VMOVDQA C8, Y15 + + CMPQ CX, $64 + JBE between_0_and_64 + CMPQ CX, $192 + JBE between_64_and_192 + CMPQ CX, $320 + JBE between_192_and_320 + JMP between_320_and_448 + +less_than_512: + XOR_UPPER_AVX2(DI, SI, 384, Y12, Y13, Y14, Y15, Y4, Y5) + EXTRACT_LOWER(BX, Y12, Y13, Y14, Y15, Y4) + ADDQ $448, SI + ADDQ $448, DI + SUBQ $448, CX + JMP finalize + +between_320_and_448: + VMOVDQA Y0, Y4 + VMOVDQA Y1, Y5 + VMOVDQA Y2, Y6 + VPADDQ TWO, Y3, Y7 + VMOVDQA Y0, Y8 + VMOVDQA Y1, Y9 + VMOVDQA Y2, Y10 + VPADDQ TWO, Y7, Y11 + + MOVQ DX, R9 + +chacha_loop_384: + CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y1, Y2, Y3) + CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) + CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) + CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y3, Y2, Y1) + CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) + CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) + SUBQ $2, R9 + JA chacha_loop_384 + + VPADDD STATE_0, Y0, Y0 + VPADDD STATE_1, Y1, Y1 + VPADDD STATE_2, Y2, Y2 + VPADDD STATE_3, Y3, Y3 + XOR_AVX2(DI, SI, 0, Y0, Y1, Y2, Y3, Y12, Y13) + VMOVDQA STATE_0, Y0 + VMOVDQA STATE_1, Y1 + VMOVDQA STATE_2, Y2 + VMOVDQA STATE_3, Y3 + VPADDQ TWO, Y3, Y3 + + VPADDD Y0, Y4, Y4 + VPADDD Y1, Y5, Y5 + VPADDD Y2, Y6, Y6 + VPADDD Y3, Y7, Y7 + XOR_AVX2(DI, SI, 128, Y4, Y5, Y6, Y7, Y12, Y13) + VPADDQ TWO, Y3, Y3 + + VPADDD Y0, Y8, Y8 + VPADDD Y1, Y9, Y9 + VPADDD Y2, Y10, Y10 + VPADDD Y3, Y11, Y11 + VPADDQ TWO, Y3, Y3 + + CMPQ CX, $384 + JB less_than_384 + + XOR_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) + SUBQ $384, CX + TESTQ CX, CX + JE done + + ADDQ $384, SI + ADDQ $384, DI + JMP between_0_and_64 + +less_than_384: + XOR_UPPER_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) + EXTRACT_LOWER(BX, Y8, Y9, Y10, Y11, Y12) + ADDQ $320, SI + ADDQ $320, DI + SUBQ $320, CX + JMP finalize + +between_192_and_320: + VMOVDQA Y0, Y4 + VMOVDQA Y1, Y5 + VMOVDQA Y2, Y6 + VMOVDQA Y3, Y7 + VMOVDQA Y0, Y8 + VMOVDQA Y1, Y9 + VMOVDQA Y2, Y10 + VPADDQ TWO, Y3, Y11 + + MOVQ DX, R9 + +chacha_loop_256: + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) + CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) + CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) + SUBQ $2, R9 + JA chacha_loop_256 + + VPADDD Y0, Y4, Y4 + VPADDD Y1, Y5, Y5 + VPADDD Y2, Y6, Y6 + VPADDD Y3, Y7, Y7 + VPADDQ TWO, Y3, Y3 + XOR_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) + VPADDD Y0, Y8, Y8 + VPADDD Y1, Y9, Y9 + VPADDD Y2, Y10, Y10 + VPADDD Y3, Y11, Y11 + VPADDQ TWO, Y3, Y3 + + CMPQ CX, $256 + JB less_than_256 + + XOR_AVX2(DI, SI, 128, Y8, Y9, Y10, Y11, Y12, Y13) + SUBQ $256, CX + TESTQ CX, CX + JE done + + ADDQ $256, SI + ADDQ $256, DI + JMP between_0_and_64 + +less_than_256: + XOR_UPPER_AVX2(DI, SI, 128, Y8, Y9, Y10, Y11, Y12, Y13) + EXTRACT_LOWER(BX, Y8, Y9, Y10, Y11, Y12) + ADDQ $192, SI + ADDQ $192, DI + SUBQ $192, CX + JMP finalize + +between_64_and_192: + VMOVDQA Y0, Y4 + VMOVDQA Y1, Y5 + VMOVDQA Y2, Y6 + VMOVDQA Y3, Y7 + + MOVQ DX, R9 + +chacha_loop_128: + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) + CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) + CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) + SUBQ $2, R9 + JA chacha_loop_128 + + VPADDD Y0, Y4, Y4 + VPADDD Y1, Y5, Y5 + VPADDD Y2, Y6, Y6 + VPADDD Y3, Y7, Y7 + VPADDQ TWO, Y3, Y3 + + CMPQ CX, $128 + JB less_than_128 + + XOR_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) + SUBQ $128, CX + TESTQ CX, CX + JE done + + ADDQ $128, SI + ADDQ $128, DI + JMP between_0_and_64 + +less_than_128: + XOR_UPPER_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) + EXTRACT_LOWER(BX, Y4, Y5, Y6, Y7, Y13) + ADDQ $64, SI + ADDQ $64, DI + SUBQ $64, CX + JMP finalize + +between_0_and_64: + VMOVDQA X0, X4 + VMOVDQA X1, X5 + VMOVDQA X2, X6 + VMOVDQA X3, X7 + + MOVQ DX, R9 + +chacha_loop_64: + CHACHA_QROUND_AVX(X4, X5, X6, X7, X13, X14, X15) + CHACHA_SHUFFLE_AVX(X5, X6, X7) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X13, X14, X15) + CHACHA_SHUFFLE_AVX(X7, X6, X5) + SUBQ $2, R9 + JA chacha_loop_64 + + VPADDD X0, X4, X4 + VPADDD X1, X5, X5 + VPADDD X2, X6, X6 + VPADDD X3, X7, X7 + VMOVDQU ·one<>(SB), X0 + VPADDQ X0, X3, X3 + + CMPQ CX, $64 + JB less_than_64 + + XOR_AVX(DI, SI, 0, X4, X5, X6, X7, X13) + SUBQ $64, CX + JMP done + +less_than_64: + VMOVDQU X4, 0(BX) + VMOVDQU X5, 16(BX) + VMOVDQU X6, 32(BX) + VMOVDQU X7, 48(BX) + +finalize: + XORQ R11, R11 + XORQ R12, R12 + MOVQ CX, BP + +xor_loop: + MOVB 0(SI), R11 + MOVB 0(BX), R12 + XORQ R11, R12 + MOVB R12, 0(DI) + INCQ SI + INCQ BX + INCQ DI + DECQ BP + JA xor_loop + +done: + VMOVDQU X3, 48(AX) + VZEROUPPER + MOVQ R8, SP + MOVQ CX, ret+72(FP) + RET + diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_386.go b/vendor/github.com/aead/chacha20/chacha/chacha_386.go new file mode 100644 index 0000000..97e533d --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_386.go @@ -0,0 +1,60 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build 386,!gccgo,!appengine,!nacl + +package chacha + +import ( + "encoding/binary" + + "golang.org/x/sys/cpu" +) + +func init() { + useSSE2 = cpu.X86.HasSSE2 + useSSSE3 = cpu.X86.HasSSSE3 + useAVX = false + useAVX2 = false +} + +func initialize(state *[64]byte, key []byte, nonce *[16]byte) { + binary.LittleEndian.PutUint32(state[0:], sigma[0]) + binary.LittleEndian.PutUint32(state[4:], sigma[1]) + binary.LittleEndian.PutUint32(state[8:], sigma[2]) + binary.LittleEndian.PutUint32(state[12:], sigma[3]) + copy(state[16:], key[:]) + copy(state[48:], nonce[:]) +} + +// This function is implemented in chacha_386.s +//go:noescape +func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) + +// This function is implemented in chacha_386.s +//go:noescape +func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) + +// This function is implemented in chacha_386.s +//go:noescape +func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int + +func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { + switch { + case useSSSE3: + hChaCha20SSSE3(out, nonce, key) + case useSSE2: + hChaCha20SSE2(out, nonce, key) + default: + hChaCha20Generic(out, nonce, key) + } +} + +func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { + if useSSE2 { + return xorKeyStreamSSE2(dst, src, block, state, rounds) + } else { + return xorKeyStreamGeneric(dst, src, block, state, rounds) + } +} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_386.s b/vendor/github.com/aead/chacha20/chacha/chacha_386.s new file mode 100644 index 0000000..262fc86 --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_386.s @@ -0,0 +1,163 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build 386,!gccgo,!appengine,!nacl + +#include "const.s" +#include "macro.s" + +// FINALIZE xors len bytes from src and block using +// the temp. registers t0 and t1 and writes the result +// to dst. +#define FINALIZE(dst, src, block, len, t0, t1) \ + XORL t0, t0; \ + XORL t1, t1; \ + FINALIZE_LOOP:; \ + MOVB 0(src), t0; \ + MOVB 0(block), t1; \ + XORL t0, t1; \ + MOVB t1, 0(dst); \ + INCL src; \ + INCL block; \ + INCL dst; \ + DECL len; \ + JG FINALIZE_LOOP \ + +#define Dst DI +#define Nonce AX +#define Key BX +#define Rounds DX + +// func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) +TEXT ·hChaCha20SSE2(SB), 4, $0-12 + MOVL out+0(FP), Dst + MOVL nonce+4(FP), Nonce + MOVL key+8(FP), Key + + MOVOU ·sigma<>(SB), X0 + MOVOU 0*16(Key), X1 + MOVOU 1*16(Key), X2 + MOVOU 0*16(Nonce), X3 + MOVL $20, Rounds + +chacha_loop: + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_SHUFFLE_SSE(X3, X2, X1) + SUBL $2, Rounds + JNZ chacha_loop + + MOVOU X0, 0*16(Dst) + MOVOU X3, 1*16(Dst) + RET + +// func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) +TEXT ·hChaCha20SSSE3(SB), 4, $0-12 + MOVL out+0(FP), Dst + MOVL nonce+4(FP), Nonce + MOVL key+8(FP), Key + + MOVOU ·sigma<>(SB), X0 + MOVOU 0*16(Key), X1 + MOVOU 1*16(Key), X2 + MOVOU 0*16(Nonce), X3 + MOVL $20, Rounds + + MOVOU ·rol16<>(SB), X5 + MOVOU ·rol8<>(SB), X6 + +chacha_loop: + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_SSE(X3, X2, X1) + SUBL $2, Rounds + JNZ chacha_loop + + MOVOU X0, 0*16(Dst) + MOVOU X3, 1*16(Dst) + RET + +#undef Dst +#undef Nonce +#undef Key +#undef Rounds + +#define State AX +#define Dst DI +#define Src SI +#define Len DX +#define Tmp0 BX +#define Tmp1 BP + +// func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int +TEXT ·xorKeyStreamSSE2(SB), 4, $0-40 + MOVL dst_base+0(FP), Dst + MOVL src_base+12(FP), Src + MOVL state+28(FP), State + MOVL src_len+16(FP), Len + MOVL $0, ret+36(FP) // Number of bytes written to the keystream buffer - 0 iff len mod 64 == 0 + + MOVOU 0*16(State), X0 + MOVOU 1*16(State), X1 + MOVOU 2*16(State), X2 + MOVOU 3*16(State), X3 + TESTL Len, Len + JZ DONE + +GENERATE_KEYSTREAM: + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + MOVL rounds+32(FP), Tmp0 + +CHACHA_LOOP: + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBL $2, Tmp0 + JA CHACHA_LOOP + + MOVOU 0*16(State), X0 // Restore X0 from state + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + MOVOU ·one<>(SB), X0 + PADDQ X0, X3 + + CMPL Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X0) + MOVOU 0*16(State), X0 // Restore X0 from state + ADDL $64, Src + ADDL $64, Dst + SUBL $64, Len + JZ DONE + JMP GENERATE_KEYSTREAM // There is at least one more plaintext byte + +BUFFER_KEYSTREAM: + MOVL block+24(FP), State + MOVOU X4, 0(State) + MOVOU X5, 16(State) + MOVOU X6, 32(State) + MOVOU X7, 48(State) + MOVL Len, ret+36(FP) // Number of bytes written to the keystream buffer - 0 < Len < 64 + FINALIZE(Dst, Src, State, Len, Tmp0, Tmp1) + +DONE: + MOVL state+28(FP), State + MOVOU X3, 3*16(State) + RET + +#undef State +#undef Dst +#undef Src +#undef Len +#undef Tmp0 +#undef Tmp1 diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go new file mode 100644 index 0000000..635f7de --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go @@ -0,0 +1,76 @@ +// Copyright (c) 2017 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build go1.7,amd64,!gccgo,!appengine,!nacl + +package chacha + +import "golang.org/x/sys/cpu" + +func init() { + useSSE2 = cpu.X86.HasSSE2 + useSSSE3 = cpu.X86.HasSSSE3 + useAVX = cpu.X86.HasAVX + useAVX2 = cpu.X86.HasAVX2 +} + +// This function is implemented in chacha_amd64.s +//go:noescape +func initialize(state *[64]byte, key []byte, nonce *[16]byte) + +// This function is implemented in chacha_amd64.s +//go:noescape +func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) + +// This function is implemented in chacha_amd64.s +//go:noescape +func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) + +// This function is implemented in chachaAVX2_amd64.s +//go:noescape +func hChaCha20AVX(out *[32]byte, nonce *[16]byte, key *[32]byte) + +// This function is implemented in chacha_amd64.s +//go:noescape +func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int + +// This function is implemented in chacha_amd64.s +//go:noescape +func xorKeyStreamSSSE3(dst, src []byte, block, state *[64]byte, rounds int) int + +// This function is implemented in chacha_amd64.s +//go:noescape +func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int + +// This function is implemented in chachaAVX2_amd64.s +//go:noescape +func xorKeyStreamAVX2(dst, src []byte, block, state *[64]byte, rounds int) int + +func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { + switch { + case useAVX: + hChaCha20AVX(out, nonce, key) + case useSSSE3: + hChaCha20SSSE3(out, nonce, key) + case useSSE2: + hChaCha20SSE2(out, nonce, key) + default: + hChaCha20Generic(out, nonce, key) + } +} + +func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { + switch { + case useAVX2: + return xorKeyStreamAVX2(dst, src, block, state, rounds) + case useAVX: + return xorKeyStreamAVX(dst, src, block, state, rounds) + case useSSSE3: + return xorKeyStreamSSSE3(dst, src, block, state, rounds) + case useSSE2: + return xorKeyStreamSSE2(dst, src, block, state, rounds) + default: + return xorKeyStreamGeneric(dst, src, block, state, rounds) + } +} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s new file mode 100644 index 0000000..26a2383 --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s @@ -0,0 +1,1072 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build amd64,!gccgo,!appengine,!nacl + +#include "const.s" +#include "macro.s" + +// FINALIZE xors len bytes from src and block using +// the temp. registers t0 and t1 and writes the result +// to dst. +#define FINALIZE(dst, src, block, len, t0, t1) \ + XORQ t0, t0; \ + XORQ t1, t1; \ + FINALIZE_LOOP:; \ + MOVB 0(src), t0; \ + MOVB 0(block), t1; \ + XORQ t0, t1; \ + MOVB t1, 0(dst); \ + INCQ src; \ + INCQ block; \ + INCQ dst; \ + DECQ len; \ + JG FINALIZE_LOOP \ + +#define Dst DI +#define Nonce AX +#define Key BX +#define Rounds DX + +// func initialize(state *[64]byte, key []byte, nonce *[16]byte) +TEXT ·initialize(SB), 4, $0-40 + MOVQ state+0(FP), Dst + MOVQ key+8(FP), Key + MOVQ nonce+32(FP), Nonce + + MOVOU ·sigma<>(SB), X0 + MOVOU 0*16(Key), X1 + MOVOU 1*16(Key), X2 + MOVOU 0*16(Nonce), X3 + + MOVOU X0, 0*16(Dst) + MOVOU X1, 1*16(Dst) + MOVOU X2, 2*16(Dst) + MOVOU X3, 3*16(Dst) + RET + +// func hChaCha20AVX(out *[32]byte, nonce *[16]byte, key *[32]byte) +TEXT ·hChaCha20AVX(SB), 4, $0-24 + MOVQ out+0(FP), Dst + MOVQ nonce+8(FP), Nonce + MOVQ key+16(FP), Key + + VMOVDQU ·sigma<>(SB), X0 + VMOVDQU 0*16(Key), X1 + VMOVDQU 1*16(Key), X2 + VMOVDQU 0*16(Nonce), X3 + VMOVDQU ·rol16_AVX2<>(SB), X5 + VMOVDQU ·rol8_AVX2<>(SB), X6 + MOVQ $20, Rounds + +CHACHA_LOOP: + CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_AVX(X1, X2, X3) + CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_AVX(X3, X2, X1) + SUBQ $2, Rounds + JNZ CHACHA_LOOP + + VMOVDQU X0, 0*16(Dst) + VMOVDQU X3, 1*16(Dst) + VZEROUPPER + RET + +// func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) +TEXT ·hChaCha20SSE2(SB), 4, $0-24 + MOVQ out+0(FP), Dst + MOVQ nonce+8(FP), Nonce + MOVQ key+16(FP), Key + + MOVOU ·sigma<>(SB), X0 + MOVOU 0*16(Key), X1 + MOVOU 1*16(Key), X2 + MOVOU 0*16(Nonce), X3 + MOVQ $20, Rounds + +CHACHA_LOOP: + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_SHUFFLE_SSE(X3, X2, X1) + SUBQ $2, Rounds + JNZ CHACHA_LOOP + + MOVOU X0, 0*16(Dst) + MOVOU X3, 1*16(Dst) + RET + +// func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) +TEXT ·hChaCha20SSSE3(SB), 4, $0-24 + MOVQ out+0(FP), Dst + MOVQ nonce+8(FP), Nonce + MOVQ key+16(FP), Key + + MOVOU ·sigma<>(SB), X0 + MOVOU 0*16(Key), X1 + MOVOU 1*16(Key), X2 + MOVOU 0*16(Nonce), X3 + MOVOU ·rol16<>(SB), X5 + MOVOU ·rol8<>(SB), X6 + MOVQ $20, Rounds + +chacha_loop: + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) + CHACHA_SHUFFLE_SSE(X3, X2, X1) + SUBQ $2, Rounds + JNZ chacha_loop + + MOVOU X0, 0*16(Dst) + MOVOU X3, 1*16(Dst) + RET + +#undef Dst +#undef Nonce +#undef Key +#undef Rounds + +#define Dst DI +#define Src SI +#define Len R12 +#define Rounds DX +#define Buffer BX +#define State AX +#define Stack SP +#define SavedSP R8 +#define Tmp0 R9 +#define Tmp1 R10 +#define Tmp2 R11 + +// func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int +TEXT ·xorKeyStreamSSE2(SB), 4, $112-80 + MOVQ dst_base+0(FP), Dst + MOVQ src_base+24(FP), Src + MOVQ block+48(FP), Buffer + MOVQ state+56(FP), State + MOVQ rounds+64(FP), Rounds + MOVQ src_len+32(FP), Len + + MOVOU 0*16(State), X0 + MOVOU 1*16(State), X1 + MOVOU 2*16(State), X2 + MOVOU 3*16(State), X3 + + MOVQ Stack, SavedSP + ADDQ $16, Stack + ANDQ $-16, Stack + + TESTQ Len, Len + JZ DONE + + MOVOU ·one<>(SB), X4 + MOVO X0, 0*16(Stack) + MOVO X1, 1*16(Stack) + MOVO X2, 2*16(Stack) + MOVO X3, 3*16(Stack) + MOVO X4, 4*16(Stack) + + CMPQ Len, $64 + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 + JLE GENERATE_KEYSTREAM_192 + +GENERATE_KEYSTREAM_256: + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X3, X15 + PADDQ 4*16(Stack), X15 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X15, X11 + PADDQ 4*16(Stack), X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X11, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + + MOVO X3, 3*16(Stack) // Save X3 + +CHACHA_LOOP_256: + MOVO X4, 5*16(Stack) + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_QROUND_SSE2(X12, X13, X14, X15, X4) + MOVO 5*16(Stack), X4 + MOVO X0, 5*16(Stack) + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + MOVO 5*16(Stack), X0 + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_SHUFFLE_SSE(X13, X14, X15) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + MOVO X4, 5*16(Stack) + CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) + CHACHA_QROUND_SSE2(X12, X13, X14, X15, X4) + MOVO 5*16(Stack), X4 + MOVO X0, 5*16(Stack) + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + MOVO 5*16(Stack), X0 + CHACHA_SHUFFLE_SSE(X3, X2, X1) + CHACHA_SHUFFLE_SSE(X15, X14, X13) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_256 + + PADDL 0*16(Stack), X0 + PADDL 1*16(Stack), X1 + PADDL 2*16(Stack), X2 + PADDL 3*16(Stack), X3 + MOVO X4, 5*16(Stack) // Save X4 + XOR_SSE(Dst, Src, 0, X0, X1, X2, X3, X4) + MOVO 5*16(Stack), X4 // Restore X4 + + MOVO 0*16(Stack), X0 + MOVO 1*16(Stack), X1 + MOVO 2*16(Stack), X2 + MOVO 3*16(Stack), X3 + PADDQ 4*16(Stack), X3 + + PADDL X0, X12 + PADDL X1, X13 + PADDL X2, X14 + PADDL X3, X15 + PADDQ 4*16(Stack), X3 + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 64, X12, X13, X14, X15, X0) + XOR_SSE(Dst, Src, 128, X8, X9, X10, X11, X0) + MOVO 0*16(Stack), X0 // Restore X0 + ADDQ $192, Dst + ADDQ $192, Src + SUBQ $192, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream + JG GENERATE_KEYSTREAM_256 + +GENERATE_KEYSTREAM_192: + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X3, X15 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X3, X11 + PADDQ 4*16(Stack), X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X11, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + +CHACHA_LOOP_192: + CHACHA_QROUND_SSE2(X12, X13, X14, X15, X0) + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + CHACHA_SHUFFLE_SSE(X13, X14, X15) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSE2(X12, X13, X14, X15, X0) + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) + CHACHA_SHUFFLE_SSE(X15, X14, X13) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_192 + + MOVO 0*16(Stack), X0 // Restore X0 + PADDL X0, X12 + PADDL X1, X13 + PADDL X2, X14 + PADDL X3, X15 + PADDQ 4*16(Stack), X3 + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 0, X12, X13, X14, X15, X0) + XOR_SSE(Dst, Src, 64, X8, X9, X10, X11, X0) + MOVO 0*16(Stack), X0 // Restore X0 + ADDQ $128, Dst + ADDQ $128, Src + SUBQ $128, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + +GENERATE_KEYSTREAM_128: + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X3, X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + +CHACHA_LOOP_128: + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X12) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X12) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSE2(X8, X9, X10, X11, X12) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X12) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_128 + + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 0, X8, X9, X10, X11, X12) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream + +GENERATE_KEYSTREAM_64: + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + MOVQ Rounds, Tmp0 + +CHACHA_LOOP_64: + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X8) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSE2(X4, X5, X6, X7, X8) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_64 + + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Src + ADDQ $64, Dst + SUBQ $64, Len + JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. + +BUFFER_KEYSTREAM: + MOVOU X4, 0*16(Buffer) + MOVOU X5, 1*16(Buffer) + MOVOU X6, 2*16(Buffer) + MOVOU X7, 3*16(Buffer) + MOVQ Len, Tmp0 + FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) + +DONE: + MOVQ SavedSP, Stack // Restore stack pointer + MOVOU X3, 3*16(State) + MOVQ Len, ret+72(FP) + RET + +// func xorKeyStreamSSSE3(dst, src []byte, block, state *[64]byte, rounds int) int +TEXT ·xorKeyStreamSSSE3(SB), 4, $144-80 + MOVQ dst_base+0(FP), Dst + MOVQ src_base+24(FP), Src + MOVQ block+48(FP), Buffer + MOVQ state+56(FP), State + MOVQ rounds+64(FP), Rounds + MOVQ src_len+32(FP), Len + + MOVOU 0*16(State), X0 + MOVOU 1*16(State), X1 + MOVOU 2*16(State), X2 + MOVOU 3*16(State), X3 + + MOVQ Stack, SavedSP + ADDQ $16, Stack + ANDQ $-16, Stack + + TESTQ Len, Len + JZ DONE + + MOVOU ·one<>(SB), X4 + MOVOU ·rol16<>(SB), X5 + MOVOU ·rol8<>(SB), X6 + MOVO X0, 0*16(Stack) + MOVO X1, 1*16(Stack) + MOVO X2, 2*16(Stack) + MOVO X3, 3*16(Stack) + MOVO X4, 4*16(Stack) + MOVO X5, 6*16(Stack) + MOVO X6, 7*16(Stack) + + CMPQ Len, $64 + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 + JLE GENERATE_KEYSTREAM_192 + +GENERATE_KEYSTREAM_256: + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X3, X15 + PADDQ 4*16(Stack), X15 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X15, X11 + PADDQ 4*16(Stack), X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X11, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + + MOVO X3, 3*16(Stack) // Save X3 + +CHACHA_LOOP_256: + MOVO X4, 5*16(Stack) + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) + MOVO 5*16(Stack), X4 + MOVO X0, 5*16(Stack) + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) + MOVO 5*16(Stack), X0 + CHACHA_SHUFFLE_SSE(X1, X2, X3) + CHACHA_SHUFFLE_SSE(X13, X14, X15) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + MOVO X4, 5*16(Stack) + CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) + MOVO 5*16(Stack), X4 + MOVO X0, 5*16(Stack) + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) + MOVO 5*16(Stack), X0 + CHACHA_SHUFFLE_SSE(X3, X2, X1) + CHACHA_SHUFFLE_SSE(X15, X14, X13) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_256 + + PADDL 0*16(Stack), X0 + PADDL 1*16(Stack), X1 + PADDL 2*16(Stack), X2 + PADDL 3*16(Stack), X3 + MOVO X4, 5*16(Stack) // Save X4 + XOR_SSE(Dst, Src, 0, X0, X1, X2, X3, X4) + MOVO 5*16(Stack), X4 // Restore X4 + + MOVO 0*16(Stack), X0 + MOVO 1*16(Stack), X1 + MOVO 2*16(Stack), X2 + MOVO 3*16(Stack), X3 + PADDQ 4*16(Stack), X3 + + PADDL X0, X12 + PADDL X1, X13 + PADDL X2, X14 + PADDL X3, X15 + PADDQ 4*16(Stack), X3 + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 64, X12, X13, X14, X15, X0) + XOR_SSE(Dst, Src, 128, X8, X9, X10, X11, X0) + MOVO 0*16(Stack), X0 // Restore X0 + ADDQ $192, Dst + ADDQ $192, Src + SUBQ $192, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream + JG GENERATE_KEYSTREAM_256 + +GENERATE_KEYSTREAM_192: + MOVO X0, X12 + MOVO X1, X13 + MOVO X2, X14 + MOVO X3, X15 + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X3, X11 + PADDQ 4*16(Stack), X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X11, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + + MOVO 6*16(Stack), X1 // Load 16 bit rotate-left constant + MOVO 7*16(Stack), X2 // Load 8 bit rotate-left constant + +CHACHA_LOOP_192: + CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X0, X1, X2) + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, X1, X2) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, X1, X2) + CHACHA_SHUFFLE_SSE(X13, X14, X15) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X0, X1, X2) + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, X1, X2) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, X1, X2) + CHACHA_SHUFFLE_SSE(X15, X14, X13) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_192 + + MOVO 0*16(Stack), X0 // Restore X0 + MOVO 1*16(Stack), X1 // Restore X1 + MOVO 2*16(Stack), X2 // Restore X2 + PADDL X0, X12 + PADDL X1, X13 + PADDL X2, X14 + PADDL X3, X15 + PADDQ 4*16(Stack), X3 + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 0, X12, X13, X14, X15, X0) + XOR_SSE(Dst, Src, 64, X8, X9, X10, X11, X0) + MOVO 0*16(Stack), X0 // Restore X0 + ADDQ $128, Dst + ADDQ $128, Src + SUBQ $128, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + +GENERATE_KEYSTREAM_128: + MOVO X0, X8 + MOVO X1, X9 + MOVO X2, X10 + MOVO X3, X11 + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + PADDQ 4*16(Stack), X7 + MOVQ Rounds, Tmp0 + + MOVO 6*16(Stack), X13 // Load 16 bit rotate-left constant + MOVO 7*16(Stack), X14 // Load 8 bit rotate-left constant + +CHACHA_LOOP_128: + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X12, X13, X14) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X12, X13, X14) + CHACHA_SHUFFLE_SSE(X9, X10, X11) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X12, X13, X14) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X12, X13, X14) + CHACHA_SHUFFLE_SSE(X11, X10, X9) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_128 + + PADDL X0, X8 + PADDL X1, X9 + PADDL X2, X10 + PADDL X3, X11 + PADDQ 4*16(Stack), X3 + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + XOR_SSE(Dst, Src, 0, X8, X9, X10, X11, X12) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream + +GENERATE_KEYSTREAM_64: + MOVO X0, X4 + MOVO X1, X5 + MOVO X2, X6 + MOVO X3, X7 + MOVQ Rounds, Tmp0 + + MOVO 6*16(Stack), X9 // Load 16 bit rotate-left constant + MOVO 7*16(Stack), X10 // Load 8 bit rotate-left constant + +CHACHA_LOOP_64: + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10) + CHACHA_SHUFFLE_SSE(X5, X6, X7) + CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10) + CHACHA_SHUFFLE_SSE(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_64 + + PADDL X0, X4 + PADDL X1, X5 + PADDL X2, X6 + PADDL X3, X7 + PADDQ 4*16(Stack), X3 + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Src + ADDQ $64, Dst + SUBQ $64, Len + JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. + +BUFFER_KEYSTREAM: + MOVOU X4, 0*16(Buffer) + MOVOU X5, 1*16(Buffer) + MOVOU X6, 2*16(Buffer) + MOVOU X7, 3*16(Buffer) + MOVQ Len, Tmp0 + FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) + +DONE: + MOVQ SavedSP, Stack // Restore stack pointer + MOVOU X3, 3*16(State) + MOVQ Len, ret+72(FP) + RET + +// func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int +TEXT ·xorKeyStreamAVX(SB), 4, $144-80 + MOVQ dst_base+0(FP), Dst + MOVQ src_base+24(FP), Src + MOVQ block+48(FP), Buffer + MOVQ state+56(FP), State + MOVQ rounds+64(FP), Rounds + MOVQ src_len+32(FP), Len + + VMOVDQU 0*16(State), X0 + VMOVDQU 1*16(State), X1 + VMOVDQU 2*16(State), X2 + VMOVDQU 3*16(State), X3 + + MOVQ Stack, SavedSP + ADDQ $16, Stack + ANDQ $-16, Stack + + TESTQ Len, Len + JZ DONE + + VMOVDQU ·one<>(SB), X4 + VMOVDQU ·rol16<>(SB), X5 + VMOVDQU ·rol8<>(SB), X6 + VMOVDQA X0, 0*16(Stack) + VMOVDQA X1, 1*16(Stack) + VMOVDQA X2, 2*16(Stack) + VMOVDQA X3, 3*16(Stack) + VMOVDQA X4, 4*16(Stack) + VMOVDQA X5, 6*16(Stack) + VMOVDQA X6, 7*16(Stack) + + CMPQ Len, $64 + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 + JLE GENERATE_KEYSTREAM_192 + +GENERATE_KEYSTREAM_256: + VMOVDQA X0, X12 + VMOVDQA X1, X13 + VMOVDQA X2, X14 + VMOVDQA X3, X15 + VPADDQ 4*16(Stack), X15, X15 + VMOVDQA X0, X8 + VMOVDQA X1, X9 + VMOVDQA X2, X10 + VMOVDQA X15, X11 + VPADDQ 4*16(Stack), X11, X11 + VMOVDQA X0, X4 + VMOVDQA X1, X5 + VMOVDQA X2, X6 + VMOVDQA X11, X7 + VPADDQ 4*16(Stack), X7, X7 + MOVQ Rounds, Tmp0 + + VMOVDQA X3, 3*16(Stack) // Save X3 + +CHACHA_LOOP_256: + VMOVDQA X4, 5*16(Stack) + CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_AVX(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) + VMOVDQA 5*16(Stack), X4 + VMOVDQA X0, 5*16(Stack) + CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) + VMOVDQA 5*16(Stack), X0 + CHACHA_SHUFFLE_AVX(X1, X2, X3) + CHACHA_SHUFFLE_AVX(X13, X14, X15) + CHACHA_SHUFFLE_AVX(X9, X10, X11) + CHACHA_SHUFFLE_AVX(X5, X6, X7) + VMOVDQA X4, 5*16(Stack) + CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_AVX(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) + VMOVDQA 5*16(Stack), X4 + VMOVDQA X0, 5*16(Stack) + CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) + VMOVDQA 5*16(Stack), X0 + CHACHA_SHUFFLE_AVX(X3, X2, X1) + CHACHA_SHUFFLE_AVX(X15, X14, X13) + CHACHA_SHUFFLE_AVX(X11, X10, X9) + CHACHA_SHUFFLE_AVX(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_256 + + VPADDD 0*16(Stack), X0, X0 + VPADDD 1*16(Stack), X1, X1 + VPADDD 2*16(Stack), X2, X2 + VPADDD 3*16(Stack), X3, X3 + VMOVDQA X4, 5*16(Stack) // Save X4 + XOR_AVX(Dst, Src, 0, X0, X1, X2, X3, X4) + VMOVDQA 5*16(Stack), X4 // Restore X4 + + VMOVDQA 0*16(Stack), X0 + VMOVDQA 1*16(Stack), X1 + VMOVDQA 2*16(Stack), X2 + VMOVDQA 3*16(Stack), X3 + VPADDQ 4*16(Stack), X3, X3 + + VPADDD X0, X12, X12 + VPADDD X1, X13, X13 + VPADDD X2, X14, X14 + VPADDD X3, X15, X15 + VPADDQ 4*16(Stack), X3, X3 + VPADDD X0, X8, X8 + VPADDD X1, X9, X9 + VPADDD X2, X10, X10 + VPADDD X3, X11, X11 + VPADDQ 4*16(Stack), X3, X3 + VPADDD X0, X4, X4 + VPADDD X1, X5, X5 + VPADDD X2, X6, X6 + VPADDD X3, X7, X7 + VPADDQ 4*16(Stack), X3, X3 + + XOR_AVX(Dst, Src, 64, X12, X13, X14, X15, X0) + XOR_AVX(Dst, Src, 128, X8, X9, X10, X11, X0) + VMOVDQA 0*16(Stack), X0 // Restore X0 + ADDQ $192, Dst + ADDQ $192, Src + SUBQ $192, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. + JLE GENERATE_KEYSTREAM_128 + CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream + JG GENERATE_KEYSTREAM_256 + +GENERATE_KEYSTREAM_192: + VMOVDQA X0, X12 + VMOVDQA X1, X13 + VMOVDQA X2, X14 + VMOVDQA X3, X15 + VMOVDQA X0, X8 + VMOVDQA X1, X9 + VMOVDQA X2, X10 + VMOVDQA X3, X11 + VPADDQ 4*16(Stack), X11, X11 + VMOVDQA X0, X4 + VMOVDQA X1, X5 + VMOVDQA X2, X6 + VMOVDQA X11, X7 + VPADDQ 4*16(Stack), X7, X7 + MOVQ Rounds, Tmp0 + + VMOVDQA 6*16(Stack), X1 // Load 16 bit rotate-left constant + VMOVDQA 7*16(Stack), X2 // Load 8 bit rotate-left constant + +CHACHA_LOOP_192: + CHACHA_QROUND_AVX(X12, X13, X14, X15, X0, X1, X2) + CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, X1, X2) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, X1, X2) + CHACHA_SHUFFLE_AVX(X13, X14, X15) + CHACHA_SHUFFLE_AVX(X9, X10, X11) + CHACHA_SHUFFLE_AVX(X5, X6, X7) + CHACHA_QROUND_AVX(X12, X13, X14, X15, X0, X1, X2) + CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, X1, X2) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, X1, X2) + CHACHA_SHUFFLE_AVX(X15, X14, X13) + CHACHA_SHUFFLE_AVX(X11, X10, X9) + CHACHA_SHUFFLE_AVX(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_192 + + VMOVDQA 0*16(Stack), X0 // Restore X0 + VMOVDQA 1*16(Stack), X1 // Restore X1 + VMOVDQA 2*16(Stack), X2 // Restore X2 + VPADDD X0, X12, X12 + VPADDD X1, X13, X13 + VPADDD X2, X14, X14 + VPADDD X3, X15, X15 + VPADDQ 4*16(Stack), X3, X3 + VPADDD X0, X8, X8 + VPADDD X1, X9, X9 + VPADDD X2, X10, X10 + VPADDD X3, X11, X11 + VPADDQ 4*16(Stack), X3, X3 + VPADDD X0, X4, X4 + VPADDD X1, X5, X5 + VPADDD X2, X6, X6 + VPADDD X3, X7, X7 + VPADDQ 4*16(Stack), X3, X3 + + XOR_AVX(Dst, Src, 0, X12, X13, X14, X15, X0) + XOR_AVX(Dst, Src, 64, X8, X9, X10, X11, X0) + VMOVDQA 0*16(Stack), X0 // Restore X0 + ADDQ $128, Dst + ADDQ $128, Src + SUBQ $128, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE + CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. + JLE GENERATE_KEYSTREAM_64 + +GENERATE_KEYSTREAM_128: + VMOVDQA X0, X8 + VMOVDQA X1, X9 + VMOVDQA X2, X10 + VMOVDQA X3, X11 + VMOVDQA X0, X4 + VMOVDQA X1, X5 + VMOVDQA X2, X6 + VMOVDQA X3, X7 + VPADDQ 4*16(Stack), X7, X7 + MOVQ Rounds, Tmp0 + + VMOVDQA 6*16(Stack), X13 // Load 16 bit rotate-left constant + VMOVDQA 7*16(Stack), X14 // Load 8 bit rotate-left constant + +CHACHA_LOOP_128: + CHACHA_QROUND_AVX(X8, X9, X10, X11, X12, X13, X14) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X12, X13, X14) + CHACHA_SHUFFLE_AVX(X9, X10, X11) + CHACHA_SHUFFLE_AVX(X5, X6, X7) + CHACHA_QROUND_AVX(X8, X9, X10, X11, X12, X13, X14) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X12, X13, X14) + CHACHA_SHUFFLE_AVX(X11, X10, X9) + CHACHA_SHUFFLE_AVX(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_128 + + VPADDD X0, X8, X8 + VPADDD X1, X9, X9 + VPADDD X2, X10, X10 + VPADDD X3, X11, X11 + VPADDQ 4*16(Stack), X3, X3 + VPADDD X0, X4, X4 + VPADDD X1, X5, X5 + VPADDD X2, X6, X6 + VPADDD X3, X7, X7 + VPADDQ 4*16(Stack), X3, X3 + + XOR_AVX(Dst, Src, 0, X8, X9, X10, X11, X12) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Dst + ADDQ $64, Src + SUBQ $64, Len + JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream + +GENERATE_KEYSTREAM_64: + VMOVDQA X0, X4 + VMOVDQA X1, X5 + VMOVDQA X2, X6 + VMOVDQA X3, X7 + MOVQ Rounds, Tmp0 + + VMOVDQA 6*16(Stack), X9 // Load 16 bit rotate-left constant + VMOVDQA 7*16(Stack), X10 // Load 8 bit rotate-left constant + +CHACHA_LOOP_64: + CHACHA_QROUND_AVX(X4, X5, X6, X7, X8, X9, X10) + CHACHA_SHUFFLE_AVX(X5, X6, X7) + CHACHA_QROUND_AVX(X4, X5, X6, X7, X8, X9, X10) + CHACHA_SHUFFLE_AVX(X7, X6, X5) + SUBQ $2, Tmp0 + JNZ CHACHA_LOOP_64 + + VPADDD X0, X4, X4 + VPADDD X1, X5, X5 + VPADDD X2, X6, X6 + VPADDD X3, X7, X7 + VPADDQ 4*16(Stack), X3, X3 + + CMPQ Len, $64 + JL BUFFER_KEYSTREAM + + XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) + ADDQ $64, Src + ADDQ $64, Dst + SUBQ $64, Len + JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. + +BUFFER_KEYSTREAM: + VMOVDQU X4, 0*16(Buffer) + VMOVDQU X5, 1*16(Buffer) + VMOVDQU X6, 2*16(Buffer) + VMOVDQU X7, 3*16(Buffer) + MOVQ Len, Tmp0 + FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) + +DONE: + MOVQ SavedSP, Stack // Restore stack pointer + VMOVDQU X3, 3*16(State) + VZEROUPPER + MOVQ Len, ret+72(FP) + RET + +#undef Dst +#undef Src +#undef Len +#undef Rounds +#undef Buffer +#undef State +#undef Stack +#undef SavedSP +#undef Tmp0 +#undef Tmp1 +#undef Tmp2 diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_generic.go b/vendor/github.com/aead/chacha20/chacha/chacha_generic.go new file mode 100644 index 0000000..8832d5b --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_generic.go @@ -0,0 +1,319 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +package chacha + +import "encoding/binary" + +var sigma = [4]uint32{0x61707865, 0x3320646e, 0x79622d32, 0x6b206574} + +func xorKeyStreamGeneric(dst, src []byte, block, state *[64]byte, rounds int) int { + for len(src) >= 64 { + chachaGeneric(block, state, rounds) + + for i, v := range block { + dst[i] = src[i] ^ v + } + src = src[64:] + dst = dst[64:] + } + + n := len(src) + if n > 0 { + chachaGeneric(block, state, rounds) + for i, v := range src { + dst[i] = v ^ block[i] + } + } + return n +} + +func chachaGeneric(dst *[64]byte, state *[64]byte, rounds int) { + v00 := binary.LittleEndian.Uint32(state[0:]) + v01 := binary.LittleEndian.Uint32(state[4:]) + v02 := binary.LittleEndian.Uint32(state[8:]) + v03 := binary.LittleEndian.Uint32(state[12:]) + v04 := binary.LittleEndian.Uint32(state[16:]) + v05 := binary.LittleEndian.Uint32(state[20:]) + v06 := binary.LittleEndian.Uint32(state[24:]) + v07 := binary.LittleEndian.Uint32(state[28:]) + v08 := binary.LittleEndian.Uint32(state[32:]) + v09 := binary.LittleEndian.Uint32(state[36:]) + v10 := binary.LittleEndian.Uint32(state[40:]) + v11 := binary.LittleEndian.Uint32(state[44:]) + v12 := binary.LittleEndian.Uint32(state[48:]) + v13 := binary.LittleEndian.Uint32(state[52:]) + v14 := binary.LittleEndian.Uint32(state[56:]) + v15 := binary.LittleEndian.Uint32(state[60:]) + + s00, s01, s02, s03, s04, s05, s06, s07 := v00, v01, v02, v03, v04, v05, v06, v07 + s08, s09, s10, s11, s12, s13, s14, s15 := v08, v09, v10, v11, v12, v13, v14, v15 + + for i := 0; i < rounds; i += 2 { + v00 += v04 + v12 ^= v00 + v12 = (v12 << 16) | (v12 >> 16) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 12) | (v04 >> 20) + v00 += v04 + v12 ^= v00 + v12 = (v12 << 8) | (v12 >> 24) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 7) | (v04 >> 25) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 16) | (v13 >> 16) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 12) | (v05 >> 20) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 8) | (v13 >> 24) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 7) | (v05 >> 25) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 16) | (v14 >> 16) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 12) | (v06 >> 20) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 8) | (v14 >> 24) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 7) | (v06 >> 25) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 16) | (v15 >> 16) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 12) | (v07 >> 20) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 8) | (v15 >> 24) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 7) | (v07 >> 25) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 16) | (v15 >> 16) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 12) | (v05 >> 20) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 8) | (v15 >> 24) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 7) | (v05 >> 25) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 16) | (v12 >> 16) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 12) | (v06 >> 20) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 8) | (v12 >> 24) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 7) | (v06 >> 25) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 16) | (v13 >> 16) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 12) | (v07 >> 20) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 8) | (v13 >> 24) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 7) | (v07 >> 25) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 16) | (v14 >> 16) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 12) | (v04 >> 20) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 8) | (v14 >> 24) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 7) | (v04 >> 25) + } + + v00 += s00 + v01 += s01 + v02 += s02 + v03 += s03 + v04 += s04 + v05 += s05 + v06 += s06 + v07 += s07 + v08 += s08 + v09 += s09 + v10 += s10 + v11 += s11 + v12 += s12 + v13 += s13 + v14 += s14 + v15 += s15 + + s12++ + binary.LittleEndian.PutUint32(state[48:], s12) + if s12 == 0 { // indicates overflow + s13++ + binary.LittleEndian.PutUint32(state[52:], s13) + } + + binary.LittleEndian.PutUint32(dst[0:], v00) + binary.LittleEndian.PutUint32(dst[4:], v01) + binary.LittleEndian.PutUint32(dst[8:], v02) + binary.LittleEndian.PutUint32(dst[12:], v03) + binary.LittleEndian.PutUint32(dst[16:], v04) + binary.LittleEndian.PutUint32(dst[20:], v05) + binary.LittleEndian.PutUint32(dst[24:], v06) + binary.LittleEndian.PutUint32(dst[28:], v07) + binary.LittleEndian.PutUint32(dst[32:], v08) + binary.LittleEndian.PutUint32(dst[36:], v09) + binary.LittleEndian.PutUint32(dst[40:], v10) + binary.LittleEndian.PutUint32(dst[44:], v11) + binary.LittleEndian.PutUint32(dst[48:], v12) + binary.LittleEndian.PutUint32(dst[52:], v13) + binary.LittleEndian.PutUint32(dst[56:], v14) + binary.LittleEndian.PutUint32(dst[60:], v15) +} + +func hChaCha20Generic(out *[32]byte, nonce *[16]byte, key *[32]byte) { + v00 := sigma[0] + v01 := sigma[1] + v02 := sigma[2] + v03 := sigma[3] + v04 := binary.LittleEndian.Uint32(key[0:]) + v05 := binary.LittleEndian.Uint32(key[4:]) + v06 := binary.LittleEndian.Uint32(key[8:]) + v07 := binary.LittleEndian.Uint32(key[12:]) + v08 := binary.LittleEndian.Uint32(key[16:]) + v09 := binary.LittleEndian.Uint32(key[20:]) + v10 := binary.LittleEndian.Uint32(key[24:]) + v11 := binary.LittleEndian.Uint32(key[28:]) + v12 := binary.LittleEndian.Uint32(nonce[0:]) + v13 := binary.LittleEndian.Uint32(nonce[4:]) + v14 := binary.LittleEndian.Uint32(nonce[8:]) + v15 := binary.LittleEndian.Uint32(nonce[12:]) + + for i := 0; i < 20; i += 2 { + v00 += v04 + v12 ^= v00 + v12 = (v12 << 16) | (v12 >> 16) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 12) | (v04 >> 20) + v00 += v04 + v12 ^= v00 + v12 = (v12 << 8) | (v12 >> 24) + v08 += v12 + v04 ^= v08 + v04 = (v04 << 7) | (v04 >> 25) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 16) | (v13 >> 16) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 12) | (v05 >> 20) + v01 += v05 + v13 ^= v01 + v13 = (v13 << 8) | (v13 >> 24) + v09 += v13 + v05 ^= v09 + v05 = (v05 << 7) | (v05 >> 25) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 16) | (v14 >> 16) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 12) | (v06 >> 20) + v02 += v06 + v14 ^= v02 + v14 = (v14 << 8) | (v14 >> 24) + v10 += v14 + v06 ^= v10 + v06 = (v06 << 7) | (v06 >> 25) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 16) | (v15 >> 16) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 12) | (v07 >> 20) + v03 += v07 + v15 ^= v03 + v15 = (v15 << 8) | (v15 >> 24) + v11 += v15 + v07 ^= v11 + v07 = (v07 << 7) | (v07 >> 25) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 16) | (v15 >> 16) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 12) | (v05 >> 20) + v00 += v05 + v15 ^= v00 + v15 = (v15 << 8) | (v15 >> 24) + v10 += v15 + v05 ^= v10 + v05 = (v05 << 7) | (v05 >> 25) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 16) | (v12 >> 16) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 12) | (v06 >> 20) + v01 += v06 + v12 ^= v01 + v12 = (v12 << 8) | (v12 >> 24) + v11 += v12 + v06 ^= v11 + v06 = (v06 << 7) | (v06 >> 25) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 16) | (v13 >> 16) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 12) | (v07 >> 20) + v02 += v07 + v13 ^= v02 + v13 = (v13 << 8) | (v13 >> 24) + v08 += v13 + v07 ^= v08 + v07 = (v07 << 7) | (v07 >> 25) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 16) | (v14 >> 16) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 12) | (v04 >> 20) + v03 += v04 + v14 ^= v03 + v14 = (v14 << 8) | (v14 >> 24) + v09 += v14 + v04 ^= v09 + v04 = (v04 << 7) | (v04 >> 25) + } + + binary.LittleEndian.PutUint32(out[0:], v00) + binary.LittleEndian.PutUint32(out[4:], v01) + binary.LittleEndian.PutUint32(out[8:], v02) + binary.LittleEndian.PutUint32(out[12:], v03) + binary.LittleEndian.PutUint32(out[16:], v12) + binary.LittleEndian.PutUint32(out[20:], v13) + binary.LittleEndian.PutUint32(out[24:], v14) + binary.LittleEndian.PutUint32(out[28:], v15) +} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_ref.go b/vendor/github.com/aead/chacha20/chacha/chacha_ref.go new file mode 100644 index 0000000..526877c --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/chacha_ref.go @@ -0,0 +1,33 @@ +// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build !amd64,!386 gccgo appengine nacl + +package chacha + +import "encoding/binary" + +func init() { + useSSE2 = false + useSSSE3 = false + useAVX = false + useAVX2 = false +} + +func initialize(state *[64]byte, key []byte, nonce *[16]byte) { + binary.LittleEndian.PutUint32(state[0:], sigma[0]) + binary.LittleEndian.PutUint32(state[4:], sigma[1]) + binary.LittleEndian.PutUint32(state[8:], sigma[2]) + binary.LittleEndian.PutUint32(state[12:], sigma[3]) + copy(state[16:], key[:]) + copy(state[48:], nonce[:]) +} + +func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { + return xorKeyStreamGeneric(dst, src, block, state, rounds) +} + +func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { + hChaCha20Generic(out, nonce, key) +} diff --git a/vendor/github.com/aead/chacha20/chacha/const.s b/vendor/github.com/aead/chacha20/chacha/const.s new file mode 100644 index 0000000..c7a94a4 --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/const.s @@ -0,0 +1,53 @@ +// Copyright (c) 2018 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build 386,!gccgo,!appengine,!nacl amd64,!gccgo,!appengine,!nacl + +#include "textflag.h" + +DATA ·sigma<>+0x00(SB)/4, $0x61707865 +DATA ·sigma<>+0x04(SB)/4, $0x3320646e +DATA ·sigma<>+0x08(SB)/4, $0x79622d32 +DATA ·sigma<>+0x0C(SB)/4, $0x6b206574 +GLOBL ·sigma<>(SB), (NOPTR+RODATA), $16 // The 4 ChaCha initialization constants + +// SSE2/SSE3/AVX constants + +DATA ·one<>+0x00(SB)/8, $1 +DATA ·one<>+0x08(SB)/8, $0 +GLOBL ·one<>(SB), (NOPTR+RODATA), $16 // The constant 1 as 128 bit value + +DATA ·rol16<>+0x00(SB)/8, $0x0504070601000302 +DATA ·rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A +GLOBL ·rol16<>(SB), (NOPTR+RODATA), $16 // The PSHUFB 16 bit left rotate constant + +DATA ·rol8<>+0x00(SB)/8, $0x0605040702010003 +DATA ·rol8<>+0x08(SB)/8, $0x0E0D0C0F0A09080B +GLOBL ·rol8<>(SB), (NOPTR+RODATA), $16 // The PSHUFB 8 bit left rotate constant + +// AVX2 constants + +DATA ·one_AVX2<>+0x00(SB)/8, $0 +DATA ·one_AVX2<>+0x08(SB)/8, $0 +DATA ·one_AVX2<>+0x10(SB)/8, $1 +DATA ·one_AVX2<>+0x18(SB)/8, $0 +GLOBL ·one_AVX2<>(SB), (NOPTR+RODATA), $32 // The constant 1 as 256 bit value + +DATA ·two_AVX2<>+0x00(SB)/8, $2 +DATA ·two_AVX2<>+0x08(SB)/8, $0 +DATA ·two_AVX2<>+0x10(SB)/8, $2 +DATA ·two_AVX2<>+0x18(SB)/8, $0 +GLOBL ·two_AVX2<>(SB), (NOPTR+RODATA), $32 + +DATA ·rol16_AVX2<>+0x00(SB)/8, $0x0504070601000302 +DATA ·rol16_AVX2<>+0x08(SB)/8, $0x0D0C0F0E09080B0A +DATA ·rol16_AVX2<>+0x10(SB)/8, $0x0504070601000302 +DATA ·rol16_AVX2<>+0x18(SB)/8, $0x0D0C0F0E09080B0A +GLOBL ·rol16_AVX2<>(SB), (NOPTR+RODATA), $32 // The VPSHUFB 16 bit left rotate constant + +DATA ·rol8_AVX2<>+0x00(SB)/8, $0x0605040702010003 +DATA ·rol8_AVX2<>+0x08(SB)/8, $0x0E0D0C0F0A09080B +DATA ·rol8_AVX2<>+0x10(SB)/8, $0x0605040702010003 +DATA ·rol8_AVX2<>+0x18(SB)/8, $0x0E0D0C0F0A09080B +GLOBL ·rol8_AVX2<>(SB), (NOPTR+RODATA), $32 // The VPSHUFB 8 bit left rotate constant diff --git a/vendor/github.com/aead/chacha20/chacha/macro.s b/vendor/github.com/aead/chacha20/chacha/macro.s new file mode 100644 index 0000000..780108f --- /dev/null +++ b/vendor/github.com/aead/chacha20/chacha/macro.s @@ -0,0 +1,163 @@ +// Copyright (c) 2018 Andreas Auernhammer. All rights reserved. +// Use of this source code is governed by a license that can be +// found in the LICENSE file. + +// +build 386,!gccgo,!appengine,!nacl amd64,!gccgo,!appengine,!nacl + +// ROTL_SSE rotates all 4 32 bit values of the XMM register v +// left by n bits using SSE2 instructions (0 <= n <= 32). +// The XMM register t is used as a temp. register. +#define ROTL_SSE(n, t, v) \ + MOVO v, t; \ + PSLLL $n, t; \ + PSRLL $(32-n), v; \ + PXOR t, v + +// ROTL_AVX rotates all 4/8 32 bit values of the AVX/AVX2 register v +// left by n bits using AVX/AVX2 instructions (0 <= n <= 32). +// The AVX/AVX2 register t is used as a temp. register. +#define ROTL_AVX(n, t, v) \ + VPSLLD $n, v, t; \ + VPSRLD $(32-n), v, v; \ + VPXOR v, t, v + +// CHACHA_QROUND_SSE2 performs a ChaCha quarter-round using the +// 4 XMM registers v0, v1, v2 and v3. It uses only ROTL_SSE2 for +// rotations. The XMM register t is used as a temp. register. +#define CHACHA_QROUND_SSE2(v0, v1, v2, v3, t) \ + PADDL v1, v0; \ + PXOR v0, v3; \ + ROTL_SSE(16, t, v3); \ + PADDL v3, v2; \ + PXOR v2, v1; \ + ROTL_SSE(12, t, v1); \ + PADDL v1, v0; \ + PXOR v0, v3; \ + ROTL_SSE(8, t, v3); \ + PADDL v3, v2; \ + PXOR v2, v1; \ + ROTL_SSE(7, t, v1) + +// CHACHA_QROUND_SSSE3 performs a ChaCha quarter-round using the +// 4 XMM registers v0, v1, v2 and v3. It uses PSHUFB for 8/16 bit +// rotations. The XMM register t is used as a temp. register. +// +// r16 holds the PSHUFB constant for a 16 bit left rotate. +// r8 holds the PSHUFB constant for a 8 bit left rotate. +#define CHACHA_QROUND_SSSE3(v0, v1, v2, v3, t, r16, r8) \ + PADDL v1, v0; \ + PXOR v0, v3; \ + PSHUFB r16, v3; \ + PADDL v3, v2; \ + PXOR v2, v1; \ + ROTL_SSE(12, t, v1); \ + PADDL v1, v0; \ + PXOR v0, v3; \ + PSHUFB r8, v3; \ + PADDL v3, v2; \ + PXOR v2, v1; \ + ROTL_SSE(7, t, v1) + +// CHACHA_QROUND_AVX performs a ChaCha quarter-round using the +// 4 AVX/AVX2 registers v0, v1, v2 and v3. It uses VPSHUFB for 8/16 bit +// rotations. The AVX/AVX2 register t is used as a temp. register. +// +// r16 holds the VPSHUFB constant for a 16 bit left rotate. +// r8 holds the VPSHUFB constant for a 8 bit left rotate. +#define CHACHA_QROUND_AVX(v0, v1, v2, v3, t, r16, r8) \ + VPADDD v0, v1, v0; \ + VPXOR v3, v0, v3; \ + VPSHUFB r16, v3, v3; \ + VPADDD v2, v3, v2; \ + VPXOR v1, v2, v1; \ + ROTL_AVX(12, t, v1); \ + VPADDD v0, v1, v0; \ + VPXOR v3, v0, v3; \ + VPSHUFB r8, v3, v3; \ + VPADDD v2, v3, v2; \ + VPXOR v1, v2, v1; \ + ROTL_AVX(7, t, v1) + +// CHACHA_SHUFFLE_SSE performs a ChaCha shuffle using the +// 3 XMM registers v1, v2 and v3. The inverse shuffle is +// performed by switching v1 and v3: CHACHA_SHUFFLE_SSE(v3, v2, v1). +#define CHACHA_SHUFFLE_SSE(v1, v2, v3) \ + PSHUFL $0x39, v1, v1; \ + PSHUFL $0x4E, v2, v2; \ + PSHUFL $0x93, v3, v3 + +// CHACHA_SHUFFLE_AVX performs a ChaCha shuffle using the +// 3 AVX/AVX2 registers v1, v2 and v3. The inverse shuffle is +// performed by switching v1 and v3: CHACHA_SHUFFLE_AVX(v3, v2, v1). +#define CHACHA_SHUFFLE_AVX(v1, v2, v3) \ + VPSHUFD $0x39, v1, v1; \ + VPSHUFD $0x4E, v2, v2; \ + VPSHUFD $0x93, v3, v3 + +// XOR_SSE extracts 4x16 byte vectors from src at +// off, xors all vectors with the corresponding XMM +// register (v0 - v3) and writes the result to dst +// at off. +// The XMM register t is used as a temp. register. +#define XOR_SSE(dst, src, off, v0, v1, v2, v3, t) \ + MOVOU 0+off(src), t; \ + PXOR v0, t; \ + MOVOU t, 0+off(dst); \ + MOVOU 16+off(src), t; \ + PXOR v1, t; \ + MOVOU t, 16+off(dst); \ + MOVOU 32+off(src), t; \ + PXOR v2, t; \ + MOVOU t, 32+off(dst); \ + MOVOU 48+off(src), t; \ + PXOR v3, t; \ + MOVOU t, 48+off(dst) + +// XOR_AVX extracts 4x16 byte vectors from src at +// off, xors all vectors with the corresponding AVX +// register (v0 - v3) and writes the result to dst +// at off. +// The XMM register t is used as a temp. register. +#define XOR_AVX(dst, src, off, v0, v1, v2, v3, t) \ + VPXOR 0+off(src), v0, t; \ + VMOVDQU t, 0+off(dst); \ + VPXOR 16+off(src), v1, t; \ + VMOVDQU t, 16+off(dst); \ + VPXOR 32+off(src), v2, t; \ + VMOVDQU t, 32+off(dst); \ + VPXOR 48+off(src), v3, t; \ + VMOVDQU t, 48+off(dst) + +#define XOR_AVX2(dst, src, off, v0, v1, v2, v3, t0, t1) \ + VMOVDQU (0+off)(src), t0; \ + VPERM2I128 $32, v1, v0, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (0+off)(dst); \ + VMOVDQU (32+off)(src), t0; \ + VPERM2I128 $32, v3, v2, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (32+off)(dst); \ + VMOVDQU (64+off)(src), t0; \ + VPERM2I128 $49, v1, v0, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (64+off)(dst); \ + VMOVDQU (96+off)(src), t0; \ + VPERM2I128 $49, v3, v2, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (96+off)(dst) + +#define XOR_UPPER_AVX2(dst, src, off, v0, v1, v2, v3, t0, t1) \ + VMOVDQU (0+off)(src), t0; \ + VPERM2I128 $32, v1, v0, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (0+off)(dst); \ + VMOVDQU (32+off)(src), t0; \ + VPERM2I128 $32, v3, v2, t1; \ + VPXOR t0, t1, t0; \ + VMOVDQU t0, (32+off)(dst); \ + +#define EXTRACT_LOWER(dst, v0, v1, v2, v3, t0) \ + VPERM2I128 $49, v1, v0, t0; \ + VMOVDQU t0, 0(dst); \ + VPERM2I128 $49, v3, v2, t0; \ + VMOVDQU t0, 32(dst) diff --git a/vendor/modules.txt b/vendor/modules.txt index 3cdfc45..3c7837b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -15,6 +15,8 @@ blitter.com/go/kyber blitter.com/go/mtwist # blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae blitter.com/go/newhope +# github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da +github.com/aead/chacha20/chacha # github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f github.com/jameskeane/bcrypt # github.com/klauspost/cpuid v1.2.2 diff --git a/xs/xs.go b/xs/xs.go index c670e25..41c2c1b 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -624,7 +624,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.BoolVar(&dbg, "d", false, "debug logging") - flag.StringVar(&cipherAlg, "c", "C_AES_256", "session `cipher` [C_AES_256 | C_TWOFISH_128 | C_BLOWFISH_64 | C_CRYPTMT1]") + flag.StringVar(&cipherAlg, "c", "C_AES_256", "session `cipher` [C_AES_256 | C_TWOFISH_128 | C_BLOWFISH_64 | C_CRYPTMT1 | C_CHACHA20_12]") flag.StringVar(&hmacAlg, "m", "H_SHA256", "session `HMAC` [H_SHA256 | H_SHA512]") flag.StringVar(&kexAlg, "k", "KEX_HERRADURA512", "KEx `alg` [KEX_HERRADURA{256/512/1024/2048} | KEX_KYBER{512/768/1024} | KEX_NEWHOPE | KEX_NEWHOPE_SIMPLE]") flag.StringVar(&kcpMode, "K", "unused", "KCP `alg`, one of [KCP_NONE | KCP_AES | KCP_BLOWFISH | KCP_CAST5 | KCP_SM4 | KCP_SALSA20 | KCP_SIMPLEXOR | KCP_TEA | KCP_3DES | KCP_TWOFISH | KCP_XTEA] to use KCP (github.com/xtaci/kcp-go) reliable UDP instead of TCP") diff --git a/xsnet/chan.go b/xsnet/chan.go index 6df470a..79dfd68 100644 --- a/xsnet/chan.go +++ b/xsnet/chan.go @@ -21,6 +21,7 @@ import ( "log" "blitter.com/go/cryptmt" + "github.com/aead/chacha20/chacha" "golang.org/x/crypto/blowfish" "golang.org/x/crypto/twofish" @@ -104,6 +105,18 @@ func (hc Conn) getStream(keymat []byte) (rc cipher.Stream, mc hash.Hash, err err case CAlgCryptMT1: rc = cryptmt.New(nil, nil, keymat) log.Printf("[cipher CRYPTMT1 (%d)]\n", copts) + case CAlgChaCha20_12: + keymat = expandKeyMat(keymat, chacha.KeySize) + key = keymat[0:chacha.KeySize] + ivlen = chacha.INonceSize + iv = keymat[chacha.KeySize : chacha.KeySize+ivlen] + rc, err = chacha.NewCipher(iv, key, 20) + if err != nil { + log.Printf("[ChaCha20 config error]\n") + fmt.Printf("[ChaCha20 config error]\n") + } + // TODO: SetCounter() to something derived from key or nonce or extra keymat? + log.Printf("[cipher CHACHA20_12 (%d)]\n", copts) default: log.Printf("[invalid cipher (%d)]\n", copts) fmt.Printf("DOOFUS SET A VALID CIPHER ALG (%d)\n", copts) diff --git a/xsnet/consts.go b/xsnet/consts.go index 6492c67..840937a 100644 --- a/xsnet/consts.go +++ b/xsnet/consts.go @@ -99,6 +99,7 @@ const ( CAlgTwofish128 // golang.org/x/crypto/twofish CAlgBlowfish64 // golang.org/x/crypto/blowfish CAlgCryptMT1 //cryptmt using mtwist64 + CAlgChaCha20_12 CAlgNoneDisallowed ) diff --git a/xsnet/net.go b/xsnet/net.go index 56ef46d..3d1034a 100644 --- a/xsnet/net.go +++ b/xsnet/net.go @@ -145,6 +145,8 @@ func (c *CSCipherAlg) String() string { return "C_BLOWFISH_64" case CAlgCryptMT1: return "C_CRYPTMT1" + case CAlgChaCha20_12: + return "C_CHACHA20_12" default: return "C_ERR_UNK" } @@ -280,6 +282,8 @@ func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { hc.kex = KEX_HERRADURA512 log.Printf("[KEx alg %d ?? defaults to %d]\n", kexAlg, hc.kex) } + + //hc.logCipherText = true // !!! DEBUGGING ONLY !!! NEVER DEPLOY this uncommented !!! return } @@ -298,7 +302,7 @@ func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { // // Session (symmetric) crypto // -// C_AES_256 C_TWOFISH_128 C_BLOWFISH_128 C_CRYPTMT1 +// C_AES_256 C_TWOFISH_128 C_BLOWFISH_128 C_CRYPTMT1 C_CHACHA20_12 // // Session HMACs // @@ -322,6 +326,10 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { log.Println("[extension arg = C_CRYPTMT1]") hc.cipheropts &= (0xFFFFFF00) hc.cipheropts |= CAlgCryptMT1 + case "C_CHACHA20_12": + log.Println("[extension arg = C_CHACHA20_12]") + hc.cipheropts &= (0xFFFFFF00) + hc.cipheropts |= CAlgChaCha20_12 case "H_SHA256": log.Println("[extension arg = H_SHA256]") hc.cipheropts &= (0xFFFF00FF) From 138f855a82802048d03b2994676017cf1c6dd9e5 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 21 Feb 2020 20:48:23 -0800 Subject: [PATCH 083/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9bbf816..d99f5d7 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.17 +VERSION := 0.8.18 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. From f3bf6d904122740c283c08acffdad1d967f4ba2e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sun, 23 Feb 2020 21:52:20 -0800 Subject: [PATCH 084/134] Added login timeout (30s) Signed-off-by: Russ Magee --- xs/xs.go | 27 +++++++++++++++++++-------- xsd/xsd.go | 9 +++++++++ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/xs/xs.go b/xs/xs.go index 41c2c1b..ce924bc 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -420,7 +420,7 @@ func doShellMode(isInteractive bool, conn *xsnet.Conn, oldState *xs.State, rec * // exit with inerr == nil _, inerr := io.Copy(os.Stdout, conn) if inerr != nil { - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec + restoreTermState(oldState) // Copy operations and user logging off will cause // a "use of closed network connection" so handle that // gracefully here @@ -435,7 +435,7 @@ func doShellMode(isInteractive bool, conn *xsnet.Conn, oldState *xs.State, rec * if isInteractive { log.Println("[* Got EOF *]") - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec + restoreTermState(oldState) exitWithStatus(int(rec.Status())) } } @@ -463,7 +463,7 @@ func doShellMode(isInteractive bool, conn *xsnet.Conn, oldState *xs.State, rec * if outerr != nil { log.Println(outerr) fmt.Println(outerr) - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // #nosec + restoreTermState(oldState) log.Println("[Hanging up]") exitWithStatus(0) } @@ -848,12 +848,17 @@ func main() { } // #gv:s/label=\"main\$1\"/label=\"deferRestore\"/ // TODO:.gv:main:1:deferRestore - defer func() { _ = xs.Restore(int(os.Stdin.Fd()), oldState) }() // nolint: errcheck,gosec + defer restoreTermState(oldState) } else { log.Println("NOT A TTY") } } + // Start login timeout here and disconnect if user/pass phase stalls + loginTimeout := time.AfterFunc(30*time.Second, func() { + fmt.Printf(" .. [login timeout]") + }) + if len(authCookie) == 0 { //No auth token, prompt for password fmt.Printf("Gimme cookie:") @@ -864,6 +869,8 @@ func main() { } authCookie = string(ab) } + + _ = loginTimeout.Stop() // Security scrub runtime.GC() @@ -871,9 +878,9 @@ func main() { rec := xs.NewSession(op, []byte(uname), []byte(remoteHost), []byte(os.Getenv("TERM")), []byte(cmdStr), []byte(authCookie), 0) sendErr := sendSessionParams(&conn, rec) if sendErr != nil { - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec + restoreTermState(oldState) rec.SetStatus(254) - fmt.Fprintln(os.Stderr, "Error: server rejected secure proposal params") // nolint: errcheck + fmt.Fprintln(os.Stderr, "Error: server rejected secure proposal params or login timed out") // nolint: errcheck exitWithStatus(int(rec.Status())) //log.Fatal(sendErr) } @@ -930,19 +937,23 @@ func main() { } if rec.Status() != 0 { - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec + restoreTermState(oldState) fmt.Fprintln(os.Stderr, "Session exited with status:", rec.Status()) // nolint: errcheck } } if oldState != nil { - _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: gosec + restoreTermState(oldState) oldState = nil } exitWithStatus(int(rec.Status())) } +func restoreTermState(oldState *xs.State) { + _ = xs.Restore(int(os.Stdin.Fd()), oldState) // nolint: errcheck,gosec +} + // exitWithStatus wraps os.Exit() plus does any required pprof housekeeping func exitWithStatus(status int) { if cpuprofile != "" { diff --git a/xsd/xsd.go b/xsd/xsd.go index e46c2a7..ae654de 100755 --- a/xsd/xsd.go +++ b/xsd/xsd.go @@ -26,6 +26,7 @@ import ( "strings" "sync" "syscall" + "time" "unsafe" "blitter.com/go/goutmp" @@ -640,6 +641,13 @@ func main() { go func(hc *xsnet.Conn) (e error) { defer hc.Close() // nolint: errcheck + // Start login timeout here and disconnect if user/pass phase stalls + loginTimeout := time.AfterFunc(30*time.Second, func() { + logger.LogNotice(fmt.Sprintln("Login timed out")) // nolint: errcheck,gosec + hc.Write([]byte{0}) // nolint: gosec,errcheck + hc.Close() + }) + //We use io.ReadFull() here to guarantee we consume //just the data we want for the xs.Session, and no more. //Otherwise data will be sitting in the channel that isn't @@ -719,6 +727,7 @@ func main() { } } + _ = loginTimeout.Stop() // Security scrub rec.ClearAuthCookie() From 6ac6f02b3b88faeeccc436e241904e8fc3e99f9d Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sun, 23 Feb 2020 21:52:45 -0800 Subject: [PATCH 085/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index d99f5d7..eeb9f77 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.18 +VERSION := 0.8.19 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. From f6910162b411000e80d994bffed0a63dde1b9ffb Mon Sep 17 00:00:00 2001 From: Russtopia Date: Mon, 24 Feb 2020 16:50:55 -0800 Subject: [PATCH 086/134] Update 'README.md' ChaCha20 support --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7b59dba..4112d98 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,7 @@ Currently supported session algorithms: * Twofish-128 * Blowfish-64 * CryptMTv1 (64bit) (https://eprint.iacr.org/2005/165.pdf) +* ChaCha20 (https://github.com/aead/chacha20) [HMAC] * HMAC-SHA256 From 64a314df113226fe3cbe9d04554961c1138d6210 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 25 Feb 2020 21:16:55 -0800 Subject: [PATCH 087/134] Client->Remote xc progress indication using pv Signed-off-by: Russ Magee --- xs/xs.go | 98 +++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 76 insertions(+), 22 deletions(-) diff --git a/xs/xs.go b/xs/xs.go index ce924bc..df97811 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -240,21 +240,21 @@ func GetSize() (cols, rows int, err error) { return } -// doCopyMode begins a secure xs local<->remote file copy operation. -// -// TODO: reduce gocyclo -func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, rec *xs.Session) (exitStatus uint32, err error) { - if remoteDest { - log.Println("local files:", files, "remote filepath:", string(rec.Cmd())) +func buildCmdLocalToRemote(copyQuiet bool, copyLimitBPS uint, files string) (captureStderr bool, cmd string, args []string) { + // TODO: detect if we have 'pv' + // pipeview http://www.ivarch.com/programs/pv.shtml + // and use it for nice client progress display. + _, pverr := os.Stat("/usr/bin/pv") + if pverr != nil { + _, pverr = os.Stat("/usr/local/bin/pv") + } - var c *exec.Cmd + if pverr != nil { + // copyQuiet and copyLimitBPS are not applicable in dumb copy mode - //os.Clearenv() - //os.Setenv("HOME", u.HomeDir) - //os.Setenv("TERM", "vt102") // TODO: server or client option? - - cmdName := "/bin/tar" - cmdArgs := []string{"-cz", "-f", "/dev/stdout"} + captureStderr = true + cmd = "/bin/tar" + args = []string{"-cz", "-f", "/dev/stdout"} files = strings.TrimSpace(files) // Awesome fact: tar actually can take multiple -C args, and // changes to the dest dir *as it sees each one*. This enables @@ -272,22 +272,70 @@ func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, rec *xs.Session v, _ = filepath.Abs(v) // #nosec dirTmp, fileTmp := path.Split(v) if dirTmp == "" { - cmdArgs = append(cmdArgs, fileTmp) + args = append(args, fileTmp) } else { - cmdArgs = append(cmdArgs, "-C", dirTmp, fileTmp) + args = append(args, "-C", dirTmp, fileTmp) } } + } else { + captureStderr = copyQuiet + bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d", copyLimitBPS) + displayOpts := " -f -pr " + cmd = "/bin/bash" + args = []string{"-c", "/bin/tar -cz -f /dev/stdout "} + files = strings.TrimSpace(files) + // Awesome fact: tar actually can take multiple -C args, and + // changes to the dest dir *as it sees each one*. This enables + // its use below, where clients can send scattered sets of source + // files and dirs to be extracted to a single dest dir server-side, + // whilst preserving the subtrees of dirs on the other side. + // Eg., tar -c -f /dev/stdout -C /dirA fileInA -C /some/where/dirB fileInB /foo/dirC + // packages fileInA, fileInB, and dirC at a single toplevel in the tar. + // The tar authors are/were real smarties :) + // + // This is the 'scatter/gather' logic to allow specification of + // files and dirs in different trees to be deposited in a single + // remote destDir. + for _, v := range strings.Split(files, " ") { + v, _ = filepath.Abs(v) // #nosec + dirTmp, fileTmp := path.Split(v) + if dirTmp == "" { + args[1] = args[1] + fileTmp + " " + } else { + args[1] = args[1] + " -C " + dirTmp + " " + fileTmp + " " + } + } + args[1] = args[1] + "| pv" + displayOpts + bandwidthInBytesPerSec + " -s $(du -cb " + files + " | tail -1 | cut -f 1) -c" + } - log.Printf("[%v %v]\n", cmdName, cmdArgs) - // NOTE the lack of quotes around --xform option's sed expression. - // When args are passed in exec() format, no quoting is required - // (as this isn't input from a shell) (right? -rlm 20180823) + log.Printf("[%v %v]\n", cmd, args) + return +} + +// doCopyMode begins a secure xs local<->remote file copy operation. +// +// TODO: reduce gocyclo +func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, copyQuiet bool, copyLimitBPS uint, rec *xs.Session) (exitStatus uint32, err error) { + if remoteDest { + log.Println("local files:", files, "remote filepath:", string(rec.Cmd())) + + var c *exec.Cmd + + //os.Clearenv() + //os.Setenv("HOME", u.HomeDir) + //os.Setenv("TERM", "vt102") // TODO: server or client option? + + captureStderr, cmdName, cmdArgs := buildCmdLocalToRemote(copyQuiet, copyLimitBPS, strings.TrimSpace(files)) c = exec.Command(cmdName, cmdArgs...) // #nosec c.Dir, _ = os.Getwd() // #nosec log.Println("[wd:", c.Dir, "]") c.Stdout = conn stdErrBuffer := new(bytes.Buffer) - c.Stderr = stdErrBuffer + if captureStderr { + c.Stderr = stdErrBuffer + } else { + c.Stderr = os.Stderr + } // Start the command (no pty) err = c.Start() // returns immediately @@ -320,7 +368,9 @@ func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, rec *xs.Session // an ExitStatus() method with the same signature. if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { exitStatus = uint32(status.ExitStatus()) - fmt.Print(stdErrBuffer) + if captureStderr { + fmt.Print(stdErrBuffer) + } } } } @@ -612,6 +662,8 @@ func main() { var copySrc []byte var copyDst string + var copyQuiet bool + var copyLimitBPS uint var authCookie string var chaffEnabled bool @@ -649,6 +701,8 @@ func main() { shellMode = true flag.Usage = usageShell } else { + flag.BoolVar(©Quiet, "q", false, "do not output progress bar during copy") + flag.UintVar(©LimitBPS, "L", 8589934592, "copy max rate in bytes per sec") flag.Usage = usageCp } flag.Parse() @@ -932,7 +986,7 @@ func main() { launchTuns(&conn, remoteHost, tunSpecStr) doShellMode(isInteractive, &conn, oldState, rec) } else { // copyMode - s, _ := doCopyMode(&conn, pathIsDest, fileArgs, rec) // nolint: errcheck,gosec + s, _ := doCopyMode(&conn, pathIsDest, fileArgs, copyQuiet, copyLimitBPS, rec) // nolint: errcheck,gosec rec.SetStatus(s) } From 2e16c9a692d9724eba20347476758b49f1e56e29 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 25 Feb 2020 23:08:42 -0800 Subject: [PATCH 088/134] Remote->Client cp with pv status TODO: Remote total bytesize estimate Signed-off-by: Russ Magee --- xs/xs.go | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/xs/xs.go b/xs/xs.go index df97811..07f64d5 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -240,8 +240,34 @@ func GetSize() (cols, rows int, err error) { return } +func buildCmdRemoteToLocal(copyQuiet bool, copyLimitBPS uint, destPath, files string) (captureStderr bool, cmd string, args []string) { + // Detect if we have 'pv' + // pipeview http://www.ivarch.com/programs/pv.shtml + // and use it for nice client progress display. + _, pverr := os.Stat("/usr/bin/pv") + if pverr != nil { + _, pverr = os.Stat("/usr/local/bin/pv") + } + + if copyQuiet || pverr != nil { + // copyQuiet and copyLimitBPS are not applicable in dumb copy mode + captureStderr = true + cmd = "/bin/tar" + + args = []string{"-xz", "-C", destPath} +} else { + // TODO: Query remote side for total file/dir size + bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d ", copyLimitBPS) + displayOpts := " -f -pr " + cmd = "/bin/bash" + args = []string{"-c", "pv " + displayOpts + bandwidthInBytesPerSec + "| tar -xz -C " + destPath} + } + log.Printf("[%v %v]\n", cmd, args) + return +} + func buildCmdLocalToRemote(copyQuiet bool, copyLimitBPS uint, files string) (captureStderr bool, cmd string, args []string) { - // TODO: detect if we have 'pv' + // Detect if we have 'pv' // pipeview http://www.ivarch.com/programs/pv.shtml // and use it for nice client progress display. _, pverr := os.Stat("/usr/bin/pv") @@ -403,17 +429,11 @@ func doCopyMode(conn *xsnet.Conn, remoteDest bool, files string, copyQuiet bool, } } else { log.Println("remote filepath:", string(rec.Cmd()), "local files:", files) - var c *exec.Cmd - - cmdName := "/bin/tar" destPath := files - cmdArgs := []string{"-xz", "-C", destPath} - log.Printf("[%v %v]\n", cmdName, cmdArgs) - // NOTE the lack of quotes around --xform option's sed expression. - // When args are passed in exec() format, no quoting is required - // (as this isn't input from a shell) (right? -rlm 20180823) - //cmdArgs := []string{"-xvz", "-C", destPath, `--xform=s#.*/\(.*\)#\1#`} + _, cmdName, cmdArgs := buildCmdRemoteToLocal(copyQuiet, copyLimitBPS, destPath, strings.TrimSpace(files)) + + var c *exec.Cmd c = exec.Command(cmdName, cmdArgs...) // #nosec c.Stdin = conn c.Stdout = os.Stdout From d1076c9bd9c835deaf93c3176c5e5a23bb7e697a Mon Sep 17 00:00:00 2001 From: Russtopia Date: Tue, 25 Feb 2020 23:25:39 -0800 Subject: [PATCH 089/134] Update 'README.md' with xc progress info 'pv' util progress notes added --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4112d98..6014981 100644 --- a/README.md +++ b/README.md @@ -184,6 +184,8 @@ xc uses a 'tarpipe' to send file data over the encrypted channel. Use the -d fla NOTE: Renaming while copying (eg., 'cp /foo/bar/fileA ./fileB') is NOT supported. Put another way, the destination (whether local or remote) must ALWAYS be a directory. +If the 'pv' pipeview utility is available (http://www.ivarch.com/programs/pv.shtml) file transfer progress and bandwidth control will be available (suppress the former with the -q option, set the latter with -L <bytes_per_second>). + ### Tunnels Simple tunnels (client -> server, no reverse tunnels for now) are supported. From b3ebd0db17adea71e1ee7468f5e002a3c201bbfb Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Tue, 25 Feb 2020 23:33:09 -0800 Subject: [PATCH 090/134] Bumped version Signed-off-by: Russ Magee --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eeb9f77..b919883 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.19 +VERSION := 0.8.20 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. From e803d3da09f9815878a1f6c414b50481c6fadc2a Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 26 Feb 2020 20:25:01 -0800 Subject: [PATCH 091/134] Bumped version, xc reports -v correctly Signed-off-by: Russ Magee --- Makefile | 2 +- xs/xs.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index b919883..22e6693 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION := 0.8.20 +VERSION := 0.8.21 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall ## Tag version of binaries with build info wrt. diff --git a/xs/xs.go b/xs/xs.go index 07f64d5..452157f 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -727,6 +727,11 @@ func main() { } flag.Parse() + if vopt { + fmt.Printf("version %s (%s)\n", version, gitCommit) + exitWithStatus(0) + } + if cpuprofile != "" { f, err := os.Create(cpuprofile) if err != nil { @@ -802,11 +807,6 @@ func main() { exitWithStatus(0) } - if vopt { - fmt.Printf("version %s (%s)\n", version, gitCommit) - exitWithStatus(0) - } - if len(cmdStr) != 0 && (len(copySrc) != 0 || len(copyDst) != 0) { log.Fatal("incompatible options -- either cmd (-x) or copy ops but not both") } From 4686361ece0c326973ddc9255bc15676e0ed2f7c Mon Sep 17 00:00:00 2001 From: Russtopia Date: Sun, 29 Mar 2020 23:22:22 -0700 Subject: [PATCH 092/134] Update 'CODE_OF_CONDUCT.md' --- CODE_OF_MERIT.md => CODE_OF_CONDUCT.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename CODE_OF_MERIT.md => CODE_OF_CONDUCT.md (94%) diff --git a/CODE_OF_MERIT.md b/CODE_OF_CONDUCT.md similarity index 94% rename from CODE_OF_MERIT.md rename to CODE_OF_CONDUCT.md index 149ec81..9bf135e 100644 --- a/CODE_OF_MERIT.md +++ b/CODE_OF_CONDUCT.md @@ -55,5 +55,7 @@ to the project. Any intent to deviate the project from its original purpose of existence will constitute grounds for remedial action which may include expulsion from the project. -This document is based upon the Code of Merit version 1.0 (Dec 4 2018). +This document is based upon the original Code of Merit version 1.0 (Dec 4 2018). (https://web.archive.org/web/20181204203029/http://code-of-merit.org/) + +Updated version (Mar 29 2020): https://codeofmerit.org/code/ From 09c2408c06b890342046178a5cb5369634e55fab Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 3 Apr 2020 20:08:45 -0700 Subject: [PATCH 093/134] Tweaked 'pv' progress bar output format options Signed-off-by: Russ Magee --- go.mod | 1 + go.sum | 2 ++ xs/xs.go | 4 ++-- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 1e35ba1..f010a64 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( blitter.com/go/cryptmt v1.0.2 blitter.com/go/goutmp v1.0.2 blitter.com/go/herradurakex v1.0.0 + blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95 // indirect blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 blitter.com/go/mtwist v1.0.1 // indirect blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae diff --git a/go.sum b/go.sum index 7760711..9777f12 100644 --- a/go.sum +++ b/go.sum @@ -12,6 +12,8 @@ blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= blitter.com/go/goutmp v1.0.2/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= +blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95 h1:X6rWBxK+ZqALnpxsk0Rt0VHx5GVLK3Ldz46f+3RCXe8= +blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95/go.mod h1:9Da1oy0t9aUw3wviba+2mP1inbLGbDuCKAO3mmGQha4= blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 h1:D45AnrNphtvczBXRp5JQicZRTgaK/Is5bgPDDvRKhTc= blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9/go.mod h1:SK6QfGG72lIfKW1Td0wH7f0wwN5nSIhV3K+wvzGNjrw= blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= diff --git a/xs/xs.go b/xs/xs.go index 452157f..a4059af 100755 --- a/xs/xs.go +++ b/xs/xs.go @@ -258,7 +258,7 @@ func buildCmdRemoteToLocal(copyQuiet bool, copyLimitBPS uint, destPath, files st } else { // TODO: Query remote side for total file/dir size bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d ", copyLimitBPS) - displayOpts := " -f -pr " + displayOpts := " -pre " cmd = "/bin/bash" args = []string{"-c", "pv " + displayOpts + bandwidthInBytesPerSec + "| tar -xz -C " + destPath} } @@ -306,7 +306,7 @@ func buildCmdLocalToRemote(copyQuiet bool, copyLimitBPS uint, files string) (cap } else { captureStderr = copyQuiet bandwidthInBytesPerSec := " -L " + fmt.Sprintf("%d", copyLimitBPS) - displayOpts := " -f -pr " + displayOpts := " -pre " cmd = "/bin/bash" args = []string{"-c", "/bin/tar -cz -f /dev/stdout "} files = strings.TrimSpace(files) From 5448dbc7b944133563bfe77e23fe9ef2f6fb2112 Mon Sep 17 00:00:00 2001 From: Russtopia Date: Thu, 16 Apr 2020 00:19:03 -0700 Subject: [PATCH 094/134] Update 'README.md' wrt. default xsd passwd file mode --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 6014981..084104f 100644 --- a/README.md +++ b/README.md @@ -55,8 +55,7 @@ Packets are subject to padding (random size, randomly applied as prefix or postf Chaffing and tunnels, if specified, are set up during initial client->server connection. Packets from the client local port(s) are sent through the main secured connection to the server's remote port(s), and vice versa, tagged with a chaff or tunnel specifier so that they can be discarded as chaff or de-multiplexed and delivered to the proper tunnel endpoints, respectively. ### Accounts and Passwords -Within the xspasswd/ directory is a password-setting utility. XS uses its own password file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. This is currently done to allow alternate login credentials via xs vs. console/ssh login, due to the experimental nature of the program. At some point in the future an option to use the system's /etc/passwd and /etc/shadow may be implemented, making the use of the auxilliary xspasswd utility optional or obsolete. - +Within the ```xspasswd/``` directory is a password-setting utility, ```xspasswd```, used if one wishes ```xs``` access to use separate credentials from those of the default (likely ssh) login method. In this mode, ```xsd``` uses its own password file distinct from the system /etc/passwd to authenticate clients, using standard bcrypt+salt storage. Activate this mode by invoking ```xsd``` with ```-s false```. HERRADURA KEX From cba36b66f18c400fd113f60b10633d84617cd63b Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sun, 26 Apr 2020 01:03:29 +0000 Subject: [PATCH 095/134] FreeBSD 12 support (NOTE: xc not yet functional) Signed-off-by: Russ Magee --- Makefile | 1 + auth.go | 31 +- go.mod | 7 +- go.sum | 10 +- logger/logger_bsd.go | 156 + logger/logger_linux.go | 2 +- termmode_bsd.go | 127 + termmode_unix.go => termmode_linux.go | 3 +- vendor/blitter.com/go/chacha20/LICENSE | 661 -- vendor/blitter.com/go/chacha20/README.md | 13 - vendor/blitter.com/go/chacha20/chacha20.go | 290 - vendor/blitter.com/go/chacha20/go.mod | 8 - vendor/blitter.com/go/chacha20/go.sum | 12 - .../go/chacha20/internal/api/api.go | 59 - .../go/chacha20/internal/hardware/impl.go | 27 - .../chacha20/internal/hardware/impl_amd64.go | 88 - .../chacha20/internal/hardware/impl_amd64.s | 1682 ---- .../go/chacha20/internal/ref/impl.go | 374 - vendor/blitter.com/go/cryptmt/README.md | 6 - vendor/blitter.com/go/cryptmt/cryptmt.go | 78 - vendor/blitter.com/go/goutmp/LICENSE.mit | 21 - vendor/blitter.com/go/goutmp/README.md | 17 - vendor/blitter.com/go/goutmp/goutmp.go | 130 - .../blitter.com/go/herradurakex/LICENSE.gpl | 674 -- .../blitter.com/go/herradurakex/LICENSE.mit | 22 - vendor/blitter.com/go/herradurakex/Makefile | 17 - vendor/blitter.com/go/herradurakex/README.md | 1 - .../go/herradurakex/herradurakex.go | 182 - vendor/blitter.com/go/kyber/.gitignore | 2 - vendor/blitter.com/go/kyber/LICENSE | 122 - vendor/blitter.com/go/kyber/README.md | 24 - vendor/blitter.com/go/kyber/cbd.go | 100 - vendor/blitter.com/go/kyber/doc.go | 27 - vendor/blitter.com/go/kyber/go.mod | 5 - vendor/blitter.com/go/kyber/go.sum | 7 - vendor/blitter.com/go/kyber/hwaccel.go | 46 - vendor/blitter.com/go/kyber/hwaccel_amd64.go | 256 - vendor/blitter.com/go/kyber/hwaccel_amd64.s | 2749 ------- vendor/blitter.com/go/kyber/hwaccel_ref.go | 14 - vendor/blitter.com/go/kyber/indcpa.go | 279 - vendor/blitter.com/go/kyber/kem.go | 187 - vendor/blitter.com/go/kyber/kex.go | 249 - vendor/blitter.com/go/kyber/ntt.go | 65 - vendor/blitter.com/go/kyber/params.go | 116 - vendor/blitter.com/go/kyber/poly.go | 146 - vendor/blitter.com/go/kyber/polyvec.go | 115 - vendor/blitter.com/go/kyber/precomp.go | 87 - vendor/blitter.com/go/kyber/reduce.go | 43 - vendor/blitter.com/go/mtwist/mtwist.go | 125 - vendor/blitter.com/go/newhope/LICENSE | 122 - vendor/blitter.com/go/newhope/batcher.go | 929 --- .../go/newhope/error_correction.go | 135 - vendor/blitter.com/go/newhope/go.mod | 8 - vendor/blitter.com/go/newhope/go.sum | 19 - vendor/blitter.com/go/newhope/newhope.go | 220 - .../blitter.com/go/newhope/newhope_simple.go | 166 - vendor/blitter.com/go/newhope/ntt.go | 131 - vendor/blitter.com/go/newhope/params.go | 17 - vendor/blitter.com/go/newhope/poly.go | 212 - vendor/blitter.com/go/newhope/poly_simple.go | 99 - vendor/blitter.com/go/newhope/precomp.go | 287 - vendor/blitter.com/go/newhope/reduce.go | 32 - vendor/github.com/aead/chacha20/LICENSE | 21 - .../github.com/aead/chacha20/chacha/chacha.go | 197 - .../aead/chacha20/chacha/chachaAVX2_amd64.s | 406 - .../aead/chacha20/chacha/chacha_386.go | 60 - .../aead/chacha20/chacha/chacha_386.s | 163 - .../aead/chacha20/chacha/chacha_amd64.go | 76 - .../aead/chacha20/chacha/chacha_amd64.s | 1072 --- .../aead/chacha20/chacha/chacha_generic.go | 319 - .../aead/chacha20/chacha/chacha_ref.go | 33 - .../github.com/aead/chacha20/chacha/const.s | 53 - .../github.com/aead/chacha20/chacha/macro.s | 163 - .../github.com/jameskeane/bcrypt/.gitignore | 5 - vendor/github.com/jameskeane/bcrypt/LICENSE | 29 - vendor/github.com/jameskeane/bcrypt/README | 46 - vendor/github.com/jameskeane/bcrypt/bcrypt.go | 190 - vendor/github.com/jameskeane/bcrypt/cipher.go | 415 - vendor/github.com/klauspost/cpuid/.gitignore | 24 - vendor/github.com/klauspost/cpuid/.travis.yml | 23 - .../klauspost/cpuid/CONTRIBUTING.txt | 35 - vendor/github.com/klauspost/cpuid/LICENSE | 22 - vendor/github.com/klauspost/cpuid/README.md | 148 - vendor/github.com/klauspost/cpuid/cpuid.go | 1069 --- vendor/github.com/klauspost/cpuid/cpuid_386.s | 42 - .../github.com/klauspost/cpuid/cpuid_amd64.s | 42 - .../klauspost/cpuid/detect_intel.go | 17 - .../github.com/klauspost/cpuid/detect_ref.go | 23 - vendor/github.com/klauspost/cpuid/generate.go | 4 - .../github.com/klauspost/cpuid/private-gen.go | 476 -- .../klauspost/reedsolomon/.gitignore | 26 - .../klauspost/reedsolomon/.travis.yml | 32 - .../github.com/klauspost/reedsolomon/LICENSE | 23 - .../klauspost/reedsolomon/README.md | 321 - .../klauspost/reedsolomon/appveyor.yml | 20 - .../klauspost/reedsolomon/galois.go | 905 --- .../reedsolomon/galoisAvx512_amd64.go | 188 - .../reedsolomon/galoisAvx512_amd64.s | 590 -- .../klauspost/reedsolomon/galois_amd64.go | 92 - .../klauspost/reedsolomon/galois_amd64.s | 236 - .../klauspost/reedsolomon/galois_arm64.go | 52 - .../klauspost/reedsolomon/galois_arm64.s | 141 - .../klauspost/reedsolomon/galois_noasm.go | 34 - .../klauspost/reedsolomon/galois_ppc64le.go | 70 - .../klauspost/reedsolomon/galois_ppc64le.s | 126 - .../klauspost/reedsolomon/gentables.go | 132 - .../klauspost/reedsolomon/inversion_tree.go | 160 - .../klauspost/reedsolomon/matrix.go | 279 - .../klauspost/reedsolomon/options.go | 118 - .../klauspost/reedsolomon/reedsolomon.go | 900 --- .../klauspost/reedsolomon/streaming.go | 582 -- vendor/github.com/kr/pty/.gitignore | 4 - vendor/github.com/kr/pty/License | 23 - vendor/github.com/kr/pty/README.md | 100 - vendor/github.com/kr/pty/doc.go | 16 - vendor/github.com/kr/pty/go.mod | 1 - vendor/github.com/kr/pty/ioctl.go | 13 - vendor/github.com/kr/pty/ioctl_bsd.go | 39 - vendor/github.com/kr/pty/mktypes.bash | 19 - vendor/github.com/kr/pty/pty_darwin.go | 65 - vendor/github.com/kr/pty/pty_dragonfly.go | 80 - vendor/github.com/kr/pty/pty_freebsd.go | 78 - vendor/github.com/kr/pty/pty_linux.go | 51 - vendor/github.com/kr/pty/pty_openbsd.go | 33 - vendor/github.com/kr/pty/pty_unsupported.go | 11 - vendor/github.com/kr/pty/run.go | 56 - vendor/github.com/kr/pty/types.go | 10 - vendor/github.com/kr/pty/types_dragonfly.go | 17 - vendor/github.com/kr/pty/types_freebsd.go | 15 - vendor/github.com/kr/pty/types_openbsd.go | 14 - vendor/github.com/kr/pty/util.go | 64 - vendor/github.com/kr/pty/ztypes_386.go | 9 - vendor/github.com/kr/pty/ztypes_amd64.go | 9 - vendor/github.com/kr/pty/ztypes_arm.go | 9 - vendor/github.com/kr/pty/ztypes_arm64.go | 11 - .../kr/pty/ztypes_dragonfly_amd64.go | 14 - .../github.com/kr/pty/ztypes_freebsd_386.go | 13 - .../github.com/kr/pty/ztypes_freebsd_amd64.go | 14 - .../github.com/kr/pty/ztypes_freebsd_arm.go | 13 - vendor/github.com/kr/pty/ztypes_mipsx.go | 12 - .../github.com/kr/pty/ztypes_openbsd_386.go | 13 - .../github.com/kr/pty/ztypes_openbsd_amd64.go | 13 - vendor/github.com/kr/pty/ztypes_ppc64.go | 11 - vendor/github.com/kr/pty/ztypes_ppc64le.go | 11 - vendor/github.com/kr/pty/ztypes_s390x.go | 11 - vendor/github.com/mattn/go-isatty/.travis.yml | 13 - vendor/github.com/mattn/go-isatty/LICENSE | 9 - vendor/github.com/mattn/go-isatty/README.md | 50 - vendor/github.com/mattn/go-isatty/doc.go | 2 - vendor/github.com/mattn/go-isatty/go.mod | 3 - vendor/github.com/mattn/go-isatty/go.sum | 2 - .../mattn/go-isatty/isatty_android.go | 23 - .../github.com/mattn/go-isatty/isatty_bsd.go | 24 - .../mattn/go-isatty/isatty_linux.go | 19 - .../mattn/go-isatty/isatty_others.go | 15 - .../mattn/go-isatty/isatty_solaris.go | 22 - .../mattn/go-isatty/isatty_windows.go | 94 - vendor/github.com/pkg/errors/.gitignore | 24 - vendor/github.com/pkg/errors/.travis.yml | 15 - vendor/github.com/pkg/errors/LICENSE | 23 - vendor/github.com/pkg/errors/README.md | 52 - vendor/github.com/pkg/errors/appveyor.yml | 32 - vendor/github.com/pkg/errors/errors.go | 282 - vendor/github.com/pkg/errors/stack.go | 147 - .../github.com/templexxx/cpufeat/.gitignore | 15 - vendor/github.com/templexxx/cpufeat/LICENSE | 27 - vendor/github.com/templexxx/cpufeat/README.md | 1 - vendor/github.com/templexxx/cpufeat/cpu.go | 33 - .../github.com/templexxx/cpufeat/cpu_arm.go | 7 - .../github.com/templexxx/cpufeat/cpu_arm64.go | 7 - .../github.com/templexxx/cpufeat/cpu_mips.go | 7 - .../templexxx/cpufeat/cpu_mips64.go | 7 - .../templexxx/cpufeat/cpu_mips64le.go | 7 - .../templexxx/cpufeat/cpu_mipsle.go | 7 - .../github.com/templexxx/cpufeat/cpu_ppc64.go | 7 - .../templexxx/cpufeat/cpu_ppc64le.go | 7 - .../github.com/templexxx/cpufeat/cpu_s390x.go | 7 - .../github.com/templexxx/cpufeat/cpu_x86.go | 70 - vendor/github.com/templexxx/cpufeat/cpu_x86.s | 32 - .../github.com/templexxx/xor/.gitattributes | 1 - vendor/github.com/templexxx/xor/.gitignore | 18 - vendor/github.com/templexxx/xor/LICENSE | 21 - vendor/github.com/templexxx/xor/README.md | 50 - vendor/github.com/templexxx/xor/avx2_amd64.s | 438 -- vendor/github.com/templexxx/xor/nosimd.go | 116 - vendor/github.com/templexxx/xor/sse2_amd64.s | 574 -- vendor/github.com/templexxx/xor/xor.go | 49 - vendor/github.com/templexxx/xor/xor_amd64.go | 120 - vendor/github.com/templexxx/xor/xor_other.go | 19 - vendor/github.com/tjfoc/gmsm/LICENSE | 201 - vendor/github.com/tjfoc/gmsm/sm4/sm4.go | 342 - vendor/github.com/xtaci/kcp-go/.gitignore | 24 - vendor/github.com/xtaci/kcp-go/.travis.yml | 17 - vendor/github.com/xtaci/kcp-go/LICENSE | 22 - vendor/github.com/xtaci/kcp-go/README.md | 229 - vendor/github.com/xtaci/kcp-go/batchconn.go | 12 - vendor/github.com/xtaci/kcp-go/crypt.go | 785 -- vendor/github.com/xtaci/kcp-go/donate.png | Bin 4420 -> 0 bytes vendor/github.com/xtaci/kcp-go/entropy.go | 52 - vendor/github.com/xtaci/kcp-go/fec.go | 337 - vendor/github.com/xtaci/kcp-go/flame.png | Bin 57142 -> 0 bytes vendor/github.com/xtaci/kcp-go/frame.png | Bin 36006 -> 0 bytes vendor/github.com/xtaci/kcp-go/kcp-go.png | Bin 9153 -> 0 bytes vendor/github.com/xtaci/kcp-go/kcp.go | 1069 --- vendor/github.com/xtaci/kcp-go/readloop.go | 48 - .../xtaci/kcp-go/readloop_generic.go | 11 - .../github.com/xtaci/kcp-go/readloop_linux.go | 120 - vendor/github.com/xtaci/kcp-go/sess.go | 1047 --- vendor/github.com/xtaci/kcp-go/snmp.go | 164 - vendor/github.com/xtaci/kcp-go/tx.go | 24 - vendor/github.com/xtaci/kcp-go/tx_generic.go | 11 - vendor/github.com/xtaci/kcp-go/tx_linux.go | 51 - .../github.com/xtaci/kcp-go/wechat_donate.jpg | Bin 35307 -> 0 bytes vendor/golang.org/x/crypto/AUTHORS | 3 - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - vendor/golang.org/x/crypto/LICENSE | 27 - vendor/golang.org/x/crypto/PATENTS | 22 - vendor/golang.org/x/crypto/argon2/argon2.go | 285 - vendor/golang.org/x/crypto/argon2/blake2b.go | 53 - .../x/crypto/argon2/blamka_amd64.go | 60 - .../golang.org/x/crypto/argon2/blamka_amd64.s | 243 - .../x/crypto/argon2/blamka_generic.go | 163 - .../golang.org/x/crypto/argon2/blamka_ref.go | 15 - vendor/golang.org/x/crypto/bcrypt/base64.go | 35 - vendor/golang.org/x/crypto/bcrypt/bcrypt.go | 295 - vendor/golang.org/x/crypto/blake2b/blake2b.go | 289 - .../x/crypto/blake2b/blake2bAVX2_amd64.go | 37 - .../x/crypto/blake2b/blake2bAVX2_amd64.s | 750 -- .../x/crypto/blake2b/blake2b_amd64.go | 24 - .../x/crypto/blake2b/blake2b_amd64.s | 281 - .../x/crypto/blake2b/blake2b_generic.go | 182 - .../x/crypto/blake2b/blake2b_ref.go | 11 - vendor/golang.org/x/crypto/blake2b/blake2x.go | 177 - .../golang.org/x/crypto/blake2b/register.go | 32 - vendor/golang.org/x/crypto/blowfish/block.go | 159 - vendor/golang.org/x/crypto/blowfish/cipher.go | 99 - vendor/golang.org/x/crypto/blowfish/const.go | 199 - vendor/golang.org/x/crypto/cast5/cast5.go | 533 -- .../x/crypto/internal/subtle/aliasing.go | 32 - .../internal/subtle/aliasing_appengine.go | 35 - vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go | 77 - .../x/crypto/salsa20/salsa/hsalsa20.go | 144 - .../x/crypto/salsa20/salsa/salsa208.go | 199 - .../x/crypto/salsa20/salsa/salsa20_amd64.go | 23 - .../x/crypto/salsa20/salsa/salsa20_amd64.s | 883 --- .../x/crypto/salsa20/salsa/salsa20_noasm.go | 14 - .../x/crypto/salsa20/salsa/salsa20_ref.go | 231 - vendor/golang.org/x/crypto/salsa20/salsa20.go | 58 - vendor/golang.org/x/crypto/scrypt/scrypt.go | 213 - vendor/golang.org/x/crypto/sha3/doc.go | 66 - vendor/golang.org/x/crypto/sha3/hashes.go | 97 - .../x/crypto/sha3/hashes_generic.go | 27 - vendor/golang.org/x/crypto/sha3/keccakf.go | 412 - .../golang.org/x/crypto/sha3/keccakf_amd64.go | 13 - .../golang.org/x/crypto/sha3/keccakf_amd64.s | 390 - vendor/golang.org/x/crypto/sha3/register.go | 18 - vendor/golang.org/x/crypto/sha3/sha3.go | 193 - vendor/golang.org/x/crypto/sha3/sha3_s390x.go | 284 - vendor/golang.org/x/crypto/sha3/sha3_s390x.s | 33 - vendor/golang.org/x/crypto/sha3/shake.go | 173 - .../golang.org/x/crypto/sha3/shake_generic.go | 19 - vendor/golang.org/x/crypto/sha3/xor.go | 23 - .../golang.org/x/crypto/sha3/xor_generic.go | 28 - .../golang.org/x/crypto/sha3/xor_unaligned.go | 65 - vendor/golang.org/x/crypto/tea/cipher.go | 116 - vendor/golang.org/x/crypto/twofish/twofish.go | 348 - vendor/golang.org/x/crypto/xtea/block.go | 66 - vendor/golang.org/x/crypto/xtea/cipher.go | 90 - vendor/golang.org/x/net/AUTHORS | 3 - vendor/golang.org/x/net/CONTRIBUTORS | 3 - vendor/golang.org/x/net/LICENSE | 27 - vendor/golang.org/x/net/PATENTS | 22 - vendor/golang.org/x/net/bpf/asm.go | 41 - vendor/golang.org/x/net/bpf/constants.go | 222 - vendor/golang.org/x/net/bpf/doc.go | 82 - vendor/golang.org/x/net/bpf/instructions.go | 726 -- vendor/golang.org/x/net/bpf/setter.go | 10 - vendor/golang.org/x/net/bpf/vm.go | 150 - .../golang.org/x/net/bpf/vm_instructions.go | 182 - .../golang.org/x/net/internal/iana/const.go | 223 - vendor/golang.org/x/net/internal/iana/gen.go | 383 - .../x/net/internal/socket/cmsghdr.go | 11 - .../x/net/internal/socket/cmsghdr_bsd.go | 13 - .../internal/socket/cmsghdr_linux_32bit.go | 14 - .../internal/socket/cmsghdr_linux_64bit.go | 14 - .../internal/socket/cmsghdr_solaris_64bit.go | 14 - .../x/net/internal/socket/cmsghdr_stub.go | 17 - .../x/net/internal/socket/defs_aix.go | 38 - .../x/net/internal/socket/defs_darwin.go | 36 - .../x/net/internal/socket/defs_dragonfly.go | 36 - .../x/net/internal/socket/defs_freebsd.go | 36 - .../x/net/internal/socket/defs_linux.go | 40 - .../x/net/internal/socket/defs_netbsd.go | 38 - .../x/net/internal/socket/defs_openbsd.go | 36 - .../x/net/internal/socket/defs_solaris.go | 36 - .../golang.org/x/net/internal/socket/empty.s | 7 - .../x/net/internal/socket/error_unix.go | 31 - .../x/net/internal/socket/error_windows.go | 26 - .../x/net/internal/socket/iovec_32bit.go | 19 - .../x/net/internal/socket/iovec_64bit.go | 19 - .../internal/socket/iovec_solaris_64bit.go | 19 - .../x/net/internal/socket/iovec_stub.go | 11 - .../x/net/internal/socket/mmsghdr_stub.go | 21 - .../x/net/internal/socket/mmsghdr_unix.go | 42 - .../x/net/internal/socket/msghdr_bsd.go | 39 - .../x/net/internal/socket/msghdr_bsdvar.go | 16 - .../x/net/internal/socket/msghdr_linux.go | 36 - .../net/internal/socket/msghdr_linux_32bit.go | 24 - .../net/internal/socket/msghdr_linux_64bit.go | 24 - .../x/net/internal/socket/msghdr_openbsd.go | 14 - .../internal/socket/msghdr_solaris_64bit.go | 36 - .../x/net/internal/socket/msghdr_stub.go | 14 - .../x/net/internal/socket/norace.go | 12 - .../golang.org/x/net/internal/socket/race.go | 37 - .../x/net/internal/socket/rawconn.go | 64 - .../x/net/internal/socket/rawconn_mmsg.go | 79 - .../x/net/internal/socket/rawconn_msg.go | 78 - .../x/net/internal/socket/rawconn_nommsg.go | 15 - .../x/net/internal/socket/rawconn_nomsg.go | 15 - .../x/net/internal/socket/socket.go | 288 - .../golang.org/x/net/internal/socket/sys.go | 33 - .../x/net/internal/socket/sys_bsd.go | 15 - .../x/net/internal/socket/sys_bsdvar.go | 23 - .../x/net/internal/socket/sys_const_unix.go | 17 - .../x/net/internal/socket/sys_darwin.go | 7 - .../x/net/internal/socket/sys_dragonfly.go | 32 - .../net/internal/socket/sys_go1_11_darwin.go | 33 - .../x/net/internal/socket/sys_linkname.go | 42 - .../x/net/internal/socket/sys_linux.go | 27 - .../x/net/internal/socket/sys_linux_386.go | 55 - .../x/net/internal/socket/sys_linux_386.s | 11 - .../x/net/internal/socket/sys_linux_amd64.go | 10 - .../x/net/internal/socket/sys_linux_arm.go | 10 - .../x/net/internal/socket/sys_linux_arm64.go | 10 - .../x/net/internal/socket/sys_linux_mips.go | 10 - .../x/net/internal/socket/sys_linux_mips64.go | 10 - .../net/internal/socket/sys_linux_mips64le.go | 10 - .../x/net/internal/socket/sys_linux_mipsle.go | 10 - .../x/net/internal/socket/sys_linux_ppc64.go | 10 - .../net/internal/socket/sys_linux_ppc64le.go | 10 - .../net/internal/socket/sys_linux_riscv64.go | 12 - .../x/net/internal/socket/sys_linux_s390x.go | 55 - .../x/net/internal/socket/sys_linux_s390x.s | 11 - .../x/net/internal/socket/sys_netbsd.go | 25 - .../x/net/internal/socket/sys_posix.go | 183 - .../x/net/internal/socket/sys_solaris.go | 70 - .../x/net/internal/socket/sys_solaris_amd64.s | 11 - .../x/net/internal/socket/sys_stub.go | 63 - .../x/net/internal/socket/sys_unix.go | 33 - .../x/net/internal/socket/sys_windows.go | 71 - .../x/net/internal/socket/zsys_aix_ppc64.go | 60 - .../x/net/internal/socket/zsys_darwin_386.go | 51 - .../net/internal/socket/zsys_darwin_amd64.go | 53 - .../x/net/internal/socket/zsys_darwin_arm.go | 51 - .../net/internal/socket/zsys_darwin_arm64.go | 53 - .../internal/socket/zsys_dragonfly_amd64.go | 53 - .../x/net/internal/socket/zsys_freebsd_386.go | 51 - .../net/internal/socket/zsys_freebsd_amd64.go | 53 - .../x/net/internal/socket/zsys_freebsd_arm.go | 51 - .../net/internal/socket/zsys_freebsd_arm64.go | 53 - .../x/net/internal/socket/zsys_linux_386.go | 54 - .../x/net/internal/socket/zsys_linux_amd64.go | 57 - .../x/net/internal/socket/zsys_linux_arm.go | 55 - .../x/net/internal/socket/zsys_linux_arm64.go | 58 - .../x/net/internal/socket/zsys_linux_mips.go | 55 - .../net/internal/socket/zsys_linux_mips64.go | 58 - .../internal/socket/zsys_linux_mips64le.go | 58 - .../net/internal/socket/zsys_linux_mipsle.go | 55 - .../x/net/internal/socket/zsys_linux_ppc64.go | 58 - .../net/internal/socket/zsys_linux_ppc64le.go | 58 - .../net/internal/socket/zsys_linux_riscv64.go | 59 - .../x/net/internal/socket/zsys_linux_s390x.go | 58 - .../x/net/internal/socket/zsys_netbsd_386.go | 57 - .../net/internal/socket/zsys_netbsd_amd64.go | 60 - .../x/net/internal/socket/zsys_netbsd_arm.go | 57 - .../net/internal/socket/zsys_netbsd_arm64.go | 59 - .../x/net/internal/socket/zsys_openbsd_386.go | 51 - .../net/internal/socket/zsys_openbsd_amd64.go | 53 - .../x/net/internal/socket/zsys_openbsd_arm.go | 51 - .../net/internal/socket/zsys_openbsd_arm64.go | 53 - .../net/internal/socket/zsys_solaris_amd64.go | 52 - vendor/golang.org/x/net/ipv4/batch.go | 194 - vendor/golang.org/x/net/ipv4/control.go | 144 - vendor/golang.org/x/net/ipv4/control_bsd.go | 41 - .../golang.org/x/net/ipv4/control_pktinfo.go | 39 - vendor/golang.org/x/net/ipv4/control_stub.go | 13 - vendor/golang.org/x/net/ipv4/control_unix.go | 73 - .../golang.org/x/net/ipv4/control_windows.go | 12 - vendor/golang.org/x/net/ipv4/defs_aix.go | 39 - vendor/golang.org/x/net/ipv4/defs_darwin.go | 77 - .../golang.org/x/net/ipv4/defs_dragonfly.go | 38 - vendor/golang.org/x/net/ipv4/defs_freebsd.go | 75 - vendor/golang.org/x/net/ipv4/defs_linux.go | 113 - vendor/golang.org/x/net/ipv4/defs_netbsd.go | 37 - vendor/golang.org/x/net/ipv4/defs_openbsd.go | 37 - vendor/golang.org/x/net/ipv4/defs_solaris.go | 84 - vendor/golang.org/x/net/ipv4/dgramopt.go | 264 - vendor/golang.org/x/net/ipv4/doc.go | 244 - vendor/golang.org/x/net/ipv4/endpoint.go | 186 - vendor/golang.org/x/net/ipv4/gen.go | 199 - vendor/golang.org/x/net/ipv4/genericopt.go | 55 - vendor/golang.org/x/net/ipv4/header.go | 173 - vendor/golang.org/x/net/ipv4/helper.go | 80 - vendor/golang.org/x/net/ipv4/iana.go | 38 - vendor/golang.org/x/net/ipv4/icmp.go | 57 - vendor/golang.org/x/net/ipv4/icmp_linux.go | 25 - vendor/golang.org/x/net/ipv4/icmp_stub.go | 25 - vendor/golang.org/x/net/ipv4/packet.go | 117 - vendor/golang.org/x/net/ipv4/payload.go | 23 - vendor/golang.org/x/net/ipv4/payload_cmsg.go | 84 - .../golang.org/x/net/ipv4/payload_nocmsg.go | 39 - vendor/golang.org/x/net/ipv4/sockopt.go | 44 - vendor/golang.org/x/net/ipv4/sockopt_posix.go | 71 - vendor/golang.org/x/net/ipv4/sockopt_stub.go | 42 - vendor/golang.org/x/net/ipv4/sys_aix.go | 38 - vendor/golang.org/x/net/ipv4/sys_asmreq.go | 119 - .../golang.org/x/net/ipv4/sys_asmreq_stub.go | 25 - vendor/golang.org/x/net/ipv4/sys_asmreqn.go | 42 - .../golang.org/x/net/ipv4/sys_asmreqn_stub.go | 21 - vendor/golang.org/x/net/ipv4/sys_bpf.go | 24 - vendor/golang.org/x/net/ipv4/sys_bpf_stub.go | 16 - vendor/golang.org/x/net/ipv4/sys_bsd.go | 37 - vendor/golang.org/x/net/ipv4/sys_darwin.go | 65 - vendor/golang.org/x/net/ipv4/sys_dragonfly.go | 35 - vendor/golang.org/x/net/ipv4/sys_freebsd.go | 76 - vendor/golang.org/x/net/ipv4/sys_linux.go | 60 - vendor/golang.org/x/net/ipv4/sys_solaris.go | 57 - vendor/golang.org/x/net/ipv4/sys_ssmreq.go | 52 - .../golang.org/x/net/ipv4/sys_ssmreq_stub.go | 21 - vendor/golang.org/x/net/ipv4/sys_stub.go | 13 - vendor/golang.org/x/net/ipv4/sys_windows.go | 67 - .../golang.org/x/net/ipv4/zsys_aix_ppc64.go | 33 - vendor/golang.org/x/net/ipv4/zsys_darwin.go | 99 - .../golang.org/x/net/ipv4/zsys_dragonfly.go | 31 - .../golang.org/x/net/ipv4/zsys_freebsd_386.go | 93 - .../x/net/ipv4/zsys_freebsd_amd64.go | 95 - .../golang.org/x/net/ipv4/zsys_freebsd_arm.go | 95 - .../x/net/ipv4/zsys_freebsd_arm64.go | 93 - .../golang.org/x/net/ipv4/zsys_linux_386.go | 130 - .../golang.org/x/net/ipv4/zsys_linux_amd64.go | 132 - .../golang.org/x/net/ipv4/zsys_linux_arm.go | 130 - .../golang.org/x/net/ipv4/zsys_linux_arm64.go | 132 - .../golang.org/x/net/ipv4/zsys_linux_mips.go | 130 - .../x/net/ipv4/zsys_linux_mips64.go | 132 - .../x/net/ipv4/zsys_linux_mips64le.go | 132 - .../x/net/ipv4/zsys_linux_mipsle.go | 130 - .../golang.org/x/net/ipv4/zsys_linux_ppc.go | 130 - .../golang.org/x/net/ipv4/zsys_linux_ppc64.go | 132 - .../x/net/ipv4/zsys_linux_ppc64le.go | 132 - .../x/net/ipv4/zsys_linux_riscv64.go | 134 - .../golang.org/x/net/ipv4/zsys_linux_s390x.go | 132 - vendor/golang.org/x/net/ipv4/zsys_netbsd.go | 30 - vendor/golang.org/x/net/ipv4/zsys_openbsd.go | 30 - vendor/golang.org/x/net/ipv4/zsys_solaris.go | 100 - vendor/golang.org/x/net/ipv6/batch.go | 116 - vendor/golang.org/x/net/ipv6/control.go | 187 - .../x/net/ipv6/control_rfc2292_unix.go | 48 - .../x/net/ipv6/control_rfc3542_unix.go | 94 - vendor/golang.org/x/net/ipv6/control_stub.go | 13 - vendor/golang.org/x/net/ipv6/control_unix.go | 55 - .../golang.org/x/net/ipv6/control_windows.go | 12 - vendor/golang.org/x/net/ipv6/defs_aix.go | 82 - vendor/golang.org/x/net/ipv6/defs_darwin.go | 112 - .../golang.org/x/net/ipv6/defs_dragonfly.go | 82 - vendor/golang.org/x/net/ipv6/defs_freebsd.go | 105 - vendor/golang.org/x/net/ipv6/defs_linux.go | 138 - vendor/golang.org/x/net/ipv6/defs_netbsd.go | 80 - vendor/golang.org/x/net/ipv6/defs_openbsd.go | 89 - vendor/golang.org/x/net/ipv6/defs_solaris.go | 114 - vendor/golang.org/x/net/ipv6/dgramopt.go | 301 - vendor/golang.org/x/net/ipv6/doc.go | 243 - vendor/golang.org/x/net/ipv6/endpoint.go | 127 - vendor/golang.org/x/net/ipv6/gen.go | 199 - vendor/golang.org/x/net/ipv6/genericopt.go | 56 - vendor/golang.org/x/net/ipv6/header.go | 55 - vendor/golang.org/x/net/ipv6/helper.go | 59 - vendor/golang.org/x/net/ipv6/iana.go | 86 - vendor/golang.org/x/net/ipv6/icmp.go | 60 - vendor/golang.org/x/net/ipv6/icmp_bsd.go | 29 - vendor/golang.org/x/net/ipv6/icmp_linux.go | 27 - vendor/golang.org/x/net/ipv6/icmp_solaris.go | 27 - vendor/golang.org/x/net/ipv6/icmp_stub.go | 23 - vendor/golang.org/x/net/ipv6/icmp_windows.go | 22 - vendor/golang.org/x/net/ipv6/payload.go | 23 - vendor/golang.org/x/net/ipv6/payload_cmsg.go | 70 - .../golang.org/x/net/ipv6/payload_nocmsg.go | 38 - vendor/golang.org/x/net/ipv6/sockopt.go | 43 - vendor/golang.org/x/net/ipv6/sockopt_posix.go | 89 - vendor/golang.org/x/net/ipv6/sockopt_stub.go | 46 - vendor/golang.org/x/net/ipv6/sys_aix.go | 77 - vendor/golang.org/x/net/ipv6/sys_asmreq.go | 24 - .../golang.org/x/net/ipv6/sys_asmreq_stub.go | 17 - vendor/golang.org/x/net/ipv6/sys_bpf.go | 24 - vendor/golang.org/x/net/ipv6/sys_bpf_stub.go | 16 - vendor/golang.org/x/net/ipv6/sys_bsd.go | 57 - vendor/golang.org/x/net/ipv6/sys_darwin.go | 78 - vendor/golang.org/x/net/ipv6/sys_freebsd.go | 92 - vendor/golang.org/x/net/ipv6/sys_linux.go | 75 - vendor/golang.org/x/net/ipv6/sys_solaris.go | 74 - vendor/golang.org/x/net/ipv6/sys_ssmreq.go | 54 - .../golang.org/x/net/ipv6/sys_ssmreq_stub.go | 21 - vendor/golang.org/x/net/ipv6/sys_stub.go | 13 - vendor/golang.org/x/net/ipv6/sys_windows.go | 75 - .../golang.org/x/net/ipv6/zsys_aix_ppc64.go | 103 - vendor/golang.org/x/net/ipv6/zsys_darwin.go | 131 - .../golang.org/x/net/ipv6/zsys_dragonfly.go | 88 - .../golang.org/x/net/ipv6/zsys_freebsd_386.go | 122 - .../x/net/ipv6/zsys_freebsd_amd64.go | 124 - .../golang.org/x/net/ipv6/zsys_freebsd_arm.go | 124 - .../x/net/ipv6/zsys_freebsd_arm64.go | 122 - .../golang.org/x/net/ipv6/zsys_linux_386.go | 152 - .../golang.org/x/net/ipv6/zsys_linux_amd64.go | 154 - .../golang.org/x/net/ipv6/zsys_linux_arm.go | 152 - .../golang.org/x/net/ipv6/zsys_linux_arm64.go | 154 - .../golang.org/x/net/ipv6/zsys_linux_mips.go | 152 - .../x/net/ipv6/zsys_linux_mips64.go | 154 - .../x/net/ipv6/zsys_linux_mips64le.go | 154 - .../x/net/ipv6/zsys_linux_mipsle.go | 152 - .../golang.org/x/net/ipv6/zsys_linux_ppc.go | 152 - .../golang.org/x/net/ipv6/zsys_linux_ppc64.go | 154 - .../x/net/ipv6/zsys_linux_ppc64le.go | 154 - .../x/net/ipv6/zsys_linux_riscv64.go | 156 - .../golang.org/x/net/ipv6/zsys_linux_s390x.go | 154 - vendor/golang.org/x/net/ipv6/zsys_netbsd.go | 84 - vendor/golang.org/x/net/ipv6/zsys_openbsd.go | 93 - vendor/golang.org/x/net/ipv6/zsys_solaris.go | 131 - vendor/golang.org/x/sys/AUTHORS | 3 - vendor/golang.org/x/sys/CONTRIBUTORS | 3 - vendor/golang.org/x/sys/LICENSE | 27 - vendor/golang.org/x/sys/PATENTS | 22 - vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s | 17 - vendor/golang.org/x/sys/cpu/byteorder.go | 30 - vendor/golang.org/x/sys/cpu/cpu.go | 126 - vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go | 34 - vendor/golang.org/x/sys/cpu/cpu_arm.go | 9 - vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go | 21 - vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 16 - vendor/golang.org/x/sys/cpu/cpu_gccgo.c | 43 - vendor/golang.org/x/sys/cpu/cpu_gccgo.go | 26 - .../golang.org/x/sys/cpu/cpu_gccgo_s390x.go | 22 - vendor/golang.org/x/sys/cpu/cpu_linux.go | 59 - .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 67 - .../golang.org/x/sys/cpu/cpu_linux_ppc64x.go | 33 - .../golang.org/x/sys/cpu/cpu_linux_s390x.go | 161 - vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 11 - vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 11 - .../golang.org/x/sys/cpu/cpu_other_arm64.go | 11 - vendor/golang.org/x/sys/cpu/cpu_s390x.s | 57 - vendor/golang.org/x/sys/cpu/cpu_wasm.go | 15 - vendor/golang.org/x/sys/cpu/cpu_x86.go | 59 - vendor/golang.org/x/sys/cpu/cpu_x86.s | 27 - .../x/sys/cpu/syscall_aix_ppc64_gc.go | 36 - vendor/golang.org/x/sys/unix/.gitignore | 2 - vendor/golang.org/x/sys/unix/README.md | 173 - .../golang.org/x/sys/unix/affinity_linux.go | 86 - vendor/golang.org/x/sys/unix/aliases.go | 14 - vendor/golang.org/x/sys/unix/asm_aix_ppc64.s | 17 - vendor/golang.org/x/sys/unix/asm_darwin_386.s | 29 - .../golang.org/x/sys/unix/asm_darwin_amd64.s | 29 - vendor/golang.org/x/sys/unix/asm_darwin_arm.s | 30 - .../golang.org/x/sys/unix/asm_darwin_arm64.s | 30 - .../x/sys/unix/asm_dragonfly_amd64.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_386.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_amd64.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_arm.s | 29 - .../golang.org/x/sys/unix/asm_freebsd_arm64.s | 29 - vendor/golang.org/x/sys/unix/asm_linux_386.s | 65 - .../golang.org/x/sys/unix/asm_linux_amd64.s | 57 - vendor/golang.org/x/sys/unix/asm_linux_arm.s | 56 - .../golang.org/x/sys/unix/asm_linux_arm64.s | 52 - .../golang.org/x/sys/unix/asm_linux_mips64x.s | 56 - .../golang.org/x/sys/unix/asm_linux_mipsx.s | 54 - .../golang.org/x/sys/unix/asm_linux_ppc64x.s | 44 - .../golang.org/x/sys/unix/asm_linux_riscv64.s | 54 - .../golang.org/x/sys/unix/asm_linux_s390x.s | 56 - vendor/golang.org/x/sys/unix/asm_netbsd_386.s | 29 - .../golang.org/x/sys/unix/asm_netbsd_amd64.s | 29 - vendor/golang.org/x/sys/unix/asm_netbsd_arm.s | 29 - .../golang.org/x/sys/unix/asm_netbsd_arm64.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_386.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_amd64.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_arm.s | 29 - .../golang.org/x/sys/unix/asm_openbsd_arm64.s | 29 - .../golang.org/x/sys/unix/asm_solaris_amd64.s | 17 - .../golang.org/x/sys/unix/bluetooth_linux.go | 35 - vendor/golang.org/x/sys/unix/cap_freebsd.go | 195 - vendor/golang.org/x/sys/unix/constants.go | 13 - vendor/golang.org/x/sys/unix/dev_aix_ppc.go | 27 - vendor/golang.org/x/sys/unix/dev_aix_ppc64.go | 29 - vendor/golang.org/x/sys/unix/dev_darwin.go | 24 - vendor/golang.org/x/sys/unix/dev_dragonfly.go | 30 - vendor/golang.org/x/sys/unix/dev_freebsd.go | 30 - vendor/golang.org/x/sys/unix/dev_linux.go | 42 - vendor/golang.org/x/sys/unix/dev_netbsd.go | 29 - vendor/golang.org/x/sys/unix/dev_openbsd.go | 29 - vendor/golang.org/x/sys/unix/dirent.go | 102 - vendor/golang.org/x/sys/unix/endian_big.go | 9 - vendor/golang.org/x/sys/unix/endian_little.go | 9 - vendor/golang.org/x/sys/unix/env_unix.go | 31 - .../x/sys/unix/errors_freebsd_386.go | 227 - .../x/sys/unix/errors_freebsd_amd64.go | 227 - .../x/sys/unix/errors_freebsd_arm.go | 226 - vendor/golang.org/x/sys/unix/fcntl.go | 32 - vendor/golang.org/x/sys/unix/fcntl_darwin.go | 18 - .../x/sys/unix/fcntl_linux_32bit.go | 13 - vendor/golang.org/x/sys/unix/gccgo.go | 62 - vendor/golang.org/x/sys/unix/gccgo_c.c | 39 - .../x/sys/unix/gccgo_linux_amd64.go | 20 - vendor/golang.org/x/sys/unix/ioctl.go | 65 - vendor/golang.org/x/sys/unix/mkall.sh | 227 - vendor/golang.org/x/sys/unix/mkasm_darwin.go | 61 - vendor/golang.org/x/sys/unix/mkerrors.sh | 668 -- vendor/golang.org/x/sys/unix/mkpost.go | 122 - vendor/golang.org/x/sys/unix/mksyscall.go | 407 - .../x/sys/unix/mksyscall_aix_ppc.go | 415 - .../x/sys/unix/mksyscall_aix_ppc64.go | 614 -- .../x/sys/unix/mksyscall_solaris.go | 335 - .../golang.org/x/sys/unix/mksysctl_openbsd.go | 355 - vendor/golang.org/x/sys/unix/mksysnum.go | 190 - vendor/golang.org/x/sys/unix/pagesize_unix.go | 15 - .../golang.org/x/sys/unix/pledge_openbsd.go | 163 - vendor/golang.org/x/sys/unix/race.go | 30 - vendor/golang.org/x/sys/unix/race0.go | 25 - .../x/sys/unix/readdirent_getdents.go | 12 - .../x/sys/unix/readdirent_getdirentries.go | 19 - .../golang.org/x/sys/unix/sockcmsg_linux.go | 36 - vendor/golang.org/x/sys/unix/sockcmsg_unix.go | 120 - vendor/golang.org/x/sys/unix/str.go | 26 - vendor/golang.org/x/sys/unix/syscall.go | 53 - vendor/golang.org/x/sys/unix/syscall_aix.go | 536 -- .../golang.org/x/sys/unix/syscall_aix_ppc.go | 50 - .../x/sys/unix/syscall_aix_ppc64.go | 81 - vendor/golang.org/x/sys/unix/syscall_bsd.go | 618 -- .../golang.org/x/sys/unix/syscall_darwin.go | 680 -- .../x/sys/unix/syscall_darwin_386.go | 65 - .../x/sys/unix/syscall_darwin_amd64.go | 65 - .../x/sys/unix/syscall_darwin_arm.go | 68 - .../x/sys/unix/syscall_darwin_arm64.go | 70 - .../x/sys/unix/syscall_darwin_libSystem.go | 31 - .../x/sys/unix/syscall_dragonfly.go | 519 -- .../x/sys/unix/syscall_dragonfly_amd64.go | 52 - .../golang.org/x/sys/unix/syscall_freebsd.go | 877 --- .../x/sys/unix/syscall_freebsd_386.go | 52 - .../x/sys/unix/syscall_freebsd_amd64.go | 52 - .../x/sys/unix/syscall_freebsd_arm.go | 52 - .../x/sys/unix/syscall_freebsd_arm64.go | 52 - vendor/golang.org/x/sys/unix/syscall_linux.go | 1845 ----- .../x/sys/unix/syscall_linux_386.go | 386 - .../x/sys/unix/syscall_linux_amd64.go | 190 - .../x/sys/unix/syscall_linux_amd64_gc.go | 13 - .../x/sys/unix/syscall_linux_arm.go | 287 - .../x/sys/unix/syscall_linux_arm64.go | 223 - .../golang.org/x/sys/unix/syscall_linux_gc.go | 14 - .../x/sys/unix/syscall_linux_gc_386.go | 16 - .../x/sys/unix/syscall_linux_gccgo_386.go | 30 - .../x/sys/unix/syscall_linux_gccgo_arm.go | 20 - .../x/sys/unix/syscall_linux_mips64x.go | 222 - .../x/sys/unix/syscall_linux_mipsx.go | 234 - .../x/sys/unix/syscall_linux_ppc64x.go | 152 - .../x/sys/unix/syscall_linux_riscv64.go | 226 - .../x/sys/unix/syscall_linux_s390x.go | 338 - .../x/sys/unix/syscall_linux_sparc64.go | 147 - .../golang.org/x/sys/unix/syscall_netbsd.go | 618 -- .../x/sys/unix/syscall_netbsd_386.go | 33 - .../x/sys/unix/syscall_netbsd_amd64.go | 33 - .../x/sys/unix/syscall_netbsd_arm.go | 33 - .../x/sys/unix/syscall_netbsd_arm64.go | 33 - .../golang.org/x/sys/unix/syscall_openbsd.go | 412 - .../x/sys/unix/syscall_openbsd_386.go | 37 - .../x/sys/unix/syscall_openbsd_amd64.go | 37 - .../x/sys/unix/syscall_openbsd_arm.go | 37 - .../x/sys/unix/syscall_openbsd_arm64.go | 37 - .../golang.org/x/sys/unix/syscall_solaris.go | 724 -- .../x/sys/unix/syscall_solaris_amd64.go | 23 - vendor/golang.org/x/sys/unix/syscall_unix.go | 431 -- .../golang.org/x/sys/unix/syscall_unix_gc.go | 15 - .../x/sys/unix/syscall_unix_gc_ppc64x.go | 24 - vendor/golang.org/x/sys/unix/timestruct.go | 82 - vendor/golang.org/x/sys/unix/types_aix.go | 237 - vendor/golang.org/x/sys/unix/types_darwin.go | 283 - .../golang.org/x/sys/unix/types_dragonfly.go | 263 - vendor/golang.org/x/sys/unix/types_freebsd.go | 400 - vendor/golang.org/x/sys/unix/types_netbsd.go | 290 - vendor/golang.org/x/sys/unix/types_openbsd.go | 283 - vendor/golang.org/x/sys/unix/types_solaris.go | 266 - .../golang.org/x/sys/unix/unveil_openbsd.go | 42 - vendor/golang.org/x/sys/unix/xattr_bsd.go | 240 - .../golang.org/x/sys/unix/zerrors_aix_ppc.go | 1374 ---- .../x/sys/unix/zerrors_aix_ppc64.go | 1375 ---- .../x/sys/unix/zerrors_darwin_386.go | 1783 ----- .../x/sys/unix/zerrors_darwin_amd64.go | 1783 ----- .../x/sys/unix/zerrors_darwin_arm.go | 1783 ----- .../x/sys/unix/zerrors_darwin_arm64.go | 1783 ----- .../x/sys/unix/zerrors_dragonfly_amd64.go | 1650 ---- .../x/sys/unix/zerrors_freebsd_386.go | 1793 ----- .../x/sys/unix/zerrors_freebsd_amd64.go | 1794 ----- .../x/sys/unix/zerrors_freebsd_arm.go | 1802 ----- .../x/sys/unix/zerrors_freebsd_arm64.go | 1794 ----- .../x/sys/unix/zerrors_linux_386.go | 3024 -------- .../x/sys/unix/zerrors_linux_amd64.go | 3024 -------- .../x/sys/unix/zerrors_linux_arm.go | 3030 -------- .../x/sys/unix/zerrors_linux_arm64.go | 3015 -------- .../x/sys/unix/zerrors_linux_mips.go | 3031 -------- .../x/sys/unix/zerrors_linux_mips64.go | 3031 -------- .../x/sys/unix/zerrors_linux_mips64le.go | 3031 -------- .../x/sys/unix/zerrors_linux_mipsle.go | 3031 -------- .../x/sys/unix/zerrors_linux_ppc64.go | 3086 -------- .../x/sys/unix/zerrors_linux_ppc64le.go | 3086 -------- .../x/sys/unix/zerrors_linux_riscv64.go | 3011 -------- .../x/sys/unix/zerrors_linux_s390x.go | 3084 -------- .../x/sys/unix/zerrors_linux_sparc64.go | 3080 -------- .../x/sys/unix/zerrors_netbsd_386.go | 1772 ----- .../x/sys/unix/zerrors_netbsd_amd64.go | 1762 ----- .../x/sys/unix/zerrors_netbsd_arm.go | 1751 ----- .../x/sys/unix/zerrors_netbsd_arm64.go | 1762 ----- .../x/sys/unix/zerrors_openbsd_386.go | 1654 ---- .../x/sys/unix/zerrors_openbsd_amd64.go | 1765 ----- .../x/sys/unix/zerrors_openbsd_arm.go | 1656 ---- .../x/sys/unix/zerrors_openbsd_arm64.go | 1789 ----- .../x/sys/unix/zerrors_solaris_amd64.go | 1532 ---- .../golang.org/x/sys/unix/zptrace386_linux.go | 80 - .../golang.org/x/sys/unix/zptracearm_linux.go | 41 - .../x/sys/unix/zptracemips_linux.go | 50 - .../x/sys/unix/zptracemipsle_linux.go | 50 - .../golang.org/x/sys/unix/zsyscall_aix_ppc.go | 1484 ---- .../x/sys/unix/zsyscall_aix_ppc64.go | 1442 ---- .../x/sys/unix/zsyscall_aix_ppc64_gc.go | 1192 --- .../x/sys/unix/zsyscall_aix_ppc64_gccgo.go | 1070 --- .../x/sys/unix/zsyscall_darwin_386.1_11.go | 1810 ----- .../x/sys/unix/zsyscall_darwin_386.go | 2505 ------ .../x/sys/unix/zsyscall_darwin_386.s | 284 - .../x/sys/unix/zsyscall_darwin_amd64.1_11.go | 1810 ----- .../x/sys/unix/zsyscall_darwin_amd64.go | 2520 ------ .../x/sys/unix/zsyscall_darwin_amd64.s | 286 - .../x/sys/unix/zsyscall_darwin_arm.1_11.go | 1793 ----- .../x/sys/unix/zsyscall_darwin_arm.go | 2468 ------ .../x/sys/unix/zsyscall_darwin_arm.s | 280 - .../x/sys/unix/zsyscall_darwin_arm64.1_11.go | 1793 ----- .../x/sys/unix/zsyscall_darwin_arm64.go | 2468 ------ .../x/sys/unix/zsyscall_darwin_arm64.s | 280 - .../x/sys/unix/zsyscall_dragonfly_amd64.go | 1676 ---- .../x/sys/unix/zsyscall_freebsd_386.go | 2025 ----- .../x/sys/unix/zsyscall_freebsd_amd64.go | 2025 ----- .../x/sys/unix/zsyscall_freebsd_arm.go | 2025 ----- .../x/sys/unix/zsyscall_freebsd_arm64.go | 2025 ----- .../x/sys/unix/zsyscall_linux_386.go | 2270 ------ .../x/sys/unix/zsyscall_linux_amd64.go | 2437 ------ .../x/sys/unix/zsyscall_linux_arm.go | 2407 ------ .../x/sys/unix/zsyscall_linux_arm64.go | 2294 ------ .../x/sys/unix/zsyscall_linux_mips.go | 2450 ------ .../x/sys/unix/zsyscall_linux_mips64.go | 2421 ------ .../x/sys/unix/zsyscall_linux_mips64le.go | 2421 ------ .../x/sys/unix/zsyscall_linux_mipsle.go | 2450 ------ .../x/sys/unix/zsyscall_linux_ppc64.go | 2499 ------ .../x/sys/unix/zsyscall_linux_ppc64le.go | 2499 ------ .../x/sys/unix/zsyscall_linux_riscv64.go | 2274 ------ .../x/sys/unix/zsyscall_linux_s390x.go | 2269 ------ .../x/sys/unix/zsyscall_linux_sparc64.go | 2432 ------ .../x/sys/unix/zsyscall_netbsd_386.go | 1826 ----- .../x/sys/unix/zsyscall_netbsd_amd64.go | 1826 ----- .../x/sys/unix/zsyscall_netbsd_arm.go | 1826 ----- .../x/sys/unix/zsyscall_netbsd_arm64.go | 1826 ----- .../x/sys/unix/zsyscall_openbsd_386.go | 1692 ---- .../x/sys/unix/zsyscall_openbsd_amd64.go | 1692 ---- .../x/sys/unix/zsyscall_openbsd_arm.go | 1692 ---- .../x/sys/unix/zsyscall_openbsd_arm64.go | 1692 ---- .../x/sys/unix/zsyscall_solaris_amd64.go | 1953 ----- .../x/sys/unix/zsysctl_openbsd_386.go | 272 - .../x/sys/unix/zsysctl_openbsd_amd64.go | 270 - .../x/sys/unix/zsysctl_openbsd_arm.go | 272 - .../x/sys/unix/zsysctl_openbsd_arm64.go | 275 - .../x/sys/unix/zsysnum_darwin_386.go | 436 -- .../x/sys/unix/zsysnum_darwin_amd64.go | 438 -- .../x/sys/unix/zsysnum_darwin_arm.go | 436 -- .../x/sys/unix/zsysnum_darwin_arm64.go | 436 -- .../x/sys/unix/zsysnum_dragonfly_amd64.go | 315 - .../x/sys/unix/zsysnum_freebsd_386.go | 396 - .../x/sys/unix/zsysnum_freebsd_amd64.go | 396 - .../x/sys/unix/zsysnum_freebsd_arm.go | 396 - .../x/sys/unix/zsysnum_freebsd_arm64.go | 396 - .../x/sys/unix/zsysnum_linux_386.go | 432 -- .../x/sys/unix/zsysnum_linux_amd64.go | 354 - .../x/sys/unix/zsysnum_linux_arm.go | 396 - .../x/sys/unix/zsysnum_linux_arm64.go | 299 - .../x/sys/unix/zsysnum_linux_mips.go | 417 - .../x/sys/unix/zsysnum_linux_mips64.go | 347 - .../x/sys/unix/zsysnum_linux_mips64le.go | 347 - .../x/sys/unix/zsysnum_linux_mipsle.go | 417 - .../x/sys/unix/zsysnum_linux_ppc64.go | 396 - .../x/sys/unix/zsysnum_linux_ppc64le.go | 396 - .../x/sys/unix/zsysnum_linux_riscv64.go | 298 - .../x/sys/unix/zsysnum_linux_s390x.go | 361 - .../x/sys/unix/zsysnum_linux_sparc64.go | 376 - .../x/sys/unix/zsysnum_netbsd_386.go | 274 - .../x/sys/unix/zsysnum_netbsd_amd64.go | 274 - .../x/sys/unix/zsysnum_netbsd_arm.go | 274 - .../x/sys/unix/zsysnum_netbsd_arm64.go | 274 - .../x/sys/unix/zsysnum_openbsd_386.go | 218 - .../x/sys/unix/zsysnum_openbsd_amd64.go | 218 - .../x/sys/unix/zsysnum_openbsd_arm.go | 218 - .../x/sys/unix/zsysnum_openbsd_arm64.go | 217 - .../golang.org/x/sys/unix/ztypes_aix_ppc.go | 352 - .../golang.org/x/sys/unix/ztypes_aix_ppc64.go | 356 - .../x/sys/unix/ztypes_darwin_386.go | 499 -- .../x/sys/unix/ztypes_darwin_amd64.go | 509 -- .../x/sys/unix/ztypes_darwin_arm.go | 500 -- .../x/sys/unix/ztypes_darwin_arm64.go | 509 -- .../x/sys/unix/ztypes_dragonfly_amd64.go | 469 -- .../x/sys/unix/ztypes_freebsd_386.go | 700 -- .../x/sys/unix/ztypes_freebsd_amd64.go | 706 -- .../x/sys/unix/ztypes_freebsd_arm.go | 683 -- .../x/sys/unix/ztypes_freebsd_arm64.go | 684 -- .../golang.org/x/sys/unix/ztypes_linux_386.go | 2523 ------ .../x/sys/unix/ztypes_linux_amd64.go | 2537 ------ .../golang.org/x/sys/unix/ztypes_linux_arm.go | 2514 ------ .../x/sys/unix/ztypes_linux_arm64.go | 2516 ------ .../x/sys/unix/ztypes_linux_mips.go | 2520 ------ .../x/sys/unix/ztypes_linux_mips64.go | 2518 ------ .../x/sys/unix/ztypes_linux_mips64le.go | 2518 ------ .../x/sys/unix/ztypes_linux_mipsle.go | 2520 ------ .../x/sys/unix/ztypes_linux_ppc64.go | 2526 ------ .../x/sys/unix/ztypes_linux_ppc64le.go | 2526 ------ .../x/sys/unix/ztypes_linux_riscv64.go | 2544 ------ .../x/sys/unix/ztypes_linux_s390x.go | 2540 ------ .../x/sys/unix/ztypes_linux_sparc64.go | 2521 ------ .../x/sys/unix/ztypes_netbsd_386.go | 466 -- .../x/sys/unix/ztypes_netbsd_amd64.go | 473 -- .../x/sys/unix/ztypes_netbsd_arm.go | 471 -- .../x/sys/unix/ztypes_netbsd_arm64.go | 473 -- .../x/sys/unix/ztypes_openbsd_386.go | 571 -- .../x/sys/unix/ztypes_openbsd_amd64.go | 571 -- .../x/sys/unix/ztypes_openbsd_arm.go | 572 -- .../x/sys/unix/ztypes_openbsd_arm64.go | 565 -- .../x/sys/unix/ztypes_solaris_amd64.go | 442 -- vendor/golang.org/x/sys/windows/aliases.go | 13 - .../x/sys/windows/asm_windows_386.s | 13 - .../x/sys/windows/asm_windows_amd64.s | 13 - .../x/sys/windows/asm_windows_arm.s | 11 - .../golang.org/x/sys/windows/dll_windows.go | 378 - .../golang.org/x/sys/windows/env_windows.go | 61 - vendor/golang.org/x/sys/windows/eventlog.go | 20 - .../golang.org/x/sys/windows/exec_windows.go | 97 - .../x/sys/windows/memory_windows.go | 26 - vendor/golang.org/x/sys/windows/mkerrors.bash | 63 - .../x/sys/windows/mkknownfolderids.bash | 27 - vendor/golang.org/x/sys/windows/mksyscall.go | 9 - vendor/golang.org/x/sys/windows/race.go | 30 - vendor/golang.org/x/sys/windows/race0.go | 25 - .../x/sys/windows/security_windows.go | 892 --- vendor/golang.org/x/sys/windows/service.go | 229 - vendor/golang.org/x/sys/windows/str.go | 22 - vendor/golang.org/x/sys/windows/syscall.go | 74 - .../x/sys/windows/syscall_windows.go | 1334 ---- .../golang.org/x/sys/windows/types_windows.go | 1690 ---- .../x/sys/windows/types_windows_386.go | 22 - .../x/sys/windows/types_windows_amd64.go | 22 - .../x/sys/windows/types_windows_arm.go | 22 - .../x/sys/windows/zerrors_windows.go | 6853 ----------------- .../x/sys/windows/zknownfolderids_windows.go | 149 - .../x/sys/windows/zsyscall_windows.go | 3457 --------- .../hlandau/easymetric.v1/cexp/cexp.go | 97 - .../gopkg.in/hlandau/measurable.v1/README.md | 82 - .../hlandau/measurable.v1/measurable.go | 189 - .../gopkg.in/hlandau/passlib.v1/.travis.yml | 12 - vendor/gopkg.in/hlandau/passlib.v1/COPYING | 39 - vendor/gopkg.in/hlandau/passlib.v1/README.md | 100 - .../hlandau/passlib.v1/abstract/compare.go | 11 - .../hlandau/passlib.v1/abstract/errors.go | 15 - .../hlandau/passlib.v1/abstract/scheme.go | 34 - vendor/gopkg.in/hlandau/passlib.v1/default.go | 141 - .../hlandau/passlib.v1/hash/argon2/argon2.go | 115 - .../passlib.v1/hash/argon2/raw/argon2.go | 186 - .../hlandau/passlib.v1/hash/bcrypt/bcrypt.go | 72 - .../hash/bcryptsha256/bcryptsha256.go | 96 - .../hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go | 94 - .../passlib.v1/hash/pbkdf2/raw/base64.go | 20 - .../passlib.v1/hash/pbkdf2/raw/parse.go | 62 - .../passlib.v1/hash/pbkdf2/raw/pbkdf2.go | 15 - .../hlandau/passlib.v1/hash/pbkdf2/test.py | 30 - .../passlib.v1/hash/scrypt/raw/scrypt.go | 95 - .../hlandau/passlib.v1/hash/scrypt/scrypt.go | 113 - .../passlib.v1/hash/sha2crypt/raw/base64.go | 34 - .../passlib.v1/hash/sha2crypt/raw/parse.go | 82 - .../hash/sha2crypt/raw/sha2crypt.go | 187 - .../passlib.v1/hash/sha2crypt/sha2crypt.go | 147 - vendor/gopkg.in/hlandau/passlib.v1/passlib.go | 174 - vendor/modules.txt | 81 - xs/{termsize_linux.go => termsize_unix.go} | 3 +- xs/xs.go | 28 +- xsd/xsd.go | 11 +- xspasswd/xspasswd.go | 4 +- 891 files changed, 351 insertions(+), 304834 deletions(-) create mode 100644 logger/logger_bsd.go create mode 100644 termmode_bsd.go rename termmode_unix.go => termmode_linux.go (99%) delete mode 100644 vendor/blitter.com/go/chacha20/LICENSE delete mode 100644 vendor/blitter.com/go/chacha20/README.md delete mode 100644 vendor/blitter.com/go/chacha20/chacha20.go delete mode 100644 vendor/blitter.com/go/chacha20/go.mod delete mode 100644 vendor/blitter.com/go/chacha20/go.sum delete mode 100644 vendor/blitter.com/go/chacha20/internal/api/api.go delete mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl.go delete mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go delete mode 100644 vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s delete mode 100644 vendor/blitter.com/go/chacha20/internal/ref/impl.go delete mode 100644 vendor/blitter.com/go/cryptmt/README.md delete mode 100644 vendor/blitter.com/go/cryptmt/cryptmt.go delete mode 100644 vendor/blitter.com/go/goutmp/LICENSE.mit delete mode 100644 vendor/blitter.com/go/goutmp/README.md delete mode 100644 vendor/blitter.com/go/goutmp/goutmp.go delete mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.gpl delete mode 100644 vendor/blitter.com/go/herradurakex/LICENSE.mit delete mode 100644 vendor/blitter.com/go/herradurakex/Makefile delete mode 100644 vendor/blitter.com/go/herradurakex/README.md delete mode 100644 vendor/blitter.com/go/herradurakex/herradurakex.go delete mode 100644 vendor/blitter.com/go/kyber/.gitignore delete mode 100644 vendor/blitter.com/go/kyber/LICENSE delete mode 100644 vendor/blitter.com/go/kyber/README.md delete mode 100644 vendor/blitter.com/go/kyber/cbd.go delete mode 100644 vendor/blitter.com/go/kyber/doc.go delete mode 100644 vendor/blitter.com/go/kyber/go.mod delete mode 100644 vendor/blitter.com/go/kyber/go.sum delete mode 100644 vendor/blitter.com/go/kyber/hwaccel.go delete mode 100644 vendor/blitter.com/go/kyber/hwaccel_amd64.go delete mode 100644 vendor/blitter.com/go/kyber/hwaccel_amd64.s delete mode 100644 vendor/blitter.com/go/kyber/hwaccel_ref.go delete mode 100644 vendor/blitter.com/go/kyber/indcpa.go delete mode 100644 vendor/blitter.com/go/kyber/kem.go delete mode 100644 vendor/blitter.com/go/kyber/kex.go delete mode 100644 vendor/blitter.com/go/kyber/ntt.go delete mode 100644 vendor/blitter.com/go/kyber/params.go delete mode 100644 vendor/blitter.com/go/kyber/poly.go delete mode 100644 vendor/blitter.com/go/kyber/polyvec.go delete mode 100644 vendor/blitter.com/go/kyber/precomp.go delete mode 100644 vendor/blitter.com/go/kyber/reduce.go delete mode 100644 vendor/blitter.com/go/mtwist/mtwist.go delete mode 100644 vendor/blitter.com/go/newhope/LICENSE delete mode 100644 vendor/blitter.com/go/newhope/batcher.go delete mode 100644 vendor/blitter.com/go/newhope/error_correction.go delete mode 100644 vendor/blitter.com/go/newhope/go.mod delete mode 100644 vendor/blitter.com/go/newhope/go.sum delete mode 100644 vendor/blitter.com/go/newhope/newhope.go delete mode 100644 vendor/blitter.com/go/newhope/newhope_simple.go delete mode 100644 vendor/blitter.com/go/newhope/ntt.go delete mode 100644 vendor/blitter.com/go/newhope/params.go delete mode 100644 vendor/blitter.com/go/newhope/poly.go delete mode 100644 vendor/blitter.com/go/newhope/poly_simple.go delete mode 100644 vendor/blitter.com/go/newhope/precomp.go delete mode 100644 vendor/blitter.com/go/newhope/reduce.go delete mode 100644 vendor/github.com/aead/chacha20/LICENSE delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha.go delete mode 100644 vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_386.go delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_386.s delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_amd64.go delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_amd64.s delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_generic.go delete mode 100644 vendor/github.com/aead/chacha20/chacha/chacha_ref.go delete mode 100644 vendor/github.com/aead/chacha20/chacha/const.s delete mode 100644 vendor/github.com/aead/chacha20/chacha/macro.s delete mode 100644 vendor/github.com/jameskeane/bcrypt/.gitignore delete mode 100644 vendor/github.com/jameskeane/bcrypt/LICENSE delete mode 100644 vendor/github.com/jameskeane/bcrypt/README delete mode 100644 vendor/github.com/jameskeane/bcrypt/bcrypt.go delete mode 100644 vendor/github.com/jameskeane/bcrypt/cipher.go delete mode 100644 vendor/github.com/klauspost/cpuid/.gitignore delete mode 100644 vendor/github.com/klauspost/cpuid/.travis.yml delete mode 100644 vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt delete mode 100644 vendor/github.com/klauspost/cpuid/LICENSE delete mode 100644 vendor/github.com/klauspost/cpuid/README.md delete mode 100644 vendor/github.com/klauspost/cpuid/cpuid.go delete mode 100644 vendor/github.com/klauspost/cpuid/cpuid_386.s delete mode 100644 vendor/github.com/klauspost/cpuid/cpuid_amd64.s delete mode 100644 vendor/github.com/klauspost/cpuid/detect_intel.go delete mode 100644 vendor/github.com/klauspost/cpuid/detect_ref.go delete mode 100644 vendor/github.com/klauspost/cpuid/generate.go delete mode 100644 vendor/github.com/klauspost/cpuid/private-gen.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/.gitignore delete mode 100644 vendor/github.com/klauspost/reedsolomon/.travis.yml delete mode 100644 vendor/github.com/klauspost/reedsolomon/LICENSE delete mode 100644 vendor/github.com/klauspost/reedsolomon/README.md delete mode 100644 vendor/github.com/klauspost/reedsolomon/appveyor.yml delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_amd64.s delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_arm64.s delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_noasm.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s delete mode 100644 vendor/github.com/klauspost/reedsolomon/gentables.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/inversion_tree.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/matrix.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/options.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/reedsolomon.go delete mode 100644 vendor/github.com/klauspost/reedsolomon/streaming.go delete mode 100644 vendor/github.com/kr/pty/.gitignore delete mode 100644 vendor/github.com/kr/pty/License delete mode 100644 vendor/github.com/kr/pty/README.md delete mode 100644 vendor/github.com/kr/pty/doc.go delete mode 100644 vendor/github.com/kr/pty/go.mod delete mode 100644 vendor/github.com/kr/pty/ioctl.go delete mode 100644 vendor/github.com/kr/pty/ioctl_bsd.go delete mode 100644 vendor/github.com/kr/pty/mktypes.bash delete mode 100644 vendor/github.com/kr/pty/pty_darwin.go delete mode 100644 vendor/github.com/kr/pty/pty_dragonfly.go delete mode 100644 vendor/github.com/kr/pty/pty_freebsd.go delete mode 100644 vendor/github.com/kr/pty/pty_linux.go delete mode 100644 vendor/github.com/kr/pty/pty_openbsd.go delete mode 100644 vendor/github.com/kr/pty/pty_unsupported.go delete mode 100644 vendor/github.com/kr/pty/run.go delete mode 100644 vendor/github.com/kr/pty/types.go delete mode 100644 vendor/github.com/kr/pty/types_dragonfly.go delete mode 100644 vendor/github.com/kr/pty/types_freebsd.go delete mode 100644 vendor/github.com/kr/pty/types_openbsd.go delete mode 100644 vendor/github.com/kr/pty/util.go delete mode 100644 vendor/github.com/kr/pty/ztypes_386.go delete mode 100644 vendor/github.com/kr/pty/ztypes_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_arm.go delete mode 100644 vendor/github.com/kr/pty/ztypes_arm64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_386.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_freebsd_arm.go delete mode 100644 vendor/github.com/kr/pty/ztypes_mipsx.go delete mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_386.go delete mode 100644 vendor/github.com/kr/pty/ztypes_openbsd_amd64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_ppc64.go delete mode 100644 vendor/github.com/kr/pty/ztypes_ppc64le.go delete mode 100644 vendor/github.com/kr/pty/ztypes_s390x.go delete mode 100644 vendor/github.com/mattn/go-isatty/.travis.yml delete mode 100644 vendor/github.com/mattn/go-isatty/LICENSE delete mode 100644 vendor/github.com/mattn/go-isatty/README.md delete mode 100644 vendor/github.com/mattn/go-isatty/doc.go delete mode 100644 vendor/github.com/mattn/go-isatty/go.mod delete mode 100644 vendor/github.com/mattn/go-isatty/go.sum delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_android.go delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_bsd.go delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_linux.go delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_others.go delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_solaris.go delete mode 100644 vendor/github.com/mattn/go-isatty/isatty_windows.go delete mode 100644 vendor/github.com/pkg/errors/.gitignore delete mode 100644 vendor/github.com/pkg/errors/.travis.yml delete mode 100644 vendor/github.com/pkg/errors/LICENSE delete mode 100644 vendor/github.com/pkg/errors/README.md delete mode 100644 vendor/github.com/pkg/errors/appveyor.yml delete mode 100644 vendor/github.com/pkg/errors/errors.go delete mode 100644 vendor/github.com/pkg/errors/stack.go delete mode 100644 vendor/github.com/templexxx/cpufeat/.gitignore delete mode 100644 vendor/github.com/templexxx/cpufeat/LICENSE delete mode 100644 vendor/github.com/templexxx/cpufeat/README.md delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_arm64.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mips64le.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_mipsle.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_s390x.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.go delete mode 100644 vendor/github.com/templexxx/cpufeat/cpu_x86.s delete mode 100644 vendor/github.com/templexxx/xor/.gitattributes delete mode 100644 vendor/github.com/templexxx/xor/.gitignore delete mode 100644 vendor/github.com/templexxx/xor/LICENSE delete mode 100644 vendor/github.com/templexxx/xor/README.md delete mode 100644 vendor/github.com/templexxx/xor/avx2_amd64.s delete mode 100644 vendor/github.com/templexxx/xor/nosimd.go delete mode 100644 vendor/github.com/templexxx/xor/sse2_amd64.s delete mode 100644 vendor/github.com/templexxx/xor/xor.go delete mode 100644 vendor/github.com/templexxx/xor/xor_amd64.go delete mode 100644 vendor/github.com/templexxx/xor/xor_other.go delete mode 100644 vendor/github.com/tjfoc/gmsm/LICENSE delete mode 100644 vendor/github.com/tjfoc/gmsm/sm4/sm4.go delete mode 100644 vendor/github.com/xtaci/kcp-go/.gitignore delete mode 100644 vendor/github.com/xtaci/kcp-go/.travis.yml delete mode 100644 vendor/github.com/xtaci/kcp-go/LICENSE delete mode 100644 vendor/github.com/xtaci/kcp-go/README.md delete mode 100644 vendor/github.com/xtaci/kcp-go/batchconn.go delete mode 100644 vendor/github.com/xtaci/kcp-go/crypt.go delete mode 100644 vendor/github.com/xtaci/kcp-go/donate.png delete mode 100644 vendor/github.com/xtaci/kcp-go/entropy.go delete mode 100644 vendor/github.com/xtaci/kcp-go/fec.go delete mode 100644 vendor/github.com/xtaci/kcp-go/flame.png delete mode 100644 vendor/github.com/xtaci/kcp-go/frame.png delete mode 100644 vendor/github.com/xtaci/kcp-go/kcp-go.png delete mode 100644 vendor/github.com/xtaci/kcp-go/kcp.go delete mode 100644 vendor/github.com/xtaci/kcp-go/readloop.go delete mode 100644 vendor/github.com/xtaci/kcp-go/readloop_generic.go delete mode 100644 vendor/github.com/xtaci/kcp-go/readloop_linux.go delete mode 100644 vendor/github.com/xtaci/kcp-go/sess.go delete mode 100644 vendor/github.com/xtaci/kcp-go/snmp.go delete mode 100644 vendor/github.com/xtaci/kcp-go/tx.go delete mode 100644 vendor/github.com/xtaci/kcp-go/tx_generic.go delete mode 100644 vendor/github.com/xtaci/kcp-go/tx_linux.go delete mode 100644 vendor/github.com/xtaci/kcp-go/wechat_donate.jpg delete mode 100644 vendor/golang.org/x/crypto/AUTHORS delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/crypto/LICENSE delete mode 100644 vendor/golang.org/x/crypto/PATENTS delete mode 100644 vendor/golang.org/x/crypto/argon2/argon2.go delete mode 100644 vendor/golang.org/x/crypto/argon2/blake2b.go delete mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.go delete mode 100644 vendor/golang.org/x/crypto/argon2/blamka_amd64.s delete mode 100644 vendor/golang.org/x/crypto/argon2/blamka_generic.go delete mode 100644 vendor/golang.org/x/crypto/argon2/blamka_ref.go delete mode 100644 vendor/golang.org/x/crypto/bcrypt/base64.go delete mode 100644 vendor/golang.org/x/crypto/bcrypt/bcrypt.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_generic.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2b_ref.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/blake2x.go delete mode 100644 vendor/golang.org/x/crypto/blake2b/register.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/block.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/cipher.go delete mode 100644 vendor/golang.org/x/crypto/blowfish/const.go delete mode 100644 vendor/golang.org/x/crypto/cast5/cast5.go delete mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing.go delete mode 100644 vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go delete mode 100644 vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go delete mode 100644 vendor/golang.org/x/crypto/salsa20/salsa20.go delete mode 100644 vendor/golang.org/x/crypto/scrypt/scrypt.go delete mode 100644 vendor/golang.org/x/crypto/sha3/doc.go delete mode 100644 vendor/golang.org/x/crypto/sha3/hashes.go delete mode 100644 vendor/golang.org/x/crypto/sha3/hashes_generic.go delete mode 100644 vendor/golang.org/x/crypto/sha3/keccakf.go delete mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.go delete mode 100644 vendor/golang.org/x/crypto/sha3/keccakf_amd64.s delete mode 100644 vendor/golang.org/x/crypto/sha3/register.go delete mode 100644 vendor/golang.org/x/crypto/sha3/sha3.go delete mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.go delete mode 100644 vendor/golang.org/x/crypto/sha3/sha3_s390x.s delete mode 100644 vendor/golang.org/x/crypto/sha3/shake.go delete mode 100644 vendor/golang.org/x/crypto/sha3/shake_generic.go delete mode 100644 vendor/golang.org/x/crypto/sha3/xor.go delete mode 100644 vendor/golang.org/x/crypto/sha3/xor_generic.go delete mode 100644 vendor/golang.org/x/crypto/sha3/xor_unaligned.go delete mode 100644 vendor/golang.org/x/crypto/tea/cipher.go delete mode 100644 vendor/golang.org/x/crypto/twofish/twofish.go delete mode 100644 vendor/golang.org/x/crypto/xtea/block.go delete mode 100644 vendor/golang.org/x/crypto/xtea/cipher.go delete mode 100644 vendor/golang.org/x/net/AUTHORS delete mode 100644 vendor/golang.org/x/net/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/net/LICENSE delete mode 100644 vendor/golang.org/x/net/PATENTS delete mode 100644 vendor/golang.org/x/net/bpf/asm.go delete mode 100644 vendor/golang.org/x/net/bpf/constants.go delete mode 100644 vendor/golang.org/x/net/bpf/doc.go delete mode 100644 vendor/golang.org/x/net/bpf/instructions.go delete mode 100644 vendor/golang.org/x/net/bpf/setter.go delete mode 100644 vendor/golang.org/x/net/bpf/vm.go delete mode 100644 vendor/golang.org/x/net/bpf/vm_instructions.go delete mode 100644 vendor/golang.org/x/net/internal/iana/const.go delete mode 100644 vendor/golang.org/x/net/internal/iana/gen.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_aix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/internal/socket/empty.s delete mode 100644 vendor/golang.org/x/net/internal/socket/error_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/error_windows.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/iovec_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go delete mode 100644 vendor/golang.org/x/net/internal/socket/msghdr_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/norace.go delete mode 100644 vendor/golang.org/x/net/internal/socket/race.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_msg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go delete mode 100644 vendor/golang.org/x/net/internal/socket/socket.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_bsdvar.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_const_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linkname.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_386.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_netbsd.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_posix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_stub.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_unix.go delete mode 100644 vendor/golang.org/x/net/internal/socket/sys_windows.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv4/batch.go delete mode 100644 vendor/golang.org/x/net/ipv4/control.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_pktinfo.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_unix.go delete mode 100644 vendor/golang.org/x/net/ipv4/control_windows.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_aix.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv4/dgramopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/doc.go delete mode 100644 vendor/golang.org/x/net/ipv4/endpoint.go delete mode 100644 vendor/golang.org/x/net/ipv4/gen.go delete mode 100644 vendor/golang.org/x/net/ipv4/genericopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/header.go delete mode 100644 vendor/golang.org/x/net/ipv4/helper.go delete mode 100644 vendor/golang.org/x/net/ipv4/iana.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/icmp_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/packet.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_cmsg.go delete mode 100644 vendor/golang.org/x/net/ipv4/payload_nocmsg.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt_posix.go delete mode 100644 vendor/golang.org/x/net/ipv4/sockopt_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_aix.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bpf_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_linux.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_stub.go delete mode 100644 vendor/golang.org/x/net/ipv4/sys_windows.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv4/zsys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/batch.go delete mode 100644 vendor/golang.org/x/net/ipv6/control.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_unix.go delete mode 100644 vendor/golang.org/x/net/ipv6/control_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_aix.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/defs_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/dgramopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/doc.go delete mode 100644 vendor/golang.org/x/net/ipv6/endpoint.go delete mode 100644 vendor/golang.org/x/net/ipv6/gen.go delete mode 100644 vendor/golang.org/x/net/ipv6/genericopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/header.go delete mode 100644 vendor/golang.org/x/net/ipv6/helper.go delete mode 100644 vendor/golang.org/x/net/ipv6/iana.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/icmp_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_cmsg.go delete mode 100644 vendor/golang.org/x/net/ipv6/payload_nocmsg.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt_posix.go delete mode 100644 vendor/golang.org/x/net/ipv6/sockopt_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_aix.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bpf_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_bsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_freebsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_linux.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_solaris.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_stub.go delete mode 100644 vendor/golang.org/x/net/ipv6/sys_windows.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_darwin.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_dragonfly.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_386.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_netbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_openbsd.go delete mode 100644 vendor/golang.org/x/net/ipv6/zsys_solaris.go delete mode 100644 vendor/golang.org/x/sys/AUTHORS delete mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/sys/LICENSE delete mode 100644 vendor/golang.org/x/sys/PATENTS delete mode 100644 vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s delete mode 100644 vendor/golang.org/x/sys/cpu/byteorder.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_x86.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.c delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_mips64x.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_mipsx.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_arm64.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.s delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_wasm.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.go delete mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.s delete mode 100644 vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go delete mode 100644 vendor/golang.org/x/sys/unix/.gitignore delete mode 100644 vendor/golang.org/x/sys/unix/README.md delete mode 100644 vendor/golang.org/x/sys/unix/affinity_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/aliases.go delete mode 100644 vendor/golang.org/x/sys/unix/asm_aix_ppc64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_darwin_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mips64x.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_mipsx.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_riscv64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_linux_s390x.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_386.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/asm_solaris_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/bluetooth_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/cap_freebsd.go delete mode 100644 vendor/golang.org/x/sys/unix/constants.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_darwin.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_dragonfly.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_freebsd.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_netbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/dev_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/dirent.go delete mode 100644 vendor/golang.org/x/sys/unix/endian_big.go delete mode 100644 vendor/golang.org/x/sys/unix/endian_little.go delete mode 100644 vendor/golang.org/x/sys/unix/env_unix.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/errors_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/fcntl.go delete mode 100644 vendor/golang.org/x/sys/unix/fcntl_darwin.go delete mode 100644 vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go delete mode 100644 vendor/golang.org/x/sys/unix/gccgo.go delete mode 100644 vendor/golang.org/x/sys/unix/gccgo_c.c delete mode 100644 vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ioctl.go delete mode 100644 vendor/golang.org/x/sys/unix/mkall.sh delete mode 100644 vendor/golang.org/x/sys/unix/mkasm_darwin.go delete mode 100644 vendor/golang.org/x/sys/unix/mkerrors.sh delete mode 100644 vendor/golang.org/x/sys/unix/mkpost.go delete mode 100644 vendor/golang.org/x/sys/unix/mksyscall.go delete mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/mksyscall_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.go delete mode 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/mksysnum.go delete mode 100644 vendor/golang.org/x/sys/unix/pagesize_unix.go delete mode 100644 vendor/golang.org/x/sys/unix/pledge_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/race.go delete mode 100644 vendor/golang.org/x/sys/unix/race0.go delete mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdents.go delete mode 100644 vendor/golang.org/x/sys/unix/readdirent_getdirentries.go delete mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/sockcmsg_unix.go delete mode 100644 vendor/golang.org/x/sys/unix/str.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_aix.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_bsd.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_unix.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc.go delete mode 100644 vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go delete mode 100644 vendor/golang.org/x/sys/unix/timestruct.go delete mode 100644 vendor/golang.org/x/sys/unix/types_aix.go delete mode 100644 vendor/golang.org/x/sys/unix/types_darwin.go delete mode 100644 vendor/golang.org/x/sys/unix/types_dragonfly.go delete mode 100644 vendor/golang.org/x/sys/unix/types_freebsd.go delete mode 100644 vendor/golang.org/x/sys/unix/types_netbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/types_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/types_solaris.go delete mode 100644 vendor/golang.org/x/sys/unix/unveil_openbsd.go delete mode 100644 vendor/golang.org/x/sys/unix/xattr_bsd.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zptrace386_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/zptracearm_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/zptracemips_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/zptracemipsle_linux.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_386.s delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.s delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_386.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_386.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go delete mode 100644 vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go delete mode 100644 vendor/golang.org/x/sys/windows/aliases.go delete mode 100644 vendor/golang.org/x/sys/windows/asm_windows_386.s delete mode 100644 vendor/golang.org/x/sys/windows/asm_windows_amd64.s delete mode 100644 vendor/golang.org/x/sys/windows/asm_windows_arm.s delete mode 100644 vendor/golang.org/x/sys/windows/dll_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/env_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/eventlog.go delete mode 100644 vendor/golang.org/x/sys/windows/exec_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/memory_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/mkerrors.bash delete mode 100644 vendor/golang.org/x/sys/windows/mkknownfolderids.bash delete mode 100644 vendor/golang.org/x/sys/windows/mksyscall.go delete mode 100644 vendor/golang.org/x/sys/windows/race.go delete mode 100644 vendor/golang.org/x/sys/windows/race0.go delete mode 100644 vendor/golang.org/x/sys/windows/security_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/service.go delete mode 100644 vendor/golang.org/x/sys/windows/str.go delete mode 100644 vendor/golang.org/x/sys/windows/syscall.go delete mode 100644 vendor/golang.org/x/sys/windows/syscall_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/types_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/types_windows_386.go delete mode 100644 vendor/golang.org/x/sys/windows/types_windows_amd64.go delete mode 100644 vendor/golang.org/x/sys/windows/types_windows_arm.go delete mode 100644 vendor/golang.org/x/sys/windows/zerrors_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/zknownfolderids_windows.go delete mode 100644 vendor/golang.org/x/sys/windows/zsyscall_windows.go delete mode 100644 vendor/gopkg.in/hlandau/easymetric.v1/cexp/cexp.go delete mode 100644 vendor/gopkg.in/hlandau/measurable.v1/README.md delete mode 100644 vendor/gopkg.in/hlandau/measurable.v1/measurable.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/.travis.yml delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/COPYING delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/README.md delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/compare.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/errors.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/abstract/scheme.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/default.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/argon2.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/argon2/raw/argon2.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcrypt/bcrypt.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/bcryptsha256/bcryptsha256.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/pbkdf2.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/base64.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/parse.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/raw/pbkdf2.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/pbkdf2/test.py delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/raw/scrypt.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/scrypt/scrypt.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/base64.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/parse.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/raw/sha2crypt.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/hash/sha2crypt/sha2crypt.go delete mode 100644 vendor/gopkg.in/hlandau/passlib.v1/passlib.go delete mode 100644 vendor/modules.txt rename xs/{termsize_linux.go => termsize_unix.go} (97%) diff --git a/Makefile b/Makefile index 22e6693..f6e1eca 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,4 @@ +MAKE=gmake VERSION := 0.8.21 .PHONY: lint vis clean common client server passwd subpkgs install uninstall reinstall diff --git a/auth.go b/auth.go index 017dd98..2289f01 100644 --- a/auth.go +++ b/auth.go @@ -18,6 +18,7 @@ import ( "io" "io/ioutil" "log" + "os" "os/user" "runtime" "strings" @@ -44,7 +45,15 @@ func VerifyPass(ctx *AuthCtx, user, password string) (bool, error) { ctx.reader = ioutil.ReadFile // dependency injection hides that this is required } passlib.UseDefaults(passlib.Defaults20180601) - pwFileData, e := ctx.reader("/etc/shadow") + var pwFileName string + if runtime.GOOS == "linux" { + pwFileName = "/etc/shadow" + } else if runtime.GOOS == "freebsd" { + pwFileName = "/etc/master.passwd" + } else { + pwFileName = "unsupported" + } + pwFileData, e := ctx.reader(pwFileName) if e != nil { return false, e } @@ -195,3 +204,23 @@ func AuthUserByToken(ctx *AuthCtx, username string, connhostname string, auth st } return } + +func GetTool(tool string) (ret string) { + ret = "/bin/"+tool + _, err := os.Stat(ret) + if err == nil { + return ret + } + ret = "/usr/bin/"+tool + _, err = os.Stat(ret) + if err == nil { + return ret + } + ret = "/usr/local/bin/"+tool + _, err = os.Stat(ret) + if err == nil { + return ret + } + return "" +} + diff --git a/go.mod b/go.mod index f010a64..5b19b58 100644 --- a/go.mod +++ b/go.mod @@ -4,9 +4,8 @@ go 1.12 require ( blitter.com/go/cryptmt v1.0.2 - blitter.com/go/goutmp v1.0.2 + blitter.com/go/goutmp v1.0.3 blitter.com/go/herradurakex v1.0.0 - blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95 // indirect blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 blitter.com/go/mtwist v1.0.1 // indirect blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae @@ -22,9 +21,9 @@ require ( github.com/tjfoc/gmsm v1.0.1 // indirect github.com/xtaci/kcp-go v5.4.19+incompatible github.com/xtaci/lossyconn v0.0.0-20190602105132-8df528c0c9ae // indirect - golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d + golang.org/x/crypto v0.0.0-20200414173820-0848c9571904 golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect - golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 + golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 gopkg.in/hlandau/easymetric.v1 v1.0.0 // indirect gopkg.in/hlandau/measurable.v1 v1.0.1 // indirect gopkg.in/hlandau/passlib.v1 v1.0.10 diff --git a/go.sum b/go.sum index 9777f12..1b8821e 100644 --- a/go.sum +++ b/go.sum @@ -12,18 +12,12 @@ blitter.com/go/goutmp v1.0.2 h1:oCc/dt9TlTOP2kvmX1Y7J/wSQUhywjcyF101jXuLxZ8= blitter.com/go/goutmp v1.0.2/go.mod h1:gtlbjC8xGzMk/Cf0BpnVltSa3awOqJ+B5WAxVptTMxk= blitter.com/go/herradurakex v1.0.0 h1:6XaxY+JLT1HUWPF0gYJnjX3pVjrw4YhYZEzZ1U0wkyc= blitter.com/go/herradurakex v1.0.0/go.mod h1:m3+vYZX+2dDjdo+n/HDnXEYJX9pwmNeQLgAfJM8mtxw= -blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95 h1:X6rWBxK+ZqALnpxsk0Rt0VHx5GVLK3Ldz46f+3RCXe8= -blitter.com/go/hopscotch v0.0.0-20200320040654-43cb7c7c7e95/go.mod h1:9Da1oy0t9aUw3wviba+2mP1inbLGbDuCKAO3mmGQha4= blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9 h1:D45AnrNphtvczBXRp5JQicZRTgaK/Is5bgPDDvRKhTc= blitter.com/go/kyber v0.0.0-20200130200857-6f2021cb88d9/go.mod h1:SK6QfGG72lIfKW1Td0wH7f0wwN5nSIhV3K+wvzGNjrw= blitter.com/go/mtwist v1.0.1 h1:PxmoWexfMpLmc8neHP/PcRc3s17ct7iz4d5W/qJVt04= blitter.com/go/mtwist v1.0.1/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae h1:YBBaCcdYRrI1btsmcMTv1VMPmaSXXz0RwKOTgMJYSRU= blitter.com/go/newhope v0.0.0-20200130200750-192fc08a8aae/go.mod h1:ywoxfDBqInPsqtnxYsmS4SYMJ5D/kNcrFgpvI+Xcun0= -blitter.com/go/wanderer v0.8.1 h1:oQw8yASM7iI+S8GIgf3cUFdkJ8Sy/UQxRDJqhTswgwM= -blitter.com/go/wanderer v0.8.1/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= -blitter.com/go/wanderer v0.8.2 h1:fzwRn60RDDxy4GEYxSyfA4gXkkZb33WQRk/Fv5ugPAI= -blitter.com/go/wanderer v0.8.2/go.mod h1:FX1pAnZ5woEavy5CUIZco0/Gc2Msb3U0zsmi+6Hs4Rw= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= @@ -67,6 +61,8 @@ golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaE golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U= golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904 h1:bXoxMPcSLOq08zI3/c5dEBT6lE4eh+jOh886GHrn6V8= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -78,6 +74,8 @@ golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8 golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200413165638-669c56c373c4 h1:opSr2sbRXk5X5/givKrrKj9HXxFpW2sdCiP8MJSKLQY= +golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/logger/logger_bsd.go b/logger/logger_bsd.go new file mode 100644 index 0000000..3994e53 --- /dev/null +++ b/logger/logger_bsd.go @@ -0,0 +1,156 @@ +// +build freebsd +// +// Package logger is a wrapper around UNIX syslog, so that it also may +// be wrapped with something else for Windows (Sadly, the stdlib log/syslog +// is frozen, and there is no Windows implementation.) +package logger + +import ( + sl "log/syslog" +) + +// Priority is the logger priority +type Priority = sl.Priority + +// Writer is a syslog Writer +type Writer = sl.Writer + +// nolint: golint +const ( + // Severity. + + // From /usr/include/sys/syslog.h. + // These are the same on Linux, BSD, and OS X. + LOG_EMERG Priority = iota + LOG_ALERT + LOG_CRIT + LOG_ERR + LOG_WARNING + LOG_NOTICE + LOG_INFO + LOG_DEBUG +) + +// nolint: golint +const ( + // Facility. + + // From /usr/include/sys/syslog.h. + // These are the same up to LOG_FTP on Linux, BSD, and OS X. + LOG_KERN Priority = iota << 3 + LOG_USER + LOG_MAIL + LOG_DAEMON + LOG_AUTH + LOG_SYSLOG + LOG_LPR + LOG_NEWS + LOG_UUCP + LOG_CRON + LOG_AUTHPRIV + LOG_FTP + _ // unused + _ // unused + _ // unused + _ // unused + LOG_LOCAL0 + LOG_LOCAL1 + LOG_LOCAL2 + LOG_LOCAL3 + LOG_LOCAL4 + LOG_LOCAL5 + LOG_LOCAL6 + LOG_LOCAL7 +) + +var ( + l *sl.Writer +) + +// New returns a new log Writer. +func New(flags Priority, tag string) (w *Writer, e error) { + w, e = sl.New(flags, tag) + l = w + return w, e +} + +// Alert returns a log Alert error +func Alert(s string) error { + if l != nil { + return l.Alert(s) + } + return nil + +} + +// LogClose closes the log Writer. +func LogClose() error { + if l != nil { + return l.Close() + } + return nil +} + +// LogCrit returns a log Alert error +func LogCrit(s string) error { + if l != nil { + return l.Crit(s) + } + return nil +} + +// LogDebug returns a log Debug error +func LogDebug(s string) error { + if l != nil { + return l.Debug(s) + } + return nil +} + +// LogEmerg returns a log Emerg error +func LogEmerg(s string) error { + if l != nil { + return l.Emerg(s) + } + return nil +} + +// LogErr returns a log Err error +func LogErr(s string) error { + if l != nil { + return l.Err(s) + } + return nil +} + +// LogInfo returns a log Info error +func LogInfo(s string) error { + if l != nil { + return l.Info(s) + } + return nil +} + +// LogNotice returns a log Notice error +func LogNotice(s string) error { + if l != nil { + return l.Notice(s) + } + return nil +} + +// LogWarning returns a log Warning error +func LogWarning(s string) error { + if l != nil { + return l.Warning(s) + } + return nil +} + +// LogWrite writes to the logger at default level +func LogWrite(b []byte) (int, error) { + if l != nil { + return l.Write(b) + } + return len(b),nil +} diff --git a/logger/logger_linux.go b/logger/logger_linux.go index 5e6f304..349a8a6 100644 --- a/logger/logger_linux.go +++ b/logger/logger_linux.go @@ -1,5 +1,5 @@ // +build linux - +// // Package logger is a wrapper around UNIX syslog, so that it also may // be wrapped with something else for Windows (Sadly, the stdlib log/syslog // is frozen, and there is no Windows implementation.) diff --git a/termmode_bsd.go b/termmode_bsd.go new file mode 100644 index 0000000..f4f35cd --- /dev/null +++ b/termmode_bsd.go @@ -0,0 +1,127 @@ +// +build freebsd +package xs + +import ( + "errors" + "io" + "unsafe" + + unix "golang.org/x/sys/unix" +) + +/* ------------- + * minimal terminal APIs brought in from ssh/terminal + * (they have no real business being there as they aren't specific to + * ssh, but as of Go v1.10, late 2019, core go stdlib hasn't yet done + * the planned terminal lib reorgs.) + * ------------- */ + +// From github.com/golang/crypto/blob/master/ssh/terminal/util_linux.go +const getTermios = unix.TIOCGETA +const setTermios = unix.TIOCSETA + +// From github.com/golang/crypto/blob/master/ssh/terminal/util.go + +// State contains the state of a terminal. +type State struct { + termios unix.Termios +} + +// MakeRaw put the terminal connected to the given file descriptor into raw +// mode and returns the previous state of the terminal so that it can be +// restored. +func MakeRaw(fd uintptr) (*State, error) { + var oldState State + if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { + return nil, err + } + + newState := oldState.termios + newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON) + newState.Oflag &^= unix.OPOST + newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN) + newState.Cflag &^= (unix.CSIZE | unix.PARENB) + newState.Cflag |= unix.CS8 + newState.Cc[unix.VMIN] = 1 + newState.Cc[unix.VTIME] = 0 + + if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 { + return nil, err + } + + return &oldState, nil +} + +// Restore restores the terminal connected to the given file descriptor to a +// previous state. +func Restore(fd uintptr, state *State) error { + if state != nil { + if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(state))); err != 0 { + return err + } else { + return nil + } + } else { + return errors.New("nil State") + } +} + +// ReadPassword reads a line of input from a terminal without local echo. This +// is commonly used for inputting passwords and other sensitive data. The slice +// returned does not include the \n. +func ReadPassword(fd uintptr) ([]byte, error) { + var oldState State + if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 { + return nil, err + } + + newState := oldState.termios + newState.Lflag &^= unix.ECHO + newState.Lflag |= unix.ICANON | unix.ISIG + newState.Iflag |= unix.ICRNL + if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 { + return nil, err + } + + defer func() { + unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&oldState.termios))) + }() + + return readPasswordLine(passwordReader(fd)) +} + +// passwordReader is an io.Reader that reads from a specific file descriptor. +type passwordReader int + +func (r passwordReader) Read(buf []byte) (int, error) { + return unix.Read(int(r), buf) +} + +// readPasswordLine reads from reader until it finds \n or io.EOF. +// The slice returned does not include the \n. +// readPasswordLine also ignores any \r it finds. +func readPasswordLine(reader io.Reader) ([]byte, error) { + var buf [1]byte + var ret []byte + + for { + n, err := reader.Read(buf[:]) + if n > 0 { + switch buf[0] { + case '\n': + return ret, nil + case '\r': + // remove \r from passwords on Windows + default: + ret = append(ret, buf[0]) + } + continue + } + if err != nil { + if err == io.EOF && len(ret) > 0 { + return ret, nil + } + return ret, err + } + } +} diff --git a/termmode_unix.go b/termmode_linux.go similarity index 99% rename from termmode_unix.go rename to termmode_linux.go index 84538f9..0973695 100644 --- a/termmode_unix.go +++ b/termmode_linux.go @@ -1,5 +1,4 @@ -// +build linux - +// +build linux,bsd package xs import ( diff --git a/vendor/blitter.com/go/chacha20/LICENSE b/vendor/blitter.com/go/chacha20/LICENSE deleted file mode 100644 index dba13ed..0000000 --- a/vendor/blitter.com/go/chacha20/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/vendor/blitter.com/go/chacha20/README.md b/vendor/blitter.com/go/chacha20/README.md deleted file mode 100644 index 104f4ac..0000000 --- a/vendor/blitter.com/go/chacha20/README.md +++ /dev/null @@ -1,13 +0,0 @@ -### chacha20 - ChaCha20 -#### Yawning Angel (yawning at schwanenlied dot me) - -Yet another Go ChaCha20 implementation. Everything else I found was slow, -didn't support all the variants I need to use, or relied on cgo to go fast. - -Features: - - * 20 round, 256 bit key only. Everything else is pointless and stupid. - * IETF 96 bit nonce variant. - * XChaCha 24 byte nonce variant. - * SSSE3 and AVX2 support on amd64 targets. - * Incremental encrypt/decrypt support, unlike golang.org/x/crypto/salsa20. diff --git a/vendor/blitter.com/go/chacha20/chacha20.go b/vendor/blitter.com/go/chacha20/chacha20.go deleted file mode 100644 index fa90fb1..0000000 --- a/vendor/blitter.com/go/chacha20/chacha20.go +++ /dev/null @@ -1,290 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// Package chacha20 implements the ChaCha20 stream cipher. -package chacha20 // import "blitter.com/go/chacha20" - -import ( - "crypto/cipher" - "encoding/binary" - "errors" - "math" - - "blitter.com/go/chacha20/internal/api" - "blitter.com/go/chacha20/internal/hardware" - "blitter.com/go/chacha20/internal/ref" -) - -const ( - // KeySize is the ChaCha20 key size in bytes. - KeySize = 32 - - // NonceSize is the ChaCha20 nonce size in bytes. - NonceSize = 8 - - // INonceSize is the IETF ChaCha20 nonce size in bytes. - INonceSize = 12 - - // XNonceSize is the XChaCha20 nonce size in bytes. - XNonceSize = 24 - - // HNonceSize is the HChaCha20 nonce size in bytes. - HNonceSize = 16 -) - -var ( - // ErrInvalidKey is the error returned when the key is invalid. - ErrInvalidKey = errors.New("chacha20: key length must be KeySize bytes") - - // ErrInvalidNonce is the error returned when the nonce is invalid. - ErrInvalidNonce = errors.New("chacha20: nonce length must be NonceSize/INonceSize/XNonceSize bytes") - - // ErrInvalidCounter is the error returned when the counter is invalid. - ErrInvalidCounter = errors.New("chacha20: block counter is invalid (out of range)") - - supportedImpls []api.Implementation - activeImpl api.Implementation - - _ cipher.Stream = (*Cipher)(nil) -) - -// Cipher is an instance of ChaCha20/XChaCha20 using a particular key and nonce. -type Cipher struct { - state [api.StateSize]uint32 - buf [api.BlockSize]byte - - off int - ietf bool -} - -// Reset zeros the key data so that it will no longer appear in the process's -// memory. -func (c *Cipher) Reset() { - for i := range c.state { - c.state[i] = 0 - } - for i := range c.buf { - c.buf[i] = 0 - } -} - -// Seek sets the block counter to a given offset. -func (c *Cipher) Seek(blockCounter uint64) error { - if c.ietf { - if blockCounter > math.MaxUint32 { - return ErrInvalidCounter - } - c.state[12] = uint32(blockCounter) - } else { - c.state[12] = uint32(blockCounter) - c.state[13] = uint32(blockCounter >> 32) - } - c.off = api.BlockSize - return nil -} - -// ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key -// and nonce. -func (c *Cipher) ReKey(key, nonce []byte) error { - c.Reset() - return c.doReKey(key, nonce) -} - -func (c *Cipher) doReKey(key, nonce []byte) error { - if len(key) != KeySize { - return ErrInvalidKey - } - - var subKey []byte - switch len(nonce) { - case NonceSize, INonceSize: - case XNonceSize: - subKey = c.buf[:KeySize] - activeImpl.HChaCha(key, nonce, subKey) - key = subKey - nonce = nonce[16:24] - default: - return ErrInvalidNonce - } - - _ = key[31] // Force bounds check elimination. - - c.state[0] = api.Sigma0 - c.state[1] = api.Sigma1 - c.state[2] = api.Sigma2 - c.state[3] = api.Sigma3 - c.state[4] = binary.LittleEndian.Uint32(key[0:4]) - c.state[5] = binary.LittleEndian.Uint32(key[4:8]) - c.state[6] = binary.LittleEndian.Uint32(key[8:12]) - c.state[7] = binary.LittleEndian.Uint32(key[12:16]) - c.state[8] = binary.LittleEndian.Uint32(key[16:20]) - c.state[9] = binary.LittleEndian.Uint32(key[20:24]) - c.state[10] = binary.LittleEndian.Uint32(key[24:28]) - c.state[11] = binary.LittleEndian.Uint32(key[28:32]) - c.state[12] = 0 - if len(nonce) == INonceSize { - _ = nonce[11] // Force bounds check elimination. - c.state[13] = binary.LittleEndian.Uint32(nonce[0:4]) - c.state[14] = binary.LittleEndian.Uint32(nonce[4:8]) - c.state[15] = binary.LittleEndian.Uint32(nonce[8:12]) - c.ietf = true - } else { - _ = nonce[7] // Force bounds check elimination. - c.state[13] = 0 - c.state[14] = binary.LittleEndian.Uint32(nonce[0:4]) - c.state[15] = binary.LittleEndian.Uint32(nonce[4:8]) - c.ietf = false - } - c.off = api.BlockSize - - if subKey != nil { - for i := range subKey { - subKey[i] = 0 - } - } - - return nil -} - -// New returns a new ChaCha20/XChaCha20 instance. -func New(key, nonce []byte) (*Cipher, error) { - var c Cipher - if err := c.doReKey(key, nonce); err != nil { - return nil, err - } - - return &c, nil -} - -// HChaCha is the HChaCha20 hash function used to make XChaCha. -func HChaCha(key, nonce []byte, dst *[32]byte) { - activeImpl.HChaCha(key, nonce, dst[:]) -} - -// XORKeyStream sets dst to the result of XORing src with the key stream. Dst -// and src may be the same slice but otherwise should not overlap. -func (c *Cipher) XORKeyStream(dst, src []byte) { - if len(dst) < len(src) { - src = src[:len(dst)] - } - - for remaining := len(src); remaining > 0; { - // Process multiple blocks at once. - if c.off == api.BlockSize { - nrBlocks := remaining / api.BlockSize - directBytes := nrBlocks * api.BlockSize - if nrBlocks > 0 { - c.doBlocks(dst, src, nrBlocks) - remaining -= directBytes - if remaining == 0 { - return - } - dst = dst[directBytes:] - src = src[directBytes:] - } - - // If there's a partial block, generate 1 block of keystream into - // the internal buffer. - c.doBlocks(c.buf[:], nil, 1) - c.off = 0 - } - - // Process partial blocks from the buffered keystream. - toXor := api.BlockSize - c.off - if remaining < toXor { - toXor = remaining - } - if toXor > 0 { - // The inliner doesn't want to inline this function, but my - // attempts to force BCE don't seem to work with manual - // inlining. - // - // Taking the extra function call overhead here appears to be - // worth it. - c.xorBufBytes(dst, src, toXor) - - dst = dst[toXor:] - src = src[toXor:] - - remaining -= toXor - } - } -} - -func (c *Cipher) xorBufBytes(dst, src []byte, n int) { - // Force bounds check elimination. - buf := c.buf[c.off:] - _ = buf[n-1] - _ = dst[n-1] - _ = src[n-1] - - for i := 0; i < n; i++ { - dst[i] = buf[i] ^ src[i] - } - c.off += n -} - -// KeyStream sets dst to the raw keystream. -func (c *Cipher) KeyStream(dst []byte) { - for remaining := len(dst); remaining > 0; { - // Process multiple blocks at once. - if c.off == api.BlockSize { - nrBlocks := remaining / api.BlockSize - directBytes := nrBlocks * api.BlockSize - if nrBlocks > 0 { - c.doBlocks(dst, nil, nrBlocks) - remaining -= directBytes - if remaining == 0 { - return - } - dst = dst[directBytes:] - } - - // If there's a partial block, generate 1 block of keystream into - // the internal buffer. - c.doBlocks(c.buf[:], nil, 1) - c.off = 0 - } - - // Process partial blocks from the buffered keystream. - toCopy := api.BlockSize - c.off - if remaining < toCopy { - toCopy = remaining - } - if toCopy > 0 { - copy(dst[:toCopy], c.buf[c.off:c.off+toCopy]) - dst = dst[toCopy:] - remaining -= toCopy - c.off += toCopy - } - } -} - -func (c *Cipher) doBlocks(dst, src []byte, nrBlocks int) { - if c.ietf { - ctr := uint64(c.state[12]) - if ctr+uint64(nrBlocks) > math.MaxUint32 { - panic("chacha20: will exceed key stream per nonce limit") - } - } - - activeImpl.Blocks(&c.state, dst, src, nrBlocks) -} - -func init() { - supportedImpls = hardware.Register(supportedImpls) - supportedImpls = ref.Register(supportedImpls) - activeImpl = supportedImpls[0] -} diff --git a/vendor/blitter.com/go/chacha20/go.mod b/vendor/blitter.com/go/chacha20/go.mod deleted file mode 100644 index 2aef045..0000000 --- a/vendor/blitter.com/go/chacha20/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module blitter.com/go/chacha20 - -go 1.12 - -require ( - github.com/stretchr/testify v1.4.0 - golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 -) diff --git a/vendor/blitter.com/go/chacha20/go.sum b/vendor/blitter.com/go/chacha20/go.sum deleted file mode 100644 index 2bba056..0000000 --- a/vendor/blitter.com/go/chacha20/go.sum +++ /dev/null @@ -1,12 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= -golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/blitter.com/go/chacha20/internal/api/api.go b/vendor/blitter.com/go/chacha20/internal/api/api.go deleted file mode 100644 index e347812..0000000 --- a/vendor/blitter.com/go/chacha20/internal/api/api.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// Package api provides the ChaCha20 implementation abstract interface. -package api - -const ( - // BlockSize is the size of a ChaCha20 block in bytes. - BlockSize = 64 - - // StateSize is the size of the ChaCha20 state as 32 bit unsigned words. - StateSize = 16 - - // HashSize is the size of the HChaCha output in bytes. - HashSize = 32 - - // HNonceSize is the HChaCha20 nonce size in bytes. - HNonceSize = 16 - - // Sigma0 is the first word of the ChaCha constant. - Sigma0 = uint32(0x61707865) - - // Sigma1 is the second word of the ChaCha constant. - Sigma1 = uint32(0x3320646e) - - // Sigma2 is the third word of the ChaCha constant. - Sigma2 = uint32(0x79622d32) - - // Sigma3 is the fourth word of the ChaCha constant. - Sigma3 = uint32(0x6b206574) -) - -// Implementation is a ChaCha20 implementation -type Implementation interface { - // Name returns the name of the implementation. - Name() string - - // Blocks calculates the ChaCha20 blocks. If src is not nil, dst will - // be set to the XOR of src with the key stream, otherwise dst will be - // set to the key stream. - Blocks(x *[StateSize]uint32, dst, src []byte, nrBlocks int) - - // HChaCha calculates the HChaCha20 hash. - // - // Note: `dst` is guaranteed to be HashSize bytes. - HChaCha(key, nonce []byte, dst []byte) -} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl.go b/vendor/blitter.com/go/chacha20/internal/hardware/impl.go deleted file mode 100644 index 0c63e3a..0000000 --- a/vendor/blitter.com/go/chacha20/internal/hardware/impl.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// Package hardware provides the hardware accelerated ChaCha20 implementations. -package hardware - -import "blitter.com/go/chacha20/internal/api" - -var hardwareImpls []api.Implementation - -// Register appends the implementation(s) to the provided slice, and returns the -// new slice. -func Register(impls []api.Implementation) []api.Implementation { - return append(impls, hardwareImpls...) -} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go deleted file mode 100644 index 31cbf8b..0000000 --- a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// +build amd64,!noasm - -package hardware - -import ( - "golang.org/x/sys/cpu" - - "blitter.com/go/chacha20/internal/api" -) - -//go:noescape -func blocksAVX2(s *[api.StateSize]uint32, in, out []byte) - -//go:noescape -func hChaChaAVX2(key, nonce []byte, dst *byte) - -//go:noescape -func blocksSSSE3(s *[api.StateSize]uint32, in, out []byte) - -//go:noescape -func hChaChaSSSE3(key, nonce []byte, dst *byte) - -type implAmd64 struct { - name string - - blocksFn func(*[api.StateSize]uint32, []byte, []byte, int) - hChaChaFn func([]byte, []byte, *byte) -} - -func (impl *implAmd64) Name() string { - return impl.name -} - -func (impl *implAmd64) Blocks(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { - impl.blocksFn(x, dst, src, nrBlocks) -} - -func (impl *implAmd64) HChaCha(key, nonce []byte, dst []byte) { - impl.hChaChaFn(key, nonce, &dst[0]) -} - -func blockWrapper(fn func(*[api.StateSize]uint32, []byte, []byte)) func(*[api.StateSize]uint32, []byte, []byte, int) { - return func(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { - sz := nrBlocks * api.BlockSize - if src != nil { - fn(x, src[:sz], dst[:sz]) - } else { - // Sub-optimal, but the compiler special cases this to an assembly - // optimized runtime.memclrNoHeapPointers, so it's not terrible. - for i := range dst[:sz] { - dst[i] = 0 - } - fn(x, dst[:sz], dst[:sz]) - } - } -} - -func init() { - if cpu.X86.HasAVX2 { - hardwareImpls = append(hardwareImpls, &implAmd64{ - name: "amd64_avx2", - blocksFn: blockWrapper(blocksAVX2), - hChaChaFn: hChaChaAVX2, - }) - } - if cpu.X86.HasSSE3 { - hardwareImpls = append(hardwareImpls, &implAmd64{ - name: "amd64_ssse3", - blocksFn: blockWrapper(blocksSSSE3), - hChaChaFn: hChaChaSSSE3, - }) - } -} diff --git a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s b/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s deleted file mode 100644 index fb93eef..0000000 --- a/vendor/blitter.com/go/chacha20/internal/hardware/impl_amd64.s +++ /dev/null @@ -1,1682 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// +build !noasm - -#include "textflag.h" - -DATA ·chacha_constants<>+0x00(SB)/4, $0x61707865 -DATA ·chacha_constants<>+0x04(SB)/4, $0x3320646E -DATA ·chacha_constants<>+0x08(SB)/4, $0x79622D32 -DATA ·chacha_constants<>+0x0c(SB)/4, $0x6B206574 -DATA ·chacha_constants<>+0x10(SB)/8, $0x0504070601000302 -DATA ·chacha_constants<>+0x18(SB)/8, $0x0D0C0F0E09080B0A -DATA ·chacha_constants<>+0x20(SB)/8, $0x0605040702010003 -DATA ·chacha_constants<>+0x28(SB)/8, $0x0E0D0C0F0A09080B -GLOBL ·chacha_constants<>(SB), (NOPTR+RODATA), $48 - -// func blocksAVX2(s *[api.StateSize]uint32, in, out []byte) -TEXT ·blocksAVX2(SB), NOSPLIT, $576-56 - // This is Andrew Moon's AVX2 ChaCha implementation taken from - // supercop-20171218, with some minor changes, primarily calling - // convention and assembly dialect related. - - // Align the stack on a 64 byte boundary. - MOVQ SP, BP - ADDQ $64, BP - ANDQ $-64, BP - - // Go calling convention -> SYSV AMD64 (and a fixup). - MOVQ s+0(FP), DI // &s -> DI - ADDQ $16, DI // Skip the ChaCha constants in the chachaState. - MOVQ in+8(FP), SI // &in[0] -> SI - MOVQ out+32(FP), DX // &out[0] -> DX - MOVQ in_len+16(FP), CX // len(in) -> CX - - // Begin the main body of `chacha_blocks_avx2`. - // - // Mostly a direct translation except: - // * The number of rounds is always 20. - // * %rbp is used instead of %rsp. - LEAQ ·chacha_constants<>(SB), AX - VMOVDQU 0(AX), X8 - VMOVDQU 16(AX), X6 - VMOVDQU 32(AX), X7 - VMOVDQU 0(DI), X9 - VMOVDQU 16(DI), X10 - VMOVDQU 32(DI), X11 - - // MOVQ 48(DI), AX - MOVQ $1, R9 - VMOVDQA X8, 0(BP) - VMOVDQA X9, 16(BP) - VMOVDQA X10, 32(BP) - VMOVDQA X11, 48(BP) - - // MOVQ AX, 64(BP) - VMOVDQA X6, 448(BP) - VMOVDQA X6, 464(BP) - VMOVDQA X7, 480(BP) - VMOVDQA X7, 496(BP) - CMPQ CX, $512 - JAE chacha_blocks_avx2_atleast512 - CMPQ CX, $256 - JAE chacha_blocks_avx2_atleast256 - JMP chacha_blocks_avx2_below256 - -chacha_blocks_avx2_atleast512: - MOVQ 48(BP), AX - LEAQ 1(AX), R8 - LEAQ 2(AX), R9 - LEAQ 3(AX), R10 - LEAQ 4(AX), BX - LEAQ 5(AX), R11 - LEAQ 6(AX), R12 - LEAQ 7(AX), R13 - LEAQ 8(AX), R14 - MOVL AX, 128(BP) - MOVL R8, 4+128(BP) - MOVL R9, 8+128(BP) - MOVL R10, 12+128(BP) - MOVL BX, 16+128(BP) - MOVL R11, 20+128(BP) - MOVL R12, 24+128(BP) - MOVL R13, 28+128(BP) - SHRQ $32, AX - SHRQ $32, R8 - SHRQ $32, R9 - SHRQ $32, R10 - SHRQ $32, BX - SHRQ $32, R11 - SHRQ $32, R12 - SHRQ $32, R13 - MOVL AX, 160(BP) - MOVL R8, 4+160(BP) - MOVL R9, 8+160(BP) - MOVL R10, 12+160(BP) - MOVL BX, 16+160(BP) - MOVL R11, 20+160(BP) - MOVL R12, 24+160(BP) - MOVL R13, 28+160(BP) - MOVQ R14, 48(BP) - - // MOVQ 64(BP), AX - MOVQ $20, AX - VPBROADCASTD 0(BP), Y0 - VPBROADCASTD 4+0(BP), Y1 - VPBROADCASTD 8+0(BP), Y2 - VPBROADCASTD 12+0(BP), Y3 - VPBROADCASTD 16(BP), Y4 - VPBROADCASTD 4+16(BP), Y5 - VPBROADCASTD 8+16(BP), Y6 - VPBROADCASTD 12+16(BP), Y7 - VPBROADCASTD 32(BP), Y8 - VPBROADCASTD 4+32(BP), Y9 - VPBROADCASTD 8+32(BP), Y10 - VPBROADCASTD 12+32(BP), Y11 - VPBROADCASTD 8+48(BP), Y14 - VPBROADCASTD 12+48(BP), Y15 - VMOVDQA 128(BP), Y12 - VMOVDQA 160(BP), Y13 - -chacha_blocks_avx2_mainloop1: - VPADDD Y0, Y4, Y0 - VPADDD Y1, Y5, Y1 - VPXOR Y12, Y0, Y12 - VPXOR Y13, Y1, Y13 - VPADDD Y2, Y6, Y2 - VPADDD Y3, Y7, Y3 - VPXOR Y14, Y2, Y14 - VPXOR Y15, Y3, Y15 - VPSHUFB 448(BP), Y12, Y12 - VPSHUFB 448(BP), Y13, Y13 - VPADDD Y8, Y12, Y8 - VPADDD Y9, Y13, Y9 - VPSHUFB 448(BP), Y14, Y14 - VPSHUFB 448(BP), Y15, Y15 - VPADDD Y10, Y14, Y10 - VPADDD Y11, Y15, Y11 - VMOVDQA Y12, 96(BP) - VPXOR Y4, Y8, Y4 - VPXOR Y5, Y9, Y5 - VPSLLD $ 12, Y4, Y12 - VPSRLD $20, Y4, Y4 - VPXOR Y4, Y12, Y4 - VPSLLD $ 12, Y5, Y12 - VPSRLD $20, Y5, Y5 - VPXOR Y5, Y12, Y5 - VPXOR Y6, Y10, Y6 - VPXOR Y7, Y11, Y7 - VPSLLD $ 12, Y6, Y12 - VPSRLD $20, Y6, Y6 - VPXOR Y6, Y12, Y6 - VPSLLD $ 12, Y7, Y12 - VPSRLD $20, Y7, Y7 - VPXOR Y7, Y12, Y7 - VPADDD Y0, Y4, Y0 - VPADDD Y1, Y5, Y1 - VPXOR 96(BP), Y0, Y12 - VPXOR Y13, Y1, Y13 - VPADDD Y2, Y6, Y2 - VPADDD Y3, Y7, Y3 - VPXOR Y14, Y2, Y14 - VPXOR Y15, Y3, Y15 - VPSHUFB 480(BP), Y12, Y12 - VPSHUFB 480(BP), Y13, Y13 - VPADDD Y8, Y12, Y8 - VPADDD Y9, Y13, Y9 - VPSHUFB 480(BP), Y14, Y14 - VPSHUFB 480(BP), Y15, Y15 - VPADDD Y10, Y14, Y10 - VPADDD Y11, Y15, Y11 - VMOVDQA Y12, 96(BP) - VPXOR Y4, Y8, Y4 - VPXOR Y5, Y9, Y5 - VPSLLD $ 7, Y4, Y12 - VPSRLD $25, Y4, Y4 - VPXOR Y4, Y12, Y4 - VPSLLD $ 7, Y5, Y12 - VPSRLD $25, Y5, Y5 - VPXOR Y5, Y12, Y5 - VPXOR Y6, Y10, Y6 - VPXOR Y7, Y11, Y7 - VPSLLD $ 7, Y6, Y12 - VPSRLD $25, Y6, Y6 - VPXOR Y6, Y12, Y6 - VPSLLD $ 7, Y7, Y12 - VPSRLD $25, Y7, Y7 - VPXOR Y7, Y12, Y7 - VPADDD Y0, Y5, Y0 - VPADDD Y1, Y6, Y1 - VPXOR Y15, Y0, Y15 - VPXOR 96(BP), Y1, Y12 - VPADDD Y2, Y7, Y2 - VPADDD Y3, Y4, Y3 - VPXOR Y13, Y2, Y13 - VPXOR Y14, Y3, Y14 - VPSHUFB 448(BP), Y15, Y15 - VPSHUFB 448(BP), Y12, Y12 - VPADDD Y10, Y15, Y10 - VPADDD Y11, Y12, Y11 - VPSHUFB 448(BP), Y13, Y13 - VPSHUFB 448(BP), Y14, Y14 - VPADDD Y8, Y13, Y8 - VPADDD Y9, Y14, Y9 - VMOVDQA Y15, 96(BP) - VPXOR Y5, Y10, Y5 - VPXOR Y6, Y11, Y6 - VPSLLD $ 12, Y5, Y15 - VPSRLD $20, Y5, Y5 - VPXOR Y5, Y15, Y5 - VPSLLD $ 12, Y6, Y15 - VPSRLD $20, Y6, Y6 - VPXOR Y6, Y15, Y6 - VPXOR Y7, Y8, Y7 - VPXOR Y4, Y9, Y4 - VPSLLD $ 12, Y7, Y15 - VPSRLD $20, Y7, Y7 - VPXOR Y7, Y15, Y7 - VPSLLD $ 12, Y4, Y15 - VPSRLD $20, Y4, Y4 - VPXOR Y4, Y15, Y4 - VPADDD Y0, Y5, Y0 - VPADDD Y1, Y6, Y1 - VPXOR 96(BP), Y0, Y15 - VPXOR Y12, Y1, Y12 - VPADDD Y2, Y7, Y2 - VPADDD Y3, Y4, Y3 - VPXOR Y13, Y2, Y13 - VPXOR Y14, Y3, Y14 - VPSHUFB 480(BP), Y15, Y15 - VPSHUFB 480(BP), Y12, Y12 - VPADDD Y10, Y15, Y10 - VPADDD Y11, Y12, Y11 - VPSHUFB 480(BP), Y13, Y13 - VPSHUFB 480(BP), Y14, Y14 - VPADDD Y8, Y13, Y8 - VPADDD Y9, Y14, Y9 - VMOVDQA Y15, 96(BP) - VPXOR Y5, Y10, Y5 - VPXOR Y6, Y11, Y6 - VPSLLD $ 7, Y5, Y15 - VPSRLD $25, Y5, Y5 - VPXOR Y5, Y15, Y5 - VPSLLD $ 7, Y6, Y15 - VPSRLD $25, Y6, Y6 - VPXOR Y6, Y15, Y6 - VPXOR Y7, Y8, Y7 - VPXOR Y4, Y9, Y4 - VPSLLD $ 7, Y7, Y15 - VPSRLD $25, Y7, Y7 - VPXOR Y7, Y15, Y7 - VPSLLD $ 7, Y4, Y15 - VPSRLD $25, Y4, Y4 - VPXOR Y4, Y15, Y4 - VMOVDQA 96(BP), Y15 - SUBQ $2, AX - JNZ chacha_blocks_avx2_mainloop1 - VMOVDQA Y8, 192(BP) - VMOVDQA Y9, 224(BP) - VMOVDQA Y10, 256(BP) - VMOVDQA Y11, 288(BP) - VMOVDQA Y12, 320(BP) - VMOVDQA Y13, 352(BP) - VMOVDQA Y14, 384(BP) - VMOVDQA Y15, 416(BP) - VPBROADCASTD 0(BP), Y8 - VPBROADCASTD 4+0(BP), Y9 - VPBROADCASTD 8+0(BP), Y10 - VPBROADCASTD 12+0(BP), Y11 - VPBROADCASTD 16(BP), Y12 - VPBROADCASTD 4+16(BP), Y13 - VPBROADCASTD 8+16(BP), Y14 - VPBROADCASTD 12+16(BP), Y15 - VPADDD Y8, Y0, Y0 - VPADDD Y9, Y1, Y1 - VPADDD Y10, Y2, Y2 - VPADDD Y11, Y3, Y3 - VPADDD Y12, Y4, Y4 - VPADDD Y13, Y5, Y5 - VPADDD Y14, Y6, Y6 - VPADDD Y15, Y7, Y7 - VPUNPCKLDQ Y1, Y0, Y8 - VPUNPCKLDQ Y3, Y2, Y9 - VPUNPCKHDQ Y1, Y0, Y12 - VPUNPCKHDQ Y3, Y2, Y13 - VPUNPCKLDQ Y5, Y4, Y10 - VPUNPCKLDQ Y7, Y6, Y11 - VPUNPCKHDQ Y5, Y4, Y14 - VPUNPCKHDQ Y7, Y6, Y15 - VPUNPCKLQDQ Y9, Y8, Y0 - VPUNPCKLQDQ Y11, Y10, Y1 - VPUNPCKHQDQ Y9, Y8, Y2 - VPUNPCKHQDQ Y11, Y10, Y3 - VPUNPCKLQDQ Y13, Y12, Y4 - VPUNPCKLQDQ Y15, Y14, Y5 - VPUNPCKHQDQ Y13, Y12, Y6 - VPUNPCKHQDQ Y15, Y14, Y7 - VPERM2I128 $0x20, Y1, Y0, Y8 - VPERM2I128 $0x20, Y3, Y2, Y9 - VPERM2I128 $0x31, Y1, Y0, Y12 - VPERM2I128 $0x31, Y3, Y2, Y13 - VPERM2I128 $0x20, Y5, Y4, Y10 - VPERM2I128 $0x20, Y7, Y6, Y11 - VPERM2I128 $0x31, Y5, Y4, Y14 - VPERM2I128 $0x31, Y7, Y6, Y15 - ANDQ SI, SI - JZ chacha_blocks_avx2_noinput1 - VPXOR 0(SI), Y8, Y8 - VPXOR 64(SI), Y9, Y9 - VPXOR 128(SI), Y10, Y10 - VPXOR 192(SI), Y11, Y11 - VPXOR 256(SI), Y12, Y12 - VPXOR 320(SI), Y13, Y13 - VPXOR 384(SI), Y14, Y14 - VPXOR 448(SI), Y15, Y15 - VMOVDQU Y8, 0(DX) - VMOVDQU Y9, 64(DX) - VMOVDQU Y10, 128(DX) - VMOVDQU Y11, 192(DX) - VMOVDQU Y12, 256(DX) - VMOVDQU Y13, 320(DX) - VMOVDQU Y14, 384(DX) - VMOVDQU Y15, 448(DX) - VMOVDQA 192(BP), Y0 - VMOVDQA 224(BP), Y1 - VMOVDQA 256(BP), Y2 - VMOVDQA 288(BP), Y3 - VMOVDQA 320(BP), Y4 - VMOVDQA 352(BP), Y5 - VMOVDQA 384(BP), Y6 - VMOVDQA 416(BP), Y7 - VPBROADCASTD 32(BP), Y8 - VPBROADCASTD 4+32(BP), Y9 - VPBROADCASTD 8+32(BP), Y10 - VPBROADCASTD 12+32(BP), Y11 - VMOVDQA 128(BP), Y12 - VMOVDQA 160(BP), Y13 - VPBROADCASTD 8+48(BP), Y14 - VPBROADCASTD 12+48(BP), Y15 - VPADDD Y8, Y0, Y0 - VPADDD Y9, Y1, Y1 - VPADDD Y10, Y2, Y2 - VPADDD Y11, Y3, Y3 - VPADDD Y12, Y4, Y4 - VPADDD Y13, Y5, Y5 - VPADDD Y14, Y6, Y6 - VPADDD Y15, Y7, Y7 - VPUNPCKLDQ Y1, Y0, Y8 - VPUNPCKLDQ Y3, Y2, Y9 - VPUNPCKHDQ Y1, Y0, Y12 - VPUNPCKHDQ Y3, Y2, Y13 - VPUNPCKLDQ Y5, Y4, Y10 - VPUNPCKLDQ Y7, Y6, Y11 - VPUNPCKHDQ Y5, Y4, Y14 - VPUNPCKHDQ Y7, Y6, Y15 - VPUNPCKLQDQ Y9, Y8, Y0 - VPUNPCKLQDQ Y11, Y10, Y1 - VPUNPCKHQDQ Y9, Y8, Y2 - VPUNPCKHQDQ Y11, Y10, Y3 - VPUNPCKLQDQ Y13, Y12, Y4 - VPUNPCKLQDQ Y15, Y14, Y5 - VPUNPCKHQDQ Y13, Y12, Y6 - VPUNPCKHQDQ Y15, Y14, Y7 - VPERM2I128 $0x20, Y1, Y0, Y8 - VPERM2I128 $0x20, Y3, Y2, Y9 - VPERM2I128 $0x31, Y1, Y0, Y12 - VPERM2I128 $0x31, Y3, Y2, Y13 - VPERM2I128 $0x20, Y5, Y4, Y10 - VPERM2I128 $0x20, Y7, Y6, Y11 - VPERM2I128 $0x31, Y5, Y4, Y14 - VPERM2I128 $0x31, Y7, Y6, Y15 - VPXOR 32(SI), Y8, Y8 - VPXOR 96(SI), Y9, Y9 - VPXOR 160(SI), Y10, Y10 - VPXOR 224(SI), Y11, Y11 - VPXOR 288(SI), Y12, Y12 - VPXOR 352(SI), Y13, Y13 - VPXOR 416(SI), Y14, Y14 - VPXOR 480(SI), Y15, Y15 - VMOVDQU Y8, 32(DX) - VMOVDQU Y9, 96(DX) - VMOVDQU Y10, 160(DX) - VMOVDQU Y11, 224(DX) - VMOVDQU Y12, 288(DX) - VMOVDQU Y13, 352(DX) - VMOVDQU Y14, 416(DX) - VMOVDQU Y15, 480(DX) - ADDQ $512, SI - JMP chacha_blocks_avx2_mainloop1_cont - -chacha_blocks_avx2_noinput1: - VMOVDQU Y8, 0(DX) - VMOVDQU Y9, 64(DX) - VMOVDQU Y10, 128(DX) - VMOVDQU Y11, 192(DX) - VMOVDQU Y12, 256(DX) - VMOVDQU Y13, 320(DX) - VMOVDQU Y14, 384(DX) - VMOVDQU Y15, 448(DX) - VMOVDQA 192(BP), Y0 - VMOVDQA 224(BP), Y1 - VMOVDQA 256(BP), Y2 - VMOVDQA 288(BP), Y3 - VMOVDQA 320(BP), Y4 - VMOVDQA 352(BP), Y5 - VMOVDQA 384(BP), Y6 - VMOVDQA 416(BP), Y7 - VPBROADCASTD 32(BP), Y8 - VPBROADCASTD 4+32(BP), Y9 - VPBROADCASTD 8+32(BP), Y10 - VPBROADCASTD 12+32(BP), Y11 - VMOVDQA 128(BP), Y12 - VMOVDQA 160(BP), Y13 - VPBROADCASTD 8+48(BP), Y14 - VPBROADCASTD 12+48(BP), Y15 - VPADDD Y8, Y0, Y0 - VPADDD Y9, Y1, Y1 - VPADDD Y10, Y2, Y2 - VPADDD Y11, Y3, Y3 - VPADDD Y12, Y4, Y4 - VPADDD Y13, Y5, Y5 - VPADDD Y14, Y6, Y6 - VPADDD Y15, Y7, Y7 - VPUNPCKLDQ Y1, Y0, Y8 - VPUNPCKLDQ Y3, Y2, Y9 - VPUNPCKHDQ Y1, Y0, Y12 - VPUNPCKHDQ Y3, Y2, Y13 - VPUNPCKLDQ Y5, Y4, Y10 - VPUNPCKLDQ Y7, Y6, Y11 - VPUNPCKHDQ Y5, Y4, Y14 - VPUNPCKHDQ Y7, Y6, Y15 - VPUNPCKLQDQ Y9, Y8, Y0 - VPUNPCKLQDQ Y11, Y10, Y1 - VPUNPCKHQDQ Y9, Y8, Y2 - VPUNPCKHQDQ Y11, Y10, Y3 - VPUNPCKLQDQ Y13, Y12, Y4 - VPUNPCKLQDQ Y15, Y14, Y5 - VPUNPCKHQDQ Y13, Y12, Y6 - VPUNPCKHQDQ Y15, Y14, Y7 - VPERM2I128 $0x20, Y1, Y0, Y8 - VPERM2I128 $0x20, Y3, Y2, Y9 - VPERM2I128 $0x31, Y1, Y0, Y12 - VPERM2I128 $0x31, Y3, Y2, Y13 - VPERM2I128 $0x20, Y5, Y4, Y10 - VPERM2I128 $0x20, Y7, Y6, Y11 - VPERM2I128 $0x31, Y5, Y4, Y14 - VPERM2I128 $0x31, Y7, Y6, Y15 - VMOVDQU Y8, 32(DX) - VMOVDQU Y9, 96(DX) - VMOVDQU Y10, 160(DX) - VMOVDQU Y11, 224(DX) - VMOVDQU Y12, 288(DX) - VMOVDQU Y13, 352(DX) - VMOVDQU Y14, 416(DX) - VMOVDQU Y15, 480(DX) - -chacha_blocks_avx2_mainloop1_cont: - ADDQ $512, DX - SUBQ $512, CX - CMPQ CX, $512 - JAE chacha_blocks_avx2_atleast512 - CMPQ CX, $256 - JB chacha_blocks_avx2_below256_fixup - -chacha_blocks_avx2_atleast256: - MOVQ 48(BP), AX - LEAQ 1(AX), R8 - LEAQ 2(AX), R9 - LEAQ 3(AX), R10 - LEAQ 4(AX), BX - MOVL AX, 128(BP) - MOVL R8, 4+128(BP) - MOVL R9, 8+128(BP) - MOVL R10, 12+128(BP) - SHRQ $32, AX - SHRQ $32, R8 - SHRQ $32, R9 - SHRQ $32, R10 - MOVL AX, 160(BP) - MOVL R8, 4+160(BP) - MOVL R9, 8+160(BP) - MOVL R10, 12+160(BP) - MOVQ BX, 48(BP) - - // MOVQ 64(BP), AX - MOVQ $20, AX - VPBROADCASTD 0(BP), X0 - VPBROADCASTD 4+0(BP), X1 - VPBROADCASTD 8+0(BP), X2 - VPBROADCASTD 12+0(BP), X3 - VPBROADCASTD 16(BP), X4 - VPBROADCASTD 4+16(BP), X5 - VPBROADCASTD 8+16(BP), X6 - VPBROADCASTD 12+16(BP), X7 - VPBROADCASTD 32(BP), X8 - VPBROADCASTD 4+32(BP), X9 - VPBROADCASTD 8+32(BP), X10 - VPBROADCASTD 12+32(BP), X11 - VMOVDQA 128(BP), X12 - VMOVDQA 160(BP), X13 - VPBROADCASTD 8+48(BP), X14 - VPBROADCASTD 12+48(BP), X15 - -chacha_blocks_avx2_mainloop2: - VPADDD X0, X4, X0 - VPADDD X1, X5, X1 - VPXOR X12, X0, X12 - VPXOR X13, X1, X13 - VPADDD X2, X6, X2 - VPADDD X3, X7, X3 - VPXOR X14, X2, X14 - VPXOR X15, X3, X15 - VPSHUFB 448(BP), X12, X12 - VPSHUFB 448(BP), X13, X13 - VPADDD X8, X12, X8 - VPADDD X9, X13, X9 - VPSHUFB 448(BP), X14, X14 - VPSHUFB 448(BP), X15, X15 - VPADDD X10, X14, X10 - VPADDD X11, X15, X11 - VMOVDQA X12, 96(BP) - VPXOR X4, X8, X4 - VPXOR X5, X9, X5 - VPSLLD $ 12, X4, X12 - VPSRLD $20, X4, X4 - VPXOR X4, X12, X4 - VPSLLD $ 12, X5, X12 - VPSRLD $20, X5, X5 - VPXOR X5, X12, X5 - VPXOR X6, X10, X6 - VPXOR X7, X11, X7 - VPSLLD $ 12, X6, X12 - VPSRLD $20, X6, X6 - VPXOR X6, X12, X6 - VPSLLD $ 12, X7, X12 - VPSRLD $20, X7, X7 - VPXOR X7, X12, X7 - VPADDD X0, X4, X0 - VPADDD X1, X5, X1 - VPXOR 96(BP), X0, X12 - VPXOR X13, X1, X13 - VPADDD X2, X6, X2 - VPADDD X3, X7, X3 - VPXOR X14, X2, X14 - VPXOR X15, X3, X15 - VPSHUFB 480(BP), X12, X12 - VPSHUFB 480(BP), X13, X13 - VPADDD X8, X12, X8 - VPADDD X9, X13, X9 - VPSHUFB 480(BP), X14, X14 - VPSHUFB 480(BP), X15, X15 - VPADDD X10, X14, X10 - VPADDD X11, X15, X11 - VMOVDQA X12, 96(BP) - VPXOR X4, X8, X4 - VPXOR X5, X9, X5 - VPSLLD $ 7, X4, X12 - VPSRLD $25, X4, X4 - VPXOR X4, X12, X4 - VPSLLD $ 7, X5, X12 - VPSRLD $25, X5, X5 - VPXOR X5, X12, X5 - VPXOR X6, X10, X6 - VPXOR X7, X11, X7 - VPSLLD $ 7, X6, X12 - VPSRLD $25, X6, X6 - VPXOR X6, X12, X6 - VPSLLD $ 7, X7, X12 - VPSRLD $25, X7, X7 - VPXOR X7, X12, X7 - VPADDD X0, X5, X0 - VPADDD X1, X6, X1 - VPXOR X15, X0, X15 - VPXOR 96(BP), X1, X12 - VPADDD X2, X7, X2 - VPADDD X3, X4, X3 - VPXOR X13, X2, X13 - VPXOR X14, X3, X14 - VPSHUFB 448(BP), X15, X15 - VPSHUFB 448(BP), X12, X12 - VPADDD X10, X15, X10 - VPADDD X11, X12, X11 - VPSHUFB 448(BP), X13, X13 - VPSHUFB 448(BP), X14, X14 - VPADDD X8, X13, X8 - VPADDD X9, X14, X9 - VMOVDQA X15, 96(BP) - VPXOR X5, X10, X5 - VPXOR X6, X11, X6 - VPSLLD $ 12, X5, X15 - VPSRLD $20, X5, X5 - VPXOR X5, X15, X5 - VPSLLD $ 12, X6, X15 - VPSRLD $20, X6, X6 - VPXOR X6, X15, X6 - VPXOR X7, X8, X7 - VPXOR X4, X9, X4 - VPSLLD $ 12, X7, X15 - VPSRLD $20, X7, X7 - VPXOR X7, X15, X7 - VPSLLD $ 12, X4, X15 - VPSRLD $20, X4, X4 - VPXOR X4, X15, X4 - VPADDD X0, X5, X0 - VPADDD X1, X6, X1 - VPXOR 96(BP), X0, X15 - VPXOR X12, X1, X12 - VPADDD X2, X7, X2 - VPADDD X3, X4, X3 - VPXOR X13, X2, X13 - VPXOR X14, X3, X14 - VPSHUFB 480(BP), X15, X15 - VPSHUFB 480(BP), X12, X12 - VPADDD X10, X15, X10 - VPADDD X11, X12, X11 - VPSHUFB 480(BP), X13, X13 - VPSHUFB 480(BP), X14, X14 - VPADDD X8, X13, X8 - VPADDD X9, X14, X9 - VMOVDQA X15, 96(BP) - VPXOR X5, X10, X5 - VPXOR X6, X11, X6 - VPSLLD $ 7, X5, X15 - VPSRLD $25, X5, X5 - VPXOR X5, X15, X5 - VPSLLD $ 7, X6, X15 - VPSRLD $25, X6, X6 - VPXOR X6, X15, X6 - VPXOR X7, X8, X7 - VPXOR X4, X9, X4 - VPSLLD $ 7, X7, X15 - VPSRLD $25, X7, X7 - VPXOR X7, X15, X7 - VPSLLD $ 7, X4, X15 - VPSRLD $25, X4, X4 - VPXOR X4, X15, X4 - VMOVDQA 96(BP), X15 - SUBQ $2, AX - JNZ chacha_blocks_avx2_mainloop2 - VMOVDQA X8, 192(BP) - VMOVDQA X9, 208(BP) - VMOVDQA X10, 224(BP) - VMOVDQA X11, 240(BP) - VMOVDQA X12, 256(BP) - VMOVDQA X13, 272(BP) - VMOVDQA X14, 288(BP) - VMOVDQA X15, 304(BP) - VPBROADCASTD 0(BP), X8 - VPBROADCASTD 4+0(BP), X9 - VPBROADCASTD 8+0(BP), X10 - VPBROADCASTD 12+0(BP), X11 - VPBROADCASTD 16(BP), X12 - VPBROADCASTD 4+16(BP), X13 - VPBROADCASTD 8+16(BP), X14 - VPBROADCASTD 12+16(BP), X15 - VPADDD X8, X0, X0 - VPADDD X9, X1, X1 - VPADDD X10, X2, X2 - VPADDD X11, X3, X3 - VPADDD X12, X4, X4 - VPADDD X13, X5, X5 - VPADDD X14, X6, X6 - VPADDD X15, X7, X7 - VPUNPCKLDQ X1, X0, X8 - VPUNPCKLDQ X3, X2, X9 - VPUNPCKHDQ X1, X0, X12 - VPUNPCKHDQ X3, X2, X13 - VPUNPCKLDQ X5, X4, X10 - VPUNPCKLDQ X7, X6, X11 - VPUNPCKHDQ X5, X4, X14 - VPUNPCKHDQ X7, X6, X15 - VPUNPCKLQDQ X9, X8, X0 - VPUNPCKLQDQ X11, X10, X1 - VPUNPCKHQDQ X9, X8, X2 - VPUNPCKHQDQ X11, X10, X3 - VPUNPCKLQDQ X13, X12, X4 - VPUNPCKLQDQ X15, X14, X5 - VPUNPCKHQDQ X13, X12, X6 - VPUNPCKHQDQ X15, X14, X7 - ANDQ SI, SI - JZ chacha_blocks_avx2_noinput2 - VPXOR 0(SI), X0, X0 - VPXOR 16(SI), X1, X1 - VPXOR 64(SI), X2, X2 - VPXOR 80(SI), X3, X3 - VPXOR 128(SI), X4, X4 - VPXOR 144(SI), X5, X5 - VPXOR 192(SI), X6, X6 - VPXOR 208(SI), X7, X7 - VMOVDQU X0, 0(DX) - VMOVDQU X1, 16(DX) - VMOVDQU X2, 64(DX) - VMOVDQU X3, 80(DX) - VMOVDQU X4, 128(DX) - VMOVDQU X5, 144(DX) - VMOVDQU X6, 192(DX) - VMOVDQU X7, 208(DX) - VMOVDQA 192(BP), X0 - VMOVDQA 208(BP), X1 - VMOVDQA 224(BP), X2 - VMOVDQA 240(BP), X3 - VMOVDQA 256(BP), X4 - VMOVDQA 272(BP), X5 - VMOVDQA 288(BP), X6 - VMOVDQA 304(BP), X7 - VPBROADCASTD 32(BP), X8 - VPBROADCASTD 4+32(BP), X9 - VPBROADCASTD 8+32(BP), X10 - VPBROADCASTD 12+32(BP), X11 - VMOVDQA 128(BP), X12 - VMOVDQA 160(BP), X13 - VPBROADCASTD 8+48(BP), X14 - VPBROADCASTD 12+48(BP), X15 - VPADDD X8, X0, X0 - VPADDD X9, X1, X1 - VPADDD X10, X2, X2 - VPADDD X11, X3, X3 - VPADDD X12, X4, X4 - VPADDD X13, X5, X5 - VPADDD X14, X6, X6 - VPADDD X15, X7, X7 - VPUNPCKLDQ X1, X0, X8 - VPUNPCKLDQ X3, X2, X9 - VPUNPCKHDQ X1, X0, X12 - VPUNPCKHDQ X3, X2, X13 - VPUNPCKLDQ X5, X4, X10 - VPUNPCKLDQ X7, X6, X11 - VPUNPCKHDQ X5, X4, X14 - VPUNPCKHDQ X7, X6, X15 - VPUNPCKLQDQ X9, X8, X0 - VPUNPCKLQDQ X11, X10, X1 - VPUNPCKHQDQ X9, X8, X2 - VPUNPCKHQDQ X11, X10, X3 - VPUNPCKLQDQ X13, X12, X4 - VPUNPCKLQDQ X15, X14, X5 - VPUNPCKHQDQ X13, X12, X6 - VPUNPCKHQDQ X15, X14, X7 - VPXOR 32(SI), X0, X0 - VPXOR 48(SI), X1, X1 - VPXOR 96(SI), X2, X2 - VPXOR 112(SI), X3, X3 - VPXOR 160(SI), X4, X4 - VPXOR 176(SI), X5, X5 - VPXOR 224(SI), X6, X6 - VPXOR 240(SI), X7, X7 - VMOVDQU X0, 32(DX) - VMOVDQU X1, 48(DX) - VMOVDQU X2, 96(DX) - VMOVDQU X3, 112(DX) - VMOVDQU X4, 160(DX) - VMOVDQU X5, 176(DX) - VMOVDQU X6, 224(DX) - VMOVDQU X7, 240(DX) - ADDQ $256, SI - JMP chacha_blocks_avx2_mainloop2_cont - -chacha_blocks_avx2_noinput2: - VMOVDQU X0, 0(DX) - VMOVDQU X1, 16(DX) - VMOVDQU X2, 64(DX) - VMOVDQU X3, 80(DX) - VMOVDQU X4, 128(DX) - VMOVDQU X5, 144(DX) - VMOVDQU X6, 192(DX) - VMOVDQU X7, 208(DX) - VMOVDQA 192(BP), X0 - VMOVDQA 208(BP), X1 - VMOVDQA 224(BP), X2 - VMOVDQA 240(BP), X3 - VMOVDQA 256(BP), X4 - VMOVDQA 272(BP), X5 - VMOVDQA 288(BP), X6 - VMOVDQA 304(BP), X7 - VPBROADCASTD 32(BP), X8 - VPBROADCASTD 4+32(BP), X9 - VPBROADCASTD 8+32(BP), X10 - VPBROADCASTD 12+32(BP), X11 - VMOVDQA 128(BP), X12 - VMOVDQA 160(BP), X13 - VPBROADCASTD 8+48(BP), X14 - VPBROADCASTD 12+48(BP), X15 - VPADDD X8, X0, X0 - VPADDD X9, X1, X1 - VPADDD X10, X2, X2 - VPADDD X11, X3, X3 - VPADDD X12, X4, X4 - VPADDD X13, X5, X5 - VPADDD X14, X6, X6 - VPADDD X15, X7, X7 - VPUNPCKLDQ X1, X0, X8 - VPUNPCKLDQ X3, X2, X9 - VPUNPCKHDQ X1, X0, X12 - VPUNPCKHDQ X3, X2, X13 - VPUNPCKLDQ X5, X4, X10 - VPUNPCKLDQ X7, X6, X11 - VPUNPCKHDQ X5, X4, X14 - VPUNPCKHDQ X7, X6, X15 - VPUNPCKLQDQ X9, X8, X0 - VPUNPCKLQDQ X11, X10, X1 - VPUNPCKHQDQ X9, X8, X2 - VPUNPCKHQDQ X11, X10, X3 - VPUNPCKLQDQ X13, X12, X4 - VPUNPCKLQDQ X15, X14, X5 - VPUNPCKHQDQ X13, X12, X6 - VPUNPCKHQDQ X15, X14, X7 - VMOVDQU X0, 32(DX) - VMOVDQU X1, 48(DX) - VMOVDQU X2, 96(DX) - VMOVDQU X3, 112(DX) - VMOVDQU X4, 160(DX) - VMOVDQU X5, 176(DX) - VMOVDQU X6, 224(DX) - VMOVDQU X7, 240(DX) - -chacha_blocks_avx2_mainloop2_cont: - ADDQ $256, DX - SUBQ $256, CX - CMPQ CX, $256 - JAE chacha_blocks_avx2_atleast256 - -chacha_blocks_avx2_below256_fixup: - VMOVDQA 448(BP), X6 - VMOVDQA 480(BP), X7 - VMOVDQA 0(BP), X8 - VMOVDQA 16(BP), X9 - VMOVDQA 32(BP), X10 - VMOVDQA 48(BP), X11 - MOVQ $1, R9 - -chacha_blocks_avx2_below256: - VMOVQ R9, X5 - ANDQ CX, CX - JZ chacha_blocks_avx2_done - CMPQ CX, $64 - JAE chacha_blocks_avx2_above63 - MOVQ DX, R9 - ANDQ SI, SI - JZ chacha_blocks_avx2_noinput3 - MOVQ CX, R10 - MOVQ BP, DX - ADDQ R10, SI - ADDQ R10, DX - NEGQ R10 - -chacha_blocks_avx2_copyinput: - MOVB (SI)(R10*1), AX - MOVB AX, (DX)(R10*1) - INCQ R10 - JNZ chacha_blocks_avx2_copyinput - MOVQ BP, SI - -chacha_blocks_avx2_noinput3: - MOVQ BP, DX - -chacha_blocks_avx2_above63: - VMOVDQA X8, X0 - VMOVDQA X9, X1 - VMOVDQA X10, X2 - VMOVDQA X11, X3 - - // MOVQ 64(BP), AX - MOVQ $20, AX - -chacha_blocks_avx2_mainloop3: - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X6, X3, X3 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSLLD $12, X1, X4 - VPSRLD $20, X1, X1 - VPXOR X1, X4, X1 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X7, X3, X3 - VPSHUFD $0x93, X0, X0 - VPADDD X2, X3, X2 - VPSHUFD $0x4e, X3, X3 - VPXOR X1, X2, X1 - VPSHUFD $0x39, X2, X2 - VPSLLD $7, X1, X4 - VPSRLD $25, X1, X1 - VPXOR X1, X4, X1 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X6, X3, X3 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSLLD $12, X1, X4 - VPSRLD $20, X1, X1 - VPXOR X1, X4, X1 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X7, X3, X3 - VPSHUFD $0x39, X0, X0 - VPADDD X2, X3, X2 - VPSHUFD $0x4e, X3, X3 - VPXOR X1, X2, X1 - VPSHUFD $0x93, X2, X2 - VPSLLD $7, X1, X4 - VPSRLD $25, X1, X1 - VPXOR X1, X4, X1 - SUBQ $2, AX - JNZ chacha_blocks_avx2_mainloop3 - VPADDD X0, X8, X0 - VPADDD X1, X9, X1 - VPADDD X2, X10, X2 - VPADDD X3, X11, X3 - ANDQ SI, SI - JZ chacha_blocks_avx2_noinput4 - VPXOR 0(SI), X0, X0 - VPXOR 16(SI), X1, X1 - VPXOR 32(SI), X2, X2 - VPXOR 48(SI), X3, X3 - ADDQ $64, SI - -chacha_blocks_avx2_noinput4: - VMOVDQU X0, 0(DX) - VMOVDQU X1, 16(DX) - VMOVDQU X2, 32(DX) - VMOVDQU X3, 48(DX) - VPADDQ X11, X5, X11 - CMPQ CX, $64 - JBE chacha_blocks_avx2_mainloop3_finishup - ADDQ $64, DX - SUBQ $64, CX - JMP chacha_blocks_avx2_below256 - -chacha_blocks_avx2_mainloop3_finishup: - CMPQ CX, $64 - JE chacha_blocks_avx2_done - ADDQ CX, R9 - ADDQ CX, DX - NEGQ CX - -chacha_blocks_avx2_copyoutput: - MOVB (DX)(CX*1), AX - MOVB AX, (R9)(CX*1) - INCQ CX - JNZ chacha_blocks_avx2_copyoutput - -chacha_blocks_avx2_done: - VMOVDQU X11, 32(DI) - - VZEROUPPER - RET - -// func hChaChaAVX2(key, nonce []byte, dst *byte) -TEXT ·hChaChaAVX2(SB), NOSPLIT|NOFRAME, $0-56 - MOVQ key+0(FP), DI - MOVQ nonce+24(FP), SI - MOVQ dst+48(FP), DX - - MOVL $20, CX - - LEAQ ·chacha_constants<>(SB), AX - VMOVDQA 0(AX), X0 - VMOVDQA 16(AX), X6 - VMOVDQA 32(AX), X5 - - VMOVDQU 0(DI), X1 - VMOVDQU 16(DI), X2 - VMOVDQU 0(SI), X3 - -hhacha_mainloop_avx2: - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X6, X3, X3 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSLLD $12, X1, X4 - VPSRLD $20, X1, X1 - VPXOR X1, X4, X1 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X5, X3, X3 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSLLD $7, X1, X4 - VPSRLD $25, X1, X1 - VPSHUFD $0x93, X0, X0 - VPXOR X1, X4, X1 - VPSHUFD $0x4e, X3, X3 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X6, X3, X3 - VPSHUFD $0x39, X2, X2 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSLLD $12, X1, X4 - VPSRLD $20, X1, X1 - VPXOR X1, X4, X1 - VPADDD X0, X1, X0 - VPXOR X3, X0, X3 - VPSHUFB X5, X3, X3 - VPADDD X2, X3, X2 - VPXOR X1, X2, X1 - VPSHUFD $0x39, X0, X0 - VPSLLD $7, X1, X4 - VPSHUFD $0x4e, X3, X3 - VPSRLD $25, X1, X1 - VPSHUFD $0x93, X2, X2 - VPXOR X1, X4, X1 - SUBL $2, CX - JNE hhacha_mainloop_avx2 - - VMOVDQU X0, (DX) - VMOVDQU X3, 16(DX) - - VZEROUPPER - RET - -// func blocksSSSE3(s *[api.StateSize]uint32, in, out []byte) -TEXT ·blocksSSSE3(SB), NOSPLIT, $576-56 - // This is Andrew Moon's SSSE3 ChaCha implementation taken from - // supercop-20190110, with some minor changes, primarily calling - // convention and assembly dialect related. - - // Align the stack on a 64 byte boundary. - MOVQ SP, BP - ADDQ $64, BP - ANDQ $-64, BP - - // Go calling convention -> SYSV AMD64 (and a fixup). - MOVQ s+0(FP), DI // &s -> DI - ADDQ $16, DI // Skip the ChaCha constants in the chachaState. - MOVQ in+8(FP), SI // &in[0] -> SI - MOVQ out+32(FP), DX // &out[0] -> DX - MOVQ in_len+16(FP), CX // len(in) -> CX - - // Begin the main body of `chacha_blocks_ssse3`. - // - // Mostly a direct translation except: - // * The number of rounds is always 20. - // * %rbp is used instead of BP. - LEAQ ·chacha_constants<>(SB), AX - MOVO 0(AX), X8 - MOVO 16(AX), X6 - MOVO 32(AX), X7 - MOVOU 0(DI), X9 - MOVOU 16(DI), X10 - MOVOU 32(DI), X11 - - // MOVQ 48(DI), AX - MOVQ $1, R9 - MOVO X8, 0(BP) - MOVO X9, 16(BP) - MOVO X10, 32(BP) - MOVO X11, 48(BP) - - MOVO X6, 80(BP) - MOVO X7, 96(BP) - // MOVQ AX, 64(BP) - CMPQ CX, $256 - JB chacha_blocks_ssse3_below256 - PSHUFD $0x00, X8, X0 - PSHUFD $0x55, X8, X1 - PSHUFD $0xaa, X8, X2 - PSHUFD $0xff, X8, X3 - MOVO X0, 128(BP) - MOVO X1, 144(BP) - MOVO X2, 160(BP) - MOVO X3, 176(BP) - PSHUFD $0x00, X9, X0 - PSHUFD $0x55, X9, X1 - PSHUFD $0xaa, X9, X2 - PSHUFD $0xff, X9, X3 - MOVO X0, 192(BP) - MOVO X1, 208(BP) - MOVO X2, 224(BP) - MOVO X3, 240(BP) - PSHUFD $0x00, X10, X0 - PSHUFD $0x55, X10, X1 - PSHUFD $0xaa, X10, X2 - PSHUFD $0xff, X10, X3 - MOVO X0, 256(BP) - MOVO X1, 272(BP) - MOVO X2, 288(BP) - MOVO X3, 304(BP) - PSHUFD $0xaa, X11, X0 - PSHUFD $0xff, X11, X1 - MOVO X0, 352(BP) - MOVO X1, 368(BP) - JMP chacha_blocks_ssse3_atleast256 - -// .p2align 6,,63 -// # align to 4 mod 64 -// nop;nop;nop;nop; -chacha_blocks_ssse3_atleast256: - MOVQ 48(BP), AX - LEAQ 1(AX), R8 - LEAQ 2(AX), R9 - LEAQ 3(AX), R10 - LEAQ 4(AX), BX - MOVL AX, 320(BP) - MOVL R8, 4+320(BP) - MOVL R9, 8+320(BP) - MOVL R10, 12+320(BP) - SHRQ $32, AX - SHRQ $32, R8 - SHRQ $32, R9 - SHRQ $32, R10 - MOVL AX, 336(BP) - MOVL R8, 4+336(BP) - MOVL R9, 8+336(BP) - MOVL R10, 12+336(BP) - MOVQ BX, 48(BP) - - // MOVQ 64(BP), AX - MOVQ $20, AX - MOVO 128(BP), X0 - MOVO 144(BP), X1 - MOVO 160(BP), X2 - MOVO 176(BP), X3 - MOVO 192(BP), X4 - MOVO 208(BP), X5 - MOVO 224(BP), X6 - MOVO 240(BP), X7 - MOVO 256(BP), X8 - MOVO 272(BP), X9 - MOVO 288(BP), X10 - MOVO 304(BP), X11 - MOVO 320(BP), X12 - MOVO 336(BP), X13 - MOVO 352(BP), X14 - MOVO 368(BP), X15 - -chacha_blocks_ssse3_mainloop1: - PADDD X4, X0 - PADDD X5, X1 - PXOR X0, X12 - PXOR X1, X13 - PADDD X6, X2 - PADDD X7, X3 - PXOR X2, X14 - PXOR X3, X15 - PSHUFB 80(BP), X12 - PSHUFB 80(BP), X13 - PADDD X12, X8 - PADDD X13, X9 - PSHUFB 80(BP), X14 - PSHUFB 80(BP), X15 - PADDD X14, X10 - PADDD X15, X11 - MOVO X12, 112(BP) - PXOR X8, X4 - PXOR X9, X5 - MOVO X4, X12 - PSLLL $ 12, X4 - PSRLL $20, X12 - PXOR X12, X4 - MOVO X5, X12 - PSLLL $ 12, X5 - PSRLL $20, X12 - PXOR X12, X5 - PXOR X10, X6 - PXOR X11, X7 - MOVO X6, X12 - PSLLL $ 12, X6 - PSRLL $20, X12 - PXOR X12, X6 - MOVO X7, X12 - PSLLL $ 12, X7 - PSRLL $20, X12 - PXOR X12, X7 - MOVO 112(BP), X12 - PADDD X4, X0 - PADDD X5, X1 - PXOR X0, X12 - PXOR X1, X13 - PADDD X6, X2 - PADDD X7, X3 - PXOR X2, X14 - PXOR X3, X15 - PSHUFB 96(BP), X12 - PSHUFB 96(BP), X13 - PADDD X12, X8 - PADDD X13, X9 - PSHUFB 96(BP), X14 - PSHUFB 96(BP), X15 - PADDD X14, X10 - PADDD X15, X11 - MOVO X12, 112(BP) - PXOR X8, X4 - PXOR X9, X5 - MOVO X4, X12 - PSLLL $ 7, X4 - PSRLL $25, X12 - PXOR X12, X4 - MOVO X5, X12 - PSLLL $ 7, X5 - PSRLL $25, X12 - PXOR X12, X5 - PXOR X10, X6 - PXOR X11, X7 - MOVO X6, X12 - PSLLL $ 7, X6 - PSRLL $25, X12 - PXOR X12, X6 - MOVO X7, X12 - PSLLL $ 7, X7 - PSRLL $25, X12 - PXOR X12, X7 - MOVO 112(BP), X12 - PADDD X5, X0 - PADDD X6, X1 - PXOR X0, X15 - PXOR X1, X12 - PADDD X7, X2 - PADDD X4, X3 - PXOR X2, X13 - PXOR X3, X14 - PSHUFB 80(BP), X15 - PSHUFB 80(BP), X12 - PADDD X15, X10 - PADDD X12, X11 - PSHUFB 80(BP), X13 - PSHUFB 80(BP), X14 - PADDD X13, X8 - PADDD X14, X9 - MOVO X15, 112(BP) - PXOR X10, X5 - PXOR X11, X6 - MOVO X5, X15 - PSLLL $ 12, X5 - PSRLL $20, X15 - PXOR X15, X5 - MOVO X6, X15 - PSLLL $ 12, X6 - PSRLL $20, X15 - PXOR X15, X6 - PXOR X8, X7 - PXOR X9, X4 - MOVO X7, X15 - PSLLL $ 12, X7 - PSRLL $20, X15 - PXOR X15, X7 - MOVO X4, X15 - PSLLL $ 12, X4 - PSRLL $20, X15 - PXOR X15, X4 - MOVO 112(BP), X15 - PADDD X5, X0 - PADDD X6, X1 - PXOR X0, X15 - PXOR X1, X12 - PADDD X7, X2 - PADDD X4, X3 - PXOR X2, X13 - PXOR X3, X14 - PSHUFB 96(BP), X15 - PSHUFB 96(BP), X12 - PADDD X15, X10 - PADDD X12, X11 - PSHUFB 96(BP), X13 - PSHUFB 96(BP), X14 - PADDD X13, X8 - PADDD X14, X9 - MOVO X15, 112(BP) - PXOR X10, X5 - PXOR X11, X6 - MOVO X5, X15 - PSLLL $ 7, X5 - PSRLL $25, X15 - PXOR X15, X5 - MOVO X6, X15 - PSLLL $ 7, X6 - PSRLL $25, X15 - PXOR X15, X6 - PXOR X8, X7 - PXOR X9, X4 - MOVO X7, X15 - PSLLL $ 7, X7 - PSRLL $25, X15 - PXOR X15, X7 - MOVO X4, X15 - PSLLL $ 7, X4 - PSRLL $25, X15 - PXOR X15, X4 - SUBQ $2, AX - MOVO 112(BP), X15 - JNZ chacha_blocks_ssse3_mainloop1 - PADDD 128(BP), X0 - PADDD 144(BP), X1 - PADDD 160(BP), X2 - PADDD 176(BP), X3 - PADDD 192(BP), X4 - PADDD 208(BP), X5 - PADDD 224(BP), X6 - PADDD 240(BP), X7 - PADDD 256(BP), X8 - PADDD 272(BP), X9 - PADDD 288(BP), X10 - PADDD 304(BP), X11 - PADDD 320(BP), X12 - PADDD 336(BP), X13 - PADDD 352(BP), X14 - PADDD 368(BP), X15 - MOVO X8, 384(BP) - MOVO X9, 400(BP) - MOVO X10, 416(BP) - MOVO X11, 432(BP) - MOVO X12, 448(BP) - MOVO X13, 464(BP) - MOVO X14, 480(BP) - MOVO X15, 496(BP) - MOVO X0, X8 - MOVO X2, X9 - MOVO X4, X10 - MOVO X6, X11 - PUNPCKHLQ X1, X0 - PUNPCKHLQ X3, X2 - PUNPCKHLQ X5, X4 - PUNPCKHLQ X7, X6 - PUNPCKLLQ X1, X8 - PUNPCKLLQ X3, X9 - PUNPCKLLQ X5, X10 - PUNPCKLLQ X7, X11 - MOVO X0, X1 - MOVO X4, X3 - MOVO X8, X5 - MOVO X10, X7 - PUNPCKHQDQ X2, X0 - PUNPCKHQDQ X6, X4 - PUNPCKHQDQ X9, X8 - PUNPCKHQDQ X11, X10 - PUNPCKLQDQ X2, X1 - PUNPCKLQDQ X6, X3 - PUNPCKLQDQ X9, X5 - PUNPCKLQDQ X11, X7 - ANDQ SI, SI - JZ chacha_blocks_ssse3_noinput1 - MOVOU 0(SI), X2 - MOVOU 16(SI), X6 - MOVOU 64(SI), X9 - MOVOU 80(SI), X11 - MOVOU 128(SI), X12 - MOVOU 144(SI), X13 - MOVOU 192(SI), X14 - MOVOU 208(SI), X15 - PXOR X2, X5 - PXOR X6, X7 - PXOR X9, X8 - PXOR X11, X10 - PXOR X12, X1 - PXOR X13, X3 - PXOR X14, X0 - PXOR X15, X4 - MOVOU X5, 0(DX) - MOVOU X7, 16(DX) - MOVOU X8, 64(DX) - MOVOU X10, 80(DX) - MOVOU X1, 128(DX) - MOVOU X3, 144(DX) - MOVOU X0, 192(DX) - MOVOU X4, 208(DX) - MOVO 384(BP), X0 - MOVO 400(BP), X1 - MOVO 416(BP), X2 - MOVO 432(BP), X3 - MOVO 448(BP), X4 - MOVO 464(BP), X5 - MOVO 480(BP), X6 - MOVO 496(BP), X7 - MOVO X0, X8 - MOVO X2, X9 - MOVO X4, X10 - MOVO X6, X11 - PUNPCKLLQ X1, X8 - PUNPCKLLQ X3, X9 - PUNPCKHLQ X1, X0 - PUNPCKHLQ X3, X2 - PUNPCKLLQ X5, X10 - PUNPCKLLQ X7, X11 - PUNPCKHLQ X5, X4 - PUNPCKHLQ X7, X6 - MOVO X8, X1 - MOVO X0, X3 - MOVO X10, X5 - MOVO X4, X7 - PUNPCKLQDQ X9, X1 - PUNPCKLQDQ X11, X5 - PUNPCKHQDQ X9, X8 - PUNPCKHQDQ X11, X10 - PUNPCKLQDQ X2, X3 - PUNPCKLQDQ X6, X7 - PUNPCKHQDQ X2, X0 - PUNPCKHQDQ X6, X4 - MOVOU 32(SI), X2 - MOVOU 48(SI), X6 - MOVOU 96(SI), X9 - MOVOU 112(SI), X11 - MOVOU 160(SI), X12 - MOVOU 176(SI), X13 - MOVOU 224(SI), X14 - MOVOU 240(SI), X15 - PXOR X2, X1 - PXOR X6, X5 - PXOR X9, X8 - PXOR X11, X10 - PXOR X12, X3 - PXOR X13, X7 - PXOR X14, X0 - PXOR X15, X4 - MOVOU X1, 32(DX) - MOVOU X5, 48(DX) - MOVOU X8, 96(DX) - MOVOU X10, 112(DX) - MOVOU X3, 160(DX) - MOVOU X7, 176(DX) - MOVOU X0, 224(DX) - MOVOU X4, 240(DX) - ADDQ $256, SI - JMP chacha_blocks_ssse3_mainloop_cont - -chacha_blocks_ssse3_noinput1: - MOVOU X5, 0(DX) - MOVOU X7, 16(DX) - MOVOU X8, 64(DX) - MOVOU X10, 80(DX) - MOVOU X1, 128(DX) - MOVOU X3, 144(DX) - MOVOU X0, 192(DX) - MOVOU X4, 208(DX) - MOVO 384(BP), X0 - MOVO 400(BP), X1 - MOVO 416(BP), X2 - MOVO 432(BP), X3 - MOVO 448(BP), X4 - MOVO 464(BP), X5 - MOVO 480(BP), X6 - MOVO 496(BP), X7 - MOVO X0, X8 - MOVO X2, X9 - MOVO X4, X10 - MOVO X6, X11 - PUNPCKLLQ X1, X8 - PUNPCKLLQ X3, X9 - PUNPCKHLQ X1, X0 - PUNPCKHLQ X3, X2 - PUNPCKLLQ X5, X10 - PUNPCKLLQ X7, X11 - PUNPCKHLQ X5, X4 - PUNPCKHLQ X7, X6 - MOVO X8, X1 - MOVO X0, X3 - MOVO X10, X5 - MOVO X4, X7 - PUNPCKLQDQ X9, X1 - PUNPCKLQDQ X11, X5 - PUNPCKHQDQ X9, X8 - PUNPCKHQDQ X11, X10 - PUNPCKLQDQ X2, X3 - PUNPCKLQDQ X6, X7 - PUNPCKHQDQ X2, X0 - PUNPCKHQDQ X6, X4 - MOVOU X1, 32(DX) - MOVOU X5, 48(DX) - MOVOU X8, 96(DX) - MOVOU X10, 112(DX) - MOVOU X3, 160(DX) - MOVOU X7, 176(DX) - MOVOU X0, 224(DX) - MOVOU X4, 240(DX) - -chacha_blocks_ssse3_mainloop_cont: - ADDQ $256, DX - SUBQ $256, CX - CMPQ CX, $256 - JAE chacha_blocks_ssse3_atleast256 - MOVO 80(BP), X6 - MOVO 96(BP), X7 - MOVO 0(BP), X8 - MOVO 16(BP), X9 - MOVO 32(BP), X10 - MOVO 48(BP), X11 - MOVQ $1, R9 - -chacha_blocks_ssse3_below256: - MOVQ R9, X5 - ANDQ CX, CX - JZ chacha_blocks_ssse3_done - CMPQ CX, $64 - JAE chacha_blocks_ssse3_above63 - MOVQ DX, R9 - ANDQ SI, SI - JZ chacha_blocks_ssse3_noinput2 - MOVQ CX, R10 - MOVQ BP, DX - ADDQ R10, SI - ADDQ R10, DX - NEGQ R10 - -chacha_blocks_ssse3_copyinput: - MOVB (SI)(R10*1), AX - MOVB AX, (DX)(R10*1) - INCQ R10 - JNZ chacha_blocks_ssse3_copyinput - MOVQ BP, SI - -chacha_blocks_ssse3_noinput2: - MOVQ BP, DX - -chacha_blocks_ssse3_above63: - MOVO X8, X0 - MOVO X9, X1 - MOVO X10, X2 - MOVO X11, X3 - - // MOVQ 64(BP), AX - MOVQ $20, AX - -chacha_blocks_ssse3_mainloop2: - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X6, X3 - PADDD X3, X2 - PXOR X2, X1 - MOVO X1, X4 - PSLLL $12, X4 - PSRLL $20, X1 - PXOR X4, X1 - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X7, X3 - PSHUFD $0x93, X0, X0 - PADDD X3, X2 - PSHUFD $0x4e, X3, X3 - PXOR X2, X1 - PSHUFD $0x39, X2, X2 - MOVO X1, X4 - PSLLL $7, X4 - PSRLL $25, X1 - PXOR X4, X1 - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X6, X3 - PADDD X3, X2 - PXOR X2, X1 - MOVO X1, X4 - PSLLL $12, X4 - PSRLL $20, X1 - PXOR X4, X1 - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X7, X3 - PSHUFD $0x39, X0, X0 - PADDD X3, X2 - PSHUFD $0x4e, X3, X3 - PXOR X2, X1 - PSHUFD $0x93, X2, X2 - MOVO X1, X4 - PSLLL $7, X4 - PSRLL $25, X1 - PXOR X4, X1 - SUBQ $2, AX - JNZ chacha_blocks_ssse3_mainloop2 - PADDD X8, X0 - PADDD X9, X1 - PADDD X10, X2 - PADDD X11, X3 - ANDQ SI, SI - JZ chacha_blocks_ssse3_noinput3 - MOVOU 0(SI), X12 - MOVOU 16(SI), X13 - MOVOU 32(SI), X14 - MOVOU 48(SI), X15 - PXOR X12, X0 - PXOR X13, X1 - PXOR X14, X2 - PXOR X15, X3 - ADDQ $64, SI - -chacha_blocks_ssse3_noinput3: - MOVOU X0, 0(DX) - MOVOU X1, 16(DX) - MOVOU X2, 32(DX) - MOVOU X3, 48(DX) - PADDQ X5, X11 - CMPQ CX, $64 - JBE chacha_blocks_ssse3_mainloop2_finishup - ADDQ $64, DX - SUBQ $64, CX - JMP chacha_blocks_ssse3_below256 - -chacha_blocks_ssse3_mainloop2_finishup: - CMPQ CX, $64 - JE chacha_blocks_ssse3_done - ADDQ CX, R9 - ADDQ CX, DX - NEGQ CX - -chacha_blocks_ssse3_copyoutput: - MOVB (DX)(CX*1), AX - MOVB AX, (R9)(CX*1) - INCQ CX - JNZ chacha_blocks_ssse3_copyoutput - -chacha_blocks_ssse3_done: - MOVOU X11, 32(DI) - - RET - -// func hChaChaSSSE3(key, nonce []byte, dst *byte) -TEXT ·hChaChaSSSE3(SB), NOSPLIT|NOFRAME, $0-56 - MOVQ key+0(FP), DI - MOVQ nonce+24(FP), SI - MOVQ dst+48(FP), DX - - MOVL $20, CX - - LEAQ ·chacha_constants<>(SB), AX - MOVO 0(AX), X0 - MOVO 16(AX), X5 - MOVO 32(AX), X6 - - MOVOU 0(DI), X1 - MOVOU 16(DI), X2 - MOVOU 0(SI), X3 - -hchacha_ssse3_mainloop: - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X5, X3 - PADDD X3, X2 - PXOR X2, X1 - MOVO X1, X4 - PSLLL $12, X1 - PSRLL $20, X4 - PXOR X4, X1 - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X6, X3 - PSHUFD $0X93, X0, X0 - PADDD X3, X2 - PSHUFD $0X4E, X3, X3 - PXOR X2, X1 - PSHUFD $0X39, X2, X2 - MOVO X1, X4 - PSLLL $7, X1 - PSRLL $25, X4 - PXOR X4, X1 - SUBQ $2, CX - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X5, X3 - PADDD X3, X2 - PXOR X2, X1 - MOVO X1, X4 - PSLLL $12, X1 - PSRLL $20, X4 - PXOR X4, X1 - PADDD X1, X0 - PXOR X0, X3 - PSHUFB X6, X3 - PSHUFD $0X39, X0, X0 - PADDD X3, X2 - PSHUFD $0X4E, X3, X3 - PXOR X2, X1 - PSHUFD $0X93, X2, X2 - MOVO X1, X4 - PSLLL $7, X1 - PSRLL $25, X4 - PXOR X4, X1 - JA hchacha_ssse3_mainloop - - MOVOU X0, 0(DX) - MOVOU X3, 16(DX) - - RET diff --git a/vendor/blitter.com/go/chacha20/internal/ref/impl.go b/vendor/blitter.com/go/chacha20/internal/ref/impl.go deleted file mode 100644 index d3a8ca6..0000000 --- a/vendor/blitter.com/go/chacha20/internal/ref/impl.go +++ /dev/null @@ -1,374 +0,0 @@ -// Copryright (C) 2019 Yawning Angel -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -// Package ref provides the portable ChaCha20 implementation. -package ref - -import ( - "encoding/binary" - "math/bits" - - "blitter.com/go/chacha20/internal/api" -) - -const rounds = 20 - -// Impl is the reference implementation (exposed for testing). -var Impl = &implRef{} - -type implRef struct{} - -func (impl *implRef) Name() string { - return "ref" -} - -func (impl *implRef) Blocks(x *[api.StateSize]uint32, dst, src []byte, nrBlocks int) { - for n := 0; n < nrBlocks; n++ { - x0, x1, x2, x3 := api.Sigma0, api.Sigma1, api.Sigma2, api.Sigma3 - x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15 := x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15] - - for i := rounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 16) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 8) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 7) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 16) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 12) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 8) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 16) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 12) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 8) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 16) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 12) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 8) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 16) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 12) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 8) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 16) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 8) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 16) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 12) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 8) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 16) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 12) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 8) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 7) - } - - x0 += api.Sigma0 - x1 += api.Sigma1 - x2 += api.Sigma2 - x3 += api.Sigma3 - x4 += x[4] - x5 += x[5] - x6 += x[6] - x7 += x[7] - x8 += x[8] - x9 += x[9] - x10 += x[10] - x11 += x[11] - x12 += x[12] - x13 += x[13] - x14 += x[14] - x15 += x[15] - - _ = dst[api.BlockSize-1] // Force bounds check elimination. - - if src != nil { - _ = src[api.BlockSize-1] // Force bounds check elimination. - binary.LittleEndian.PutUint32(dst[0:4], binary.LittleEndian.Uint32(src[0:4])^x0) - binary.LittleEndian.PutUint32(dst[4:8], binary.LittleEndian.Uint32(src[4:8])^x1) - binary.LittleEndian.PutUint32(dst[8:12], binary.LittleEndian.Uint32(src[8:12])^x2) - binary.LittleEndian.PutUint32(dst[12:16], binary.LittleEndian.Uint32(src[12:16])^x3) - binary.LittleEndian.PutUint32(dst[16:20], binary.LittleEndian.Uint32(src[16:20])^x4) - binary.LittleEndian.PutUint32(dst[20:24], binary.LittleEndian.Uint32(src[20:24])^x5) - binary.LittleEndian.PutUint32(dst[24:28], binary.LittleEndian.Uint32(src[24:28])^x6) - binary.LittleEndian.PutUint32(dst[28:32], binary.LittleEndian.Uint32(src[28:32])^x7) - binary.LittleEndian.PutUint32(dst[32:36], binary.LittleEndian.Uint32(src[32:36])^x8) - binary.LittleEndian.PutUint32(dst[36:40], binary.LittleEndian.Uint32(src[36:40])^x9) - binary.LittleEndian.PutUint32(dst[40:44], binary.LittleEndian.Uint32(src[40:44])^x10) - binary.LittleEndian.PutUint32(dst[44:48], binary.LittleEndian.Uint32(src[44:48])^x11) - binary.LittleEndian.PutUint32(dst[48:52], binary.LittleEndian.Uint32(src[48:52])^x12) - binary.LittleEndian.PutUint32(dst[52:56], binary.LittleEndian.Uint32(src[52:56])^x13) - binary.LittleEndian.PutUint32(dst[56:60], binary.LittleEndian.Uint32(src[56:60])^x14) - binary.LittleEndian.PutUint32(dst[60:64], binary.LittleEndian.Uint32(src[60:64])^x15) - src = src[api.BlockSize:] - } else { - binary.LittleEndian.PutUint32(dst[0:4], x0) - binary.LittleEndian.PutUint32(dst[4:8], x1) - binary.LittleEndian.PutUint32(dst[8:12], x2) - binary.LittleEndian.PutUint32(dst[12:16], x3) - binary.LittleEndian.PutUint32(dst[16:20], x4) - binary.LittleEndian.PutUint32(dst[20:24], x5) - binary.LittleEndian.PutUint32(dst[24:28], x6) - binary.LittleEndian.PutUint32(dst[28:32], x7) - binary.LittleEndian.PutUint32(dst[32:36], x8) - binary.LittleEndian.PutUint32(dst[36:40], x9) - binary.LittleEndian.PutUint32(dst[40:44], x10) - binary.LittleEndian.PutUint32(dst[44:48], x11) - binary.LittleEndian.PutUint32(dst[48:52], x12) - binary.LittleEndian.PutUint32(dst[52:56], x13) - binary.LittleEndian.PutUint32(dst[56:60], x14) - binary.LittleEndian.PutUint32(dst[60:64], x15) - } - dst = dst[api.BlockSize:] - - // Stoping at 2^70 bytes per nonce is the user's responsibility. - ctr := uint64(x[13])<<32 | uint64(x[12]) - ctr++ - x[12] = uint32(ctr) - x[13] = uint32(ctr >> 32) - } -} - -func (impl *implRef) HChaCha(key, nonce []byte, dst []byte) { - // Force bounds check elimination. - _ = key[31] - _ = nonce[api.HNonceSize-1] - - x0, x1, x2, x3 := api.Sigma0, api.Sigma1, api.Sigma2, api.Sigma3 - x4 := binary.LittleEndian.Uint32(key[0:4]) - x5 := binary.LittleEndian.Uint32(key[4:8]) - x6 := binary.LittleEndian.Uint32(key[8:12]) - x7 := binary.LittleEndian.Uint32(key[12:16]) - x8 := binary.LittleEndian.Uint32(key[16:20]) - x9 := binary.LittleEndian.Uint32(key[20:24]) - x10 := binary.LittleEndian.Uint32(key[24:28]) - x11 := binary.LittleEndian.Uint32(key[28:32]) - x12 := binary.LittleEndian.Uint32(nonce[0:4]) - x13 := binary.LittleEndian.Uint32(nonce[4:8]) - x14 := binary.LittleEndian.Uint32(nonce[8:12]) - x15 := binary.LittleEndian.Uint32(nonce[12:16]) - - // Yes, this could be carved out into a function for code reuse (TM) - // however the go inliner won't inline it. - for i := rounds; i > 0; i -= 2 { - // quarterround(x, 0, 4, 8, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 16) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 12) - x0 += x4 - x12 ^= x0 - x12 = bits.RotateLeft32(x12, 8) - x8 += x12 - x4 ^= x8 - x4 = bits.RotateLeft32(x4, 7) - - // quarterround(x, 1, 5, 9, 13) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 16) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 12) - x1 += x5 - x13 ^= x1 - x13 = bits.RotateLeft32(x13, 8) - x9 += x13 - x5 ^= x9 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 2, 6, 10, 14) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 16) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 12) - x2 += x6 - x14 ^= x2 - x14 = bits.RotateLeft32(x14, 8) - x10 += x14 - x6 ^= x10 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 3, 7, 11, 15) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 16) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 12) - x3 += x7 - x15 ^= x3 - x15 = bits.RotateLeft32(x15, 8) - x11 += x15 - x7 ^= x11 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 0, 5, 10, 15) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 16) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 12) - x0 += x5 - x15 ^= x0 - x15 = bits.RotateLeft32(x15, 8) - x10 += x15 - x5 ^= x10 - x5 = bits.RotateLeft32(x5, 7) - - // quarterround(x, 1, 6, 11, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 16) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 12) - x1 += x6 - x12 ^= x1 - x12 = bits.RotateLeft32(x12, 8) - x11 += x12 - x6 ^= x11 - x6 = bits.RotateLeft32(x6, 7) - - // quarterround(x, 2, 7, 8, 13) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 16) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 12) - x2 += x7 - x13 ^= x2 - x13 = bits.RotateLeft32(x13, 8) - x8 += x13 - x7 ^= x8 - x7 = bits.RotateLeft32(x7, 7) - - // quarterround(x, 3, 4, 9, 14) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 16) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 12) - x3 += x4 - x14 ^= x3 - x14 = bits.RotateLeft32(x14, 8) - x9 += x14 - x4 ^= x9 - x4 = bits.RotateLeft32(x4, 7) - } - - // HChaCha returns x0...x3 | x12...x15, which corresponds to the - // indexes of the ChaCha constant and the indexes of the IV. - _ = dst[api.HashSize-1] // Force bounds check elimination. - binary.LittleEndian.PutUint32(dst[0:4], x0) - binary.LittleEndian.PutUint32(dst[4:8], x1) - binary.LittleEndian.PutUint32(dst[8:12], x2) - binary.LittleEndian.PutUint32(dst[12:16], x3) - binary.LittleEndian.PutUint32(dst[16:20], x12) - binary.LittleEndian.PutUint32(dst[20:24], x13) - binary.LittleEndian.PutUint32(dst[24:28], x14) - binary.LittleEndian.PutUint32(dst[28:32], x15) -} - -// Register appends the implementation to the provided slice, and returns the -// new slice. -func Register(impls []api.Implementation) []api.Implementation { - return append(impls, Impl) -} diff --git a/vendor/blitter.com/go/cryptmt/README.md b/vendor/blitter.com/go/cryptmt/README.md deleted file mode 100644 index 2f1e323..0000000 --- a/vendor/blitter.com/go/cryptmt/README.md +++ /dev/null @@ -1,6 +0,0 @@ -[![GoDoc](https://godoc.org/blitter.com/go/cryptmt?status.svg)](https://godoc.org/blitter.com/go/cryptmt) - -Implementation of cryptMTv1 stream cipher (but with mtwist64 as base accum) -https://eprint.iacr.org/2005/165.pdf - -Uses Mersenne Twister 64 golang implementation supplied by [cuixin](https://gist.github.com/cuixin): [gist](https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8) diff --git a/vendor/blitter.com/go/cryptmt/cryptmt.go b/vendor/blitter.com/go/cryptmt/cryptmt.go deleted file mode 100644 index 3a627ed..0000000 --- a/vendor/blitter.com/go/cryptmt/cryptmt.go +++ /dev/null @@ -1,78 +0,0 @@ -// Package CryptMT - implementation of cryptMTv1 stream cipher -// (but with mtwist64 as base accum) -// https://eprint.iacr.org/2005/165.pdf -package cryptmt - -// TODO rlm: according to go docs, stream ciphers do not implement the -// cipher.Block interface at all (thus do not support Encrypt() or -// Decrypt() .. cipher.StreamReader/StreamWriter() only call -// XORKeyStream() anyhow and for my own purposes this is all that is -// required. - -import ( - "errors" - "io" - - mtwist "blitter.com/go/mtwist" -) - -type Cipher struct { - r io.Reader - w io.Writer - accum uint64 - m *mtwist.MT19937_64 -} - -func (c *Cipher) yield() (r byte) { - c.accum = c.accum * (c.m.Int63() | 1) - r = byte(c.accum>>56) & 0xFF - return -} - -// New creates and returns a Cipher. The key argument should be the -// CryptMT key, 64 bytes. -func New(r io.Reader, w io.Writer, key []byte) (c *Cipher) { - c = &Cipher{m: mtwist.New(), r: r, w: w} - c.m.SeedFullState(key) - c.accum = 1 - // from paper, discard first 64 bytes of output - for idx := 0; idx < 64; idx++ { - _ = c.yield() - } - return c -} - -func (c *Cipher) Read(p []byte) (n int, err error) { - n, err = c.r.Read(p) - if err == nil { - for idx := 0; idx < n; idx++ { - p[idx] = p[idx] ^ c.yield() - } - } - return n, err -} - -func (c *Cipher) Write(p []byte) (n int, err error) { - n, err = c.w.Write(p) - return n, err -} - -// XORKeyStream XORs each byte in the given slice with a byte from the -// cipher's key stream. Dst and src must overlap entirely or not at all. -// -// If len(dst) < len(src), XORKeyStream should panic. It is acceptable -// to pass a dst bigger than src, and in that case, XORKeyStream will -// only update dst[:len(src)] and will not touch the rest of dst. -// -// Multiple calls to XORKeyStream behave as if the concatenation of -// the src buffers was passed in a single run. That is, Stream -// maintains state and does not reset at each XORKeyStream call. -func (c *Cipher) XORKeyStream(dst, src []byte) { - if len(dst) < len(src) { - panic(errors.New("len(dst) < len(src)")) - } - - for i, b := range src { - dst[i] = b ^ c.yield() - } -} diff --git a/vendor/blitter.com/go/goutmp/LICENSE.mit b/vendor/blitter.com/go/goutmp/LICENSE.mit deleted file mode 100644 index 8d5754c..0000000 --- a/vendor/blitter.com/go/goutmp/LICENSE.mit +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 - 2018 Russell Magee - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/blitter.com/go/goutmp/README.md b/vendor/blitter.com/go/goutmp/README.md deleted file mode 100644 index cb956fc..0000000 --- a/vendor/blitter.com/go/goutmp/README.md +++ /dev/null @@ -1,17 +0,0 @@ -goutmp - Minimal bindings to C stdlib pututmpx(), getutmpx() (/var/log/wtmp) and /var/log/lastlog - -Any Go program which allows user shell access should update the standard UNIX files which track user sessions: /var/log/wtmp (for the 'w' and 'who' commands), and /var/log/lastlog (the 'last' and 'lastlog' commands). - -``` -go doc -package goutmp // import "blitter.com/go/goutmp" - -Golang bindings for basic login/utmp accounting - -type UtmpEntry struct{ ... } - -func Put_lastlog_entry(app, usr, ptsname, host string) -func Unput_utmp(entry UtmpEntry) -func Put_utmp(user, ptsname, host string) UtmpEntry -``` - diff --git a/vendor/blitter.com/go/goutmp/goutmp.go b/vendor/blitter.com/go/goutmp/goutmp.go deleted file mode 100644 index 2d7721b..0000000 --- a/vendor/blitter.com/go/goutmp/goutmp.go +++ /dev/null @@ -1,130 +0,0 @@ -// Golang bindings for basic login/utmp accounting -package goutmp - -//#include -//#include -//#include -//#include -//#include -//#include -//#include -//#include -// -//#include -//#include -// -//typedef char char_t; -// -// -//void pututmp(struct utmp* entry, char* uname, char* ptsname, char* host) { -// entry->ut_type = USER_PROCESS; -// entry->ut_pid = getpid(); -// strcpy(entry->ut_line, ptsname + strlen("/dev/")); -// -// strcpy(entry->ut_id, ptsname + strlen("/dev/pts/")); -// -// entry->ut_time = time(NULL); -// strcpy(entry->ut_user, uname); -// strcpy(entry->ut_host, host); -// entry->ut_addr = 0; -// setutent(); -// pututline(entry); -//} -// -//void unpututmp(struct utmp* entry) { -// entry->ut_type = DEAD_PROCESS; -// memset(entry->ut_line, 0, UT_LINESIZE); -// entry->ut_time = 0; -// memset(entry->ut_user, 0, UT_NAMESIZE); -// setutent(); -// pututline(entry); -// -// endutent(); -//} -// -//int putlastlogentry(int64_t t, int uid, char* line, char* host) { -// int retval = 0; -// FILE *f; -// struct lastlog l; -// -// strncpy(l.ll_line, line, UT_LINESIZE); -// l.ll_line[UT_LINESIZE-1] = '\0'; -// strncpy(l.ll_host, host, UT_HOSTSIZE); -// l.ll_host[UT_HOSTSIZE-1] = '\0'; -// -// l.ll_time = (time_t)t; -// //printf("l: ll_line '%s', ll_host '%s', ll_time %d\n", l.ll_line, l.ll_host, l.ll_time); -// -// /* Write lastlog entry at fixed offset (uid * sizeof(struct lastlog) */ -// if( NULL != (f = fopen("/var/log/lastlog", "rw+")) ) { -// if( !fseek(f, (uid * sizeof(struct lastlog)), SEEK_SET) ) { -// int fd = fileno(f); -// if( write(fd, &l, sizeof(l)) == sizeof(l) ) { -// retval = 1; -// //int32_t stat = system("echo ---- lastlog ----; lastlog"); -// } -// } -// fclose(f); -// } -// return retval; -//} -import "C" - -import ( - "fmt" - "net" - "os/user" - "strings" - "time" -) - -// UtmpEntry wraps the C struct utmp -type UtmpEntry struct { - entry C.struct_utmp -} - -// return remote client hostname or IP if host lookup fails -// addr is expected to be of the format given by net.Addr.String() -// eg., "127.0.0.1:80" or "[::1]:80" -func GetHost(addr string) (h string) { - if !strings.Contains(addr, "[") { - h = strings.Split(addr, ":")[0] - } else { - h = strings.Split(strings.Split(addr, "[")[1], "]")[0] - } - hList, e := net.LookupAddr(h) - //fmt.Printf("lookupAddr:%v\n", hList) - if e == nil { - h = hList[0] - } - return -} - -// Put a username and the originating host/IP to utmp -func Put_utmp(user, ptsName, host string) UtmpEntry { - var entry UtmpEntry - - //log.Println("Put_utmp:host ", host, " user ", user) - C.pututmp(&entry.entry, C.CString(user), C.CString(ptsName), C.CString(host)) - return entry -} - -// Remove a username/host entry from utmp -func Unput_utmp(entry UtmpEntry) { - C.unpututmp(&entry.entry) -} - -// Put the login app, username and originating host/IP to lastlog -func Put_lastlog_entry(app, usr, ptsname, host string) { - u, e := user.Lookup(usr) - if e != nil { - return - } - var uid uint32 - fmt.Sscanf(u.Uid, "%d", &uid) - - t := time.Now().Unix() - _ = C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) - //stat := C.putlastlogentry(C.int64_t(t), C.int(uid), C.CString(app), C.CString(host)) - //fmt.Println("stat was:",stat) -} diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.gpl b/vendor/blitter.com/go/herradurakex/LICENSE.gpl deleted file mode 100644 index 94a9ed0..0000000 --- a/vendor/blitter.com/go/herradurakex/LICENSE.gpl +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/vendor/blitter.com/go/herradurakex/LICENSE.mit b/vendor/blitter.com/go/herradurakex/LICENSE.mit deleted file mode 100644 index 4acc92f..0000000 --- a/vendor/blitter.com/go/herradurakex/LICENSE.mit +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2017 - 2018 Omar Alejandro Herrera Reyna (core HerraduraKEx) -Copyright (c) 2017 - 2018 Russell Magee (hkexsh/hkexshd/hkexpasswd) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/blitter.com/go/herradurakex/Makefile b/vendor/blitter.com/go/herradurakex/Makefile deleted file mode 100644 index e59fbc7..0000000 --- a/vendor/blitter.com/go/herradurakex/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -.PHONY: info clean all lib - -all: lib - -clean: - go clean . - -lib: info - go install . - -ifneq ($(MSYSTEM),) -info: - @echo "building for Windows (MSYS)" -else -info: - @echo "building for Linux" -endif diff --git a/vendor/blitter.com/go/herradurakex/README.md b/vendor/blitter.com/go/herradurakex/README.md deleted file mode 100644 index 82b7368..0000000 --- a/vendor/blitter.com/go/herradurakex/README.md +++ /dev/null @@ -1 +0,0 @@ -HerraduraKEx - an experimental Key Encapsulation Mechanism diff --git a/vendor/blitter.com/go/herradurakex/herradurakex.go b/vendor/blitter.com/go/herradurakex/herradurakex.go deleted file mode 100644 index 9621e94..0000000 --- a/vendor/blitter.com/go/herradurakex/herradurakex.go +++ /dev/null @@ -1,182 +0,0 @@ -// Package hkex - an experimental key exchange algorithm -// by Omar Alejandro Herrera Reyna. -// -// (https://github.com/Caume/HerraduraKEx) -// -// The core HerraduraKEx algorithm is dual-licensed -// by the author (Omar Alejandro Herrera Reyna) -// under GPL3 and MIT licenses. -// See LICENSE.gpl and LICENSE.mit in this distribution -// -// Go implementation Copyright (c) 2017-2018 Russell Magee -// (rmagee_at_gmail_com) -// Licensed under the terms of the MIT license -// See LICENSE.mit in this distribution -package hkex - -/* Herradura - a Key exchange scheme in the style of Diffie-Hellman Key Exchange. - Copyright (C) 2017 Omar Alejandro Herrera Reyna - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - - golang implementation by Russ Magee (rmagee_at_gmail.com) */ - -/* This is the core KEx algorithm. For client/server net support code, -See the hkexnet package (currently a sub-package of hkexsh) for a -golang/pkg/net compatible Conn interface using this to negotiate keys and -secure a network channel. */ - -import ( - "fmt" - "math/big" - "math/rand" - "time" -) - -// HerraduraKEx holds the session state for a key exchange. -type HerraduraKEx struct { - intSz, pubSz int - randctx *rand.Rand - a *big.Int - b *big.Int - d, peerD *big.Int - fa *big.Int -} - -// New returns a HerraduraKEx struct. -// -// i - internal (private) random nonce -// p - public (exchanged) random nonce (typically 1/4 bitsize of i) -// -// If i or p are passed as zero, they will default to 256 and 64, -// respectively. -func New(i int, p int) (h *HerraduraKEx) { - h = new(HerraduraKEx) - - if i == 0 { - i = 256 - } - if p == 0 { - p = 64 - } - - h.intSz = i - h.pubSz = p - - h.seed() - h.a = h.rand() - h.b = h.rand() - - h.d = h.fscxRevolve(h.a, h.b, h.pubSz) - return h -} - -func (h *HerraduraKEx) seed() { - r := rand.New(rand.NewSource(time.Now().UnixNano())) - h.randctx = r -} - -func (h *HerraduraKEx) rand() (v *big.Int) { - v = big.NewInt(0) - v.Rand(h.randctx, h.getMax()) - return v -} - -// getMax returns the max value for an n-bit big.Int -func (h *HerraduraKEx) getMax() (n *big.Int) { - n = big.NewInt(0) - var max big.Int - - for i := 0; i < h.intSz; i++ { - max.SetBit(n, i, 1) - } - n = &max - return n -} - -func (h *HerraduraKEx) bitX(x *big.Int, pos int) (ret int64) { - if pos < 0 { - pos = h.intSz - pos - } - - if pos == 0 { - ret = int64(x.Bit(1) ^ x.Bit(0) ^ x.Bit(h.intSz-1)) - } else if pos == h.intSz-1 { - ret = int64(x.Bit(0) ^ x.Bit(pos) ^ x.Bit(pos-1)) - } else { - ret = int64(x.Bit((pos+1)%h.intSz) ^ x.Bit(pos) ^ x.Bit(pos-1)) - } - return ret -} - -func (h *HerraduraKEx) bit(up, down *big.Int, posU, posD int) (ret *big.Int) { - return big.NewInt(h.bitX(up, posU) ^ h.bitX(down, posD)) -} - -func (h *HerraduraKEx) fscx(up, down *big.Int) (result *big.Int) { - result = big.NewInt(0) - - for count := 0; count < h.intSz; count++ { - result.Lsh(result, 1) - result.Add(result, h.bit(up, down, count, count)) - } - return result -} - -// This is the iteration function using the result of the previous iteration -// as the first parameter and the second parameter of the first iteration. -func (h *HerraduraKEx) fscxRevolve(x, y *big.Int, passes int) (result *big.Int) { - result = x - for count := 0; count < passes; count++ { - result = h.fscx(result, y) - } - return result -} - -// D returns the D (FSCX Revolved) value, input to generate FA -// (the value for peer KEx) -func (h HerraduraKEx) D() *big.Int { - return h.d -} - -// PeerD returns the peer D value -func (h HerraduraKEx) PeerD() *big.Int { - return h.peerD -} - -// SetPeerD stores the received peer's D value (contents, not ptr) -func (h *HerraduraKEx) SetPeerD(pd *big.Int) { - h.peerD = new(big.Int).Set(pd) -} - -// ComputeFA computes the FA value, which must be sent to peer for KEx. -func (h *HerraduraKEx) ComputeFA() { - h.fa = h.fscxRevolve(h.peerD, h.b, h.intSz-h.pubSz) - h.fa.Xor(h.fa, h.a) -} - -// FA returns the computed FA value -func (h HerraduraKEx) FA() *big.Int { - return h.fa -} - -// Output HerraduraKEx type value as a string. Implements Stringer interface. -func (h *HerraduraKEx) String() string { - return fmt.Sprintf("s:%d p:%d\na:%s\nb:%s\nd:->%s\n<-peerD:%s\nfa:%s", - h.intSz, h.pubSz, - h.a.Text(16), h.b.Text(16), - h.d.Text(16), - h.peerD.Text(16), - h.fa.Text(16)) -} diff --git a/vendor/blitter.com/go/kyber/.gitignore b/vendor/blitter.com/go/kyber/.gitignore deleted file mode 100644 index d38c149..0000000 --- a/vendor/blitter.com/go/kyber/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.swp -*~ diff --git a/vendor/blitter.com/go/kyber/LICENSE b/vendor/blitter.com/go/kyber/LICENSE deleted file mode 100644 index 6ca207e..0000000 --- a/vendor/blitter.com/go/kyber/LICENSE +++ /dev/null @@ -1,122 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. - diff --git a/vendor/blitter.com/go/kyber/README.md b/vendor/blitter.com/go/kyber/README.md deleted file mode 100644 index 634901c..0000000 --- a/vendor/blitter.com/go/kyber/README.md +++ /dev/null @@ -1,24 +0,0 @@ -### Kyber - IND-CCA2-secure Key Encapsulation Mechanism -#### Yawning Angel (yawning at schwanenlied dot me) - -[![GoDoc](https://godoc.org/git.schwanenlied.me/yawning/kyber.git?status.svg)](https://godoc.org/git.schwanenlied.me/yawning/kyber.git) - -This package implements the Kyber IND-CCA2-secure key encapsulation -mechanism (KEM), based on the hardness of solving the learning-with-errors -(LWE) problem over module lattices as submitted to the NIST Post-Quantum -Cryptography project. - -This implementation is a port of the Public Domain reference implementation -by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, -John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. - -Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in -the Kyber paper are included for users that seek an authenticated key -exchange. - -Note that the algorithm is not finalized yet, and may change in a backward -incompatible manner in the future. The designers currently recommend -combining Kyber with an established pre-quantum algorithm like ECDH, and -using the Kyber-768 parameter set. - -For more information, see the [project home page](https://pq-crystals.org/kyber/index.shtml). diff --git a/vendor/blitter.com/go/kyber/cbd.go b/vendor/blitter.com/go/kyber/cbd.go deleted file mode 100644 index 31ca4fd..0000000 --- a/vendor/blitter.com/go/kyber/cbd.go +++ /dev/null @@ -1,100 +0,0 @@ -// cbd.go - Centered binomial distribution. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -// Load bytes into a 64-bit integer in little-endian order. -func loadLittleEndian(x []byte, bytes int) uint64 { - var r uint64 - for i, v := range x[:bytes] { - r |= uint64(v) << (8 * uint(i)) - } - return r -} - -// Given an array of uniformly random bytes, compute polynomial with -// coefficients distributed according to a centered binomial distribution -// with parameter eta. -func (p *poly) cbd(buf []byte, eta int) { - hardwareAccelImpl.cbdFn(p, buf, eta) -} - -func cbdRef(p *poly, buf []byte, eta int) { - switch eta { - case 3: - var a, b [4]uint32 - for i := 0; i < kyberN/4; i++ { - t := loadLittleEndian(buf[3*i:], 3) - var d uint32 - for j := 0; j < 3; j++ { - d += uint32((t >> uint(j)) & 0x249249) - } - - a[0] = d & 0x7 - b[0] = (d >> 3) & 0x7 - a[1] = (d >> 6) & 0x7 - b[1] = (d >> 9) & 0x7 - a[2] = (d >> 12) & 0x7 - b[2] = (d >> 15) & 0x7 - a[3] = (d >> 18) & 0x7 - b[3] = (d >> 21) - - p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) - p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) - p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) - p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) - } - case 4: - var a, b [4]uint32 - for i := 0; i < kyberN/4; i++ { - t := loadLittleEndian(buf[4*i:], 4) - var d uint32 - for j := 0; j < 4; j++ { - d += uint32((t >> uint(j)) & 0x11111111) - } - - a[0] = d & 0xf - b[0] = (d >> 4) & 0xf - a[1] = (d >> 8) & 0xf - b[1] = (d >> 12) & 0xf - a[2] = (d >> 16) & 0xf - b[2] = (d >> 20) & 0xf - a[3] = (d >> 24) & 0xf - b[3] = (d >> 28) - - p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) - p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) - p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) - p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) - } - case 5: - var a, b [4]uint64 - for i := 0; i < kyberN/4; i++ { - t := loadLittleEndian(buf[5*i:], 5) - var d uint64 - for j := 0; j < 5; j++ { - d += (t >> uint(j)) & 0x0842108421 - } - - a[0] = d & 0x1f - b[0] = (d >> 5) & 0x1f - a[1] = (d >> 10) & 0x1f - b[1] = (d >> 15) & 0x1f - a[2] = (d >> 20) & 0x1f - b[2] = (d >> 25) & 0x1f - a[3] = (d >> 30) & 0x1f - b[3] = (d >> 35) - - p.coeffs[4*i+0] = uint16(a[0] + kyberQ - b[0]) - p.coeffs[4*i+1] = uint16(a[1] + kyberQ - b[1]) - p.coeffs[4*i+2] = uint16(a[2] + kyberQ - b[2]) - p.coeffs[4*i+3] = uint16(a[3] + kyberQ - b[3]) - } - default: - panic("kyber: eta must be in {3,4,5}") - } -} diff --git a/vendor/blitter.com/go/kyber/doc.go b/vendor/blitter.com/go/kyber/doc.go deleted file mode 100644 index 8789ad4..0000000 --- a/vendor/blitter.com/go/kyber/doc.go +++ /dev/null @@ -1,27 +0,0 @@ -// doc.go - Kyber godoc extras. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// Package kyber implements the Kyber IND-CCA2-secure key encapsulation -// mechanism (KEM), based on the hardness of solving the learning-with-errors -// (LWE) problem over module lattices as submitted to the NIST Post-Quantum -// Cryptography project. -// -// This implementation is a port of the Public Domain reference implementation -// by Joppe Bos, Léo Ducas, Eike Kiltz , Tancrède Lepoint, Vadim Lyubashevsky, -// John Schanck, Peter Schwabe, Gregor Seiler, and Damien Stehlé. -// -// Additionally implementations of Kyber.AKE and Kyber.UAKE as presented in -// the Kyber paper are included for users that seek an authenticated key -// exchange. -// -// Note that the algorithm is not finalized yet, and may change in a backward -// incompatible manner in the future. The designers currently recommend -// combining Kyber with an established pre-quantum algorithm like ECDH, and -// using the Kyber-768 parameter set. -// -// For more information, see https://pq-crystals.org/kyber/index.shtml. -package kyber diff --git a/vendor/blitter.com/go/kyber/go.mod b/vendor/blitter.com/go/kyber/go.mod deleted file mode 100644 index 034a8c8..0000000 --- a/vendor/blitter.com/go/kyber/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module blitter.com/go/kyber - -go 1.12 - -require golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d diff --git a/vendor/blitter.com/go/kyber/go.sum b/vendor/blitter.com/go/kyber/go.sum deleted file mode 100644 index ce1301f..0000000 --- a/vendor/blitter.com/go/kyber/go.sum +++ /dev/null @@ -1,7 +0,0 @@ -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d h1:9FCpayM9Egr1baVnV1SX0H87m+XB0B8S0hAMi99X/3U= -golang.org/x/crypto v0.0.0-20200128174031-69ecbb4d6d5d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/vendor/blitter.com/go/kyber/hwaccel.go b/vendor/blitter.com/go/kyber/hwaccel.go deleted file mode 100644 index 80ec831..0000000 --- a/vendor/blitter.com/go/kyber/hwaccel.go +++ /dev/null @@ -1,46 +0,0 @@ -// hwaccel.go - Hardware acceleration hooks. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -var ( - isHardwareAccelerated = false - hardwareAccelImpl = implReference - - implReference = &hwaccelImpl{ - name: "Reference", - nttFn: nttRef, - invnttFn: invnttRef, - pointwiseAccFn: pointwiseAccRef, - cbdFn: cbdRef, - } -) - -type hwaccelImpl struct { - name string - nttFn func(*[kyberN]uint16) - invnttFn func(*[kyberN]uint16) - pointwiseAccFn func(*poly, *polyVec, *polyVec) - cbdFn func(*poly, []byte, int) -} - -func forceDisableHardwareAcceleration() { - // This is for the benefit of testing, so that it's possible to test - // all versions that are supported by the host. - isHardwareAccelerated = false - hardwareAccelImpl = implReference -} - -// IsHardwareAccelerated returns true iff the Kyber implementation will use -// hardware acceleration (eg: AVX2). -func IsHardwareAccelerated() bool { - return isHardwareAccelerated -} - -func init() { - initHardwareAcceleration() -} diff --git a/vendor/blitter.com/go/kyber/hwaccel_amd64.go b/vendor/blitter.com/go/kyber/hwaccel_amd64.go deleted file mode 100644 index 6413187..0000000 --- a/vendor/blitter.com/go/kyber/hwaccel_amd64.go +++ /dev/null @@ -1,256 +0,0 @@ -// hwaccel_amd64.go - AMD64 optimized routines. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// +build amd64,!gccgo,!noasm,go1.10 - -package kyber - -var zetasExp = [752]uint16{ - 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, 3777, - 3777, 3777, 3777, 3777, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, - 4499, 4499, 4499, 4499, 4499, 4499, 4499, 4499, 3625, 3625, 3625, 3625, - 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, 3625, - 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, 3985, - 3985, 3985, 3985, 3985, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, - 6581, 6581, 6581, 6581, 6581, 6581, 6581, 6581, 2456, 2456, 2456, 2456, - 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, 2456, - 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, 2194, - 2194, 2194, 2194, 2194, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 5431, 5431, 5431, 5431, 5431, 5431, - 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 5431, 834, 834, - 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, 834, - 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, 5186, - 5186, 5186, 5186, 5186, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, - 5362, 5362, 5362, 5362, 5362, 5362, 5362, 5362, 2876, 2876, 2876, 2876, - 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, - 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, 5980, - 5980, 5980, 5980, 5980, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, - 1414, 1414, 1414, 1414, 1414, 1414, 1414, 1414, 2816, 2816, 2816, 2816, - 2816, 2816, 2816, 2816, 5593, 5593, 5593, 5593, 5593, 5593, 5593, 5593, - 5444, 5444, 5444, 5444, 5444, 5444, 5444, 5444, 1986, 1986, 1986, 1986, - 1986, 1986, 1986, 1986, 6082, 6082, 6082, 6082, 6082, 6082, 6082, 6082, - 1993, 1993, 1993, 1993, 1993, 1993, 1993, 1993, 3706, 3706, 3706, 3706, - 3706, 3706, 3706, 3706, 5675, 5675, 5675, 5675, 5675, 5675, 5675, 5675, - 6156, 6156, 6156, 6156, 6156, 6156, 6156, 6156, 5124, 5124, 5124, 5124, - 5124, 5124, 5124, 5124, 1296, 1296, 1296, 1296, 1296, 1296, 1296, 1296, - 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 4851, 4851, 4851, 4851, - 4851, 4851, 4851, 4851, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3364, - 617, 617, 617, 617, 617, 617, 617, 617, 1921, 1921, 1921, 1921, 1921, - 1921, 1921, 1921, 3992, 3992, 3992, 3992, 5943, 5943, 5943, 5943, 3266, - 3266, 3266, 3266, 4081, 4081, 4081, 4081, 810, 810, 810, 810, 1887, - 1887, 1887, 1887, 7043, 7043, 7043, 7043, 7674, 7674, 7674, 7674, 7243, - 7243, 7243, 7243, 7002, 7002, 7002, 7002, 6376, 6376, 6376, 6376, 5921, - 5921, 5921, 5921, 396, 396, 396, 396, 4507, 4507, 4507, 4507, 4126, - 4126, 4126, 4126, 5800, 5800, 5800, 5800, 3772, 3772, 3772, 3772, 5146, - 5146, 5146, 5146, 5241, 5241, 5241, 5241, 5126, 5126, 5126, 5126, 1535, - 1535, 1535, 1535, 7132, 7132, 7132, 7132, 3153, 3153, 3153, 3153, 2310, - 2310, 2310, 2310, 6282, 6282, 6282, 6282, 1321, 1321, 1321, 1321, 514, - 514, 514, 514, 4725, 4725, 4725, 4725, 7578, 7578, 7578, 7578, 2804, - 2804, 2804, 2804, 5638, 5638, 5638, 5638, 6250, 6250, 6250, 6250, 6627, - 6627, 1698, 1698, 4225, 4225, 1166, 1166, 2426, 2426, 3831, 3831, 915, - 915, 7679, 7679, 4264, 4264, 7487, 7487, 2919, 2919, 2789, 2789, 3405, - 3405, 2385, 2385, 5568, 5568, 4949, 4949, 2175, 2175, 373, 373, 3692, - 3692, 6951, 6951, 5925, 5925, 3135, 3135, 5290, 5290, 660, 660, 6184, - 6184, 2572, 2572, 4536, 4536, 1350, 1350, 5457, 5457, 4093, 4093, 6000, - 6000, 2883, 2883, 6291, 6291, 1598, 1598, 3750, 3750, 2762, 2762, 2835, - 2835, 2764, 2764, 5448, 5448, 3816, 3816, 6148, 6148, 1464, 1464, 6954, - 6954, 1521, 1521, 1386, 1386, 4253, 4253, 6760, 6760, 4938, 4938, 5521, - 5521, 2649, 2649, 6822, 6822, 2579, 2579, 1532, 1532, 1919, 1919, 7195, - 7195, 404, 404, 6625, 6625, 783, 783, 1799, 1799, 5016, 5016, 3480, - 3480, 2133, 2133, 4371, 4371, 6513, 6513, 7664, 3744, 2422, 2001, 1278, - 929, 6333, 5451, 7502, 6439, 5622, 6611, 2161, 1649, 2072, 3177, 5610, - 1121, 7245, 236, 715, 670, 7023, 6205, 5303, 2767, 3542, 7455, 1203, - 1181, 7530, 3887, 1712, 7459, 2786, 7230, 4134, 1779, 6530, 7247, 3568, - 3988, 3581, 6095, 1509, 2918, 2339, 6274, 3434, 4131, 2340, 2891, 2998, - 4367, 3461, 4962, 5434, 5092, 1144, 1072, 1295, 4866, 3911, 3450, 3781, - 5423, 796, 3163, 4473, 7092, 2963, 7557, 3214, 3334, 4315, 3936, 3723, - 1931, 7252, 7279, 4273, 83, 6155, 826, 6343, 2345, 5378, 2515, 7039, - 5844, 4716, 6890, 370, 293, 3312, 2083, 5992, 6904, 2070, 2262, 6788, - 2386, 7493, 6162, 4807, 6277, 1012, 2130, 1441, 2532, 4346, 6597, 4338, - 2937, 509, 6278, 2812, 3763, 592, 2005, 3657, 2460, 4004, 3752, 692, - 1669, 2167, 4394, -} - -var zetasInvExp = [752]uint16{ - 3287, 5514, 6012, 6989, 3929, 3677, 5221, 4024, 5676, 7089, 3918, 4869, - 1403, 7172, 4744, 3343, 1084, 3335, 5149, 6240, 5551, 6669, 1404, 2874, - 1519, 188, 5295, 893, 5419, 5611, 777, 1689, 5598, 4369, 7388, 7311, - 791, 2965, 1837, 642, 5166, 2303, 5336, 1338, 6855, 1526, 7598, 3408, - 402, 429, 5750, 3958, 3745, 3366, 4347, 4467, 124, 4718, 589, 3208, - 4518, 6885, 2258, 3900, 4231, 3770, 2815, 6386, 6609, 6537, 2589, 2247, - 2719, 4220, 3314, 4683, 4790, 5341, 3550, 4247, 1407, 5342, 4763, 6172, - 1586, 4100, 3693, 4113, 434, 1151, 5902, 3547, 451, 4895, 222, 5969, - 3794, 151, 6500, 6478, 226, 4139, 4914, 2378, 1476, 658, 7011, 6966, - 7445, 436, 6560, 2071, 4504, 5609, 6032, 5520, 1070, 2059, 1242, 179, - 2230, 1348, 6752, 6403, 5680, 5259, 3937, 17, 1168, 1168, 3310, 3310, - 5548, 5548, 4201, 4201, 2665, 2665, 5882, 5882, 6898, 6898, 1056, 1056, - 7277, 7277, 486, 486, 5762, 5762, 6149, 6149, 5102, 5102, 859, 859, - 5032, 5032, 2160, 2160, 2743, 2743, 921, 921, 3428, 3428, 6295, 6295, - 6160, 6160, 727, 727, 6217, 6217, 1533, 1533, 3865, 3865, 2233, 2233, - 4917, 4917, 4846, 4846, 4919, 4919, 3931, 3931, 6083, 6083, 1390, 1390, - 4798, 4798, 1681, 1681, 3588, 3588, 2224, 2224, 6331, 6331, 3145, 3145, - 5109, 5109, 1497, 1497, 7021, 7021, 2391, 2391, 4546, 4546, 1756, 1756, - 730, 730, 3989, 3989, 7308, 7308, 5506, 5506, 2732, 2732, 2113, 2113, - 5296, 5296, 4276, 4276, 4892, 4892, 4762, 4762, 194, 194, 3417, 3417, 2, - 2, 6766, 6766, 3850, 3850, 5255, 5255, 6515, 6515, 3456, 3456, 5983, - 5983, 1054, 1054, 1431, 1431, 1431, 1431, 2043, 2043, 2043, 2043, 4877, - 4877, 4877, 4877, 103, 103, 103, 103, 2956, 2956, 2956, 2956, 7167, - 7167, 7167, 7167, 6360, 6360, 6360, 6360, 1399, 1399, 1399, 1399, 5371, - 5371, 5371, 5371, 4528, 4528, 4528, 4528, 549, 549, 549, 549, 6146, - 6146, 6146, 6146, 2555, 2555, 2555, 2555, 2440, 2440, 2440, 2440, 2535, - 2535, 2535, 2535, 3909, 3909, 3909, 3909, 1881, 1881, 1881, 1881, 3555, - 3555, 3555, 3555, 3174, 3174, 3174, 3174, 7285, 7285, 7285, 7285, 1760, - 1760, 1760, 1760, 1305, 1305, 1305, 1305, 679, 679, 679, 679, 438, 438, - 438, 438, 7, 7, 7, 7, 638, 638, 638, 638, 5794, 5794, 5794, 5794, 6871, - 6871, 6871, 6871, 3600, 3600, 3600, 3600, 4415, 4415, 4415, 4415, 1738, - 1738, 1738, 1738, 3689, 3689, 3689, 3689, 5760, 5760, 5760, 5760, 5760, - 5760, 5760, 5760, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 7064, 4317, - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6198, 6385, - 6385, 6385, 6385, 6385, 6385, 6385, 6385, 2557, 2557, 2557, 2557, 2557, - 2557, 2557, 2557, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 2006, - 2006, 2006, 2006, 2006, 2006, 2006, 2006, 3975, 3975, 3975, 3975, 3975, - 3975, 3975, 3975, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 5688, 1599, - 1599, 1599, 1599, 1599, 1599, 1599, 1599, 5695, 5695, 5695, 5695, 5695, - 5695, 5695, 5695, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2237, 2088, - 2088, 2088, 2088, 2088, 2088, 2088, 2088, 4865, 4865, 4865, 4865, 4865, - 4865, 4865, 4865, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, 6267, - 6267, 6267, 6267, 6267, 6267, 6267, 6267, 1701, 1701, 1701, 1701, 1701, - 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 1701, 4805, - 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, 4805, - 4805, 4805, 4805, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2319, - 2319, 2319, 2319, 2319, 2319, 2319, 2319, 2495, 2495, 2495, 2495, 2495, - 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 2495, 6847, - 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, 6847, - 6847, 6847, 6847, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, 2250, - 2250, 2250, 2250, 2250, 2250, 2250, 2250, 7560, 7560, 7560, 7560, 7560, - 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 7560, 5487, - 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, 5487, - 5487, 5487, 5487, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, 5225, - 5225, 5225, 5225, 5225, 5225, 5225, 5225, 1100, 1100, 1100, 1100, 1100, - 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 1100, 3696, - 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, 3696, - 3696, 3696, 3696, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, 4056, - 4056, 4056, 4056, 4056, 4056, 4056, 4056, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 5776, - 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, 5776, - 5776, 5776, 5776, -} - -//go:noescape -func cpuidAmd64(cpuidParams *uint32) - -//go:noescape -func xgetbv0Amd64(xcrVec *uint32) - -//go:noescape -func nttAVX2(inout, zetas *uint16) - -//go:noescape -func invnttAVX2(inout, omegas *uint16) - -//go:noescape -func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) - -//go:noescape -func pointwiseAccK3AVX2(dst *uint16, a, b **uint16) - -//go:noescape -func pointwiseAccK4AVX2(dst *uint16, a, b **uint16) - -//go:noescape -func cbdEta4AVX2(dst *uint16, buf *byte) - -func supportsAVX2() bool { - // https://software.intel.com/en-us/articles/how-to-detect-new-instruction-support-in-the-4th-generation-intel-core-processor-family - const ( - osXsaveBit = 1 << 27 - avx2Bit = 1 << 5 - ) - - // Check to see if CPUID actually supports the leaf that indicates AVX2. - // CPUID.(EAX=0H, ECX=0H) >= 7 - regs := [4]uint32{0x00} - cpuidAmd64(®s[0]) - if regs[0] < 7 { - return false - } - - // Check to see if the OS knows how to save/restore XMM/YMM state. - // CPUID.(EAX=01H, ECX=0H):ECX.OSXSAVE[bit 27]==1 - regs = [4]uint32{0x01} - cpuidAmd64(®s[0]) - if regs[2]&osXsaveBit == 0 { - return false - } - xcrRegs := [2]uint32{} - xgetbv0Amd64(&xcrRegs[0]) - if xcrRegs[0]&6 != 6 { - return false - } - - // Check for AVX2 support. - // CPUID.(EAX=07H, ECX=0H):EBX.AVX2[bit 5]==1 - regs = [4]uint32{0x07} - cpuidAmd64(®s[0]) - return regs[1]&avx2Bit != 0 -} - -var implAVX2 = &hwaccelImpl{ - name: "AVX2", - nttFn: nttYMM, - invnttFn: invnttYMM, - pointwiseAccFn: pointwiseAccYMM, - cbdFn: cbdYMM, -} - -func nttYMM(p *[kyberN]uint16) { - nttAVX2(&p[0], &zetasExp[0]) -} - -func invnttYMM(a *[kyberN]uint16) { - invnttAVX2(&a[0], &zetasInvExp[0]) -} - -func pointwiseAccYMM(p *poly, a, b *polyVec) { - // Unlike the C code, a polyVec won't have the polys in contigious - // memory. So each assembly function takes vectors of pointers to - // each polyvec's polys. - // - // Kind of ugly, but it's the price to pay for flexibility... - - var aVec, bVec [4]*uint16 // k is in {2,3,4}. - for i := range a.vec { - aVec[i] = &a.vec[i].coeffs[0] - bVec[i] = &b.vec[i].coeffs[0] - } - - switch len(a.vec) { - case 2: - pointwiseAccK2AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) - case 3: - pointwiseAccK3AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) - case 4: - pointwiseAccK4AVX2(&p.coeffs[0], &aVec[0], &bVec[0]) - } -} - -func cbdYMM(p *poly, buf []byte, eta int) { - switch eta { - case 4: - cbdEta4AVX2(&p.coeffs[0], &buf[0]) - default: - cbdRef(p, buf, eta) - } -} - -func initHardwareAcceleration() { - if supportsAVX2() { - isHardwareAccelerated = true - hardwareAccelImpl = implAVX2 - } -} diff --git a/vendor/blitter.com/go/kyber/hwaccel_amd64.s b/vendor/blitter.com/go/kyber/hwaccel_amd64.s deleted file mode 100644 index a98dc72..0000000 --- a/vendor/blitter.com/go/kyber/hwaccel_amd64.s +++ /dev/null @@ -1,2749 +0,0 @@ -// +build !noasm,go1.10 -// hwaccel_amd64.s - AMD64 optimized routines. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -#include "textflag.h" - -// func cpuidAmd64(cpuidParams *uint32) -TEXT ·cpuidAmd64(SB), NOSPLIT, $0-8 - MOVQ cpuidParams+0(FP), R15 - MOVL 0(R15), AX - MOVL 8(R15), CX - CPUID - MOVL AX, 0(R15) - MOVL BX, 4(R15) - MOVL CX, 8(R15) - MOVL DX, 12(R15) - RET - -// func xgetbv0Amd64(xcrVec *uint32) -TEXT ·xgetbv0Amd64(SB), NOSPLIT, $0-8 - MOVQ xcrVec+0(FP), BX - XORL CX, CX - XGETBV - MOVL AX, 0(BX) - MOVL DX, 4(BX) - RET - -// Routines taken from the `avx2` implementation, converted to Go's assembly -// dialect. I do this in lieu of cutting myself to see if I still can feel -// pain. -// -// The conversion is mostly direct except: -// * Instead of aligned loads, unaligned loads are used, as there is no -// meaningful difference on modern Intel systems, and it's not immediately -// obvious to me how Go will align global data. -// * The polyvec_pointwise_acc family of routines take vectors of pointers -// due to the different internal memory layout of a polyvec. -// * The constants are renamed slightly. - -// Note: -// * These must be kept in sync with the values in params.go. -// Currently assumes Q = 7681, Q_INV = 57857. -// * Caution, Little endian so things will look different from avx2/consts.c. -DATA ·vpshufb_idx<>+0x00(SB)/8, $0x0504070601000302 -DATA ·vpshufb_idx<>+0x08(SB)/8, $0x0d0c0f0e09080b0a -DATA ·vpshufb_idx<>+0x10(SB)/8, $0x0504070601000302 -DATA ·vpshufb_idx<>+0x18(SB)/8, $0x0d0c0f0e09080b0a -GLOBL ·vpshufb_idx<>(SB), (NOPTR+RODATA), $32 - -DATA ·low_mask<>+0x00(SB)/8, $0x1fff1fff1fff1fff -DATA ·low_mask<>+0x08(SB)/8, $0x1fff1fff1fff1fff -DATA ·low_mask<>+0x10(SB)/8, $0x1fff1fff1fff1fff -DATA ·low_mask<>+0x18(SB)/8, $0x1fff1fff1fff1fff -GLOBL ·low_mask<>(SB), (NOPTR+RODATA), $32 - -DATA ·lowdword<>+0x00(SB)/8, $0x0000ffff0000ffff -DATA ·lowdword<>+0x08(SB)/8, $0x0000ffff0000ffff -DATA ·lowdword<>+0x10(SB)/8, $0x0000ffff0000ffff -DATA ·lowdword<>+0x18(SB)/8, $0x0000ffff0000ffff -GLOBL ·lowdword<>(SB), (NOPTR+RODATA), $32 - -DATA ·q_x16<>+0x00(SB)/8, $0x1e011e011e011e01 -DATA ·q_x16<>+0x08(SB)/8, $0x1e011e011e011e01 -DATA ·q_x16<>+0x10(SB)/8, $0x1e011e011e011e01 -DATA ·q_x16<>+0x18(SB)/8, $0x1e011e011e011e01 -GLOBL ·q_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·q2_x16<>+0x00(SB)/8, $0x3c023c023c023c02 -DATA ·q2_x16<>+0x08(SB)/8, $0x3c023c023c023c02 -DATA ·q2_x16<>+0x10(SB)/8, $0x3c023c023c023c02 -DATA ·q2_x16<>+0x18(SB)/8, $0x3c023c023c023c02 -GLOBL ·q2_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·qinv_x16<>+0x00(SB)/8, $0xe201e201e201e201 -DATA ·qinv_x16<>+0x08(SB)/8, $0xe201e201e201e201 -DATA ·qinv_x16<>+0x10(SB)/8, $0xe201e201e201e201 -DATA ·qinv_x16<>+0x18(SB)/8, $0xe201e201e201e201 -GLOBL ·qinv_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·f_x16<>+0x00(SB)/8, $0x0100010001000100 -DATA ·f_x16<>+0x08(SB)/8, $0x0100010001000100 -DATA ·f_x16<>+0x10(SB)/8, $0x0100010001000100 -DATA ·f_x16<>+0x18(SB)/8, $0x0100010001000100 -GLOBL ·f_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·v_x16<>+0x00(SB)/8, $0x4442444244424442 -DATA ·v_x16<>+0x08(SB)/8, $0x4442444244424442 -DATA ·v_x16<>+0x10(SB)/8, $0x4442444244424442 -DATA ·v_x16<>+0x18(SB)/8, $0x4442444244424442 -GLOBL ·v_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·montsq_x16<>+0x00(SB)/8, $0x15c115c115c115c1 -DATA ·montsq_x16<>+0x08(SB)/8, $0x15c115c115c115c1 -DATA ·montsq_x16<>+0x10(SB)/8, $0x15c115c115c115c1 -DATA ·montsq_x16<>+0x18(SB)/8, $0x15c115c115c115c1 -GLOBL ·montsq_x16<>(SB), (NOPTR+RODATA), $32 - -DATA ·mask11<>+0x00(SB)/8, $0x1111111111111111 -DATA ·mask11<>+0x08(SB)/8, $0x1111111111111111 -DATA ·mask11<>+0x10(SB)/8, $0x1111111111111111 -DATA ·mask11<>+0x18(SB)/8, $0x1111111111111111 -GLOBL ·mask11<>(SB), (NOPTR+RODATA), $32 - -DATA ·mask0f<>+0x00(SB)/8, $0x0f0f0f0f0f0f0f0f -DATA ·mask0f<>+0x08(SB)/8, $0x0f0f0f0f0f0f0f0f -DATA ·mask0f<>+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f -DATA ·mask0f<>+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f -GLOBL ·mask0f<>(SB), (NOPTR+RODATA), $32 - -// func nttAVX2(inout, zetas *uint16) -TEXT ·nttAVX2(SB), NOSPLIT, $0-16 - MOVQ inout+0(FP), DI - MOVQ zetas+8(FP), SI - - VMOVDQU ·qinv_x16<>(SB), Y0 - VMOVDQU ·q_x16<>(SB), Y1 - VMOVDQU ·low_mask<>(SB), Y2 - - // zetas - VMOVDQU (SI), Y3 - - // first round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 256(DI), Y8 - VMOVDQU 288(DI), Y9 - VMOVDQU 320(DI), Y10 - VMOVDQU 352(DI), Y11 - - // level 0 - // mul - VPMULLW Y3, Y8, Y12 - VPMULHW Y3, Y8, Y8 - VPMULLW Y3, Y9, Y13 - VPMULHW Y3, Y9, Y9 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y12 - VPSUBW Y13, Y9, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y8 - VPSUBW Y13, Y5, Y9 - VPSUBW Y14, Y6, Y10 - VPSUBW Y15, Y7, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y6, Y6 - VPADDW Y15, Y7, Y7 - - // store - VMOVDQU Y4, (DI) - VMOVDQU Y5, 32(DI) - VMOVDQU Y6, 64(DI) - VMOVDQU Y7, 96(DI) - VMOVDQU Y8, 256(DI) - VMOVDQU Y9, 288(DI) - VMOVDQU Y10, 320(DI) - VMOVDQU Y11, 352(DI) - - ADDQ $128, DI - - // second round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 256(DI), Y8 - VMOVDQU 288(DI), Y9 - VMOVDQU 320(DI), Y10 - VMOVDQU 352(DI), Y11 - - // level 0 - // mul - VPMULLW Y3, Y8, Y12 - VPMULHW Y3, Y8, Y8 - VPMULLW Y3, Y9, Y13 - VPMULHW Y3, Y9, Y9 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y12 - VPSUBW Y13, Y9, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y8 - VPSUBW Y13, Y5, Y9 - VPSUBW Y14, Y6, Y10 - VPSUBW Y15, Y7, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y6, Y6 - VPADDW Y15, Y7, Y7 - - // store - VMOVDQU Y4, (DI) - VMOVDQU Y5, 32(DI) - VMOVDQU Y6, 64(DI) - VMOVDQU Y7, 96(DI) - VMOVDQU Y8, 256(DI) - VMOVDQU Y9, 288(DI) - VMOVDQU Y10, 320(DI) - VMOVDQU Y11, 352(DI) - - SUBQ $128, DI - - // first round - // zetas - VMOVDQU 32(SI), Y3 - - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 128(DI), Y8 - VMOVDQU 160(DI), Y9 - VMOVDQU 192(DI), Y10 - VMOVDQU 224(DI), Y11 - - // level 1 - // mul - VPMULLW Y3, Y8, Y12 - VPMULHW Y3, Y8, Y8 - VPMULLW Y3, Y9, Y13 - VPMULHW Y3, Y9, Y9 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y12 - VPSUBW Y13, Y9, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y8 - VPSUBW Y13, Y5, Y9 - VPSUBW Y14, Y6, Y10 - VPSUBW Y15, Y7, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y6, Y6 - VPADDW Y15, Y7, Y7 - - // level 2 - // zetas - VMOVDQU 96(SI), Y15 - VMOVDQU 128(SI), Y3 - - // mul - VPMULLW Y15, Y6, Y12 - VPMULHW Y15, Y6, Y6 - VPMULLW Y15, Y7, Y13 - VPMULHW Y15, Y7, Y7 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y6, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y6 - VPSUBW Y13, Y5, Y7 - VPSUBW Y14, Y8, Y10 - VPSUBW Y15, Y9, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y8, Y8 - VPADDW Y15, Y9, Y9 - - // level 3 - // zetas - VMOVDQU 224(SI), Y13 - VMOVDQU 256(SI), Y14 - VMOVDQU 288(SI), Y15 - VMOVDQU 320(SI), Y3 - - // mul - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - VPSUBW Y15, Y11, Y15 - - // reduce 2 - VPSRAW $13, Y4, Y5 - VPSRAW $13, Y6, Y7 - VPSRAW $13, Y8, Y9 - VPSRAW $13, Y10, Y11 - VPAND Y2, Y4, Y4 - VPAND Y2, Y6, Y6 - VPAND Y2, Y8, Y8 - VPAND Y2, Y10, Y10 - VPSUBW Y5, Y4, Y4 - VPSUBW Y7, Y6, Y6 - VPSUBW Y9, Y8, Y8 - VPSUBW Y11, Y10, Y10 - VPSLLW $9, Y5, Y5 - VPSLLW $9, Y7, Y7 - VPSLLW $9, Y9, Y9 - VPSLLW $9, Y11, Y11 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - VPADDW Y11, Y10, Y10 - - // update - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPSUBW Y15, Y10, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - VPADDW Y15, Y10, Y10 - - // level 4 - // zetas - VMOVDQU 480(SI), Y12 - VMOVDQU 512(SI), Y13 - VMOVDQU 544(SI), Y14 - VMOVDQU 576(SI), Y15 - - // shuffle - VPERM2I128 $0x02, Y4, Y5, Y3 - VPERM2I128 $0x13, Y4, Y5, Y4 - VPERM2I128 $0x02, Y6, Y7, Y5 - VPERM2I128 $0x13, Y6, Y7, Y6 - VPERM2I128 $0x02, Y8, Y9, Y7 - VPERM2I128 $0x13, Y8, Y9, Y8 - VPERM2I128 $0x02, Y10, Y11, Y9 - VPERM2I128 $0x13, Y10, Y11, Y10 - - // mul - VPMULLW Y12, Y4, Y11 - VPMULHW Y12, Y4, Y4 - VPMULLW Y13, Y6, Y12 - VPMULHW Y13, Y6, Y6 - VPMULLW Y14, Y8, Y13 - VPMULHW Y14, Y8, Y8 - VPMULLW Y15, Y10, Y14 - VPMULHW Y15, Y10, Y10 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y4, Y11 - VPSUBW Y12, Y6, Y12 - VPSUBW Y13, Y8, Y13 - VPSUBW Y14, Y10, Y14 - - // update - VPSUBW Y11, Y3, Y4 - VPSUBW Y12, Y5, Y6 - VPSUBW Y13, Y7, Y8 - VPSUBW Y14, Y9, Y10 - VPADDW Y11, Y3, Y3 - VPADDW Y12, Y5, Y5 - VPADDW Y13, Y7, Y7 - VPADDW Y14, Y9, Y9 - - // level 5 - // zetas - VMOVDQU 736(SI), Y12 - VMOVDQU 768(SI), Y13 - VMOVDQU 800(SI), Y14 - VMOVDQU 832(SI), Y15 - - // shuffle - VSHUFPD $0x00, Y4, Y3, Y11 - VSHUFPD $0x0F, Y4, Y3, Y3 - VSHUFPD $0x00, Y6, Y5, Y4 - VSHUFPD $0x0F, Y6, Y5, Y5 - VSHUFPD $0x00, Y8, Y7, Y6 - VSHUFPD $0x0F, Y8, Y7, Y7 - VSHUFPD $0x00, Y10, Y9, Y8 - VSHUFPD $0x0F, Y10, Y9, Y9 - - // mul - VPMULLW Y12, Y3, Y10 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y10, Y10 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y10, Y10 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y10, Y3, Y10 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // update - VPSUBW Y10, Y11, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y10, Y11, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // level 6 - // shuffle - VPSHUFD $0xB1, Y10, Y12 - VPSHUFD $0xB1, Y3, Y13 - VPSHUFD $0xB1, Y4, Y14 - VPSHUFD $0xB1, Y5, Y15 - VPBLENDD $0x55, Y10, Y13, Y10 - VPBLENDD $0xAA, Y3, Y12, Y3 - VPBLENDD $0x55, Y4, Y15, Y4 - VPBLENDD $0xAA, Y5, Y14, Y5 - VPSHUFD $0xB1, Y6, Y12 - VPSHUFD $0xB1, Y7, Y13 - VPSHUFD $0xB1, Y8, Y14 - VPSHUFD $0xB1, Y9, Y15 - VPBLENDD $0x55, Y6, Y13, Y6 - VPBLENDD $0xAA, Y7, Y12, Y7 - VPBLENDD $0x55, Y8, Y15, Y8 - VPBLENDD $0xAA, Y9, Y14, Y9 - - // zetas - VMOVDQU 992(SI), Y12 - VMOVDQU 1024(SI), Y13 - VMOVDQU 1056(SI), Y14 - VMOVDQU 1088(SI), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y11 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // reduce 2 - VPSRAW $13, Y10, Y3 - VPSRAW $13, Y4, Y5 - VPSRAW $13, Y6, Y7 - VPSRAW $13, Y8, Y9 - VPAND Y2, Y10, Y10 - VPAND Y2, Y4, Y4 - VPAND Y2, Y6, Y6 - VPAND Y2, Y8, Y8 - VPSUBW Y3, Y10, Y10 - VPSUBW Y5, Y4, Y4 - VPSUBW Y7, Y6, Y6 - VPSUBW Y9, Y8, Y8 - VPSLLW $9, Y3, Y3 - VPSLLW $9, Y5, Y5 - VPSLLW $9, Y7, Y7 - VPSLLW $9, Y9, Y9 - VPADDW Y3, Y10, Y10 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - - // update - VPSUBW Y11, Y10, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y11, Y10, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // level 7 - // shuffle - VMOVDQU ·vpshufb_idx<>(SB), Y15 - VPSHUFB Y15, Y10, Y11 - VPSHUFB Y15, Y3, Y12 - VPSHUFB Y15, Y4, Y13 - VPSHUFB Y15, Y5, Y14 - VPBLENDW $0x55, Y10, Y12, Y10 - VPBLENDW $0xAA, Y3, Y11, Y3 - VPBLENDW $0x55, Y4, Y14, Y4 - VPBLENDW $0xAA, Y5, Y13, Y5 - VPSHUFB Y15, Y6, Y11 - VPSHUFB Y15, Y7, Y12 - VPSHUFB Y15, Y8, Y13 - VPSHUFB Y15, Y9, Y14 - VPBLENDW $0x55, Y6, Y12, Y6 - VPBLENDW $0xAA, Y7, Y11, Y7 - VPBLENDW $0x55, Y8, Y14, Y8 - VPBLENDW $0xAA, Y9, Y13, Y9 - - // zetas - VMOVDQU 1248(SI), Y12 - VMOVDQU 1280(SI), Y13 - VMOVDQU 1312(SI), Y14 - VMOVDQU 1344(SI), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y11 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // reduce 3 - VMOVDQU ·q2_x16<>(SB), Y15 - VPSRAW $15, Y10, Y3 - VPSRAW $15, Y4, Y5 - VPSRAW $15, Y6, Y7 - VPSRAW $15, Y8, Y9 - VPAND Y15, Y3, Y3 - VPAND Y15, Y5, Y5 - VPAND Y15, Y7, Y7 - VPAND Y15, Y9, Y9 - VPADDW Y1, Y10, Y10 - VPADDW Y1, Y4, Y4 - VPADDW Y1, Y6, Y6 - VPADDW Y1, Y8, Y8 - VPADDW Y3, Y10, Y10 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - - // update - VPSUBW Y11, Y10, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y11, Y10, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // reorder - VPUNPCKLWD Y3, Y10, Y12 - VPUNPCKHWD Y3, Y10, Y13 - VPUNPCKLWD Y5, Y4, Y14 - VPUNPCKHWD Y5, Y4, Y15 - VPUNPCKLWD Y7, Y6, Y3 - VPUNPCKHWD Y7, Y6, Y4 - VPUNPCKLWD Y9, Y8, Y5 - VPUNPCKHWD Y9, Y8, Y6 - VPERM2I128 $0x20, Y13, Y12, Y11 - VPERM2I128 $0x31, Y13, Y12, Y12 - VPERM2I128 $0x20, Y15, Y14, Y13 - VPERM2I128 $0x31, Y15, Y14, Y14 - VPERM2I128 $0x20, Y4, Y3, Y15 - VPERM2I128 $0x31, Y4, Y3, Y3 - VPERM2I128 $0x20, Y6, Y5, Y4 - VPERM2I128 $0x31, Y6, Y5, Y5 - - // store - VMOVDQU Y11, (DI) - VMOVDQU Y12, 32(DI) - VMOVDQU Y13, 64(DI) - VMOVDQU Y14, 96(DI) - VMOVDQU Y15, 128(DI) - VMOVDQU Y3, 160(DI) - VMOVDQU Y4, 192(DI) - VMOVDQU Y5, 224(DI) - - ADDQ $256, DI - - // second round - // zetas - VMOVDQU 64(SI), Y3 - - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 128(DI), Y8 - VMOVDQU 160(DI), Y9 - VMOVDQU 192(DI), Y10 - VMOVDQU 224(DI), Y11 - - // level 1 - // mul - VPMULLW Y3, Y8, Y12 - VPMULHW Y3, Y8, Y8 - VPMULLW Y3, Y9, Y13 - VPMULHW Y3, Y9, Y9 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y12 - VPSUBW Y13, Y9, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y8 - VPSUBW Y13, Y5, Y9 - VPSUBW Y14, Y6, Y10 - VPSUBW Y15, Y7, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y6, Y6 - VPADDW Y15, Y7, Y7 - - // level 2 - // zetas - VMOVDQU 160(SI), Y15 - VMOVDQU 192(SI), Y3 - - // mul - VPMULLW Y15, Y6, Y12 - VPMULHW Y15, Y6, Y6 - VPMULLW Y15, Y7, Y13 - VPMULHW Y15, Y7, Y7 - VPMULLW Y3, Y10, Y14 - VPMULHW Y3, Y10, Y10 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y6, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y10, Y14 - VPSUBW Y15, Y11, Y15 - - // update - VPSUBW Y12, Y4, Y6 - VPSUBW Y13, Y5, Y7 - VPSUBW Y14, Y8, Y10 - VPSUBW Y15, Y9, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y5, Y5 - VPADDW Y14, Y8, Y8 - VPADDW Y15, Y9, Y9 - - // level 3 - // zetas - VMOVDQU 352(SI), Y13 - VMOVDQU 384(SI), Y14 - VMOVDQU 416(SI), Y15 - VMOVDQU 448(SI), Y3 - - // mul - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - VPSUBW Y15, Y11, Y15 - - // reduce 2 - VPSRAW $13, Y4, Y5 - VPSRAW $13, Y6, Y7 - VPSRAW $13, Y8, Y9 - VPSRAW $13, Y10, Y11 - VPAND Y2, Y4, Y4 - VPAND Y2, Y6, Y6 - VPAND Y2, Y8, Y8 - VPAND Y2, Y10, Y10 - VPSUBW Y5, Y4, Y4 - VPSUBW Y7, Y6, Y6 - VPSUBW Y9, Y8, Y8 - VPSUBW Y11, Y10, Y10 - VPSLLW $9, Y5, Y5 - VPSLLW $9, Y7, Y7 - VPSLLW $9, Y9, Y9 - VPSLLW $9, Y11, Y11 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - VPADDW Y11, Y10, Y10 - - // update - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPSUBW Y15, Y10, Y11 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - VPADDW Y15, Y10, Y10 - - // level 4 - // zetas - VMOVDQU 608(SI), Y12 - VMOVDQU 640(SI), Y13 - VMOVDQU 672(SI), Y14 - VMOVDQU 704(SI), Y15 - - // shuffle - VPERM2I128 $0x02, Y4, Y5, Y3 - VPERM2I128 $0x13, Y4, Y5, Y4 - VPERM2I128 $0x02, Y6, Y7, Y5 - VPERM2I128 $0x13, Y6, Y7, Y6 - VPERM2I128 $0x02, Y8, Y9, Y7 - VPERM2I128 $0x13, Y8, Y9, Y8 - VPERM2I128 $0x02, Y10, Y11, Y9 - VPERM2I128 $0x13, Y10, Y11, Y10 - - // mul - VPMULLW Y12, Y4, Y11 - VPMULHW Y12, Y4, Y4 - VPMULLW Y13, Y6, Y12 - VPMULHW Y13, Y6, Y6 - VPMULLW Y14, Y8, Y13 - VPMULHW Y14, Y8, Y8 - VPMULLW Y15, Y10, Y14 - VPMULHW Y15, Y10, Y10 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y4, Y11 - VPSUBW Y12, Y6, Y12 - VPSUBW Y13, Y8, Y13 - VPSUBW Y14, Y10, Y14 - - // update - VPSUBW Y11, Y3, Y4 - VPSUBW Y12, Y5, Y6 - VPSUBW Y13, Y7, Y8 - VPSUBW Y14, Y9, Y10 - VPADDW Y11, Y3, Y3 - VPADDW Y12, Y5, Y5 - VPADDW Y13, Y7, Y7 - VPADDW Y14, Y9, Y9 - - // level 5 - // zetas - VMOVDQU 864(SI), Y12 - VMOVDQU 896(SI), Y13 - VMOVDQU 928(SI), Y14 - VMOVDQU 960(SI), Y15 - - // shuffle - VSHUFPD $0x00, Y4, Y3, Y11 - VSHUFPD $0x0F, Y4, Y3, Y3 - VSHUFPD $0x00, Y6, Y5, Y4 - VSHUFPD $0x0F, Y6, Y5, Y5 - VSHUFPD $0x00, Y8, Y7, Y6 - VSHUFPD $0x0F, Y8, Y7, Y7 - VSHUFPD $0x00, Y10, Y9, Y8 - VSHUFPD $0x0F, Y10, Y9, Y9 - - // mul - VPMULLW Y12, Y3, Y10 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y10, Y10 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y10, Y10 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y10, Y3, Y10 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // update - VPSUBW Y10, Y11, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y10, Y11, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // level 6 - // shuffle - VPSHUFD $0xB1, Y10, Y12 - VPSHUFD $0xB1, Y3, Y13 - VPSHUFD $0xB1, Y4, Y14 - VPSHUFD $0xB1, Y5, Y15 - VPBLENDD $0x55, Y10, Y13, Y10 - VPBLENDD $0xAA, Y3, Y12, Y3 - VPBLENDD $0x55, Y4, Y15, Y4 - VPBLENDD $0xAA, Y5, Y14, Y5 - VPSHUFD $0xB1, Y6, Y12 - VPSHUFD $0xB1, Y7, Y13 - VPSHUFD $0xB1, Y8, Y14 - VPSHUFD $0xB1, Y9, Y15 - VPBLENDD $0x55, Y6, Y13, Y6 - VPBLENDD $0xAA, Y7, Y12, Y7 - VPBLENDD $0x55, Y8, Y15, Y8 - VPBLENDD $0xAA, Y9, Y14, Y9 - - // zetas - VMOVDQU 1120(SI), Y12 - VMOVDQU 1152(SI), Y13 - VMOVDQU 1184(SI), Y14 - VMOVDQU 1216(SI), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y11 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // reduce 2 - VPSRAW $13, Y10, Y3 - VPSRAW $13, Y4, Y5 - VPSRAW $13, Y6, Y7 - VPSRAW $13, Y8, Y9 - VPAND Y2, Y10, Y10 - VPAND Y2, Y4, Y4 - VPAND Y2, Y6, Y6 - VPAND Y2, Y8, Y8 - VPSUBW Y3, Y10, Y10 - VPSUBW Y5, Y4, Y4 - VPSUBW Y7, Y6, Y6 - VPSUBW Y9, Y8, Y8 - VPSLLW $9, Y3, Y3 - VPSLLW $9, Y5, Y5 - VPSLLW $9, Y7, Y7 - VPSLLW $9, Y9, Y9 - VPADDW Y3, Y10, Y10 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - - // update - VPSUBW Y11, Y10, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y11, Y10, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // level 7 - // shuffle - VMOVDQU ·vpshufb_idx<>(SB), Y15 - VPSHUFB Y15, Y10, Y11 - VPSHUFB Y15, Y3, Y12 - VPSHUFB Y15, Y4, Y13 - VPSHUFB Y15, Y5, Y14 - VPBLENDW $0x55, Y10, Y12, Y10 - VPBLENDW $0xAA, Y3, Y11, Y3 - VPBLENDW $0x55, Y4, Y14, Y4 - VPBLENDW $0xAA, Y5, Y13, Y5 - VPSHUFB Y15, Y6, Y11 - VPSHUFB Y15, Y7, Y12 - VPSHUFB Y15, Y8, Y13 - VPSHUFB Y15, Y9, Y14 - VPBLENDW $0x55, Y6, Y12, Y6 - VPBLENDW $0xAA, Y7, Y11, Y7 - VPBLENDW $0x55, Y8, Y14, Y8 - VPBLENDW $0xAA, Y9, Y13, Y9 - - // zetas - VMOVDQU 1376(SI), Y12 - VMOVDQU 1408(SI), Y13 - VMOVDQU 1440(SI), Y14 - VMOVDQU 1472(SI), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y11 - VPSUBW Y12, Y5, Y12 - VPSUBW Y13, Y7, Y13 - VPSUBW Y14, Y9, Y14 - - // reduce 3 - VMOVDQU ·q2_x16<>(SB), Y15 - VPSRAW $15, Y10, Y3 - VPSRAW $15, Y4, Y5 - VPSRAW $15, Y6, Y7 - VPSRAW $15, Y8, Y9 - VPAND Y15, Y3, Y3 - VPAND Y15, Y5, Y5 - VPAND Y15, Y7, Y7 - VPAND Y15, Y9, Y9 - VPADDW Y1, Y10, Y10 - VPADDW Y1, Y4, Y4 - VPADDW Y1, Y6, Y6 - VPADDW Y1, Y8, Y8 - VPADDW Y3, Y10, Y10 - VPADDW Y5, Y4, Y4 - VPADDW Y7, Y6, Y6 - VPADDW Y9, Y8, Y8 - - // update - VPSUBW Y11, Y10, Y3 - VPSUBW Y12, Y4, Y5 - VPSUBW Y13, Y6, Y7 - VPSUBW Y14, Y8, Y9 - VPADDW Y11, Y10, Y10 - VPADDW Y12, Y4, Y4 - VPADDW Y13, Y6, Y6 - VPADDW Y14, Y8, Y8 - - // reorder - VPUNPCKLWD Y3, Y10, Y12 - VPUNPCKHWD Y3, Y10, Y13 - VPUNPCKLWD Y5, Y4, Y14 - VPUNPCKHWD Y5, Y4, Y15 - VPUNPCKLWD Y7, Y6, Y3 - VPUNPCKHWD Y7, Y6, Y4 - VPUNPCKLWD Y9, Y8, Y5 - VPUNPCKHWD Y9, Y8, Y6 - VPERM2I128 $0x20, Y13, Y12, Y11 - VPERM2I128 $0x31, Y13, Y12, Y12 - VPERM2I128 $0x20, Y15, Y14, Y13 - VPERM2I128 $0x31, Y15, Y14, Y14 - VPERM2I128 $0x20, Y4, Y3, Y15 - VPERM2I128 $0x31, Y4, Y3, Y3 - VPERM2I128 $0x20, Y6, Y5, Y4 - VPERM2I128 $0x31, Y6, Y5, Y5 - - // store - VMOVDQU Y11, (DI) - VMOVDQU Y12, 32(DI) - VMOVDQU Y13, 64(DI) - VMOVDQU Y14, 96(DI) - VMOVDQU Y15, 128(DI) - VMOVDQU Y3, 160(DI) - VMOVDQU Y4, 192(DI) - VMOVDQU Y5, 224(DI) - - VZEROUPPER - RET - -// Go 1.10's VPERMQ support expects the imm8 to be a `int8`, instead of a -// `uint8`. While this is fixed in master, use the signed representation -// for now till it's reasonable to expect versions with the fix to be widely -// available. -// -// See: https://github.com/golang/go/issues/24378 -#define invntt_VPERMQ_IDX $-40 // $0xd8 - -// func invnttAVX2(inout, omegas *uint16) -TEXT ·invnttAVX2(SB), NOSPLIT, $0-16 - MOVQ inout+0(FP), DI - MOVQ omegas+8(FP), SI - - VMOVDQU ·qinv_x16<>(SB), Y0 - VMOVDQU ·q_x16<>(SB), Y1 - VMOVDQU ·v_x16<>(SB), Y2 - - MOVQ SI, R8 - - // first round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 128(DI), Y8 - VMOVDQU 160(DI), Y9 - VMOVDQU 192(DI), Y10 - VMOVDQU 224(DI), Y11 - - // reorder - VMOVDQU ·lowdword<>(SB), Y3 - VPAND Y3, Y4, Y12 - VPAND Y3, Y5, Y13 - VPAND Y3, Y6, Y14 - VPAND Y3, Y7, Y15 - VPSRLD $16, Y4, Y4 - VPSRLD $16, Y5, Y5 - VPSRLD $16, Y6, Y6 - VPSRLD $16, Y7, Y7 - VPACKUSDW Y5, Y4, Y5 - VPACKUSDW Y13, Y12, Y4 - VPACKUSDW Y7, Y6, Y7 - VPACKUSDW Y15, Y14, Y6 - VPERMQ invntt_VPERMQ_IDX, Y4, Y4 - VPERMQ invntt_VPERMQ_IDX, Y5, Y5 - VPERMQ invntt_VPERMQ_IDX, Y6, Y6 - VPERMQ invntt_VPERMQ_IDX, Y7, Y7 - VPAND Y3, Y8, Y12 - VPAND Y3, Y9, Y13 - VPAND Y3, Y10, Y14 - VPAND Y3, Y11, Y15 - VPSRLD $16, Y8, Y8 - VPSRLD $16, Y9, Y9 - VPSRLD $16, Y10, Y10 - VPSRLD $16, Y11, Y11 - VPACKUSDW Y9, Y8, Y9 - VPACKUSDW Y13, Y12, Y8 - VPACKUSDW Y11, Y10, Y11 - VPACKUSDW Y15, Y14, Y10 - VPERMQ invntt_VPERMQ_IDX, Y8, Y8 - VPERMQ invntt_VPERMQ_IDX, Y9, Y9 - VPERMQ invntt_VPERMQ_IDX, Y10, Y10 - VPERMQ invntt_VPERMQ_IDX, Y11, Y11 - - // level 0 - // update - VPSUBW Y5, Y4, Y12 - VPSUBW Y7, Y6, Y13 - VPSUBW Y9, Y8, Y14 - VPSUBW Y11, Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - - // zetas - VMOVDQU (R8), Y7 - VMOVDQU 32(R8), Y9 - VMOVDQU 64(R8), Y11 - VMOVDQU 96(R8), Y3 - - // mul - VPMULLW Y7, Y12, Y5 - VPMULHW Y7, Y12, Y12 - VPMULLW Y9, Y13, Y7 - VPMULHW Y9, Y13, Y13 - VPMULLW Y11, Y14, Y9 - VPMULHW Y11, Y14, Y14 - VPMULLW Y3, Y15, Y11 - VPMULHW Y3, Y15, Y15 - - // reduce - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y9, Y9 - VPMULLW Y0, Y11, Y11 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y9, Y9 - VPMULHW Y1, Y11, Y11 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // level 1 - // shuffle - VMOVDQU ·vpshufb_idx<>(SB), Y3 - VPSHUFB Y3, Y4, Y12 - VPSHUFB Y3, Y5, Y13 - VPSHUFB Y3, Y6, Y14 - VPSHUFB Y3, Y7, Y15 - VPBLENDW $0x55, Y4, Y13, Y4 - VPBLENDW $0xAA, Y5, Y12, Y5 - VPBLENDW $0x55, Y6, Y15, Y6 - VPBLENDW $0xAA, Y7, Y14, Y7 - VPSHUFB Y3, Y8, Y12 - VPSHUFB Y3, Y9, Y13 - VPSHUFB Y3, Y10, Y14 - VPSHUFB Y3, Y11, Y15 - VPBLENDW $0x55, Y8, Y13, Y8 - VPBLENDW $0xAA, Y9, Y12, Y9 - VPBLENDW $0x55, Y10, Y15, Y10 - VPBLENDW $0xAA, Y11, Y14, Y11 - - // update - VPSUBW Y5, Y4, Y12 - VPSUBW Y7, Y6, Y13 - VPSUBW Y9, Y8, Y14 - VPSUBW Y11, Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - - // zetas - VMOVDQU 256(R8), Y7 - VMOVDQU 288(R8), Y9 - VMOVDQU 320(R8), Y11 - VMOVDQU 352(R8), Y3 - - // mul - VPMULLW Y7, Y12, Y5 - VPMULHW Y7, Y12, Y12 - VPMULLW Y9, Y13, Y7 - VPMULHW Y9, Y13, Y13 - VPMULLW Y11, Y14, Y9 - VPMULHW Y11, Y14, Y14 - VPMULLW Y3, Y15, Y11 - VPMULHW Y3, Y15, Y15 - - // reduce - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y9, Y9 - VPMULLW Y0, Y11, Y11 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y9, Y9 - VPMULHW Y1, Y11, Y11 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // reduce 2 - VPMULHW Y2, Y4, Y12 - VPMULHW Y2, Y6, Y13 - VPMULHW Y2, Y8, Y14 - VPMULHW Y2, Y10, Y15 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPSRAW $11, Y14, Y14 - VPSRAW $11, Y15, Y15 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPMULLW Y1, Y14, Y14 - VPMULLW Y1, Y15, Y15 - VPSUBW Y12, Y4, Y4 - VPSUBW Y13, Y6, Y6 - VPSUBW Y14, Y8, Y8 - VPSUBW Y15, Y10, Y10 - - // level 2 - // shuffle - VPSHUFD $0xB1, Y4, Y12 - VPSHUFD $0xB1, Y5, Y13 - VPSHUFD $0xB1, Y6, Y14 - VPSHUFD $0xB1, Y7, Y15 - VPBLENDD $0x55, Y4, Y13, Y4 - VPBLENDD $0xAA, Y5, Y12, Y5 - VPBLENDD $0x55, Y6, Y15, Y6 - VPBLENDD $0xAA, Y7, Y14, Y7 - VPSHUFD $0xB1, Y8, Y12 - VPSHUFD $0xB1, Y9, Y13 - VPSHUFD $0xB1, Y10, Y14 - VPSHUFD $0xB1, Y11, Y15 - VPBLENDD $0x55, Y8, Y13, Y8 - VPBLENDD $0xAA, Y9, Y12, Y9 - VPBLENDD $0x55, Y10, Y15, Y10 - VPBLENDD $0xAA, Y11, Y14, Y11 - - // update - VPSUBW Y5, Y4, Y12 - VPSUBW Y7, Y6, Y13 - VPSUBW Y9, Y8, Y14 - VPSUBW Y11, Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - - // zetas - VMOVDQU 512(R8), Y7 - VMOVDQU 544(R8), Y9 - VMOVDQU 576(R8), Y11 - VMOVDQU 608(R8), Y3 - - // mul - VPMULLW Y7, Y12, Y5 - VPMULHW Y7, Y12, Y12 - VPMULLW Y9, Y13, Y7 - VPMULHW Y9, Y13, Y13 - VPMULLW Y11, Y14, Y9 - VPMULHW Y11, Y14, Y14 - VPMULLW Y3, Y15, Y11 - VPMULHW Y3, Y15, Y15 - - // reduce - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y9, Y9 - VPMULLW Y0, Y11, Y11 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y9, Y9 - VPMULHW Y1, Y11, Y11 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // level 3 - // shuffle - VSHUFPD $0x00, Y5, Y4, Y3 - VSHUFPD $0x0F, Y5, Y4, Y4 - VSHUFPD $0x00, Y7, Y6, Y5 - VSHUFPD $0x0F, Y7, Y6, Y6 - VSHUFPD $0x00, Y9, Y8, Y7 - VSHUFPD $0x0F, Y9, Y8, Y8 - VSHUFPD $0x00, Y11, Y10, Y9 - VSHUFPD $0x0F, Y11, Y10, Y10 - - // update - VPSUBW Y4, Y3, Y12 - VPSUBW Y6, Y5, Y13 - VPSUBW Y8, Y7, Y14 - VPSUBW Y10, Y9, Y15 - VPADDW Y3, Y4, Y3 - VPADDW Y5, Y6, Y5 - VPADDW Y7, Y8, Y7 - VPADDW Y9, Y10, Y9 - - // zetas - VMOVDQU 768(R8), Y6 - VMOVDQU 800(R8), Y8 - VMOVDQU 832(R8), Y10 - VMOVDQU 864(R8), Y11 - - // mul - VPMULLW Y6, Y12, Y4 - VPMULHW Y6, Y12, Y12 - VPMULLW Y8, Y13, Y6 - VPMULHW Y8, Y13, Y13 - VPMULLW Y10, Y14, Y8 - VPMULHW Y10, Y14, Y14 - VPMULLW Y11, Y15, Y10 - VPMULHW Y11, Y15, Y15 - - // reduce - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y8, Y8 - VPMULLW Y0, Y10, Y10 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y8, Y8 - VPMULHW Y1, Y10, Y10 - VPSUBW Y4, Y12, Y4 - VPSUBW Y6, Y13, Y6 - VPSUBW Y8, Y14, Y8 - VPSUBW Y10, Y15, Y10 - - // reduce 2 - VPMULHW Y2, Y3, Y12 - VPMULHW Y2, Y5, Y13 - VPMULHW Y2, Y7, Y14 - VPMULHW Y2, Y9, Y15 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPSRAW $11, Y14, Y14 - VPSRAW $11, Y15, Y15 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPMULLW Y1, Y14, Y14 - VPMULLW Y1, Y15, Y15 - VPSUBW Y12, Y3, Y3 - VPSUBW Y13, Y5, Y5 - VPSUBW Y14, Y7, Y7 - VPSUBW Y15, Y9, Y9 - - // level 4 - // shuffle - VPERM2I128 $0x02, Y3, Y4, Y11 - VPERM2I128 $0x13, Y3, Y4, Y3 - VPERM2I128 $0x02, Y5, Y6, Y4 - VPERM2I128 $0x13, Y5, Y6, Y5 - VPERM2I128 $0x02, Y7, Y8, Y6 - VPERM2I128 $0x13, Y7, Y8, Y7 - VPERM2I128 $0x02, Y9, Y10, Y8 - VPERM2I128 $0x13, Y9, Y10, Y9 - - // update - VMOVDQA Y11, Y12 - VMOVDQA Y4, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y8, Y15 - VPADDW Y11, Y3, Y10 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPSUBW Y3, Y12, Y3 - VPSUBW Y5, Y13, Y5 - VPSUBW Y7, Y14, Y7 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1024(R8), Y12 - VMOVDQU 1056(R8), Y13 - VMOVDQU 1088(R8), Y14 - VMOVDQU 1120(R8), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y3 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y7, Y7 - VPSUBW Y14, Y9, Y9 - - // level 5 - // update - VMOVDQA Y10, Y12 - VMOVDQA Y3, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y7, Y15 - VPADDW Y10, Y4, Y10 - VPADDW Y3, Y5, Y3 - VPADDW Y6, Y8, Y6 - VPADDW Y7, Y9, Y7 - VPSUBW Y4, Y12, Y4 - VPSUBW Y5, Y13, Y5 - VPSUBW Y8, Y14, Y8 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1280(SI), Y14 - VMOVDQU 1312(SI), Y15 - - // mul - VPMULLW Y14, Y4, Y11 - VPMULLW Y14, Y5, Y12 - VPMULLW Y15, Y8, Y13 - VPMULHW Y14, Y4, Y4 - VPMULHW Y14, Y5, Y5 - VPMULHW Y15, Y8, Y8 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y4, Y4 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y8, Y8 - VPSUBW Y14, Y9, Y9 - - // reduce 2 - VPMULHW Y2, Y10, Y12 - VPMULHW Y2, Y6, Y13 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPSUBW Y12, Y10, Y10 - VPSUBW Y13, Y6, Y6 - - // level 6 - // update - VMOVDQA Y10, Y12 - VMOVDQA Y3, Y13 - VMOVDQA Y4, Y14 - VMOVDQA Y5, Y15 - VPADDW Y10, Y6, Y10 - VPADDW Y3, Y7, Y3 - VPADDW Y4, Y8, Y4 - VPADDW Y5, Y9, Y5 - VPSUBW Y6, Y12, Y6 - VPSUBW Y7, Y13, Y7 - VPSUBW Y8, Y14, Y8 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1408(SI), Y15 - - // mul - VPMULLW Y15, Y6, Y11 - VPMULLW Y15, Y7, Y12 - VPMULLW Y15, Y8, Y13 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y6, Y6 - VPMULHW Y15, Y7, Y7 - VPMULHW Y15, Y8, Y8 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y6, Y6 - VPSUBW Y12, Y7, Y7 - VPSUBW Y13, Y8, Y8 - VPSUBW Y14, Y9, Y9 - - // reduce 2 - VPMULHW Y2, Y3, Y12 - VPSRAW $11, Y12, Y12 - VPMULLW Y1, Y12, Y12 - VPSUBW Y12, Y3, Y3 - - // store - VMOVDQU Y10, (DI) - VMOVDQU Y3, 32(DI) - VMOVDQU Y4, 64(DI) - VMOVDQU Y5, 96(DI) - VMOVDQU Y6, 128(DI) - VMOVDQU Y7, 160(DI) - VMOVDQU Y8, 192(DI) - VMOVDQU Y9, 224(DI) - - ADDQ $256, DI - ADDQ $128, R8 - - // second round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 128(DI), Y8 - VMOVDQU 160(DI), Y9 - VMOVDQU 192(DI), Y10 - VMOVDQU 224(DI), Y11 - - // reorder - VMOVDQU ·lowdword<>(SB), Y3 - VPAND Y3, Y4, Y12 - VPAND Y3, Y5, Y13 - VPAND Y3, Y6, Y14 - VPAND Y3, Y7, Y15 - VPSRLD $16, Y4, Y4 - VPSRLD $16, Y5, Y5 - VPSRLD $16, Y6, Y6 - VPSRLD $16, Y7, Y7 - VPACKUSDW Y5, Y4, Y5 - VPACKUSDW Y13, Y12, Y4 - VPACKUSDW Y7, Y6, Y7 - VPACKUSDW Y15, Y14, Y6 - VPERMQ invntt_VPERMQ_IDX, Y4, Y4 - VPERMQ invntt_VPERMQ_IDX, Y5, Y5 - VPERMQ invntt_VPERMQ_IDX, Y6, Y6 - VPERMQ invntt_VPERMQ_IDX, Y7, Y7 - VPAND Y3, Y8, Y12 - VPAND Y3, Y9, Y13 - VPAND Y3, Y10, Y14 - VPAND Y3, Y11, Y15 - VPSRLD $16, Y8, Y8 - VPSRLD $16, Y9, Y9 - VPSRLD $16, Y10, Y10 - VPSRLD $16, Y11, Y11 - VPACKUSDW Y9, Y8, Y9 - VPACKUSDW Y13, Y12, Y8 - VPACKUSDW Y11, Y10, Y11 - VPACKUSDW Y15, Y14, Y10 - VPERMQ invntt_VPERMQ_IDX, Y8, Y8 - VPERMQ invntt_VPERMQ_IDX, Y9, Y9 - VPERMQ invntt_VPERMQ_IDX, Y10, Y10 - VPERMQ invntt_VPERMQ_IDX, Y11, Y11 - - // level 0 - // update - VMOVDQA Y4, Y12 - VMOVDQA Y6, Y13 - VMOVDQA Y8, Y14 - VMOVDQA Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // zetas - VMOVDQU (R8), Y13 - VMOVDQU 32(R8), Y14 - VMOVDQU 64(R8), Y15 - VMOVDQU 96(R8), Y3 - - // mul - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y7, Y7 - VPSUBW Y14, Y9, Y9 - VPSUBW Y15, Y11, Y11 - - // level 1 - // shuffle - VMOVDQU ·vpshufb_idx<>(SB), Y3 - VPSHUFB Y3, Y4, Y12 - VPSHUFB Y3, Y5, Y13 - VPSHUFB Y3, Y6, Y14 - VPSHUFB Y3, Y7, Y15 - VPBLENDW $0x55, Y4, Y13, Y4 - VPBLENDW $0xAA, Y5, Y12, Y5 - VPBLENDW $0x55, Y6, Y15, Y6 - VPBLENDW $0xAA, Y7, Y14, Y7 - VPSHUFB Y3, Y8, Y12 - VPSHUFB Y3, Y9, Y13 - VPSHUFB Y3, Y10, Y14 - VPSHUFB Y3, Y11, Y15 - VPBLENDW $0x55, Y8, Y13, Y8 - VPBLENDW $0xAA, Y9, Y12, Y9 - VPBLENDW $0x55, Y10, Y15, Y10 - VPBLENDW $0xAA, Y11, Y14, Y11 - - // update - VMOVDQA Y4, Y12 - VMOVDQA Y6, Y13 - VMOVDQA Y8, Y14 - VMOVDQA Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // zetas - VMOVDQU 256(R8), Y13 - VMOVDQU 288(R8), Y14 - VMOVDQU 320(R8), Y15 - VMOVDQU 352(R8), Y3 - - // mul - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y7, Y7 - VPSUBW Y14, Y9, Y9 - VPSUBW Y15, Y11, Y11 - - // reduce 2 - VPMULHW Y2, Y4, Y12 - VPMULHW Y2, Y6, Y13 - VPMULHW Y2, Y8, Y14 - VPMULHW Y2, Y10, Y15 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPSRAW $11, Y14, Y14 - VPSRAW $11, Y15, Y15 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPMULLW Y1, Y14, Y14 - VPMULLW Y1, Y15, Y15 - VPSUBW Y12, Y4, Y4 - VPSUBW Y13, Y6, Y6 - VPSUBW Y14, Y8, Y8 - VPSUBW Y15, Y10, Y10 - - // level 2 - // shuffle - VPSHUFD $0xB1, Y4, Y12 - VPSHUFD $0xB1, Y5, Y13 - VPSHUFD $0xB1, Y6, Y14 - VPSHUFD $0xB1, Y7, Y15 - VPBLENDD $0x55, Y4, Y13, Y4 - VPBLENDD $0xAA, Y5, Y12, Y5 - VPBLENDD $0x55, Y6, Y15, Y6 - VPBLENDD $0xAA, Y7, Y14, Y7 - VPSHUFD $0xB1, Y8, Y12 - VPSHUFD $0xB1, Y9, Y13 - VPSHUFD $0xB1, Y10, Y14 - VPSHUFD $0xB1, Y11, Y15 - VPBLENDD $0x55, Y8, Y13, Y8 - VPBLENDD $0xAA, Y9, Y12, Y9 - VPBLENDD $0x55, Y10, Y15, Y10 - VPBLENDD $0xAA, Y11, Y14, Y11 - - // update - VMOVDQA Y4, Y12 - VMOVDQA Y6, Y13 - VMOVDQA Y8, Y14 - VMOVDQA Y10, Y15 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPADDW Y10, Y11, Y10 - VPSUBW Y5, Y12, Y5 - VPSUBW Y7, Y13, Y7 - VPSUBW Y9, Y14, Y9 - VPSUBW Y11, Y15, Y11 - - // zetas - VMOVDQU 512(R8), Y13 - VMOVDQU 544(R8), Y14 - VMOVDQU 576(R8), Y15 - VMOVDQU 608(R8), Y3 - - // mul - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y7, Y7 - VPSUBW Y14, Y9, Y9 - VPSUBW Y15, Y11, Y11 - - // level 3 - // shuffle - VSHUFPD $0x00, Y5, Y4, Y3 - VSHUFPD $0x0F, Y5, Y4, Y4 - VSHUFPD $0x00, Y7, Y6, Y5 - VSHUFPD $0x0F, Y7, Y6, Y6 - VSHUFPD $0x00, Y9, Y8, Y7 - VSHUFPD $0x0F, Y9, Y8, Y8 - VSHUFPD $0x00, Y11, Y10, Y9 - VSHUFPD $0x0F, Y11, Y10, Y10 - - // update - VMOVDQA Y3, Y12 - VMOVDQA Y5, Y13 - VMOVDQA Y7, Y14 - VMOVDQA Y9, Y15 - VPADDW Y3, Y4, Y3 - VPADDW Y5, Y6, Y5 - VPADDW Y7, Y8, Y7 - VPADDW Y9, Y10, Y9 - VPSUBW Y4, Y12, Y4 - VPSUBW Y6, Y13, Y6 - VPSUBW Y8, Y14, Y8 - VPSUBW Y10, Y15, Y10 - - // zetas - VMOVDQU 768(R8), Y12 - VMOVDQU 800(R8), Y13 - VMOVDQU 832(R8), Y14 - VMOVDQU 864(R8), Y15 - - // mul - VPMULLW Y12, Y4, Y11 - VPMULHW Y12, Y4, Y4 - VPMULLW Y13, Y6, Y12 - VPMULHW Y13, Y6, Y6 - VPMULLW Y14, Y8, Y13 - VPMULHW Y14, Y8, Y8 - VPMULLW Y15, Y10, Y14 - VPMULHW Y15, Y10, Y10 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y4, Y4 - VPSUBW Y12, Y6, Y6 - VPSUBW Y13, Y8, Y8 - VPSUBW Y14, Y10, Y10 - - // reduce 2 - VPMULHW Y2, Y3, Y12 - VPMULHW Y2, Y5, Y13 - VPMULHW Y2, Y7, Y14 - VPMULHW Y2, Y9, Y15 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPSRAW $11, Y14, Y14 - VPSRAW $11, Y15, Y15 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPMULLW Y1, Y14, Y14 - VPMULLW Y1, Y15, Y15 - VPSUBW Y12, Y3, Y3 - VPSUBW Y13, Y5, Y5 - VPSUBW Y14, Y7, Y7 - VPSUBW Y15, Y9, Y9 - - // level 4 - // shuffle - VPERM2I128 $0x02, Y3, Y4, Y11 - VPERM2I128 $0x13, Y3, Y4, Y3 - VPERM2I128 $0x02, Y5, Y6, Y4 - VPERM2I128 $0x13, Y5, Y6, Y5 - VPERM2I128 $0x02, Y7, Y8, Y6 - VPERM2I128 $0x13, Y7, Y8, Y7 - VPERM2I128 $0x02, Y9, Y10, Y8 - VPERM2I128 $0x13, Y9, Y10, Y9 - - // update - VMOVDQA Y11, Y12 - VMOVDQA Y4, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y8, Y15 - VPADDW Y11, Y3, Y10 - VPADDW Y4, Y5, Y4 - VPADDW Y6, Y7, Y6 - VPADDW Y8, Y9, Y8 - VPSUBW Y3, Y12, Y3 - VPSUBW Y5, Y13, Y5 - VPSUBW Y7, Y14, Y7 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1024(R8), Y12 - VMOVDQU 1056(R8), Y13 - VMOVDQU 1088(R8), Y14 - VMOVDQU 1120(R8), Y15 - - // mul - VPMULLW Y12, Y3, Y11 - VPMULHW Y12, Y3, Y3 - VPMULLW Y13, Y5, Y12 - VPMULHW Y13, Y5, Y5 - VPMULLW Y14, Y7, Y13 - VPMULHW Y14, Y7, Y7 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y3, Y3 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y7, Y7 - VPSUBW Y14, Y9, Y9 - - // level 5 - // update - VMOVDQA Y10, Y12 - VMOVDQA Y3, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y7, Y15 - VPADDW Y10, Y4, Y10 - VPADDW Y3, Y5, Y3 - VPADDW Y6, Y8, Y6 - VPADDW Y7, Y9, Y7 - VPSUBW Y4, Y12, Y4 - VPSUBW Y5, Y13, Y5 - VPSUBW Y8, Y14, Y8 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1344(SI), Y14 - VMOVDQU 1376(SI), Y15 - - // mul - VPMULLW Y14, Y4, Y11 - VPMULLW Y14, Y5, Y12 - VPMULLW Y15, Y8, Y13 - VPMULHW Y14, Y4, Y4 - VPMULHW Y14, Y5, Y5 - VPMULHW Y15, Y8, Y8 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y4, Y4 - VPSUBW Y12, Y5, Y5 - VPSUBW Y13, Y8, Y8 - VPSUBW Y14, Y9, Y9 - - // reduce 2 - VPMULHW Y2, Y10, Y12 - VPMULHW Y2, Y6, Y13 - VPSRAW $11, Y12, Y12 - VPSRAW $11, Y13, Y13 - VPMULLW Y1, Y12, Y12 - VPMULLW Y1, Y13, Y13 - VPSUBW Y12, Y10, Y10 - VPSUBW Y13, Y6, Y6 - - // level 6 - // update - VMOVDQA Y10, Y12 - VMOVDQA Y3, Y13 - VMOVDQA Y4, Y14 - VMOVDQA Y5, Y15 - VPADDW Y10, Y6, Y10 - VPADDW Y3, Y7, Y3 - VPADDW Y4, Y8, Y4 - VPADDW Y5, Y9, Y5 - VPSUBW Y6, Y12, Y6 - VPSUBW Y7, Y13, Y7 - VPSUBW Y8, Y14, Y8 - VPSUBW Y9, Y15, Y9 - - // zetas - VMOVDQU 1440(SI), Y15 - - // mul - VPMULLW Y15, Y6, Y11 - VPMULLW Y15, Y7, Y12 - VPMULLW Y15, Y8, Y13 - VPMULLW Y15, Y9, Y14 - VPMULHW Y15, Y6, Y6 - VPMULHW Y15, Y7, Y7 - VPMULHW Y15, Y8, Y8 - VPMULHW Y15, Y9, Y9 - - // reduce - VPMULLW Y0, Y11, Y11 - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULHW Y1, Y11, Y11 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPSUBW Y11, Y6, Y6 - VPSUBW Y12, Y7, Y7 - VPSUBW Y13, Y8, Y8 - VPSUBW Y14, Y9, Y9 - - // reduce 2 - VPMULHW Y2, Y3, Y12 - VPSRAW $11, Y12, Y12 - VPMULLW Y1, Y12, Y12 - VPSUBW Y12, Y3, Y3 - - // store - VMOVDQU Y10, (DI) - VMOVDQU Y3, 32(DI) - VMOVDQU Y4, 64(DI) - VMOVDQU Y5, 96(DI) - VMOVDQU Y6, 128(DI) - VMOVDQU Y7, 160(DI) - VMOVDQU Y8, 192(DI) - VMOVDQU Y9, 224(DI) - - SUBQ $256, DI - - // f - VMOVDQU ·f_x16<>(SB), Y2 - - // first round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 256(DI), Y8 - VMOVDQU 288(DI), Y9 - VMOVDQU 320(DI), Y10 - VMOVDQU 352(DI), Y11 - - // level 7 - // update - VMOVDQA Y4, Y12 - VMOVDQA Y5, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y7, Y15 - VPADDW Y4, Y8, Y4 - VPADDW Y5, Y9, Y5 - VPADDW Y6, Y10, Y6 - VPADDW Y7, Y11, Y7 - VPSUBW Y8, Y12, Y8 - VPSUBW Y9, Y13, Y9 - VPSUBW Y10, Y14, Y10 - VPSUBW Y11, Y15, Y11 - - // zeta - VMOVDQU 1472(SI), Y3 - - // mul - VPMULLW Y3, Y8, Y12 - VPMULLW Y3, Y9, Y13 - VPMULLW Y3, Y10, Y14 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y8, Y8 - VPMULHW Y3, Y9, Y9 - VPMULHW Y3, Y10, Y10 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y8 - VPSUBW Y13, Y9, Y9 - VPSUBW Y14, Y10, Y10 - VPSUBW Y15, Y11, Y11 - VPADDW Y1, Y8, Y8 - VPADDW Y1, Y9, Y9 - VPADDW Y1, Y10, Y10 - VPADDW Y1, Y11, Y11 - - // mul - VPMULLW Y2, Y4, Y12 - VPMULLW Y2, Y5, Y13 - VPMULLW Y2, Y6, Y14 - VPMULLW Y2, Y7, Y15 - VPMULHW Y2, Y4, Y4 - VPMULHW Y2, Y5, Y5 - VPMULHW Y2, Y6, Y6 - VPMULHW Y2, Y7, Y7 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y4, Y4 - VPSUBW Y13, Y5, Y5 - VPSUBW Y14, Y6, Y6 - VPSUBW Y15, Y7, Y7 - VPADDW Y1, Y4, Y4 - VPADDW Y1, Y5, Y5 - VPADDW Y1, Y6, Y6 - VPADDW Y1, Y7, Y7 - - // store - VMOVDQU Y4, (DI) - VMOVDQU Y5, 32(DI) - VMOVDQU Y6, 64(DI) - VMOVDQU Y7, 96(DI) - VMOVDQU Y8, 256(DI) - VMOVDQU Y9, 288(DI) - VMOVDQU Y10, 320(DI) - VMOVDQU Y11, 352(DI) - - ADDQ $128, DI - - // second round - // load - VMOVDQU (DI), Y4 - VMOVDQU 32(DI), Y5 - VMOVDQU 64(DI), Y6 - VMOVDQU 96(DI), Y7 - VMOVDQU 256(DI), Y8 - VMOVDQU 288(DI), Y9 - VMOVDQU 320(DI), Y10 - VMOVDQU 352(DI), Y11 - - // zeta - VMOVDQU 1472(SI), Y3 - - // level 7 - // update - VMOVDQA Y4, Y12 - VMOVDQA Y5, Y13 - VMOVDQA Y6, Y14 - VMOVDQA Y7, Y15 - VPADDW Y4, Y8, Y4 - VPADDW Y5, Y9, Y5 - VPADDW Y6, Y10, Y6 - VPADDW Y7, Y11, Y7 - VPSUBW Y8, Y12, Y8 - VPSUBW Y9, Y13, Y9 - VPSUBW Y10, Y14, Y10 - VPSUBW Y11, Y15, Y11 - - // mul - VPMULLW Y3, Y8, Y12 - VPMULLW Y3, Y9, Y13 - VPMULLW Y3, Y10, Y14 - VPMULLW Y3, Y11, Y15 - VPMULHW Y3, Y8, Y8 - VPMULHW Y3, Y9, Y9 - VPMULHW Y3, Y10, Y10 - VPMULHW Y3, Y11, Y11 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y8, Y8 - VPSUBW Y13, Y9, Y9 - VPSUBW Y14, Y10, Y10 - VPSUBW Y15, Y11, Y11 - VPADDW Y1, Y8, Y8 - VPADDW Y1, Y9, Y9 - VPADDW Y1, Y10, Y10 - VPADDW Y1, Y11, Y11 - - // mul - VPMULLW Y2, Y4, Y12 - VPMULLW Y2, Y5, Y13 - VPMULLW Y2, Y6, Y14 - VPMULLW Y2, Y7, Y15 - VPMULHW Y2, Y4, Y4 - VPMULHW Y2, Y5, Y5 - VPMULHW Y2, Y6, Y6 - VPMULHW Y2, Y7, Y7 - - // reduce - VPMULLW Y0, Y12, Y12 - VPMULLW Y0, Y13, Y13 - VPMULLW Y0, Y14, Y14 - VPMULLW Y0, Y15, Y15 - VPMULHW Y1, Y12, Y12 - VPMULHW Y1, Y13, Y13 - VPMULHW Y1, Y14, Y14 - VPMULHW Y1, Y15, Y15 - VPSUBW Y12, Y4, Y4 - VPSUBW Y13, Y5, Y5 - VPSUBW Y14, Y6, Y6 - VPSUBW Y15, Y7, Y7 - VPADDW Y1, Y4, Y4 - VPADDW Y1, Y5, Y5 - VPADDW Y1, Y6, Y6 - VPADDW Y1, Y7, Y7 - - // store - VMOVDQU Y4, (DI) - VMOVDQU Y5, 32(DI) - VMOVDQU Y6, 64(DI) - VMOVDQU Y7, 96(DI) - VMOVDQU Y8, 256(DI) - VMOVDQU Y9, 288(DI) - VMOVDQU Y10, 320(DI) - VMOVDQU Y11, 352(DI) - - VZEROUPPER - RET - -// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) -TEXT ·pointwiseAccK2AVX2(SB), NOSPLIT, $0-24 - MOVQ dst+0(FP), DI - MOVQ a+8(FP), SI - MOVQ b+16(FP), DX - - VMOVDQU ·qinv_x16<>(SB), Y0 - VMOVDQU ·q_x16<>(SB), Y1 - VMOVDQU ·montsq_x16<>(SB), Y2 - - XORQ AX, AX - XORQ BX, BX - - MOVQ 8(SI), R8 // a[1] - MOVQ (SI), SI // a[0] - MOVQ 8(DX), R11 // b[1] - MOVQ (DX), DX // b[0] - -looptop2: - // load a - VMOVDQU (SI)(BX*1), Y4 - VMOVDQU 32(SI)(BX*1), Y5 - VMOVDQU 64(SI)(BX*1), Y6 - VMOVDQU (R8)(BX*1), Y7 - VMOVDQU 32(R8)(BX*1), Y8 - VMOVDQU 64(R8)(BX*1), Y9 - - // mul montsq - VPMULLW Y2, Y4, Y3 - VPMULHW Y2, Y4, Y10 - VPMULLW Y2, Y5, Y4 - VPMULHW Y2, Y5, Y11 - VPMULLW Y2, Y6, Y5 - VPMULHW Y2, Y6, Y12 - VPMULLW Y2, Y7, Y6 - VPMULHW Y2, Y7, Y13 - VPMULLW Y2, Y8, Y7 - VPMULHW Y2, Y8, Y14 - VPMULLW Y2, Y9, Y8 - VPMULHW Y2, Y9, Y15 - - // reduce - VPMULLW Y0, Y3, Y3 - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y8, Y8 - VPMULHW Y1, Y3, Y3 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y8, Y8 - VPSUBW Y3, Y10, Y3 - VPSUBW Y4, Y11, Y4 - VPSUBW Y5, Y12, Y5 - VPSUBW Y6, Y13, Y6 - VPSUBW Y7, Y14, Y7 - VPSUBW Y8, Y15, Y8 - - // load b - VMOVDQU (DX)(BX*1), Y9 - VMOVDQU 32(DX)(BX*1), Y10 - VMOVDQU 64(DX)(BX*1), Y11 - VMOVDQU (R11)(BX*1), Y12 - VMOVDQU 32(R11)(BX*1), Y13 - VMOVDQU 64(R11)(BX*1), Y14 - - // mul - VPMULLW Y3, Y9, Y15 - VPMULHW Y3, Y9, Y9 - VPMULLW Y4, Y10, Y3 - VPMULHW Y4, Y10, Y10 - VPMULLW Y5, Y11, Y4 - VPMULHW Y5, Y11, Y11 - VPMULLW Y6, Y12, Y5 - VPMULHW Y6, Y12, Y12 - VPMULLW Y7, Y13, Y6 - VPMULHW Y7, Y13, Y13 - VPMULLW Y8, Y14, Y7 - VPMULHW Y8, Y14, Y14 - - // reduce - VPMULLW Y0, Y15, Y15 - VPMULLW Y0, Y3, Y3 - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULHW Y1, Y15, Y15 - VPMULHW Y1, Y3, Y3 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPSUBW Y15, Y9, Y15 - VPSUBW Y3, Y10, Y3 - VPSUBW Y4, Y11, Y4 - VPSUBW Y5, Y12, Y5 - VPSUBW Y6, Y13, Y6 - VPSUBW Y7, Y14, Y7 - - // add - VPADDW Y15, Y5, Y5 - VPADDW Y3, Y6, Y6 - VPADDW Y4, Y7, Y7 - - // reduce 2 - VMOVDQU ·v_x16<>(SB), Y3 - VPMULHW Y3, Y5, Y8 - VPMULHW Y3, Y6, Y9 - VPMULHW Y3, Y7, Y10 - VPSRAW $11, Y8, Y8 - VPSRAW $11, Y9, Y9 - VPSRAW $11, Y10, Y10 - VPMULLW Y1, Y8, Y8 - VPMULLW Y1, Y9, Y9 - VPMULLW Y1, Y10, Y10 - VPSUBW Y8, Y5, Y5 - VPSUBW Y9, Y6, Y6 - VPSUBW Y10, Y7, Y7 - - // store - VMOVDQU Y5, (DI)(BX*1) - VMOVDQU Y6, 32(DI)(BX*1) - VMOVDQU Y7, 64(DI)(BX*1) - - ADDQ $1, AX - ADDQ $96, BX - CMPQ AX, $5 - JB looptop2 - - // load - VMOVDQU (SI)(BX*1), Y4 - VMOVDQU (R8)(BX*1), Y7 - VMOVDQU (DX)(BX*1), Y9 - VMOVDQU (R11)(BX*1), Y12 - - // mul montsq - VPMULLW Y2, Y4, Y3 - VPMULHW Y2, Y4, Y10 - VPMULLW Y2, Y7, Y6 - VPMULHW Y2, Y7, Y13 - - // reduce - VPMULLW Y0, Y3, Y3 - VPMULLW Y0, Y6, Y6 - VPMULHW Y1, Y3, Y3 - VPMULHW Y1, Y6, Y6 - VPSUBW Y3, Y10, Y3 - VPSUBW Y6, Y13, Y6 - - // mul - VPMULLW Y3, Y9, Y15 - VPMULHW Y3, Y9, Y9 - VPMULLW Y6, Y12, Y5 - VPMULHW Y6, Y12, Y12 - - // reduce - VPMULLW Y0, Y15, Y15 - VPMULLW Y0, Y5, Y5 - VPMULHW Y1, Y15, Y15 - VPMULHW Y1, Y5, Y5 - VPSUBW Y15, Y9, Y15 - VPSUBW Y5, Y12, Y5 - - // add - VPADDW Y15, Y5, Y5 - - // reduce 2 - VMOVDQU ·v_x16<>(SB), Y3 - VPMULHW Y3, Y5, Y8 - VPSRAW $11, Y8, Y8 - VPMULLW Y1, Y8, Y8 - VPSUBW Y8, Y5, Y5 - - // store - VMOVDQU Y5, (DI)(BX*1) - - VZEROUPPER - RET - -// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) -TEXT ·pointwiseAccK3AVX2(SB), NOSPLIT, $0-24 - MOVQ dst+0(FP), DI - MOVQ a+8(FP), SI - MOVQ b+16(FP), DX - - VMOVDQU ·qinv_x16<>(SB), Y0 - VMOVDQU ·q_x16<>(SB), Y1 - VMOVDQU ·montsq_x16<>(SB), Y2 - - XORQ AX, AX - XORQ BX, BX - - MOVQ (16)(SI), R9 // a[2] - MOVQ 8(SI), R8 // a[1] - MOVQ (SI), SI // a[0] - MOVQ 16(DX), R12 // b[2] - MOVQ 8(DX), R11 // b[1] - MOVQ (DX), DX // b[0] - -looptop3: - // load a - VMOVDQU (SI)(BX*1), Y4 - VMOVDQU 32(SI)(BX*1), Y5 - VMOVDQU (R8)(BX*1), Y6 - VMOVDQU 32(R8)(BX*1), Y7 - VMOVDQU (R9)(BX*1), Y8 - VMOVDQU 32(R9)(BX*1), Y9 - - // mul montsq - VPMULLW Y2, Y4, Y3 - VPMULHW Y2, Y4, Y10 - VPMULLW Y2, Y5, Y4 - VPMULHW Y2, Y5, Y11 - VPMULLW Y2, Y6, Y5 - VPMULHW Y2, Y6, Y12 - VPMULLW Y2, Y7, Y6 - VPMULHW Y2, Y7, Y13 - VPMULLW Y2, Y8, Y7 - VPMULHW Y2, Y8, Y14 - VPMULLW Y2, Y9, Y8 - VPMULHW Y2, Y9, Y15 - - // reduce - VPMULLW Y0, Y3, Y3 - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y8, Y8 - VPMULHW Y1, Y3, Y3 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y8, Y8 - VPSUBW Y3, Y10, Y3 - VPSUBW Y4, Y11, Y4 - VPSUBW Y5, Y12, Y5 - VPSUBW Y6, Y13, Y6 - VPSUBW Y7, Y14, Y7 - VPSUBW Y8, Y15, Y8 - - // load b - VMOVDQU (DX)(BX*1), Y9 - VMOVDQU 32(DX)(BX*1), Y10 - VMOVDQU (R11)(BX*1), Y11 - VMOVDQU 32(R11)(BX*1), Y12 - VMOVDQU (R12)(BX*1), Y13 - VMOVDQU 32(R12)(BX*1), Y14 - - // mul - VPMULLW Y3, Y9, Y15 - VPMULHW Y3, Y9, Y9 - VPMULLW Y4, Y10, Y3 - VPMULHW Y4, Y10, Y10 - VPMULLW Y5, Y11, Y4 - VPMULHW Y5, Y11, Y11 - VPMULLW Y6, Y12, Y5 - VPMULHW Y6, Y12, Y12 - VPMULLW Y7, Y13, Y6 - VPMULHW Y7, Y13, Y13 - VPMULLW Y8, Y14, Y7 - VPMULHW Y8, Y14, Y14 - - // reduce - VPMULLW Y0, Y15, Y15 - VPMULLW Y0, Y3, Y3 - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULHW Y1, Y15, Y15 - VPMULHW Y1, Y3, Y3 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPSUBW Y15, Y9, Y15 - VPSUBW Y3, Y10, Y3 - VPSUBW Y4, Y11, Y4 - VPSUBW Y5, Y12, Y5 - VPSUBW Y6, Y13, Y6 - VPSUBW Y7, Y14, Y7 - - // add - VPADDW Y15, Y4, Y4 - VPADDW Y3, Y5, Y5 - VPADDW Y4, Y6, Y6 - VPADDW Y5, Y7, Y7 - - // reduce 2 - VMOVDQU ·v_x16<>(SB), Y3 - VPMULHW Y3, Y6, Y8 - VPMULHW Y3, Y7, Y9 - VPSRAW $11, Y8, Y8 - VPSRAW $11, Y9, Y9 - VPMULLW Y1, Y8, Y8 - VPMULLW Y1, Y9, Y9 - VPSUBW Y8, Y6, Y6 - VPSUBW Y9, Y7, Y7 - - // store - VMOVDQU Y6, (DI)(BX*1) - VMOVDQU Y7, 32(DI)(BX*1) - - ADDQ $1, AX - ADDQ $64, BX - CMPQ AX, $8 - JB looptop3 - - VZEROUPPER - RET - -// func pointwiseAccK2AVX2(dst *uint16, a, b **uint16) -TEXT ·pointwiseAccK4AVX2(SB), NOSPLIT, $0-24 - MOVQ dst+0(FP), DI - MOVQ a+8(FP), SI - MOVQ b+16(FP), DX - - VMOVDQU ·qinv_x16<>(SB), Y0 - VMOVDQU ·q_x16<>(SB), Y1 - VMOVDQU ·montsq_x16<>(SB), Y2 - VMOVDQU ·v_x16<>(SB), Y3 - - XORQ AX, AX - XORQ BX, BX - - MOVQ 24(SI), R10 // a[3] - MOVQ 16(SI), R9 // a[2] - MOVQ 8(SI), R8 // a[1] - MOVQ (SI), SI // a[0] - MOVQ 24(DX), R13 // b[3] - MOVQ 16(DX), R12 // b[2] - MOVQ 8(DX), R11 // b[1] - MOVQ (DX), DX // b[0] - -looptop4: - // load a - VMOVDQU (SI)(BX*1), Y6 - VMOVDQU (R8)(BX*1), Y7 - VMOVDQU (R9)(BX*1), Y8 - VMOVDQU (R10)(BX*1), Y9 - - // mul montsq - VPMULLW Y2, Y6, Y5 - VPMULHW Y2, Y6, Y10 - VPMULLW Y2, Y7, Y6 - VPMULHW Y2, Y7, Y11 - VPMULLW Y2, Y8, Y7 - VPMULHW Y2, Y8, Y12 - VPMULLW Y2, Y9, Y8 - VPMULHW Y2, Y9, Y13 - - // reduce - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULLW Y0, Y8, Y8 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPMULHW Y1, Y8, Y8 - VPSUBW Y5, Y10, Y5 - VPSUBW Y6, Y11, Y6 - VPSUBW Y7, Y12, Y7 - VPSUBW Y8, Y13, Y8 - - // load b - VMOVDQU (DX)(BX*1), Y9 - VMOVDQU (R11)(BX*1), Y10 - VMOVDQU (R12)(BX*1), Y11 - VMOVDQU (R13)(BX*1), Y12 - - // mul - VPMULLW Y5, Y9, Y4 - VPMULHW Y5, Y9, Y9 - VPMULLW Y6, Y10, Y5 - VPMULHW Y6, Y10, Y10 - VPMULLW Y7, Y11, Y6 - VPMULHW Y7, Y11, Y11 - VPMULLW Y8, Y12, Y7 - VPMULHW Y8, Y12, Y12 - - // reduce - VPMULLW Y0, Y4, Y4 - VPMULLW Y0, Y5, Y5 - VPMULLW Y0, Y6, Y6 - VPMULLW Y0, Y7, Y7 - VPMULHW Y1, Y4, Y4 - VPMULHW Y1, Y5, Y5 - VPMULHW Y1, Y6, Y6 - VPMULHW Y1, Y7, Y7 - VPSUBW Y4, Y9, Y4 - VPSUBW Y5, Y10, Y5 - VPSUBW Y6, Y11, Y6 - VPSUBW Y7, Y12, Y7 - - // add - VPADDW Y4, Y5, Y5 - VPADDW Y5, Y6, Y6 - VPADDW Y6, Y7, Y7 - - // reduce 2 - VPMULHW Y3, Y7, Y8 - VPSRAW $11, Y8, Y8 - VPMULLW Y1, Y8, Y8 - VPSUBW Y8, Y7, Y8 - - // store - VMOVDQU Y8, (DI)(BX*1) - - ADDQ $1, AX - ADDQ $32, BX - CMPQ AX, $16 - JB looptop4 - - VZEROUPPER - RET - -// func cbdEta4AVX2(dst *uint16, b *byte) -TEXT ·cbdEta4AVX2(SB), NOSPLIT, $0-16 - MOVQ dst+0(FP), DI - MOVQ b+8(FP), SI - - VMOVDQU ·mask11<>(SB), Y0 - VMOVDQU ·mask0f<>(SB), Y1 - VMOVDQU ·q_x16<>(SB), Y2 - - MOVQ $256, DX - -looptop: - VMOVUPD 0(SI), Y3 - VPAND Y3, Y0, Y4 - VPSRLW $1, Y3, Y3 - VPAND Y3, Y0, Y5 - VPADDB Y5, Y4, Y4 - VPSRLW $1, Y3, Y3 - VPAND Y3, Y0, Y5 - VPADDB Y5, Y4, Y4 - VPSRLW $1, Y3, Y3 - VPAND Y3, Y0, Y3 - VPADDB Y3, Y4, Y3 - VPSRLW $4, Y3, Y4 - VPAND Y3, Y1, Y3 - VPAND Y4, Y1, Y4 - VPSUBB Y4, Y3, Y3 - VPMOVSXBW X3, Y4 - VPADDW Y2, Y4, Y4 - VMOVUPD Y4, 0(DI) - VPERM2F128 $0x21, Y3, Y3, Y3 - VPMOVSXBW X3, Y4 - VPADDW Y2, Y4, Y4 - VMOVUPD Y4, 32(DI) - - ADDQ $64, DI - ADDQ $32, SI - SUBQ $32, DX - JA looptop - - VZEROUPPER - RET diff --git a/vendor/blitter.com/go/kyber/hwaccel_ref.go b/vendor/blitter.com/go/kyber/hwaccel_ref.go deleted file mode 100644 index 4b58010..0000000 --- a/vendor/blitter.com/go/kyber/hwaccel_ref.go +++ /dev/null @@ -1,14 +0,0 @@ -// hwaccel_ref.go - Unaccelerated stubs. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// +build !amd64 gccgo noasm !go1.10 - -package kyber - -func initHardwareAcceleration() { - forceDisableHardwareAcceleration() -} diff --git a/vendor/blitter.com/go/kyber/indcpa.go b/vendor/blitter.com/go/kyber/indcpa.go deleted file mode 100644 index 5c4186f..0000000 --- a/vendor/blitter.com/go/kyber/indcpa.go +++ /dev/null @@ -1,279 +0,0 @@ -// indcpa.go - Kyber IND-CPA encryption. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -import ( - "io" - - "golang.org/x/crypto/sha3" -) - -// Serialize the public key as concatenation of the compressed and serialized -// vector of polynomials pk and the public seed used to generate the matrix A. -func packPublicKey(r []byte, pk *polyVec, seed []byte) { - pk.compress(r) - copy(r[pk.compressedSize():], seed[:SymSize]) -} - -// De-serialize and decompress public key from a byte array; approximate -// inverse of packPublicKey. -func unpackPublicKey(pk *polyVec, seed, packedPk []byte) { - pk.decompress(packedPk) - - off := pk.compressedSize() - copy(seed, packedPk[off:off+SymSize]) -} - -// Serialize the ciphertext as concatenation of the compressed and serialized -// vector of polynomials b and the compressed and serialized polynomial v. -func packCiphertext(r []byte, b *polyVec, v *poly) { - b.compress(r) - v.compress(r[b.compressedSize():]) -} - -// De-serialize and decompress ciphertext from a byte array; approximate -// inverse of packCiphertext. -func unpackCiphertext(b *polyVec, v *poly, c []byte) { - b.decompress(c) - v.decompress(c[b.compressedSize():]) -} - -// Serialize the secret key. -func packSecretKey(r []byte, sk *polyVec) { - sk.toBytes(r) -} - -// De-serialize the secret key; inverse of packSecretKey. -func unpackSecretKey(sk *polyVec, packedSk []byte) { - sk.fromBytes(packedSk) -} - -// Deterministically generate matrix A (or the transpose of A) from a seed. -// Entries of the matrix are polynomials that look uniformly random. Performs -// rejection sampling on output of SHAKE-128. -func genMatrix(a []polyVec, seed []byte, transposed bool) { - const ( - shake128Rate = 168 // xof.BlockSize() is not a constant. - maxBlocks = 4 - ) - var buf [shake128Rate * maxBlocks]byte - - var extSeed [SymSize + 2]byte - copy(extSeed[:SymSize], seed) - - xof := sha3.NewShake128() - - for i, v := range a { - for j, p := range v.vec { - if transposed { - extSeed[SymSize] = byte(i) - extSeed[SymSize+1] = byte(j) - } else { - extSeed[SymSize] = byte(j) - extSeed[SymSize+1] = byte(i) - } - - xof.Write(extSeed[:]) - xof.Read(buf[:]) - - for ctr, pos, maxPos := 0, 0, len(buf); ctr < kyberN; { - val := (uint16(buf[pos]) | (uint16(buf[pos+1]) << 8)) & 0x1fff - if val < kyberQ { - p.coeffs[ctr] = val - ctr++ - } - if pos += 2; pos == maxPos { - // On the unlikely chance 4 blocks is insufficient, - // incrementally squeeze out 1 block at a time. - xof.Read(buf[:shake128Rate]) - pos, maxPos = 0, shake128Rate - } - } - - xof.Reset() - } - } -} - -type indcpaPublicKey struct { - packed []byte - h [32]byte -} - -func (pk *indcpaPublicKey) toBytes() []byte { - return pk.packed -} - -func (pk *indcpaPublicKey) fromBytes(p *ParameterSet, b []byte) error { - if len(b) != p.indcpaPublicKeySize { - return ErrInvalidKeySize - } - - pk.packed = make([]byte, len(b)) - copy(pk.packed, b) - pk.h = sha3.Sum256(b) - - return nil -} - -type indcpaSecretKey struct { - packed []byte -} - -func (sk *indcpaSecretKey) fromBytes(p *ParameterSet, b []byte) error { - if len(b) != p.indcpaSecretKeySize { - return ErrInvalidKeySize - } - - sk.packed = make([]byte, len(b)) - copy(sk.packed, b) - - return nil -} - -// Generates public and private key for the CPA-secure public-key encryption -// scheme underlying Kyber. -func (p *ParameterSet) indcpaKeyPair(rng io.Reader) (*indcpaPublicKey, *indcpaSecretKey, error) { - buf := make([]byte, SymSize+SymSize) - if _, err := io.ReadFull(rng, buf[:SymSize]); err != nil { - return nil, nil, err - } - - sk := &indcpaSecretKey{ - packed: make([]byte, p.indcpaSecretKeySize), - } - pk := &indcpaPublicKey{ - packed: make([]byte, p.indcpaPublicKeySize), - } - - h := sha3.New512() - h.Write(buf[:SymSize]) - buf = buf[:0] // Reuse the backing store. - buf = h.Sum(buf) - publicSeed, noiseSeed := buf[:SymSize], buf[SymSize:] - - a := p.allocMatrix() - genMatrix(a, publicSeed, false) - - var nonce byte - skpv := p.allocPolyVec() - for _, pv := range skpv.vec { - pv.getNoise(noiseSeed, nonce, p.eta) - nonce++ - } - - skpv.ntt() - - e := p.allocPolyVec() - for _, pv := range e.vec { - pv.getNoise(noiseSeed, nonce, p.eta) - nonce++ - } - - // matrix-vector multiplication - pkpv := p.allocPolyVec() - for i, pv := range pkpv.vec { - pv.pointwiseAcc(&skpv, &a[i]) - } - - pkpv.invntt() - pkpv.add(&pkpv, &e) - - packSecretKey(sk.packed, &skpv) - packPublicKey(pk.packed, &pkpv, publicSeed) - pk.h = sha3.Sum256(pk.packed) - - return pk, sk, nil -} - -// Encryption function of the CPA-secure public-key encryption scheme -// underlying Kyber. -func (p *ParameterSet) indcpaEncrypt(c, m []byte, pk *indcpaPublicKey, coins []byte) { - var k, v, epp poly - var seed [SymSize]byte - - pkpv := p.allocPolyVec() - unpackPublicKey(&pkpv, seed[:], pk.packed) - - k.fromMsg(m) - - pkpv.ntt() - - at := p.allocMatrix() - genMatrix(at, seed[:], true) - - var nonce byte - sp := p.allocPolyVec() - for _, pv := range sp.vec { - pv.getNoise(coins, nonce, p.eta) - nonce++ - } - - sp.ntt() - - ep := p.allocPolyVec() - for _, pv := range ep.vec { - pv.getNoise(coins, nonce, p.eta) - nonce++ - } - - // matrix-vector multiplication - bp := p.allocPolyVec() - for i, pv := range bp.vec { - pv.pointwiseAcc(&sp, &at[i]) - } - - bp.invntt() - bp.add(&bp, &ep) - - v.pointwiseAcc(&pkpv, &sp) - v.invntt() - - epp.getNoise(coins, nonce, p.eta) // Don't need to increment nonce. - - v.add(&v, &epp) - v.add(&v, &k) - - packCiphertext(c, &bp, &v) -} - -// Decryption function of the CPA-secure public-key encryption scheme -// underlying Kyber. -func (p *ParameterSet) indcpaDecrypt(m, c []byte, sk *indcpaSecretKey) { - var v, mp poly - - skpv, bp := p.allocPolyVec(), p.allocPolyVec() - unpackCiphertext(&bp, &v, c) - unpackSecretKey(&skpv, sk.packed) - - bp.ntt() - - mp.pointwiseAcc(&skpv, &bp) - mp.invntt() - - mp.sub(&mp, &v) - - mp.toMsg(m) -} - -func (p *ParameterSet) allocMatrix() []polyVec { - m := make([]polyVec, 0, p.k) - for i := 0; i < p.k; i++ { - m = append(m, p.allocPolyVec()) - } - return m -} - -func (p *ParameterSet) allocPolyVec() polyVec { - vec := make([]*poly, 0, p.k) - for i := 0; i < p.k; i++ { - vec = append(vec, new(poly)) - } - - return polyVec{vec} -} diff --git a/vendor/blitter.com/go/kyber/kem.go b/vendor/blitter.com/go/kyber/kem.go deleted file mode 100644 index 363040c..0000000 --- a/vendor/blitter.com/go/kyber/kem.go +++ /dev/null @@ -1,187 +0,0 @@ -// kem.go - Kyber key encapsulation mechanism. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -import ( - "bytes" - "crypto/subtle" - "errors" - "io" - - "golang.org/x/crypto/sha3" -) - -var ( - // ErrInvalidKeySize is the error returned when a byte serailized key is - // an invalid size. - ErrInvalidKeySize = errors.New("kyber: invalid key size") - - // ErrInvalidCipherTextSize is the error thrown via a panic when a byte - // serialized ciphertext is an invalid size. - ErrInvalidCipherTextSize = errors.New("kyber: invalid ciphertext size") - - // ErrInvalidPrivateKey is the error returned when a byte serialized - // private key is malformed. - ErrInvalidPrivateKey = errors.New("kyber: invalid private key") -) - -// PrivateKey is a Kyber private key. -type PrivateKey struct { - PublicKey - sk *indcpaSecretKey - z []byte -} - -// Bytes returns the byte serialization of a PrivateKey. -func (sk *PrivateKey) Bytes() []byte { - p := sk.PublicKey.p - - b := make([]byte, 0, p.secretKeySize) - b = append(b, sk.sk.packed...) - b = append(b, sk.PublicKey.pk.packed...) - b = append(b, sk.PublicKey.pk.h[:]...) - b = append(b, sk.z...) - - return b -} - -// PrivateKeyFromBytes deserializes a byte serialized PrivateKey. -func (p *ParameterSet) PrivateKeyFromBytes(b []byte) (*PrivateKey, error) { - if len(b) != p.secretKeySize { - return nil, ErrInvalidKeySize - } - - sk := new(PrivateKey) - sk.sk = new(indcpaSecretKey) - sk.z = make([]byte, SymSize) - sk.PublicKey.pk = new(indcpaPublicKey) - sk.PublicKey.p = p - - // De-serialize the public key first. - off := p.indcpaSecretKeySize - if err := sk.PublicKey.pk.fromBytes(p, b[off:off+p.publicKeySize]); err != nil { - return nil, err - } - off += p.publicKeySize - if !bytes.Equal(sk.PublicKey.pk.h[:], b[off:off+SymSize]) { - return nil, ErrInvalidPrivateKey - } - off += SymSize - copy(sk.z, b[off:]) - - // Then go back to de-serialize the private key. - if err := sk.sk.fromBytes(p, b[:p.indcpaSecretKeySize]); err != nil { - return nil, err - } - - return sk, nil -} - -// PublicKey is a Kyber public key. -type PublicKey struct { - pk *indcpaPublicKey - p *ParameterSet -} - -// Bytes returns the byte serialization of a PublicKey. -func (pk *PublicKey) Bytes() []byte { - return pk.pk.toBytes() -} - -// PublicKeyFromBytes deserializes a byte serialized PublicKey. -func (p *ParameterSet) PublicKeyFromBytes(b []byte) (*PublicKey, error) { - pk := &PublicKey{ - pk: new(indcpaPublicKey), - p: p, - } - - if err := pk.pk.fromBytes(p, b); err != nil { - return nil, err - } - - return pk, nil -} - -// GenerateKeyPair generates a private and public key parameterized with the -// given ParameterSet. -func (p *ParameterSet) GenerateKeyPair(rng io.Reader) (*PublicKey, *PrivateKey, error) { - kp := new(PrivateKey) - - var err error - if kp.PublicKey.pk, kp.sk, err = p.indcpaKeyPair(rng); err != nil { - return nil, nil, err - } - - kp.PublicKey.p = p - kp.z = make([]byte, SymSize) - if _, err := io.ReadFull(rng, kp.z); err != nil { - return nil, nil, err - } - - return &kp.PublicKey, kp, nil -} - -// KEMEncrypt generates cipher text and shared secret via the CCA-secure Kyber -// key encapsulation mechanism. -func (pk *PublicKey) KEMEncrypt(rng io.Reader) (cipherText []byte, sharedSecret []byte, err error) { - var buf [SymSize]byte - if _, err = io.ReadFull(rng, buf[:]); err != nil { - return nil, nil, err - } - buf = sha3.Sum256(buf[:]) // Don't release system RNG output - - hKr := sha3.New512() - hKr.Write(buf[:]) - hKr.Write(pk.pk.h[:]) // Multitarget countermeasures for coins + contributory KEM - kr := hKr.Sum(nil) - - cipherText = make([]byte, pk.p.cipherTextSize) - pk.p.indcpaEncrypt(cipherText, buf[:], pk.pk, kr[SymSize:]) // coins are in kr[SymSize:] - - hc := sha3.Sum256(cipherText) - copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) - hSs := sha3.New256() - hSs.Write(kr) - sharedSecret = hSs.Sum(nil) // hash concatenation of pre-k and H(c) to k - - return -} - -// KEMDecrypt generates shared secret for given cipher text via the CCA-secure -// Kyber key encapsulation mechanism. -// -// On failures, sharedSecret will contain a randomized value. Providing a -// cipher text that is obviously malformed (too large/small) will result in a -// panic. -func (sk *PrivateKey) KEMDecrypt(cipherText []byte) (sharedSecret []byte) { - var buf [2 * SymSize]byte - - p := sk.PublicKey.p - if len(cipherText) != p.CipherTextSize() { - panic(ErrInvalidCipherTextSize) - } - p.indcpaDecrypt(buf[:SymSize], cipherText, sk.sk) - - copy(buf[SymSize:], sk.PublicKey.pk.h[:]) // Multitarget countermeasure for coins + contributory KEM - kr := sha3.Sum512(buf[:]) - - cmp := make([]byte, p.cipherTextSize) - p.indcpaEncrypt(cmp, buf[:SymSize], sk.PublicKey.pk, kr[SymSize:]) // coins are in kr[SymSize:] - - hc := sha3.Sum256(cipherText) - copy(kr[SymSize:], hc[:]) // overwrite coins in kr with H(c) - - fail := subtle.ConstantTimeSelect(subtle.ConstantTimeCompare(cipherText, cmp), 0, 1) - subtle.ConstantTimeCopy(fail, kr[SymSize:], sk.z) // Overwrite pre-k with z on re-encryption failure - - h := sha3.New256() - h.Write(kr[:]) - sharedSecret = h.Sum(nil) - - return -} diff --git a/vendor/blitter.com/go/kyber/kex.go b/vendor/blitter.com/go/kyber/kex.go deleted file mode 100644 index f6b56c1..0000000 --- a/vendor/blitter.com/go/kyber/kex.go +++ /dev/null @@ -1,249 +0,0 @@ -// kex.go - Kyber key exchange. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -import ( - "errors" - "io" - - "golang.org/x/crypto/sha3" -) - -var ( - // ErrInvalidMessageSize is the error thrown via a panic when a initator - // or responder message is an invalid size. - ErrInvalidMessageSize = errors.New("kyber: invalid message size") - - // ErrParameterSetMismatch is the error thrown via a panic when there - // is a mismatch between parameter sets. - ErrParameterSetMismatch = errors.New("kyber: parameter set mismatch") -) - -// UAKEInitiatorMessageSize returns the size of the initiator UAKE message -// in bytes. -func (p *ParameterSet) UAKEInitiatorMessageSize() int { - return p.PublicKeySize() + p.CipherTextSize() -} - -// UAKEResponderMessageSize returns the size of the responder UAKE message -// in bytes. -func (p *ParameterSet) UAKEResponderMessageSize() int { - return p.CipherTextSize() -} - -// UAKEInitiatorState is a initiator UAKE instance. Each instance MUST only -// be used for one key exchange and never reused. -type UAKEInitiatorState struct { - // Message is the UAKE message to send to the responder. - Message []byte - - eSk *PrivateKey - tk []byte -} - -// Shared generates a shared secret for the given UAKE instance and responder -// message. -// -// On failures, sharedSecret will contain a randomized value. Providing a -// cipher text that is obviously malformed (too large/small) will result in a -// panic. -func (s *UAKEInitiatorState) Shared(recv []byte) (sharedSecret []byte) { - xof := sha3.NewShake256() - var tk []byte - - tk = s.eSk.KEMDecrypt(recv) - xof.Write(tk) - xof.Write(s.tk) - sharedSecret = make([]byte, SymSize) - xof.Read(sharedSecret) - - return -} - -// NewUAKEInitiatorState creates a new initiator UAKE instance. -func (pk *PublicKey) NewUAKEInitiatorState(rng io.Reader) (*UAKEInitiatorState, error) { - s := new(UAKEInitiatorState) - s.Message = make([]byte, 0, pk.p.UAKEInitiatorMessageSize()) - - var err error - _, s.eSk, err = pk.p.GenerateKeyPair(rng) - if err != nil { - return nil, err - } - s.Message = append(s.Message, s.eSk.PublicKey.Bytes()...) - - var ct []byte - ct, s.tk, err = pk.KEMEncrypt(rng) - if err != nil { - return nil, err - } - - s.Message = append(s.Message, ct...) - - return s, nil -} - -// UAKEResponderShared generates a responder message and shared secret given -// a initiator UAKE message. -// -// On failures, sharedSecret will contain a randomized value. Providing a -// cipher text that is obviously malformed (too large/small) will result in a -// panic. -func (sk *PrivateKey) UAKEResponderShared(rng io.Reader, recv []byte) (message, sharedSecret []byte) { - p := sk.PublicKey.p - pkLen := p.PublicKeySize() - - // Deserialize the peer's ephemeral public key. - if len(recv) != p.UAKEInitiatorMessageSize() { - panic(ErrInvalidMessageSize) - } - rawPk, ct := recv[:pkLen], recv[pkLen:] - pk, err := p.PublicKeyFromBytes(rawPk) - if err != nil { - panic(err) - } - - xof := sha3.NewShake256() - var tk []byte - - message, tk, err = pk.KEMEncrypt(rng) - if err != nil { - panic(err) - } - xof.Write(tk) - - tk = sk.KEMDecrypt(ct) - xof.Write(tk) - sharedSecret = make([]byte, SymSize) - xof.Read(sharedSecret) - - return -} - -// AKEInitiatorMessageSize returns the size of the initiator AKE message -// in bytes. -func (p *ParameterSet) AKEInitiatorMessageSize() int { - return p.PublicKeySize() + p.CipherTextSize() -} - -// AKEResponderMessageSize returns the size of the responder AKE message -// in bytes. -func (p *ParameterSet) AKEResponderMessageSize() int { - return 2 * p.CipherTextSize() -} - -// AKEInitiatorState is a initiator AKE instance. Each instance MUST only be -// used for one key exchange and never reused. -type AKEInitiatorState struct { - // Message is the AKE message to send to the responder. - Message []byte - - eSk *PrivateKey - tk []byte -} - -// Shared generates a shared secret for the given AKE instance, responder -// message, and long term initiator private key. -// -// On failures sharedSecret will contain a randomized value. Providing a -// malformed responder message, or a private key that uses a different -// ParamterSet than the AKEInitiatorState will result in a panic. -func (s *AKEInitiatorState) Shared(recv []byte, initiatorPrivateKey *PrivateKey) (sharedSecret []byte) { - p := s.eSk.PublicKey.p - - if initiatorPrivateKey.PublicKey.p != p { - panic(ErrParameterSetMismatch) - } - if len(recv) != p.AKEResponderMessageSize() { - panic(ErrInvalidMessageSize) - } - ctLen := p.CipherTextSize() - - xof := sha3.NewShake256() - var tk []byte - - tk = s.eSk.KEMDecrypt(recv[:ctLen]) - xof.Write(tk) - - tk = initiatorPrivateKey.KEMDecrypt(recv[ctLen:]) - xof.Write(tk) - - xof.Write(s.tk) - sharedSecret = make([]byte, SymSize) - xof.Read(sharedSecret) - - return -} - -// NewAKEInitiatorState creates a new initiator AKE instance. -func (pk *PublicKey) NewAKEInitiatorState(rng io.Reader) (*AKEInitiatorState, error) { - s := new(AKEInitiatorState) - - // This is identical to the UAKE case, so just reuse the code. - us, err := pk.NewUAKEInitiatorState(rng) - if err != nil { - return nil, err - } - - s.Message = us.Message - s.eSk = us.eSk - s.tk = us.tk - - return s, nil -} - -// AKEResponderShared generates a responder message and shared secret given -// a initiator AKE message and long term initiator public key. -// -// On failures sharedSecret will contain a randomized value. Providing a -// malformed responder message, or a private key that uses a different -// ParamterSet than the AKEInitiatorState will result in a panic. -func (sk *PrivateKey) AKEResponderShared(rng io.Reader, recv []byte, peerPublicKey *PublicKey) (message, sharedSecret []byte) { - p := sk.PublicKey.p - pkLen := p.PublicKeySize() - - if peerPublicKey.p != p { - panic(ErrParameterSetMismatch) - } - - // Deserialize the peer's ephemeral public key. - if len(recv) != p.AKEInitiatorMessageSize() { - panic(ErrInvalidMessageSize) - } - rawPk, ct := recv[:pkLen], recv[pkLen:] - pk, err := p.PublicKeyFromBytes(rawPk) - if err != nil { - panic(err) - } - - message = make([]byte, 0, p.AKEResponderMessageSize()) - - xof := sha3.NewShake256() - var tk, tmp []byte - - tmp, tk, err = pk.KEMEncrypt(rng) - if err != nil { - panic(err) - } - xof.Write(tk) - message = append(message, tmp...) - - tmp, tk, err = peerPublicKey.KEMEncrypt(rng) - if err != nil { - panic(err) - } - xof.Write(tk) - message = append(message, tmp...) - - tk = sk.KEMDecrypt(ct) - xof.Write(tk) - sharedSecret = make([]byte, SymSize) - xof.Read(sharedSecret) - - return -} diff --git a/vendor/blitter.com/go/kyber/ntt.go b/vendor/blitter.com/go/kyber/ntt.go deleted file mode 100644 index 5fb9580..0000000 --- a/vendor/blitter.com/go/kyber/ntt.go +++ /dev/null @@ -1,65 +0,0 @@ -// ntt.go - Number-Theoretic Transform. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -// Computes negacyclic number-theoretic transform (NTT) of a polynomial (vector -// of 256 coefficients) in place; inputs assumed to be in normal order, output -// in bitreversed order. -func nttRef(p *[kyberN]uint16) { - var j int - k := 1 - for level := 7; level >= 0; level-- { - distance := 1 << uint(level) - for start := 0; start < kyberN; start = j + distance { - zeta := zetas[k] - k++ - for j = start; j < start+distance; j++ { - t := montgomeryReduce(uint32(zeta) * uint32(p[j+distance])) - p[j+distance] = barrettReduce(p[j] + 4*kyberQ - t) - - if level&1 == 1 { // odd level - p[j] = p[j] + t // Omit reduction (be lazy) - } else { - p[j] = barrettReduce(p[j] + t) - } - } - } - } -} - -// Computes inverse of negacyclic number-theoretic transform (NTT) of a -// polynomial (vector of 256 coefficients) in place; inputs assumed to be in -// bitreversed order, output in normal order. -func invnttRef(a *[kyberN]uint16) { - for level := 0; level < 8; level++ { - distance := 1 << uint(level) - for start := 0; start < distance; start++ { - var jTwiddle int - for j := start; j < kyberN-1; j += 2 * distance { - w := uint32(omegasInvBitrevMontgomery[jTwiddle]) - jTwiddle++ - - temp := a[j] - - if level&1 == 1 { // odd level - a[j] = barrettReduce(temp + a[j+distance]) - } else { - a[j] = temp + a[j+distance] // Omit reduction (be lazy) - } - - t := w * (uint32(temp) + 4*kyberQ - uint32(a[j+distance])) - - a[j+distance] = montgomeryReduce(t) - } - } - } - - for i, v := range psisInvMontgomery { - a[i] = montgomeryReduce(uint32(a[i]) * uint32(v)) - } -} diff --git a/vendor/blitter.com/go/kyber/params.go b/vendor/blitter.com/go/kyber/params.go deleted file mode 100644 index 32bcabd..0000000 --- a/vendor/blitter.com/go/kyber/params.go +++ /dev/null @@ -1,116 +0,0 @@ -// params.go - Kyber parameterization. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -const ( - // SymSize is the size of the shared key (and certain internal parameters - // such as hashes and seeds) in bytes. - SymSize = 32 - - kyberN = 256 - kyberQ = 7681 - - polySize = 416 - polyCompressedSize = 96 - - compressedCoeffSize = 352 -) - -var ( - // Kyber512 is the Kyber-512 parameter set, which aims to provide security - // equivalent to AES-128. - // - // This parameter set has a 1632 byte private key, 736 byte public key, - // and a 800 byte cipher text. - Kyber512 = newParameterSet("Kyber-512", 2) - - // Kyber768 is the Kyber-768 parameter set, which aims to provide security - // equivalent to AES-192. - // - // This parameter set has a 2400 byte private key, 1088 byte public key, - // and a 1152 byte cipher text. - Kyber768 = newParameterSet("Kyber-768", 3) - - // Kyber1024 is the Kyber-1024 parameter set, which aims to provide - // security equivalent to AES-256. - // - // This parameter set has a 3168 byte private key, 1440 byte public key, - // and a 1504 byte cipher text. - Kyber1024 = newParameterSet("Kyber-1024", 4) -) - -// ParameterSet is a Kyber parameter set. -type ParameterSet struct { - name string - - k int - eta int - - polyVecSize int - polyVecCompressedSize int - - indcpaMsgSize int - indcpaPublicKeySize int - indcpaSecretKeySize int - indcpaSize int - - publicKeySize int - secretKeySize int - cipherTextSize int -} - -// Name returns the name of a given ParameterSet. -func (p *ParameterSet) Name() string { - return p.name -} - -// PublicKeySize returns the size of a public key in bytes. -func (p *ParameterSet) PublicKeySize() int { - return p.publicKeySize -} - -// PrivateKeySize returns the size of a private key in bytes. -func (p *ParameterSet) PrivateKeySize() int { - return p.secretKeySize -} - -// CipherTextSize returns the size of a cipher text in bytes. -func (p *ParameterSet) CipherTextSize() int { - return p.cipherTextSize -} - -func newParameterSet(name string, k int) *ParameterSet { - var p ParameterSet - - p.name = name - p.k = k - switch k { - case 2: - p.eta = 5 - case 3: - p.eta = 4 - case 4: - p.eta = 3 - default: - panic("kyber: k must be in {2,3,4}") - } - - p.polyVecSize = k * polySize - p.polyVecCompressedSize = k * compressedCoeffSize - - p.indcpaMsgSize = SymSize - p.indcpaPublicKeySize = p.polyVecCompressedSize + SymSize - p.indcpaSecretKeySize = p.polyVecSize - p.indcpaSize = p.polyVecCompressedSize + polyCompressedSize - - p.publicKeySize = p.indcpaPublicKeySize - p.secretKeySize = p.indcpaSecretKeySize + p.indcpaPublicKeySize + 2*SymSize // 32 bytes of additional space to save H(pk) - p.cipherTextSize = p.indcpaSize - - return &p -} diff --git a/vendor/blitter.com/go/kyber/poly.go b/vendor/blitter.com/go/kyber/poly.go deleted file mode 100644 index 85f27b1..0000000 --- a/vendor/blitter.com/go/kyber/poly.go +++ /dev/null @@ -1,146 +0,0 @@ -// poly.go - Kyber polynomial. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -import "golang.org/x/crypto/sha3" - -// Elements of R_q = Z_q[X]/(X^n + 1). Represents polynomial coeffs[0] + -// X*coeffs[1] + X^2*xoeffs[2] + ... + X^{n-1}*coeffs[n-1]. -type poly struct { - coeffs [kyberN]uint16 -} - -// Compression and subsequent serialization of a polynomial. -func (p *poly) compress(r []byte) { - var t [8]uint32 - - for i, k := 0, 0; i < kyberN; i, k = i+8, k+3 { - for j := 0; j < 8; j++ { - t[j] = uint32((((freeze(p.coeffs[i+j]) << 3) + kyberQ/2) / kyberQ) & 7) - } - - r[k] = byte(t[0] | (t[1] << 3) | (t[2] << 6)) - r[k+1] = byte((t[2] >> 2) | (t[3] << 1) | (t[4] << 4) | (t[5] << 7)) - r[k+2] = byte((t[5] >> 1) | (t[6] << 2) | (t[7] << 5)) - } -} - -// De-serialization and subsequent decompression of a polynomial; approximate -// inverse of poly.compress(). -func (p *poly) decompress(a []byte) { - for i, off := 0, 0; i < kyberN; i, off = i+8, off+3 { - p.coeffs[i+0] = ((uint16(a[off]&7) * kyberQ) + 4) >> 3 - p.coeffs[i+1] = (((uint16(a[off]>>3) & 7) * kyberQ) + 4) >> 3 - p.coeffs[i+2] = (((uint16(a[off]>>6) | (uint16(a[off+1]<<2) & 4)) * kyberQ) + 4) >> 3 - p.coeffs[i+3] = (((uint16(a[off+1]>>1) & 7) * kyberQ) + 4) >> 3 - p.coeffs[i+4] = (((uint16(a[off+1]>>4) & 7) * kyberQ) + 4) >> 3 - p.coeffs[i+5] = (((uint16(a[off+1]>>7) | (uint16(a[off+2]<<1) & 6)) * kyberQ) + 4) >> 3 - p.coeffs[i+6] = (((uint16(a[off+2]>>2) & 7) * kyberQ) + 4) >> 3 - p.coeffs[i+7] = (((uint16(a[off+2] >> 5)) * kyberQ) + 4) >> 3 - } -} - -// Serialization of a polynomial. -func (p *poly) toBytes(r []byte) { - var t [8]uint16 - - for i := 0; i < kyberN/8; i++ { - for j := 0; j < 8; j++ { - t[j] = freeze(p.coeffs[8*i+j]) - } - - r[13*i+0] = byte(t[0] & 0xff) - r[13*i+1] = byte((t[0] >> 8) | ((t[1] & 0x07) << 5)) - r[13*i+2] = byte((t[1] >> 3) & 0xff) - r[13*i+3] = byte((t[1] >> 11) | ((t[2] & 0x3f) << 2)) - r[13*i+4] = byte((t[2] >> 6) | ((t[3] & 0x01) << 7)) - r[13*i+5] = byte((t[3] >> 1) & 0xff) - r[13*i+6] = byte((t[3] >> 9) | ((t[4] & 0x0f) << 4)) - r[13*i+7] = byte((t[4] >> 4) & 0xff) - r[13*i+8] = byte((t[4] >> 12) | ((t[5] & 0x7f) << 1)) - r[13*i+9] = byte((t[5] >> 7) | ((t[6] & 0x03) << 6)) - r[13*i+10] = byte((t[6] >> 2) & 0xff) - r[13*i+11] = byte((t[6] >> 10) | ((t[7] & 0x1f) << 3)) - r[13*i+12] = byte(t[7] >> 5) - } -} - -// De-serialization of a polynomial; inverse of poly.toBytes(). -func (p *poly) fromBytes(a []byte) { - for i := 0; i < kyberN/8; i++ { - p.coeffs[8*i+0] = uint16(a[13*i+0]) | ((uint16(a[13*i+1]) & 0x1f) << 8) - p.coeffs[8*i+1] = (uint16(a[13*i+1]) >> 5) | (uint16(a[13*i+2]) << 3) | ((uint16(a[13*i+3]) & 0x03) << 11) - p.coeffs[8*i+2] = (uint16(a[13*i+3]) >> 2) | ((uint16(a[13*i+4]) & 0x7f) << 6) - p.coeffs[8*i+3] = (uint16(a[13*i+4]) >> 7) | (uint16(a[13*i+5]) << 1) | ((uint16(a[13*i+6]) & 0x0f) << 9) - p.coeffs[8*i+4] = (uint16(a[13*i+6]) >> 4) | (uint16(a[13*i+7]) << 4) | ((uint16(a[13*i+8]) & 0x01) << 12) - p.coeffs[8*i+5] = (uint16(a[13*i+8]) >> 1) | ((uint16(a[13*i+9]) & 0x3f) << 7) - p.coeffs[8*i+6] = (uint16(a[13*i+9]) >> 6) | (uint16(a[13*i+10]) << 2) | ((uint16(a[13*i+11]) & 0x07) << 10) - p.coeffs[8*i+7] = (uint16(a[13*i+11]) >> 3) | (uint16(a[13*i+12]) << 5) - } -} - -// Convert 32-byte message to polynomial. -func (p *poly) fromMsg(msg []byte) { - for i, v := range msg[:SymSize] { - for j := 0; j < 8; j++ { - mask := -((uint16(v) >> uint(j)) & 1) - p.coeffs[8*i+j] = mask & ((kyberQ + 1) / 2) - } - } -} - -// Convert polynomial to 32-byte message. -func (p *poly) toMsg(msg []byte) { - for i := 0; i < SymSize; i++ { - msg[i] = 0 - for j := 0; j < 8; j++ { - t := (((freeze(p.coeffs[8*i+j]) << 1) + kyberQ/2) / kyberQ) & 1 - msg[i] |= byte(t << uint(j)) - } - } -} - -// Sample a polynomial deterministically from a seed and a nonce, with output -// polynomial close to centered binomial distribution with parameter eta. -func (p *poly) getNoise(seed []byte, nonce byte, eta int) { - extSeed := make([]byte, 0, SymSize+1) - extSeed = append(extSeed, seed...) - extSeed = append(extSeed, nonce) - - buf := make([]byte, eta*kyberN/4) - sha3.ShakeSum256(buf, extSeed) - - p.cbd(buf, eta) -} - -// Computes negacyclic number-theoretic transform (NTT) of a polynomial in -// place; inputs assumed to be in normal order, output in bitreversed order. -func (p *poly) ntt() { - hardwareAccelImpl.nttFn(&p.coeffs) -} - -// Computes inverse of negacyclic number-theoretic transform (NTT) of a -// polynomial in place; inputs assumed to be in bitreversed order, output in -// normal order. -func (p *poly) invntt() { - hardwareAccelImpl.invnttFn(&p.coeffs) -} - -// Add two polynomials. -func (p *poly) add(a, b *poly) { - for i := range p.coeffs { - p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) - } -} - -// Subtract two polynomials. -func (p *poly) sub(a, b *poly) { - for i := range p.coeffs { - p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*kyberQ - b.coeffs[i]) - } -} diff --git a/vendor/blitter.com/go/kyber/polyvec.go b/vendor/blitter.com/go/kyber/polyvec.go deleted file mode 100644 index f4c4b4a..0000000 --- a/vendor/blitter.com/go/kyber/polyvec.go +++ /dev/null @@ -1,115 +0,0 @@ -// polyvec.go - Vector of Kyber polynomials. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -type polyVec struct { - vec []*poly -} - -// Compress and serialize vector of polynomials. -func (v *polyVec) compress(r []byte) { - var off int - for _, vec := range v.vec { - for j := 0; j < kyberN/8; j++ { - var t [8]uint16 - for k := 0; k < 8; k++ { - t[k] = uint16((((uint32(freeze(vec.coeffs[8*j+k])) << 11) + kyberQ/2) / kyberQ) & 0x7ff) - } - - r[off+11*j+0] = byte(t[0] & 0xff) - r[off+11*j+1] = byte((t[0] >> 8) | ((t[1] & 0x1f) << 3)) - r[off+11*j+2] = byte((t[1] >> 5) | ((t[2] & 0x03) << 6)) - r[off+11*j+3] = byte((t[2] >> 2) & 0xff) - r[off+11*j+4] = byte((t[2] >> 10) | ((t[3] & 0x7f) << 1)) - r[off+11*j+5] = byte((t[3] >> 7) | ((t[4] & 0x0f) << 4)) - r[off+11*j+6] = byte((t[4] >> 4) | ((t[5] & 0x01) << 7)) - r[off+11*j+7] = byte((t[5] >> 1) & 0xff) - r[off+11*j+8] = byte((t[5] >> 9) | ((t[6] & 0x3f) << 2)) - r[off+11*j+9] = byte((t[6] >> 6) | ((t[7] & 0x07) << 5)) - r[off+11*j+10] = byte((t[7] >> 3)) - } - off += compressedCoeffSize - } -} - -// De-serialize and decompress vector of polynomials; approximate inverse of -// polyVec.compress(). -func (v *polyVec) decompress(a []byte) { - var off int - for _, vec := range v.vec { - for j := 0; j < kyberN/8; j++ { - vec.coeffs[8*j+0] = uint16((((uint32(a[off+11*j+0]) | ((uint32(a[off+11*j+1]) & 0x07) << 8)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+1] = uint16(((((uint32(a[off+11*j+1]) >> 3) | ((uint32(a[off+11*j+2]) & 0x3f) << 5)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+2] = uint16(((((uint32(a[off+11*j+2]) >> 6) | ((uint32(a[off+11*j+3]) & 0xff) << 2) | ((uint32(a[off+11*j+4]) & 0x01) << 10)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+3] = uint16(((((uint32(a[off+11*j+4]) >> 1) | ((uint32(a[off+11*j+5]) & 0x0f) << 7)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+4] = uint16(((((uint32(a[off+11*j+5]) >> 4) | ((uint32(a[off+11*j+6]) & 0x7f) << 4)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+5] = uint16(((((uint32(a[off+11*j+6]) >> 7) | ((uint32(a[off+11*j+7]) & 0xff) << 1) | ((uint32(a[off+11*j+8]) & 0x03) << 9)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+6] = uint16(((((uint32(a[off+11*j+8]) >> 2) | ((uint32(a[off+11*j+9]) & 0x1f) << 6)) * kyberQ) + 1024) >> 11) - vec.coeffs[8*j+7] = uint16(((((uint32(a[off+11*j+9]) >> 5) | ((uint32(a[off+11*j+10]) & 0xff) << 3)) * kyberQ) + 1024) >> 11) - } - off += compressedCoeffSize - } -} - -// Serialize vector of polynomials. -func (v *polyVec) toBytes(r []byte) { - for i, p := range v.vec { - p.toBytes(r[i*polySize:]) - } -} - -// De-serialize vector of polynomials; inverse of polyVec.toBytes(). -func (v *polyVec) fromBytes(a []byte) { - for i, p := range v.vec { - p.fromBytes(a[i*polySize:]) - } -} - -// Apply forward NTT to all elements of a vector of polynomials. -func (v *polyVec) ntt() { - for _, p := range v.vec { - p.ntt() - } -} - -// Apply inverse NTT to all elements of a vector of polynomials. -func (v *polyVec) invntt() { - for _, p := range v.vec { - p.invntt() - } -} - -// Pointwise multiply elements of a and b and accumulate into p. -func (p *poly) pointwiseAcc(a, b *polyVec) { - hardwareAccelImpl.pointwiseAccFn(p, a, b) -} - -// Add vectors of polynomials. -func (v *polyVec) add(a, b *polyVec) { - for i, p := range v.vec { - p.add(a.vec[i], b.vec[i]) - } -} - -// Get compressed and serialized size in bytes. -func (v *polyVec) compressedSize() int { - return len(v.vec) * compressedCoeffSize -} - -func pointwiseAccRef(p *poly, a, b *polyVec) { - for j := 0; j < kyberN; j++ { - t := montgomeryReduce(4613 * uint32(b.vec[0].coeffs[j])) // 4613 = 2^{2*18} % q - p.coeffs[j] = montgomeryReduce(uint32(a.vec[0].coeffs[j]) * uint32(t)) - for i := 1; i < len(a.vec); i++ { // len(a.vec) == kyberK - t = montgomeryReduce(4613 * uint32(b.vec[i].coeffs[j])) - p.coeffs[j] += montgomeryReduce(uint32(a.vec[i].coeffs[j]) * uint32(t)) - } - - p.coeffs[j] = barrettReduce(p.coeffs[j]) - } -} diff --git a/vendor/blitter.com/go/kyber/precomp.go b/vendor/blitter.com/go/kyber/precomp.go deleted file mode 100644 index a18cd8f..0000000 --- a/vendor/blitter.com/go/kyber/precomp.go +++ /dev/null @@ -1,87 +0,0 @@ -// precomp.go - Precomputed NTT constants. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -// Precomputed constants for the forward NTT and inverse NTT. -// Computed using Pari/GP as follows: -// -// brv=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240, \ -// 8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248, \ -// 4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244, \ -// 12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252, \ -// 2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242, \ -// 10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250, \ -// 6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246, \ -// 14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254, \ -// 1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241, \ -// 9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249, \ -// 5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245, \ -// 13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253, \ -// 3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243, \ -// 11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251, \ -// 7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247, \ -// 15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255]; -// -// q = 7681; -// n = 256; -// mont = Mod(2^18,q); -// -// g=0; for(i=2,q-1,if(znorder(Mod(i,q)) == 2*n, g=Mod(i,q); break)) -// -// zetas = lift(vector(n, i, g^(brv[i])*mont)) -// omegas_inv_bitrev_montgomery = lift(vector(n/2, i, (g^2)^(-brv[2*(i-1)+1])*mont)) -// psis_inv_montgomery = lift(vector(n, i, g^(-(i-1))/n*mont)) - -var zetas = [kyberN]uint16{ - 990, 7427, 2634, 6819, 578, 3281, 2143, 1095, 484, 6362, 3336, 5382, 6086, 3823, 877, 5656, - 3583, 7010, 6414, 263, 1285, 291, 7143, 7338, 1581, 5134, 5184, 5932, 4042, 5775, 2468, 3, - 606, 729, 5383, 962, 3240, 7548, 5129, 7653, 5929, 4965, 2461, 641, 1584, 2666, 1142, 157, - 7407, 5222, 5602, 5142, 6140, 5485, 4931, 1559, 2085, 5284, 2056, 3538, 7269, 3535, 7190, 1957, - 3465, 6792, 1538, 4664, 2023, 7643, 3660, 7673, 1694, 6905, 3995, 3475, 5939, 1859, 6910, 4434, - 1019, 1492, 7087, 4761, 657, 4859, 5798, 2640, 1693, 2607, 2782, 5400, 6466, 1010, 957, 3851, - 2121, 6392, 7319, 3367, 3659, 3375, 6430, 7583, 1549, 5856, 4773, 6084, 5544, 1650, 3997, 4390, - 6722, 2915, 4245, 2635, 6128, 7676, 5737, 1616, 3457, 3132, 7196, 4702, 6239, 851, 2122, 3009, - 7613, 7295, 2007, 323, 5112, 3716, 2289, 6442, 6965, 2713, 7126, 3401, 963, 6596, 607, 5027, - 7078, 4484, 5937, 944, 2860, 2680, 5049, 1777, 5850, 3387, 6487, 6777, 4812, 4724, 7077, 186, - 6848, 6793, 3463, 5877, 1174, 7116, 3077, 5945, 6591, 590, 6643, 1337, 6036, 3991, 1675, 2053, - 6055, 1162, 1679, 3883, 4311, 2106, 6163, 4486, 6374, 5006, 4576, 4288, 5180, 4102, 282, 6119, - 7443, 6330, 3184, 4971, 2530, 5325, 4171, 7185, 5175, 5655, 1898, 382, 7211, 43, 5965, 6073, - 1730, 332, 1577, 3304, 2329, 1699, 6150, 2379, 5113, 333, 3502, 4517, 1480, 1172, 5567, 651, - 925, 4573, 599, 1367, 4109, 1863, 6929, 1605, 3866, 2065, 4048, 839, 5764, 2447, 2022, 3345, - 1990, 4067, 2036, 2069, 3567, 7371, 2368, 339, 6947, 2159, 654, 7327, 2768, 6676, 987, 2214, -} - -var omegasInvBitrevMontgomery = [kyberN / 2]uint16{ - 990, 254, 862, 5047, 6586, 5538, 4400, 7103, 2025, 6804, 3858, 1595, 2299, 4345, 1319, 7197, - 7678, 5213, 1906, 3639, 1749, 2497, 2547, 6100, 343, 538, 7390, 6396, 7418, 1267, 671, 4098, - 5724, 491, 4146, 412, 4143, 5625, 2397, 5596, 6122, 2750, 2196, 1541, 2539, 2079, 2459, 274, - 7524, 6539, 5015, 6097, 7040, 5220, 2716, 1752, 28, 2552, 133, 4441, 6719, 2298, 6952, 7075, - 4672, 5559, 6830, 1442, 2979, 485, 4549, 4224, 6065, 1944, 5, 1553, 5046, 3436, 4766, 959, - 3291, 3684, 6031, 2137, 1597, 2908, 1825, 6132, 98, 1251, 4306, 4022, 4314, 362, 1289, 5560, - 3830, 6724, 6671, 1215, 2281, 4899, 5074, 5988, 5041, 1883, 2822, 7024, 2920, 594, 6189, 6662, - 3247, 771, 5822, 1742, 4206, 3686, 776, 5987, 8, 4021, 38, 5658, 3017, 6143, 889, 4216, -} - -var psisInvMontgomery = [kyberN]uint16{ - 1024, 4972, 5779, 6907, 4943, 4168, 315, 5580, 90, 497, 1123, 142, 4710, 5527, 2443, 4871, - 698, 2489, 2394, 4003, 684, 2241, 2390, 7224, 5072, 2064, 4741, 1687, 6841, 482, 7441, 1235, - 2126, 4742, 2802, 5744, 6287, 4933, 699, 3604, 1297, 2127, 5857, 1705, 3868, 3779, 4397, 2177, - 159, 622, 2240, 1275, 640, 6948, 4572, 5277, 209, 2605, 1157, 7328, 5817, 3191, 1662, 2009, - 4864, 574, 2487, 164, 6197, 4436, 7257, 3462, 4268, 4281, 3414, 4515, 3170, 1290, 2003, 5855, - 7156, 6062, 7531, 1732, 3249, 4884, 7512, 3590, 1049, 2123, 1397, 6093, 3691, 6130, 6541, 3946, - 6258, 3322, 1788, 4241, 4900, 2309, 1400, 1757, 400, 502, 6698, 2338, 3011, 668, 7444, 4580, - 6516, 6795, 2959, 4136, 3040, 2279, 6355, 3943, 2913, 6613, 7416, 4084, 6508, 5556, 4054, 3782, - 61, 6567, 2212, 779, 632, 5709, 5667, 4923, 4911, 6893, 4695, 4164, 3536, 2287, 7594, 2848, - 3267, 1911, 3128, 546, 1991, 156, 4958, 5531, 6903, 483, 875, 138, 250, 2234, 2266, 7222, - 2842, 4258, 812, 6703, 232, 5207, 6650, 2585, 1900, 6225, 4932, 7265, 4701, 3173, 4635, 6393, - 227, 7313, 4454, 4284, 6759, 1224, 5223, 1447, 395, 2608, 4502, 4037, 189, 3348, 54, 6443, - 2210, 6230, 2826, 1780, 3002, 5995, 1955, 6102, 6045, 3938, 5019, 4417, 1434, 1262, 1507, 5847, - 5917, 7157, 7177, 6434, 7537, 741, 4348, 1309, 145, 374, 2236, 4496, 5028, 6771, 6923, 7421, - 1978, 1023, 3857, 6876, 1102, 7451, 4704, 6518, 1344, 765, 384, 5705, 1207, 1630, 4734, 1563, - 6839, 5933, 1954, 4987, 7142, 5814, 7527, 4953, 7637, 4707, 2182, 5734, 2818, 541, 4097, 5641, -} diff --git a/vendor/blitter.com/go/kyber/reduce.go b/vendor/blitter.com/go/kyber/reduce.go deleted file mode 100644 index ada3eec..0000000 --- a/vendor/blitter.com/go/kyber/reduce.go +++ /dev/null @@ -1,43 +0,0 @@ -// reduce.go - Montgomery, Barret, and Full reduction. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to the software, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package kyber - -const ( - qinv = 7679 // -inverse_mod(q,2^18) - rlog = 18 -) - -// Montgomery reduction; given a 32-bit integer a, computes 16-bit integer -// congruent to a * R^-1 mod q, where R=2^18 (see value of rlog). -func montgomeryReduce(a uint32) uint16 { - u := a * qinv - u &= (1 << rlog) - 1 - u *= kyberQ - a += u - return uint16(a >> rlog) -} - -// Barrett reduction; given a 16-bit integer a, computes 16-bit integer -// congruent to a mod q in {0,...,11768}. -func barrettReduce(a uint16) uint16 { - u := uint32(a >> 13) // ((uint32_t) a * sinv) >> 16 - u *= kyberQ - a -= uint16(u) - return a -} - -// Full reduction; given a 16-bit integer a, computes unsigned integer a mod q. -func freeze(x uint16) uint16 { - r := barrettReduce(x) - - m := r - kyberQ - c := int16(m) - c >>= 15 - r = m ^ ((r ^ m) & uint16(c)) - return r -} diff --git a/vendor/blitter.com/go/mtwist/mtwist.go b/vendor/blitter.com/go/mtwist/mtwist.go deleted file mode 100644 index 4527525..0000000 --- a/vendor/blitter.com/go/mtwist/mtwist.go +++ /dev/null @@ -1,125 +0,0 @@ -// MersenneTwister -// From https://gist.github.com/cuixin/1b8b6bd7bfbde8fe76e8 -package MersenneTwister - -import ( - "crypto" - - _ "crypto/sha512" -) - -const N = 312 -const M = 156 -const MATRIX_A = 0xB5026F5AA96619E9 -const UPPER_MASK = 0xFFFFFFFF80000000 -const LOWER_MASK = 0x7FFFFFFF - -type MT19937_64 struct { - array [N]uint64 //state vector - index uint64 // array index -} - -func New() *MT19937_64 { - return &MT19937_64{ - index: N + 1, - } -} - -func (m *MT19937_64) _initstate() { - // Recommendations abound that mtwist should throw away 1st 10000 or so - // of initial state - for i := 0; i < 10000; i++ { - _ = m.Int63() - } -} - -func (m *MT19937_64) Seed(seed int64) { - m.array[0] = uint64(seed) - for m.index = 1; m.index < N; m.index++ { - m.array[m.index] = (6364136223846793005*(m.array[m.index-1]^(m.array[m.index-1]>>62)) + m.index) - } - m._initstate() - //fmt.Printf("final array(s):%v\n", m.array) -} - -func _bytesToUint64(b []byte) (r uint64) { - r = uint64(b[0])<<56 + - uint64(b[1])<<48 + - uint64(b[2])<<40 + - uint64(b[3])<<32 + - uint64(b[4])<<24 + - uint64(b[5])<<16 + - uint64(b[6])<<8 + - uint64(b[7]) - return -} - -func (m *MT19937_64) SeedFullState(s []byte) { - //fmt.Printf("s:%v\n", s) - if len(s) < N*8 { - // Expand s if shorter than mtwist array state - ha := crypto.SHA512 - h := ha.New() - shortfallChunks := ((N * 8) - len(s)) / h.Size() - //shortfallRem := ((N * 8) - len(s)) % h.Size() - //fmt.Printf("chunks, rem:%d,%d\n", shortfallChunks, shortfallRem) - idx := 0 - for idx < shortfallChunks { - _, _ = h.Write(s) - s = h.Sum(s) - idx += 1 - } - _, _ = h.Write(s) - s = h.Sum(s) - //fmt.Printf("exp s:%v\n", s) - } - - for idx := 0; idx < N; { - m.array[idx] = _bytesToUint64(s[idx*8 : (idx*8)+8]) - idx += 1 - } - //fmt.Printf("final array(xs):%v\n", m.array) - m.index = 0 - m._initstate() -} - -func (m *MT19937_64) Int63() uint64 { - var i int - var x uint64 - mag01 := []uint64{0, MATRIX_A} - if m.index >= N { - if m.index == N+1 { - m.Seed(int64(5489)) - } - - for i = 0; i < N-M; i++ { - x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) - m.array[i] = m.array[i+(M)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] - } - for ; i < N-1; i++ { - x = (m.array[i] & UPPER_MASK) | (m.array[i+1] & LOWER_MASK) - m.array[i] = m.array[i+(M-N)] ^ (x >> 1) ^ mag01[int(x&uint64(1))] - } - x = (m.array[N-1] & UPPER_MASK) | (m.array[0] & LOWER_MASK) - m.array[N-1] = m.array[M-1] ^ (x >> 1) ^ mag01[int(x&uint64(1))] - m.index = 0 - } - x = m.array[m.index] - m.index++ - x ^= (x >> 29) & 0x5555555555555555 - x ^= (x << 17) & 0x71D67FFFEDA60000 - x ^= (x << 37) & 0xFFF7EEE000000000 - x ^= (x >> 43) - return x -} - -func (m *MT19937_64) IntN(value uint64) uint64 { - return m.Int63() % value -} - -func (m *MT19937_64) Read(p []byte) (n int, err error) { - for idx := 0; idx < len(p); idx++ { - p[idx] = byte( (m.Int63()>>47) % 256) - } - return n, nil -} diff --git a/vendor/blitter.com/go/newhope/LICENSE b/vendor/blitter.com/go/newhope/LICENSE deleted file mode 100644 index 6ca207e..0000000 --- a/vendor/blitter.com/go/newhope/LICENSE +++ /dev/null @@ -1,122 +0,0 @@ -Creative Commons Legal Code - -CC0 1.0 Universal - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE - LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN - ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS - INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES - REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS - PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM - THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED - HEREUNDER. - -Statement of Purpose - -The laws of most jurisdictions throughout the world automatically confer -exclusive Copyright and Related Rights (defined below) upon the creator -and subsequent owner(s) (each and all, an "owner") of an original work of -authorship and/or a database (each, a "Work"). - -Certain owners wish to permanently relinquish those rights to a Work for -the purpose of contributing to a commons of creative, cultural and -scientific works ("Commons") that the public can reliably and without fear -of later claims of infringement build upon, modify, incorporate in other -works, reuse and redistribute as freely as possible in any form whatsoever -and for any purposes, including without limitation commercial purposes. -These owners may contribute to the Commons to promote the ideal of a free -culture and the further production of creative, cultural and scientific -works, or to gain reputation or greater distribution for their Work in -part through the use and efforts of others. - -For these and/or other purposes and motivations, and without any -expectation of additional consideration or compensation, the person -associating CC0 with a Work (the "Affirmer"), to the extent that he or she -is an owner of Copyright and Related Rights in the Work, voluntarily -elects to apply CC0 to the Work and publicly distribute the Work under its -terms, with knowledge of his or her Copyright and Related Rights in the -Work and the meaning and intended legal effect of CC0 on those rights. - -1. Copyright and Related Rights. A Work made available under CC0 may be -protected by copyright and related or neighboring rights ("Copyright and -Related Rights"). Copyright and Related Rights include, but are not -limited to, the following: - - i. the right to reproduce, adapt, distribute, perform, display, - communicate, and translate a Work; - ii. moral rights retained by the original author(s) and/or performer(s); -iii. publicity and privacy rights pertaining to a person's image or - likeness depicted in a Work; - iv. rights protecting against unfair competition in regards to a Work, - subject to the limitations in paragraph 4(a), below; - v. rights protecting the extraction, dissemination, use and reuse of data - in a Work; - vi. database rights (such as those arising under Directive 96/9/EC of the - European Parliament and of the Council of 11 March 1996 on the legal - protection of databases, and under any national implementation - thereof, including any amended or successor version of such - directive); and -vii. other similar, equivalent or corresponding rights throughout the - world based on applicable law or treaty, and any national - implementations thereof. - -2. Waiver. To the greatest extent permitted by, but not in contravention -of, applicable law, Affirmer hereby overtly, fully, permanently, -irrevocably and unconditionally waives, abandons, and surrenders all of -Affirmer's Copyright and Related Rights and associated claims and causes -of action, whether now known or unknown (including existing as well as -future claims and causes of action), in the Work (i) in all territories -worldwide, (ii) for the maximum duration provided by applicable law or -treaty (including future time extensions), (iii) in any current or future -medium and for any number of copies, and (iv) for any purpose whatsoever, -including without limitation commercial, advertising or promotional -purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each -member of the public at large and to the detriment of Affirmer's heirs and -successors, fully intending that such Waiver shall not be subject to -revocation, rescission, cancellation, termination, or any other legal or -equitable action to disrupt the quiet enjoyment of the Work by the public -as contemplated by Affirmer's express Statement of Purpose. - -3. Public License Fallback. Should any part of the Waiver for any reason -be judged legally invalid or ineffective under applicable law, then the -Waiver shall be preserved to the maximum extent permitted taking into -account Affirmer's express Statement of Purpose. In addition, to the -extent the Waiver is so judged Affirmer hereby grants to each affected -person a royalty-free, non transferable, non sublicensable, non exclusive, -irrevocable and unconditional license to exercise Affirmer's Copyright and -Related Rights in the Work (i) in all territories worldwide, (ii) for the -maximum duration provided by applicable law or treaty (including future -time extensions), (iii) in any current or future medium and for any number -of copies, and (iv) for any purpose whatsoever, including without -limitation commercial, advertising or promotional purposes (the -"License"). The License shall be deemed effective as of the date CC0 was -applied by Affirmer to the Work. Should any part of the License for any -reason be judged legally invalid or ineffective under applicable law, such -partial invalidity or ineffectiveness shall not invalidate the remainder -of the License, and in such case Affirmer hereby affirms that he or she -will not (i) exercise any of his or her remaining Copyright and Related -Rights in the Work or (ii) assert any associated claims and causes of -action with respect to the Work, in either case contrary to Affirmer's -express Statement of Purpose. - -4. Limitations and Disclaimers. - - a. No trademark or patent rights held by Affirmer are waived, abandoned, - surrendered, licensed or otherwise affected by this document. - b. Affirmer offers the Work as-is and makes no representations or - warranties of any kind concerning the Work, express, implied, - statutory or otherwise, including without limitation warranties of - title, merchantability, fitness for a particular purpose, non - infringement, or the absence of latent or other defects, accuracy, or - the present or absence of errors, whether or not discoverable, all to - the greatest extent permissible under applicable law. - c. Affirmer disclaims responsibility for clearing rights of other persons - that may apply to the Work or any use thereof, including without - limitation any person's Copyright and Related Rights in the Work. - Further, Affirmer disclaims responsibility for obtaining any necessary - consents, permissions or other rights required for any use of the - Work. - d. Affirmer understands and acknowledges that Creative Commons is not a - party to this document and has no duty or obligation with respect to - this CC0 or use of the Work. - diff --git a/vendor/blitter.com/go/newhope/batcher.go b/vendor/blitter.com/go/newhope/batcher.go deleted file mode 100644 index 2f99489..0000000 --- a/vendor/blitter.com/go/newhope/batcher.go +++ /dev/null @@ -1,929 +0,0 @@ -// batcher.go - Constant time polynomial sampler. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -func batcher84(x []uint16) { - // In theory this should probably be inlined. - compareAndSwap := func(x []uint16, i, j int) { - const _5q = 5 * paramQ - var c int32 - var t uint16 - - c = _5q - 1 - int32(x[16*i]) - c >>= 31 - t = x[16*i] ^ x[16*j] - t &= uint16(c) - x[16*i] ^= t - x[16*j] ^= t - } - - compareAndSwap(x, 0, 1) - compareAndSwap(x, 2, 3) - compareAndSwap(x, 0, 2) - compareAndSwap(x, 1, 3) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 4, 5) - compareAndSwap(x, 6, 7) - compareAndSwap(x, 4, 6) - compareAndSwap(x, 5, 7) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 0, 4) - compareAndSwap(x, 2, 6) - compareAndSwap(x, 2, 4) - compareAndSwap(x, 1, 5) - compareAndSwap(x, 3, 7) - compareAndSwap(x, 3, 5) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 3, 4) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 8, 9) - compareAndSwap(x, 10, 11) - compareAndSwap(x, 8, 10) - compareAndSwap(x, 9, 11) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 12, 13) - compareAndSwap(x, 14, 15) - compareAndSwap(x, 12, 14) - compareAndSwap(x, 13, 15) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 8, 12) - compareAndSwap(x, 10, 14) - compareAndSwap(x, 10, 12) - compareAndSwap(x, 9, 13) - compareAndSwap(x, 11, 15) - compareAndSwap(x, 11, 13) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 11, 12) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 0, 8) - compareAndSwap(x, 4, 12) - compareAndSwap(x, 4, 8) - compareAndSwap(x, 2, 10) - compareAndSwap(x, 6, 14) - compareAndSwap(x, 6, 10) - compareAndSwap(x, 2, 4) - compareAndSwap(x, 6, 8) - compareAndSwap(x, 10, 12) - compareAndSwap(x, 1, 9) - compareAndSwap(x, 5, 13) - compareAndSwap(x, 5, 9) - compareAndSwap(x, 3, 11) - compareAndSwap(x, 7, 15) - compareAndSwap(x, 7, 11) - compareAndSwap(x, 3, 5) - compareAndSwap(x, 7, 9) - compareAndSwap(x, 11, 13) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 3, 4) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 7, 8) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 11, 12) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 16, 17) - compareAndSwap(x, 18, 19) - compareAndSwap(x, 16, 18) - compareAndSwap(x, 17, 19) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 20, 21) - compareAndSwap(x, 22, 23) - compareAndSwap(x, 20, 22) - compareAndSwap(x, 21, 23) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 16, 20) - compareAndSwap(x, 18, 22) - compareAndSwap(x, 18, 20) - compareAndSwap(x, 17, 21) - compareAndSwap(x, 19, 23) - compareAndSwap(x, 19, 21) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 19, 20) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 24, 25) - compareAndSwap(x, 26, 27) - compareAndSwap(x, 24, 26) - compareAndSwap(x, 25, 27) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 28, 29) - compareAndSwap(x, 30, 31) - compareAndSwap(x, 28, 30) - compareAndSwap(x, 29, 31) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 24, 28) - compareAndSwap(x, 26, 30) - compareAndSwap(x, 26, 28) - compareAndSwap(x, 25, 29) - compareAndSwap(x, 27, 31) - compareAndSwap(x, 27, 29) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 27, 28) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 16, 24) - compareAndSwap(x, 20, 28) - compareAndSwap(x, 20, 24) - compareAndSwap(x, 18, 26) - compareAndSwap(x, 22, 30) - compareAndSwap(x, 22, 26) - compareAndSwap(x, 18, 20) - compareAndSwap(x, 22, 24) - compareAndSwap(x, 26, 28) - compareAndSwap(x, 17, 25) - compareAndSwap(x, 21, 29) - compareAndSwap(x, 21, 25) - compareAndSwap(x, 19, 27) - compareAndSwap(x, 23, 31) - compareAndSwap(x, 23, 27) - compareAndSwap(x, 19, 21) - compareAndSwap(x, 23, 25) - compareAndSwap(x, 27, 29) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 19, 20) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 23, 24) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 27, 28) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 0, 16) - compareAndSwap(x, 8, 24) - compareAndSwap(x, 8, 16) - compareAndSwap(x, 4, 20) - compareAndSwap(x, 12, 28) - compareAndSwap(x, 12, 20) - compareAndSwap(x, 4, 8) - compareAndSwap(x, 12, 16) - compareAndSwap(x, 20, 24) - compareAndSwap(x, 2, 18) - compareAndSwap(x, 10, 26) - compareAndSwap(x, 10, 18) - compareAndSwap(x, 6, 22) - compareAndSwap(x, 14, 30) - compareAndSwap(x, 14, 22) - compareAndSwap(x, 6, 10) - compareAndSwap(x, 14, 18) - compareAndSwap(x, 22, 26) - compareAndSwap(x, 2, 4) - compareAndSwap(x, 6, 8) - compareAndSwap(x, 10, 12) - compareAndSwap(x, 14, 16) - compareAndSwap(x, 18, 20) - compareAndSwap(x, 22, 24) - compareAndSwap(x, 26, 28) - compareAndSwap(x, 1, 17) - compareAndSwap(x, 9, 25) - compareAndSwap(x, 9, 17) - compareAndSwap(x, 5, 21) - compareAndSwap(x, 13, 29) - compareAndSwap(x, 13, 21) - compareAndSwap(x, 5, 9) - compareAndSwap(x, 13, 17) - compareAndSwap(x, 21, 25) - compareAndSwap(x, 3, 19) - compareAndSwap(x, 11, 27) - compareAndSwap(x, 11, 19) - compareAndSwap(x, 7, 23) - compareAndSwap(x, 15, 31) - compareAndSwap(x, 15, 23) - compareAndSwap(x, 7, 11) - compareAndSwap(x, 15, 19) - compareAndSwap(x, 23, 27) - compareAndSwap(x, 3, 5) - compareAndSwap(x, 7, 9) - compareAndSwap(x, 11, 13) - compareAndSwap(x, 15, 17) - compareAndSwap(x, 19, 21) - compareAndSwap(x, 23, 25) - compareAndSwap(x, 27, 29) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 3, 4) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 7, 8) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 11, 12) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 15, 16) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 19, 20) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 23, 24) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 27, 28) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 32, 33) - compareAndSwap(x, 34, 35) - compareAndSwap(x, 32, 34) - compareAndSwap(x, 33, 35) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 36, 37) - compareAndSwap(x, 38, 39) - compareAndSwap(x, 36, 38) - compareAndSwap(x, 37, 39) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 32, 36) - compareAndSwap(x, 34, 38) - compareAndSwap(x, 34, 36) - compareAndSwap(x, 33, 37) - compareAndSwap(x, 35, 39) - compareAndSwap(x, 35, 37) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 35, 36) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 40, 41) - compareAndSwap(x, 42, 43) - compareAndSwap(x, 40, 42) - compareAndSwap(x, 41, 43) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 44, 45) - compareAndSwap(x, 46, 47) - compareAndSwap(x, 44, 46) - compareAndSwap(x, 45, 47) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 40, 44) - compareAndSwap(x, 42, 46) - compareAndSwap(x, 42, 44) - compareAndSwap(x, 41, 45) - compareAndSwap(x, 43, 47) - compareAndSwap(x, 43, 45) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 43, 44) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 32, 40) - compareAndSwap(x, 36, 44) - compareAndSwap(x, 36, 40) - compareAndSwap(x, 34, 42) - compareAndSwap(x, 38, 46) - compareAndSwap(x, 38, 42) - compareAndSwap(x, 34, 36) - compareAndSwap(x, 38, 40) - compareAndSwap(x, 42, 44) - compareAndSwap(x, 33, 41) - compareAndSwap(x, 37, 45) - compareAndSwap(x, 37, 41) - compareAndSwap(x, 35, 43) - compareAndSwap(x, 39, 47) - compareAndSwap(x, 39, 43) - compareAndSwap(x, 35, 37) - compareAndSwap(x, 39, 41) - compareAndSwap(x, 43, 45) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 35, 36) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 39, 40) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 43, 44) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 48, 49) - compareAndSwap(x, 50, 51) - compareAndSwap(x, 48, 50) - compareAndSwap(x, 49, 51) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 52, 53) - compareAndSwap(x, 54, 55) - compareAndSwap(x, 52, 54) - compareAndSwap(x, 53, 55) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 48, 52) - compareAndSwap(x, 50, 54) - compareAndSwap(x, 50, 52) - compareAndSwap(x, 49, 53) - compareAndSwap(x, 51, 55) - compareAndSwap(x, 51, 53) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 51, 52) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 56, 57) - compareAndSwap(x, 58, 59) - compareAndSwap(x, 56, 58) - compareAndSwap(x, 57, 59) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 60, 61) - compareAndSwap(x, 62, 63) - compareAndSwap(x, 60, 62) - compareAndSwap(x, 61, 63) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 56, 60) - compareAndSwap(x, 58, 62) - compareAndSwap(x, 58, 60) - compareAndSwap(x, 57, 61) - compareAndSwap(x, 59, 63) - compareAndSwap(x, 59, 61) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 59, 60) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 48, 56) - compareAndSwap(x, 52, 60) - compareAndSwap(x, 52, 56) - compareAndSwap(x, 50, 58) - compareAndSwap(x, 54, 62) - compareAndSwap(x, 54, 58) - compareAndSwap(x, 50, 52) - compareAndSwap(x, 54, 56) - compareAndSwap(x, 58, 60) - compareAndSwap(x, 49, 57) - compareAndSwap(x, 53, 61) - compareAndSwap(x, 53, 57) - compareAndSwap(x, 51, 59) - compareAndSwap(x, 55, 63) - compareAndSwap(x, 55, 59) - compareAndSwap(x, 51, 53) - compareAndSwap(x, 55, 57) - compareAndSwap(x, 59, 61) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 51, 52) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 55, 56) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 59, 60) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 32, 48) - compareAndSwap(x, 40, 56) - compareAndSwap(x, 40, 48) - compareAndSwap(x, 36, 52) - compareAndSwap(x, 44, 60) - compareAndSwap(x, 44, 52) - compareAndSwap(x, 36, 40) - compareAndSwap(x, 44, 48) - compareAndSwap(x, 52, 56) - compareAndSwap(x, 34, 50) - compareAndSwap(x, 42, 58) - compareAndSwap(x, 42, 50) - compareAndSwap(x, 38, 54) - compareAndSwap(x, 46, 62) - compareAndSwap(x, 46, 54) - compareAndSwap(x, 38, 42) - compareAndSwap(x, 46, 50) - compareAndSwap(x, 54, 58) - compareAndSwap(x, 34, 36) - compareAndSwap(x, 38, 40) - compareAndSwap(x, 42, 44) - compareAndSwap(x, 46, 48) - compareAndSwap(x, 50, 52) - compareAndSwap(x, 54, 56) - compareAndSwap(x, 58, 60) - compareAndSwap(x, 33, 49) - compareAndSwap(x, 41, 57) - compareAndSwap(x, 41, 49) - compareAndSwap(x, 37, 53) - compareAndSwap(x, 45, 61) - compareAndSwap(x, 45, 53) - compareAndSwap(x, 37, 41) - compareAndSwap(x, 45, 49) - compareAndSwap(x, 53, 57) - compareAndSwap(x, 35, 51) - compareAndSwap(x, 43, 59) - compareAndSwap(x, 43, 51) - compareAndSwap(x, 39, 55) - compareAndSwap(x, 47, 63) - compareAndSwap(x, 47, 55) - compareAndSwap(x, 39, 43) - compareAndSwap(x, 47, 51) - compareAndSwap(x, 55, 59) - compareAndSwap(x, 35, 37) - compareAndSwap(x, 39, 41) - compareAndSwap(x, 43, 45) - compareAndSwap(x, 47, 49) - compareAndSwap(x, 51, 53) - compareAndSwap(x, 55, 57) - compareAndSwap(x, 59, 61) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 35, 36) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 39, 40) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 43, 44) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 47, 48) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 51, 52) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 55, 56) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 59, 60) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 0, 32) - compareAndSwap(x, 16, 48) - compareAndSwap(x, 16, 32) - compareAndSwap(x, 8, 40) - compareAndSwap(x, 24, 56) - compareAndSwap(x, 24, 40) - compareAndSwap(x, 8, 16) - compareAndSwap(x, 24, 32) - compareAndSwap(x, 40, 48) - compareAndSwap(x, 4, 36) - compareAndSwap(x, 20, 52) - compareAndSwap(x, 20, 36) - compareAndSwap(x, 12, 44) - compareAndSwap(x, 28, 60) - compareAndSwap(x, 28, 44) - compareAndSwap(x, 12, 20) - compareAndSwap(x, 28, 36) - compareAndSwap(x, 44, 52) - compareAndSwap(x, 4, 8) - compareAndSwap(x, 12, 16) - compareAndSwap(x, 20, 24) - compareAndSwap(x, 28, 32) - compareAndSwap(x, 36, 40) - compareAndSwap(x, 44, 48) - compareAndSwap(x, 52, 56) - compareAndSwap(x, 2, 34) - compareAndSwap(x, 18, 50) - compareAndSwap(x, 18, 34) - compareAndSwap(x, 10, 42) - compareAndSwap(x, 26, 58) - compareAndSwap(x, 26, 42) - compareAndSwap(x, 10, 18) - compareAndSwap(x, 26, 34) - compareAndSwap(x, 42, 50) - compareAndSwap(x, 6, 38) - compareAndSwap(x, 22, 54) - compareAndSwap(x, 22, 38) - compareAndSwap(x, 14, 46) - compareAndSwap(x, 30, 62) - compareAndSwap(x, 30, 46) - compareAndSwap(x, 14, 22) - compareAndSwap(x, 30, 38) - compareAndSwap(x, 46, 54) - compareAndSwap(x, 6, 10) - compareAndSwap(x, 14, 18) - compareAndSwap(x, 22, 26) - compareAndSwap(x, 30, 34) - compareAndSwap(x, 38, 42) - compareAndSwap(x, 46, 50) - compareAndSwap(x, 54, 58) - compareAndSwap(x, 2, 4) - compareAndSwap(x, 6, 8) - compareAndSwap(x, 10, 12) - compareAndSwap(x, 14, 16) - compareAndSwap(x, 18, 20) - compareAndSwap(x, 22, 24) - compareAndSwap(x, 26, 28) - compareAndSwap(x, 30, 32) - compareAndSwap(x, 34, 36) - compareAndSwap(x, 38, 40) - compareAndSwap(x, 42, 44) - compareAndSwap(x, 46, 48) - compareAndSwap(x, 50, 52) - compareAndSwap(x, 54, 56) - compareAndSwap(x, 58, 60) - compareAndSwap(x, 1, 33) - compareAndSwap(x, 17, 49) - compareAndSwap(x, 17, 33) - compareAndSwap(x, 9, 41) - compareAndSwap(x, 25, 57) - compareAndSwap(x, 25, 41) - compareAndSwap(x, 9, 17) - compareAndSwap(x, 25, 33) - compareAndSwap(x, 41, 49) - compareAndSwap(x, 5, 37) - compareAndSwap(x, 21, 53) - compareAndSwap(x, 21, 37) - compareAndSwap(x, 13, 45) - compareAndSwap(x, 29, 61) - compareAndSwap(x, 29, 45) - compareAndSwap(x, 13, 21) - compareAndSwap(x, 29, 37) - compareAndSwap(x, 45, 53) - compareAndSwap(x, 5, 9) - compareAndSwap(x, 13, 17) - compareAndSwap(x, 21, 25) - compareAndSwap(x, 29, 33) - compareAndSwap(x, 37, 41) - compareAndSwap(x, 45, 49) - compareAndSwap(x, 53, 57) - compareAndSwap(x, 3, 35) - compareAndSwap(x, 19, 51) - compareAndSwap(x, 19, 35) - compareAndSwap(x, 11, 43) - compareAndSwap(x, 27, 59) - compareAndSwap(x, 27, 43) - compareAndSwap(x, 11, 19) - compareAndSwap(x, 27, 35) - compareAndSwap(x, 43, 51) - compareAndSwap(x, 7, 39) - compareAndSwap(x, 23, 55) - compareAndSwap(x, 23, 39) - compareAndSwap(x, 15, 47) - compareAndSwap(x, 31, 63) - compareAndSwap(x, 31, 47) - compareAndSwap(x, 15, 23) - compareAndSwap(x, 31, 39) - compareAndSwap(x, 47, 55) - compareAndSwap(x, 7, 11) - compareAndSwap(x, 15, 19) - compareAndSwap(x, 23, 27) - compareAndSwap(x, 31, 35) - compareAndSwap(x, 39, 43) - compareAndSwap(x, 47, 51) - compareAndSwap(x, 55, 59) - compareAndSwap(x, 3, 5) - compareAndSwap(x, 7, 9) - compareAndSwap(x, 11, 13) - compareAndSwap(x, 15, 17) - compareAndSwap(x, 19, 21) - compareAndSwap(x, 23, 25) - compareAndSwap(x, 27, 29) - compareAndSwap(x, 31, 33) - compareAndSwap(x, 35, 37) - compareAndSwap(x, 39, 41) - compareAndSwap(x, 43, 45) - compareAndSwap(x, 47, 49) - compareAndSwap(x, 51, 53) - compareAndSwap(x, 55, 57) - compareAndSwap(x, 59, 61) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 3, 4) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 7, 8) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 11, 12) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 15, 16) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 19, 20) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 23, 24) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 27, 28) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 31, 32) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 35, 36) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 39, 40) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 43, 44) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 47, 48) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 51, 52) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 55, 56) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 59, 60) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 64, 65) - compareAndSwap(x, 66, 67) - compareAndSwap(x, 64, 66) - compareAndSwap(x, 65, 67) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 68, 69) - compareAndSwap(x, 70, 71) - compareAndSwap(x, 68, 70) - compareAndSwap(x, 69, 71) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 64, 68) - compareAndSwap(x, 66, 70) - compareAndSwap(x, 66, 68) - compareAndSwap(x, 65, 69) - compareAndSwap(x, 67, 71) - compareAndSwap(x, 67, 69) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 67, 68) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 72, 73) - compareAndSwap(x, 74, 75) - compareAndSwap(x, 72, 74) - compareAndSwap(x, 73, 75) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 76, 77) - compareAndSwap(x, 78, 79) - compareAndSwap(x, 76, 78) - compareAndSwap(x, 77, 79) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 72, 76) - compareAndSwap(x, 74, 78) - compareAndSwap(x, 74, 76) - compareAndSwap(x, 73, 77) - compareAndSwap(x, 75, 79) - compareAndSwap(x, 75, 77) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 75, 76) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 64, 72) - compareAndSwap(x, 68, 76) - compareAndSwap(x, 68, 72) - compareAndSwap(x, 66, 74) - compareAndSwap(x, 70, 78) - compareAndSwap(x, 70, 74) - compareAndSwap(x, 66, 68) - compareAndSwap(x, 70, 72) - compareAndSwap(x, 74, 76) - compareAndSwap(x, 65, 73) - compareAndSwap(x, 69, 77) - compareAndSwap(x, 69, 73) - compareAndSwap(x, 67, 75) - compareAndSwap(x, 71, 79) - compareAndSwap(x, 71, 75) - compareAndSwap(x, 67, 69) - compareAndSwap(x, 71, 73) - compareAndSwap(x, 75, 77) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 67, 68) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 71, 72) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 75, 76) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 80, 81) - compareAndSwap(x, 82, 83) - compareAndSwap(x, 80, 82) - compareAndSwap(x, 81, 83) - compareAndSwap(x, 81, 82) - compareAndSwap(x, 81, 82) - compareAndSwap(x, 81, 82) - compareAndSwap(x, 64, 80) - compareAndSwap(x, 72, 80) - compareAndSwap(x, 68, 72) - compareAndSwap(x, 76, 80) - compareAndSwap(x, 66, 82) - compareAndSwap(x, 74, 82) - compareAndSwap(x, 70, 74) - compareAndSwap(x, 78, 82) - compareAndSwap(x, 66, 68) - compareAndSwap(x, 70, 72) - compareAndSwap(x, 74, 76) - compareAndSwap(x, 78, 80) - compareAndSwap(x, 65, 81) - compareAndSwap(x, 73, 81) - compareAndSwap(x, 69, 73) - compareAndSwap(x, 77, 81) - compareAndSwap(x, 67, 83) - compareAndSwap(x, 75, 83) - compareAndSwap(x, 71, 75) - compareAndSwap(x, 79, 83) - compareAndSwap(x, 67, 69) - compareAndSwap(x, 71, 73) - compareAndSwap(x, 75, 77) - compareAndSwap(x, 79, 81) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 67, 68) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 71, 72) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 75, 76) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 79, 80) - compareAndSwap(x, 81, 82) - compareAndSwap(x, 72, 80) - compareAndSwap(x, 68, 72) - compareAndSwap(x, 76, 80) - compareAndSwap(x, 74, 82) - compareAndSwap(x, 70, 74) - compareAndSwap(x, 78, 82) - compareAndSwap(x, 66, 68) - compareAndSwap(x, 70, 72) - compareAndSwap(x, 74, 76) - compareAndSwap(x, 78, 80) - compareAndSwap(x, 73, 81) - compareAndSwap(x, 69, 73) - compareAndSwap(x, 77, 81) - compareAndSwap(x, 75, 83) - compareAndSwap(x, 71, 75) - compareAndSwap(x, 79, 83) - compareAndSwap(x, 67, 69) - compareAndSwap(x, 71, 73) - compareAndSwap(x, 75, 77) - compareAndSwap(x, 79, 81) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 67, 68) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 71, 72) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 75, 76) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 79, 80) - compareAndSwap(x, 81, 82) - compareAndSwap(x, 0, 64) - compareAndSwap(x, 32, 64) - compareAndSwap(x, 16, 80) - compareAndSwap(x, 48, 80) - compareAndSwap(x, 16, 32) - compareAndSwap(x, 48, 64) - compareAndSwap(x, 8, 72) - compareAndSwap(x, 40, 72) - compareAndSwap(x, 24, 40) - compareAndSwap(x, 56, 72) - compareAndSwap(x, 8, 16) - compareAndSwap(x, 24, 32) - compareAndSwap(x, 40, 48) - compareAndSwap(x, 56, 64) - compareAndSwap(x, 72, 80) - compareAndSwap(x, 4, 68) - compareAndSwap(x, 36, 68) - compareAndSwap(x, 20, 36) - compareAndSwap(x, 52, 68) - compareAndSwap(x, 12, 76) - compareAndSwap(x, 44, 76) - compareAndSwap(x, 28, 44) - compareAndSwap(x, 60, 76) - compareAndSwap(x, 12, 20) - compareAndSwap(x, 28, 36) - compareAndSwap(x, 44, 52) - compareAndSwap(x, 60, 68) - compareAndSwap(x, 4, 8) - compareAndSwap(x, 12, 16) - compareAndSwap(x, 20, 24) - compareAndSwap(x, 28, 32) - compareAndSwap(x, 36, 40) - compareAndSwap(x, 44, 48) - compareAndSwap(x, 52, 56) - compareAndSwap(x, 60, 64) - compareAndSwap(x, 68, 72) - compareAndSwap(x, 76, 80) - compareAndSwap(x, 2, 66) - compareAndSwap(x, 34, 66) - compareAndSwap(x, 18, 82) - compareAndSwap(x, 50, 82) - compareAndSwap(x, 18, 34) - compareAndSwap(x, 50, 66) - compareAndSwap(x, 10, 74) - compareAndSwap(x, 42, 74) - compareAndSwap(x, 26, 42) - compareAndSwap(x, 58, 74) - compareAndSwap(x, 10, 18) - compareAndSwap(x, 26, 34) - compareAndSwap(x, 42, 50) - compareAndSwap(x, 58, 66) - compareAndSwap(x, 74, 82) - compareAndSwap(x, 6, 70) - compareAndSwap(x, 38, 70) - compareAndSwap(x, 22, 38) - compareAndSwap(x, 54, 70) - compareAndSwap(x, 14, 78) - compareAndSwap(x, 46, 78) - compareAndSwap(x, 30, 46) - compareAndSwap(x, 62, 78) - compareAndSwap(x, 14, 22) - compareAndSwap(x, 30, 38) - compareAndSwap(x, 46, 54) - compareAndSwap(x, 62, 70) - compareAndSwap(x, 6, 10) - compareAndSwap(x, 14, 18) - compareAndSwap(x, 22, 26) - compareAndSwap(x, 30, 34) - compareAndSwap(x, 38, 42) - compareAndSwap(x, 46, 50) - compareAndSwap(x, 54, 58) - compareAndSwap(x, 62, 66) - compareAndSwap(x, 70, 74) - compareAndSwap(x, 78, 82) - compareAndSwap(x, 2, 4) - compareAndSwap(x, 6, 8) - compareAndSwap(x, 10, 12) - compareAndSwap(x, 14, 16) - compareAndSwap(x, 18, 20) - compareAndSwap(x, 22, 24) - compareAndSwap(x, 26, 28) - compareAndSwap(x, 30, 32) - compareAndSwap(x, 34, 36) - compareAndSwap(x, 38, 40) - compareAndSwap(x, 42, 44) - compareAndSwap(x, 46, 48) - compareAndSwap(x, 50, 52) - compareAndSwap(x, 54, 56) - compareAndSwap(x, 58, 60) - compareAndSwap(x, 62, 64) - compareAndSwap(x, 66, 68) - compareAndSwap(x, 70, 72) - compareAndSwap(x, 74, 76) - compareAndSwap(x, 78, 80) - compareAndSwap(x, 1, 65) - compareAndSwap(x, 33, 65) - compareAndSwap(x, 17, 81) - compareAndSwap(x, 49, 81) - compareAndSwap(x, 17, 33) - compareAndSwap(x, 49, 65) - compareAndSwap(x, 9, 73) - compareAndSwap(x, 41, 73) - compareAndSwap(x, 25, 41) - compareAndSwap(x, 57, 73) - compareAndSwap(x, 9, 17) - compareAndSwap(x, 25, 33) - compareAndSwap(x, 41, 49) - compareAndSwap(x, 57, 65) - compareAndSwap(x, 73, 81) - compareAndSwap(x, 5, 69) - compareAndSwap(x, 37, 69) - compareAndSwap(x, 21, 37) - compareAndSwap(x, 53, 69) - compareAndSwap(x, 13, 77) - compareAndSwap(x, 45, 77) - compareAndSwap(x, 29, 45) - compareAndSwap(x, 61, 77) - compareAndSwap(x, 13, 21) - compareAndSwap(x, 29, 37) - compareAndSwap(x, 45, 53) - compareAndSwap(x, 61, 69) - compareAndSwap(x, 5, 9) - compareAndSwap(x, 13, 17) - compareAndSwap(x, 21, 25) - compareAndSwap(x, 29, 33) - compareAndSwap(x, 37, 41) - compareAndSwap(x, 45, 49) - compareAndSwap(x, 53, 57) - compareAndSwap(x, 61, 65) - compareAndSwap(x, 69, 73) - compareAndSwap(x, 77, 81) - compareAndSwap(x, 3, 67) - compareAndSwap(x, 35, 67) - compareAndSwap(x, 19, 83) - compareAndSwap(x, 51, 83) - compareAndSwap(x, 19, 35) - compareAndSwap(x, 51, 67) - compareAndSwap(x, 11, 75) - compareAndSwap(x, 43, 75) - compareAndSwap(x, 27, 43) - compareAndSwap(x, 59, 75) - compareAndSwap(x, 11, 19) - compareAndSwap(x, 27, 35) - compareAndSwap(x, 43, 51) - compareAndSwap(x, 59, 67) - compareAndSwap(x, 75, 83) - compareAndSwap(x, 7, 71) - compareAndSwap(x, 39, 71) - compareAndSwap(x, 23, 39) - compareAndSwap(x, 55, 71) - compareAndSwap(x, 15, 79) - compareAndSwap(x, 47, 79) - compareAndSwap(x, 31, 47) - compareAndSwap(x, 63, 79) - compareAndSwap(x, 15, 23) - compareAndSwap(x, 31, 39) - compareAndSwap(x, 47, 55) - compareAndSwap(x, 63, 71) - compareAndSwap(x, 7, 11) - compareAndSwap(x, 15, 19) - compareAndSwap(x, 23, 27) - compareAndSwap(x, 31, 35) - compareAndSwap(x, 39, 43) - compareAndSwap(x, 47, 51) - compareAndSwap(x, 55, 59) - compareAndSwap(x, 63, 67) - compareAndSwap(x, 71, 75) - compareAndSwap(x, 79, 83) - compareAndSwap(x, 3, 5) - compareAndSwap(x, 7, 9) - compareAndSwap(x, 11, 13) - compareAndSwap(x, 15, 17) - compareAndSwap(x, 19, 21) - compareAndSwap(x, 23, 25) - compareAndSwap(x, 27, 29) - compareAndSwap(x, 31, 33) - compareAndSwap(x, 35, 37) - compareAndSwap(x, 39, 41) - compareAndSwap(x, 43, 45) - compareAndSwap(x, 47, 49) - compareAndSwap(x, 51, 53) - compareAndSwap(x, 55, 57) - compareAndSwap(x, 59, 61) - compareAndSwap(x, 63, 65) - compareAndSwap(x, 67, 69) - compareAndSwap(x, 71, 73) - compareAndSwap(x, 75, 77) - compareAndSwap(x, 79, 81) - compareAndSwap(x, 1, 2) - compareAndSwap(x, 3, 4) - compareAndSwap(x, 5, 6) - compareAndSwap(x, 7, 8) - compareAndSwap(x, 9, 10) - compareAndSwap(x, 11, 12) - compareAndSwap(x, 13, 14) - compareAndSwap(x, 15, 16) - compareAndSwap(x, 17, 18) - compareAndSwap(x, 19, 20) - compareAndSwap(x, 21, 22) - compareAndSwap(x, 23, 24) - compareAndSwap(x, 25, 26) - compareAndSwap(x, 27, 28) - compareAndSwap(x, 29, 30) - compareAndSwap(x, 31, 32) - compareAndSwap(x, 33, 34) - compareAndSwap(x, 35, 36) - compareAndSwap(x, 37, 38) - compareAndSwap(x, 39, 40) - compareAndSwap(x, 41, 42) - compareAndSwap(x, 43, 44) - compareAndSwap(x, 45, 46) - compareAndSwap(x, 47, 48) - compareAndSwap(x, 49, 50) - compareAndSwap(x, 51, 52) - compareAndSwap(x, 53, 54) - compareAndSwap(x, 55, 56) - compareAndSwap(x, 57, 58) - compareAndSwap(x, 59, 60) - compareAndSwap(x, 61, 62) - compareAndSwap(x, 63, 64) - compareAndSwap(x, 65, 66) - compareAndSwap(x, 67, 68) - compareAndSwap(x, 69, 70) - compareAndSwap(x, 71, 72) - compareAndSwap(x, 73, 74) - compareAndSwap(x, 75, 76) - compareAndSwap(x, 77, 78) - compareAndSwap(x, 79, 80) - compareAndSwap(x, 81, 82) -} diff --git a/vendor/blitter.com/go/newhope/error_correction.go b/vendor/blitter.com/go/newhope/error_correction.go deleted file mode 100644 index 7855648..0000000 --- a/vendor/blitter.com/go/newhope/error_correction.go +++ /dev/null @@ -1,135 +0,0 @@ -// error_correction.go - NewHope key exchange error correction. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -import "blitter.com/go/chacha20" - -func abs(v int32) int32 { - mask := v >> 31 - return (v ^ mask) - mask -} - -func f(v0, v1 *int32, x int32) int32 { - // The`ref` code uses uint32 for x, but none of the values ever get large - // enough for that, and that would be cast-tastic due to Go being Go. - - // Next 6 lines compute t = x/PARAM_Q - b := x * 2730 - t := b >> 25 - b = x - t*paramQ - b = (paramQ - 1) - b - b >>= 31 - t -= b - - r := t & 1 - xit := t >> 1 - *v0 = xit + r // v0 = round(x/(2*PARAM_Q)) - - t-- - r = t & 1 - *v1 = (t >> 1) + r - - return abs(x - ((*v0) * 2 * paramQ)) -} - -func g(x int32) int32 { - // Next 6 lines compute t = x/(4 *PARAMQ) - b := x * 2730 - t := b >> 27 - b = x - t*(paramQ*4) - b = (paramQ * 4) - b - b >>= 31 - t -= b - - c := t & 1 - t = (t >> 1) + c // t = round(x/(8*PARAM_Q)) - - t *= 8 * paramQ - - return abs(t - x) -} - -func llDecode(xi0, xi1, xi2, xi3 int32) int16 { - t := g(xi0) - t += g(xi1) - t += g(xi2) - t += g(xi3) - - t -= 8 * paramQ - t >>= 31 - return int16(t & 1) -} - -func (c *poly) helpRec(v *poly, seed *[SeedBytes]byte, nonce byte) { - var v0, v1, vTmp [4]int32 - var k int32 - var rand [32]byte - var n [8]byte - - n[7] = nonce - - stream, err := chacha20.New(seed[:], n[:]) - if err != nil { - panic(err) - } - stream.KeyStream(rand[:]) - stream.Reset() - defer memwipe(rand[:]) - - for i := uint(0); i < 256; i++ { - rBit := int32((rand[i>>3] >> (i & 7)) & 1) - - vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) - - // newhope-20151209 - New version of the reconciliation. - k = f(&v0[0], &v1[0], 8*vTmp[0]+4*rBit) - k += f(&v0[1], &v1[1], 8*vTmp[1]+4*rBit) - k += f(&v0[2], &v1[2], 8*vTmp[2]+4*rBit) - k += f(&v0[3], &v1[3], 8*vTmp[3]+4*rBit) - - k = (2*paramQ - 1 - k) >> 31 - - vTmp[0] = ((^k) & v0[0]) ^ (k & v1[0]) - vTmp[1] = ((^k) & v0[1]) ^ (k & v1[1]) - vTmp[2] = ((^k) & v0[2]) ^ (k & v1[2]) - vTmp[3] = ((^k) & v0[3]) ^ (k & v1[3]) - - c.coeffs[0+i] = uint16((vTmp[0] - vTmp[3]) & 3) - c.coeffs[256+i] = uint16((vTmp[1] - vTmp[3]) & 3) - c.coeffs[512+i] = uint16((vTmp[2] - vTmp[3]) & 3) - c.coeffs[768+i] = uint16((-k + 2*vTmp[3]) & 3) - } - - for i := range vTmp { - vTmp[i] = 0 - } -} - -func rec(key *[32]byte, v, c *poly) { - var tmp, vTmp, cTmp [4]int32 - for i := range key { - key[i] = 0 - } - - for i := uint(0); i < 256; i++ { - vTmp[0], vTmp[1], vTmp[2], vTmp[3] = int32(v.coeffs[i]), int32(v.coeffs[256+i]), int32(v.coeffs[512+i]), int32(v.coeffs[768+i]) - cTmp[0], cTmp[1], cTmp[2], cTmp[3] = int32(c.coeffs[i]), int32(c.coeffs[256+i]), int32(c.coeffs[512+i]), int32(c.coeffs[768+i]) - tmp[0] = 16*paramQ + 8*vTmp[0] - paramQ*(2*cTmp[0]+cTmp[3]) - tmp[1] = 16*paramQ + 8*vTmp[1] - paramQ*(2*cTmp[1]+cTmp[3]) - tmp[2] = 16*paramQ + 8*vTmp[2] - paramQ*(2*cTmp[2]+cTmp[3]) - tmp[3] = 16*paramQ + 8*vTmp[3] - paramQ*(cTmp[3]) - - key[i>>3] |= byte(llDecode(tmp[0], tmp[1], tmp[2], tmp[3]) << (i & 7)) - } - - for i := 0; i < 4; i++ { - tmp[i] = 0 - vTmp[i] = 0 - cTmp[i] = 0 - } -} diff --git a/vendor/blitter.com/go/newhope/go.mod b/vendor/blitter.com/go/newhope/go.mod deleted file mode 100644 index 198cb63..0000000 --- a/vendor/blitter.com/go/newhope/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module blitter.com/go/newhope - -go 1.12 - -require ( - blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c - golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 -) diff --git a/vendor/blitter.com/go/newhope/go.sum b/vendor/blitter.com/go/newhope/go.sum deleted file mode 100644 index 56f869d..0000000 --- a/vendor/blitter.com/go/newhope/go.sum +++ /dev/null @@ -1,19 +0,0 @@ -blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c h1:LcnFFg6MCIJHf26P7eOUST45fNLHJI5erq0gWZaDLCo= -blitter.com/go/chacha20 v0.0.0-20200130200441-214e4085f54c/go.mod h1:EMJtRcf22WCtHGiXCw+NB/Sb/PYcXtUgUql6LDEwyXo= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -gitlab.com/yawning/chacha20.git v0.0.0-20190902183103-644b09ac4e6e h1:QhupcTDYYRrhIY0f5Ad5v/nU8lJWjzzN6qQu1ndOm0c= -gitlab.com/yawning/chacha20.git v0.0.0-20190902183103-644b09ac4e6e/go.mod h1:3x6b94nWCP/a2XB/joOPMiGYUBvqbLfeY/BkHLeDs6s= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472 h1:Gv7RPwsi3eZ2Fgewe3CBsuOebPwO27PoXzRpJPsvSSM= -golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190902133755-9109b7679e13 h1:tdsQdquKbTNMsSZLqnLELJGzCANp9oXhu6zFBW6ODx4= -golang.org/x/sys v0.0.0-20190902133755-9109b7679e13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/blitter.com/go/newhope/newhope.go b/vendor/blitter.com/go/newhope/newhope.go deleted file mode 100644 index 380d943..0000000 --- a/vendor/blitter.com/go/newhope/newhope.go +++ /dev/null @@ -1,220 +0,0 @@ -// newhope.go - NewHope interface. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -// Package newhope implements a key exchange based on the Ring Learning with -// Errors Problem. It is a mechanical port of the Public Domain implementation -// by Erdem Alkim, Léo Ducas, Thomas Pöppelmann, and Peter Schwabe. -// -// For more information see: -// https://cryptojedi.org/papers/newhope-20161119.pdf -// https://cryptojedi.org/papers/newhopesimple-20161217.pdf -// -package newhope - -import ( - "io" - - "golang.org/x/crypto/sha3" -) - -const ( - // SharedSecretSize is the length of a Shared Secret in bytes. - SharedSecretSize = 32 - - // UpstreamVersion is the version of the upstream package this - // implementation is compatible with. - UpstreamVersion = "20160815" - - // RecBytes is the length of the reconciliation data in bytes. - RecBytes = 256 - - // SendASize is the length of Alice's public key in bytes. - SendASize = PolyBytes + SeedBytes - - // SendBSize is the length of Bob's public key in bytes. - SendBSize = PolyBytes + RecBytes -) - -// TorSampling enables the constant time generation of the `a` parameter, -// where every successful `a` generation will take the same amount of time. -// Most users will probably not want to enable this as it does come with a -// performance penalty. Alice and Bob *MUST* agree on the sampling method, -// or the key exchange will fail. -var TorSampling = false - -func encodeA(r []byte, pk *poly, seed *[SeedBytes]byte) { - pk.toBytes(r) - for i := 0; i < SeedBytes; i++ { - r[PolyBytes+i] = seed[i] - } -} - -func decodeA(pk *poly, seed *[SeedBytes]byte, r []byte) { - pk.fromBytes(r) - for i := range seed { - seed[i] = r[PolyBytes+i] - } -} - -func encodeB(r []byte, b *poly, c *poly) { - b.toBytes(r) - for i := 0; i < paramN/4; i++ { - r[PolyBytes+i] = byte(c.coeffs[4*i]) | byte(c.coeffs[4*i+1]<<2) | byte(c.coeffs[4*i+2]<<4) | byte(c.coeffs[4*i+3]<<6) - } -} - -func decodeB(b *poly, c *poly, r []byte) { - b.fromBytes(r) - for i := 0; i < paramN/4; i++ { - c.coeffs[4*i+0] = uint16(r[PolyBytes+i]) & 0x03 - c.coeffs[4*i+1] = uint16(r[PolyBytes+i]>>2) & 0x03 - c.coeffs[4*i+2] = uint16(r[PolyBytes+i]>>4) & 0x03 - c.coeffs[4*i+3] = uint16(r[PolyBytes+i] >> 6) - } -} - -func memwipe(b []byte) { - for i := range b { - b[i] = 0 - } -} - -// PublicKeyAlice is Alice's NewHope public key. -type PublicKeyAlice struct { - Send [SendASize]byte -} - -// PrivateKeyAlice is Alice's NewHope private key. -type PrivateKeyAlice struct { - sk poly -} - -// Reset clears all sensitive information such that it no longer appears in -// memory. -func (k *PrivateKeyAlice) Reset() { - k.sk.reset() -} - -// GenerateKeyPairAlice returns a private/public key pair. The private key is -// generated using the given reader, which must return random data. The -// receiver side of the key exchange (aka "Bob") MUST use KeyExchangeBob() -// instead of this routine. -func GenerateKeyPairAlice(rand io.Reader) (*PrivateKeyAlice, *PublicKeyAlice, error) { - var a, e, pk, r poly - var seed, noiseSeed [SeedBytes]byte - - // seed <- Sample({0, 1}^256) - if _, err := io.ReadFull(rand, seed[:]); err != nil { - return nil, nil, err - } - seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. - // a <- Parse(SHAKE-128(seed)) - a.uniform(&seed, TorSampling) - - // s, e <- Sample(psi(n, 12)) - if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { - return nil, nil, err - } - defer memwipe(noiseSeed[:]) - privKey := new(PrivateKeyAlice) - privKey.sk.getNoise(&noiseSeed, 0) - privKey.sk.ntt() - e.getNoise(&noiseSeed, 1) - e.ntt() - - // b <- as + e - pubKey := new(PublicKeyAlice) - r.pointwise(&privKey.sk, &a) - pk.add(&e, &r) - encodeA(pubKey.Send[:], &pk, &seed) - - return privKey, pubKey, nil -} - -// PublicKeyBob is Bob's NewHope public key. -type PublicKeyBob struct { - Send [SendBSize]byte -} - -// KeyExchangeBob is the Responder side of the NewHope key exchange. The -// shared secret and "public key" (key + reconciliation data) are generated -// using the given reader, which must return random data. -func KeyExchangeBob(rand io.Reader, alicePk *PublicKeyAlice) (*PublicKeyBob, []byte, error) { - var pka, a, sp, ep, u, v, epp, r poly - var seed, noiseSeed [SeedBytes]byte - - if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { - return nil, nil, err - } - defer memwipe(noiseSeed[:]) - - // a <- Parse(SHAKE-128(seed)) - decodeA(&pka, &seed, alicePk.Send[:]) - a.uniform(&seed, TorSampling) - - // s', e', e'' <- Sample(psi(n, 12)) - sp.getNoise(&noiseSeed, 0) - sp.ntt() - ep.getNoise(&noiseSeed, 1) - ep.ntt() - epp.getNoise(&noiseSeed, 2) - - // u <- as' + e' - u.pointwise(&a, &sp) - u.add(&u, &ep) - - // v <- bs' + e'' - v.pointwise(&pka, &sp) - v.invNtt() - v.add(&v, &epp) - - // r <- Sample(HelpRec(v)) - r.helpRec(&v, &noiseSeed, 3) - - pubKey := new(PublicKeyBob) - encodeB(pubKey.Send[:], &u, &r) - - // nu <- Rec(v, r) - var nu [SharedSecretSize]byte - rec(&nu, &v, &r) - - // mu <- SHA3-256(nu) - mu := sha3.Sum256(nu[:]) - - // Scrub the sensitive stuff... - memwipe(nu[:]) - sp.reset() - v.reset() - - return pubKey, mu[:], nil -} - -// KeyExchangeAlice is the Initiaitor side of the NewHope key exchange. The -// provided private key is obliterated prior to returning. -func KeyExchangeAlice(bobPk *PublicKeyBob, aliceSk *PrivateKeyAlice) ([]byte, error) { - var u, r, vp poly - - decodeB(&u, &r, bobPk.Send[:]) - - // v' <- us - vp.pointwise(&aliceSk.sk, &u) - vp.invNtt() - - // nu <- Rec(v', r) - var nu [SharedSecretSize]byte - rec(&nu, &vp, &r) - - // mu <- Sha3-256(nu) - mu := sha3.Sum256(nu[:]) - - // Scrub the sensitive stuff... - memwipe(nu[:]) - vp.reset() - aliceSk.Reset() - - return mu[:], nil -} diff --git a/vendor/blitter.com/go/newhope/newhope_simple.go b/vendor/blitter.com/go/newhope/newhope_simple.go deleted file mode 100644 index 4c4774b..0000000 --- a/vendor/blitter.com/go/newhope/newhope_simple.go +++ /dev/null @@ -1,166 +0,0 @@ -// newhope_simple.go - NewHope-Simple interface. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -import ( - "io" - - "golang.org/x/crypto/sha3" -) - -const ( - // HighBytes is the length of the encoded secret in bytes. - HighBytes = 384 - - // SendASimpleSize is the length of Alice's NewHope-Simple public key in - // bytes. - SendASimpleSize = PolyBytes + SeedBytes - - // SendBSimpleSize is the length of Bob's NewHope-Simple public key in - // bytes. - SendBSimpleSize = PolyBytes + HighBytes -) - -func encodeBSimple(r []byte, b *poly, v *poly) { - b.toBytes(r) - v.compress(r[PolyBytes:]) -} - -func decodeBSimple(b *poly, v *poly, r []byte) { - b.fromBytes(r) - v.decompress(r[PolyBytes:]) -} - -// PublicKeySimpleAlice is Alice's NewHope-Simple public key. -type PublicKeySimpleAlice struct { - Send [SendASimpleSize]byte -} - -// PrivateKeySimpleAlice is Alice's NewHope-Simple private key. -type PrivateKeySimpleAlice struct { - sk poly -} - -// Reset clears all sensitive information such that it no longer appears in -// memory. -func (k *PrivateKeySimpleAlice) Reset() { - k.sk.reset() -} - -// GenerateKeyPairSimpleAlice returns a NewHope-Simple private/public key pair. -// The private key is generated using the given reader, which must return -// random data. The receiver side of the key exchange (aka "Bob") MUST use -// KeyExchangeSimpleBob() instead of this routine. -func GenerateKeyPairSimpleAlice(rand io.Reader) (*PrivateKeySimpleAlice, *PublicKeySimpleAlice, error) { - var a, e, pk, r poly - var seed, noiseSeed [SeedBytes]byte - - if _, err := io.ReadFull(rand, seed[:]); err != nil { - return nil, nil, err - } - seed = sha3.Sum256(seed[:]) // Don't send output of system RNG. - a.uniform(&seed, TorSampling) - - if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { - return nil, nil, err - } - defer memwipe(noiseSeed[:]) - - privKey := new(PrivateKeySimpleAlice) - privKey.sk.getNoise(&noiseSeed, 0) - privKey.sk.ntt() - e.getNoise(&noiseSeed, 1) - e.ntt() - - pubKey := new(PublicKeySimpleAlice) - r.pointwise(&privKey.sk, &a) - pk.add(&e, &r) - encodeA(pubKey.Send[:], &pk, &seed) - - return privKey, pubKey, nil -} - -// PublicKeySimpleBob is Bob's NewHope-Simple public key. -type PublicKeySimpleBob struct { - Send [SendBSimpleSize]byte -} - -// KeyExchangeSimpleBob is the Responder side of the NewHope-Simple key -// exchange. The shared secret and "public key" are generated using the -// given reader, which must return random data. -func KeyExchangeSimpleBob(rand io.Reader, alicePk *PublicKeySimpleAlice) (*PublicKeySimpleBob, []byte, error) { - var pka, a, sp, ep, bp, v, epp, m poly - var seed, noiseSeed [SeedBytes]byte - - if _, err := io.ReadFull(rand, noiseSeed[:]); err != nil { - return nil, nil, err - } - defer memwipe(noiseSeed[:]) - - var sharedKey [SharedSecretSize]byte - if _, err := io.ReadFull(rand, sharedKey[:]); err != nil { - return nil, nil, err - } - defer memwipe(sharedKey[:]) - sharedKey = sha3.Sum256(sharedKey[:]) - m.fromMsg(sharedKey[:]) - - decodeA(&pka, &seed, alicePk.Send[:]) - a.uniform(&seed, TorSampling) - - sp.getNoise(&noiseSeed, 0) - sp.ntt() - ep.getNoise(&noiseSeed, 1) - ep.ntt() - - bp.pointwise(&a, &sp) - bp.add(&bp, &ep) - - v.pointwise(&pka, &sp) - v.invNtt() - - epp.getNoise(&noiseSeed, 2) - v.add(&v, &epp) - v.add(&v, &m) // add key - - pubKey := new(PublicKeySimpleBob) - encodeBSimple(pubKey.Send[:], &bp, &v) - mu := sha3.Sum256(sharedKey[:]) - - // Scrub the sensitive stuff... - sp.reset() - v.reset() - m.reset() - - return pubKey, mu[:], nil -} - -// KeyExchangeSimpleAlice is the Initiaitor side of the NewHope-Simple key -// exchange. The provided private key is obliterated prior to returning. -func KeyExchangeSimpleAlice(bobPk *PublicKeySimpleBob, aliceSk *PrivateKeySimpleAlice) ([]byte, error) { - var v, bp, k poly - - decodeBSimple(&bp, &v, bobPk.Send[:]) - k.pointwise(&aliceSk.sk, &bp) - k.invNtt() - - k.sub(&k, &v) - - var sharedKey [SharedSecretSize]byte - k.toMsg(sharedKey[:]) - - // mu <- Sha3-256(v') - mu := sha3.Sum256(sharedKey[:]) - - // Scrub the sensitive stuff... - memwipe(sharedKey[:]) - k.reset() - aliceSk.Reset() - - return mu[:], nil -} diff --git a/vendor/blitter.com/go/newhope/ntt.go b/vendor/blitter.com/go/newhope/ntt.go deleted file mode 100644 index 58d1f2a..0000000 --- a/vendor/blitter.com/go/newhope/ntt.go +++ /dev/null @@ -1,131 +0,0 @@ -// ntt.go - NewHope Number Theoretic Transform. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -var bitrevTable = [paramN]uint16{ - 0, 512, 256, 768, 128, 640, 384, 896, 64, 576, 320, 832, 192, 704, 448, 960, - 32, 544, 288, 800, 160, 672, 416, 928, 96, 608, 352, 864, 224, 736, 480, - 992, 16, 528, 272, 784, 144, 656, 400, 912, 80, 592, 336, 848, 208, 720, - 464, 976, 48, 560, 304, 816, 176, 688, 432, 944, 112, 624, 368, 880, - 240, 752, 496, 1008, 8, 520, 264, 776, 136, 648, 392, 904, 72, 584, 328, - 840, 200, 712, 456, 968, 40, 552, 296, 808, 168, 680, 424, 936, 104, - 616, 360, 872, 232, 744, 488, 1000, 24, 536, 280, 792, 152, 664, 408, - 920, 88, 600, 344, 856, 216, 728, 472, 984, 56, 568, 312, 824, 184, 696, - 440, 952, 120, 632, 376, 888, 248, 760, 504, 1016, 4, 516, 260, 772, - 132, 644, 388, 900, 68, 580, 324, 836, 196, 708, 452, 964, 36, 548, 292, - 804, 164, 676, 420, 932, 100, 612, 356, 868, 228, 740, 484, 996, 20, - 532, 276, 788, 148, 660, 404, 916, 84, 596, 340, 852, 212, 724, 468, - 980, 52, 564, 308, 820, 180, 692, 436, 948, 116, 628, 372, 884, 244, - 756, 500, 1012, 12, 524, 268, 780, 140, 652, 396, 908, 76, 588, 332, - 844, 204, 716, 460, 972, 44, 556, 300, 812, 172, 684, 428, 940, 108, - 620, 364, 876, 236, 748, 492, 1004, 28, 540, 284, 796, 156, 668, 412, - 924, 92, 604, 348, 860, 220, 732, 476, 988, 60, 572, 316, 828, 188, 700, - 444, 956, 124, 636, 380, 892, 252, 764, 508, 1020, 2, 514, 258, 770, - 130, 642, 386, 898, 66, 578, 322, 834, 194, 706, 450, 962, 34, 546, 290, - 802, 162, 674, 418, 930, 98, 610, 354, 866, 226, 738, 482, 994, 18, 530, - 274, 786, 146, 658, 402, 914, 82, 594, 338, 850, 210, 722, 466, 978, 50, - 562, 306, 818, 178, 690, 434, 946, 114, 626, 370, 882, 242, 754, 498, - 1010, 10, 522, 266, 778, 138, 650, 394, 906, 74, 586, 330, 842, 202, - 714, 458, 970, 42, 554, 298, 810, 170, 682, 426, 938, 106, 618, 362, - 874, 234, 746, 490, 1002, 26, 538, 282, 794, 154, 666, 410, 922, 90, - 602, 346, 858, 218, 730, 474, 986, 58, 570, 314, 826, 186, 698, 442, - 954, 122, 634, 378, 890, 250, 762, 506, 1018, 6, 518, 262, 774, 134, - 646, 390, 902, 70, 582, 326, 838, 198, 710, 454, 966, 38, 550, 294, 806, - 166, 678, 422, 934, 102, 614, 358, 870, 230, 742, 486, 998, 22, 534, - 278, 790, 150, 662, 406, 918, 86, 598, 342, 854, 214, 726, 470, 982, 54, - 566, 310, 822, 182, 694, 438, 950, 118, 630, 374, 886, 246, 758, 502, - 1014, 14, 526, 270, 782, 142, 654, 398, 910, 78, 590, 334, 846, 206, - 718, 462, 974, 46, 558, 302, 814, 174, 686, 430, 942, 110, 622, 366, - 878, 238, 750, 494, 1006, 30, 542, 286, 798, 158, 670, 414, 926, 94, - 606, 350, 862, 222, 734, 478, 990, 62, 574, 318, 830, 190, 702, 446, - 958, 126, 638, 382, 894, 254, 766, 510, 1022, 1, 513, 257, 769, 129, - 641, 385, 897, 65, 577, 321, 833, 193, 705, 449, 961, 33, 545, 289, 801, - 161, 673, 417, 929, 97, 609, 353, 865, 225, 737, 481, 993, 17, 529, 273, - 785, 145, 657, 401, 913, 81, 593, 337, 849, 209, 721, 465, 977, 49, 561, - 305, 817, 177, 689, 433, 945, 113, 625, 369, 881, 241, 753, 497, 1009, - 9, 521, 265, 777, 137, 649, 393, 905, 73, 585, 329, 841, 201, 713, 457, - 969, 41, 553, 297, 809, 169, 681, 425, 937, 105, 617, 361, 873, 233, - 745, 489, 1001, 25, 537, 281, 793, 153, 665, 409, 921, 89, 601, 345, - 857, 217, 729, 473, 985, 57, 569, 313, 825, 185, 697, 441, 953, 121, - 633, 377, 889, 249, 761, 505, 1017, 5, 517, 261, 773, 133, 645, 389, - 901, 69, 581, 325, 837, 197, 709, 453, 965, 37, 549, 293, 805, 165, 677, - 421, 933, 101, 613, 357, 869, 229, 741, 485, 997, 21, 533, 277, 789, - 149, 661, 405, 917, 85, 597, 341, 853, 213, 725, 469, 981, 53, 565, 309, - 821, 181, 693, 437, 949, 117, 629, 373, 885, 245, 757, 501, 1013, 13, - 525, 269, 781, 141, 653, 397, 909, 77, 589, 333, 845, 205, 717, 461, - 973, 45, 557, 301, 813, 173, 685, 429, 941, 109, 621, 365, 877, 237, - 749, 493, 1005, 29, 541, 285, 797, 157, 669, 413, 925, 93, 605, 349, - 861, 221, 733, 477, 989, 61, 573, 317, 829, 189, 701, 445, 957, 125, - 637, 381, 893, 253, 765, 509, 1021, 3, 515, 259, 771, 131, 643, 387, - 899, 67, 579, 323, 835, 195, 707, 451, 963, 35, 547, 291, 803, 163, 675, - 419, 931, 99, 611, 355, 867, 227, 739, 483, 995, 19, 531, 275, 787, 147, - 659, 403, 915, 83, 595, 339, 851, 211, 723, 467, 979, 51, 563, 307, 819, - 179, 691, 435, 947, 115, 627, 371, 883, 243, 755, 499, 1011, 11, 523, - 267, 779, 139, 651, 395, 907, 75, 587, 331, 843, 203, 715, 459, 971, 43, - 555, 299, 811, 171, 683, 427, 939, 107, 619, 363, 875, 235, 747, 491, - 1003, 27, 539, 283, 795, 155, 667, 411, 923, 91, 603, 347, 859, 219, - 731, 475, 987, 59, 571, 315, 827, 187, 699, 443, 955, 123, 635, 379, - 891, 251, 763, 507, 1019, 7, 519, 263, 775, 135, 647, 391, 903, 71, 583, - 327, 839, 199, 711, 455, 967, 39, 551, 295, 807, 167, 679, 423, 935, - 103, 615, 359, 871, 231, 743, 487, 999, 23, 535, 279, 791, 151, 663, - 407, 919, 87, 599, 343, 855, 215, 727, 471, 983, 55, 567, 311, 823, 183, - 695, 439, 951, 119, 631, 375, 887, 247, 759, 503, 1015, 15, 527, 271, - 783, 143, 655, 399, 911, 79, 591, 335, 847, 207, 719, 463, 975, 47, 559, - 303, 815, 175, 687, 431, 943, 111, 623, 367, 879, 239, 751, 495, 1007, - 31, 543, 287, 799, 159, 671, 415, 927, 95, 607, 351, 863, 223, 735, 479, - 991, 63, 575, 319, 831, 191, 703, 447, 959, 127, 639, 383, 895, 255, - 767, 511, 1023, -} - -func (p *poly) bitrev() { - for i, v := range p.coeffs { - r := bitrevTable[i] - if uint16(i) < r { - p.coeffs[i] = p.coeffs[r] - p.coeffs[r] = v - } - } -} - -func (p *poly) mulCoefficients(factors *[paramN]uint16) { - for i, v := range factors { - p.coeffs[i] = montgomeryReduce(uint32(p.coeffs[i]) * uint32(v)) - } -} - -func ntt(a *[paramN]uint16, omega *[paramN / 2]uint16) { - var distance uint - - for i := uint(0); i < 10; i += 2 { - // Even level. - distance = (1 << i) - for start := uint(0); start < distance; start++ { - jTwiddle := 0 - for j := start; j < paramN-1; j += 2 * distance { - w := uint32(omega[jTwiddle]) - jTwiddle++ - tmp := a[j] - a[j] = tmp + a[j+distance] - a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) - } - } - - // Odd level. - distance <<= 1 - for start := uint(0); start < distance; start++ { - jTwiddle := 0 - for j := start; j < paramN-1; j += 2 * distance { - w := uint32(omega[jTwiddle]) - jTwiddle++ - tmp := a[j] - a[j] = barrettReduce(tmp + a[j+distance]) - a[j+distance] = montgomeryReduce(w * (uint32(tmp) + 3*paramQ - uint32(a[j+distance]))) - } - } - } -} diff --git a/vendor/blitter.com/go/newhope/params.go b/vendor/blitter.com/go/newhope/params.go deleted file mode 100644 index 572236b..0000000 --- a/vendor/blitter.com/go/newhope/params.go +++ /dev/null @@ -1,17 +0,0 @@ -// params.go - NewHope parameters. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -const ( - paramN = 1024 - paramK = 16 // used in sampler - paramQ = 12289 - - // SeedBytes is the size of the seed in bytes. - SeedBytes = 32 -) diff --git a/vendor/blitter.com/go/newhope/poly.go b/vendor/blitter.com/go/newhope/poly.go deleted file mode 100644 index 860126e..0000000 --- a/vendor/blitter.com/go/newhope/poly.go +++ /dev/null @@ -1,212 +0,0 @@ -// poly.go - NewHope polynomial. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -import ( - "encoding/binary" - - "blitter.com/go/chacha20" - "golang.org/x/crypto/sha3" -) - -const ( - // PolyBytes is the length of an encoded polynomial in bytes. - PolyBytes = 1792 - - shake128Rate = 168 // Stupid that this isn't exposed. -) - -type poly struct { - coeffs [paramN]uint16 -} - -func (p *poly) reset() { - for i := range p.coeffs { - p.coeffs[i] = 0 - } -} - -func (p *poly) fromBytes(a []byte) { - for i := 0; i < paramN/4; i++ { - p.coeffs[4*i+0] = uint16(a[7*i+0]) | ((uint16(a[7*i+1]) & 0x3f) << 8) - p.coeffs[4*i+1] = (uint16(a[7*i+1]) >> 6) | (uint16(a[7*i+2]) << 2) | ((uint16(a[7*i+3]) & 0x0f) << 10) - - p.coeffs[4*i+2] = (uint16(a[7*i+3]) >> 4) | (uint16(a[7*i+4]) << 4) | ((uint16(a[7*i+5]) & 0x03) << 12) - p.coeffs[4*i+3] = (uint16(a[7*i+5]) >> 2) | (uint16(a[7*i+6]) << 6) - } -} - -func (p *poly) toBytes(r []byte) { - for i := 0; i < paramN/4; i++ { - // Make sure that coefficients have only 14 bits. - t0 := barrettReduce(p.coeffs[4*i+0]) - t1 := barrettReduce(p.coeffs[4*i+1]) - t2 := barrettReduce(p.coeffs[4*i+2]) - t3 := barrettReduce(p.coeffs[4*i+3]) - - // Make sure that coefficients are in [0,q] - m := t0 - paramQ - c := int16(m) - c >>= 15 - t0 = m ^ ((t0 ^ m) & uint16(c)) - - m = t1 - paramQ - c = int16(m) - c >>= 15 - t1 = m ^ ((t1 ^ m) & uint16(c)) - - m = t2 - paramQ - c = int16(m) - c >>= 15 - t2 = m ^ ((t2 ^ m) & uint16(c)) - - m = t3 - paramQ - c = int16(m) - c >>= 15 - t3 = m ^ ((t3 ^ m) & uint16(c)) - - r[7*i+0] = byte(t0 & 0xff) - r[7*i+1] = byte(t0>>8) | byte(t1<<6) - r[7*i+2] = byte(t1 >> 2) - r[7*i+3] = byte(t1>>10) | byte(t2<<4) - r[7*i+4] = byte(t2 >> 4) - r[7*i+5] = byte(t2>>12) | byte(t3<<2) - r[7*i+6] = byte(t3 >> 6) - } -} - -func (p *poly) discardTo(xbuf []byte) bool { - var x [shake128Rate * 16 / 2]uint16 - for i := range x { - x[i] = binary.LittleEndian.Uint16(xbuf[i*2:]) - } - - for i := 0; i < 16; i++ { - batcher84(x[i:]) - } - - // Check whether we're safe: - r := int(0) - for i := 1000; i < 1024; i++ { - r |= 61444 - int(x[i]) - } - if r>>31 != 0 { - return true - } - - // If we are, copy coefficients to polynomial: - for i := range p.coeffs { - p.coeffs[i] = x[i] - } - - return false -} - -func (p *poly) uniform(seed *[SeedBytes]byte, torSampling bool) { - if !torSampling { - // Reference version, vartime. - nBlocks := 14 - var buf [shake128Rate * 14]byte - - // h and buf are left unscrubbed because the output is public. - h := sha3.NewShake128() - _, _ = h.Write(seed[:]) - _, _ = h.Read(buf[:]) - - for ctr, pos := 0, 0; ctr < paramN; { - val := binary.LittleEndian.Uint16(buf[pos:]) - - if val < 5*paramQ { - p.coeffs[ctr] = val - ctr++ - } - pos += 2 - if pos > shake128Rate*nBlocks-2 { - nBlocks = 1 - _, _ = h.Read(buf[:shake128Rate]) - pos = 0 - } - } - } else { - // `torref` version, every valid `a` is generate in constant time, - // though the number of attempts varies. - const nBlocks = 16 - var buf [shake128Rate * nBlocks]byte - - // h and buf are left unscrubbed because the output is public. - h := sha3.NewShake128() - _, _ = h.Write(seed[:]) - - for { - _, _ = h.Read(buf[:]) - if !p.discardTo(buf[:]) { - break - } - } - - } -} - -func (p *poly) getNoise(seed *[SeedBytes]byte, nonce byte) { - // The `ref` code uses a uint32 vector instead of a byte vector, - // but converting between the two in Go is cumbersome. - var buf [4 * paramN]byte - var n [8]byte - - n[0] = nonce - stream, err := chacha20.New(seed[:], n[:]) - if err != nil { - panic(err) - } - stream.KeyStream(buf[:]) - stream.Reset() - - for i := 0; i < paramN; i++ { - t := binary.LittleEndian.Uint32(buf[4*i:]) - d := uint32(0) - for j := uint(0); j < 8; j++ { - d += (t >> j) & 0x01010101 - } - a := ((d >> 8) & 0xff) + (d & 0xff) - b := (d >> 24) + ((d >> 16) & 0xff) - p.coeffs[i] = uint16(a) + paramQ - uint16(b) - } - - // Scrub the random bits... - memwipe(buf[:]) -} - -func (p *poly) pointwise(a, b *poly) { - for i := range p.coeffs { - t := montgomeryReduce(3186 * uint32(b.coeffs[i])) // t is now in Montgomery domain - p.coeffs[i] = montgomeryReduce(uint32(a.coeffs[i]) * uint32(t)) // p.coeffs[i] is back in normal domain - } -} - -func (p *poly) add(a, b *poly) { - for i := range p.coeffs { - p.coeffs[i] = barrettReduce(a.coeffs[i] + b.coeffs[i]) - } -} - -func (p *poly) ntt() { - p.mulCoefficients(&psisBitrevMontgomery) - ntt(&p.coeffs, &omegasMontgomery) -} - -func (p *poly) invNtt() { - p.bitrev() - ntt(&p.coeffs, &omegasInvMontgomery) - p.mulCoefficients(&psisInvMontgomery) -} - -func init() { - if paramK != 16 { - panic("poly.getNoise() only supports k=16") - } -} diff --git a/vendor/blitter.com/go/newhope/poly_simple.go b/vendor/blitter.com/go/newhope/poly_simple.go deleted file mode 100644 index 59ebec1..0000000 --- a/vendor/blitter.com/go/newhope/poly_simple.go +++ /dev/null @@ -1,99 +0,0 @@ -// poly_simple.go - NewHope-Simple polynomial. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -func coeffFreeze(x uint16) uint16 { - var c int16 - - r := barrettReduce(x) - m := r - paramQ - c = int16(m) - c >>= 15 - r = m ^ ((r ^ m) & uint16(c)) - - return r -} - -// Computes abs(x-Q/2) -func flipAbs(x uint16) uint16 { - r := int16(coeffFreeze(x)) - r = r - paramQ/2 - m := r >> 15 - return uint16((r + m) ^ m) -} - -func (p *poly) compress(r []byte) { - var t [8]uint32 - - for i, k := 0, 0; i < paramN; i, k = i+8, k+3 { - for j := range t { - t[j] = uint32(coeffFreeze(p.coeffs[i+j])) - t[j] = (((t[j] << 3) + paramQ/2) / paramQ) & 0x7 - } - - r[k] = byte(t[0]) | byte(t[1]<<3) | byte(t[2]<<6) - r[k+1] = byte(t[2]>>2) | byte(t[3]<<1) | byte(t[4]<<4) | byte(t[5]<<7) - r[k+2] = byte(t[5]>>1) | byte(t[6]<<2) | byte(t[7]<<5) - } - - for i := range t { - t[i] = 0 - } -} - -func (p *poly) decompress(a []byte) { - for i := 0; i < paramN; i += 8 { - a0, a1, a2 := uint16(a[0]), uint16(a[1]), uint16(a[2]) - p.coeffs[i+0] = a0 & 7 - p.coeffs[i+1] = (a0 >> 3) & 7 - p.coeffs[i+2] = (a0 >> 6) | ((a1 << 2) & 4) - p.coeffs[i+3] = (a1 >> 1) & 7 - p.coeffs[i+4] = (a1 >> 4) & 7 - p.coeffs[i+5] = (a1 >> 7) | ((a2 << 1) & 6) - p.coeffs[i+6] = (a2 >> 2) & 7 - p.coeffs[i+7] = (a2 >> 5) - a = a[3:] - for j := 0; j < 8; j++ { - p.coeffs[i+j] = uint16((uint32(p.coeffs[i+j])*paramQ + 4) >> 3) - } - } -} - -func (p *poly) fromMsg(msg []byte) { - for i := uint(0); i < 32; i++ { // XXX: const for 32 - for j := uint(0); j < 8; j++ { - mask := -(uint16((msg[i] >> j) & 1)) - p.coeffs[8*i+j+0] = mask & (paramQ / 2) - p.coeffs[8*i+j+256] = mask & (paramQ / 2) - p.coeffs[8*i+j+512] = mask & (paramQ / 2) - p.coeffs[8*i+j+768] = mask & (paramQ / 2) - } - } -} - -func (p *poly) toMsg(msg []byte) { - memwipe(msg[0:32]) - - for i := uint(0); i < 256; i++ { - t := flipAbs(p.coeffs[i+0]) - t += flipAbs(p.coeffs[i+256]) - t += flipAbs(p.coeffs[i+512]) - t += flipAbs(p.coeffs[i+768]) - - //t = (~(t - PARAM_Q)); - t = (t - paramQ) - t >>= 15 - msg[i>>3] |= byte(t << (i & 7)) - } -} - -func (p *poly) sub(a, b *poly) { - for i := range p.coeffs { - p.coeffs[i] = barrettReduce(a.coeffs[i] + 3*paramQ - b.coeffs[i]) - } -} diff --git a/vendor/blitter.com/go/newhope/precomp.go b/vendor/blitter.com/go/newhope/precomp.go deleted file mode 100644 index 4d61c81..0000000 --- a/vendor/blitter.com/go/newhope/precomp.go +++ /dev/null @@ -1,287 +0,0 @@ -// precomp.go - NewHope precomputed tables. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -var omegasMontgomery = [paramN / 2]uint16{ - 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, - 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, - 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, - 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, - 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, - 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, - 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, - 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, - 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, - 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, - 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, - 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, - 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, - 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, - 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, - 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, - 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, - 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, - 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, - 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, - 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, - 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, - 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, - 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, - 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, - 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, - 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, - 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, - 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, - 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, - 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, - 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, - 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, - 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, - 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, - 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, - 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, - 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, - 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, - 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, - 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, - 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, - 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, - 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, -} - -var omegasInvMontgomery = [paramN / 2]uint16{ - 4075, 5315, 4324, 4916, 10120, 11767, 7210, 9027, 10316, 6715, 1278, 9945, - 3514, 11248, 11271, 5925, 147, 8500, 7840, 6833, 5537, 4749, 4467, 7500, - 11099, 9606, 6171, 8471, 8429, 5445, 11239, 7753, 9090, 12233, 5529, - 5206, 10587, 1987, 11635, 3565, 5415, 8646, 6153, 6427, 7341, 6152, - 10561, 400, 8410, 1922, 2033, 8291, 1359, 6854, 11035, 973, 8579, 6093, - 6950, 5446, 11821, 8301, 11907, 316, 52, 3174, 10966, 9523, 6055, 8953, - 11612, 6415, 2505, 5906, 10710, 11858, 8332, 9450, 10162, 151, 3482, - 787, 5468, 1010, 4169, 9162, 5241, 9369, 7509, 8844, 7232, 4698, 192, - 1321, 10240, 4912, 885, 6281, 10333, 7280, 8757, 11286, 58, 12048, - 12147, 11184, 8812, 6608, 2844, 3438, 4212, 11314, 8687, 6068, 421, - 8209, 3600, 3263, 7665, 6077, 7507, 5886, 3029, 6695, 4213, 504, 11684, - 2302, 1962, 1594, 6328, 7183, 168, 2692, 8960, 4298, 5184, 11089, 6122, - 9734, 10929, 3956, 5297, 6170, 3762, 9370, 4016, 4077, 6523, 652, 11994, - 6099, 1146, 11341, 11964, 10885, 6299, 1159, 8240, 8561, 11177, 2078, - 10331, 4322, 11367, 441, 4079, 11231, 3150, 1319, 8243, 709, 8049, 8719, - 11454, 6224, 3054, 6803, 3123, 10542, 4433, 6370, 7032, 3834, 8633, - 12225, 9830, 683, 1566, 5782, 9786, 9341, 12115, 723, 3009, 1693, 5735, - 2655, 2738, 6421, 11942, 2925, 1975, 8532, 3315, 11863, 4754, 1858, - 1583, 6347, 2500, 10800, 6374, 1483, 12240, 1263, 1815, 5383, 10777, - 350, 6920, 10232, 4493, 9087, 8855, 8760, 9381, 218, 9928, 10446, 9259, - 4115, 6147, 9842, 8326, 576, 10335, 10238, 10484, 9407, 6381, 11836, - 8517, 418, 6860, 7515, 1293, 7552, 2767, 156, 8298, 8320, 10008, 5876, - 5333, 10258, 10115, 4372, 2847, 7875, 8232, 9018, 8925, 1689, 8236, - 2645, 5042, 9984, 7094, 9509, 1484, 7394, 3, 4437, 160, 3149, 113, 7370, - 10123, 3915, 6998, 2704, 8653, 4938, 1426, 7635, 10512, 1663, 6957, - 3510, 2370, 2865, 3978, 9320, 3247, 9603, 6882, 3186, 10659, 10163, - 1153, 9405, 8241, 10040, 2178, 1544, 5559, 420, 8304, 4905, 476, 3531, - 5191, 9153, 2399, 8889, 3000, 671, 243, 3016, 3763, 10849, 12262, 9223, - 10657, 7205, 11272, 7404, 7575, 8146, 10752, 242, 2678, 3704, 11744, - 5019, 3833, 3778, 11899, 773, 5101, 11222, 9888, 442, 2912, 5698, 11935, - 4861, 7277, 9808, 11244, 2859, 3780, 11414, 4976, 10682, 7201, 8005, - 11287, 5011, 6267, 2987, 2437, 3646, 2566, 10102, 9867, 6250, 5444, - 2381, 11796, 8193, 4337, 11854, 1912, 1378, 404, 7644, 1065, 2143, - 11121, 5277, 3248, 11082, 2548, 8058, 8907, 11934, 1759, 8582, 3694, - 7110, 12144, 6747, 8652, 3459, 2731, 8357, 6378, 7399, 10861, 1696, - 9863, 334, 7657, 6534, 11029, 4388, 11560, 3241, 10276, 9000, 9408, - 3284, 10200, 7197, 6498, 544, 2468, 339, 11267, 9, 2842, 480, 5331, - 7300, 1673, 4278, 4177, 8705, 9764, 1381, 7837, 2396, 8340, 8993, 4354, - 130, 6915, 2837, 11462, 5767, 953, 8541, 9813, 118, 7222, 2197, 3006, - 9545, 563, 9314, 2625, 11340, 4821, 2639, 7266, 5828, 6561, 7698, 3328, - 6512, 1351, 7311, 6553, 8155, 1305, 722, 5146, 4043, 12288, 10810, 2545, - 3621, 8747, 8785, 1646, 1212, 5860, 3195, 7203, 10963, 3201, 3014, 955, - 11499, 9970, 11119, 3135, 3712, 7443, 9542, 7484, 8736, 9995, 11227, - 1635, 9521, 1177, 8034, 140, 10436, 11563, 7678, 4320, 11289, 9198, - 12208, 2963, 7393, 2366, 9238, -} - -var psisBitrevMontgomery = [paramN]uint16{ - 4075, 6974, 7373, 7965, 3262, 5079, 522, 2169, 6364, 1018, 1041, 8775, 2344, - 11011, 5574, 1973, 4536, 1050, 6844, 3860, 3818, 6118, 2683, 1190, 4789, - 7822, 7540, 6752, 5456, 4449, 3789, 12142, 11973, 382, 3988, 468, 6843, - 5339, 6196, 3710, 11316, 1254, 5435, 10930, 3998, 10256, 10367, 3879, - 11889, 1728, 6137, 4948, 5862, 6136, 3643, 6874, 8724, 654, 10302, 1702, - 7083, 6760, 56, 3199, 9987, 605, 11785, 8076, 5594, 9260, 6403, 4782, - 6212, 4624, 9026, 8689, 4080, 11868, 6221, 3602, 975, 8077, 8851, 9445, - 5681, 3477, 1105, 142, 241, 12231, 1003, 3532, 5009, 1956, 6008, 11404, - 7377, 2049, 10968, 12097, 7591, 5057, 3445, 4780, 2920, 7048, 3127, - 8120, 11279, 6821, 11502, 8807, 12138, 2127, 2839, 3957, 431, 1579, - 6383, 9784, 5874, 677, 3336, 6234, 2766, 1323, 9115, 12237, 2031, 6956, - 6413, 2281, 3969, 3991, 12133, 9522, 4737, 10996, 4774, 5429, 11871, - 3772, 453, 5908, 2882, 1805, 2051, 1954, 11713, 3963, 2447, 6142, 8174, - 3030, 1843, 2361, 12071, 2908, 3529, 3434, 3202, 7796, 2057, 5369, - 11939, 1512, 6906, 10474, 11026, 49, 10806, 5915, 1489, 9789, 5942, - 10706, 10431, 7535, 426, 8974, 3757, 10314, 9364, 347, 5868, 9551, 9634, - 6554, 10596, 9280, 11566, 174, 2948, 2503, 6507, 10723, 11606, 2459, 64, - 3656, 8455, 5257, 5919, 7856, 1747, 9166, 5486, 9235, 6065, 835, 3570, - 4240, 11580, 4046, 10970, 9139, 1058, 8210, 11848, 922, 7967, 1958, - 10211, 1112, 3728, 4049, 11130, 5990, 1404, 325, 948, 11143, 6190, 295, - 11637, 5766, 8212, 8273, 2919, 8527, 6119, 6992, 8333, 1360, 2555, 6167, - 1200, 7105, 7991, 3329, 9597, 12121, 5106, 5961, 10695, 10327, 3051, - 9923, 4896, 9326, 81, 3091, 1000, 7969, 4611, 726, 1853, 12149, 4255, - 11112, 2768, 10654, 1062, 2294, 3553, 4805, 2747, 4846, 8577, 9154, - 1170, 2319, 790, 11334, 9275, 9088, 1326, 5086, 9094, 6429, 11077, - 10643, 3504, 3542, 8668, 9744, 1479, 1, 8246, 7143, 11567, 10984, 4134, - 5736, 4978, 10938, 5777, 8961, 4591, 5728, 6461, 5023, 9650, 7468, 949, - 9664, 2975, 11726, 2744, 9283, 10092, 5067, 12171, 2476, 3748, 11336, - 6522, 827, 9452, 5374, 12159, 7935, 3296, 3949, 9893, 4452, 10908, 2525, - 3584, 8112, 8011, 10616, 4989, 6958, 11809, 9447, 12280, 1022, 11950, - 9821, 11745, 5791, 5092, 2089, 9005, 2881, 3289, 2013, 9048, 729, 7901, - 1260, 5755, 4632, 11955, 2426, 10593, 1428, 4890, 5911, 3932, 9558, - 8830, 3637, 5542, 145, 5179, 8595, 3707, 10530, 355, 3382, 4231, 9741, - 1207, 9041, 7012, 1168, 10146, 11224, 4645, 11885, 10911, 10377, 435, - 7952, 4096, 493, 9908, 6845, 6039, 2422, 2187, 9723, 8643, 9852, 9302, - 6022, 7278, 1002, 4284, 5088, 1607, 7313, 875, 8509, 9430, 1045, 2481, - 5012, 7428, 354, 6591, 9377, 11847, 2401, 1067, 7188, 11516, 390, 8511, - 8456, 7270, 545, 8585, 9611, 12047, 1537, 4143, 4714, 4885, 1017, 5084, - 1632, 3066, 27, 1440, 8526, 9273, 12046, 11618, 9289, 3400, 9890, 3136, - 7098, 8758, 11813, 7384, 3985, 11869, 6730, 10745, 10111, 2249, 4048, - 2884, 11136, 2126, 1630, 9103, 5407, 2686, 9042, 2969, 8311, 9424, 9919, - 8779, 5332, 10626, 1777, 4654, 10863, 7351, 3636, 9585, 5291, 8374, - 2166, 4919, 12176, 9140, 12129, 7852, 12286, 4895, 10805, 2780, 5195, - 2305, 7247, 9644, 4053, 10600, 3364, 3271, 4057, 4414, 9442, 7917, 2174, - 3947, 11951, 2455, 6599, 10545, 10975, 3654, 2894, 7681, 7126, 7287, - 12269, 4119, 3343, 2151, 1522, 7174, 7350, 11041, 2442, 2148, 5959, - 6492, 8330, 8945, 5598, 3624, 10397, 1325, 6565, 1945, 11260, 10077, - 2674, 3338, 3276, 11034, 506, 6505, 1392, 5478, 8778, 1178, 2776, 3408, - 10347, 11124, 2575, 9489, 12096, 6092, 10058, 4167, 6085, 923, 11251, - 11912, 4578, 10669, 11914, 425, 10453, 392, 10104, 8464, 4235, 8761, - 7376, 2291, 3375, 7954, 8896, 6617, 7790, 1737, 11667, 3982, 9342, 6680, - 636, 6825, 7383, 512, 4670, 2900, 12050, 7735, 994, 1687, 11883, 7021, - 146, 10485, 1403, 5189, 6094, 2483, 2054, 3042, 10945, 3981, 10821, - 11826, 8882, 8151, 180, 9600, 7684, 5219, 10880, 6780, 204, 11232, 2600, - 7584, 3121, 3017, 11053, 7814, 7043, 4251, 4739, 11063, 6771, 7073, - 9261, 2360, 11925, 1928, 11825, 8024, 3678, 3205, 3359, 11197, 5209, - 8581, 3238, 8840, 1136, 9363, 1826, 3171, 4489, 7885, 346, 2068, 1389, - 8257, 3163, 4840, 6127, 8062, 8921, 612, 4238, 10763, 8067, 125, 11749, - 10125, 5416, 2110, 716, 9839, 10584, 11475, 11873, 3448, 343, 1908, - 4538, 10423, 7078, 4727, 1208, 11572, 3589, 2982, 1373, 1721, 10753, - 4103, 2429, 4209, 5412, 5993, 9011, 438, 3515, 7228, 1218, 8347, 5232, - 8682, 1327, 7508, 4924, 448, 1014, 10029, 12221, 4566, 5836, 12229, - 2717, 1535, 3200, 5588, 5845, 412, 5102, 7326, 3744, 3056, 2528, 7406, - 8314, 9202, 6454, 6613, 1417, 10032, 7784, 1518, 3765, 4176, 5063, 9828, - 2275, 6636, 4267, 6463, 2065, 7725, 3495, 8328, 8755, 8144, 10533, 5966, - 12077, 9175, 9520, 5596, 6302, 8400, 579, 6781, 11014, 5734, 11113, - 11164, 4860, 1131, 10844, 9068, 8016, 9694, 3837, 567, 9348, 7000, 6627, - 7699, 5082, 682, 11309, 5207, 4050, 7087, 844, 7434, 3769, 293, 9057, - 6940, 9344, 10883, 2633, 8190, 3944, 5530, 5604, 3480, 2171, 9282, - 11024, 2213, 8136, 3805, 767, 12239, 216, 11520, 6763, 10353, 7, 8566, - 845, 7235, 3154, 4360, 3285, 10268, 2832, 3572, 1282, 7559, 3229, 8360, - 10583, 6105, 3120, 6643, 6203, 8536, 8348, 6919, 3536, 9199, 10891, - 11463, 5043, 1658, 5618, 8787, 5789, 4719, 751, 11379, 6389, 10783, - 3065, 7806, 6586, 2622, 5386, 510, 7628, 6921, 578, 10345, 11839, 8929, - 4684, 12226, 7154, 9916, 7302, 8481, 3670, 11066, 2334, 1590, 7878, - 10734, 1802, 1891, 5103, 6151, 8820, 3418, 7846, 9951, 4693, 417, 9996, - 9652, 4510, 2946, 5461, 365, 881, 1927, 1015, 11675, 11009, 1371, 12265, - 2485, 11385, 5039, 6742, 8449, 1842, 12217, 8176, 9577, 4834, 7937, - 9461, 2643, 11194, 3045, 6508, 4094, 3451, 7911, 11048, 5406, 4665, - 3020, 6616, 11345, 7519, 3669, 5287, 1790, 7014, 5410, 11038, 11249, - 2035, 6125, 10407, 4565, 7315, 5078, 10506, 2840, 2478, 9270, 4194, - 9195, 4518, 7469, 1160, 6878, 2730, 10421, 10036, 1734, 3815, 10939, - 5832, 10595, 10759, 4423, 8420, 9617, 7119, 11010, 11424, 9173, 189, - 10080, 10526, 3466, 10588, 7592, 3578, 11511, 7785, 9663, 530, 12150, - 8957, 2532, 3317, 9349, 10243, 1481, 9332, 3454, 3758, 7899, 4218, 2593, - 11410, 2276, 982, 6513, 1849, 8494, 9021, 4523, 7988, 8, 457, 648, 150, - 8000, 2307, 2301, 874, 5650, 170, 9462, 2873, 9855, 11498, 2535, 11169, - 5808, 12268, 9687, 1901, 7171, 11787, 3846, 1573, 6063, 3793, 466, - 11259, 10608, 3821, 6320, 4649, 6263, 2929, -} - -var psisInvMontgomery = [paramN]uint16{ - 256, 10570, 1510, 7238, 1034, 7170, 6291, 7921, 11665, 3422, 4000, 2327, - 2088, 5565, 795, 10647, 1521, 5484, 2539, 7385, 1055, 7173, 8047, 11683, - 1669, 1994, 3796, 5809, 4341, 9398, 11876, 12230, 10525, 12037, 12253, - 3506, 4012, 9351, 4847, 2448, 7372, 9831, 3160, 2207, 5582, 2553, 7387, - 6322, 9681, 1383, 10731, 1533, 219, 5298, 4268, 7632, 6357, 9686, 8406, - 4712, 9451, 10128, 4958, 5975, 11387, 8649, 11769, 6948, 11526, 12180, - 1740, 10782, 6807, 2728, 7412, 4570, 4164, 4106, 11120, 12122, 8754, - 11784, 3439, 5758, 11356, 6889, 9762, 11928, 1704, 1999, 10819, 12079, - 12259, 7018, 11536, 1648, 1991, 2040, 2047, 2048, 10826, 12080, 8748, - 8272, 8204, 1172, 1923, 7297, 2798, 7422, 6327, 4415, 7653, 6360, 11442, - 12168, 7005, 8023, 9924, 8440, 8228, 2931, 7441, 1063, 3663, 5790, 9605, - 10150, 1450, 8985, 11817, 10466, 10273, 12001, 3470, 7518, 1074, 1909, - 7295, 9820, 4914, 702, 5367, 7789, 8135, 9940, 1420, 3714, 11064, 12114, - 12264, 1752, 5517, 9566, 11900, 1700, 3754, 5803, 829, 1874, 7290, 2797, - 10933, 5073, 7747, 8129, 6428, 6185, 11417, 1631, 233, 5300, 9535, - 10140, 11982, 8734, 8270, 2937, 10953, 8587, 8249, 2934, 9197, 4825, - 5956, 4362, 9401, 1343, 3703, 529, 10609, 12049, 6988, 6265, 895, 3639, - 4031, 4087, 4095, 585, 10617, 8539, 4731, 4187, 9376, 3095, 9220, 10095, - 10220, 1460, 10742, 12068, 1724, 5513, 11321, 6884, 2739, 5658, 6075, - 4379, 11159, 10372, 8504, 4726, 9453, 3106, 7466, 11600, 10435, 8513, - 9994, 8450, 9985, 3182, 10988, 8592, 2983, 9204, 4826, 2445, 5616, 6069, - 867, 3635, 5786, 11360, 5134, 2489, 10889, 12089, 1727, 7269, 2794, - 9177, 1311, 5454, 9557, 6632, 2703, 9164, 10087, 1441, 3717, 531, 3587, - 2268, 324, 5313, 759, 1864, 5533, 2546, 7386, 9833, 8427, 4715, 11207, - 1601, 7251, 4547, 11183, 12131, 1733, 10781, 10318, 1474, 10744, 5046, - 4232, 11138, 10369, 6748, 964, 7160, 4534, 7670, 8118, 8182, 4680, - 11202, 6867, 981, 8918, 1274, 182, 26, 7026, 8026, 11680, 12202, 10521, - 1503, 7237, 4545, 5916, 9623, 8397, 11733, 10454, 3249, 9242, 6587, 941, - 1890, 270, 10572, 6777, 9746, 6659, 6218, 6155, 6146, 878, 1881, 7291, - 11575, 12187, 1741, 7271, 8061, 11685, 6936, 4502, 9421, 4857, 4205, - 7623, 1089, 10689, 1527, 8996, 10063, 11971, 10488, 6765, 2722, 3900, - 9335, 11867, 6962, 11528, 5158, 4248, 4118, 5855, 2592, 5637, 6072, - 2623, 7397, 8079, 9932, 4930, 5971, 853, 3633, 519, 8852, 11798, 3441, - 11025, 1575, 225, 8810, 11792, 12218, 3501, 9278, 3081, 9218, 4828, - 7712, 8124, 11694, 12204, 3499, 4011, 573, 3593, 5780, 7848, 9899, - 10192, 1456, 208, 7052, 2763, 7417, 11593, 10434, 12024, 8740, 11782, - 10461, 3250, 5731, 7841, 9898, 1414, 202, 3540, 7528, 2831, 2160, 10842, - 5060, 4234, 4116, 588, 84, 12, 7024, 2759, 9172, 6577, 11473, 1639, - 9012, 3043, 7457, 6332, 11438, 1634, 1989, 9062, 11828, 8712, 11778, - 12216, 10523, 6770, 9745, 10170, 4964, 9487, 6622, 946, 8913, 6540, - 6201, 4397, 9406, 8366, 9973, 8447, 8229, 11709, 8695, 10020, 3187, - 5722, 2573, 10901, 6824, 4486, 4152, 9371, 8361, 2950, 2177, 311, 1800, - 9035, 8313, 11721, 3430, 490, 70, 10, 1757, 251, 3547, 7529, 11609, - 3414, 7510, 4584, 4166, 9373, 1339, 5458, 7802, 11648, 1664, 7260, 9815, - 10180, 6721, 9738, 10169, 8475, 8233, 9954, 1422, 8981, 1283, 5450, - 11312, 1616, 3742, 11068, 10359, 4991, 713, 3613, 9294, 8350, 4704, 672, - 96, 7036, 9783, 11931, 3460, 5761, 823, 10651, 12055, 10500, 1500, 5481, - 783, 3623, 11051, 8601, 8251, 8201, 11705, 10450, 5004, 4226, 7626, - 2845, 2162, 3820, 7568, 9859, 3164, 452, 10598, 1514, 5483, 6050, 6131, - 4387, 7649, 8115, 6426, 918, 8909, 8295, 1185, 5436, 11310, 8638, 1234, - 5443, 11311, 5127, 2488, 2111, 10835, 5059, 7745, 2862, 3920, 560, 80, - 1767, 2008, 3798, 11076, 6849, 2734, 10924, 12094, 8750, 1250, 10712, - 6797, 971, 7161, 1023, 8924, 4786, 7706, 4612, 4170, 7618, 6355, 4419, - 5898, 11376, 10403, 10264, 6733, 4473, 639, 5358, 2521, 9138, 3061, - 5704, 4326, 618, 5355, 765, 5376, 768, 7132, 4530, 9425, 3102, 9221, - 6584, 11474, 10417, 10266, 12000, 6981, 6264, 4406, 2385, 7363, 4563, - 4163, 7617, 9866, 3165, 9230, 11852, 10471, 5007, 5982, 11388, 5138, - 734, 3616, 11050, 12112, 6997, 11533, 12181, 10518, 12036, 3475, 2252, - 7344, 9827, 4915, 9480, 6621, 4457, 7659, 9872, 6677, 4465, 4149, 7615, - 4599, 657, 3605, 515, 10607, 6782, 4480, 640, 1847, 3775, 5806, 2585, - 5636, 9583, 1369, 10729, 8555, 10000, 11962, 5220, 7768, 8132, 8184, - 9947, 1421, 203, 29, 8782, 11788, 1684, 10774, 10317, 4985, 9490, 8378, - 4708, 11206, 5112, 5997, 7879, 11659, 12199, 8765, 10030, 4944, 5973, - 6120, 6141, 6144, 7900, 11662, 1666, 238, 34, 3516, 5769, 9602, 8394, - 9977, 6692, 956, 10670, 6791, 9748, 11926, 8726, 11780, 5194, 742, 106, - 8793, 10034, 3189, 10989, 5081, 4237, 5872, 4350, 2377, 10873, 6820, - 6241, 11425, 10410, 10265, 3222, 5727, 9596, 4882, 2453, 2106, 3812, - 11078, 12116, 5242, 4260, 11142, 8614, 11764, 12214, 5256, 4262, 4120, - 11122, 5100, 11262, 5120, 2487, 5622, 9581, 8391, 8221, 2930, 10952, - 12098, 6995, 6266, 9673, 4893, 699, 3611, 4027, 5842, 11368, 1624, 232, - 8811, 8281, 1183, 169, 8802, 3013, 2186, 5579, 797, 3625, 4029, 11109, - 1587, 7249, 11569, 8675, 6506, 2685, 10917, 12093, 12261, 12285, 1755, - 7273, 1039, 1904, 272, 3550, 9285, 3082, 5707, 6082, 4380, 7648, 11626, - 5172, 4250, 9385, 8363, 8217, 4685, 5936, 848, 8899, 6538, 934, 1889, - 3781, 9318, 10109, 10222, 6727, 961, 5404, 772, 5377, 9546, 8386, 1198, - 8949, 3034, 2189, 7335, 4559, 5918, 2601, 10905, 5069, 9502, 3113, 7467, - 8089, 11689, 5181, 9518, 8382, 2953, 3933, 4073, 4093, 7607, 8109, 2914, - 5683, 4323, 11151, 1593, 10761, 6804, 972, 3650, 2277, 5592, 4310, 7638, - 9869, 4921, 703, 1856, 9043, 4803, 9464, 1352, 8971, 11815, 5199, 7765, - 6376, 4422, 7654, 2849, 407, 8836, 6529, 7955, 2892, 9191, 1313, 10721, - 12065, 12257, 1751, 9028, 8312, 2943, 2176, 3822, 546, 78, 8789, 11789, - 10462, 12028, 6985, 4509, 9422, 1346, 5459, 4291, 613, 10621, 6784, - 9747, 3148, 7472, 2823, 5670, 810, 7138, 8042, 4660, 7688, 6365, 6176, - 6149, 2634, 5643, 9584, 10147, 11983, 5223, 9524, 11894, 10477, 8519, - 1217, 3685, 2282, 326, 10580, 3267, 7489, 4581, 2410, 5611, 11335, 6886, - 8006, 8166, 11700, 3427, 11023, 8597, 10006, 3185, 455, 65, 5276, 7776, - 4622, 5927, 7869, 9902, 11948, 5218, 2501, 5624, 2559, 10899, 1557, - 1978, 10816, 10323, 8497, 4725, 675, 1852, 10798, 12076, 10503, 3256, - 9243, 3076, 2195, 10847, 12083, 10504, 12034, 10497, -} diff --git a/vendor/blitter.com/go/newhope/reduce.go b/vendor/blitter.com/go/newhope/reduce.go deleted file mode 100644 index 26df25a..0000000 --- a/vendor/blitter.com/go/newhope/reduce.go +++ /dev/null @@ -1,32 +0,0 @@ -// poly.go - NewHope reductions. -// -// To the extent possible under law, Yawning Angel has waived all copyright -// and related or neighboring rights to newhope, using the Creative -// Commons "CC0" public domain dedication. See LICENSE or -// for full details. - -package newhope - -// Incomplete-reduction routines; for details on allowed input ranges -// and produced output ranges, see the description in the paper: -// https://cryptojedi.org/papers/#newhope - -const ( - qinv = 12287 // -inverse_mod(p,2^18) - rlog = 18 -) - -func montgomeryReduce(a uint32) uint16 { - u := a * qinv - u &= ((1 << rlog) - 1) - u *= paramQ - a = (a + u) >> 18 - return uint16(a) -} - -func barrettReduce(a uint16) uint16 { - u := (uint32(a) * 5) >> 16 - u *= paramQ - a -= uint16(u) - return a -} diff --git a/vendor/github.com/aead/chacha20/LICENSE b/vendor/github.com/aead/chacha20/LICENSE deleted file mode 100644 index b6a9210..0000000 --- a/vendor/github.com/aead/chacha20/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Andreas Auernhammer - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/aead/chacha20/chacha/chacha.go b/vendor/github.com/aead/chacha20/chacha/chacha.go deleted file mode 100644 index c2b39da..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha.go +++ /dev/null @@ -1,197 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// Package chacha implements some low-level functions of the -// ChaCha cipher family. -package chacha // import "github.com/aead/chacha20/chacha" - -import ( - "encoding/binary" - "errors" - "math" -) - -const ( - // NonceSize is the size of the ChaCha20 nonce in bytes. - NonceSize = 8 - - // INonceSize is the size of the IETF-ChaCha20 nonce in bytes. - INonceSize = 12 - - // XNonceSize is the size of the XChaCha20 nonce in bytes. - XNonceSize = 24 - - // KeySize is the size of the key in bytes. - KeySize = 32 -) - -var ( - useSSE2 bool - useSSSE3 bool - useAVX bool - useAVX2 bool -) - -var ( - errKeySize = errors.New("chacha20/chacha: bad key length") - errInvalidNonce = errors.New("chacha20/chacha: bad nonce length") -) - -func setup(state *[64]byte, nonce, key []byte) (err error) { - if len(key) != KeySize { - err = errKeySize - return - } - var Nonce [16]byte - switch len(nonce) { - case NonceSize: - copy(Nonce[8:], nonce) - initialize(state, key, &Nonce) - case INonceSize: - copy(Nonce[4:], nonce) - initialize(state, key, &Nonce) - case XNonceSize: - var tmpKey [32]byte - var hNonce [16]byte - - copy(hNonce[:], nonce[:16]) - copy(tmpKey[:], key) - HChaCha20(&tmpKey, &hNonce, &tmpKey) - copy(Nonce[8:], nonce[16:]) - initialize(state, tmpKey[:], &Nonce) - - // BUG(aead): A "good" compiler will remove this (optimizations) - // But using the provided key instead of tmpKey, - // will change the key (-> probably confuses users) - for i := range tmpKey { - tmpKey[i] = 0 - } - default: - err = errInvalidNonce - } - return -} - -// XORKeyStream crypts bytes from src to dst using the given nonce and key. -// The length of the nonce determinds the version of ChaCha20: -// - NonceSize: ChaCha20/r with a 64 bit nonce and a 2^64 * 64 byte period. -// - INonceSize: ChaCha20/r as defined in RFC 7539 and a 2^32 * 64 byte period. -// - XNonceSize: XChaCha20/r with a 192 bit nonce and a 2^64 * 64 byte period. -// The rounds argument specifies the number of rounds performed for keystream -// generation - valid values are 8, 12 or 20. The src and dst may be the same slice -// but otherwise should not overlap. If len(dst) < len(src) this function panics. -// If the nonce is neither 64, 96 nor 192 bits long, this function panics. -func XORKeyStream(dst, src, nonce, key []byte, rounds int) { - if rounds != 20 && rounds != 12 && rounds != 8 { - panic("chacha20/chacha: bad number of rounds") - } - if len(dst) < len(src) { - panic("chacha20/chacha: dst buffer is to small") - } - if len(nonce) == INonceSize && uint64(len(src)) > (1<<38) { - panic("chacha20/chacha: src is too large") - } - - var block, state [64]byte - if err := setup(&state, nonce, key); err != nil { - panic(err) - } - xorKeyStream(dst, src, &block, &state, rounds) -} - -// Cipher implements ChaCha20/r (XChaCha20/r) for a given number of rounds r. -type Cipher struct { - state, block [64]byte - off int - rounds int // 20 for ChaCha20 - noncesize int -} - -// NewCipher returns a new *chacha.Cipher implementing the ChaCha20/r or XChaCha20/r -// (r = 8, 12 or 20) stream cipher. The nonce must be unique for one key for all time. -// The length of the nonce determinds the version of ChaCha20: -// - NonceSize: ChaCha20/r with a 64 bit nonce and a 2^64 * 64 byte period. -// - INonceSize: ChaCha20/r as defined in RFC 7539 and a 2^32 * 64 byte period. -// - XNonceSize: XChaCha20/r with a 192 bit nonce and a 2^64 * 64 byte period. -// If the nonce is neither 64, 96 nor 192 bits long, a non-nil error is returned. -func NewCipher(nonce, key []byte, rounds int) (*Cipher, error) { - if rounds != 20 && rounds != 12 && rounds != 8 { - panic("chacha20/chacha: bad number of rounds") - } - - c := new(Cipher) - if err := setup(&(c.state), nonce, key); err != nil { - return nil, err - } - c.rounds = rounds - - if len(nonce) == INonceSize { - c.noncesize = INonceSize - } else { - c.noncesize = NonceSize - } - - return c, nil -} - -// XORKeyStream crypts bytes from src to dst. Src and dst may be the same slice -// but otherwise should not overlap. If len(dst) < len(src) the function panics. -func (c *Cipher) XORKeyStream(dst, src []byte) { - if len(dst) < len(src) { - panic("chacha20/chacha: dst buffer is to small") - } - - if c.off > 0 { - n := len(c.block[c.off:]) - if len(src) <= n { - for i, v := range src { - dst[i] = v ^ c.block[c.off] - c.off++ - } - if c.off == 64 { - c.off = 0 - } - return - } - - for i, v := range c.block[c.off:] { - dst[i] = src[i] ^ v - } - src = src[n:] - dst = dst[n:] - c.off = 0 - } - - // check for counter overflow - blocksToXOR := len(src) / 64 - if len(src)%64 != 0 { - blocksToXOR++ - } - var overflow bool - if c.noncesize == INonceSize { - overflow = binary.LittleEndian.Uint32(c.state[48:]) > math.MaxUint32-uint32(blocksToXOR) - } else { - overflow = binary.LittleEndian.Uint64(c.state[48:]) > math.MaxUint64-uint64(blocksToXOR) - } - if overflow { - panic("chacha20/chacha: counter overflow") - } - - c.off += xorKeyStream(dst, src, &(c.block), &(c.state), c.rounds) -} - -// SetCounter skips ctr * 64 byte blocks. SetCounter(0) resets the cipher. -// This function always skips the unused keystream of the current 64 byte block. -func (c *Cipher) SetCounter(ctr uint64) { - if c.noncesize == INonceSize { - binary.LittleEndian.PutUint32(c.state[48:], uint32(ctr)) - } else { - binary.LittleEndian.PutUint64(c.state[48:], ctr) - } - c.off = 0 -} - -// HChaCha20 generates 32 pseudo-random bytes from a 128 bit nonce and a 256 bit secret key. -// It can be used as a key-derivation-function (KDF). -func HChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { hChaCha20(out, nonce, key) } diff --git a/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s b/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s deleted file mode 100644 index c2b5f52..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chachaAVX2_amd64.s +++ /dev/null @@ -1,406 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build amd64,!gccgo,!appengine,!nacl - -#include "const.s" -#include "macro.s" - -#define TWO 0(SP) -#define C16 32(SP) -#define C8 64(SP) -#define STATE_0 96(SP) -#define STATE_1 128(SP) -#define STATE_2 160(SP) -#define STATE_3 192(SP) -#define TMP_0 224(SP) -#define TMP_1 256(SP) - -// func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int -TEXT ·xorKeyStreamAVX2(SB), 4, $320-80 - MOVQ dst_base+0(FP), DI - MOVQ src_base+24(FP), SI - MOVQ block+48(FP), BX - MOVQ state+56(FP), AX - MOVQ rounds+64(FP), DX - MOVQ src_len+32(FP), CX - - MOVQ SP, R8 - ADDQ $32, SP - ANDQ $-32, SP - - VMOVDQU 0(AX), Y2 - VMOVDQU 32(AX), Y3 - VPERM2I128 $0x22, Y2, Y0, Y0 - VPERM2I128 $0x33, Y2, Y1, Y1 - VPERM2I128 $0x22, Y3, Y2, Y2 - VPERM2I128 $0x33, Y3, Y3, Y3 - - TESTQ CX, CX - JZ done - - VMOVDQU ·one_AVX2<>(SB), Y4 - VPADDD Y4, Y3, Y3 - - VMOVDQA Y0, STATE_0 - VMOVDQA Y1, STATE_1 - VMOVDQA Y2, STATE_2 - VMOVDQA Y3, STATE_3 - - VMOVDQU ·rol16_AVX2<>(SB), Y4 - VMOVDQU ·rol8_AVX2<>(SB), Y5 - VMOVDQU ·two_AVX2<>(SB), Y6 - VMOVDQA Y4, Y14 - VMOVDQA Y5, Y15 - VMOVDQA Y4, C16 - VMOVDQA Y5, C8 - VMOVDQA Y6, TWO - - CMPQ CX, $64 - JBE between_0_and_64 - CMPQ CX, $192 - JBE between_64_and_192 - CMPQ CX, $320 - JBE between_192_and_320 - CMPQ CX, $448 - JBE between_320_and_448 - -at_least_512: - VMOVDQA Y0, Y4 - VMOVDQA Y1, Y5 - VMOVDQA Y2, Y6 - VPADDQ TWO, Y3, Y7 - VMOVDQA Y0, Y8 - VMOVDQA Y1, Y9 - VMOVDQA Y2, Y10 - VPADDQ TWO, Y7, Y11 - VMOVDQA Y0, Y12 - VMOVDQA Y1, Y13 - VMOVDQA Y2, Y14 - VPADDQ TWO, Y11, Y15 - - MOVQ DX, R9 - -chacha_loop_512: - VMOVDQA Y8, TMP_0 - CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y8, C16, C8) - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y8, C16, C8) - VMOVDQA TMP_0, Y8 - VMOVDQA Y0, TMP_0 - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y0, C16, C8) - CHACHA_QROUND_AVX(Y12, Y13, Y14, Y15, Y0, C16, C8) - CHACHA_SHUFFLE_AVX(Y1, Y2, Y3) - CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) - CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) - CHACHA_SHUFFLE_AVX(Y13, Y14, Y15) - - CHACHA_QROUND_AVX(Y12, Y13, Y14, Y15, Y0, C16, C8) - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y0, C16, C8) - VMOVDQA TMP_0, Y0 - VMOVDQA Y8, TMP_0 - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y8, C16, C8) - CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y8, C16, C8) - VMOVDQA TMP_0, Y8 - CHACHA_SHUFFLE_AVX(Y3, Y2, Y1) - CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) - CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) - CHACHA_SHUFFLE_AVX(Y15, Y14, Y13) - SUBQ $2, R9 - JA chacha_loop_512 - - VMOVDQA Y12, TMP_0 - VMOVDQA Y13, TMP_1 - VPADDD STATE_0, Y0, Y0 - VPADDD STATE_1, Y1, Y1 - VPADDD STATE_2, Y2, Y2 - VPADDD STATE_3, Y3, Y3 - XOR_AVX2(DI, SI, 0, Y0, Y1, Y2, Y3, Y12, Y13) - VMOVDQA STATE_0, Y0 - VMOVDQA STATE_1, Y1 - VMOVDQA STATE_2, Y2 - VMOVDQA STATE_3, Y3 - VPADDQ TWO, Y3, Y3 - - VPADDD Y0, Y4, Y4 - VPADDD Y1, Y5, Y5 - VPADDD Y2, Y6, Y6 - VPADDD Y3, Y7, Y7 - XOR_AVX2(DI, SI, 128, Y4, Y5, Y6, Y7, Y12, Y13) - VPADDQ TWO, Y3, Y3 - - VPADDD Y0, Y8, Y8 - VPADDD Y1, Y9, Y9 - VPADDD Y2, Y10, Y10 - VPADDD Y3, Y11, Y11 - XOR_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) - VPADDQ TWO, Y3, Y3 - - VPADDD TMP_0, Y0, Y12 - VPADDD TMP_1, Y1, Y13 - VPADDD Y2, Y14, Y14 - VPADDD Y3, Y15, Y15 - VPADDQ TWO, Y3, Y3 - - CMPQ CX, $512 - JB less_than_512 - - XOR_AVX2(DI, SI, 384, Y12, Y13, Y14, Y15, Y4, Y5) - VMOVDQA Y3, STATE_3 - ADDQ $512, SI - ADDQ $512, DI - SUBQ $512, CX - CMPQ CX, $448 - JA at_least_512 - - TESTQ CX, CX - JZ done - - VMOVDQA C16, Y14 - VMOVDQA C8, Y15 - - CMPQ CX, $64 - JBE between_0_and_64 - CMPQ CX, $192 - JBE between_64_and_192 - CMPQ CX, $320 - JBE between_192_and_320 - JMP between_320_and_448 - -less_than_512: - XOR_UPPER_AVX2(DI, SI, 384, Y12, Y13, Y14, Y15, Y4, Y5) - EXTRACT_LOWER(BX, Y12, Y13, Y14, Y15, Y4) - ADDQ $448, SI - ADDQ $448, DI - SUBQ $448, CX - JMP finalize - -between_320_and_448: - VMOVDQA Y0, Y4 - VMOVDQA Y1, Y5 - VMOVDQA Y2, Y6 - VPADDQ TWO, Y3, Y7 - VMOVDQA Y0, Y8 - VMOVDQA Y1, Y9 - VMOVDQA Y2, Y10 - VPADDQ TWO, Y7, Y11 - - MOVQ DX, R9 - -chacha_loop_384: - CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y1, Y2, Y3) - CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) - CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) - CHACHA_QROUND_AVX(Y0, Y1, Y2, Y3, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y3, Y2, Y1) - CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) - CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) - SUBQ $2, R9 - JA chacha_loop_384 - - VPADDD STATE_0, Y0, Y0 - VPADDD STATE_1, Y1, Y1 - VPADDD STATE_2, Y2, Y2 - VPADDD STATE_3, Y3, Y3 - XOR_AVX2(DI, SI, 0, Y0, Y1, Y2, Y3, Y12, Y13) - VMOVDQA STATE_0, Y0 - VMOVDQA STATE_1, Y1 - VMOVDQA STATE_2, Y2 - VMOVDQA STATE_3, Y3 - VPADDQ TWO, Y3, Y3 - - VPADDD Y0, Y4, Y4 - VPADDD Y1, Y5, Y5 - VPADDD Y2, Y6, Y6 - VPADDD Y3, Y7, Y7 - XOR_AVX2(DI, SI, 128, Y4, Y5, Y6, Y7, Y12, Y13) - VPADDQ TWO, Y3, Y3 - - VPADDD Y0, Y8, Y8 - VPADDD Y1, Y9, Y9 - VPADDD Y2, Y10, Y10 - VPADDD Y3, Y11, Y11 - VPADDQ TWO, Y3, Y3 - - CMPQ CX, $384 - JB less_than_384 - - XOR_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) - SUBQ $384, CX - TESTQ CX, CX - JE done - - ADDQ $384, SI - ADDQ $384, DI - JMP between_0_and_64 - -less_than_384: - XOR_UPPER_AVX2(DI, SI, 256, Y8, Y9, Y10, Y11, Y12, Y13) - EXTRACT_LOWER(BX, Y8, Y9, Y10, Y11, Y12) - ADDQ $320, SI - ADDQ $320, DI - SUBQ $320, CX - JMP finalize - -between_192_and_320: - VMOVDQA Y0, Y4 - VMOVDQA Y1, Y5 - VMOVDQA Y2, Y6 - VMOVDQA Y3, Y7 - VMOVDQA Y0, Y8 - VMOVDQA Y1, Y9 - VMOVDQA Y2, Y10 - VPADDQ TWO, Y3, Y11 - - MOVQ DX, R9 - -chacha_loop_256: - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) - CHACHA_SHUFFLE_AVX(Y9, Y10, Y11) - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_QROUND_AVX(Y8, Y9, Y10, Y11, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) - CHACHA_SHUFFLE_AVX(Y11, Y10, Y9) - SUBQ $2, R9 - JA chacha_loop_256 - - VPADDD Y0, Y4, Y4 - VPADDD Y1, Y5, Y5 - VPADDD Y2, Y6, Y6 - VPADDD Y3, Y7, Y7 - VPADDQ TWO, Y3, Y3 - XOR_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) - VPADDD Y0, Y8, Y8 - VPADDD Y1, Y9, Y9 - VPADDD Y2, Y10, Y10 - VPADDD Y3, Y11, Y11 - VPADDQ TWO, Y3, Y3 - - CMPQ CX, $256 - JB less_than_256 - - XOR_AVX2(DI, SI, 128, Y8, Y9, Y10, Y11, Y12, Y13) - SUBQ $256, CX - TESTQ CX, CX - JE done - - ADDQ $256, SI - ADDQ $256, DI - JMP between_0_and_64 - -less_than_256: - XOR_UPPER_AVX2(DI, SI, 128, Y8, Y9, Y10, Y11, Y12, Y13) - EXTRACT_LOWER(BX, Y8, Y9, Y10, Y11, Y12) - ADDQ $192, SI - ADDQ $192, DI - SUBQ $192, CX - JMP finalize - -between_64_and_192: - VMOVDQA Y0, Y4 - VMOVDQA Y1, Y5 - VMOVDQA Y2, Y6 - VMOVDQA Y3, Y7 - - MOVQ DX, R9 - -chacha_loop_128: - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y5, Y6, Y7) - CHACHA_QROUND_AVX(Y4, Y5, Y6, Y7, Y13, Y14, Y15) - CHACHA_SHUFFLE_AVX(Y7, Y6, Y5) - SUBQ $2, R9 - JA chacha_loop_128 - - VPADDD Y0, Y4, Y4 - VPADDD Y1, Y5, Y5 - VPADDD Y2, Y6, Y6 - VPADDD Y3, Y7, Y7 - VPADDQ TWO, Y3, Y3 - - CMPQ CX, $128 - JB less_than_128 - - XOR_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) - SUBQ $128, CX - TESTQ CX, CX - JE done - - ADDQ $128, SI - ADDQ $128, DI - JMP between_0_and_64 - -less_than_128: - XOR_UPPER_AVX2(DI, SI, 0, Y4, Y5, Y6, Y7, Y12, Y13) - EXTRACT_LOWER(BX, Y4, Y5, Y6, Y7, Y13) - ADDQ $64, SI - ADDQ $64, DI - SUBQ $64, CX - JMP finalize - -between_0_and_64: - VMOVDQA X0, X4 - VMOVDQA X1, X5 - VMOVDQA X2, X6 - VMOVDQA X3, X7 - - MOVQ DX, R9 - -chacha_loop_64: - CHACHA_QROUND_AVX(X4, X5, X6, X7, X13, X14, X15) - CHACHA_SHUFFLE_AVX(X5, X6, X7) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X13, X14, X15) - CHACHA_SHUFFLE_AVX(X7, X6, X5) - SUBQ $2, R9 - JA chacha_loop_64 - - VPADDD X0, X4, X4 - VPADDD X1, X5, X5 - VPADDD X2, X6, X6 - VPADDD X3, X7, X7 - VMOVDQU ·one<>(SB), X0 - VPADDQ X0, X3, X3 - - CMPQ CX, $64 - JB less_than_64 - - XOR_AVX(DI, SI, 0, X4, X5, X6, X7, X13) - SUBQ $64, CX - JMP done - -less_than_64: - VMOVDQU X4, 0(BX) - VMOVDQU X5, 16(BX) - VMOVDQU X6, 32(BX) - VMOVDQU X7, 48(BX) - -finalize: - XORQ R11, R11 - XORQ R12, R12 - MOVQ CX, BP - -xor_loop: - MOVB 0(SI), R11 - MOVB 0(BX), R12 - XORQ R11, R12 - MOVB R12, 0(DI) - INCQ SI - INCQ BX - INCQ DI - DECQ BP - JA xor_loop - -done: - VMOVDQU X3, 48(AX) - VZEROUPPER - MOVQ R8, SP - MOVQ CX, ret+72(FP) - RET - diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_386.go b/vendor/github.com/aead/chacha20/chacha/chacha_386.go deleted file mode 100644 index 97e533d..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_386.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build 386,!gccgo,!appengine,!nacl - -package chacha - -import ( - "encoding/binary" - - "golang.org/x/sys/cpu" -) - -func init() { - useSSE2 = cpu.X86.HasSSE2 - useSSSE3 = cpu.X86.HasSSSE3 - useAVX = false - useAVX2 = false -} - -func initialize(state *[64]byte, key []byte, nonce *[16]byte) { - binary.LittleEndian.PutUint32(state[0:], sigma[0]) - binary.LittleEndian.PutUint32(state[4:], sigma[1]) - binary.LittleEndian.PutUint32(state[8:], sigma[2]) - binary.LittleEndian.PutUint32(state[12:], sigma[3]) - copy(state[16:], key[:]) - copy(state[48:], nonce[:]) -} - -// This function is implemented in chacha_386.s -//go:noescape -func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) - -// This function is implemented in chacha_386.s -//go:noescape -func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) - -// This function is implemented in chacha_386.s -//go:noescape -func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int - -func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { - switch { - case useSSSE3: - hChaCha20SSSE3(out, nonce, key) - case useSSE2: - hChaCha20SSE2(out, nonce, key) - default: - hChaCha20Generic(out, nonce, key) - } -} - -func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { - if useSSE2 { - return xorKeyStreamSSE2(dst, src, block, state, rounds) - } else { - return xorKeyStreamGeneric(dst, src, block, state, rounds) - } -} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_386.s b/vendor/github.com/aead/chacha20/chacha/chacha_386.s deleted file mode 100644 index 262fc86..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_386.s +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build 386,!gccgo,!appengine,!nacl - -#include "const.s" -#include "macro.s" - -// FINALIZE xors len bytes from src and block using -// the temp. registers t0 and t1 and writes the result -// to dst. -#define FINALIZE(dst, src, block, len, t0, t1) \ - XORL t0, t0; \ - XORL t1, t1; \ - FINALIZE_LOOP:; \ - MOVB 0(src), t0; \ - MOVB 0(block), t1; \ - XORL t0, t1; \ - MOVB t1, 0(dst); \ - INCL src; \ - INCL block; \ - INCL dst; \ - DECL len; \ - JG FINALIZE_LOOP \ - -#define Dst DI -#define Nonce AX -#define Key BX -#define Rounds DX - -// func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) -TEXT ·hChaCha20SSE2(SB), 4, $0-12 - MOVL out+0(FP), Dst - MOVL nonce+4(FP), Nonce - MOVL key+8(FP), Key - - MOVOU ·sigma<>(SB), X0 - MOVOU 0*16(Key), X1 - MOVOU 1*16(Key), X2 - MOVOU 0*16(Nonce), X3 - MOVL $20, Rounds - -chacha_loop: - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_SHUFFLE_SSE(X3, X2, X1) - SUBL $2, Rounds - JNZ chacha_loop - - MOVOU X0, 0*16(Dst) - MOVOU X3, 1*16(Dst) - RET - -// func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) -TEXT ·hChaCha20SSSE3(SB), 4, $0-12 - MOVL out+0(FP), Dst - MOVL nonce+4(FP), Nonce - MOVL key+8(FP), Key - - MOVOU ·sigma<>(SB), X0 - MOVOU 0*16(Key), X1 - MOVOU 1*16(Key), X2 - MOVOU 0*16(Nonce), X3 - MOVL $20, Rounds - - MOVOU ·rol16<>(SB), X5 - MOVOU ·rol8<>(SB), X6 - -chacha_loop: - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_SSE(X3, X2, X1) - SUBL $2, Rounds - JNZ chacha_loop - - MOVOU X0, 0*16(Dst) - MOVOU X3, 1*16(Dst) - RET - -#undef Dst -#undef Nonce -#undef Key -#undef Rounds - -#define State AX -#define Dst DI -#define Src SI -#define Len DX -#define Tmp0 BX -#define Tmp1 BP - -// func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int -TEXT ·xorKeyStreamSSE2(SB), 4, $0-40 - MOVL dst_base+0(FP), Dst - MOVL src_base+12(FP), Src - MOVL state+28(FP), State - MOVL src_len+16(FP), Len - MOVL $0, ret+36(FP) // Number of bytes written to the keystream buffer - 0 iff len mod 64 == 0 - - MOVOU 0*16(State), X0 - MOVOU 1*16(State), X1 - MOVOU 2*16(State), X2 - MOVOU 3*16(State), X3 - TESTL Len, Len - JZ DONE - -GENERATE_KEYSTREAM: - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - MOVL rounds+32(FP), Tmp0 - -CHACHA_LOOP: - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBL $2, Tmp0 - JA CHACHA_LOOP - - MOVOU 0*16(State), X0 // Restore X0 from state - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - MOVOU ·one<>(SB), X0 - PADDQ X0, X3 - - CMPL Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X0) - MOVOU 0*16(State), X0 // Restore X0 from state - ADDL $64, Src - ADDL $64, Dst - SUBL $64, Len - JZ DONE - JMP GENERATE_KEYSTREAM // There is at least one more plaintext byte - -BUFFER_KEYSTREAM: - MOVL block+24(FP), State - MOVOU X4, 0(State) - MOVOU X5, 16(State) - MOVOU X6, 32(State) - MOVOU X7, 48(State) - MOVL Len, ret+36(FP) // Number of bytes written to the keystream buffer - 0 < Len < 64 - FINALIZE(Dst, Src, State, Len, Tmp0, Tmp1) - -DONE: - MOVL state+28(FP), State - MOVOU X3, 3*16(State) - RET - -#undef State -#undef Dst -#undef Src -#undef Len -#undef Tmp0 -#undef Tmp1 diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go deleted file mode 100644 index 635f7de..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) 2017 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build go1.7,amd64,!gccgo,!appengine,!nacl - -package chacha - -import "golang.org/x/sys/cpu" - -func init() { - useSSE2 = cpu.X86.HasSSE2 - useSSSE3 = cpu.X86.HasSSSE3 - useAVX = cpu.X86.HasAVX - useAVX2 = cpu.X86.HasAVX2 -} - -// This function is implemented in chacha_amd64.s -//go:noescape -func initialize(state *[64]byte, key []byte, nonce *[16]byte) - -// This function is implemented in chacha_amd64.s -//go:noescape -func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) - -// This function is implemented in chacha_amd64.s -//go:noescape -func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) - -// This function is implemented in chachaAVX2_amd64.s -//go:noescape -func hChaCha20AVX(out *[32]byte, nonce *[16]byte, key *[32]byte) - -// This function is implemented in chacha_amd64.s -//go:noescape -func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int - -// This function is implemented in chacha_amd64.s -//go:noescape -func xorKeyStreamSSSE3(dst, src []byte, block, state *[64]byte, rounds int) int - -// This function is implemented in chacha_amd64.s -//go:noescape -func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int - -// This function is implemented in chachaAVX2_amd64.s -//go:noescape -func xorKeyStreamAVX2(dst, src []byte, block, state *[64]byte, rounds int) int - -func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { - switch { - case useAVX: - hChaCha20AVX(out, nonce, key) - case useSSSE3: - hChaCha20SSSE3(out, nonce, key) - case useSSE2: - hChaCha20SSE2(out, nonce, key) - default: - hChaCha20Generic(out, nonce, key) - } -} - -func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { - switch { - case useAVX2: - return xorKeyStreamAVX2(dst, src, block, state, rounds) - case useAVX: - return xorKeyStreamAVX(dst, src, block, state, rounds) - case useSSSE3: - return xorKeyStreamSSSE3(dst, src, block, state, rounds) - case useSSE2: - return xorKeyStreamSSE2(dst, src, block, state, rounds) - default: - return xorKeyStreamGeneric(dst, src, block, state, rounds) - } -} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s b/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s deleted file mode 100644 index 26a2383..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_amd64.s +++ /dev/null @@ -1,1072 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build amd64,!gccgo,!appengine,!nacl - -#include "const.s" -#include "macro.s" - -// FINALIZE xors len bytes from src and block using -// the temp. registers t0 and t1 and writes the result -// to dst. -#define FINALIZE(dst, src, block, len, t0, t1) \ - XORQ t0, t0; \ - XORQ t1, t1; \ - FINALIZE_LOOP:; \ - MOVB 0(src), t0; \ - MOVB 0(block), t1; \ - XORQ t0, t1; \ - MOVB t1, 0(dst); \ - INCQ src; \ - INCQ block; \ - INCQ dst; \ - DECQ len; \ - JG FINALIZE_LOOP \ - -#define Dst DI -#define Nonce AX -#define Key BX -#define Rounds DX - -// func initialize(state *[64]byte, key []byte, nonce *[16]byte) -TEXT ·initialize(SB), 4, $0-40 - MOVQ state+0(FP), Dst - MOVQ key+8(FP), Key - MOVQ nonce+32(FP), Nonce - - MOVOU ·sigma<>(SB), X0 - MOVOU 0*16(Key), X1 - MOVOU 1*16(Key), X2 - MOVOU 0*16(Nonce), X3 - - MOVOU X0, 0*16(Dst) - MOVOU X1, 1*16(Dst) - MOVOU X2, 2*16(Dst) - MOVOU X3, 3*16(Dst) - RET - -// func hChaCha20AVX(out *[32]byte, nonce *[16]byte, key *[32]byte) -TEXT ·hChaCha20AVX(SB), 4, $0-24 - MOVQ out+0(FP), Dst - MOVQ nonce+8(FP), Nonce - MOVQ key+16(FP), Key - - VMOVDQU ·sigma<>(SB), X0 - VMOVDQU 0*16(Key), X1 - VMOVDQU 1*16(Key), X2 - VMOVDQU 0*16(Nonce), X3 - VMOVDQU ·rol16_AVX2<>(SB), X5 - VMOVDQU ·rol8_AVX2<>(SB), X6 - MOVQ $20, Rounds - -CHACHA_LOOP: - CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_AVX(X1, X2, X3) - CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_AVX(X3, X2, X1) - SUBQ $2, Rounds - JNZ CHACHA_LOOP - - VMOVDQU X0, 0*16(Dst) - VMOVDQU X3, 1*16(Dst) - VZEROUPPER - RET - -// func hChaCha20SSE2(out *[32]byte, nonce *[16]byte, key *[32]byte) -TEXT ·hChaCha20SSE2(SB), 4, $0-24 - MOVQ out+0(FP), Dst - MOVQ nonce+8(FP), Nonce - MOVQ key+16(FP), Key - - MOVOU ·sigma<>(SB), X0 - MOVOU 0*16(Key), X1 - MOVOU 1*16(Key), X2 - MOVOU 0*16(Nonce), X3 - MOVQ $20, Rounds - -CHACHA_LOOP: - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_SHUFFLE_SSE(X3, X2, X1) - SUBQ $2, Rounds - JNZ CHACHA_LOOP - - MOVOU X0, 0*16(Dst) - MOVOU X3, 1*16(Dst) - RET - -// func hChaCha20SSSE3(out *[32]byte, nonce *[16]byte, key *[32]byte) -TEXT ·hChaCha20SSSE3(SB), 4, $0-24 - MOVQ out+0(FP), Dst - MOVQ nonce+8(FP), Nonce - MOVQ key+16(FP), Key - - MOVOU ·sigma<>(SB), X0 - MOVOU 0*16(Key), X1 - MOVOU 1*16(Key), X2 - MOVOU 0*16(Nonce), X3 - MOVOU ·rol16<>(SB), X5 - MOVOU ·rol8<>(SB), X6 - MOVQ $20, Rounds - -chacha_loop: - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, X5, X6) - CHACHA_SHUFFLE_SSE(X3, X2, X1) - SUBQ $2, Rounds - JNZ chacha_loop - - MOVOU X0, 0*16(Dst) - MOVOU X3, 1*16(Dst) - RET - -#undef Dst -#undef Nonce -#undef Key -#undef Rounds - -#define Dst DI -#define Src SI -#define Len R12 -#define Rounds DX -#define Buffer BX -#define State AX -#define Stack SP -#define SavedSP R8 -#define Tmp0 R9 -#define Tmp1 R10 -#define Tmp2 R11 - -// func xorKeyStreamSSE2(dst, src []byte, block, state *[64]byte, rounds int) int -TEXT ·xorKeyStreamSSE2(SB), 4, $112-80 - MOVQ dst_base+0(FP), Dst - MOVQ src_base+24(FP), Src - MOVQ block+48(FP), Buffer - MOVQ state+56(FP), State - MOVQ rounds+64(FP), Rounds - MOVQ src_len+32(FP), Len - - MOVOU 0*16(State), X0 - MOVOU 1*16(State), X1 - MOVOU 2*16(State), X2 - MOVOU 3*16(State), X3 - - MOVQ Stack, SavedSP - ADDQ $16, Stack - ANDQ $-16, Stack - - TESTQ Len, Len - JZ DONE - - MOVOU ·one<>(SB), X4 - MOVO X0, 0*16(Stack) - MOVO X1, 1*16(Stack) - MOVO X2, 2*16(Stack) - MOVO X3, 3*16(Stack) - MOVO X4, 4*16(Stack) - - CMPQ Len, $64 - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 - JLE GENERATE_KEYSTREAM_192 - -GENERATE_KEYSTREAM_256: - MOVO X0, X12 - MOVO X1, X13 - MOVO X2, X14 - MOVO X3, X15 - PADDQ 4*16(Stack), X15 - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X15, X11 - PADDQ 4*16(Stack), X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X11, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - - MOVO X3, 3*16(Stack) // Save X3 - -CHACHA_LOOP_256: - MOVO X4, 5*16(Stack) - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_QROUND_SSE2(X12, X13, X14, X15, X4) - MOVO 5*16(Stack), X4 - MOVO X0, 5*16(Stack) - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - MOVO 5*16(Stack), X0 - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_SHUFFLE_SSE(X13, X14, X15) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - MOVO X4, 5*16(Stack) - CHACHA_QROUND_SSE2(X0, X1, X2, X3, X4) - CHACHA_QROUND_SSE2(X12, X13, X14, X15, X4) - MOVO 5*16(Stack), X4 - MOVO X0, 5*16(Stack) - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - MOVO 5*16(Stack), X0 - CHACHA_SHUFFLE_SSE(X3, X2, X1) - CHACHA_SHUFFLE_SSE(X15, X14, X13) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_256 - - PADDL 0*16(Stack), X0 - PADDL 1*16(Stack), X1 - PADDL 2*16(Stack), X2 - PADDL 3*16(Stack), X3 - MOVO X4, 5*16(Stack) // Save X4 - XOR_SSE(Dst, Src, 0, X0, X1, X2, X3, X4) - MOVO 5*16(Stack), X4 // Restore X4 - - MOVO 0*16(Stack), X0 - MOVO 1*16(Stack), X1 - MOVO 2*16(Stack), X2 - MOVO 3*16(Stack), X3 - PADDQ 4*16(Stack), X3 - - PADDL X0, X12 - PADDL X1, X13 - PADDL X2, X14 - PADDL X3, X15 - PADDQ 4*16(Stack), X3 - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 64, X12, X13, X14, X15, X0) - XOR_SSE(Dst, Src, 128, X8, X9, X10, X11, X0) - MOVO 0*16(Stack), X0 // Restore X0 - ADDQ $192, Dst - ADDQ $192, Src - SUBQ $192, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream - JG GENERATE_KEYSTREAM_256 - -GENERATE_KEYSTREAM_192: - MOVO X0, X12 - MOVO X1, X13 - MOVO X2, X14 - MOVO X3, X15 - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X3, X11 - PADDQ 4*16(Stack), X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X11, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - -CHACHA_LOOP_192: - CHACHA_QROUND_SSE2(X12, X13, X14, X15, X0) - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - CHACHA_SHUFFLE_SSE(X13, X14, X15) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSE2(X12, X13, X14, X15, X0) - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X0) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X0) - CHACHA_SHUFFLE_SSE(X15, X14, X13) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_192 - - MOVO 0*16(Stack), X0 // Restore X0 - PADDL X0, X12 - PADDL X1, X13 - PADDL X2, X14 - PADDL X3, X15 - PADDQ 4*16(Stack), X3 - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 0, X12, X13, X14, X15, X0) - XOR_SSE(Dst, Src, 64, X8, X9, X10, X11, X0) - MOVO 0*16(Stack), X0 // Restore X0 - ADDQ $128, Dst - ADDQ $128, Src - SUBQ $128, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - -GENERATE_KEYSTREAM_128: - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X3, X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - -CHACHA_LOOP_128: - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X12) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X12) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSE2(X8, X9, X10, X11, X12) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X12) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_128 - - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 0, X8, X9, X10, X11, X12) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream - -GENERATE_KEYSTREAM_64: - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - MOVQ Rounds, Tmp0 - -CHACHA_LOOP_64: - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X8) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSE2(X4, X5, X6, X7, X8) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_64 - - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Src - ADDQ $64, Dst - SUBQ $64, Len - JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. - -BUFFER_KEYSTREAM: - MOVOU X4, 0*16(Buffer) - MOVOU X5, 1*16(Buffer) - MOVOU X6, 2*16(Buffer) - MOVOU X7, 3*16(Buffer) - MOVQ Len, Tmp0 - FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) - -DONE: - MOVQ SavedSP, Stack // Restore stack pointer - MOVOU X3, 3*16(State) - MOVQ Len, ret+72(FP) - RET - -// func xorKeyStreamSSSE3(dst, src []byte, block, state *[64]byte, rounds int) int -TEXT ·xorKeyStreamSSSE3(SB), 4, $144-80 - MOVQ dst_base+0(FP), Dst - MOVQ src_base+24(FP), Src - MOVQ block+48(FP), Buffer - MOVQ state+56(FP), State - MOVQ rounds+64(FP), Rounds - MOVQ src_len+32(FP), Len - - MOVOU 0*16(State), X0 - MOVOU 1*16(State), X1 - MOVOU 2*16(State), X2 - MOVOU 3*16(State), X3 - - MOVQ Stack, SavedSP - ADDQ $16, Stack - ANDQ $-16, Stack - - TESTQ Len, Len - JZ DONE - - MOVOU ·one<>(SB), X4 - MOVOU ·rol16<>(SB), X5 - MOVOU ·rol8<>(SB), X6 - MOVO X0, 0*16(Stack) - MOVO X1, 1*16(Stack) - MOVO X2, 2*16(Stack) - MOVO X3, 3*16(Stack) - MOVO X4, 4*16(Stack) - MOVO X5, 6*16(Stack) - MOVO X6, 7*16(Stack) - - CMPQ Len, $64 - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 - JLE GENERATE_KEYSTREAM_192 - -GENERATE_KEYSTREAM_256: - MOVO X0, X12 - MOVO X1, X13 - MOVO X2, X14 - MOVO X3, X15 - PADDQ 4*16(Stack), X15 - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X15, X11 - PADDQ 4*16(Stack), X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X11, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - - MOVO X3, 3*16(Stack) // Save X3 - -CHACHA_LOOP_256: - MOVO X4, 5*16(Stack) - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) - MOVO 5*16(Stack), X4 - MOVO X0, 5*16(Stack) - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) - MOVO 5*16(Stack), X0 - CHACHA_SHUFFLE_SSE(X1, X2, X3) - CHACHA_SHUFFLE_SSE(X13, X14, X15) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - MOVO X4, 5*16(Stack) - CHACHA_QROUND_SSSE3(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) - MOVO 5*16(Stack), X4 - MOVO X0, 5*16(Stack) - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) - MOVO 5*16(Stack), X0 - CHACHA_SHUFFLE_SSE(X3, X2, X1) - CHACHA_SHUFFLE_SSE(X15, X14, X13) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_256 - - PADDL 0*16(Stack), X0 - PADDL 1*16(Stack), X1 - PADDL 2*16(Stack), X2 - PADDL 3*16(Stack), X3 - MOVO X4, 5*16(Stack) // Save X4 - XOR_SSE(Dst, Src, 0, X0, X1, X2, X3, X4) - MOVO 5*16(Stack), X4 // Restore X4 - - MOVO 0*16(Stack), X0 - MOVO 1*16(Stack), X1 - MOVO 2*16(Stack), X2 - MOVO 3*16(Stack), X3 - PADDQ 4*16(Stack), X3 - - PADDL X0, X12 - PADDL X1, X13 - PADDL X2, X14 - PADDL X3, X15 - PADDQ 4*16(Stack), X3 - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 64, X12, X13, X14, X15, X0) - XOR_SSE(Dst, Src, 128, X8, X9, X10, X11, X0) - MOVO 0*16(Stack), X0 // Restore X0 - ADDQ $192, Dst - ADDQ $192, Src - SUBQ $192, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream - JG GENERATE_KEYSTREAM_256 - -GENERATE_KEYSTREAM_192: - MOVO X0, X12 - MOVO X1, X13 - MOVO X2, X14 - MOVO X3, X15 - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X3, X11 - PADDQ 4*16(Stack), X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X11, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - - MOVO 6*16(Stack), X1 // Load 16 bit rotate-left constant - MOVO 7*16(Stack), X2 // Load 8 bit rotate-left constant - -CHACHA_LOOP_192: - CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X0, X1, X2) - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, X1, X2) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, X1, X2) - CHACHA_SHUFFLE_SSE(X13, X14, X15) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSSE3(X12, X13, X14, X15, X0, X1, X2) - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X0, X1, X2) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X0, X1, X2) - CHACHA_SHUFFLE_SSE(X15, X14, X13) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_192 - - MOVO 0*16(Stack), X0 // Restore X0 - MOVO 1*16(Stack), X1 // Restore X1 - MOVO 2*16(Stack), X2 // Restore X2 - PADDL X0, X12 - PADDL X1, X13 - PADDL X2, X14 - PADDL X3, X15 - PADDQ 4*16(Stack), X3 - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 0, X12, X13, X14, X15, X0) - XOR_SSE(Dst, Src, 64, X8, X9, X10, X11, X0) - MOVO 0*16(Stack), X0 // Restore X0 - ADDQ $128, Dst - ADDQ $128, Src - SUBQ $128, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - -GENERATE_KEYSTREAM_128: - MOVO X0, X8 - MOVO X1, X9 - MOVO X2, X10 - MOVO X3, X11 - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - PADDQ 4*16(Stack), X7 - MOVQ Rounds, Tmp0 - - MOVO 6*16(Stack), X13 // Load 16 bit rotate-left constant - MOVO 7*16(Stack), X14 // Load 8 bit rotate-left constant - -CHACHA_LOOP_128: - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X12, X13, X14) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X12, X13, X14) - CHACHA_SHUFFLE_SSE(X9, X10, X11) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSSE3(X8, X9, X10, X11, X12, X13, X14) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X12, X13, X14) - CHACHA_SHUFFLE_SSE(X11, X10, X9) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_128 - - PADDL X0, X8 - PADDL X1, X9 - PADDL X2, X10 - PADDL X3, X11 - PADDQ 4*16(Stack), X3 - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - XOR_SSE(Dst, Src, 0, X8, X9, X10, X11, X12) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream - -GENERATE_KEYSTREAM_64: - MOVO X0, X4 - MOVO X1, X5 - MOVO X2, X6 - MOVO X3, X7 - MOVQ Rounds, Tmp0 - - MOVO 6*16(Stack), X9 // Load 16 bit rotate-left constant - MOVO 7*16(Stack), X10 // Load 8 bit rotate-left constant - -CHACHA_LOOP_64: - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10) - CHACHA_SHUFFLE_SSE(X5, X6, X7) - CHACHA_QROUND_SSSE3(X4, X5, X6, X7, X8, X9, X10) - CHACHA_SHUFFLE_SSE(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_64 - - PADDL X0, X4 - PADDL X1, X5 - PADDL X2, X6 - PADDL X3, X7 - PADDQ 4*16(Stack), X3 - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_SSE(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Src - ADDQ $64, Dst - SUBQ $64, Len - JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. - -BUFFER_KEYSTREAM: - MOVOU X4, 0*16(Buffer) - MOVOU X5, 1*16(Buffer) - MOVOU X6, 2*16(Buffer) - MOVOU X7, 3*16(Buffer) - MOVQ Len, Tmp0 - FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) - -DONE: - MOVQ SavedSP, Stack // Restore stack pointer - MOVOU X3, 3*16(State) - MOVQ Len, ret+72(FP) - RET - -// func xorKeyStreamAVX(dst, src []byte, block, state *[64]byte, rounds int) int -TEXT ·xorKeyStreamAVX(SB), 4, $144-80 - MOVQ dst_base+0(FP), Dst - MOVQ src_base+24(FP), Src - MOVQ block+48(FP), Buffer - MOVQ state+56(FP), State - MOVQ rounds+64(FP), Rounds - MOVQ src_len+32(FP), Len - - VMOVDQU 0*16(State), X0 - VMOVDQU 1*16(State), X1 - VMOVDQU 2*16(State), X2 - VMOVDQU 3*16(State), X3 - - MOVQ Stack, SavedSP - ADDQ $16, Stack - ANDQ $-16, Stack - - TESTQ Len, Len - JZ DONE - - VMOVDQU ·one<>(SB), X4 - VMOVDQU ·rol16<>(SB), X5 - VMOVDQU ·rol8<>(SB), X6 - VMOVDQA X0, 0*16(Stack) - VMOVDQA X1, 1*16(Stack) - VMOVDQA X2, 2*16(Stack) - VMOVDQA X3, 3*16(Stack) - VMOVDQA X4, 4*16(Stack) - VMOVDQA X5, 6*16(Stack) - VMOVDQA X6, 7*16(Stack) - - CMPQ Len, $64 - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 - JLE GENERATE_KEYSTREAM_192 - -GENERATE_KEYSTREAM_256: - VMOVDQA X0, X12 - VMOVDQA X1, X13 - VMOVDQA X2, X14 - VMOVDQA X3, X15 - VPADDQ 4*16(Stack), X15, X15 - VMOVDQA X0, X8 - VMOVDQA X1, X9 - VMOVDQA X2, X10 - VMOVDQA X15, X11 - VPADDQ 4*16(Stack), X11, X11 - VMOVDQA X0, X4 - VMOVDQA X1, X5 - VMOVDQA X2, X6 - VMOVDQA X11, X7 - VPADDQ 4*16(Stack), X7, X7 - MOVQ Rounds, Tmp0 - - VMOVDQA X3, 3*16(Stack) // Save X3 - -CHACHA_LOOP_256: - VMOVDQA X4, 5*16(Stack) - CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_AVX(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) - VMOVDQA 5*16(Stack), X4 - VMOVDQA X0, 5*16(Stack) - CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) - VMOVDQA 5*16(Stack), X0 - CHACHA_SHUFFLE_AVX(X1, X2, X3) - CHACHA_SHUFFLE_AVX(X13, X14, X15) - CHACHA_SHUFFLE_AVX(X9, X10, X11) - CHACHA_SHUFFLE_AVX(X5, X6, X7) - VMOVDQA X4, 5*16(Stack) - CHACHA_QROUND_AVX(X0, X1, X2, X3, X4, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_AVX(X12, X13, X14, X15, X4, 6*16(Stack), 7*16(Stack)) - VMOVDQA 5*16(Stack), X4 - VMOVDQA X0, 5*16(Stack) - CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, 6*16(Stack), 7*16(Stack)) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, 6*16(Stack), 7*16(Stack)) - VMOVDQA 5*16(Stack), X0 - CHACHA_SHUFFLE_AVX(X3, X2, X1) - CHACHA_SHUFFLE_AVX(X15, X14, X13) - CHACHA_SHUFFLE_AVX(X11, X10, X9) - CHACHA_SHUFFLE_AVX(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_256 - - VPADDD 0*16(Stack), X0, X0 - VPADDD 1*16(Stack), X1, X1 - VPADDD 2*16(Stack), X2, X2 - VPADDD 3*16(Stack), X3, X3 - VMOVDQA X4, 5*16(Stack) // Save X4 - XOR_AVX(Dst, Src, 0, X0, X1, X2, X3, X4) - VMOVDQA 5*16(Stack), X4 // Restore X4 - - VMOVDQA 0*16(Stack), X0 - VMOVDQA 1*16(Stack), X1 - VMOVDQA 2*16(Stack), X2 - VMOVDQA 3*16(Stack), X3 - VPADDQ 4*16(Stack), X3, X3 - - VPADDD X0, X12, X12 - VPADDD X1, X13, X13 - VPADDD X2, X14, X14 - VPADDD X3, X15, X15 - VPADDQ 4*16(Stack), X3, X3 - VPADDD X0, X8, X8 - VPADDD X1, X9, X9 - VPADDD X2, X10, X10 - VPADDD X3, X11, X11 - VPADDQ 4*16(Stack), X3, X3 - VPADDD X0, X4, X4 - VPADDD X1, X5, X5 - VPADDD X2, X6, X6 - VPADDD X3, X7, X7 - VPADDQ 4*16(Stack), X3, X3 - - XOR_AVX(Dst, Src, 64, X12, X13, X14, X15, X0) - XOR_AVX(Dst, Src, 128, X8, X9, X10, X11, X0) - VMOVDQA 0*16(Stack), X0 // Restore X0 - ADDQ $192, Dst - ADDQ $192, Src - SUBQ $192, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - CMPQ Len, $128 // If 64 < Len <= 128 -> gen. only 128 byte keystream. - JLE GENERATE_KEYSTREAM_128 - CMPQ Len, $192 // If Len > 192 -> repeat, otherwise Len > 128 && Len <= 192 -> gen. 192 byte keystream - JG GENERATE_KEYSTREAM_256 - -GENERATE_KEYSTREAM_192: - VMOVDQA X0, X12 - VMOVDQA X1, X13 - VMOVDQA X2, X14 - VMOVDQA X3, X15 - VMOVDQA X0, X8 - VMOVDQA X1, X9 - VMOVDQA X2, X10 - VMOVDQA X3, X11 - VPADDQ 4*16(Stack), X11, X11 - VMOVDQA X0, X4 - VMOVDQA X1, X5 - VMOVDQA X2, X6 - VMOVDQA X11, X7 - VPADDQ 4*16(Stack), X7, X7 - MOVQ Rounds, Tmp0 - - VMOVDQA 6*16(Stack), X1 // Load 16 bit rotate-left constant - VMOVDQA 7*16(Stack), X2 // Load 8 bit rotate-left constant - -CHACHA_LOOP_192: - CHACHA_QROUND_AVX(X12, X13, X14, X15, X0, X1, X2) - CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, X1, X2) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, X1, X2) - CHACHA_SHUFFLE_AVX(X13, X14, X15) - CHACHA_SHUFFLE_AVX(X9, X10, X11) - CHACHA_SHUFFLE_AVX(X5, X6, X7) - CHACHA_QROUND_AVX(X12, X13, X14, X15, X0, X1, X2) - CHACHA_QROUND_AVX(X8, X9, X10, X11, X0, X1, X2) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X0, X1, X2) - CHACHA_SHUFFLE_AVX(X15, X14, X13) - CHACHA_SHUFFLE_AVX(X11, X10, X9) - CHACHA_SHUFFLE_AVX(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_192 - - VMOVDQA 0*16(Stack), X0 // Restore X0 - VMOVDQA 1*16(Stack), X1 // Restore X1 - VMOVDQA 2*16(Stack), X2 // Restore X2 - VPADDD X0, X12, X12 - VPADDD X1, X13, X13 - VPADDD X2, X14, X14 - VPADDD X3, X15, X15 - VPADDQ 4*16(Stack), X3, X3 - VPADDD X0, X8, X8 - VPADDD X1, X9, X9 - VPADDD X2, X10, X10 - VPADDD X3, X11, X11 - VPADDQ 4*16(Stack), X3, X3 - VPADDD X0, X4, X4 - VPADDD X1, X5, X5 - VPADDD X2, X6, X6 - VPADDD X3, X7, X7 - VPADDQ 4*16(Stack), X3, X3 - - XOR_AVX(Dst, Src, 0, X12, X13, X14, X15, X0) - XOR_AVX(Dst, Src, 64, X8, X9, X10, X11, X0) - VMOVDQA 0*16(Stack), X0 // Restore X0 - ADDQ $128, Dst - ADDQ $128, Src - SUBQ $128, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE - CMPQ Len, $64 // If Len <= 64 -> gen. only 64 byte keystream. - JLE GENERATE_KEYSTREAM_64 - -GENERATE_KEYSTREAM_128: - VMOVDQA X0, X8 - VMOVDQA X1, X9 - VMOVDQA X2, X10 - VMOVDQA X3, X11 - VMOVDQA X0, X4 - VMOVDQA X1, X5 - VMOVDQA X2, X6 - VMOVDQA X3, X7 - VPADDQ 4*16(Stack), X7, X7 - MOVQ Rounds, Tmp0 - - VMOVDQA 6*16(Stack), X13 // Load 16 bit rotate-left constant - VMOVDQA 7*16(Stack), X14 // Load 8 bit rotate-left constant - -CHACHA_LOOP_128: - CHACHA_QROUND_AVX(X8, X9, X10, X11, X12, X13, X14) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X12, X13, X14) - CHACHA_SHUFFLE_AVX(X9, X10, X11) - CHACHA_SHUFFLE_AVX(X5, X6, X7) - CHACHA_QROUND_AVX(X8, X9, X10, X11, X12, X13, X14) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X12, X13, X14) - CHACHA_SHUFFLE_AVX(X11, X10, X9) - CHACHA_SHUFFLE_AVX(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_128 - - VPADDD X0, X8, X8 - VPADDD X1, X9, X9 - VPADDD X2, X10, X10 - VPADDD X3, X11, X11 - VPADDQ 4*16(Stack), X3, X3 - VPADDD X0, X4, X4 - VPADDD X1, X5, X5 - VPADDD X2, X6, X6 - VPADDD X3, X7, X7 - VPADDQ 4*16(Stack), X3, X3 - - XOR_AVX(Dst, Src, 0, X8, X9, X10, X11, X12) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Dst - ADDQ $64, Src - SUBQ $64, Len - JZ DONE // If Len == 0 -> DONE, otherwise Len <= 64 -> gen 64 byte keystream - -GENERATE_KEYSTREAM_64: - VMOVDQA X0, X4 - VMOVDQA X1, X5 - VMOVDQA X2, X6 - VMOVDQA X3, X7 - MOVQ Rounds, Tmp0 - - VMOVDQA 6*16(Stack), X9 // Load 16 bit rotate-left constant - VMOVDQA 7*16(Stack), X10 // Load 8 bit rotate-left constant - -CHACHA_LOOP_64: - CHACHA_QROUND_AVX(X4, X5, X6, X7, X8, X9, X10) - CHACHA_SHUFFLE_AVX(X5, X6, X7) - CHACHA_QROUND_AVX(X4, X5, X6, X7, X8, X9, X10) - CHACHA_SHUFFLE_AVX(X7, X6, X5) - SUBQ $2, Tmp0 - JNZ CHACHA_LOOP_64 - - VPADDD X0, X4, X4 - VPADDD X1, X5, X5 - VPADDD X2, X6, X6 - VPADDD X3, X7, X7 - VPADDQ 4*16(Stack), X3, X3 - - CMPQ Len, $64 - JL BUFFER_KEYSTREAM - - XOR_AVX(Dst, Src, 0, X4, X5, X6, X7, X8) - ADDQ $64, Src - ADDQ $64, Dst - SUBQ $64, Len - JMP DONE // jump directly to DONE - there is no keystream to buffer, Len == 0 always true. - -BUFFER_KEYSTREAM: - VMOVDQU X4, 0*16(Buffer) - VMOVDQU X5, 1*16(Buffer) - VMOVDQU X6, 2*16(Buffer) - VMOVDQU X7, 3*16(Buffer) - MOVQ Len, Tmp0 - FINALIZE(Dst, Src, Buffer, Tmp0, Tmp1, Tmp2) - -DONE: - MOVQ SavedSP, Stack // Restore stack pointer - VMOVDQU X3, 3*16(State) - VZEROUPPER - MOVQ Len, ret+72(FP) - RET - -#undef Dst -#undef Src -#undef Len -#undef Rounds -#undef Buffer -#undef State -#undef Stack -#undef SavedSP -#undef Tmp0 -#undef Tmp1 -#undef Tmp2 diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_generic.go b/vendor/github.com/aead/chacha20/chacha/chacha_generic.go deleted file mode 100644 index 8832d5b..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_generic.go +++ /dev/null @@ -1,319 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -package chacha - -import "encoding/binary" - -var sigma = [4]uint32{0x61707865, 0x3320646e, 0x79622d32, 0x6b206574} - -func xorKeyStreamGeneric(dst, src []byte, block, state *[64]byte, rounds int) int { - for len(src) >= 64 { - chachaGeneric(block, state, rounds) - - for i, v := range block { - dst[i] = src[i] ^ v - } - src = src[64:] - dst = dst[64:] - } - - n := len(src) - if n > 0 { - chachaGeneric(block, state, rounds) - for i, v := range src { - dst[i] = v ^ block[i] - } - } - return n -} - -func chachaGeneric(dst *[64]byte, state *[64]byte, rounds int) { - v00 := binary.LittleEndian.Uint32(state[0:]) - v01 := binary.LittleEndian.Uint32(state[4:]) - v02 := binary.LittleEndian.Uint32(state[8:]) - v03 := binary.LittleEndian.Uint32(state[12:]) - v04 := binary.LittleEndian.Uint32(state[16:]) - v05 := binary.LittleEndian.Uint32(state[20:]) - v06 := binary.LittleEndian.Uint32(state[24:]) - v07 := binary.LittleEndian.Uint32(state[28:]) - v08 := binary.LittleEndian.Uint32(state[32:]) - v09 := binary.LittleEndian.Uint32(state[36:]) - v10 := binary.LittleEndian.Uint32(state[40:]) - v11 := binary.LittleEndian.Uint32(state[44:]) - v12 := binary.LittleEndian.Uint32(state[48:]) - v13 := binary.LittleEndian.Uint32(state[52:]) - v14 := binary.LittleEndian.Uint32(state[56:]) - v15 := binary.LittleEndian.Uint32(state[60:]) - - s00, s01, s02, s03, s04, s05, s06, s07 := v00, v01, v02, v03, v04, v05, v06, v07 - s08, s09, s10, s11, s12, s13, s14, s15 := v08, v09, v10, v11, v12, v13, v14, v15 - - for i := 0; i < rounds; i += 2 { - v00 += v04 - v12 ^= v00 - v12 = (v12 << 16) | (v12 >> 16) - v08 += v12 - v04 ^= v08 - v04 = (v04 << 12) | (v04 >> 20) - v00 += v04 - v12 ^= v00 - v12 = (v12 << 8) | (v12 >> 24) - v08 += v12 - v04 ^= v08 - v04 = (v04 << 7) | (v04 >> 25) - v01 += v05 - v13 ^= v01 - v13 = (v13 << 16) | (v13 >> 16) - v09 += v13 - v05 ^= v09 - v05 = (v05 << 12) | (v05 >> 20) - v01 += v05 - v13 ^= v01 - v13 = (v13 << 8) | (v13 >> 24) - v09 += v13 - v05 ^= v09 - v05 = (v05 << 7) | (v05 >> 25) - v02 += v06 - v14 ^= v02 - v14 = (v14 << 16) | (v14 >> 16) - v10 += v14 - v06 ^= v10 - v06 = (v06 << 12) | (v06 >> 20) - v02 += v06 - v14 ^= v02 - v14 = (v14 << 8) | (v14 >> 24) - v10 += v14 - v06 ^= v10 - v06 = (v06 << 7) | (v06 >> 25) - v03 += v07 - v15 ^= v03 - v15 = (v15 << 16) | (v15 >> 16) - v11 += v15 - v07 ^= v11 - v07 = (v07 << 12) | (v07 >> 20) - v03 += v07 - v15 ^= v03 - v15 = (v15 << 8) | (v15 >> 24) - v11 += v15 - v07 ^= v11 - v07 = (v07 << 7) | (v07 >> 25) - v00 += v05 - v15 ^= v00 - v15 = (v15 << 16) | (v15 >> 16) - v10 += v15 - v05 ^= v10 - v05 = (v05 << 12) | (v05 >> 20) - v00 += v05 - v15 ^= v00 - v15 = (v15 << 8) | (v15 >> 24) - v10 += v15 - v05 ^= v10 - v05 = (v05 << 7) | (v05 >> 25) - v01 += v06 - v12 ^= v01 - v12 = (v12 << 16) | (v12 >> 16) - v11 += v12 - v06 ^= v11 - v06 = (v06 << 12) | (v06 >> 20) - v01 += v06 - v12 ^= v01 - v12 = (v12 << 8) | (v12 >> 24) - v11 += v12 - v06 ^= v11 - v06 = (v06 << 7) | (v06 >> 25) - v02 += v07 - v13 ^= v02 - v13 = (v13 << 16) | (v13 >> 16) - v08 += v13 - v07 ^= v08 - v07 = (v07 << 12) | (v07 >> 20) - v02 += v07 - v13 ^= v02 - v13 = (v13 << 8) | (v13 >> 24) - v08 += v13 - v07 ^= v08 - v07 = (v07 << 7) | (v07 >> 25) - v03 += v04 - v14 ^= v03 - v14 = (v14 << 16) | (v14 >> 16) - v09 += v14 - v04 ^= v09 - v04 = (v04 << 12) | (v04 >> 20) - v03 += v04 - v14 ^= v03 - v14 = (v14 << 8) | (v14 >> 24) - v09 += v14 - v04 ^= v09 - v04 = (v04 << 7) | (v04 >> 25) - } - - v00 += s00 - v01 += s01 - v02 += s02 - v03 += s03 - v04 += s04 - v05 += s05 - v06 += s06 - v07 += s07 - v08 += s08 - v09 += s09 - v10 += s10 - v11 += s11 - v12 += s12 - v13 += s13 - v14 += s14 - v15 += s15 - - s12++ - binary.LittleEndian.PutUint32(state[48:], s12) - if s12 == 0 { // indicates overflow - s13++ - binary.LittleEndian.PutUint32(state[52:], s13) - } - - binary.LittleEndian.PutUint32(dst[0:], v00) - binary.LittleEndian.PutUint32(dst[4:], v01) - binary.LittleEndian.PutUint32(dst[8:], v02) - binary.LittleEndian.PutUint32(dst[12:], v03) - binary.LittleEndian.PutUint32(dst[16:], v04) - binary.LittleEndian.PutUint32(dst[20:], v05) - binary.LittleEndian.PutUint32(dst[24:], v06) - binary.LittleEndian.PutUint32(dst[28:], v07) - binary.LittleEndian.PutUint32(dst[32:], v08) - binary.LittleEndian.PutUint32(dst[36:], v09) - binary.LittleEndian.PutUint32(dst[40:], v10) - binary.LittleEndian.PutUint32(dst[44:], v11) - binary.LittleEndian.PutUint32(dst[48:], v12) - binary.LittleEndian.PutUint32(dst[52:], v13) - binary.LittleEndian.PutUint32(dst[56:], v14) - binary.LittleEndian.PutUint32(dst[60:], v15) -} - -func hChaCha20Generic(out *[32]byte, nonce *[16]byte, key *[32]byte) { - v00 := sigma[0] - v01 := sigma[1] - v02 := sigma[2] - v03 := sigma[3] - v04 := binary.LittleEndian.Uint32(key[0:]) - v05 := binary.LittleEndian.Uint32(key[4:]) - v06 := binary.LittleEndian.Uint32(key[8:]) - v07 := binary.LittleEndian.Uint32(key[12:]) - v08 := binary.LittleEndian.Uint32(key[16:]) - v09 := binary.LittleEndian.Uint32(key[20:]) - v10 := binary.LittleEndian.Uint32(key[24:]) - v11 := binary.LittleEndian.Uint32(key[28:]) - v12 := binary.LittleEndian.Uint32(nonce[0:]) - v13 := binary.LittleEndian.Uint32(nonce[4:]) - v14 := binary.LittleEndian.Uint32(nonce[8:]) - v15 := binary.LittleEndian.Uint32(nonce[12:]) - - for i := 0; i < 20; i += 2 { - v00 += v04 - v12 ^= v00 - v12 = (v12 << 16) | (v12 >> 16) - v08 += v12 - v04 ^= v08 - v04 = (v04 << 12) | (v04 >> 20) - v00 += v04 - v12 ^= v00 - v12 = (v12 << 8) | (v12 >> 24) - v08 += v12 - v04 ^= v08 - v04 = (v04 << 7) | (v04 >> 25) - v01 += v05 - v13 ^= v01 - v13 = (v13 << 16) | (v13 >> 16) - v09 += v13 - v05 ^= v09 - v05 = (v05 << 12) | (v05 >> 20) - v01 += v05 - v13 ^= v01 - v13 = (v13 << 8) | (v13 >> 24) - v09 += v13 - v05 ^= v09 - v05 = (v05 << 7) | (v05 >> 25) - v02 += v06 - v14 ^= v02 - v14 = (v14 << 16) | (v14 >> 16) - v10 += v14 - v06 ^= v10 - v06 = (v06 << 12) | (v06 >> 20) - v02 += v06 - v14 ^= v02 - v14 = (v14 << 8) | (v14 >> 24) - v10 += v14 - v06 ^= v10 - v06 = (v06 << 7) | (v06 >> 25) - v03 += v07 - v15 ^= v03 - v15 = (v15 << 16) | (v15 >> 16) - v11 += v15 - v07 ^= v11 - v07 = (v07 << 12) | (v07 >> 20) - v03 += v07 - v15 ^= v03 - v15 = (v15 << 8) | (v15 >> 24) - v11 += v15 - v07 ^= v11 - v07 = (v07 << 7) | (v07 >> 25) - v00 += v05 - v15 ^= v00 - v15 = (v15 << 16) | (v15 >> 16) - v10 += v15 - v05 ^= v10 - v05 = (v05 << 12) | (v05 >> 20) - v00 += v05 - v15 ^= v00 - v15 = (v15 << 8) | (v15 >> 24) - v10 += v15 - v05 ^= v10 - v05 = (v05 << 7) | (v05 >> 25) - v01 += v06 - v12 ^= v01 - v12 = (v12 << 16) | (v12 >> 16) - v11 += v12 - v06 ^= v11 - v06 = (v06 << 12) | (v06 >> 20) - v01 += v06 - v12 ^= v01 - v12 = (v12 << 8) | (v12 >> 24) - v11 += v12 - v06 ^= v11 - v06 = (v06 << 7) | (v06 >> 25) - v02 += v07 - v13 ^= v02 - v13 = (v13 << 16) | (v13 >> 16) - v08 += v13 - v07 ^= v08 - v07 = (v07 << 12) | (v07 >> 20) - v02 += v07 - v13 ^= v02 - v13 = (v13 << 8) | (v13 >> 24) - v08 += v13 - v07 ^= v08 - v07 = (v07 << 7) | (v07 >> 25) - v03 += v04 - v14 ^= v03 - v14 = (v14 << 16) | (v14 >> 16) - v09 += v14 - v04 ^= v09 - v04 = (v04 << 12) | (v04 >> 20) - v03 += v04 - v14 ^= v03 - v14 = (v14 << 8) | (v14 >> 24) - v09 += v14 - v04 ^= v09 - v04 = (v04 << 7) | (v04 >> 25) - } - - binary.LittleEndian.PutUint32(out[0:], v00) - binary.LittleEndian.PutUint32(out[4:], v01) - binary.LittleEndian.PutUint32(out[8:], v02) - binary.LittleEndian.PutUint32(out[12:], v03) - binary.LittleEndian.PutUint32(out[16:], v12) - binary.LittleEndian.PutUint32(out[20:], v13) - binary.LittleEndian.PutUint32(out[24:], v14) - binary.LittleEndian.PutUint32(out[28:], v15) -} diff --git a/vendor/github.com/aead/chacha20/chacha/chacha_ref.go b/vendor/github.com/aead/chacha20/chacha/chacha_ref.go deleted file mode 100644 index 526877c..0000000 --- a/vendor/github.com/aead/chacha20/chacha/chacha_ref.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright (c) 2016 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build !amd64,!386 gccgo appengine nacl - -package chacha - -import "encoding/binary" - -func init() { - useSSE2 = false - useSSSE3 = false - useAVX = false - useAVX2 = false -} - -func initialize(state *[64]byte, key []byte, nonce *[16]byte) { - binary.LittleEndian.PutUint32(state[0:], sigma[0]) - binary.LittleEndian.PutUint32(state[4:], sigma[1]) - binary.LittleEndian.PutUint32(state[8:], sigma[2]) - binary.LittleEndian.PutUint32(state[12:], sigma[3]) - copy(state[16:], key[:]) - copy(state[48:], nonce[:]) -} - -func xorKeyStream(dst, src []byte, block, state *[64]byte, rounds int) int { - return xorKeyStreamGeneric(dst, src, block, state, rounds) -} - -func hChaCha20(out *[32]byte, nonce *[16]byte, key *[32]byte) { - hChaCha20Generic(out, nonce, key) -} diff --git a/vendor/github.com/aead/chacha20/chacha/const.s b/vendor/github.com/aead/chacha20/chacha/const.s deleted file mode 100644 index c7a94a4..0000000 --- a/vendor/github.com/aead/chacha20/chacha/const.s +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2018 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build 386,!gccgo,!appengine,!nacl amd64,!gccgo,!appengine,!nacl - -#include "textflag.h" - -DATA ·sigma<>+0x00(SB)/4, $0x61707865 -DATA ·sigma<>+0x04(SB)/4, $0x3320646e -DATA ·sigma<>+0x08(SB)/4, $0x79622d32 -DATA ·sigma<>+0x0C(SB)/4, $0x6b206574 -GLOBL ·sigma<>(SB), (NOPTR+RODATA), $16 // The 4 ChaCha initialization constants - -// SSE2/SSE3/AVX constants - -DATA ·one<>+0x00(SB)/8, $1 -DATA ·one<>+0x08(SB)/8, $0 -GLOBL ·one<>(SB), (NOPTR+RODATA), $16 // The constant 1 as 128 bit value - -DATA ·rol16<>+0x00(SB)/8, $0x0504070601000302 -DATA ·rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A -GLOBL ·rol16<>(SB), (NOPTR+RODATA), $16 // The PSHUFB 16 bit left rotate constant - -DATA ·rol8<>+0x00(SB)/8, $0x0605040702010003 -DATA ·rol8<>+0x08(SB)/8, $0x0E0D0C0F0A09080B -GLOBL ·rol8<>(SB), (NOPTR+RODATA), $16 // The PSHUFB 8 bit left rotate constant - -// AVX2 constants - -DATA ·one_AVX2<>+0x00(SB)/8, $0 -DATA ·one_AVX2<>+0x08(SB)/8, $0 -DATA ·one_AVX2<>+0x10(SB)/8, $1 -DATA ·one_AVX2<>+0x18(SB)/8, $0 -GLOBL ·one_AVX2<>(SB), (NOPTR+RODATA), $32 // The constant 1 as 256 bit value - -DATA ·two_AVX2<>+0x00(SB)/8, $2 -DATA ·two_AVX2<>+0x08(SB)/8, $0 -DATA ·two_AVX2<>+0x10(SB)/8, $2 -DATA ·two_AVX2<>+0x18(SB)/8, $0 -GLOBL ·two_AVX2<>(SB), (NOPTR+RODATA), $32 - -DATA ·rol16_AVX2<>+0x00(SB)/8, $0x0504070601000302 -DATA ·rol16_AVX2<>+0x08(SB)/8, $0x0D0C0F0E09080B0A -DATA ·rol16_AVX2<>+0x10(SB)/8, $0x0504070601000302 -DATA ·rol16_AVX2<>+0x18(SB)/8, $0x0D0C0F0E09080B0A -GLOBL ·rol16_AVX2<>(SB), (NOPTR+RODATA), $32 // The VPSHUFB 16 bit left rotate constant - -DATA ·rol8_AVX2<>+0x00(SB)/8, $0x0605040702010003 -DATA ·rol8_AVX2<>+0x08(SB)/8, $0x0E0D0C0F0A09080B -DATA ·rol8_AVX2<>+0x10(SB)/8, $0x0605040702010003 -DATA ·rol8_AVX2<>+0x18(SB)/8, $0x0E0D0C0F0A09080B -GLOBL ·rol8_AVX2<>(SB), (NOPTR+RODATA), $32 // The VPSHUFB 8 bit left rotate constant diff --git a/vendor/github.com/aead/chacha20/chacha/macro.s b/vendor/github.com/aead/chacha20/chacha/macro.s deleted file mode 100644 index 780108f..0000000 --- a/vendor/github.com/aead/chacha20/chacha/macro.s +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright (c) 2018 Andreas Auernhammer. All rights reserved. -// Use of this source code is governed by a license that can be -// found in the LICENSE file. - -// +build 386,!gccgo,!appengine,!nacl amd64,!gccgo,!appengine,!nacl - -// ROTL_SSE rotates all 4 32 bit values of the XMM register v -// left by n bits using SSE2 instructions (0 <= n <= 32). -// The XMM register t is used as a temp. register. -#define ROTL_SSE(n, t, v) \ - MOVO v, t; \ - PSLLL $n, t; \ - PSRLL $(32-n), v; \ - PXOR t, v - -// ROTL_AVX rotates all 4/8 32 bit values of the AVX/AVX2 register v -// left by n bits using AVX/AVX2 instructions (0 <= n <= 32). -// The AVX/AVX2 register t is used as a temp. register. -#define ROTL_AVX(n, t, v) \ - VPSLLD $n, v, t; \ - VPSRLD $(32-n), v, v; \ - VPXOR v, t, v - -// CHACHA_QROUND_SSE2 performs a ChaCha quarter-round using the -// 4 XMM registers v0, v1, v2 and v3. It uses only ROTL_SSE2 for -// rotations. The XMM register t is used as a temp. register. -#define CHACHA_QROUND_SSE2(v0, v1, v2, v3, t) \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE(16, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE(12, t, v1); \ - PADDL v1, v0; \ - PXOR v0, v3; \ - ROTL_SSE(8, t, v3); \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE(7, t, v1) - -// CHACHA_QROUND_SSSE3 performs a ChaCha quarter-round using the -// 4 XMM registers v0, v1, v2 and v3. It uses PSHUFB for 8/16 bit -// rotations. The XMM register t is used as a temp. register. -// -// r16 holds the PSHUFB constant for a 16 bit left rotate. -// r8 holds the PSHUFB constant for a 8 bit left rotate. -#define CHACHA_QROUND_SSSE3(v0, v1, v2, v3, t, r16, r8) \ - PADDL v1, v0; \ - PXOR v0, v3; \ - PSHUFB r16, v3; \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE(12, t, v1); \ - PADDL v1, v0; \ - PXOR v0, v3; \ - PSHUFB r8, v3; \ - PADDL v3, v2; \ - PXOR v2, v1; \ - ROTL_SSE(7, t, v1) - -// CHACHA_QROUND_AVX performs a ChaCha quarter-round using the -// 4 AVX/AVX2 registers v0, v1, v2 and v3. It uses VPSHUFB for 8/16 bit -// rotations. The AVX/AVX2 register t is used as a temp. register. -// -// r16 holds the VPSHUFB constant for a 16 bit left rotate. -// r8 holds the VPSHUFB constant for a 8 bit left rotate. -#define CHACHA_QROUND_AVX(v0, v1, v2, v3, t, r16, r8) \ - VPADDD v0, v1, v0; \ - VPXOR v3, v0, v3; \ - VPSHUFB r16, v3, v3; \ - VPADDD v2, v3, v2; \ - VPXOR v1, v2, v1; \ - ROTL_AVX(12, t, v1); \ - VPADDD v0, v1, v0; \ - VPXOR v3, v0, v3; \ - VPSHUFB r8, v3, v3; \ - VPADDD v2, v3, v2; \ - VPXOR v1, v2, v1; \ - ROTL_AVX(7, t, v1) - -// CHACHA_SHUFFLE_SSE performs a ChaCha shuffle using the -// 3 XMM registers v1, v2 and v3. The inverse shuffle is -// performed by switching v1 and v3: CHACHA_SHUFFLE_SSE(v3, v2, v1). -#define CHACHA_SHUFFLE_SSE(v1, v2, v3) \ - PSHUFL $0x39, v1, v1; \ - PSHUFL $0x4E, v2, v2; \ - PSHUFL $0x93, v3, v3 - -// CHACHA_SHUFFLE_AVX performs a ChaCha shuffle using the -// 3 AVX/AVX2 registers v1, v2 and v3. The inverse shuffle is -// performed by switching v1 and v3: CHACHA_SHUFFLE_AVX(v3, v2, v1). -#define CHACHA_SHUFFLE_AVX(v1, v2, v3) \ - VPSHUFD $0x39, v1, v1; \ - VPSHUFD $0x4E, v2, v2; \ - VPSHUFD $0x93, v3, v3 - -// XOR_SSE extracts 4x16 byte vectors from src at -// off, xors all vectors with the corresponding XMM -// register (v0 - v3) and writes the result to dst -// at off. -// The XMM register t is used as a temp. register. -#define XOR_SSE(dst, src, off, v0, v1, v2, v3, t) \ - MOVOU 0+off(src), t; \ - PXOR v0, t; \ - MOVOU t, 0+off(dst); \ - MOVOU 16+off(src), t; \ - PXOR v1, t; \ - MOVOU t, 16+off(dst); \ - MOVOU 32+off(src), t; \ - PXOR v2, t; \ - MOVOU t, 32+off(dst); \ - MOVOU 48+off(src), t; \ - PXOR v3, t; \ - MOVOU t, 48+off(dst) - -// XOR_AVX extracts 4x16 byte vectors from src at -// off, xors all vectors with the corresponding AVX -// register (v0 - v3) and writes the result to dst -// at off. -// The XMM register t is used as a temp. register. -#define XOR_AVX(dst, src, off, v0, v1, v2, v3, t) \ - VPXOR 0+off(src), v0, t; \ - VMOVDQU t, 0+off(dst); \ - VPXOR 16+off(src), v1, t; \ - VMOVDQU t, 16+off(dst); \ - VPXOR 32+off(src), v2, t; \ - VMOVDQU t, 32+off(dst); \ - VPXOR 48+off(src), v3, t; \ - VMOVDQU t, 48+off(dst) - -#define XOR_AVX2(dst, src, off, v0, v1, v2, v3, t0, t1) \ - VMOVDQU (0+off)(src), t0; \ - VPERM2I128 $32, v1, v0, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (0+off)(dst); \ - VMOVDQU (32+off)(src), t0; \ - VPERM2I128 $32, v3, v2, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (32+off)(dst); \ - VMOVDQU (64+off)(src), t0; \ - VPERM2I128 $49, v1, v0, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (64+off)(dst); \ - VMOVDQU (96+off)(src), t0; \ - VPERM2I128 $49, v3, v2, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (96+off)(dst) - -#define XOR_UPPER_AVX2(dst, src, off, v0, v1, v2, v3, t0, t1) \ - VMOVDQU (0+off)(src), t0; \ - VPERM2I128 $32, v1, v0, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (0+off)(dst); \ - VMOVDQU (32+off)(src), t0; \ - VPERM2I128 $32, v3, v2, t1; \ - VPXOR t0, t1, t0; \ - VMOVDQU t0, (32+off)(dst); \ - -#define EXTRACT_LOWER(dst, v0, v1, v2, v3, t0) \ - VPERM2I128 $49, v1, v0, t0; \ - VMOVDQU t0, 0(dst); \ - VPERM2I128 $49, v3, v2, t0; \ - VMOVDQU t0, 32(dst) diff --git a/vendor/github.com/jameskeane/bcrypt/.gitignore b/vendor/github.com/jameskeane/bcrypt/.gitignore deleted file mode 100644 index c1e1c06..0000000 --- a/vendor/github.com/jameskeane/bcrypt/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -6.out -*.6 -_obj -_test -_testmain.go diff --git a/vendor/github.com/jameskeane/bcrypt/LICENSE b/vendor/github.com/jameskeane/bcrypt/LICENSE deleted file mode 100644 index 555bb71..0000000 --- a/vendor/github.com/jameskeane/bcrypt/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (c) 2011 James Keane . All rights reserved. -Copyright (c) 2006 Damien Miller . -Copyright (c) 2011 ZooWar.com, All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of weekendlogic nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/jameskeane/bcrypt/README b/vendor/github.com/jameskeane/bcrypt/README deleted file mode 100644 index a4d638a..0000000 --- a/vendor/github.com/jameskeane/bcrypt/README +++ /dev/null @@ -1,46 +0,0 @@ -Installation: - goinstall github.com/jameskeane/bcrypt - -Example use: - package main - - import ( - "fmt" - "github.com/jameskeane/bcrypt" - ) - - var password = "WyWihatdyd?frub1" - var bad_password = "just a wild guess" - - func main() { - // generate a random salt with default rounds of complexity - salt, _ := bcrypt.Salt() - - // generate a random salt with 10 rounds of complexity - salt, _ = bcrypt.Salt(10) - - // hash and verify a password with random salt - hash, _ := bcrypt.Hash(password) - if bcrypt.Match(password, hash) { - fmt.Println("They match") - } - - // hash and verify a password with a static salt - hash, _ = bcrypt.Hash(password, salt) - if bcrypt.Match(password, hash) { - fmt.Println("They match") - } - - // verify a random password fails to match the hashed password - if !bcrypt.Match(bad_password, hash) { - fmt.Println("They don't match") - } - } - -Todo: - grep 'TODO' * -r - -Notes: - * This library is derived from jBcrypt by Damien Miller - * bcrypt_test.go is from ZooWar.com - diff --git a/vendor/github.com/jameskeane/bcrypt/bcrypt.go b/vendor/github.com/jameskeane/bcrypt/bcrypt.go deleted file mode 100644 index fe84921..0000000 --- a/vendor/github.com/jameskeane/bcrypt/bcrypt.go +++ /dev/null @@ -1,190 +0,0 @@ -package bcrypt - -import ( - "bytes" - "crypto/rand" - "crypto/subtle" - "encoding/base64" - "errors" - "strconv" - "strings" -) - -var ( - InvalidRounds = errors.New("bcrypt: Invalid rounds parameter") - InvalidSalt = errors.New("bcrypt: Invalid salt supplied") -) - -const ( - MaxRounds = 31 - MinRounds = 4 - DefaultRounds = 12 - SaltLen = 16 - BlowfishRounds = 16 -) - -var enc = base64.NewEncoding("./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") - -// Helper function to build the bcrypt hash string -// payload takes : -// * []byte -> which it base64 encodes it (trims padding "=") and writes it to the buffer -// * string -> which it writes straight to the buffer -func build_bcrypt_str(minor byte, rounds uint, payload ...interface{}) []byte { - rs := bytes.NewBuffer(make([]byte, 0, 61)) - rs.WriteString("$2") - if minor >= 'a' { - rs.WriteByte(minor) - } - - rs.WriteByte('$') - if rounds < 10 { - rs.WriteByte('0') - } - - rs.WriteString(strconv.FormatUint(uint64(rounds), 10)) - rs.WriteByte('$') - for _, p := range payload { - if pb, ok := p.([]byte); ok { - rs.WriteString(strings.TrimRight(enc.EncodeToString(pb), "=")) - } else if ps, ok := p.(string); ok { - rs.WriteString(ps) - } - } - return rs.Bytes() -} - -// Salt generation -func Salt(rounds ...int) (string, error) { - rb, err := SaltBytes(rounds...) - return string(rb), err -} - -func SaltBytes(rounds ...int) (salt []byte, err error) { - r := DefaultRounds - if len(rounds) > 0 { - r = rounds[0] - if r < MinRounds || r > MaxRounds { - return nil, InvalidRounds - } - } - - rnd := make([]byte, SaltLen) - read, err := rand.Read(rnd) - if read != SaltLen || err != nil { - return nil, err - } - - return build_bcrypt_str('a', uint(r), rnd), nil -} - -func consume(r *bytes.Buffer, b byte) bool { - got, err := r.ReadByte() - if err != nil { - return false - } - if got != b { - r.UnreadByte() - return false - } - - return true -} - -func Hash(password string, salt ...string) (ps string, err error) { - var s []byte - var pb []byte - - if len(salt) == 0 { - s, err = SaltBytes() - if err != nil { - return - } - } else if len(salt) > 0 { - s = []byte(salt[0]) - } - - pb, err = HashBytes([]byte(password), s) - return string(pb), err -} - -func HashBytes(password []byte, salt ...[]byte) (hash []byte, err error) { - var s []byte - - if len(salt) == 0 { - s, err = SaltBytes() - if err != nil { - return - } - } else if len(salt) > 0 { - s = salt[0] - } - - // TODO: use a regex? I hear go has bad regex performance a simple FSM seems faster - // "^\\$2([a-z]?)\\$([0-3][0-9])\\$([\\./A-Za-z0-9]{22}+)" - - // Ok, extract the required information - minor := byte(0) - sr := bytes.NewBuffer(s) - - if !consume(sr, '$') || !consume(sr, '2') { - return nil, InvalidSalt - } - - if !consume(sr, '$') { - minor, _ = sr.ReadByte() - if minor != 'a' || !consume(sr, '$') { - return nil, InvalidSalt - } - } - - rounds_bytes := make([]byte, 2) - read, err := sr.Read(rounds_bytes) - if err != nil || read != 2 { - return nil, InvalidSalt - } - - if !consume(sr, '$') { - return nil, InvalidSalt - } - - var rounds64 uint64 - rounds64, err = strconv.ParseUint(string(rounds_bytes), 10, 0) - if err != nil { - return nil, InvalidSalt - } - - rounds := uint(rounds64) - - // TODO: can't we use base64.NewDecoder(enc, sr) ? - salt_bytes := make([]byte, 22) - read, err = sr.Read(salt_bytes) - if err != nil || read != 22 { - return nil, InvalidSalt - } - - var saltb []byte - // encoding/base64 expects 4 byte blocks padded, since bcrypt uses only 22 bytes we need to go up - saltb, err = enc.DecodeString(string(salt_bytes) + "==") - if err != nil { - return nil, err - } - - // cipher expects null terminated input (go initializes everything with zero values so this works) - password_term := make([]byte, len(password)+1) - copy(password_term, password) - - hashed := crypt_raw(password_term, saltb[:SaltLen], rounds) - return build_bcrypt_str(minor, rounds, string(salt_bytes), hashed[:len(bf_crypt_ciphertext)*4-1]), nil -} - -func Match(password, hash string) bool { - return MatchBytes([]byte(password), []byte(hash)) -} - -func MatchBytes(password []byte, hash []byte) bool { - h, err := HashBytes(password, hash) - if err != nil { - return false - } - return subtle.ConstantTimeCompare(h, hash) == 1 -} diff --git a/vendor/github.com/jameskeane/bcrypt/cipher.go b/vendor/github.com/jameskeane/bcrypt/cipher.go deleted file mode 100644 index 00724e4..0000000 --- a/vendor/github.com/jameskeane/bcrypt/cipher.go +++ /dev/null @@ -1,415 +0,0 @@ -package bcrypt - -var p_orig = [18]uint{ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, - 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, - 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, - 0x9216d5d9, 0x8979fb1b, -} - -var s_orig = [1024]uint{ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, - 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, - 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, - 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, - 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, - 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, - 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, - 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, - 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, - 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, - 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, - 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, - 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, - 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, - 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, - 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, - 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, - 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, - 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, - 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, - 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, - 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, - 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, - 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, - 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, - 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, - 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, - 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, - 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, - 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, - 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, - 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, - 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, - 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, - 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, - 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, - 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, - 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, - 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, - 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, - 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, - 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, - 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, - 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, - 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, - 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, - 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, - 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, - 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, - 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, - 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, - 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, - 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, - 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, - 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, - 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, - 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, - 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, - 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, - 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, - 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, - 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, - 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, - 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, - 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, - 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, - 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, - 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, - 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, - 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, - 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, - 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, - 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, - 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128, - 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, - 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0, - 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, - 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3, - 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, - 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061, - 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, - 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735, - 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, - 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340, - 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, - 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, - 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, - 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, - 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, - 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, - 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, - 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, - 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, - 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, - 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, - 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, - 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, - 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, - 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, - 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, - 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, - 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, - 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, - 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, - 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, - 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, - 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, - 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, - 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, - 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, - 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, - 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, - 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, - 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, - 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, - 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, - 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, - 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, - 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, - 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, - 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, - 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, - 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, - 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, - 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, - 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, - 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, - 0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, - 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, - 0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, - 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, - 0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, - 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, - 0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, - 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, - 0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, - 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, - 0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, - 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, - 0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, - 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, - 0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, - 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, - 0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, - 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, - 0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, - 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, - 0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, - 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, - 0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, - 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, - 0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, - 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, - 0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, - 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, - 0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, - 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, - 0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, - 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, - 0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, - 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, - 0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, - 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, - 0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, - 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, - 0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, - 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, - 0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, - 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, -} - -var bf_crypt_ciphertext = [6]uint{ - 0x4f727068, 0x65616e42, 0x65686f6c, - 0x64657253, 0x63727944, 0x6f756274, -} - - -type cipher struct { - P [18]uint - S [1024]uint - data [6]uint -} - -func (c *cipher) encipher(lr []uint, off int) { - l := lr[off] ^ c.P[0] - r := lr[off+1] - - for i := 0; i <= BlowfishRounds-2; i += 2{ - // Feistel substitution on left and right word respectively - r ^= (((c.S[(l>>24)&0xff] + c.S[0x100|((l>>16)&0xff)]) ^ c.S[0x200|((l>>8)&0xff)]) + c.S[0x300|(l&0xff)]) ^ c.P[i+1] - l ^= (((c.S[(r>>24)&0xff] + c.S[0x100|((r>>16)&0xff)]) ^ c.S[0x200|((r>>8)&0xff)]) + c.S[0x300|(r&0xff)]) ^ c.P[i+2] - } - - lr[off] = r ^ c.P[BlowfishRounds+1] - lr[off+1] = l -} -/** - * Cycically extract a word of key material - * @param data the string to extract the data from - * @param off the current offset into the data - * @return the next word of material from data and the next offset into the data - */ -func streamtoword(data []byte, off int) (uint, int) { - var word uint - for i := 0; i < 4; i++ { - word = (word << 8) | uint(data[off]&0xff) - off = (off + 1) % len(data) - } - - return word, off -} - -/** - * Key the Blowfish cipher - * @param key an array containing the key - */ -func (c *cipher) key(key []byte) { - var word uint - off := 0 - lr := []uint{0, 0} - plen := len(c.P) - slen := len(c.S) - - for i := 0; i < plen; i++ { - word, off = streamtoword(key, off) - c.P[i] = c.P[i] ^ word - } - - for i := 0; i < plen; i += 2 { - c.encipher(lr, 0) - c.P[i] = lr[0] - c.P[i+1] = lr[1] - } - - for i := 0; i < slen; i += 2 { - c.encipher(lr, 0) - c.S[i] = lr[0] - c.S[i+1] = lr[1] - } -} - -/** - * Perform the "enhanced key schedule" step described by - * Provos and Mazieres in "A Future-Adaptable Password Scheme" - * http://www.openbsd.org/papers/bcrypt-paper.ps - * @param data salt information - * @param key password information - */ -func (c *cipher) ekskey(data []byte, key []byte) { - var word uint - koff := 0 - doff := 0 - lr := []uint{0, 0} - plen := len(c.P) - slen := len(c.S) - - for i := 0; i < plen; i++ { - word, koff = streamtoword(key, koff) - c.P[i] = c.P[i] ^ word - } - - for i := 0; i < plen; i += 2 { - word, doff = streamtoword(data, doff) - lr[0] ^= word - word, doff = streamtoword(data, doff) - lr[1] ^= word - c.encipher(lr, 0) - c.P[i] = lr[0] - c.P[i+1] = lr[1] - } - - for i := 0; i < slen; i += 2 { - word, doff = streamtoword(data, doff) - lr[0] ^= word - word, doff = streamtoword(data, doff) - lr[1] ^= word - c.encipher(lr, 0) - c.S[i] = lr[0] - c.S[i+1] = lr[1] - } -} - -/** - * Perform the central password hashing step in the - * bcrypt scheme - * @param password the password to hash - * @param salt the binary salt to hash with the password - * @param log_rounds the binary logarithm of the number - * of rounds of hashing to apply - * @return an array containing the binary hashed password - */ -func crypt_raw(password []byte, salt []byte, log_rounds uint) []byte { - c := &cipher{P:p_orig, S:s_orig, data:bf_crypt_ciphertext} - - rounds := 1 << log_rounds - c.ekskey(salt, password) - for i := 0; i < rounds; i++ { - c.key(password) - c.key(salt) - } - - for i := 0; i < 64; i++ { - for j := 0; j < (6 >> 1); j++ { - c.encipher(c.data[:], j<<1) - } - } - - ret := make([]byte, 24) - for i := 0; i < 6; i++ { - k := i<<2 - ret[k] = (byte)((c.data[i] >> 24) & 0xff) - ret[k+1] = (byte)((c.data[i] >> 16) & 0xff) - ret[k+2] = (byte)((c.data[i] >> 8) & 0xff) - ret[k+3] = (byte)(c.data[i] & 0xff) - } - return ret -} diff --git a/vendor/github.com/klauspost/cpuid/.gitignore b/vendor/github.com/klauspost/cpuid/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/klauspost/cpuid/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/klauspost/cpuid/.travis.yml b/vendor/github.com/klauspost/cpuid/.travis.yml deleted file mode 100644 index 630192d..0000000 --- a/vendor/github.com/klauspost/cpuid/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: go - -sudo: false - -os: - - linux - - osx -go: - - 1.8.x - - 1.9.x - - 1.10.x - - master - -script: - - go vet ./... - - go test -v ./... - - go test -race ./... - - diff <(gofmt -d .) <("") - -matrix: - allow_failures: - - go: 'master' - fast_finish: true diff --git a/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt b/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt deleted file mode 100644 index 2ef4714..0000000 --- a/vendor/github.com/klauspost/cpuid/CONTRIBUTING.txt +++ /dev/null @@ -1,35 +0,0 @@ -Developer Certificate of Origin -Version 1.1 - -Copyright (C) 2015- Klaus Post & Contributors. -Email: klauspost@gmail.com - -Everyone is permitted to copy and distribute verbatim copies of this -license document, but changing it is not allowed. - - -Developer's Certificate of Origin 1.1 - -By making a contribution to this project, I certify that: - -(a) The contribution was created in whole or in part by me and I - have the right to submit it under the open source license - indicated in the file; or - -(b) The contribution is based upon previous work that, to the best - of my knowledge, is covered under an appropriate open source - license and I have the right under that license to submit that - work with modifications, whether created in whole or in part - by me, under the same open source license (unless I am - permitted to submit under a different license), as indicated - in the file; or - -(c) The contribution was provided directly to me by some other - person who certified (a), (b) or (c) and I have not modified - it. - -(d) I understand and agree that this project and the contribution - are public and that a record of the contribution (including all - personal information I submit with it, including my sign-off) is - maintained indefinitely and may be redistributed consistent with - this project or the open source license(s) involved. diff --git a/vendor/github.com/klauspost/cpuid/LICENSE b/vendor/github.com/klauspost/cpuid/LICENSE deleted file mode 100644 index 5cec7ee..0000000 --- a/vendor/github.com/klauspost/cpuid/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Klaus Post - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/klauspost/cpuid/README.md b/vendor/github.com/klauspost/cpuid/README.md deleted file mode 100644 index b36e504..0000000 --- a/vendor/github.com/klauspost/cpuid/README.md +++ /dev/null @@ -1,148 +0,0 @@ -# cpuid -Package cpuid provides information about the CPU running the current program. - -CPU features are detected on startup, and kept for fast access through the life of the application. -Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very easy to use. - -You can access the CPU information by accessing the shared CPU variable of the cpuid library. - -Package home: https://github.com/klauspost/cpuid - -[![GoDoc][1]][2] [![Build Status][3]][4] - -[1]: https://godoc.org/github.com/klauspost/cpuid?status.svg -[2]: https://godoc.org/github.com/klauspost/cpuid -[3]: https://travis-ci.org/klauspost/cpuid.svg -[4]: https://travis-ci.org/klauspost/cpuid - -# features -## CPU Instructions -* **CMOV** (i686 CMOV) -* **NX** (NX (No-Execute) bit) -* **AMD3DNOW** (AMD 3DNOW) -* **AMD3DNOWEXT** (AMD 3DNowExt) -* **MMX** (standard MMX) -* **MMXEXT** (SSE integer functions or AMD MMX ext) -* **SSE** (SSE functions) -* **SSE2** (P4 SSE functions) -* **SSE3** (Prescott SSE3 functions) -* **SSSE3** (Conroe SSSE3 functions) -* **SSE4** (Penryn SSE4.1 functions) -* **SSE4A** (AMD Barcelona microarchitecture SSE4a instructions) -* **SSE42** (Nehalem SSE4.2 functions) -* **AVX** (AVX functions) -* **AVX2** (AVX2 functions) -* **FMA3** (Intel FMA 3) -* **FMA4** (Bulldozer FMA4 functions) -* **XOP** (Bulldozer XOP functions) -* **F16C** (Half-precision floating-point conversion) -* **BMI1** (Bit Manipulation Instruction Set 1) -* **BMI2** (Bit Manipulation Instruction Set 2) -* **TBM** (AMD Trailing Bit Manipulation) -* **LZCNT** (LZCNT instruction) -* **POPCNT** (POPCNT instruction) -* **AESNI** (Advanced Encryption Standard New Instructions) -* **CLMUL** (Carry-less Multiplication) -* **HTT** (Hyperthreading (enabled)) -* **HLE** (Hardware Lock Elision) -* **RTM** (Restricted Transactional Memory) -* **RDRAND** (RDRAND instruction is available) -* **RDSEED** (RDSEED instruction is available) -* **ADX** (Intel ADX (Multi-Precision Add-Carry Instruction Extensions)) -* **SHA** (Intel SHA Extensions) -* **AVX512F** (AVX-512 Foundation) -* **AVX512DQ** (AVX-512 Doubleword and Quadword Instructions) -* **AVX512IFMA** (AVX-512 Integer Fused Multiply-Add Instructions) -* **AVX512PF** (AVX-512 Prefetch Instructions) -* **AVX512ER** (AVX-512 Exponential and Reciprocal Instructions) -* **AVX512CD** (AVX-512 Conflict Detection Instructions) -* **AVX512BW** (AVX-512 Byte and Word Instructions) -* **AVX512VL** (AVX-512 Vector Length Extensions) -* **AVX512VBMI** (AVX-512 Vector Bit Manipulation Instructions) -* **MPX** (Intel MPX (Memory Protection Extensions)) -* **ERMS** (Enhanced REP MOVSB/STOSB) -* **RDTSCP** (RDTSCP Instruction) -* **CX16** (CMPXCHG16B Instruction) -* **SGX** (Software Guard Extensions, with activation details) -* **VMX** (Virtual Machine Extensions) - -## Performance -* **RDTSCP()** Returns current cycle count. Can be used for benchmarking. -* **SSE2SLOW** (SSE2 is supported, but usually not faster) -* **SSE3SLOW** (SSE3 is supported, but usually not faster) -* **ATOM** (Atom processor, some SSSE3 instructions are slower) -* **Cache line** (Probable size of a cache line). -* **L1, L2, L3 Cache size** on newer Intel/AMD CPUs. - -## Cpu Vendor/VM -* **Intel** -* **AMD** -* **VIA** -* **Transmeta** -* **NSC** -* **KVM** (Kernel-based Virtual Machine) -* **MSVM** (Microsoft Hyper-V or Windows Virtual PC) -* **VMware** -* **XenHVM** -* **Bhyve** -* **Hygon** - -# installing - -```go get github.com/klauspost/cpuid``` - -# example - -```Go -package main - -import ( - "fmt" - "github.com/klauspost/cpuid" -) - -func main() { - // Print basic CPU information: - fmt.Println("Name:", cpuid.CPU.BrandName) - fmt.Println("PhysicalCores:", cpuid.CPU.PhysicalCores) - fmt.Println("ThreadsPerCore:", cpuid.CPU.ThreadsPerCore) - fmt.Println("LogicalCores:", cpuid.CPU.LogicalCores) - fmt.Println("Family", cpuid.CPU.Family, "Model:", cpuid.CPU.Model) - fmt.Println("Features:", cpuid.CPU.Features) - fmt.Println("Cacheline bytes:", cpuid.CPU.CacheLine) - fmt.Println("L1 Data Cache:", cpuid.CPU.Cache.L1D, "bytes") - fmt.Println("L1 Instruction Cache:", cpuid.CPU.Cache.L1D, "bytes") - fmt.Println("L2 Cache:", cpuid.CPU.Cache.L2, "bytes") - fmt.Println("L3 Cache:", cpuid.CPU.Cache.L3, "bytes") - - // Test if we have a specific feature: - if cpuid.CPU.SSE() { - fmt.Println("We have Streaming SIMD Extensions") - } -} -``` - -Sample output: -``` ->go run main.go -Name: Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz -PhysicalCores: 2 -ThreadsPerCore: 2 -LogicalCores: 4 -Family 6 Model: 42 -Features: CMOV,MMX,MMXEXT,SSE,SSE2,SSE3,SSSE3,SSE4.1,SSE4.2,AVX,AESNI,CLMUL -Cacheline bytes: 64 -We have Streaming SIMD Extensions -``` - -# private package - -In the "private" folder you can find an autogenerated version of the library you can include in your own packages. - -For this purpose all exports are removed, and functions and constants are lowercased. - -This is not a recommended way of using the library, but provided for convenience, if it is difficult for you to use external packages. - -# license - -This code is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/cpuid/cpuid.go b/vendor/github.com/klauspost/cpuid/cpuid.go deleted file mode 100644 index 0a6af40..0000000 --- a/vendor/github.com/klauspost/cpuid/cpuid.go +++ /dev/null @@ -1,1069 +0,0 @@ -// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. - -// Package cpuid provides information about the CPU running the current program. -// -// CPU features are detected on startup, and kept for fast access through the life of the application. -// Currently x86 / x64 (AMD64) is supported. -// -// You can access the CPU information by accessing the shared CPU variable of the cpuid library. -// -// Package home: https://github.com/klauspost/cpuid -package cpuid - -import "strings" - -// Vendor is a representation of a CPU vendor. -type Vendor int - -const ( - Other Vendor = iota - Intel - AMD - VIA - Transmeta - NSC - KVM // Kernel-based Virtual Machine - MSVM // Microsoft Hyper-V or Windows Virtual PC - VMware - XenHVM - Bhyve - Hygon -) - -const ( - CMOV = 1 << iota // i686 CMOV - NX // NX (No-Execute) bit - AMD3DNOW // AMD 3DNOW - AMD3DNOWEXT // AMD 3DNowExt - MMX // standard MMX - MMXEXT // SSE integer functions or AMD MMX ext - SSE // SSE functions - SSE2 // P4 SSE functions - SSE3 // Prescott SSE3 functions - SSSE3 // Conroe SSSE3 functions - SSE4 // Penryn SSE4.1 functions - SSE4A // AMD Barcelona microarchitecture SSE4a instructions - SSE42 // Nehalem SSE4.2 functions - AVX // AVX functions - AVX2 // AVX2 functions - FMA3 // Intel FMA 3 - FMA4 // Bulldozer FMA4 functions - XOP // Bulldozer XOP functions - F16C // Half-precision floating-point conversion - BMI1 // Bit Manipulation Instruction Set 1 - BMI2 // Bit Manipulation Instruction Set 2 - TBM // AMD Trailing Bit Manipulation - LZCNT // LZCNT instruction - POPCNT // POPCNT instruction - AESNI // Advanced Encryption Standard New Instructions - CLMUL // Carry-less Multiplication - HTT // Hyperthreading (enabled) - HLE // Hardware Lock Elision - RTM // Restricted Transactional Memory - RDRAND // RDRAND instruction is available - RDSEED // RDSEED instruction is available - ADX // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) - SHA // Intel SHA Extensions - AVX512F // AVX-512 Foundation - AVX512DQ // AVX-512 Doubleword and Quadword Instructions - AVX512IFMA // AVX-512 Integer Fused Multiply-Add Instructions - AVX512PF // AVX-512 Prefetch Instructions - AVX512ER // AVX-512 Exponential and Reciprocal Instructions - AVX512CD // AVX-512 Conflict Detection Instructions - AVX512BW // AVX-512 Byte and Word Instructions - AVX512VL // AVX-512 Vector Length Extensions - AVX512VBMI // AVX-512 Vector Bit Manipulation Instructions - AVX512VNNI // AVX-512 Vector Neural Network Instructions - MPX // Intel MPX (Memory Protection Extensions) - ERMS // Enhanced REP MOVSB/STOSB - RDTSCP // RDTSCP Instruction - CX16 // CMPXCHG16B Instruction - SGX // Software Guard Extensions - IBPB // Indirect Branch Restricted Speculation (IBRS) and Indirect Branch Predictor Barrier (IBPB) - STIBP // Single Thread Indirect Branch Predictors - VMX // Virtual Machine Extensions - - // Performance indicators - SSE2SLOW // SSE2 is supported, but usually not faster - SSE3SLOW // SSE3 is supported, but usually not faster - ATOM // Atom processor, some SSSE3 instructions are slower -) - -var flagNames = map[Flags]string{ - CMOV: "CMOV", // i686 CMOV - NX: "NX", // NX (No-Execute) bit - AMD3DNOW: "AMD3DNOW", // AMD 3DNOW - AMD3DNOWEXT: "AMD3DNOWEXT", // AMD 3DNowExt - MMX: "MMX", // Standard MMX - MMXEXT: "MMXEXT", // SSE integer functions or AMD MMX ext - SSE: "SSE", // SSE functions - SSE2: "SSE2", // P4 SSE2 functions - SSE3: "SSE3", // Prescott SSE3 functions - SSSE3: "SSSE3", // Conroe SSSE3 functions - SSE4: "SSE4.1", // Penryn SSE4.1 functions - SSE4A: "SSE4A", // AMD Barcelona microarchitecture SSE4a instructions - SSE42: "SSE4.2", // Nehalem SSE4.2 functions - AVX: "AVX", // AVX functions - AVX2: "AVX2", // AVX functions - FMA3: "FMA3", // Intel FMA 3 - FMA4: "FMA4", // Bulldozer FMA4 functions - XOP: "XOP", // Bulldozer XOP functions - F16C: "F16C", // Half-precision floating-point conversion - BMI1: "BMI1", // Bit Manipulation Instruction Set 1 - BMI2: "BMI2", // Bit Manipulation Instruction Set 2 - TBM: "TBM", // AMD Trailing Bit Manipulation - LZCNT: "LZCNT", // LZCNT instruction - POPCNT: "POPCNT", // POPCNT instruction - AESNI: "AESNI", // Advanced Encryption Standard New Instructions - CLMUL: "CLMUL", // Carry-less Multiplication - HTT: "HTT", // Hyperthreading (enabled) - HLE: "HLE", // Hardware Lock Elision - RTM: "RTM", // Restricted Transactional Memory - RDRAND: "RDRAND", // RDRAND instruction is available - RDSEED: "RDSEED", // RDSEED instruction is available - ADX: "ADX", // Intel ADX (Multi-Precision Add-Carry Instruction Extensions) - SHA: "SHA", // Intel SHA Extensions - AVX512F: "AVX512F", // AVX-512 Foundation - AVX512DQ: "AVX512DQ", // AVX-512 Doubleword and Quadword Instructions - AVX512IFMA: "AVX512IFMA", // AVX-512 Integer Fused Multiply-Add Instructions - AVX512PF: "AVX512PF", // AVX-512 Prefetch Instructions - AVX512ER: "AVX512ER", // AVX-512 Exponential and Reciprocal Instructions - AVX512CD: "AVX512CD", // AVX-512 Conflict Detection Instructions - AVX512BW: "AVX512BW", // AVX-512 Byte and Word Instructions - AVX512VL: "AVX512VL", // AVX-512 Vector Length Extensions - AVX512VBMI: "AVX512VBMI", // AVX-512 Vector Bit Manipulation Instructions - AVX512VNNI: "AVX512VNNI", // AVX-512 Vector Neural Network Instructions - MPX: "MPX", // Intel MPX (Memory Protection Extensions) - ERMS: "ERMS", // Enhanced REP MOVSB/STOSB - RDTSCP: "RDTSCP", // RDTSCP Instruction - CX16: "CX16", // CMPXCHG16B Instruction - SGX: "SGX", // Software Guard Extensions - IBPB: "IBPB", // Indirect Branch Restricted Speculation and Indirect Branch Predictor Barrier - STIBP: "STIBP", // Single Thread Indirect Branch Predictors - VMX: "VMX", // Virtual Machine Extensions - - // Performance indicators - SSE2SLOW: "SSE2SLOW", // SSE2 supported, but usually not faster - SSE3SLOW: "SSE3SLOW", // SSE3 supported, but usually not faster - ATOM: "ATOM", // Atom processor, some SSSE3 instructions are slower - -} - -// CPUInfo contains information about the detected system CPU. -type CPUInfo struct { - BrandName string // Brand name reported by the CPU - VendorID Vendor // Comparable CPU vendor ID - Features Flags // Features of the CPU - PhysicalCores int // Number of physical processor cores in your CPU. Will be 0 if undetectable. - ThreadsPerCore int // Number of threads per physical core. Will be 1 if undetectable. - LogicalCores int // Number of physical cores times threads that can run on each core through the use of hyperthreading. Will be 0 if undetectable. - Family int // CPU family number - Model int // CPU model number - CacheLine int // Cache line size in bytes. Will be 0 if undetectable. - Cache struct { - L1I int // L1 Instruction Cache (per core or shared). Will be -1 if undetected - L1D int // L1 Data Cache (per core or shared). Will be -1 if undetected - L2 int // L2 Cache (per core or shared). Will be -1 if undetected - L3 int // L3 Instruction Cache (per core or shared). Will be -1 if undetected - } - SGX SGXSupport - maxFunc uint32 - maxExFunc uint32 -} - -var cpuid func(op uint32) (eax, ebx, ecx, edx uint32) -var cpuidex func(op, op2 uint32) (eax, ebx, ecx, edx uint32) -var xgetbv func(index uint32) (eax, edx uint32) -var rdtscpAsm func() (eax, ebx, ecx, edx uint32) - -// CPU contains information about the CPU as detected on startup, -// or when Detect last was called. -// -// Use this as the primary entry point to you data, -// this way queries are -var CPU CPUInfo - -func init() { - initCPU() - Detect() -} - -// Detect will re-detect current CPU info. -// This will replace the content of the exported CPU variable. -// -// Unless you expect the CPU to change while you are running your program -// you should not need to call this function. -// If you call this, you must ensure that no other goroutine is accessing the -// exported CPU variable. -func Detect() { - CPU.maxFunc = maxFunctionID() - CPU.maxExFunc = maxExtendedFunction() - CPU.BrandName = brandName() - CPU.CacheLine = cacheLine() - CPU.Family, CPU.Model = familyModel() - CPU.Features = support() - CPU.SGX = hasSGX(CPU.Features&SGX != 0) - CPU.ThreadsPerCore = threadsPerCore() - CPU.LogicalCores = logicalCores() - CPU.PhysicalCores = physicalCores() - CPU.VendorID = vendorID() - CPU.cacheSize() -} - -// Generated here: http://play.golang.org/p/BxFH2Gdc0G - -// Cmov indicates support of CMOV instructions -func (c CPUInfo) Cmov() bool { - return c.Features&CMOV != 0 -} - -// Amd3dnow indicates support of AMD 3DNOW! instructions -func (c CPUInfo) Amd3dnow() bool { - return c.Features&AMD3DNOW != 0 -} - -// Amd3dnowExt indicates support of AMD 3DNOW! Extended instructions -func (c CPUInfo) Amd3dnowExt() bool { - return c.Features&AMD3DNOWEXT != 0 -} - -// VMX indicates support of VMX -func (c CPUInfo) VMX() bool { - return c.Features&VMX != 0 -} - -// MMX indicates support of MMX instructions -func (c CPUInfo) MMX() bool { - return c.Features&MMX != 0 -} - -// MMXExt indicates support of MMXEXT instructions -// (SSE integer functions or AMD MMX ext) -func (c CPUInfo) MMXExt() bool { - return c.Features&MMXEXT != 0 -} - -// SSE indicates support of SSE instructions -func (c CPUInfo) SSE() bool { - return c.Features&SSE != 0 -} - -// SSE2 indicates support of SSE 2 instructions -func (c CPUInfo) SSE2() bool { - return c.Features&SSE2 != 0 -} - -// SSE3 indicates support of SSE 3 instructions -func (c CPUInfo) SSE3() bool { - return c.Features&SSE3 != 0 -} - -// SSSE3 indicates support of SSSE 3 instructions -func (c CPUInfo) SSSE3() bool { - return c.Features&SSSE3 != 0 -} - -// SSE4 indicates support of SSE 4 (also called SSE 4.1) instructions -func (c CPUInfo) SSE4() bool { - return c.Features&SSE4 != 0 -} - -// SSE42 indicates support of SSE4.2 instructions -func (c CPUInfo) SSE42() bool { - return c.Features&SSE42 != 0 -} - -// AVX indicates support of AVX instructions -// and operating system support of AVX instructions -func (c CPUInfo) AVX() bool { - return c.Features&AVX != 0 -} - -// AVX2 indicates support of AVX2 instructions -func (c CPUInfo) AVX2() bool { - return c.Features&AVX2 != 0 -} - -// FMA3 indicates support of FMA3 instructions -func (c CPUInfo) FMA3() bool { - return c.Features&FMA3 != 0 -} - -// FMA4 indicates support of FMA4 instructions -func (c CPUInfo) FMA4() bool { - return c.Features&FMA4 != 0 -} - -// XOP indicates support of XOP instructions -func (c CPUInfo) XOP() bool { - return c.Features&XOP != 0 -} - -// F16C indicates support of F16C instructions -func (c CPUInfo) F16C() bool { - return c.Features&F16C != 0 -} - -// BMI1 indicates support of BMI1 instructions -func (c CPUInfo) BMI1() bool { - return c.Features&BMI1 != 0 -} - -// BMI2 indicates support of BMI2 instructions -func (c CPUInfo) BMI2() bool { - return c.Features&BMI2 != 0 -} - -// TBM indicates support of TBM instructions -// (AMD Trailing Bit Manipulation) -func (c CPUInfo) TBM() bool { - return c.Features&TBM != 0 -} - -// Lzcnt indicates support of LZCNT instruction -func (c CPUInfo) Lzcnt() bool { - return c.Features&LZCNT != 0 -} - -// Popcnt indicates support of POPCNT instruction -func (c CPUInfo) Popcnt() bool { - return c.Features&POPCNT != 0 -} - -// HTT indicates the processor has Hyperthreading enabled -func (c CPUInfo) HTT() bool { - return c.Features&HTT != 0 -} - -// SSE2Slow indicates that SSE2 may be slow on this processor -func (c CPUInfo) SSE2Slow() bool { - return c.Features&SSE2SLOW != 0 -} - -// SSE3Slow indicates that SSE3 may be slow on this processor -func (c CPUInfo) SSE3Slow() bool { - return c.Features&SSE3SLOW != 0 -} - -// AesNi indicates support of AES-NI instructions -// (Advanced Encryption Standard New Instructions) -func (c CPUInfo) AesNi() bool { - return c.Features&AESNI != 0 -} - -// Clmul indicates support of CLMUL instructions -// (Carry-less Multiplication) -func (c CPUInfo) Clmul() bool { - return c.Features&CLMUL != 0 -} - -// NX indicates support of NX (No-Execute) bit -func (c CPUInfo) NX() bool { - return c.Features&NX != 0 -} - -// SSE4A indicates support of AMD Barcelona microarchitecture SSE4a instructions -func (c CPUInfo) SSE4A() bool { - return c.Features&SSE4A != 0 -} - -// HLE indicates support of Hardware Lock Elision -func (c CPUInfo) HLE() bool { - return c.Features&HLE != 0 -} - -// RTM indicates support of Restricted Transactional Memory -func (c CPUInfo) RTM() bool { - return c.Features&RTM != 0 -} - -// Rdrand indicates support of RDRAND instruction is available -func (c CPUInfo) Rdrand() bool { - return c.Features&RDRAND != 0 -} - -// Rdseed indicates support of RDSEED instruction is available -func (c CPUInfo) Rdseed() bool { - return c.Features&RDSEED != 0 -} - -// ADX indicates support of Intel ADX (Multi-Precision Add-Carry Instruction Extensions) -func (c CPUInfo) ADX() bool { - return c.Features&ADX != 0 -} - -// SHA indicates support of Intel SHA Extensions -func (c CPUInfo) SHA() bool { - return c.Features&SHA != 0 -} - -// AVX512F indicates support of AVX-512 Foundation -func (c CPUInfo) AVX512F() bool { - return c.Features&AVX512F != 0 -} - -// AVX512DQ indicates support of AVX-512 Doubleword and Quadword Instructions -func (c CPUInfo) AVX512DQ() bool { - return c.Features&AVX512DQ != 0 -} - -// AVX512IFMA indicates support of AVX-512 Integer Fused Multiply-Add Instructions -func (c CPUInfo) AVX512IFMA() bool { - return c.Features&AVX512IFMA != 0 -} - -// AVX512PF indicates support of AVX-512 Prefetch Instructions -func (c CPUInfo) AVX512PF() bool { - return c.Features&AVX512PF != 0 -} - -// AVX512ER indicates support of AVX-512 Exponential and Reciprocal Instructions -func (c CPUInfo) AVX512ER() bool { - return c.Features&AVX512ER != 0 -} - -// AVX512CD indicates support of AVX-512 Conflict Detection Instructions -func (c CPUInfo) AVX512CD() bool { - return c.Features&AVX512CD != 0 -} - -// AVX512BW indicates support of AVX-512 Byte and Word Instructions -func (c CPUInfo) AVX512BW() bool { - return c.Features&AVX512BW != 0 -} - -// AVX512VL indicates support of AVX-512 Vector Length Extensions -func (c CPUInfo) AVX512VL() bool { - return c.Features&AVX512VL != 0 -} - -// AVX512VBMI indicates support of AVX-512 Vector Bit Manipulation Instructions -func (c CPUInfo) AVX512VBMI() bool { - return c.Features&AVX512VBMI != 0 -} - -// AVX512VNNI indicates support of AVX-512 Vector Neural Network Instructions -func (c CPUInfo) AVX512VNNI() bool { - return c.Features&AVX512VNNI != 0 -} - -// MPX indicates support of Intel MPX (Memory Protection Extensions) -func (c CPUInfo) MPX() bool { - return c.Features&MPX != 0 -} - -// ERMS indicates support of Enhanced REP MOVSB/STOSB -func (c CPUInfo) ERMS() bool { - return c.Features&ERMS != 0 -} - -// RDTSCP Instruction is available. -func (c CPUInfo) RDTSCP() bool { - return c.Features&RDTSCP != 0 -} - -// CX16 indicates if CMPXCHG16B instruction is available. -func (c CPUInfo) CX16() bool { - return c.Features&CX16 != 0 -} - -// TSX is split into HLE (Hardware Lock Elision) and RTM (Restricted Transactional Memory) detection. -// So TSX simply checks that. -func (c CPUInfo) TSX() bool { - return c.Features&(HLE|RTM) == HLE|RTM -} - -// Atom indicates an Atom processor -func (c CPUInfo) Atom() bool { - return c.Features&ATOM != 0 -} - -// Intel returns true if vendor is recognized as Intel -func (c CPUInfo) Intel() bool { - return c.VendorID == Intel -} - -// AMD returns true if vendor is recognized as AMD -func (c CPUInfo) AMD() bool { - return c.VendorID == AMD -} - -// Hygon returns true if vendor is recognized as Hygon -func (c CPUInfo) Hygon() bool { - return c.VendorID == Hygon -} - -// Transmeta returns true if vendor is recognized as Transmeta -func (c CPUInfo) Transmeta() bool { - return c.VendorID == Transmeta -} - -// NSC returns true if vendor is recognized as National Semiconductor -func (c CPUInfo) NSC() bool { - return c.VendorID == NSC -} - -// VIA returns true if vendor is recognized as VIA -func (c CPUInfo) VIA() bool { - return c.VendorID == VIA -} - -// RTCounter returns the 64-bit time-stamp counter -// Uses the RDTSCP instruction. The value 0 is returned -// if the CPU does not support the instruction. -func (c CPUInfo) RTCounter() uint64 { - if !c.RDTSCP() { - return 0 - } - a, _, _, d := rdtscpAsm() - return uint64(a) | (uint64(d) << 32) -} - -// Ia32TscAux returns the IA32_TSC_AUX part of the RDTSCP. -// This variable is OS dependent, but on Linux contains information -// about the current cpu/core the code is running on. -// If the RDTSCP instruction isn't supported on the CPU, the value 0 is returned. -func (c CPUInfo) Ia32TscAux() uint32 { - if !c.RDTSCP() { - return 0 - } - _, _, ecx, _ := rdtscpAsm() - return ecx -} - -// LogicalCPU will return the Logical CPU the code is currently executing on. -// This is likely to change when the OS re-schedules the running thread -// to another CPU. -// If the current core cannot be detected, -1 will be returned. -func (c CPUInfo) LogicalCPU() int { - if c.maxFunc < 1 { - return -1 - } - _, ebx, _, _ := cpuid(1) - return int(ebx >> 24) -} - -// VM Will return true if the cpu id indicates we are in -// a virtual machine. This is only a hint, and will very likely -// have many false negatives. -func (c CPUInfo) VM() bool { - switch c.VendorID { - case MSVM, KVM, VMware, XenHVM, Bhyve: - return true - } - return false -} - -// Flags contains detected cpu features and caracteristics -type Flags uint64 - -// String returns a string representation of the detected -// CPU features. -func (f Flags) String() string { - return strings.Join(f.Strings(), ",") -} - -// Strings returns and array of the detected features. -func (f Flags) Strings() []string { - s := support() - r := make([]string, 0, 20) - for i := uint(0); i < 64; i++ { - key := Flags(1 << i) - val := flagNames[key] - if s&key != 0 { - r = append(r, val) - } - } - return r -} - -func maxExtendedFunction() uint32 { - eax, _, _, _ := cpuid(0x80000000) - return eax -} - -func maxFunctionID() uint32 { - a, _, _, _ := cpuid(0) - return a -} - -func brandName() string { - if maxExtendedFunction() >= 0x80000004 { - v := make([]uint32, 0, 48) - for i := uint32(0); i < 3; i++ { - a, b, c, d := cpuid(0x80000002 + i) - v = append(v, a, b, c, d) - } - return strings.Trim(string(valAsString(v...)), " ") - } - return "unknown" -} - -func threadsPerCore() int { - mfi := maxFunctionID() - if mfi < 0x4 || vendorID() != Intel { - return 1 - } - - if mfi < 0xb { - _, b, _, d := cpuid(1) - if (d & (1 << 28)) != 0 { - // v will contain logical core count - v := (b >> 16) & 255 - if v > 1 { - a4, _, _, _ := cpuid(4) - // physical cores - v2 := (a4 >> 26) + 1 - if v2 > 0 { - return int(v) / int(v2) - } - } - } - return 1 - } - _, b, _, _ := cpuidex(0xb, 0) - if b&0xffff == 0 { - return 1 - } - return int(b & 0xffff) -} - -func logicalCores() int { - mfi := maxFunctionID() - switch vendorID() { - case Intel: - // Use this on old Intel processors - if mfi < 0xb { - if mfi < 1 { - return 0 - } - // CPUID.1:EBX[23:16] represents the maximum number of addressable IDs (initial APIC ID) - // that can be assigned to logical processors in a physical package. - // The value may not be the same as the number of logical processors that are present in the hardware of a physical package. - _, ebx, _, _ := cpuid(1) - logical := (ebx >> 16) & 0xff - return int(logical) - } - _, b, _, _ := cpuidex(0xb, 1) - return int(b & 0xffff) - case AMD, Hygon: - _, b, _, _ := cpuid(1) - return int((b >> 16) & 0xff) - default: - return 0 - } -} - -func familyModel() (int, int) { - if maxFunctionID() < 0x1 { - return 0, 0 - } - eax, _, _, _ := cpuid(1) - family := ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff) - model := ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0) - return int(family), int(model) -} - -func physicalCores() int { - switch vendorID() { - case Intel: - return logicalCores() / threadsPerCore() - case AMD, Hygon: - if maxExtendedFunction() >= 0x80000008 { - _, _, c, _ := cpuid(0x80000008) - return int(c&0xff) + 1 - } - } - return 0 -} - -// Except from http://en.wikipedia.org/wiki/CPUID#EAX.3D0:_Get_vendor_ID -var vendorMapping = map[string]Vendor{ - "AMDisbetter!": AMD, - "AuthenticAMD": AMD, - "CentaurHauls": VIA, - "GenuineIntel": Intel, - "TransmetaCPU": Transmeta, - "GenuineTMx86": Transmeta, - "Geode by NSC": NSC, - "VIA VIA VIA ": VIA, - "KVMKVMKVMKVM": KVM, - "Microsoft Hv": MSVM, - "VMwareVMware": VMware, - "XenVMMXenVMM": XenHVM, - "bhyve bhyve ": Bhyve, - "HygonGenuine": Hygon, -} - -func vendorID() Vendor { - _, b, c, d := cpuid(0) - v := valAsString(b, d, c) - vend, ok := vendorMapping[string(v)] - if !ok { - return Other - } - return vend -} - -func cacheLine() int { - if maxFunctionID() < 0x1 { - return 0 - } - - _, ebx, _, _ := cpuid(1) - cache := (ebx & 0xff00) >> 5 // cflush size - if cache == 0 && maxExtendedFunction() >= 0x80000006 { - _, _, ecx, _ := cpuid(0x80000006) - cache = ecx & 0xff // cacheline size - } - // TODO: Read from Cache and TLB Information - return int(cache) -} - -func (c *CPUInfo) cacheSize() { - c.Cache.L1D = -1 - c.Cache.L1I = -1 - c.Cache.L2 = -1 - c.Cache.L3 = -1 - vendor := vendorID() - switch vendor { - case Intel: - if maxFunctionID() < 4 { - return - } - for i := uint32(0); ; i++ { - eax, ebx, ecx, _ := cpuidex(4, i) - cacheType := eax & 15 - if cacheType == 0 { - break - } - cacheLevel := (eax >> 5) & 7 - coherency := int(ebx&0xfff) + 1 - partitions := int((ebx>>12)&0x3ff) + 1 - associativity := int((ebx>>22)&0x3ff) + 1 - sets := int(ecx) + 1 - size := associativity * partitions * coherency * sets - switch cacheLevel { - case 1: - if cacheType == 1 { - // 1 = Data Cache - c.Cache.L1D = size - } else if cacheType == 2 { - // 2 = Instruction Cache - c.Cache.L1I = size - } else { - if c.Cache.L1D < 0 { - c.Cache.L1I = size - } - if c.Cache.L1I < 0 { - c.Cache.L1I = size - } - } - case 2: - c.Cache.L2 = size - case 3: - c.Cache.L3 = size - } - } - case AMD, Hygon: - // Untested. - if maxExtendedFunction() < 0x80000005 { - return - } - _, _, ecx, edx := cpuid(0x80000005) - c.Cache.L1D = int(((ecx >> 24) & 0xFF) * 1024) - c.Cache.L1I = int(((edx >> 24) & 0xFF) * 1024) - - if maxExtendedFunction() < 0x80000006 { - return - } - _, _, ecx, _ = cpuid(0x80000006) - c.Cache.L2 = int(((ecx >> 16) & 0xFFFF) * 1024) - } - - return -} - -type SGXSupport struct { - Available bool - SGX1Supported bool - SGX2Supported bool - MaxEnclaveSizeNot64 int64 - MaxEnclaveSize64 int64 -} - -func hasSGX(available bool) (rval SGXSupport) { - rval.Available = available - - if !available { - return - } - - a, _, _, d := cpuidex(0x12, 0) - rval.SGX1Supported = a&0x01 != 0 - rval.SGX2Supported = a&0x02 != 0 - rval.MaxEnclaveSizeNot64 = 1 << (d & 0xFF) // pow 2 - rval.MaxEnclaveSize64 = 1 << ((d >> 8) & 0xFF) // pow 2 - - return -} - -func support() Flags { - mfi := maxFunctionID() - vend := vendorID() - if mfi < 0x1 { - return 0 - } - rval := uint64(0) - _, _, c, d := cpuid(1) - if (d & (1 << 15)) != 0 { - rval |= CMOV - } - if (d & (1 << 23)) != 0 { - rval |= MMX - } - if (d & (1 << 25)) != 0 { - rval |= MMXEXT - } - if (d & (1 << 25)) != 0 { - rval |= SSE - } - if (d & (1 << 26)) != 0 { - rval |= SSE2 - } - if (c & 1) != 0 { - rval |= SSE3 - } - if (c & (1 << 5)) != 0 { - rval |= VMX - } - if (c & 0x00000200) != 0 { - rval |= SSSE3 - } - if (c & 0x00080000) != 0 { - rval |= SSE4 - } - if (c & 0x00100000) != 0 { - rval |= SSE42 - } - if (c & (1 << 25)) != 0 { - rval |= AESNI - } - if (c & (1 << 1)) != 0 { - rval |= CLMUL - } - if c&(1<<23) != 0 { - rval |= POPCNT - } - if c&(1<<30) != 0 { - rval |= RDRAND - } - if c&(1<<29) != 0 { - rval |= F16C - } - if c&(1<<13) != 0 { - rval |= CX16 - } - if vend == Intel && (d&(1<<28)) != 0 && mfi >= 4 { - if threadsPerCore() > 1 { - rval |= HTT - } - } - - // Check XGETBV, OXSAVE and AVX bits - if c&(1<<26) != 0 && c&(1<<27) != 0 && c&(1<<28) != 0 { - // Check for OS support - eax, _ := xgetbv(0) - if (eax & 0x6) == 0x6 { - rval |= AVX - if (c & 0x00001000) != 0 { - rval |= FMA3 - } - } - } - - // Check AVX2, AVX2 requires OS support, but BMI1/2 don't. - if mfi >= 7 { - _, ebx, ecx, edx := cpuidex(7, 0) - if (rval&AVX) != 0 && (ebx&0x00000020) != 0 { - rval |= AVX2 - } - if (ebx & 0x00000008) != 0 { - rval |= BMI1 - if (ebx & 0x00000100) != 0 { - rval |= BMI2 - } - } - if ebx&(1<<2) != 0 { - rval |= SGX - } - if ebx&(1<<4) != 0 { - rval |= HLE - } - if ebx&(1<<9) != 0 { - rval |= ERMS - } - if ebx&(1<<11) != 0 { - rval |= RTM - } - if ebx&(1<<14) != 0 { - rval |= MPX - } - if ebx&(1<<18) != 0 { - rval |= RDSEED - } - if ebx&(1<<19) != 0 { - rval |= ADX - } - if ebx&(1<<29) != 0 { - rval |= SHA - } - if edx&(1<<26) != 0 { - rval |= IBPB - } - if edx&(1<<27) != 0 { - rval |= STIBP - } - - // Only detect AVX-512 features if XGETBV is supported - if c&((1<<26)|(1<<27)) == (1<<26)|(1<<27) { - // Check for OS support - eax, _ := xgetbv(0) - - // Verify that XCR0[7:5] = ‘111b’ (OPMASK state, upper 256-bit of ZMM0-ZMM15 and - // ZMM16-ZMM31 state are enabled by OS) - /// and that XCR0[2:1] = ‘11b’ (XMM state and YMM state are enabled by OS). - if (eax>>5)&7 == 7 && (eax>>1)&3 == 3 { - if ebx&(1<<16) != 0 { - rval |= AVX512F - } - if ebx&(1<<17) != 0 { - rval |= AVX512DQ - } - if ebx&(1<<21) != 0 { - rval |= AVX512IFMA - } - if ebx&(1<<26) != 0 { - rval |= AVX512PF - } - if ebx&(1<<27) != 0 { - rval |= AVX512ER - } - if ebx&(1<<28) != 0 { - rval |= AVX512CD - } - if ebx&(1<<30) != 0 { - rval |= AVX512BW - } - if ebx&(1<<31) != 0 { - rval |= AVX512VL - } - // ecx - if ecx&(1<<1) != 0 { - rval |= AVX512VBMI - } - if ecx&(1<<11) != 0 { - rval |= AVX512VNNI - } - } - } - } - - if maxExtendedFunction() >= 0x80000001 { - _, _, c, d := cpuid(0x80000001) - if (c & (1 << 5)) != 0 { - rval |= LZCNT - rval |= POPCNT - } - if (d & (1 << 31)) != 0 { - rval |= AMD3DNOW - } - if (d & (1 << 30)) != 0 { - rval |= AMD3DNOWEXT - } - if (d & (1 << 23)) != 0 { - rval |= MMX - } - if (d & (1 << 22)) != 0 { - rval |= MMXEXT - } - if (c & (1 << 6)) != 0 { - rval |= SSE4A - } - if d&(1<<20) != 0 { - rval |= NX - } - if d&(1<<27) != 0 { - rval |= RDTSCP - } - - /* Allow for selectively disabling SSE2 functions on AMD processors - with SSE2 support but not SSE4a. This includes Athlon64, some - Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster - than SSE2 often enough to utilize this special-case flag. - AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case - so that SSE2 is used unless explicitly disabled by checking - AV_CPU_FLAG_SSE2SLOW. */ - if vendorID() != Intel && - rval&SSE2 != 0 && (c&0x00000040) == 0 { - rval |= SSE2SLOW - } - - /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be - * used unless the OS has AVX support. */ - if (rval & AVX) != 0 { - if (c & 0x00000800) != 0 { - rval |= XOP - } - if (c & 0x00010000) != 0 { - rval |= FMA4 - } - } - - if vendorID() == Intel { - family, model := familyModel() - if family == 6 && (model == 9 || model == 13 || model == 14) { - /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and - * 6/14 (core1 "yonah") theoretically support sse2, but it's - * usually slower than mmx. */ - if (rval & SSE2) != 0 { - rval |= SSE2SLOW - } - if (rval & SSE3) != 0 { - rval |= SSE3SLOW - } - } - /* The Atom processor has SSSE3 support, which is useful in many cases, - * but sometimes the SSSE3 version is slower than the SSE2 equivalent - * on the Atom, but is generally faster on other processors supporting - * SSSE3. This flag allows for selectively disabling certain SSSE3 - * functions on the Atom. */ - if family == 6 && model == 28 { - rval |= ATOM - } - } - } - return Flags(rval) -} - -func valAsString(values ...uint32) []byte { - r := make([]byte, 4*len(values)) - for i, v := range values { - dst := r[i*4:] - dst[0] = byte(v & 0xff) - dst[1] = byte((v >> 8) & 0xff) - dst[2] = byte((v >> 16) & 0xff) - dst[3] = byte((v >> 24) & 0xff) - switch { - case dst[0] == 0: - return r[:i*4] - case dst[1] == 0: - return r[:i*4+1] - case dst[2] == 0: - return r[:i*4+2] - case dst[3] == 0: - return r[:i*4+3] - } - } - return r -} diff --git a/vendor/github.com/klauspost/cpuid/cpuid_386.s b/vendor/github.com/klauspost/cpuid/cpuid_386.s deleted file mode 100644 index 4d73171..0000000 --- a/vendor/github.com/klauspost/cpuid/cpuid_386.s +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. - -// +build 386,!gccgo - -// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) -TEXT ·asmCpuid(SB), 7, $0 - XORL CX, CX - MOVL op+0(FP), AX - CPUID - MOVL AX, eax+4(FP) - MOVL BX, ebx+8(FP) - MOVL CX, ecx+12(FP) - MOVL DX, edx+16(FP) - RET - -// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) -TEXT ·asmCpuidex(SB), 7, $0 - MOVL op+0(FP), AX - MOVL op2+4(FP), CX - CPUID - MOVL AX, eax+8(FP) - MOVL BX, ebx+12(FP) - MOVL CX, ecx+16(FP) - MOVL DX, edx+20(FP) - RET - -// func xgetbv(index uint32) (eax, edx uint32) -TEXT ·asmXgetbv(SB), 7, $0 - MOVL index+0(FP), CX - BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV - MOVL AX, eax+4(FP) - MOVL DX, edx+8(FP) - RET - -// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) -TEXT ·asmRdtscpAsm(SB), 7, $0 - BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP - MOVL AX, eax+0(FP) - MOVL BX, ebx+4(FP) - MOVL CX, ecx+8(FP) - MOVL DX, edx+12(FP) - RET diff --git a/vendor/github.com/klauspost/cpuid/cpuid_amd64.s b/vendor/github.com/klauspost/cpuid/cpuid_amd64.s deleted file mode 100644 index 3c1d60e..0000000 --- a/vendor/github.com/klauspost/cpuid/cpuid_amd64.s +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. - -//+build amd64,!gccgo - -// func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) -TEXT ·asmCpuid(SB), 7, $0 - XORQ CX, CX - MOVL op+0(FP), AX - CPUID - MOVL AX, eax+8(FP) - MOVL BX, ebx+12(FP) - MOVL CX, ecx+16(FP) - MOVL DX, edx+20(FP) - RET - -// func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) -TEXT ·asmCpuidex(SB), 7, $0 - MOVL op+0(FP), AX - MOVL op2+4(FP), CX - CPUID - MOVL AX, eax+8(FP) - MOVL BX, ebx+12(FP) - MOVL CX, ecx+16(FP) - MOVL DX, edx+20(FP) - RET - -// func asmXgetbv(index uint32) (eax, edx uint32) -TEXT ·asmXgetbv(SB), 7, $0 - MOVL index+0(FP), CX - BYTE $0x0f; BYTE $0x01; BYTE $0xd0 // XGETBV - MOVL AX, eax+8(FP) - MOVL DX, edx+12(FP) - RET - -// func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) -TEXT ·asmRdtscpAsm(SB), 7, $0 - BYTE $0x0F; BYTE $0x01; BYTE $0xF9 // RDTSCP - MOVL AX, eax+0(FP) - MOVL BX, ebx+4(FP) - MOVL CX, ecx+8(FP) - MOVL DX, edx+12(FP) - RET diff --git a/vendor/github.com/klauspost/cpuid/detect_intel.go b/vendor/github.com/klauspost/cpuid/detect_intel.go deleted file mode 100644 index a5f04dd..0000000 --- a/vendor/github.com/klauspost/cpuid/detect_intel.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. - -// +build 386,!gccgo amd64,!gccgo - -package cpuid - -func asmCpuid(op uint32) (eax, ebx, ecx, edx uint32) -func asmCpuidex(op, op2 uint32) (eax, ebx, ecx, edx uint32) -func asmXgetbv(index uint32) (eax, edx uint32) -func asmRdtscpAsm() (eax, ebx, ecx, edx uint32) - -func initCPU() { - cpuid = asmCpuid - cpuidex = asmCpuidex - xgetbv = asmXgetbv - rdtscpAsm = asmRdtscpAsm -} diff --git a/vendor/github.com/klauspost/cpuid/detect_ref.go b/vendor/github.com/klauspost/cpuid/detect_ref.go deleted file mode 100644 index 909c5d9..0000000 --- a/vendor/github.com/klauspost/cpuid/detect_ref.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) 2015 Klaus Post, released under MIT License. See LICENSE file. - -// +build !amd64,!386 gccgo - -package cpuid - -func initCPU() { - cpuid = func(op uint32) (eax, ebx, ecx, edx uint32) { - return 0, 0, 0, 0 - } - - cpuidex = func(op, op2 uint32) (eax, ebx, ecx, edx uint32) { - return 0, 0, 0, 0 - } - - xgetbv = func(index uint32) (eax, edx uint32) { - return 0, 0 - } - - rdtscpAsm = func() (eax, ebx, ecx, edx uint32) { - return 0, 0, 0, 0 - } -} diff --git a/vendor/github.com/klauspost/cpuid/generate.go b/vendor/github.com/klauspost/cpuid/generate.go deleted file mode 100644 index 90e7a98..0000000 --- a/vendor/github.com/klauspost/cpuid/generate.go +++ /dev/null @@ -1,4 +0,0 @@ -package cpuid - -//go:generate go run private-gen.go -//go:generate gofmt -w ./private diff --git a/vendor/github.com/klauspost/cpuid/private-gen.go b/vendor/github.com/klauspost/cpuid/private-gen.go deleted file mode 100644 index 437333d..0000000 --- a/vendor/github.com/klauspost/cpuid/private-gen.go +++ /dev/null @@ -1,476 +0,0 @@ -// +build ignore - -package main - -import ( - "bytes" - "fmt" - "go/ast" - "go/parser" - "go/printer" - "go/token" - "io" - "io/ioutil" - "log" - "os" - "reflect" - "strings" - "unicode" - "unicode/utf8" -) - -var inFiles = []string{"cpuid.go", "cpuid_test.go"} -var copyFiles = []string{"cpuid_amd64.s", "cpuid_386.s", "detect_ref.go", "detect_intel.go"} -var fileSet = token.NewFileSet() -var reWrites = []rewrite{ - initRewrite("CPUInfo -> cpuInfo"), - initRewrite("Vendor -> vendor"), - initRewrite("Flags -> flags"), - initRewrite("Detect -> detect"), - initRewrite("CPU -> cpu"), -} -var excludeNames = map[string]bool{"string": true, "join": true, "trim": true, - // cpuid_test.go - "t": true, "println": true, "logf": true, "log": true, "fatalf": true, "fatal": true, -} - -var excludePrefixes = []string{"test", "benchmark"} - -func main() { - Package := "private" - parserMode := parser.ParseComments - exported := make(map[string]rewrite) - for _, file := range inFiles { - in, err := os.Open(file) - if err != nil { - log.Fatalf("opening input", err) - } - - src, err := ioutil.ReadAll(in) - if err != nil { - log.Fatalf("reading input", err) - } - - astfile, err := parser.ParseFile(fileSet, file, src, parserMode) - if err != nil { - log.Fatalf("parsing input", err) - } - - for _, rw := range reWrites { - astfile = rw(astfile) - } - - // Inspect the AST and print all identifiers and literals. - var startDecl token.Pos - var endDecl token.Pos - ast.Inspect(astfile, func(n ast.Node) bool { - var s string - switch x := n.(type) { - case *ast.Ident: - if x.IsExported() { - t := strings.ToLower(x.Name) - for _, pre := range excludePrefixes { - if strings.HasPrefix(t, pre) { - return true - } - } - if excludeNames[t] != true { - //if x.Pos() > startDecl && x.Pos() < endDecl { - exported[x.Name] = initRewrite(x.Name + " -> " + t) - } - } - - case *ast.GenDecl: - if x.Tok == token.CONST && x.Lparen > 0 { - startDecl = x.Lparen - endDecl = x.Rparen - // fmt.Printf("Decl:%s -> %s\n", fileSet.Position(startDecl), fileSet.Position(endDecl)) - } - } - if s != "" { - fmt.Printf("%s:\t%s\n", fileSet.Position(n.Pos()), s) - } - return true - }) - - for _, rw := range exported { - astfile = rw(astfile) - } - - var buf bytes.Buffer - - printer.Fprint(&buf, fileSet, astfile) - - // Remove package documentation and insert information - s := buf.String() - ind := strings.Index(buf.String(), "\npackage cpuid") - s = s[ind:] - s = "// Generated, DO NOT EDIT,\n" + - "// but copy it to your own project and rename the package.\n" + - "// See more at http://github.com/klauspost/cpuid\n" + - s - - outputName := Package + string(os.PathSeparator) + file - - err = ioutil.WriteFile(outputName, []byte(s), 0644) - if err != nil { - log.Fatalf("writing output: %s", err) - } - log.Println("Generated", outputName) - } - - for _, file := range copyFiles { - dst := "" - if strings.HasPrefix(file, "cpuid") { - dst = Package + string(os.PathSeparator) + file - } else { - dst = Package + string(os.PathSeparator) + "cpuid_" + file - } - err := copyFile(file, dst) - if err != nil { - log.Fatalf("copying file: %s", err) - } - log.Println("Copied", dst) - } -} - -// CopyFile copies a file from src to dst. If src and dst files exist, and are -// the same, then return success. Copy the file contents from src to dst. -func copyFile(src, dst string) (err error) { - sfi, err := os.Stat(src) - if err != nil { - return - } - if !sfi.Mode().IsRegular() { - // cannot copy non-regular files (e.g., directories, - // symlinks, devices, etc.) - return fmt.Errorf("CopyFile: non-regular source file %s (%q)", sfi.Name(), sfi.Mode().String()) - } - dfi, err := os.Stat(dst) - if err != nil { - if !os.IsNotExist(err) { - return - } - } else { - if !(dfi.Mode().IsRegular()) { - return fmt.Errorf("CopyFile: non-regular destination file %s (%q)", dfi.Name(), dfi.Mode().String()) - } - if os.SameFile(sfi, dfi) { - return - } - } - err = copyFileContents(src, dst) - return -} - -// copyFileContents copies the contents of the file named src to the file named -// by dst. The file will be created if it does not already exist. If the -// destination file exists, all it's contents will be replaced by the contents -// of the source file. -func copyFileContents(src, dst string) (err error) { - in, err := os.Open(src) - if err != nil { - return - } - defer in.Close() - out, err := os.Create(dst) - if err != nil { - return - } - defer func() { - cerr := out.Close() - if err == nil { - err = cerr - } - }() - if _, err = io.Copy(out, in); err != nil { - return - } - err = out.Sync() - return -} - -type rewrite func(*ast.File) *ast.File - -// Mostly copied from gofmt -func initRewrite(rewriteRule string) rewrite { - f := strings.Split(rewriteRule, "->") - if len(f) != 2 { - fmt.Fprintf(os.Stderr, "rewrite rule must be of the form 'pattern -> replacement'\n") - os.Exit(2) - } - pattern := parseExpr(f[0], "pattern") - replace := parseExpr(f[1], "replacement") - return func(p *ast.File) *ast.File { return rewriteFile(pattern, replace, p) } -} - -// parseExpr parses s as an expression. -// It might make sense to expand this to allow statement patterns, -// but there are problems with preserving formatting and also -// with what a wildcard for a statement looks like. -func parseExpr(s, what string) ast.Expr { - x, err := parser.ParseExpr(s) - if err != nil { - fmt.Fprintf(os.Stderr, "parsing %s %s at %s\n", what, s, err) - os.Exit(2) - } - return x -} - -// Keep this function for debugging. -/* -func dump(msg string, val reflect.Value) { - fmt.Printf("%s:\n", msg) - ast.Print(fileSet, val.Interface()) - fmt.Println() -} -*/ - -// rewriteFile applies the rewrite rule 'pattern -> replace' to an entire file. -func rewriteFile(pattern, replace ast.Expr, p *ast.File) *ast.File { - cmap := ast.NewCommentMap(fileSet, p, p.Comments) - m := make(map[string]reflect.Value) - pat := reflect.ValueOf(pattern) - repl := reflect.ValueOf(replace) - - var rewriteVal func(val reflect.Value) reflect.Value - rewriteVal = func(val reflect.Value) reflect.Value { - // don't bother if val is invalid to start with - if !val.IsValid() { - return reflect.Value{} - } - for k := range m { - delete(m, k) - } - val = apply(rewriteVal, val) - if match(m, pat, val) { - val = subst(m, repl, reflect.ValueOf(val.Interface().(ast.Node).Pos())) - } - return val - } - - r := apply(rewriteVal, reflect.ValueOf(p)).Interface().(*ast.File) - r.Comments = cmap.Filter(r).Comments() // recreate comments list - return r -} - -// set is a wrapper for x.Set(y); it protects the caller from panics if x cannot be changed to y. -func set(x, y reflect.Value) { - // don't bother if x cannot be set or y is invalid - if !x.CanSet() || !y.IsValid() { - return - } - defer func() { - if x := recover(); x != nil { - if s, ok := x.(string); ok && - (strings.Contains(s, "type mismatch") || strings.Contains(s, "not assignable")) { - // x cannot be set to y - ignore this rewrite - return - } - panic(x) - } - }() - x.Set(y) -} - -// Values/types for special cases. -var ( - objectPtrNil = reflect.ValueOf((*ast.Object)(nil)) - scopePtrNil = reflect.ValueOf((*ast.Scope)(nil)) - - identType = reflect.TypeOf((*ast.Ident)(nil)) - objectPtrType = reflect.TypeOf((*ast.Object)(nil)) - positionType = reflect.TypeOf(token.NoPos) - callExprType = reflect.TypeOf((*ast.CallExpr)(nil)) - scopePtrType = reflect.TypeOf((*ast.Scope)(nil)) -) - -// apply replaces each AST field x in val with f(x), returning val. -// To avoid extra conversions, f operates on the reflect.Value form. -func apply(f func(reflect.Value) reflect.Value, val reflect.Value) reflect.Value { - if !val.IsValid() { - return reflect.Value{} - } - - // *ast.Objects introduce cycles and are likely incorrect after - // rewrite; don't follow them but replace with nil instead - if val.Type() == objectPtrType { - return objectPtrNil - } - - // similarly for scopes: they are likely incorrect after a rewrite; - // replace them with nil - if val.Type() == scopePtrType { - return scopePtrNil - } - - switch v := reflect.Indirect(val); v.Kind() { - case reflect.Slice: - for i := 0; i < v.Len(); i++ { - e := v.Index(i) - set(e, f(e)) - } - case reflect.Struct: - for i := 0; i < v.NumField(); i++ { - e := v.Field(i) - set(e, f(e)) - } - case reflect.Interface: - e := v.Elem() - set(v, f(e)) - } - return val -} - -func isWildcard(s string) bool { - rune, size := utf8.DecodeRuneInString(s) - return size == len(s) && unicode.IsLower(rune) -} - -// match returns true if pattern matches val, -// recording wildcard submatches in m. -// If m == nil, match checks whether pattern == val. -func match(m map[string]reflect.Value, pattern, val reflect.Value) bool { - // Wildcard matches any expression. If it appears multiple - // times in the pattern, it must match the same expression - // each time. - if m != nil && pattern.IsValid() && pattern.Type() == identType { - name := pattern.Interface().(*ast.Ident).Name - if isWildcard(name) && val.IsValid() { - // wildcards only match valid (non-nil) expressions. - if _, ok := val.Interface().(ast.Expr); ok && !val.IsNil() { - if old, ok := m[name]; ok { - return match(nil, old, val) - } - m[name] = val - return true - } - } - } - - // Otherwise, pattern and val must match recursively. - if !pattern.IsValid() || !val.IsValid() { - return !pattern.IsValid() && !val.IsValid() - } - if pattern.Type() != val.Type() { - return false - } - - // Special cases. - switch pattern.Type() { - case identType: - // For identifiers, only the names need to match - // (and none of the other *ast.Object information). - // This is a common case, handle it all here instead - // of recursing down any further via reflection. - p := pattern.Interface().(*ast.Ident) - v := val.Interface().(*ast.Ident) - return p == nil && v == nil || p != nil && v != nil && p.Name == v.Name - case objectPtrType, positionType: - // object pointers and token positions always match - return true - case callExprType: - // For calls, the Ellipsis fields (token.Position) must - // match since that is how f(x) and f(x...) are different. - // Check them here but fall through for the remaining fields. - p := pattern.Interface().(*ast.CallExpr) - v := val.Interface().(*ast.CallExpr) - if p.Ellipsis.IsValid() != v.Ellipsis.IsValid() { - return false - } - } - - p := reflect.Indirect(pattern) - v := reflect.Indirect(val) - if !p.IsValid() || !v.IsValid() { - return !p.IsValid() && !v.IsValid() - } - - switch p.Kind() { - case reflect.Slice: - if p.Len() != v.Len() { - return false - } - for i := 0; i < p.Len(); i++ { - if !match(m, p.Index(i), v.Index(i)) { - return false - } - } - return true - - case reflect.Struct: - for i := 0; i < p.NumField(); i++ { - if !match(m, p.Field(i), v.Field(i)) { - return false - } - } - return true - - case reflect.Interface: - return match(m, p.Elem(), v.Elem()) - } - - // Handle token integers, etc. - return p.Interface() == v.Interface() -} - -// subst returns a copy of pattern with values from m substituted in place -// of wildcards and pos used as the position of tokens from the pattern. -// if m == nil, subst returns a copy of pattern and doesn't change the line -// number information. -func subst(m map[string]reflect.Value, pattern reflect.Value, pos reflect.Value) reflect.Value { - if !pattern.IsValid() { - return reflect.Value{} - } - - // Wildcard gets replaced with map value. - if m != nil && pattern.Type() == identType { - name := pattern.Interface().(*ast.Ident).Name - if isWildcard(name) { - if old, ok := m[name]; ok { - return subst(nil, old, reflect.Value{}) - } - } - } - - if pos.IsValid() && pattern.Type() == positionType { - // use new position only if old position was valid in the first place - if old := pattern.Interface().(token.Pos); !old.IsValid() { - return pattern - } - return pos - } - - // Otherwise copy. - switch p := pattern; p.Kind() { - case reflect.Slice: - v := reflect.MakeSlice(p.Type(), p.Len(), p.Len()) - for i := 0; i < p.Len(); i++ { - v.Index(i).Set(subst(m, p.Index(i), pos)) - } - return v - - case reflect.Struct: - v := reflect.New(p.Type()).Elem() - for i := 0; i < p.NumField(); i++ { - v.Field(i).Set(subst(m, p.Field(i), pos)) - } - return v - - case reflect.Ptr: - v := reflect.New(p.Type()).Elem() - if elem := p.Elem(); elem.IsValid() { - v.Set(subst(m, elem, pos).Addr()) - } - return v - - case reflect.Interface: - v := reflect.New(p.Type()).Elem() - if elem := p.Elem(); elem.IsValid() { - v.Set(subst(m, elem, pos)) - } - return v - } - - return pattern -} diff --git a/vendor/github.com/klauspost/reedsolomon/.gitignore b/vendor/github.com/klauspost/reedsolomon/.gitignore deleted file mode 100644 index 59610b5..0000000 --- a/vendor/github.com/klauspost/reedsolomon/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof - -.idea \ No newline at end of file diff --git a/vendor/github.com/klauspost/reedsolomon/.travis.yml b/vendor/github.com/klauspost/reedsolomon/.travis.yml deleted file mode 100644 index 10d09e8..0000000 --- a/vendor/github.com/klauspost/reedsolomon/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: go - -sudo: false - -os: - - linux - - osx - -go: - - 1.11.x - - 1.12.x - - 1.13.x - - master - -install: - - go get ./... - -script: - - go vet ./... - - go test -v -cpu=1,2,4 . - - go test -v -cpu=1,2,4 -short -race . - - go test -tags=noasm -v -cpu=1,2,4 -short -race . - - go build examples/simple-decoder.go - - go build examples/simple-encoder.go - - go build examples/stream-decoder.go - - go build examples/stream-encoder.go - - diff <(gofmt -d .) <("") - -matrix: - allow_failures: - - go: 'master' - fast_finish: true diff --git a/vendor/github.com/klauspost/reedsolomon/LICENSE b/vendor/github.com/klauspost/reedsolomon/LICENSE deleted file mode 100644 index a947e16..0000000 --- a/vendor/github.com/klauspost/reedsolomon/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Klaus Post -Copyright (c) 2015 Backblaze - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/klauspost/reedsolomon/README.md b/vendor/github.com/klauspost/reedsolomon/README.md deleted file mode 100644 index 28b3173..0000000 --- a/vendor/github.com/klauspost/reedsolomon/README.md +++ /dev/null @@ -1,321 +0,0 @@ -# Reed-Solomon -[![GoDoc][1]][2] [![Build Status][3]][4] - -[1]: https://godoc.org/github.com/klauspost/reedsolomon?status.svg -[2]: https://godoc.org/github.com/klauspost/reedsolomon -[3]: https://travis-ci.org/klauspost/reedsolomon.svg?branch=master -[4]: https://travis-ci.org/klauspost/reedsolomon - -Reed-Solomon Erasure Coding in Go, with speeds exceeding 1GB/s/cpu core implemented in pure Go. - -This is a Go port of the [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) library released by [Backblaze](http://backblaze.com), with some additional optimizations. - -For an introduction on erasure coding, see the post on the [Backblaze blog](https://www.backblaze.com/blog/reed-solomon/). - -Package home: https://github.com/klauspost/reedsolomon - -Godoc: https://godoc.org/github.com/klauspost/reedsolomon - -# Installation -To get the package use the standard: -```bash -go get -u github.com/klauspost/reedsolomon -``` - -# Changes - -## March 6, 2019 - -The pure Go implementation is about 30% faster. Minor tweaks to assembler implementations. - -## February 8, 2019 - -AVX512 accelerated version added for Intel Skylake CPUs. This can give up to a 4x speed improvement as compared to AVX2. See [here](https://github.com/klauspost/reedsolomon#performance-on-avx512) for more details. - -## December 18, 2018 - -Assembly code for ppc64le has been contributed, this boosts performance by about 10x on this platform. - -## November 18, 2017 - -Added [WithAutoGoroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithAutoGoroutines) which will attempt to calculate the optimal number of goroutines to use based on your expected shard size and detected CPU. - -## October 1, 2017 - -* [Cauchy Matrix](https://godoc.org/github.com/klauspost/reedsolomon#WithCauchyMatrix) is now an option. Thanks to [templexxx](https://github.com/templexxx) for the basis of this. -* Default maximum number of [goroutines](https://godoc.org/github.com/klauspost/reedsolomon#WithMaxGoroutines) has been increased for better multi-core scaling. -* After several requests the Reconstruct and ReconstructData now slices of zero length but sufficient capacity to be used instead of allocating new memory. - -## August 26, 2017 - -* The [`Encoder()`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) now contains an `Update` function contributed by [chenzhongtao](https://github.com/chenzhongtao). -* [Frank Wessels](https://github.com/fwessels) kindly contributed ARM 64 bit assembly, which gives a huge performance boost on this platform. - -## July 20, 2017 - -`ReconstructData` added to [`Encoder`](https://godoc.org/github.com/klauspost/reedsolomon#Encoder) interface. This can cause compatibility issues if you implement your own Encoder. A simple workaround can be added: -```Go -func (e *YourEnc) ReconstructData(shards [][]byte) error { - return ReconstructData(shards) -} -``` - -You can of course also do your own implementation. The [`StreamEncoder`](https://godoc.org/github.com/klauspost/reedsolomon#StreamEncoder) handles this without modifying the interface. This is a good lesson on why returning interfaces is not a good design. - -# Usage - -This section assumes you know the basics of Reed-Solomon encoding. A good start is this [Backblaze blog post](https://www.backblaze.com/blog/reed-solomon/). - -This package performs the calculation of the parity sets. The usage is therefore relatively simple. - -First of all, you need to choose your distribution of data and parity shards. A 'good' distribution is very subjective, and will depend a lot on your usage scenario. A good starting point is above 5 and below 257 data shards (the maximum supported number), and the number of parity shards to be 2 or above, and below the number of data shards. - -To create an encoder with 10 data shards (where your data goes) and 3 parity shards (calculated): -```Go - enc, err := reedsolomon.New(10, 3) -``` -This encoder will work for all parity sets with this distribution of data and parity shards. The error will only be set if you specify 0 or negative values in any of the parameters, or if you specify more than 256 data shards. - -The you send and receive data is a simple slice of byte slices; `[][]byte`. In the example above, the top slice must have a length of 13. -```Go - data := make([][]byte, 13) -``` -You should then fill the 10 first slices with *equally sized* data, and create parity shards that will be populated with parity data. In this case we create the data in memory, but you could for instance also use [mmap](https://github.com/edsrzf/mmap-go) to map files. - -```Go - // Create all shards, size them at 50000 each - for i := range input { - data[i] := make([]byte, 50000) - } - - - // Fill some data into the data shards - for i, in := range data[:10] { - for j:= range in { - in[j] = byte((i+j)&0xff) - } - } -``` - -To populate the parity shards, you simply call `Encode()` with your data. -```Go - err = enc.Encode(data) -``` -The only cases where you should get an error is, if the data shards aren't of equal size. The last 3 shards now contain parity data. You can verify this by calling `Verify()`: - -```Go - ok, err = enc.Verify(data) -``` - -The final (and important) part is to be able to reconstruct missing shards. For this to work, you need to know which parts of your data is missing. The encoder *does not know which parts are invalid*, so if data corruption is a likely scenario, you need to implement a hash check for each shard. If a byte has changed in your set, and you don't know which it is, there is no way to reconstruct the data set. - -To indicate missing data, you set the shard to nil before calling `Reconstruct()`: - -```Go - // Delete two data shards - data[3] = nil - data[7] = nil - - // Reconstruct the missing shards - err := enc.Reconstruct(data) -``` -The missing data and parity shards will be recreated. If more than 3 shards are missing, the reconstruction will fail. - -If you are only interested in the data shards (for reading purposes) you can call `ReconstructData()`: - -```Go - // Delete two data shards - data[3] = nil - data[7] = nil - - // Reconstruct just the missing data shards - err := enc.ReconstructData(data) -``` - -So to sum up reconstruction: -* The number of data/parity shards must match the numbers used for encoding. -* The order of shards must be the same as used when encoding. -* You may only supply data you know is valid. -* Invalid shards should be set to nil. - -For complete examples of an encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). - -# Splitting/Joining Data - -You might have a large slice of data. To help you split this, there are some helper functions that can split and join a single byte slice. - -```Go - bigfile, _ := ioutil.Readfile("myfile.data") - - // Split the file - split, err := enc.Split(bigfile) -``` -This will split the file into the number of data shards set when creating the encoder and create empty parity shards. - -An important thing to note is that you have to *keep track of the exact input size*. If the size of the input isn't divisible by the number of data shards, extra zeros will be inserted in the last shard. - -To join a data set, use the `Join()` function, which will join the shards and write it to the `io.Writer` you supply: -```Go - // Join a data set and write it to io.Discard. - err = enc.Join(io.Discard, data, len(bigfile)) -``` - -# Streaming/Merging - -It might seem like a limitation that all data should be in memory, but an important property is that *as long as the number of data/parity shards are the same, you can merge/split data sets*, and they will remain valid as a separate set. - -```Go - // Split the data set of 50000 elements into two of 25000 - splitA := make([][]byte, 13) - splitB := make([][]byte, 13) - - // Merge into a 100000 element set - merged := make([][]byte, 13) - - for i := range data { - splitA[i] = data[i][:25000] - splitB[i] = data[i][25000:] - - // Concatenate it to itself - merged[i] = append(make([]byte, 0, len(data[i])*2), data[i]...) - merged[i] = append(merged[i], data[i]...) - } - - // Each part should still verify as ok. - ok, err := enc.Verify(splitA) - if ok && err == nil { - log.Println("splitA ok") - } - - ok, err = enc.Verify(splitB) - if ok && err == nil { - log.Println("splitB ok") - } - - ok, err = enc.Verify(merge) - if ok && err == nil { - log.Println("merge ok") - } -``` - -This means that if you have a data set that may not fit into memory, you can split processing into smaller blocks. For the best throughput, don't use too small blocks. - -This also means that you can divide big input up into smaller blocks, and do reconstruction on parts of your data. This doesn't give the same flexibility of a higher number of data shards, but it will be much more performant. - -# Streaming API - -There has been added support for a streaming API, to help perform fully streaming operations, which enables you to do the same operations, but on streams. To use the stream API, use [`NewStream`](https://godoc.org/github.com/klauspost/reedsolomon#NewStream) function to create the encoding/decoding interfaces. You can use [`NewStreamC`](https://godoc.org/github.com/klauspost/reedsolomon#NewStreamC) to ready an interface that reads/writes concurrently from the streams. - -Input is delivered as `[]io.Reader`, output as `[]io.Writer`, and functionality corresponds to the in-memory API. Each stream must supply the same amount of data, similar to how each slice must be similar size with the in-memory API. -If an error occurs in relation to a stream, a [`StreamReadError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamReadError) or [`StreamWriteError`](https://godoc.org/github.com/klauspost/reedsolomon#StreamWriteError) will help you determine which stream was the offender. - -There is no buffering or timeouts/retry specified. If you want to add that, you need to add it to the Reader/Writer. - -For complete examples of a streaming encoder and decoder see the [examples folder](https://github.com/klauspost/reedsolomon/tree/master/examples). - -# Advanced Options - -You can modify internal options which affects how jobs are split between and processed by goroutines. - -To create options, use the WithXXX functions. You can supply options to `New`, `NewStream` and `NewStreamC`. If no Options are supplied, default options are used. - -Example of how to supply options: - - ```Go - enc, err := reedsolomon.New(10, 3, WithMaxGoroutines(25)) - ``` - - -# Performance -Performance depends mainly on the number of parity shards. In rough terms, doubling the number of parity shards will double the encoding time. - -Here are the throughput numbers with some different selections of data and parity shards. For reference each shard is 1MB random data, and 2 CPU cores are used for encoding. - -| Data | Parity | Parity | MB/s | SSSE3 MB/s | SSSE3 Speed | Rel. Speed | -|------|--------|--------|--------|-------------|-------------|------------| -| 5 | 2 | 40% | 576,11 | 2599,2 | 451% | 100,00% | -| 10 | 2 | 20% | 587,73 | 3100,28 | 528% | 102,02% | -| 10 | 4 | 40% | 298,38 | 2470,97 | 828% | 51,79% | -| 50 | 20 | 40% | 59,81 | 713,28 | 1193% | 10,38% | - -If `runtime.GOMAXPROCS()` is set to a value higher than 1, the encoder will use multiple goroutines to perform the calculations in `Verify`, `Encode` and `Reconstruct`. - -Example of performance scaling on Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz - 4 physical cores, 8 logical cores. The example uses 10 blocks with 16MB data each and 4 parity blocks. - -| Threads | MB/s | Speed | -|---------|---------|-------| -| 1 | 1355,11 | 100% | -| 2 | 2339,78 | 172% | -| 4 | 3179,33 | 235% | -| 8 | 4346,18 | 321% | - -Benchmarking `Reconstruct()` followed by a `Verify()` (=`all`) versus just calling `ReconstructData()` (=`data`) gives the following result: -``` -benchmark all MB/s data MB/s speedup -BenchmarkReconstruct10x2x10000-8 2011.67 10530.10 5.23x -BenchmarkReconstruct50x5x50000-8 4585.41 14301.60 3.12x -BenchmarkReconstruct10x2x1M-8 8081.15 28216.41 3.49x -BenchmarkReconstruct5x2x1M-8 5780.07 28015.37 4.85x -BenchmarkReconstruct10x4x1M-8 4352.56 14367.61 3.30x -BenchmarkReconstruct50x20x1M-8 1364.35 4189.79 3.07x -BenchmarkReconstruct10x4x16M-8 1484.35 5779.53 3.89x -``` - -# Performance on AVX512 - -The performance on AVX512 has been accelerated for Intel CPUs. This gives speedups on a per-core basis of up to 4x compared to AVX2 as can be seen in the following table: - -``` -$ benchcmp avx2.txt avx512.txt -benchmark AVX2 MB/s AVX512 MB/s speedup -BenchmarkEncode8x8x1M-72 1681.35 4125.64 2.45x -BenchmarkEncode8x4x8M-72 1529.36 5507.97 3.60x -BenchmarkEncode8x8x8M-72 791.16 2952.29 3.73x -BenchmarkEncode8x8x32M-72 573.26 2168.61 3.78x -BenchmarkEncode12x4x12M-72 1234.41 4912.37 3.98x -BenchmarkEncode16x4x16M-72 1189.59 5138.01 4.32x -BenchmarkEncode24x8x24M-72 690.68 2583.70 3.74x -BenchmarkEncode24x8x48M-72 674.20 2643.31 3.92x -``` - -This speedup has been achieved by computing multiple parity blocks in parallel as opposed to one after the other. In doing so it is possible to minimize the memory bandwidth required for loading all data shards. At the same time the calculations are performed in the 512-bit wide ZMM registers and the surplus of ZMM registers (32 in total) is used to keep more data around (most notably the matrix coefficients). - -# Performance on ARM64 NEON - -By exploiting NEON instructions the performance for ARM has been accelerated. Below are the performance numbers for a single core on an ARM Cortex-A53 CPU @ 1.2GHz (Debian 8.0 Jessie running Go: 1.7.4): - -| Data | Parity | Parity | ARM64 Go MB/s | ARM64 NEON MB/s | NEON Speed | -|------|--------|--------|--------------:|----------------:|-----------:| -| 5 | 2 | 40% | 189 | 1304 | 588% | -| 10 | 2 | 20% | 188 | 1738 | 925% | -| 10 | 4 | 40% | 96 | 839 | 877% | - -# Performance on ppc64le - -The performance for ppc64le has been accelerated. This gives roughly a 10x performance improvement on this architecture as can been seen below: - -``` -benchmark old MB/s new MB/s speedup -BenchmarkGalois128K-160 948.87 8878.85 9.36x -BenchmarkGalois1M-160 968.85 9041.92 9.33x -BenchmarkGaloisXor128K-160 862.02 7905.00 9.17x -BenchmarkGaloisXor1M-160 784.60 6296.65 8.03x -``` - -# asm2plan9s - -[asm2plan9s](https://github.com/fwessels/asm2plan9s) is used for assembling the AVX2 instructions into their BYTE/WORD/LONG equivalents. - -# Links -* [Backblaze Open Sources Reed-Solomon Erasure Coding Source Code](https://www.backblaze.com/blog/reed-solomon/). -* [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon). Compatible java library by Backblaze. -* [ocaml-reed-solomon-erasure](https://gitlab.com/darrenldl/ocaml-reed-solomon-erasure). Compatible OCaml implementation. -* [reedsolomon-c](https://github.com/jannson/reedsolomon-c). C version, compatible with output from this package. -* [Reed-Solomon Erasure Coding in Haskell](https://github.com/NicolasT/reedsolomon). Haskell port of the package with similar performance. -* [reed-solomon-erasure](https://github.com/darrenldl/reed-solomon-erasure). Compatible Rust implementation. -* [go-erasure](https://github.com/somethingnew2-0/go-erasure). A similar library using cgo, slower in my tests. -* [Screaming Fast Galois Field Arithmetic](http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf). Basis for SSE3 optimizations. - -# License - -This code, as the original [JavaReedSolomon](https://github.com/Backblaze/JavaReedSolomon) is published under an MIT license. See LICENSE file for more information. diff --git a/vendor/github.com/klauspost/reedsolomon/appveyor.yml b/vendor/github.com/klauspost/reedsolomon/appveyor.yml deleted file mode 100644 index 9bb067f..0000000 --- a/vendor/github.com/klauspost/reedsolomon/appveyor.yml +++ /dev/null @@ -1,20 +0,0 @@ -os: Visual Studio 2015 - -platform: x64 - -clone_folder: c:\gopath\src\github.com\klauspost\reedsolomon - -# environment variables -environment: - GOPATH: c:\gopath - -install: - - echo %PATH% - - echo %GOPATH% - - go version - - go env - - go get -d ./... - -build_script: - - go test -v -cpu=2 ./... - - go test -cpu=1,2,4 -short -race ./... diff --git a/vendor/github.com/klauspost/reedsolomon/galois.go b/vendor/github.com/klauspost/reedsolomon/galois.go deleted file mode 100644 index 7a855fc..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois.go +++ /dev/null @@ -1,905 +0,0 @@ -/** - * 8-bit Galois Field - * Copyright 2015, Klaus Post - * Copyright 2015, Backblaze, Inc. All rights reserved. - */ - -package reedsolomon - -const ( - // The number of elements in the field. - fieldSize = 256 - - // The polynomial used to generate the logarithm table. - // - // There are a number of polynomials that work to generate - // a Galois field of 256 elements. The choice is arbitrary, - // and we just use the first one. - // - // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, - //* 113, 135, 141, 169, 195, 207, 231, and 245. - generatingPolynomial = 29 -) - -var logTable = [fieldSize]byte{ - 0, 0, 1, 25, 2, 50, 26, 198, - 3, 223, 51, 238, 27, 104, 199, 75, - 4, 100, 224, 14, 52, 141, 239, 129, - 28, 193, 105, 248, 200, 8, 76, 113, - 5, 138, 101, 47, 225, 36, 15, 33, - 53, 147, 142, 218, 240, 18, 130, 69, - 29, 181, 194, 125, 106, 39, 249, 185, - 201, 154, 9, 120, 77, 228, 114, 166, - 6, 191, 139, 98, 102, 221, 48, 253, - 226, 152, 37, 179, 16, 145, 34, 136, - 54, 208, 148, 206, 143, 150, 219, 189, - 241, 210, 19, 92, 131, 56, 70, 64, - 30, 66, 182, 163, 195, 72, 126, 110, - 107, 58, 40, 84, 250, 133, 186, 61, - 202, 94, 155, 159, 10, 21, 121, 43, - 78, 212, 229, 172, 115, 243, 167, 87, - 7, 112, 192, 247, 140, 128, 99, 13, - 103, 74, 222, 237, 49, 197, 254, 24, - 227, 165, 153, 119, 38, 184, 180, 124, - 17, 68, 146, 217, 35, 32, 137, 46, - 55, 63, 209, 91, 149, 188, 207, 205, - 144, 135, 151, 178, 220, 252, 190, 97, - 242, 86, 211, 171, 20, 42, 93, 158, - 132, 60, 57, 83, 71, 109, 65, 162, - 31, 45, 67, 216, 183, 123, 164, 118, - 196, 23, 73, 236, 127, 12, 111, 246, - 108, 161, 59, 82, 41, 157, 85, 170, - 251, 96, 134, 177, 187, 204, 62, 90, - 203, 89, 95, 176, 156, 169, 160, 81, - 11, 245, 22, 235, 122, 117, 44, 215, - 79, 174, 213, 233, 230, 231, 173, 232, - 116, 214, 244, 234, 168, 80, 88, 175, -} - -/** - * Inverse of the logarithm table. Maps integer logarithms - * to members of the field. There is no entry for 255 - * because the highest log is 254. - * - * This table was generated by `go run gentables.go` - */ -var expTable = []byte{0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x3, 0x6, 0xc, 0x18, 0x30, 0x60, 0xc0, 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, 0x46, 0x8c, 0x5, 0xa, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0xf, 0x1e, 0x3c, 0x78, 0xf0, 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0xd, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x7, 0xe, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x9, 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0xb, 0x16, 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e} - -func galAdd(a, b byte) byte { - return a ^ b -} - -func galSub(a, b byte) byte { - return a ^ b -} - -// Table from https://github.com/templexxx/reedsolomon -var invTable = [256]byte{0x0, 0x1, 0x8e, 0xf4, 0x47, 0xa7, 0x7a, 0xba, 0xad, 0x9d, 0xdd, 0x98, 0x3d, 0xaa, 0x5d, 0x96, 0xd8, 0x72, 0xc0, 0x58, 0xe0, 0x3e, 0x4c, 0x66, 0x90, 0xde, 0x55, 0x80, 0xa0, 0x83, 0x4b, 0x2a, 0x6c, 0xed, 0x39, 0x51, 0x60, 0x56, 0x2c, 0x8a, 0x70, 0xd0, 0x1f, 0x4a, 0x26, 0x8b, 0x33, 0x6e, 0x48, 0x89, 0x6f, 0x2e, 0xa4, 0xc3, 0x40, 0x5e, 0x50, 0x22, 0xcf, 0xa9, 0xab, 0xc, 0x15, 0xe1, 0x36, 0x5f, 0xf8, 0xd5, 0x92, 0x4e, 0xa6, 0x4, 0x30, 0x88, 0x2b, 0x1e, 0x16, 0x67, 0x45, 0x93, 0x38, 0x23, 0x68, 0x8c, 0x81, 0x1a, 0x25, 0x61, 0x13, 0xc1, 0xcb, 0x63, 0x97, 0xe, 0x37, 0x41, 0x24, 0x57, 0xca, 0x5b, 0xb9, 0xc4, 0x17, 0x4d, 0x52, 0x8d, 0xef, 0xb3, 0x20, 0xec, 0x2f, 0x32, 0x28, 0xd1, 0x11, 0xd9, 0xe9, 0xfb, 0xda, 0x79, 0xdb, 0x77, 0x6, 0xbb, 0x84, 0xcd, 0xfe, 0xfc, 0x1b, 0x54, 0xa1, 0x1d, 0x7c, 0xcc, 0xe4, 0xb0, 0x49, 0x31, 0x27, 0x2d, 0x53, 0x69, 0x2, 0xf5, 0x18, 0xdf, 0x44, 0x4f, 0x9b, 0xbc, 0xf, 0x5c, 0xb, 0xdc, 0xbd, 0x94, 0xac, 0x9, 0xc7, 0xa2, 0x1c, 0x82, 0x9f, 0xc6, 0x34, 0xc2, 0x46, 0x5, 0xce, 0x3b, 0xd, 0x3c, 0x9c, 0x8, 0xbe, 0xb7, 0x87, 0xe5, 0xee, 0x6b, 0xeb, 0xf2, 0xbf, 0xaf, 0xc5, 0x64, 0x7, 0x7b, 0x95, 0x9a, 0xae, 0xb6, 0x12, 0x59, 0xa5, 0x35, 0x65, 0xb8, 0xa3, 0x9e, 0xd2, 0xf7, 0x62, 0x5a, 0x85, 0x7d, 0xa8, 0x3a, 0x29, 0x71, 0xc8, 0xf6, 0xf9, 0x43, 0xd7, 0xd6, 0x10, 0x73, 0x76, 0x78, 0x99, 0xa, 0x19, 0x91, 0x14, 0x3f, 0xe6, 0xf0, 0x86, 0xb1, 0xe2, 0xf1, 0xfa, 0x74, 0xf3, 0xb4, 0x6d, 0x21, 0xb2, 0x6a, 0xe3, 0xe7, 0xb5, 0xea, 0x3, 0x8f, 0xd3, 0xc9, 0x42, 0xd4, 0xe8, 0x75, 0x7f, 0xff, 0x7e, 0xfd} - -var mulTable = [256][256]uint8{[256]uint8{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, - {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, - {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, 0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, 0x1d, 0x1f, 0x19, 0x1b, 0x15, 0x17, 0x11, 0x13, 0xd, 0xf, 0x9, 0xb, 0x5, 0x7, 0x1, 0x3, 0x3d, 0x3f, 0x39, 0x3b, 0x35, 0x37, 0x31, 0x33, 0x2d, 0x2f, 0x29, 0x2b, 0x25, 0x27, 0x21, 0x23, 0x5d, 0x5f, 0x59, 0x5b, 0x55, 0x57, 0x51, 0x53, 0x4d, 0x4f, 0x49, 0x4b, 0x45, 0x47, 0x41, 0x43, 0x7d, 0x7f, 0x79, 0x7b, 0x75, 0x77, 0x71, 0x73, 0x6d, 0x6f, 0x69, 0x6b, 0x65, 0x67, 0x61, 0x63, 0x9d, 0x9f, 0x99, 0x9b, 0x95, 0x97, 0x91, 0x93, 0x8d, 0x8f, 0x89, 0x8b, 0x85, 0x87, 0x81, 0x83, 0xbd, 0xbf, 0xb9, 0xbb, 0xb5, 0xb7, 0xb1, 0xb3, 0xad, 0xaf, 0xa9, 0xab, 0xa5, 0xa7, 0xa1, 0xa3, 0xdd, 0xdf, 0xd9, 0xdb, 0xd5, 0xd7, 0xd1, 0xd3, 0xcd, 0xcf, 0xc9, 0xcb, 0xc5, 0xc7, 0xc1, 0xc3, 0xfd, 0xff, 0xf9, 0xfb, 0xf5, 0xf7, 0xf1, 0xf3, 0xed, 0xef, 0xe9, 0xeb, 0xe5, 0xe7, 0xe1, 0xe3}, - {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, 0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, 0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, 0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, 0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, 0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, 0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, 0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, 0x9d, 0x9e, 0x9b, 0x98, 0x91, 0x92, 0x97, 0x94, 0x85, 0x86, 0x83, 0x80, 0x89, 0x8a, 0x8f, 0x8c, 0xad, 0xae, 0xab, 0xa8, 0xa1, 0xa2, 0xa7, 0xa4, 0xb5, 0xb6, 0xb3, 0xb0, 0xb9, 0xba, 0xbf, 0xbc, 0xfd, 0xfe, 0xfb, 0xf8, 0xf1, 0xf2, 0xf7, 0xf4, 0xe5, 0xe6, 0xe3, 0xe0, 0xe9, 0xea, 0xef, 0xec, 0xcd, 0xce, 0xcb, 0xc8, 0xc1, 0xc2, 0xc7, 0xc4, 0xd5, 0xd6, 0xd3, 0xd0, 0xd9, 0xda, 0xdf, 0xdc, 0x5d, 0x5e, 0x5b, 0x58, 0x51, 0x52, 0x57, 0x54, 0x45, 0x46, 0x43, 0x40, 0x49, 0x4a, 0x4f, 0x4c, 0x6d, 0x6e, 0x6b, 0x68, 0x61, 0x62, 0x67, 0x64, 0x75, 0x76, 0x73, 0x70, 0x79, 0x7a, 0x7f, 0x7c, 0x3d, 0x3e, 0x3b, 0x38, 0x31, 0x32, 0x37, 0x34, 0x25, 0x26, 0x23, 0x20, 0x29, 0x2a, 0x2f, 0x2c, 0xd, 0xe, 0xb, 0x8, 0x1, 0x2, 0x7, 0x4, 0x15, 0x16, 0x13, 0x10, 0x19, 0x1a, 0x1f, 0x1c}, - {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c, 0x40, 0x44, 0x48, 0x4c, 0x50, 0x54, 0x58, 0x5c, 0x60, 0x64, 0x68, 0x6c, 0x70, 0x74, 0x78, 0x7c, 0x80, 0x84, 0x88, 0x8c, 0x90, 0x94, 0x98, 0x9c, 0xa0, 0xa4, 0xa8, 0xac, 0xb0, 0xb4, 0xb8, 0xbc, 0xc0, 0xc4, 0xc8, 0xcc, 0xd0, 0xd4, 0xd8, 0xdc, 0xe0, 0xe4, 0xe8, 0xec, 0xf0, 0xf4, 0xf8, 0xfc, 0x1d, 0x19, 0x15, 0x11, 0xd, 0x9, 0x5, 0x1, 0x3d, 0x39, 0x35, 0x31, 0x2d, 0x29, 0x25, 0x21, 0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, 0x7d, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, 0x9d, 0x99, 0x95, 0x91, 0x8d, 0x89, 0x85, 0x81, 0xbd, 0xb9, 0xb5, 0xb1, 0xad, 0xa9, 0xa5, 0xa1, 0xdd, 0xd9, 0xd5, 0xd1, 0xcd, 0xc9, 0xc5, 0xc1, 0xfd, 0xf9, 0xf5, 0xf1, 0xed, 0xe9, 0xe5, 0xe1, 0x3a, 0x3e, 0x32, 0x36, 0x2a, 0x2e, 0x22, 0x26, 0x1a, 0x1e, 0x12, 0x16, 0xa, 0xe, 0x2, 0x6, 0x7a, 0x7e, 0x72, 0x76, 0x6a, 0x6e, 0x62, 0x66, 0x5a, 0x5e, 0x52, 0x56, 0x4a, 0x4e, 0x42, 0x46, 0xba, 0xbe, 0xb2, 0xb6, 0xaa, 0xae, 0xa2, 0xa6, 0x9a, 0x9e, 0x92, 0x96, 0x8a, 0x8e, 0x82, 0x86, 0xfa, 0xfe, 0xf2, 0xf6, 0xea, 0xee, 0xe2, 0xe6, 0xda, 0xde, 0xd2, 0xd6, 0xca, 0xce, 0xc2, 0xc6, 0x27, 0x23, 0x2f, 0x2b, 0x37, 0x33, 0x3f, 0x3b, 0x7, 0x3, 0xf, 0xb, 0x17, 0x13, 0x1f, 0x1b, 0x67, 0x63, 0x6f, 0x6b, 0x77, 0x73, 0x7f, 0x7b, 0x47, 0x43, 0x4f, 0x4b, 0x57, 0x53, 0x5f, 0x5b, 0xa7, 0xa3, 0xaf, 0xab, 0xb7, 0xb3, 0xbf, 0xbb, 0x87, 0x83, 0x8f, 0x8b, 0x97, 0x93, 0x9f, 0x9b, 0xe7, 0xe3, 0xef, 0xeb, 0xf7, 0xf3, 0xff, 0xfb, 0xc7, 0xc3, 0xcf, 0xcb, 0xd7, 0xd3, 0xdf, 0xdb}, - {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33, 0x50, 0x55, 0x5a, 0x5f, 0x44, 0x41, 0x4e, 0x4b, 0x78, 0x7d, 0x72, 0x77, 0x6c, 0x69, 0x66, 0x63, 0xa0, 0xa5, 0xaa, 0xaf, 0xb4, 0xb1, 0xbe, 0xbb, 0x88, 0x8d, 0x82, 0x87, 0x9c, 0x99, 0x96, 0x93, 0xf0, 0xf5, 0xfa, 0xff, 0xe4, 0xe1, 0xee, 0xeb, 0xd8, 0xdd, 0xd2, 0xd7, 0xcc, 0xc9, 0xc6, 0xc3, 0x5d, 0x58, 0x57, 0x52, 0x49, 0x4c, 0x43, 0x46, 0x75, 0x70, 0x7f, 0x7a, 0x61, 0x64, 0x6b, 0x6e, 0xd, 0x8, 0x7, 0x2, 0x19, 0x1c, 0x13, 0x16, 0x25, 0x20, 0x2f, 0x2a, 0x31, 0x34, 0x3b, 0x3e, 0xfd, 0xf8, 0xf7, 0xf2, 0xe9, 0xec, 0xe3, 0xe6, 0xd5, 0xd0, 0xdf, 0xda, 0xc1, 0xc4, 0xcb, 0xce, 0xad, 0xa8, 0xa7, 0xa2, 0xb9, 0xbc, 0xb3, 0xb6, 0x85, 0x80, 0x8f, 0x8a, 0x91, 0x94, 0x9b, 0x9e, 0xba, 0xbf, 0xb0, 0xb5, 0xae, 0xab, 0xa4, 0xa1, 0x92, 0x97, 0x98, 0x9d, 0x86, 0x83, 0x8c, 0x89, 0xea, 0xef, 0xe0, 0xe5, 0xfe, 0xfb, 0xf4, 0xf1, 0xc2, 0xc7, 0xc8, 0xcd, 0xd6, 0xd3, 0xdc, 0xd9, 0x1a, 0x1f, 0x10, 0x15, 0xe, 0xb, 0x4, 0x1, 0x32, 0x37, 0x38, 0x3d, 0x26, 0x23, 0x2c, 0x29, 0x4a, 0x4f, 0x40, 0x45, 0x5e, 0x5b, 0x54, 0x51, 0x62, 0x67, 0x68, 0x6d, 0x76, 0x73, 0x7c, 0x79, 0xe7, 0xe2, 0xed, 0xe8, 0xf3, 0xf6, 0xf9, 0xfc, 0xcf, 0xca, 0xc5, 0xc0, 0xdb, 0xde, 0xd1, 0xd4, 0xb7, 0xb2, 0xbd, 0xb8, 0xa3, 0xa6, 0xa9, 0xac, 0x9f, 0x9a, 0x95, 0x90, 0x8b, 0x8e, 0x81, 0x84, 0x47, 0x42, 0x4d, 0x48, 0x53, 0x56, 0x59, 0x5c, 0x6f, 0x6a, 0x65, 0x60, 0x7b, 0x7e, 0x71, 0x74, 0x17, 0x12, 0x1d, 0x18, 0x3, 0x6, 0x9, 0xc, 0x3f, 0x3a, 0x35, 0x30, 0x2b, 0x2e, 0x21, 0x24}, - {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22, 0x60, 0x66, 0x6c, 0x6a, 0x78, 0x7e, 0x74, 0x72, 0x50, 0x56, 0x5c, 0x5a, 0x48, 0x4e, 0x44, 0x42, 0xc0, 0xc6, 0xcc, 0xca, 0xd8, 0xde, 0xd4, 0xd2, 0xf0, 0xf6, 0xfc, 0xfa, 0xe8, 0xee, 0xe4, 0xe2, 0xa0, 0xa6, 0xac, 0xaa, 0xb8, 0xbe, 0xb4, 0xb2, 0x90, 0x96, 0x9c, 0x9a, 0x88, 0x8e, 0x84, 0x82, 0x9d, 0x9b, 0x91, 0x97, 0x85, 0x83, 0x89, 0x8f, 0xad, 0xab, 0xa1, 0xa7, 0xb5, 0xb3, 0xb9, 0xbf, 0xfd, 0xfb, 0xf1, 0xf7, 0xe5, 0xe3, 0xe9, 0xef, 0xcd, 0xcb, 0xc1, 0xc7, 0xd5, 0xd3, 0xd9, 0xdf, 0x5d, 0x5b, 0x51, 0x57, 0x45, 0x43, 0x49, 0x4f, 0x6d, 0x6b, 0x61, 0x67, 0x75, 0x73, 0x79, 0x7f, 0x3d, 0x3b, 0x31, 0x37, 0x25, 0x23, 0x29, 0x2f, 0xd, 0xb, 0x1, 0x7, 0x15, 0x13, 0x19, 0x1f, 0x27, 0x21, 0x2b, 0x2d, 0x3f, 0x39, 0x33, 0x35, 0x17, 0x11, 0x1b, 0x1d, 0xf, 0x9, 0x3, 0x5, 0x47, 0x41, 0x4b, 0x4d, 0x5f, 0x59, 0x53, 0x55, 0x77, 0x71, 0x7b, 0x7d, 0x6f, 0x69, 0x63, 0x65, 0xe7, 0xe1, 0xeb, 0xed, 0xff, 0xf9, 0xf3, 0xf5, 0xd7, 0xd1, 0xdb, 0xdd, 0xcf, 0xc9, 0xc3, 0xc5, 0x87, 0x81, 0x8b, 0x8d, 0x9f, 0x99, 0x93, 0x95, 0xb7, 0xb1, 0xbb, 0xbd, 0xaf, 0xa9, 0xa3, 0xa5, 0xba, 0xbc, 0xb6, 0xb0, 0xa2, 0xa4, 0xae, 0xa8, 0x8a, 0x8c, 0x86, 0x80, 0x92, 0x94, 0x9e, 0x98, 0xda, 0xdc, 0xd6, 0xd0, 0xc2, 0xc4, 0xce, 0xc8, 0xea, 0xec, 0xe6, 0xe0, 0xf2, 0xf4, 0xfe, 0xf8, 0x7a, 0x7c, 0x76, 0x70, 0x62, 0x64, 0x6e, 0x68, 0x4a, 0x4c, 0x46, 0x40, 0x52, 0x54, 0x5e, 0x58, 0x1a, 0x1c, 0x16, 0x10, 0x2, 0x4, 0xe, 0x8, 0x2a, 0x2c, 0x26, 0x20, 0x32, 0x34, 0x3e, 0x38}, - {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d, 0x70, 0x77, 0x7e, 0x79, 0x6c, 0x6b, 0x62, 0x65, 0x48, 0x4f, 0x46, 0x41, 0x54, 0x53, 0x5a, 0x5d, 0xe0, 0xe7, 0xee, 0xe9, 0xfc, 0xfb, 0xf2, 0xf5, 0xd8, 0xdf, 0xd6, 0xd1, 0xc4, 0xc3, 0xca, 0xcd, 0x90, 0x97, 0x9e, 0x99, 0x8c, 0x8b, 0x82, 0x85, 0xa8, 0xaf, 0xa6, 0xa1, 0xb4, 0xb3, 0xba, 0xbd, 0xdd, 0xda, 0xd3, 0xd4, 0xc1, 0xc6, 0xcf, 0xc8, 0xe5, 0xe2, 0xeb, 0xec, 0xf9, 0xfe, 0xf7, 0xf0, 0xad, 0xaa, 0xa3, 0xa4, 0xb1, 0xb6, 0xbf, 0xb8, 0x95, 0x92, 0x9b, 0x9c, 0x89, 0x8e, 0x87, 0x80, 0x3d, 0x3a, 0x33, 0x34, 0x21, 0x26, 0x2f, 0x28, 0x5, 0x2, 0xb, 0xc, 0x19, 0x1e, 0x17, 0x10, 0x4d, 0x4a, 0x43, 0x44, 0x51, 0x56, 0x5f, 0x58, 0x75, 0x72, 0x7b, 0x7c, 0x69, 0x6e, 0x67, 0x60, 0xa7, 0xa0, 0xa9, 0xae, 0xbb, 0xbc, 0xb5, 0xb2, 0x9f, 0x98, 0x91, 0x96, 0x83, 0x84, 0x8d, 0x8a, 0xd7, 0xd0, 0xd9, 0xde, 0xcb, 0xcc, 0xc5, 0xc2, 0xef, 0xe8, 0xe1, 0xe6, 0xf3, 0xf4, 0xfd, 0xfa, 0x47, 0x40, 0x49, 0x4e, 0x5b, 0x5c, 0x55, 0x52, 0x7f, 0x78, 0x71, 0x76, 0x63, 0x64, 0x6d, 0x6a, 0x37, 0x30, 0x39, 0x3e, 0x2b, 0x2c, 0x25, 0x22, 0xf, 0x8, 0x1, 0x6, 0x13, 0x14, 0x1d, 0x1a, 0x7a, 0x7d, 0x74, 0x73, 0x66, 0x61, 0x68, 0x6f, 0x42, 0x45, 0x4c, 0x4b, 0x5e, 0x59, 0x50, 0x57, 0xa, 0xd, 0x4, 0x3, 0x16, 0x11, 0x18, 0x1f, 0x32, 0x35, 0x3c, 0x3b, 0x2e, 0x29, 0x20, 0x27, 0x9a, 0x9d, 0x94, 0x93, 0x86, 0x81, 0x88, 0x8f, 0xa2, 0xa5, 0xac, 0xab, 0xbe, 0xb9, 0xb0, 0xb7, 0xea, 0xed, 0xe4, 0xe3, 0xf6, 0xf1, 0xf8, 0xff, 0xd2, 0xd5, 0xdc, 0xdb, 0xce, 0xc9, 0xc0, 0xc7}, - {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78, 0x80, 0x88, 0x90, 0x98, 0xa0, 0xa8, 0xb0, 0xb8, 0xc0, 0xc8, 0xd0, 0xd8, 0xe0, 0xe8, 0xf0, 0xf8, 0x1d, 0x15, 0xd, 0x5, 0x3d, 0x35, 0x2d, 0x25, 0x5d, 0x55, 0x4d, 0x45, 0x7d, 0x75, 0x6d, 0x65, 0x9d, 0x95, 0x8d, 0x85, 0xbd, 0xb5, 0xad, 0xa5, 0xdd, 0xd5, 0xcd, 0xc5, 0xfd, 0xf5, 0xed, 0xe5, 0x3a, 0x32, 0x2a, 0x22, 0x1a, 0x12, 0xa, 0x2, 0x7a, 0x72, 0x6a, 0x62, 0x5a, 0x52, 0x4a, 0x42, 0xba, 0xb2, 0xaa, 0xa2, 0x9a, 0x92, 0x8a, 0x82, 0xfa, 0xf2, 0xea, 0xe2, 0xda, 0xd2, 0xca, 0xc2, 0x27, 0x2f, 0x37, 0x3f, 0x7, 0xf, 0x17, 0x1f, 0x67, 0x6f, 0x77, 0x7f, 0x47, 0x4f, 0x57, 0x5f, 0xa7, 0xaf, 0xb7, 0xbf, 0x87, 0x8f, 0x97, 0x9f, 0xe7, 0xef, 0xf7, 0xff, 0xc7, 0xcf, 0xd7, 0xdf, 0x74, 0x7c, 0x64, 0x6c, 0x54, 0x5c, 0x44, 0x4c, 0x34, 0x3c, 0x24, 0x2c, 0x14, 0x1c, 0x4, 0xc, 0xf4, 0xfc, 0xe4, 0xec, 0xd4, 0xdc, 0xc4, 0xcc, 0xb4, 0xbc, 0xa4, 0xac, 0x94, 0x9c, 0x84, 0x8c, 0x69, 0x61, 0x79, 0x71, 0x49, 0x41, 0x59, 0x51, 0x29, 0x21, 0x39, 0x31, 0x9, 0x1, 0x19, 0x11, 0xe9, 0xe1, 0xf9, 0xf1, 0xc9, 0xc1, 0xd9, 0xd1, 0xa9, 0xa1, 0xb9, 0xb1, 0x89, 0x81, 0x99, 0x91, 0x4e, 0x46, 0x5e, 0x56, 0x6e, 0x66, 0x7e, 0x76, 0xe, 0x6, 0x1e, 0x16, 0x2e, 0x26, 0x3e, 0x36, 0xce, 0xc6, 0xde, 0xd6, 0xee, 0xe6, 0xfe, 0xf6, 0x8e, 0x86, 0x9e, 0x96, 0xae, 0xa6, 0xbe, 0xb6, 0x53, 0x5b, 0x43, 0x4b, 0x73, 0x7b, 0x63, 0x6b, 0x13, 0x1b, 0x3, 0xb, 0x33, 0x3b, 0x23, 0x2b, 0xd3, 0xdb, 0xc3, 0xcb, 0xf3, 0xfb, 0xe3, 0xeb, 0x93, 0x9b, 0x83, 0x8b, 0xb3, 0xbb, 0xa3, 0xab}, - {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3d, 0x34, 0x2f, 0x26, 0x19, 0x10, 0xb, 0x2, 0x75, 0x7c, 0x67, 0x6e, 0x51, 0x58, 0x43, 0x4a, 0xad, 0xa4, 0xbf, 0xb6, 0x89, 0x80, 0x9b, 0x92, 0xe5, 0xec, 0xf7, 0xfe, 0xc1, 0xc8, 0xd3, 0xda, 0x7a, 0x73, 0x68, 0x61, 0x5e, 0x57, 0x4c, 0x45, 0x32, 0x3b, 0x20, 0x29, 0x16, 0x1f, 0x4, 0xd, 0xea, 0xe3, 0xf8, 0xf1, 0xce, 0xc7, 0xdc, 0xd5, 0xa2, 0xab, 0xb0, 0xb9, 0x86, 0x8f, 0x94, 0x9d, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0xf, 0x6, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0xf4, 0xfd, 0xe6, 0xef, 0xd0, 0xd9, 0xc2, 0xcb, 0xbc, 0xb5, 0xae, 0xa7, 0x98, 0x91, 0x8a, 0x83, 0x64, 0x6d, 0x76, 0x7f, 0x40, 0x49, 0x52, 0x5b, 0x2c, 0x25, 0x3e, 0x37, 0x8, 0x1, 0x1a, 0x13, 0xc9, 0xc0, 0xdb, 0xd2, 0xed, 0xe4, 0xff, 0xf6, 0x81, 0x88, 0x93, 0x9a, 0xa5, 0xac, 0xb7, 0xbe, 0x59, 0x50, 0x4b, 0x42, 0x7d, 0x74, 0x6f, 0x66, 0x11, 0x18, 0x3, 0xa, 0x35, 0x3c, 0x27, 0x2e, 0x8e, 0x87, 0x9c, 0x95, 0xaa, 0xa3, 0xb8, 0xb1, 0xc6, 0xcf, 0xd4, 0xdd, 0xe2, 0xeb, 0xf0, 0xf9, 0x1e, 0x17, 0xc, 0x5, 0x3a, 0x33, 0x28, 0x21, 0x56, 0x5f, 0x44, 0x4d, 0x72, 0x7b, 0x60, 0x69, 0xb3, 0xba, 0xa1, 0xa8, 0x97, 0x9e, 0x85, 0x8c, 0xfb, 0xf2, 0xe9, 0xe0, 0xdf, 0xd6, 0xcd, 0xc4, 0x23, 0x2a, 0x31, 0x38, 0x7, 0xe, 0x15, 0x1c, 0x6b, 0x62, 0x79, 0x70, 0x4f, 0x46, 0x5d, 0x54}, - {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66, 0xa0, 0xaa, 0xb4, 0xbe, 0x88, 0x82, 0x9c, 0x96, 0xf0, 0xfa, 0xe4, 0xee, 0xd8, 0xd2, 0xcc, 0xc6, 0x5d, 0x57, 0x49, 0x43, 0x75, 0x7f, 0x61, 0x6b, 0xd, 0x7, 0x19, 0x13, 0x25, 0x2f, 0x31, 0x3b, 0xfd, 0xf7, 0xe9, 0xe3, 0xd5, 0xdf, 0xc1, 0xcb, 0xad, 0xa7, 0xb9, 0xb3, 0x85, 0x8f, 0x91, 0x9b, 0xba, 0xb0, 0xae, 0xa4, 0x92, 0x98, 0x86, 0x8c, 0xea, 0xe0, 0xfe, 0xf4, 0xc2, 0xc8, 0xd6, 0xdc, 0x1a, 0x10, 0xe, 0x4, 0x32, 0x38, 0x26, 0x2c, 0x4a, 0x40, 0x5e, 0x54, 0x62, 0x68, 0x76, 0x7c, 0xe7, 0xed, 0xf3, 0xf9, 0xcf, 0xc5, 0xdb, 0xd1, 0xb7, 0xbd, 0xa3, 0xa9, 0x9f, 0x95, 0x8b, 0x81, 0x47, 0x4d, 0x53, 0x59, 0x6f, 0x65, 0x7b, 0x71, 0x17, 0x1d, 0x3, 0x9, 0x3f, 0x35, 0x2b, 0x21, 0x69, 0x63, 0x7d, 0x77, 0x41, 0x4b, 0x55, 0x5f, 0x39, 0x33, 0x2d, 0x27, 0x11, 0x1b, 0x5, 0xf, 0xc9, 0xc3, 0xdd, 0xd7, 0xe1, 0xeb, 0xf5, 0xff, 0x99, 0x93, 0x8d, 0x87, 0xb1, 0xbb, 0xa5, 0xaf, 0x34, 0x3e, 0x20, 0x2a, 0x1c, 0x16, 0x8, 0x2, 0x64, 0x6e, 0x70, 0x7a, 0x4c, 0x46, 0x58, 0x52, 0x94, 0x9e, 0x80, 0x8a, 0xbc, 0xb6, 0xa8, 0xa2, 0xc4, 0xce, 0xd0, 0xda, 0xec, 0xe6, 0xf8, 0xf2, 0xd3, 0xd9, 0xc7, 0xcd, 0xfb, 0xf1, 0xef, 0xe5, 0x83, 0x89, 0x97, 0x9d, 0xab, 0xa1, 0xbf, 0xb5, 0x73, 0x79, 0x67, 0x6d, 0x5b, 0x51, 0x4f, 0x45, 0x23, 0x29, 0x37, 0x3d, 0xb, 0x1, 0x1f, 0x15, 0x8e, 0x84, 0x9a, 0x90, 0xa6, 0xac, 0xb2, 0xb8, 0xde, 0xd4, 0xca, 0xc0, 0xf6, 0xfc, 0xe2, 0xe8, 0x2e, 0x24, 0x3a, 0x30, 0x6, 0xc, 0x12, 0x18, 0x7e, 0x74, 0x6a, 0x60, 0x56, 0x5c, 0x42, 0x48}, - {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7d, 0x76, 0x6b, 0x60, 0x51, 0x5a, 0x47, 0x4c, 0x25, 0x2e, 0x33, 0x38, 0x9, 0x2, 0x1f, 0x14, 0xcd, 0xc6, 0xdb, 0xd0, 0xe1, 0xea, 0xf7, 0xfc, 0x95, 0x9e, 0x83, 0x88, 0xb9, 0xb2, 0xaf, 0xa4, 0xfa, 0xf1, 0xec, 0xe7, 0xd6, 0xdd, 0xc0, 0xcb, 0xa2, 0xa9, 0xb4, 0xbf, 0x8e, 0x85, 0x98, 0x93, 0x4a, 0x41, 0x5c, 0x57, 0x66, 0x6d, 0x70, 0x7b, 0x12, 0x19, 0x4, 0xf, 0x3e, 0x35, 0x28, 0x23, 0x87, 0x8c, 0x91, 0x9a, 0xab, 0xa0, 0xbd, 0xb6, 0xdf, 0xd4, 0xc9, 0xc2, 0xf3, 0xf8, 0xe5, 0xee, 0x37, 0x3c, 0x21, 0x2a, 0x1b, 0x10, 0xd, 0x6, 0x6f, 0x64, 0x79, 0x72, 0x43, 0x48, 0x55, 0x5e, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0x1, 0xa, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x94, 0x9f, 0x82, 0x89, 0xb8, 0xb3, 0xae, 0xa5, 0xcc, 0xc7, 0xda, 0xd1, 0xe0, 0xeb, 0xf6, 0xfd, 0x24, 0x2f, 0x32, 0x39, 0x8, 0x3, 0x1e, 0x15, 0x7c, 0x77, 0x6a, 0x61, 0x50, 0x5b, 0x46, 0x4d, 0x13, 0x18, 0x5, 0xe, 0x3f, 0x34, 0x29, 0x22, 0x4b, 0x40, 0x5d, 0x56, 0x67, 0x6c, 0x71, 0x7a, 0xa3, 0xa8, 0xb5, 0xbe, 0x8f, 0x84, 0x99, 0x92, 0xfb, 0xf0, 0xed, 0xe6, 0xd7, 0xdc, 0xc1, 0xca, 0x6e, 0x65, 0x78, 0x73, 0x42, 0x49, 0x54, 0x5f, 0x36, 0x3d, 0x20, 0x2b, 0x1a, 0x11, 0xc, 0x7, 0xde, 0xd5, 0xc8, 0xc3, 0xf2, 0xf9, 0xe4, 0xef, 0x86, 0x8d, 0x90, 0x9b, 0xaa, 0xa1, 0xbc, 0xb7}, - {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44, 0xc0, 0xcc, 0xd8, 0xd4, 0xf0, 0xfc, 0xe8, 0xe4, 0xa0, 0xac, 0xb8, 0xb4, 0x90, 0x9c, 0x88, 0x84, 0x9d, 0x91, 0x85, 0x89, 0xad, 0xa1, 0xb5, 0xb9, 0xfd, 0xf1, 0xe5, 0xe9, 0xcd, 0xc1, 0xd5, 0xd9, 0x5d, 0x51, 0x45, 0x49, 0x6d, 0x61, 0x75, 0x79, 0x3d, 0x31, 0x25, 0x29, 0xd, 0x1, 0x15, 0x19, 0x27, 0x2b, 0x3f, 0x33, 0x17, 0x1b, 0xf, 0x3, 0x47, 0x4b, 0x5f, 0x53, 0x77, 0x7b, 0x6f, 0x63, 0xe7, 0xeb, 0xff, 0xf3, 0xd7, 0xdb, 0xcf, 0xc3, 0x87, 0x8b, 0x9f, 0x93, 0xb7, 0xbb, 0xaf, 0xa3, 0xba, 0xb6, 0xa2, 0xae, 0x8a, 0x86, 0x92, 0x9e, 0xda, 0xd6, 0xc2, 0xce, 0xea, 0xe6, 0xf2, 0xfe, 0x7a, 0x76, 0x62, 0x6e, 0x4a, 0x46, 0x52, 0x5e, 0x1a, 0x16, 0x2, 0xe, 0x2a, 0x26, 0x32, 0x3e, 0x4e, 0x42, 0x56, 0x5a, 0x7e, 0x72, 0x66, 0x6a, 0x2e, 0x22, 0x36, 0x3a, 0x1e, 0x12, 0x6, 0xa, 0x8e, 0x82, 0x96, 0x9a, 0xbe, 0xb2, 0xa6, 0xaa, 0xee, 0xe2, 0xf6, 0xfa, 0xde, 0xd2, 0xc6, 0xca, 0xd3, 0xdf, 0xcb, 0xc7, 0xe3, 0xef, 0xfb, 0xf7, 0xb3, 0xbf, 0xab, 0xa7, 0x83, 0x8f, 0x9b, 0x97, 0x13, 0x1f, 0xb, 0x7, 0x23, 0x2f, 0x3b, 0x37, 0x73, 0x7f, 0x6b, 0x67, 0x43, 0x4f, 0x5b, 0x57, 0x69, 0x65, 0x71, 0x7d, 0x59, 0x55, 0x41, 0x4d, 0x9, 0x5, 0x11, 0x1d, 0x39, 0x35, 0x21, 0x2d, 0xa9, 0xa5, 0xb1, 0xbd, 0x99, 0x95, 0x81, 0x8d, 0xc9, 0xc5, 0xd1, 0xdd, 0xf9, 0xf5, 0xe1, 0xed, 0xf4, 0xf8, 0xec, 0xe0, 0xc4, 0xc8, 0xdc, 0xd0, 0x94, 0x98, 0x8c, 0x80, 0xa4, 0xa8, 0xbc, 0xb0, 0x34, 0x38, 0x2c, 0x20, 0x4, 0x8, 0x1c, 0x10, 0x54, 0x58, 0x4c, 0x40, 0x64, 0x68, 0x7c, 0x70}, - {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x5, 0x8, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0xf, 0x2, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0xa, 0x7, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0xce, 0xc3, 0xd4, 0xd9, 0xfa, 0xf7, 0xe0, 0xed, 0xa6, 0xab, 0xbc, 0xb1, 0x92, 0x9f, 0x88, 0x85, 0x1e, 0x13, 0x4, 0x9, 0x2a, 0x27, 0x30, 0x3d, 0x76, 0x7b, 0x6c, 0x61, 0x42, 0x4f, 0x58, 0x55, 0x73, 0x7e, 0x69, 0x64, 0x47, 0x4a, 0x5d, 0x50, 0x1b, 0x16, 0x1, 0xc, 0x2f, 0x22, 0x35, 0x38, 0xa3, 0xae, 0xb9, 0xb4, 0x97, 0x9a, 0x8d, 0x80, 0xcb, 0xc6, 0xd1, 0xdc, 0xff, 0xf2, 0xe5, 0xe8, 0xa9, 0xa4, 0xb3, 0xbe, 0x9d, 0x90, 0x87, 0x8a, 0xc1, 0xcc, 0xdb, 0xd6, 0xf5, 0xf8, 0xef, 0xe2, 0x79, 0x74, 0x63, 0x6e, 0x4d, 0x40, 0x57, 0x5a, 0x11, 0x1c, 0xb, 0x6, 0x25, 0x28, 0x3f, 0x32, 0x14, 0x19, 0xe, 0x3, 0x20, 0x2d, 0x3a, 0x37, 0x7c, 0x71, 0x66, 0x6b, 0x48, 0x45, 0x52, 0x5f, 0xc4, 0xc9, 0xde, 0xd3, 0xf0, 0xfd, 0xea, 0xe7, 0xac, 0xa1, 0xb6, 0xbb, 0x98, 0x95, 0x82, 0x8f}, - {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0x3d, 0x33, 0x21, 0x2f, 0x5, 0xb, 0x19, 0x17, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0x37, 0x39, 0x2b, 0x25, 0xf, 0x1, 0x13, 0x1d, 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0xa, 0x4, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x53, 0x5d, 0x4f, 0x41, 0x6b, 0x65, 0x77, 0x79, 0x23, 0x2d, 0x3f, 0x31, 0x1b, 0x15, 0x7, 0x9, 0xb3, 0xbd, 0xaf, 0xa1, 0x8b, 0x85, 0x97, 0x99, 0xc3, 0xcd, 0xdf, 0xd1, 0xfb, 0xf5, 0xe7, 0xe9, 0x8e, 0x80, 0x92, 0x9c, 0xb6, 0xb8, 0xaa, 0xa4, 0xfe, 0xf0, 0xe2, 0xec, 0xc6, 0xc8, 0xda, 0xd4, 0x6e, 0x60, 0x72, 0x7c, 0x56, 0x58, 0x4a, 0x44, 0x1e, 0x10, 0x2, 0xc, 0x26, 0x28, 0x3a, 0x34, 0xf4, 0xfa, 0xe8, 0xe6, 0xcc, 0xc2, 0xd0, 0xde, 0x84, 0x8a, 0x98, 0x96, 0xbc, 0xb2, 0xa0, 0xae, 0x14, 0x1a, 0x8, 0x6, 0x2c, 0x22, 0x30, 0x3e, 0x64, 0x6a, 0x78, 0x76, 0x5c, 0x52, 0x40, 0x4e, 0x29, 0x27, 0x35, 0x3b, 0x11, 0x1f, 0xd, 0x3, 0x59, 0x57, 0x45, 0x4b, 0x61, 0x6f, 0x7d, 0x73, 0xc9, 0xc7, 0xd5, 0xdb, 0xf1, 0xff, 0xed, 0xe3, 0xb9, 0xb7, 0xa5, 0xab, 0x81, 0x8f, 0x9d, 0x93}, - {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55, 0xf0, 0xff, 0xee, 0xe1, 0xcc, 0xc3, 0xd2, 0xdd, 0x88, 0x87, 0x96, 0x99, 0xb4, 0xbb, 0xaa, 0xa5, 0xfd, 0xf2, 0xe3, 0xec, 0xc1, 0xce, 0xdf, 0xd0, 0x85, 0x8a, 0x9b, 0x94, 0xb9, 0xb6, 0xa7, 0xa8, 0xd, 0x2, 0x13, 0x1c, 0x31, 0x3e, 0x2f, 0x20, 0x75, 0x7a, 0x6b, 0x64, 0x49, 0x46, 0x57, 0x58, 0xe7, 0xe8, 0xf9, 0xf6, 0xdb, 0xd4, 0xc5, 0xca, 0x9f, 0x90, 0x81, 0x8e, 0xa3, 0xac, 0xbd, 0xb2, 0x17, 0x18, 0x9, 0x6, 0x2b, 0x24, 0x35, 0x3a, 0x6f, 0x60, 0x71, 0x7e, 0x53, 0x5c, 0x4d, 0x42, 0x1a, 0x15, 0x4, 0xb, 0x26, 0x29, 0x38, 0x37, 0x62, 0x6d, 0x7c, 0x73, 0x5e, 0x51, 0x40, 0x4f, 0xea, 0xe5, 0xf4, 0xfb, 0xd6, 0xd9, 0xc8, 0xc7, 0x92, 0x9d, 0x8c, 0x83, 0xae, 0xa1, 0xb0, 0xbf, 0xd3, 0xdc, 0xcd, 0xc2, 0xef, 0xe0, 0xf1, 0xfe, 0xab, 0xa4, 0xb5, 0xba, 0x97, 0x98, 0x89, 0x86, 0x23, 0x2c, 0x3d, 0x32, 0x1f, 0x10, 0x1, 0xe, 0x5b, 0x54, 0x45, 0x4a, 0x67, 0x68, 0x79, 0x76, 0x2e, 0x21, 0x30, 0x3f, 0x12, 0x1d, 0xc, 0x3, 0x56, 0x59, 0x48, 0x47, 0x6a, 0x65, 0x74, 0x7b, 0xde, 0xd1, 0xc0, 0xcf, 0xe2, 0xed, 0xfc, 0xf3, 0xa6, 0xa9, 0xb8, 0xb7, 0x9a, 0x95, 0x84, 0x8b, 0x34, 0x3b, 0x2a, 0x25, 0x8, 0x7, 0x16, 0x19, 0x4c, 0x43, 0x52, 0x5d, 0x70, 0x7f, 0x6e, 0x61, 0xc4, 0xcb, 0xda, 0xd5, 0xf8, 0xf7, 0xe6, 0xe9, 0xbc, 0xb3, 0xa2, 0xad, 0x80, 0x8f, 0x9e, 0x91, 0xc9, 0xc6, 0xd7, 0xd8, 0xf5, 0xfa, 0xeb, 0xe4, 0xb1, 0xbe, 0xaf, 0xa0, 0x8d, 0x82, 0x93, 0x9c, 0x39, 0x36, 0x27, 0x28, 0x5, 0xa, 0x1b, 0x14, 0x41, 0x4e, 0x5f, 0x50, 0x7d, 0x72, 0x63, 0x6c}, - {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0, 0x1d, 0xd, 0x3d, 0x2d, 0x5d, 0x4d, 0x7d, 0x6d, 0x9d, 0x8d, 0xbd, 0xad, 0xdd, 0xcd, 0xfd, 0xed, 0x3a, 0x2a, 0x1a, 0xa, 0x7a, 0x6a, 0x5a, 0x4a, 0xba, 0xaa, 0x9a, 0x8a, 0xfa, 0xea, 0xda, 0xca, 0x27, 0x37, 0x7, 0x17, 0x67, 0x77, 0x47, 0x57, 0xa7, 0xb7, 0x87, 0x97, 0xe7, 0xf7, 0xc7, 0xd7, 0x74, 0x64, 0x54, 0x44, 0x34, 0x24, 0x14, 0x4, 0xf4, 0xe4, 0xd4, 0xc4, 0xb4, 0xa4, 0x94, 0x84, 0x69, 0x79, 0x49, 0x59, 0x29, 0x39, 0x9, 0x19, 0xe9, 0xf9, 0xc9, 0xd9, 0xa9, 0xb9, 0x89, 0x99, 0x4e, 0x5e, 0x6e, 0x7e, 0xe, 0x1e, 0x2e, 0x3e, 0xce, 0xde, 0xee, 0xfe, 0x8e, 0x9e, 0xae, 0xbe, 0x53, 0x43, 0x73, 0x63, 0x13, 0x3, 0x33, 0x23, 0xd3, 0xc3, 0xf3, 0xe3, 0x93, 0x83, 0xb3, 0xa3, 0xe8, 0xf8, 0xc8, 0xd8, 0xa8, 0xb8, 0x88, 0x98, 0x68, 0x78, 0x48, 0x58, 0x28, 0x38, 0x8, 0x18, 0xf5, 0xe5, 0xd5, 0xc5, 0xb5, 0xa5, 0x95, 0x85, 0x75, 0x65, 0x55, 0x45, 0x35, 0x25, 0x15, 0x5, 0xd2, 0xc2, 0xf2, 0xe2, 0x92, 0x82, 0xb2, 0xa2, 0x52, 0x42, 0x72, 0x62, 0x12, 0x2, 0x32, 0x22, 0xcf, 0xdf, 0xef, 0xff, 0x8f, 0x9f, 0xaf, 0xbf, 0x4f, 0x5f, 0x6f, 0x7f, 0xf, 0x1f, 0x2f, 0x3f, 0x9c, 0x8c, 0xbc, 0xac, 0xdc, 0xcc, 0xfc, 0xec, 0x1c, 0xc, 0x3c, 0x2c, 0x5c, 0x4c, 0x7c, 0x6c, 0x81, 0x91, 0xa1, 0xb1, 0xc1, 0xd1, 0xe1, 0xf1, 0x1, 0x11, 0x21, 0x31, 0x41, 0x51, 0x61, 0x71, 0xa6, 0xb6, 0x86, 0x96, 0xe6, 0xf6, 0xc6, 0xd6, 0x26, 0x36, 0x6, 0x16, 0x66, 0x76, 0x46, 0x56, 0xbb, 0xab, 0x9b, 0x8b, 0xfb, 0xeb, 0xdb, 0xcb, 0x3b, 0x2b, 0x1b, 0xb, 0x7b, 0x6b, 0x5b, 0x4b}, - {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0xd, 0x1c, 0x2f, 0x3e, 0x49, 0x58, 0x6b, 0x7a, 0x85, 0x94, 0xa7, 0xb6, 0xc1, 0xd0, 0xe3, 0xf2, 0x1a, 0xb, 0x38, 0x29, 0x5e, 0x4f, 0x7c, 0x6d, 0x92, 0x83, 0xb0, 0xa1, 0xd6, 0xc7, 0xf4, 0xe5, 0x17, 0x6, 0x35, 0x24, 0x53, 0x42, 0x71, 0x60, 0x9f, 0x8e, 0xbd, 0xac, 0xdb, 0xca, 0xf9, 0xe8, 0x34, 0x25, 0x16, 0x7, 0x70, 0x61, 0x52, 0x43, 0xbc, 0xad, 0x9e, 0x8f, 0xf8, 0xe9, 0xda, 0xcb, 0x39, 0x28, 0x1b, 0xa, 0x7d, 0x6c, 0x5f, 0x4e, 0xb1, 0xa0, 0x93, 0x82, 0xf5, 0xe4, 0xd7, 0xc6, 0x2e, 0x3f, 0xc, 0x1d, 0x6a, 0x7b, 0x48, 0x59, 0xa6, 0xb7, 0x84, 0x95, 0xe2, 0xf3, 0xc0, 0xd1, 0x23, 0x32, 0x1, 0x10, 0x67, 0x76, 0x45, 0x54, 0xab, 0xba, 0x89, 0x98, 0xef, 0xfe, 0xcd, 0xdc, 0x68, 0x79, 0x4a, 0x5b, 0x2c, 0x3d, 0xe, 0x1f, 0xe0, 0xf1, 0xc2, 0xd3, 0xa4, 0xb5, 0x86, 0x97, 0x65, 0x74, 0x47, 0x56, 0x21, 0x30, 0x3, 0x12, 0xed, 0xfc, 0xcf, 0xde, 0xa9, 0xb8, 0x8b, 0x9a, 0x72, 0x63, 0x50, 0x41, 0x36, 0x27, 0x14, 0x5, 0xfa, 0xeb, 0xd8, 0xc9, 0xbe, 0xaf, 0x9c, 0x8d, 0x7f, 0x6e, 0x5d, 0x4c, 0x3b, 0x2a, 0x19, 0x8, 0xf7, 0xe6, 0xd5, 0xc4, 0xb3, 0xa2, 0x91, 0x80, 0x5c, 0x4d, 0x7e, 0x6f, 0x18, 0x9, 0x3a, 0x2b, 0xd4, 0xc5, 0xf6, 0xe7, 0x90, 0x81, 0xb2, 0xa3, 0x51, 0x40, 0x73, 0x62, 0x15, 0x4, 0x37, 0x26, 0xd9, 0xc8, 0xfb, 0xea, 0x9d, 0x8c, 0xbf, 0xae, 0x46, 0x57, 0x64, 0x75, 0x2, 0x13, 0x20, 0x31, 0xce, 0xdf, 0xec, 0xfd, 0x8a, 0x9b, 0xa8, 0xb9, 0x4b, 0x5a, 0x69, 0x78, 0xf, 0x1e, 0x2d, 0x3c, 0xc3, 0xd2, 0xe1, 0xf0, 0x87, 0x96, 0xa5, 0xb4}, - {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee, 0x3d, 0x2f, 0x19, 0xb, 0x75, 0x67, 0x51, 0x43, 0xad, 0xbf, 0x89, 0x9b, 0xe5, 0xf7, 0xc1, 0xd3, 0x7a, 0x68, 0x5e, 0x4c, 0x32, 0x20, 0x16, 0x4, 0xea, 0xf8, 0xce, 0xdc, 0xa2, 0xb0, 0x86, 0x94, 0x47, 0x55, 0x63, 0x71, 0xf, 0x1d, 0x2b, 0x39, 0xd7, 0xc5, 0xf3, 0xe1, 0x9f, 0x8d, 0xbb, 0xa9, 0xf4, 0xe6, 0xd0, 0xc2, 0xbc, 0xae, 0x98, 0x8a, 0x64, 0x76, 0x40, 0x52, 0x2c, 0x3e, 0x8, 0x1a, 0xc9, 0xdb, 0xed, 0xff, 0x81, 0x93, 0xa5, 0xb7, 0x59, 0x4b, 0x7d, 0x6f, 0x11, 0x3, 0x35, 0x27, 0x8e, 0x9c, 0xaa, 0xb8, 0xc6, 0xd4, 0xe2, 0xf0, 0x1e, 0xc, 0x3a, 0x28, 0x56, 0x44, 0x72, 0x60, 0xb3, 0xa1, 0x97, 0x85, 0xfb, 0xe9, 0xdf, 0xcd, 0x23, 0x31, 0x7, 0x15, 0x6b, 0x79, 0x4f, 0x5d, 0xf5, 0xe7, 0xd1, 0xc3, 0xbd, 0xaf, 0x99, 0x8b, 0x65, 0x77, 0x41, 0x53, 0x2d, 0x3f, 0x9, 0x1b, 0xc8, 0xda, 0xec, 0xfe, 0x80, 0x92, 0xa4, 0xb6, 0x58, 0x4a, 0x7c, 0x6e, 0x10, 0x2, 0x34, 0x26, 0x8f, 0x9d, 0xab, 0xb9, 0xc7, 0xd5, 0xe3, 0xf1, 0x1f, 0xd, 0x3b, 0x29, 0x57, 0x45, 0x73, 0x61, 0xb2, 0xa0, 0x96, 0x84, 0xfa, 0xe8, 0xde, 0xcc, 0x22, 0x30, 0x6, 0x14, 0x6a, 0x78, 0x4e, 0x5c, 0x1, 0x13, 0x25, 0x37, 0x49, 0x5b, 0x6d, 0x7f, 0x91, 0x83, 0xb5, 0xa7, 0xd9, 0xcb, 0xfd, 0xef, 0x3c, 0x2e, 0x18, 0xa, 0x74, 0x66, 0x50, 0x42, 0xac, 0xbe, 0x88, 0x9a, 0xe4, 0xf6, 0xc0, 0xd2, 0x7b, 0x69, 0x5f, 0x4d, 0x33, 0x21, 0x17, 0x5, 0xeb, 0xf9, 0xcf, 0xdd, 0xa3, 0xb1, 0x87, 0x95, 0x46, 0x54, 0x62, 0x70, 0xe, 0x1c, 0x2a, 0x38, 0xd6, 0xc4, 0xf2, 0xe0, 0x9e, 0x8c, 0xba, 0xa8}, - {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1, 0x2d, 0x3e, 0xb, 0x18, 0x61, 0x72, 0x47, 0x54, 0xb5, 0xa6, 0x93, 0x80, 0xf9, 0xea, 0xdf, 0xcc, 0x5a, 0x49, 0x7c, 0x6f, 0x16, 0x5, 0x30, 0x23, 0xc2, 0xd1, 0xe4, 0xf7, 0x8e, 0x9d, 0xa8, 0xbb, 0x77, 0x64, 0x51, 0x42, 0x3b, 0x28, 0x1d, 0xe, 0xef, 0xfc, 0xc9, 0xda, 0xa3, 0xb0, 0x85, 0x96, 0xb4, 0xa7, 0x92, 0x81, 0xf8, 0xeb, 0xde, 0xcd, 0x2c, 0x3f, 0xa, 0x19, 0x60, 0x73, 0x46, 0x55, 0x99, 0x8a, 0xbf, 0xac, 0xd5, 0xc6, 0xf3, 0xe0, 0x1, 0x12, 0x27, 0x34, 0x4d, 0x5e, 0x6b, 0x78, 0xee, 0xfd, 0xc8, 0xdb, 0xa2, 0xb1, 0x84, 0x97, 0x76, 0x65, 0x50, 0x43, 0x3a, 0x29, 0x1c, 0xf, 0xc3, 0xd0, 0xe5, 0xf6, 0x8f, 0x9c, 0xa9, 0xba, 0x5b, 0x48, 0x7d, 0x6e, 0x17, 0x4, 0x31, 0x22, 0x75, 0x66, 0x53, 0x40, 0x39, 0x2a, 0x1f, 0xc, 0xed, 0xfe, 0xcb, 0xd8, 0xa1, 0xb2, 0x87, 0x94, 0x58, 0x4b, 0x7e, 0x6d, 0x14, 0x7, 0x32, 0x21, 0xc0, 0xd3, 0xe6, 0xf5, 0x8c, 0x9f, 0xaa, 0xb9, 0x2f, 0x3c, 0x9, 0x1a, 0x63, 0x70, 0x45, 0x56, 0xb7, 0xa4, 0x91, 0x82, 0xfb, 0xe8, 0xdd, 0xce, 0x2, 0x11, 0x24, 0x37, 0x4e, 0x5d, 0x68, 0x7b, 0x9a, 0x89, 0xbc, 0xaf, 0xd6, 0xc5, 0xf0, 0xe3, 0xc1, 0xd2, 0xe7, 0xf4, 0x8d, 0x9e, 0xab, 0xb8, 0x59, 0x4a, 0x7f, 0x6c, 0x15, 0x6, 0x33, 0x20, 0xec, 0xff, 0xca, 0xd9, 0xa0, 0xb3, 0x86, 0x95, 0x74, 0x67, 0x52, 0x41, 0x38, 0x2b, 0x1e, 0xd, 0x9b, 0x88, 0xbd, 0xae, 0xd7, 0xc4, 0xf1, 0xe2, 0x3, 0x10, 0x25, 0x36, 0x4f, 0x5c, 0x69, 0x7a, 0xb6, 0xa5, 0x90, 0x83, 0xfa, 0xe9, 0xdc, 0xcf, 0x2e, 0x3d, 0x8, 0x1b, 0x62, 0x71, 0x44, 0x57}, - {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc, 0x5d, 0x49, 0x75, 0x61, 0xd, 0x19, 0x25, 0x31, 0xfd, 0xe9, 0xd5, 0xc1, 0xad, 0xb9, 0x85, 0x91, 0xba, 0xae, 0x92, 0x86, 0xea, 0xfe, 0xc2, 0xd6, 0x1a, 0xe, 0x32, 0x26, 0x4a, 0x5e, 0x62, 0x76, 0xe7, 0xf3, 0xcf, 0xdb, 0xb7, 0xa3, 0x9f, 0x8b, 0x47, 0x53, 0x6f, 0x7b, 0x17, 0x3, 0x3f, 0x2b, 0x69, 0x7d, 0x41, 0x55, 0x39, 0x2d, 0x11, 0x5, 0xc9, 0xdd, 0xe1, 0xf5, 0x99, 0x8d, 0xb1, 0xa5, 0x34, 0x20, 0x1c, 0x8, 0x64, 0x70, 0x4c, 0x58, 0x94, 0x80, 0xbc, 0xa8, 0xc4, 0xd0, 0xec, 0xf8, 0xd3, 0xc7, 0xfb, 0xef, 0x83, 0x97, 0xab, 0xbf, 0x73, 0x67, 0x5b, 0x4f, 0x23, 0x37, 0xb, 0x1f, 0x8e, 0x9a, 0xa6, 0xb2, 0xde, 0xca, 0xf6, 0xe2, 0x2e, 0x3a, 0x6, 0x12, 0x7e, 0x6a, 0x56, 0x42, 0xd2, 0xc6, 0xfa, 0xee, 0x82, 0x96, 0xaa, 0xbe, 0x72, 0x66, 0x5a, 0x4e, 0x22, 0x36, 0xa, 0x1e, 0x8f, 0x9b, 0xa7, 0xb3, 0xdf, 0xcb, 0xf7, 0xe3, 0x2f, 0x3b, 0x7, 0x13, 0x7f, 0x6b, 0x57, 0x43, 0x68, 0x7c, 0x40, 0x54, 0x38, 0x2c, 0x10, 0x4, 0xc8, 0xdc, 0xe0, 0xf4, 0x98, 0x8c, 0xb0, 0xa4, 0x35, 0x21, 0x1d, 0x9, 0x65, 0x71, 0x4d, 0x59, 0x95, 0x81, 0xbd, 0xa9, 0xc5, 0xd1, 0xed, 0xf9, 0xbb, 0xaf, 0x93, 0x87, 0xeb, 0xff, 0xc3, 0xd7, 0x1b, 0xf, 0x33, 0x27, 0x4b, 0x5f, 0x63, 0x77, 0xe6, 0xf2, 0xce, 0xda, 0xb6, 0xa2, 0x9e, 0x8a, 0x46, 0x52, 0x6e, 0x7a, 0x16, 0x2, 0x3e, 0x2a, 0x1, 0x15, 0x29, 0x3d, 0x51, 0x45, 0x79, 0x6d, 0xa1, 0xb5, 0x89, 0x9d, 0xf1, 0xe5, 0xd9, 0xcd, 0x5c, 0x48, 0x74, 0x60, 0xc, 0x18, 0x24, 0x30, 0xfc, 0xe8, 0xd4, 0xc0, 0xac, 0xb8, 0x84, 0x90}, - {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3, 0x4d, 0x58, 0x67, 0x72, 0x19, 0xc, 0x33, 0x26, 0xe5, 0xf0, 0xcf, 0xda, 0xb1, 0xa4, 0x9b, 0x8e, 0x9a, 0x8f, 0xb0, 0xa5, 0xce, 0xdb, 0xe4, 0xf1, 0x32, 0x27, 0x18, 0xd, 0x66, 0x73, 0x4c, 0x59, 0xd7, 0xc2, 0xfd, 0xe8, 0x83, 0x96, 0xa9, 0xbc, 0x7f, 0x6a, 0x55, 0x40, 0x2b, 0x3e, 0x1, 0x14, 0x29, 0x3c, 0x3, 0x16, 0x7d, 0x68, 0x57, 0x42, 0x81, 0x94, 0xab, 0xbe, 0xd5, 0xc0, 0xff, 0xea, 0x64, 0x71, 0x4e, 0x5b, 0x30, 0x25, 0x1a, 0xf, 0xcc, 0xd9, 0xe6, 0xf3, 0x98, 0x8d, 0xb2, 0xa7, 0xb3, 0xa6, 0x99, 0x8c, 0xe7, 0xf2, 0xcd, 0xd8, 0x1b, 0xe, 0x31, 0x24, 0x4f, 0x5a, 0x65, 0x70, 0xfe, 0xeb, 0xd4, 0xc1, 0xaa, 0xbf, 0x80, 0x95, 0x56, 0x43, 0x7c, 0x69, 0x2, 0x17, 0x28, 0x3d, 0x52, 0x47, 0x78, 0x6d, 0x6, 0x13, 0x2c, 0x39, 0xfa, 0xef, 0xd0, 0xc5, 0xae, 0xbb, 0x84, 0x91, 0x1f, 0xa, 0x35, 0x20, 0x4b, 0x5e, 0x61, 0x74, 0xb7, 0xa2, 0x9d, 0x88, 0xe3, 0xf6, 0xc9, 0xdc, 0xc8, 0xdd, 0xe2, 0xf7, 0x9c, 0x89, 0xb6, 0xa3, 0x60, 0x75, 0x4a, 0x5f, 0x34, 0x21, 0x1e, 0xb, 0x85, 0x90, 0xaf, 0xba, 0xd1, 0xc4, 0xfb, 0xee, 0x2d, 0x38, 0x7, 0x12, 0x79, 0x6c, 0x53, 0x46, 0x7b, 0x6e, 0x51, 0x44, 0x2f, 0x3a, 0x5, 0x10, 0xd3, 0xc6, 0xf9, 0xec, 0x87, 0x92, 0xad, 0xb8, 0x36, 0x23, 0x1c, 0x9, 0x62, 0x77, 0x48, 0x5d, 0x9e, 0x8b, 0xb4, 0xa1, 0xca, 0xdf, 0xe0, 0xf5, 0xe1, 0xf4, 0xcb, 0xde, 0xb5, 0xa0, 0x9f, 0x8a, 0x49, 0x5c, 0x63, 0x76, 0x1d, 0x8, 0x37, 0x22, 0xac, 0xb9, 0x86, 0x93, 0xf8, 0xed, 0xd2, 0xc7, 0x4, 0x11, 0x2e, 0x3b, 0x50, 0x45, 0x7a, 0x6f}, - {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2, 0x7d, 0x6b, 0x51, 0x47, 0x25, 0x33, 0x9, 0x1f, 0xcd, 0xdb, 0xe1, 0xf7, 0x95, 0x83, 0xb9, 0xaf, 0xfa, 0xec, 0xd6, 0xc0, 0xa2, 0xb4, 0x8e, 0x98, 0x4a, 0x5c, 0x66, 0x70, 0x12, 0x4, 0x3e, 0x28, 0x87, 0x91, 0xab, 0xbd, 0xdf, 0xc9, 0xf3, 0xe5, 0x37, 0x21, 0x1b, 0xd, 0x6f, 0x79, 0x43, 0x55, 0xe9, 0xff, 0xc5, 0xd3, 0xb1, 0xa7, 0x9d, 0x8b, 0x59, 0x4f, 0x75, 0x63, 0x1, 0x17, 0x2d, 0x3b, 0x94, 0x82, 0xb8, 0xae, 0xcc, 0xda, 0xe0, 0xf6, 0x24, 0x32, 0x8, 0x1e, 0x7c, 0x6a, 0x50, 0x46, 0x13, 0x5, 0x3f, 0x29, 0x4b, 0x5d, 0x67, 0x71, 0xa3, 0xb5, 0x8f, 0x99, 0xfb, 0xed, 0xd7, 0xc1, 0x6e, 0x78, 0x42, 0x54, 0x36, 0x20, 0x1a, 0xc, 0xde, 0xc8, 0xf2, 0xe4, 0x86, 0x90, 0xaa, 0xbc, 0xcf, 0xd9, 0xe3, 0xf5, 0x97, 0x81, 0xbb, 0xad, 0x7f, 0x69, 0x53, 0x45, 0x27, 0x31, 0xb, 0x1d, 0xb2, 0xa4, 0x9e, 0x88, 0xea, 0xfc, 0xc6, 0xd0, 0x2, 0x14, 0x2e, 0x38, 0x5a, 0x4c, 0x76, 0x60, 0x35, 0x23, 0x19, 0xf, 0x6d, 0x7b, 0x41, 0x57, 0x85, 0x93, 0xa9, 0xbf, 0xdd, 0xcb, 0xf1, 0xe7, 0x48, 0x5e, 0x64, 0x72, 0x10, 0x6, 0x3c, 0x2a, 0xf8, 0xee, 0xd4, 0xc2, 0xa0, 0xb6, 0x8c, 0x9a, 0x26, 0x30, 0xa, 0x1c, 0x7e, 0x68, 0x52, 0x44, 0x96, 0x80, 0xba, 0xac, 0xce, 0xd8, 0xe2, 0xf4, 0x5b, 0x4d, 0x77, 0x61, 0x3, 0x15, 0x2f, 0x39, 0xeb, 0xfd, 0xc7, 0xd1, 0xb3, 0xa5, 0x9f, 0x89, 0xdc, 0xca, 0xf0, 0xe6, 0x84, 0x92, 0xa8, 0xbe, 0x6c, 0x7a, 0x40, 0x56, 0x34, 0x22, 0x18, 0xe, 0xa1, 0xb7, 0x8d, 0x9b, 0xf9, 0xef, 0xd5, 0xc3, 0x11, 0x7, 0x3d, 0x2b, 0x49, 0x5f, 0x65, 0x73}, - {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd, 0x6d, 0x7a, 0x43, 0x54, 0x31, 0x26, 0x1f, 0x8, 0xd5, 0xc2, 0xfb, 0xec, 0x89, 0x9e, 0xa7, 0xb0, 0xda, 0xcd, 0xf4, 0xe3, 0x86, 0x91, 0xa8, 0xbf, 0x62, 0x75, 0x4c, 0x5b, 0x3e, 0x29, 0x10, 0x7, 0xb7, 0xa0, 0x99, 0x8e, 0xeb, 0xfc, 0xc5, 0xd2, 0xf, 0x18, 0x21, 0x36, 0x53, 0x44, 0x7d, 0x6a, 0xa9, 0xbe, 0x87, 0x90, 0xf5, 0xe2, 0xdb, 0xcc, 0x11, 0x6, 0x3f, 0x28, 0x4d, 0x5a, 0x63, 0x74, 0xc4, 0xd3, 0xea, 0xfd, 0x98, 0x8f, 0xb6, 0xa1, 0x7c, 0x6b, 0x52, 0x45, 0x20, 0x37, 0xe, 0x19, 0x73, 0x64, 0x5d, 0x4a, 0x2f, 0x38, 0x1, 0x16, 0xcb, 0xdc, 0xe5, 0xf2, 0x97, 0x80, 0xb9, 0xae, 0x1e, 0x9, 0x30, 0x27, 0x42, 0x55, 0x6c, 0x7b, 0xa6, 0xb1, 0x88, 0x9f, 0xfa, 0xed, 0xd4, 0xc3, 0x4f, 0x58, 0x61, 0x76, 0x13, 0x4, 0x3d, 0x2a, 0xf7, 0xe0, 0xd9, 0xce, 0xab, 0xbc, 0x85, 0x92, 0x22, 0x35, 0xc, 0x1b, 0x7e, 0x69, 0x50, 0x47, 0x9a, 0x8d, 0xb4, 0xa3, 0xc6, 0xd1, 0xe8, 0xff, 0x95, 0x82, 0xbb, 0xac, 0xc9, 0xde, 0xe7, 0xf0, 0x2d, 0x3a, 0x3, 0x14, 0x71, 0x66, 0x5f, 0x48, 0xf8, 0xef, 0xd6, 0xc1, 0xa4, 0xb3, 0x8a, 0x9d, 0x40, 0x57, 0x6e, 0x79, 0x1c, 0xb, 0x32, 0x25, 0xe6, 0xf1, 0xc8, 0xdf, 0xba, 0xad, 0x94, 0x83, 0x5e, 0x49, 0x70, 0x67, 0x2, 0x15, 0x2c, 0x3b, 0x8b, 0x9c, 0xa5, 0xb2, 0xd7, 0xc0, 0xf9, 0xee, 0x33, 0x24, 0x1d, 0xa, 0x6f, 0x78, 0x41, 0x56, 0x3c, 0x2b, 0x12, 0x5, 0x60, 0x77, 0x4e, 0x59, 0x84, 0x93, 0xaa, 0xbd, 0xd8, 0xcf, 0xf6, 0xe1, 0x51, 0x46, 0x7f, 0x68, 0xd, 0x1a, 0x23, 0x34, 0xe9, 0xfe, 0xc7, 0xd0, 0xb5, 0xa2, 0x9b, 0x8c}, - {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88, 0x9d, 0x85, 0xad, 0xb5, 0xfd, 0xe5, 0xcd, 0xd5, 0x5d, 0x45, 0x6d, 0x75, 0x3d, 0x25, 0xd, 0x15, 0x27, 0x3f, 0x17, 0xf, 0x47, 0x5f, 0x77, 0x6f, 0xe7, 0xff, 0xd7, 0xcf, 0x87, 0x9f, 0xb7, 0xaf, 0xba, 0xa2, 0x8a, 0x92, 0xda, 0xc2, 0xea, 0xf2, 0x7a, 0x62, 0x4a, 0x52, 0x1a, 0x2, 0x2a, 0x32, 0x4e, 0x56, 0x7e, 0x66, 0x2e, 0x36, 0x1e, 0x6, 0x8e, 0x96, 0xbe, 0xa6, 0xee, 0xf6, 0xde, 0xc6, 0xd3, 0xcb, 0xe3, 0xfb, 0xb3, 0xab, 0x83, 0x9b, 0x13, 0xb, 0x23, 0x3b, 0x73, 0x6b, 0x43, 0x5b, 0x69, 0x71, 0x59, 0x41, 0x9, 0x11, 0x39, 0x21, 0xa9, 0xb1, 0x99, 0x81, 0xc9, 0xd1, 0xf9, 0xe1, 0xf4, 0xec, 0xc4, 0xdc, 0x94, 0x8c, 0xa4, 0xbc, 0x34, 0x2c, 0x4, 0x1c, 0x54, 0x4c, 0x64, 0x7c, 0x9c, 0x84, 0xac, 0xb4, 0xfc, 0xe4, 0xcc, 0xd4, 0x5c, 0x44, 0x6c, 0x74, 0x3c, 0x24, 0xc, 0x14, 0x1, 0x19, 0x31, 0x29, 0x61, 0x79, 0x51, 0x49, 0xc1, 0xd9, 0xf1, 0xe9, 0xa1, 0xb9, 0x91, 0x89, 0xbb, 0xa3, 0x8b, 0x93, 0xdb, 0xc3, 0xeb, 0xf3, 0x7b, 0x63, 0x4b, 0x53, 0x1b, 0x3, 0x2b, 0x33, 0x26, 0x3e, 0x16, 0xe, 0x46, 0x5e, 0x76, 0x6e, 0xe6, 0xfe, 0xd6, 0xce, 0x86, 0x9e, 0xb6, 0xae, 0xd2, 0xca, 0xe2, 0xfa, 0xb2, 0xaa, 0x82, 0x9a, 0x12, 0xa, 0x22, 0x3a, 0x72, 0x6a, 0x42, 0x5a, 0x4f, 0x57, 0x7f, 0x67, 0x2f, 0x37, 0x1f, 0x7, 0x8f, 0x97, 0xbf, 0xa7, 0xef, 0xf7, 0xdf, 0xc7, 0xf5, 0xed, 0xc5, 0xdd, 0x95, 0x8d, 0xa5, 0xbd, 0x35, 0x2d, 0x5, 0x1d, 0x55, 0x4d, 0x65, 0x7d, 0x68, 0x70, 0x58, 0x40, 0x8, 0x10, 0x38, 0x20, 0xa8, 0xb0, 0x98, 0x80, 0xc8, 0xd0, 0xf8, 0xe0}, - {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87, 0x8d, 0x94, 0xbf, 0xa6, 0xe9, 0xf0, 0xdb, 0xc2, 0x45, 0x5c, 0x77, 0x6e, 0x21, 0x38, 0x13, 0xa, 0x7, 0x1e, 0x35, 0x2c, 0x63, 0x7a, 0x51, 0x48, 0xcf, 0xd6, 0xfd, 0xe4, 0xab, 0xb2, 0x99, 0x80, 0x8a, 0x93, 0xb8, 0xa1, 0xee, 0xf7, 0xdc, 0xc5, 0x42, 0x5b, 0x70, 0x69, 0x26, 0x3f, 0x14, 0xd, 0xe, 0x17, 0x3c, 0x25, 0x6a, 0x73, 0x58, 0x41, 0xc6, 0xdf, 0xf4, 0xed, 0xa2, 0xbb, 0x90, 0x89, 0x83, 0x9a, 0xb1, 0xa8, 0xe7, 0xfe, 0xd5, 0xcc, 0x4b, 0x52, 0x79, 0x60, 0x2f, 0x36, 0x1d, 0x4, 0x9, 0x10, 0x3b, 0x22, 0x6d, 0x74, 0x5f, 0x46, 0xc1, 0xd8, 0xf3, 0xea, 0xa5, 0xbc, 0x97, 0x8e, 0x84, 0x9d, 0xb6, 0xaf, 0xe0, 0xf9, 0xd2, 0xcb, 0x4c, 0x55, 0x7e, 0x67, 0x28, 0x31, 0x1a, 0x3, 0x1c, 0x5, 0x2e, 0x37, 0x78, 0x61, 0x4a, 0x53, 0xd4, 0xcd, 0xe6, 0xff, 0xb0, 0xa9, 0x82, 0x9b, 0x91, 0x88, 0xa3, 0xba, 0xf5, 0xec, 0xc7, 0xde, 0x59, 0x40, 0x6b, 0x72, 0x3d, 0x24, 0xf, 0x16, 0x1b, 0x2, 0x29, 0x30, 0x7f, 0x66, 0x4d, 0x54, 0xd3, 0xca, 0xe1, 0xf8, 0xb7, 0xae, 0x85, 0x9c, 0x96, 0x8f, 0xa4, 0xbd, 0xf2, 0xeb, 0xc0, 0xd9, 0x5e, 0x47, 0x6c, 0x75, 0x3a, 0x23, 0x8, 0x11, 0x12, 0xb, 0x20, 0x39, 0x76, 0x6f, 0x44, 0x5d, 0xda, 0xc3, 0xe8, 0xf1, 0xbe, 0xa7, 0x8c, 0x95, 0x9f, 0x86, 0xad, 0xb4, 0xfb, 0xe2, 0xc9, 0xd0, 0x57, 0x4e, 0x65, 0x7c, 0x33, 0x2a, 0x1, 0x18, 0x15, 0xc, 0x27, 0x3e, 0x71, 0x68, 0x43, 0x5a, 0xdd, 0xc4, 0xef, 0xf6, 0xb9, 0xa0, 0x8b, 0x92, 0x98, 0x81, 0xaa, 0xb3, 0xfc, 0xe5, 0xce, 0xd7, 0x50, 0x49, 0x62, 0x7b, 0x34, 0x2d, 0x6, 0x1f}, - {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96, 0xbd, 0xa7, 0x89, 0x93, 0xd5, 0xcf, 0xe1, 0xfb, 0x6d, 0x77, 0x59, 0x43, 0x5, 0x1f, 0x31, 0x2b, 0x67, 0x7d, 0x53, 0x49, 0xf, 0x15, 0x3b, 0x21, 0xb7, 0xad, 0x83, 0x99, 0xdf, 0xc5, 0xeb, 0xf1, 0xda, 0xc0, 0xee, 0xf4, 0xb2, 0xa8, 0x86, 0x9c, 0xa, 0x10, 0x3e, 0x24, 0x62, 0x78, 0x56, 0x4c, 0xce, 0xd4, 0xfa, 0xe0, 0xa6, 0xbc, 0x92, 0x88, 0x1e, 0x4, 0x2a, 0x30, 0x76, 0x6c, 0x42, 0x58, 0x73, 0x69, 0x47, 0x5d, 0x1b, 0x1, 0x2f, 0x35, 0xa3, 0xb9, 0x97, 0x8d, 0xcb, 0xd1, 0xff, 0xe5, 0xa9, 0xb3, 0x9d, 0x87, 0xc1, 0xdb, 0xf5, 0xef, 0x79, 0x63, 0x4d, 0x57, 0x11, 0xb, 0x25, 0x3f, 0x14, 0xe, 0x20, 0x3a, 0x7c, 0x66, 0x48, 0x52, 0xc4, 0xde, 0xf0, 0xea, 0xac, 0xb6, 0x98, 0x82, 0x81, 0x9b, 0xb5, 0xaf, 0xe9, 0xf3, 0xdd, 0xc7, 0x51, 0x4b, 0x65, 0x7f, 0x39, 0x23, 0xd, 0x17, 0x3c, 0x26, 0x8, 0x12, 0x54, 0x4e, 0x60, 0x7a, 0xec, 0xf6, 0xd8, 0xc2, 0x84, 0x9e, 0xb0, 0xaa, 0xe6, 0xfc, 0xd2, 0xc8, 0x8e, 0x94, 0xba, 0xa0, 0x36, 0x2c, 0x2, 0x18, 0x5e, 0x44, 0x6a, 0x70, 0x5b, 0x41, 0x6f, 0x75, 0x33, 0x29, 0x7, 0x1d, 0x8b, 0x91, 0xbf, 0xa5, 0xe3, 0xf9, 0xd7, 0xcd, 0x4f, 0x55, 0x7b, 0x61, 0x27, 0x3d, 0x13, 0x9, 0x9f, 0x85, 0xab, 0xb1, 0xf7, 0xed, 0xc3, 0xd9, 0xf2, 0xe8, 0xc6, 0xdc, 0x9a, 0x80, 0xae, 0xb4, 0x22, 0x38, 0x16, 0xc, 0x4a, 0x50, 0x7e, 0x64, 0x28, 0x32, 0x1c, 0x6, 0x40, 0x5a, 0x74, 0x6e, 0xf8, 0xe2, 0xcc, 0xd6, 0x90, 0x8a, 0xa4, 0xbe, 0x95, 0x8f, 0xa1, 0xbb, 0xfd, 0xe7, 0xc9, 0xd3, 0x45, 0x5f, 0x71, 0x6b, 0x2d, 0x37, 0x19, 0x3}, - {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99, 0xad, 0xb6, 0x9b, 0x80, 0xc1, 0xda, 0xf7, 0xec, 0x75, 0x6e, 0x43, 0x58, 0x19, 0x2, 0x2f, 0x34, 0x47, 0x5c, 0x71, 0x6a, 0x2b, 0x30, 0x1d, 0x6, 0x9f, 0x84, 0xa9, 0xb2, 0xf3, 0xe8, 0xc5, 0xde, 0xea, 0xf1, 0xdc, 0xc7, 0x86, 0x9d, 0xb0, 0xab, 0x32, 0x29, 0x4, 0x1f, 0x5e, 0x45, 0x68, 0x73, 0x8e, 0x95, 0xb8, 0xa3, 0xe2, 0xf9, 0xd4, 0xcf, 0x56, 0x4d, 0x60, 0x7b, 0x3a, 0x21, 0xc, 0x17, 0x23, 0x38, 0x15, 0xe, 0x4f, 0x54, 0x79, 0x62, 0xfb, 0xe0, 0xcd, 0xd6, 0x97, 0x8c, 0xa1, 0xba, 0xc9, 0xd2, 0xff, 0xe4, 0xa5, 0xbe, 0x93, 0x88, 0x11, 0xa, 0x27, 0x3c, 0x7d, 0x66, 0x4b, 0x50, 0x64, 0x7f, 0x52, 0x49, 0x8, 0x13, 0x3e, 0x25, 0xbc, 0xa7, 0x8a, 0x91, 0xd0, 0xcb, 0xe6, 0xfd, 0x1, 0x1a, 0x37, 0x2c, 0x6d, 0x76, 0x5b, 0x40, 0xd9, 0xc2, 0xef, 0xf4, 0xb5, 0xae, 0x83, 0x98, 0xac, 0xb7, 0x9a, 0x81, 0xc0, 0xdb, 0xf6, 0xed, 0x74, 0x6f, 0x42, 0x59, 0x18, 0x3, 0x2e, 0x35, 0x46, 0x5d, 0x70, 0x6b, 0x2a, 0x31, 0x1c, 0x7, 0x9e, 0x85, 0xa8, 0xb3, 0xf2, 0xe9, 0xc4, 0xdf, 0xeb, 0xf0, 0xdd, 0xc6, 0x87, 0x9c, 0xb1, 0xaa, 0x33, 0x28, 0x5, 0x1e, 0x5f, 0x44, 0x69, 0x72, 0x8f, 0x94, 0xb9, 0xa2, 0xe3, 0xf8, 0xd5, 0xce, 0x57, 0x4c, 0x61, 0x7a, 0x3b, 0x20, 0xd, 0x16, 0x22, 0x39, 0x14, 0xf, 0x4e, 0x55, 0x78, 0x63, 0xfa, 0xe1, 0xcc, 0xd7, 0x96, 0x8d, 0xa0, 0xbb, 0xc8, 0xd3, 0xfe, 0xe5, 0xa4, 0xbf, 0x92, 0x89, 0x10, 0xb, 0x26, 0x3d, 0x7c, 0x67, 0x4a, 0x51, 0x65, 0x7e, 0x53, 0x48, 0x9, 0x12, 0x3f, 0x24, 0xbd, 0xa6, 0x8b, 0x90, 0xd1, 0xca, 0xe7, 0xfc}, - {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4, 0xdd, 0xc1, 0xe5, 0xf9, 0xad, 0xb1, 0x95, 0x89, 0x3d, 0x21, 0x5, 0x19, 0x4d, 0x51, 0x75, 0x69, 0xa7, 0xbb, 0x9f, 0x83, 0xd7, 0xcb, 0xef, 0xf3, 0x47, 0x5b, 0x7f, 0x63, 0x37, 0x2b, 0xf, 0x13, 0x7a, 0x66, 0x42, 0x5e, 0xa, 0x16, 0x32, 0x2e, 0x9a, 0x86, 0xa2, 0xbe, 0xea, 0xf6, 0xd2, 0xce, 0x53, 0x4f, 0x6b, 0x77, 0x23, 0x3f, 0x1b, 0x7, 0xb3, 0xaf, 0x8b, 0x97, 0xc3, 0xdf, 0xfb, 0xe7, 0x8e, 0x92, 0xb6, 0xaa, 0xfe, 0xe2, 0xc6, 0xda, 0x6e, 0x72, 0x56, 0x4a, 0x1e, 0x2, 0x26, 0x3a, 0xf4, 0xe8, 0xcc, 0xd0, 0x84, 0x98, 0xbc, 0xa0, 0x14, 0x8, 0x2c, 0x30, 0x64, 0x78, 0x5c, 0x40, 0x29, 0x35, 0x11, 0xd, 0x59, 0x45, 0x61, 0x7d, 0xc9, 0xd5, 0xf1, 0xed, 0xb9, 0xa5, 0x81, 0x9d, 0xa6, 0xba, 0x9e, 0x82, 0xd6, 0xca, 0xee, 0xf2, 0x46, 0x5a, 0x7e, 0x62, 0x36, 0x2a, 0xe, 0x12, 0x7b, 0x67, 0x43, 0x5f, 0xb, 0x17, 0x33, 0x2f, 0x9b, 0x87, 0xa3, 0xbf, 0xeb, 0xf7, 0xd3, 0xcf, 0x1, 0x1d, 0x39, 0x25, 0x71, 0x6d, 0x49, 0x55, 0xe1, 0xfd, 0xd9, 0xc5, 0x91, 0x8d, 0xa9, 0xb5, 0xdc, 0xc0, 0xe4, 0xf8, 0xac, 0xb0, 0x94, 0x88, 0x3c, 0x20, 0x4, 0x18, 0x4c, 0x50, 0x74, 0x68, 0xf5, 0xe9, 0xcd, 0xd1, 0x85, 0x99, 0xbd, 0xa1, 0x15, 0x9, 0x2d, 0x31, 0x65, 0x79, 0x5d, 0x41, 0x28, 0x34, 0x10, 0xc, 0x58, 0x44, 0x60, 0x7c, 0xc8, 0xd4, 0xf0, 0xec, 0xb8, 0xa4, 0x80, 0x9c, 0x52, 0x4e, 0x6a, 0x76, 0x22, 0x3e, 0x1a, 0x6, 0xb2, 0xae, 0x8a, 0x96, 0xc2, 0xde, 0xfa, 0xe6, 0x8f, 0x93, 0xb7, 0xab, 0xff, 0xe3, 0xc7, 0xdb, 0x6f, 0x73, 0x57, 0x4b, 0x1f, 0x3, 0x27, 0x3b}, - {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb, 0xcd, 0xd0, 0xf7, 0xea, 0xb9, 0xa4, 0x83, 0x9e, 0x25, 0x38, 0x1f, 0x2, 0x51, 0x4c, 0x6b, 0x76, 0x87, 0x9a, 0xbd, 0xa0, 0xf3, 0xee, 0xc9, 0xd4, 0x6f, 0x72, 0x55, 0x48, 0x1b, 0x6, 0x21, 0x3c, 0x4a, 0x57, 0x70, 0x6d, 0x3e, 0x23, 0x4, 0x19, 0xa2, 0xbf, 0x98, 0x85, 0xd6, 0xcb, 0xec, 0xf1, 0x13, 0xe, 0x29, 0x34, 0x67, 0x7a, 0x5d, 0x40, 0xfb, 0xe6, 0xc1, 0xdc, 0x8f, 0x92, 0xb5, 0xa8, 0xde, 0xc3, 0xe4, 0xf9, 0xaa, 0xb7, 0x90, 0x8d, 0x36, 0x2b, 0xc, 0x11, 0x42, 0x5f, 0x78, 0x65, 0x94, 0x89, 0xae, 0xb3, 0xe0, 0xfd, 0xda, 0xc7, 0x7c, 0x61, 0x46, 0x5b, 0x8, 0x15, 0x32, 0x2f, 0x59, 0x44, 0x63, 0x7e, 0x2d, 0x30, 0x17, 0xa, 0xb1, 0xac, 0x8b, 0x96, 0xc5, 0xd8, 0xff, 0xe2, 0x26, 0x3b, 0x1c, 0x1, 0x52, 0x4f, 0x68, 0x75, 0xce, 0xd3, 0xf4, 0xe9, 0xba, 0xa7, 0x80, 0x9d, 0xeb, 0xf6, 0xd1, 0xcc, 0x9f, 0x82, 0xa5, 0xb8, 0x3, 0x1e, 0x39, 0x24, 0x77, 0x6a, 0x4d, 0x50, 0xa1, 0xbc, 0x9b, 0x86, 0xd5, 0xc8, 0xef, 0xf2, 0x49, 0x54, 0x73, 0x6e, 0x3d, 0x20, 0x7, 0x1a, 0x6c, 0x71, 0x56, 0x4b, 0x18, 0x5, 0x22, 0x3f, 0x84, 0x99, 0xbe, 0xa3, 0xf0, 0xed, 0xca, 0xd7, 0x35, 0x28, 0xf, 0x12, 0x41, 0x5c, 0x7b, 0x66, 0xdd, 0xc0, 0xe7, 0xfa, 0xa9, 0xb4, 0x93, 0x8e, 0xf8, 0xe5, 0xc2, 0xdf, 0x8c, 0x91, 0xb6, 0xab, 0x10, 0xd, 0x2a, 0x37, 0x64, 0x79, 0x5e, 0x43, 0xb2, 0xaf, 0x88, 0x95, 0xc6, 0xdb, 0xfc, 0xe1, 0x5a, 0x47, 0x60, 0x7d, 0x2e, 0x33, 0x14, 0x9, 0x7f, 0x62, 0x45, 0x58, 0xb, 0x16, 0x31, 0x2c, 0x97, 0x8a, 0xad, 0xb0, 0xe3, 0xfe, 0xd9, 0xc4}, - {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa, 0xfd, 0xe3, 0xc1, 0xdf, 0x85, 0x9b, 0xb9, 0xa7, 0xd, 0x13, 0x31, 0x2f, 0x75, 0x6b, 0x49, 0x57, 0xe7, 0xf9, 0xdb, 0xc5, 0x9f, 0x81, 0xa3, 0xbd, 0x17, 0x9, 0x2b, 0x35, 0x6f, 0x71, 0x53, 0x4d, 0x1a, 0x4, 0x26, 0x38, 0x62, 0x7c, 0x5e, 0x40, 0xea, 0xf4, 0xd6, 0xc8, 0x92, 0x8c, 0xae, 0xb0, 0xd3, 0xcd, 0xef, 0xf1, 0xab, 0xb5, 0x97, 0x89, 0x23, 0x3d, 0x1f, 0x1, 0x5b, 0x45, 0x67, 0x79, 0x2e, 0x30, 0x12, 0xc, 0x56, 0x48, 0x6a, 0x74, 0xde, 0xc0, 0xe2, 0xfc, 0xa6, 0xb8, 0x9a, 0x84, 0x34, 0x2a, 0x8, 0x16, 0x4c, 0x52, 0x70, 0x6e, 0xc4, 0xda, 0xf8, 0xe6, 0xbc, 0xa2, 0x80, 0x9e, 0xc9, 0xd7, 0xf5, 0xeb, 0xb1, 0xaf, 0x8d, 0x93, 0x39, 0x27, 0x5, 0x1b, 0x41, 0x5f, 0x7d, 0x63, 0xbb, 0xa5, 0x87, 0x99, 0xc3, 0xdd, 0xff, 0xe1, 0x4b, 0x55, 0x77, 0x69, 0x33, 0x2d, 0xf, 0x11, 0x46, 0x58, 0x7a, 0x64, 0x3e, 0x20, 0x2, 0x1c, 0xb6, 0xa8, 0x8a, 0x94, 0xce, 0xd0, 0xf2, 0xec, 0x5c, 0x42, 0x60, 0x7e, 0x24, 0x3a, 0x18, 0x6, 0xac, 0xb2, 0x90, 0x8e, 0xd4, 0xca, 0xe8, 0xf6, 0xa1, 0xbf, 0x9d, 0x83, 0xd9, 0xc7, 0xe5, 0xfb, 0x51, 0x4f, 0x6d, 0x73, 0x29, 0x37, 0x15, 0xb, 0x68, 0x76, 0x54, 0x4a, 0x10, 0xe, 0x2c, 0x32, 0x98, 0x86, 0xa4, 0xba, 0xe0, 0xfe, 0xdc, 0xc2, 0x95, 0x8b, 0xa9, 0xb7, 0xed, 0xf3, 0xd1, 0xcf, 0x65, 0x7b, 0x59, 0x47, 0x1d, 0x3, 0x21, 0x3f, 0x8f, 0x91, 0xb3, 0xad, 0xf7, 0xe9, 0xcb, 0xd5, 0x7f, 0x61, 0x43, 0x5d, 0x7, 0x19, 0x3b, 0x25, 0x72, 0x6c, 0x4e, 0x50, 0xa, 0x14, 0x36, 0x28, 0x82, 0x9c, 0xbe, 0xa0, 0xfa, 0xe4, 0xc6, 0xd8}, - {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5, 0xed, 0xf2, 0xd3, 0xcc, 0x91, 0x8e, 0xaf, 0xb0, 0x15, 0xa, 0x2b, 0x34, 0x69, 0x76, 0x57, 0x48, 0xc7, 0xd8, 0xf9, 0xe6, 0xbb, 0xa4, 0x85, 0x9a, 0x3f, 0x20, 0x1, 0x1e, 0x43, 0x5c, 0x7d, 0x62, 0x2a, 0x35, 0x14, 0xb, 0x56, 0x49, 0x68, 0x77, 0xd2, 0xcd, 0xec, 0xf3, 0xae, 0xb1, 0x90, 0x8f, 0x93, 0x8c, 0xad, 0xb2, 0xef, 0xf0, 0xd1, 0xce, 0x6b, 0x74, 0x55, 0x4a, 0x17, 0x8, 0x29, 0x36, 0x7e, 0x61, 0x40, 0x5f, 0x2, 0x1d, 0x3c, 0x23, 0x86, 0x99, 0xb8, 0xa7, 0xfa, 0xe5, 0xc4, 0xdb, 0x54, 0x4b, 0x6a, 0x75, 0x28, 0x37, 0x16, 0x9, 0xac, 0xb3, 0x92, 0x8d, 0xd0, 0xcf, 0xee, 0xf1, 0xb9, 0xa6, 0x87, 0x98, 0xc5, 0xda, 0xfb, 0xe4, 0x41, 0x5e, 0x7f, 0x60, 0x3d, 0x22, 0x3, 0x1c, 0x3b, 0x24, 0x5, 0x1a, 0x47, 0x58, 0x79, 0x66, 0xc3, 0xdc, 0xfd, 0xe2, 0xbf, 0xa0, 0x81, 0x9e, 0xd6, 0xc9, 0xe8, 0xf7, 0xaa, 0xb5, 0x94, 0x8b, 0x2e, 0x31, 0x10, 0xf, 0x52, 0x4d, 0x6c, 0x73, 0xfc, 0xe3, 0xc2, 0xdd, 0x80, 0x9f, 0xbe, 0xa1, 0x4, 0x1b, 0x3a, 0x25, 0x78, 0x67, 0x46, 0x59, 0x11, 0xe, 0x2f, 0x30, 0x6d, 0x72, 0x53, 0x4c, 0xe9, 0xf6, 0xd7, 0xc8, 0x95, 0x8a, 0xab, 0xb4, 0xa8, 0xb7, 0x96, 0x89, 0xd4, 0xcb, 0xea, 0xf5, 0x50, 0x4f, 0x6e, 0x71, 0x2c, 0x33, 0x12, 0xd, 0x45, 0x5a, 0x7b, 0x64, 0x39, 0x26, 0x7, 0x18, 0xbd, 0xa2, 0x83, 0x9c, 0xc1, 0xde, 0xff, 0xe0, 0x6f, 0x70, 0x51, 0x4e, 0x13, 0xc, 0x2d, 0x32, 0x97, 0x88, 0xa9, 0xb6, 0xeb, 0xf4, 0xd5, 0xca, 0x82, 0x9d, 0xbc, 0xa3, 0xfe, 0xe1, 0xc0, 0xdf, 0x7a, 0x65, 0x44, 0x5b, 0x6, 0x19, 0x38, 0x27}, - {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd, 0x3a, 0x1a, 0x7a, 0x5a, 0xba, 0x9a, 0xfa, 0xda, 0x27, 0x7, 0x67, 0x47, 0xa7, 0x87, 0xe7, 0xc7, 0x74, 0x54, 0x34, 0x14, 0xf4, 0xd4, 0xb4, 0x94, 0x69, 0x49, 0x29, 0x9, 0xe9, 0xc9, 0xa9, 0x89, 0x4e, 0x6e, 0xe, 0x2e, 0xce, 0xee, 0x8e, 0xae, 0x53, 0x73, 0x13, 0x33, 0xd3, 0xf3, 0x93, 0xb3, 0xe8, 0xc8, 0xa8, 0x88, 0x68, 0x48, 0x28, 0x8, 0xf5, 0xd5, 0xb5, 0x95, 0x75, 0x55, 0x35, 0x15, 0xd2, 0xf2, 0x92, 0xb2, 0x52, 0x72, 0x12, 0x32, 0xcf, 0xef, 0x8f, 0xaf, 0x4f, 0x6f, 0xf, 0x2f, 0x9c, 0xbc, 0xdc, 0xfc, 0x1c, 0x3c, 0x5c, 0x7c, 0x81, 0xa1, 0xc1, 0xe1, 0x1, 0x21, 0x41, 0x61, 0xa6, 0x86, 0xe6, 0xc6, 0x26, 0x6, 0x66, 0x46, 0xbb, 0x9b, 0xfb, 0xdb, 0x3b, 0x1b, 0x7b, 0x5b, 0xcd, 0xed, 0x8d, 0xad, 0x4d, 0x6d, 0xd, 0x2d, 0xd0, 0xf0, 0x90, 0xb0, 0x50, 0x70, 0x10, 0x30, 0xf7, 0xd7, 0xb7, 0x97, 0x77, 0x57, 0x37, 0x17, 0xea, 0xca, 0xaa, 0x8a, 0x6a, 0x4a, 0x2a, 0xa, 0xb9, 0x99, 0xf9, 0xd9, 0x39, 0x19, 0x79, 0x59, 0xa4, 0x84, 0xe4, 0xc4, 0x24, 0x4, 0x64, 0x44, 0x83, 0xa3, 0xc3, 0xe3, 0x3, 0x23, 0x43, 0x63, 0x9e, 0xbe, 0xde, 0xfe, 0x1e, 0x3e, 0x5e, 0x7e, 0x25, 0x5, 0x65, 0x45, 0xa5, 0x85, 0xe5, 0xc5, 0x38, 0x18, 0x78, 0x58, 0xb8, 0x98, 0xf8, 0xd8, 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff, 0x2, 0x22, 0x42, 0x62, 0x82, 0xa2, 0xc2, 0xe2, 0x51, 0x71, 0x11, 0x31, 0xd1, 0xf1, 0x91, 0xb1, 0x4c, 0x6c, 0xc, 0x2c, 0xcc, 0xec, 0x8c, 0xac, 0x6b, 0x4b, 0x2b, 0xb, 0xeb, 0xcb, 0xab, 0x8b, 0x76, 0x56, 0x36, 0x16, 0xf6, 0xd6, 0xb6, 0x96}, - {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2, 0x2a, 0xb, 0x68, 0x49, 0xae, 0x8f, 0xec, 0xcd, 0x3f, 0x1e, 0x7d, 0x5c, 0xbb, 0x9a, 0xf9, 0xd8, 0x54, 0x75, 0x16, 0x37, 0xd0, 0xf1, 0x92, 0xb3, 0x41, 0x60, 0x3, 0x22, 0xc5, 0xe4, 0x87, 0xa6, 0x7e, 0x5f, 0x3c, 0x1d, 0xfa, 0xdb, 0xb8, 0x99, 0x6b, 0x4a, 0x29, 0x8, 0xef, 0xce, 0xad, 0x8c, 0xa8, 0x89, 0xea, 0xcb, 0x2c, 0xd, 0x6e, 0x4f, 0xbd, 0x9c, 0xff, 0xde, 0x39, 0x18, 0x7b, 0x5a, 0x82, 0xa3, 0xc0, 0xe1, 0x6, 0x27, 0x44, 0x65, 0x97, 0xb6, 0xd5, 0xf4, 0x13, 0x32, 0x51, 0x70, 0xfc, 0xdd, 0xbe, 0x9f, 0x78, 0x59, 0x3a, 0x1b, 0xe9, 0xc8, 0xab, 0x8a, 0x6d, 0x4c, 0x2f, 0xe, 0xd6, 0xf7, 0x94, 0xb5, 0x52, 0x73, 0x10, 0x31, 0xc3, 0xe2, 0x81, 0xa0, 0x47, 0x66, 0x5, 0x24, 0x4d, 0x6c, 0xf, 0x2e, 0xc9, 0xe8, 0x8b, 0xaa, 0x58, 0x79, 0x1a, 0x3b, 0xdc, 0xfd, 0x9e, 0xbf, 0x67, 0x46, 0x25, 0x4, 0xe3, 0xc2, 0xa1, 0x80, 0x72, 0x53, 0x30, 0x11, 0xf6, 0xd7, 0xb4, 0x95, 0x19, 0x38, 0x5b, 0x7a, 0x9d, 0xbc, 0xdf, 0xfe, 0xc, 0x2d, 0x4e, 0x6f, 0x88, 0xa9, 0xca, 0xeb, 0x33, 0x12, 0x71, 0x50, 0xb7, 0x96, 0xf5, 0xd4, 0x26, 0x7, 0x64, 0x45, 0xa2, 0x83, 0xe0, 0xc1, 0xe5, 0xc4, 0xa7, 0x86, 0x61, 0x40, 0x23, 0x2, 0xf0, 0xd1, 0xb2, 0x93, 0x74, 0x55, 0x36, 0x17, 0xcf, 0xee, 0x8d, 0xac, 0x4b, 0x6a, 0x9, 0x28, 0xda, 0xfb, 0x98, 0xb9, 0x5e, 0x7f, 0x1c, 0x3d, 0xb1, 0x90, 0xf3, 0xd2, 0x35, 0x14, 0x77, 0x56, 0xa4, 0x85, 0xe6, 0xc7, 0x20, 0x1, 0x62, 0x43, 0x9b, 0xba, 0xd9, 0xf8, 0x1f, 0x3e, 0x5d, 0x7c, 0x8e, 0xaf, 0xcc, 0xed, 0xa, 0x2b, 0x48, 0x69}, - {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3, 0x1a, 0x38, 0x5e, 0x7c, 0x92, 0xb0, 0xd6, 0xf4, 0x17, 0x35, 0x53, 0x71, 0x9f, 0xbd, 0xdb, 0xf9, 0x34, 0x16, 0x70, 0x52, 0xbc, 0x9e, 0xf8, 0xda, 0x39, 0x1b, 0x7d, 0x5f, 0xb1, 0x93, 0xf5, 0xd7, 0x2e, 0xc, 0x6a, 0x48, 0xa6, 0x84, 0xe2, 0xc0, 0x23, 0x1, 0x67, 0x45, 0xab, 0x89, 0xef, 0xcd, 0x68, 0x4a, 0x2c, 0xe, 0xe0, 0xc2, 0xa4, 0x86, 0x65, 0x47, 0x21, 0x3, 0xed, 0xcf, 0xa9, 0x8b, 0x72, 0x50, 0x36, 0x14, 0xfa, 0xd8, 0xbe, 0x9c, 0x7f, 0x5d, 0x3b, 0x19, 0xf7, 0xd5, 0xb3, 0x91, 0x5c, 0x7e, 0x18, 0x3a, 0xd4, 0xf6, 0x90, 0xb2, 0x51, 0x73, 0x15, 0x37, 0xd9, 0xfb, 0x9d, 0xbf, 0x46, 0x64, 0x2, 0x20, 0xce, 0xec, 0x8a, 0xa8, 0x4b, 0x69, 0xf, 0x2d, 0xc3, 0xe1, 0x87, 0xa5, 0xd0, 0xf2, 0x94, 0xb6, 0x58, 0x7a, 0x1c, 0x3e, 0xdd, 0xff, 0x99, 0xbb, 0x55, 0x77, 0x11, 0x33, 0xca, 0xe8, 0x8e, 0xac, 0x42, 0x60, 0x6, 0x24, 0xc7, 0xe5, 0x83, 0xa1, 0x4f, 0x6d, 0xb, 0x29, 0xe4, 0xc6, 0xa0, 0x82, 0x6c, 0x4e, 0x28, 0xa, 0xe9, 0xcb, 0xad, 0x8f, 0x61, 0x43, 0x25, 0x7, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf3, 0xd1, 0xb7, 0x95, 0x7b, 0x59, 0x3f, 0x1d, 0xb8, 0x9a, 0xfc, 0xde, 0x30, 0x12, 0x74, 0x56, 0xb5, 0x97, 0xf1, 0xd3, 0x3d, 0x1f, 0x79, 0x5b, 0xa2, 0x80, 0xe6, 0xc4, 0x2a, 0x8, 0x6e, 0x4c, 0xaf, 0x8d, 0xeb, 0xc9, 0x27, 0x5, 0x63, 0x41, 0x8c, 0xae, 0xc8, 0xea, 0x4, 0x26, 0x40, 0x62, 0x81, 0xa3, 0xc5, 0xe7, 0x9, 0x2b, 0x4d, 0x6f, 0x96, 0xb4, 0xd2, 0xf0, 0x1e, 0x3c, 0x5a, 0x78, 0x9b, 0xb9, 0xdf, 0xfd, 0x13, 0x31, 0x57, 0x75}, - {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec, 0xa, 0x29, 0x4c, 0x6f, 0x86, 0xa5, 0xc0, 0xe3, 0xf, 0x2c, 0x49, 0x6a, 0x83, 0xa0, 0xc5, 0xe6, 0x14, 0x37, 0x52, 0x71, 0x98, 0xbb, 0xde, 0xfd, 0x11, 0x32, 0x57, 0x74, 0x9d, 0xbe, 0xdb, 0xf8, 0x1e, 0x3d, 0x58, 0x7b, 0x92, 0xb1, 0xd4, 0xf7, 0x1b, 0x38, 0x5d, 0x7e, 0x97, 0xb4, 0xd1, 0xf2, 0x28, 0xb, 0x6e, 0x4d, 0xa4, 0x87, 0xe2, 0xc1, 0x2d, 0xe, 0x6b, 0x48, 0xa1, 0x82, 0xe7, 0xc4, 0x22, 0x1, 0x64, 0x47, 0xae, 0x8d, 0xe8, 0xcb, 0x27, 0x4, 0x61, 0x42, 0xab, 0x88, 0xed, 0xce, 0x3c, 0x1f, 0x7a, 0x59, 0xb0, 0x93, 0xf6, 0xd5, 0x39, 0x1a, 0x7f, 0x5c, 0xb5, 0x96, 0xf3, 0xd0, 0x36, 0x15, 0x70, 0x53, 0xba, 0x99, 0xfc, 0xdf, 0x33, 0x10, 0x75, 0x56, 0xbf, 0x9c, 0xf9, 0xda, 0x50, 0x73, 0x16, 0x35, 0xdc, 0xff, 0x9a, 0xb9, 0x55, 0x76, 0x13, 0x30, 0xd9, 0xfa, 0x9f, 0xbc, 0x5a, 0x79, 0x1c, 0x3f, 0xd6, 0xf5, 0x90, 0xb3, 0x5f, 0x7c, 0x19, 0x3a, 0xd3, 0xf0, 0x95, 0xb6, 0x44, 0x67, 0x2, 0x21, 0xc8, 0xeb, 0x8e, 0xad, 0x41, 0x62, 0x7, 0x24, 0xcd, 0xee, 0x8b, 0xa8, 0x4e, 0x6d, 0x8, 0x2b, 0xc2, 0xe1, 0x84, 0xa7, 0x4b, 0x68, 0xd, 0x2e, 0xc7, 0xe4, 0x81, 0xa2, 0x78, 0x5b, 0x3e, 0x1d, 0xf4, 0xd7, 0xb2, 0x91, 0x7d, 0x5e, 0x3b, 0x18, 0xf1, 0xd2, 0xb7, 0x94, 0x72, 0x51, 0x34, 0x17, 0xfe, 0xdd, 0xb8, 0x9b, 0x77, 0x54, 0x31, 0x12, 0xfb, 0xd8, 0xbd, 0x9e, 0x6c, 0x4f, 0x2a, 0x9, 0xe0, 0xc3, 0xa6, 0x85, 0x69, 0x4a, 0x2f, 0xc, 0xe5, 0xc6, 0xa3, 0x80, 0x66, 0x45, 0x20, 0x3, 0xea, 0xc9, 0xac, 0x8f, 0x63, 0x40, 0x25, 0x6, 0xef, 0xcc, 0xa9, 0x8a}, - {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1, 0x7a, 0x5e, 0x32, 0x16, 0xea, 0xce, 0xa2, 0x86, 0x47, 0x63, 0xf, 0x2b, 0xd7, 0xf3, 0x9f, 0xbb, 0xf4, 0xd0, 0xbc, 0x98, 0x64, 0x40, 0x2c, 0x8, 0xc9, 0xed, 0x81, 0xa5, 0x59, 0x7d, 0x11, 0x35, 0x8e, 0xaa, 0xc6, 0xe2, 0x1e, 0x3a, 0x56, 0x72, 0xb3, 0x97, 0xfb, 0xdf, 0x23, 0x7, 0x6b, 0x4f, 0xf5, 0xd1, 0xbd, 0x99, 0x65, 0x41, 0x2d, 0x9, 0xc8, 0xec, 0x80, 0xa4, 0x58, 0x7c, 0x10, 0x34, 0x8f, 0xab, 0xc7, 0xe3, 0x1f, 0x3b, 0x57, 0x73, 0xb2, 0x96, 0xfa, 0xde, 0x22, 0x6, 0x6a, 0x4e, 0x1, 0x25, 0x49, 0x6d, 0x91, 0xb5, 0xd9, 0xfd, 0x3c, 0x18, 0x74, 0x50, 0xac, 0x88, 0xe4, 0xc0, 0x7b, 0x5f, 0x33, 0x17, 0xeb, 0xcf, 0xa3, 0x87, 0x46, 0x62, 0xe, 0x2a, 0xd6, 0xf2, 0x9e, 0xba, 0xf7, 0xd3, 0xbf, 0x9b, 0x67, 0x43, 0x2f, 0xb, 0xca, 0xee, 0x82, 0xa6, 0x5a, 0x7e, 0x12, 0x36, 0x8d, 0xa9, 0xc5, 0xe1, 0x1d, 0x39, 0x55, 0x71, 0xb0, 0x94, 0xf8, 0xdc, 0x20, 0x4, 0x68, 0x4c, 0x3, 0x27, 0x4b, 0x6f, 0x93, 0xb7, 0xdb, 0xff, 0x3e, 0x1a, 0x76, 0x52, 0xae, 0x8a, 0xe6, 0xc2, 0x79, 0x5d, 0x31, 0x15, 0xe9, 0xcd, 0xa1, 0x85, 0x44, 0x60, 0xc, 0x28, 0xd4, 0xf0, 0x9c, 0xb8, 0x2, 0x26, 0x4a, 0x6e, 0x92, 0xb6, 0xda, 0xfe, 0x3f, 0x1b, 0x77, 0x53, 0xaf, 0x8b, 0xe7, 0xc3, 0x78, 0x5c, 0x30, 0x14, 0xe8, 0xcc, 0xa0, 0x84, 0x45, 0x61, 0xd, 0x29, 0xd5, 0xf1, 0x9d, 0xb9, 0xf6, 0xd2, 0xbe, 0x9a, 0x66, 0x42, 0x2e, 0xa, 0xcb, 0xef, 0x83, 0xa7, 0x5b, 0x7f, 0x13, 0x37, 0x8c, 0xa8, 0xc4, 0xe0, 0x1c, 0x38, 0x54, 0x70, 0xb1, 0x95, 0xf9, 0xdd, 0x21, 0x5, 0x69, 0x4d}, - {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce, 0x6a, 0x4f, 0x20, 0x5, 0xfe, 0xdb, 0xb4, 0x91, 0x5f, 0x7a, 0x15, 0x30, 0xcb, 0xee, 0x81, 0xa4, 0xd4, 0xf1, 0x9e, 0xbb, 0x40, 0x65, 0xa, 0x2f, 0xe1, 0xc4, 0xab, 0x8e, 0x75, 0x50, 0x3f, 0x1a, 0xbe, 0x9b, 0xf4, 0xd1, 0x2a, 0xf, 0x60, 0x45, 0x8b, 0xae, 0xc1, 0xe4, 0x1f, 0x3a, 0x55, 0x70, 0xb5, 0x90, 0xff, 0xda, 0x21, 0x4, 0x6b, 0x4e, 0x80, 0xa5, 0xca, 0xef, 0x14, 0x31, 0x5e, 0x7b, 0xdf, 0xfa, 0x95, 0xb0, 0x4b, 0x6e, 0x1, 0x24, 0xea, 0xcf, 0xa0, 0x85, 0x7e, 0x5b, 0x34, 0x11, 0x61, 0x44, 0x2b, 0xe, 0xf5, 0xd0, 0xbf, 0x9a, 0x54, 0x71, 0x1e, 0x3b, 0xc0, 0xe5, 0x8a, 0xaf, 0xb, 0x2e, 0x41, 0x64, 0x9f, 0xba, 0xd5, 0xf0, 0x3e, 0x1b, 0x74, 0x51, 0xaa, 0x8f, 0xe0, 0xc5, 0x77, 0x52, 0x3d, 0x18, 0xe3, 0xc6, 0xa9, 0x8c, 0x42, 0x67, 0x8, 0x2d, 0xd6, 0xf3, 0x9c, 0xb9, 0x1d, 0x38, 0x57, 0x72, 0x89, 0xac, 0xc3, 0xe6, 0x28, 0xd, 0x62, 0x47, 0xbc, 0x99, 0xf6, 0xd3, 0xa3, 0x86, 0xe9, 0xcc, 0x37, 0x12, 0x7d, 0x58, 0x96, 0xb3, 0xdc, 0xf9, 0x2, 0x27, 0x48, 0x6d, 0xc9, 0xec, 0x83, 0xa6, 0x5d, 0x78, 0x17, 0x32, 0xfc, 0xd9, 0xb6, 0x93, 0x68, 0x4d, 0x22, 0x7, 0xc2, 0xe7, 0x88, 0xad, 0x56, 0x73, 0x1c, 0x39, 0xf7, 0xd2, 0xbd, 0x98, 0x63, 0x46, 0x29, 0xc, 0xa8, 0x8d, 0xe2, 0xc7, 0x3c, 0x19, 0x76, 0x53, 0x9d, 0xb8, 0xd7, 0xf2, 0x9, 0x2c, 0x43, 0x66, 0x16, 0x33, 0x5c, 0x79, 0x82, 0xa7, 0xc8, 0xed, 0x23, 0x6, 0x69, 0x4c, 0xb7, 0x92, 0xfd, 0xd8, 0x7c, 0x59, 0x36, 0x13, 0xe8, 0xcd, 0xa2, 0x87, 0x49, 0x6c, 0x3, 0x26, 0xdd, 0xf8, 0x97, 0xb2}, - {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf, 0x5a, 0x7c, 0x16, 0x30, 0xc2, 0xe4, 0x8e, 0xa8, 0x77, 0x51, 0x3b, 0x1d, 0xef, 0xc9, 0xa3, 0x85, 0xb4, 0x92, 0xf8, 0xde, 0x2c, 0xa, 0x60, 0x46, 0x99, 0xbf, 0xd5, 0xf3, 0x1, 0x27, 0x4d, 0x6b, 0xee, 0xc8, 0xa2, 0x84, 0x76, 0x50, 0x3a, 0x1c, 0xc3, 0xe5, 0x8f, 0xa9, 0x5b, 0x7d, 0x17, 0x31, 0x75, 0x53, 0x39, 0x1f, 0xed, 0xcb, 0xa1, 0x87, 0x58, 0x7e, 0x14, 0x32, 0xc0, 0xe6, 0x8c, 0xaa, 0x2f, 0x9, 0x63, 0x45, 0xb7, 0x91, 0xfb, 0xdd, 0x2, 0x24, 0x4e, 0x68, 0x9a, 0xbc, 0xd6, 0xf0, 0xc1, 0xe7, 0x8d, 0xab, 0x59, 0x7f, 0x15, 0x33, 0xec, 0xca, 0xa0, 0x86, 0x74, 0x52, 0x38, 0x1e, 0x9b, 0xbd, 0xd7, 0xf1, 0x3, 0x25, 0x4f, 0x69, 0xb6, 0x90, 0xfa, 0xdc, 0x2e, 0x8, 0x62, 0x44, 0xea, 0xcc, 0xa6, 0x80, 0x72, 0x54, 0x3e, 0x18, 0xc7, 0xe1, 0x8b, 0xad, 0x5f, 0x79, 0x13, 0x35, 0xb0, 0x96, 0xfc, 0xda, 0x28, 0xe, 0x64, 0x42, 0x9d, 0xbb, 0xd1, 0xf7, 0x5, 0x23, 0x49, 0x6f, 0x5e, 0x78, 0x12, 0x34, 0xc6, 0xe0, 0x8a, 0xac, 0x73, 0x55, 0x3f, 0x19, 0xeb, 0xcd, 0xa7, 0x81, 0x4, 0x22, 0x48, 0x6e, 0x9c, 0xba, 0xd0, 0xf6, 0x29, 0xf, 0x65, 0x43, 0xb1, 0x97, 0xfd, 0xdb, 0x9f, 0xb9, 0xd3, 0xf5, 0x7, 0x21, 0x4b, 0x6d, 0xb2, 0x94, 0xfe, 0xd8, 0x2a, 0xc, 0x66, 0x40, 0xc5, 0xe3, 0x89, 0xaf, 0x5d, 0x7b, 0x11, 0x37, 0xe8, 0xce, 0xa4, 0x82, 0x70, 0x56, 0x3c, 0x1a, 0x2b, 0xd, 0x67, 0x41, 0xb3, 0x95, 0xff, 0xd9, 0x6, 0x20, 0x4a, 0x6c, 0x9e, 0xb8, 0xd2, 0xf4, 0x71, 0x57, 0x3d, 0x1b, 0xe9, 0xcf, 0xa5, 0x83, 0x5c, 0x7a, 0x10, 0x36, 0xc4, 0xe2, 0x88, 0xae}, - {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0, 0x4a, 0x6d, 0x4, 0x23, 0xd6, 0xf1, 0x98, 0xbf, 0x6f, 0x48, 0x21, 0x6, 0xf3, 0xd4, 0xbd, 0x9a, 0x94, 0xb3, 0xda, 0xfd, 0x8, 0x2f, 0x46, 0x61, 0xb1, 0x96, 0xff, 0xd8, 0x2d, 0xa, 0x63, 0x44, 0xde, 0xf9, 0x90, 0xb7, 0x42, 0x65, 0xc, 0x2b, 0xfb, 0xdc, 0xb5, 0x92, 0x67, 0x40, 0x29, 0xe, 0x35, 0x12, 0x7b, 0x5c, 0xa9, 0x8e, 0xe7, 0xc0, 0x10, 0x37, 0x5e, 0x79, 0x8c, 0xab, 0xc2, 0xe5, 0x7f, 0x58, 0x31, 0x16, 0xe3, 0xc4, 0xad, 0x8a, 0x5a, 0x7d, 0x14, 0x33, 0xc6, 0xe1, 0x88, 0xaf, 0xa1, 0x86, 0xef, 0xc8, 0x3d, 0x1a, 0x73, 0x54, 0x84, 0xa3, 0xca, 0xed, 0x18, 0x3f, 0x56, 0x71, 0xeb, 0xcc, 0xa5, 0x82, 0x77, 0x50, 0x39, 0x1e, 0xce, 0xe9, 0x80, 0xa7, 0x52, 0x75, 0x1c, 0x3b, 0x6a, 0x4d, 0x24, 0x3, 0xf6, 0xd1, 0xb8, 0x9f, 0x4f, 0x68, 0x1, 0x26, 0xd3, 0xf4, 0x9d, 0xba, 0x20, 0x7, 0x6e, 0x49, 0xbc, 0x9b, 0xf2, 0xd5, 0x5, 0x22, 0x4b, 0x6c, 0x99, 0xbe, 0xd7, 0xf0, 0xfe, 0xd9, 0xb0, 0x97, 0x62, 0x45, 0x2c, 0xb, 0xdb, 0xfc, 0x95, 0xb2, 0x47, 0x60, 0x9, 0x2e, 0xb4, 0x93, 0xfa, 0xdd, 0x28, 0xf, 0x66, 0x41, 0x91, 0xb6, 0xdf, 0xf8, 0xd, 0x2a, 0x43, 0x64, 0x5f, 0x78, 0x11, 0x36, 0xc3, 0xe4, 0x8d, 0xaa, 0x7a, 0x5d, 0x34, 0x13, 0xe6, 0xc1, 0xa8, 0x8f, 0x15, 0x32, 0x5b, 0x7c, 0x89, 0xae, 0xc7, 0xe0, 0x30, 0x17, 0x7e, 0x59, 0xac, 0x8b, 0xe2, 0xc5, 0xcb, 0xec, 0x85, 0xa2, 0x57, 0x70, 0x19, 0x3e, 0xee, 0xc9, 0xa0, 0x87, 0x72, 0x55, 0x3c, 0x1b, 0x81, 0xa6, 0xcf, 0xe8, 0x1d, 0x3a, 0x53, 0x74, 0xa4, 0x83, 0xea, 0xcd, 0x38, 0x1f, 0x76, 0x51}, - {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85, 0xba, 0x92, 0xea, 0xc2, 0x1a, 0x32, 0x4a, 0x62, 0xe7, 0xcf, 0xb7, 0x9f, 0x47, 0x6f, 0x17, 0x3f, 0x69, 0x41, 0x39, 0x11, 0xc9, 0xe1, 0x99, 0xb1, 0x34, 0x1c, 0x64, 0x4c, 0x94, 0xbc, 0xc4, 0xec, 0xd3, 0xfb, 0x83, 0xab, 0x73, 0x5b, 0x23, 0xb, 0x8e, 0xa6, 0xde, 0xf6, 0x2e, 0x6, 0x7e, 0x56, 0xd2, 0xfa, 0x82, 0xaa, 0x72, 0x5a, 0x22, 0xa, 0x8f, 0xa7, 0xdf, 0xf7, 0x2f, 0x7, 0x7f, 0x57, 0x68, 0x40, 0x38, 0x10, 0xc8, 0xe0, 0x98, 0xb0, 0x35, 0x1d, 0x65, 0x4d, 0x95, 0xbd, 0xc5, 0xed, 0xbb, 0x93, 0xeb, 0xc3, 0x1b, 0x33, 0x4b, 0x63, 0xe6, 0xce, 0xb6, 0x9e, 0x46, 0x6e, 0x16, 0x3e, 0x1, 0x29, 0x51, 0x79, 0xa1, 0x89, 0xf1, 0xd9, 0x5c, 0x74, 0xc, 0x24, 0xfc, 0xd4, 0xac, 0x84, 0xb9, 0x91, 0xe9, 0xc1, 0x19, 0x31, 0x49, 0x61, 0xe4, 0xcc, 0xb4, 0x9c, 0x44, 0x6c, 0x14, 0x3c, 0x3, 0x2b, 0x53, 0x7b, 0xa3, 0x8b, 0xf3, 0xdb, 0x5e, 0x76, 0xe, 0x26, 0xfe, 0xd6, 0xae, 0x86, 0xd0, 0xf8, 0x80, 0xa8, 0x70, 0x58, 0x20, 0x8, 0x8d, 0xa5, 0xdd, 0xf5, 0x2d, 0x5, 0x7d, 0x55, 0x6a, 0x42, 0x3a, 0x12, 0xca, 0xe2, 0x9a, 0xb2, 0x37, 0x1f, 0x67, 0x4f, 0x97, 0xbf, 0xc7, 0xef, 0x6b, 0x43, 0x3b, 0x13, 0xcb, 0xe3, 0x9b, 0xb3, 0x36, 0x1e, 0x66, 0x4e, 0x96, 0xbe, 0xc6, 0xee, 0xd1, 0xf9, 0x81, 0xa9, 0x71, 0x59, 0x21, 0x9, 0x8c, 0xa4, 0xdc, 0xf4, 0x2c, 0x4, 0x7c, 0x54, 0x2, 0x2a, 0x52, 0x7a, 0xa2, 0x8a, 0xf2, 0xda, 0x5f, 0x77, 0xf, 0x27, 0xff, 0xd7, 0xaf, 0x87, 0xb8, 0x90, 0xe8, 0xc0, 0x18, 0x30, 0x48, 0x60, 0xe5, 0xcd, 0xb5, 0x9d, 0x45, 0x6d, 0x15, 0x3d}, - {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a, 0xaa, 0x83, 0xf8, 0xd1, 0xe, 0x27, 0x5c, 0x75, 0xff, 0xd6, 0xad, 0x84, 0x5b, 0x72, 0x9, 0x20, 0x49, 0x60, 0x1b, 0x32, 0xed, 0xc4, 0xbf, 0x96, 0x1c, 0x35, 0x4e, 0x67, 0xb8, 0x91, 0xea, 0xc3, 0xe3, 0xca, 0xb1, 0x98, 0x47, 0x6e, 0x15, 0x3c, 0xb6, 0x9f, 0xe4, 0xcd, 0x12, 0x3b, 0x40, 0x69, 0x92, 0xbb, 0xc0, 0xe9, 0x36, 0x1f, 0x64, 0x4d, 0xc7, 0xee, 0x95, 0xbc, 0x63, 0x4a, 0x31, 0x18, 0x38, 0x11, 0x6a, 0x43, 0x9c, 0xb5, 0xce, 0xe7, 0x6d, 0x44, 0x3f, 0x16, 0xc9, 0xe0, 0x9b, 0xb2, 0xdb, 0xf2, 0x89, 0xa0, 0x7f, 0x56, 0x2d, 0x4, 0x8e, 0xa7, 0xdc, 0xf5, 0x2a, 0x3, 0x78, 0x51, 0x71, 0x58, 0x23, 0xa, 0xd5, 0xfc, 0x87, 0xae, 0x24, 0xd, 0x76, 0x5f, 0x80, 0xa9, 0xd2, 0xfb, 0x39, 0x10, 0x6b, 0x42, 0x9d, 0xb4, 0xcf, 0xe6, 0x6c, 0x45, 0x3e, 0x17, 0xc8, 0xe1, 0x9a, 0xb3, 0x93, 0xba, 0xc1, 0xe8, 0x37, 0x1e, 0x65, 0x4c, 0xc6, 0xef, 0x94, 0xbd, 0x62, 0x4b, 0x30, 0x19, 0x70, 0x59, 0x22, 0xb, 0xd4, 0xfd, 0x86, 0xaf, 0x25, 0xc, 0x77, 0x5e, 0x81, 0xa8, 0xd3, 0xfa, 0xda, 0xf3, 0x88, 0xa1, 0x7e, 0x57, 0x2c, 0x5, 0x8f, 0xa6, 0xdd, 0xf4, 0x2b, 0x2, 0x79, 0x50, 0xab, 0x82, 0xf9, 0xd0, 0xf, 0x26, 0x5d, 0x74, 0xfe, 0xd7, 0xac, 0x85, 0x5a, 0x73, 0x8, 0x21, 0x1, 0x28, 0x53, 0x7a, 0xa5, 0x8c, 0xf7, 0xde, 0x54, 0x7d, 0x6, 0x2f, 0xf0, 0xd9, 0xa2, 0x8b, 0xe2, 0xcb, 0xb0, 0x99, 0x46, 0x6f, 0x14, 0x3d, 0xb7, 0x9e, 0xe5, 0xcc, 0x13, 0x3a, 0x41, 0x68, 0x48, 0x61, 0x1a, 0x33, 0xec, 0xc5, 0xbe, 0x97, 0x1d, 0x34, 0x4f, 0x66, 0xb9, 0x90, 0xeb, 0xc2}, - {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b, 0x9a, 0xb0, 0xce, 0xe4, 0x32, 0x18, 0x66, 0x4c, 0xd7, 0xfd, 0x83, 0xa9, 0x7f, 0x55, 0x2b, 0x1, 0x29, 0x3, 0x7d, 0x57, 0x81, 0xab, 0xd5, 0xff, 0x64, 0x4e, 0x30, 0x1a, 0xcc, 0xe6, 0x98, 0xb2, 0xb3, 0x99, 0xe7, 0xcd, 0x1b, 0x31, 0x4f, 0x65, 0xfe, 0xd4, 0xaa, 0x80, 0x56, 0x7c, 0x2, 0x28, 0x52, 0x78, 0x6, 0x2c, 0xfa, 0xd0, 0xae, 0x84, 0x1f, 0x35, 0x4b, 0x61, 0xb7, 0x9d, 0xe3, 0xc9, 0xc8, 0xe2, 0x9c, 0xb6, 0x60, 0x4a, 0x34, 0x1e, 0x85, 0xaf, 0xd1, 0xfb, 0x2d, 0x7, 0x79, 0x53, 0x7b, 0x51, 0x2f, 0x5, 0xd3, 0xf9, 0x87, 0xad, 0x36, 0x1c, 0x62, 0x48, 0x9e, 0xb4, 0xca, 0xe0, 0xe1, 0xcb, 0xb5, 0x9f, 0x49, 0x63, 0x1d, 0x37, 0xac, 0x86, 0xf8, 0xd2, 0x4, 0x2e, 0x50, 0x7a, 0xa4, 0x8e, 0xf0, 0xda, 0xc, 0x26, 0x58, 0x72, 0xe9, 0xc3, 0xbd, 0x97, 0x41, 0x6b, 0x15, 0x3f, 0x3e, 0x14, 0x6a, 0x40, 0x96, 0xbc, 0xc2, 0xe8, 0x73, 0x59, 0x27, 0xd, 0xdb, 0xf1, 0x8f, 0xa5, 0x8d, 0xa7, 0xd9, 0xf3, 0x25, 0xf, 0x71, 0x5b, 0xc0, 0xea, 0x94, 0xbe, 0x68, 0x42, 0x3c, 0x16, 0x17, 0x3d, 0x43, 0x69, 0xbf, 0x95, 0xeb, 0xc1, 0x5a, 0x70, 0xe, 0x24, 0xf2, 0xd8, 0xa6, 0x8c, 0xf6, 0xdc, 0xa2, 0x88, 0x5e, 0x74, 0xa, 0x20, 0xbb, 0x91, 0xef, 0xc5, 0x13, 0x39, 0x47, 0x6d, 0x6c, 0x46, 0x38, 0x12, 0xc4, 0xee, 0x90, 0xba, 0x21, 0xb, 0x75, 0x5f, 0x89, 0xa3, 0xdd, 0xf7, 0xdf, 0xf5, 0x8b, 0xa1, 0x77, 0x5d, 0x23, 0x9, 0x92, 0xb8, 0xc6, 0xec, 0x3a, 0x10, 0x6e, 0x44, 0x45, 0x6f, 0x11, 0x3b, 0xed, 0xc7, 0xb9, 0x93, 0x8, 0x22, 0x5c, 0x76, 0xa0, 0x8a, 0xf4, 0xde}, - {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94, 0x8a, 0xa1, 0xdc, 0xf7, 0x26, 0xd, 0x70, 0x5b, 0xcf, 0xe4, 0x99, 0xb2, 0x63, 0x48, 0x35, 0x1e, 0x9, 0x22, 0x5f, 0x74, 0xa5, 0x8e, 0xf3, 0xd8, 0x4c, 0x67, 0x1a, 0x31, 0xe0, 0xcb, 0xb6, 0x9d, 0x83, 0xa8, 0xd5, 0xfe, 0x2f, 0x4, 0x79, 0x52, 0xc6, 0xed, 0x90, 0xbb, 0x6a, 0x41, 0x3c, 0x17, 0x12, 0x39, 0x44, 0x6f, 0xbe, 0x95, 0xe8, 0xc3, 0x57, 0x7c, 0x1, 0x2a, 0xfb, 0xd0, 0xad, 0x86, 0x98, 0xb3, 0xce, 0xe5, 0x34, 0x1f, 0x62, 0x49, 0xdd, 0xf6, 0x8b, 0xa0, 0x71, 0x5a, 0x27, 0xc, 0x1b, 0x30, 0x4d, 0x66, 0xb7, 0x9c, 0xe1, 0xca, 0x5e, 0x75, 0x8, 0x23, 0xf2, 0xd9, 0xa4, 0x8f, 0x91, 0xba, 0xc7, 0xec, 0x3d, 0x16, 0x6b, 0x40, 0xd4, 0xff, 0x82, 0xa9, 0x78, 0x53, 0x2e, 0x5, 0x24, 0xf, 0x72, 0x59, 0x88, 0xa3, 0xde, 0xf5, 0x61, 0x4a, 0x37, 0x1c, 0xcd, 0xe6, 0x9b, 0xb0, 0xae, 0x85, 0xf8, 0xd3, 0x2, 0x29, 0x54, 0x7f, 0xeb, 0xc0, 0xbd, 0x96, 0x47, 0x6c, 0x11, 0x3a, 0x2d, 0x6, 0x7b, 0x50, 0x81, 0xaa, 0xd7, 0xfc, 0x68, 0x43, 0x3e, 0x15, 0xc4, 0xef, 0x92, 0xb9, 0xa7, 0x8c, 0xf1, 0xda, 0xb, 0x20, 0x5d, 0x76, 0xe2, 0xc9, 0xb4, 0x9f, 0x4e, 0x65, 0x18, 0x33, 0x36, 0x1d, 0x60, 0x4b, 0x9a, 0xb1, 0xcc, 0xe7, 0x73, 0x58, 0x25, 0xe, 0xdf, 0xf4, 0x89, 0xa2, 0xbc, 0x97, 0xea, 0xc1, 0x10, 0x3b, 0x46, 0x6d, 0xf9, 0xd2, 0xaf, 0x84, 0x55, 0x7e, 0x3, 0x28, 0x3f, 0x14, 0x69, 0x42, 0x93, 0xb8, 0xc5, 0xee, 0x7a, 0x51, 0x2c, 0x7, 0xd6, 0xfd, 0x80, 0xab, 0xb5, 0x9e, 0xe3, 0xc8, 0x19, 0x32, 0x4f, 0x64, 0xf0, 0xdb, 0xa6, 0x8d, 0x5c, 0x77, 0xa, 0x21}, - {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9, 0xfa, 0xd6, 0xa2, 0x8e, 0x4a, 0x66, 0x12, 0x3e, 0x87, 0xab, 0xdf, 0xf3, 0x37, 0x1b, 0x6f, 0x43, 0xe9, 0xc5, 0xb1, 0x9d, 0x59, 0x75, 0x1, 0x2d, 0x94, 0xb8, 0xcc, 0xe0, 0x24, 0x8, 0x7c, 0x50, 0x13, 0x3f, 0x4b, 0x67, 0xa3, 0x8f, 0xfb, 0xd7, 0x6e, 0x42, 0x36, 0x1a, 0xde, 0xf2, 0x86, 0xaa, 0xcf, 0xe3, 0x97, 0xbb, 0x7f, 0x53, 0x27, 0xb, 0xb2, 0x9e, 0xea, 0xc6, 0x2, 0x2e, 0x5a, 0x76, 0x35, 0x19, 0x6d, 0x41, 0x85, 0xa9, 0xdd, 0xf1, 0x48, 0x64, 0x10, 0x3c, 0xf8, 0xd4, 0xa0, 0x8c, 0x26, 0xa, 0x7e, 0x52, 0x96, 0xba, 0xce, 0xe2, 0x5b, 0x77, 0x3, 0x2f, 0xeb, 0xc7, 0xb3, 0x9f, 0xdc, 0xf0, 0x84, 0xa8, 0x6c, 0x40, 0x34, 0x18, 0xa1, 0x8d, 0xf9, 0xd5, 0x11, 0x3d, 0x49, 0x65, 0x83, 0xaf, 0xdb, 0xf7, 0x33, 0x1f, 0x6b, 0x47, 0xfe, 0xd2, 0xa6, 0x8a, 0x4e, 0x62, 0x16, 0x3a, 0x79, 0x55, 0x21, 0xd, 0xc9, 0xe5, 0x91, 0xbd, 0x4, 0x28, 0x5c, 0x70, 0xb4, 0x98, 0xec, 0xc0, 0x6a, 0x46, 0x32, 0x1e, 0xda, 0xf6, 0x82, 0xae, 0x17, 0x3b, 0x4f, 0x63, 0xa7, 0x8b, 0xff, 0xd3, 0x90, 0xbc, 0xc8, 0xe4, 0x20, 0xc, 0x78, 0x54, 0xed, 0xc1, 0xb5, 0x99, 0x5d, 0x71, 0x5, 0x29, 0x4c, 0x60, 0x14, 0x38, 0xfc, 0xd0, 0xa4, 0x88, 0x31, 0x1d, 0x69, 0x45, 0x81, 0xad, 0xd9, 0xf5, 0xb6, 0x9a, 0xee, 0xc2, 0x6, 0x2a, 0x5e, 0x72, 0xcb, 0xe7, 0x93, 0xbf, 0x7b, 0x57, 0x23, 0xf, 0xa5, 0x89, 0xfd, 0xd1, 0x15, 0x39, 0x4d, 0x61, 0xd8, 0xf4, 0x80, 0xac, 0x68, 0x44, 0x30, 0x1c, 0x5f, 0x73, 0x7, 0x2b, 0xef, 0xc3, 0xb7, 0x9b, 0x22, 0xe, 0x7a, 0x56, 0x92, 0xbe, 0xca, 0xe6}, - {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6, 0xea, 0xc7, 0xb0, 0x9d, 0x5e, 0x73, 0x4, 0x29, 0x9f, 0xb2, 0xc5, 0xe8, 0x2b, 0x6, 0x71, 0x5c, 0xc9, 0xe4, 0x93, 0xbe, 0x7d, 0x50, 0x27, 0xa, 0xbc, 0x91, 0xe6, 0xcb, 0x8, 0x25, 0x52, 0x7f, 0x23, 0xe, 0x79, 0x54, 0x97, 0xba, 0xcd, 0xe0, 0x56, 0x7b, 0xc, 0x21, 0xe2, 0xcf, 0xb8, 0x95, 0x8f, 0xa2, 0xd5, 0xf8, 0x3b, 0x16, 0x61, 0x4c, 0xfa, 0xd7, 0xa0, 0x8d, 0x4e, 0x63, 0x14, 0x39, 0x65, 0x48, 0x3f, 0x12, 0xd1, 0xfc, 0x8b, 0xa6, 0x10, 0x3d, 0x4a, 0x67, 0xa4, 0x89, 0xfe, 0xd3, 0x46, 0x6b, 0x1c, 0x31, 0xf2, 0xdf, 0xa8, 0x85, 0x33, 0x1e, 0x69, 0x44, 0x87, 0xaa, 0xdd, 0xf0, 0xac, 0x81, 0xf6, 0xdb, 0x18, 0x35, 0x42, 0x6f, 0xd9, 0xf4, 0x83, 0xae, 0x6d, 0x40, 0x37, 0x1a, 0x3, 0x2e, 0x59, 0x74, 0xb7, 0x9a, 0xed, 0xc0, 0x76, 0x5b, 0x2c, 0x1, 0xc2, 0xef, 0x98, 0xb5, 0xe9, 0xc4, 0xb3, 0x9e, 0x5d, 0x70, 0x7, 0x2a, 0x9c, 0xb1, 0xc6, 0xeb, 0x28, 0x5, 0x72, 0x5f, 0xca, 0xe7, 0x90, 0xbd, 0x7e, 0x53, 0x24, 0x9, 0xbf, 0x92, 0xe5, 0xc8, 0xb, 0x26, 0x51, 0x7c, 0x20, 0xd, 0x7a, 0x57, 0x94, 0xb9, 0xce, 0xe3, 0x55, 0x78, 0xf, 0x22, 0xe1, 0xcc, 0xbb, 0x96, 0x8c, 0xa1, 0xd6, 0xfb, 0x38, 0x15, 0x62, 0x4f, 0xf9, 0xd4, 0xa3, 0x8e, 0x4d, 0x60, 0x17, 0x3a, 0x66, 0x4b, 0x3c, 0x11, 0xd2, 0xff, 0x88, 0xa5, 0x13, 0x3e, 0x49, 0x64, 0xa7, 0x8a, 0xfd, 0xd0, 0x45, 0x68, 0x1f, 0x32, 0xf1, 0xdc, 0xab, 0x86, 0x30, 0x1d, 0x6a, 0x47, 0x84, 0xa9, 0xde, 0xf3, 0xaf, 0x82, 0xf5, 0xd8, 0x1b, 0x36, 0x41, 0x6c, 0xda, 0xf7, 0x80, 0xad, 0x6e, 0x43, 0x34, 0x19}, - {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7, 0xda, 0xf4, 0x86, 0xa8, 0x62, 0x4c, 0x3e, 0x10, 0xb7, 0x99, 0xeb, 0xc5, 0xf, 0x21, 0x53, 0x7d, 0xa9, 0x87, 0xf5, 0xdb, 0x11, 0x3f, 0x4d, 0x63, 0xc4, 0xea, 0x98, 0xb6, 0x7c, 0x52, 0x20, 0xe, 0x73, 0x5d, 0x2f, 0x1, 0xcb, 0xe5, 0x97, 0xb9, 0x1e, 0x30, 0x42, 0x6c, 0xa6, 0x88, 0xfa, 0xd4, 0x4f, 0x61, 0x13, 0x3d, 0xf7, 0xd9, 0xab, 0x85, 0x22, 0xc, 0x7e, 0x50, 0x9a, 0xb4, 0xc6, 0xe8, 0x95, 0xbb, 0xc9, 0xe7, 0x2d, 0x3, 0x71, 0x5f, 0xf8, 0xd6, 0xa4, 0x8a, 0x40, 0x6e, 0x1c, 0x32, 0xe6, 0xc8, 0xba, 0x94, 0x5e, 0x70, 0x2, 0x2c, 0x8b, 0xa5, 0xd7, 0xf9, 0x33, 0x1d, 0x6f, 0x41, 0x3c, 0x12, 0x60, 0x4e, 0x84, 0xaa, 0xd8, 0xf6, 0x51, 0x7f, 0xd, 0x23, 0xe9, 0xc7, 0xb5, 0x9b, 0x9e, 0xb0, 0xc2, 0xec, 0x26, 0x8, 0x7a, 0x54, 0xf3, 0xdd, 0xaf, 0x81, 0x4b, 0x65, 0x17, 0x39, 0x44, 0x6a, 0x18, 0x36, 0xfc, 0xd2, 0xa0, 0x8e, 0x29, 0x7, 0x75, 0x5b, 0x91, 0xbf, 0xcd, 0xe3, 0x37, 0x19, 0x6b, 0x45, 0x8f, 0xa1, 0xd3, 0xfd, 0x5a, 0x74, 0x6, 0x28, 0xe2, 0xcc, 0xbe, 0x90, 0xed, 0xc3, 0xb1, 0x9f, 0x55, 0x7b, 0x9, 0x27, 0x80, 0xae, 0xdc, 0xf2, 0x38, 0x16, 0x64, 0x4a, 0xd1, 0xff, 0x8d, 0xa3, 0x69, 0x47, 0x35, 0x1b, 0xbc, 0x92, 0xe0, 0xce, 0x4, 0x2a, 0x58, 0x76, 0xb, 0x25, 0x57, 0x79, 0xb3, 0x9d, 0xef, 0xc1, 0x66, 0x48, 0x3a, 0x14, 0xde, 0xf0, 0x82, 0xac, 0x78, 0x56, 0x24, 0xa, 0xc0, 0xee, 0x9c, 0xb2, 0x15, 0x3b, 0x49, 0x67, 0xad, 0x83, 0xf1, 0xdf, 0xa2, 0x8c, 0xfe, 0xd0, 0x1a, 0x34, 0x46, 0x68, 0xcf, 0xe1, 0x93, 0xbd, 0x77, 0x59, 0x2b, 0x5}, - {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8, 0xca, 0xe5, 0x94, 0xbb, 0x76, 0x59, 0x28, 0x7, 0xaf, 0x80, 0xf1, 0xde, 0x13, 0x3c, 0x4d, 0x62, 0x89, 0xa6, 0xd7, 0xf8, 0x35, 0x1a, 0x6b, 0x44, 0xec, 0xc3, 0xb2, 0x9d, 0x50, 0x7f, 0xe, 0x21, 0x43, 0x6c, 0x1d, 0x32, 0xff, 0xd0, 0xa1, 0x8e, 0x26, 0x9, 0x78, 0x57, 0x9a, 0xb5, 0xc4, 0xeb, 0xf, 0x20, 0x51, 0x7e, 0xb3, 0x9c, 0xed, 0xc2, 0x6a, 0x45, 0x34, 0x1b, 0xd6, 0xf9, 0x88, 0xa7, 0xc5, 0xea, 0x9b, 0xb4, 0x79, 0x56, 0x27, 0x8, 0xa0, 0x8f, 0xfe, 0xd1, 0x1c, 0x33, 0x42, 0x6d, 0x86, 0xa9, 0xd8, 0xf7, 0x3a, 0x15, 0x64, 0x4b, 0xe3, 0xcc, 0xbd, 0x92, 0x5f, 0x70, 0x1, 0x2e, 0x4c, 0x63, 0x12, 0x3d, 0xf0, 0xdf, 0xae, 0x81, 0x29, 0x6, 0x77, 0x58, 0x95, 0xba, 0xcb, 0xe4, 0x1e, 0x31, 0x40, 0x6f, 0xa2, 0x8d, 0xfc, 0xd3, 0x7b, 0x54, 0x25, 0xa, 0xc7, 0xe8, 0x99, 0xb6, 0xd4, 0xfb, 0x8a, 0xa5, 0x68, 0x47, 0x36, 0x19, 0xb1, 0x9e, 0xef, 0xc0, 0xd, 0x22, 0x53, 0x7c, 0x97, 0xb8, 0xc9, 0xe6, 0x2b, 0x4, 0x75, 0x5a, 0xf2, 0xdd, 0xac, 0x83, 0x4e, 0x61, 0x10, 0x3f, 0x5d, 0x72, 0x3, 0x2c, 0xe1, 0xce, 0xbf, 0x90, 0x38, 0x17, 0x66, 0x49, 0x84, 0xab, 0xda, 0xf5, 0x11, 0x3e, 0x4f, 0x60, 0xad, 0x82, 0xf3, 0xdc, 0x74, 0x5b, 0x2a, 0x5, 0xc8, 0xe7, 0x96, 0xb9, 0xdb, 0xf4, 0x85, 0xaa, 0x67, 0x48, 0x39, 0x16, 0xbe, 0x91, 0xe0, 0xcf, 0x2, 0x2d, 0x5c, 0x73, 0x98, 0xb7, 0xc6, 0xe9, 0x24, 0xb, 0x7a, 0x55, 0xfd, 0xd2, 0xa3, 0x8c, 0x41, 0x6e, 0x1f, 0x30, 0x52, 0x7d, 0xc, 0x23, 0xee, 0xc1, 0xb0, 0x9f, 0x37, 0x18, 0x69, 0x46, 0x8b, 0xa4, 0xd5, 0xfa}, - {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd, 0x27, 0x17, 0x47, 0x77, 0xe7, 0xd7, 0x87, 0xb7, 0xba, 0x8a, 0xda, 0xea, 0x7a, 0x4a, 0x1a, 0x2a, 0x4e, 0x7e, 0x2e, 0x1e, 0x8e, 0xbe, 0xee, 0xde, 0xd3, 0xe3, 0xb3, 0x83, 0x13, 0x23, 0x73, 0x43, 0x69, 0x59, 0x9, 0x39, 0xa9, 0x99, 0xc9, 0xf9, 0xf4, 0xc4, 0x94, 0xa4, 0x34, 0x4, 0x54, 0x64, 0x9c, 0xac, 0xfc, 0xcc, 0x5c, 0x6c, 0x3c, 0xc, 0x1, 0x31, 0x61, 0x51, 0xc1, 0xf1, 0xa1, 0x91, 0xbb, 0x8b, 0xdb, 0xeb, 0x7b, 0x4b, 0x1b, 0x2b, 0x26, 0x16, 0x46, 0x76, 0xe6, 0xd6, 0x86, 0xb6, 0xd2, 0xe2, 0xb2, 0x82, 0x12, 0x22, 0x72, 0x42, 0x4f, 0x7f, 0x2f, 0x1f, 0x8f, 0xbf, 0xef, 0xdf, 0xf5, 0xc5, 0x95, 0xa5, 0x35, 0x5, 0x55, 0x65, 0x68, 0x58, 0x8, 0x38, 0xa8, 0x98, 0xc8, 0xf8, 0x25, 0x15, 0x45, 0x75, 0xe5, 0xd5, 0x85, 0xb5, 0xb8, 0x88, 0xd8, 0xe8, 0x78, 0x48, 0x18, 0x28, 0x2, 0x32, 0x62, 0x52, 0xc2, 0xf2, 0xa2, 0x92, 0x9f, 0xaf, 0xff, 0xcf, 0x5f, 0x6f, 0x3f, 0xf, 0x6b, 0x5b, 0xb, 0x3b, 0xab, 0x9b, 0xcb, 0xfb, 0xf6, 0xc6, 0x96, 0xa6, 0x36, 0x6, 0x56, 0x66, 0x4c, 0x7c, 0x2c, 0x1c, 0x8c, 0xbc, 0xec, 0xdc, 0xd1, 0xe1, 0xb1, 0x81, 0x11, 0x21, 0x71, 0x41, 0xb9, 0x89, 0xd9, 0xe9, 0x79, 0x49, 0x19, 0x29, 0x24, 0x14, 0x44, 0x74, 0xe4, 0xd4, 0x84, 0xb4, 0x9e, 0xae, 0xfe, 0xce, 0x5e, 0x6e, 0x3e, 0xe, 0x3, 0x33, 0x63, 0x53, 0xc3, 0xf3, 0xa3, 0x93, 0xf7, 0xc7, 0x97, 0xa7, 0x37, 0x7, 0x57, 0x67, 0x6a, 0x5a, 0xa, 0x3a, 0xaa, 0x9a, 0xca, 0xfa, 0xd0, 0xe0, 0xb0, 0x80, 0x10, 0x20, 0x70, 0x40, 0x4d, 0x7d, 0x2d, 0x1d, 0x8d, 0xbd, 0xed, 0xdd}, - {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2, 0x37, 0x6, 0x55, 0x64, 0xf3, 0xc2, 0x91, 0xa0, 0xa2, 0x93, 0xc0, 0xf1, 0x66, 0x57, 0x4, 0x35, 0x6e, 0x5f, 0xc, 0x3d, 0xaa, 0x9b, 0xc8, 0xf9, 0xfb, 0xca, 0x99, 0xa8, 0x3f, 0xe, 0x5d, 0x6c, 0x59, 0x68, 0x3b, 0xa, 0x9d, 0xac, 0xff, 0xce, 0xcc, 0xfd, 0xae, 0x9f, 0x8, 0x39, 0x6a, 0x5b, 0xdc, 0xed, 0xbe, 0x8f, 0x18, 0x29, 0x7a, 0x4b, 0x49, 0x78, 0x2b, 0x1a, 0x8d, 0xbc, 0xef, 0xde, 0xeb, 0xda, 0x89, 0xb8, 0x2f, 0x1e, 0x4d, 0x7c, 0x7e, 0x4f, 0x1c, 0x2d, 0xba, 0x8b, 0xd8, 0xe9, 0xb2, 0x83, 0xd0, 0xe1, 0x76, 0x47, 0x14, 0x25, 0x27, 0x16, 0x45, 0x74, 0xe3, 0xd2, 0x81, 0xb0, 0x85, 0xb4, 0xe7, 0xd6, 0x41, 0x70, 0x23, 0x12, 0x10, 0x21, 0x72, 0x43, 0xd4, 0xe5, 0xb6, 0x87, 0xa5, 0x94, 0xc7, 0xf6, 0x61, 0x50, 0x3, 0x32, 0x30, 0x1, 0x52, 0x63, 0xf4, 0xc5, 0x96, 0xa7, 0x92, 0xa3, 0xf0, 0xc1, 0x56, 0x67, 0x34, 0x5, 0x7, 0x36, 0x65, 0x54, 0xc3, 0xf2, 0xa1, 0x90, 0xcb, 0xfa, 0xa9, 0x98, 0xf, 0x3e, 0x6d, 0x5c, 0x5e, 0x6f, 0x3c, 0xd, 0x9a, 0xab, 0xf8, 0xc9, 0xfc, 0xcd, 0x9e, 0xaf, 0x38, 0x9, 0x5a, 0x6b, 0x69, 0x58, 0xb, 0x3a, 0xad, 0x9c, 0xcf, 0xfe, 0x79, 0x48, 0x1b, 0x2a, 0xbd, 0x8c, 0xdf, 0xee, 0xec, 0xdd, 0x8e, 0xbf, 0x28, 0x19, 0x4a, 0x7b, 0x4e, 0x7f, 0x2c, 0x1d, 0x8a, 0xbb, 0xe8, 0xd9, 0xdb, 0xea, 0xb9, 0x88, 0x1f, 0x2e, 0x7d, 0x4c, 0x17, 0x26, 0x75, 0x44, 0xd3, 0xe2, 0xb1, 0x80, 0x82, 0xb3, 0xe0, 0xd1, 0x46, 0x77, 0x24, 0x15, 0x20, 0x11, 0x42, 0x73, 0xe4, 0xd5, 0x86, 0xb7, 0xb5, 0x84, 0xd7, 0xe6, 0x71, 0x40, 0x13, 0x22}, - {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13, 0x7, 0x35, 0x63, 0x51, 0xcf, 0xfd, 0xab, 0x99, 0x8a, 0xb8, 0xee, 0xdc, 0x42, 0x70, 0x26, 0x14, 0xe, 0x3c, 0x6a, 0x58, 0xc6, 0xf4, 0xa2, 0x90, 0x83, 0xb1, 0xe7, 0xd5, 0x4b, 0x79, 0x2f, 0x1d, 0x9, 0x3b, 0x6d, 0x5f, 0xc1, 0xf3, 0xa5, 0x97, 0x84, 0xb6, 0xe0, 0xd2, 0x4c, 0x7e, 0x28, 0x1a, 0x1c, 0x2e, 0x78, 0x4a, 0xd4, 0xe6, 0xb0, 0x82, 0x91, 0xa3, 0xf5, 0xc7, 0x59, 0x6b, 0x3d, 0xf, 0x1b, 0x29, 0x7f, 0x4d, 0xd3, 0xe1, 0xb7, 0x85, 0x96, 0xa4, 0xf2, 0xc0, 0x5e, 0x6c, 0x3a, 0x8, 0x12, 0x20, 0x76, 0x44, 0xda, 0xe8, 0xbe, 0x8c, 0x9f, 0xad, 0xfb, 0xc9, 0x57, 0x65, 0x33, 0x1, 0x15, 0x27, 0x71, 0x43, 0xdd, 0xef, 0xb9, 0x8b, 0x98, 0xaa, 0xfc, 0xce, 0x50, 0x62, 0x34, 0x6, 0x38, 0xa, 0x5c, 0x6e, 0xf0, 0xc2, 0x94, 0xa6, 0xb5, 0x87, 0xd1, 0xe3, 0x7d, 0x4f, 0x19, 0x2b, 0x3f, 0xd, 0x5b, 0x69, 0xf7, 0xc5, 0x93, 0xa1, 0xb2, 0x80, 0xd6, 0xe4, 0x7a, 0x48, 0x1e, 0x2c, 0x36, 0x4, 0x52, 0x60, 0xfe, 0xcc, 0x9a, 0xa8, 0xbb, 0x89, 0xdf, 0xed, 0x73, 0x41, 0x17, 0x25, 0x31, 0x3, 0x55, 0x67, 0xf9, 0xcb, 0x9d, 0xaf, 0xbc, 0x8e, 0xd8, 0xea, 0x74, 0x46, 0x10, 0x22, 0x24, 0x16, 0x40, 0x72, 0xec, 0xde, 0x88, 0xba, 0xa9, 0x9b, 0xcd, 0xff, 0x61, 0x53, 0x5, 0x37, 0x23, 0x11, 0x47, 0x75, 0xeb, 0xd9, 0x8f, 0xbd, 0xae, 0x9c, 0xca, 0xf8, 0x66, 0x54, 0x2, 0x30, 0x2a, 0x18, 0x4e, 0x7c, 0xe2, 0xd0, 0x86, 0xb4, 0xa7, 0x95, 0xc3, 0xf1, 0x6f, 0x5d, 0xb, 0x39, 0x2d, 0x1f, 0x49, 0x7b, 0xe5, 0xd7, 0x81, 0xb3, 0xa0, 0x92, 0xc4, 0xf6, 0x68, 0x5a, 0xc, 0x3e}, - {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c, 0x17, 0x24, 0x71, 0x42, 0xdb, 0xe8, 0xbd, 0x8e, 0x92, 0xa1, 0xf4, 0xc7, 0x5e, 0x6d, 0x38, 0xb, 0x2e, 0x1d, 0x48, 0x7b, 0xe2, 0xd1, 0x84, 0xb7, 0xab, 0x98, 0xcd, 0xfe, 0x67, 0x54, 0x1, 0x32, 0x39, 0xa, 0x5f, 0x6c, 0xf5, 0xc6, 0x93, 0xa0, 0xbc, 0x8f, 0xda, 0xe9, 0x70, 0x43, 0x16, 0x25, 0x5c, 0x6f, 0x3a, 0x9, 0x90, 0xa3, 0xf6, 0xc5, 0xd9, 0xea, 0xbf, 0x8c, 0x15, 0x26, 0x73, 0x40, 0x4b, 0x78, 0x2d, 0x1e, 0x87, 0xb4, 0xe1, 0xd2, 0xce, 0xfd, 0xa8, 0x9b, 0x2, 0x31, 0x64, 0x57, 0x72, 0x41, 0x14, 0x27, 0xbe, 0x8d, 0xd8, 0xeb, 0xf7, 0xc4, 0x91, 0xa2, 0x3b, 0x8, 0x5d, 0x6e, 0x65, 0x56, 0x3, 0x30, 0xa9, 0x9a, 0xcf, 0xfc, 0xe0, 0xd3, 0x86, 0xb5, 0x2c, 0x1f, 0x4a, 0x79, 0xb8, 0x8b, 0xde, 0xed, 0x74, 0x47, 0x12, 0x21, 0x3d, 0xe, 0x5b, 0x68, 0xf1, 0xc2, 0x97, 0xa4, 0xaf, 0x9c, 0xc9, 0xfa, 0x63, 0x50, 0x5, 0x36, 0x2a, 0x19, 0x4c, 0x7f, 0xe6, 0xd5, 0x80, 0xb3, 0x96, 0xa5, 0xf0, 0xc3, 0x5a, 0x69, 0x3c, 0xf, 0x13, 0x20, 0x75, 0x46, 0xdf, 0xec, 0xb9, 0x8a, 0x81, 0xb2, 0xe7, 0xd4, 0x4d, 0x7e, 0x2b, 0x18, 0x4, 0x37, 0x62, 0x51, 0xc8, 0xfb, 0xae, 0x9d, 0xe4, 0xd7, 0x82, 0xb1, 0x28, 0x1b, 0x4e, 0x7d, 0x61, 0x52, 0x7, 0x34, 0xad, 0x9e, 0xcb, 0xf8, 0xf3, 0xc0, 0x95, 0xa6, 0x3f, 0xc, 0x59, 0x6a, 0x76, 0x45, 0x10, 0x23, 0xba, 0x89, 0xdc, 0xef, 0xca, 0xf9, 0xac, 0x9f, 0x6, 0x35, 0x60, 0x53, 0x4f, 0x7c, 0x29, 0x1a, 0x83, 0xb0, 0xe5, 0xd6, 0xdd, 0xee, 0xbb, 0x88, 0x11, 0x22, 0x77, 0x44, 0x58, 0x6b, 0x3e, 0xd, 0x94, 0xa7, 0xf2, 0xc1}, - {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31, 0x67, 0x53, 0xf, 0x3b, 0xb7, 0x83, 0xdf, 0xeb, 0xda, 0xee, 0xb2, 0x86, 0xa, 0x3e, 0x62, 0x56, 0xce, 0xfa, 0xa6, 0x92, 0x1e, 0x2a, 0x76, 0x42, 0x73, 0x47, 0x1b, 0x2f, 0xa3, 0x97, 0xcb, 0xff, 0xa9, 0x9d, 0xc1, 0xf5, 0x79, 0x4d, 0x11, 0x25, 0x14, 0x20, 0x7c, 0x48, 0xc4, 0xf0, 0xac, 0x98, 0x81, 0xb5, 0xe9, 0xdd, 0x51, 0x65, 0x39, 0xd, 0x3c, 0x8, 0x54, 0x60, 0xec, 0xd8, 0x84, 0xb0, 0xe6, 0xd2, 0x8e, 0xba, 0x36, 0x2, 0x5e, 0x6a, 0x5b, 0x6f, 0x33, 0x7, 0x8b, 0xbf, 0xe3, 0xd7, 0x4f, 0x7b, 0x27, 0x13, 0x9f, 0xab, 0xf7, 0xc3, 0xf2, 0xc6, 0x9a, 0xae, 0x22, 0x16, 0x4a, 0x7e, 0x28, 0x1c, 0x40, 0x74, 0xf8, 0xcc, 0x90, 0xa4, 0x95, 0xa1, 0xfd, 0xc9, 0x45, 0x71, 0x2d, 0x19, 0x1f, 0x2b, 0x77, 0x43, 0xcf, 0xfb, 0xa7, 0x93, 0xa2, 0x96, 0xca, 0xfe, 0x72, 0x46, 0x1a, 0x2e, 0x78, 0x4c, 0x10, 0x24, 0xa8, 0x9c, 0xc0, 0xf4, 0xc5, 0xf1, 0xad, 0x99, 0x15, 0x21, 0x7d, 0x49, 0xd1, 0xe5, 0xb9, 0x8d, 0x1, 0x35, 0x69, 0x5d, 0x6c, 0x58, 0x4, 0x30, 0xbc, 0x88, 0xd4, 0xe0, 0xb6, 0x82, 0xde, 0xea, 0x66, 0x52, 0xe, 0x3a, 0xb, 0x3f, 0x63, 0x57, 0xdb, 0xef, 0xb3, 0x87, 0x9e, 0xaa, 0xf6, 0xc2, 0x4e, 0x7a, 0x26, 0x12, 0x23, 0x17, 0x4b, 0x7f, 0xf3, 0xc7, 0x9b, 0xaf, 0xf9, 0xcd, 0x91, 0xa5, 0x29, 0x1d, 0x41, 0x75, 0x44, 0x70, 0x2c, 0x18, 0x94, 0xa0, 0xfc, 0xc8, 0x50, 0x64, 0x38, 0xc, 0x80, 0xb4, 0xe8, 0xdc, 0xed, 0xd9, 0x85, 0xb1, 0x3d, 0x9, 0x55, 0x61, 0x37, 0x3, 0x5f, 0x6b, 0xe7, 0xd3, 0x8f, 0xbb, 0x8a, 0xbe, 0xe2, 0xd6, 0x5a, 0x6e, 0x32, 0x6}, - {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e, 0x77, 0x42, 0x1d, 0x28, 0xa3, 0x96, 0xc9, 0xfc, 0xc2, 0xf7, 0xa8, 0x9d, 0x16, 0x23, 0x7c, 0x49, 0xee, 0xdb, 0x84, 0xb1, 0x3a, 0xf, 0x50, 0x65, 0x5b, 0x6e, 0x31, 0x4, 0x8f, 0xba, 0xe5, 0xd0, 0x99, 0xac, 0xf3, 0xc6, 0x4d, 0x78, 0x27, 0x12, 0x2c, 0x19, 0x46, 0x73, 0xf8, 0xcd, 0x92, 0xa7, 0xc1, 0xf4, 0xab, 0x9e, 0x15, 0x20, 0x7f, 0x4a, 0x74, 0x41, 0x1e, 0x2b, 0xa0, 0x95, 0xca, 0xff, 0xb6, 0x83, 0xdc, 0xe9, 0x62, 0x57, 0x8, 0x3d, 0x3, 0x36, 0x69, 0x5c, 0xd7, 0xe2, 0xbd, 0x88, 0x2f, 0x1a, 0x45, 0x70, 0xfb, 0xce, 0x91, 0xa4, 0x9a, 0xaf, 0xf0, 0xc5, 0x4e, 0x7b, 0x24, 0x11, 0x58, 0x6d, 0x32, 0x7, 0x8c, 0xb9, 0xe6, 0xd3, 0xed, 0xd8, 0x87, 0xb2, 0x39, 0xc, 0x53, 0x66, 0x9f, 0xaa, 0xf5, 0xc0, 0x4b, 0x7e, 0x21, 0x14, 0x2a, 0x1f, 0x40, 0x75, 0xfe, 0xcb, 0x94, 0xa1, 0xe8, 0xdd, 0x82, 0xb7, 0x3c, 0x9, 0x56, 0x63, 0x5d, 0x68, 0x37, 0x2, 0x89, 0xbc, 0xe3, 0xd6, 0x71, 0x44, 0x1b, 0x2e, 0xa5, 0x90, 0xcf, 0xfa, 0xc4, 0xf1, 0xae, 0x9b, 0x10, 0x25, 0x7a, 0x4f, 0x6, 0x33, 0x6c, 0x59, 0xd2, 0xe7, 0xb8, 0x8d, 0xb3, 0x86, 0xd9, 0xec, 0x67, 0x52, 0xd, 0x38, 0x5e, 0x6b, 0x34, 0x1, 0x8a, 0xbf, 0xe0, 0xd5, 0xeb, 0xde, 0x81, 0xb4, 0x3f, 0xa, 0x55, 0x60, 0x29, 0x1c, 0x43, 0x76, 0xfd, 0xc8, 0x97, 0xa2, 0x9c, 0xa9, 0xf6, 0xc3, 0x48, 0x7d, 0x22, 0x17, 0xb0, 0x85, 0xda, 0xef, 0x64, 0x51, 0xe, 0x3b, 0x5, 0x30, 0x6f, 0x5a, 0xd1, 0xe4, 0xbb, 0x8e, 0xc7, 0xf2, 0xad, 0x98, 0x13, 0x26, 0x79, 0x4c, 0x72, 0x47, 0x18, 0x2d, 0xa6, 0x93, 0xcc, 0xf9}, - {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f, 0x47, 0x71, 0x2b, 0x1d, 0x9f, 0xa9, 0xf3, 0xc5, 0xea, 0xdc, 0x86, 0xb0, 0x32, 0x4, 0x5e, 0x68, 0x8e, 0xb8, 0xe2, 0xd4, 0x56, 0x60, 0x3a, 0xc, 0x23, 0x15, 0x4f, 0x79, 0xfb, 0xcd, 0x97, 0xa1, 0xc9, 0xff, 0xa5, 0x93, 0x11, 0x27, 0x7d, 0x4b, 0x64, 0x52, 0x8, 0x3e, 0xbc, 0x8a, 0xd0, 0xe6, 0x1, 0x37, 0x6d, 0x5b, 0xd9, 0xef, 0xb5, 0x83, 0xac, 0x9a, 0xc0, 0xf6, 0x74, 0x42, 0x18, 0x2e, 0x46, 0x70, 0x2a, 0x1c, 0x9e, 0xa8, 0xf2, 0xc4, 0xeb, 0xdd, 0x87, 0xb1, 0x33, 0x5, 0x5f, 0x69, 0x8f, 0xb9, 0xe3, 0xd5, 0x57, 0x61, 0x3b, 0xd, 0x22, 0x14, 0x4e, 0x78, 0xfa, 0xcc, 0x96, 0xa0, 0xc8, 0xfe, 0xa4, 0x92, 0x10, 0x26, 0x7c, 0x4a, 0x65, 0x53, 0x9, 0x3f, 0xbd, 0x8b, 0xd1, 0xe7, 0x2, 0x34, 0x6e, 0x58, 0xda, 0xec, 0xb6, 0x80, 0xaf, 0x99, 0xc3, 0xf5, 0x77, 0x41, 0x1b, 0x2d, 0x45, 0x73, 0x29, 0x1f, 0x9d, 0xab, 0xf1, 0xc7, 0xe8, 0xde, 0x84, 0xb2, 0x30, 0x6, 0x5c, 0x6a, 0x8c, 0xba, 0xe0, 0xd6, 0x54, 0x62, 0x38, 0xe, 0x21, 0x17, 0x4d, 0x7b, 0xf9, 0xcf, 0x95, 0xa3, 0xcb, 0xfd, 0xa7, 0x91, 0x13, 0x25, 0x7f, 0x49, 0x66, 0x50, 0xa, 0x3c, 0xbe, 0x88, 0xd2, 0xe4, 0x3, 0x35, 0x6f, 0x59, 0xdb, 0xed, 0xb7, 0x81, 0xae, 0x98, 0xc2, 0xf4, 0x76, 0x40, 0x1a, 0x2c, 0x44, 0x72, 0x28, 0x1e, 0x9c, 0xaa, 0xf0, 0xc6, 0xe9, 0xdf, 0x85, 0xb3, 0x31, 0x7, 0x5d, 0x6b, 0x8d, 0xbb, 0xe1, 0xd7, 0x55, 0x63, 0x39, 0xf, 0x20, 0x16, 0x4c, 0x7a, 0xf8, 0xce, 0x94, 0xa2, 0xca, 0xfc, 0xa6, 0x90, 0x12, 0x24, 0x7e, 0x48, 0x67, 0x51, 0xb, 0x3d, 0xbf, 0x89, 0xd3, 0xe5}, - {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20, 0x57, 0x60, 0x39, 0xe, 0x8b, 0xbc, 0xe5, 0xd2, 0xf2, 0xc5, 0x9c, 0xab, 0x2e, 0x19, 0x40, 0x77, 0xae, 0x99, 0xc0, 0xf7, 0x72, 0x45, 0x1c, 0x2b, 0xb, 0x3c, 0x65, 0x52, 0xd7, 0xe0, 0xb9, 0x8e, 0xf9, 0xce, 0x97, 0xa0, 0x25, 0x12, 0x4b, 0x7c, 0x5c, 0x6b, 0x32, 0x5, 0x80, 0xb7, 0xee, 0xd9, 0x41, 0x76, 0x2f, 0x18, 0x9d, 0xaa, 0xf3, 0xc4, 0xe4, 0xd3, 0x8a, 0xbd, 0x38, 0xf, 0x56, 0x61, 0x16, 0x21, 0x78, 0x4f, 0xca, 0xfd, 0xa4, 0x93, 0xb3, 0x84, 0xdd, 0xea, 0x6f, 0x58, 0x1, 0x36, 0xef, 0xd8, 0x81, 0xb6, 0x33, 0x4, 0x5d, 0x6a, 0x4a, 0x7d, 0x24, 0x13, 0x96, 0xa1, 0xf8, 0xcf, 0xb8, 0x8f, 0xd6, 0xe1, 0x64, 0x53, 0xa, 0x3d, 0x1d, 0x2a, 0x73, 0x44, 0xc1, 0xf6, 0xaf, 0x98, 0x82, 0xb5, 0xec, 0xdb, 0x5e, 0x69, 0x30, 0x7, 0x27, 0x10, 0x49, 0x7e, 0xfb, 0xcc, 0x95, 0xa2, 0xd5, 0xe2, 0xbb, 0x8c, 0x9, 0x3e, 0x67, 0x50, 0x70, 0x47, 0x1e, 0x29, 0xac, 0x9b, 0xc2, 0xf5, 0x2c, 0x1b, 0x42, 0x75, 0xf0, 0xc7, 0x9e, 0xa9, 0x89, 0xbe, 0xe7, 0xd0, 0x55, 0x62, 0x3b, 0xc, 0x7b, 0x4c, 0x15, 0x22, 0xa7, 0x90, 0xc9, 0xfe, 0xde, 0xe9, 0xb0, 0x87, 0x2, 0x35, 0x6c, 0x5b, 0xc3, 0xf4, 0xad, 0x9a, 0x1f, 0x28, 0x71, 0x46, 0x66, 0x51, 0x8, 0x3f, 0xba, 0x8d, 0xd4, 0xe3, 0x94, 0xa3, 0xfa, 0xcd, 0x48, 0x7f, 0x26, 0x11, 0x31, 0x6, 0x5f, 0x68, 0xed, 0xda, 0x83, 0xb4, 0x6d, 0x5a, 0x3, 0x34, 0xb1, 0x86, 0xdf, 0xe8, 0xc8, 0xff, 0xa6, 0x91, 0x14, 0x23, 0x7a, 0x4d, 0x3a, 0xd, 0x54, 0x63, 0xe6, 0xd1, 0x88, 0xbf, 0x9f, 0xa8, 0xf1, 0xc6, 0x43, 0x74, 0x2d, 0x1a}, - {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75, 0xa7, 0x9f, 0xd7, 0xef, 0x47, 0x7f, 0x37, 0xf, 0x7a, 0x42, 0xa, 0x32, 0x9a, 0xa2, 0xea, 0xd2, 0x53, 0x6b, 0x23, 0x1b, 0xb3, 0x8b, 0xc3, 0xfb, 0x8e, 0xb6, 0xfe, 0xc6, 0x6e, 0x56, 0x1e, 0x26, 0xf4, 0xcc, 0x84, 0xbc, 0x14, 0x2c, 0x64, 0x5c, 0x29, 0x11, 0x59, 0x61, 0xc9, 0xf1, 0xb9, 0x81, 0xa6, 0x9e, 0xd6, 0xee, 0x46, 0x7e, 0x36, 0xe, 0x7b, 0x43, 0xb, 0x33, 0x9b, 0xa3, 0xeb, 0xd3, 0x1, 0x39, 0x71, 0x49, 0xe1, 0xd9, 0x91, 0xa9, 0xdc, 0xe4, 0xac, 0x94, 0x3c, 0x4, 0x4c, 0x74, 0xf5, 0xcd, 0x85, 0xbd, 0x15, 0x2d, 0x65, 0x5d, 0x28, 0x10, 0x58, 0x60, 0xc8, 0xf0, 0xb8, 0x80, 0x52, 0x6a, 0x22, 0x1a, 0xb2, 0x8a, 0xc2, 0xfa, 0x8f, 0xb7, 0xff, 0xc7, 0x6f, 0x57, 0x1f, 0x27, 0x51, 0x69, 0x21, 0x19, 0xb1, 0x89, 0xc1, 0xf9, 0x8c, 0xb4, 0xfc, 0xc4, 0x6c, 0x54, 0x1c, 0x24, 0xf6, 0xce, 0x86, 0xbe, 0x16, 0x2e, 0x66, 0x5e, 0x2b, 0x13, 0x5b, 0x63, 0xcb, 0xf3, 0xbb, 0x83, 0x2, 0x3a, 0x72, 0x4a, 0xe2, 0xda, 0x92, 0xaa, 0xdf, 0xe7, 0xaf, 0x97, 0x3f, 0x7, 0x4f, 0x77, 0xa5, 0x9d, 0xd5, 0xed, 0x45, 0x7d, 0x35, 0xd, 0x78, 0x40, 0x8, 0x30, 0x98, 0xa0, 0xe8, 0xd0, 0xf7, 0xcf, 0x87, 0xbf, 0x17, 0x2f, 0x67, 0x5f, 0x2a, 0x12, 0x5a, 0x62, 0xca, 0xf2, 0xba, 0x82, 0x50, 0x68, 0x20, 0x18, 0xb0, 0x88, 0xc0, 0xf8, 0x8d, 0xb5, 0xfd, 0xc5, 0x6d, 0x55, 0x1d, 0x25, 0xa4, 0x9c, 0xd4, 0xec, 0x44, 0x7c, 0x34, 0xc, 0x79, 0x41, 0x9, 0x31, 0x99, 0xa1, 0xe9, 0xd1, 0x3, 0x3b, 0x73, 0x4b, 0xe3, 0xdb, 0x93, 0xab, 0xde, 0xe6, 0xae, 0x96, 0x3e, 0x6, 0x4e, 0x76}, - {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a, 0xb7, 0x8e, 0xc5, 0xfc, 0x53, 0x6a, 0x21, 0x18, 0x62, 0x5b, 0x10, 0x29, 0x86, 0xbf, 0xf4, 0xcd, 0x73, 0x4a, 0x1, 0x38, 0x97, 0xae, 0xe5, 0xdc, 0xa6, 0x9f, 0xd4, 0xed, 0x42, 0x7b, 0x30, 0x9, 0xc4, 0xfd, 0xb6, 0x8f, 0x20, 0x19, 0x52, 0x6b, 0x11, 0x28, 0x63, 0x5a, 0xf5, 0xcc, 0x87, 0xbe, 0xe6, 0xdf, 0x94, 0xad, 0x2, 0x3b, 0x70, 0x49, 0x33, 0xa, 0x41, 0x78, 0xd7, 0xee, 0xa5, 0x9c, 0x51, 0x68, 0x23, 0x1a, 0xb5, 0x8c, 0xc7, 0xfe, 0x84, 0xbd, 0xf6, 0xcf, 0x60, 0x59, 0x12, 0x2b, 0x95, 0xac, 0xe7, 0xde, 0x71, 0x48, 0x3, 0x3a, 0x40, 0x79, 0x32, 0xb, 0xa4, 0x9d, 0xd6, 0xef, 0x22, 0x1b, 0x50, 0x69, 0xc6, 0xff, 0xb4, 0x8d, 0xf7, 0xce, 0x85, 0xbc, 0x13, 0x2a, 0x61, 0x58, 0xd1, 0xe8, 0xa3, 0x9a, 0x35, 0xc, 0x47, 0x7e, 0x4, 0x3d, 0x76, 0x4f, 0xe0, 0xd9, 0x92, 0xab, 0x66, 0x5f, 0x14, 0x2d, 0x82, 0xbb, 0xf0, 0xc9, 0xb3, 0x8a, 0xc1, 0xf8, 0x57, 0x6e, 0x25, 0x1c, 0xa2, 0x9b, 0xd0, 0xe9, 0x46, 0x7f, 0x34, 0xd, 0x77, 0x4e, 0x5, 0x3c, 0x93, 0xaa, 0xe1, 0xd8, 0x15, 0x2c, 0x67, 0x5e, 0xf1, 0xc8, 0x83, 0xba, 0xc0, 0xf9, 0xb2, 0x8b, 0x24, 0x1d, 0x56, 0x6f, 0x37, 0xe, 0x45, 0x7c, 0xd3, 0xea, 0xa1, 0x98, 0xe2, 0xdb, 0x90, 0xa9, 0x6, 0x3f, 0x74, 0x4d, 0x80, 0xb9, 0xf2, 0xcb, 0x64, 0x5d, 0x16, 0x2f, 0x55, 0x6c, 0x27, 0x1e, 0xb1, 0x88, 0xc3, 0xfa, 0x44, 0x7d, 0x36, 0xf, 0xa0, 0x99, 0xd2, 0xeb, 0x91, 0xa8, 0xe3, 0xda, 0x75, 0x4c, 0x7, 0x3e, 0xf3, 0xca, 0x81, 0xb8, 0x17, 0x2e, 0x65, 0x5c, 0x26, 0x1f, 0x54, 0x6d, 0xc2, 0xfb, 0xb0, 0x89}, - {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b, 0x87, 0xbd, 0xf3, 0xc9, 0x6f, 0x55, 0x1b, 0x21, 0x4a, 0x70, 0x3e, 0x4, 0xa2, 0x98, 0xd6, 0xec, 0x13, 0x29, 0x67, 0x5d, 0xfb, 0xc1, 0x8f, 0xb5, 0xde, 0xe4, 0xaa, 0x90, 0x36, 0xc, 0x42, 0x78, 0x94, 0xae, 0xe0, 0xda, 0x7c, 0x46, 0x8, 0x32, 0x59, 0x63, 0x2d, 0x17, 0xb1, 0x8b, 0xc5, 0xff, 0x26, 0x1c, 0x52, 0x68, 0xce, 0xf4, 0xba, 0x80, 0xeb, 0xd1, 0x9f, 0xa5, 0x3, 0x39, 0x77, 0x4d, 0xa1, 0x9b, 0xd5, 0xef, 0x49, 0x73, 0x3d, 0x7, 0x6c, 0x56, 0x18, 0x22, 0x84, 0xbe, 0xf0, 0xca, 0x35, 0xf, 0x41, 0x7b, 0xdd, 0xe7, 0xa9, 0x93, 0xf8, 0xc2, 0x8c, 0xb6, 0x10, 0x2a, 0x64, 0x5e, 0xb2, 0x88, 0xc6, 0xfc, 0x5a, 0x60, 0x2e, 0x14, 0x7f, 0x45, 0xb, 0x31, 0x97, 0xad, 0xe3, 0xd9, 0x4c, 0x76, 0x38, 0x2, 0xa4, 0x9e, 0xd0, 0xea, 0x81, 0xbb, 0xf5, 0xcf, 0x69, 0x53, 0x1d, 0x27, 0xcb, 0xf1, 0xbf, 0x85, 0x23, 0x19, 0x57, 0x6d, 0x6, 0x3c, 0x72, 0x48, 0xee, 0xd4, 0x9a, 0xa0, 0x5f, 0x65, 0x2b, 0x11, 0xb7, 0x8d, 0xc3, 0xf9, 0x92, 0xa8, 0xe6, 0xdc, 0x7a, 0x40, 0xe, 0x34, 0xd8, 0xe2, 0xac, 0x96, 0x30, 0xa, 0x44, 0x7e, 0x15, 0x2f, 0x61, 0x5b, 0xfd, 0xc7, 0x89, 0xb3, 0x6a, 0x50, 0x1e, 0x24, 0x82, 0xb8, 0xf6, 0xcc, 0xa7, 0x9d, 0xd3, 0xe9, 0x4f, 0x75, 0x3b, 0x1, 0xed, 0xd7, 0x99, 0xa3, 0x5, 0x3f, 0x71, 0x4b, 0x20, 0x1a, 0x54, 0x6e, 0xc8, 0xf2, 0xbc, 0x86, 0x79, 0x43, 0xd, 0x37, 0x91, 0xab, 0xe5, 0xdf, 0xb4, 0x8e, 0xc0, 0xfa, 0x5c, 0x66, 0x28, 0x12, 0xfe, 0xc4, 0x8a, 0xb0, 0x16, 0x2c, 0x62, 0x58, 0x33, 0x9, 0x47, 0x7d, 0xdb, 0xe1, 0xaf, 0x95}, - {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64, 0x97, 0xac, 0xe1, 0xda, 0x7b, 0x40, 0xd, 0x36, 0x52, 0x69, 0x24, 0x1f, 0xbe, 0x85, 0xc8, 0xf3, 0x33, 0x8, 0x45, 0x7e, 0xdf, 0xe4, 0xa9, 0x92, 0xf6, 0xcd, 0x80, 0xbb, 0x1a, 0x21, 0x6c, 0x57, 0xa4, 0x9f, 0xd2, 0xe9, 0x48, 0x73, 0x3e, 0x5, 0x61, 0x5a, 0x17, 0x2c, 0x8d, 0xb6, 0xfb, 0xc0, 0x66, 0x5d, 0x10, 0x2b, 0x8a, 0xb1, 0xfc, 0xc7, 0xa3, 0x98, 0xd5, 0xee, 0x4f, 0x74, 0x39, 0x2, 0xf1, 0xca, 0x87, 0xbc, 0x1d, 0x26, 0x6b, 0x50, 0x34, 0xf, 0x42, 0x79, 0xd8, 0xe3, 0xae, 0x95, 0x55, 0x6e, 0x23, 0x18, 0xb9, 0x82, 0xcf, 0xf4, 0x90, 0xab, 0xe6, 0xdd, 0x7c, 0x47, 0xa, 0x31, 0xc2, 0xf9, 0xb4, 0x8f, 0x2e, 0x15, 0x58, 0x63, 0x7, 0x3c, 0x71, 0x4a, 0xeb, 0xd0, 0x9d, 0xa6, 0xcc, 0xf7, 0xba, 0x81, 0x20, 0x1b, 0x56, 0x6d, 0x9, 0x32, 0x7f, 0x44, 0xe5, 0xde, 0x93, 0xa8, 0x5b, 0x60, 0x2d, 0x16, 0xb7, 0x8c, 0xc1, 0xfa, 0x9e, 0xa5, 0xe8, 0xd3, 0x72, 0x49, 0x4, 0x3f, 0xff, 0xc4, 0x89, 0xb2, 0x13, 0x28, 0x65, 0x5e, 0x3a, 0x1, 0x4c, 0x77, 0xd6, 0xed, 0xa0, 0x9b, 0x68, 0x53, 0x1e, 0x25, 0x84, 0xbf, 0xf2, 0xc9, 0xad, 0x96, 0xdb, 0xe0, 0x41, 0x7a, 0x37, 0xc, 0xaa, 0x91, 0xdc, 0xe7, 0x46, 0x7d, 0x30, 0xb, 0x6f, 0x54, 0x19, 0x22, 0x83, 0xb8, 0xf5, 0xce, 0x3d, 0x6, 0x4b, 0x70, 0xd1, 0xea, 0xa7, 0x9c, 0xf8, 0xc3, 0x8e, 0xb5, 0x14, 0x2f, 0x62, 0x59, 0x99, 0xa2, 0xef, 0xd4, 0x75, 0x4e, 0x3, 0x38, 0x5c, 0x67, 0x2a, 0x11, 0xb0, 0x8b, 0xc6, 0xfd, 0xe, 0x35, 0x78, 0x43, 0xe2, 0xd9, 0x94, 0xaf, 0xcb, 0xf0, 0xbd, 0x86, 0x27, 0x1c, 0x51, 0x6a}, - {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49, 0xe7, 0xdb, 0x9f, 0xa3, 0x17, 0x2b, 0x6f, 0x53, 0x1a, 0x26, 0x62, 0x5e, 0xea, 0xd6, 0x92, 0xae, 0xd3, 0xef, 0xab, 0x97, 0x23, 0x1f, 0x5b, 0x67, 0x2e, 0x12, 0x56, 0x6a, 0xde, 0xe2, 0xa6, 0x9a, 0x34, 0x8, 0x4c, 0x70, 0xc4, 0xf8, 0xbc, 0x80, 0xc9, 0xf5, 0xb1, 0x8d, 0x39, 0x5, 0x41, 0x7d, 0xbb, 0x87, 0xc3, 0xff, 0x4b, 0x77, 0x33, 0xf, 0x46, 0x7a, 0x3e, 0x2, 0xb6, 0x8a, 0xce, 0xf2, 0x5c, 0x60, 0x24, 0x18, 0xac, 0x90, 0xd4, 0xe8, 0xa1, 0x9d, 0xd9, 0xe5, 0x51, 0x6d, 0x29, 0x15, 0x68, 0x54, 0x10, 0x2c, 0x98, 0xa4, 0xe0, 0xdc, 0x95, 0xa9, 0xed, 0xd1, 0x65, 0x59, 0x1d, 0x21, 0x8f, 0xb3, 0xf7, 0xcb, 0x7f, 0x43, 0x7, 0x3b, 0x72, 0x4e, 0xa, 0x36, 0x82, 0xbe, 0xfa, 0xc6, 0x6b, 0x57, 0x13, 0x2f, 0x9b, 0xa7, 0xe3, 0xdf, 0x96, 0xaa, 0xee, 0xd2, 0x66, 0x5a, 0x1e, 0x22, 0x8c, 0xb0, 0xf4, 0xc8, 0x7c, 0x40, 0x4, 0x38, 0x71, 0x4d, 0x9, 0x35, 0x81, 0xbd, 0xf9, 0xc5, 0xb8, 0x84, 0xc0, 0xfc, 0x48, 0x74, 0x30, 0xc, 0x45, 0x79, 0x3d, 0x1, 0xb5, 0x89, 0xcd, 0xf1, 0x5f, 0x63, 0x27, 0x1b, 0xaf, 0x93, 0xd7, 0xeb, 0xa2, 0x9e, 0xda, 0xe6, 0x52, 0x6e, 0x2a, 0x16, 0xd0, 0xec, 0xa8, 0x94, 0x20, 0x1c, 0x58, 0x64, 0x2d, 0x11, 0x55, 0x69, 0xdd, 0xe1, 0xa5, 0x99, 0x37, 0xb, 0x4f, 0x73, 0xc7, 0xfb, 0xbf, 0x83, 0xca, 0xf6, 0xb2, 0x8e, 0x3a, 0x6, 0x42, 0x7e, 0x3, 0x3f, 0x7b, 0x47, 0xf3, 0xcf, 0x8b, 0xb7, 0xfe, 0xc2, 0x86, 0xba, 0xe, 0x32, 0x76, 0x4a, 0xe4, 0xd8, 0x9c, 0xa0, 0x14, 0x28, 0x6c, 0x50, 0x19, 0x25, 0x61, 0x5d, 0xe9, 0xd5, 0x91, 0xad}, - {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46, 0xf7, 0xca, 0x8d, 0xb0, 0x3, 0x3e, 0x79, 0x44, 0x2, 0x3f, 0x78, 0x45, 0xf6, 0xcb, 0x8c, 0xb1, 0xf3, 0xce, 0x89, 0xb4, 0x7, 0x3a, 0x7d, 0x40, 0x6, 0x3b, 0x7c, 0x41, 0xf2, 0xcf, 0x88, 0xb5, 0x4, 0x39, 0x7e, 0x43, 0xf0, 0xcd, 0x8a, 0xb7, 0xf1, 0xcc, 0x8b, 0xb6, 0x5, 0x38, 0x7f, 0x42, 0xfb, 0xc6, 0x81, 0xbc, 0xf, 0x32, 0x75, 0x48, 0xe, 0x33, 0x74, 0x49, 0xfa, 0xc7, 0x80, 0xbd, 0xc, 0x31, 0x76, 0x4b, 0xf8, 0xc5, 0x82, 0xbf, 0xf9, 0xc4, 0x83, 0xbe, 0xd, 0x30, 0x77, 0x4a, 0x8, 0x35, 0x72, 0x4f, 0xfc, 0xc1, 0x86, 0xbb, 0xfd, 0xc0, 0x87, 0xba, 0x9, 0x34, 0x73, 0x4e, 0xff, 0xc2, 0x85, 0xb8, 0xb, 0x36, 0x71, 0x4c, 0xa, 0x37, 0x70, 0x4d, 0xfe, 0xc3, 0x84, 0xb9, 0xeb, 0xd6, 0x91, 0xac, 0x1f, 0x22, 0x65, 0x58, 0x1e, 0x23, 0x64, 0x59, 0xea, 0xd7, 0x90, 0xad, 0x1c, 0x21, 0x66, 0x5b, 0xe8, 0xd5, 0x92, 0xaf, 0xe9, 0xd4, 0x93, 0xae, 0x1d, 0x20, 0x67, 0x5a, 0x18, 0x25, 0x62, 0x5f, 0xec, 0xd1, 0x96, 0xab, 0xed, 0xd0, 0x97, 0xaa, 0x19, 0x24, 0x63, 0x5e, 0xef, 0xd2, 0x95, 0xa8, 0x1b, 0x26, 0x61, 0x5c, 0x1a, 0x27, 0x60, 0x5d, 0xee, 0xd3, 0x94, 0xa9, 0x10, 0x2d, 0x6a, 0x57, 0xe4, 0xd9, 0x9e, 0xa3, 0xe5, 0xd8, 0x9f, 0xa2, 0x11, 0x2c, 0x6b, 0x56, 0xe7, 0xda, 0x9d, 0xa0, 0x13, 0x2e, 0x69, 0x54, 0x12, 0x2f, 0x68, 0x55, 0xe6, 0xdb, 0x9c, 0xa1, 0xe3, 0xde, 0x99, 0xa4, 0x17, 0x2a, 0x6d, 0x50, 0x16, 0x2b, 0x6c, 0x51, 0xe2, 0xdf, 0x98, 0xa5, 0x14, 0x29, 0x6e, 0x53, 0xe0, 0xdd, 0x9a, 0xa7, 0xe1, 0xdc, 0x9b, 0xa6, 0x15, 0x28, 0x6f, 0x52}, - {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57, 0xc7, 0xf9, 0xbb, 0x85, 0x3f, 0x1, 0x43, 0x7d, 0x2a, 0x14, 0x56, 0x68, 0xd2, 0xec, 0xae, 0x90, 0x93, 0xad, 0xef, 0xd1, 0x6b, 0x55, 0x17, 0x29, 0x7e, 0x40, 0x2, 0x3c, 0x86, 0xb8, 0xfa, 0xc4, 0x54, 0x6a, 0x28, 0x16, 0xac, 0x92, 0xd0, 0xee, 0xb9, 0x87, 0xc5, 0xfb, 0x41, 0x7f, 0x3d, 0x3, 0x3b, 0x5, 0x47, 0x79, 0xc3, 0xfd, 0xbf, 0x81, 0xd6, 0xe8, 0xaa, 0x94, 0x2e, 0x10, 0x52, 0x6c, 0xfc, 0xc2, 0x80, 0xbe, 0x4, 0x3a, 0x78, 0x46, 0x11, 0x2f, 0x6d, 0x53, 0xe9, 0xd7, 0x95, 0xab, 0xa8, 0x96, 0xd4, 0xea, 0x50, 0x6e, 0x2c, 0x12, 0x45, 0x7b, 0x39, 0x7, 0xbd, 0x83, 0xc1, 0xff, 0x6f, 0x51, 0x13, 0x2d, 0x97, 0xa9, 0xeb, 0xd5, 0x82, 0xbc, 0xfe, 0xc0, 0x7a, 0x44, 0x6, 0x38, 0x76, 0x48, 0xa, 0x34, 0x8e, 0xb0, 0xf2, 0xcc, 0x9b, 0xa5, 0xe7, 0xd9, 0x63, 0x5d, 0x1f, 0x21, 0xb1, 0x8f, 0xcd, 0xf3, 0x49, 0x77, 0x35, 0xb, 0x5c, 0x62, 0x20, 0x1e, 0xa4, 0x9a, 0xd8, 0xe6, 0xe5, 0xdb, 0x99, 0xa7, 0x1d, 0x23, 0x61, 0x5f, 0x8, 0x36, 0x74, 0x4a, 0xf0, 0xce, 0x8c, 0xb2, 0x22, 0x1c, 0x5e, 0x60, 0xda, 0xe4, 0xa6, 0x98, 0xcf, 0xf1, 0xb3, 0x8d, 0x37, 0x9, 0x4b, 0x75, 0x4d, 0x73, 0x31, 0xf, 0xb5, 0x8b, 0xc9, 0xf7, 0xa0, 0x9e, 0xdc, 0xe2, 0x58, 0x66, 0x24, 0x1a, 0x8a, 0xb4, 0xf6, 0xc8, 0x72, 0x4c, 0xe, 0x30, 0x67, 0x59, 0x1b, 0x25, 0x9f, 0xa1, 0xe3, 0xdd, 0xde, 0xe0, 0xa2, 0x9c, 0x26, 0x18, 0x5a, 0x64, 0x33, 0xd, 0x4f, 0x71, 0xcb, 0xf5, 0xb7, 0x89, 0x19, 0x27, 0x65, 0x5b, 0xe1, 0xdf, 0x9d, 0xa3, 0xf4, 0xca, 0x88, 0xb6, 0xc, 0x32, 0x70, 0x4e}, - {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58, 0xd7, 0xe8, 0xa9, 0x96, 0x2b, 0x14, 0x55, 0x6a, 0x32, 0xd, 0x4c, 0x73, 0xce, 0xf1, 0xb0, 0x8f, 0xb3, 0x8c, 0xcd, 0xf2, 0x4f, 0x70, 0x31, 0xe, 0x56, 0x69, 0x28, 0x17, 0xaa, 0x95, 0xd4, 0xeb, 0x64, 0x5b, 0x1a, 0x25, 0x98, 0xa7, 0xe6, 0xd9, 0x81, 0xbe, 0xff, 0xc0, 0x7d, 0x42, 0x3, 0x3c, 0x7b, 0x44, 0x5, 0x3a, 0x87, 0xb8, 0xf9, 0xc6, 0x9e, 0xa1, 0xe0, 0xdf, 0x62, 0x5d, 0x1c, 0x23, 0xac, 0x93, 0xd2, 0xed, 0x50, 0x6f, 0x2e, 0x11, 0x49, 0x76, 0x37, 0x8, 0xb5, 0x8a, 0xcb, 0xf4, 0xc8, 0xf7, 0xb6, 0x89, 0x34, 0xb, 0x4a, 0x75, 0x2d, 0x12, 0x53, 0x6c, 0xd1, 0xee, 0xaf, 0x90, 0x1f, 0x20, 0x61, 0x5e, 0xe3, 0xdc, 0x9d, 0xa2, 0xfa, 0xc5, 0x84, 0xbb, 0x6, 0x39, 0x78, 0x47, 0xf6, 0xc9, 0x88, 0xb7, 0xa, 0x35, 0x74, 0x4b, 0x13, 0x2c, 0x6d, 0x52, 0xef, 0xd0, 0x91, 0xae, 0x21, 0x1e, 0x5f, 0x60, 0xdd, 0xe2, 0xa3, 0x9c, 0xc4, 0xfb, 0xba, 0x85, 0x38, 0x7, 0x46, 0x79, 0x45, 0x7a, 0x3b, 0x4, 0xb9, 0x86, 0xc7, 0xf8, 0xa0, 0x9f, 0xde, 0xe1, 0x5c, 0x63, 0x22, 0x1d, 0x92, 0xad, 0xec, 0xd3, 0x6e, 0x51, 0x10, 0x2f, 0x77, 0x48, 0x9, 0x36, 0x8b, 0xb4, 0xf5, 0xca, 0x8d, 0xb2, 0xf3, 0xcc, 0x71, 0x4e, 0xf, 0x30, 0x68, 0x57, 0x16, 0x29, 0x94, 0xab, 0xea, 0xd5, 0x5a, 0x65, 0x24, 0x1b, 0xa6, 0x99, 0xd8, 0xe7, 0xbf, 0x80, 0xc1, 0xfe, 0x43, 0x7c, 0x3d, 0x2, 0x3e, 0x1, 0x40, 0x7f, 0xc2, 0xfd, 0xbc, 0x83, 0xdb, 0xe4, 0xa5, 0x9a, 0x27, 0x18, 0x59, 0x66, 0xe9, 0xd6, 0x97, 0xa8, 0x15, 0x2a, 0x6b, 0x54, 0xc, 0x33, 0x72, 0x4d, 0xf0, 0xcf, 0x8e, 0xb1}, - {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7, 0x74, 0x34, 0xf4, 0xb4, 0x69, 0x29, 0xe9, 0xa9, 0x4e, 0xe, 0xce, 0x8e, 0x53, 0x13, 0xd3, 0x93, 0xe8, 0xa8, 0x68, 0x28, 0xf5, 0xb5, 0x75, 0x35, 0xd2, 0x92, 0x52, 0x12, 0xcf, 0x8f, 0x4f, 0xf, 0x9c, 0xdc, 0x1c, 0x5c, 0x81, 0xc1, 0x1, 0x41, 0xa6, 0xe6, 0x26, 0x66, 0xbb, 0xfb, 0x3b, 0x7b, 0xcd, 0x8d, 0x4d, 0xd, 0xd0, 0x90, 0x50, 0x10, 0xf7, 0xb7, 0x77, 0x37, 0xea, 0xaa, 0x6a, 0x2a, 0xb9, 0xf9, 0x39, 0x79, 0xa4, 0xe4, 0x24, 0x64, 0x83, 0xc3, 0x3, 0x43, 0x9e, 0xde, 0x1e, 0x5e, 0x25, 0x65, 0xa5, 0xe5, 0x38, 0x78, 0xb8, 0xf8, 0x1f, 0x5f, 0x9f, 0xdf, 0x2, 0x42, 0x82, 0xc2, 0x51, 0x11, 0xd1, 0x91, 0x4c, 0xc, 0xcc, 0x8c, 0x6b, 0x2b, 0xeb, 0xab, 0x76, 0x36, 0xf6, 0xb6, 0x87, 0xc7, 0x7, 0x47, 0x9a, 0xda, 0x1a, 0x5a, 0xbd, 0xfd, 0x3d, 0x7d, 0xa0, 0xe0, 0x20, 0x60, 0xf3, 0xb3, 0x73, 0x33, 0xee, 0xae, 0x6e, 0x2e, 0xc9, 0x89, 0x49, 0x9, 0xd4, 0x94, 0x54, 0x14, 0x6f, 0x2f, 0xef, 0xaf, 0x72, 0x32, 0xf2, 0xb2, 0x55, 0x15, 0xd5, 0x95, 0x48, 0x8, 0xc8, 0x88, 0x1b, 0x5b, 0x9b, 0xdb, 0x6, 0x46, 0x86, 0xc6, 0x21, 0x61, 0xa1, 0xe1, 0x3c, 0x7c, 0xbc, 0xfc, 0x4a, 0xa, 0xca, 0x8a, 0x57, 0x17, 0xd7, 0x97, 0x70, 0x30, 0xf0, 0xb0, 0x6d, 0x2d, 0xed, 0xad, 0x3e, 0x7e, 0xbe, 0xfe, 0x23, 0x63, 0xa3, 0xe3, 0x4, 0x44, 0x84, 0xc4, 0x19, 0x59, 0x99, 0xd9, 0xa2, 0xe2, 0x22, 0x62, 0xbf, 0xff, 0x3f, 0x7f, 0x98, 0xd8, 0x18, 0x58, 0x85, 0xc5, 0x5, 0x45, 0xd6, 0x96, 0x56, 0x16, 0xcb, 0x8b, 0x4b, 0xb, 0xec, 0xac, 0x6c, 0x2c, 0xf1, 0xb1, 0x71, 0x31}, - {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8, 0x64, 0x25, 0xe6, 0xa7, 0x7d, 0x3c, 0xff, 0xbe, 0x56, 0x17, 0xd4, 0x95, 0x4f, 0xe, 0xcd, 0x8c, 0xc8, 0x89, 0x4a, 0xb, 0xd1, 0x90, 0x53, 0x12, 0xfa, 0xbb, 0x78, 0x39, 0xe3, 0xa2, 0x61, 0x20, 0xac, 0xed, 0x2e, 0x6f, 0xb5, 0xf4, 0x37, 0x76, 0x9e, 0xdf, 0x1c, 0x5d, 0x87, 0xc6, 0x5, 0x44, 0x8d, 0xcc, 0xf, 0x4e, 0x94, 0xd5, 0x16, 0x57, 0xbf, 0xfe, 0x3d, 0x7c, 0xa6, 0xe7, 0x24, 0x65, 0xe9, 0xa8, 0x6b, 0x2a, 0xf0, 0xb1, 0x72, 0x33, 0xdb, 0x9a, 0x59, 0x18, 0xc2, 0x83, 0x40, 0x1, 0x45, 0x4, 0xc7, 0x86, 0x5c, 0x1d, 0xde, 0x9f, 0x77, 0x36, 0xf5, 0xb4, 0x6e, 0x2f, 0xec, 0xad, 0x21, 0x60, 0xa3, 0xe2, 0x38, 0x79, 0xba, 0xfb, 0x13, 0x52, 0x91, 0xd0, 0xa, 0x4b, 0x88, 0xc9, 0x7, 0x46, 0x85, 0xc4, 0x1e, 0x5f, 0x9c, 0xdd, 0x35, 0x74, 0xb7, 0xf6, 0x2c, 0x6d, 0xae, 0xef, 0x63, 0x22, 0xe1, 0xa0, 0x7a, 0x3b, 0xf8, 0xb9, 0x51, 0x10, 0xd3, 0x92, 0x48, 0x9, 0xca, 0x8b, 0xcf, 0x8e, 0x4d, 0xc, 0xd6, 0x97, 0x54, 0x15, 0xfd, 0xbc, 0x7f, 0x3e, 0xe4, 0xa5, 0x66, 0x27, 0xab, 0xea, 0x29, 0x68, 0xb2, 0xf3, 0x30, 0x71, 0x99, 0xd8, 0x1b, 0x5a, 0x80, 0xc1, 0x2, 0x43, 0x8a, 0xcb, 0x8, 0x49, 0x93, 0xd2, 0x11, 0x50, 0xb8, 0xf9, 0x3a, 0x7b, 0xa1, 0xe0, 0x23, 0x62, 0xee, 0xaf, 0x6c, 0x2d, 0xf7, 0xb6, 0x75, 0x34, 0xdc, 0x9d, 0x5e, 0x1f, 0xc5, 0x84, 0x47, 0x6, 0x42, 0x3, 0xc0, 0x81, 0x5b, 0x1a, 0xd9, 0x98, 0x70, 0x31, 0xf2, 0xb3, 0x69, 0x28, 0xeb, 0xaa, 0x26, 0x67, 0xa4, 0xe5, 0x3f, 0x7e, 0xbd, 0xfc, 0x14, 0x55, 0x96, 0xd7, 0xd, 0x4c, 0x8f, 0xce}, - {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9, 0x54, 0x16, 0xd0, 0x92, 0x41, 0x3, 0xc5, 0x87, 0x7e, 0x3c, 0xfa, 0xb8, 0x6b, 0x29, 0xef, 0xad, 0xa8, 0xea, 0x2c, 0x6e, 0xbd, 0xff, 0x39, 0x7b, 0x82, 0xc0, 0x6, 0x44, 0x97, 0xd5, 0x13, 0x51, 0xfc, 0xbe, 0x78, 0x3a, 0xe9, 0xab, 0x6d, 0x2f, 0xd6, 0x94, 0x52, 0x10, 0xc3, 0x81, 0x47, 0x5, 0x4d, 0xf, 0xc9, 0x8b, 0x58, 0x1a, 0xdc, 0x9e, 0x67, 0x25, 0xe3, 0xa1, 0x72, 0x30, 0xf6, 0xb4, 0x19, 0x5b, 0x9d, 0xdf, 0xc, 0x4e, 0x88, 0xca, 0x33, 0x71, 0xb7, 0xf5, 0x26, 0x64, 0xa2, 0xe0, 0xe5, 0xa7, 0x61, 0x23, 0xf0, 0xb2, 0x74, 0x36, 0xcf, 0x8d, 0x4b, 0x9, 0xda, 0x98, 0x5e, 0x1c, 0xb1, 0xf3, 0x35, 0x77, 0xa4, 0xe6, 0x20, 0x62, 0x9b, 0xd9, 0x1f, 0x5d, 0x8e, 0xcc, 0xa, 0x48, 0x9a, 0xd8, 0x1e, 0x5c, 0x8f, 0xcd, 0xb, 0x49, 0xb0, 0xf2, 0x34, 0x76, 0xa5, 0xe7, 0x21, 0x63, 0xce, 0x8c, 0x4a, 0x8, 0xdb, 0x99, 0x5f, 0x1d, 0xe4, 0xa6, 0x60, 0x22, 0xf1, 0xb3, 0x75, 0x37, 0x32, 0x70, 0xb6, 0xf4, 0x27, 0x65, 0xa3, 0xe1, 0x18, 0x5a, 0x9c, 0xde, 0xd, 0x4f, 0x89, 0xcb, 0x66, 0x24, 0xe2, 0xa0, 0x73, 0x31, 0xf7, 0xb5, 0x4c, 0xe, 0xc8, 0x8a, 0x59, 0x1b, 0xdd, 0x9f, 0xd7, 0x95, 0x53, 0x11, 0xc2, 0x80, 0x46, 0x4, 0xfd, 0xbf, 0x79, 0x3b, 0xe8, 0xaa, 0x6c, 0x2e, 0x83, 0xc1, 0x7, 0x45, 0x96, 0xd4, 0x12, 0x50, 0xa9, 0xeb, 0x2d, 0x6f, 0xbc, 0xfe, 0x38, 0x7a, 0x7f, 0x3d, 0xfb, 0xb9, 0x6a, 0x28, 0xee, 0xac, 0x55, 0x17, 0xd1, 0x93, 0x40, 0x2, 0xc4, 0x86, 0x2b, 0x69, 0xaf, 0xed, 0x3e, 0x7c, 0xba, 0xf8, 0x1, 0x43, 0x85, 0xc7, 0x14, 0x56, 0x90, 0xd2}, - {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6, 0x44, 0x7, 0xc2, 0x81, 0x55, 0x16, 0xd3, 0x90, 0x66, 0x25, 0xe0, 0xa3, 0x77, 0x34, 0xf1, 0xb2, 0x88, 0xcb, 0xe, 0x4d, 0x99, 0xda, 0x1f, 0x5c, 0xaa, 0xe9, 0x2c, 0x6f, 0xbb, 0xf8, 0x3d, 0x7e, 0xcc, 0x8f, 0x4a, 0x9, 0xdd, 0x9e, 0x5b, 0x18, 0xee, 0xad, 0x68, 0x2b, 0xff, 0xbc, 0x79, 0x3a, 0xd, 0x4e, 0x8b, 0xc8, 0x1c, 0x5f, 0x9a, 0xd9, 0x2f, 0x6c, 0xa9, 0xea, 0x3e, 0x7d, 0xb8, 0xfb, 0x49, 0xa, 0xcf, 0x8c, 0x58, 0x1b, 0xde, 0x9d, 0x6b, 0x28, 0xed, 0xae, 0x7a, 0x39, 0xfc, 0xbf, 0x85, 0xc6, 0x3, 0x40, 0x94, 0xd7, 0x12, 0x51, 0xa7, 0xe4, 0x21, 0x62, 0xb6, 0xf5, 0x30, 0x73, 0xc1, 0x82, 0x47, 0x4, 0xd0, 0x93, 0x56, 0x15, 0xe3, 0xa0, 0x65, 0x26, 0xf2, 0xb1, 0x74, 0x37, 0x1a, 0x59, 0x9c, 0xdf, 0xb, 0x48, 0x8d, 0xce, 0x38, 0x7b, 0xbe, 0xfd, 0x29, 0x6a, 0xaf, 0xec, 0x5e, 0x1d, 0xd8, 0x9b, 0x4f, 0xc, 0xc9, 0x8a, 0x7c, 0x3f, 0xfa, 0xb9, 0x6d, 0x2e, 0xeb, 0xa8, 0x92, 0xd1, 0x14, 0x57, 0x83, 0xc0, 0x5, 0x46, 0xb0, 0xf3, 0x36, 0x75, 0xa1, 0xe2, 0x27, 0x64, 0xd6, 0x95, 0x50, 0x13, 0xc7, 0x84, 0x41, 0x2, 0xf4, 0xb7, 0x72, 0x31, 0xe5, 0xa6, 0x63, 0x20, 0x17, 0x54, 0x91, 0xd2, 0x6, 0x45, 0x80, 0xc3, 0x35, 0x76, 0xb3, 0xf0, 0x24, 0x67, 0xa2, 0xe1, 0x53, 0x10, 0xd5, 0x96, 0x42, 0x1, 0xc4, 0x87, 0x71, 0x32, 0xf7, 0xb4, 0x60, 0x23, 0xe6, 0xa5, 0x9f, 0xdc, 0x19, 0x5a, 0x8e, 0xcd, 0x8, 0x4b, 0xbd, 0xfe, 0x3b, 0x78, 0xac, 0xef, 0x2a, 0x69, 0xdb, 0x98, 0x5d, 0x1e, 0xca, 0x89, 0x4c, 0xf, 0xf9, 0xba, 0x7f, 0x3c, 0xe8, 0xab, 0x6e, 0x2d}, - {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb, 0x34, 0x70, 0xbc, 0xf8, 0x39, 0x7d, 0xb1, 0xf5, 0x2e, 0x6a, 0xa6, 0xe2, 0x23, 0x67, 0xab, 0xef, 0x68, 0x2c, 0xe0, 0xa4, 0x65, 0x21, 0xed, 0xa9, 0x72, 0x36, 0xfa, 0xbe, 0x7f, 0x3b, 0xf7, 0xb3, 0x5c, 0x18, 0xd4, 0x90, 0x51, 0x15, 0xd9, 0x9d, 0x46, 0x2, 0xce, 0x8a, 0x4b, 0xf, 0xc3, 0x87, 0xd0, 0x94, 0x58, 0x1c, 0xdd, 0x99, 0x55, 0x11, 0xca, 0x8e, 0x42, 0x6, 0xc7, 0x83, 0x4f, 0xb, 0xe4, 0xa0, 0x6c, 0x28, 0xe9, 0xad, 0x61, 0x25, 0xfe, 0xba, 0x76, 0x32, 0xf3, 0xb7, 0x7b, 0x3f, 0xb8, 0xfc, 0x30, 0x74, 0xb5, 0xf1, 0x3d, 0x79, 0xa2, 0xe6, 0x2a, 0x6e, 0xaf, 0xeb, 0x27, 0x63, 0x8c, 0xc8, 0x4, 0x40, 0x81, 0xc5, 0x9, 0x4d, 0x96, 0xd2, 0x1e, 0x5a, 0x9b, 0xdf, 0x13, 0x57, 0xbd, 0xf9, 0x35, 0x71, 0xb0, 0xf4, 0x38, 0x7c, 0xa7, 0xe3, 0x2f, 0x6b, 0xaa, 0xee, 0x22, 0x66, 0x89, 0xcd, 0x1, 0x45, 0x84, 0xc0, 0xc, 0x48, 0x93, 0xd7, 0x1b, 0x5f, 0x9e, 0xda, 0x16, 0x52, 0xd5, 0x91, 0x5d, 0x19, 0xd8, 0x9c, 0x50, 0x14, 0xcf, 0x8b, 0x47, 0x3, 0xc2, 0x86, 0x4a, 0xe, 0xe1, 0xa5, 0x69, 0x2d, 0xec, 0xa8, 0x64, 0x20, 0xfb, 0xbf, 0x73, 0x37, 0xf6, 0xb2, 0x7e, 0x3a, 0x6d, 0x29, 0xe5, 0xa1, 0x60, 0x24, 0xe8, 0xac, 0x77, 0x33, 0xff, 0xbb, 0x7a, 0x3e, 0xf2, 0xb6, 0x59, 0x1d, 0xd1, 0x95, 0x54, 0x10, 0xdc, 0x98, 0x43, 0x7, 0xcb, 0x8f, 0x4e, 0xa, 0xc6, 0x82, 0x5, 0x41, 0x8d, 0xc9, 0x8, 0x4c, 0x80, 0xc4, 0x1f, 0x5b, 0x97, 0xd3, 0x12, 0x56, 0x9a, 0xde, 0x31, 0x75, 0xb9, 0xfd, 0x3c, 0x78, 0xb4, 0xf0, 0x2b, 0x6f, 0xa3, 0xe7, 0x26, 0x62, 0xae, 0xea}, - {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4, 0x24, 0x61, 0xae, 0xeb, 0x2d, 0x68, 0xa7, 0xe2, 0x36, 0x73, 0xbc, 0xf9, 0x3f, 0x7a, 0xb5, 0xf0, 0x48, 0xd, 0xc2, 0x87, 0x41, 0x4, 0xcb, 0x8e, 0x5a, 0x1f, 0xd0, 0x95, 0x53, 0x16, 0xd9, 0x9c, 0x6c, 0x29, 0xe6, 0xa3, 0x65, 0x20, 0xef, 0xaa, 0x7e, 0x3b, 0xf4, 0xb1, 0x77, 0x32, 0xfd, 0xb8, 0x90, 0xd5, 0x1a, 0x5f, 0x99, 0xdc, 0x13, 0x56, 0x82, 0xc7, 0x8, 0x4d, 0x8b, 0xce, 0x1, 0x44, 0xb4, 0xf1, 0x3e, 0x7b, 0xbd, 0xf8, 0x37, 0x72, 0xa6, 0xe3, 0x2c, 0x69, 0xaf, 0xea, 0x25, 0x60, 0xd8, 0x9d, 0x52, 0x17, 0xd1, 0x94, 0x5b, 0x1e, 0xca, 0x8f, 0x40, 0x5, 0xc3, 0x86, 0x49, 0xc, 0xfc, 0xb9, 0x76, 0x33, 0xf5, 0xb0, 0x7f, 0x3a, 0xee, 0xab, 0x64, 0x21, 0xe7, 0xa2, 0x6d, 0x28, 0x3d, 0x78, 0xb7, 0xf2, 0x34, 0x71, 0xbe, 0xfb, 0x2f, 0x6a, 0xa5, 0xe0, 0x26, 0x63, 0xac, 0xe9, 0x19, 0x5c, 0x93, 0xd6, 0x10, 0x55, 0x9a, 0xdf, 0xb, 0x4e, 0x81, 0xc4, 0x2, 0x47, 0x88, 0xcd, 0x75, 0x30, 0xff, 0xba, 0x7c, 0x39, 0xf6, 0xb3, 0x67, 0x22, 0xed, 0xa8, 0x6e, 0x2b, 0xe4, 0xa1, 0x51, 0x14, 0xdb, 0x9e, 0x58, 0x1d, 0xd2, 0x97, 0x43, 0x6, 0xc9, 0x8c, 0x4a, 0xf, 0xc0, 0x85, 0xad, 0xe8, 0x27, 0x62, 0xa4, 0xe1, 0x2e, 0x6b, 0xbf, 0xfa, 0x35, 0x70, 0xb6, 0xf3, 0x3c, 0x79, 0x89, 0xcc, 0x3, 0x46, 0x80, 0xc5, 0xa, 0x4f, 0x9b, 0xde, 0x11, 0x54, 0x92, 0xd7, 0x18, 0x5d, 0xe5, 0xa0, 0x6f, 0x2a, 0xec, 0xa9, 0x66, 0x23, 0xf7, 0xb2, 0x7d, 0x38, 0xfe, 0xbb, 0x74, 0x31, 0xc1, 0x84, 0x4b, 0xe, 0xc8, 0x8d, 0x42, 0x7, 0xd3, 0x96, 0x59, 0x1c, 0xda, 0x9f, 0x50, 0x15}, - {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5, 0x14, 0x52, 0x98, 0xde, 0x11, 0x57, 0x9d, 0xdb, 0x1e, 0x58, 0x92, 0xd4, 0x1b, 0x5d, 0x97, 0xd1, 0x28, 0x6e, 0xa4, 0xe2, 0x2d, 0x6b, 0xa1, 0xe7, 0x22, 0x64, 0xae, 0xe8, 0x27, 0x61, 0xab, 0xed, 0x3c, 0x7a, 0xb0, 0xf6, 0x39, 0x7f, 0xb5, 0xf3, 0x36, 0x70, 0xba, 0xfc, 0x33, 0x75, 0xbf, 0xf9, 0x50, 0x16, 0xdc, 0x9a, 0x55, 0x13, 0xd9, 0x9f, 0x5a, 0x1c, 0xd6, 0x90, 0x5f, 0x19, 0xd3, 0x95, 0x44, 0x2, 0xc8, 0x8e, 0x41, 0x7, 0xcd, 0x8b, 0x4e, 0x8, 0xc2, 0x84, 0x4b, 0xd, 0xc7, 0x81, 0x78, 0x3e, 0xf4, 0xb2, 0x7d, 0x3b, 0xf1, 0xb7, 0x72, 0x34, 0xfe, 0xb8, 0x77, 0x31, 0xfb, 0xbd, 0x6c, 0x2a, 0xe0, 0xa6, 0x69, 0x2f, 0xe5, 0xa3, 0x66, 0x20, 0xea, 0xac, 0x63, 0x25, 0xef, 0xa9, 0xa0, 0xe6, 0x2c, 0x6a, 0xa5, 0xe3, 0x29, 0x6f, 0xaa, 0xec, 0x26, 0x60, 0xaf, 0xe9, 0x23, 0x65, 0xb4, 0xf2, 0x38, 0x7e, 0xb1, 0xf7, 0x3d, 0x7b, 0xbe, 0xf8, 0x32, 0x74, 0xbb, 0xfd, 0x37, 0x71, 0x88, 0xce, 0x4, 0x42, 0x8d, 0xcb, 0x1, 0x47, 0x82, 0xc4, 0xe, 0x48, 0x87, 0xc1, 0xb, 0x4d, 0x9c, 0xda, 0x10, 0x56, 0x99, 0xdf, 0x15, 0x53, 0x96, 0xd0, 0x1a, 0x5c, 0x93, 0xd5, 0x1f, 0x59, 0xf0, 0xb6, 0x7c, 0x3a, 0xf5, 0xb3, 0x79, 0x3f, 0xfa, 0xbc, 0x76, 0x30, 0xff, 0xb9, 0x73, 0x35, 0xe4, 0xa2, 0x68, 0x2e, 0xe1, 0xa7, 0x6d, 0x2b, 0xee, 0xa8, 0x62, 0x24, 0xeb, 0xad, 0x67, 0x21, 0xd8, 0x9e, 0x54, 0x12, 0xdd, 0x9b, 0x51, 0x17, 0xd2, 0x94, 0x5e, 0x18, 0xd7, 0x91, 0x5b, 0x1d, 0xcc, 0x8a, 0x40, 0x6, 0xc9, 0x8f, 0x45, 0x3, 0xc6, 0x80, 0x4a, 0xc, 0xc3, 0x85, 0x4f, 0x9}, - {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca, 0x4, 0x43, 0x8a, 0xcd, 0x5, 0x42, 0x8b, 0xcc, 0x6, 0x41, 0x88, 0xcf, 0x7, 0x40, 0x89, 0xce, 0x8, 0x4f, 0x86, 0xc1, 0x9, 0x4e, 0x87, 0xc0, 0xa, 0x4d, 0x84, 0xc3, 0xb, 0x4c, 0x85, 0xc2, 0xc, 0x4b, 0x82, 0xc5, 0xd, 0x4a, 0x83, 0xc4, 0xe, 0x49, 0x80, 0xc7, 0xf, 0x48, 0x81, 0xc6, 0x10, 0x57, 0x9e, 0xd9, 0x11, 0x56, 0x9f, 0xd8, 0x12, 0x55, 0x9c, 0xdb, 0x13, 0x54, 0x9d, 0xda, 0x14, 0x53, 0x9a, 0xdd, 0x15, 0x52, 0x9b, 0xdc, 0x16, 0x51, 0x98, 0xdf, 0x17, 0x50, 0x99, 0xde, 0x18, 0x5f, 0x96, 0xd1, 0x19, 0x5e, 0x97, 0xd0, 0x1a, 0x5d, 0x94, 0xd3, 0x1b, 0x5c, 0x95, 0xd2, 0x1c, 0x5b, 0x92, 0xd5, 0x1d, 0x5a, 0x93, 0xd4, 0x1e, 0x59, 0x90, 0xd7, 0x1f, 0x58, 0x91, 0xd6, 0x20, 0x67, 0xae, 0xe9, 0x21, 0x66, 0xaf, 0xe8, 0x22, 0x65, 0xac, 0xeb, 0x23, 0x64, 0xad, 0xea, 0x24, 0x63, 0xaa, 0xed, 0x25, 0x62, 0xab, 0xec, 0x26, 0x61, 0xa8, 0xef, 0x27, 0x60, 0xa9, 0xee, 0x28, 0x6f, 0xa6, 0xe1, 0x29, 0x6e, 0xa7, 0xe0, 0x2a, 0x6d, 0xa4, 0xe3, 0x2b, 0x6c, 0xa5, 0xe2, 0x2c, 0x6b, 0xa2, 0xe5, 0x2d, 0x6a, 0xa3, 0xe4, 0x2e, 0x69, 0xa0, 0xe7, 0x2f, 0x68, 0xa1, 0xe6, 0x30, 0x77, 0xbe, 0xf9, 0x31, 0x76, 0xbf, 0xf8, 0x32, 0x75, 0xbc, 0xfb, 0x33, 0x74, 0xbd, 0xfa, 0x34, 0x73, 0xba, 0xfd, 0x35, 0x72, 0xbb, 0xfc, 0x36, 0x71, 0xb8, 0xff, 0x37, 0x70, 0xb9, 0xfe, 0x38, 0x7f, 0xb6, 0xf1, 0x39, 0x7e, 0xb7, 0xf0, 0x3a, 0x7d, 0xb4, 0xf3, 0x3b, 0x7c, 0xb5, 0xf2, 0x3c, 0x7b, 0xb2, 0xf5, 0x3d, 0x7a, 0xb3, 0xf4, 0x3e, 0x79, 0xb0, 0xf7, 0x3f, 0x78, 0xb1, 0xf6}, - {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f, 0xf4, 0xbc, 0x64, 0x2c, 0xc9, 0x81, 0x59, 0x11, 0x8e, 0xc6, 0x1e, 0x56, 0xb3, 0xfb, 0x23, 0x6b, 0xf5, 0xbd, 0x65, 0x2d, 0xc8, 0x80, 0x58, 0x10, 0x8f, 0xc7, 0x1f, 0x57, 0xb2, 0xfa, 0x22, 0x6a, 0x1, 0x49, 0x91, 0xd9, 0x3c, 0x74, 0xac, 0xe4, 0x7b, 0x33, 0xeb, 0xa3, 0x46, 0xe, 0xd6, 0x9e, 0xf7, 0xbf, 0x67, 0x2f, 0xca, 0x82, 0x5a, 0x12, 0x8d, 0xc5, 0x1d, 0x55, 0xb0, 0xf8, 0x20, 0x68, 0x3, 0x4b, 0x93, 0xdb, 0x3e, 0x76, 0xae, 0xe6, 0x79, 0x31, 0xe9, 0xa1, 0x44, 0xc, 0xd4, 0x9c, 0x2, 0x4a, 0x92, 0xda, 0x3f, 0x77, 0xaf, 0xe7, 0x78, 0x30, 0xe8, 0xa0, 0x45, 0xd, 0xd5, 0x9d, 0xf6, 0xbe, 0x66, 0x2e, 0xcb, 0x83, 0x5b, 0x13, 0x8c, 0xc4, 0x1c, 0x54, 0xb1, 0xf9, 0x21, 0x69, 0xf3, 0xbb, 0x63, 0x2b, 0xce, 0x86, 0x5e, 0x16, 0x89, 0xc1, 0x19, 0x51, 0xb4, 0xfc, 0x24, 0x6c, 0x7, 0x4f, 0x97, 0xdf, 0x3a, 0x72, 0xaa, 0xe2, 0x7d, 0x35, 0xed, 0xa5, 0x40, 0x8, 0xd0, 0x98, 0x6, 0x4e, 0x96, 0xde, 0x3b, 0x73, 0xab, 0xe3, 0x7c, 0x34, 0xec, 0xa4, 0x41, 0x9, 0xd1, 0x99, 0xf2, 0xba, 0x62, 0x2a, 0xcf, 0x87, 0x5f, 0x17, 0x88, 0xc0, 0x18, 0x50, 0xb5, 0xfd, 0x25, 0x6d, 0x4, 0x4c, 0x94, 0xdc, 0x39, 0x71, 0xa9, 0xe1, 0x7e, 0x36, 0xee, 0xa6, 0x43, 0xb, 0xd3, 0x9b, 0xf0, 0xb8, 0x60, 0x28, 0xcd, 0x85, 0x5d, 0x15, 0x8a, 0xc2, 0x1a, 0x52, 0xb7, 0xff, 0x27, 0x6f, 0xf1, 0xb9, 0x61, 0x29, 0xcc, 0x84, 0x5c, 0x14, 0x8b, 0xc3, 0x1b, 0x53, 0xb6, 0xfe, 0x26, 0x6e, 0x5, 0x4d, 0x95, 0xdd, 0x38, 0x70, 0xa8, 0xe0, 0x7f, 0x37, 0xef, 0xa7, 0x42, 0xa, 0xd2, 0x9a}, - {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90, 0xe4, 0xad, 0x76, 0x3f, 0xdd, 0x94, 0x4f, 0x6, 0x96, 0xdf, 0x4, 0x4d, 0xaf, 0xe6, 0x3d, 0x74, 0xd5, 0x9c, 0x47, 0xe, 0xec, 0xa5, 0x7e, 0x37, 0xa7, 0xee, 0x35, 0x7c, 0x9e, 0xd7, 0xc, 0x45, 0x31, 0x78, 0xa3, 0xea, 0x8, 0x41, 0x9a, 0xd3, 0x43, 0xa, 0xd1, 0x98, 0x7a, 0x33, 0xe8, 0xa1, 0xb7, 0xfe, 0x25, 0x6c, 0x8e, 0xc7, 0x1c, 0x55, 0xc5, 0x8c, 0x57, 0x1e, 0xfc, 0xb5, 0x6e, 0x27, 0x53, 0x1a, 0xc1, 0x88, 0x6a, 0x23, 0xf8, 0xb1, 0x21, 0x68, 0xb3, 0xfa, 0x18, 0x51, 0x8a, 0xc3, 0x62, 0x2b, 0xf0, 0xb9, 0x5b, 0x12, 0xc9, 0x80, 0x10, 0x59, 0x82, 0xcb, 0x29, 0x60, 0xbb, 0xf2, 0x86, 0xcf, 0x14, 0x5d, 0xbf, 0xf6, 0x2d, 0x64, 0xf4, 0xbd, 0x66, 0x2f, 0xcd, 0x84, 0x5f, 0x16, 0x73, 0x3a, 0xe1, 0xa8, 0x4a, 0x3, 0xd8, 0x91, 0x1, 0x48, 0x93, 0xda, 0x38, 0x71, 0xaa, 0xe3, 0x97, 0xde, 0x5, 0x4c, 0xae, 0xe7, 0x3c, 0x75, 0xe5, 0xac, 0x77, 0x3e, 0xdc, 0x95, 0x4e, 0x7, 0xa6, 0xef, 0x34, 0x7d, 0x9f, 0xd6, 0xd, 0x44, 0xd4, 0x9d, 0x46, 0xf, 0xed, 0xa4, 0x7f, 0x36, 0x42, 0xb, 0xd0, 0x99, 0x7b, 0x32, 0xe9, 0xa0, 0x30, 0x79, 0xa2, 0xeb, 0x9, 0x40, 0x9b, 0xd2, 0xc4, 0x8d, 0x56, 0x1f, 0xfd, 0xb4, 0x6f, 0x26, 0xb6, 0xff, 0x24, 0x6d, 0x8f, 0xc6, 0x1d, 0x54, 0x20, 0x69, 0xb2, 0xfb, 0x19, 0x50, 0x8b, 0xc2, 0x52, 0x1b, 0xc0, 0x89, 0x6b, 0x22, 0xf9, 0xb0, 0x11, 0x58, 0x83, 0xca, 0x28, 0x61, 0xba, 0xf3, 0x63, 0x2a, 0xf1, 0xb8, 0x5a, 0x13, 0xc8, 0x81, 0xf5, 0xbc, 0x67, 0x2e, 0xcc, 0x85, 0x5e, 0x17, 0x87, 0xce, 0x15, 0x5c, 0xbe, 0xf7, 0x2c, 0x65}, - {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81, 0xd4, 0x9e, 0x40, 0xa, 0xe1, 0xab, 0x75, 0x3f, 0xbe, 0xf4, 0x2a, 0x60, 0x8b, 0xc1, 0x1f, 0x55, 0xb5, 0xff, 0x21, 0x6b, 0x80, 0xca, 0x14, 0x5e, 0xdf, 0x95, 0x4b, 0x1, 0xea, 0xa0, 0x7e, 0x34, 0x61, 0x2b, 0xf5, 0xbf, 0x54, 0x1e, 0xc0, 0x8a, 0xb, 0x41, 0x9f, 0xd5, 0x3e, 0x74, 0xaa, 0xe0, 0x77, 0x3d, 0xe3, 0xa9, 0x42, 0x8, 0xd6, 0x9c, 0x1d, 0x57, 0x89, 0xc3, 0x28, 0x62, 0xbc, 0xf6, 0xa3, 0xe9, 0x37, 0x7d, 0x96, 0xdc, 0x2, 0x48, 0xc9, 0x83, 0x5d, 0x17, 0xfc, 0xb6, 0x68, 0x22, 0xc2, 0x88, 0x56, 0x1c, 0xf7, 0xbd, 0x63, 0x29, 0xa8, 0xe2, 0x3c, 0x76, 0x9d, 0xd7, 0x9, 0x43, 0x16, 0x5c, 0x82, 0xc8, 0x23, 0x69, 0xb7, 0xfd, 0x7c, 0x36, 0xe8, 0xa2, 0x49, 0x3, 0xdd, 0x97, 0xee, 0xa4, 0x7a, 0x30, 0xdb, 0x91, 0x4f, 0x5, 0x84, 0xce, 0x10, 0x5a, 0xb1, 0xfb, 0x25, 0x6f, 0x3a, 0x70, 0xae, 0xe4, 0xf, 0x45, 0x9b, 0xd1, 0x50, 0x1a, 0xc4, 0x8e, 0x65, 0x2f, 0xf1, 0xbb, 0x5b, 0x11, 0xcf, 0x85, 0x6e, 0x24, 0xfa, 0xb0, 0x31, 0x7b, 0xa5, 0xef, 0x4, 0x4e, 0x90, 0xda, 0x8f, 0xc5, 0x1b, 0x51, 0xba, 0xf0, 0x2e, 0x64, 0xe5, 0xaf, 0x71, 0x3b, 0xd0, 0x9a, 0x44, 0xe, 0x99, 0xd3, 0xd, 0x47, 0xac, 0xe6, 0x38, 0x72, 0xf3, 0xb9, 0x67, 0x2d, 0xc6, 0x8c, 0x52, 0x18, 0x4d, 0x7, 0xd9, 0x93, 0x78, 0x32, 0xec, 0xa6, 0x27, 0x6d, 0xb3, 0xf9, 0x12, 0x58, 0x86, 0xcc, 0x2c, 0x66, 0xb8, 0xf2, 0x19, 0x53, 0x8d, 0xc7, 0x46, 0xc, 0xd2, 0x98, 0x73, 0x39, 0xe7, 0xad, 0xf8, 0xb2, 0x6c, 0x26, 0xcd, 0x87, 0x59, 0x13, 0x92, 0xd8, 0x6, 0x4c, 0xa7, 0xed, 0x33, 0x79}, - {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e, 0xc4, 0x8f, 0x52, 0x19, 0xf5, 0xbe, 0x63, 0x28, 0xa6, 0xed, 0x30, 0x7b, 0x97, 0xdc, 0x1, 0x4a, 0x95, 0xde, 0x3, 0x48, 0xa4, 0xef, 0x32, 0x79, 0xf7, 0xbc, 0x61, 0x2a, 0xc6, 0x8d, 0x50, 0x1b, 0x51, 0x1a, 0xc7, 0x8c, 0x60, 0x2b, 0xf6, 0xbd, 0x33, 0x78, 0xa5, 0xee, 0x2, 0x49, 0x94, 0xdf, 0x37, 0x7c, 0xa1, 0xea, 0x6, 0x4d, 0x90, 0xdb, 0x55, 0x1e, 0xc3, 0x88, 0x64, 0x2f, 0xf2, 0xb9, 0xf3, 0xb8, 0x65, 0x2e, 0xc2, 0x89, 0x54, 0x1f, 0x91, 0xda, 0x7, 0x4c, 0xa0, 0xeb, 0x36, 0x7d, 0xa2, 0xe9, 0x34, 0x7f, 0x93, 0xd8, 0x5, 0x4e, 0xc0, 0x8b, 0x56, 0x1d, 0xf1, 0xba, 0x67, 0x2c, 0x66, 0x2d, 0xf0, 0xbb, 0x57, 0x1c, 0xc1, 0x8a, 0x4, 0x4f, 0x92, 0xd9, 0x35, 0x7e, 0xa3, 0xe8, 0x6e, 0x25, 0xf8, 0xb3, 0x5f, 0x14, 0xc9, 0x82, 0xc, 0x47, 0x9a, 0xd1, 0x3d, 0x76, 0xab, 0xe0, 0xaa, 0xe1, 0x3c, 0x77, 0x9b, 0xd0, 0xd, 0x46, 0xc8, 0x83, 0x5e, 0x15, 0xf9, 0xb2, 0x6f, 0x24, 0xfb, 0xb0, 0x6d, 0x26, 0xca, 0x81, 0x5c, 0x17, 0x99, 0xd2, 0xf, 0x44, 0xa8, 0xe3, 0x3e, 0x75, 0x3f, 0x74, 0xa9, 0xe2, 0xe, 0x45, 0x98, 0xd3, 0x5d, 0x16, 0xcb, 0x80, 0x6c, 0x27, 0xfa, 0xb1, 0x59, 0x12, 0xcf, 0x84, 0x68, 0x23, 0xfe, 0xb5, 0x3b, 0x70, 0xad, 0xe6, 0xa, 0x41, 0x9c, 0xd7, 0x9d, 0xd6, 0xb, 0x40, 0xac, 0xe7, 0x3a, 0x71, 0xff, 0xb4, 0x69, 0x22, 0xce, 0x85, 0x58, 0x13, 0xcc, 0x87, 0x5a, 0x11, 0xfd, 0xb6, 0x6b, 0x20, 0xae, 0xe5, 0x38, 0x73, 0x9f, 0xd4, 0x9, 0x42, 0x8, 0x43, 0x9e, 0xd5, 0x39, 0x72, 0xaf, 0xe4, 0x6a, 0x21, 0xfc, 0xb7, 0x5b, 0x10, 0xcd, 0x86}, - {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3, 0xb4, 0xf8, 0x2c, 0x60, 0x99, 0xd5, 0x1, 0x4d, 0xee, 0xa2, 0x76, 0x3a, 0xc3, 0x8f, 0x5b, 0x17, 0x75, 0x39, 0xed, 0xa1, 0x58, 0x14, 0xc0, 0x8c, 0x2f, 0x63, 0xb7, 0xfb, 0x2, 0x4e, 0x9a, 0xd6, 0xc1, 0x8d, 0x59, 0x15, 0xec, 0xa0, 0x74, 0x38, 0x9b, 0xd7, 0x3, 0x4f, 0xb6, 0xfa, 0x2e, 0x62, 0xea, 0xa6, 0x72, 0x3e, 0xc7, 0x8b, 0x5f, 0x13, 0xb0, 0xfc, 0x28, 0x64, 0x9d, 0xd1, 0x5, 0x49, 0x5e, 0x12, 0xc6, 0x8a, 0x73, 0x3f, 0xeb, 0xa7, 0x4, 0x48, 0x9c, 0xd0, 0x29, 0x65, 0xb1, 0xfd, 0x9f, 0xd3, 0x7, 0x4b, 0xb2, 0xfe, 0x2a, 0x66, 0xc5, 0x89, 0x5d, 0x11, 0xe8, 0xa4, 0x70, 0x3c, 0x2b, 0x67, 0xb3, 0xff, 0x6, 0x4a, 0x9e, 0xd2, 0x71, 0x3d, 0xe9, 0xa5, 0x5c, 0x10, 0xc4, 0x88, 0xc9, 0x85, 0x51, 0x1d, 0xe4, 0xa8, 0x7c, 0x30, 0x93, 0xdf, 0xb, 0x47, 0xbe, 0xf2, 0x26, 0x6a, 0x7d, 0x31, 0xe5, 0xa9, 0x50, 0x1c, 0xc8, 0x84, 0x27, 0x6b, 0xbf, 0xf3, 0xa, 0x46, 0x92, 0xde, 0xbc, 0xf0, 0x24, 0x68, 0x91, 0xdd, 0x9, 0x45, 0xe6, 0xaa, 0x7e, 0x32, 0xcb, 0x87, 0x53, 0x1f, 0x8, 0x44, 0x90, 0xdc, 0x25, 0x69, 0xbd, 0xf1, 0x52, 0x1e, 0xca, 0x86, 0x7f, 0x33, 0xe7, 0xab, 0x23, 0x6f, 0xbb, 0xf7, 0xe, 0x42, 0x96, 0xda, 0x79, 0x35, 0xe1, 0xad, 0x54, 0x18, 0xcc, 0x80, 0x97, 0xdb, 0xf, 0x43, 0xba, 0xf6, 0x22, 0x6e, 0xcd, 0x81, 0x55, 0x19, 0xe0, 0xac, 0x78, 0x34, 0x56, 0x1a, 0xce, 0x82, 0x7b, 0x37, 0xe3, 0xaf, 0xc, 0x40, 0x94, 0xd8, 0x21, 0x6d, 0xb9, 0xf5, 0xe2, 0xae, 0x7a, 0x36, 0xcf, 0x83, 0x57, 0x1b, 0xb8, 0xf4, 0x20, 0x6c, 0x95, 0xd9, 0xd, 0x41}, - {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac, 0xa4, 0xe9, 0x3e, 0x73, 0x8d, 0xc0, 0x17, 0x5a, 0xf6, 0xbb, 0x6c, 0x21, 0xdf, 0x92, 0x45, 0x8, 0x55, 0x18, 0xcf, 0x82, 0x7c, 0x31, 0xe6, 0xab, 0x7, 0x4a, 0x9d, 0xd0, 0x2e, 0x63, 0xb4, 0xf9, 0xf1, 0xbc, 0x6b, 0x26, 0xd8, 0x95, 0x42, 0xf, 0xa3, 0xee, 0x39, 0x74, 0x8a, 0xc7, 0x10, 0x5d, 0xaa, 0xe7, 0x30, 0x7d, 0x83, 0xce, 0x19, 0x54, 0xf8, 0xb5, 0x62, 0x2f, 0xd1, 0x9c, 0x4b, 0x6, 0xe, 0x43, 0x94, 0xd9, 0x27, 0x6a, 0xbd, 0xf0, 0x5c, 0x11, 0xc6, 0x8b, 0x75, 0x38, 0xef, 0xa2, 0xff, 0xb2, 0x65, 0x28, 0xd6, 0x9b, 0x4c, 0x1, 0xad, 0xe0, 0x37, 0x7a, 0x84, 0xc9, 0x1e, 0x53, 0x5b, 0x16, 0xc1, 0x8c, 0x72, 0x3f, 0xe8, 0xa5, 0x9, 0x44, 0x93, 0xde, 0x20, 0x6d, 0xba, 0xf7, 0x49, 0x4, 0xd3, 0x9e, 0x60, 0x2d, 0xfa, 0xb7, 0x1b, 0x56, 0x81, 0xcc, 0x32, 0x7f, 0xa8, 0xe5, 0xed, 0xa0, 0x77, 0x3a, 0xc4, 0x89, 0x5e, 0x13, 0xbf, 0xf2, 0x25, 0x68, 0x96, 0xdb, 0xc, 0x41, 0x1c, 0x51, 0x86, 0xcb, 0x35, 0x78, 0xaf, 0xe2, 0x4e, 0x3, 0xd4, 0x99, 0x67, 0x2a, 0xfd, 0xb0, 0xb8, 0xf5, 0x22, 0x6f, 0x91, 0xdc, 0xb, 0x46, 0xea, 0xa7, 0x70, 0x3d, 0xc3, 0x8e, 0x59, 0x14, 0xe3, 0xae, 0x79, 0x34, 0xca, 0x87, 0x50, 0x1d, 0xb1, 0xfc, 0x2b, 0x66, 0x98, 0xd5, 0x2, 0x4f, 0x47, 0xa, 0xdd, 0x90, 0x6e, 0x23, 0xf4, 0xb9, 0x15, 0x58, 0x8f, 0xc2, 0x3c, 0x71, 0xa6, 0xeb, 0xb6, 0xfb, 0x2c, 0x61, 0x9f, 0xd2, 0x5, 0x48, 0xe4, 0xa9, 0x7e, 0x33, 0xcd, 0x80, 0x57, 0x1a, 0x12, 0x5f, 0x88, 0xc5, 0x3b, 0x76, 0xa1, 0xec, 0x40, 0xd, 0xda, 0x97, 0x69, 0x24, 0xf3, 0xbe}, - {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd, 0x94, 0xda, 0x8, 0x46, 0xb1, 0xff, 0x2d, 0x63, 0xde, 0x90, 0x42, 0xc, 0xfb, 0xb5, 0x67, 0x29, 0x35, 0x7b, 0xa9, 0xe7, 0x10, 0x5e, 0x8c, 0xc2, 0x7f, 0x31, 0xe3, 0xad, 0x5a, 0x14, 0xc6, 0x88, 0xa1, 0xef, 0x3d, 0x73, 0x84, 0xca, 0x18, 0x56, 0xeb, 0xa5, 0x77, 0x39, 0xce, 0x80, 0x52, 0x1c, 0x6a, 0x24, 0xf6, 0xb8, 0x4f, 0x1, 0xd3, 0x9d, 0x20, 0x6e, 0xbc, 0xf2, 0x5, 0x4b, 0x99, 0xd7, 0xfe, 0xb0, 0x62, 0x2c, 0xdb, 0x95, 0x47, 0x9, 0xb4, 0xfa, 0x28, 0x66, 0x91, 0xdf, 0xd, 0x43, 0x5f, 0x11, 0xc3, 0x8d, 0x7a, 0x34, 0xe6, 0xa8, 0x15, 0x5b, 0x89, 0xc7, 0x30, 0x7e, 0xac, 0xe2, 0xcb, 0x85, 0x57, 0x19, 0xee, 0xa0, 0x72, 0x3c, 0x81, 0xcf, 0x1d, 0x53, 0xa4, 0xea, 0x38, 0x76, 0xd4, 0x9a, 0x48, 0x6, 0xf1, 0xbf, 0x6d, 0x23, 0x9e, 0xd0, 0x2, 0x4c, 0xbb, 0xf5, 0x27, 0x69, 0x40, 0xe, 0xdc, 0x92, 0x65, 0x2b, 0xf9, 0xb7, 0xa, 0x44, 0x96, 0xd8, 0x2f, 0x61, 0xb3, 0xfd, 0xe1, 0xaf, 0x7d, 0x33, 0xc4, 0x8a, 0x58, 0x16, 0xab, 0xe5, 0x37, 0x79, 0x8e, 0xc0, 0x12, 0x5c, 0x75, 0x3b, 0xe9, 0xa7, 0x50, 0x1e, 0xcc, 0x82, 0x3f, 0x71, 0xa3, 0xed, 0x1a, 0x54, 0x86, 0xc8, 0xbe, 0xf0, 0x22, 0x6c, 0x9b, 0xd5, 0x7, 0x49, 0xf4, 0xba, 0x68, 0x26, 0xd1, 0x9f, 0x4d, 0x3, 0x2a, 0x64, 0xb6, 0xf8, 0xf, 0x41, 0x93, 0xdd, 0x60, 0x2e, 0xfc, 0xb2, 0x45, 0xb, 0xd9, 0x97, 0x8b, 0xc5, 0x17, 0x59, 0xae, 0xe0, 0x32, 0x7c, 0xc1, 0x8f, 0x5d, 0x13, 0xe4, 0xaa, 0x78, 0x36, 0x1f, 0x51, 0x83, 0xcd, 0x3a, 0x74, 0xa6, 0xe8, 0x55, 0x1b, 0xc9, 0x87, 0x70, 0x3e, 0xec, 0xa2}, - {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2, 0x84, 0xcb, 0x1a, 0x55, 0xa5, 0xea, 0x3b, 0x74, 0xc6, 0x89, 0x58, 0x17, 0xe7, 0xa8, 0x79, 0x36, 0x15, 0x5a, 0x8b, 0xc4, 0x34, 0x7b, 0xaa, 0xe5, 0x57, 0x18, 0xc9, 0x86, 0x76, 0x39, 0xe8, 0xa7, 0x91, 0xde, 0xf, 0x40, 0xb0, 0xff, 0x2e, 0x61, 0xd3, 0x9c, 0x4d, 0x2, 0xf2, 0xbd, 0x6c, 0x23, 0x2a, 0x65, 0xb4, 0xfb, 0xb, 0x44, 0x95, 0xda, 0x68, 0x27, 0xf6, 0xb9, 0x49, 0x6, 0xd7, 0x98, 0xae, 0xe1, 0x30, 0x7f, 0x8f, 0xc0, 0x11, 0x5e, 0xec, 0xa3, 0x72, 0x3d, 0xcd, 0x82, 0x53, 0x1c, 0x3f, 0x70, 0xa1, 0xee, 0x1e, 0x51, 0x80, 0xcf, 0x7d, 0x32, 0xe3, 0xac, 0x5c, 0x13, 0xc2, 0x8d, 0xbb, 0xf4, 0x25, 0x6a, 0x9a, 0xd5, 0x4, 0x4b, 0xf9, 0xb6, 0x67, 0x28, 0xd8, 0x97, 0x46, 0x9, 0x54, 0x1b, 0xca, 0x85, 0x75, 0x3a, 0xeb, 0xa4, 0x16, 0x59, 0x88, 0xc7, 0x37, 0x78, 0xa9, 0xe6, 0xd0, 0x9f, 0x4e, 0x1, 0xf1, 0xbe, 0x6f, 0x20, 0x92, 0xdd, 0xc, 0x43, 0xb3, 0xfc, 0x2d, 0x62, 0x41, 0xe, 0xdf, 0x90, 0x60, 0x2f, 0xfe, 0xb1, 0x3, 0x4c, 0x9d, 0xd2, 0x22, 0x6d, 0xbc, 0xf3, 0xc5, 0x8a, 0x5b, 0x14, 0xe4, 0xab, 0x7a, 0x35, 0x87, 0xc8, 0x19, 0x56, 0xa6, 0xe9, 0x38, 0x77, 0x7e, 0x31, 0xe0, 0xaf, 0x5f, 0x10, 0xc1, 0x8e, 0x3c, 0x73, 0xa2, 0xed, 0x1d, 0x52, 0x83, 0xcc, 0xfa, 0xb5, 0x64, 0x2b, 0xdb, 0x94, 0x45, 0xa, 0xb8, 0xf7, 0x26, 0x69, 0x99, 0xd6, 0x7, 0x48, 0x6b, 0x24, 0xf5, 0xba, 0x4a, 0x5, 0xd4, 0x9b, 0x29, 0x66, 0xb7, 0xf8, 0x8, 0x47, 0x96, 0xd9, 0xef, 0xa0, 0x71, 0x3e, 0xce, 0x81, 0x50, 0x1f, 0xad, 0xe2, 0x33, 0x7c, 0x8c, 0xc3, 0x12, 0x5d}, - {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17, 0x69, 0x39, 0xc9, 0x99, 0x34, 0x64, 0x94, 0xc4, 0xd3, 0x83, 0x73, 0x23, 0x8e, 0xde, 0x2e, 0x7e, 0xd2, 0x82, 0x72, 0x22, 0x8f, 0xdf, 0x2f, 0x7f, 0x68, 0x38, 0xc8, 0x98, 0x35, 0x65, 0x95, 0xc5, 0xbb, 0xeb, 0x1b, 0x4b, 0xe6, 0xb6, 0x46, 0x16, 0x1, 0x51, 0xa1, 0xf1, 0x5c, 0xc, 0xfc, 0xac, 0xb9, 0xe9, 0x19, 0x49, 0xe4, 0xb4, 0x44, 0x14, 0x3, 0x53, 0xa3, 0xf3, 0x5e, 0xe, 0xfe, 0xae, 0xd0, 0x80, 0x70, 0x20, 0x8d, 0xdd, 0x2d, 0x7d, 0x6a, 0x3a, 0xca, 0x9a, 0x37, 0x67, 0x97, 0xc7, 0x6b, 0x3b, 0xcb, 0x9b, 0x36, 0x66, 0x96, 0xc6, 0xd1, 0x81, 0x71, 0x21, 0x8c, 0xdc, 0x2c, 0x7c, 0x2, 0x52, 0xa2, 0xf2, 0x5f, 0xf, 0xff, 0xaf, 0xb8, 0xe8, 0x18, 0x48, 0xe5, 0xb5, 0x45, 0x15, 0x6f, 0x3f, 0xcf, 0x9f, 0x32, 0x62, 0x92, 0xc2, 0xd5, 0x85, 0x75, 0x25, 0x88, 0xd8, 0x28, 0x78, 0x6, 0x56, 0xa6, 0xf6, 0x5b, 0xb, 0xfb, 0xab, 0xbc, 0xec, 0x1c, 0x4c, 0xe1, 0xb1, 0x41, 0x11, 0xbd, 0xed, 0x1d, 0x4d, 0xe0, 0xb0, 0x40, 0x10, 0x7, 0x57, 0xa7, 0xf7, 0x5a, 0xa, 0xfa, 0xaa, 0xd4, 0x84, 0x74, 0x24, 0x89, 0xd9, 0x29, 0x79, 0x6e, 0x3e, 0xce, 0x9e, 0x33, 0x63, 0x93, 0xc3, 0xd6, 0x86, 0x76, 0x26, 0x8b, 0xdb, 0x2b, 0x7b, 0x6c, 0x3c, 0xcc, 0x9c, 0x31, 0x61, 0x91, 0xc1, 0xbf, 0xef, 0x1f, 0x4f, 0xe2, 0xb2, 0x42, 0x12, 0x5, 0x55, 0xa5, 0xf5, 0x58, 0x8, 0xf8, 0xa8, 0x4, 0x54, 0xa4, 0xf4, 0x59, 0x9, 0xf9, 0xa9, 0xbe, 0xee, 0x1e, 0x4e, 0xe3, 0xb3, 0x43, 0x13, 0x6d, 0x3d, 0xcd, 0x9d, 0x30, 0x60, 0x90, 0xc0, 0xd7, 0x87, 0x77, 0x27, 0x8a, 0xda, 0x2a, 0x7a}, - {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18, 0x79, 0x28, 0xdb, 0x8a, 0x20, 0x71, 0x82, 0xd3, 0xcb, 0x9a, 0x69, 0x38, 0x92, 0xc3, 0x30, 0x61, 0xf2, 0xa3, 0x50, 0x1, 0xab, 0xfa, 0x9, 0x58, 0x40, 0x11, 0xe2, 0xb3, 0x19, 0x48, 0xbb, 0xea, 0x8b, 0xda, 0x29, 0x78, 0xd2, 0x83, 0x70, 0x21, 0x39, 0x68, 0x9b, 0xca, 0x60, 0x31, 0xc2, 0x93, 0xf9, 0xa8, 0x5b, 0xa, 0xa0, 0xf1, 0x2, 0x53, 0x4b, 0x1a, 0xe9, 0xb8, 0x12, 0x43, 0xb0, 0xe1, 0x80, 0xd1, 0x22, 0x73, 0xd9, 0x88, 0x7b, 0x2a, 0x32, 0x63, 0x90, 0xc1, 0x6b, 0x3a, 0xc9, 0x98, 0xb, 0x5a, 0xa9, 0xf8, 0x52, 0x3, 0xf0, 0xa1, 0xb9, 0xe8, 0x1b, 0x4a, 0xe0, 0xb1, 0x42, 0x13, 0x72, 0x23, 0xd0, 0x81, 0x2b, 0x7a, 0x89, 0xd8, 0xc0, 0x91, 0x62, 0x33, 0x99, 0xc8, 0x3b, 0x6a, 0xef, 0xbe, 0x4d, 0x1c, 0xb6, 0xe7, 0x14, 0x45, 0x5d, 0xc, 0xff, 0xae, 0x4, 0x55, 0xa6, 0xf7, 0x96, 0xc7, 0x34, 0x65, 0xcf, 0x9e, 0x6d, 0x3c, 0x24, 0x75, 0x86, 0xd7, 0x7d, 0x2c, 0xdf, 0x8e, 0x1d, 0x4c, 0xbf, 0xee, 0x44, 0x15, 0xe6, 0xb7, 0xaf, 0xfe, 0xd, 0x5c, 0xf6, 0xa7, 0x54, 0x5, 0x64, 0x35, 0xc6, 0x97, 0x3d, 0x6c, 0x9f, 0xce, 0xd6, 0x87, 0x74, 0x25, 0x8f, 0xde, 0x2d, 0x7c, 0x16, 0x47, 0xb4, 0xe5, 0x4f, 0x1e, 0xed, 0xbc, 0xa4, 0xf5, 0x6, 0x57, 0xfd, 0xac, 0x5f, 0xe, 0x6f, 0x3e, 0xcd, 0x9c, 0x36, 0x67, 0x94, 0xc5, 0xdd, 0x8c, 0x7f, 0x2e, 0x84, 0xd5, 0x26, 0x77, 0xe4, 0xb5, 0x46, 0x17, 0xbd, 0xec, 0x1f, 0x4e, 0x56, 0x7, 0xf4, 0xa5, 0xf, 0x5e, 0xad, 0xfc, 0x9d, 0xcc, 0x3f, 0x6e, 0xc4, 0x95, 0x66, 0x37, 0x2f, 0x7e, 0x8d, 0xdc, 0x76, 0x27, 0xd4, 0x85}, - {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9, 0x49, 0x1b, 0xed, 0xbf, 0x1c, 0x4e, 0xb8, 0xea, 0xe3, 0xb1, 0x47, 0x15, 0xb6, 0xe4, 0x12, 0x40, 0x92, 0xc0, 0x36, 0x64, 0xc7, 0x95, 0x63, 0x31, 0x38, 0x6a, 0x9c, 0xce, 0x6d, 0x3f, 0xc9, 0x9b, 0xdb, 0x89, 0x7f, 0x2d, 0x8e, 0xdc, 0x2a, 0x78, 0x71, 0x23, 0xd5, 0x87, 0x24, 0x76, 0x80, 0xd2, 0x39, 0x6b, 0x9d, 0xcf, 0x6c, 0x3e, 0xc8, 0x9a, 0x93, 0xc1, 0x37, 0x65, 0xc6, 0x94, 0x62, 0x30, 0x70, 0x22, 0xd4, 0x86, 0x25, 0x77, 0x81, 0xd3, 0xda, 0x88, 0x7e, 0x2c, 0x8f, 0xdd, 0x2b, 0x79, 0xab, 0xf9, 0xf, 0x5d, 0xfe, 0xac, 0x5a, 0x8, 0x1, 0x53, 0xa5, 0xf7, 0x54, 0x6, 0xf0, 0xa2, 0xe2, 0xb0, 0x46, 0x14, 0xb7, 0xe5, 0x13, 0x41, 0x48, 0x1a, 0xec, 0xbe, 0x1d, 0x4f, 0xb9, 0xeb, 0x72, 0x20, 0xd6, 0x84, 0x27, 0x75, 0x83, 0xd1, 0xd8, 0x8a, 0x7c, 0x2e, 0x8d, 0xdf, 0x29, 0x7b, 0x3b, 0x69, 0x9f, 0xcd, 0x6e, 0x3c, 0xca, 0x98, 0x91, 0xc3, 0x35, 0x67, 0xc4, 0x96, 0x60, 0x32, 0xe0, 0xb2, 0x44, 0x16, 0xb5, 0xe7, 0x11, 0x43, 0x4a, 0x18, 0xee, 0xbc, 0x1f, 0x4d, 0xbb, 0xe9, 0xa9, 0xfb, 0xd, 0x5f, 0xfc, 0xae, 0x58, 0xa, 0x3, 0x51, 0xa7, 0xf5, 0x56, 0x4, 0xf2, 0xa0, 0x4b, 0x19, 0xef, 0xbd, 0x1e, 0x4c, 0xba, 0xe8, 0xe1, 0xb3, 0x45, 0x17, 0xb4, 0xe6, 0x10, 0x42, 0x2, 0x50, 0xa6, 0xf4, 0x57, 0x5, 0xf3, 0xa1, 0xa8, 0xfa, 0xc, 0x5e, 0xfd, 0xaf, 0x59, 0xb, 0xd9, 0x8b, 0x7d, 0x2f, 0x8c, 0xde, 0x28, 0x7a, 0x73, 0x21, 0xd7, 0x85, 0x26, 0x74, 0x82, 0xd0, 0x90, 0xc2, 0x34, 0x66, 0xc5, 0x97, 0x61, 0x33, 0x3a, 0x68, 0x9e, 0xcc, 0x6f, 0x3d, 0xcb, 0x99}, - {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6, 0x59, 0xa, 0xff, 0xac, 0x8, 0x5b, 0xae, 0xfd, 0xfb, 0xa8, 0x5d, 0xe, 0xaa, 0xf9, 0xc, 0x5f, 0xb2, 0xe1, 0x14, 0x47, 0xe3, 0xb0, 0x45, 0x16, 0x10, 0x43, 0xb6, 0xe5, 0x41, 0x12, 0xe7, 0xb4, 0xeb, 0xb8, 0x4d, 0x1e, 0xba, 0xe9, 0x1c, 0x4f, 0x49, 0x1a, 0xef, 0xbc, 0x18, 0x4b, 0xbe, 0xed, 0x79, 0x2a, 0xdf, 0x8c, 0x28, 0x7b, 0x8e, 0xdd, 0xdb, 0x88, 0x7d, 0x2e, 0x8a, 0xd9, 0x2c, 0x7f, 0x20, 0x73, 0x86, 0xd5, 0x71, 0x22, 0xd7, 0x84, 0x82, 0xd1, 0x24, 0x77, 0xd3, 0x80, 0x75, 0x26, 0xcb, 0x98, 0x6d, 0x3e, 0x9a, 0xc9, 0x3c, 0x6f, 0x69, 0x3a, 0xcf, 0x9c, 0x38, 0x6b, 0x9e, 0xcd, 0x92, 0xc1, 0x34, 0x67, 0xc3, 0x90, 0x65, 0x36, 0x30, 0x63, 0x96, 0xc5, 0x61, 0x32, 0xc7, 0x94, 0xf2, 0xa1, 0x54, 0x7, 0xa3, 0xf0, 0x5, 0x56, 0x50, 0x3, 0xf6, 0xa5, 0x1, 0x52, 0xa7, 0xf4, 0xab, 0xf8, 0xd, 0x5e, 0xfa, 0xa9, 0x5c, 0xf, 0x9, 0x5a, 0xaf, 0xfc, 0x58, 0xb, 0xfe, 0xad, 0x40, 0x13, 0xe6, 0xb5, 0x11, 0x42, 0xb7, 0xe4, 0xe2, 0xb1, 0x44, 0x17, 0xb3, 0xe0, 0x15, 0x46, 0x19, 0x4a, 0xbf, 0xec, 0x48, 0x1b, 0xee, 0xbd, 0xbb, 0xe8, 0x1d, 0x4e, 0xea, 0xb9, 0x4c, 0x1f, 0x8b, 0xd8, 0x2d, 0x7e, 0xda, 0x89, 0x7c, 0x2f, 0x29, 0x7a, 0x8f, 0xdc, 0x78, 0x2b, 0xde, 0x8d, 0xd2, 0x81, 0x74, 0x27, 0x83, 0xd0, 0x25, 0x76, 0x70, 0x23, 0xd6, 0x85, 0x21, 0x72, 0x87, 0xd4, 0x39, 0x6a, 0x9f, 0xcc, 0x68, 0x3b, 0xce, 0x9d, 0x9b, 0xc8, 0x3d, 0x6e, 0xca, 0x99, 0x6c, 0x3f, 0x60, 0x33, 0xc6, 0x95, 0x31, 0x62, 0x97, 0xc4, 0xc2, 0x91, 0x64, 0x37, 0x93, 0xc0, 0x35, 0x66}, - {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b, 0x29, 0x7d, 0x81, 0xd5, 0x64, 0x30, 0xcc, 0x98, 0xb3, 0xe7, 0x1b, 0x4f, 0xfe, 0xaa, 0x56, 0x2, 0x52, 0x6, 0xfa, 0xae, 0x1f, 0x4b, 0xb7, 0xe3, 0xc8, 0x9c, 0x60, 0x34, 0x85, 0xd1, 0x2d, 0x79, 0x7b, 0x2f, 0xd3, 0x87, 0x36, 0x62, 0x9e, 0xca, 0xe1, 0xb5, 0x49, 0x1d, 0xac, 0xf8, 0x4, 0x50, 0xa4, 0xf0, 0xc, 0x58, 0xe9, 0xbd, 0x41, 0x15, 0x3e, 0x6a, 0x96, 0xc2, 0x73, 0x27, 0xdb, 0x8f, 0x8d, 0xd9, 0x25, 0x71, 0xc0, 0x94, 0x68, 0x3c, 0x17, 0x43, 0xbf, 0xeb, 0x5a, 0xe, 0xf2, 0xa6, 0xf6, 0xa2, 0x5e, 0xa, 0xbb, 0xef, 0x13, 0x47, 0x6c, 0x38, 0xc4, 0x90, 0x21, 0x75, 0x89, 0xdd, 0xdf, 0x8b, 0x77, 0x23, 0x92, 0xc6, 0x3a, 0x6e, 0x45, 0x11, 0xed, 0xb9, 0x8, 0x5c, 0xa0, 0xf4, 0x55, 0x1, 0xfd, 0xa9, 0x18, 0x4c, 0xb0, 0xe4, 0xcf, 0x9b, 0x67, 0x33, 0x82, 0xd6, 0x2a, 0x7e, 0x7c, 0x28, 0xd4, 0x80, 0x31, 0x65, 0x99, 0xcd, 0xe6, 0xb2, 0x4e, 0x1a, 0xab, 0xff, 0x3, 0x57, 0x7, 0x53, 0xaf, 0xfb, 0x4a, 0x1e, 0xe2, 0xb6, 0x9d, 0xc9, 0x35, 0x61, 0xd0, 0x84, 0x78, 0x2c, 0x2e, 0x7a, 0x86, 0xd2, 0x63, 0x37, 0xcb, 0x9f, 0xb4, 0xe0, 0x1c, 0x48, 0xf9, 0xad, 0x51, 0x5, 0xf1, 0xa5, 0x59, 0xd, 0xbc, 0xe8, 0x14, 0x40, 0x6b, 0x3f, 0xc3, 0x97, 0x26, 0x72, 0x8e, 0xda, 0xd8, 0x8c, 0x70, 0x24, 0x95, 0xc1, 0x3d, 0x69, 0x42, 0x16, 0xea, 0xbe, 0xf, 0x5b, 0xa7, 0xf3, 0xa3, 0xf7, 0xb, 0x5f, 0xee, 0xba, 0x46, 0x12, 0x39, 0x6d, 0x91, 0xc5, 0x74, 0x20, 0xdc, 0x88, 0x8a, 0xde, 0x22, 0x76, 0xc7, 0x93, 0x6f, 0x3b, 0x10, 0x44, 0xb8, 0xec, 0x5d, 0x9, 0xf5, 0xa1}, - {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24, 0x39, 0x6c, 0x93, 0xc6, 0x70, 0x25, 0xda, 0x8f, 0xab, 0xfe, 0x1, 0x54, 0xe2, 0xb7, 0x48, 0x1d, 0x72, 0x27, 0xd8, 0x8d, 0x3b, 0x6e, 0x91, 0xc4, 0xe0, 0xb5, 0x4a, 0x1f, 0xa9, 0xfc, 0x3, 0x56, 0x4b, 0x1e, 0xe1, 0xb4, 0x2, 0x57, 0xa8, 0xfd, 0xd9, 0x8c, 0x73, 0x26, 0x90, 0xc5, 0x3a, 0x6f, 0xe4, 0xb1, 0x4e, 0x1b, 0xad, 0xf8, 0x7, 0x52, 0x76, 0x23, 0xdc, 0x89, 0x3f, 0x6a, 0x95, 0xc0, 0xdd, 0x88, 0x77, 0x22, 0x94, 0xc1, 0x3e, 0x6b, 0x4f, 0x1a, 0xe5, 0xb0, 0x6, 0x53, 0xac, 0xf9, 0x96, 0xc3, 0x3c, 0x69, 0xdf, 0x8a, 0x75, 0x20, 0x4, 0x51, 0xae, 0xfb, 0x4d, 0x18, 0xe7, 0xb2, 0xaf, 0xfa, 0x5, 0x50, 0xe6, 0xb3, 0x4c, 0x19, 0x3d, 0x68, 0x97, 0xc2, 0x74, 0x21, 0xde, 0x8b, 0xd5, 0x80, 0x7f, 0x2a, 0x9c, 0xc9, 0x36, 0x63, 0x47, 0x12, 0xed, 0xb8, 0xe, 0x5b, 0xa4, 0xf1, 0xec, 0xb9, 0x46, 0x13, 0xa5, 0xf0, 0xf, 0x5a, 0x7e, 0x2b, 0xd4, 0x81, 0x37, 0x62, 0x9d, 0xc8, 0xa7, 0xf2, 0xd, 0x58, 0xee, 0xbb, 0x44, 0x11, 0x35, 0x60, 0x9f, 0xca, 0x7c, 0x29, 0xd6, 0x83, 0x9e, 0xcb, 0x34, 0x61, 0xd7, 0x82, 0x7d, 0x28, 0xc, 0x59, 0xa6, 0xf3, 0x45, 0x10, 0xef, 0xba, 0x31, 0x64, 0x9b, 0xce, 0x78, 0x2d, 0xd2, 0x87, 0xa3, 0xf6, 0x9, 0x5c, 0xea, 0xbf, 0x40, 0x15, 0x8, 0x5d, 0xa2, 0xf7, 0x41, 0x14, 0xeb, 0xbe, 0x9a, 0xcf, 0x30, 0x65, 0xd3, 0x86, 0x79, 0x2c, 0x43, 0x16, 0xe9, 0xbc, 0xa, 0x5f, 0xa0, 0xf5, 0xd1, 0x84, 0x7b, 0x2e, 0x98, 0xcd, 0x32, 0x67, 0x7a, 0x2f, 0xd0, 0x85, 0x33, 0x66, 0x99, 0xcc, 0xe8, 0xbd, 0x42, 0x17, 0xa1, 0xf4, 0xb, 0x5e}, - {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35, 0x9, 0x5f, 0xa5, 0xf3, 0x4c, 0x1a, 0xe0, 0xb6, 0x83, 0xd5, 0x2f, 0x79, 0xc6, 0x90, 0x6a, 0x3c, 0x12, 0x44, 0xbe, 0xe8, 0x57, 0x1, 0xfb, 0xad, 0x98, 0xce, 0x34, 0x62, 0xdd, 0x8b, 0x71, 0x27, 0x1b, 0x4d, 0xb7, 0xe1, 0x5e, 0x8, 0xf2, 0xa4, 0x91, 0xc7, 0x3d, 0x6b, 0xd4, 0x82, 0x78, 0x2e, 0x24, 0x72, 0x88, 0xde, 0x61, 0x37, 0xcd, 0x9b, 0xae, 0xf8, 0x2, 0x54, 0xeb, 0xbd, 0x47, 0x11, 0x2d, 0x7b, 0x81, 0xd7, 0x68, 0x3e, 0xc4, 0x92, 0xa7, 0xf1, 0xb, 0x5d, 0xe2, 0xb4, 0x4e, 0x18, 0x36, 0x60, 0x9a, 0xcc, 0x73, 0x25, 0xdf, 0x89, 0xbc, 0xea, 0x10, 0x46, 0xf9, 0xaf, 0x55, 0x3, 0x3f, 0x69, 0x93, 0xc5, 0x7a, 0x2c, 0xd6, 0x80, 0xb5, 0xe3, 0x19, 0x4f, 0xf0, 0xa6, 0x5c, 0xa, 0x48, 0x1e, 0xe4, 0xb2, 0xd, 0x5b, 0xa1, 0xf7, 0xc2, 0x94, 0x6e, 0x38, 0x87, 0xd1, 0x2b, 0x7d, 0x41, 0x17, 0xed, 0xbb, 0x4, 0x52, 0xa8, 0xfe, 0xcb, 0x9d, 0x67, 0x31, 0x8e, 0xd8, 0x22, 0x74, 0x5a, 0xc, 0xf6, 0xa0, 0x1f, 0x49, 0xb3, 0xe5, 0xd0, 0x86, 0x7c, 0x2a, 0x95, 0xc3, 0x39, 0x6f, 0x53, 0x5, 0xff, 0xa9, 0x16, 0x40, 0xba, 0xec, 0xd9, 0x8f, 0x75, 0x23, 0x9c, 0xca, 0x30, 0x66, 0x6c, 0x3a, 0xc0, 0x96, 0x29, 0x7f, 0x85, 0xd3, 0xe6, 0xb0, 0x4a, 0x1c, 0xa3, 0xf5, 0xf, 0x59, 0x65, 0x33, 0xc9, 0x9f, 0x20, 0x76, 0x8c, 0xda, 0xef, 0xb9, 0x43, 0x15, 0xaa, 0xfc, 0x6, 0x50, 0x7e, 0x28, 0xd2, 0x84, 0x3b, 0x6d, 0x97, 0xc1, 0xf4, 0xa2, 0x58, 0xe, 0xb1, 0xe7, 0x1d, 0x4b, 0x77, 0x21, 0xdb, 0x8d, 0x32, 0x64, 0x9e, 0xc8, 0xfd, 0xab, 0x51, 0x7, 0xb8, 0xee, 0x14, 0x42}, - {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a, 0x19, 0x4e, 0xb7, 0xe0, 0x58, 0xf, 0xf6, 0xa1, 0x9b, 0xcc, 0x35, 0x62, 0xda, 0x8d, 0x74, 0x23, 0x32, 0x65, 0x9c, 0xcb, 0x73, 0x24, 0xdd, 0x8a, 0xb0, 0xe7, 0x1e, 0x49, 0xf1, 0xa6, 0x5f, 0x8, 0x2b, 0x7c, 0x85, 0xd2, 0x6a, 0x3d, 0xc4, 0x93, 0xa9, 0xfe, 0x7, 0x50, 0xe8, 0xbf, 0x46, 0x11, 0x64, 0x33, 0xca, 0x9d, 0x25, 0x72, 0x8b, 0xdc, 0xe6, 0xb1, 0x48, 0x1f, 0xa7, 0xf0, 0x9, 0x5e, 0x7d, 0x2a, 0xd3, 0x84, 0x3c, 0x6b, 0x92, 0xc5, 0xff, 0xa8, 0x51, 0x6, 0xbe, 0xe9, 0x10, 0x47, 0x56, 0x1, 0xf8, 0xaf, 0x17, 0x40, 0xb9, 0xee, 0xd4, 0x83, 0x7a, 0x2d, 0x95, 0xc2, 0x3b, 0x6c, 0x4f, 0x18, 0xe1, 0xb6, 0xe, 0x59, 0xa0, 0xf7, 0xcd, 0x9a, 0x63, 0x34, 0x8c, 0xdb, 0x22, 0x75, 0xc8, 0x9f, 0x66, 0x31, 0x89, 0xde, 0x27, 0x70, 0x4a, 0x1d, 0xe4, 0xb3, 0xb, 0x5c, 0xa5, 0xf2, 0xd1, 0x86, 0x7f, 0x28, 0x90, 0xc7, 0x3e, 0x69, 0x53, 0x4, 0xfd, 0xaa, 0x12, 0x45, 0xbc, 0xeb, 0xfa, 0xad, 0x54, 0x3, 0xbb, 0xec, 0x15, 0x42, 0x78, 0x2f, 0xd6, 0x81, 0x39, 0x6e, 0x97, 0xc0, 0xe3, 0xb4, 0x4d, 0x1a, 0xa2, 0xf5, 0xc, 0x5b, 0x61, 0x36, 0xcf, 0x98, 0x20, 0x77, 0x8e, 0xd9, 0xac, 0xfb, 0x2, 0x55, 0xed, 0xba, 0x43, 0x14, 0x2e, 0x79, 0x80, 0xd7, 0x6f, 0x38, 0xc1, 0x96, 0xb5, 0xe2, 0x1b, 0x4c, 0xf4, 0xa3, 0x5a, 0xd, 0x37, 0x60, 0x99, 0xce, 0x76, 0x21, 0xd8, 0x8f, 0x9e, 0xc9, 0x30, 0x67, 0xdf, 0x88, 0x71, 0x26, 0x1c, 0x4b, 0xb2, 0xe5, 0x5d, 0xa, 0xf3, 0xa4, 0x87, 0xd0, 0x29, 0x7e, 0xc6, 0x91, 0x68, 0x3f, 0x5, 0x52, 0xab, 0xfc, 0x44, 0x13, 0xea, 0xbd}, - {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f, 0xe9, 0xb1, 0x59, 0x1, 0x94, 0xcc, 0x24, 0x7c, 0x13, 0x4b, 0xa3, 0xfb, 0x6e, 0x36, 0xde, 0x86, 0xcf, 0x97, 0x7f, 0x27, 0xb2, 0xea, 0x2, 0x5a, 0x35, 0x6d, 0x85, 0xdd, 0x48, 0x10, 0xf8, 0xa0, 0x26, 0x7e, 0x96, 0xce, 0x5b, 0x3, 0xeb, 0xb3, 0xdc, 0x84, 0x6c, 0x34, 0xa1, 0xf9, 0x11, 0x49, 0x83, 0xdb, 0x33, 0x6b, 0xfe, 0xa6, 0x4e, 0x16, 0x79, 0x21, 0xc9, 0x91, 0x4, 0x5c, 0xb4, 0xec, 0x6a, 0x32, 0xda, 0x82, 0x17, 0x4f, 0xa7, 0xff, 0x90, 0xc8, 0x20, 0x78, 0xed, 0xb5, 0x5d, 0x5, 0x4c, 0x14, 0xfc, 0xa4, 0x31, 0x69, 0x81, 0xd9, 0xb6, 0xee, 0x6, 0x5e, 0xcb, 0x93, 0x7b, 0x23, 0xa5, 0xfd, 0x15, 0x4d, 0xd8, 0x80, 0x68, 0x30, 0x5f, 0x7, 0xef, 0xb7, 0x22, 0x7a, 0x92, 0xca, 0x1b, 0x43, 0xab, 0xf3, 0x66, 0x3e, 0xd6, 0x8e, 0xe1, 0xb9, 0x51, 0x9, 0x9c, 0xc4, 0x2c, 0x74, 0xf2, 0xaa, 0x42, 0x1a, 0x8f, 0xd7, 0x3f, 0x67, 0x8, 0x50, 0xb8, 0xe0, 0x75, 0x2d, 0xc5, 0x9d, 0xd4, 0x8c, 0x64, 0x3c, 0xa9, 0xf1, 0x19, 0x41, 0x2e, 0x76, 0x9e, 0xc6, 0x53, 0xb, 0xe3, 0xbb, 0x3d, 0x65, 0x8d, 0xd5, 0x40, 0x18, 0xf0, 0xa8, 0xc7, 0x9f, 0x77, 0x2f, 0xba, 0xe2, 0xa, 0x52, 0x98, 0xc0, 0x28, 0x70, 0xe5, 0xbd, 0x55, 0xd, 0x62, 0x3a, 0xd2, 0x8a, 0x1f, 0x47, 0xaf, 0xf7, 0x71, 0x29, 0xc1, 0x99, 0xc, 0x54, 0xbc, 0xe4, 0x8b, 0xd3, 0x3b, 0x63, 0xf6, 0xae, 0x46, 0x1e, 0x57, 0xf, 0xe7, 0xbf, 0x2a, 0x72, 0x9a, 0xc2, 0xad, 0xf5, 0x1d, 0x45, 0xd0, 0x88, 0x60, 0x38, 0xbe, 0xe6, 0xe, 0x56, 0xc3, 0x9b, 0x73, 0x2b, 0x44, 0x1c, 0xf4, 0xac, 0x39, 0x61, 0x89, 0xd1}, - {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60, 0xf9, 0xa0, 0x4b, 0x12, 0x80, 0xd9, 0x32, 0x6b, 0xb, 0x52, 0xb9, 0xe0, 0x72, 0x2b, 0xc0, 0x99, 0xef, 0xb6, 0x5d, 0x4, 0x96, 0xcf, 0x24, 0x7d, 0x1d, 0x44, 0xaf, 0xf6, 0x64, 0x3d, 0xd6, 0x8f, 0x16, 0x4f, 0xa4, 0xfd, 0x6f, 0x36, 0xdd, 0x84, 0xe4, 0xbd, 0x56, 0xf, 0x9d, 0xc4, 0x2f, 0x76, 0xc3, 0x9a, 0x71, 0x28, 0xba, 0xe3, 0x8, 0x51, 0x31, 0x68, 0x83, 0xda, 0x48, 0x11, 0xfa, 0xa3, 0x3a, 0x63, 0x88, 0xd1, 0x43, 0x1a, 0xf1, 0xa8, 0xc8, 0x91, 0x7a, 0x23, 0xb1, 0xe8, 0x3, 0x5a, 0x2c, 0x75, 0x9e, 0xc7, 0x55, 0xc, 0xe7, 0xbe, 0xde, 0x87, 0x6c, 0x35, 0xa7, 0xfe, 0x15, 0x4c, 0xd5, 0x8c, 0x67, 0x3e, 0xac, 0xf5, 0x1e, 0x47, 0x27, 0x7e, 0x95, 0xcc, 0x5e, 0x7, 0xec, 0xb5, 0x9b, 0xc2, 0x29, 0x70, 0xe2, 0xbb, 0x50, 0x9, 0x69, 0x30, 0xdb, 0x82, 0x10, 0x49, 0xa2, 0xfb, 0x62, 0x3b, 0xd0, 0x89, 0x1b, 0x42, 0xa9, 0xf0, 0x90, 0xc9, 0x22, 0x7b, 0xe9, 0xb0, 0x5b, 0x2, 0x74, 0x2d, 0xc6, 0x9f, 0xd, 0x54, 0xbf, 0xe6, 0x86, 0xdf, 0x34, 0x6d, 0xff, 0xa6, 0x4d, 0x14, 0x8d, 0xd4, 0x3f, 0x66, 0xf4, 0xad, 0x46, 0x1f, 0x7f, 0x26, 0xcd, 0x94, 0x6, 0x5f, 0xb4, 0xed, 0x58, 0x1, 0xea, 0xb3, 0x21, 0x78, 0x93, 0xca, 0xaa, 0xf3, 0x18, 0x41, 0xd3, 0x8a, 0x61, 0x38, 0xa1, 0xf8, 0x13, 0x4a, 0xd8, 0x81, 0x6a, 0x33, 0x53, 0xa, 0xe1, 0xb8, 0x2a, 0x73, 0x98, 0xc1, 0xb7, 0xee, 0x5, 0x5c, 0xce, 0x97, 0x7c, 0x25, 0x45, 0x1c, 0xf7, 0xae, 0x3c, 0x65, 0x8e, 0xd7, 0x4e, 0x17, 0xfc, 0xa5, 0x37, 0x6e, 0x85, 0xdc, 0xbc, 0xe5, 0xe, 0x57, 0xc5, 0x9c, 0x77, 0x2e}, - {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71, 0xc9, 0x93, 0x7d, 0x27, 0xbc, 0xe6, 0x8, 0x52, 0x23, 0x79, 0x97, 0xcd, 0x56, 0xc, 0xe2, 0xb8, 0x8f, 0xd5, 0x3b, 0x61, 0xfa, 0xa0, 0x4e, 0x14, 0x65, 0x3f, 0xd1, 0x8b, 0x10, 0x4a, 0xa4, 0xfe, 0x46, 0x1c, 0xf2, 0xa8, 0x33, 0x69, 0x87, 0xdd, 0xac, 0xf6, 0x18, 0x42, 0xd9, 0x83, 0x6d, 0x37, 0x3, 0x59, 0xb7, 0xed, 0x76, 0x2c, 0xc2, 0x98, 0xe9, 0xb3, 0x5d, 0x7, 0x9c, 0xc6, 0x28, 0x72, 0xca, 0x90, 0x7e, 0x24, 0xbf, 0xe5, 0xb, 0x51, 0x20, 0x7a, 0x94, 0xce, 0x55, 0xf, 0xe1, 0xbb, 0x8c, 0xd6, 0x38, 0x62, 0xf9, 0xa3, 0x4d, 0x17, 0x66, 0x3c, 0xd2, 0x88, 0x13, 0x49, 0xa7, 0xfd, 0x45, 0x1f, 0xf1, 0xab, 0x30, 0x6a, 0x84, 0xde, 0xaf, 0xf5, 0x1b, 0x41, 0xda, 0x80, 0x6e, 0x34, 0x6, 0x5c, 0xb2, 0xe8, 0x73, 0x29, 0xc7, 0x9d, 0xec, 0xb6, 0x58, 0x2, 0x99, 0xc3, 0x2d, 0x77, 0xcf, 0x95, 0x7b, 0x21, 0xba, 0xe0, 0xe, 0x54, 0x25, 0x7f, 0x91, 0xcb, 0x50, 0xa, 0xe4, 0xbe, 0x89, 0xd3, 0x3d, 0x67, 0xfc, 0xa6, 0x48, 0x12, 0x63, 0x39, 0xd7, 0x8d, 0x16, 0x4c, 0xa2, 0xf8, 0x40, 0x1a, 0xf4, 0xae, 0x35, 0x6f, 0x81, 0xdb, 0xaa, 0xf0, 0x1e, 0x44, 0xdf, 0x85, 0x6b, 0x31, 0x5, 0x5f, 0xb1, 0xeb, 0x70, 0x2a, 0xc4, 0x9e, 0xef, 0xb5, 0x5b, 0x1, 0x9a, 0xc0, 0x2e, 0x74, 0xcc, 0x96, 0x78, 0x22, 0xb9, 0xe3, 0xd, 0x57, 0x26, 0x7c, 0x92, 0xc8, 0x53, 0x9, 0xe7, 0xbd, 0x8a, 0xd0, 0x3e, 0x64, 0xff, 0xa5, 0x4b, 0x11, 0x60, 0x3a, 0xd4, 0x8e, 0x15, 0x4f, 0xa1, 0xfb, 0x43, 0x19, 0xf7, 0xad, 0x36, 0x6c, 0x82, 0xd8, 0xa9, 0xf3, 0x1d, 0x47, 0xdc, 0x86, 0x68, 0x32}, - {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e, 0xd9, 0x82, 0x6f, 0x34, 0xa8, 0xf3, 0x1e, 0x45, 0x3b, 0x60, 0x8d, 0xd6, 0x4a, 0x11, 0xfc, 0xa7, 0xaf, 0xf4, 0x19, 0x42, 0xde, 0x85, 0x68, 0x33, 0x4d, 0x16, 0xfb, 0xa0, 0x3c, 0x67, 0x8a, 0xd1, 0x76, 0x2d, 0xc0, 0x9b, 0x7, 0x5c, 0xb1, 0xea, 0x94, 0xcf, 0x22, 0x79, 0xe5, 0xbe, 0x53, 0x8, 0x43, 0x18, 0xf5, 0xae, 0x32, 0x69, 0x84, 0xdf, 0xa1, 0xfa, 0x17, 0x4c, 0xd0, 0x8b, 0x66, 0x3d, 0x9a, 0xc1, 0x2c, 0x77, 0xeb, 0xb0, 0x5d, 0x6, 0x78, 0x23, 0xce, 0x95, 0x9, 0x52, 0xbf, 0xe4, 0xec, 0xb7, 0x5a, 0x1, 0x9d, 0xc6, 0x2b, 0x70, 0xe, 0x55, 0xb8, 0xe3, 0x7f, 0x24, 0xc9, 0x92, 0x35, 0x6e, 0x83, 0xd8, 0x44, 0x1f, 0xf2, 0xa9, 0xd7, 0x8c, 0x61, 0x3a, 0xa6, 0xfd, 0x10, 0x4b, 0x86, 0xdd, 0x30, 0x6b, 0xf7, 0xac, 0x41, 0x1a, 0x64, 0x3f, 0xd2, 0x89, 0x15, 0x4e, 0xa3, 0xf8, 0x5f, 0x4, 0xe9, 0xb2, 0x2e, 0x75, 0x98, 0xc3, 0xbd, 0xe6, 0xb, 0x50, 0xcc, 0x97, 0x7a, 0x21, 0x29, 0x72, 0x9f, 0xc4, 0x58, 0x3, 0xee, 0xb5, 0xcb, 0x90, 0x7d, 0x26, 0xba, 0xe1, 0xc, 0x57, 0xf0, 0xab, 0x46, 0x1d, 0x81, 0xda, 0x37, 0x6c, 0x12, 0x49, 0xa4, 0xff, 0x63, 0x38, 0xd5, 0x8e, 0xc5, 0x9e, 0x73, 0x28, 0xb4, 0xef, 0x2, 0x59, 0x27, 0x7c, 0x91, 0xca, 0x56, 0xd, 0xe0, 0xbb, 0x1c, 0x47, 0xaa, 0xf1, 0x6d, 0x36, 0xdb, 0x80, 0xfe, 0xa5, 0x48, 0x13, 0x8f, 0xd4, 0x39, 0x62, 0x6a, 0x31, 0xdc, 0x87, 0x1b, 0x40, 0xad, 0xf6, 0x88, 0xd3, 0x3e, 0x65, 0xf9, 0xa2, 0x4f, 0x14, 0xb3, 0xe8, 0x5, 0x5e, 0xc2, 0x99, 0x74, 0x2f, 0x51, 0xa, 0xe7, 0xbc, 0x20, 0x7b, 0x96, 0xcd}, - {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53, 0xa9, 0xf5, 0x11, 0x4d, 0xc4, 0x98, 0x7c, 0x20, 0x73, 0x2f, 0xcb, 0x97, 0x1e, 0x42, 0xa6, 0xfa, 0x4f, 0x13, 0xf7, 0xab, 0x22, 0x7e, 0x9a, 0xc6, 0x95, 0xc9, 0x2d, 0x71, 0xf8, 0xa4, 0x40, 0x1c, 0xe6, 0xba, 0x5e, 0x2, 0x8b, 0xd7, 0x33, 0x6f, 0x3c, 0x60, 0x84, 0xd8, 0x51, 0xd, 0xe9, 0xb5, 0x9e, 0xc2, 0x26, 0x7a, 0xf3, 0xaf, 0x4b, 0x17, 0x44, 0x18, 0xfc, 0xa0, 0x29, 0x75, 0x91, 0xcd, 0x37, 0x6b, 0x8f, 0xd3, 0x5a, 0x6, 0xe2, 0xbe, 0xed, 0xb1, 0x55, 0x9, 0x80, 0xdc, 0x38, 0x64, 0xd1, 0x8d, 0x69, 0x35, 0xbc, 0xe0, 0x4, 0x58, 0xb, 0x57, 0xb3, 0xef, 0x66, 0x3a, 0xde, 0x82, 0x78, 0x24, 0xc0, 0x9c, 0x15, 0x49, 0xad, 0xf1, 0xa2, 0xfe, 0x1a, 0x46, 0xcf, 0x93, 0x77, 0x2b, 0x21, 0x7d, 0x99, 0xc5, 0x4c, 0x10, 0xf4, 0xa8, 0xfb, 0xa7, 0x43, 0x1f, 0x96, 0xca, 0x2e, 0x72, 0x88, 0xd4, 0x30, 0x6c, 0xe5, 0xb9, 0x5d, 0x1, 0x52, 0xe, 0xea, 0xb6, 0x3f, 0x63, 0x87, 0xdb, 0x6e, 0x32, 0xd6, 0x8a, 0x3, 0x5f, 0xbb, 0xe7, 0xb4, 0xe8, 0xc, 0x50, 0xd9, 0x85, 0x61, 0x3d, 0xc7, 0x9b, 0x7f, 0x23, 0xaa, 0xf6, 0x12, 0x4e, 0x1d, 0x41, 0xa5, 0xf9, 0x70, 0x2c, 0xc8, 0x94, 0xbf, 0xe3, 0x7, 0x5b, 0xd2, 0x8e, 0x6a, 0x36, 0x65, 0x39, 0xdd, 0x81, 0x8, 0x54, 0xb0, 0xec, 0x16, 0x4a, 0xae, 0xf2, 0x7b, 0x27, 0xc3, 0x9f, 0xcc, 0x90, 0x74, 0x28, 0xa1, 0xfd, 0x19, 0x45, 0xf0, 0xac, 0x48, 0x14, 0x9d, 0xc1, 0x25, 0x79, 0x2a, 0x76, 0x92, 0xce, 0x47, 0x1b, 0xff, 0xa3, 0x59, 0x5, 0xe1, 0xbd, 0x34, 0x68, 0x8c, 0xd0, 0x83, 0xdf, 0x3b, 0x67, 0xee, 0xb2, 0x56, 0xa}, - {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c, 0xb9, 0xe4, 0x3, 0x5e, 0xd0, 0x8d, 0x6a, 0x37, 0x6b, 0x36, 0xd1, 0x8c, 0x2, 0x5f, 0xb8, 0xe5, 0x6f, 0x32, 0xd5, 0x88, 0x6, 0x5b, 0xbc, 0xe1, 0xbd, 0xe0, 0x7, 0x5a, 0xd4, 0x89, 0x6e, 0x33, 0xd6, 0x8b, 0x6c, 0x31, 0xbf, 0xe2, 0x5, 0x58, 0x4, 0x59, 0xbe, 0xe3, 0x6d, 0x30, 0xd7, 0x8a, 0xde, 0x83, 0x64, 0x39, 0xb7, 0xea, 0xd, 0x50, 0xc, 0x51, 0xb6, 0xeb, 0x65, 0x38, 0xdf, 0x82, 0x67, 0x3a, 0xdd, 0x80, 0xe, 0x53, 0xb4, 0xe9, 0xb5, 0xe8, 0xf, 0x52, 0xdc, 0x81, 0x66, 0x3b, 0xb1, 0xec, 0xb, 0x56, 0xd8, 0x85, 0x62, 0x3f, 0x63, 0x3e, 0xd9, 0x84, 0xa, 0x57, 0xb0, 0xed, 0x8, 0x55, 0xb2, 0xef, 0x61, 0x3c, 0xdb, 0x86, 0xda, 0x87, 0x60, 0x3d, 0xb3, 0xee, 0x9, 0x54, 0xa1, 0xfc, 0x1b, 0x46, 0xc8, 0x95, 0x72, 0x2f, 0x73, 0x2e, 0xc9, 0x94, 0x1a, 0x47, 0xa0, 0xfd, 0x18, 0x45, 0xa2, 0xff, 0x71, 0x2c, 0xcb, 0x96, 0xca, 0x97, 0x70, 0x2d, 0xa3, 0xfe, 0x19, 0x44, 0xce, 0x93, 0x74, 0x29, 0xa7, 0xfa, 0x1d, 0x40, 0x1c, 0x41, 0xa6, 0xfb, 0x75, 0x28, 0xcf, 0x92, 0x77, 0x2a, 0xcd, 0x90, 0x1e, 0x43, 0xa4, 0xf9, 0xa5, 0xf8, 0x1f, 0x42, 0xcc, 0x91, 0x76, 0x2b, 0x7f, 0x22, 0xc5, 0x98, 0x16, 0x4b, 0xac, 0xf1, 0xad, 0xf0, 0x17, 0x4a, 0xc4, 0x99, 0x7e, 0x23, 0xc6, 0x9b, 0x7c, 0x21, 0xaf, 0xf2, 0x15, 0x48, 0x14, 0x49, 0xae, 0xf3, 0x7d, 0x20, 0xc7, 0x9a, 0x10, 0x4d, 0xaa, 0xf7, 0x79, 0x24, 0xc3, 0x9e, 0xc2, 0x9f, 0x78, 0x25, 0xab, 0xf6, 0x11, 0x4c, 0xa9, 0xf4, 0x13, 0x4e, 0xc0, 0x9d, 0x7a, 0x27, 0x7b, 0x26, 0xc1, 0x9c, 0x12, 0x4f, 0xa8, 0xf5}, - {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d, 0x89, 0xd7, 0x35, 0x6b, 0xec, 0xb2, 0x50, 0xe, 0x43, 0x1d, 0xff, 0xa1, 0x26, 0x78, 0x9a, 0xc4, 0xf, 0x51, 0xb3, 0xed, 0x6a, 0x34, 0xd6, 0x88, 0xc5, 0x9b, 0x79, 0x27, 0xa0, 0xfe, 0x1c, 0x42, 0x86, 0xd8, 0x3a, 0x64, 0xe3, 0xbd, 0x5f, 0x1, 0x4c, 0x12, 0xf0, 0xae, 0x29, 0x77, 0x95, 0xcb, 0x1e, 0x40, 0xa2, 0xfc, 0x7b, 0x25, 0xc7, 0x99, 0xd4, 0x8a, 0x68, 0x36, 0xb1, 0xef, 0xd, 0x53, 0x97, 0xc9, 0x2b, 0x75, 0xf2, 0xac, 0x4e, 0x10, 0x5d, 0x3, 0xe1, 0xbf, 0x38, 0x66, 0x84, 0xda, 0x11, 0x4f, 0xad, 0xf3, 0x74, 0x2a, 0xc8, 0x96, 0xdb, 0x85, 0x67, 0x39, 0xbe, 0xe0, 0x2, 0x5c, 0x98, 0xc6, 0x24, 0x7a, 0xfd, 0xa3, 0x41, 0x1f, 0x52, 0xc, 0xee, 0xb0, 0x37, 0x69, 0x8b, 0xd5, 0x3c, 0x62, 0x80, 0xde, 0x59, 0x7, 0xe5, 0xbb, 0xf6, 0xa8, 0x4a, 0x14, 0x93, 0xcd, 0x2f, 0x71, 0xb5, 0xeb, 0x9, 0x57, 0xd0, 0x8e, 0x6c, 0x32, 0x7f, 0x21, 0xc3, 0x9d, 0x1a, 0x44, 0xa6, 0xf8, 0x33, 0x6d, 0x8f, 0xd1, 0x56, 0x8, 0xea, 0xb4, 0xf9, 0xa7, 0x45, 0x1b, 0x9c, 0xc2, 0x20, 0x7e, 0xba, 0xe4, 0x6, 0x58, 0xdf, 0x81, 0x63, 0x3d, 0x70, 0x2e, 0xcc, 0x92, 0x15, 0x4b, 0xa9, 0xf7, 0x22, 0x7c, 0x9e, 0xc0, 0x47, 0x19, 0xfb, 0xa5, 0xe8, 0xb6, 0x54, 0xa, 0x8d, 0xd3, 0x31, 0x6f, 0xab, 0xf5, 0x17, 0x49, 0xce, 0x90, 0x72, 0x2c, 0x61, 0x3f, 0xdd, 0x83, 0x4, 0x5a, 0xb8, 0xe6, 0x2d, 0x73, 0x91, 0xcf, 0x48, 0x16, 0xf4, 0xaa, 0xe7, 0xb9, 0x5b, 0x5, 0x82, 0xdc, 0x3e, 0x60, 0xa4, 0xfa, 0x18, 0x46, 0xc1, 0x9f, 0x7d, 0x23, 0x6e, 0x30, 0xd2, 0x8c, 0xb, 0x55, 0xb7, 0xe9}, - {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42, 0x99, 0xc6, 0x27, 0x78, 0xf8, 0xa7, 0x46, 0x19, 0x5b, 0x4, 0xe5, 0xba, 0x3a, 0x65, 0x84, 0xdb, 0x2f, 0x70, 0x91, 0xce, 0x4e, 0x11, 0xf0, 0xaf, 0xed, 0xb2, 0x53, 0xc, 0x8c, 0xd3, 0x32, 0x6d, 0xb6, 0xe9, 0x8, 0x57, 0xd7, 0x88, 0x69, 0x36, 0x74, 0x2b, 0xca, 0x95, 0x15, 0x4a, 0xab, 0xf4, 0x5e, 0x1, 0xe0, 0xbf, 0x3f, 0x60, 0x81, 0xde, 0x9c, 0xc3, 0x22, 0x7d, 0xfd, 0xa2, 0x43, 0x1c, 0xc7, 0x98, 0x79, 0x26, 0xa6, 0xf9, 0x18, 0x47, 0x5, 0x5a, 0xbb, 0xe4, 0x64, 0x3b, 0xda, 0x85, 0x71, 0x2e, 0xcf, 0x90, 0x10, 0x4f, 0xae, 0xf1, 0xb3, 0xec, 0xd, 0x52, 0xd2, 0x8d, 0x6c, 0x33, 0xe8, 0xb7, 0x56, 0x9, 0x89, 0xd6, 0x37, 0x68, 0x2a, 0x75, 0x94, 0xcb, 0x4b, 0x14, 0xf5, 0xaa, 0xbc, 0xe3, 0x2, 0x5d, 0xdd, 0x82, 0x63, 0x3c, 0x7e, 0x21, 0xc0, 0x9f, 0x1f, 0x40, 0xa1, 0xfe, 0x25, 0x7a, 0x9b, 0xc4, 0x44, 0x1b, 0xfa, 0xa5, 0xe7, 0xb8, 0x59, 0x6, 0x86, 0xd9, 0x38, 0x67, 0x93, 0xcc, 0x2d, 0x72, 0xf2, 0xad, 0x4c, 0x13, 0x51, 0xe, 0xef, 0xb0, 0x30, 0x6f, 0x8e, 0xd1, 0xa, 0x55, 0xb4, 0xeb, 0x6b, 0x34, 0xd5, 0x8a, 0xc8, 0x97, 0x76, 0x29, 0xa9, 0xf6, 0x17, 0x48, 0xe2, 0xbd, 0x5c, 0x3, 0x83, 0xdc, 0x3d, 0x62, 0x20, 0x7f, 0x9e, 0xc1, 0x41, 0x1e, 0xff, 0xa0, 0x7b, 0x24, 0xc5, 0x9a, 0x1a, 0x45, 0xa4, 0xfb, 0xb9, 0xe6, 0x7, 0x58, 0xd8, 0x87, 0x66, 0x39, 0xcd, 0x92, 0x73, 0x2c, 0xac, 0xf3, 0x12, 0x4d, 0xf, 0x50, 0xb1, 0xee, 0x6e, 0x31, 0xd0, 0x8f, 0x54, 0xb, 0xea, 0xb5, 0x35, 0x6a, 0x8b, 0xd4, 0x96, 0xc9, 0x28, 0x77, 0xf7, 0xa8, 0x49, 0x16}, - {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a, 0x4e, 0x2e, 0x8e, 0xee, 0xd3, 0xb3, 0x13, 0x73, 0x69, 0x9, 0xa9, 0xc9, 0xf4, 0x94, 0x34, 0x54, 0x9c, 0xfc, 0x5c, 0x3c, 0x1, 0x61, 0xc1, 0xa1, 0xbb, 0xdb, 0x7b, 0x1b, 0x26, 0x46, 0xe6, 0x86, 0xd2, 0xb2, 0x12, 0x72, 0x4f, 0x2f, 0x8f, 0xef, 0xf5, 0x95, 0x35, 0x55, 0x68, 0x8, 0xa8, 0xc8, 0x25, 0x45, 0xe5, 0x85, 0xb8, 0xd8, 0x78, 0x18, 0x2, 0x62, 0xc2, 0xa2, 0x9f, 0xff, 0x5f, 0x3f, 0x6b, 0xb, 0xab, 0xcb, 0xf6, 0x96, 0x36, 0x56, 0x4c, 0x2c, 0x8c, 0xec, 0xd1, 0xb1, 0x11, 0x71, 0xb9, 0xd9, 0x79, 0x19, 0x24, 0x44, 0xe4, 0x84, 0x9e, 0xfe, 0x5e, 0x3e, 0x3, 0x63, 0xc3, 0xa3, 0xf7, 0x97, 0x37, 0x57, 0x6a, 0xa, 0xaa, 0xca, 0xd0, 0xb0, 0x10, 0x70, 0x4d, 0x2d, 0x8d, 0xed, 0x4a, 0x2a, 0x8a, 0xea, 0xd7, 0xb7, 0x17, 0x77, 0x6d, 0xd, 0xad, 0xcd, 0xf0, 0x90, 0x30, 0x50, 0x4, 0x64, 0xc4, 0xa4, 0x99, 0xf9, 0x59, 0x39, 0x23, 0x43, 0xe3, 0x83, 0xbe, 0xde, 0x7e, 0x1e, 0xd6, 0xb6, 0x16, 0x76, 0x4b, 0x2b, 0x8b, 0xeb, 0xf1, 0x91, 0x31, 0x51, 0x6c, 0xc, 0xac, 0xcc, 0x98, 0xf8, 0x58, 0x38, 0x5, 0x65, 0xc5, 0xa5, 0xbf, 0xdf, 0x7f, 0x1f, 0x22, 0x42, 0xe2, 0x82, 0x6f, 0xf, 0xaf, 0xcf, 0xf2, 0x92, 0x32, 0x52, 0x48, 0x28, 0x88, 0xe8, 0xd5, 0xb5, 0x15, 0x75, 0x21, 0x41, 0xe1, 0x81, 0xbc, 0xdc, 0x7c, 0x1c, 0x6, 0x66, 0xc6, 0xa6, 0x9b, 0xfb, 0x5b, 0x3b, 0xf3, 0x93, 0x33, 0x53, 0x6e, 0xe, 0xae, 0xce, 0xd4, 0xb4, 0x14, 0x74, 0x49, 0x29, 0x89, 0xe9, 0xbd, 0xdd, 0x7d, 0x1d, 0x20, 0x40, 0xe0, 0x80, 0x9a, 0xfa, 0x5a, 0x3a, 0x7, 0x67, 0xc7, 0xa7}, - {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15, 0x5e, 0x3f, 0x9c, 0xfd, 0xc7, 0xa6, 0x5, 0x64, 0x71, 0x10, 0xb3, 0xd2, 0xe8, 0x89, 0x2a, 0x4b, 0xbc, 0xdd, 0x7e, 0x1f, 0x25, 0x44, 0xe7, 0x86, 0x93, 0xf2, 0x51, 0x30, 0xa, 0x6b, 0xc8, 0xa9, 0xe2, 0x83, 0x20, 0x41, 0x7b, 0x1a, 0xb9, 0xd8, 0xcd, 0xac, 0xf, 0x6e, 0x54, 0x35, 0x96, 0xf7, 0x65, 0x4, 0xa7, 0xc6, 0xfc, 0x9d, 0x3e, 0x5f, 0x4a, 0x2b, 0x88, 0xe9, 0xd3, 0xb2, 0x11, 0x70, 0x3b, 0x5a, 0xf9, 0x98, 0xa2, 0xc3, 0x60, 0x1, 0x14, 0x75, 0xd6, 0xb7, 0x8d, 0xec, 0x4f, 0x2e, 0xd9, 0xb8, 0x1b, 0x7a, 0x40, 0x21, 0x82, 0xe3, 0xf6, 0x97, 0x34, 0x55, 0x6f, 0xe, 0xad, 0xcc, 0x87, 0xe6, 0x45, 0x24, 0x1e, 0x7f, 0xdc, 0xbd, 0xa8, 0xc9, 0x6a, 0xb, 0x31, 0x50, 0xf3, 0x92, 0xca, 0xab, 0x8, 0x69, 0x53, 0x32, 0x91, 0xf0, 0xe5, 0x84, 0x27, 0x46, 0x7c, 0x1d, 0xbe, 0xdf, 0x94, 0xf5, 0x56, 0x37, 0xd, 0x6c, 0xcf, 0xae, 0xbb, 0xda, 0x79, 0x18, 0x22, 0x43, 0xe0, 0x81, 0x76, 0x17, 0xb4, 0xd5, 0xef, 0x8e, 0x2d, 0x4c, 0x59, 0x38, 0x9b, 0xfa, 0xc0, 0xa1, 0x2, 0x63, 0x28, 0x49, 0xea, 0x8b, 0xb1, 0xd0, 0x73, 0x12, 0x7, 0x66, 0xc5, 0xa4, 0x9e, 0xff, 0x5c, 0x3d, 0xaf, 0xce, 0x6d, 0xc, 0x36, 0x57, 0xf4, 0x95, 0x80, 0xe1, 0x42, 0x23, 0x19, 0x78, 0xdb, 0xba, 0xf1, 0x90, 0x33, 0x52, 0x68, 0x9, 0xaa, 0xcb, 0xde, 0xbf, 0x1c, 0x7d, 0x47, 0x26, 0x85, 0xe4, 0x13, 0x72, 0xd1, 0xb0, 0x8a, 0xeb, 0x48, 0x29, 0x3c, 0x5d, 0xfe, 0x9f, 0xa5, 0xc4, 0x67, 0x6, 0x4d, 0x2c, 0x8f, 0xee, 0xd4, 0xb5, 0x16, 0x77, 0x62, 0x3, 0xa0, 0xc1, 0xfb, 0x9a, 0x39, 0x58}, - {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4, 0x6e, 0xc, 0xaa, 0xc8, 0xfb, 0x99, 0x3f, 0x5d, 0x59, 0x3b, 0x9d, 0xff, 0xcc, 0xae, 0x8, 0x6a, 0xdc, 0xbe, 0x18, 0x7a, 0x49, 0x2b, 0x8d, 0xef, 0xeb, 0x89, 0x2f, 0x4d, 0x7e, 0x1c, 0xba, 0xd8, 0xb2, 0xd0, 0x76, 0x14, 0x27, 0x45, 0xe3, 0x81, 0x85, 0xe7, 0x41, 0x23, 0x10, 0x72, 0xd4, 0xb6, 0xa5, 0xc7, 0x61, 0x3, 0x30, 0x52, 0xf4, 0x96, 0x92, 0xf0, 0x56, 0x34, 0x7, 0x65, 0xc3, 0xa1, 0xcb, 0xa9, 0xf, 0x6d, 0x5e, 0x3c, 0x9a, 0xf8, 0xfc, 0x9e, 0x38, 0x5a, 0x69, 0xb, 0xad, 0xcf, 0x79, 0x1b, 0xbd, 0xdf, 0xec, 0x8e, 0x28, 0x4a, 0x4e, 0x2c, 0x8a, 0xe8, 0xdb, 0xb9, 0x1f, 0x7d, 0x17, 0x75, 0xd3, 0xb1, 0x82, 0xe0, 0x46, 0x24, 0x20, 0x42, 0xe4, 0x86, 0xb5, 0xd7, 0x71, 0x13, 0x57, 0x35, 0x93, 0xf1, 0xc2, 0xa0, 0x6, 0x64, 0x60, 0x2, 0xa4, 0xc6, 0xf5, 0x97, 0x31, 0x53, 0x39, 0x5b, 0xfd, 0x9f, 0xac, 0xce, 0x68, 0xa, 0xe, 0x6c, 0xca, 0xa8, 0x9b, 0xf9, 0x5f, 0x3d, 0x8b, 0xe9, 0x4f, 0x2d, 0x1e, 0x7c, 0xda, 0xb8, 0xbc, 0xde, 0x78, 0x1a, 0x29, 0x4b, 0xed, 0x8f, 0xe5, 0x87, 0x21, 0x43, 0x70, 0x12, 0xb4, 0xd6, 0xd2, 0xb0, 0x16, 0x74, 0x47, 0x25, 0x83, 0xe1, 0xf2, 0x90, 0x36, 0x54, 0x67, 0x5, 0xa3, 0xc1, 0xc5, 0xa7, 0x1, 0x63, 0x50, 0x32, 0x94, 0xf6, 0x9c, 0xfe, 0x58, 0x3a, 0x9, 0x6b, 0xcd, 0xaf, 0xab, 0xc9, 0x6f, 0xd, 0x3e, 0x5c, 0xfa, 0x98, 0x2e, 0x4c, 0xea, 0x88, 0xbb, 0xd9, 0x7f, 0x1d, 0x19, 0x7b, 0xdd, 0xbf, 0x8c, 0xee, 0x48, 0x2a, 0x40, 0x22, 0x84, 0xe6, 0xd5, 0xb7, 0x11, 0x73, 0x77, 0x15, 0xb3, 0xd1, 0xe2, 0x80, 0x26, 0x44}, - {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb, 0x7e, 0x1d, 0xb8, 0xdb, 0xef, 0x8c, 0x29, 0x4a, 0x41, 0x22, 0x87, 0xe4, 0xd0, 0xb3, 0x16, 0x75, 0xfc, 0x9f, 0x3a, 0x59, 0x6d, 0xe, 0xab, 0xc8, 0xc3, 0xa0, 0x5, 0x66, 0x52, 0x31, 0x94, 0xf7, 0x82, 0xe1, 0x44, 0x27, 0x13, 0x70, 0xd5, 0xb6, 0xbd, 0xde, 0x7b, 0x18, 0x2c, 0x4f, 0xea, 0x89, 0xe5, 0x86, 0x23, 0x40, 0x74, 0x17, 0xb2, 0xd1, 0xda, 0xb9, 0x1c, 0x7f, 0x4b, 0x28, 0x8d, 0xee, 0x9b, 0xf8, 0x5d, 0x3e, 0xa, 0x69, 0xcc, 0xaf, 0xa4, 0xc7, 0x62, 0x1, 0x35, 0x56, 0xf3, 0x90, 0x19, 0x7a, 0xdf, 0xbc, 0x88, 0xeb, 0x4e, 0x2d, 0x26, 0x45, 0xe0, 0x83, 0xb7, 0xd4, 0x71, 0x12, 0x67, 0x4, 0xa1, 0xc2, 0xf6, 0x95, 0x30, 0x53, 0x58, 0x3b, 0x9e, 0xfd, 0xc9, 0xaa, 0xf, 0x6c, 0xd7, 0xb4, 0x11, 0x72, 0x46, 0x25, 0x80, 0xe3, 0xe8, 0x8b, 0x2e, 0x4d, 0x79, 0x1a, 0xbf, 0xdc, 0xa9, 0xca, 0x6f, 0xc, 0x38, 0x5b, 0xfe, 0x9d, 0x96, 0xf5, 0x50, 0x33, 0x7, 0x64, 0xc1, 0xa2, 0x2b, 0x48, 0xed, 0x8e, 0xba, 0xd9, 0x7c, 0x1f, 0x14, 0x77, 0xd2, 0xb1, 0x85, 0xe6, 0x43, 0x20, 0x55, 0x36, 0x93, 0xf0, 0xc4, 0xa7, 0x2, 0x61, 0x6a, 0x9, 0xac, 0xcf, 0xfb, 0x98, 0x3d, 0x5e, 0x32, 0x51, 0xf4, 0x97, 0xa3, 0xc0, 0x65, 0x6, 0xd, 0x6e, 0xcb, 0xa8, 0x9c, 0xff, 0x5a, 0x39, 0x4c, 0x2f, 0x8a, 0xe9, 0xdd, 0xbe, 0x1b, 0x78, 0x73, 0x10, 0xb5, 0xd6, 0xe2, 0x81, 0x24, 0x47, 0xce, 0xad, 0x8, 0x6b, 0x5f, 0x3c, 0x99, 0xfa, 0xf1, 0x92, 0x37, 0x54, 0x60, 0x3, 0xa6, 0xc5, 0xb0, 0xd3, 0x76, 0x15, 0x21, 0x42, 0xe7, 0x84, 0x8f, 0xec, 0x49, 0x2a, 0x1e, 0x7d, 0xd8, 0xbb}, - {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26, 0xe, 0x6a, 0xc6, 0xa2, 0x83, 0xe7, 0x4b, 0x2f, 0x9, 0x6d, 0xc1, 0xa5, 0x84, 0xe0, 0x4c, 0x28, 0x1c, 0x78, 0xd4, 0xb0, 0x91, 0xf5, 0x59, 0x3d, 0x1b, 0x7f, 0xd3, 0xb7, 0x96, 0xf2, 0x5e, 0x3a, 0x12, 0x76, 0xda, 0xbe, 0x9f, 0xfb, 0x57, 0x33, 0x15, 0x71, 0xdd, 0xb9, 0x98, 0xfc, 0x50, 0x34, 0x38, 0x5c, 0xf0, 0x94, 0xb5, 0xd1, 0x7d, 0x19, 0x3f, 0x5b, 0xf7, 0x93, 0xb2, 0xd6, 0x7a, 0x1e, 0x36, 0x52, 0xfe, 0x9a, 0xbb, 0xdf, 0x73, 0x17, 0x31, 0x55, 0xf9, 0x9d, 0xbc, 0xd8, 0x74, 0x10, 0x24, 0x40, 0xec, 0x88, 0xa9, 0xcd, 0x61, 0x5, 0x23, 0x47, 0xeb, 0x8f, 0xae, 0xca, 0x66, 0x2, 0x2a, 0x4e, 0xe2, 0x86, 0xa7, 0xc3, 0x6f, 0xb, 0x2d, 0x49, 0xe5, 0x81, 0xa0, 0xc4, 0x68, 0xc, 0x70, 0x14, 0xb8, 0xdc, 0xfd, 0x99, 0x35, 0x51, 0x77, 0x13, 0xbf, 0xdb, 0xfa, 0x9e, 0x32, 0x56, 0x7e, 0x1a, 0xb6, 0xd2, 0xf3, 0x97, 0x3b, 0x5f, 0x79, 0x1d, 0xb1, 0xd5, 0xf4, 0x90, 0x3c, 0x58, 0x6c, 0x8, 0xa4, 0xc0, 0xe1, 0x85, 0x29, 0x4d, 0x6b, 0xf, 0xa3, 0xc7, 0xe6, 0x82, 0x2e, 0x4a, 0x62, 0x6, 0xaa, 0xce, 0xef, 0x8b, 0x27, 0x43, 0x65, 0x1, 0xad, 0xc9, 0xe8, 0x8c, 0x20, 0x44, 0x48, 0x2c, 0x80, 0xe4, 0xc5, 0xa1, 0xd, 0x69, 0x4f, 0x2b, 0x87, 0xe3, 0xc2, 0xa6, 0xa, 0x6e, 0x46, 0x22, 0x8e, 0xea, 0xcb, 0xaf, 0x3, 0x67, 0x41, 0x25, 0x89, 0xed, 0xcc, 0xa8, 0x4, 0x60, 0x54, 0x30, 0x9c, 0xf8, 0xd9, 0xbd, 0x11, 0x75, 0x53, 0x37, 0x9b, 0xff, 0xde, 0xba, 0x16, 0x72, 0x5a, 0x3e, 0x92, 0xf6, 0xd7, 0xb3, 0x1f, 0x7b, 0x5d, 0x39, 0x95, 0xf1, 0xd0, 0xb4, 0x18, 0x7c}, - {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29, 0x1e, 0x7b, 0xd4, 0xb1, 0x97, 0xf2, 0x5d, 0x38, 0x11, 0x74, 0xdb, 0xbe, 0x98, 0xfd, 0x52, 0x37, 0x3c, 0x59, 0xf6, 0x93, 0xb5, 0xd0, 0x7f, 0x1a, 0x33, 0x56, 0xf9, 0x9c, 0xba, 0xdf, 0x70, 0x15, 0x22, 0x47, 0xe8, 0x8d, 0xab, 0xce, 0x61, 0x4, 0x2d, 0x48, 0xe7, 0x82, 0xa4, 0xc1, 0x6e, 0xb, 0x78, 0x1d, 0xb2, 0xd7, 0xf1, 0x94, 0x3b, 0x5e, 0x77, 0x12, 0xbd, 0xd8, 0xfe, 0x9b, 0x34, 0x51, 0x66, 0x3, 0xac, 0xc9, 0xef, 0x8a, 0x25, 0x40, 0x69, 0xc, 0xa3, 0xc6, 0xe0, 0x85, 0x2a, 0x4f, 0x44, 0x21, 0x8e, 0xeb, 0xcd, 0xa8, 0x7, 0x62, 0x4b, 0x2e, 0x81, 0xe4, 0xc2, 0xa7, 0x8, 0x6d, 0x5a, 0x3f, 0x90, 0xf5, 0xd3, 0xb6, 0x19, 0x7c, 0x55, 0x30, 0x9f, 0xfa, 0xdc, 0xb9, 0x16, 0x73, 0xf0, 0x95, 0x3a, 0x5f, 0x79, 0x1c, 0xb3, 0xd6, 0xff, 0x9a, 0x35, 0x50, 0x76, 0x13, 0xbc, 0xd9, 0xee, 0x8b, 0x24, 0x41, 0x67, 0x2, 0xad, 0xc8, 0xe1, 0x84, 0x2b, 0x4e, 0x68, 0xd, 0xa2, 0xc7, 0xcc, 0xa9, 0x6, 0x63, 0x45, 0x20, 0x8f, 0xea, 0xc3, 0xa6, 0x9, 0x6c, 0x4a, 0x2f, 0x80, 0xe5, 0xd2, 0xb7, 0x18, 0x7d, 0x5b, 0x3e, 0x91, 0xf4, 0xdd, 0xb8, 0x17, 0x72, 0x54, 0x31, 0x9e, 0xfb, 0x88, 0xed, 0x42, 0x27, 0x1, 0x64, 0xcb, 0xae, 0x87, 0xe2, 0x4d, 0x28, 0xe, 0x6b, 0xc4, 0xa1, 0x96, 0xf3, 0x5c, 0x39, 0x1f, 0x7a, 0xd5, 0xb0, 0x99, 0xfc, 0x53, 0x36, 0x10, 0x75, 0xda, 0xbf, 0xb4, 0xd1, 0x7e, 0x1b, 0x3d, 0x58, 0xf7, 0x92, 0xbb, 0xde, 0x71, 0x14, 0x32, 0x57, 0xf8, 0x9d, 0xaa, 0xcf, 0x60, 0x5, 0x23, 0x46, 0xe9, 0x8c, 0xa5, 0xc0, 0x6f, 0xa, 0x2c, 0x49, 0xe6, 0x83}, - {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38, 0x2e, 0x48, 0xe2, 0x84, 0xab, 0xcd, 0x67, 0x1, 0x39, 0x5f, 0xf5, 0x93, 0xbc, 0xda, 0x70, 0x16, 0x5c, 0x3a, 0x90, 0xf6, 0xd9, 0xbf, 0x15, 0x73, 0x4b, 0x2d, 0x87, 0xe1, 0xce, 0xa8, 0x2, 0x64, 0x72, 0x14, 0xbe, 0xd8, 0xf7, 0x91, 0x3b, 0x5d, 0x65, 0x3, 0xa9, 0xcf, 0xe0, 0x86, 0x2c, 0x4a, 0xb8, 0xde, 0x74, 0x12, 0x3d, 0x5b, 0xf1, 0x97, 0xaf, 0xc9, 0x63, 0x5, 0x2a, 0x4c, 0xe6, 0x80, 0x96, 0xf0, 0x5a, 0x3c, 0x13, 0x75, 0xdf, 0xb9, 0x81, 0xe7, 0x4d, 0x2b, 0x4, 0x62, 0xc8, 0xae, 0xe4, 0x82, 0x28, 0x4e, 0x61, 0x7, 0xad, 0xcb, 0xf3, 0x95, 0x3f, 0x59, 0x76, 0x10, 0xba, 0xdc, 0xca, 0xac, 0x6, 0x60, 0x4f, 0x29, 0x83, 0xe5, 0xdd, 0xbb, 0x11, 0x77, 0x58, 0x3e, 0x94, 0xf2, 0x6d, 0xb, 0xa1, 0xc7, 0xe8, 0x8e, 0x24, 0x42, 0x7a, 0x1c, 0xb6, 0xd0, 0xff, 0x99, 0x33, 0x55, 0x43, 0x25, 0x8f, 0xe9, 0xc6, 0xa0, 0xa, 0x6c, 0x54, 0x32, 0x98, 0xfe, 0xd1, 0xb7, 0x1d, 0x7b, 0x31, 0x57, 0xfd, 0x9b, 0xb4, 0xd2, 0x78, 0x1e, 0x26, 0x40, 0xea, 0x8c, 0xa3, 0xc5, 0x6f, 0x9, 0x1f, 0x79, 0xd3, 0xb5, 0x9a, 0xfc, 0x56, 0x30, 0x8, 0x6e, 0xc4, 0xa2, 0x8d, 0xeb, 0x41, 0x27, 0xd5, 0xb3, 0x19, 0x7f, 0x50, 0x36, 0x9c, 0xfa, 0xc2, 0xa4, 0xe, 0x68, 0x47, 0x21, 0x8b, 0xed, 0xfb, 0x9d, 0x37, 0x51, 0x7e, 0x18, 0xb2, 0xd4, 0xec, 0x8a, 0x20, 0x46, 0x69, 0xf, 0xa5, 0xc3, 0x89, 0xef, 0x45, 0x23, 0xc, 0x6a, 0xc0, 0xa6, 0x9e, 0xf8, 0x52, 0x34, 0x1b, 0x7d, 0xd7, 0xb1, 0xa7, 0xc1, 0x6b, 0xd, 0x22, 0x44, 0xee, 0x88, 0xb0, 0xd6, 0x7c, 0x1a, 0x35, 0x53, 0xf9, 0x9f}, - {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37, 0x3e, 0x59, 0xf0, 0x97, 0xbf, 0xd8, 0x71, 0x16, 0x21, 0x46, 0xef, 0x88, 0xa0, 0xc7, 0x6e, 0x9, 0x7c, 0x1b, 0xb2, 0xd5, 0xfd, 0x9a, 0x33, 0x54, 0x63, 0x4, 0xad, 0xca, 0xe2, 0x85, 0x2c, 0x4b, 0x42, 0x25, 0x8c, 0xeb, 0xc3, 0xa4, 0xd, 0x6a, 0x5d, 0x3a, 0x93, 0xf4, 0xdc, 0xbb, 0x12, 0x75, 0xf8, 0x9f, 0x36, 0x51, 0x79, 0x1e, 0xb7, 0xd0, 0xe7, 0x80, 0x29, 0x4e, 0x66, 0x1, 0xa8, 0xcf, 0xc6, 0xa1, 0x8, 0x6f, 0x47, 0x20, 0x89, 0xee, 0xd9, 0xbe, 0x17, 0x70, 0x58, 0x3f, 0x96, 0xf1, 0x84, 0xe3, 0x4a, 0x2d, 0x5, 0x62, 0xcb, 0xac, 0x9b, 0xfc, 0x55, 0x32, 0x1a, 0x7d, 0xd4, 0xb3, 0xba, 0xdd, 0x74, 0x13, 0x3b, 0x5c, 0xf5, 0x92, 0xa5, 0xc2, 0x6b, 0xc, 0x24, 0x43, 0xea, 0x8d, 0xed, 0x8a, 0x23, 0x44, 0x6c, 0xb, 0xa2, 0xc5, 0xf2, 0x95, 0x3c, 0x5b, 0x73, 0x14, 0xbd, 0xda, 0xd3, 0xb4, 0x1d, 0x7a, 0x52, 0x35, 0x9c, 0xfb, 0xcc, 0xab, 0x2, 0x65, 0x4d, 0x2a, 0x83, 0xe4, 0x91, 0xf6, 0x5f, 0x38, 0x10, 0x77, 0xde, 0xb9, 0x8e, 0xe9, 0x40, 0x27, 0xf, 0x68, 0xc1, 0xa6, 0xaf, 0xc8, 0x61, 0x6, 0x2e, 0x49, 0xe0, 0x87, 0xb0, 0xd7, 0x7e, 0x19, 0x31, 0x56, 0xff, 0x98, 0x15, 0x72, 0xdb, 0xbc, 0x94, 0xf3, 0x5a, 0x3d, 0xa, 0x6d, 0xc4, 0xa3, 0x8b, 0xec, 0x45, 0x22, 0x2b, 0x4c, 0xe5, 0x82, 0xaa, 0xcd, 0x64, 0x3, 0x34, 0x53, 0xfa, 0x9d, 0xb5, 0xd2, 0x7b, 0x1c, 0x69, 0xe, 0xa7, 0xc0, 0xe8, 0x8f, 0x26, 0x41, 0x76, 0x11, 0xb8, 0xdf, 0xf7, 0x90, 0x39, 0x5e, 0x57, 0x30, 0x99, 0xfe, 0xd6, 0xb1, 0x18, 0x7f, 0x48, 0x2f, 0x86, 0xe1, 0xc9, 0xae, 0x7, 0x60}, - {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62, 0xce, 0xa6, 0x1e, 0x76, 0x73, 0x1b, 0xa3, 0xcb, 0xa9, 0xc1, 0x79, 0x11, 0x14, 0x7c, 0xc4, 0xac, 0x81, 0xe9, 0x51, 0x39, 0x3c, 0x54, 0xec, 0x84, 0xe6, 0x8e, 0x36, 0x5e, 0x5b, 0x33, 0x8b, 0xe3, 0x4f, 0x27, 0x9f, 0xf7, 0xf2, 0x9a, 0x22, 0x4a, 0x28, 0x40, 0xf8, 0x90, 0x95, 0xfd, 0x45, 0x2d, 0x1f, 0x77, 0xcf, 0xa7, 0xa2, 0xca, 0x72, 0x1a, 0x78, 0x10, 0xa8, 0xc0, 0xc5, 0xad, 0x15, 0x7d, 0xd1, 0xb9, 0x1, 0x69, 0x6c, 0x4, 0xbc, 0xd4, 0xb6, 0xde, 0x66, 0xe, 0xb, 0x63, 0xdb, 0xb3, 0x9e, 0xf6, 0x4e, 0x26, 0x23, 0x4b, 0xf3, 0x9b, 0xf9, 0x91, 0x29, 0x41, 0x44, 0x2c, 0x94, 0xfc, 0x50, 0x38, 0x80, 0xe8, 0xed, 0x85, 0x3d, 0x55, 0x37, 0x5f, 0xe7, 0x8f, 0x8a, 0xe2, 0x5a, 0x32, 0x3e, 0x56, 0xee, 0x86, 0x83, 0xeb, 0x53, 0x3b, 0x59, 0x31, 0x89, 0xe1, 0xe4, 0x8c, 0x34, 0x5c, 0xf0, 0x98, 0x20, 0x48, 0x4d, 0x25, 0x9d, 0xf5, 0x97, 0xff, 0x47, 0x2f, 0x2a, 0x42, 0xfa, 0x92, 0xbf, 0xd7, 0x6f, 0x7, 0x2, 0x6a, 0xd2, 0xba, 0xd8, 0xb0, 0x8, 0x60, 0x65, 0xd, 0xb5, 0xdd, 0x71, 0x19, 0xa1, 0xc9, 0xcc, 0xa4, 0x1c, 0x74, 0x16, 0x7e, 0xc6, 0xae, 0xab, 0xc3, 0x7b, 0x13, 0x21, 0x49, 0xf1, 0x99, 0x9c, 0xf4, 0x4c, 0x24, 0x46, 0x2e, 0x96, 0xfe, 0xfb, 0x93, 0x2b, 0x43, 0xef, 0x87, 0x3f, 0x57, 0x52, 0x3a, 0x82, 0xea, 0x88, 0xe0, 0x58, 0x30, 0x35, 0x5d, 0xe5, 0x8d, 0xa0, 0xc8, 0x70, 0x18, 0x1d, 0x75, 0xcd, 0xa5, 0xc7, 0xaf, 0x17, 0x7f, 0x7a, 0x12, 0xaa, 0xc2, 0x6e, 0x6, 0xbe, 0xd6, 0xd3, 0xbb, 0x3, 0x6b, 0x9, 0x61, 0xd9, 0xb1, 0xb4, 0xdc, 0x64, 0xc}, - {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d, 0xde, 0xb7, 0xc, 0x65, 0x67, 0xe, 0xb5, 0xdc, 0xb1, 0xd8, 0x63, 0xa, 0x8, 0x61, 0xda, 0xb3, 0xa1, 0xc8, 0x73, 0x1a, 0x18, 0x71, 0xca, 0xa3, 0xce, 0xa7, 0x1c, 0x75, 0x77, 0x1e, 0xa5, 0xcc, 0x7f, 0x16, 0xad, 0xc4, 0xc6, 0xaf, 0x14, 0x7d, 0x10, 0x79, 0xc2, 0xab, 0xa9, 0xc0, 0x7b, 0x12, 0x5f, 0x36, 0x8d, 0xe4, 0xe6, 0x8f, 0x34, 0x5d, 0x30, 0x59, 0xe2, 0x8b, 0x89, 0xe0, 0x5b, 0x32, 0x81, 0xe8, 0x53, 0x3a, 0x38, 0x51, 0xea, 0x83, 0xee, 0x87, 0x3c, 0x55, 0x57, 0x3e, 0x85, 0xec, 0xfe, 0x97, 0x2c, 0x45, 0x47, 0x2e, 0x95, 0xfc, 0x91, 0xf8, 0x43, 0x2a, 0x28, 0x41, 0xfa, 0x93, 0x20, 0x49, 0xf2, 0x9b, 0x99, 0xf0, 0x4b, 0x22, 0x4f, 0x26, 0x9d, 0xf4, 0xf6, 0x9f, 0x24, 0x4d, 0xbe, 0xd7, 0x6c, 0x5, 0x7, 0x6e, 0xd5, 0xbc, 0xd1, 0xb8, 0x3, 0x6a, 0x68, 0x1, 0xba, 0xd3, 0x60, 0x9, 0xb2, 0xdb, 0xd9, 0xb0, 0xb, 0x62, 0xf, 0x66, 0xdd, 0xb4, 0xb6, 0xdf, 0x64, 0xd, 0x1f, 0x76, 0xcd, 0xa4, 0xa6, 0xcf, 0x74, 0x1d, 0x70, 0x19, 0xa2, 0xcb, 0xc9, 0xa0, 0x1b, 0x72, 0xc1, 0xa8, 0x13, 0x7a, 0x78, 0x11, 0xaa, 0xc3, 0xae, 0xc7, 0x7c, 0x15, 0x17, 0x7e, 0xc5, 0xac, 0xe1, 0x88, 0x33, 0x5a, 0x58, 0x31, 0x8a, 0xe3, 0x8e, 0xe7, 0x5c, 0x35, 0x37, 0x5e, 0xe5, 0x8c, 0x3f, 0x56, 0xed, 0x84, 0x86, 0xef, 0x54, 0x3d, 0x50, 0x39, 0x82, 0xeb, 0xe9, 0x80, 0x3b, 0x52, 0x40, 0x29, 0x92, 0xfb, 0xf9, 0x90, 0x2b, 0x42, 0x2f, 0x46, 0xfd, 0x94, 0x96, 0xff, 0x44, 0x2d, 0x9e, 0xf7, 0x4c, 0x25, 0x27, 0x4e, 0xf5, 0x9c, 0xf1, 0x98, 0x23, 0x4a, 0x48, 0x21, 0x9a, 0xf3}, - {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c, 0xee, 0x84, 0x3a, 0x50, 0x5b, 0x31, 0x8f, 0xe5, 0x99, 0xf3, 0x4d, 0x27, 0x2c, 0x46, 0xf8, 0x92, 0xc1, 0xab, 0x15, 0x7f, 0x74, 0x1e, 0xa0, 0xca, 0xb6, 0xdc, 0x62, 0x8, 0x3, 0x69, 0xd7, 0xbd, 0x2f, 0x45, 0xfb, 0x91, 0x9a, 0xf0, 0x4e, 0x24, 0x58, 0x32, 0x8c, 0xe6, 0xed, 0x87, 0x39, 0x53, 0x9f, 0xf5, 0x4b, 0x21, 0x2a, 0x40, 0xfe, 0x94, 0xe8, 0x82, 0x3c, 0x56, 0x5d, 0x37, 0x89, 0xe3, 0x71, 0x1b, 0xa5, 0xcf, 0xc4, 0xae, 0x10, 0x7a, 0x6, 0x6c, 0xd2, 0xb8, 0xb3, 0xd9, 0x67, 0xd, 0x5e, 0x34, 0x8a, 0xe0, 0xeb, 0x81, 0x3f, 0x55, 0x29, 0x43, 0xfd, 0x97, 0x9c, 0xf6, 0x48, 0x22, 0xb0, 0xda, 0x64, 0xe, 0x5, 0x6f, 0xd1, 0xbb, 0xc7, 0xad, 0x13, 0x79, 0x72, 0x18, 0xa6, 0xcc, 0x23, 0x49, 0xf7, 0x9d, 0x96, 0xfc, 0x42, 0x28, 0x54, 0x3e, 0x80, 0xea, 0xe1, 0x8b, 0x35, 0x5f, 0xcd, 0xa7, 0x19, 0x73, 0x78, 0x12, 0xac, 0xc6, 0xba, 0xd0, 0x6e, 0x4, 0xf, 0x65, 0xdb, 0xb1, 0xe2, 0x88, 0x36, 0x5c, 0x57, 0x3d, 0x83, 0xe9, 0x95, 0xff, 0x41, 0x2b, 0x20, 0x4a, 0xf4, 0x9e, 0xc, 0x66, 0xd8, 0xb2, 0xb9, 0xd3, 0x6d, 0x7, 0x7b, 0x11, 0xaf, 0xc5, 0xce, 0xa4, 0x1a, 0x70, 0xbc, 0xd6, 0x68, 0x2, 0x9, 0x63, 0xdd, 0xb7, 0xcb, 0xa1, 0x1f, 0x75, 0x7e, 0x14, 0xaa, 0xc0, 0x52, 0x38, 0x86, 0xec, 0xe7, 0x8d, 0x33, 0x59, 0x25, 0x4f, 0xf1, 0x9b, 0x90, 0xfa, 0x44, 0x2e, 0x7d, 0x17, 0xa9, 0xc3, 0xc8, 0xa2, 0x1c, 0x76, 0xa, 0x60, 0xde, 0xb4, 0xbf, 0xd5, 0x6b, 0x1, 0x93, 0xf9, 0x47, 0x2d, 0x26, 0x4c, 0xf2, 0x98, 0xe4, 0x8e, 0x30, 0x5a, 0x51, 0x3b, 0x85, 0xef}, - {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73, 0xfe, 0x95, 0x28, 0x43, 0x4f, 0x24, 0x99, 0xf2, 0x81, 0xea, 0x57, 0x3c, 0x30, 0x5b, 0xe6, 0x8d, 0xe1, 0x8a, 0x37, 0x5c, 0x50, 0x3b, 0x86, 0xed, 0x9e, 0xf5, 0x48, 0x23, 0x2f, 0x44, 0xf9, 0x92, 0x1f, 0x74, 0xc9, 0xa2, 0xae, 0xc5, 0x78, 0x13, 0x60, 0xb, 0xb6, 0xdd, 0xd1, 0xba, 0x7, 0x6c, 0xdf, 0xb4, 0x9, 0x62, 0x6e, 0x5, 0xb8, 0xd3, 0xa0, 0xcb, 0x76, 0x1d, 0x11, 0x7a, 0xc7, 0xac, 0x21, 0x4a, 0xf7, 0x9c, 0x90, 0xfb, 0x46, 0x2d, 0x5e, 0x35, 0x88, 0xe3, 0xef, 0x84, 0x39, 0x52, 0x3e, 0x55, 0xe8, 0x83, 0x8f, 0xe4, 0x59, 0x32, 0x41, 0x2a, 0x97, 0xfc, 0xf0, 0x9b, 0x26, 0x4d, 0xc0, 0xab, 0x16, 0x7d, 0x71, 0x1a, 0xa7, 0xcc, 0xbf, 0xd4, 0x69, 0x2, 0xe, 0x65, 0xd8, 0xb3, 0xa3, 0xc8, 0x75, 0x1e, 0x12, 0x79, 0xc4, 0xaf, 0xdc, 0xb7, 0xa, 0x61, 0x6d, 0x6, 0xbb, 0xd0, 0x5d, 0x36, 0x8b, 0xe0, 0xec, 0x87, 0x3a, 0x51, 0x22, 0x49, 0xf4, 0x9f, 0x93, 0xf8, 0x45, 0x2e, 0x42, 0x29, 0x94, 0xff, 0xf3, 0x98, 0x25, 0x4e, 0x3d, 0x56, 0xeb, 0x80, 0x8c, 0xe7, 0x5a, 0x31, 0xbc, 0xd7, 0x6a, 0x1, 0xd, 0x66, 0xdb, 0xb0, 0xc3, 0xa8, 0x15, 0x7e, 0x72, 0x19, 0xa4, 0xcf, 0x7c, 0x17, 0xaa, 0xc1, 0xcd, 0xa6, 0x1b, 0x70, 0x3, 0x68, 0xd5, 0xbe, 0xb2, 0xd9, 0x64, 0xf, 0x82, 0xe9, 0x54, 0x3f, 0x33, 0x58, 0xe5, 0x8e, 0xfd, 0x96, 0x2b, 0x40, 0x4c, 0x27, 0x9a, 0xf1, 0x9d, 0xf6, 0x4b, 0x20, 0x2c, 0x47, 0xfa, 0x91, 0xe2, 0x89, 0x34, 0x5f, 0x53, 0x38, 0x85, 0xee, 0x63, 0x8, 0xb5, 0xde, 0xd2, 0xb9, 0x4, 0x6f, 0x1c, 0x77, 0xca, 0xa1, 0xad, 0xc6, 0x7b, 0x10}, - {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e, 0x8e, 0xe2, 0x56, 0x3a, 0x23, 0x4f, 0xfb, 0x97, 0xc9, 0xa5, 0x11, 0x7d, 0x64, 0x8, 0xbc, 0xd0, 0x1, 0x6d, 0xd9, 0xb5, 0xac, 0xc0, 0x74, 0x18, 0x46, 0x2a, 0x9e, 0xf2, 0xeb, 0x87, 0x33, 0x5f, 0x8f, 0xe3, 0x57, 0x3b, 0x22, 0x4e, 0xfa, 0x96, 0xc8, 0xa4, 0x10, 0x7c, 0x65, 0x9, 0xbd, 0xd1, 0x2, 0x6e, 0xda, 0xb6, 0xaf, 0xc3, 0x77, 0x1b, 0x45, 0x29, 0x9d, 0xf1, 0xe8, 0x84, 0x30, 0x5c, 0x8c, 0xe0, 0x54, 0x38, 0x21, 0x4d, 0xf9, 0x95, 0xcb, 0xa7, 0x13, 0x7f, 0x66, 0xa, 0xbe, 0xd2, 0x3, 0x6f, 0xdb, 0xb7, 0xae, 0xc2, 0x76, 0x1a, 0x44, 0x28, 0x9c, 0xf0, 0xe9, 0x85, 0x31, 0x5d, 0x8d, 0xe1, 0x55, 0x39, 0x20, 0x4c, 0xf8, 0x94, 0xca, 0xa6, 0x12, 0x7e, 0x67, 0xb, 0xbf, 0xd3, 0x4, 0x68, 0xdc, 0xb0, 0xa9, 0xc5, 0x71, 0x1d, 0x43, 0x2f, 0x9b, 0xf7, 0xee, 0x82, 0x36, 0x5a, 0x8a, 0xe6, 0x52, 0x3e, 0x27, 0x4b, 0xff, 0x93, 0xcd, 0xa1, 0x15, 0x79, 0x60, 0xc, 0xb8, 0xd4, 0x5, 0x69, 0xdd, 0xb1, 0xa8, 0xc4, 0x70, 0x1c, 0x42, 0x2e, 0x9a, 0xf6, 0xef, 0x83, 0x37, 0x5b, 0x8b, 0xe7, 0x53, 0x3f, 0x26, 0x4a, 0xfe, 0x92, 0xcc, 0xa0, 0x14, 0x78, 0x61, 0xd, 0xb9, 0xd5, 0x6, 0x6a, 0xde, 0xb2, 0xab, 0xc7, 0x73, 0x1f, 0x41, 0x2d, 0x99, 0xf5, 0xec, 0x80, 0x34, 0x58, 0x88, 0xe4, 0x50, 0x3c, 0x25, 0x49, 0xfd, 0x91, 0xcf, 0xa3, 0x17, 0x7b, 0x62, 0xe, 0xba, 0xd6, 0x7, 0x6b, 0xdf, 0xb3, 0xaa, 0xc6, 0x72, 0x1e, 0x40, 0x2c, 0x98, 0xf4, 0xed, 0x81, 0x35, 0x59, 0x89, 0xe5, 0x51, 0x3d, 0x24, 0x48, 0xfc, 0x90, 0xce, 0xa2, 0x16, 0x7a, 0x63, 0xf, 0xbb, 0xd7}, - {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51, 0x9e, 0xf3, 0x44, 0x29, 0x37, 0x5a, 0xed, 0x80, 0xd1, 0xbc, 0xb, 0x66, 0x78, 0x15, 0xa2, 0xcf, 0x21, 0x4c, 0xfb, 0x96, 0x88, 0xe5, 0x52, 0x3f, 0x6e, 0x3, 0xb4, 0xd9, 0xc7, 0xaa, 0x1d, 0x70, 0xbf, 0xd2, 0x65, 0x8, 0x16, 0x7b, 0xcc, 0xa1, 0xf0, 0x9d, 0x2a, 0x47, 0x59, 0x34, 0x83, 0xee, 0x42, 0x2f, 0x98, 0xf5, 0xeb, 0x86, 0x31, 0x5c, 0xd, 0x60, 0xd7, 0xba, 0xa4, 0xc9, 0x7e, 0x13, 0xdc, 0xb1, 0x6, 0x6b, 0x75, 0x18, 0xaf, 0xc2, 0x93, 0xfe, 0x49, 0x24, 0x3a, 0x57, 0xe0, 0x8d, 0x63, 0xe, 0xb9, 0xd4, 0xca, 0xa7, 0x10, 0x7d, 0x2c, 0x41, 0xf6, 0x9b, 0x85, 0xe8, 0x5f, 0x32, 0xfd, 0x90, 0x27, 0x4a, 0x54, 0x39, 0x8e, 0xe3, 0xb2, 0xdf, 0x68, 0x5, 0x1b, 0x76, 0xc1, 0xac, 0x84, 0xe9, 0x5e, 0x33, 0x2d, 0x40, 0xf7, 0x9a, 0xcb, 0xa6, 0x11, 0x7c, 0x62, 0xf, 0xb8, 0xd5, 0x1a, 0x77, 0xc0, 0xad, 0xb3, 0xde, 0x69, 0x4, 0x55, 0x38, 0x8f, 0xe2, 0xfc, 0x91, 0x26, 0x4b, 0xa5, 0xc8, 0x7f, 0x12, 0xc, 0x61, 0xd6, 0xbb, 0xea, 0x87, 0x30, 0x5d, 0x43, 0x2e, 0x99, 0xf4, 0x3b, 0x56, 0xe1, 0x8c, 0x92, 0xff, 0x48, 0x25, 0x74, 0x19, 0xae, 0xc3, 0xdd, 0xb0, 0x7, 0x6a, 0xc6, 0xab, 0x1c, 0x71, 0x6f, 0x2, 0xb5, 0xd8, 0x89, 0xe4, 0x53, 0x3e, 0x20, 0x4d, 0xfa, 0x97, 0x58, 0x35, 0x82, 0xef, 0xf1, 0x9c, 0x2b, 0x46, 0x17, 0x7a, 0xcd, 0xa0, 0xbe, 0xd3, 0x64, 0x9, 0xe7, 0x8a, 0x3d, 0x50, 0x4e, 0x23, 0x94, 0xf9, 0xa8, 0xc5, 0x72, 0x1f, 0x1, 0x6c, 0xdb, 0xb6, 0x79, 0x14, 0xa3, 0xce, 0xd0, 0xbd, 0xa, 0x67, 0x36, 0x5b, 0xec, 0x81, 0x9f, 0xf2, 0x45, 0x28}, - {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40, 0xae, 0xc0, 0x72, 0x1c, 0xb, 0x65, 0xd7, 0xb9, 0xf9, 0x97, 0x25, 0x4b, 0x5c, 0x32, 0x80, 0xee, 0x41, 0x2f, 0x9d, 0xf3, 0xe4, 0x8a, 0x38, 0x56, 0x16, 0x78, 0xca, 0xa4, 0xb3, 0xdd, 0x6f, 0x1, 0xef, 0x81, 0x33, 0x5d, 0x4a, 0x24, 0x96, 0xf8, 0xb8, 0xd6, 0x64, 0xa, 0x1d, 0x73, 0xc1, 0xaf, 0x82, 0xec, 0x5e, 0x30, 0x27, 0x49, 0xfb, 0x95, 0xd5, 0xbb, 0x9, 0x67, 0x70, 0x1e, 0xac, 0xc2, 0x2c, 0x42, 0xf0, 0x9e, 0x89, 0xe7, 0x55, 0x3b, 0x7b, 0x15, 0xa7, 0xc9, 0xde, 0xb0, 0x2, 0x6c, 0xc3, 0xad, 0x1f, 0x71, 0x66, 0x8, 0xba, 0xd4, 0x94, 0xfa, 0x48, 0x26, 0x31, 0x5f, 0xed, 0x83, 0x6d, 0x3, 0xb1, 0xdf, 0xc8, 0xa6, 0x14, 0x7a, 0x3a, 0x54, 0xe6, 0x88, 0x9f, 0xf1, 0x43, 0x2d, 0x19, 0x77, 0xc5, 0xab, 0xbc, 0xd2, 0x60, 0xe, 0x4e, 0x20, 0x92, 0xfc, 0xeb, 0x85, 0x37, 0x59, 0xb7, 0xd9, 0x6b, 0x5, 0x12, 0x7c, 0xce, 0xa0, 0xe0, 0x8e, 0x3c, 0x52, 0x45, 0x2b, 0x99, 0xf7, 0x58, 0x36, 0x84, 0xea, 0xfd, 0x93, 0x21, 0x4f, 0xf, 0x61, 0xd3, 0xbd, 0xaa, 0xc4, 0x76, 0x18, 0xf6, 0x98, 0x2a, 0x44, 0x53, 0x3d, 0x8f, 0xe1, 0xa1, 0xcf, 0x7d, 0x13, 0x4, 0x6a, 0xd8, 0xb6, 0x9b, 0xf5, 0x47, 0x29, 0x3e, 0x50, 0xe2, 0x8c, 0xcc, 0xa2, 0x10, 0x7e, 0x69, 0x7, 0xb5, 0xdb, 0x35, 0x5b, 0xe9, 0x87, 0x90, 0xfe, 0x4c, 0x22, 0x62, 0xc, 0xbe, 0xd0, 0xc7, 0xa9, 0x1b, 0x75, 0xda, 0xb4, 0x6, 0x68, 0x7f, 0x11, 0xa3, 0xcd, 0x8d, 0xe3, 0x51, 0x3f, 0x28, 0x46, 0xf4, 0x9a, 0x74, 0x1a, 0xa8, 0xc6, 0xd1, 0xbf, 0xd, 0x63, 0x23, 0x4d, 0xff, 0x91, 0x86, 0xe8, 0x5a, 0x34}, - {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f, 0xbe, 0xd1, 0x60, 0xf, 0x1f, 0x70, 0xc1, 0xae, 0xe1, 0x8e, 0x3f, 0x50, 0x40, 0x2f, 0x9e, 0xf1, 0x61, 0xe, 0xbf, 0xd0, 0xc0, 0xaf, 0x1e, 0x71, 0x3e, 0x51, 0xe0, 0x8f, 0x9f, 0xf0, 0x41, 0x2e, 0xdf, 0xb0, 0x1, 0x6e, 0x7e, 0x11, 0xa0, 0xcf, 0x80, 0xef, 0x5e, 0x31, 0x21, 0x4e, 0xff, 0x90, 0xc2, 0xad, 0x1c, 0x73, 0x63, 0xc, 0xbd, 0xd2, 0x9d, 0xf2, 0x43, 0x2c, 0x3c, 0x53, 0xe2, 0x8d, 0x7c, 0x13, 0xa2, 0xcd, 0xdd, 0xb2, 0x3, 0x6c, 0x23, 0x4c, 0xfd, 0x92, 0x82, 0xed, 0x5c, 0x33, 0xa3, 0xcc, 0x7d, 0x12, 0x2, 0x6d, 0xdc, 0xb3, 0xfc, 0x93, 0x22, 0x4d, 0x5d, 0x32, 0x83, 0xec, 0x1d, 0x72, 0xc3, 0xac, 0xbc, 0xd3, 0x62, 0xd, 0x42, 0x2d, 0x9c, 0xf3, 0xe3, 0x8c, 0x3d, 0x52, 0x99, 0xf6, 0x47, 0x28, 0x38, 0x57, 0xe6, 0x89, 0xc6, 0xa9, 0x18, 0x77, 0x67, 0x8, 0xb9, 0xd6, 0x27, 0x48, 0xf9, 0x96, 0x86, 0xe9, 0x58, 0x37, 0x78, 0x17, 0xa6, 0xc9, 0xd9, 0xb6, 0x7, 0x68, 0xf8, 0x97, 0x26, 0x49, 0x59, 0x36, 0x87, 0xe8, 0xa7, 0xc8, 0x79, 0x16, 0x6, 0x69, 0xd8, 0xb7, 0x46, 0x29, 0x98, 0xf7, 0xe7, 0x88, 0x39, 0x56, 0x19, 0x76, 0xc7, 0xa8, 0xb8, 0xd7, 0x66, 0x9, 0x5b, 0x34, 0x85, 0xea, 0xfa, 0x95, 0x24, 0x4b, 0x4, 0x6b, 0xda, 0xb5, 0xa5, 0xca, 0x7b, 0x14, 0xe5, 0x8a, 0x3b, 0x54, 0x44, 0x2b, 0x9a, 0xf5, 0xba, 0xd5, 0x64, 0xb, 0x1b, 0x74, 0xc5, 0xaa, 0x3a, 0x55, 0xe4, 0x8b, 0x9b, 0xf4, 0x45, 0x2a, 0x65, 0xa, 0xbb, 0xd4, 0xc4, 0xab, 0x1a, 0x75, 0x84, 0xeb, 0x5a, 0x35, 0x25, 0x4a, 0xfb, 0x94, 0xdb, 0xb4, 0x5, 0x6a, 0x7a, 0x15, 0xa4, 0xcb}, - {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea, 0x53, 0x23, 0xb3, 0xc3, 0x8e, 0xfe, 0x6e, 0x1e, 0xf4, 0x84, 0x14, 0x64, 0x29, 0x59, 0xc9, 0xb9, 0xa6, 0xd6, 0x46, 0x36, 0x7b, 0xb, 0x9b, 0xeb, 0x1, 0x71, 0xe1, 0x91, 0xdc, 0xac, 0x3c, 0x4c, 0xf5, 0x85, 0x15, 0x65, 0x28, 0x58, 0xc8, 0xb8, 0x52, 0x22, 0xb2, 0xc2, 0x8f, 0xff, 0x6f, 0x1f, 0x51, 0x21, 0xb1, 0xc1, 0x8c, 0xfc, 0x6c, 0x1c, 0xf6, 0x86, 0x16, 0x66, 0x2b, 0x5b, 0xcb, 0xbb, 0x2, 0x72, 0xe2, 0x92, 0xdf, 0xaf, 0x3f, 0x4f, 0xa5, 0xd5, 0x45, 0x35, 0x78, 0x8, 0x98, 0xe8, 0xf7, 0x87, 0x17, 0x67, 0x2a, 0x5a, 0xca, 0xba, 0x50, 0x20, 0xb0, 0xc0, 0x8d, 0xfd, 0x6d, 0x1d, 0xa4, 0xd4, 0x44, 0x34, 0x79, 0x9, 0x99, 0xe9, 0x3, 0x73, 0xe3, 0x93, 0xde, 0xae, 0x3e, 0x4e, 0xa2, 0xd2, 0x42, 0x32, 0x7f, 0xf, 0x9f, 0xef, 0x5, 0x75, 0xe5, 0x95, 0xd8, 0xa8, 0x38, 0x48, 0xf1, 0x81, 0x11, 0x61, 0x2c, 0x5c, 0xcc, 0xbc, 0x56, 0x26, 0xb6, 0xc6, 0x8b, 0xfb, 0x6b, 0x1b, 0x4, 0x74, 0xe4, 0x94, 0xd9, 0xa9, 0x39, 0x49, 0xa3, 0xd3, 0x43, 0x33, 0x7e, 0xe, 0x9e, 0xee, 0x57, 0x27, 0xb7, 0xc7, 0x8a, 0xfa, 0x6a, 0x1a, 0xf0, 0x80, 0x10, 0x60, 0x2d, 0x5d, 0xcd, 0xbd, 0xf3, 0x83, 0x13, 0x63, 0x2e, 0x5e, 0xce, 0xbe, 0x54, 0x24, 0xb4, 0xc4, 0x89, 0xf9, 0x69, 0x19, 0xa0, 0xd0, 0x40, 0x30, 0x7d, 0xd, 0x9d, 0xed, 0x7, 0x77, 0xe7, 0x97, 0xda, 0xaa, 0x3a, 0x4a, 0x55, 0x25, 0xb5, 0xc5, 0x88, 0xf8, 0x68, 0x18, 0xf2, 0x82, 0x12, 0x62, 0x2f, 0x5f, 0xcf, 0xbf, 0x6, 0x76, 0xe6, 0x96, 0xdb, 0xab, 0x3b, 0x4b, 0xa1, 0xd1, 0x41, 0x31, 0x7c, 0xc, 0x9c, 0xec}, - {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5, 0x43, 0x32, 0xa1, 0xd0, 0x9a, 0xeb, 0x78, 0x9, 0xec, 0x9d, 0xe, 0x7f, 0x35, 0x44, 0xd7, 0xa6, 0x86, 0xf7, 0x64, 0x15, 0x5f, 0x2e, 0xbd, 0xcc, 0x29, 0x58, 0xcb, 0xba, 0xf0, 0x81, 0x12, 0x63, 0xc5, 0xb4, 0x27, 0x56, 0x1c, 0x6d, 0xfe, 0x8f, 0x6a, 0x1b, 0x88, 0xf9, 0xb3, 0xc2, 0x51, 0x20, 0x11, 0x60, 0xf3, 0x82, 0xc8, 0xb9, 0x2a, 0x5b, 0xbe, 0xcf, 0x5c, 0x2d, 0x67, 0x16, 0x85, 0xf4, 0x52, 0x23, 0xb0, 0xc1, 0x8b, 0xfa, 0x69, 0x18, 0xfd, 0x8c, 0x1f, 0x6e, 0x24, 0x55, 0xc6, 0xb7, 0x97, 0xe6, 0x75, 0x4, 0x4e, 0x3f, 0xac, 0xdd, 0x38, 0x49, 0xda, 0xab, 0xe1, 0x90, 0x3, 0x72, 0xd4, 0xa5, 0x36, 0x47, 0xd, 0x7c, 0xef, 0x9e, 0x7b, 0xa, 0x99, 0xe8, 0xa2, 0xd3, 0x40, 0x31, 0x22, 0x53, 0xc0, 0xb1, 0xfb, 0x8a, 0x19, 0x68, 0x8d, 0xfc, 0x6f, 0x1e, 0x54, 0x25, 0xb6, 0xc7, 0x61, 0x10, 0x83, 0xf2, 0xb8, 0xc9, 0x5a, 0x2b, 0xce, 0xbf, 0x2c, 0x5d, 0x17, 0x66, 0xf5, 0x84, 0xa4, 0xd5, 0x46, 0x37, 0x7d, 0xc, 0x9f, 0xee, 0xb, 0x7a, 0xe9, 0x98, 0xd2, 0xa3, 0x30, 0x41, 0xe7, 0x96, 0x5, 0x74, 0x3e, 0x4f, 0xdc, 0xad, 0x48, 0x39, 0xaa, 0xdb, 0x91, 0xe0, 0x73, 0x2, 0x33, 0x42, 0xd1, 0xa0, 0xea, 0x9b, 0x8, 0x79, 0x9c, 0xed, 0x7e, 0xf, 0x45, 0x34, 0xa7, 0xd6, 0x70, 0x1, 0x92, 0xe3, 0xa9, 0xd8, 0x4b, 0x3a, 0xdf, 0xae, 0x3d, 0x4c, 0x6, 0x77, 0xe4, 0x95, 0xb5, 0xc4, 0x57, 0x26, 0x6c, 0x1d, 0x8e, 0xff, 0x1a, 0x6b, 0xf8, 0x89, 0xc3, 0xb2, 0x21, 0x50, 0xf6, 0x87, 0x14, 0x65, 0x2f, 0x5e, 0xcd, 0xbc, 0x59, 0x28, 0xbb, 0xca, 0x80, 0xf1, 0x62, 0x13}, - {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4, 0x73, 0x1, 0x97, 0xe5, 0xa6, 0xd4, 0x42, 0x30, 0xc4, 0xb6, 0x20, 0x52, 0x11, 0x63, 0xf5, 0x87, 0xe6, 0x94, 0x2, 0x70, 0x33, 0x41, 0xd7, 0xa5, 0x51, 0x23, 0xb5, 0xc7, 0x84, 0xf6, 0x60, 0x12, 0x95, 0xe7, 0x71, 0x3, 0x40, 0x32, 0xa4, 0xd6, 0x22, 0x50, 0xc6, 0xb4, 0xf7, 0x85, 0x13, 0x61, 0xd1, 0xa3, 0x35, 0x47, 0x4, 0x76, 0xe0, 0x92, 0x66, 0x14, 0x82, 0xf0, 0xb3, 0xc1, 0x57, 0x25, 0xa2, 0xd0, 0x46, 0x34, 0x77, 0x5, 0x93, 0xe1, 0x15, 0x67, 0xf1, 0x83, 0xc0, 0xb2, 0x24, 0x56, 0x37, 0x45, 0xd3, 0xa1, 0xe2, 0x90, 0x6, 0x74, 0x80, 0xf2, 0x64, 0x16, 0x55, 0x27, 0xb1, 0xc3, 0x44, 0x36, 0xa0, 0xd2, 0x91, 0xe3, 0x75, 0x7, 0xf3, 0x81, 0x17, 0x65, 0x26, 0x54, 0xc2, 0xb0, 0xbf, 0xcd, 0x5b, 0x29, 0x6a, 0x18, 0x8e, 0xfc, 0x8, 0x7a, 0xec, 0x9e, 0xdd, 0xaf, 0x39, 0x4b, 0xcc, 0xbe, 0x28, 0x5a, 0x19, 0x6b, 0xfd, 0x8f, 0x7b, 0x9, 0x9f, 0xed, 0xae, 0xdc, 0x4a, 0x38, 0x59, 0x2b, 0xbd, 0xcf, 0x8c, 0xfe, 0x68, 0x1a, 0xee, 0x9c, 0xa, 0x78, 0x3b, 0x49, 0xdf, 0xad, 0x2a, 0x58, 0xce, 0xbc, 0xff, 0x8d, 0x1b, 0x69, 0x9d, 0xef, 0x79, 0xb, 0x48, 0x3a, 0xac, 0xde, 0x6e, 0x1c, 0x8a, 0xf8, 0xbb, 0xc9, 0x5f, 0x2d, 0xd9, 0xab, 0x3d, 0x4f, 0xc, 0x7e, 0xe8, 0x9a, 0x1d, 0x6f, 0xf9, 0x8b, 0xc8, 0xba, 0x2c, 0x5e, 0xaa, 0xd8, 0x4e, 0x3c, 0x7f, 0xd, 0x9b, 0xe9, 0x88, 0xfa, 0x6c, 0x1e, 0x5d, 0x2f, 0xb9, 0xcb, 0x3f, 0x4d, 0xdb, 0xa9, 0xea, 0x98, 0xe, 0x7c, 0xfb, 0x89, 0x1f, 0x6d, 0x2e, 0x5c, 0xca, 0xb8, 0x4c, 0x3e, 0xa8, 0xda, 0x99, 0xeb, 0x7d, 0xf}, - {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb, 0x63, 0x10, 0x85, 0xf6, 0xb2, 0xc1, 0x54, 0x27, 0xdc, 0xaf, 0x3a, 0x49, 0xd, 0x7e, 0xeb, 0x98, 0xc6, 0xb5, 0x20, 0x53, 0x17, 0x64, 0xf1, 0x82, 0x79, 0xa, 0x9f, 0xec, 0xa8, 0xdb, 0x4e, 0x3d, 0xa5, 0xd6, 0x43, 0x30, 0x74, 0x7, 0x92, 0xe1, 0x1a, 0x69, 0xfc, 0x8f, 0xcb, 0xb8, 0x2d, 0x5e, 0x91, 0xe2, 0x77, 0x4, 0x40, 0x33, 0xa6, 0xd5, 0x2e, 0x5d, 0xc8, 0xbb, 0xff, 0x8c, 0x19, 0x6a, 0xf2, 0x81, 0x14, 0x67, 0x23, 0x50, 0xc5, 0xb6, 0x4d, 0x3e, 0xab, 0xd8, 0x9c, 0xef, 0x7a, 0x9, 0x57, 0x24, 0xb1, 0xc2, 0x86, 0xf5, 0x60, 0x13, 0xe8, 0x9b, 0xe, 0x7d, 0x39, 0x4a, 0xdf, 0xac, 0x34, 0x47, 0xd2, 0xa1, 0xe5, 0x96, 0x3, 0x70, 0x8b, 0xf8, 0x6d, 0x1e, 0x5a, 0x29, 0xbc, 0xcf, 0x3f, 0x4c, 0xd9, 0xaa, 0xee, 0x9d, 0x8, 0x7b, 0x80, 0xf3, 0x66, 0x15, 0x51, 0x22, 0xb7, 0xc4, 0x5c, 0x2f, 0xba, 0xc9, 0x8d, 0xfe, 0x6b, 0x18, 0xe3, 0x90, 0x5, 0x76, 0x32, 0x41, 0xd4, 0xa7, 0xf9, 0x8a, 0x1f, 0x6c, 0x28, 0x5b, 0xce, 0xbd, 0x46, 0x35, 0xa0, 0xd3, 0x97, 0xe4, 0x71, 0x2, 0x9a, 0xe9, 0x7c, 0xf, 0x4b, 0x38, 0xad, 0xde, 0x25, 0x56, 0xc3, 0xb0, 0xf4, 0x87, 0x12, 0x61, 0xae, 0xdd, 0x48, 0x3b, 0x7f, 0xc, 0x99, 0xea, 0x11, 0x62, 0xf7, 0x84, 0xc0, 0xb3, 0x26, 0x55, 0xcd, 0xbe, 0x2b, 0x58, 0x1c, 0x6f, 0xfa, 0x89, 0x72, 0x1, 0x94, 0xe7, 0xa3, 0xd0, 0x45, 0x36, 0x68, 0x1b, 0x8e, 0xfd, 0xb9, 0xca, 0x5f, 0x2c, 0xd7, 0xa4, 0x31, 0x42, 0x6, 0x75, 0xe0, 0x93, 0xb, 0x78, 0xed, 0x9e, 0xda, 0xa9, 0x3c, 0x4f, 0xb4, 0xc7, 0x52, 0x21, 0x65, 0x16, 0x83, 0xf0}, - {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6, 0x13, 0x67, 0xfb, 0x8f, 0xde, 0xaa, 0x36, 0x42, 0x94, 0xe0, 0x7c, 0x8, 0x59, 0x2d, 0xb1, 0xc5, 0x26, 0x52, 0xce, 0xba, 0xeb, 0x9f, 0x3, 0x77, 0xa1, 0xd5, 0x49, 0x3d, 0x6c, 0x18, 0x84, 0xf0, 0x35, 0x41, 0xdd, 0xa9, 0xf8, 0x8c, 0x10, 0x64, 0xb2, 0xc6, 0x5a, 0x2e, 0x7f, 0xb, 0x97, 0xe3, 0x4c, 0x38, 0xa4, 0xd0, 0x81, 0xf5, 0x69, 0x1d, 0xcb, 0xbf, 0x23, 0x57, 0x6, 0x72, 0xee, 0x9a, 0x5f, 0x2b, 0xb7, 0xc3, 0x92, 0xe6, 0x7a, 0xe, 0xd8, 0xac, 0x30, 0x44, 0x15, 0x61, 0xfd, 0x89, 0x6a, 0x1e, 0x82, 0xf6, 0xa7, 0xd3, 0x4f, 0x3b, 0xed, 0x99, 0x5, 0x71, 0x20, 0x54, 0xc8, 0xbc, 0x79, 0xd, 0x91, 0xe5, 0xb4, 0xc0, 0x5c, 0x28, 0xfe, 0x8a, 0x16, 0x62, 0x33, 0x47, 0xdb, 0xaf, 0x98, 0xec, 0x70, 0x4, 0x55, 0x21, 0xbd, 0xc9, 0x1f, 0x6b, 0xf7, 0x83, 0xd2, 0xa6, 0x3a, 0x4e, 0x8b, 0xff, 0x63, 0x17, 0x46, 0x32, 0xae, 0xda, 0xc, 0x78, 0xe4, 0x90, 0xc1, 0xb5, 0x29, 0x5d, 0xbe, 0xca, 0x56, 0x22, 0x73, 0x7, 0x9b, 0xef, 0x39, 0x4d, 0xd1, 0xa5, 0xf4, 0x80, 0x1c, 0x68, 0xad, 0xd9, 0x45, 0x31, 0x60, 0x14, 0x88, 0xfc, 0x2a, 0x5e, 0xc2, 0xb6, 0xe7, 0x93, 0xf, 0x7b, 0xd4, 0xa0, 0x3c, 0x48, 0x19, 0x6d, 0xf1, 0x85, 0x53, 0x27, 0xbb, 0xcf, 0x9e, 0xea, 0x76, 0x2, 0xc7, 0xb3, 0x2f, 0x5b, 0xa, 0x7e, 0xe2, 0x96, 0x40, 0x34, 0xa8, 0xdc, 0x8d, 0xf9, 0x65, 0x11, 0xf2, 0x86, 0x1a, 0x6e, 0x3f, 0x4b, 0xd7, 0xa3, 0x75, 0x1, 0x9d, 0xe9, 0xb8, 0xcc, 0x50, 0x24, 0xe1, 0x95, 0x9, 0x7d, 0x2c, 0x58, 0xc4, 0xb0, 0x66, 0x12, 0x8e, 0xfa, 0xab, 0xdf, 0x43, 0x37}, - {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9, 0x3, 0x76, 0xe9, 0x9c, 0xca, 0xbf, 0x20, 0x55, 0x8c, 0xf9, 0x66, 0x13, 0x45, 0x30, 0xaf, 0xda, 0x6, 0x73, 0xec, 0x99, 0xcf, 0xba, 0x25, 0x50, 0x89, 0xfc, 0x63, 0x16, 0x40, 0x35, 0xaa, 0xdf, 0x5, 0x70, 0xef, 0x9a, 0xcc, 0xb9, 0x26, 0x53, 0x8a, 0xff, 0x60, 0x15, 0x43, 0x36, 0xa9, 0xdc, 0xc, 0x79, 0xe6, 0x93, 0xc5, 0xb0, 0x2f, 0x5a, 0x83, 0xf6, 0x69, 0x1c, 0x4a, 0x3f, 0xa0, 0xd5, 0xf, 0x7a, 0xe5, 0x90, 0xc6, 0xb3, 0x2c, 0x59, 0x80, 0xf5, 0x6a, 0x1f, 0x49, 0x3c, 0xa3, 0xd6, 0xa, 0x7f, 0xe0, 0x95, 0xc3, 0xb6, 0x29, 0x5c, 0x85, 0xf0, 0x6f, 0x1a, 0x4c, 0x39, 0xa6, 0xd3, 0x9, 0x7c, 0xe3, 0x96, 0xc0, 0xb5, 0x2a, 0x5f, 0x86, 0xf3, 0x6c, 0x19, 0x4f, 0x3a, 0xa5, 0xd0, 0x18, 0x6d, 0xf2, 0x87, 0xd1, 0xa4, 0x3b, 0x4e, 0x97, 0xe2, 0x7d, 0x8, 0x5e, 0x2b, 0xb4, 0xc1, 0x1b, 0x6e, 0xf1, 0x84, 0xd2, 0xa7, 0x38, 0x4d, 0x94, 0xe1, 0x7e, 0xb, 0x5d, 0x28, 0xb7, 0xc2, 0x1e, 0x6b, 0xf4, 0x81, 0xd7, 0xa2, 0x3d, 0x48, 0x91, 0xe4, 0x7b, 0xe, 0x58, 0x2d, 0xb2, 0xc7, 0x1d, 0x68, 0xf7, 0x82, 0xd4, 0xa1, 0x3e, 0x4b, 0x92, 0xe7, 0x78, 0xd, 0x5b, 0x2e, 0xb1, 0xc4, 0x14, 0x61, 0xfe, 0x8b, 0xdd, 0xa8, 0x37, 0x42, 0x9b, 0xee, 0x71, 0x4, 0x52, 0x27, 0xb8, 0xcd, 0x17, 0x62, 0xfd, 0x88, 0xde, 0xab, 0x34, 0x41, 0x98, 0xed, 0x72, 0x7, 0x51, 0x24, 0xbb, 0xce, 0x12, 0x67, 0xf8, 0x8d, 0xdb, 0xae, 0x31, 0x44, 0x9d, 0xe8, 0x77, 0x2, 0x54, 0x21, 0xbe, 0xcb, 0x11, 0x64, 0xfb, 0x8e, 0xd8, 0xad, 0x32, 0x47, 0x9e, 0xeb, 0x74, 0x1, 0x57, 0x22, 0xbd, 0xc8}, - {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8, 0x33, 0x45, 0xdf, 0xa9, 0xf6, 0x80, 0x1a, 0x6c, 0xa4, 0xd2, 0x48, 0x3e, 0x61, 0x17, 0x8d, 0xfb, 0x66, 0x10, 0x8a, 0xfc, 0xa3, 0xd5, 0x4f, 0x39, 0xf1, 0x87, 0x1d, 0x6b, 0x34, 0x42, 0xd8, 0xae, 0x55, 0x23, 0xb9, 0xcf, 0x90, 0xe6, 0x7c, 0xa, 0xc2, 0xb4, 0x2e, 0x58, 0x7, 0x71, 0xeb, 0x9d, 0xcc, 0xba, 0x20, 0x56, 0x9, 0x7f, 0xe5, 0x93, 0x5b, 0x2d, 0xb7, 0xc1, 0x9e, 0xe8, 0x72, 0x4, 0xff, 0x89, 0x13, 0x65, 0x3a, 0x4c, 0xd6, 0xa0, 0x68, 0x1e, 0x84, 0xf2, 0xad, 0xdb, 0x41, 0x37, 0xaa, 0xdc, 0x46, 0x30, 0x6f, 0x19, 0x83, 0xf5, 0x3d, 0x4b, 0xd1, 0xa7, 0xf8, 0x8e, 0x14, 0x62, 0x99, 0xef, 0x75, 0x3, 0x5c, 0x2a, 0xb0, 0xc6, 0xe, 0x78, 0xe2, 0x94, 0xcb, 0xbd, 0x27, 0x51, 0x85, 0xf3, 0x69, 0x1f, 0x40, 0x36, 0xac, 0xda, 0x12, 0x64, 0xfe, 0x88, 0xd7, 0xa1, 0x3b, 0x4d, 0xb6, 0xc0, 0x5a, 0x2c, 0x73, 0x5, 0x9f, 0xe9, 0x21, 0x57, 0xcd, 0xbb, 0xe4, 0x92, 0x8, 0x7e, 0xe3, 0x95, 0xf, 0x79, 0x26, 0x50, 0xca, 0xbc, 0x74, 0x2, 0x98, 0xee, 0xb1, 0xc7, 0x5d, 0x2b, 0xd0, 0xa6, 0x3c, 0x4a, 0x15, 0x63, 0xf9, 0x8f, 0x47, 0x31, 0xab, 0xdd, 0x82, 0xf4, 0x6e, 0x18, 0x49, 0x3f, 0xa5, 0xd3, 0x8c, 0xfa, 0x60, 0x16, 0xde, 0xa8, 0x32, 0x44, 0x1b, 0x6d, 0xf7, 0x81, 0x7a, 0xc, 0x96, 0xe0, 0xbf, 0xc9, 0x53, 0x25, 0xed, 0x9b, 0x1, 0x77, 0x28, 0x5e, 0xc4, 0xb2, 0x2f, 0x59, 0xc3, 0xb5, 0xea, 0x9c, 0x6, 0x70, 0xb8, 0xce, 0x54, 0x22, 0x7d, 0xb, 0x91, 0xe7, 0x1c, 0x6a, 0xf0, 0x86, 0xd9, 0xaf, 0x35, 0x43, 0x8b, 0xfd, 0x67, 0x11, 0x4e, 0x38, 0xa2, 0xd4}, - {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7, 0x23, 0x54, 0xcd, 0xba, 0xe2, 0x95, 0xc, 0x7b, 0xbc, 0xcb, 0x52, 0x25, 0x7d, 0xa, 0x93, 0xe4, 0x46, 0x31, 0xa8, 0xdf, 0x87, 0xf0, 0x69, 0x1e, 0xd9, 0xae, 0x37, 0x40, 0x18, 0x6f, 0xf6, 0x81, 0x65, 0x12, 0x8b, 0xfc, 0xa4, 0xd3, 0x4a, 0x3d, 0xfa, 0x8d, 0x14, 0x63, 0x3b, 0x4c, 0xd5, 0xa2, 0x8c, 0xfb, 0x62, 0x15, 0x4d, 0x3a, 0xa3, 0xd4, 0x13, 0x64, 0xfd, 0x8a, 0xd2, 0xa5, 0x3c, 0x4b, 0xaf, 0xd8, 0x41, 0x36, 0x6e, 0x19, 0x80, 0xf7, 0x30, 0x47, 0xde, 0xa9, 0xf1, 0x86, 0x1f, 0x68, 0xca, 0xbd, 0x24, 0x53, 0xb, 0x7c, 0xe5, 0x92, 0x55, 0x22, 0xbb, 0xcc, 0x94, 0xe3, 0x7a, 0xd, 0xe9, 0x9e, 0x7, 0x70, 0x28, 0x5f, 0xc6, 0xb1, 0x76, 0x1, 0x98, 0xef, 0xb7, 0xc0, 0x59, 0x2e, 0x5, 0x72, 0xeb, 0x9c, 0xc4, 0xb3, 0x2a, 0x5d, 0x9a, 0xed, 0x74, 0x3, 0x5b, 0x2c, 0xb5, 0xc2, 0x26, 0x51, 0xc8, 0xbf, 0xe7, 0x90, 0x9, 0x7e, 0xb9, 0xce, 0x57, 0x20, 0x78, 0xf, 0x96, 0xe1, 0x43, 0x34, 0xad, 0xda, 0x82, 0xf5, 0x6c, 0x1b, 0xdc, 0xab, 0x32, 0x45, 0x1d, 0x6a, 0xf3, 0x84, 0x60, 0x17, 0x8e, 0xf9, 0xa1, 0xd6, 0x4f, 0x38, 0xff, 0x88, 0x11, 0x66, 0x3e, 0x49, 0xd0, 0xa7, 0x89, 0xfe, 0x67, 0x10, 0x48, 0x3f, 0xa6, 0xd1, 0x16, 0x61, 0xf8, 0x8f, 0xd7, 0xa0, 0x39, 0x4e, 0xaa, 0xdd, 0x44, 0x33, 0x6b, 0x1c, 0x85, 0xf2, 0x35, 0x42, 0xdb, 0xac, 0xf4, 0x83, 0x1a, 0x6d, 0xcf, 0xb8, 0x21, 0x56, 0xe, 0x79, 0xe0, 0x97, 0x50, 0x27, 0xbe, 0xc9, 0x91, 0xe6, 0x7f, 0x8, 0xec, 0x9b, 0x2, 0x75, 0x2d, 0x5a, 0xc3, 0xb4, 0x73, 0x4, 0x9d, 0xea, 0xb2, 0xc5, 0x5c, 0x2b}, - {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92, 0xd3, 0xab, 0x23, 0x5b, 0x2e, 0x56, 0xde, 0xa6, 0x34, 0x4c, 0xc4, 0xbc, 0xc9, 0xb1, 0x39, 0x41, 0xbb, 0xc3, 0x4b, 0x33, 0x46, 0x3e, 0xb6, 0xce, 0x5c, 0x24, 0xac, 0xd4, 0xa1, 0xd9, 0x51, 0x29, 0x68, 0x10, 0x98, 0xe0, 0x95, 0xed, 0x65, 0x1d, 0x8f, 0xf7, 0x7f, 0x7, 0x72, 0xa, 0x82, 0xfa, 0x6b, 0x13, 0x9b, 0xe3, 0x96, 0xee, 0x66, 0x1e, 0x8c, 0xf4, 0x7c, 0x4, 0x71, 0x9, 0x81, 0xf9, 0xb8, 0xc0, 0x48, 0x30, 0x45, 0x3d, 0xb5, 0xcd, 0x5f, 0x27, 0xaf, 0xd7, 0xa2, 0xda, 0x52, 0x2a, 0xd0, 0xa8, 0x20, 0x58, 0x2d, 0x55, 0xdd, 0xa5, 0x37, 0x4f, 0xc7, 0xbf, 0xca, 0xb2, 0x3a, 0x42, 0x3, 0x7b, 0xf3, 0x8b, 0xfe, 0x86, 0xe, 0x76, 0xe4, 0x9c, 0x14, 0x6c, 0x19, 0x61, 0xe9, 0x91, 0xd6, 0xae, 0x26, 0x5e, 0x2b, 0x53, 0xdb, 0xa3, 0x31, 0x49, 0xc1, 0xb9, 0xcc, 0xb4, 0x3c, 0x44, 0x5, 0x7d, 0xf5, 0x8d, 0xf8, 0x80, 0x8, 0x70, 0xe2, 0x9a, 0x12, 0x6a, 0x1f, 0x67, 0xef, 0x97, 0x6d, 0x15, 0x9d, 0xe5, 0x90, 0xe8, 0x60, 0x18, 0x8a, 0xf2, 0x7a, 0x2, 0x77, 0xf, 0x87, 0xff, 0xbe, 0xc6, 0x4e, 0x36, 0x43, 0x3b, 0xb3, 0xcb, 0x59, 0x21, 0xa9, 0xd1, 0xa4, 0xdc, 0x54, 0x2c, 0xbd, 0xc5, 0x4d, 0x35, 0x40, 0x38, 0xb0, 0xc8, 0x5a, 0x22, 0xaa, 0xd2, 0xa7, 0xdf, 0x57, 0x2f, 0x6e, 0x16, 0x9e, 0xe6, 0x93, 0xeb, 0x63, 0x1b, 0x89, 0xf1, 0x79, 0x1, 0x74, 0xc, 0x84, 0xfc, 0x6, 0x7e, 0xf6, 0x8e, 0xfb, 0x83, 0xb, 0x73, 0xe1, 0x99, 0x11, 0x69, 0x1c, 0x64, 0xec, 0x94, 0xd5, 0xad, 0x25, 0x5d, 0x28, 0x50, 0xd8, 0xa0, 0x32, 0x4a, 0xc2, 0xba, 0xcf, 0xb7, 0x3f, 0x47}, - {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d, 0xc3, 0xba, 0x31, 0x48, 0x3a, 0x43, 0xc8, 0xb1, 0x2c, 0x55, 0xde, 0xa7, 0xd5, 0xac, 0x27, 0x5e, 0x9b, 0xe2, 0x69, 0x10, 0x62, 0x1b, 0x90, 0xe9, 0x74, 0xd, 0x86, 0xff, 0x8d, 0xf4, 0x7f, 0x6, 0x58, 0x21, 0xaa, 0xd3, 0xa1, 0xd8, 0x53, 0x2a, 0xb7, 0xce, 0x45, 0x3c, 0x4e, 0x37, 0xbc, 0xc5, 0x2b, 0x52, 0xd9, 0xa0, 0xd2, 0xab, 0x20, 0x59, 0xc4, 0xbd, 0x36, 0x4f, 0x3d, 0x44, 0xcf, 0xb6, 0xe8, 0x91, 0x1a, 0x63, 0x11, 0x68, 0xe3, 0x9a, 0x7, 0x7e, 0xf5, 0x8c, 0xfe, 0x87, 0xc, 0x75, 0xb0, 0xc9, 0x42, 0x3b, 0x49, 0x30, 0xbb, 0xc2, 0x5f, 0x26, 0xad, 0xd4, 0xa6, 0xdf, 0x54, 0x2d, 0x73, 0xa, 0x81, 0xf8, 0x8a, 0xf3, 0x78, 0x1, 0x9c, 0xe5, 0x6e, 0x17, 0x65, 0x1c, 0x97, 0xee, 0x56, 0x2f, 0xa4, 0xdd, 0xaf, 0xd6, 0x5d, 0x24, 0xb9, 0xc0, 0x4b, 0x32, 0x40, 0x39, 0xb2, 0xcb, 0x95, 0xec, 0x67, 0x1e, 0x6c, 0x15, 0x9e, 0xe7, 0x7a, 0x3, 0x88, 0xf1, 0x83, 0xfa, 0x71, 0x8, 0xcd, 0xb4, 0x3f, 0x46, 0x34, 0x4d, 0xc6, 0xbf, 0x22, 0x5b, 0xd0, 0xa9, 0xdb, 0xa2, 0x29, 0x50, 0xe, 0x77, 0xfc, 0x85, 0xf7, 0x8e, 0x5, 0x7c, 0xe1, 0x98, 0x13, 0x6a, 0x18, 0x61, 0xea, 0x93, 0x7d, 0x4, 0x8f, 0xf6, 0x84, 0xfd, 0x76, 0xf, 0x92, 0xeb, 0x60, 0x19, 0x6b, 0x12, 0x99, 0xe0, 0xbe, 0xc7, 0x4c, 0x35, 0x47, 0x3e, 0xb5, 0xcc, 0x51, 0x28, 0xa3, 0xda, 0xa8, 0xd1, 0x5a, 0x23, 0xe6, 0x9f, 0x14, 0x6d, 0x1f, 0x66, 0xed, 0x94, 0x9, 0x70, 0xfb, 0x82, 0xf0, 0x89, 0x2, 0x7b, 0x25, 0x5c, 0xd7, 0xae, 0xdc, 0xa5, 0x2e, 0x57, 0xca, 0xb3, 0x38, 0x41, 0x33, 0x4a, 0xc1, 0xb8}, - {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c, 0xf3, 0x89, 0x7, 0x7d, 0x6, 0x7c, 0xf2, 0x88, 0x4, 0x7e, 0xf0, 0x8a, 0xf1, 0x8b, 0x5, 0x7f, 0xfb, 0x81, 0xf, 0x75, 0xe, 0x74, 0xfa, 0x80, 0xc, 0x76, 0xf8, 0x82, 0xf9, 0x83, 0xd, 0x77, 0x8, 0x72, 0xfc, 0x86, 0xfd, 0x87, 0x9, 0x73, 0xff, 0x85, 0xb, 0x71, 0xa, 0x70, 0xfe, 0x84, 0xeb, 0x91, 0x1f, 0x65, 0x1e, 0x64, 0xea, 0x90, 0x1c, 0x66, 0xe8, 0x92, 0xe9, 0x93, 0x1d, 0x67, 0x18, 0x62, 0xec, 0x96, 0xed, 0x97, 0x19, 0x63, 0xef, 0x95, 0x1b, 0x61, 0x1a, 0x60, 0xee, 0x94, 0x10, 0x6a, 0xe4, 0x9e, 0xe5, 0x9f, 0x11, 0x6b, 0xe7, 0x9d, 0x13, 0x69, 0x12, 0x68, 0xe6, 0x9c, 0xe3, 0x99, 0x17, 0x6d, 0x16, 0x6c, 0xe2, 0x98, 0x14, 0x6e, 0xe0, 0x9a, 0xe1, 0x9b, 0x15, 0x6f, 0xcb, 0xb1, 0x3f, 0x45, 0x3e, 0x44, 0xca, 0xb0, 0x3c, 0x46, 0xc8, 0xb2, 0xc9, 0xb3, 0x3d, 0x47, 0x38, 0x42, 0xcc, 0xb6, 0xcd, 0xb7, 0x39, 0x43, 0xcf, 0xb5, 0x3b, 0x41, 0x3a, 0x40, 0xce, 0xb4, 0x30, 0x4a, 0xc4, 0xbe, 0xc5, 0xbf, 0x31, 0x4b, 0xc7, 0xbd, 0x33, 0x49, 0x32, 0x48, 0xc6, 0xbc, 0xc3, 0xb9, 0x37, 0x4d, 0x36, 0x4c, 0xc2, 0xb8, 0x34, 0x4e, 0xc0, 0xba, 0xc1, 0xbb, 0x35, 0x4f, 0x20, 0x5a, 0xd4, 0xae, 0xd5, 0xaf, 0x21, 0x5b, 0xd7, 0xad, 0x23, 0x59, 0x22, 0x58, 0xd6, 0xac, 0xd3, 0xa9, 0x27, 0x5d, 0x26, 0x5c, 0xd2, 0xa8, 0x24, 0x5e, 0xd0, 0xaa, 0xd1, 0xab, 0x25, 0x5f, 0xdb, 0xa1, 0x2f, 0x55, 0x2e, 0x54, 0xda, 0xa0, 0x2c, 0x56, 0xd8, 0xa2, 0xd9, 0xa3, 0x2d, 0x57, 0x28, 0x52, 0xdc, 0xa6, 0xdd, 0xa7, 0x29, 0x53, 0xdf, 0xa5, 0x2b, 0x51, 0x2a, 0x50, 0xde, 0xa4}, - {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83, 0xe3, 0x98, 0x15, 0x6e, 0x12, 0x69, 0xe4, 0x9f, 0x1c, 0x67, 0xea, 0x91, 0xed, 0x96, 0x1b, 0x60, 0xdb, 0xa0, 0x2d, 0x56, 0x2a, 0x51, 0xdc, 0xa7, 0x24, 0x5f, 0xd2, 0xa9, 0xd5, 0xae, 0x23, 0x58, 0x38, 0x43, 0xce, 0xb5, 0xc9, 0xb2, 0x3f, 0x44, 0xc7, 0xbc, 0x31, 0x4a, 0x36, 0x4d, 0xc0, 0xbb, 0xab, 0xd0, 0x5d, 0x26, 0x5a, 0x21, 0xac, 0xd7, 0x54, 0x2f, 0xa2, 0xd9, 0xa5, 0xde, 0x53, 0x28, 0x48, 0x33, 0xbe, 0xc5, 0xb9, 0xc2, 0x4f, 0x34, 0xb7, 0xcc, 0x41, 0x3a, 0x46, 0x3d, 0xb0, 0xcb, 0x70, 0xb, 0x86, 0xfd, 0x81, 0xfa, 0x77, 0xc, 0x8f, 0xf4, 0x79, 0x2, 0x7e, 0x5, 0x88, 0xf3, 0x93, 0xe8, 0x65, 0x1e, 0x62, 0x19, 0x94, 0xef, 0x6c, 0x17, 0x9a, 0xe1, 0x9d, 0xe6, 0x6b, 0x10, 0x4b, 0x30, 0xbd, 0xc6, 0xba, 0xc1, 0x4c, 0x37, 0xb4, 0xcf, 0x42, 0x39, 0x45, 0x3e, 0xb3, 0xc8, 0xa8, 0xd3, 0x5e, 0x25, 0x59, 0x22, 0xaf, 0xd4, 0x57, 0x2c, 0xa1, 0xda, 0xa6, 0xdd, 0x50, 0x2b, 0x90, 0xeb, 0x66, 0x1d, 0x61, 0x1a, 0x97, 0xec, 0x6f, 0x14, 0x99, 0xe2, 0x9e, 0xe5, 0x68, 0x13, 0x73, 0x8, 0x85, 0xfe, 0x82, 0xf9, 0x74, 0xf, 0x8c, 0xf7, 0x7a, 0x1, 0x7d, 0x6, 0x8b, 0xf0, 0xe0, 0x9b, 0x16, 0x6d, 0x11, 0x6a, 0xe7, 0x9c, 0x1f, 0x64, 0xe9, 0x92, 0xee, 0x95, 0x18, 0x63, 0x3, 0x78, 0xf5, 0x8e, 0xf2, 0x89, 0x4, 0x7f, 0xfc, 0x87, 0xa, 0x71, 0xd, 0x76, 0xfb, 0x80, 0x3b, 0x40, 0xcd, 0xb6, 0xca, 0xb1, 0x3c, 0x47, 0xc4, 0xbf, 0x32, 0x49, 0x35, 0x4e, 0xc3, 0xb8, 0xd8, 0xa3, 0x2e, 0x55, 0x29, 0x52, 0xdf, 0xa4, 0x27, 0x5c, 0xd1, 0xaa, 0xd6, 0xad, 0x20, 0x5b}, - {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae, 0x93, 0xef, 0x6b, 0x17, 0x7e, 0x2, 0x86, 0xfa, 0x54, 0x28, 0xac, 0xd0, 0xb9, 0xc5, 0x41, 0x3d, 0x3b, 0x47, 0xc3, 0xbf, 0xd6, 0xaa, 0x2e, 0x52, 0xfc, 0x80, 0x4, 0x78, 0x11, 0x6d, 0xe9, 0x95, 0xa8, 0xd4, 0x50, 0x2c, 0x45, 0x39, 0xbd, 0xc1, 0x6f, 0x13, 0x97, 0xeb, 0x82, 0xfe, 0x7a, 0x6, 0x76, 0xa, 0x8e, 0xf2, 0x9b, 0xe7, 0x63, 0x1f, 0xb1, 0xcd, 0x49, 0x35, 0x5c, 0x20, 0xa4, 0xd8, 0xe5, 0x99, 0x1d, 0x61, 0x8, 0x74, 0xf0, 0x8c, 0x22, 0x5e, 0xda, 0xa6, 0xcf, 0xb3, 0x37, 0x4b, 0x4d, 0x31, 0xb5, 0xc9, 0xa0, 0xdc, 0x58, 0x24, 0x8a, 0xf6, 0x72, 0xe, 0x67, 0x1b, 0x9f, 0xe3, 0xde, 0xa2, 0x26, 0x5a, 0x33, 0x4f, 0xcb, 0xb7, 0x19, 0x65, 0xe1, 0x9d, 0xf4, 0x88, 0xc, 0x70, 0xec, 0x90, 0x14, 0x68, 0x1, 0x7d, 0xf9, 0x85, 0x2b, 0x57, 0xd3, 0xaf, 0xc6, 0xba, 0x3e, 0x42, 0x7f, 0x3, 0x87, 0xfb, 0x92, 0xee, 0x6a, 0x16, 0xb8, 0xc4, 0x40, 0x3c, 0x55, 0x29, 0xad, 0xd1, 0xd7, 0xab, 0x2f, 0x53, 0x3a, 0x46, 0xc2, 0xbe, 0x10, 0x6c, 0xe8, 0x94, 0xfd, 0x81, 0x5, 0x79, 0x44, 0x38, 0xbc, 0xc0, 0xa9, 0xd5, 0x51, 0x2d, 0x83, 0xff, 0x7b, 0x7, 0x6e, 0x12, 0x96, 0xea, 0x9a, 0xe6, 0x62, 0x1e, 0x77, 0xb, 0x8f, 0xf3, 0x5d, 0x21, 0xa5, 0xd9, 0xb0, 0xcc, 0x48, 0x34, 0x9, 0x75, 0xf1, 0x8d, 0xe4, 0x98, 0x1c, 0x60, 0xce, 0xb2, 0x36, 0x4a, 0x23, 0x5f, 0xdb, 0xa7, 0xa1, 0xdd, 0x59, 0x25, 0x4c, 0x30, 0xb4, 0xc8, 0x66, 0x1a, 0x9e, 0xe2, 0x8b, 0xf7, 0x73, 0xf, 0x32, 0x4e, 0xca, 0xb6, 0xdf, 0xa3, 0x27, 0x5b, 0xf5, 0x89, 0xd, 0x71, 0x18, 0x64, 0xe0, 0x9c}, - {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1, 0x83, 0xfe, 0x79, 0x4, 0x6a, 0x17, 0x90, 0xed, 0x4c, 0x31, 0xb6, 0xcb, 0xa5, 0xd8, 0x5f, 0x22, 0x1b, 0x66, 0xe1, 0x9c, 0xf2, 0x8f, 0x8, 0x75, 0xd4, 0xa9, 0x2e, 0x53, 0x3d, 0x40, 0xc7, 0xba, 0x98, 0xe5, 0x62, 0x1f, 0x71, 0xc, 0x8b, 0xf6, 0x57, 0x2a, 0xad, 0xd0, 0xbe, 0xc3, 0x44, 0x39, 0x36, 0x4b, 0xcc, 0xb1, 0xdf, 0xa2, 0x25, 0x58, 0xf9, 0x84, 0x3, 0x7e, 0x10, 0x6d, 0xea, 0x97, 0xb5, 0xc8, 0x4f, 0x32, 0x5c, 0x21, 0xa6, 0xdb, 0x7a, 0x7, 0x80, 0xfd, 0x93, 0xee, 0x69, 0x14, 0x2d, 0x50, 0xd7, 0xaa, 0xc4, 0xb9, 0x3e, 0x43, 0xe2, 0x9f, 0x18, 0x65, 0xb, 0x76, 0xf1, 0x8c, 0xae, 0xd3, 0x54, 0x29, 0x47, 0x3a, 0xbd, 0xc0, 0x61, 0x1c, 0x9b, 0xe6, 0x88, 0xf5, 0x72, 0xf, 0x6c, 0x11, 0x96, 0xeb, 0x85, 0xf8, 0x7f, 0x2, 0xa3, 0xde, 0x59, 0x24, 0x4a, 0x37, 0xb0, 0xcd, 0xef, 0x92, 0x15, 0x68, 0x6, 0x7b, 0xfc, 0x81, 0x20, 0x5d, 0xda, 0xa7, 0xc9, 0xb4, 0x33, 0x4e, 0x77, 0xa, 0x8d, 0xf0, 0x9e, 0xe3, 0x64, 0x19, 0xb8, 0xc5, 0x42, 0x3f, 0x51, 0x2c, 0xab, 0xd6, 0xf4, 0x89, 0xe, 0x73, 0x1d, 0x60, 0xe7, 0x9a, 0x3b, 0x46, 0xc1, 0xbc, 0xd2, 0xaf, 0x28, 0x55, 0x5a, 0x27, 0xa0, 0xdd, 0xb3, 0xce, 0x49, 0x34, 0x95, 0xe8, 0x6f, 0x12, 0x7c, 0x1, 0x86, 0xfb, 0xd9, 0xa4, 0x23, 0x5e, 0x30, 0x4d, 0xca, 0xb7, 0x16, 0x6b, 0xec, 0x91, 0xff, 0x82, 0x5, 0x78, 0x41, 0x3c, 0xbb, 0xc6, 0xa8, 0xd5, 0x52, 0x2f, 0x8e, 0xf3, 0x74, 0x9, 0x67, 0x1a, 0x9d, 0xe0, 0xc2, 0xbf, 0x38, 0x45, 0x2b, 0x56, 0xd1, 0xac, 0xd, 0x70, 0xf7, 0x8a, 0xe4, 0x99, 0x1e, 0x63}, - {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0, 0xb3, 0xcd, 0x4f, 0x31, 0x56, 0x28, 0xaa, 0xd4, 0x64, 0x1a, 0x98, 0xe6, 0x81, 0xff, 0x7d, 0x3, 0x7b, 0x5, 0x87, 0xf9, 0x9e, 0xe0, 0x62, 0x1c, 0xac, 0xd2, 0x50, 0x2e, 0x49, 0x37, 0xb5, 0xcb, 0xc8, 0xb6, 0x34, 0x4a, 0x2d, 0x53, 0xd1, 0xaf, 0x1f, 0x61, 0xe3, 0x9d, 0xfa, 0x84, 0x6, 0x78, 0xf6, 0x88, 0xa, 0x74, 0x13, 0x6d, 0xef, 0x91, 0x21, 0x5f, 0xdd, 0xa3, 0xc4, 0xba, 0x38, 0x46, 0x45, 0x3b, 0xb9, 0xc7, 0xa0, 0xde, 0x5c, 0x22, 0x92, 0xec, 0x6e, 0x10, 0x77, 0x9, 0x8b, 0xf5, 0x8d, 0xf3, 0x71, 0xf, 0x68, 0x16, 0x94, 0xea, 0x5a, 0x24, 0xa6, 0xd8, 0xbf, 0xc1, 0x43, 0x3d, 0x3e, 0x40, 0xc2, 0xbc, 0xdb, 0xa5, 0x27, 0x59, 0xe9, 0x97, 0x15, 0x6b, 0xc, 0x72, 0xf0, 0x8e, 0xf1, 0x8f, 0xd, 0x73, 0x14, 0x6a, 0xe8, 0x96, 0x26, 0x58, 0xda, 0xa4, 0xc3, 0xbd, 0x3f, 0x41, 0x42, 0x3c, 0xbe, 0xc0, 0xa7, 0xd9, 0x5b, 0x25, 0x95, 0xeb, 0x69, 0x17, 0x70, 0xe, 0x8c, 0xf2, 0x8a, 0xf4, 0x76, 0x8, 0x6f, 0x11, 0x93, 0xed, 0x5d, 0x23, 0xa1, 0xdf, 0xb8, 0xc6, 0x44, 0x3a, 0x39, 0x47, 0xc5, 0xbb, 0xdc, 0xa2, 0x20, 0x5e, 0xee, 0x90, 0x12, 0x6c, 0xb, 0x75, 0xf7, 0x89, 0x7, 0x79, 0xfb, 0x85, 0xe2, 0x9c, 0x1e, 0x60, 0xd0, 0xae, 0x2c, 0x52, 0x35, 0x4b, 0xc9, 0xb7, 0xb4, 0xca, 0x48, 0x36, 0x51, 0x2f, 0xad, 0xd3, 0x63, 0x1d, 0x9f, 0xe1, 0x86, 0xf8, 0x7a, 0x4, 0x7c, 0x2, 0x80, 0xfe, 0x99, 0xe7, 0x65, 0x1b, 0xab, 0xd5, 0x57, 0x29, 0x4e, 0x30, 0xb2, 0xcc, 0xcf, 0xb1, 0x33, 0x4d, 0x2a, 0x54, 0xd6, 0xa8, 0x18, 0x66, 0xe4, 0x9a, 0xfd, 0x83, 0x1, 0x7f}, - {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf, 0xa3, 0xdc, 0x5d, 0x22, 0x42, 0x3d, 0xbc, 0xc3, 0x7c, 0x3, 0x82, 0xfd, 0x9d, 0xe2, 0x63, 0x1c, 0x5b, 0x24, 0xa5, 0xda, 0xba, 0xc5, 0x44, 0x3b, 0x84, 0xfb, 0x7a, 0x5, 0x65, 0x1a, 0x9b, 0xe4, 0xf8, 0x87, 0x6, 0x79, 0x19, 0x66, 0xe7, 0x98, 0x27, 0x58, 0xd9, 0xa6, 0xc6, 0xb9, 0x38, 0x47, 0xb6, 0xc9, 0x48, 0x37, 0x57, 0x28, 0xa9, 0xd6, 0x69, 0x16, 0x97, 0xe8, 0x88, 0xf7, 0x76, 0x9, 0x15, 0x6a, 0xeb, 0x94, 0xf4, 0x8b, 0xa, 0x75, 0xca, 0xb5, 0x34, 0x4b, 0x2b, 0x54, 0xd5, 0xaa, 0xed, 0x92, 0x13, 0x6c, 0xc, 0x73, 0xf2, 0x8d, 0x32, 0x4d, 0xcc, 0xb3, 0xd3, 0xac, 0x2d, 0x52, 0x4e, 0x31, 0xb0, 0xcf, 0xaf, 0xd0, 0x51, 0x2e, 0x91, 0xee, 0x6f, 0x10, 0x70, 0xf, 0x8e, 0xf1, 0x71, 0xe, 0x8f, 0xf0, 0x90, 0xef, 0x6e, 0x11, 0xae, 0xd1, 0x50, 0x2f, 0x4f, 0x30, 0xb1, 0xce, 0xd2, 0xad, 0x2c, 0x53, 0x33, 0x4c, 0xcd, 0xb2, 0xd, 0x72, 0xf3, 0x8c, 0xec, 0x93, 0x12, 0x6d, 0x2a, 0x55, 0xd4, 0xab, 0xcb, 0xb4, 0x35, 0x4a, 0xf5, 0x8a, 0xb, 0x74, 0x14, 0x6b, 0xea, 0x95, 0x89, 0xf6, 0x77, 0x8, 0x68, 0x17, 0x96, 0xe9, 0x56, 0x29, 0xa8, 0xd7, 0xb7, 0xc8, 0x49, 0x36, 0xc7, 0xb8, 0x39, 0x46, 0x26, 0x59, 0xd8, 0xa7, 0x18, 0x67, 0xe6, 0x99, 0xf9, 0x86, 0x7, 0x78, 0x64, 0x1b, 0x9a, 0xe5, 0x85, 0xfa, 0x7b, 0x4, 0xbb, 0xc4, 0x45, 0x3a, 0x5a, 0x25, 0xa4, 0xdb, 0x9c, 0xe3, 0x62, 0x1d, 0x7d, 0x2, 0x83, 0xfc, 0x43, 0x3c, 0xbd, 0xc2, 0xa2, 0xdd, 0x5c, 0x23, 0x3f, 0x40, 0xc1, 0xbe, 0xde, 0xa1, 0x20, 0x5f, 0xe0, 0x9f, 0x1e, 0x61, 0x1, 0x7e, 0xff, 0x80}, - {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3, 0xe8, 0x68, 0xf5, 0x75, 0xd2, 0x52, 0xcf, 0x4f, 0x9c, 0x1c, 0x81, 0x1, 0xa6, 0x26, 0xbb, 0x3b, 0xcd, 0x4d, 0xd0, 0x50, 0xf7, 0x77, 0xea, 0x6a, 0xb9, 0x39, 0xa4, 0x24, 0x83, 0x3, 0x9e, 0x1e, 0x25, 0xa5, 0x38, 0xb8, 0x1f, 0x9f, 0x2, 0x82, 0x51, 0xd1, 0x4c, 0xcc, 0x6b, 0xeb, 0x76, 0xf6, 0x87, 0x7, 0x9a, 0x1a, 0xbd, 0x3d, 0xa0, 0x20, 0xf3, 0x73, 0xee, 0x6e, 0xc9, 0x49, 0xd4, 0x54, 0x6f, 0xef, 0x72, 0xf2, 0x55, 0xd5, 0x48, 0xc8, 0x1b, 0x9b, 0x6, 0x86, 0x21, 0xa1, 0x3c, 0xbc, 0x4a, 0xca, 0x57, 0xd7, 0x70, 0xf0, 0x6d, 0xed, 0x3e, 0xbe, 0x23, 0xa3, 0x4, 0x84, 0x19, 0x99, 0xa2, 0x22, 0xbf, 0x3f, 0x98, 0x18, 0x85, 0x5, 0xd6, 0x56, 0xcb, 0x4b, 0xec, 0x6c, 0xf1, 0x71, 0x13, 0x93, 0xe, 0x8e, 0x29, 0xa9, 0x34, 0xb4, 0x67, 0xe7, 0x7a, 0xfa, 0x5d, 0xdd, 0x40, 0xc0, 0xfb, 0x7b, 0xe6, 0x66, 0xc1, 0x41, 0xdc, 0x5c, 0x8f, 0xf, 0x92, 0x12, 0xb5, 0x35, 0xa8, 0x28, 0xde, 0x5e, 0xc3, 0x43, 0xe4, 0x64, 0xf9, 0x79, 0xaa, 0x2a, 0xb7, 0x37, 0x90, 0x10, 0x8d, 0xd, 0x36, 0xb6, 0x2b, 0xab, 0xc, 0x8c, 0x11, 0x91, 0x42, 0xc2, 0x5f, 0xdf, 0x78, 0xf8, 0x65, 0xe5, 0x94, 0x14, 0x89, 0x9, 0xae, 0x2e, 0xb3, 0x33, 0xe0, 0x60, 0xfd, 0x7d, 0xda, 0x5a, 0xc7, 0x47, 0x7c, 0xfc, 0x61, 0xe1, 0x46, 0xc6, 0x5b, 0xdb, 0x8, 0x88, 0x15, 0x95, 0x32, 0xb2, 0x2f, 0xaf, 0x59, 0xd9, 0x44, 0xc4, 0x63, 0xe3, 0x7e, 0xfe, 0x2d, 0xad, 0x30, 0xb0, 0x17, 0x97, 0xa, 0x8a, 0xb1, 0x31, 0xac, 0x2c, 0x8b, 0xb, 0x96, 0x16, 0xc5, 0x45, 0xd8, 0x58, 0xff, 0x7f, 0xe2, 0x62}, - {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc, 0xf8, 0x79, 0xe7, 0x66, 0xc6, 0x47, 0xd9, 0x58, 0x84, 0x5, 0x9b, 0x1a, 0xba, 0x3b, 0xa5, 0x24, 0xed, 0x6c, 0xf2, 0x73, 0xd3, 0x52, 0xcc, 0x4d, 0x91, 0x10, 0x8e, 0xf, 0xaf, 0x2e, 0xb0, 0x31, 0x15, 0x94, 0xa, 0x8b, 0x2b, 0xaa, 0x34, 0xb5, 0x69, 0xe8, 0x76, 0xf7, 0x57, 0xd6, 0x48, 0xc9, 0xc7, 0x46, 0xd8, 0x59, 0xf9, 0x78, 0xe6, 0x67, 0xbb, 0x3a, 0xa4, 0x25, 0x85, 0x4, 0x9a, 0x1b, 0x3f, 0xbe, 0x20, 0xa1, 0x1, 0x80, 0x1e, 0x9f, 0x43, 0xc2, 0x5c, 0xdd, 0x7d, 0xfc, 0x62, 0xe3, 0x2a, 0xab, 0x35, 0xb4, 0x14, 0x95, 0xb, 0x8a, 0x56, 0xd7, 0x49, 0xc8, 0x68, 0xe9, 0x77, 0xf6, 0xd2, 0x53, 0xcd, 0x4c, 0xec, 0x6d, 0xf3, 0x72, 0xae, 0x2f, 0xb1, 0x30, 0x90, 0x11, 0x8f, 0xe, 0x93, 0x12, 0x8c, 0xd, 0xad, 0x2c, 0xb2, 0x33, 0xef, 0x6e, 0xf0, 0x71, 0xd1, 0x50, 0xce, 0x4f, 0x6b, 0xea, 0x74, 0xf5, 0x55, 0xd4, 0x4a, 0xcb, 0x17, 0x96, 0x8, 0x89, 0x29, 0xa8, 0x36, 0xb7, 0x7e, 0xff, 0x61, 0xe0, 0x40, 0xc1, 0x5f, 0xde, 0x2, 0x83, 0x1d, 0x9c, 0x3c, 0xbd, 0x23, 0xa2, 0x86, 0x7, 0x99, 0x18, 0xb8, 0x39, 0xa7, 0x26, 0xfa, 0x7b, 0xe5, 0x64, 0xc4, 0x45, 0xdb, 0x5a, 0x54, 0xd5, 0x4b, 0xca, 0x6a, 0xeb, 0x75, 0xf4, 0x28, 0xa9, 0x37, 0xb6, 0x16, 0x97, 0x9, 0x88, 0xac, 0x2d, 0xb3, 0x32, 0x92, 0x13, 0x8d, 0xc, 0xd0, 0x51, 0xcf, 0x4e, 0xee, 0x6f, 0xf1, 0x70, 0xb9, 0x38, 0xa6, 0x27, 0x87, 0x6, 0x98, 0x19, 0xc5, 0x44, 0xda, 0x5b, 0xfb, 0x7a, 0xe4, 0x65, 0x41, 0xc0, 0x5e, 0xdf, 0x7f, 0xfe, 0x60, 0xe1, 0x3d, 0xbc, 0x22, 0xa3, 0x3, 0x82, 0x1c, 0x9d}, - {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd, 0xc8, 0x4a, 0xd1, 0x53, 0xfa, 0x78, 0xe3, 0x61, 0xac, 0x2e, 0xb5, 0x37, 0x9e, 0x1c, 0x87, 0x5, 0x8d, 0xf, 0x94, 0x16, 0xbf, 0x3d, 0xa6, 0x24, 0xe9, 0x6b, 0xf0, 0x72, 0xdb, 0x59, 0xc2, 0x40, 0x45, 0xc7, 0x5c, 0xde, 0x77, 0xf5, 0x6e, 0xec, 0x21, 0xa3, 0x38, 0xba, 0x13, 0x91, 0xa, 0x88, 0x7, 0x85, 0x1e, 0x9c, 0x35, 0xb7, 0x2c, 0xae, 0x63, 0xe1, 0x7a, 0xf8, 0x51, 0xd3, 0x48, 0xca, 0xcf, 0x4d, 0xd6, 0x54, 0xfd, 0x7f, 0xe4, 0x66, 0xab, 0x29, 0xb2, 0x30, 0x99, 0x1b, 0x80, 0x2, 0x8a, 0x8, 0x93, 0x11, 0xb8, 0x3a, 0xa1, 0x23, 0xee, 0x6c, 0xf7, 0x75, 0xdc, 0x5e, 0xc5, 0x47, 0x42, 0xc0, 0x5b, 0xd9, 0x70, 0xf2, 0x69, 0xeb, 0x26, 0xa4, 0x3f, 0xbd, 0x14, 0x96, 0xd, 0x8f, 0xe, 0x8c, 0x17, 0x95, 0x3c, 0xbe, 0x25, 0xa7, 0x6a, 0xe8, 0x73, 0xf1, 0x58, 0xda, 0x41, 0xc3, 0xc6, 0x44, 0xdf, 0x5d, 0xf4, 0x76, 0xed, 0x6f, 0xa2, 0x20, 0xbb, 0x39, 0x90, 0x12, 0x89, 0xb, 0x83, 0x1, 0x9a, 0x18, 0xb1, 0x33, 0xa8, 0x2a, 0xe7, 0x65, 0xfe, 0x7c, 0xd5, 0x57, 0xcc, 0x4e, 0x4b, 0xc9, 0x52, 0xd0, 0x79, 0xfb, 0x60, 0xe2, 0x2f, 0xad, 0x36, 0xb4, 0x1d, 0x9f, 0x4, 0x86, 0x9, 0x8b, 0x10, 0x92, 0x3b, 0xb9, 0x22, 0xa0, 0x6d, 0xef, 0x74, 0xf6, 0x5f, 0xdd, 0x46, 0xc4, 0xc1, 0x43, 0xd8, 0x5a, 0xf3, 0x71, 0xea, 0x68, 0xa5, 0x27, 0xbc, 0x3e, 0x97, 0x15, 0x8e, 0xc, 0x84, 0x6, 0x9d, 0x1f, 0xb6, 0x34, 0xaf, 0x2d, 0xe0, 0x62, 0xf9, 0x7b, 0xd2, 0x50, 0xcb, 0x49, 0x4c, 0xce, 0x55, 0xd7, 0x7e, 0xfc, 0x67, 0xe5, 0x28, 0xaa, 0x31, 0xb3, 0x1a, 0x98, 0x3, 0x81}, - {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2, 0xd8, 0x5b, 0xc3, 0x40, 0xee, 0x6d, 0xf5, 0x76, 0xb4, 0x37, 0xaf, 0x2c, 0x82, 0x1, 0x99, 0x1a, 0xad, 0x2e, 0xb6, 0x35, 0x9b, 0x18, 0x80, 0x3, 0xc1, 0x42, 0xda, 0x59, 0xf7, 0x74, 0xec, 0x6f, 0x75, 0xf6, 0x6e, 0xed, 0x43, 0xc0, 0x58, 0xdb, 0x19, 0x9a, 0x2, 0x81, 0x2f, 0xac, 0x34, 0xb7, 0x47, 0xc4, 0x5c, 0xdf, 0x71, 0xf2, 0x6a, 0xe9, 0x2b, 0xa8, 0x30, 0xb3, 0x1d, 0x9e, 0x6, 0x85, 0x9f, 0x1c, 0x84, 0x7, 0xa9, 0x2a, 0xb2, 0x31, 0xf3, 0x70, 0xe8, 0x6b, 0xc5, 0x46, 0xde, 0x5d, 0xea, 0x69, 0xf1, 0x72, 0xdc, 0x5f, 0xc7, 0x44, 0x86, 0x5, 0x9d, 0x1e, 0xb0, 0x33, 0xab, 0x28, 0x32, 0xb1, 0x29, 0xaa, 0x4, 0x87, 0x1f, 0x9c, 0x5e, 0xdd, 0x45, 0xc6, 0x68, 0xeb, 0x73, 0xf0, 0x8e, 0xd, 0x95, 0x16, 0xb8, 0x3b, 0xa3, 0x20, 0xe2, 0x61, 0xf9, 0x7a, 0xd4, 0x57, 0xcf, 0x4c, 0x56, 0xd5, 0x4d, 0xce, 0x60, 0xe3, 0x7b, 0xf8, 0x3a, 0xb9, 0x21, 0xa2, 0xc, 0x8f, 0x17, 0x94, 0x23, 0xa0, 0x38, 0xbb, 0x15, 0x96, 0xe, 0x8d, 0x4f, 0xcc, 0x54, 0xd7, 0x79, 0xfa, 0x62, 0xe1, 0xfb, 0x78, 0xe0, 0x63, 0xcd, 0x4e, 0xd6, 0x55, 0x97, 0x14, 0x8c, 0xf, 0xa1, 0x22, 0xba, 0x39, 0xc9, 0x4a, 0xd2, 0x51, 0xff, 0x7c, 0xe4, 0x67, 0xa5, 0x26, 0xbe, 0x3d, 0x93, 0x10, 0x88, 0xb, 0x11, 0x92, 0xa, 0x89, 0x27, 0xa4, 0x3c, 0xbf, 0x7d, 0xfe, 0x66, 0xe5, 0x4b, 0xc8, 0x50, 0xd3, 0x64, 0xe7, 0x7f, 0xfc, 0x52, 0xd1, 0x49, 0xca, 0x8, 0x8b, 0x13, 0x90, 0x3e, 0xbd, 0x25, 0xa6, 0xbc, 0x3f, 0xa7, 0x24, 0x8a, 0x9, 0x91, 0x12, 0xd0, 0x53, 0xcb, 0x48, 0xe6, 0x65, 0xfd, 0x7e}, - {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef, 0xa8, 0x2c, 0xbd, 0x39, 0x82, 0x6, 0x97, 0x13, 0xfc, 0x78, 0xe9, 0x6d, 0xd6, 0x52, 0xc3, 0x47, 0x4d, 0xc9, 0x58, 0xdc, 0x67, 0xe3, 0x72, 0xf6, 0x19, 0x9d, 0xc, 0x88, 0x33, 0xb7, 0x26, 0xa2, 0xe5, 0x61, 0xf0, 0x74, 0xcf, 0x4b, 0xda, 0x5e, 0xb1, 0x35, 0xa4, 0x20, 0x9b, 0x1f, 0x8e, 0xa, 0x9a, 0x1e, 0x8f, 0xb, 0xb0, 0x34, 0xa5, 0x21, 0xce, 0x4a, 0xdb, 0x5f, 0xe4, 0x60, 0xf1, 0x75, 0x32, 0xb6, 0x27, 0xa3, 0x18, 0x9c, 0xd, 0x89, 0x66, 0xe2, 0x73, 0xf7, 0x4c, 0xc8, 0x59, 0xdd, 0xd7, 0x53, 0xc2, 0x46, 0xfd, 0x79, 0xe8, 0x6c, 0x83, 0x7, 0x96, 0x12, 0xa9, 0x2d, 0xbc, 0x38, 0x7f, 0xfb, 0x6a, 0xee, 0x55, 0xd1, 0x40, 0xc4, 0x2b, 0xaf, 0x3e, 0xba, 0x1, 0x85, 0x14, 0x90, 0x29, 0xad, 0x3c, 0xb8, 0x3, 0x87, 0x16, 0x92, 0x7d, 0xf9, 0x68, 0xec, 0x57, 0xd3, 0x42, 0xc6, 0x81, 0x5, 0x94, 0x10, 0xab, 0x2f, 0xbe, 0x3a, 0xd5, 0x51, 0xc0, 0x44, 0xff, 0x7b, 0xea, 0x6e, 0x64, 0xe0, 0x71, 0xf5, 0x4e, 0xca, 0x5b, 0xdf, 0x30, 0xb4, 0x25, 0xa1, 0x1a, 0x9e, 0xf, 0x8b, 0xcc, 0x48, 0xd9, 0x5d, 0xe6, 0x62, 0xf3, 0x77, 0x98, 0x1c, 0x8d, 0x9, 0xb2, 0x36, 0xa7, 0x23, 0xb3, 0x37, 0xa6, 0x22, 0x99, 0x1d, 0x8c, 0x8, 0xe7, 0x63, 0xf2, 0x76, 0xcd, 0x49, 0xd8, 0x5c, 0x1b, 0x9f, 0xe, 0x8a, 0x31, 0xb5, 0x24, 0xa0, 0x4f, 0xcb, 0x5a, 0xde, 0x65, 0xe1, 0x70, 0xf4, 0xfe, 0x7a, 0xeb, 0x6f, 0xd4, 0x50, 0xc1, 0x45, 0xaa, 0x2e, 0xbf, 0x3b, 0x80, 0x4, 0x95, 0x11, 0x56, 0xd2, 0x43, 0xc7, 0x7c, 0xf8, 0x69, 0xed, 0x2, 0x86, 0x17, 0x93, 0x28, 0xac, 0x3d, 0xb9}, - {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0, 0xb8, 0x3d, 0xaf, 0x2a, 0x96, 0x13, 0x81, 0x4, 0xe4, 0x61, 0xf3, 0x76, 0xca, 0x4f, 0xdd, 0x58, 0x6d, 0xe8, 0x7a, 0xff, 0x43, 0xc6, 0x54, 0xd1, 0x31, 0xb4, 0x26, 0xa3, 0x1f, 0x9a, 0x8, 0x8d, 0xd5, 0x50, 0xc2, 0x47, 0xfb, 0x7e, 0xec, 0x69, 0x89, 0xc, 0x9e, 0x1b, 0xa7, 0x22, 0xb0, 0x35, 0xda, 0x5f, 0xcd, 0x48, 0xf4, 0x71, 0xe3, 0x66, 0x86, 0x3, 0x91, 0x14, 0xa8, 0x2d, 0xbf, 0x3a, 0x62, 0xe7, 0x75, 0xf0, 0x4c, 0xc9, 0x5b, 0xde, 0x3e, 0xbb, 0x29, 0xac, 0x10, 0x95, 0x7, 0x82, 0xb7, 0x32, 0xa0, 0x25, 0x99, 0x1c, 0x8e, 0xb, 0xeb, 0x6e, 0xfc, 0x79, 0xc5, 0x40, 0xd2, 0x57, 0xf, 0x8a, 0x18, 0x9d, 0x21, 0xa4, 0x36, 0xb3, 0x53, 0xd6, 0x44, 0xc1, 0x7d, 0xf8, 0x6a, 0xef, 0xa9, 0x2c, 0xbe, 0x3b, 0x87, 0x2, 0x90, 0x15, 0xf5, 0x70, 0xe2, 0x67, 0xdb, 0x5e, 0xcc, 0x49, 0x11, 0x94, 0x6, 0x83, 0x3f, 0xba, 0x28, 0xad, 0x4d, 0xc8, 0x5a, 0xdf, 0x63, 0xe6, 0x74, 0xf1, 0xc4, 0x41, 0xd3, 0x56, 0xea, 0x6f, 0xfd, 0x78, 0x98, 0x1d, 0x8f, 0xa, 0xb6, 0x33, 0xa1, 0x24, 0x7c, 0xf9, 0x6b, 0xee, 0x52, 0xd7, 0x45, 0xc0, 0x20, 0xa5, 0x37, 0xb2, 0xe, 0x8b, 0x19, 0x9c, 0x73, 0xf6, 0x64, 0xe1, 0x5d, 0xd8, 0x4a, 0xcf, 0x2f, 0xaa, 0x38, 0xbd, 0x1, 0x84, 0x16, 0x93, 0xcb, 0x4e, 0xdc, 0x59, 0xe5, 0x60, 0xf2, 0x77, 0x97, 0x12, 0x80, 0x5, 0xb9, 0x3c, 0xae, 0x2b, 0x1e, 0x9b, 0x9, 0x8c, 0x30, 0xb5, 0x27, 0xa2, 0x42, 0xc7, 0x55, 0xd0, 0x6c, 0xe9, 0x7b, 0xfe, 0xa6, 0x23, 0xb1, 0x34, 0x88, 0xd, 0x9f, 0x1a, 0xfa, 0x7f, 0xed, 0x68, 0xd4, 0x51, 0xc3, 0x46}, - {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1, 0x88, 0xe, 0x99, 0x1f, 0xaa, 0x2c, 0xbb, 0x3d, 0xcc, 0x4a, 0xdd, 0x5b, 0xee, 0x68, 0xff, 0x79, 0xd, 0x8b, 0x1c, 0x9a, 0x2f, 0xa9, 0x3e, 0xb8, 0x49, 0xcf, 0x58, 0xde, 0x6b, 0xed, 0x7a, 0xfc, 0x85, 0x3, 0x94, 0x12, 0xa7, 0x21, 0xb6, 0x30, 0xc1, 0x47, 0xd0, 0x56, 0xe3, 0x65, 0xf2, 0x74, 0x1a, 0x9c, 0xb, 0x8d, 0x38, 0xbe, 0x29, 0xaf, 0x5e, 0xd8, 0x4f, 0xc9, 0x7c, 0xfa, 0x6d, 0xeb, 0x92, 0x14, 0x83, 0x5, 0xb0, 0x36, 0xa1, 0x27, 0xd6, 0x50, 0xc7, 0x41, 0xf4, 0x72, 0xe5, 0x63, 0x17, 0x91, 0x6, 0x80, 0x35, 0xb3, 0x24, 0xa2, 0x53, 0xd5, 0x42, 0xc4, 0x71, 0xf7, 0x60, 0xe6, 0x9f, 0x19, 0x8e, 0x8, 0xbd, 0x3b, 0xac, 0x2a, 0xdb, 0x5d, 0xca, 0x4c, 0xf9, 0x7f, 0xe8, 0x6e, 0x34, 0xb2, 0x25, 0xa3, 0x16, 0x90, 0x7, 0x81, 0x70, 0xf6, 0x61, 0xe7, 0x52, 0xd4, 0x43, 0xc5, 0xbc, 0x3a, 0xad, 0x2b, 0x9e, 0x18, 0x8f, 0x9, 0xf8, 0x7e, 0xe9, 0x6f, 0xda, 0x5c, 0xcb, 0x4d, 0x39, 0xbf, 0x28, 0xae, 0x1b, 0x9d, 0xa, 0x8c, 0x7d, 0xfb, 0x6c, 0xea, 0x5f, 0xd9, 0x4e, 0xc8, 0xb1, 0x37, 0xa0, 0x26, 0x93, 0x15, 0x82, 0x4, 0xf5, 0x73, 0xe4, 0x62, 0xd7, 0x51, 0xc6, 0x40, 0x2e, 0xa8, 0x3f, 0xb9, 0xc, 0x8a, 0x1d, 0x9b, 0x6a, 0xec, 0x7b, 0xfd, 0x48, 0xce, 0x59, 0xdf, 0xa6, 0x20, 0xb7, 0x31, 0x84, 0x2, 0x95, 0x13, 0xe2, 0x64, 0xf3, 0x75, 0xc0, 0x46, 0xd1, 0x57, 0x23, 0xa5, 0x32, 0xb4, 0x1, 0x87, 0x10, 0x96, 0x67, 0xe1, 0x76, 0xf0, 0x45, 0xc3, 0x54, 0xd2, 0xab, 0x2d, 0xba, 0x3c, 0x89, 0xf, 0x98, 0x1e, 0xef, 0x69, 0xfe, 0x78, 0xcd, 0x4b, 0xdc, 0x5a}, - {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe, 0x98, 0x1f, 0x8b, 0xc, 0xbe, 0x39, 0xad, 0x2a, 0xd4, 0x53, 0xc7, 0x40, 0xf2, 0x75, 0xe1, 0x66, 0x2d, 0xaa, 0x3e, 0xb9, 0xb, 0x8c, 0x18, 0x9f, 0x61, 0xe6, 0x72, 0xf5, 0x47, 0xc0, 0x54, 0xd3, 0xb5, 0x32, 0xa6, 0x21, 0x93, 0x14, 0x80, 0x7, 0xf9, 0x7e, 0xea, 0x6d, 0xdf, 0x58, 0xcc, 0x4b, 0x5a, 0xdd, 0x49, 0xce, 0x7c, 0xfb, 0x6f, 0xe8, 0x16, 0x91, 0x5, 0x82, 0x30, 0xb7, 0x23, 0xa4, 0xc2, 0x45, 0xd1, 0x56, 0xe4, 0x63, 0xf7, 0x70, 0x8e, 0x9, 0x9d, 0x1a, 0xa8, 0x2f, 0xbb, 0x3c, 0x77, 0xf0, 0x64, 0xe3, 0x51, 0xd6, 0x42, 0xc5, 0x3b, 0xbc, 0x28, 0xaf, 0x1d, 0x9a, 0xe, 0x89, 0xef, 0x68, 0xfc, 0x7b, 0xc9, 0x4e, 0xda, 0x5d, 0xa3, 0x24, 0xb0, 0x37, 0x85, 0x2, 0x96, 0x11, 0xb4, 0x33, 0xa7, 0x20, 0x92, 0x15, 0x81, 0x6, 0xf8, 0x7f, 0xeb, 0x6c, 0xde, 0x59, 0xcd, 0x4a, 0x2c, 0xab, 0x3f, 0xb8, 0xa, 0x8d, 0x19, 0x9e, 0x60, 0xe7, 0x73, 0xf4, 0x46, 0xc1, 0x55, 0xd2, 0x99, 0x1e, 0x8a, 0xd, 0xbf, 0x38, 0xac, 0x2b, 0xd5, 0x52, 0xc6, 0x41, 0xf3, 0x74, 0xe0, 0x67, 0x1, 0x86, 0x12, 0x95, 0x27, 0xa0, 0x34, 0xb3, 0x4d, 0xca, 0x5e, 0xd9, 0x6b, 0xec, 0x78, 0xff, 0xee, 0x69, 0xfd, 0x7a, 0xc8, 0x4f, 0xdb, 0x5c, 0xa2, 0x25, 0xb1, 0x36, 0x84, 0x3, 0x97, 0x10, 0x76, 0xf1, 0x65, 0xe2, 0x50, 0xd7, 0x43, 0xc4, 0x3a, 0xbd, 0x29, 0xae, 0x1c, 0x9b, 0xf, 0x88, 0xc3, 0x44, 0xd0, 0x57, 0xe5, 0x62, 0xf6, 0x71, 0x8f, 0x8, 0x9c, 0x1b, 0xa9, 0x2e, 0xba, 0x3d, 0x5b, 0xdc, 0x48, 0xcf, 0x7d, 0xfa, 0x6e, 0xe9, 0x17, 0x90, 0x4, 0x83, 0x31, 0xb6, 0x22, 0xa5}, - {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab, 0x68, 0xe0, 0x65, 0xed, 0x72, 0xfa, 0x7f, 0xf7, 0x5c, 0xd4, 0x51, 0xd9, 0x46, 0xce, 0x4b, 0xc3, 0xd0, 0x58, 0xdd, 0x55, 0xca, 0x42, 0xc7, 0x4f, 0xe4, 0x6c, 0xe9, 0x61, 0xfe, 0x76, 0xf3, 0x7b, 0xb8, 0x30, 0xb5, 0x3d, 0xa2, 0x2a, 0xaf, 0x27, 0x8c, 0x4, 0x81, 0x9, 0x96, 0x1e, 0x9b, 0x13, 0xbd, 0x35, 0xb0, 0x38, 0xa7, 0x2f, 0xaa, 0x22, 0x89, 0x1, 0x84, 0xc, 0x93, 0x1b, 0x9e, 0x16, 0xd5, 0x5d, 0xd8, 0x50, 0xcf, 0x47, 0xc2, 0x4a, 0xe1, 0x69, 0xec, 0x64, 0xfb, 0x73, 0xf6, 0x7e, 0x6d, 0xe5, 0x60, 0xe8, 0x77, 0xff, 0x7a, 0xf2, 0x59, 0xd1, 0x54, 0xdc, 0x43, 0xcb, 0x4e, 0xc6, 0x5, 0x8d, 0x8, 0x80, 0x1f, 0x97, 0x12, 0x9a, 0x31, 0xb9, 0x3c, 0xb4, 0x2b, 0xa3, 0x26, 0xae, 0x67, 0xef, 0x6a, 0xe2, 0x7d, 0xf5, 0x70, 0xf8, 0x53, 0xdb, 0x5e, 0xd6, 0x49, 0xc1, 0x44, 0xcc, 0xf, 0x87, 0x2, 0x8a, 0x15, 0x9d, 0x18, 0x90, 0x3b, 0xb3, 0x36, 0xbe, 0x21, 0xa9, 0x2c, 0xa4, 0xb7, 0x3f, 0xba, 0x32, 0xad, 0x25, 0xa0, 0x28, 0x83, 0xb, 0x8e, 0x6, 0x99, 0x11, 0x94, 0x1c, 0xdf, 0x57, 0xd2, 0x5a, 0xc5, 0x4d, 0xc8, 0x40, 0xeb, 0x63, 0xe6, 0x6e, 0xf1, 0x79, 0xfc, 0x74, 0xda, 0x52, 0xd7, 0x5f, 0xc0, 0x48, 0xcd, 0x45, 0xee, 0x66, 0xe3, 0x6b, 0xf4, 0x7c, 0xf9, 0x71, 0xb2, 0x3a, 0xbf, 0x37, 0xa8, 0x20, 0xa5, 0x2d, 0x86, 0xe, 0x8b, 0x3, 0x9c, 0x14, 0x91, 0x19, 0xa, 0x82, 0x7, 0x8f, 0x10, 0x98, 0x1d, 0x95, 0x3e, 0xb6, 0x33, 0xbb, 0x24, 0xac, 0x29, 0xa1, 0x62, 0xea, 0x6f, 0xe7, 0x78, 0xf0, 0x75, 0xfd, 0x56, 0xde, 0x5b, 0xd3, 0x4c, 0xc4, 0x41, 0xc9}, - {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4, 0x78, 0xf1, 0x77, 0xfe, 0x66, 0xef, 0x69, 0xe0, 0x44, 0xcd, 0x4b, 0xc2, 0x5a, 0xd3, 0x55, 0xdc, 0xf0, 0x79, 0xff, 0x76, 0xee, 0x67, 0xe1, 0x68, 0xcc, 0x45, 0xc3, 0x4a, 0xd2, 0x5b, 0xdd, 0x54, 0x88, 0x1, 0x87, 0xe, 0x96, 0x1f, 0x99, 0x10, 0xb4, 0x3d, 0xbb, 0x32, 0xaa, 0x23, 0xa5, 0x2c, 0xfd, 0x74, 0xf2, 0x7b, 0xe3, 0x6a, 0xec, 0x65, 0xc1, 0x48, 0xce, 0x47, 0xdf, 0x56, 0xd0, 0x59, 0x85, 0xc, 0x8a, 0x3, 0x9b, 0x12, 0x94, 0x1d, 0xb9, 0x30, 0xb6, 0x3f, 0xa7, 0x2e, 0xa8, 0x21, 0xd, 0x84, 0x2, 0x8b, 0x13, 0x9a, 0x1c, 0x95, 0x31, 0xb8, 0x3e, 0xb7, 0x2f, 0xa6, 0x20, 0xa9, 0x75, 0xfc, 0x7a, 0xf3, 0x6b, 0xe2, 0x64, 0xed, 0x49, 0xc0, 0x46, 0xcf, 0x57, 0xde, 0x58, 0xd1, 0xe7, 0x6e, 0xe8, 0x61, 0xf9, 0x70, 0xf6, 0x7f, 0xdb, 0x52, 0xd4, 0x5d, 0xc5, 0x4c, 0xca, 0x43, 0x9f, 0x16, 0x90, 0x19, 0x81, 0x8, 0x8e, 0x7, 0xa3, 0x2a, 0xac, 0x25, 0xbd, 0x34, 0xb2, 0x3b, 0x17, 0x9e, 0x18, 0x91, 0x9, 0x80, 0x6, 0x8f, 0x2b, 0xa2, 0x24, 0xad, 0x35, 0xbc, 0x3a, 0xb3, 0x6f, 0xe6, 0x60, 0xe9, 0x71, 0xf8, 0x7e, 0xf7, 0x53, 0xda, 0x5c, 0xd5, 0x4d, 0xc4, 0x42, 0xcb, 0x1a, 0x93, 0x15, 0x9c, 0x4, 0x8d, 0xb, 0x82, 0x26, 0xaf, 0x29, 0xa0, 0x38, 0xb1, 0x37, 0xbe, 0x62, 0xeb, 0x6d, 0xe4, 0x7c, 0xf5, 0x73, 0xfa, 0x5e, 0xd7, 0x51, 0xd8, 0x40, 0xc9, 0x4f, 0xc6, 0xea, 0x63, 0xe5, 0x6c, 0xf4, 0x7d, 0xfb, 0x72, 0xd6, 0x5f, 0xd9, 0x50, 0xc8, 0x41, 0xc7, 0x4e, 0x92, 0x1b, 0x9d, 0x14, 0x8c, 0x5, 0x83, 0xa, 0xae, 0x27, 0xa1, 0x28, 0xb0, 0x39, 0xbf, 0x36}, - {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5, 0x48, 0xc2, 0x41, 0xcb, 0x5a, 0xd0, 0x53, 0xd9, 0x6c, 0xe6, 0x65, 0xef, 0x7e, 0xf4, 0x77, 0xfd, 0x90, 0x1a, 0x99, 0x13, 0x82, 0x8, 0x8b, 0x1, 0xb4, 0x3e, 0xbd, 0x37, 0xa6, 0x2c, 0xaf, 0x25, 0xd8, 0x52, 0xd1, 0x5b, 0xca, 0x40, 0xc3, 0x49, 0xfc, 0x76, 0xf5, 0x7f, 0xee, 0x64, 0xe7, 0x6d, 0x3d, 0xb7, 0x34, 0xbe, 0x2f, 0xa5, 0x26, 0xac, 0x19, 0x93, 0x10, 0x9a, 0xb, 0x81, 0x2, 0x88, 0x75, 0xff, 0x7c, 0xf6, 0x67, 0xed, 0x6e, 0xe4, 0x51, 0xdb, 0x58, 0xd2, 0x43, 0xc9, 0x4a, 0xc0, 0xad, 0x27, 0xa4, 0x2e, 0xbf, 0x35, 0xb6, 0x3c, 0x89, 0x3, 0x80, 0xa, 0x9b, 0x11, 0x92, 0x18, 0xe5, 0x6f, 0xec, 0x66, 0xf7, 0x7d, 0xfe, 0x74, 0xc1, 0x4b, 0xc8, 0x42, 0xd3, 0x59, 0xda, 0x50, 0x7a, 0xf0, 0x73, 0xf9, 0x68, 0xe2, 0x61, 0xeb, 0x5e, 0xd4, 0x57, 0xdd, 0x4c, 0xc6, 0x45, 0xcf, 0x32, 0xb8, 0x3b, 0xb1, 0x20, 0xaa, 0x29, 0xa3, 0x16, 0x9c, 0x1f, 0x95, 0x4, 0x8e, 0xd, 0x87, 0xea, 0x60, 0xe3, 0x69, 0xf8, 0x72, 0xf1, 0x7b, 0xce, 0x44, 0xc7, 0x4d, 0xdc, 0x56, 0xd5, 0x5f, 0xa2, 0x28, 0xab, 0x21, 0xb0, 0x3a, 0xb9, 0x33, 0x86, 0xc, 0x8f, 0x5, 0x94, 0x1e, 0x9d, 0x17, 0x47, 0xcd, 0x4e, 0xc4, 0x55, 0xdf, 0x5c, 0xd6, 0x63, 0xe9, 0x6a, 0xe0, 0x71, 0xfb, 0x78, 0xf2, 0xf, 0x85, 0x6, 0x8c, 0x1d, 0x97, 0x14, 0x9e, 0x2b, 0xa1, 0x22, 0xa8, 0x39, 0xb3, 0x30, 0xba, 0xd7, 0x5d, 0xde, 0x54, 0xc5, 0x4f, 0xcc, 0x46, 0xf3, 0x79, 0xfa, 0x70, 0xe1, 0x6b, 0xe8, 0x62, 0x9f, 0x15, 0x96, 0x1c, 0x8d, 0x7, 0x84, 0xe, 0xbb, 0x31, 0xb2, 0x38, 0xa9, 0x23, 0xa0, 0x2a}, - {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba, 0x58, 0xd3, 0x53, 0xd8, 0x4e, 0xc5, 0x45, 0xce, 0x74, 0xff, 0x7f, 0xf4, 0x62, 0xe9, 0x69, 0xe2, 0xb0, 0x3b, 0xbb, 0x30, 0xa6, 0x2d, 0xad, 0x26, 0x9c, 0x17, 0x97, 0x1c, 0x8a, 0x1, 0x81, 0xa, 0xe8, 0x63, 0xe3, 0x68, 0xfe, 0x75, 0xf5, 0x7e, 0xc4, 0x4f, 0xcf, 0x44, 0xd2, 0x59, 0xd9, 0x52, 0x7d, 0xf6, 0x76, 0xfd, 0x6b, 0xe0, 0x60, 0xeb, 0x51, 0xda, 0x5a, 0xd1, 0x47, 0xcc, 0x4c, 0xc7, 0x25, 0xae, 0x2e, 0xa5, 0x33, 0xb8, 0x38, 0xb3, 0x9, 0x82, 0x2, 0x89, 0x1f, 0x94, 0x14, 0x9f, 0xcd, 0x46, 0xc6, 0x4d, 0xdb, 0x50, 0xd0, 0x5b, 0xe1, 0x6a, 0xea, 0x61, 0xf7, 0x7c, 0xfc, 0x77, 0x95, 0x1e, 0x9e, 0x15, 0x83, 0x8, 0x88, 0x3, 0xb9, 0x32, 0xb2, 0x39, 0xaf, 0x24, 0xa4, 0x2f, 0xfa, 0x71, 0xf1, 0x7a, 0xec, 0x67, 0xe7, 0x6c, 0xd6, 0x5d, 0xdd, 0x56, 0xc0, 0x4b, 0xcb, 0x40, 0xa2, 0x29, 0xa9, 0x22, 0xb4, 0x3f, 0xbf, 0x34, 0x8e, 0x5, 0x85, 0xe, 0x98, 0x13, 0x93, 0x18, 0x4a, 0xc1, 0x41, 0xca, 0x5c, 0xd7, 0x57, 0xdc, 0x66, 0xed, 0x6d, 0xe6, 0x70, 0xfb, 0x7b, 0xf0, 0x12, 0x99, 0x19, 0x92, 0x4, 0x8f, 0xf, 0x84, 0x3e, 0xb5, 0x35, 0xbe, 0x28, 0xa3, 0x23, 0xa8, 0x87, 0xc, 0x8c, 0x7, 0x91, 0x1a, 0x9a, 0x11, 0xab, 0x20, 0xa0, 0x2b, 0xbd, 0x36, 0xb6, 0x3d, 0xdf, 0x54, 0xd4, 0x5f, 0xc9, 0x42, 0xc2, 0x49, 0xf3, 0x78, 0xf8, 0x73, 0xe5, 0x6e, 0xee, 0x65, 0x37, 0xbc, 0x3c, 0xb7, 0x21, 0xaa, 0x2a, 0xa1, 0x1b, 0x90, 0x10, 0x9b, 0xd, 0x86, 0x6, 0x8d, 0x6f, 0xe4, 0x64, 0xef, 0x79, 0xf2, 0x72, 0xf9, 0x43, 0xc8, 0x48, 0xc3, 0x55, 0xde, 0x5e, 0xd5}, - {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97, 0x28, 0xa4, 0x2d, 0xa1, 0x22, 0xae, 0x27, 0xab, 0x3c, 0xb0, 0x39, 0xb5, 0x36, 0xba, 0x33, 0xbf, 0x50, 0xdc, 0x55, 0xd9, 0x5a, 0xd6, 0x5f, 0xd3, 0x44, 0xc8, 0x41, 0xcd, 0x4e, 0xc2, 0x4b, 0xc7, 0x78, 0xf4, 0x7d, 0xf1, 0x72, 0xfe, 0x77, 0xfb, 0x6c, 0xe0, 0x69, 0xe5, 0x66, 0xea, 0x63, 0xef, 0xa0, 0x2c, 0xa5, 0x29, 0xaa, 0x26, 0xaf, 0x23, 0xb4, 0x38, 0xb1, 0x3d, 0xbe, 0x32, 0xbb, 0x37, 0x88, 0x4, 0x8d, 0x1, 0x82, 0xe, 0x87, 0xb, 0x9c, 0x10, 0x99, 0x15, 0x96, 0x1a, 0x93, 0x1f, 0xf0, 0x7c, 0xf5, 0x79, 0xfa, 0x76, 0xff, 0x73, 0xe4, 0x68, 0xe1, 0x6d, 0xee, 0x62, 0xeb, 0x67, 0xd8, 0x54, 0xdd, 0x51, 0xd2, 0x5e, 0xd7, 0x5b, 0xcc, 0x40, 0xc9, 0x45, 0xc6, 0x4a, 0xc3, 0x4f, 0x5d, 0xd1, 0x58, 0xd4, 0x57, 0xdb, 0x52, 0xde, 0x49, 0xc5, 0x4c, 0xc0, 0x43, 0xcf, 0x46, 0xca, 0x75, 0xf9, 0x70, 0xfc, 0x7f, 0xf3, 0x7a, 0xf6, 0x61, 0xed, 0x64, 0xe8, 0x6b, 0xe7, 0x6e, 0xe2, 0xd, 0x81, 0x8, 0x84, 0x7, 0x8b, 0x2, 0x8e, 0x19, 0x95, 0x1c, 0x90, 0x13, 0x9f, 0x16, 0x9a, 0x25, 0xa9, 0x20, 0xac, 0x2f, 0xa3, 0x2a, 0xa6, 0x31, 0xbd, 0x34, 0xb8, 0x3b, 0xb7, 0x3e, 0xb2, 0xfd, 0x71, 0xf8, 0x74, 0xf7, 0x7b, 0xf2, 0x7e, 0xe9, 0x65, 0xec, 0x60, 0xe3, 0x6f, 0xe6, 0x6a, 0xd5, 0x59, 0xd0, 0x5c, 0xdf, 0x53, 0xda, 0x56, 0xc1, 0x4d, 0xc4, 0x48, 0xcb, 0x47, 0xce, 0x42, 0xad, 0x21, 0xa8, 0x24, 0xa7, 0x2b, 0xa2, 0x2e, 0xb9, 0x35, 0xbc, 0x30, 0xb3, 0x3f, 0xb6, 0x3a, 0x85, 0x9, 0x80, 0xc, 0x8f, 0x3, 0x8a, 0x6, 0x91, 0x1d, 0x94, 0x18, 0x9b, 0x17, 0x9e, 0x12}, - {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98, 0x38, 0xb5, 0x3f, 0xb2, 0x36, 0xbb, 0x31, 0xbc, 0x24, 0xa9, 0x23, 0xae, 0x2a, 0xa7, 0x2d, 0xa0, 0x70, 0xfd, 0x77, 0xfa, 0x7e, 0xf3, 0x79, 0xf4, 0x6c, 0xe1, 0x6b, 0xe6, 0x62, 0xef, 0x65, 0xe8, 0x48, 0xc5, 0x4f, 0xc2, 0x46, 0xcb, 0x41, 0xcc, 0x54, 0xd9, 0x53, 0xde, 0x5a, 0xd7, 0x5d, 0xd0, 0xe0, 0x6d, 0xe7, 0x6a, 0xee, 0x63, 0xe9, 0x64, 0xfc, 0x71, 0xfb, 0x76, 0xf2, 0x7f, 0xf5, 0x78, 0xd8, 0x55, 0xdf, 0x52, 0xd6, 0x5b, 0xd1, 0x5c, 0xc4, 0x49, 0xc3, 0x4e, 0xca, 0x47, 0xcd, 0x40, 0x90, 0x1d, 0x97, 0x1a, 0x9e, 0x13, 0x99, 0x14, 0x8c, 0x1, 0x8b, 0x6, 0x82, 0xf, 0x85, 0x8, 0xa8, 0x25, 0xaf, 0x22, 0xa6, 0x2b, 0xa1, 0x2c, 0xb4, 0x39, 0xb3, 0x3e, 0xba, 0x37, 0xbd, 0x30, 0xdd, 0x50, 0xda, 0x57, 0xd3, 0x5e, 0xd4, 0x59, 0xc1, 0x4c, 0xc6, 0x4b, 0xcf, 0x42, 0xc8, 0x45, 0xe5, 0x68, 0xe2, 0x6f, 0xeb, 0x66, 0xec, 0x61, 0xf9, 0x74, 0xfe, 0x73, 0xf7, 0x7a, 0xf0, 0x7d, 0xad, 0x20, 0xaa, 0x27, 0xa3, 0x2e, 0xa4, 0x29, 0xb1, 0x3c, 0xb6, 0x3b, 0xbf, 0x32, 0xb8, 0x35, 0x95, 0x18, 0x92, 0x1f, 0x9b, 0x16, 0x9c, 0x11, 0x89, 0x4, 0x8e, 0x3, 0x87, 0xa, 0x80, 0xd, 0x3d, 0xb0, 0x3a, 0xb7, 0x33, 0xbe, 0x34, 0xb9, 0x21, 0xac, 0x26, 0xab, 0x2f, 0xa2, 0x28, 0xa5, 0x5, 0x88, 0x2, 0x8f, 0xb, 0x86, 0xc, 0x81, 0x19, 0x94, 0x1e, 0x93, 0x17, 0x9a, 0x10, 0x9d, 0x4d, 0xc0, 0x4a, 0xc7, 0x43, 0xce, 0x44, 0xc9, 0x51, 0xdc, 0x56, 0xdb, 0x5f, 0xd2, 0x58, 0xd5, 0x75, 0xf8, 0x72, 0xff, 0x7b, 0xf6, 0x7c, 0xf1, 0x69, 0xe4, 0x6e, 0xe3, 0x67, 0xea, 0x60, 0xed}, - {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89, 0x8, 0x86, 0x9, 0x87, 0xa, 0x84, 0xb, 0x85, 0xc, 0x82, 0xd, 0x83, 0xe, 0x80, 0xf, 0x81, 0x10, 0x9e, 0x11, 0x9f, 0x12, 0x9c, 0x13, 0x9d, 0x14, 0x9a, 0x15, 0x9b, 0x16, 0x98, 0x17, 0x99, 0x18, 0x96, 0x19, 0x97, 0x1a, 0x94, 0x1b, 0x95, 0x1c, 0x92, 0x1d, 0x93, 0x1e, 0x90, 0x1f, 0x91, 0x20, 0xae, 0x21, 0xaf, 0x22, 0xac, 0x23, 0xad, 0x24, 0xaa, 0x25, 0xab, 0x26, 0xa8, 0x27, 0xa9, 0x28, 0xa6, 0x29, 0xa7, 0x2a, 0xa4, 0x2b, 0xa5, 0x2c, 0xa2, 0x2d, 0xa3, 0x2e, 0xa0, 0x2f, 0xa1, 0x30, 0xbe, 0x31, 0xbf, 0x32, 0xbc, 0x33, 0xbd, 0x34, 0xba, 0x35, 0xbb, 0x36, 0xb8, 0x37, 0xb9, 0x38, 0xb6, 0x39, 0xb7, 0x3a, 0xb4, 0x3b, 0xb5, 0x3c, 0xb2, 0x3d, 0xb3, 0x3e, 0xb0, 0x3f, 0xb1, 0x40, 0xce, 0x41, 0xcf, 0x42, 0xcc, 0x43, 0xcd, 0x44, 0xca, 0x45, 0xcb, 0x46, 0xc8, 0x47, 0xc9, 0x48, 0xc6, 0x49, 0xc7, 0x4a, 0xc4, 0x4b, 0xc5, 0x4c, 0xc2, 0x4d, 0xc3, 0x4e, 0xc0, 0x4f, 0xc1, 0x50, 0xde, 0x51, 0xdf, 0x52, 0xdc, 0x53, 0xdd, 0x54, 0xda, 0x55, 0xdb, 0x56, 0xd8, 0x57, 0xd9, 0x58, 0xd6, 0x59, 0xd7, 0x5a, 0xd4, 0x5b, 0xd5, 0x5c, 0xd2, 0x5d, 0xd3, 0x5e, 0xd0, 0x5f, 0xd1, 0x60, 0xee, 0x61, 0xef, 0x62, 0xec, 0x63, 0xed, 0x64, 0xea, 0x65, 0xeb, 0x66, 0xe8, 0x67, 0xe9, 0x68, 0xe6, 0x69, 0xe7, 0x6a, 0xe4, 0x6b, 0xe5, 0x6c, 0xe2, 0x6d, 0xe3, 0x6e, 0xe0, 0x6f, 0xe1, 0x70, 0xfe, 0x71, 0xff, 0x72, 0xfc, 0x73, 0xfd, 0x74, 0xfa, 0x75, 0xfb, 0x76, 0xf8, 0x77, 0xf9, 0x78, 0xf6, 0x79, 0xf7, 0x7a, 0xf4, 0x7b, 0xf5, 0x7c, 0xf2, 0x7d, 0xf3, 0x7e, 0xf0, 0x7f, 0xf1}, - {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86, 0x18, 0x97, 0x1b, 0x94, 0x1e, 0x91, 0x1d, 0x92, 0x14, 0x9b, 0x17, 0x98, 0x12, 0x9d, 0x11, 0x9e, 0x30, 0xbf, 0x33, 0xbc, 0x36, 0xb9, 0x35, 0xba, 0x3c, 0xb3, 0x3f, 0xb0, 0x3a, 0xb5, 0x39, 0xb6, 0x28, 0xa7, 0x2b, 0xa4, 0x2e, 0xa1, 0x2d, 0xa2, 0x24, 0xab, 0x27, 0xa8, 0x22, 0xad, 0x21, 0xae, 0x60, 0xef, 0x63, 0xec, 0x66, 0xe9, 0x65, 0xea, 0x6c, 0xe3, 0x6f, 0xe0, 0x6a, 0xe5, 0x69, 0xe6, 0x78, 0xf7, 0x7b, 0xf4, 0x7e, 0xf1, 0x7d, 0xf2, 0x74, 0xfb, 0x77, 0xf8, 0x72, 0xfd, 0x71, 0xfe, 0x50, 0xdf, 0x53, 0xdc, 0x56, 0xd9, 0x55, 0xda, 0x5c, 0xd3, 0x5f, 0xd0, 0x5a, 0xd5, 0x59, 0xd6, 0x48, 0xc7, 0x4b, 0xc4, 0x4e, 0xc1, 0x4d, 0xc2, 0x44, 0xcb, 0x47, 0xc8, 0x42, 0xcd, 0x41, 0xce, 0xc0, 0x4f, 0xc3, 0x4c, 0xc6, 0x49, 0xc5, 0x4a, 0xcc, 0x43, 0xcf, 0x40, 0xca, 0x45, 0xc9, 0x46, 0xd8, 0x57, 0xdb, 0x54, 0xde, 0x51, 0xdd, 0x52, 0xd4, 0x5b, 0xd7, 0x58, 0xd2, 0x5d, 0xd1, 0x5e, 0xf0, 0x7f, 0xf3, 0x7c, 0xf6, 0x79, 0xf5, 0x7a, 0xfc, 0x73, 0xff, 0x70, 0xfa, 0x75, 0xf9, 0x76, 0xe8, 0x67, 0xeb, 0x64, 0xee, 0x61, 0xed, 0x62, 0xe4, 0x6b, 0xe7, 0x68, 0xe2, 0x6d, 0xe1, 0x6e, 0xa0, 0x2f, 0xa3, 0x2c, 0xa6, 0x29, 0xa5, 0x2a, 0xac, 0x23, 0xaf, 0x20, 0xaa, 0x25, 0xa9, 0x26, 0xb8, 0x37, 0xbb, 0x34, 0xbe, 0x31, 0xbd, 0x32, 0xb4, 0x3b, 0xb7, 0x38, 0xb2, 0x3d, 0xb1, 0x3e, 0x90, 0x1f, 0x93, 0x1c, 0x96, 0x19, 0x95, 0x1a, 0x9c, 0x13, 0x9f, 0x10, 0x9a, 0x15, 0x99, 0x16, 0x88, 0x7, 0x8b, 0x4, 0x8e, 0x1, 0x8d, 0x2, 0x84, 0xb, 0x87, 0x8, 0x82, 0xd, 0x81, 0xe}, - {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23, 0xf5, 0x65, 0xc8, 0x58, 0x8f, 0x1f, 0xb2, 0x22, 0x1, 0x91, 0x3c, 0xac, 0x7b, 0xeb, 0x46, 0xd6, 0xf7, 0x67, 0xca, 0x5a, 0x8d, 0x1d, 0xb0, 0x20, 0x3, 0x93, 0x3e, 0xae, 0x79, 0xe9, 0x44, 0xd4, 0x2, 0x92, 0x3f, 0xaf, 0x78, 0xe8, 0x45, 0xd5, 0xf6, 0x66, 0xcb, 0x5b, 0x8c, 0x1c, 0xb1, 0x21, 0xf3, 0x63, 0xce, 0x5e, 0x89, 0x19, 0xb4, 0x24, 0x7, 0x97, 0x3a, 0xaa, 0x7d, 0xed, 0x40, 0xd0, 0x6, 0x96, 0x3b, 0xab, 0x7c, 0xec, 0x41, 0xd1, 0xf2, 0x62, 0xcf, 0x5f, 0x88, 0x18, 0xb5, 0x25, 0x4, 0x94, 0x39, 0xa9, 0x7e, 0xee, 0x43, 0xd3, 0xf0, 0x60, 0xcd, 0x5d, 0x8a, 0x1a, 0xb7, 0x27, 0xf1, 0x61, 0xcc, 0x5c, 0x8b, 0x1b, 0xb6, 0x26, 0x5, 0x95, 0x38, 0xa8, 0x7f, 0xef, 0x42, 0xd2, 0xfb, 0x6b, 0xc6, 0x56, 0x81, 0x11, 0xbc, 0x2c, 0xf, 0x9f, 0x32, 0xa2, 0x75, 0xe5, 0x48, 0xd8, 0xe, 0x9e, 0x33, 0xa3, 0x74, 0xe4, 0x49, 0xd9, 0xfa, 0x6a, 0xc7, 0x57, 0x80, 0x10, 0xbd, 0x2d, 0xc, 0x9c, 0x31, 0xa1, 0x76, 0xe6, 0x4b, 0xdb, 0xf8, 0x68, 0xc5, 0x55, 0x82, 0x12, 0xbf, 0x2f, 0xf9, 0x69, 0xc4, 0x54, 0x83, 0x13, 0xbe, 0x2e, 0xd, 0x9d, 0x30, 0xa0, 0x77, 0xe7, 0x4a, 0xda, 0x8, 0x98, 0x35, 0xa5, 0x72, 0xe2, 0x4f, 0xdf, 0xfc, 0x6c, 0xc1, 0x51, 0x86, 0x16, 0xbb, 0x2b, 0xfd, 0x6d, 0xc0, 0x50, 0x87, 0x17, 0xba, 0x2a, 0x9, 0x99, 0x34, 0xa4, 0x73, 0xe3, 0x4e, 0xde, 0xff, 0x6f, 0xc2, 0x52, 0x85, 0x15, 0xb8, 0x28, 0xb, 0x9b, 0x36, 0xa6, 0x71, 0xe1, 0x4c, 0xdc, 0xa, 0x9a, 0x37, 0xa7, 0x70, 0xe0, 0x4d, 0xdd, 0xfe, 0x6e, 0xc3, 0x53, 0x84, 0x14, 0xb9, 0x29}, - {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c, 0xe5, 0x74, 0xda, 0x4b, 0x9b, 0xa, 0xa4, 0x35, 0x19, 0x88, 0x26, 0xb7, 0x67, 0xf6, 0x58, 0xc9, 0xd7, 0x46, 0xe8, 0x79, 0xa9, 0x38, 0x96, 0x7, 0x2b, 0xba, 0x14, 0x85, 0x55, 0xc4, 0x6a, 0xfb, 0x32, 0xa3, 0xd, 0x9c, 0x4c, 0xdd, 0x73, 0xe2, 0xce, 0x5f, 0xf1, 0x60, 0xb0, 0x21, 0x8f, 0x1e, 0xb3, 0x22, 0x8c, 0x1d, 0xcd, 0x5c, 0xf2, 0x63, 0x4f, 0xde, 0x70, 0xe1, 0x31, 0xa0, 0xe, 0x9f, 0x56, 0xc7, 0x69, 0xf8, 0x28, 0xb9, 0x17, 0x86, 0xaa, 0x3b, 0x95, 0x4, 0xd4, 0x45, 0xeb, 0x7a, 0x64, 0xf5, 0x5b, 0xca, 0x1a, 0x8b, 0x25, 0xb4, 0x98, 0x9, 0xa7, 0x36, 0xe6, 0x77, 0xd9, 0x48, 0x81, 0x10, 0xbe, 0x2f, 0xff, 0x6e, 0xc0, 0x51, 0x7d, 0xec, 0x42, 0xd3, 0x3, 0x92, 0x3c, 0xad, 0x7b, 0xea, 0x44, 0xd5, 0x5, 0x94, 0x3a, 0xab, 0x87, 0x16, 0xb8, 0x29, 0xf9, 0x68, 0xc6, 0x57, 0x9e, 0xf, 0xa1, 0x30, 0xe0, 0x71, 0xdf, 0x4e, 0x62, 0xf3, 0x5d, 0xcc, 0x1c, 0x8d, 0x23, 0xb2, 0xac, 0x3d, 0x93, 0x2, 0xd2, 0x43, 0xed, 0x7c, 0x50, 0xc1, 0x6f, 0xfe, 0x2e, 0xbf, 0x11, 0x80, 0x49, 0xd8, 0x76, 0xe7, 0x37, 0xa6, 0x8, 0x99, 0xb5, 0x24, 0x8a, 0x1b, 0xcb, 0x5a, 0xf4, 0x65, 0xc8, 0x59, 0xf7, 0x66, 0xb6, 0x27, 0x89, 0x18, 0x34, 0xa5, 0xb, 0x9a, 0x4a, 0xdb, 0x75, 0xe4, 0x2d, 0xbc, 0x12, 0x83, 0x53, 0xc2, 0x6c, 0xfd, 0xd1, 0x40, 0xee, 0x7f, 0xaf, 0x3e, 0x90, 0x1, 0x1f, 0x8e, 0x20, 0xb1, 0x61, 0xf0, 0x5e, 0xcf, 0xe3, 0x72, 0xdc, 0x4d, 0x9d, 0xc, 0xa2, 0x33, 0xfa, 0x6b, 0xc5, 0x54, 0x84, 0x15, 0xbb, 0x2a, 0x6, 0x97, 0x39, 0xa8, 0x78, 0xe9, 0x47, 0xd6}, - {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d, 0xd5, 0x47, 0xec, 0x7e, 0xa7, 0x35, 0x9e, 0xc, 0x31, 0xa3, 0x8, 0x9a, 0x43, 0xd1, 0x7a, 0xe8, 0xb7, 0x25, 0x8e, 0x1c, 0xc5, 0x57, 0xfc, 0x6e, 0x53, 0xc1, 0x6a, 0xf8, 0x21, 0xb3, 0x18, 0x8a, 0x62, 0xf0, 0x5b, 0xc9, 0x10, 0x82, 0x29, 0xbb, 0x86, 0x14, 0xbf, 0x2d, 0xf4, 0x66, 0xcd, 0x5f, 0x73, 0xe1, 0x4a, 0xd8, 0x1, 0x93, 0x38, 0xaa, 0x97, 0x5, 0xae, 0x3c, 0xe5, 0x77, 0xdc, 0x4e, 0xa6, 0x34, 0x9f, 0xd, 0xd4, 0x46, 0xed, 0x7f, 0x42, 0xd0, 0x7b, 0xe9, 0x30, 0xa2, 0x9, 0x9b, 0xc4, 0x56, 0xfd, 0x6f, 0xb6, 0x24, 0x8f, 0x1d, 0x20, 0xb2, 0x19, 0x8b, 0x52, 0xc0, 0x6b, 0xf9, 0x11, 0x83, 0x28, 0xba, 0x63, 0xf1, 0x5a, 0xc8, 0xf5, 0x67, 0xcc, 0x5e, 0x87, 0x15, 0xbe, 0x2c, 0xe6, 0x74, 0xdf, 0x4d, 0x94, 0x6, 0xad, 0x3f, 0x2, 0x90, 0x3b, 0xa9, 0x70, 0xe2, 0x49, 0xdb, 0x33, 0xa1, 0xa, 0x98, 0x41, 0xd3, 0x78, 0xea, 0xd7, 0x45, 0xee, 0x7c, 0xa5, 0x37, 0x9c, 0xe, 0x51, 0xc3, 0x68, 0xfa, 0x23, 0xb1, 0x1a, 0x88, 0xb5, 0x27, 0x8c, 0x1e, 0xc7, 0x55, 0xfe, 0x6c, 0x84, 0x16, 0xbd, 0x2f, 0xf6, 0x64, 0xcf, 0x5d, 0x60, 0xf2, 0x59, 0xcb, 0x12, 0x80, 0x2b, 0xb9, 0x95, 0x7, 0xac, 0x3e, 0xe7, 0x75, 0xde, 0x4c, 0x71, 0xe3, 0x48, 0xda, 0x3, 0x91, 0x3a, 0xa8, 0x40, 0xd2, 0x79, 0xeb, 0x32, 0xa0, 0xb, 0x99, 0xa4, 0x36, 0x9d, 0xf, 0xd6, 0x44, 0xef, 0x7d, 0x22, 0xb0, 0x1b, 0x89, 0x50, 0xc2, 0x69, 0xfb, 0xc6, 0x54, 0xff, 0x6d, 0xb4, 0x26, 0x8d, 0x1f, 0xf7, 0x65, 0xce, 0x5c, 0x85, 0x17, 0xbc, 0x2e, 0x13, 0x81, 0x2a, 0xb8, 0x61, 0xf3, 0x58, 0xca}, - {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32, 0xc5, 0x56, 0xfe, 0x6d, 0xb3, 0x20, 0x88, 0x1b, 0x29, 0xba, 0x12, 0x81, 0x5f, 0xcc, 0x64, 0xf7, 0x97, 0x4, 0xac, 0x3f, 0xe1, 0x72, 0xda, 0x49, 0x7b, 0xe8, 0x40, 0xd3, 0xd, 0x9e, 0x36, 0xa5, 0x52, 0xc1, 0x69, 0xfa, 0x24, 0xb7, 0x1f, 0x8c, 0xbe, 0x2d, 0x85, 0x16, 0xc8, 0x5b, 0xf3, 0x60, 0x33, 0xa0, 0x8, 0x9b, 0x45, 0xd6, 0x7e, 0xed, 0xdf, 0x4c, 0xe4, 0x77, 0xa9, 0x3a, 0x92, 0x1, 0xf6, 0x65, 0xcd, 0x5e, 0x80, 0x13, 0xbb, 0x28, 0x1a, 0x89, 0x21, 0xb2, 0x6c, 0xff, 0x57, 0xc4, 0xa4, 0x37, 0x9f, 0xc, 0xd2, 0x41, 0xe9, 0x7a, 0x48, 0xdb, 0x73, 0xe0, 0x3e, 0xad, 0x5, 0x96, 0x61, 0xf2, 0x5a, 0xc9, 0x17, 0x84, 0x2c, 0xbf, 0x8d, 0x1e, 0xb6, 0x25, 0xfb, 0x68, 0xc0, 0x53, 0x66, 0xf5, 0x5d, 0xce, 0x10, 0x83, 0x2b, 0xb8, 0x8a, 0x19, 0xb1, 0x22, 0xfc, 0x6f, 0xc7, 0x54, 0xa3, 0x30, 0x98, 0xb, 0xd5, 0x46, 0xee, 0x7d, 0x4f, 0xdc, 0x74, 0xe7, 0x39, 0xaa, 0x2, 0x91, 0xf1, 0x62, 0xca, 0x59, 0x87, 0x14, 0xbc, 0x2f, 0x1d, 0x8e, 0x26, 0xb5, 0x6b, 0xf8, 0x50, 0xc3, 0x34, 0xa7, 0xf, 0x9c, 0x42, 0xd1, 0x79, 0xea, 0xd8, 0x4b, 0xe3, 0x70, 0xae, 0x3d, 0x95, 0x6, 0x55, 0xc6, 0x6e, 0xfd, 0x23, 0xb0, 0x18, 0x8b, 0xb9, 0x2a, 0x82, 0x11, 0xcf, 0x5c, 0xf4, 0x67, 0x90, 0x3, 0xab, 0x38, 0xe6, 0x75, 0xdd, 0x4e, 0x7c, 0xef, 0x47, 0xd4, 0xa, 0x99, 0x31, 0xa2, 0xc2, 0x51, 0xf9, 0x6a, 0xb4, 0x27, 0x8f, 0x1c, 0x2e, 0xbd, 0x15, 0x86, 0x58, 0xcb, 0x63, 0xf0, 0x7, 0x94, 0x3c, 0xaf, 0x71, 0xe2, 0x4a, 0xd9, 0xeb, 0x78, 0xd0, 0x43, 0x9d, 0xe, 0xa6, 0x35}, - {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f, 0xb5, 0x21, 0x80, 0x14, 0xdf, 0x4b, 0xea, 0x7e, 0x61, 0xf5, 0x54, 0xc0, 0xb, 0x9f, 0x3e, 0xaa, 0x77, 0xe3, 0x42, 0xd6, 0x1d, 0x89, 0x28, 0xbc, 0xa3, 0x37, 0x96, 0x2, 0xc9, 0x5d, 0xfc, 0x68, 0xc2, 0x56, 0xf7, 0x63, 0xa8, 0x3c, 0x9d, 0x9, 0x16, 0x82, 0x23, 0xb7, 0x7c, 0xe8, 0x49, 0xdd, 0xee, 0x7a, 0xdb, 0x4f, 0x84, 0x10, 0xb1, 0x25, 0x3a, 0xae, 0xf, 0x9b, 0x50, 0xc4, 0x65, 0xf1, 0x5b, 0xcf, 0x6e, 0xfa, 0x31, 0xa5, 0x4, 0x90, 0x8f, 0x1b, 0xba, 0x2e, 0xe5, 0x71, 0xd0, 0x44, 0x99, 0xd, 0xac, 0x38, 0xf3, 0x67, 0xc6, 0x52, 0x4d, 0xd9, 0x78, 0xec, 0x27, 0xb3, 0x12, 0x86, 0x2c, 0xb8, 0x19, 0x8d, 0x46, 0xd2, 0x73, 0xe7, 0xf8, 0x6c, 0xcd, 0x59, 0x92, 0x6, 0xa7, 0x33, 0xc1, 0x55, 0xf4, 0x60, 0xab, 0x3f, 0x9e, 0xa, 0x15, 0x81, 0x20, 0xb4, 0x7f, 0xeb, 0x4a, 0xde, 0x74, 0xe0, 0x41, 0xd5, 0x1e, 0x8a, 0x2b, 0xbf, 0xa0, 0x34, 0x95, 0x1, 0xca, 0x5e, 0xff, 0x6b, 0xb6, 0x22, 0x83, 0x17, 0xdc, 0x48, 0xe9, 0x7d, 0x62, 0xf6, 0x57, 0xc3, 0x8, 0x9c, 0x3d, 0xa9, 0x3, 0x97, 0x36, 0xa2, 0x69, 0xfd, 0x5c, 0xc8, 0xd7, 0x43, 0xe2, 0x76, 0xbd, 0x29, 0x88, 0x1c, 0x2f, 0xbb, 0x1a, 0x8e, 0x45, 0xd1, 0x70, 0xe4, 0xfb, 0x6f, 0xce, 0x5a, 0x91, 0x5, 0xa4, 0x30, 0x9a, 0xe, 0xaf, 0x3b, 0xf0, 0x64, 0xc5, 0x51, 0x4e, 0xda, 0x7b, 0xef, 0x24, 0xb0, 0x11, 0x85, 0x58, 0xcc, 0x6d, 0xf9, 0x32, 0xa6, 0x7, 0x93, 0x8c, 0x18, 0xb9, 0x2d, 0xe6, 0x72, 0xd3, 0x47, 0xed, 0x79, 0xd8, 0x4c, 0x87, 0x13, 0xb2, 0x26, 0x39, 0xad, 0xc, 0x98, 0x53, 0xc7, 0x66, 0xf2}, - {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10, 0xa5, 0x30, 0x92, 0x7, 0xcb, 0x5e, 0xfc, 0x69, 0x79, 0xec, 0x4e, 0xdb, 0x17, 0x82, 0x20, 0xb5, 0x57, 0xc2, 0x60, 0xf5, 0x39, 0xac, 0xe, 0x9b, 0x8b, 0x1e, 0xbc, 0x29, 0xe5, 0x70, 0xd2, 0x47, 0xf2, 0x67, 0xc5, 0x50, 0x9c, 0x9, 0xab, 0x3e, 0x2e, 0xbb, 0x19, 0x8c, 0x40, 0xd5, 0x77, 0xe2, 0xae, 0x3b, 0x99, 0xc, 0xc0, 0x55, 0xf7, 0x62, 0x72, 0xe7, 0x45, 0xd0, 0x1c, 0x89, 0x2b, 0xbe, 0xb, 0x9e, 0x3c, 0xa9, 0x65, 0xf0, 0x52, 0xc7, 0xd7, 0x42, 0xe0, 0x75, 0xb9, 0x2c, 0x8e, 0x1b, 0xf9, 0x6c, 0xce, 0x5b, 0x97, 0x2, 0xa0, 0x35, 0x25, 0xb0, 0x12, 0x87, 0x4b, 0xde, 0x7c, 0xe9, 0x5c, 0xc9, 0x6b, 0xfe, 0x32, 0xa7, 0x5, 0x90, 0x80, 0x15, 0xb7, 0x22, 0xee, 0x7b, 0xd9, 0x4c, 0x41, 0xd4, 0x76, 0xe3, 0x2f, 0xba, 0x18, 0x8d, 0x9d, 0x8, 0xaa, 0x3f, 0xf3, 0x66, 0xc4, 0x51, 0xe4, 0x71, 0xd3, 0x46, 0x8a, 0x1f, 0xbd, 0x28, 0x38, 0xad, 0xf, 0x9a, 0x56, 0xc3, 0x61, 0xf4, 0x16, 0x83, 0x21, 0xb4, 0x78, 0xed, 0x4f, 0xda, 0xca, 0x5f, 0xfd, 0x68, 0xa4, 0x31, 0x93, 0x6, 0xb3, 0x26, 0x84, 0x11, 0xdd, 0x48, 0xea, 0x7f, 0x6f, 0xfa, 0x58, 0xcd, 0x1, 0x94, 0x36, 0xa3, 0xef, 0x7a, 0xd8, 0x4d, 0x81, 0x14, 0xb6, 0x23, 0x33, 0xa6, 0x4, 0x91, 0x5d, 0xc8, 0x6a, 0xff, 0x4a, 0xdf, 0x7d, 0xe8, 0x24, 0xb1, 0x13, 0x86, 0x96, 0x3, 0xa1, 0x34, 0xf8, 0x6d, 0xcf, 0x5a, 0xb8, 0x2d, 0x8f, 0x1a, 0xd6, 0x43, 0xe1, 0x74, 0x64, 0xf1, 0x53, 0xc6, 0xa, 0x9f, 0x3d, 0xa8, 0x1d, 0x88, 0x2a, 0xbf, 0x73, 0xe6, 0x44, 0xd1, 0xc1, 0x54, 0xf6, 0x63, 0xaf, 0x3a, 0x98, 0xd}, - {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1, 0x95, 0x3, 0xa4, 0x32, 0xf7, 0x61, 0xc6, 0x50, 0x51, 0xc7, 0x60, 0xf6, 0x33, 0xa5, 0x2, 0x94, 0x37, 0xa1, 0x6, 0x90, 0x55, 0xc3, 0x64, 0xf2, 0xf3, 0x65, 0xc2, 0x54, 0x91, 0x7, 0xa0, 0x36, 0xa2, 0x34, 0x93, 0x5, 0xc0, 0x56, 0xf1, 0x67, 0x66, 0xf0, 0x57, 0xc1, 0x4, 0x92, 0x35, 0xa3, 0x6e, 0xf8, 0x5f, 0xc9, 0xc, 0x9a, 0x3d, 0xab, 0xaa, 0x3c, 0x9b, 0xd, 0xc8, 0x5e, 0xf9, 0x6f, 0xfb, 0x6d, 0xca, 0x5c, 0x99, 0xf, 0xa8, 0x3e, 0x3f, 0xa9, 0xe, 0x98, 0x5d, 0xcb, 0x6c, 0xfa, 0x59, 0xcf, 0x68, 0xfe, 0x3b, 0xad, 0xa, 0x9c, 0x9d, 0xb, 0xac, 0x3a, 0xff, 0x69, 0xce, 0x58, 0xcc, 0x5a, 0xfd, 0x6b, 0xae, 0x38, 0x9f, 0x9, 0x8, 0x9e, 0x39, 0xaf, 0x6a, 0xfc, 0x5b, 0xcd, 0xdc, 0x4a, 0xed, 0x7b, 0xbe, 0x28, 0x8f, 0x19, 0x18, 0x8e, 0x29, 0xbf, 0x7a, 0xec, 0x4b, 0xdd, 0x49, 0xdf, 0x78, 0xee, 0x2b, 0xbd, 0x1a, 0x8c, 0x8d, 0x1b, 0xbc, 0x2a, 0xef, 0x79, 0xde, 0x48, 0xeb, 0x7d, 0xda, 0x4c, 0x89, 0x1f, 0xb8, 0x2e, 0x2f, 0xb9, 0x1e, 0x88, 0x4d, 0xdb, 0x7c, 0xea, 0x7e, 0xe8, 0x4f, 0xd9, 0x1c, 0x8a, 0x2d, 0xbb, 0xba, 0x2c, 0x8b, 0x1d, 0xd8, 0x4e, 0xe9, 0x7f, 0xb2, 0x24, 0x83, 0x15, 0xd0, 0x46, 0xe1, 0x77, 0x76, 0xe0, 0x47, 0xd1, 0x14, 0x82, 0x25, 0xb3, 0x27, 0xb1, 0x16, 0x80, 0x45, 0xd3, 0x74, 0xe2, 0xe3, 0x75, 0xd2, 0x44, 0x81, 0x17, 0xb0, 0x26, 0x85, 0x13, 0xb4, 0x22, 0xe7, 0x71, 0xd6, 0x40, 0x41, 0xd7, 0x70, 0xe6, 0x23, 0xb5, 0x12, 0x84, 0x10, 0x86, 0x21, 0xb7, 0x72, 0xe4, 0x43, 0xd5, 0xd4, 0x42, 0xe5, 0x73, 0xb6, 0x20, 0x87, 0x11}, - {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe, 0x85, 0x12, 0xb6, 0x21, 0xe3, 0x74, 0xd0, 0x47, 0x49, 0xde, 0x7a, 0xed, 0x2f, 0xb8, 0x1c, 0x8b, 0x17, 0x80, 0x24, 0xb3, 0x71, 0xe6, 0x42, 0xd5, 0xdb, 0x4c, 0xe8, 0x7f, 0xbd, 0x2a, 0x8e, 0x19, 0x92, 0x5, 0xa1, 0x36, 0xf4, 0x63, 0xc7, 0x50, 0x5e, 0xc9, 0x6d, 0xfa, 0x38, 0xaf, 0xb, 0x9c, 0x2e, 0xb9, 0x1d, 0x8a, 0x48, 0xdf, 0x7b, 0xec, 0xe2, 0x75, 0xd1, 0x46, 0x84, 0x13, 0xb7, 0x20, 0xab, 0x3c, 0x98, 0xf, 0xcd, 0x5a, 0xfe, 0x69, 0x67, 0xf0, 0x54, 0xc3, 0x1, 0x96, 0x32, 0xa5, 0x39, 0xae, 0xa, 0x9d, 0x5f, 0xc8, 0x6c, 0xfb, 0xf5, 0x62, 0xc6, 0x51, 0x93, 0x4, 0xa0, 0x37, 0xbc, 0x2b, 0x8f, 0x18, 0xda, 0x4d, 0xe9, 0x7e, 0x70, 0xe7, 0x43, 0xd4, 0x16, 0x81, 0x25, 0xb2, 0x5c, 0xcb, 0x6f, 0xf8, 0x3a, 0xad, 0x9, 0x9e, 0x90, 0x7, 0xa3, 0x34, 0xf6, 0x61, 0xc5, 0x52, 0xd9, 0x4e, 0xea, 0x7d, 0xbf, 0x28, 0x8c, 0x1b, 0x15, 0x82, 0x26, 0xb1, 0x73, 0xe4, 0x40, 0xd7, 0x4b, 0xdc, 0x78, 0xef, 0x2d, 0xba, 0x1e, 0x89, 0x87, 0x10, 0xb4, 0x23, 0xe1, 0x76, 0xd2, 0x45, 0xce, 0x59, 0xfd, 0x6a, 0xa8, 0x3f, 0x9b, 0xc, 0x2, 0x95, 0x31, 0xa6, 0x64, 0xf3, 0x57, 0xc0, 0x72, 0xe5, 0x41, 0xd6, 0x14, 0x83, 0x27, 0xb0, 0xbe, 0x29, 0x8d, 0x1a, 0xd8, 0x4f, 0xeb, 0x7c, 0xf7, 0x60, 0xc4, 0x53, 0x91, 0x6, 0xa2, 0x35, 0x3b, 0xac, 0x8, 0x9f, 0x5d, 0xca, 0x6e, 0xf9, 0x65, 0xf2, 0x56, 0xc1, 0x3, 0x94, 0x30, 0xa7, 0xa9, 0x3e, 0x9a, 0xd, 0xcf, 0x58, 0xfc, 0x6b, 0xe0, 0x77, 0xd3, 0x44, 0x86, 0x11, 0xb5, 0x22, 0x2c, 0xbb, 0x1f, 0x88, 0x4a, 0xdd, 0x79, 0xee}, - {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b, 0x75, 0xed, 0x58, 0xc0, 0x2f, 0xb7, 0x2, 0x9a, 0xc1, 0x59, 0xec, 0x74, 0x9b, 0x3, 0xb6, 0x2e, 0xea, 0x72, 0xc7, 0x5f, 0xb0, 0x28, 0x9d, 0x5, 0x5e, 0xc6, 0x73, 0xeb, 0x4, 0x9c, 0x29, 0xb1, 0x9f, 0x7, 0xb2, 0x2a, 0xc5, 0x5d, 0xe8, 0x70, 0x2b, 0xb3, 0x6, 0x9e, 0x71, 0xe9, 0x5c, 0xc4, 0xc9, 0x51, 0xe4, 0x7c, 0x93, 0xb, 0xbe, 0x26, 0x7d, 0xe5, 0x50, 0xc8, 0x27, 0xbf, 0xa, 0x92, 0xbc, 0x24, 0x91, 0x9, 0xe6, 0x7e, 0xcb, 0x53, 0x8, 0x90, 0x25, 0xbd, 0x52, 0xca, 0x7f, 0xe7, 0x23, 0xbb, 0xe, 0x96, 0x79, 0xe1, 0x54, 0xcc, 0x97, 0xf, 0xba, 0x22, 0xcd, 0x55, 0xe0, 0x78, 0x56, 0xce, 0x7b, 0xe3, 0xc, 0x94, 0x21, 0xb9, 0xe2, 0x7a, 0xcf, 0x57, 0xb8, 0x20, 0x95, 0xd, 0x8f, 0x17, 0xa2, 0x3a, 0xd5, 0x4d, 0xf8, 0x60, 0x3b, 0xa3, 0x16, 0x8e, 0x61, 0xf9, 0x4c, 0xd4, 0xfa, 0x62, 0xd7, 0x4f, 0xa0, 0x38, 0x8d, 0x15, 0x4e, 0xd6, 0x63, 0xfb, 0x14, 0x8c, 0x39, 0xa1, 0x65, 0xfd, 0x48, 0xd0, 0x3f, 0xa7, 0x12, 0x8a, 0xd1, 0x49, 0xfc, 0x64, 0x8b, 0x13, 0xa6, 0x3e, 0x10, 0x88, 0x3d, 0xa5, 0x4a, 0xd2, 0x67, 0xff, 0xa4, 0x3c, 0x89, 0x11, 0xfe, 0x66, 0xd3, 0x4b, 0x46, 0xde, 0x6b, 0xf3, 0x1c, 0x84, 0x31, 0xa9, 0xf2, 0x6a, 0xdf, 0x47, 0xa8, 0x30, 0x85, 0x1d, 0x33, 0xab, 0x1e, 0x86, 0x69, 0xf1, 0x44, 0xdc, 0x87, 0x1f, 0xaa, 0x32, 0xdd, 0x45, 0xf0, 0x68, 0xac, 0x34, 0x81, 0x19, 0xf6, 0x6e, 0xdb, 0x43, 0x18, 0x80, 0x35, 0xad, 0x42, 0xda, 0x6f, 0xf7, 0xd9, 0x41, 0xf4, 0x6c, 0x83, 0x1b, 0xae, 0x36, 0x6d, 0xf5, 0x40, 0xd8, 0x37, 0xaf, 0x1a, 0x82}, - {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54, 0x65, 0xfc, 0x4a, 0xd3, 0x3b, 0xa2, 0x14, 0x8d, 0xd9, 0x40, 0xf6, 0x6f, 0x87, 0x1e, 0xa8, 0x31, 0xca, 0x53, 0xe5, 0x7c, 0x94, 0xd, 0xbb, 0x22, 0x76, 0xef, 0x59, 0xc0, 0x28, 0xb1, 0x7, 0x9e, 0xaf, 0x36, 0x80, 0x19, 0xf1, 0x68, 0xde, 0x47, 0x13, 0x8a, 0x3c, 0xa5, 0x4d, 0xd4, 0x62, 0xfb, 0x89, 0x10, 0xa6, 0x3f, 0xd7, 0x4e, 0xf8, 0x61, 0x35, 0xac, 0x1a, 0x83, 0x6b, 0xf2, 0x44, 0xdd, 0xec, 0x75, 0xc3, 0x5a, 0xb2, 0x2b, 0x9d, 0x4, 0x50, 0xc9, 0x7f, 0xe6, 0xe, 0x97, 0x21, 0xb8, 0x43, 0xda, 0x6c, 0xf5, 0x1d, 0x84, 0x32, 0xab, 0xff, 0x66, 0xd0, 0x49, 0xa1, 0x38, 0x8e, 0x17, 0x26, 0xbf, 0x9, 0x90, 0x78, 0xe1, 0x57, 0xce, 0x9a, 0x3, 0xb5, 0x2c, 0xc4, 0x5d, 0xeb, 0x72, 0xf, 0x96, 0x20, 0xb9, 0x51, 0xc8, 0x7e, 0xe7, 0xb3, 0x2a, 0x9c, 0x5, 0xed, 0x74, 0xc2, 0x5b, 0x6a, 0xf3, 0x45, 0xdc, 0x34, 0xad, 0x1b, 0x82, 0xd6, 0x4f, 0xf9, 0x60, 0x88, 0x11, 0xa7, 0x3e, 0xc5, 0x5c, 0xea, 0x73, 0x9b, 0x2, 0xb4, 0x2d, 0x79, 0xe0, 0x56, 0xcf, 0x27, 0xbe, 0x8, 0x91, 0xa0, 0x39, 0x8f, 0x16, 0xfe, 0x67, 0xd1, 0x48, 0x1c, 0x85, 0x33, 0xaa, 0x42, 0xdb, 0x6d, 0xf4, 0x86, 0x1f, 0xa9, 0x30, 0xd8, 0x41, 0xf7, 0x6e, 0x3a, 0xa3, 0x15, 0x8c, 0x64, 0xfd, 0x4b, 0xd2, 0xe3, 0x7a, 0xcc, 0x55, 0xbd, 0x24, 0x92, 0xb, 0x5f, 0xc6, 0x70, 0xe9, 0x1, 0x98, 0x2e, 0xb7, 0x4c, 0xd5, 0x63, 0xfa, 0x12, 0x8b, 0x3d, 0xa4, 0xf0, 0x69, 0xdf, 0x46, 0xae, 0x37, 0x81, 0x18, 0x29, 0xb0, 0x6, 0x9f, 0x77, 0xee, 0x58, 0xc1, 0x95, 0xc, 0xba, 0x23, 0xcb, 0x52, 0xe4, 0x7d}, - {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45, 0x55, 0xcf, 0x7c, 0xe6, 0x7, 0x9d, 0x2e, 0xb4, 0xf1, 0x6b, 0xd8, 0x42, 0xa3, 0x39, 0x8a, 0x10, 0xaa, 0x30, 0x83, 0x19, 0xf8, 0x62, 0xd1, 0x4b, 0xe, 0x94, 0x27, 0xbd, 0x5c, 0xc6, 0x75, 0xef, 0xff, 0x65, 0xd6, 0x4c, 0xad, 0x37, 0x84, 0x1e, 0x5b, 0xc1, 0x72, 0xe8, 0x9, 0x93, 0x20, 0xba, 0x49, 0xd3, 0x60, 0xfa, 0x1b, 0x81, 0x32, 0xa8, 0xed, 0x77, 0xc4, 0x5e, 0xbf, 0x25, 0x96, 0xc, 0x1c, 0x86, 0x35, 0xaf, 0x4e, 0xd4, 0x67, 0xfd, 0xb8, 0x22, 0x91, 0xb, 0xea, 0x70, 0xc3, 0x59, 0xe3, 0x79, 0xca, 0x50, 0xb1, 0x2b, 0x98, 0x2, 0x47, 0xdd, 0x6e, 0xf4, 0x15, 0x8f, 0x3c, 0xa6, 0xb6, 0x2c, 0x9f, 0x5, 0xe4, 0x7e, 0xcd, 0x57, 0x12, 0x88, 0x3b, 0xa1, 0x40, 0xda, 0x69, 0xf3, 0x92, 0x8, 0xbb, 0x21, 0xc0, 0x5a, 0xe9, 0x73, 0x36, 0xac, 0x1f, 0x85, 0x64, 0xfe, 0x4d, 0xd7, 0xc7, 0x5d, 0xee, 0x74, 0x95, 0xf, 0xbc, 0x26, 0x63, 0xf9, 0x4a, 0xd0, 0x31, 0xab, 0x18, 0x82, 0x38, 0xa2, 0x11, 0x8b, 0x6a, 0xf0, 0x43, 0xd9, 0x9c, 0x6, 0xb5, 0x2f, 0xce, 0x54, 0xe7, 0x7d, 0x6d, 0xf7, 0x44, 0xde, 0x3f, 0xa5, 0x16, 0x8c, 0xc9, 0x53, 0xe0, 0x7a, 0x9b, 0x1, 0xb2, 0x28, 0xdb, 0x41, 0xf2, 0x68, 0x89, 0x13, 0xa0, 0x3a, 0x7f, 0xe5, 0x56, 0xcc, 0x2d, 0xb7, 0x4, 0x9e, 0x8e, 0x14, 0xa7, 0x3d, 0xdc, 0x46, 0xf5, 0x6f, 0x2a, 0xb0, 0x3, 0x99, 0x78, 0xe2, 0x51, 0xcb, 0x71, 0xeb, 0x58, 0xc2, 0x23, 0xb9, 0xa, 0x90, 0xd5, 0x4f, 0xfc, 0x66, 0x87, 0x1d, 0xae, 0x34, 0x24, 0xbe, 0xd, 0x97, 0x76, 0xec, 0x5f, 0xc5, 0x80, 0x1a, 0xa9, 0x33, 0xd2, 0x48, 0xfb, 0x61}, - {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a, 0x45, 0xde, 0x6e, 0xf5, 0x13, 0x88, 0x38, 0xa3, 0xe9, 0x72, 0xc2, 0x59, 0xbf, 0x24, 0x94, 0xf, 0x8a, 0x11, 0xa1, 0x3a, 0xdc, 0x47, 0xf7, 0x6c, 0x26, 0xbd, 0xd, 0x96, 0x70, 0xeb, 0x5b, 0xc0, 0xcf, 0x54, 0xe4, 0x7f, 0x99, 0x2, 0xb2, 0x29, 0x63, 0xf8, 0x48, 0xd3, 0x35, 0xae, 0x1e, 0x85, 0x9, 0x92, 0x22, 0xb9, 0x5f, 0xc4, 0x74, 0xef, 0xa5, 0x3e, 0x8e, 0x15, 0xf3, 0x68, 0xd8, 0x43, 0x4c, 0xd7, 0x67, 0xfc, 0x1a, 0x81, 0x31, 0xaa, 0xe0, 0x7b, 0xcb, 0x50, 0xb6, 0x2d, 0x9d, 0x6, 0x83, 0x18, 0xa8, 0x33, 0xd5, 0x4e, 0xfe, 0x65, 0x2f, 0xb4, 0x4, 0x9f, 0x79, 0xe2, 0x52, 0xc9, 0xc6, 0x5d, 0xed, 0x76, 0x90, 0xb, 0xbb, 0x20, 0x6a, 0xf1, 0x41, 0xda, 0x3c, 0xa7, 0x17, 0x8c, 0x12, 0x89, 0x39, 0xa2, 0x44, 0xdf, 0x6f, 0xf4, 0xbe, 0x25, 0x95, 0xe, 0xe8, 0x73, 0xc3, 0x58, 0x57, 0xcc, 0x7c, 0xe7, 0x1, 0x9a, 0x2a, 0xb1, 0xfb, 0x60, 0xd0, 0x4b, 0xad, 0x36, 0x86, 0x1d, 0x98, 0x3, 0xb3, 0x28, 0xce, 0x55, 0xe5, 0x7e, 0x34, 0xaf, 0x1f, 0x84, 0x62, 0xf9, 0x49, 0xd2, 0xdd, 0x46, 0xf6, 0x6d, 0x8b, 0x10, 0xa0, 0x3b, 0x71, 0xea, 0x5a, 0xc1, 0x27, 0xbc, 0xc, 0x97, 0x1b, 0x80, 0x30, 0xab, 0x4d, 0xd6, 0x66, 0xfd, 0xb7, 0x2c, 0x9c, 0x7, 0xe1, 0x7a, 0xca, 0x51, 0x5e, 0xc5, 0x75, 0xee, 0x8, 0x93, 0x23, 0xb8, 0xf2, 0x69, 0xd9, 0x42, 0xa4, 0x3f, 0x8f, 0x14, 0x91, 0xa, 0xba, 0x21, 0xc7, 0x5c, 0xec, 0x77, 0x3d, 0xa6, 0x16, 0x8d, 0x6b, 0xf0, 0x40, 0xdb, 0xd4, 0x4f, 0xff, 0x64, 0x82, 0x19, 0xa9, 0x32, 0x78, 0xe3, 0x53, 0xc8, 0x2e, 0xb5, 0x5, 0x9e}, - {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67, 0x35, 0xa9, 0x10, 0x8c, 0x7f, 0xe3, 0x5a, 0xc6, 0xa1, 0x3d, 0x84, 0x18, 0xeb, 0x77, 0xce, 0x52, 0x6a, 0xf6, 0x4f, 0xd3, 0x20, 0xbc, 0x5, 0x99, 0xfe, 0x62, 0xdb, 0x47, 0xb4, 0x28, 0x91, 0xd, 0x5f, 0xc3, 0x7a, 0xe6, 0x15, 0x89, 0x30, 0xac, 0xcb, 0x57, 0xee, 0x72, 0x81, 0x1d, 0xa4, 0x38, 0xd4, 0x48, 0xf1, 0x6d, 0x9e, 0x2, 0xbb, 0x27, 0x40, 0xdc, 0x65, 0xf9, 0xa, 0x96, 0x2f, 0xb3, 0xe1, 0x7d, 0xc4, 0x58, 0xab, 0x37, 0x8e, 0x12, 0x75, 0xe9, 0x50, 0xcc, 0x3f, 0xa3, 0x1a, 0x86, 0xbe, 0x22, 0x9b, 0x7, 0xf4, 0x68, 0xd1, 0x4d, 0x2a, 0xb6, 0xf, 0x93, 0x60, 0xfc, 0x45, 0xd9, 0x8b, 0x17, 0xae, 0x32, 0xc1, 0x5d, 0xe4, 0x78, 0x1f, 0x83, 0x3a, 0xa6, 0x55, 0xc9, 0x70, 0xec, 0xb5, 0x29, 0x90, 0xc, 0xff, 0x63, 0xda, 0x46, 0x21, 0xbd, 0x4, 0x98, 0x6b, 0xf7, 0x4e, 0xd2, 0x80, 0x1c, 0xa5, 0x39, 0xca, 0x56, 0xef, 0x73, 0x14, 0x88, 0x31, 0xad, 0x5e, 0xc2, 0x7b, 0xe7, 0xdf, 0x43, 0xfa, 0x66, 0x95, 0x9, 0xb0, 0x2c, 0x4b, 0xd7, 0x6e, 0xf2, 0x1, 0x9d, 0x24, 0xb8, 0xea, 0x76, 0xcf, 0x53, 0xa0, 0x3c, 0x85, 0x19, 0x7e, 0xe2, 0x5b, 0xc7, 0x34, 0xa8, 0x11, 0x8d, 0x61, 0xfd, 0x44, 0xd8, 0x2b, 0xb7, 0xe, 0x92, 0xf5, 0x69, 0xd0, 0x4c, 0xbf, 0x23, 0x9a, 0x6, 0x54, 0xc8, 0x71, 0xed, 0x1e, 0x82, 0x3b, 0xa7, 0xc0, 0x5c, 0xe5, 0x79, 0x8a, 0x16, 0xaf, 0x33, 0xb, 0x97, 0x2e, 0xb2, 0x41, 0xdd, 0x64, 0xf8, 0x9f, 0x3, 0xba, 0x26, 0xd5, 0x49, 0xf0, 0x6c, 0x3e, 0xa2, 0x1b, 0x87, 0x74, 0xe8, 0x51, 0xcd, 0xaa, 0x36, 0x8f, 0x13, 0xe0, 0x7c, 0xc5, 0x59}, - {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68, 0x25, 0xb8, 0x2, 0x9f, 0x6b, 0xf6, 0x4c, 0xd1, 0xb9, 0x24, 0x9e, 0x3, 0xf7, 0x6a, 0xd0, 0x4d, 0x4a, 0xd7, 0x6d, 0xf0, 0x4, 0x99, 0x23, 0xbe, 0xd6, 0x4b, 0xf1, 0x6c, 0x98, 0x5, 0xbf, 0x22, 0x6f, 0xf2, 0x48, 0xd5, 0x21, 0xbc, 0x6, 0x9b, 0xf3, 0x6e, 0xd4, 0x49, 0xbd, 0x20, 0x9a, 0x7, 0x94, 0x9, 0xb3, 0x2e, 0xda, 0x47, 0xfd, 0x60, 0x8, 0x95, 0x2f, 0xb2, 0x46, 0xdb, 0x61, 0xfc, 0xb1, 0x2c, 0x96, 0xb, 0xff, 0x62, 0xd8, 0x45, 0x2d, 0xb0, 0xa, 0x97, 0x63, 0xfe, 0x44, 0xd9, 0xde, 0x43, 0xf9, 0x64, 0x90, 0xd, 0xb7, 0x2a, 0x42, 0xdf, 0x65, 0xf8, 0xc, 0x91, 0x2b, 0xb6, 0xfb, 0x66, 0xdc, 0x41, 0xb5, 0x28, 0x92, 0xf, 0x67, 0xfa, 0x40, 0xdd, 0x29, 0xb4, 0xe, 0x93, 0x35, 0xa8, 0x12, 0x8f, 0x7b, 0xe6, 0x5c, 0xc1, 0xa9, 0x34, 0x8e, 0x13, 0xe7, 0x7a, 0xc0, 0x5d, 0x10, 0x8d, 0x37, 0xaa, 0x5e, 0xc3, 0x79, 0xe4, 0x8c, 0x11, 0xab, 0x36, 0xc2, 0x5f, 0xe5, 0x78, 0x7f, 0xe2, 0x58, 0xc5, 0x31, 0xac, 0x16, 0x8b, 0xe3, 0x7e, 0xc4, 0x59, 0xad, 0x30, 0x8a, 0x17, 0x5a, 0xc7, 0x7d, 0xe0, 0x14, 0x89, 0x33, 0xae, 0xc6, 0x5b, 0xe1, 0x7c, 0x88, 0x15, 0xaf, 0x32, 0xa1, 0x3c, 0x86, 0x1b, 0xef, 0x72, 0xc8, 0x55, 0x3d, 0xa0, 0x1a, 0x87, 0x73, 0xee, 0x54, 0xc9, 0x84, 0x19, 0xa3, 0x3e, 0xca, 0x57, 0xed, 0x70, 0x18, 0x85, 0x3f, 0xa2, 0x56, 0xcb, 0x71, 0xec, 0xeb, 0x76, 0xcc, 0x51, 0xa5, 0x38, 0x82, 0x1f, 0x77, 0xea, 0x50, 0xcd, 0x39, 0xa4, 0x1e, 0x83, 0xce, 0x53, 0xe9, 0x74, 0x80, 0x1d, 0xa7, 0x3a, 0x52, 0xcf, 0x75, 0xe8, 0x1c, 0x81, 0x3b, 0xa6}, - {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79, 0x15, 0x8b, 0x34, 0xaa, 0x57, 0xc9, 0x76, 0xe8, 0x91, 0xf, 0xb0, 0x2e, 0xd3, 0x4d, 0xf2, 0x6c, 0x2a, 0xb4, 0xb, 0x95, 0x68, 0xf6, 0x49, 0xd7, 0xae, 0x30, 0x8f, 0x11, 0xec, 0x72, 0xcd, 0x53, 0x3f, 0xa1, 0x1e, 0x80, 0x7d, 0xe3, 0x5c, 0xc2, 0xbb, 0x25, 0x9a, 0x4, 0xf9, 0x67, 0xd8, 0x46, 0x54, 0xca, 0x75, 0xeb, 0x16, 0x88, 0x37, 0xa9, 0xd0, 0x4e, 0xf1, 0x6f, 0x92, 0xc, 0xb3, 0x2d, 0x41, 0xdf, 0x60, 0xfe, 0x3, 0x9d, 0x22, 0xbc, 0xc5, 0x5b, 0xe4, 0x7a, 0x87, 0x19, 0xa6, 0x38, 0x7e, 0xe0, 0x5f, 0xc1, 0x3c, 0xa2, 0x1d, 0x83, 0xfa, 0x64, 0xdb, 0x45, 0xb8, 0x26, 0x99, 0x7, 0x6b, 0xf5, 0x4a, 0xd4, 0x29, 0xb7, 0x8, 0x96, 0xef, 0x71, 0xce, 0x50, 0xad, 0x33, 0x8c, 0x12, 0xa8, 0x36, 0x89, 0x17, 0xea, 0x74, 0xcb, 0x55, 0x2c, 0xb2, 0xd, 0x93, 0x6e, 0xf0, 0x4f, 0xd1, 0xbd, 0x23, 0x9c, 0x2, 0xff, 0x61, 0xde, 0x40, 0x39, 0xa7, 0x18, 0x86, 0x7b, 0xe5, 0x5a, 0xc4, 0x82, 0x1c, 0xa3, 0x3d, 0xc0, 0x5e, 0xe1, 0x7f, 0x6, 0x98, 0x27, 0xb9, 0x44, 0xda, 0x65, 0xfb, 0x97, 0x9, 0xb6, 0x28, 0xd5, 0x4b, 0xf4, 0x6a, 0x13, 0x8d, 0x32, 0xac, 0x51, 0xcf, 0x70, 0xee, 0xfc, 0x62, 0xdd, 0x43, 0xbe, 0x20, 0x9f, 0x1, 0x78, 0xe6, 0x59, 0xc7, 0x3a, 0xa4, 0x1b, 0x85, 0xe9, 0x77, 0xc8, 0x56, 0xab, 0x35, 0x8a, 0x14, 0x6d, 0xf3, 0x4c, 0xd2, 0x2f, 0xb1, 0xe, 0x90, 0xd6, 0x48, 0xf7, 0x69, 0x94, 0xa, 0xb5, 0x2b, 0x52, 0xcc, 0x73, 0xed, 0x10, 0x8e, 0x31, 0xaf, 0xc3, 0x5d, 0xe2, 0x7c, 0x81, 0x1f, 0xa0, 0x3e, 0x47, 0xd9, 0x66, 0xf8, 0x5, 0x9b, 0x24, 0xba}, - {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76, 0x5, 0x9a, 0x26, 0xb9, 0x43, 0xdc, 0x60, 0xff, 0x89, 0x16, 0xaa, 0x35, 0xcf, 0x50, 0xec, 0x73, 0xa, 0x95, 0x29, 0xb6, 0x4c, 0xd3, 0x6f, 0xf0, 0x86, 0x19, 0xa5, 0x3a, 0xc0, 0x5f, 0xe3, 0x7c, 0xf, 0x90, 0x2c, 0xb3, 0x49, 0xd6, 0x6a, 0xf5, 0x83, 0x1c, 0xa0, 0x3f, 0xc5, 0x5a, 0xe6, 0x79, 0x14, 0x8b, 0x37, 0xa8, 0x52, 0xcd, 0x71, 0xee, 0x98, 0x7, 0xbb, 0x24, 0xde, 0x41, 0xfd, 0x62, 0x11, 0x8e, 0x32, 0xad, 0x57, 0xc8, 0x74, 0xeb, 0x9d, 0x2, 0xbe, 0x21, 0xdb, 0x44, 0xf8, 0x67, 0x1e, 0x81, 0x3d, 0xa2, 0x58, 0xc7, 0x7b, 0xe4, 0x92, 0xd, 0xb1, 0x2e, 0xd4, 0x4b, 0xf7, 0x68, 0x1b, 0x84, 0x38, 0xa7, 0x5d, 0xc2, 0x7e, 0xe1, 0x97, 0x8, 0xb4, 0x2b, 0xd1, 0x4e, 0xf2, 0x6d, 0x28, 0xb7, 0xb, 0x94, 0x6e, 0xf1, 0x4d, 0xd2, 0xa4, 0x3b, 0x87, 0x18, 0xe2, 0x7d, 0xc1, 0x5e, 0x2d, 0xb2, 0xe, 0x91, 0x6b, 0xf4, 0x48, 0xd7, 0xa1, 0x3e, 0x82, 0x1d, 0xe7, 0x78, 0xc4, 0x5b, 0x22, 0xbd, 0x1, 0x9e, 0x64, 0xfb, 0x47, 0xd8, 0xae, 0x31, 0x8d, 0x12, 0xe8, 0x77, 0xcb, 0x54, 0x27, 0xb8, 0x4, 0x9b, 0x61, 0xfe, 0x42, 0xdd, 0xab, 0x34, 0x88, 0x17, 0xed, 0x72, 0xce, 0x51, 0x3c, 0xa3, 0x1f, 0x80, 0x7a, 0xe5, 0x59, 0xc6, 0xb0, 0x2f, 0x93, 0xc, 0xf6, 0x69, 0xd5, 0x4a, 0x39, 0xa6, 0x1a, 0x85, 0x7f, 0xe0, 0x5c, 0xc3, 0xb5, 0x2a, 0x96, 0x9, 0xf3, 0x6c, 0xd0, 0x4f, 0x36, 0xa9, 0x15, 0x8a, 0x70, 0xef, 0x53, 0xcc, 0xba, 0x25, 0x99, 0x6, 0xfc, 0x63, 0xdf, 0x40, 0x33, 0xac, 0x10, 0x8f, 0x75, 0xea, 0x56, 0xc9, 0xbf, 0x20, 0x9c, 0x3, 0xf9, 0x66, 0xda, 0x45}, - {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e, 0xd2, 0x72, 0x8f, 0x2f, 0x68, 0xc8, 0x35, 0x95, 0xbb, 0x1b, 0xe6, 0x46, 0x1, 0xa1, 0x5c, 0xfc, 0xb9, 0x19, 0xe4, 0x44, 0x3, 0xa3, 0x5e, 0xfe, 0xd0, 0x70, 0x8d, 0x2d, 0x6a, 0xca, 0x37, 0x97, 0x6b, 0xcb, 0x36, 0x96, 0xd1, 0x71, 0x8c, 0x2c, 0x2, 0xa2, 0x5f, 0xff, 0xb8, 0x18, 0xe5, 0x45, 0x6f, 0xcf, 0x32, 0x92, 0xd5, 0x75, 0x88, 0x28, 0x6, 0xa6, 0x5b, 0xfb, 0xbc, 0x1c, 0xe1, 0x41, 0xbd, 0x1d, 0xe0, 0x40, 0x7, 0xa7, 0x5a, 0xfa, 0xd4, 0x74, 0x89, 0x29, 0x6e, 0xce, 0x33, 0x93, 0xd6, 0x76, 0x8b, 0x2b, 0x6c, 0xcc, 0x31, 0x91, 0xbf, 0x1f, 0xe2, 0x42, 0x5, 0xa5, 0x58, 0xf8, 0x4, 0xa4, 0x59, 0xf9, 0xbe, 0x1e, 0xe3, 0x43, 0x6d, 0xcd, 0x30, 0x90, 0xd7, 0x77, 0x8a, 0x2a, 0xde, 0x7e, 0x83, 0x23, 0x64, 0xc4, 0x39, 0x99, 0xb7, 0x17, 0xea, 0x4a, 0xd, 0xad, 0x50, 0xf0, 0xc, 0xac, 0x51, 0xf1, 0xb6, 0x16, 0xeb, 0x4b, 0x65, 0xc5, 0x38, 0x98, 0xdf, 0x7f, 0x82, 0x22, 0x67, 0xc7, 0x3a, 0x9a, 0xdd, 0x7d, 0x80, 0x20, 0xe, 0xae, 0x53, 0xf3, 0xb4, 0x14, 0xe9, 0x49, 0xb5, 0x15, 0xe8, 0x48, 0xf, 0xaf, 0x52, 0xf2, 0xdc, 0x7c, 0x81, 0x21, 0x66, 0xc6, 0x3b, 0x9b, 0xb1, 0x11, 0xec, 0x4c, 0xb, 0xab, 0x56, 0xf6, 0xd8, 0x78, 0x85, 0x25, 0x62, 0xc2, 0x3f, 0x9f, 0x63, 0xc3, 0x3e, 0x9e, 0xd9, 0x79, 0x84, 0x24, 0xa, 0xaa, 0x57, 0xf7, 0xb0, 0x10, 0xed, 0x4d, 0x8, 0xa8, 0x55, 0xf5, 0xb2, 0x12, 0xef, 0x4f, 0x61, 0xc1, 0x3c, 0x9c, 0xdb, 0x7b, 0x86, 0x26, 0xda, 0x7a, 0x87, 0x27, 0x60, 0xc0, 0x3d, 0x9d, 0xb3, 0x13, 0xee, 0x4e, 0x9, 0xa9, 0x54, 0xf4}, - {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21, 0xc2, 0x63, 0x9d, 0x3c, 0x7c, 0xdd, 0x23, 0x82, 0xa3, 0x2, 0xfc, 0x5d, 0x1d, 0xbc, 0x42, 0xe3, 0x99, 0x38, 0xc6, 0x67, 0x27, 0x86, 0x78, 0xd9, 0xf8, 0x59, 0xa7, 0x6, 0x46, 0xe7, 0x19, 0xb8, 0x5b, 0xfa, 0x4, 0xa5, 0xe5, 0x44, 0xba, 0x1b, 0x3a, 0x9b, 0x65, 0xc4, 0x84, 0x25, 0xdb, 0x7a, 0x2f, 0x8e, 0x70, 0xd1, 0x91, 0x30, 0xce, 0x6f, 0x4e, 0xef, 0x11, 0xb0, 0xf0, 0x51, 0xaf, 0xe, 0xed, 0x4c, 0xb2, 0x13, 0x53, 0xf2, 0xc, 0xad, 0x8c, 0x2d, 0xd3, 0x72, 0x32, 0x93, 0x6d, 0xcc, 0xb6, 0x17, 0xe9, 0x48, 0x8, 0xa9, 0x57, 0xf6, 0xd7, 0x76, 0x88, 0x29, 0x69, 0xc8, 0x36, 0x97, 0x74, 0xd5, 0x2b, 0x8a, 0xca, 0x6b, 0x95, 0x34, 0x15, 0xb4, 0x4a, 0xeb, 0xab, 0xa, 0xf4, 0x55, 0x5e, 0xff, 0x1, 0xa0, 0xe0, 0x41, 0xbf, 0x1e, 0x3f, 0x9e, 0x60, 0xc1, 0x81, 0x20, 0xde, 0x7f, 0x9c, 0x3d, 0xc3, 0x62, 0x22, 0x83, 0x7d, 0xdc, 0xfd, 0x5c, 0xa2, 0x3, 0x43, 0xe2, 0x1c, 0xbd, 0xc7, 0x66, 0x98, 0x39, 0x79, 0xd8, 0x26, 0x87, 0xa6, 0x7, 0xf9, 0x58, 0x18, 0xb9, 0x47, 0xe6, 0x5, 0xa4, 0x5a, 0xfb, 0xbb, 0x1a, 0xe4, 0x45, 0x64, 0xc5, 0x3b, 0x9a, 0xda, 0x7b, 0x85, 0x24, 0x71, 0xd0, 0x2e, 0x8f, 0xcf, 0x6e, 0x90, 0x31, 0x10, 0xb1, 0x4f, 0xee, 0xae, 0xf, 0xf1, 0x50, 0xb3, 0x12, 0xec, 0x4d, 0xd, 0xac, 0x52, 0xf3, 0xd2, 0x73, 0x8d, 0x2c, 0x6c, 0xcd, 0x33, 0x92, 0xe8, 0x49, 0xb7, 0x16, 0x56, 0xf7, 0x9, 0xa8, 0x89, 0x28, 0xd6, 0x77, 0x37, 0x96, 0x68, 0xc9, 0x2a, 0x8b, 0x75, 0xd4, 0x94, 0x35, 0xcb, 0x6a, 0x4b, 0xea, 0x14, 0xb5, 0xf5, 0x54, 0xaa, 0xb}, - {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30, 0xf2, 0x50, 0xab, 0x9, 0x40, 0xe2, 0x19, 0xbb, 0x8b, 0x29, 0xd2, 0x70, 0x39, 0x9b, 0x60, 0xc2, 0xf9, 0x5b, 0xa0, 0x2, 0x4b, 0xe9, 0x12, 0xb0, 0x80, 0x22, 0xd9, 0x7b, 0x32, 0x90, 0x6b, 0xc9, 0xb, 0xa9, 0x52, 0xf0, 0xb9, 0x1b, 0xe0, 0x42, 0x72, 0xd0, 0x2b, 0x89, 0xc0, 0x62, 0x99, 0x3b, 0xef, 0x4d, 0xb6, 0x14, 0x5d, 0xff, 0x4, 0xa6, 0x96, 0x34, 0xcf, 0x6d, 0x24, 0x86, 0x7d, 0xdf, 0x1d, 0xbf, 0x44, 0xe6, 0xaf, 0xd, 0xf6, 0x54, 0x64, 0xc6, 0x3d, 0x9f, 0xd6, 0x74, 0x8f, 0x2d, 0x16, 0xb4, 0x4f, 0xed, 0xa4, 0x6, 0xfd, 0x5f, 0x6f, 0xcd, 0x36, 0x94, 0xdd, 0x7f, 0x84, 0x26, 0xe4, 0x46, 0xbd, 0x1f, 0x56, 0xf4, 0xf, 0xad, 0x9d, 0x3f, 0xc4, 0x66, 0x2f, 0x8d, 0x76, 0xd4, 0xc3, 0x61, 0x9a, 0x38, 0x71, 0xd3, 0x28, 0x8a, 0xba, 0x18, 0xe3, 0x41, 0x8, 0xaa, 0x51, 0xf3, 0x31, 0x93, 0x68, 0xca, 0x83, 0x21, 0xda, 0x78, 0x48, 0xea, 0x11, 0xb3, 0xfa, 0x58, 0xa3, 0x1, 0x3a, 0x98, 0x63, 0xc1, 0x88, 0x2a, 0xd1, 0x73, 0x43, 0xe1, 0x1a, 0xb8, 0xf1, 0x53, 0xa8, 0xa, 0xc8, 0x6a, 0x91, 0x33, 0x7a, 0xd8, 0x23, 0x81, 0xb1, 0x13, 0xe8, 0x4a, 0x3, 0xa1, 0x5a, 0xf8, 0x2c, 0x8e, 0x75, 0xd7, 0x9e, 0x3c, 0xc7, 0x65, 0x55, 0xf7, 0xc, 0xae, 0xe7, 0x45, 0xbe, 0x1c, 0xde, 0x7c, 0x87, 0x25, 0x6c, 0xce, 0x35, 0x97, 0xa7, 0x5, 0xfe, 0x5c, 0x15, 0xb7, 0x4c, 0xee, 0xd5, 0x77, 0x8c, 0x2e, 0x67, 0xc5, 0x3e, 0x9c, 0xac, 0xe, 0xf5, 0x57, 0x1e, 0xbc, 0x47, 0xe5, 0x27, 0x85, 0x7e, 0xdc, 0x95, 0x37, 0xcc, 0x6e, 0x5e, 0xfc, 0x7, 0xa5, 0xec, 0x4e, 0xb5, 0x17}, - {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f, 0xe2, 0x41, 0xb9, 0x1a, 0x54, 0xf7, 0xf, 0xac, 0x93, 0x30, 0xc8, 0x6b, 0x25, 0x86, 0x7e, 0xdd, 0xd9, 0x7a, 0x82, 0x21, 0x6f, 0xcc, 0x34, 0x97, 0xa8, 0xb, 0xf3, 0x50, 0x1e, 0xbd, 0x45, 0xe6, 0x3b, 0x98, 0x60, 0xc3, 0x8d, 0x2e, 0xd6, 0x75, 0x4a, 0xe9, 0x11, 0xb2, 0xfc, 0x5f, 0xa7, 0x4, 0xaf, 0xc, 0xf4, 0x57, 0x19, 0xba, 0x42, 0xe1, 0xde, 0x7d, 0x85, 0x26, 0x68, 0xcb, 0x33, 0x90, 0x4d, 0xee, 0x16, 0xb5, 0xfb, 0x58, 0xa0, 0x3, 0x3c, 0x9f, 0x67, 0xc4, 0x8a, 0x29, 0xd1, 0x72, 0x76, 0xd5, 0x2d, 0x8e, 0xc0, 0x63, 0x9b, 0x38, 0x7, 0xa4, 0x5c, 0xff, 0xb1, 0x12, 0xea, 0x49, 0x94, 0x37, 0xcf, 0x6c, 0x22, 0x81, 0x79, 0xda, 0xe5, 0x46, 0xbe, 0x1d, 0x53, 0xf0, 0x8, 0xab, 0x43, 0xe0, 0x18, 0xbb, 0xf5, 0x56, 0xae, 0xd, 0x32, 0x91, 0x69, 0xca, 0x84, 0x27, 0xdf, 0x7c, 0xa1, 0x2, 0xfa, 0x59, 0x17, 0xb4, 0x4c, 0xef, 0xd0, 0x73, 0x8b, 0x28, 0x66, 0xc5, 0x3d, 0x9e, 0x9a, 0x39, 0xc1, 0x62, 0x2c, 0x8f, 0x77, 0xd4, 0xeb, 0x48, 0xb0, 0x13, 0x5d, 0xfe, 0x6, 0xa5, 0x78, 0xdb, 0x23, 0x80, 0xce, 0x6d, 0x95, 0x36, 0x9, 0xaa, 0x52, 0xf1, 0xbf, 0x1c, 0xe4, 0x47, 0xec, 0x4f, 0xb7, 0x14, 0x5a, 0xf9, 0x1, 0xa2, 0x9d, 0x3e, 0xc6, 0x65, 0x2b, 0x88, 0x70, 0xd3, 0xe, 0xad, 0x55, 0xf6, 0xb8, 0x1b, 0xe3, 0x40, 0x7f, 0xdc, 0x24, 0x87, 0xc9, 0x6a, 0x92, 0x31, 0x35, 0x96, 0x6e, 0xcd, 0x83, 0x20, 0xd8, 0x7b, 0x44, 0xe7, 0x1f, 0xbc, 0xf2, 0x51, 0xa9, 0xa, 0xd7, 0x74, 0x8c, 0x2f, 0x61, 0xc2, 0x3a, 0x99, 0xa6, 0x5, 0xfd, 0x5e, 0x10, 0xb3, 0x4b, 0xe8}, - {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12, 0x92, 0x36, 0xc7, 0x63, 0x38, 0x9c, 0x6d, 0xc9, 0xdb, 0x7f, 0x8e, 0x2a, 0x71, 0xd5, 0x24, 0x80, 0x39, 0x9d, 0x6c, 0xc8, 0x93, 0x37, 0xc6, 0x62, 0x70, 0xd4, 0x25, 0x81, 0xda, 0x7e, 0x8f, 0x2b, 0xab, 0xf, 0xfe, 0x5a, 0x1, 0xa5, 0x54, 0xf0, 0xe2, 0x46, 0xb7, 0x13, 0x48, 0xec, 0x1d, 0xb9, 0x72, 0xd6, 0x27, 0x83, 0xd8, 0x7c, 0x8d, 0x29, 0x3b, 0x9f, 0x6e, 0xca, 0x91, 0x35, 0xc4, 0x60, 0xe0, 0x44, 0xb5, 0x11, 0x4a, 0xee, 0x1f, 0xbb, 0xa9, 0xd, 0xfc, 0x58, 0x3, 0xa7, 0x56, 0xf2, 0x4b, 0xef, 0x1e, 0xba, 0xe1, 0x45, 0xb4, 0x10, 0x2, 0xa6, 0x57, 0xf3, 0xa8, 0xc, 0xfd, 0x59, 0xd9, 0x7d, 0x8c, 0x28, 0x73, 0xd7, 0x26, 0x82, 0x90, 0x34, 0xc5, 0x61, 0x3a, 0x9e, 0x6f, 0xcb, 0xe4, 0x40, 0xb1, 0x15, 0x4e, 0xea, 0x1b, 0xbf, 0xad, 0x9, 0xf8, 0x5c, 0x7, 0xa3, 0x52, 0xf6, 0x76, 0xd2, 0x23, 0x87, 0xdc, 0x78, 0x89, 0x2d, 0x3f, 0x9b, 0x6a, 0xce, 0x95, 0x31, 0xc0, 0x64, 0xdd, 0x79, 0x88, 0x2c, 0x77, 0xd3, 0x22, 0x86, 0x94, 0x30, 0xc1, 0x65, 0x3e, 0x9a, 0x6b, 0xcf, 0x4f, 0xeb, 0x1a, 0xbe, 0xe5, 0x41, 0xb0, 0x14, 0x6, 0xa2, 0x53, 0xf7, 0xac, 0x8, 0xf9, 0x5d, 0x96, 0x32, 0xc3, 0x67, 0x3c, 0x98, 0x69, 0xcd, 0xdf, 0x7b, 0x8a, 0x2e, 0x75, 0xd1, 0x20, 0x84, 0x4, 0xa0, 0x51, 0xf5, 0xae, 0xa, 0xfb, 0x5f, 0x4d, 0xe9, 0x18, 0xbc, 0xe7, 0x43, 0xb2, 0x16, 0xaf, 0xb, 0xfa, 0x5e, 0x5, 0xa1, 0x50, 0xf4, 0xe6, 0x42, 0xb3, 0x17, 0x4c, 0xe8, 0x19, 0xbd, 0x3d, 0x99, 0x68, 0xcc, 0x97, 0x33, 0xc2, 0x66, 0x74, 0xd0, 0x21, 0x85, 0xde, 0x7a, 0x8b, 0x2f}, - {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d, 0x82, 0x27, 0xd5, 0x70, 0x2c, 0x89, 0x7b, 0xde, 0xc3, 0x66, 0x94, 0x31, 0x6d, 0xc8, 0x3a, 0x9f, 0x19, 0xbc, 0x4e, 0xeb, 0xb7, 0x12, 0xe0, 0x45, 0x58, 0xfd, 0xf, 0xaa, 0xf6, 0x53, 0xa1, 0x4, 0x9b, 0x3e, 0xcc, 0x69, 0x35, 0x90, 0x62, 0xc7, 0xda, 0x7f, 0x8d, 0x28, 0x74, 0xd1, 0x23, 0x86, 0x32, 0x97, 0x65, 0xc0, 0x9c, 0x39, 0xcb, 0x6e, 0x73, 0xd6, 0x24, 0x81, 0xdd, 0x78, 0x8a, 0x2f, 0xb0, 0x15, 0xe7, 0x42, 0x1e, 0xbb, 0x49, 0xec, 0xf1, 0x54, 0xa6, 0x3, 0x5f, 0xfa, 0x8, 0xad, 0x2b, 0x8e, 0x7c, 0xd9, 0x85, 0x20, 0xd2, 0x77, 0x6a, 0xcf, 0x3d, 0x98, 0xc4, 0x61, 0x93, 0x36, 0xa9, 0xc, 0xfe, 0x5b, 0x7, 0xa2, 0x50, 0xf5, 0xe8, 0x4d, 0xbf, 0x1a, 0x46, 0xe3, 0x11, 0xb4, 0x64, 0xc1, 0x33, 0x96, 0xca, 0x6f, 0x9d, 0x38, 0x25, 0x80, 0x72, 0xd7, 0x8b, 0x2e, 0xdc, 0x79, 0xe6, 0x43, 0xb1, 0x14, 0x48, 0xed, 0x1f, 0xba, 0xa7, 0x2, 0xf0, 0x55, 0x9, 0xac, 0x5e, 0xfb, 0x7d, 0xd8, 0x2a, 0x8f, 0xd3, 0x76, 0x84, 0x21, 0x3c, 0x99, 0x6b, 0xce, 0x92, 0x37, 0xc5, 0x60, 0xff, 0x5a, 0xa8, 0xd, 0x51, 0xf4, 0x6, 0xa3, 0xbe, 0x1b, 0xe9, 0x4c, 0x10, 0xb5, 0x47, 0xe2, 0x56, 0xf3, 0x1, 0xa4, 0xf8, 0x5d, 0xaf, 0xa, 0x17, 0xb2, 0x40, 0xe5, 0xb9, 0x1c, 0xee, 0x4b, 0xd4, 0x71, 0x83, 0x26, 0x7a, 0xdf, 0x2d, 0x88, 0x95, 0x30, 0xc2, 0x67, 0x3b, 0x9e, 0x6c, 0xc9, 0x4f, 0xea, 0x18, 0xbd, 0xe1, 0x44, 0xb6, 0x13, 0xe, 0xab, 0x59, 0xfc, 0xa0, 0x5, 0xf7, 0x52, 0xcd, 0x68, 0x9a, 0x3f, 0x63, 0xc6, 0x34, 0x91, 0x8c, 0x29, 0xdb, 0x7e, 0x22, 0x87, 0x75, 0xd0}, - {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc, 0xb2, 0x14, 0xe3, 0x45, 0x10, 0xb6, 0x41, 0xe7, 0xeb, 0x4d, 0xba, 0x1c, 0x49, 0xef, 0x18, 0xbe, 0x79, 0xdf, 0x28, 0x8e, 0xdb, 0x7d, 0x8a, 0x2c, 0x20, 0x86, 0x71, 0xd7, 0x82, 0x24, 0xd3, 0x75, 0xcb, 0x6d, 0x9a, 0x3c, 0x69, 0xcf, 0x38, 0x9e, 0x92, 0x34, 0xc3, 0x65, 0x30, 0x96, 0x61, 0xc7, 0xf2, 0x54, 0xa3, 0x5, 0x50, 0xf6, 0x1, 0xa7, 0xab, 0xd, 0xfa, 0x5c, 0x9, 0xaf, 0x58, 0xfe, 0x40, 0xe6, 0x11, 0xb7, 0xe2, 0x44, 0xb3, 0x15, 0x19, 0xbf, 0x48, 0xee, 0xbb, 0x1d, 0xea, 0x4c, 0x8b, 0x2d, 0xda, 0x7c, 0x29, 0x8f, 0x78, 0xde, 0xd2, 0x74, 0x83, 0x25, 0x70, 0xd6, 0x21, 0x87, 0x39, 0x9f, 0x68, 0xce, 0x9b, 0x3d, 0xca, 0x6c, 0x60, 0xc6, 0x31, 0x97, 0xc2, 0x64, 0x93, 0x35, 0xf9, 0x5f, 0xa8, 0xe, 0x5b, 0xfd, 0xa, 0xac, 0xa0, 0x6, 0xf1, 0x57, 0x2, 0xa4, 0x53, 0xf5, 0x4b, 0xed, 0x1a, 0xbc, 0xe9, 0x4f, 0xb8, 0x1e, 0x12, 0xb4, 0x43, 0xe5, 0xb0, 0x16, 0xe1, 0x47, 0x80, 0x26, 0xd1, 0x77, 0x22, 0x84, 0x73, 0xd5, 0xd9, 0x7f, 0x88, 0x2e, 0x7b, 0xdd, 0x2a, 0x8c, 0x32, 0x94, 0x63, 0xc5, 0x90, 0x36, 0xc1, 0x67, 0x6b, 0xcd, 0x3a, 0x9c, 0xc9, 0x6f, 0x98, 0x3e, 0xb, 0xad, 0x5a, 0xfc, 0xa9, 0xf, 0xf8, 0x5e, 0x52, 0xf4, 0x3, 0xa5, 0xf0, 0x56, 0xa1, 0x7, 0xb9, 0x1f, 0xe8, 0x4e, 0x1b, 0xbd, 0x4a, 0xec, 0xe0, 0x46, 0xb1, 0x17, 0x42, 0xe4, 0x13, 0xb5, 0x72, 0xd4, 0x23, 0x85, 0xd0, 0x76, 0x81, 0x27, 0x2b, 0x8d, 0x7a, 0xdc, 0x89, 0x2f, 0xd8, 0x7e, 0xc0, 0x66, 0x91, 0x37, 0x62, 0xc4, 0x33, 0x95, 0x99, 0x3f, 0xc8, 0x6e, 0x3b, 0x9d, 0x6a, 0xcc}, - {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3, 0xa2, 0x5, 0xf1, 0x56, 0x4, 0xa3, 0x57, 0xf0, 0xf3, 0x54, 0xa0, 0x7, 0x55, 0xf2, 0x6, 0xa1, 0x59, 0xfe, 0xa, 0xad, 0xff, 0x58, 0xac, 0xb, 0x8, 0xaf, 0x5b, 0xfc, 0xae, 0x9, 0xfd, 0x5a, 0xfb, 0x5c, 0xa8, 0xf, 0x5d, 0xfa, 0xe, 0xa9, 0xaa, 0xd, 0xf9, 0x5e, 0xc, 0xab, 0x5f, 0xf8, 0xb2, 0x15, 0xe1, 0x46, 0x14, 0xb3, 0x47, 0xe0, 0xe3, 0x44, 0xb0, 0x17, 0x45, 0xe2, 0x16, 0xb1, 0x10, 0xb7, 0x43, 0xe4, 0xb6, 0x11, 0xe5, 0x42, 0x41, 0xe6, 0x12, 0xb5, 0xe7, 0x40, 0xb4, 0x13, 0xeb, 0x4c, 0xb8, 0x1f, 0x4d, 0xea, 0x1e, 0xb9, 0xba, 0x1d, 0xe9, 0x4e, 0x1c, 0xbb, 0x4f, 0xe8, 0x49, 0xee, 0x1a, 0xbd, 0xef, 0x48, 0xbc, 0x1b, 0x18, 0xbf, 0x4b, 0xec, 0xbe, 0x19, 0xed, 0x4a, 0x79, 0xde, 0x2a, 0x8d, 0xdf, 0x78, 0x8c, 0x2b, 0x28, 0x8f, 0x7b, 0xdc, 0x8e, 0x29, 0xdd, 0x7a, 0xdb, 0x7c, 0x88, 0x2f, 0x7d, 0xda, 0x2e, 0x89, 0x8a, 0x2d, 0xd9, 0x7e, 0x2c, 0x8b, 0x7f, 0xd8, 0x20, 0x87, 0x73, 0xd4, 0x86, 0x21, 0xd5, 0x72, 0x71, 0xd6, 0x22, 0x85, 0xd7, 0x70, 0x84, 0x23, 0x82, 0x25, 0xd1, 0x76, 0x24, 0x83, 0x77, 0xd0, 0xd3, 0x74, 0x80, 0x27, 0x75, 0xd2, 0x26, 0x81, 0xcb, 0x6c, 0x98, 0x3f, 0x6d, 0xca, 0x3e, 0x99, 0x9a, 0x3d, 0xc9, 0x6e, 0x3c, 0x9b, 0x6f, 0xc8, 0x69, 0xce, 0x3a, 0x9d, 0xcf, 0x68, 0x9c, 0x3b, 0x38, 0x9f, 0x6b, 0xcc, 0x9e, 0x39, 0xcd, 0x6a, 0x92, 0x35, 0xc1, 0x66, 0x34, 0x93, 0x67, 0xc0, 0xc3, 0x64, 0x90, 0x37, 0x65, 0xc2, 0x36, 0x91, 0x30, 0x97, 0x63, 0xc4, 0x96, 0x31, 0xc5, 0x62, 0x61, 0xc6, 0x32, 0x95, 0xc7, 0x60, 0x94, 0x33}, - {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56, 0x52, 0xfa, 0x1f, 0xb7, 0xc8, 0x60, 0x85, 0x2d, 0x7b, 0xd3, 0x36, 0x9e, 0xe1, 0x49, 0xac, 0x4, 0xa4, 0xc, 0xe9, 0x41, 0x3e, 0x96, 0x73, 0xdb, 0x8d, 0x25, 0xc0, 0x68, 0x17, 0xbf, 0x5a, 0xf2, 0xf6, 0x5e, 0xbb, 0x13, 0x6c, 0xc4, 0x21, 0x89, 0xdf, 0x77, 0x92, 0x3a, 0x45, 0xed, 0x8, 0xa0, 0x55, 0xfd, 0x18, 0xb0, 0xcf, 0x67, 0x82, 0x2a, 0x7c, 0xd4, 0x31, 0x99, 0xe6, 0x4e, 0xab, 0x3, 0x7, 0xaf, 0x4a, 0xe2, 0x9d, 0x35, 0xd0, 0x78, 0x2e, 0x86, 0x63, 0xcb, 0xb4, 0x1c, 0xf9, 0x51, 0xf1, 0x59, 0xbc, 0x14, 0x6b, 0xc3, 0x26, 0x8e, 0xd8, 0x70, 0x95, 0x3d, 0x42, 0xea, 0xf, 0xa7, 0xa3, 0xb, 0xee, 0x46, 0x39, 0x91, 0x74, 0xdc, 0x8a, 0x22, 0xc7, 0x6f, 0x10, 0xb8, 0x5d, 0xf5, 0xaa, 0x2, 0xe7, 0x4f, 0x30, 0x98, 0x7d, 0xd5, 0x83, 0x2b, 0xce, 0x66, 0x19, 0xb1, 0x54, 0xfc, 0xf8, 0x50, 0xb5, 0x1d, 0x62, 0xca, 0x2f, 0x87, 0xd1, 0x79, 0x9c, 0x34, 0x4b, 0xe3, 0x6, 0xae, 0xe, 0xa6, 0x43, 0xeb, 0x94, 0x3c, 0xd9, 0x71, 0x27, 0x8f, 0x6a, 0xc2, 0xbd, 0x15, 0xf0, 0x58, 0x5c, 0xf4, 0x11, 0xb9, 0xc6, 0x6e, 0x8b, 0x23, 0x75, 0xdd, 0x38, 0x90, 0xef, 0x47, 0xa2, 0xa, 0xff, 0x57, 0xb2, 0x1a, 0x65, 0xcd, 0x28, 0x80, 0xd6, 0x7e, 0x9b, 0x33, 0x4c, 0xe4, 0x1, 0xa9, 0xad, 0x5, 0xe0, 0x48, 0x37, 0x9f, 0x7a, 0xd2, 0x84, 0x2c, 0xc9, 0x61, 0x1e, 0xb6, 0x53, 0xfb, 0x5b, 0xf3, 0x16, 0xbe, 0xc1, 0x69, 0x8c, 0x24, 0x72, 0xda, 0x3f, 0x97, 0xe8, 0x40, 0xa5, 0xd, 0x9, 0xa1, 0x44, 0xec, 0x93, 0x3b, 0xde, 0x76, 0x20, 0x88, 0x6d, 0xc5, 0xba, 0x12, 0xf7, 0x5f}, - {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59, 0x42, 0xeb, 0xd, 0xa4, 0xdc, 0x75, 0x93, 0x3a, 0x63, 0xca, 0x2c, 0x85, 0xfd, 0x54, 0xb2, 0x1b, 0x84, 0x2d, 0xcb, 0x62, 0x1a, 0xb3, 0x55, 0xfc, 0xa5, 0xc, 0xea, 0x43, 0x3b, 0x92, 0x74, 0xdd, 0xc6, 0x6f, 0x89, 0x20, 0x58, 0xf1, 0x17, 0xbe, 0xe7, 0x4e, 0xa8, 0x1, 0x79, 0xd0, 0x36, 0x9f, 0x15, 0xbc, 0x5a, 0xf3, 0x8b, 0x22, 0xc4, 0x6d, 0x34, 0x9d, 0x7b, 0xd2, 0xaa, 0x3, 0xe5, 0x4c, 0x57, 0xfe, 0x18, 0xb1, 0xc9, 0x60, 0x86, 0x2f, 0x76, 0xdf, 0x39, 0x90, 0xe8, 0x41, 0xa7, 0xe, 0x91, 0x38, 0xde, 0x77, 0xf, 0xa6, 0x40, 0xe9, 0xb0, 0x19, 0xff, 0x56, 0x2e, 0x87, 0x61, 0xc8, 0xd3, 0x7a, 0x9c, 0x35, 0x4d, 0xe4, 0x2, 0xab, 0xf2, 0x5b, 0xbd, 0x14, 0x6c, 0xc5, 0x23, 0x8a, 0x2a, 0x83, 0x65, 0xcc, 0xb4, 0x1d, 0xfb, 0x52, 0xb, 0xa2, 0x44, 0xed, 0x95, 0x3c, 0xda, 0x73, 0x68, 0xc1, 0x27, 0x8e, 0xf6, 0x5f, 0xb9, 0x10, 0x49, 0xe0, 0x6, 0xaf, 0xd7, 0x7e, 0x98, 0x31, 0xae, 0x7, 0xe1, 0x48, 0x30, 0x99, 0x7f, 0xd6, 0x8f, 0x26, 0xc0, 0x69, 0x11, 0xb8, 0x5e, 0xf7, 0xec, 0x45, 0xa3, 0xa, 0x72, 0xdb, 0x3d, 0x94, 0xcd, 0x64, 0x82, 0x2b, 0x53, 0xfa, 0x1c, 0xb5, 0x3f, 0x96, 0x70, 0xd9, 0xa1, 0x8, 0xee, 0x47, 0x1e, 0xb7, 0x51, 0xf8, 0x80, 0x29, 0xcf, 0x66, 0x7d, 0xd4, 0x32, 0x9b, 0xe3, 0x4a, 0xac, 0x5, 0x5c, 0xf5, 0x13, 0xba, 0xc2, 0x6b, 0x8d, 0x24, 0xbb, 0x12, 0xf4, 0x5d, 0x25, 0x8c, 0x6a, 0xc3, 0x9a, 0x33, 0xd5, 0x7c, 0x4, 0xad, 0x4b, 0xe2, 0xf9, 0x50, 0xb6, 0x1f, 0x67, 0xce, 0x28, 0x81, 0xd8, 0x71, 0x97, 0x3e, 0x46, 0xef, 0x9, 0xa0}, - {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48, 0x72, 0xd8, 0x3b, 0x91, 0xe0, 0x4a, 0xa9, 0x3, 0x4b, 0xe1, 0x2, 0xa8, 0xd9, 0x73, 0x90, 0x3a, 0xe4, 0x4e, 0xad, 0x7, 0x76, 0xdc, 0x3f, 0x95, 0xdd, 0x77, 0x94, 0x3e, 0x4f, 0xe5, 0x6, 0xac, 0x96, 0x3c, 0xdf, 0x75, 0x4, 0xae, 0x4d, 0xe7, 0xaf, 0x5, 0xe6, 0x4c, 0x3d, 0x97, 0x74, 0xde, 0xd5, 0x7f, 0x9c, 0x36, 0x47, 0xed, 0xe, 0xa4, 0xec, 0x46, 0xa5, 0xf, 0x7e, 0xd4, 0x37, 0x9d, 0xa7, 0xd, 0xee, 0x44, 0x35, 0x9f, 0x7c, 0xd6, 0x9e, 0x34, 0xd7, 0x7d, 0xc, 0xa6, 0x45, 0xef, 0x31, 0x9b, 0x78, 0xd2, 0xa3, 0x9, 0xea, 0x40, 0x8, 0xa2, 0x41, 0xeb, 0x9a, 0x30, 0xd3, 0x79, 0x43, 0xe9, 0xa, 0xa0, 0xd1, 0x7b, 0x98, 0x32, 0x7a, 0xd0, 0x33, 0x99, 0xe8, 0x42, 0xa1, 0xb, 0xb7, 0x1d, 0xfe, 0x54, 0x25, 0x8f, 0x6c, 0xc6, 0x8e, 0x24, 0xc7, 0x6d, 0x1c, 0xb6, 0x55, 0xff, 0xc5, 0x6f, 0x8c, 0x26, 0x57, 0xfd, 0x1e, 0xb4, 0xfc, 0x56, 0xb5, 0x1f, 0x6e, 0xc4, 0x27, 0x8d, 0x53, 0xf9, 0x1a, 0xb0, 0xc1, 0x6b, 0x88, 0x22, 0x6a, 0xc0, 0x23, 0x89, 0xf8, 0x52, 0xb1, 0x1b, 0x21, 0x8b, 0x68, 0xc2, 0xb3, 0x19, 0xfa, 0x50, 0x18, 0xb2, 0x51, 0xfb, 0x8a, 0x20, 0xc3, 0x69, 0x62, 0xc8, 0x2b, 0x81, 0xf0, 0x5a, 0xb9, 0x13, 0x5b, 0xf1, 0x12, 0xb8, 0xc9, 0x63, 0x80, 0x2a, 0x10, 0xba, 0x59, 0xf3, 0x82, 0x28, 0xcb, 0x61, 0x29, 0x83, 0x60, 0xca, 0xbb, 0x11, 0xf2, 0x58, 0x86, 0x2c, 0xcf, 0x65, 0x14, 0xbe, 0x5d, 0xf7, 0xbf, 0x15, 0xf6, 0x5c, 0x2d, 0x87, 0x64, 0xce, 0xf4, 0x5e, 0xbd, 0x17, 0x66, 0xcc, 0x2f, 0x85, 0xcd, 0x67, 0x84, 0x2e, 0x5f, 0xf5, 0x16, 0xbc}, - {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47, 0x62, 0xc9, 0x29, 0x82, 0xf4, 0x5f, 0xbf, 0x14, 0x53, 0xf8, 0x18, 0xb3, 0xc5, 0x6e, 0x8e, 0x25, 0xc4, 0x6f, 0x8f, 0x24, 0x52, 0xf9, 0x19, 0xb2, 0xf5, 0x5e, 0xbe, 0x15, 0x63, 0xc8, 0x28, 0x83, 0xa6, 0xd, 0xed, 0x46, 0x30, 0x9b, 0x7b, 0xd0, 0x97, 0x3c, 0xdc, 0x77, 0x1, 0xaa, 0x4a, 0xe1, 0x95, 0x3e, 0xde, 0x75, 0x3, 0xa8, 0x48, 0xe3, 0xa4, 0xf, 0xef, 0x44, 0x32, 0x99, 0x79, 0xd2, 0xf7, 0x5c, 0xbc, 0x17, 0x61, 0xca, 0x2a, 0x81, 0xc6, 0x6d, 0x8d, 0x26, 0x50, 0xfb, 0x1b, 0xb0, 0x51, 0xfa, 0x1a, 0xb1, 0xc7, 0x6c, 0x8c, 0x27, 0x60, 0xcb, 0x2b, 0x80, 0xf6, 0x5d, 0xbd, 0x16, 0x33, 0x98, 0x78, 0xd3, 0xa5, 0xe, 0xee, 0x45, 0x2, 0xa9, 0x49, 0xe2, 0x94, 0x3f, 0xdf, 0x74, 0x37, 0x9c, 0x7c, 0xd7, 0xa1, 0xa, 0xea, 0x41, 0x6, 0xad, 0x4d, 0xe6, 0x90, 0x3b, 0xdb, 0x70, 0x55, 0xfe, 0x1e, 0xb5, 0xc3, 0x68, 0x88, 0x23, 0x64, 0xcf, 0x2f, 0x84, 0xf2, 0x59, 0xb9, 0x12, 0xf3, 0x58, 0xb8, 0x13, 0x65, 0xce, 0x2e, 0x85, 0xc2, 0x69, 0x89, 0x22, 0x54, 0xff, 0x1f, 0xb4, 0x91, 0x3a, 0xda, 0x71, 0x7, 0xac, 0x4c, 0xe7, 0xa0, 0xb, 0xeb, 0x40, 0x36, 0x9d, 0x7d, 0xd6, 0xa2, 0x9, 0xe9, 0x42, 0x34, 0x9f, 0x7f, 0xd4, 0x93, 0x38, 0xd8, 0x73, 0x5, 0xae, 0x4e, 0xe5, 0xc0, 0x6b, 0x8b, 0x20, 0x56, 0xfd, 0x1d, 0xb6, 0xf1, 0x5a, 0xba, 0x11, 0x67, 0xcc, 0x2c, 0x87, 0x66, 0xcd, 0x2d, 0x86, 0xf0, 0x5b, 0xbb, 0x10, 0x57, 0xfc, 0x1c, 0xb7, 0xc1, 0x6a, 0x8a, 0x21, 0x4, 0xaf, 0x4f, 0xe4, 0x92, 0x39, 0xd9, 0x72, 0x35, 0x9e, 0x7e, 0xd5, 0xa3, 0x8, 0xe8, 0x43}, - {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a, 0x12, 0xbe, 0x57, 0xfb, 0x98, 0x34, 0xdd, 0x71, 0x1b, 0xb7, 0x5e, 0xf2, 0x91, 0x3d, 0xd4, 0x78, 0x24, 0x88, 0x61, 0xcd, 0xae, 0x2, 0xeb, 0x47, 0x2d, 0x81, 0x68, 0xc4, 0xa7, 0xb, 0xe2, 0x4e, 0x36, 0x9a, 0x73, 0xdf, 0xbc, 0x10, 0xf9, 0x55, 0x3f, 0x93, 0x7a, 0xd6, 0xb5, 0x19, 0xf0, 0x5c, 0x48, 0xe4, 0xd, 0xa1, 0xc2, 0x6e, 0x87, 0x2b, 0x41, 0xed, 0x4, 0xa8, 0xcb, 0x67, 0x8e, 0x22, 0x5a, 0xf6, 0x1f, 0xb3, 0xd0, 0x7c, 0x95, 0x39, 0x53, 0xff, 0x16, 0xba, 0xd9, 0x75, 0x9c, 0x30, 0x6c, 0xc0, 0x29, 0x85, 0xe6, 0x4a, 0xa3, 0xf, 0x65, 0xc9, 0x20, 0x8c, 0xef, 0x43, 0xaa, 0x6, 0x7e, 0xd2, 0x3b, 0x97, 0xf4, 0x58, 0xb1, 0x1d, 0x77, 0xdb, 0x32, 0x9e, 0xfd, 0x51, 0xb8, 0x14, 0x90, 0x3c, 0xd5, 0x79, 0x1a, 0xb6, 0x5f, 0xf3, 0x99, 0x35, 0xdc, 0x70, 0x13, 0xbf, 0x56, 0xfa, 0x82, 0x2e, 0xc7, 0x6b, 0x8, 0xa4, 0x4d, 0xe1, 0x8b, 0x27, 0xce, 0x62, 0x1, 0xad, 0x44, 0xe8, 0xb4, 0x18, 0xf1, 0x5d, 0x3e, 0x92, 0x7b, 0xd7, 0xbd, 0x11, 0xf8, 0x54, 0x37, 0x9b, 0x72, 0xde, 0xa6, 0xa, 0xe3, 0x4f, 0x2c, 0x80, 0x69, 0xc5, 0xaf, 0x3, 0xea, 0x46, 0x25, 0x89, 0x60, 0xcc, 0xd8, 0x74, 0x9d, 0x31, 0x52, 0xfe, 0x17, 0xbb, 0xd1, 0x7d, 0x94, 0x38, 0x5b, 0xf7, 0x1e, 0xb2, 0xca, 0x66, 0x8f, 0x23, 0x40, 0xec, 0x5, 0xa9, 0xc3, 0x6f, 0x86, 0x2a, 0x49, 0xe5, 0xc, 0xa0, 0xfc, 0x50, 0xb9, 0x15, 0x76, 0xda, 0x33, 0x9f, 0xf5, 0x59, 0xb0, 0x1c, 0x7f, 0xd3, 0x3a, 0x96, 0xee, 0x42, 0xab, 0x7, 0x64, 0xc8, 0x21, 0x8d, 0xe7, 0x4b, 0xa2, 0xe, 0x6d, 0xc1, 0x28, 0x84}, - {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65, 0x2, 0xaf, 0x45, 0xe8, 0x8c, 0x21, 0xcb, 0x66, 0x3, 0xae, 0x44, 0xe9, 0x8d, 0x20, 0xca, 0x67, 0x4, 0xa9, 0x43, 0xee, 0x8a, 0x27, 0xcd, 0x60, 0x5, 0xa8, 0x42, 0xef, 0x8b, 0x26, 0xcc, 0x61, 0x6, 0xab, 0x41, 0xec, 0x88, 0x25, 0xcf, 0x62, 0x7, 0xaa, 0x40, 0xed, 0x89, 0x24, 0xce, 0x63, 0x8, 0xa5, 0x4f, 0xe2, 0x86, 0x2b, 0xc1, 0x6c, 0x9, 0xa4, 0x4e, 0xe3, 0x87, 0x2a, 0xc0, 0x6d, 0xa, 0xa7, 0x4d, 0xe0, 0x84, 0x29, 0xc3, 0x6e, 0xb, 0xa6, 0x4c, 0xe1, 0x85, 0x28, 0xc2, 0x6f, 0xc, 0xa1, 0x4b, 0xe6, 0x82, 0x2f, 0xc5, 0x68, 0xd, 0xa0, 0x4a, 0xe7, 0x83, 0x2e, 0xc4, 0x69, 0xe, 0xa3, 0x49, 0xe4, 0x80, 0x2d, 0xc7, 0x6a, 0xf, 0xa2, 0x48, 0xe5, 0x81, 0x2c, 0xc6, 0x6b, 0x10, 0xbd, 0x57, 0xfa, 0x9e, 0x33, 0xd9, 0x74, 0x11, 0xbc, 0x56, 0xfb, 0x9f, 0x32, 0xd8, 0x75, 0x12, 0xbf, 0x55, 0xf8, 0x9c, 0x31, 0xdb, 0x76, 0x13, 0xbe, 0x54, 0xf9, 0x9d, 0x30, 0xda, 0x77, 0x14, 0xb9, 0x53, 0xfe, 0x9a, 0x37, 0xdd, 0x70, 0x15, 0xb8, 0x52, 0xff, 0x9b, 0x36, 0xdc, 0x71, 0x16, 0xbb, 0x51, 0xfc, 0x98, 0x35, 0xdf, 0x72, 0x17, 0xba, 0x50, 0xfd, 0x99, 0x34, 0xde, 0x73, 0x18, 0xb5, 0x5f, 0xf2, 0x96, 0x3b, 0xd1, 0x7c, 0x19, 0xb4, 0x5e, 0xf3, 0x97, 0x3a, 0xd0, 0x7d, 0x1a, 0xb7, 0x5d, 0xf0, 0x94, 0x39, 0xd3, 0x7e, 0x1b, 0xb6, 0x5c, 0xf1, 0x95, 0x38, 0xd2, 0x7f, 0x1c, 0xb1, 0x5b, 0xf6, 0x92, 0x3f, 0xd5, 0x78, 0x1d, 0xb0, 0x5a, 0xf7, 0x93, 0x3e, 0xd4, 0x79, 0x1e, 0xb3, 0x59, 0xf4, 0x90, 0x3d, 0xd7, 0x7a, 0x1f, 0xb2, 0x58, 0xf5, 0x91, 0x3c, 0xd6, 0x7b}, - {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74, 0x32, 0x9c, 0x73, 0xdd, 0xb0, 0x1e, 0xf1, 0x5f, 0x2b, 0x85, 0x6a, 0xc4, 0xa9, 0x7, 0xe8, 0x46, 0x64, 0xca, 0x25, 0x8b, 0xe6, 0x48, 0xa7, 0x9, 0x7d, 0xd3, 0x3c, 0x92, 0xff, 0x51, 0xbe, 0x10, 0x56, 0xf8, 0x17, 0xb9, 0xd4, 0x7a, 0x95, 0x3b, 0x4f, 0xe1, 0xe, 0xa0, 0xcd, 0x63, 0x8c, 0x22, 0xc8, 0x66, 0x89, 0x27, 0x4a, 0xe4, 0xb, 0xa5, 0xd1, 0x7f, 0x90, 0x3e, 0x53, 0xfd, 0x12, 0xbc, 0xfa, 0x54, 0xbb, 0x15, 0x78, 0xd6, 0x39, 0x97, 0xe3, 0x4d, 0xa2, 0xc, 0x61, 0xcf, 0x20, 0x8e, 0xac, 0x2, 0xed, 0x43, 0x2e, 0x80, 0x6f, 0xc1, 0xb5, 0x1b, 0xf4, 0x5a, 0x37, 0x99, 0x76, 0xd8, 0x9e, 0x30, 0xdf, 0x71, 0x1c, 0xb2, 0x5d, 0xf3, 0x87, 0x29, 0xc6, 0x68, 0x5, 0xab, 0x44, 0xea, 0x8d, 0x23, 0xcc, 0x62, 0xf, 0xa1, 0x4e, 0xe0, 0x94, 0x3a, 0xd5, 0x7b, 0x16, 0xb8, 0x57, 0xf9, 0xbf, 0x11, 0xfe, 0x50, 0x3d, 0x93, 0x7c, 0xd2, 0xa6, 0x8, 0xe7, 0x49, 0x24, 0x8a, 0x65, 0xcb, 0xe9, 0x47, 0xa8, 0x6, 0x6b, 0xc5, 0x2a, 0x84, 0xf0, 0x5e, 0xb1, 0x1f, 0x72, 0xdc, 0x33, 0x9d, 0xdb, 0x75, 0x9a, 0x34, 0x59, 0xf7, 0x18, 0xb6, 0xc2, 0x6c, 0x83, 0x2d, 0x40, 0xee, 0x1, 0xaf, 0x45, 0xeb, 0x4, 0xaa, 0xc7, 0x69, 0x86, 0x28, 0x5c, 0xf2, 0x1d, 0xb3, 0xde, 0x70, 0x9f, 0x31, 0x77, 0xd9, 0x36, 0x98, 0xf5, 0x5b, 0xb4, 0x1a, 0x6e, 0xc0, 0x2f, 0x81, 0xec, 0x42, 0xad, 0x3, 0x21, 0x8f, 0x60, 0xce, 0xa3, 0xd, 0xe2, 0x4c, 0x38, 0x96, 0x79, 0xd7, 0xba, 0x14, 0xfb, 0x55, 0x13, 0xbd, 0x52, 0xfc, 0x91, 0x3f, 0xd0, 0x7e, 0xa, 0xa4, 0x4b, 0xe5, 0x88, 0x26, 0xc9, 0x67}, - {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b, 0x22, 0x8d, 0x61, 0xce, 0xa4, 0xb, 0xe7, 0x48, 0x33, 0x9c, 0x70, 0xdf, 0xb5, 0x1a, 0xf6, 0x59, 0x44, 0xeb, 0x7, 0xa8, 0xc2, 0x6d, 0x81, 0x2e, 0x55, 0xfa, 0x16, 0xb9, 0xd3, 0x7c, 0x90, 0x3f, 0x66, 0xc9, 0x25, 0x8a, 0xe0, 0x4f, 0xa3, 0xc, 0x77, 0xd8, 0x34, 0x9b, 0xf1, 0x5e, 0xb2, 0x1d, 0x88, 0x27, 0xcb, 0x64, 0xe, 0xa1, 0x4d, 0xe2, 0x99, 0x36, 0xda, 0x75, 0x1f, 0xb0, 0x5c, 0xf3, 0xaa, 0x5, 0xe9, 0x46, 0x2c, 0x83, 0x6f, 0xc0, 0xbb, 0x14, 0xf8, 0x57, 0x3d, 0x92, 0x7e, 0xd1, 0xcc, 0x63, 0x8f, 0x20, 0x4a, 0xe5, 0x9, 0xa6, 0xdd, 0x72, 0x9e, 0x31, 0x5b, 0xf4, 0x18, 0xb7, 0xee, 0x41, 0xad, 0x2, 0x68, 0xc7, 0x2b, 0x84, 0xff, 0x50, 0xbc, 0x13, 0x79, 0xd6, 0x3a, 0x95, 0xd, 0xa2, 0x4e, 0xe1, 0x8b, 0x24, 0xc8, 0x67, 0x1c, 0xb3, 0x5f, 0xf0, 0x9a, 0x35, 0xd9, 0x76, 0x2f, 0x80, 0x6c, 0xc3, 0xa9, 0x6, 0xea, 0x45, 0x3e, 0x91, 0x7d, 0xd2, 0xb8, 0x17, 0xfb, 0x54, 0x49, 0xe6, 0xa, 0xa5, 0xcf, 0x60, 0x8c, 0x23, 0x58, 0xf7, 0x1b, 0xb4, 0xde, 0x71, 0x9d, 0x32, 0x6b, 0xc4, 0x28, 0x87, 0xed, 0x42, 0xae, 0x1, 0x7a, 0xd5, 0x39, 0x96, 0xfc, 0x53, 0xbf, 0x10, 0x85, 0x2a, 0xc6, 0x69, 0x3, 0xac, 0x40, 0xef, 0x94, 0x3b, 0xd7, 0x78, 0x12, 0xbd, 0x51, 0xfe, 0xa7, 0x8, 0xe4, 0x4b, 0x21, 0x8e, 0x62, 0xcd, 0xb6, 0x19, 0xf5, 0x5a, 0x30, 0x9f, 0x73, 0xdc, 0xc1, 0x6e, 0x82, 0x2d, 0x47, 0xe8, 0x4, 0xab, 0xd0, 0x7f, 0x93, 0x3c, 0x56, 0xf9, 0x15, 0xba, 0xe3, 0x4c, 0xa0, 0xf, 0x65, 0xca, 0x26, 0x89, 0xf2, 0x5d, 0xb1, 0x1e, 0x74, 0xdb, 0x37, 0x98}, - {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde, 0xcf, 0x7f, 0xb2, 0x2, 0x35, 0x85, 0x48, 0xf8, 0x26, 0x96, 0x5b, 0xeb, 0xdc, 0x6c, 0xa1, 0x11, 0x83, 0x33, 0xfe, 0x4e, 0x79, 0xc9, 0x4, 0xb4, 0x6a, 0xda, 0x17, 0xa7, 0x90, 0x20, 0xed, 0x5d, 0x4c, 0xfc, 0x31, 0x81, 0xb6, 0x6, 0xcb, 0x7b, 0xa5, 0x15, 0xd8, 0x68, 0x5f, 0xef, 0x22, 0x92, 0x1b, 0xab, 0x66, 0xd6, 0xe1, 0x51, 0x9c, 0x2c, 0xf2, 0x42, 0x8f, 0x3f, 0x8, 0xb8, 0x75, 0xc5, 0xd4, 0x64, 0xa9, 0x19, 0x2e, 0x9e, 0x53, 0xe3, 0x3d, 0x8d, 0x40, 0xf0, 0xc7, 0x77, 0xba, 0xa, 0x98, 0x28, 0xe5, 0x55, 0x62, 0xd2, 0x1f, 0xaf, 0x71, 0xc1, 0xc, 0xbc, 0x8b, 0x3b, 0xf6, 0x46, 0x57, 0xe7, 0x2a, 0x9a, 0xad, 0x1d, 0xd0, 0x60, 0xbe, 0xe, 0xc3, 0x73, 0x44, 0xf4, 0x39, 0x89, 0x36, 0x86, 0x4b, 0xfb, 0xcc, 0x7c, 0xb1, 0x1, 0xdf, 0x6f, 0xa2, 0x12, 0x25, 0x95, 0x58, 0xe8, 0xf9, 0x49, 0x84, 0x34, 0x3, 0xb3, 0x7e, 0xce, 0x10, 0xa0, 0x6d, 0xdd, 0xea, 0x5a, 0x97, 0x27, 0xb5, 0x5, 0xc8, 0x78, 0x4f, 0xff, 0x32, 0x82, 0x5c, 0xec, 0x21, 0x91, 0xa6, 0x16, 0xdb, 0x6b, 0x7a, 0xca, 0x7, 0xb7, 0x80, 0x30, 0xfd, 0x4d, 0x93, 0x23, 0xee, 0x5e, 0x69, 0xd9, 0x14, 0xa4, 0x2d, 0x9d, 0x50, 0xe0, 0xd7, 0x67, 0xaa, 0x1a, 0xc4, 0x74, 0xb9, 0x9, 0x3e, 0x8e, 0x43, 0xf3, 0xe2, 0x52, 0x9f, 0x2f, 0x18, 0xa8, 0x65, 0xd5, 0xb, 0xbb, 0x76, 0xc6, 0xf1, 0x41, 0x8c, 0x3c, 0xae, 0x1e, 0xd3, 0x63, 0x54, 0xe4, 0x29, 0x99, 0x47, 0xf7, 0x3a, 0x8a, 0xbd, 0xd, 0xc0, 0x70, 0x61, 0xd1, 0x1c, 0xac, 0x9b, 0x2b, 0xe6, 0x56, 0x88, 0x38, 0xf5, 0x45, 0x72, 0xc2, 0xf, 0xbf}, - {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1, 0xdf, 0x6e, 0xa0, 0x11, 0x21, 0x90, 0x5e, 0xef, 0x3e, 0x8f, 0x41, 0xf0, 0xc0, 0x71, 0xbf, 0xe, 0xa3, 0x12, 0xdc, 0x6d, 0x5d, 0xec, 0x22, 0x93, 0x42, 0xf3, 0x3d, 0x8c, 0xbc, 0xd, 0xc3, 0x72, 0x7c, 0xcd, 0x3, 0xb2, 0x82, 0x33, 0xfd, 0x4c, 0x9d, 0x2c, 0xe2, 0x53, 0x63, 0xd2, 0x1c, 0xad, 0x5b, 0xea, 0x24, 0x95, 0xa5, 0x14, 0xda, 0x6b, 0xba, 0xb, 0xc5, 0x74, 0x44, 0xf5, 0x3b, 0x8a, 0x84, 0x35, 0xfb, 0x4a, 0x7a, 0xcb, 0x5, 0xb4, 0x65, 0xd4, 0x1a, 0xab, 0x9b, 0x2a, 0xe4, 0x55, 0xf8, 0x49, 0x87, 0x36, 0x6, 0xb7, 0x79, 0xc8, 0x19, 0xa8, 0x66, 0xd7, 0xe7, 0x56, 0x98, 0x29, 0x27, 0x96, 0x58, 0xe9, 0xd9, 0x68, 0xa6, 0x17, 0xc6, 0x77, 0xb9, 0x8, 0x38, 0x89, 0x47, 0xf6, 0xb6, 0x7, 0xc9, 0x78, 0x48, 0xf9, 0x37, 0x86, 0x57, 0xe6, 0x28, 0x99, 0xa9, 0x18, 0xd6, 0x67, 0x69, 0xd8, 0x16, 0xa7, 0x97, 0x26, 0xe8, 0x59, 0x88, 0x39, 0xf7, 0x46, 0x76, 0xc7, 0x9, 0xb8, 0x15, 0xa4, 0x6a, 0xdb, 0xeb, 0x5a, 0x94, 0x25, 0xf4, 0x45, 0x8b, 0x3a, 0xa, 0xbb, 0x75, 0xc4, 0xca, 0x7b, 0xb5, 0x4, 0x34, 0x85, 0x4b, 0xfa, 0x2b, 0x9a, 0x54, 0xe5, 0xd5, 0x64, 0xaa, 0x1b, 0xed, 0x5c, 0x92, 0x23, 0x13, 0xa2, 0x6c, 0xdd, 0xc, 0xbd, 0x73, 0xc2, 0xf2, 0x43, 0x8d, 0x3c, 0x32, 0x83, 0x4d, 0xfc, 0xcc, 0x7d, 0xb3, 0x2, 0xd3, 0x62, 0xac, 0x1d, 0x2d, 0x9c, 0x52, 0xe3, 0x4e, 0xff, 0x31, 0x80, 0xb0, 0x1, 0xcf, 0x7e, 0xaf, 0x1e, 0xd0, 0x61, 0x51, 0xe0, 0x2e, 0x9f, 0x91, 0x20, 0xee, 0x5f, 0x6f, 0xde, 0x10, 0xa1, 0x70, 0xc1, 0xf, 0xbe, 0x8e, 0x3f, 0xf1, 0x40}, - {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0, 0xef, 0x5d, 0x96, 0x24, 0x1d, 0xaf, 0x64, 0xd6, 0x16, 0xa4, 0x6f, 0xdd, 0xe4, 0x56, 0x9d, 0x2f, 0xc3, 0x71, 0xba, 0x8, 0x31, 0x83, 0x48, 0xfa, 0x3a, 0x88, 0x43, 0xf1, 0xc8, 0x7a, 0xb1, 0x3, 0x2c, 0x9e, 0x55, 0xe7, 0xde, 0x6c, 0xa7, 0x15, 0xd5, 0x67, 0xac, 0x1e, 0x27, 0x95, 0x5e, 0xec, 0x9b, 0x29, 0xe2, 0x50, 0x69, 0xdb, 0x10, 0xa2, 0x62, 0xd0, 0x1b, 0xa9, 0x90, 0x22, 0xe9, 0x5b, 0x74, 0xc6, 0xd, 0xbf, 0x86, 0x34, 0xff, 0x4d, 0x8d, 0x3f, 0xf4, 0x46, 0x7f, 0xcd, 0x6, 0xb4, 0x58, 0xea, 0x21, 0x93, 0xaa, 0x18, 0xd3, 0x61, 0xa1, 0x13, 0xd8, 0x6a, 0x53, 0xe1, 0x2a, 0x98, 0xb7, 0x5, 0xce, 0x7c, 0x45, 0xf7, 0x3c, 0x8e, 0x4e, 0xfc, 0x37, 0x85, 0xbc, 0xe, 0xc5, 0x77, 0x2b, 0x99, 0x52, 0xe0, 0xd9, 0x6b, 0xa0, 0x12, 0xd2, 0x60, 0xab, 0x19, 0x20, 0x92, 0x59, 0xeb, 0xc4, 0x76, 0xbd, 0xf, 0x36, 0x84, 0x4f, 0xfd, 0x3d, 0x8f, 0x44, 0xf6, 0xcf, 0x7d, 0xb6, 0x4, 0xe8, 0x5a, 0x91, 0x23, 0x1a, 0xa8, 0x63, 0xd1, 0x11, 0xa3, 0x68, 0xda, 0xe3, 0x51, 0x9a, 0x28, 0x7, 0xb5, 0x7e, 0xcc, 0xf5, 0x47, 0x8c, 0x3e, 0xfe, 0x4c, 0x87, 0x35, 0xc, 0xbe, 0x75, 0xc7, 0xb0, 0x2, 0xc9, 0x7b, 0x42, 0xf0, 0x3b, 0x89, 0x49, 0xfb, 0x30, 0x82, 0xbb, 0x9, 0xc2, 0x70, 0x5f, 0xed, 0x26, 0x94, 0xad, 0x1f, 0xd4, 0x66, 0xa6, 0x14, 0xdf, 0x6d, 0x54, 0xe6, 0x2d, 0x9f, 0x73, 0xc1, 0xa, 0xb8, 0x81, 0x33, 0xf8, 0x4a, 0x8a, 0x38, 0xf3, 0x41, 0x78, 0xca, 0x1, 0xb3, 0x9c, 0x2e, 0xe5, 0x57, 0x6e, 0xdc, 0x17, 0xa5, 0x65, 0xd7, 0x1c, 0xae, 0x97, 0x25, 0xee, 0x5c}, - {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf, 0xff, 0x4c, 0x84, 0x37, 0x9, 0xba, 0x72, 0xc1, 0xe, 0xbd, 0x75, 0xc6, 0xf8, 0x4b, 0x83, 0x30, 0xe3, 0x50, 0x98, 0x2b, 0x15, 0xa6, 0x6e, 0xdd, 0x12, 0xa1, 0x69, 0xda, 0xe4, 0x57, 0x9f, 0x2c, 0x1c, 0xaf, 0x67, 0xd4, 0xea, 0x59, 0x91, 0x22, 0xed, 0x5e, 0x96, 0x25, 0x1b, 0xa8, 0x60, 0xd3, 0xdb, 0x68, 0xa0, 0x13, 0x2d, 0x9e, 0x56, 0xe5, 0x2a, 0x99, 0x51, 0xe2, 0xdc, 0x6f, 0xa7, 0x14, 0x24, 0x97, 0x5f, 0xec, 0xd2, 0x61, 0xa9, 0x1a, 0xd5, 0x66, 0xae, 0x1d, 0x23, 0x90, 0x58, 0xeb, 0x38, 0x8b, 0x43, 0xf0, 0xce, 0x7d, 0xb5, 0x6, 0xc9, 0x7a, 0xb2, 0x1, 0x3f, 0x8c, 0x44, 0xf7, 0xc7, 0x74, 0xbc, 0xf, 0x31, 0x82, 0x4a, 0xf9, 0x36, 0x85, 0x4d, 0xfe, 0xc0, 0x73, 0xbb, 0x8, 0xab, 0x18, 0xd0, 0x63, 0x5d, 0xee, 0x26, 0x95, 0x5a, 0xe9, 0x21, 0x92, 0xac, 0x1f, 0xd7, 0x64, 0x54, 0xe7, 0x2f, 0x9c, 0xa2, 0x11, 0xd9, 0x6a, 0xa5, 0x16, 0xde, 0x6d, 0x53, 0xe0, 0x28, 0x9b, 0x48, 0xfb, 0x33, 0x80, 0xbe, 0xd, 0xc5, 0x76, 0xb9, 0xa, 0xc2, 0x71, 0x4f, 0xfc, 0x34, 0x87, 0xb7, 0x4, 0xcc, 0x7f, 0x41, 0xf2, 0x3a, 0x89, 0x46, 0xf5, 0x3d, 0x8e, 0xb0, 0x3, 0xcb, 0x78, 0x70, 0xc3, 0xb, 0xb8, 0x86, 0x35, 0xfd, 0x4e, 0x81, 0x32, 0xfa, 0x49, 0x77, 0xc4, 0xc, 0xbf, 0x8f, 0x3c, 0xf4, 0x47, 0x79, 0xca, 0x2, 0xb1, 0x7e, 0xcd, 0x5, 0xb6, 0x88, 0x3b, 0xf3, 0x40, 0x93, 0x20, 0xe8, 0x5b, 0x65, 0xd6, 0x1e, 0xad, 0x62, 0xd1, 0x19, 0xaa, 0x94, 0x27, 0xef, 0x5c, 0x6c, 0xdf, 0x17, 0xa4, 0x9a, 0x29, 0xe1, 0x52, 0x9d, 0x2e, 0xe6, 0x55, 0x6b, 0xd8, 0x10, 0xa3}, - {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2, 0x8f, 0x3b, 0xfa, 0x4e, 0x65, 0xd1, 0x10, 0xa4, 0x46, 0xf2, 0x33, 0x87, 0xac, 0x18, 0xd9, 0x6d, 0x3, 0xb7, 0x76, 0xc2, 0xe9, 0x5d, 0x9c, 0x28, 0xca, 0x7e, 0xbf, 0xb, 0x20, 0x94, 0x55, 0xe1, 0x8c, 0x38, 0xf9, 0x4d, 0x66, 0xd2, 0x13, 0xa7, 0x45, 0xf1, 0x30, 0x84, 0xaf, 0x1b, 0xda, 0x6e, 0x6, 0xb2, 0x73, 0xc7, 0xec, 0x58, 0x99, 0x2d, 0xcf, 0x7b, 0xba, 0xe, 0x25, 0x91, 0x50, 0xe4, 0x89, 0x3d, 0xfc, 0x48, 0x63, 0xd7, 0x16, 0xa2, 0x40, 0xf4, 0x35, 0x81, 0xaa, 0x1e, 0xdf, 0x6b, 0x5, 0xb1, 0x70, 0xc4, 0xef, 0x5b, 0x9a, 0x2e, 0xcc, 0x78, 0xb9, 0xd, 0x26, 0x92, 0x53, 0xe7, 0x8a, 0x3e, 0xff, 0x4b, 0x60, 0xd4, 0x15, 0xa1, 0x43, 0xf7, 0x36, 0x82, 0xa9, 0x1d, 0xdc, 0x68, 0xc, 0xb8, 0x79, 0xcd, 0xe6, 0x52, 0x93, 0x27, 0xc5, 0x71, 0xb0, 0x4, 0x2f, 0x9b, 0x5a, 0xee, 0x83, 0x37, 0xf6, 0x42, 0x69, 0xdd, 0x1c, 0xa8, 0x4a, 0xfe, 0x3f, 0x8b, 0xa0, 0x14, 0xd5, 0x61, 0xf, 0xbb, 0x7a, 0xce, 0xe5, 0x51, 0x90, 0x24, 0xc6, 0x72, 0xb3, 0x7, 0x2c, 0x98, 0x59, 0xed, 0x80, 0x34, 0xf5, 0x41, 0x6a, 0xde, 0x1f, 0xab, 0x49, 0xfd, 0x3c, 0x88, 0xa3, 0x17, 0xd6, 0x62, 0xa, 0xbe, 0x7f, 0xcb, 0xe0, 0x54, 0x95, 0x21, 0xc3, 0x77, 0xb6, 0x2, 0x29, 0x9d, 0x5c, 0xe8, 0x85, 0x31, 0xf0, 0x44, 0x6f, 0xdb, 0x1a, 0xae, 0x4c, 0xf8, 0x39, 0x8d, 0xa6, 0x12, 0xd3, 0x67, 0x9, 0xbd, 0x7c, 0xc8, 0xe3, 0x57, 0x96, 0x22, 0xc0, 0x74, 0xb5, 0x1, 0x2a, 0x9e, 0x5f, 0xeb, 0x86, 0x32, 0xf3, 0x47, 0x6c, 0xd8, 0x19, 0xad, 0x4f, 0xfb, 0x3a, 0x8e, 0xa5, 0x11, 0xd0, 0x64}, - {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed, 0x9f, 0x2a, 0xe8, 0x5d, 0x71, 0xc4, 0x6, 0xb3, 0x5e, 0xeb, 0x29, 0x9c, 0xb0, 0x5, 0xc7, 0x72, 0x23, 0x96, 0x54, 0xe1, 0xcd, 0x78, 0xba, 0xf, 0xe2, 0x57, 0x95, 0x20, 0xc, 0xb9, 0x7b, 0xce, 0xbc, 0x9, 0xcb, 0x7e, 0x52, 0xe7, 0x25, 0x90, 0x7d, 0xc8, 0xa, 0xbf, 0x93, 0x26, 0xe4, 0x51, 0x46, 0xf3, 0x31, 0x84, 0xa8, 0x1d, 0xdf, 0x6a, 0x87, 0x32, 0xf0, 0x45, 0x69, 0xdc, 0x1e, 0xab, 0xd9, 0x6c, 0xae, 0x1b, 0x37, 0x82, 0x40, 0xf5, 0x18, 0xad, 0x6f, 0xda, 0xf6, 0x43, 0x81, 0x34, 0x65, 0xd0, 0x12, 0xa7, 0x8b, 0x3e, 0xfc, 0x49, 0xa4, 0x11, 0xd3, 0x66, 0x4a, 0xff, 0x3d, 0x88, 0xfa, 0x4f, 0x8d, 0x38, 0x14, 0xa1, 0x63, 0xd6, 0x3b, 0x8e, 0x4c, 0xf9, 0xd5, 0x60, 0xa2, 0x17, 0x8c, 0x39, 0xfb, 0x4e, 0x62, 0xd7, 0x15, 0xa0, 0x4d, 0xf8, 0x3a, 0x8f, 0xa3, 0x16, 0xd4, 0x61, 0x13, 0xa6, 0x64, 0xd1, 0xfd, 0x48, 0x8a, 0x3f, 0xd2, 0x67, 0xa5, 0x10, 0x3c, 0x89, 0x4b, 0xfe, 0xaf, 0x1a, 0xd8, 0x6d, 0x41, 0xf4, 0x36, 0x83, 0x6e, 0xdb, 0x19, 0xac, 0x80, 0x35, 0xf7, 0x42, 0x30, 0x85, 0x47, 0xf2, 0xde, 0x6b, 0xa9, 0x1c, 0xf1, 0x44, 0x86, 0x33, 0x1f, 0xaa, 0x68, 0xdd, 0xca, 0x7f, 0xbd, 0x8, 0x24, 0x91, 0x53, 0xe6, 0xb, 0xbe, 0x7c, 0xc9, 0xe5, 0x50, 0x92, 0x27, 0x55, 0xe0, 0x22, 0x97, 0xbb, 0xe, 0xcc, 0x79, 0x94, 0x21, 0xe3, 0x56, 0x7a, 0xcf, 0xd, 0xb8, 0xe9, 0x5c, 0x9e, 0x2b, 0x7, 0xb2, 0x70, 0xc5, 0x28, 0x9d, 0x5f, 0xea, 0xc6, 0x73, 0xb1, 0x4, 0x76, 0xc3, 0x1, 0xb4, 0x98, 0x2d, 0xef, 0x5a, 0xb7, 0x2, 0xc0, 0x75, 0x59, 0xec, 0x2e, 0x9b}, - {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc, 0xaf, 0x19, 0xde, 0x68, 0x4d, 0xfb, 0x3c, 0x8a, 0x76, 0xc0, 0x7, 0xb1, 0x94, 0x22, 0xe5, 0x53, 0x43, 0xf5, 0x32, 0x84, 0xa1, 0x17, 0xd0, 0x66, 0x9a, 0x2c, 0xeb, 0x5d, 0x78, 0xce, 0x9, 0xbf, 0xec, 0x5a, 0x9d, 0x2b, 0xe, 0xb8, 0x7f, 0xc9, 0x35, 0x83, 0x44, 0xf2, 0xd7, 0x61, 0xa6, 0x10, 0x86, 0x30, 0xf7, 0x41, 0x64, 0xd2, 0x15, 0xa3, 0x5f, 0xe9, 0x2e, 0x98, 0xbd, 0xb, 0xcc, 0x7a, 0x29, 0x9f, 0x58, 0xee, 0xcb, 0x7d, 0xba, 0xc, 0xf0, 0x46, 0x81, 0x37, 0x12, 0xa4, 0x63, 0xd5, 0xc5, 0x73, 0xb4, 0x2, 0x27, 0x91, 0x56, 0xe0, 0x1c, 0xaa, 0x6d, 0xdb, 0xfe, 0x48, 0x8f, 0x39, 0x6a, 0xdc, 0x1b, 0xad, 0x88, 0x3e, 0xf9, 0x4f, 0xb3, 0x5, 0xc2, 0x74, 0x51, 0xe7, 0x20, 0x96, 0x11, 0xa7, 0x60, 0xd6, 0xf3, 0x45, 0x82, 0x34, 0xc8, 0x7e, 0xb9, 0xf, 0x2a, 0x9c, 0x5b, 0xed, 0xbe, 0x8, 0xcf, 0x79, 0x5c, 0xea, 0x2d, 0x9b, 0x67, 0xd1, 0x16, 0xa0, 0x85, 0x33, 0xf4, 0x42, 0x52, 0xe4, 0x23, 0x95, 0xb0, 0x6, 0xc1, 0x77, 0x8b, 0x3d, 0xfa, 0x4c, 0x69, 0xdf, 0x18, 0xae, 0xfd, 0x4b, 0x8c, 0x3a, 0x1f, 0xa9, 0x6e, 0xd8, 0x24, 0x92, 0x55, 0xe3, 0xc6, 0x70, 0xb7, 0x1, 0x97, 0x21, 0xe6, 0x50, 0x75, 0xc3, 0x4, 0xb2, 0x4e, 0xf8, 0x3f, 0x89, 0xac, 0x1a, 0xdd, 0x6b, 0x38, 0x8e, 0x49, 0xff, 0xda, 0x6c, 0xab, 0x1d, 0xe1, 0x57, 0x90, 0x26, 0x3, 0xb5, 0x72, 0xc4, 0xd4, 0x62, 0xa5, 0x13, 0x36, 0x80, 0x47, 0xf1, 0xd, 0xbb, 0x7c, 0xca, 0xef, 0x59, 0x9e, 0x28, 0x7b, 0xcd, 0xa, 0xbc, 0x99, 0x2f, 0xe8, 0x5e, 0xa2, 0x14, 0xd3, 0x65, 0x40, 0xf6, 0x31, 0x87}, - {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3, 0xbf, 0x8, 0xcc, 0x7b, 0x59, 0xee, 0x2a, 0x9d, 0x6e, 0xd9, 0x1d, 0xaa, 0x88, 0x3f, 0xfb, 0x4c, 0x63, 0xd4, 0x10, 0xa7, 0x85, 0x32, 0xf6, 0x41, 0xb2, 0x5, 0xc1, 0x76, 0x54, 0xe3, 0x27, 0x90, 0xdc, 0x6b, 0xaf, 0x18, 0x3a, 0x8d, 0x49, 0xfe, 0xd, 0xba, 0x7e, 0xc9, 0xeb, 0x5c, 0x98, 0x2f, 0xc6, 0x71, 0xb5, 0x2, 0x20, 0x97, 0x53, 0xe4, 0x17, 0xa0, 0x64, 0xd3, 0xf1, 0x46, 0x82, 0x35, 0x79, 0xce, 0xa, 0xbd, 0x9f, 0x28, 0xec, 0x5b, 0xa8, 0x1f, 0xdb, 0x6c, 0x4e, 0xf9, 0x3d, 0x8a, 0xa5, 0x12, 0xd6, 0x61, 0x43, 0xf4, 0x30, 0x87, 0x74, 0xc3, 0x7, 0xb0, 0x92, 0x25, 0xe1, 0x56, 0x1a, 0xad, 0x69, 0xde, 0xfc, 0x4b, 0x8f, 0x38, 0xcb, 0x7c, 0xb8, 0xf, 0x2d, 0x9a, 0x5e, 0xe9, 0x91, 0x26, 0xe2, 0x55, 0x77, 0xc0, 0x4, 0xb3, 0x40, 0xf7, 0x33, 0x84, 0xa6, 0x11, 0xd5, 0x62, 0x2e, 0x99, 0x5d, 0xea, 0xc8, 0x7f, 0xbb, 0xc, 0xff, 0x48, 0x8c, 0x3b, 0x19, 0xae, 0x6a, 0xdd, 0xf2, 0x45, 0x81, 0x36, 0x14, 0xa3, 0x67, 0xd0, 0x23, 0x94, 0x50, 0xe7, 0xc5, 0x72, 0xb6, 0x1, 0x4d, 0xfa, 0x3e, 0x89, 0xab, 0x1c, 0xd8, 0x6f, 0x9c, 0x2b, 0xef, 0x58, 0x7a, 0xcd, 0x9, 0xbe, 0x57, 0xe0, 0x24, 0x93, 0xb1, 0x6, 0xc2, 0x75, 0x86, 0x31, 0xf5, 0x42, 0x60, 0xd7, 0x13, 0xa4, 0xe8, 0x5f, 0x9b, 0x2c, 0xe, 0xb9, 0x7d, 0xca, 0x39, 0x8e, 0x4a, 0xfd, 0xdf, 0x68, 0xac, 0x1b, 0x34, 0x83, 0x47, 0xf0, 0xd2, 0x65, 0xa1, 0x16, 0xe5, 0x52, 0x96, 0x21, 0x3, 0xb4, 0x70, 0xc7, 0x8b, 0x3c, 0xf8, 0x4f, 0x6d, 0xda, 0x1e, 0xa9, 0x5a, 0xed, 0x29, 0x9e, 0xbc, 0xb, 0xcf, 0x78}, - {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6, 0x4f, 0xf7, 0x22, 0x9a, 0x95, 0x2d, 0xf8, 0x40, 0xe6, 0x5e, 0x8b, 0x33, 0x3c, 0x84, 0x51, 0xe9, 0x9e, 0x26, 0xf3, 0x4b, 0x44, 0xfc, 0x29, 0x91, 0x37, 0x8f, 0x5a, 0xe2, 0xed, 0x55, 0x80, 0x38, 0xd1, 0x69, 0xbc, 0x4, 0xb, 0xb3, 0x66, 0xde, 0x78, 0xc0, 0x15, 0xad, 0xa2, 0x1a, 0xcf, 0x77, 0x21, 0x99, 0x4c, 0xf4, 0xfb, 0x43, 0x96, 0x2e, 0x88, 0x30, 0xe5, 0x5d, 0x52, 0xea, 0x3f, 0x87, 0x6e, 0xd6, 0x3, 0xbb, 0xb4, 0xc, 0xd9, 0x61, 0xc7, 0x7f, 0xaa, 0x12, 0x1d, 0xa5, 0x70, 0xc8, 0xbf, 0x7, 0xd2, 0x6a, 0x65, 0xdd, 0x8, 0xb0, 0x16, 0xae, 0x7b, 0xc3, 0xcc, 0x74, 0xa1, 0x19, 0xf0, 0x48, 0x9d, 0x25, 0x2a, 0x92, 0x47, 0xff, 0x59, 0xe1, 0x34, 0x8c, 0x83, 0x3b, 0xee, 0x56, 0x42, 0xfa, 0x2f, 0x97, 0x98, 0x20, 0xf5, 0x4d, 0xeb, 0x53, 0x86, 0x3e, 0x31, 0x89, 0x5c, 0xe4, 0xd, 0xb5, 0x60, 0xd8, 0xd7, 0x6f, 0xba, 0x2, 0xa4, 0x1c, 0xc9, 0x71, 0x7e, 0xc6, 0x13, 0xab, 0xdc, 0x64, 0xb1, 0x9, 0x6, 0xbe, 0x6b, 0xd3, 0x75, 0xcd, 0x18, 0xa0, 0xaf, 0x17, 0xc2, 0x7a, 0x93, 0x2b, 0xfe, 0x46, 0x49, 0xf1, 0x24, 0x9c, 0x3a, 0x82, 0x57, 0xef, 0xe0, 0x58, 0x8d, 0x35, 0x63, 0xdb, 0xe, 0xb6, 0xb9, 0x1, 0xd4, 0x6c, 0xca, 0x72, 0xa7, 0x1f, 0x10, 0xa8, 0x7d, 0xc5, 0x2c, 0x94, 0x41, 0xf9, 0xf6, 0x4e, 0x9b, 0x23, 0x85, 0x3d, 0xe8, 0x50, 0x5f, 0xe7, 0x32, 0x8a, 0xfd, 0x45, 0x90, 0x28, 0x27, 0x9f, 0x4a, 0xf2, 0x54, 0xec, 0x39, 0x81, 0x8e, 0x36, 0xe3, 0x5b, 0xb2, 0xa, 0xdf, 0x67, 0x68, 0xd0, 0x5, 0xbd, 0x1b, 0xa3, 0x76, 0xce, 0xc1, 0x79, 0xac, 0x14}, - {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9, 0x5f, 0xe6, 0x30, 0x89, 0x81, 0x38, 0xee, 0x57, 0xfe, 0x47, 0x91, 0x28, 0x20, 0x99, 0x4f, 0xf6, 0xbe, 0x7, 0xd1, 0x68, 0x60, 0xd9, 0xf, 0xb6, 0x1f, 0xa6, 0x70, 0xc9, 0xc1, 0x78, 0xae, 0x17, 0xe1, 0x58, 0x8e, 0x37, 0x3f, 0x86, 0x50, 0xe9, 0x40, 0xf9, 0x2f, 0x96, 0x9e, 0x27, 0xf1, 0x48, 0x61, 0xd8, 0xe, 0xb7, 0xbf, 0x6, 0xd0, 0x69, 0xc0, 0x79, 0xaf, 0x16, 0x1e, 0xa7, 0x71, 0xc8, 0x3e, 0x87, 0x51, 0xe8, 0xe0, 0x59, 0x8f, 0x36, 0x9f, 0x26, 0xf0, 0x49, 0x41, 0xf8, 0x2e, 0x97, 0xdf, 0x66, 0xb0, 0x9, 0x1, 0xb8, 0x6e, 0xd7, 0x7e, 0xc7, 0x11, 0xa8, 0xa0, 0x19, 0xcf, 0x76, 0x80, 0x39, 0xef, 0x56, 0x5e, 0xe7, 0x31, 0x88, 0x21, 0x98, 0x4e, 0xf7, 0xff, 0x46, 0x90, 0x29, 0xc2, 0x7b, 0xad, 0x14, 0x1c, 0xa5, 0x73, 0xca, 0x63, 0xda, 0xc, 0xb5, 0xbd, 0x4, 0xd2, 0x6b, 0x9d, 0x24, 0xf2, 0x4b, 0x43, 0xfa, 0x2c, 0x95, 0x3c, 0x85, 0x53, 0xea, 0xe2, 0x5b, 0x8d, 0x34, 0x7c, 0xc5, 0x13, 0xaa, 0xa2, 0x1b, 0xcd, 0x74, 0xdd, 0x64, 0xb2, 0xb, 0x3, 0xba, 0x6c, 0xd5, 0x23, 0x9a, 0x4c, 0xf5, 0xfd, 0x44, 0x92, 0x2b, 0x82, 0x3b, 0xed, 0x54, 0x5c, 0xe5, 0x33, 0x8a, 0xa3, 0x1a, 0xcc, 0x75, 0x7d, 0xc4, 0x12, 0xab, 0x2, 0xbb, 0x6d, 0xd4, 0xdc, 0x65, 0xb3, 0xa, 0xfc, 0x45, 0x93, 0x2a, 0x22, 0x9b, 0x4d, 0xf4, 0x5d, 0xe4, 0x32, 0x8b, 0x83, 0x3a, 0xec, 0x55, 0x1d, 0xa4, 0x72, 0xcb, 0xc3, 0x7a, 0xac, 0x15, 0xbc, 0x5, 0xd3, 0x6a, 0x62, 0xdb, 0xd, 0xb4, 0x42, 0xfb, 0x2d, 0x94, 0x9c, 0x25, 0xf3, 0x4a, 0xe3, 0x5a, 0x8c, 0x35, 0x3d, 0x84, 0x52, 0xeb}, - {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8, 0x6f, 0xd5, 0x6, 0xbc, 0xbd, 0x7, 0xd4, 0x6e, 0xd6, 0x6c, 0xbf, 0x5, 0x4, 0xbe, 0x6d, 0xd7, 0xde, 0x64, 0xb7, 0xd, 0xc, 0xb6, 0x65, 0xdf, 0x67, 0xdd, 0xe, 0xb4, 0xb5, 0xf, 0xdc, 0x66, 0xb1, 0xb, 0xd8, 0x62, 0x63, 0xd9, 0xa, 0xb0, 0x8, 0xb2, 0x61, 0xdb, 0xda, 0x60, 0xb3, 0x9, 0xa1, 0x1b, 0xc8, 0x72, 0x73, 0xc9, 0x1a, 0xa0, 0x18, 0xa2, 0x71, 0xcb, 0xca, 0x70, 0xa3, 0x19, 0xce, 0x74, 0xa7, 0x1d, 0x1c, 0xa6, 0x75, 0xcf, 0x77, 0xcd, 0x1e, 0xa4, 0xa5, 0x1f, 0xcc, 0x76, 0x7f, 0xc5, 0x16, 0xac, 0xad, 0x17, 0xc4, 0x7e, 0xc6, 0x7c, 0xaf, 0x15, 0x14, 0xae, 0x7d, 0xc7, 0x10, 0xaa, 0x79, 0xc3, 0xc2, 0x78, 0xab, 0x11, 0xa9, 0x13, 0xc0, 0x7a, 0x7b, 0xc1, 0x12, 0xa8, 0x5f, 0xe5, 0x36, 0x8c, 0x8d, 0x37, 0xe4, 0x5e, 0xe6, 0x5c, 0x8f, 0x35, 0x34, 0x8e, 0x5d, 0xe7, 0x30, 0x8a, 0x59, 0xe3, 0xe2, 0x58, 0x8b, 0x31, 0x89, 0x33, 0xe0, 0x5a, 0x5b, 0xe1, 0x32, 0x88, 0x81, 0x3b, 0xe8, 0x52, 0x53, 0xe9, 0x3a, 0x80, 0x38, 0x82, 0x51, 0xeb, 0xea, 0x50, 0x83, 0x39, 0xee, 0x54, 0x87, 0x3d, 0x3c, 0x86, 0x55, 0xef, 0x57, 0xed, 0x3e, 0x84, 0x85, 0x3f, 0xec, 0x56, 0xfe, 0x44, 0x97, 0x2d, 0x2c, 0x96, 0x45, 0xff, 0x47, 0xfd, 0x2e, 0x94, 0x95, 0x2f, 0xfc, 0x46, 0x91, 0x2b, 0xf8, 0x42, 0x43, 0xf9, 0x2a, 0x90, 0x28, 0x92, 0x41, 0xfb, 0xfa, 0x40, 0x93, 0x29, 0x20, 0x9a, 0x49, 0xf3, 0xf2, 0x48, 0x9b, 0x21, 0x99, 0x23, 0xf0, 0x4a, 0x4b, 0xf1, 0x22, 0x98, 0x4f, 0xf5, 0x26, 0x9c, 0x9d, 0x27, 0xf4, 0x4e, 0xf6, 0x4c, 0x9f, 0x25, 0x24, 0x9e, 0x4d, 0xf7}, - {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7, 0x7f, 0xc4, 0x14, 0xaf, 0xa9, 0x12, 0xc2, 0x79, 0xce, 0x75, 0xa5, 0x1e, 0x18, 0xa3, 0x73, 0xc8, 0xfe, 0x45, 0x95, 0x2e, 0x28, 0x93, 0x43, 0xf8, 0x4f, 0xf4, 0x24, 0x9f, 0x99, 0x22, 0xf2, 0x49, 0x81, 0x3a, 0xea, 0x51, 0x57, 0xec, 0x3c, 0x87, 0x30, 0x8b, 0x5b, 0xe0, 0xe6, 0x5d, 0x8d, 0x36, 0xe1, 0x5a, 0x8a, 0x31, 0x37, 0x8c, 0x5c, 0xe7, 0x50, 0xeb, 0x3b, 0x80, 0x86, 0x3d, 0xed, 0x56, 0x9e, 0x25, 0xf5, 0x4e, 0x48, 0xf3, 0x23, 0x98, 0x2f, 0x94, 0x44, 0xff, 0xf9, 0x42, 0x92, 0x29, 0x1f, 0xa4, 0x74, 0xcf, 0xc9, 0x72, 0xa2, 0x19, 0xae, 0x15, 0xc5, 0x7e, 0x78, 0xc3, 0x13, 0xa8, 0x60, 0xdb, 0xb, 0xb0, 0xb6, 0xd, 0xdd, 0x66, 0xd1, 0x6a, 0xba, 0x1, 0x7, 0xbc, 0x6c, 0xd7, 0xdf, 0x64, 0xb4, 0xf, 0x9, 0xb2, 0x62, 0xd9, 0x6e, 0xd5, 0x5, 0xbe, 0xb8, 0x3, 0xd3, 0x68, 0xa0, 0x1b, 0xcb, 0x70, 0x76, 0xcd, 0x1d, 0xa6, 0x11, 0xaa, 0x7a, 0xc1, 0xc7, 0x7c, 0xac, 0x17, 0x21, 0x9a, 0x4a, 0xf1, 0xf7, 0x4c, 0x9c, 0x27, 0x90, 0x2b, 0xfb, 0x40, 0x46, 0xfd, 0x2d, 0x96, 0x5e, 0xe5, 0x35, 0x8e, 0x88, 0x33, 0xe3, 0x58, 0xef, 0x54, 0x84, 0x3f, 0x39, 0x82, 0x52, 0xe9, 0x3e, 0x85, 0x55, 0xee, 0xe8, 0x53, 0x83, 0x38, 0x8f, 0x34, 0xe4, 0x5f, 0x59, 0xe2, 0x32, 0x89, 0x41, 0xfa, 0x2a, 0x91, 0x97, 0x2c, 0xfc, 0x47, 0xf0, 0x4b, 0x9b, 0x20, 0x26, 0x9d, 0x4d, 0xf6, 0xc0, 0x7b, 0xab, 0x10, 0x16, 0xad, 0x7d, 0xc6, 0x71, 0xca, 0x1a, 0xa1, 0xa7, 0x1c, 0xcc, 0x77, 0xbf, 0x4, 0xd4, 0x6f, 0x69, 0xd2, 0x2, 0xb9, 0xe, 0xb5, 0x65, 0xde, 0xd8, 0x63, 0xb3, 0x8}, - {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a, 0xf, 0xb3, 0x6a, 0xd6, 0xc5, 0x79, 0xa0, 0x1c, 0x86, 0x3a, 0xe3, 0x5f, 0x4c, 0xf0, 0x29, 0x95, 0x1e, 0xa2, 0x7b, 0xc7, 0xd4, 0x68, 0xb1, 0xd, 0x97, 0x2b, 0xf2, 0x4e, 0x5d, 0xe1, 0x38, 0x84, 0x11, 0xad, 0x74, 0xc8, 0xdb, 0x67, 0xbe, 0x2, 0x98, 0x24, 0xfd, 0x41, 0x52, 0xee, 0x37, 0x8b, 0x3c, 0x80, 0x59, 0xe5, 0xf6, 0x4a, 0x93, 0x2f, 0xb5, 0x9, 0xd0, 0x6c, 0x7f, 0xc3, 0x1a, 0xa6, 0x33, 0x8f, 0x56, 0xea, 0xf9, 0x45, 0x9c, 0x20, 0xba, 0x6, 0xdf, 0x63, 0x70, 0xcc, 0x15, 0xa9, 0x22, 0x9e, 0x47, 0xfb, 0xe8, 0x54, 0x8d, 0x31, 0xab, 0x17, 0xce, 0x72, 0x61, 0xdd, 0x4, 0xb8, 0x2d, 0x91, 0x48, 0xf4, 0xe7, 0x5b, 0x82, 0x3e, 0xa4, 0x18, 0xc1, 0x7d, 0x6e, 0xd2, 0xb, 0xb7, 0x78, 0xc4, 0x1d, 0xa1, 0xb2, 0xe, 0xd7, 0x6b, 0xf1, 0x4d, 0x94, 0x28, 0x3b, 0x87, 0x5e, 0xe2, 0x77, 0xcb, 0x12, 0xae, 0xbd, 0x1, 0xd8, 0x64, 0xfe, 0x42, 0x9b, 0x27, 0x34, 0x88, 0x51, 0xed, 0x66, 0xda, 0x3, 0xbf, 0xac, 0x10, 0xc9, 0x75, 0xef, 0x53, 0x8a, 0x36, 0x25, 0x99, 0x40, 0xfc, 0x69, 0xd5, 0xc, 0xb0, 0xa3, 0x1f, 0xc6, 0x7a, 0xe0, 0x5c, 0x85, 0x39, 0x2a, 0x96, 0x4f, 0xf3, 0x44, 0xf8, 0x21, 0x9d, 0x8e, 0x32, 0xeb, 0x57, 0xcd, 0x71, 0xa8, 0x14, 0x7, 0xbb, 0x62, 0xde, 0x4b, 0xf7, 0x2e, 0x92, 0x81, 0x3d, 0xe4, 0x58, 0xc2, 0x7e, 0xa7, 0x1b, 0x8, 0xb4, 0x6d, 0xd1, 0x5a, 0xe6, 0x3f, 0x83, 0x90, 0x2c, 0xf5, 0x49, 0xd3, 0x6f, 0xb6, 0xa, 0x19, 0xa5, 0x7c, 0xc0, 0x55, 0xe9, 0x30, 0x8c, 0x9f, 0x23, 0xfa, 0x46, 0xdc, 0x60, 0xb9, 0x5, 0x16, 0xaa, 0x73, 0xcf}, - {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95, 0x1f, 0xa2, 0x78, 0xc5, 0xd1, 0x6c, 0xb6, 0xb, 0x9e, 0x23, 0xf9, 0x44, 0x50, 0xed, 0x37, 0x8a, 0x3e, 0x83, 0x59, 0xe4, 0xf0, 0x4d, 0x97, 0x2a, 0xbf, 0x2, 0xd8, 0x65, 0x71, 0xcc, 0x16, 0xab, 0x21, 0x9c, 0x46, 0xfb, 0xef, 0x52, 0x88, 0x35, 0xa0, 0x1d, 0xc7, 0x7a, 0x6e, 0xd3, 0x9, 0xb4, 0x7c, 0xc1, 0x1b, 0xa6, 0xb2, 0xf, 0xd5, 0x68, 0xfd, 0x40, 0x9a, 0x27, 0x33, 0x8e, 0x54, 0xe9, 0x63, 0xde, 0x4, 0xb9, 0xad, 0x10, 0xca, 0x77, 0xe2, 0x5f, 0x85, 0x38, 0x2c, 0x91, 0x4b, 0xf6, 0x42, 0xff, 0x25, 0x98, 0x8c, 0x31, 0xeb, 0x56, 0xc3, 0x7e, 0xa4, 0x19, 0xd, 0xb0, 0x6a, 0xd7, 0x5d, 0xe0, 0x3a, 0x87, 0x93, 0x2e, 0xf4, 0x49, 0xdc, 0x61, 0xbb, 0x6, 0x12, 0xaf, 0x75, 0xc8, 0xf8, 0x45, 0x9f, 0x22, 0x36, 0x8b, 0x51, 0xec, 0x79, 0xc4, 0x1e, 0xa3, 0xb7, 0xa, 0xd0, 0x6d, 0xe7, 0x5a, 0x80, 0x3d, 0x29, 0x94, 0x4e, 0xf3, 0x66, 0xdb, 0x1, 0xbc, 0xa8, 0x15, 0xcf, 0x72, 0xc6, 0x7b, 0xa1, 0x1c, 0x8, 0xb5, 0x6f, 0xd2, 0x47, 0xfa, 0x20, 0x9d, 0x89, 0x34, 0xee, 0x53, 0xd9, 0x64, 0xbe, 0x3, 0x17, 0xaa, 0x70, 0xcd, 0x58, 0xe5, 0x3f, 0x82, 0x96, 0x2b, 0xf1, 0x4c, 0x84, 0x39, 0xe3, 0x5e, 0x4a, 0xf7, 0x2d, 0x90, 0x5, 0xb8, 0x62, 0xdf, 0xcb, 0x76, 0xac, 0x11, 0x9b, 0x26, 0xfc, 0x41, 0x55, 0xe8, 0x32, 0x8f, 0x1a, 0xa7, 0x7d, 0xc0, 0xd4, 0x69, 0xb3, 0xe, 0xba, 0x7, 0xdd, 0x60, 0x74, 0xc9, 0x13, 0xae, 0x3b, 0x86, 0x5c, 0xe1, 0xf5, 0x48, 0x92, 0x2f, 0xa5, 0x18, 0xc2, 0x7f, 0x6b, 0xd6, 0xc, 0xb1, 0x24, 0x99, 0x43, 0xfe, 0xea, 0x57, 0x8d, 0x30}, - {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84, 0x2f, 0x91, 0x4e, 0xf0, 0xed, 0x53, 0x8c, 0x32, 0xb6, 0x8, 0xd7, 0x69, 0x74, 0xca, 0x15, 0xab, 0x5e, 0xe0, 0x3f, 0x81, 0x9c, 0x22, 0xfd, 0x43, 0xc7, 0x79, 0xa6, 0x18, 0x5, 0xbb, 0x64, 0xda, 0x71, 0xcf, 0x10, 0xae, 0xb3, 0xd, 0xd2, 0x6c, 0xe8, 0x56, 0x89, 0x37, 0x2a, 0x94, 0x4b, 0xf5, 0xbc, 0x2, 0xdd, 0x63, 0x7e, 0xc0, 0x1f, 0xa1, 0x25, 0x9b, 0x44, 0xfa, 0xe7, 0x59, 0x86, 0x38, 0x93, 0x2d, 0xf2, 0x4c, 0x51, 0xef, 0x30, 0x8e, 0xa, 0xb4, 0x6b, 0xd5, 0xc8, 0x76, 0xa9, 0x17, 0xe2, 0x5c, 0x83, 0x3d, 0x20, 0x9e, 0x41, 0xff, 0x7b, 0xc5, 0x1a, 0xa4, 0xb9, 0x7, 0xd8, 0x66, 0xcd, 0x73, 0xac, 0x12, 0xf, 0xb1, 0x6e, 0xd0, 0x54, 0xea, 0x35, 0x8b, 0x96, 0x28, 0xf7, 0x49, 0x65, 0xdb, 0x4, 0xba, 0xa7, 0x19, 0xc6, 0x78, 0xfc, 0x42, 0x9d, 0x23, 0x3e, 0x80, 0x5f, 0xe1, 0x4a, 0xf4, 0x2b, 0x95, 0x88, 0x36, 0xe9, 0x57, 0xd3, 0x6d, 0xb2, 0xc, 0x11, 0xaf, 0x70, 0xce, 0x3b, 0x85, 0x5a, 0xe4, 0xf9, 0x47, 0x98, 0x26, 0xa2, 0x1c, 0xc3, 0x7d, 0x60, 0xde, 0x1, 0xbf, 0x14, 0xaa, 0x75, 0xcb, 0xd6, 0x68, 0xb7, 0x9, 0x8d, 0x33, 0xec, 0x52, 0x4f, 0xf1, 0x2e, 0x90, 0xd9, 0x67, 0xb8, 0x6, 0x1b, 0xa5, 0x7a, 0xc4, 0x40, 0xfe, 0x21, 0x9f, 0x82, 0x3c, 0xe3, 0x5d, 0xf6, 0x48, 0x97, 0x29, 0x34, 0x8a, 0x55, 0xeb, 0x6f, 0xd1, 0xe, 0xb0, 0xad, 0x13, 0xcc, 0x72, 0x87, 0x39, 0xe6, 0x58, 0x45, 0xfb, 0x24, 0x9a, 0x1e, 0xa0, 0x7f, 0xc1, 0xdc, 0x62, 0xbd, 0x3, 0xa8, 0x16, 0xc9, 0x77, 0x6a, 0xd4, 0xb, 0xb5, 0x31, 0x8f, 0x50, 0xee, 0xf3, 0x4d, 0x92, 0x2c}, - {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b, 0x3f, 0x80, 0x5c, 0xe3, 0xf9, 0x46, 0x9a, 0x25, 0xae, 0x11, 0xcd, 0x72, 0x68, 0xd7, 0xb, 0xb4, 0x7e, 0xc1, 0x1d, 0xa2, 0xb8, 0x7, 0xdb, 0x64, 0xef, 0x50, 0x8c, 0x33, 0x29, 0x96, 0x4a, 0xf5, 0x41, 0xfe, 0x22, 0x9d, 0x87, 0x38, 0xe4, 0x5b, 0xd0, 0x6f, 0xb3, 0xc, 0x16, 0xa9, 0x75, 0xca, 0xfc, 0x43, 0x9f, 0x20, 0x3a, 0x85, 0x59, 0xe6, 0x6d, 0xd2, 0xe, 0xb1, 0xab, 0x14, 0xc8, 0x77, 0xc3, 0x7c, 0xa0, 0x1f, 0x5, 0xba, 0x66, 0xd9, 0x52, 0xed, 0x31, 0x8e, 0x94, 0x2b, 0xf7, 0x48, 0x82, 0x3d, 0xe1, 0x5e, 0x44, 0xfb, 0x27, 0x98, 0x13, 0xac, 0x70, 0xcf, 0xd5, 0x6a, 0xb6, 0x9, 0xbd, 0x2, 0xde, 0x61, 0x7b, 0xc4, 0x18, 0xa7, 0x2c, 0x93, 0x4f, 0xf0, 0xea, 0x55, 0x89, 0x36, 0xe5, 0x5a, 0x86, 0x39, 0x23, 0x9c, 0x40, 0xff, 0x74, 0xcb, 0x17, 0xa8, 0xb2, 0xd, 0xd1, 0x6e, 0xda, 0x65, 0xb9, 0x6, 0x1c, 0xa3, 0x7f, 0xc0, 0x4b, 0xf4, 0x28, 0x97, 0x8d, 0x32, 0xee, 0x51, 0x9b, 0x24, 0xf8, 0x47, 0x5d, 0xe2, 0x3e, 0x81, 0xa, 0xb5, 0x69, 0xd6, 0xcc, 0x73, 0xaf, 0x10, 0xa4, 0x1b, 0xc7, 0x78, 0x62, 0xdd, 0x1, 0xbe, 0x35, 0x8a, 0x56, 0xe9, 0xf3, 0x4c, 0x90, 0x2f, 0x19, 0xa6, 0x7a, 0xc5, 0xdf, 0x60, 0xbc, 0x3, 0x88, 0x37, 0xeb, 0x54, 0x4e, 0xf1, 0x2d, 0x92, 0x26, 0x99, 0x45, 0xfa, 0xe0, 0x5f, 0x83, 0x3c, 0xb7, 0x8, 0xd4, 0x6b, 0x71, 0xce, 0x12, 0xad, 0x67, 0xd8, 0x4, 0xbb, 0xa1, 0x1e, 0xc2, 0x7d, 0xf6, 0x49, 0x95, 0x2a, 0x30, 0x8f, 0x53, 0xec, 0x58, 0xe7, 0x3b, 0x84, 0x9e, 0x21, 0xfd, 0x42, 0xc9, 0x76, 0xaa, 0x15, 0xf, 0xb0, 0x6c, 0xd3}, - {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34, 0x9c, 0x5c, 0x1, 0xc1, 0xbb, 0x7b, 0x26, 0xe6, 0xd2, 0x12, 0x4f, 0x8f, 0xf5, 0x35, 0x68, 0xa8, 0x25, 0xe5, 0xb8, 0x78, 0x2, 0xc2, 0x9f, 0x5f, 0x6b, 0xab, 0xf6, 0x36, 0x4c, 0x8c, 0xd1, 0x11, 0xb9, 0x79, 0x24, 0xe4, 0x9e, 0x5e, 0x3, 0xc3, 0xf7, 0x37, 0x6a, 0xaa, 0xd0, 0x10, 0x4d, 0x8d, 0x4a, 0x8a, 0xd7, 0x17, 0x6d, 0xad, 0xf0, 0x30, 0x4, 0xc4, 0x99, 0x59, 0x23, 0xe3, 0xbe, 0x7e, 0xd6, 0x16, 0x4b, 0x8b, 0xf1, 0x31, 0x6c, 0xac, 0x98, 0x58, 0x5, 0xc5, 0xbf, 0x7f, 0x22, 0xe2, 0x6f, 0xaf, 0xf2, 0x32, 0x48, 0x88, 0xd5, 0x15, 0x21, 0xe1, 0xbc, 0x7c, 0x6, 0xc6, 0x9b, 0x5b, 0xf3, 0x33, 0x6e, 0xae, 0xd4, 0x14, 0x49, 0x89, 0xbd, 0x7d, 0x20, 0xe0, 0x9a, 0x5a, 0x7, 0xc7, 0x94, 0x54, 0x9, 0xc9, 0xb3, 0x73, 0x2e, 0xee, 0xda, 0x1a, 0x47, 0x87, 0xfd, 0x3d, 0x60, 0xa0, 0x8, 0xc8, 0x95, 0x55, 0x2f, 0xef, 0xb2, 0x72, 0x46, 0x86, 0xdb, 0x1b, 0x61, 0xa1, 0xfc, 0x3c, 0xb1, 0x71, 0x2c, 0xec, 0x96, 0x56, 0xb, 0xcb, 0xff, 0x3f, 0x62, 0xa2, 0xd8, 0x18, 0x45, 0x85, 0x2d, 0xed, 0xb0, 0x70, 0xa, 0xca, 0x97, 0x57, 0x63, 0xa3, 0xfe, 0x3e, 0x44, 0x84, 0xd9, 0x19, 0xde, 0x1e, 0x43, 0x83, 0xf9, 0x39, 0x64, 0xa4, 0x90, 0x50, 0xd, 0xcd, 0xb7, 0x77, 0x2a, 0xea, 0x42, 0x82, 0xdf, 0x1f, 0x65, 0xa5, 0xf8, 0x38, 0xc, 0xcc, 0x91, 0x51, 0x2b, 0xeb, 0xb6, 0x76, 0xfb, 0x3b, 0x66, 0xa6, 0xdc, 0x1c, 0x41, 0x81, 0xb5, 0x75, 0x28, 0xe8, 0x92, 0x52, 0xf, 0xcf, 0x67, 0xa7, 0xfa, 0x3a, 0x40, 0x80, 0xdd, 0x1d, 0x29, 0xe9, 0xb4, 0x74, 0xe, 0xce, 0x93, 0x53}, - {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b, 0x8c, 0x4d, 0x13, 0xd2, 0xaf, 0x6e, 0x30, 0xf1, 0xca, 0xb, 0x55, 0x94, 0xe9, 0x28, 0x76, 0xb7, 0x5, 0xc4, 0x9a, 0x5b, 0x26, 0xe7, 0xb9, 0x78, 0x43, 0x82, 0xdc, 0x1d, 0x60, 0xa1, 0xff, 0x3e, 0x89, 0x48, 0x16, 0xd7, 0xaa, 0x6b, 0x35, 0xf4, 0xcf, 0xe, 0x50, 0x91, 0xec, 0x2d, 0x73, 0xb2, 0xa, 0xcb, 0x95, 0x54, 0x29, 0xe8, 0xb6, 0x77, 0x4c, 0x8d, 0xd3, 0x12, 0x6f, 0xae, 0xf0, 0x31, 0x86, 0x47, 0x19, 0xd8, 0xa5, 0x64, 0x3a, 0xfb, 0xc0, 0x1, 0x5f, 0x9e, 0xe3, 0x22, 0x7c, 0xbd, 0xf, 0xce, 0x90, 0x51, 0x2c, 0xed, 0xb3, 0x72, 0x49, 0x88, 0xd6, 0x17, 0x6a, 0xab, 0xf5, 0x34, 0x83, 0x42, 0x1c, 0xdd, 0xa0, 0x61, 0x3f, 0xfe, 0xc5, 0x4, 0x5a, 0x9b, 0xe6, 0x27, 0x79, 0xb8, 0x14, 0xd5, 0x8b, 0x4a, 0x37, 0xf6, 0xa8, 0x69, 0x52, 0x93, 0xcd, 0xc, 0x71, 0xb0, 0xee, 0x2f, 0x98, 0x59, 0x7, 0xc6, 0xbb, 0x7a, 0x24, 0xe5, 0xde, 0x1f, 0x41, 0x80, 0xfd, 0x3c, 0x62, 0xa3, 0x11, 0xd0, 0x8e, 0x4f, 0x32, 0xf3, 0xad, 0x6c, 0x57, 0x96, 0xc8, 0x9, 0x74, 0xb5, 0xeb, 0x2a, 0x9d, 0x5c, 0x2, 0xc3, 0xbe, 0x7f, 0x21, 0xe0, 0xdb, 0x1a, 0x44, 0x85, 0xf8, 0x39, 0x67, 0xa6, 0x1e, 0xdf, 0x81, 0x40, 0x3d, 0xfc, 0xa2, 0x63, 0x58, 0x99, 0xc7, 0x6, 0x7b, 0xba, 0xe4, 0x25, 0x92, 0x53, 0xd, 0xcc, 0xb1, 0x70, 0x2e, 0xef, 0xd4, 0x15, 0x4b, 0x8a, 0xf7, 0x36, 0x68, 0xa9, 0x1b, 0xda, 0x84, 0x45, 0x38, 0xf9, 0xa7, 0x66, 0x5d, 0x9c, 0xc2, 0x3, 0x7e, 0xbf, 0xe1, 0x20, 0x97, 0x56, 0x8, 0xc9, 0xb4, 0x75, 0x2b, 0xea, 0xd1, 0x10, 0x4e, 0x8f, 0xf2, 0x33, 0x6d, 0xac}, - {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a, 0xbc, 0x7e, 0x25, 0xe7, 0x93, 0x51, 0xa, 0xc8, 0xe2, 0x20, 0x7b, 0xb9, 0xcd, 0xf, 0x54, 0x96, 0x65, 0xa7, 0xfc, 0x3e, 0x4a, 0x88, 0xd3, 0x11, 0x3b, 0xf9, 0xa2, 0x60, 0x14, 0xd6, 0x8d, 0x4f, 0xd9, 0x1b, 0x40, 0x82, 0xf6, 0x34, 0x6f, 0xad, 0x87, 0x45, 0x1e, 0xdc, 0xa8, 0x6a, 0x31, 0xf3, 0xca, 0x8, 0x53, 0x91, 0xe5, 0x27, 0x7c, 0xbe, 0x94, 0x56, 0xd, 0xcf, 0xbb, 0x79, 0x22, 0xe0, 0x76, 0xb4, 0xef, 0x2d, 0x59, 0x9b, 0xc0, 0x2, 0x28, 0xea, 0xb1, 0x73, 0x7, 0xc5, 0x9e, 0x5c, 0xaf, 0x6d, 0x36, 0xf4, 0x80, 0x42, 0x19, 0xdb, 0xf1, 0x33, 0x68, 0xaa, 0xde, 0x1c, 0x47, 0x85, 0x13, 0xd1, 0x8a, 0x48, 0x3c, 0xfe, 0xa5, 0x67, 0x4d, 0x8f, 0xd4, 0x16, 0x62, 0xa0, 0xfb, 0x39, 0x89, 0x4b, 0x10, 0xd2, 0xa6, 0x64, 0x3f, 0xfd, 0xd7, 0x15, 0x4e, 0x8c, 0xf8, 0x3a, 0x61, 0xa3, 0x35, 0xf7, 0xac, 0x6e, 0x1a, 0xd8, 0x83, 0x41, 0x6b, 0xa9, 0xf2, 0x30, 0x44, 0x86, 0xdd, 0x1f, 0xec, 0x2e, 0x75, 0xb7, 0xc3, 0x1, 0x5a, 0x98, 0xb2, 0x70, 0x2b, 0xe9, 0x9d, 0x5f, 0x4, 0xc6, 0x50, 0x92, 0xc9, 0xb, 0x7f, 0xbd, 0xe6, 0x24, 0xe, 0xcc, 0x97, 0x55, 0x21, 0xe3, 0xb8, 0x7a, 0x43, 0x81, 0xda, 0x18, 0x6c, 0xae, 0xf5, 0x37, 0x1d, 0xdf, 0x84, 0x46, 0x32, 0xf0, 0xab, 0x69, 0xff, 0x3d, 0x66, 0xa4, 0xd0, 0x12, 0x49, 0x8b, 0xa1, 0x63, 0x38, 0xfa, 0x8e, 0x4c, 0x17, 0xd5, 0x26, 0xe4, 0xbf, 0x7d, 0x9, 0xcb, 0x90, 0x52, 0x78, 0xba, 0xe1, 0x23, 0x57, 0x95, 0xce, 0xc, 0x9a, 0x58, 0x3, 0xc1, 0xb5, 0x77, 0x2c, 0xee, 0xc4, 0x6, 0x5d, 0x9f, 0xeb, 0x29, 0x72, 0xb0}, - {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25, 0xac, 0x6f, 0x37, 0xf4, 0x87, 0x44, 0x1c, 0xdf, 0xfa, 0x39, 0x61, 0xa2, 0xd1, 0x12, 0x4a, 0x89, 0x45, 0x86, 0xde, 0x1d, 0x6e, 0xad, 0xf5, 0x36, 0x13, 0xd0, 0x88, 0x4b, 0x38, 0xfb, 0xa3, 0x60, 0xe9, 0x2a, 0x72, 0xb1, 0xc2, 0x1, 0x59, 0x9a, 0xbf, 0x7c, 0x24, 0xe7, 0x94, 0x57, 0xf, 0xcc, 0x8a, 0x49, 0x11, 0xd2, 0xa1, 0x62, 0x3a, 0xf9, 0xdc, 0x1f, 0x47, 0x84, 0xf7, 0x34, 0x6c, 0xaf, 0x26, 0xe5, 0xbd, 0x7e, 0xd, 0xce, 0x96, 0x55, 0x70, 0xb3, 0xeb, 0x28, 0x5b, 0x98, 0xc0, 0x3, 0xcf, 0xc, 0x54, 0x97, 0xe4, 0x27, 0x7f, 0xbc, 0x99, 0x5a, 0x2, 0xc1, 0xb2, 0x71, 0x29, 0xea, 0x63, 0xa0, 0xf8, 0x3b, 0x48, 0x8b, 0xd3, 0x10, 0x35, 0xf6, 0xae, 0x6d, 0x1e, 0xdd, 0x85, 0x46, 0x9, 0xca, 0x92, 0x51, 0x22, 0xe1, 0xb9, 0x7a, 0x5f, 0x9c, 0xc4, 0x7, 0x74, 0xb7, 0xef, 0x2c, 0xa5, 0x66, 0x3e, 0xfd, 0x8e, 0x4d, 0x15, 0xd6, 0xf3, 0x30, 0x68, 0xab, 0xd8, 0x1b, 0x43, 0x80, 0x4c, 0x8f, 0xd7, 0x14, 0x67, 0xa4, 0xfc, 0x3f, 0x1a, 0xd9, 0x81, 0x42, 0x31, 0xf2, 0xaa, 0x69, 0xe0, 0x23, 0x7b, 0xb8, 0xcb, 0x8, 0x50, 0x93, 0xb6, 0x75, 0x2d, 0xee, 0x9d, 0x5e, 0x6, 0xc5, 0x83, 0x40, 0x18, 0xdb, 0xa8, 0x6b, 0x33, 0xf0, 0xd5, 0x16, 0x4e, 0x8d, 0xfe, 0x3d, 0x65, 0xa6, 0x2f, 0xec, 0xb4, 0x77, 0x4, 0xc7, 0x9f, 0x5c, 0x79, 0xba, 0xe2, 0x21, 0x52, 0x91, 0xc9, 0xa, 0xc6, 0x5, 0x5d, 0x9e, 0xed, 0x2e, 0x76, 0xb5, 0x90, 0x53, 0xb, 0xc8, 0xbb, 0x78, 0x20, 0xe3, 0x6a, 0xa9, 0xf1, 0x32, 0x41, 0x82, 0xda, 0x19, 0x3c, 0xff, 0xa7, 0x64, 0x17, 0xd4, 0x8c, 0x4f}, - {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8, 0xdc, 0x18, 0x49, 0x8d, 0xeb, 0x2f, 0x7e, 0xba, 0xb2, 0x76, 0x27, 0xe3, 0x85, 0x41, 0x10, 0xd4, 0xa5, 0x61, 0x30, 0xf4, 0x92, 0x56, 0x7, 0xc3, 0xcb, 0xf, 0x5e, 0x9a, 0xfc, 0x38, 0x69, 0xad, 0x79, 0xbd, 0xec, 0x28, 0x4e, 0x8a, 0xdb, 0x1f, 0x17, 0xd3, 0x82, 0x46, 0x20, 0xe4, 0xb5, 0x71, 0x57, 0x93, 0xc2, 0x6, 0x60, 0xa4, 0xf5, 0x31, 0x39, 0xfd, 0xac, 0x68, 0xe, 0xca, 0x9b, 0x5f, 0x8b, 0x4f, 0x1e, 0xda, 0xbc, 0x78, 0x29, 0xed, 0xe5, 0x21, 0x70, 0xb4, 0xd2, 0x16, 0x47, 0x83, 0xf2, 0x36, 0x67, 0xa3, 0xc5, 0x1, 0x50, 0x94, 0x9c, 0x58, 0x9, 0xcd, 0xab, 0x6f, 0x3e, 0xfa, 0x2e, 0xea, 0xbb, 0x7f, 0x19, 0xdd, 0x8c, 0x48, 0x40, 0x84, 0xd5, 0x11, 0x77, 0xb3, 0xe2, 0x26, 0xae, 0x6a, 0x3b, 0xff, 0x99, 0x5d, 0xc, 0xc8, 0xc0, 0x4, 0x55, 0x91, 0xf7, 0x33, 0x62, 0xa6, 0x72, 0xb6, 0xe7, 0x23, 0x45, 0x81, 0xd0, 0x14, 0x1c, 0xd8, 0x89, 0x4d, 0x2b, 0xef, 0xbe, 0x7a, 0xb, 0xcf, 0x9e, 0x5a, 0x3c, 0xf8, 0xa9, 0x6d, 0x65, 0xa1, 0xf0, 0x34, 0x52, 0x96, 0xc7, 0x3, 0xd7, 0x13, 0x42, 0x86, 0xe0, 0x24, 0x75, 0xb1, 0xb9, 0x7d, 0x2c, 0xe8, 0x8e, 0x4a, 0x1b, 0xdf, 0xf9, 0x3d, 0x6c, 0xa8, 0xce, 0xa, 0x5b, 0x9f, 0x97, 0x53, 0x2, 0xc6, 0xa0, 0x64, 0x35, 0xf1, 0x25, 0xe1, 0xb0, 0x74, 0x12, 0xd6, 0x87, 0x43, 0x4b, 0x8f, 0xde, 0x1a, 0x7c, 0xb8, 0xe9, 0x2d, 0x5c, 0x98, 0xc9, 0xd, 0x6b, 0xaf, 0xfe, 0x3a, 0x32, 0xf6, 0xa7, 0x63, 0x5, 0xc1, 0x90, 0x54, 0x80, 0x44, 0x15, 0xd1, 0xb7, 0x73, 0x22, 0xe6, 0xee, 0x2a, 0x7b, 0xbf, 0xd9, 0x1d, 0x4c, 0x88}, - {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7, 0xcc, 0x9, 0x5b, 0x9e, 0xff, 0x3a, 0x68, 0xad, 0xaa, 0x6f, 0x3d, 0xf8, 0x99, 0x5c, 0xe, 0xcb, 0x85, 0x40, 0x12, 0xd7, 0xb6, 0x73, 0x21, 0xe4, 0xe3, 0x26, 0x74, 0xb1, 0xd0, 0x15, 0x47, 0x82, 0x49, 0x8c, 0xde, 0x1b, 0x7a, 0xbf, 0xed, 0x28, 0x2f, 0xea, 0xb8, 0x7d, 0x1c, 0xd9, 0x8b, 0x4e, 0x17, 0xd2, 0x80, 0x45, 0x24, 0xe1, 0xb3, 0x76, 0x71, 0xb4, 0xe6, 0x23, 0x42, 0x87, 0xd5, 0x10, 0xdb, 0x1e, 0x4c, 0x89, 0xe8, 0x2d, 0x7f, 0xba, 0xbd, 0x78, 0x2a, 0xef, 0x8e, 0x4b, 0x19, 0xdc, 0x92, 0x57, 0x5, 0xc0, 0xa1, 0x64, 0x36, 0xf3, 0xf4, 0x31, 0x63, 0xa6, 0xc7, 0x2, 0x50, 0x95, 0x5e, 0x9b, 0xc9, 0xc, 0x6d, 0xa8, 0xfa, 0x3f, 0x38, 0xfd, 0xaf, 0x6a, 0xb, 0xce, 0x9c, 0x59, 0x2e, 0xeb, 0xb9, 0x7c, 0x1d, 0xd8, 0x8a, 0x4f, 0x48, 0x8d, 0xdf, 0x1a, 0x7b, 0xbe, 0xec, 0x29, 0xe2, 0x27, 0x75, 0xb0, 0xd1, 0x14, 0x46, 0x83, 0x84, 0x41, 0x13, 0xd6, 0xb7, 0x72, 0x20, 0xe5, 0xab, 0x6e, 0x3c, 0xf9, 0x98, 0x5d, 0xf, 0xca, 0xcd, 0x8, 0x5a, 0x9f, 0xfe, 0x3b, 0x69, 0xac, 0x67, 0xa2, 0xf0, 0x35, 0x54, 0x91, 0xc3, 0x6, 0x1, 0xc4, 0x96, 0x53, 0x32, 0xf7, 0xa5, 0x60, 0x39, 0xfc, 0xae, 0x6b, 0xa, 0xcf, 0x9d, 0x58, 0x5f, 0x9a, 0xc8, 0xd, 0x6c, 0xa9, 0xfb, 0x3e, 0xf5, 0x30, 0x62, 0xa7, 0xc6, 0x3, 0x51, 0x94, 0x93, 0x56, 0x4, 0xc1, 0xa0, 0x65, 0x37, 0xf2, 0xbc, 0x79, 0x2b, 0xee, 0x8f, 0x4a, 0x18, 0xdd, 0xda, 0x1f, 0x4d, 0x88, 0xe9, 0x2c, 0x7e, 0xbb, 0x70, 0xb5, 0xe7, 0x22, 0x43, 0x86, 0xd4, 0x11, 0x16, 0xd3, 0x81, 0x44, 0x25, 0xe0, 0xb2, 0x77}, - {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16, 0xfc, 0x3a, 0x6d, 0xab, 0xc3, 0x5, 0x52, 0x94, 0x82, 0x44, 0x13, 0xd5, 0xbd, 0x7b, 0x2c, 0xea, 0xe5, 0x23, 0x74, 0xb2, 0xda, 0x1c, 0x4b, 0x8d, 0x9b, 0x5d, 0xa, 0xcc, 0xa4, 0x62, 0x35, 0xf3, 0x19, 0xdf, 0x88, 0x4e, 0x26, 0xe0, 0xb7, 0x71, 0x67, 0xa1, 0xf6, 0x30, 0x58, 0x9e, 0xc9, 0xf, 0xd7, 0x11, 0x46, 0x80, 0xe8, 0x2e, 0x79, 0xbf, 0xa9, 0x6f, 0x38, 0xfe, 0x96, 0x50, 0x7, 0xc1, 0x2b, 0xed, 0xba, 0x7c, 0x14, 0xd2, 0x85, 0x43, 0x55, 0x93, 0xc4, 0x2, 0x6a, 0xac, 0xfb, 0x3d, 0x32, 0xf4, 0xa3, 0x65, 0xd, 0xcb, 0x9c, 0x5a, 0x4c, 0x8a, 0xdd, 0x1b, 0x73, 0xb5, 0xe2, 0x24, 0xce, 0x8, 0x5f, 0x99, 0xf1, 0x37, 0x60, 0xa6, 0xb0, 0x76, 0x21, 0xe7, 0x8f, 0x49, 0x1e, 0xd8, 0xb3, 0x75, 0x22, 0xe4, 0x8c, 0x4a, 0x1d, 0xdb, 0xcd, 0xb, 0x5c, 0x9a, 0xf2, 0x34, 0x63, 0xa5, 0x4f, 0x89, 0xde, 0x18, 0x70, 0xb6, 0xe1, 0x27, 0x31, 0xf7, 0xa0, 0x66, 0xe, 0xc8, 0x9f, 0x59, 0x56, 0x90, 0xc7, 0x1, 0x69, 0xaf, 0xf8, 0x3e, 0x28, 0xee, 0xb9, 0x7f, 0x17, 0xd1, 0x86, 0x40, 0xaa, 0x6c, 0x3b, 0xfd, 0x95, 0x53, 0x4, 0xc2, 0xd4, 0x12, 0x45, 0x83, 0xeb, 0x2d, 0x7a, 0xbc, 0x64, 0xa2, 0xf5, 0x33, 0x5b, 0x9d, 0xca, 0xc, 0x1a, 0xdc, 0x8b, 0x4d, 0x25, 0xe3, 0xb4, 0x72, 0x98, 0x5e, 0x9, 0xcf, 0xa7, 0x61, 0x36, 0xf0, 0xe6, 0x20, 0x77, 0xb1, 0xd9, 0x1f, 0x48, 0x8e, 0x81, 0x47, 0x10, 0xd6, 0xbe, 0x78, 0x2f, 0xe9, 0xff, 0x39, 0x6e, 0xa8, 0xc0, 0x6, 0x51, 0x97, 0x7d, 0xbb, 0xec, 0x2a, 0x42, 0x84, 0xd3, 0x15, 0x3, 0xc5, 0x92, 0x54, 0x3c, 0xfa, 0xad, 0x6b}, - {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19, 0xec, 0x2b, 0x7f, 0xb8, 0xd7, 0x10, 0x44, 0x83, 0x9a, 0x5d, 0x9, 0xce, 0xa1, 0x66, 0x32, 0xf5, 0xc5, 0x2, 0x56, 0x91, 0xfe, 0x39, 0x6d, 0xaa, 0xb3, 0x74, 0x20, 0xe7, 0x88, 0x4f, 0x1b, 0xdc, 0x29, 0xee, 0xba, 0x7d, 0x12, 0xd5, 0x81, 0x46, 0x5f, 0x98, 0xcc, 0xb, 0x64, 0xa3, 0xf7, 0x30, 0x97, 0x50, 0x4, 0xc3, 0xac, 0x6b, 0x3f, 0xf8, 0xe1, 0x26, 0x72, 0xb5, 0xda, 0x1d, 0x49, 0x8e, 0x7b, 0xbc, 0xe8, 0x2f, 0x40, 0x87, 0xd3, 0x14, 0xd, 0xca, 0x9e, 0x59, 0x36, 0xf1, 0xa5, 0x62, 0x52, 0x95, 0xc1, 0x6, 0x69, 0xae, 0xfa, 0x3d, 0x24, 0xe3, 0xb7, 0x70, 0x1f, 0xd8, 0x8c, 0x4b, 0xbe, 0x79, 0x2d, 0xea, 0x85, 0x42, 0x16, 0xd1, 0xc8, 0xf, 0x5b, 0x9c, 0xf3, 0x34, 0x60, 0xa7, 0x33, 0xf4, 0xa0, 0x67, 0x8, 0xcf, 0x9b, 0x5c, 0x45, 0x82, 0xd6, 0x11, 0x7e, 0xb9, 0xed, 0x2a, 0xdf, 0x18, 0x4c, 0x8b, 0xe4, 0x23, 0x77, 0xb0, 0xa9, 0x6e, 0x3a, 0xfd, 0x92, 0x55, 0x1, 0xc6, 0xf6, 0x31, 0x65, 0xa2, 0xcd, 0xa, 0x5e, 0x99, 0x80, 0x47, 0x13, 0xd4, 0xbb, 0x7c, 0x28, 0xef, 0x1a, 0xdd, 0x89, 0x4e, 0x21, 0xe6, 0xb2, 0x75, 0x6c, 0xab, 0xff, 0x38, 0x57, 0x90, 0xc4, 0x3, 0xa4, 0x63, 0x37, 0xf0, 0x9f, 0x58, 0xc, 0xcb, 0xd2, 0x15, 0x41, 0x86, 0xe9, 0x2e, 0x7a, 0xbd, 0x48, 0x8f, 0xdb, 0x1c, 0x73, 0xb4, 0xe0, 0x27, 0x3e, 0xf9, 0xad, 0x6a, 0x5, 0xc2, 0x96, 0x51, 0x61, 0xa6, 0xf2, 0x35, 0x5a, 0x9d, 0xc9, 0xe, 0x17, 0xd0, 0x84, 0x43, 0x2c, 0xeb, 0xbf, 0x78, 0x8d, 0x4a, 0x1e, 0xd9, 0xb6, 0x71, 0x25, 0xe2, 0xfb, 0x3c, 0x68, 0xaf, 0xc0, 0x7, 0x53, 0x94}, - {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c, 0x1c, 0xd4, 0x91, 0x59, 0x1b, 0xd3, 0x96, 0x5e, 0x12, 0xda, 0x9f, 0x57, 0x15, 0xdd, 0x98, 0x50, 0x38, 0xf0, 0xb5, 0x7d, 0x3f, 0xf7, 0xb2, 0x7a, 0x36, 0xfe, 0xbb, 0x73, 0x31, 0xf9, 0xbc, 0x74, 0x24, 0xec, 0xa9, 0x61, 0x23, 0xeb, 0xae, 0x66, 0x2a, 0xe2, 0xa7, 0x6f, 0x2d, 0xe5, 0xa0, 0x68, 0x70, 0xb8, 0xfd, 0x35, 0x77, 0xbf, 0xfa, 0x32, 0x7e, 0xb6, 0xf3, 0x3b, 0x79, 0xb1, 0xf4, 0x3c, 0x6c, 0xa4, 0xe1, 0x29, 0x6b, 0xa3, 0xe6, 0x2e, 0x62, 0xaa, 0xef, 0x27, 0x65, 0xad, 0xe8, 0x20, 0x48, 0x80, 0xc5, 0xd, 0x4f, 0x87, 0xc2, 0xa, 0x46, 0x8e, 0xcb, 0x3, 0x41, 0x89, 0xcc, 0x4, 0x54, 0x9c, 0xd9, 0x11, 0x53, 0x9b, 0xde, 0x16, 0x5a, 0x92, 0xd7, 0x1f, 0x5d, 0x95, 0xd0, 0x18, 0xe0, 0x28, 0x6d, 0xa5, 0xe7, 0x2f, 0x6a, 0xa2, 0xee, 0x26, 0x63, 0xab, 0xe9, 0x21, 0x64, 0xac, 0xfc, 0x34, 0x71, 0xb9, 0xfb, 0x33, 0x76, 0xbe, 0xf2, 0x3a, 0x7f, 0xb7, 0xf5, 0x3d, 0x78, 0xb0, 0xd8, 0x10, 0x55, 0x9d, 0xdf, 0x17, 0x52, 0x9a, 0xd6, 0x1e, 0x5b, 0x93, 0xd1, 0x19, 0x5c, 0x94, 0xc4, 0xc, 0x49, 0x81, 0xc3, 0xb, 0x4e, 0x86, 0xca, 0x2, 0x47, 0x8f, 0xcd, 0x5, 0x40, 0x88, 0x90, 0x58, 0x1d, 0xd5, 0x97, 0x5f, 0x1a, 0xd2, 0x9e, 0x56, 0x13, 0xdb, 0x99, 0x51, 0x14, 0xdc, 0x8c, 0x44, 0x1, 0xc9, 0x8b, 0x43, 0x6, 0xce, 0x82, 0x4a, 0xf, 0xc7, 0x85, 0x4d, 0x8, 0xc0, 0xa8, 0x60, 0x25, 0xed, 0xaf, 0x67, 0x22, 0xea, 0xa6, 0x6e, 0x2b, 0xe3, 0xa1, 0x69, 0x2c, 0xe4, 0xb4, 0x7c, 0x39, 0xf1, 0xb3, 0x7b, 0x3e, 0xf6, 0xba, 0x72, 0x37, 0xff, 0xbd, 0x75, 0x30, 0xf8}, - {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43, 0xc, 0xc5, 0x83, 0x4a, 0xf, 0xc6, 0x80, 0x49, 0xa, 0xc3, 0x85, 0x4c, 0x9, 0xc0, 0x86, 0x4f, 0x18, 0xd1, 0x97, 0x5e, 0x1b, 0xd2, 0x94, 0x5d, 0x1e, 0xd7, 0x91, 0x58, 0x1d, 0xd4, 0x92, 0x5b, 0x14, 0xdd, 0x9b, 0x52, 0x17, 0xde, 0x98, 0x51, 0x12, 0xdb, 0x9d, 0x54, 0x11, 0xd8, 0x9e, 0x57, 0x30, 0xf9, 0xbf, 0x76, 0x33, 0xfa, 0xbc, 0x75, 0x36, 0xff, 0xb9, 0x70, 0x35, 0xfc, 0xba, 0x73, 0x3c, 0xf5, 0xb3, 0x7a, 0x3f, 0xf6, 0xb0, 0x79, 0x3a, 0xf3, 0xb5, 0x7c, 0x39, 0xf0, 0xb6, 0x7f, 0x28, 0xe1, 0xa7, 0x6e, 0x2b, 0xe2, 0xa4, 0x6d, 0x2e, 0xe7, 0xa1, 0x68, 0x2d, 0xe4, 0xa2, 0x6b, 0x24, 0xed, 0xab, 0x62, 0x27, 0xee, 0xa8, 0x61, 0x22, 0xeb, 0xad, 0x64, 0x21, 0xe8, 0xae, 0x67, 0x60, 0xa9, 0xef, 0x26, 0x63, 0xaa, 0xec, 0x25, 0x66, 0xaf, 0xe9, 0x20, 0x65, 0xac, 0xea, 0x23, 0x6c, 0xa5, 0xe3, 0x2a, 0x6f, 0xa6, 0xe0, 0x29, 0x6a, 0xa3, 0xe5, 0x2c, 0x69, 0xa0, 0xe6, 0x2f, 0x78, 0xb1, 0xf7, 0x3e, 0x7b, 0xb2, 0xf4, 0x3d, 0x7e, 0xb7, 0xf1, 0x38, 0x7d, 0xb4, 0xf2, 0x3b, 0x74, 0xbd, 0xfb, 0x32, 0x77, 0xbe, 0xf8, 0x31, 0x72, 0xbb, 0xfd, 0x34, 0x71, 0xb8, 0xfe, 0x37, 0x50, 0x99, 0xdf, 0x16, 0x53, 0x9a, 0xdc, 0x15, 0x56, 0x9f, 0xd9, 0x10, 0x55, 0x9c, 0xda, 0x13, 0x5c, 0x95, 0xd3, 0x1a, 0x5f, 0x96, 0xd0, 0x19, 0x5a, 0x93, 0xd5, 0x1c, 0x59, 0x90, 0xd6, 0x1f, 0x48, 0x81, 0xc7, 0xe, 0x4b, 0x82, 0xc4, 0xd, 0x4e, 0x87, 0xc1, 0x8, 0x4d, 0x84, 0xc2, 0xb, 0x44, 0x8d, 0xcb, 0x2, 0x47, 0x8e, 0xc8, 0x1, 0x42, 0x8b, 0xcd, 0x4, 0x41, 0x88, 0xce, 0x7}, - {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52, 0x3c, 0xf6, 0xb5, 0x7f, 0x33, 0xf9, 0xba, 0x70, 0x22, 0xe8, 0xab, 0x61, 0x2d, 0xe7, 0xa4, 0x6e, 0x78, 0xb2, 0xf1, 0x3b, 0x77, 0xbd, 0xfe, 0x34, 0x66, 0xac, 0xef, 0x25, 0x69, 0xa3, 0xe0, 0x2a, 0x44, 0x8e, 0xcd, 0x7, 0x4b, 0x81, 0xc2, 0x8, 0x5a, 0x90, 0xd3, 0x19, 0x55, 0x9f, 0xdc, 0x16, 0xf0, 0x3a, 0x79, 0xb3, 0xff, 0x35, 0x76, 0xbc, 0xee, 0x24, 0x67, 0xad, 0xe1, 0x2b, 0x68, 0xa2, 0xcc, 0x6, 0x45, 0x8f, 0xc3, 0x9, 0x4a, 0x80, 0xd2, 0x18, 0x5b, 0x91, 0xdd, 0x17, 0x54, 0x9e, 0x88, 0x42, 0x1, 0xcb, 0x87, 0x4d, 0xe, 0xc4, 0x96, 0x5c, 0x1f, 0xd5, 0x99, 0x53, 0x10, 0xda, 0xb4, 0x7e, 0x3d, 0xf7, 0xbb, 0x71, 0x32, 0xf8, 0xaa, 0x60, 0x23, 0xe9, 0xa5, 0x6f, 0x2c, 0xe6, 0xfd, 0x37, 0x74, 0xbe, 0xf2, 0x38, 0x7b, 0xb1, 0xe3, 0x29, 0x6a, 0xa0, 0xec, 0x26, 0x65, 0xaf, 0xc1, 0xb, 0x48, 0x82, 0xce, 0x4, 0x47, 0x8d, 0xdf, 0x15, 0x56, 0x9c, 0xd0, 0x1a, 0x59, 0x93, 0x85, 0x4f, 0xc, 0xc6, 0x8a, 0x40, 0x3, 0xc9, 0x9b, 0x51, 0x12, 0xd8, 0x94, 0x5e, 0x1d, 0xd7, 0xb9, 0x73, 0x30, 0xfa, 0xb6, 0x7c, 0x3f, 0xf5, 0xa7, 0x6d, 0x2e, 0xe4, 0xa8, 0x62, 0x21, 0xeb, 0xd, 0xc7, 0x84, 0x4e, 0x2, 0xc8, 0x8b, 0x41, 0x13, 0xd9, 0x9a, 0x50, 0x1c, 0xd6, 0x95, 0x5f, 0x31, 0xfb, 0xb8, 0x72, 0x3e, 0xf4, 0xb7, 0x7d, 0x2f, 0xe5, 0xa6, 0x6c, 0x20, 0xea, 0xa9, 0x63, 0x75, 0xbf, 0xfc, 0x36, 0x7a, 0xb0, 0xf3, 0x39, 0x6b, 0xa1, 0xe2, 0x28, 0x64, 0xae, 0xed, 0x27, 0x49, 0x83, 0xc0, 0xa, 0x46, 0x8c, 0xcf, 0x5, 0x57, 0x9d, 0xde, 0x14, 0x58, 0x92, 0xd1, 0x1b}, - {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d, 0x2c, 0xe7, 0xa7, 0x6c, 0x27, 0xec, 0xac, 0x67, 0x3a, 0xf1, 0xb1, 0x7a, 0x31, 0xfa, 0xba, 0x71, 0x58, 0x93, 0xd3, 0x18, 0x53, 0x98, 0xd8, 0x13, 0x4e, 0x85, 0xc5, 0xe, 0x45, 0x8e, 0xce, 0x5, 0x74, 0xbf, 0xff, 0x34, 0x7f, 0xb4, 0xf4, 0x3f, 0x62, 0xa9, 0xe9, 0x22, 0x69, 0xa2, 0xe2, 0x29, 0xb0, 0x7b, 0x3b, 0xf0, 0xbb, 0x70, 0x30, 0xfb, 0xa6, 0x6d, 0x2d, 0xe6, 0xad, 0x66, 0x26, 0xed, 0x9c, 0x57, 0x17, 0xdc, 0x97, 0x5c, 0x1c, 0xd7, 0x8a, 0x41, 0x1, 0xca, 0x81, 0x4a, 0xa, 0xc1, 0xe8, 0x23, 0x63, 0xa8, 0xe3, 0x28, 0x68, 0xa3, 0xfe, 0x35, 0x75, 0xbe, 0xf5, 0x3e, 0x7e, 0xb5, 0xc4, 0xf, 0x4f, 0x84, 0xcf, 0x4, 0x44, 0x8f, 0xd2, 0x19, 0x59, 0x92, 0xd9, 0x12, 0x52, 0x99, 0x7d, 0xb6, 0xf6, 0x3d, 0x76, 0xbd, 0xfd, 0x36, 0x6b, 0xa0, 0xe0, 0x2b, 0x60, 0xab, 0xeb, 0x20, 0x51, 0x9a, 0xda, 0x11, 0x5a, 0x91, 0xd1, 0x1a, 0x47, 0x8c, 0xcc, 0x7, 0x4c, 0x87, 0xc7, 0xc, 0x25, 0xee, 0xae, 0x65, 0x2e, 0xe5, 0xa5, 0x6e, 0x33, 0xf8, 0xb8, 0x73, 0x38, 0xf3, 0xb3, 0x78, 0x9, 0xc2, 0x82, 0x49, 0x2, 0xc9, 0x89, 0x42, 0x1f, 0xd4, 0x94, 0x5f, 0x14, 0xdf, 0x9f, 0x54, 0xcd, 0x6, 0x46, 0x8d, 0xc6, 0xd, 0x4d, 0x86, 0xdb, 0x10, 0x50, 0x9b, 0xd0, 0x1b, 0x5b, 0x90, 0xe1, 0x2a, 0x6a, 0xa1, 0xea, 0x21, 0x61, 0xaa, 0xf7, 0x3c, 0x7c, 0xb7, 0xfc, 0x37, 0x77, 0xbc, 0x95, 0x5e, 0x1e, 0xd5, 0x9e, 0x55, 0x15, 0xde, 0x83, 0x48, 0x8, 0xc3, 0x88, 0x43, 0x3, 0xc8, 0xb9, 0x72, 0x32, 0xf9, 0xb2, 0x79, 0x39, 0xf2, 0xaf, 0x64, 0x24, 0xef, 0xa4, 0x6f, 0x2f, 0xe4}, - {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70, 0x5c, 0x90, 0xd9, 0x15, 0x4b, 0x87, 0xce, 0x2, 0x72, 0xbe, 0xf7, 0x3b, 0x65, 0xa9, 0xe0, 0x2c, 0xb8, 0x74, 0x3d, 0xf1, 0xaf, 0x63, 0x2a, 0xe6, 0x96, 0x5a, 0x13, 0xdf, 0x81, 0x4d, 0x4, 0xc8, 0xe4, 0x28, 0x61, 0xad, 0xf3, 0x3f, 0x76, 0xba, 0xca, 0x6, 0x4f, 0x83, 0xdd, 0x11, 0x58, 0x94, 0x6d, 0xa1, 0xe8, 0x24, 0x7a, 0xb6, 0xff, 0x33, 0x43, 0x8f, 0xc6, 0xa, 0x54, 0x98, 0xd1, 0x1d, 0x31, 0xfd, 0xb4, 0x78, 0x26, 0xea, 0xa3, 0x6f, 0x1f, 0xd3, 0x9a, 0x56, 0x8, 0xc4, 0x8d, 0x41, 0xd5, 0x19, 0x50, 0x9c, 0xc2, 0xe, 0x47, 0x8b, 0xfb, 0x37, 0x7e, 0xb2, 0xec, 0x20, 0x69, 0xa5, 0x89, 0x45, 0xc, 0xc0, 0x9e, 0x52, 0x1b, 0xd7, 0xa7, 0x6b, 0x22, 0xee, 0xb0, 0x7c, 0x35, 0xf9, 0xda, 0x16, 0x5f, 0x93, 0xcd, 0x1, 0x48, 0x84, 0xf4, 0x38, 0x71, 0xbd, 0xe3, 0x2f, 0x66, 0xaa, 0x86, 0x4a, 0x3, 0xcf, 0x91, 0x5d, 0x14, 0xd8, 0xa8, 0x64, 0x2d, 0xe1, 0xbf, 0x73, 0x3a, 0xf6, 0x62, 0xae, 0xe7, 0x2b, 0x75, 0xb9, 0xf0, 0x3c, 0x4c, 0x80, 0xc9, 0x5, 0x5b, 0x97, 0xde, 0x12, 0x3e, 0xf2, 0xbb, 0x77, 0x29, 0xe5, 0xac, 0x60, 0x10, 0xdc, 0x95, 0x59, 0x7, 0xcb, 0x82, 0x4e, 0xb7, 0x7b, 0x32, 0xfe, 0xa0, 0x6c, 0x25, 0xe9, 0x99, 0x55, 0x1c, 0xd0, 0x8e, 0x42, 0xb, 0xc7, 0xeb, 0x27, 0x6e, 0xa2, 0xfc, 0x30, 0x79, 0xb5, 0xc5, 0x9, 0x40, 0x8c, 0xd2, 0x1e, 0x57, 0x9b, 0xf, 0xc3, 0x8a, 0x46, 0x18, 0xd4, 0x9d, 0x51, 0x21, 0xed, 0xa4, 0x68, 0x36, 0xfa, 0xb3, 0x7f, 0x53, 0x9f, 0xd6, 0x1a, 0x44, 0x88, 0xc1, 0xd, 0x7d, 0xb1, 0xf8, 0x34, 0x6a, 0xa6, 0xef, 0x23}, - {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f, 0x4c, 0x81, 0xcb, 0x6, 0x5f, 0x92, 0xd8, 0x15, 0x6a, 0xa7, 0xed, 0x20, 0x79, 0xb4, 0xfe, 0x33, 0x98, 0x55, 0x1f, 0xd2, 0x8b, 0x46, 0xc, 0xc1, 0xbe, 0x73, 0x39, 0xf4, 0xad, 0x60, 0x2a, 0xe7, 0xd4, 0x19, 0x53, 0x9e, 0xc7, 0xa, 0x40, 0x8d, 0xf2, 0x3f, 0x75, 0xb8, 0xe1, 0x2c, 0x66, 0xab, 0x2d, 0xe0, 0xaa, 0x67, 0x3e, 0xf3, 0xb9, 0x74, 0xb, 0xc6, 0x8c, 0x41, 0x18, 0xd5, 0x9f, 0x52, 0x61, 0xac, 0xe6, 0x2b, 0x72, 0xbf, 0xf5, 0x38, 0x47, 0x8a, 0xc0, 0xd, 0x54, 0x99, 0xd3, 0x1e, 0xb5, 0x78, 0x32, 0xff, 0xa6, 0x6b, 0x21, 0xec, 0x93, 0x5e, 0x14, 0xd9, 0x80, 0x4d, 0x7, 0xca, 0xf9, 0x34, 0x7e, 0xb3, 0xea, 0x27, 0x6d, 0xa0, 0xdf, 0x12, 0x58, 0x95, 0xcc, 0x1, 0x4b, 0x86, 0x5a, 0x97, 0xdd, 0x10, 0x49, 0x84, 0xce, 0x3, 0x7c, 0xb1, 0xfb, 0x36, 0x6f, 0xa2, 0xe8, 0x25, 0x16, 0xdb, 0x91, 0x5c, 0x5, 0xc8, 0x82, 0x4f, 0x30, 0xfd, 0xb7, 0x7a, 0x23, 0xee, 0xa4, 0x69, 0xc2, 0xf, 0x45, 0x88, 0xd1, 0x1c, 0x56, 0x9b, 0xe4, 0x29, 0x63, 0xae, 0xf7, 0x3a, 0x70, 0xbd, 0x8e, 0x43, 0x9, 0xc4, 0x9d, 0x50, 0x1a, 0xd7, 0xa8, 0x65, 0x2f, 0xe2, 0xbb, 0x76, 0x3c, 0xf1, 0x77, 0xba, 0xf0, 0x3d, 0x64, 0xa9, 0xe3, 0x2e, 0x51, 0x9c, 0xd6, 0x1b, 0x42, 0x8f, 0xc5, 0x8, 0x3b, 0xf6, 0xbc, 0x71, 0x28, 0xe5, 0xaf, 0x62, 0x1d, 0xd0, 0x9a, 0x57, 0xe, 0xc3, 0x89, 0x44, 0xef, 0x22, 0x68, 0xa5, 0xfc, 0x31, 0x7b, 0xb6, 0xc9, 0x4, 0x4e, 0x83, 0xda, 0x17, 0x5d, 0x90, 0xa3, 0x6e, 0x24, 0xe9, 0xb0, 0x7d, 0x37, 0xfa, 0x85, 0x48, 0x2, 0xcf, 0x96, 0x5b, 0x11, 0xdc}, - {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e, 0x7c, 0xb2, 0xfd, 0x33, 0x63, 0xad, 0xe2, 0x2c, 0x42, 0x8c, 0xc3, 0xd, 0x5d, 0x93, 0xdc, 0x12, 0xf8, 0x36, 0x79, 0xb7, 0xe7, 0x29, 0x66, 0xa8, 0xc6, 0x8, 0x47, 0x89, 0xd9, 0x17, 0x58, 0x96, 0x84, 0x4a, 0x5, 0xcb, 0x9b, 0x55, 0x1a, 0xd4, 0xba, 0x74, 0x3b, 0xf5, 0xa5, 0x6b, 0x24, 0xea, 0xed, 0x23, 0x6c, 0xa2, 0xf2, 0x3c, 0x73, 0xbd, 0xd3, 0x1d, 0x52, 0x9c, 0xcc, 0x2, 0x4d, 0x83, 0x91, 0x5f, 0x10, 0xde, 0x8e, 0x40, 0xf, 0xc1, 0xaf, 0x61, 0x2e, 0xe0, 0xb0, 0x7e, 0x31, 0xff, 0x15, 0xdb, 0x94, 0x5a, 0xa, 0xc4, 0x8b, 0x45, 0x2b, 0xe5, 0xaa, 0x64, 0x34, 0xfa, 0xb5, 0x7b, 0x69, 0xa7, 0xe8, 0x26, 0x76, 0xb8, 0xf7, 0x39, 0x57, 0x99, 0xd6, 0x18, 0x48, 0x86, 0xc9, 0x7, 0xc7, 0x9, 0x46, 0x88, 0xd8, 0x16, 0x59, 0x97, 0xf9, 0x37, 0x78, 0xb6, 0xe6, 0x28, 0x67, 0xa9, 0xbb, 0x75, 0x3a, 0xf4, 0xa4, 0x6a, 0x25, 0xeb, 0x85, 0x4b, 0x4, 0xca, 0x9a, 0x54, 0x1b, 0xd5, 0x3f, 0xf1, 0xbe, 0x70, 0x20, 0xee, 0xa1, 0x6f, 0x1, 0xcf, 0x80, 0x4e, 0x1e, 0xd0, 0x9f, 0x51, 0x43, 0x8d, 0xc2, 0xc, 0x5c, 0x92, 0xdd, 0x13, 0x7d, 0xb3, 0xfc, 0x32, 0x62, 0xac, 0xe3, 0x2d, 0x2a, 0xe4, 0xab, 0x65, 0x35, 0xfb, 0xb4, 0x7a, 0x14, 0xda, 0x95, 0x5b, 0xb, 0xc5, 0x8a, 0x44, 0x56, 0x98, 0xd7, 0x19, 0x49, 0x87, 0xc8, 0x6, 0x68, 0xa6, 0xe9, 0x27, 0x77, 0xb9, 0xf6, 0x38, 0xd2, 0x1c, 0x53, 0x9d, 0xcd, 0x3, 0x4c, 0x82, 0xec, 0x22, 0x6d, 0xa3, 0xf3, 0x3d, 0x72, 0xbc, 0xae, 0x60, 0x2f, 0xe1, 0xb1, 0x7f, 0x30, 0xfe, 0x90, 0x5e, 0x11, 0xdf, 0x8f, 0x41, 0xe, 0xc0}, - {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61, 0x6c, 0xa3, 0xef, 0x20, 0x77, 0xb8, 0xf4, 0x3b, 0x5a, 0x95, 0xd9, 0x16, 0x41, 0x8e, 0xc2, 0xd, 0xd8, 0x17, 0x5b, 0x94, 0xc3, 0xc, 0x40, 0x8f, 0xee, 0x21, 0x6d, 0xa2, 0xf5, 0x3a, 0x76, 0xb9, 0xb4, 0x7b, 0x37, 0xf8, 0xaf, 0x60, 0x2c, 0xe3, 0x82, 0x4d, 0x1, 0xce, 0x99, 0x56, 0x1a, 0xd5, 0xad, 0x62, 0x2e, 0xe1, 0xb6, 0x79, 0x35, 0xfa, 0x9b, 0x54, 0x18, 0xd7, 0x80, 0x4f, 0x3, 0xcc, 0xc1, 0xe, 0x42, 0x8d, 0xda, 0x15, 0x59, 0x96, 0xf7, 0x38, 0x74, 0xbb, 0xec, 0x23, 0x6f, 0xa0, 0x75, 0xba, 0xf6, 0x39, 0x6e, 0xa1, 0xed, 0x22, 0x43, 0x8c, 0xc0, 0xf, 0x58, 0x97, 0xdb, 0x14, 0x19, 0xd6, 0x9a, 0x55, 0x2, 0xcd, 0x81, 0x4e, 0x2f, 0xe0, 0xac, 0x63, 0x34, 0xfb, 0xb7, 0x78, 0x47, 0x88, 0xc4, 0xb, 0x5c, 0x93, 0xdf, 0x10, 0x71, 0xbe, 0xf2, 0x3d, 0x6a, 0xa5, 0xe9, 0x26, 0x2b, 0xe4, 0xa8, 0x67, 0x30, 0xff, 0xb3, 0x7c, 0x1d, 0xd2, 0x9e, 0x51, 0x6, 0xc9, 0x85, 0x4a, 0x9f, 0x50, 0x1c, 0xd3, 0x84, 0x4b, 0x7, 0xc8, 0xa9, 0x66, 0x2a, 0xe5, 0xb2, 0x7d, 0x31, 0xfe, 0xf3, 0x3c, 0x70, 0xbf, 0xe8, 0x27, 0x6b, 0xa4, 0xc5, 0xa, 0x46, 0x89, 0xde, 0x11, 0x5d, 0x92, 0xea, 0x25, 0x69, 0xa6, 0xf1, 0x3e, 0x72, 0xbd, 0xdc, 0x13, 0x5f, 0x90, 0xc7, 0x8, 0x44, 0x8b, 0x86, 0x49, 0x5, 0xca, 0x9d, 0x52, 0x1e, 0xd1, 0xb0, 0x7f, 0x33, 0xfc, 0xab, 0x64, 0x28, 0xe7, 0x32, 0xfd, 0xb1, 0x7e, 0x29, 0xe6, 0xaa, 0x65, 0x4, 0xcb, 0x87, 0x48, 0x1f, 0xd0, 0x9c, 0x53, 0x5e, 0x91, 0xdd, 0x12, 0x45, 0x8a, 0xc6, 0x9, 0x68, 0xa7, 0xeb, 0x24, 0x73, 0xbc, 0xf0, 0x3f}, - {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4, 0x81, 0x51, 0x3c, 0xec, 0xe6, 0x36, 0x5b, 0x8b, 0x4f, 0x9f, 0xf2, 0x22, 0x28, 0xf8, 0x95, 0x45, 0x1f, 0xcf, 0xa2, 0x72, 0x78, 0xa8, 0xc5, 0x15, 0xd1, 0x1, 0x6c, 0xbc, 0xb6, 0x66, 0xb, 0xdb, 0x9e, 0x4e, 0x23, 0xf3, 0xf9, 0x29, 0x44, 0x94, 0x50, 0x80, 0xed, 0x3d, 0x37, 0xe7, 0x8a, 0x5a, 0x3e, 0xee, 0x83, 0x53, 0x59, 0x89, 0xe4, 0x34, 0xf0, 0x20, 0x4d, 0x9d, 0x97, 0x47, 0x2a, 0xfa, 0xbf, 0x6f, 0x2, 0xd2, 0xd8, 0x8, 0x65, 0xb5, 0x71, 0xa1, 0xcc, 0x1c, 0x16, 0xc6, 0xab, 0x7b, 0x21, 0xf1, 0x9c, 0x4c, 0x46, 0x96, 0xfb, 0x2b, 0xef, 0x3f, 0x52, 0x82, 0x88, 0x58, 0x35, 0xe5, 0xa0, 0x70, 0x1d, 0xcd, 0xc7, 0x17, 0x7a, 0xaa, 0x6e, 0xbe, 0xd3, 0x3, 0x9, 0xd9, 0xb4, 0x64, 0x7c, 0xac, 0xc1, 0x11, 0x1b, 0xcb, 0xa6, 0x76, 0xb2, 0x62, 0xf, 0xdf, 0xd5, 0x5, 0x68, 0xb8, 0xfd, 0x2d, 0x40, 0x90, 0x9a, 0x4a, 0x27, 0xf7, 0x33, 0xe3, 0x8e, 0x5e, 0x54, 0x84, 0xe9, 0x39, 0x63, 0xb3, 0xde, 0xe, 0x4, 0xd4, 0xb9, 0x69, 0xad, 0x7d, 0x10, 0xc0, 0xca, 0x1a, 0x77, 0xa7, 0xe2, 0x32, 0x5f, 0x8f, 0x85, 0x55, 0x38, 0xe8, 0x2c, 0xfc, 0x91, 0x41, 0x4b, 0x9b, 0xf6, 0x26, 0x42, 0x92, 0xff, 0x2f, 0x25, 0xf5, 0x98, 0x48, 0x8c, 0x5c, 0x31, 0xe1, 0xeb, 0x3b, 0x56, 0x86, 0xc3, 0x13, 0x7e, 0xae, 0xa4, 0x74, 0x19, 0xc9, 0xd, 0xdd, 0xb0, 0x60, 0x6a, 0xba, 0xd7, 0x7, 0x5d, 0x8d, 0xe0, 0x30, 0x3a, 0xea, 0x87, 0x57, 0x93, 0x43, 0x2e, 0xfe, 0xf4, 0x24, 0x49, 0x99, 0xdc, 0xc, 0x61, 0xb1, 0xbb, 0x6b, 0x6, 0xd6, 0x12, 0xc2, 0xaf, 0x7f, 0x75, 0xa5, 0xc8, 0x18}, - {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb, 0x91, 0x40, 0x2e, 0xff, 0xf2, 0x23, 0x4d, 0x9c, 0x57, 0x86, 0xe8, 0x39, 0x34, 0xe5, 0x8b, 0x5a, 0x3f, 0xee, 0x80, 0x51, 0x5c, 0x8d, 0xe3, 0x32, 0xf9, 0x28, 0x46, 0x97, 0x9a, 0x4b, 0x25, 0xf4, 0xae, 0x7f, 0x11, 0xc0, 0xcd, 0x1c, 0x72, 0xa3, 0x68, 0xb9, 0xd7, 0x6, 0xb, 0xda, 0xb4, 0x65, 0x7e, 0xaf, 0xc1, 0x10, 0x1d, 0xcc, 0xa2, 0x73, 0xb8, 0x69, 0x7, 0xd6, 0xdb, 0xa, 0x64, 0xb5, 0xef, 0x3e, 0x50, 0x81, 0x8c, 0x5d, 0x33, 0xe2, 0x29, 0xf8, 0x96, 0x47, 0x4a, 0x9b, 0xf5, 0x24, 0x41, 0x90, 0xfe, 0x2f, 0x22, 0xf3, 0x9d, 0x4c, 0x87, 0x56, 0x38, 0xe9, 0xe4, 0x35, 0x5b, 0x8a, 0xd0, 0x1, 0x6f, 0xbe, 0xb3, 0x62, 0xc, 0xdd, 0x16, 0xc7, 0xa9, 0x78, 0x75, 0xa4, 0xca, 0x1b, 0xfc, 0x2d, 0x43, 0x92, 0x9f, 0x4e, 0x20, 0xf1, 0x3a, 0xeb, 0x85, 0x54, 0x59, 0x88, 0xe6, 0x37, 0x6d, 0xbc, 0xd2, 0x3, 0xe, 0xdf, 0xb1, 0x60, 0xab, 0x7a, 0x14, 0xc5, 0xc8, 0x19, 0x77, 0xa6, 0xc3, 0x12, 0x7c, 0xad, 0xa0, 0x71, 0x1f, 0xce, 0x5, 0xd4, 0xba, 0x6b, 0x66, 0xb7, 0xd9, 0x8, 0x52, 0x83, 0xed, 0x3c, 0x31, 0xe0, 0x8e, 0x5f, 0x94, 0x45, 0x2b, 0xfa, 0xf7, 0x26, 0x48, 0x99, 0x82, 0x53, 0x3d, 0xec, 0xe1, 0x30, 0x5e, 0x8f, 0x44, 0x95, 0xfb, 0x2a, 0x27, 0xf6, 0x98, 0x49, 0x13, 0xc2, 0xac, 0x7d, 0x70, 0xa1, 0xcf, 0x1e, 0xd5, 0x4, 0x6a, 0xbb, 0xb6, 0x67, 0x9, 0xd8, 0xbd, 0x6c, 0x2, 0xd3, 0xde, 0xf, 0x61, 0xb0, 0x7b, 0xaa, 0xc4, 0x15, 0x18, 0xc9, 0xa7, 0x76, 0x2c, 0xfd, 0x93, 0x42, 0x4f, 0x9e, 0xf0, 0x21, 0xea, 0x3b, 0x55, 0x84, 0x89, 0x58, 0x36, 0xe7}, - {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda, 0xa1, 0x73, 0x18, 0xca, 0xce, 0x1c, 0x77, 0xa5, 0x7f, 0xad, 0xc6, 0x14, 0x10, 0xc2, 0xa9, 0x7b, 0x5f, 0x8d, 0xe6, 0x34, 0x30, 0xe2, 0x89, 0x5b, 0x81, 0x53, 0x38, 0xea, 0xee, 0x3c, 0x57, 0x85, 0xfe, 0x2c, 0x47, 0x95, 0x91, 0x43, 0x28, 0xfa, 0x20, 0xf2, 0x99, 0x4b, 0x4f, 0x9d, 0xf6, 0x24, 0xbe, 0x6c, 0x7, 0xd5, 0xd1, 0x3, 0x68, 0xba, 0x60, 0xb2, 0xd9, 0xb, 0xf, 0xdd, 0xb6, 0x64, 0x1f, 0xcd, 0xa6, 0x74, 0x70, 0xa2, 0xc9, 0x1b, 0xc1, 0x13, 0x78, 0xaa, 0xae, 0x7c, 0x17, 0xc5, 0xe1, 0x33, 0x58, 0x8a, 0x8e, 0x5c, 0x37, 0xe5, 0x3f, 0xed, 0x86, 0x54, 0x50, 0x82, 0xe9, 0x3b, 0x40, 0x92, 0xf9, 0x2b, 0x2f, 0xfd, 0x96, 0x44, 0x9e, 0x4c, 0x27, 0xf5, 0xf1, 0x23, 0x48, 0x9a, 0x61, 0xb3, 0xd8, 0xa, 0xe, 0xdc, 0xb7, 0x65, 0xbf, 0x6d, 0x6, 0xd4, 0xd0, 0x2, 0x69, 0xbb, 0xc0, 0x12, 0x79, 0xab, 0xaf, 0x7d, 0x16, 0xc4, 0x1e, 0xcc, 0xa7, 0x75, 0x71, 0xa3, 0xc8, 0x1a, 0x3e, 0xec, 0x87, 0x55, 0x51, 0x83, 0xe8, 0x3a, 0xe0, 0x32, 0x59, 0x8b, 0x8f, 0x5d, 0x36, 0xe4, 0x9f, 0x4d, 0x26, 0xf4, 0xf0, 0x22, 0x49, 0x9b, 0x41, 0x93, 0xf8, 0x2a, 0x2e, 0xfc, 0x97, 0x45, 0xdf, 0xd, 0x66, 0xb4, 0xb0, 0x62, 0x9, 0xdb, 0x1, 0xd3, 0xb8, 0x6a, 0x6e, 0xbc, 0xd7, 0x5, 0x7e, 0xac, 0xc7, 0x15, 0x11, 0xc3, 0xa8, 0x7a, 0xa0, 0x72, 0x19, 0xcb, 0xcf, 0x1d, 0x76, 0xa4, 0x80, 0x52, 0x39, 0xeb, 0xef, 0x3d, 0x56, 0x84, 0x5e, 0x8c, 0xe7, 0x35, 0x31, 0xe3, 0x88, 0x5a, 0x21, 0xf3, 0x98, 0x4a, 0x4e, 0x9c, 0xf7, 0x25, 0xff, 0x2d, 0x46, 0x94, 0x90, 0x42, 0x29, 0xfb}, - {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5, 0xb1, 0x62, 0xa, 0xd9, 0xda, 0x9, 0x61, 0xb2, 0x67, 0xb4, 0xdc, 0xf, 0xc, 0xdf, 0xb7, 0x64, 0x7f, 0xac, 0xc4, 0x17, 0x14, 0xc7, 0xaf, 0x7c, 0xa9, 0x7a, 0x12, 0xc1, 0xc2, 0x11, 0x79, 0xaa, 0xce, 0x1d, 0x75, 0xa6, 0xa5, 0x76, 0x1e, 0xcd, 0x18, 0xcb, 0xa3, 0x70, 0x73, 0xa0, 0xc8, 0x1b, 0xfe, 0x2d, 0x45, 0x96, 0x95, 0x46, 0x2e, 0xfd, 0x28, 0xfb, 0x93, 0x40, 0x43, 0x90, 0xf8, 0x2b, 0x4f, 0x9c, 0xf4, 0x27, 0x24, 0xf7, 0x9f, 0x4c, 0x99, 0x4a, 0x22, 0xf1, 0xf2, 0x21, 0x49, 0x9a, 0x81, 0x52, 0x3a, 0xe9, 0xea, 0x39, 0x51, 0x82, 0x57, 0x84, 0xec, 0x3f, 0x3c, 0xef, 0x87, 0x54, 0x30, 0xe3, 0x8b, 0x58, 0x5b, 0x88, 0xe0, 0x33, 0xe6, 0x35, 0x5d, 0x8e, 0x8d, 0x5e, 0x36, 0xe5, 0xe1, 0x32, 0x5a, 0x89, 0x8a, 0x59, 0x31, 0xe2, 0x37, 0xe4, 0x8c, 0x5f, 0x5c, 0x8f, 0xe7, 0x34, 0x50, 0x83, 0xeb, 0x38, 0x3b, 0xe8, 0x80, 0x53, 0x86, 0x55, 0x3d, 0xee, 0xed, 0x3e, 0x56, 0x85, 0x9e, 0x4d, 0x25, 0xf6, 0xf5, 0x26, 0x4e, 0x9d, 0x48, 0x9b, 0xf3, 0x20, 0x23, 0xf0, 0x98, 0x4b, 0x2f, 0xfc, 0x94, 0x47, 0x44, 0x97, 0xff, 0x2c, 0xf9, 0x2a, 0x42, 0x91, 0x92, 0x41, 0x29, 0xfa, 0x1f, 0xcc, 0xa4, 0x77, 0x74, 0xa7, 0xcf, 0x1c, 0xc9, 0x1a, 0x72, 0xa1, 0xa2, 0x71, 0x19, 0xca, 0xae, 0x7d, 0x15, 0xc6, 0xc5, 0x16, 0x7e, 0xad, 0x78, 0xab, 0xc3, 0x10, 0x13, 0xc0, 0xa8, 0x7b, 0x60, 0xb3, 0xdb, 0x8, 0xb, 0xd8, 0xb0, 0x63, 0xb6, 0x65, 0xd, 0xde, 0xdd, 0xe, 0x66, 0xb5, 0xd1, 0x2, 0x6a, 0xb9, 0xba, 0x69, 0x1, 0xd2, 0x7, 0xd4, 0xbc, 0x6f, 0x6c, 0xbf, 0xd7, 0x4}, - {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8, 0xc1, 0x15, 0x74, 0xa0, 0xb6, 0x62, 0x3, 0xd7, 0x2f, 0xfb, 0x9a, 0x4e, 0x58, 0x8c, 0xed, 0x39, 0x9f, 0x4b, 0x2a, 0xfe, 0xe8, 0x3c, 0x5d, 0x89, 0x71, 0xa5, 0xc4, 0x10, 0x6, 0xd2, 0xb3, 0x67, 0x5e, 0x8a, 0xeb, 0x3f, 0x29, 0xfd, 0x9c, 0x48, 0xb0, 0x64, 0x5, 0xd1, 0xc7, 0x13, 0x72, 0xa6, 0x23, 0xf7, 0x96, 0x42, 0x54, 0x80, 0xe1, 0x35, 0xcd, 0x19, 0x78, 0xac, 0xba, 0x6e, 0xf, 0xdb, 0xe2, 0x36, 0x57, 0x83, 0x95, 0x41, 0x20, 0xf4, 0xc, 0xd8, 0xb9, 0x6d, 0x7b, 0xaf, 0xce, 0x1a, 0xbc, 0x68, 0x9, 0xdd, 0xcb, 0x1f, 0x7e, 0xaa, 0x52, 0x86, 0xe7, 0x33, 0x25, 0xf1, 0x90, 0x44, 0x7d, 0xa9, 0xc8, 0x1c, 0xa, 0xde, 0xbf, 0x6b, 0x93, 0x47, 0x26, 0xf2, 0xe4, 0x30, 0x51, 0x85, 0x46, 0x92, 0xf3, 0x27, 0x31, 0xe5, 0x84, 0x50, 0xa8, 0x7c, 0x1d, 0xc9, 0xdf, 0xb, 0x6a, 0xbe, 0x87, 0x53, 0x32, 0xe6, 0xf0, 0x24, 0x45, 0x91, 0x69, 0xbd, 0xdc, 0x8, 0x1e, 0xca, 0xab, 0x7f, 0xd9, 0xd, 0x6c, 0xb8, 0xae, 0x7a, 0x1b, 0xcf, 0x37, 0xe3, 0x82, 0x56, 0x40, 0x94, 0xf5, 0x21, 0x18, 0xcc, 0xad, 0x79, 0x6f, 0xbb, 0xda, 0xe, 0xf6, 0x22, 0x43, 0x97, 0x81, 0x55, 0x34, 0xe0, 0x65, 0xb1, 0xd0, 0x4, 0x12, 0xc6, 0xa7, 0x73, 0x8b, 0x5f, 0x3e, 0xea, 0xfc, 0x28, 0x49, 0x9d, 0xa4, 0x70, 0x11, 0xc5, 0xd3, 0x7, 0x66, 0xb2, 0x4a, 0x9e, 0xff, 0x2b, 0x3d, 0xe9, 0x88, 0x5c, 0xfa, 0x2e, 0x4f, 0x9b, 0x8d, 0x59, 0x38, 0xec, 0x14, 0xc0, 0xa1, 0x75, 0x63, 0xb7, 0xd6, 0x2, 0x3b, 0xef, 0x8e, 0x5a, 0x4c, 0x98, 0xf9, 0x2d, 0xd5, 0x1, 0x60, 0xb4, 0xa2, 0x76, 0x17, 0xc3}, - {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7, 0xd1, 0x4, 0x66, 0xb3, 0xa2, 0x77, 0x15, 0xc0, 0x37, 0xe2, 0x80, 0x55, 0x44, 0x91, 0xf3, 0x26, 0xbf, 0x6a, 0x8, 0xdd, 0xcc, 0x19, 0x7b, 0xae, 0x59, 0x8c, 0xee, 0x3b, 0x2a, 0xff, 0x9d, 0x48, 0x6e, 0xbb, 0xd9, 0xc, 0x1d, 0xc8, 0xaa, 0x7f, 0x88, 0x5d, 0x3f, 0xea, 0xfb, 0x2e, 0x4c, 0x99, 0x63, 0xb6, 0xd4, 0x1, 0x10, 0xc5, 0xa7, 0x72, 0x85, 0x50, 0x32, 0xe7, 0xf6, 0x23, 0x41, 0x94, 0xb2, 0x67, 0x5, 0xd0, 0xc1, 0x14, 0x76, 0xa3, 0x54, 0x81, 0xe3, 0x36, 0x27, 0xf2, 0x90, 0x45, 0xdc, 0x9, 0x6b, 0xbe, 0xaf, 0x7a, 0x18, 0xcd, 0x3a, 0xef, 0x8d, 0x58, 0x49, 0x9c, 0xfe, 0x2b, 0xd, 0xd8, 0xba, 0x6f, 0x7e, 0xab, 0xc9, 0x1c, 0xeb, 0x3e, 0x5c, 0x89, 0x98, 0x4d, 0x2f, 0xfa, 0xc6, 0x13, 0x71, 0xa4, 0xb5, 0x60, 0x2, 0xd7, 0x20, 0xf5, 0x97, 0x42, 0x53, 0x86, 0xe4, 0x31, 0x17, 0xc2, 0xa0, 0x75, 0x64, 0xb1, 0xd3, 0x6, 0xf1, 0x24, 0x46, 0x93, 0x82, 0x57, 0x35, 0xe0, 0x79, 0xac, 0xce, 0x1b, 0xa, 0xdf, 0xbd, 0x68, 0x9f, 0x4a, 0x28, 0xfd, 0xec, 0x39, 0x5b, 0x8e, 0xa8, 0x7d, 0x1f, 0xca, 0xdb, 0xe, 0x6c, 0xb9, 0x4e, 0x9b, 0xf9, 0x2c, 0x3d, 0xe8, 0x8a, 0x5f, 0xa5, 0x70, 0x12, 0xc7, 0xd6, 0x3, 0x61, 0xb4, 0x43, 0x96, 0xf4, 0x21, 0x30, 0xe5, 0x87, 0x52, 0x74, 0xa1, 0xc3, 0x16, 0x7, 0xd2, 0xb0, 0x65, 0x92, 0x47, 0x25, 0xf0, 0xe1, 0x34, 0x56, 0x83, 0x1a, 0xcf, 0xad, 0x78, 0x69, 0xbc, 0xde, 0xb, 0xfc, 0x29, 0x4b, 0x9e, 0x8f, 0x5a, 0x38, 0xed, 0xcb, 0x1e, 0x7c, 0xa9, 0xb8, 0x6d, 0xf, 0xda, 0x2d, 0xf8, 0x9a, 0x4f, 0x5e, 0x8b, 0xe9, 0x3c}, - {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6, 0xe1, 0x37, 0x50, 0x86, 0x9e, 0x48, 0x2f, 0xf9, 0x1f, 0xc9, 0xae, 0x78, 0x60, 0xb6, 0xd1, 0x7, 0xdf, 0x9, 0x6e, 0xb8, 0xa0, 0x76, 0x11, 0xc7, 0x21, 0xf7, 0x90, 0x46, 0x5e, 0x88, 0xef, 0x39, 0x3e, 0xe8, 0x8f, 0x59, 0x41, 0x97, 0xf0, 0x26, 0xc0, 0x16, 0x71, 0xa7, 0xbf, 0x69, 0xe, 0xd8, 0xa3, 0x75, 0x12, 0xc4, 0xdc, 0xa, 0x6d, 0xbb, 0x5d, 0x8b, 0xec, 0x3a, 0x22, 0xf4, 0x93, 0x45, 0x42, 0x94, 0xf3, 0x25, 0x3d, 0xeb, 0x8c, 0x5a, 0xbc, 0x6a, 0xd, 0xdb, 0xc3, 0x15, 0x72, 0xa4, 0x7c, 0xaa, 0xcd, 0x1b, 0x3, 0xd5, 0xb2, 0x64, 0x82, 0x54, 0x33, 0xe5, 0xfd, 0x2b, 0x4c, 0x9a, 0x9d, 0x4b, 0x2c, 0xfa, 0xe2, 0x34, 0x53, 0x85, 0x63, 0xb5, 0xd2, 0x4, 0x1c, 0xca, 0xad, 0x7b, 0x5b, 0x8d, 0xea, 0x3c, 0x24, 0xf2, 0x95, 0x43, 0xa5, 0x73, 0x14, 0xc2, 0xda, 0xc, 0x6b, 0xbd, 0xba, 0x6c, 0xb, 0xdd, 0xc5, 0x13, 0x74, 0xa2, 0x44, 0x92, 0xf5, 0x23, 0x3b, 0xed, 0x8a, 0x5c, 0x84, 0x52, 0x35, 0xe3, 0xfb, 0x2d, 0x4a, 0x9c, 0x7a, 0xac, 0xcb, 0x1d, 0x5, 0xd3, 0xb4, 0x62, 0x65, 0xb3, 0xd4, 0x2, 0x1a, 0xcc, 0xab, 0x7d, 0x9b, 0x4d, 0x2a, 0xfc, 0xe4, 0x32, 0x55, 0x83, 0xf8, 0x2e, 0x49, 0x9f, 0x87, 0x51, 0x36, 0xe0, 0x6, 0xd0, 0xb7, 0x61, 0x79, 0xaf, 0xc8, 0x1e, 0x19, 0xcf, 0xa8, 0x7e, 0x66, 0xb0, 0xd7, 0x1, 0xe7, 0x31, 0x56, 0x80, 0x98, 0x4e, 0x29, 0xff, 0x27, 0xf1, 0x96, 0x40, 0x58, 0x8e, 0xe9, 0x3f, 0xd9, 0xf, 0x68, 0xbe, 0xa6, 0x70, 0x17, 0xc1, 0xc6, 0x10, 0x77, 0xa1, 0xb9, 0x6f, 0x8, 0xde, 0x38, 0xee, 0x89, 0x5f, 0x47, 0x91, 0xf6, 0x20}, - {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9, 0xf1, 0x26, 0x42, 0x95, 0x8a, 0x5d, 0x39, 0xee, 0x7, 0xd0, 0xb4, 0x63, 0x7c, 0xab, 0xcf, 0x18, 0xff, 0x28, 0x4c, 0x9b, 0x84, 0x53, 0x37, 0xe0, 0x9, 0xde, 0xba, 0x6d, 0x72, 0xa5, 0xc1, 0x16, 0xe, 0xd9, 0xbd, 0x6a, 0x75, 0xa2, 0xc6, 0x11, 0xf8, 0x2f, 0x4b, 0x9c, 0x83, 0x54, 0x30, 0xe7, 0xe3, 0x34, 0x50, 0x87, 0x98, 0x4f, 0x2b, 0xfc, 0x15, 0xc2, 0xa6, 0x71, 0x6e, 0xb9, 0xdd, 0xa, 0x12, 0xc5, 0xa1, 0x76, 0x69, 0xbe, 0xda, 0xd, 0xe4, 0x33, 0x57, 0x80, 0x9f, 0x48, 0x2c, 0xfb, 0x1c, 0xcb, 0xaf, 0x78, 0x67, 0xb0, 0xd4, 0x3, 0xea, 0x3d, 0x59, 0x8e, 0x91, 0x46, 0x22, 0xf5, 0xed, 0x3a, 0x5e, 0x89, 0x96, 0x41, 0x25, 0xf2, 0x1b, 0xcc, 0xa8, 0x7f, 0x60, 0xb7, 0xd3, 0x4, 0xdb, 0xc, 0x68, 0xbf, 0xa0, 0x77, 0x13, 0xc4, 0x2d, 0xfa, 0x9e, 0x49, 0x56, 0x81, 0xe5, 0x32, 0x2a, 0xfd, 0x99, 0x4e, 0x51, 0x86, 0xe2, 0x35, 0xdc, 0xb, 0x6f, 0xb8, 0xa7, 0x70, 0x14, 0xc3, 0x24, 0xf3, 0x97, 0x40, 0x5f, 0x88, 0xec, 0x3b, 0xd2, 0x5, 0x61, 0xb6, 0xa9, 0x7e, 0x1a, 0xcd, 0xd5, 0x2, 0x66, 0xb1, 0xae, 0x79, 0x1d, 0xca, 0x23, 0xf4, 0x90, 0x47, 0x58, 0x8f, 0xeb, 0x3c, 0x38, 0xef, 0x8b, 0x5c, 0x43, 0x94, 0xf0, 0x27, 0xce, 0x19, 0x7d, 0xaa, 0xb5, 0x62, 0x6, 0xd1, 0xc9, 0x1e, 0x7a, 0xad, 0xb2, 0x65, 0x1, 0xd6, 0x3f, 0xe8, 0x8c, 0x5b, 0x44, 0x93, 0xf7, 0x20, 0xc7, 0x10, 0x74, 0xa3, 0xbc, 0x6b, 0xf, 0xd8, 0x31, 0xe6, 0x82, 0x55, 0x4a, 0x9d, 0xf9, 0x2e, 0x36, 0xe1, 0x85, 0x52, 0x4d, 0x9a, 0xfe, 0x29, 0xc0, 0x17, 0x73, 0xa4, 0xbb, 0x6c, 0x8, 0xdf}, - {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc, 0x1, 0xd9, 0xac, 0x74, 0x46, 0x9e, 0xeb, 0x33, 0x8f, 0x57, 0x22, 0xfa, 0xc8, 0x10, 0x65, 0xbd, 0x2, 0xda, 0xaf, 0x77, 0x45, 0x9d, 0xe8, 0x30, 0x8c, 0x54, 0x21, 0xf9, 0xcb, 0x13, 0x66, 0xbe, 0x3, 0xdb, 0xae, 0x76, 0x44, 0x9c, 0xe9, 0x31, 0x8d, 0x55, 0x20, 0xf8, 0xca, 0x12, 0x67, 0xbf, 0x4, 0xdc, 0xa9, 0x71, 0x43, 0x9b, 0xee, 0x36, 0x8a, 0x52, 0x27, 0xff, 0xcd, 0x15, 0x60, 0xb8, 0x5, 0xdd, 0xa8, 0x70, 0x42, 0x9a, 0xef, 0x37, 0x8b, 0x53, 0x26, 0xfe, 0xcc, 0x14, 0x61, 0xb9, 0x6, 0xde, 0xab, 0x73, 0x41, 0x99, 0xec, 0x34, 0x88, 0x50, 0x25, 0xfd, 0xcf, 0x17, 0x62, 0xba, 0x7, 0xdf, 0xaa, 0x72, 0x40, 0x98, 0xed, 0x35, 0x89, 0x51, 0x24, 0xfc, 0xce, 0x16, 0x63, 0xbb, 0x8, 0xd0, 0xa5, 0x7d, 0x4f, 0x97, 0xe2, 0x3a, 0x86, 0x5e, 0x2b, 0xf3, 0xc1, 0x19, 0x6c, 0xb4, 0x9, 0xd1, 0xa4, 0x7c, 0x4e, 0x96, 0xe3, 0x3b, 0x87, 0x5f, 0x2a, 0xf2, 0xc0, 0x18, 0x6d, 0xb5, 0xa, 0xd2, 0xa7, 0x7f, 0x4d, 0x95, 0xe0, 0x38, 0x84, 0x5c, 0x29, 0xf1, 0xc3, 0x1b, 0x6e, 0xb6, 0xb, 0xd3, 0xa6, 0x7e, 0x4c, 0x94, 0xe1, 0x39, 0x85, 0x5d, 0x28, 0xf0, 0xc2, 0x1a, 0x6f, 0xb7, 0xc, 0xd4, 0xa1, 0x79, 0x4b, 0x93, 0xe6, 0x3e, 0x82, 0x5a, 0x2f, 0xf7, 0xc5, 0x1d, 0x68, 0xb0, 0xd, 0xd5, 0xa0, 0x78, 0x4a, 0x92, 0xe7, 0x3f, 0x83, 0x5b, 0x2e, 0xf6, 0xc4, 0x1c, 0x69, 0xb1, 0xe, 0xd6, 0xa3, 0x7b, 0x49, 0x91, 0xe4, 0x3c, 0x80, 0x58, 0x2d, 0xf5, 0xc7, 0x1f, 0x6a, 0xb2, 0xf, 0xd7, 0xa2, 0x7a, 0x48, 0x90, 0xe5, 0x3d, 0x81, 0x59, 0x2c, 0xf4, 0xc6, 0x1e, 0x6b, 0xb3}, - {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3, 0x11, 0xc8, 0xbe, 0x67, 0x52, 0x8b, 0xfd, 0x24, 0x97, 0x4e, 0x38, 0xe1, 0xd4, 0xd, 0x7b, 0xa2, 0x22, 0xfb, 0x8d, 0x54, 0x61, 0xb8, 0xce, 0x17, 0xa4, 0x7d, 0xb, 0xd2, 0xe7, 0x3e, 0x48, 0x91, 0x33, 0xea, 0x9c, 0x45, 0x70, 0xa9, 0xdf, 0x6, 0xb5, 0x6c, 0x1a, 0xc3, 0xf6, 0x2f, 0x59, 0x80, 0x44, 0x9d, 0xeb, 0x32, 0x7, 0xde, 0xa8, 0x71, 0xc2, 0x1b, 0x6d, 0xb4, 0x81, 0x58, 0x2e, 0xf7, 0x55, 0x8c, 0xfa, 0x23, 0x16, 0xcf, 0xb9, 0x60, 0xd3, 0xa, 0x7c, 0xa5, 0x90, 0x49, 0x3f, 0xe6, 0x66, 0xbf, 0xc9, 0x10, 0x25, 0xfc, 0x8a, 0x53, 0xe0, 0x39, 0x4f, 0x96, 0xa3, 0x7a, 0xc, 0xd5, 0x77, 0xae, 0xd8, 0x1, 0x34, 0xed, 0x9b, 0x42, 0xf1, 0x28, 0x5e, 0x87, 0xb2, 0x6b, 0x1d, 0xc4, 0x88, 0x51, 0x27, 0xfe, 0xcb, 0x12, 0x64, 0xbd, 0xe, 0xd7, 0xa1, 0x78, 0x4d, 0x94, 0xe2, 0x3b, 0x99, 0x40, 0x36, 0xef, 0xda, 0x3, 0x75, 0xac, 0x1f, 0xc6, 0xb0, 0x69, 0x5c, 0x85, 0xf3, 0x2a, 0xaa, 0x73, 0x5, 0xdc, 0xe9, 0x30, 0x46, 0x9f, 0x2c, 0xf5, 0x83, 0x5a, 0x6f, 0xb6, 0xc0, 0x19, 0xbb, 0x62, 0x14, 0xcd, 0xf8, 0x21, 0x57, 0x8e, 0x3d, 0xe4, 0x92, 0x4b, 0x7e, 0xa7, 0xd1, 0x8, 0xcc, 0x15, 0x63, 0xba, 0x8f, 0x56, 0x20, 0xf9, 0x4a, 0x93, 0xe5, 0x3c, 0x9, 0xd0, 0xa6, 0x7f, 0xdd, 0x4, 0x72, 0xab, 0x9e, 0x47, 0x31, 0xe8, 0x5b, 0x82, 0xf4, 0x2d, 0x18, 0xc1, 0xb7, 0x6e, 0xee, 0x37, 0x41, 0x98, 0xad, 0x74, 0x2, 0xdb, 0x68, 0xb1, 0xc7, 0x1e, 0x2b, 0xf2, 0x84, 0x5d, 0xff, 0x26, 0x50, 0x89, 0xbc, 0x65, 0x13, 0xca, 0x79, 0xa0, 0xd6, 0xf, 0x3a, 0xe3, 0x95, 0x4c}, - {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2, 0x21, 0xfb, 0x88, 0x52, 0x6e, 0xb4, 0xc7, 0x1d, 0xbf, 0x65, 0x16, 0xcc, 0xf0, 0x2a, 0x59, 0x83, 0x42, 0x98, 0xeb, 0x31, 0xd, 0xd7, 0xa4, 0x7e, 0xdc, 0x6, 0x75, 0xaf, 0x93, 0x49, 0x3a, 0xe0, 0x63, 0xb9, 0xca, 0x10, 0x2c, 0xf6, 0x85, 0x5f, 0xfd, 0x27, 0x54, 0x8e, 0xb2, 0x68, 0x1b, 0xc1, 0x84, 0x5e, 0x2d, 0xf7, 0xcb, 0x11, 0x62, 0xb8, 0x1a, 0xc0, 0xb3, 0x69, 0x55, 0x8f, 0xfc, 0x26, 0xa5, 0x7f, 0xc, 0xd6, 0xea, 0x30, 0x43, 0x99, 0x3b, 0xe1, 0x92, 0x48, 0x74, 0xae, 0xdd, 0x7, 0xc6, 0x1c, 0x6f, 0xb5, 0x89, 0x53, 0x20, 0xfa, 0x58, 0x82, 0xf1, 0x2b, 0x17, 0xcd, 0xbe, 0x64, 0xe7, 0x3d, 0x4e, 0x94, 0xa8, 0x72, 0x1, 0xdb, 0x79, 0xa3, 0xd0, 0xa, 0x36, 0xec, 0x9f, 0x45, 0x15, 0xcf, 0xbc, 0x66, 0x5a, 0x80, 0xf3, 0x29, 0x8b, 0x51, 0x22, 0xf8, 0xc4, 0x1e, 0x6d, 0xb7, 0x34, 0xee, 0x9d, 0x47, 0x7b, 0xa1, 0xd2, 0x8, 0xaa, 0x70, 0x3, 0xd9, 0xe5, 0x3f, 0x4c, 0x96, 0x57, 0x8d, 0xfe, 0x24, 0x18, 0xc2, 0xb1, 0x6b, 0xc9, 0x13, 0x60, 0xba, 0x86, 0x5c, 0x2f, 0xf5, 0x76, 0xac, 0xdf, 0x5, 0x39, 0xe3, 0x90, 0x4a, 0xe8, 0x32, 0x41, 0x9b, 0xa7, 0x7d, 0xe, 0xd4, 0x91, 0x4b, 0x38, 0xe2, 0xde, 0x4, 0x77, 0xad, 0xf, 0xd5, 0xa6, 0x7c, 0x40, 0x9a, 0xe9, 0x33, 0xb0, 0x6a, 0x19, 0xc3, 0xff, 0x25, 0x56, 0x8c, 0x2e, 0xf4, 0x87, 0x5d, 0x61, 0xbb, 0xc8, 0x12, 0xd3, 0x9, 0x7a, 0xa0, 0x9c, 0x46, 0x35, 0xef, 0x4d, 0x97, 0xe4, 0x3e, 0x2, 0xd8, 0xab, 0x71, 0xf2, 0x28, 0x5b, 0x81, 0xbd, 0x67, 0x14, 0xce, 0x6c, 0xb6, 0xc5, 0x1f, 0x23, 0xf9, 0x8a, 0x50}, - {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad, 0x31, 0xea, 0x9a, 0x41, 0x7a, 0xa1, 0xd1, 0xa, 0xa7, 0x7c, 0xc, 0xd7, 0xec, 0x37, 0x47, 0x9c, 0x62, 0xb9, 0xc9, 0x12, 0x29, 0xf2, 0x82, 0x59, 0xf4, 0x2f, 0x5f, 0x84, 0xbf, 0x64, 0x14, 0xcf, 0x53, 0x88, 0xf8, 0x23, 0x18, 0xc3, 0xb3, 0x68, 0xc5, 0x1e, 0x6e, 0xb5, 0x8e, 0x55, 0x25, 0xfe, 0xc4, 0x1f, 0x6f, 0xb4, 0x8f, 0x54, 0x24, 0xff, 0x52, 0x89, 0xf9, 0x22, 0x19, 0xc2, 0xb2, 0x69, 0xf5, 0x2e, 0x5e, 0x85, 0xbe, 0x65, 0x15, 0xce, 0x63, 0xb8, 0xc8, 0x13, 0x28, 0xf3, 0x83, 0x58, 0xa6, 0x7d, 0xd, 0xd6, 0xed, 0x36, 0x46, 0x9d, 0x30, 0xeb, 0x9b, 0x40, 0x7b, 0xa0, 0xd0, 0xb, 0x97, 0x4c, 0x3c, 0xe7, 0xdc, 0x7, 0x77, 0xac, 0x1, 0xda, 0xaa, 0x71, 0x4a, 0x91, 0xe1, 0x3a, 0x95, 0x4e, 0x3e, 0xe5, 0xde, 0x5, 0x75, 0xae, 0x3, 0xd8, 0xa8, 0x73, 0x48, 0x93, 0xe3, 0x38, 0xa4, 0x7f, 0xf, 0xd4, 0xef, 0x34, 0x44, 0x9f, 0x32, 0xe9, 0x99, 0x42, 0x79, 0xa2, 0xd2, 0x9, 0xf7, 0x2c, 0x5c, 0x87, 0xbc, 0x67, 0x17, 0xcc, 0x61, 0xba, 0xca, 0x11, 0x2a, 0xf1, 0x81, 0x5a, 0xc6, 0x1d, 0x6d, 0xb6, 0x8d, 0x56, 0x26, 0xfd, 0x50, 0x8b, 0xfb, 0x20, 0x1b, 0xc0, 0xb0, 0x6b, 0x51, 0x8a, 0xfa, 0x21, 0x1a, 0xc1, 0xb1, 0x6a, 0xc7, 0x1c, 0x6c, 0xb7, 0x8c, 0x57, 0x27, 0xfc, 0x60, 0xbb, 0xcb, 0x10, 0x2b, 0xf0, 0x80, 0x5b, 0xf6, 0x2d, 0x5d, 0x86, 0xbd, 0x66, 0x16, 0xcd, 0x33, 0xe8, 0x98, 0x43, 0x78, 0xa3, 0xd3, 0x8, 0xa5, 0x7e, 0xe, 0xd5, 0xee, 0x35, 0x45, 0x9e, 0x2, 0xd9, 0xa9, 0x72, 0x49, 0x92, 0xe2, 0x39, 0x94, 0x4f, 0x3f, 0xe4, 0xdf, 0x4, 0x74, 0xaf}, - {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80, 0x41, 0x9d, 0xe4, 0x38, 0x16, 0xca, 0xb3, 0x6f, 0xef, 0x33, 0x4a, 0x96, 0xb8, 0x64, 0x1d, 0xc1, 0x82, 0x5e, 0x27, 0xfb, 0xd5, 0x9, 0x70, 0xac, 0x2c, 0xf0, 0x89, 0x55, 0x7b, 0xa7, 0xde, 0x2, 0xc3, 0x1f, 0x66, 0xba, 0x94, 0x48, 0x31, 0xed, 0x6d, 0xb1, 0xc8, 0x14, 0x3a, 0xe6, 0x9f, 0x43, 0x19, 0xc5, 0xbc, 0x60, 0x4e, 0x92, 0xeb, 0x37, 0xb7, 0x6b, 0x12, 0xce, 0xe0, 0x3c, 0x45, 0x99, 0x58, 0x84, 0xfd, 0x21, 0xf, 0xd3, 0xaa, 0x76, 0xf6, 0x2a, 0x53, 0x8f, 0xa1, 0x7d, 0x4, 0xd8, 0x9b, 0x47, 0x3e, 0xe2, 0xcc, 0x10, 0x69, 0xb5, 0x35, 0xe9, 0x90, 0x4c, 0x62, 0xbe, 0xc7, 0x1b, 0xda, 0x6, 0x7f, 0xa3, 0x8d, 0x51, 0x28, 0xf4, 0x74, 0xa8, 0xd1, 0xd, 0x23, 0xff, 0x86, 0x5a, 0x32, 0xee, 0x97, 0x4b, 0x65, 0xb9, 0xc0, 0x1c, 0x9c, 0x40, 0x39, 0xe5, 0xcb, 0x17, 0x6e, 0xb2, 0x73, 0xaf, 0xd6, 0xa, 0x24, 0xf8, 0x81, 0x5d, 0xdd, 0x1, 0x78, 0xa4, 0x8a, 0x56, 0x2f, 0xf3, 0xb0, 0x6c, 0x15, 0xc9, 0xe7, 0x3b, 0x42, 0x9e, 0x1e, 0xc2, 0xbb, 0x67, 0x49, 0x95, 0xec, 0x30, 0xf1, 0x2d, 0x54, 0x88, 0xa6, 0x7a, 0x3, 0xdf, 0x5f, 0x83, 0xfa, 0x26, 0x8, 0xd4, 0xad, 0x71, 0x2b, 0xf7, 0x8e, 0x52, 0x7c, 0xa0, 0xd9, 0x5, 0x85, 0x59, 0x20, 0xfc, 0xd2, 0xe, 0x77, 0xab, 0x6a, 0xb6, 0xcf, 0x13, 0x3d, 0xe1, 0x98, 0x44, 0xc4, 0x18, 0x61, 0xbd, 0x93, 0x4f, 0x36, 0xea, 0xa9, 0x75, 0xc, 0xd0, 0xfe, 0x22, 0x5b, 0x87, 0x7, 0xdb, 0xa2, 0x7e, 0x50, 0x8c, 0xf5, 0x29, 0xe8, 0x34, 0x4d, 0x91, 0xbf, 0x63, 0x1a, 0xc6, 0x46, 0x9a, 0xe3, 0x3f, 0x11, 0xcd, 0xb4, 0x68}, - {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f, 0x51, 0x8c, 0xf6, 0x2b, 0x2, 0xdf, 0xa5, 0x78, 0xf7, 0x2a, 0x50, 0x8d, 0xa4, 0x79, 0x3, 0xde, 0xa2, 0x7f, 0x5, 0xd8, 0xf1, 0x2c, 0x56, 0x8b, 0x4, 0xd9, 0xa3, 0x7e, 0x57, 0x8a, 0xf0, 0x2d, 0xf3, 0x2e, 0x54, 0x89, 0xa0, 0x7d, 0x7, 0xda, 0x55, 0x88, 0xf2, 0x2f, 0x6, 0xdb, 0xa1, 0x7c, 0x59, 0x84, 0xfe, 0x23, 0xa, 0xd7, 0xad, 0x70, 0xff, 0x22, 0x58, 0x85, 0xac, 0x71, 0xb, 0xd6, 0x8, 0xd5, 0xaf, 0x72, 0x5b, 0x86, 0xfc, 0x21, 0xae, 0x73, 0x9, 0xd4, 0xfd, 0x20, 0x5a, 0x87, 0xfb, 0x26, 0x5c, 0x81, 0xa8, 0x75, 0xf, 0xd2, 0x5d, 0x80, 0xfa, 0x27, 0xe, 0xd3, 0xa9, 0x74, 0xaa, 0x77, 0xd, 0xd0, 0xf9, 0x24, 0x5e, 0x83, 0xc, 0xd1, 0xab, 0x76, 0x5f, 0x82, 0xf8, 0x25, 0xb2, 0x6f, 0x15, 0xc8, 0xe1, 0x3c, 0x46, 0x9b, 0x14, 0xc9, 0xb3, 0x6e, 0x47, 0x9a, 0xe0, 0x3d, 0xe3, 0x3e, 0x44, 0x99, 0xb0, 0x6d, 0x17, 0xca, 0x45, 0x98, 0xe2, 0x3f, 0x16, 0xcb, 0xb1, 0x6c, 0x10, 0xcd, 0xb7, 0x6a, 0x43, 0x9e, 0xe4, 0x39, 0xb6, 0x6b, 0x11, 0xcc, 0xe5, 0x38, 0x42, 0x9f, 0x41, 0x9c, 0xe6, 0x3b, 0x12, 0xcf, 0xb5, 0x68, 0xe7, 0x3a, 0x40, 0x9d, 0xb4, 0x69, 0x13, 0xce, 0xeb, 0x36, 0x4c, 0x91, 0xb8, 0x65, 0x1f, 0xc2, 0x4d, 0x90, 0xea, 0x37, 0x1e, 0xc3, 0xb9, 0x64, 0xba, 0x67, 0x1d, 0xc0, 0xe9, 0x34, 0x4e, 0x93, 0x1c, 0xc1, 0xbb, 0x66, 0x4f, 0x92, 0xe8, 0x35, 0x49, 0x94, 0xee, 0x33, 0x1a, 0xc7, 0xbd, 0x60, 0xef, 0x32, 0x48, 0x95, 0xbc, 0x61, 0x1b, 0xc6, 0x18, 0xc5, 0xbf, 0x62, 0x4b, 0x96, 0xec, 0x31, 0xbe, 0x63, 0x19, 0xc4, 0xed, 0x30, 0x4a, 0x97}, - {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e, 0x61, 0xbf, 0xc0, 0x1e, 0x3e, 0xe0, 0x9f, 0x41, 0xdf, 0x1, 0x7e, 0xa0, 0x80, 0x5e, 0x21, 0xff, 0xc2, 0x1c, 0x63, 0xbd, 0x9d, 0x43, 0x3c, 0xe2, 0x7c, 0xa2, 0xdd, 0x3, 0x23, 0xfd, 0x82, 0x5c, 0xa3, 0x7d, 0x2, 0xdc, 0xfc, 0x22, 0x5d, 0x83, 0x1d, 0xc3, 0xbc, 0x62, 0x42, 0x9c, 0xe3, 0x3d, 0x99, 0x47, 0x38, 0xe6, 0xc6, 0x18, 0x67, 0xb9, 0x27, 0xf9, 0x86, 0x58, 0x78, 0xa6, 0xd9, 0x7, 0xf8, 0x26, 0x59, 0x87, 0xa7, 0x79, 0x6, 0xd8, 0x46, 0x98, 0xe7, 0x39, 0x19, 0xc7, 0xb8, 0x66, 0x5b, 0x85, 0xfa, 0x24, 0x4, 0xda, 0xa5, 0x7b, 0xe5, 0x3b, 0x44, 0x9a, 0xba, 0x64, 0x1b, 0xc5, 0x3a, 0xe4, 0x9b, 0x45, 0x65, 0xbb, 0xc4, 0x1a, 0x84, 0x5a, 0x25, 0xfb, 0xdb, 0x5, 0x7a, 0xa4, 0x2f, 0xf1, 0x8e, 0x50, 0x70, 0xae, 0xd1, 0xf, 0x91, 0x4f, 0x30, 0xee, 0xce, 0x10, 0x6f, 0xb1, 0x4e, 0x90, 0xef, 0x31, 0x11, 0xcf, 0xb0, 0x6e, 0xf0, 0x2e, 0x51, 0x8f, 0xaf, 0x71, 0xe, 0xd0, 0xed, 0x33, 0x4c, 0x92, 0xb2, 0x6c, 0x13, 0xcd, 0x53, 0x8d, 0xf2, 0x2c, 0xc, 0xd2, 0xad, 0x73, 0x8c, 0x52, 0x2d, 0xf3, 0xd3, 0xd, 0x72, 0xac, 0x32, 0xec, 0x93, 0x4d, 0x6d, 0xb3, 0xcc, 0x12, 0xb6, 0x68, 0x17, 0xc9, 0xe9, 0x37, 0x48, 0x96, 0x8, 0xd6, 0xa9, 0x77, 0x57, 0x89, 0xf6, 0x28, 0xd7, 0x9, 0x76, 0xa8, 0x88, 0x56, 0x29, 0xf7, 0x69, 0xb7, 0xc8, 0x16, 0x36, 0xe8, 0x97, 0x49, 0x74, 0xaa, 0xd5, 0xb, 0x2b, 0xf5, 0x8a, 0x54, 0xca, 0x14, 0x6b, 0xb5, 0x95, 0x4b, 0x34, 0xea, 0x15, 0xcb, 0xb4, 0x6a, 0x4a, 0x94, 0xeb, 0x35, 0xab, 0x75, 0xa, 0xd4, 0xf4, 0x2a, 0x55, 0x8b}, - {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91, 0x71, 0xae, 0xd2, 0xd, 0x2a, 0xf5, 0x89, 0x56, 0xc7, 0x18, 0x64, 0xbb, 0x9c, 0x43, 0x3f, 0xe0, 0xe2, 0x3d, 0x41, 0x9e, 0xb9, 0x66, 0x1a, 0xc5, 0x54, 0x8b, 0xf7, 0x28, 0xf, 0xd0, 0xac, 0x73, 0x93, 0x4c, 0x30, 0xef, 0xc8, 0x17, 0x6b, 0xb4, 0x25, 0xfa, 0x86, 0x59, 0x7e, 0xa1, 0xdd, 0x2, 0xd9, 0x6, 0x7a, 0xa5, 0x82, 0x5d, 0x21, 0xfe, 0x6f, 0xb0, 0xcc, 0x13, 0x34, 0xeb, 0x97, 0x48, 0xa8, 0x77, 0xb, 0xd4, 0xf3, 0x2c, 0x50, 0x8f, 0x1e, 0xc1, 0xbd, 0x62, 0x45, 0x9a, 0xe6, 0x39, 0x3b, 0xe4, 0x98, 0x47, 0x60, 0xbf, 0xc3, 0x1c, 0x8d, 0x52, 0x2e, 0xf1, 0xd6, 0x9, 0x75, 0xaa, 0x4a, 0x95, 0xe9, 0x36, 0x11, 0xce, 0xb2, 0x6d, 0xfc, 0x23, 0x5f, 0x80, 0xa7, 0x78, 0x4, 0xdb, 0xaf, 0x70, 0xc, 0xd3, 0xf4, 0x2b, 0x57, 0x88, 0x19, 0xc6, 0xba, 0x65, 0x42, 0x9d, 0xe1, 0x3e, 0xde, 0x1, 0x7d, 0xa2, 0x85, 0x5a, 0x26, 0xf9, 0x68, 0xb7, 0xcb, 0x14, 0x33, 0xec, 0x90, 0x4f, 0x4d, 0x92, 0xee, 0x31, 0x16, 0xc9, 0xb5, 0x6a, 0xfb, 0x24, 0x58, 0x87, 0xa0, 0x7f, 0x3, 0xdc, 0x3c, 0xe3, 0x9f, 0x40, 0x67, 0xb8, 0xc4, 0x1b, 0x8a, 0x55, 0x29, 0xf6, 0xd1, 0xe, 0x72, 0xad, 0x76, 0xa9, 0xd5, 0xa, 0x2d, 0xf2, 0x8e, 0x51, 0xc0, 0x1f, 0x63, 0xbc, 0x9b, 0x44, 0x38, 0xe7, 0x7, 0xd8, 0xa4, 0x7b, 0x5c, 0x83, 0xff, 0x20, 0xb1, 0x6e, 0x12, 0xcd, 0xea, 0x35, 0x49, 0x96, 0x94, 0x4b, 0x37, 0xe8, 0xcf, 0x10, 0x6c, 0xb3, 0x22, 0xfd, 0x81, 0x5e, 0x79, 0xa6, 0xda, 0x5, 0xe5, 0x3a, 0x46, 0x99, 0xbe, 0x61, 0x1d, 0xc2, 0x53, 0x8c, 0xf0, 0x2f, 0x8, 0xd7, 0xab, 0x74}, - {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9, 0xa6, 0x46, 0x7b, 0x9b, 0x1, 0xe1, 0xdc, 0x3c, 0xf5, 0x15, 0x28, 0xc8, 0x52, 0xb2, 0x8f, 0x6f, 0x51, 0xb1, 0x8c, 0x6c, 0xf6, 0x16, 0x2b, 0xcb, 0x2, 0xe2, 0xdf, 0x3f, 0xa5, 0x45, 0x78, 0x98, 0xf7, 0x17, 0x2a, 0xca, 0x50, 0xb0, 0x8d, 0x6d, 0xa4, 0x44, 0x79, 0x99, 0x3, 0xe3, 0xde, 0x3e, 0xa2, 0x42, 0x7f, 0x9f, 0x5, 0xe5, 0xd8, 0x38, 0xf1, 0x11, 0x2c, 0xcc, 0x56, 0xb6, 0x8b, 0x6b, 0x4, 0xe4, 0xd9, 0x39, 0xa3, 0x43, 0x7e, 0x9e, 0x57, 0xb7, 0x8a, 0x6a, 0xf0, 0x10, 0x2d, 0xcd, 0xf3, 0x13, 0x2e, 0xce, 0x54, 0xb4, 0x89, 0x69, 0xa0, 0x40, 0x7d, 0x9d, 0x7, 0xe7, 0xda, 0x3a, 0x55, 0xb5, 0x88, 0x68, 0xf2, 0x12, 0x2f, 0xcf, 0x6, 0xe6, 0xdb, 0x3b, 0xa1, 0x41, 0x7c, 0x9c, 0x59, 0xb9, 0x84, 0x64, 0xfe, 0x1e, 0x23, 0xc3, 0xa, 0xea, 0xd7, 0x37, 0xad, 0x4d, 0x70, 0x90, 0xff, 0x1f, 0x22, 0xc2, 0x58, 0xb8, 0x85, 0x65, 0xac, 0x4c, 0x71, 0x91, 0xb, 0xeb, 0xd6, 0x36, 0x8, 0xe8, 0xd5, 0x35, 0xaf, 0x4f, 0x72, 0x92, 0x5b, 0xbb, 0x86, 0x66, 0xfc, 0x1c, 0x21, 0xc1, 0xae, 0x4e, 0x73, 0x93, 0x9, 0xe9, 0xd4, 0x34, 0xfd, 0x1d, 0x20, 0xc0, 0x5a, 0xba, 0x87, 0x67, 0xfb, 0x1b, 0x26, 0xc6, 0x5c, 0xbc, 0x81, 0x61, 0xa8, 0x48, 0x75, 0x95, 0xf, 0xef, 0xd2, 0x32, 0x5d, 0xbd, 0x80, 0x60, 0xfa, 0x1a, 0x27, 0xc7, 0xe, 0xee, 0xd3, 0x33, 0xa9, 0x49, 0x74, 0x94, 0xaa, 0x4a, 0x77, 0x97, 0xd, 0xed, 0xd0, 0x30, 0xf9, 0x19, 0x24, 0xc4, 0x5e, 0xbe, 0x83, 0x63, 0xc, 0xec, 0xd1, 0x31, 0xab, 0x4b, 0x76, 0x96, 0x5f, 0xbf, 0x82, 0x62, 0xf8, 0x18, 0x25, 0xc5}, - {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6, 0xb6, 0x57, 0x69, 0x88, 0x15, 0xf4, 0xca, 0x2b, 0xed, 0xc, 0x32, 0xd3, 0x4e, 0xaf, 0x91, 0x70, 0x71, 0x90, 0xae, 0x4f, 0xd2, 0x33, 0xd, 0xec, 0x2a, 0xcb, 0xf5, 0x14, 0x89, 0x68, 0x56, 0xb7, 0xc7, 0x26, 0x18, 0xf9, 0x64, 0x85, 0xbb, 0x5a, 0x9c, 0x7d, 0x43, 0xa2, 0x3f, 0xde, 0xe0, 0x1, 0xe2, 0x3, 0x3d, 0xdc, 0x41, 0xa0, 0x9e, 0x7f, 0xb9, 0x58, 0x66, 0x87, 0x1a, 0xfb, 0xc5, 0x24, 0x54, 0xb5, 0x8b, 0x6a, 0xf7, 0x16, 0x28, 0xc9, 0xf, 0xee, 0xd0, 0x31, 0xac, 0x4d, 0x73, 0x92, 0x93, 0x72, 0x4c, 0xad, 0x30, 0xd1, 0xef, 0xe, 0xc8, 0x29, 0x17, 0xf6, 0x6b, 0x8a, 0xb4, 0x55, 0x25, 0xc4, 0xfa, 0x1b, 0x86, 0x67, 0x59, 0xb8, 0x7e, 0x9f, 0xa1, 0x40, 0xdd, 0x3c, 0x2, 0xe3, 0xd9, 0x38, 0x6, 0xe7, 0x7a, 0x9b, 0xa5, 0x44, 0x82, 0x63, 0x5d, 0xbc, 0x21, 0xc0, 0xfe, 0x1f, 0x6f, 0x8e, 0xb0, 0x51, 0xcc, 0x2d, 0x13, 0xf2, 0x34, 0xd5, 0xeb, 0xa, 0x97, 0x76, 0x48, 0xa9, 0xa8, 0x49, 0x77, 0x96, 0xb, 0xea, 0xd4, 0x35, 0xf3, 0x12, 0x2c, 0xcd, 0x50, 0xb1, 0x8f, 0x6e, 0x1e, 0xff, 0xc1, 0x20, 0xbd, 0x5c, 0x62, 0x83, 0x45, 0xa4, 0x9a, 0x7b, 0xe6, 0x7, 0x39, 0xd8, 0x3b, 0xda, 0xe4, 0x5, 0x98, 0x79, 0x47, 0xa6, 0x60, 0x81, 0xbf, 0x5e, 0xc3, 0x22, 0x1c, 0xfd, 0x8d, 0x6c, 0x52, 0xb3, 0x2e, 0xcf, 0xf1, 0x10, 0xd6, 0x37, 0x9, 0xe8, 0x75, 0x94, 0xaa, 0x4b, 0x4a, 0xab, 0x95, 0x74, 0xe9, 0x8, 0x36, 0xd7, 0x11, 0xf0, 0xce, 0x2f, 0xb2, 0x53, 0x6d, 0x8c, 0xfc, 0x1d, 0x23, 0xc2, 0x5f, 0xbe, 0x80, 0x61, 0xa7, 0x46, 0x78, 0x99, 0x4, 0xe5, 0xdb, 0x3a}, - {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7, 0x86, 0x64, 0x5f, 0xbd, 0x29, 0xcb, 0xf0, 0x12, 0xc5, 0x27, 0x1c, 0xfe, 0x6a, 0x88, 0xb3, 0x51, 0x11, 0xf3, 0xc8, 0x2a, 0xbe, 0x5c, 0x67, 0x85, 0x52, 0xb0, 0x8b, 0x69, 0xfd, 0x1f, 0x24, 0xc6, 0x97, 0x75, 0x4e, 0xac, 0x38, 0xda, 0xe1, 0x3, 0xd4, 0x36, 0xd, 0xef, 0x7b, 0x99, 0xa2, 0x40, 0x22, 0xc0, 0xfb, 0x19, 0x8d, 0x6f, 0x54, 0xb6, 0x61, 0x83, 0xb8, 0x5a, 0xce, 0x2c, 0x17, 0xf5, 0xa4, 0x46, 0x7d, 0x9f, 0xb, 0xe9, 0xd2, 0x30, 0xe7, 0x5, 0x3e, 0xdc, 0x48, 0xaa, 0x91, 0x73, 0x33, 0xd1, 0xea, 0x8, 0x9c, 0x7e, 0x45, 0xa7, 0x70, 0x92, 0xa9, 0x4b, 0xdf, 0x3d, 0x6, 0xe4, 0xb5, 0x57, 0x6c, 0x8e, 0x1a, 0xf8, 0xc3, 0x21, 0xf6, 0x14, 0x2f, 0xcd, 0x59, 0xbb, 0x80, 0x62, 0x44, 0xa6, 0x9d, 0x7f, 0xeb, 0x9, 0x32, 0xd0, 0x7, 0xe5, 0xde, 0x3c, 0xa8, 0x4a, 0x71, 0x93, 0xc2, 0x20, 0x1b, 0xf9, 0x6d, 0x8f, 0xb4, 0x56, 0x81, 0x63, 0x58, 0xba, 0x2e, 0xcc, 0xf7, 0x15, 0x55, 0xb7, 0x8c, 0x6e, 0xfa, 0x18, 0x23, 0xc1, 0x16, 0xf4, 0xcf, 0x2d, 0xb9, 0x5b, 0x60, 0x82, 0xd3, 0x31, 0xa, 0xe8, 0x7c, 0x9e, 0xa5, 0x47, 0x90, 0x72, 0x49, 0xab, 0x3f, 0xdd, 0xe6, 0x4, 0x66, 0x84, 0xbf, 0x5d, 0xc9, 0x2b, 0x10, 0xf2, 0x25, 0xc7, 0xfc, 0x1e, 0x8a, 0x68, 0x53, 0xb1, 0xe0, 0x2, 0x39, 0xdb, 0x4f, 0xad, 0x96, 0x74, 0xa3, 0x41, 0x7a, 0x98, 0xc, 0xee, 0xd5, 0x37, 0x77, 0x95, 0xae, 0x4c, 0xd8, 0x3a, 0x1, 0xe3, 0x34, 0xd6, 0xed, 0xf, 0x9b, 0x79, 0x42, 0xa0, 0xf1, 0x13, 0x28, 0xca, 0x5e, 0xbc, 0x87, 0x65, 0xb2, 0x50, 0x6b, 0x89, 0x1d, 0xff, 0xc4, 0x26}, - {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8, 0x96, 0x75, 0x4d, 0xae, 0x3d, 0xde, 0xe6, 0x5, 0xdd, 0x3e, 0x6, 0xe5, 0x76, 0x95, 0xad, 0x4e, 0x31, 0xd2, 0xea, 0x9, 0x9a, 0x79, 0x41, 0xa2, 0x7a, 0x99, 0xa1, 0x42, 0xd1, 0x32, 0xa, 0xe9, 0xa7, 0x44, 0x7c, 0x9f, 0xc, 0xef, 0xd7, 0x34, 0xec, 0xf, 0x37, 0xd4, 0x47, 0xa4, 0x9c, 0x7f, 0x62, 0x81, 0xb9, 0x5a, 0xc9, 0x2a, 0x12, 0xf1, 0x29, 0xca, 0xf2, 0x11, 0x82, 0x61, 0x59, 0xba, 0xf4, 0x17, 0x2f, 0xcc, 0x5f, 0xbc, 0x84, 0x67, 0xbf, 0x5c, 0x64, 0x87, 0x14, 0xf7, 0xcf, 0x2c, 0x53, 0xb0, 0x88, 0x6b, 0xf8, 0x1b, 0x23, 0xc0, 0x18, 0xfb, 0xc3, 0x20, 0xb3, 0x50, 0x68, 0x8b, 0xc5, 0x26, 0x1e, 0xfd, 0x6e, 0x8d, 0xb5, 0x56, 0x8e, 0x6d, 0x55, 0xb6, 0x25, 0xc6, 0xfe, 0x1d, 0xc4, 0x27, 0x1f, 0xfc, 0x6f, 0x8c, 0xb4, 0x57, 0x8f, 0x6c, 0x54, 0xb7, 0x24, 0xc7, 0xff, 0x1c, 0x52, 0xb1, 0x89, 0x6a, 0xf9, 0x1a, 0x22, 0xc1, 0x19, 0xfa, 0xc2, 0x21, 0xb2, 0x51, 0x69, 0x8a, 0xf5, 0x16, 0x2e, 0xcd, 0x5e, 0xbd, 0x85, 0x66, 0xbe, 0x5d, 0x65, 0x86, 0x15, 0xf6, 0xce, 0x2d, 0x63, 0x80, 0xb8, 0x5b, 0xc8, 0x2b, 0x13, 0xf0, 0x28, 0xcb, 0xf3, 0x10, 0x83, 0x60, 0x58, 0xbb, 0xa6, 0x45, 0x7d, 0x9e, 0xd, 0xee, 0xd6, 0x35, 0xed, 0xe, 0x36, 0xd5, 0x46, 0xa5, 0x9d, 0x7e, 0x30, 0xd3, 0xeb, 0x8, 0x9b, 0x78, 0x40, 0xa3, 0x7b, 0x98, 0xa0, 0x43, 0xd0, 0x33, 0xb, 0xe8, 0x97, 0x74, 0x4c, 0xaf, 0x3c, 0xdf, 0xe7, 0x4, 0xdc, 0x3f, 0x7, 0xe4, 0x77, 0x94, 0xac, 0x4f, 0x1, 0xe2, 0xda, 0x39, 0xaa, 0x49, 0x71, 0x92, 0x4a, 0xa9, 0x91, 0x72, 0xe1, 0x2, 0x3a, 0xd9}, - {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5, 0xe6, 0x2, 0x33, 0xd7, 0x51, 0xb5, 0x84, 0x60, 0x95, 0x71, 0x40, 0xa4, 0x22, 0xc6, 0xf7, 0x13, 0xd1, 0x35, 0x4, 0xe0, 0x66, 0x82, 0xb3, 0x57, 0xa2, 0x46, 0x77, 0x93, 0x15, 0xf1, 0xc0, 0x24, 0x37, 0xd3, 0xe2, 0x6, 0x80, 0x64, 0x55, 0xb1, 0x44, 0xa0, 0x91, 0x75, 0xf3, 0x17, 0x26, 0xc2, 0xbf, 0x5b, 0x6a, 0x8e, 0x8, 0xec, 0xdd, 0x39, 0xcc, 0x28, 0x19, 0xfd, 0x7b, 0x9f, 0xae, 0x4a, 0x59, 0xbd, 0x8c, 0x68, 0xee, 0xa, 0x3b, 0xdf, 0x2a, 0xce, 0xff, 0x1b, 0x9d, 0x79, 0x48, 0xac, 0x6e, 0x8a, 0xbb, 0x5f, 0xd9, 0x3d, 0xc, 0xe8, 0x1d, 0xf9, 0xc8, 0x2c, 0xaa, 0x4e, 0x7f, 0x9b, 0x88, 0x6c, 0x5d, 0xb9, 0x3f, 0xdb, 0xea, 0xe, 0xfb, 0x1f, 0x2e, 0xca, 0x4c, 0xa8, 0x99, 0x7d, 0x63, 0x87, 0xb6, 0x52, 0xd4, 0x30, 0x1, 0xe5, 0x10, 0xf4, 0xc5, 0x21, 0xa7, 0x43, 0x72, 0x96, 0x85, 0x61, 0x50, 0xb4, 0x32, 0xd6, 0xe7, 0x3, 0xf6, 0x12, 0x23, 0xc7, 0x41, 0xa5, 0x94, 0x70, 0xb2, 0x56, 0x67, 0x83, 0x5, 0xe1, 0xd0, 0x34, 0xc1, 0x25, 0x14, 0xf0, 0x76, 0x92, 0xa3, 0x47, 0x54, 0xb0, 0x81, 0x65, 0xe3, 0x7, 0x36, 0xd2, 0x27, 0xc3, 0xf2, 0x16, 0x90, 0x74, 0x45, 0xa1, 0xdc, 0x38, 0x9, 0xed, 0x6b, 0x8f, 0xbe, 0x5a, 0xaf, 0x4b, 0x7a, 0x9e, 0x18, 0xfc, 0xcd, 0x29, 0x3a, 0xde, 0xef, 0xb, 0x8d, 0x69, 0x58, 0xbc, 0x49, 0xad, 0x9c, 0x78, 0xfe, 0x1a, 0x2b, 0xcf, 0xd, 0xe9, 0xd8, 0x3c, 0xba, 0x5e, 0x6f, 0x8b, 0x7e, 0x9a, 0xab, 0x4f, 0xc9, 0x2d, 0x1c, 0xf8, 0xeb, 0xf, 0x3e, 0xda, 0x5c, 0xb8, 0x89, 0x6d, 0x98, 0x7c, 0x4d, 0xa9, 0x2f, 0xcb, 0xfa, 0x1e}, - {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa, 0xf6, 0x13, 0x21, 0xc4, 0x45, 0xa0, 0x92, 0x77, 0x8d, 0x68, 0x5a, 0xbf, 0x3e, 0xdb, 0xe9, 0xc, 0xf1, 0x14, 0x26, 0xc3, 0x42, 0xa7, 0x95, 0x70, 0x8a, 0x6f, 0x5d, 0xb8, 0x39, 0xdc, 0xee, 0xb, 0x7, 0xe2, 0xd0, 0x35, 0xb4, 0x51, 0x63, 0x86, 0x7c, 0x99, 0xab, 0x4e, 0xcf, 0x2a, 0x18, 0xfd, 0xff, 0x1a, 0x28, 0xcd, 0x4c, 0xa9, 0x9b, 0x7e, 0x84, 0x61, 0x53, 0xb6, 0x37, 0xd2, 0xe0, 0x5, 0x9, 0xec, 0xde, 0x3b, 0xba, 0x5f, 0x6d, 0x88, 0x72, 0x97, 0xa5, 0x40, 0xc1, 0x24, 0x16, 0xf3, 0xe, 0xeb, 0xd9, 0x3c, 0xbd, 0x58, 0x6a, 0x8f, 0x75, 0x90, 0xa2, 0x47, 0xc6, 0x23, 0x11, 0xf4, 0xf8, 0x1d, 0x2f, 0xca, 0x4b, 0xae, 0x9c, 0x79, 0x83, 0x66, 0x54, 0xb1, 0x30, 0xd5, 0xe7, 0x2, 0xe3, 0x6, 0x34, 0xd1, 0x50, 0xb5, 0x87, 0x62, 0x98, 0x7d, 0x4f, 0xaa, 0x2b, 0xce, 0xfc, 0x19, 0x15, 0xf0, 0xc2, 0x27, 0xa6, 0x43, 0x71, 0x94, 0x6e, 0x8b, 0xb9, 0x5c, 0xdd, 0x38, 0xa, 0xef, 0x12, 0xf7, 0xc5, 0x20, 0xa1, 0x44, 0x76, 0x93, 0x69, 0x8c, 0xbe, 0x5b, 0xda, 0x3f, 0xd, 0xe8, 0xe4, 0x1, 0x33, 0xd6, 0x57, 0xb2, 0x80, 0x65, 0x9f, 0x7a, 0x48, 0xad, 0x2c, 0xc9, 0xfb, 0x1e, 0x1c, 0xf9, 0xcb, 0x2e, 0xaf, 0x4a, 0x78, 0x9d, 0x67, 0x82, 0xb0, 0x55, 0xd4, 0x31, 0x3, 0xe6, 0xea, 0xf, 0x3d, 0xd8, 0x59, 0xbc, 0x8e, 0x6b, 0x91, 0x74, 0x46, 0xa3, 0x22, 0xc7, 0xf5, 0x10, 0xed, 0x8, 0x3a, 0xdf, 0x5e, 0xbb, 0x89, 0x6c, 0x96, 0x73, 0x41, 0xa4, 0x25, 0xc0, 0xf2, 0x17, 0x1b, 0xfe, 0xcc, 0x29, 0xa8, 0x4d, 0x7f, 0x9a, 0x60, 0x85, 0xb7, 0x52, 0xd3, 0x36, 0x4, 0xe1}, - {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb, 0xc6, 0x20, 0x17, 0xf1, 0x79, 0x9f, 0xa8, 0x4e, 0xa5, 0x43, 0x74, 0x92, 0x1a, 0xfc, 0xcb, 0x2d, 0x91, 0x77, 0x40, 0xa6, 0x2e, 0xc8, 0xff, 0x19, 0xf2, 0x14, 0x23, 0xc5, 0x4d, 0xab, 0x9c, 0x7a, 0x57, 0xb1, 0x86, 0x60, 0xe8, 0xe, 0x39, 0xdf, 0x34, 0xd2, 0xe5, 0x3, 0x8b, 0x6d, 0x5a, 0xbc, 0x3f, 0xd9, 0xee, 0x8, 0x80, 0x66, 0x51, 0xb7, 0x5c, 0xba, 0x8d, 0x6b, 0xe3, 0x5, 0x32, 0xd4, 0xf9, 0x1f, 0x28, 0xce, 0x46, 0xa0, 0x97, 0x71, 0x9a, 0x7c, 0x4b, 0xad, 0x25, 0xc3, 0xf4, 0x12, 0xae, 0x48, 0x7f, 0x99, 0x11, 0xf7, 0xc0, 0x26, 0xcd, 0x2b, 0x1c, 0xfa, 0x72, 0x94, 0xa3, 0x45, 0x68, 0x8e, 0xb9, 0x5f, 0xd7, 0x31, 0x6, 0xe0, 0xb, 0xed, 0xda, 0x3c, 0xb4, 0x52, 0x65, 0x83, 0x7e, 0x98, 0xaf, 0x49, 0xc1, 0x27, 0x10, 0xf6, 0x1d, 0xfb, 0xcc, 0x2a, 0xa2, 0x44, 0x73, 0x95, 0xb8, 0x5e, 0x69, 0x8f, 0x7, 0xe1, 0xd6, 0x30, 0xdb, 0x3d, 0xa, 0xec, 0x64, 0x82, 0xb5, 0x53, 0xef, 0x9, 0x3e, 0xd8, 0x50, 0xb6, 0x81, 0x67, 0x8c, 0x6a, 0x5d, 0xbb, 0x33, 0xd5, 0xe2, 0x4, 0x29, 0xcf, 0xf8, 0x1e, 0x96, 0x70, 0x47, 0xa1, 0x4a, 0xac, 0x9b, 0x7d, 0xf5, 0x13, 0x24, 0xc2, 0x41, 0xa7, 0x90, 0x76, 0xfe, 0x18, 0x2f, 0xc9, 0x22, 0xc4, 0xf3, 0x15, 0x9d, 0x7b, 0x4c, 0xaa, 0x87, 0x61, 0x56, 0xb0, 0x38, 0xde, 0xe9, 0xf, 0xe4, 0x2, 0x35, 0xd3, 0x5b, 0xbd, 0x8a, 0x6c, 0xd0, 0x36, 0x1, 0xe7, 0x6f, 0x89, 0xbe, 0x58, 0xb3, 0x55, 0x62, 0x84, 0xc, 0xea, 0xdd, 0x3b, 0x16, 0xf0, 0xc7, 0x21, 0xa9, 0x4f, 0x78, 0x9e, 0x75, 0x93, 0xa4, 0x42, 0xca, 0x2c, 0x1b, 0xfd}, - {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4, 0xd6, 0x31, 0x5, 0xe2, 0x6d, 0x8a, 0xbe, 0x59, 0xbd, 0x5a, 0x6e, 0x89, 0x6, 0xe1, 0xd5, 0x32, 0xb1, 0x56, 0x62, 0x85, 0xa, 0xed, 0xd9, 0x3e, 0xda, 0x3d, 0x9, 0xee, 0x61, 0x86, 0xb2, 0x55, 0x67, 0x80, 0xb4, 0x53, 0xdc, 0x3b, 0xf, 0xe8, 0xc, 0xeb, 0xdf, 0x38, 0xb7, 0x50, 0x64, 0x83, 0x7f, 0x98, 0xac, 0x4b, 0xc4, 0x23, 0x17, 0xf0, 0x14, 0xf3, 0xc7, 0x20, 0xaf, 0x48, 0x7c, 0x9b, 0xa9, 0x4e, 0x7a, 0x9d, 0x12, 0xf5, 0xc1, 0x26, 0xc2, 0x25, 0x11, 0xf6, 0x79, 0x9e, 0xaa, 0x4d, 0xce, 0x29, 0x1d, 0xfa, 0x75, 0x92, 0xa6, 0x41, 0xa5, 0x42, 0x76, 0x91, 0x1e, 0xf9, 0xcd, 0x2a, 0x18, 0xff, 0xcb, 0x2c, 0xa3, 0x44, 0x70, 0x97, 0x73, 0x94, 0xa0, 0x47, 0xc8, 0x2f, 0x1b, 0xfc, 0xfe, 0x19, 0x2d, 0xca, 0x45, 0xa2, 0x96, 0x71, 0x95, 0x72, 0x46, 0xa1, 0x2e, 0xc9, 0xfd, 0x1a, 0x28, 0xcf, 0xfb, 0x1c, 0x93, 0x74, 0x40, 0xa7, 0x43, 0xa4, 0x90, 0x77, 0xf8, 0x1f, 0x2b, 0xcc, 0x4f, 0xa8, 0x9c, 0x7b, 0xf4, 0x13, 0x27, 0xc0, 0x24, 0xc3, 0xf7, 0x10, 0x9f, 0x78, 0x4c, 0xab, 0x99, 0x7e, 0x4a, 0xad, 0x22, 0xc5, 0xf1, 0x16, 0xf2, 0x15, 0x21, 0xc6, 0x49, 0xae, 0x9a, 0x7d, 0x81, 0x66, 0x52, 0xb5, 0x3a, 0xdd, 0xe9, 0xe, 0xea, 0xd, 0x39, 0xde, 0x51, 0xb6, 0x82, 0x65, 0x57, 0xb0, 0x84, 0x63, 0xec, 0xb, 0x3f, 0xd8, 0x3c, 0xdb, 0xef, 0x8, 0x87, 0x60, 0x54, 0xb3, 0x30, 0xd7, 0xe3, 0x4, 0x8b, 0x6c, 0x58, 0xbf, 0x5b, 0xbc, 0x88, 0x6f, 0xe0, 0x7, 0x33, 0xd4, 0xe6, 0x1, 0x35, 0xd2, 0x5d, 0xba, 0x8e, 0x69, 0x8d, 0x6a, 0x5e, 0xb9, 0x36, 0xd1, 0xe5, 0x2}, - {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1, 0x26, 0xce, 0xeb, 0x3, 0xa1, 0x49, 0x6c, 0x84, 0x35, 0xdd, 0xf8, 0x10, 0xb2, 0x5a, 0x7f, 0x97, 0x4c, 0xa4, 0x81, 0x69, 0xcb, 0x23, 0x6, 0xee, 0x5f, 0xb7, 0x92, 0x7a, 0xd8, 0x30, 0x15, 0xfd, 0x6a, 0x82, 0xa7, 0x4f, 0xed, 0x5, 0x20, 0xc8, 0x79, 0x91, 0xb4, 0x5c, 0xfe, 0x16, 0x33, 0xdb, 0x98, 0x70, 0x55, 0xbd, 0x1f, 0xf7, 0xd2, 0x3a, 0x8b, 0x63, 0x46, 0xae, 0xc, 0xe4, 0xc1, 0x29, 0xbe, 0x56, 0x73, 0x9b, 0x39, 0xd1, 0xf4, 0x1c, 0xad, 0x45, 0x60, 0x88, 0x2a, 0xc2, 0xe7, 0xf, 0xd4, 0x3c, 0x19, 0xf1, 0x53, 0xbb, 0x9e, 0x76, 0xc7, 0x2f, 0xa, 0xe2, 0x40, 0xa8, 0x8d, 0x65, 0xf2, 0x1a, 0x3f, 0xd7, 0x75, 0x9d, 0xb8, 0x50, 0xe1, 0x9, 0x2c, 0xc4, 0x66, 0x8e, 0xab, 0x43, 0x2d, 0xc5, 0xe0, 0x8, 0xaa, 0x42, 0x67, 0x8f, 0x3e, 0xd6, 0xf3, 0x1b, 0xb9, 0x51, 0x74, 0x9c, 0xb, 0xe3, 0xc6, 0x2e, 0x8c, 0x64, 0x41, 0xa9, 0x18, 0xf0, 0xd5, 0x3d, 0x9f, 0x77, 0x52, 0xba, 0x61, 0x89, 0xac, 0x44, 0xe6, 0xe, 0x2b, 0xc3, 0x72, 0x9a, 0xbf, 0x57, 0xf5, 0x1d, 0x38, 0xd0, 0x47, 0xaf, 0x8a, 0x62, 0xc0, 0x28, 0xd, 0xe5, 0x54, 0xbc, 0x99, 0x71, 0xd3, 0x3b, 0x1e, 0xf6, 0xb5, 0x5d, 0x78, 0x90, 0x32, 0xda, 0xff, 0x17, 0xa6, 0x4e, 0x6b, 0x83, 0x21, 0xc9, 0xec, 0x4, 0x93, 0x7b, 0x5e, 0xb6, 0x14, 0xfc, 0xd9, 0x31, 0x80, 0x68, 0x4d, 0xa5, 0x7, 0xef, 0xca, 0x22, 0xf9, 0x11, 0x34, 0xdc, 0x7e, 0x96, 0xb3, 0x5b, 0xea, 0x2, 0x27, 0xcf, 0x6d, 0x85, 0xa0, 0x48, 0xdf, 0x37, 0x12, 0xfa, 0x58, 0xb0, 0x95, 0x7d, 0xcc, 0x24, 0x1, 0xe9, 0x4b, 0xa3, 0x86, 0x6e}, - {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe, 0x36, 0xdf, 0xf9, 0x10, 0xb5, 0x5c, 0x7a, 0x93, 0x2d, 0xc4, 0xe2, 0xb, 0xae, 0x47, 0x61, 0x88, 0x6c, 0x85, 0xa3, 0x4a, 0xef, 0x6, 0x20, 0xc9, 0x77, 0x9e, 0xb8, 0x51, 0xf4, 0x1d, 0x3b, 0xd2, 0x5a, 0xb3, 0x95, 0x7c, 0xd9, 0x30, 0x16, 0xff, 0x41, 0xa8, 0x8e, 0x67, 0xc2, 0x2b, 0xd, 0xe4, 0xd8, 0x31, 0x17, 0xfe, 0x5b, 0xb2, 0x94, 0x7d, 0xc3, 0x2a, 0xc, 0xe5, 0x40, 0xa9, 0x8f, 0x66, 0xee, 0x7, 0x21, 0xc8, 0x6d, 0x84, 0xa2, 0x4b, 0xf5, 0x1c, 0x3a, 0xd3, 0x76, 0x9f, 0xb9, 0x50, 0xb4, 0x5d, 0x7b, 0x92, 0x37, 0xde, 0xf8, 0x11, 0xaf, 0x46, 0x60, 0x89, 0x2c, 0xc5, 0xe3, 0xa, 0x82, 0x6b, 0x4d, 0xa4, 0x1, 0xe8, 0xce, 0x27, 0x99, 0x70, 0x56, 0xbf, 0x1a, 0xf3, 0xd5, 0x3c, 0xad, 0x44, 0x62, 0x8b, 0x2e, 0xc7, 0xe1, 0x8, 0xb6, 0x5f, 0x79, 0x90, 0x35, 0xdc, 0xfa, 0x13, 0x9b, 0x72, 0x54, 0xbd, 0x18, 0xf1, 0xd7, 0x3e, 0x80, 0x69, 0x4f, 0xa6, 0x3, 0xea, 0xcc, 0x25, 0xc1, 0x28, 0xe, 0xe7, 0x42, 0xab, 0x8d, 0x64, 0xda, 0x33, 0x15, 0xfc, 0x59, 0xb0, 0x96, 0x7f, 0xf7, 0x1e, 0x38, 0xd1, 0x74, 0x9d, 0xbb, 0x52, 0xec, 0x5, 0x23, 0xca, 0x6f, 0x86, 0xa0, 0x49, 0x75, 0x9c, 0xba, 0x53, 0xf6, 0x1f, 0x39, 0xd0, 0x6e, 0x87, 0xa1, 0x48, 0xed, 0x4, 0x22, 0xcb, 0x43, 0xaa, 0x8c, 0x65, 0xc0, 0x29, 0xf, 0xe6, 0x58, 0xb1, 0x97, 0x7e, 0xdb, 0x32, 0x14, 0xfd, 0x19, 0xf0, 0xd6, 0x3f, 0x9a, 0x73, 0x55, 0xbc, 0x2, 0xeb, 0xcd, 0x24, 0x81, 0x68, 0x4e, 0xa7, 0x2f, 0xc6, 0xe0, 0x9, 0xac, 0x45, 0x63, 0x8a, 0x34, 0xdd, 0xfb, 0x12, 0xb7, 0x5e, 0x78, 0x91}, - {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf, 0x6, 0xec, 0xcf, 0x25, 0x89, 0x63, 0x40, 0xaa, 0x5, 0xef, 0xcc, 0x26, 0x8a, 0x60, 0x43, 0xa9, 0xc, 0xe6, 0xc5, 0x2f, 0x83, 0x69, 0x4a, 0xa0, 0xf, 0xe5, 0xc6, 0x2c, 0x80, 0x6a, 0x49, 0xa3, 0xa, 0xe0, 0xc3, 0x29, 0x85, 0x6f, 0x4c, 0xa6, 0x9, 0xe3, 0xc0, 0x2a, 0x86, 0x6c, 0x4f, 0xa5, 0x18, 0xf2, 0xd1, 0x3b, 0x97, 0x7d, 0x5e, 0xb4, 0x1b, 0xf1, 0xd2, 0x38, 0x94, 0x7e, 0x5d, 0xb7, 0x1e, 0xf4, 0xd7, 0x3d, 0x91, 0x7b, 0x58, 0xb2, 0x1d, 0xf7, 0xd4, 0x3e, 0x92, 0x78, 0x5b, 0xb1, 0x14, 0xfe, 0xdd, 0x37, 0x9b, 0x71, 0x52, 0xb8, 0x17, 0xfd, 0xde, 0x34, 0x98, 0x72, 0x51, 0xbb, 0x12, 0xf8, 0xdb, 0x31, 0x9d, 0x77, 0x54, 0xbe, 0x11, 0xfb, 0xd8, 0x32, 0x9e, 0x74, 0x57, 0xbd, 0x30, 0xda, 0xf9, 0x13, 0xbf, 0x55, 0x76, 0x9c, 0x33, 0xd9, 0xfa, 0x10, 0xbc, 0x56, 0x75, 0x9f, 0x36, 0xdc, 0xff, 0x15, 0xb9, 0x53, 0x70, 0x9a, 0x35, 0xdf, 0xfc, 0x16, 0xba, 0x50, 0x73, 0x99, 0x3c, 0xd6, 0xf5, 0x1f, 0xb3, 0x59, 0x7a, 0x90, 0x3f, 0xd5, 0xf6, 0x1c, 0xb0, 0x5a, 0x79, 0x93, 0x3a, 0xd0, 0xf3, 0x19, 0xb5, 0x5f, 0x7c, 0x96, 0x39, 0xd3, 0xf0, 0x1a, 0xb6, 0x5c, 0x7f, 0x95, 0x28, 0xc2, 0xe1, 0xb, 0xa7, 0x4d, 0x6e, 0x84, 0x2b, 0xc1, 0xe2, 0x8, 0xa4, 0x4e, 0x6d, 0x87, 0x2e, 0xc4, 0xe7, 0xd, 0xa1, 0x4b, 0x68, 0x82, 0x2d, 0xc7, 0xe4, 0xe, 0xa2, 0x48, 0x6b, 0x81, 0x24, 0xce, 0xed, 0x7, 0xab, 0x41, 0x62, 0x88, 0x27, 0xcd, 0xee, 0x4, 0xa8, 0x42, 0x61, 0x8b, 0x22, 0xc8, 0xeb, 0x1, 0xad, 0x47, 0x64, 0x8e, 0x21, 0xcb, 0xe8, 0x2, 0xae, 0x44, 0x67, 0x8d}, - {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0, 0x16, 0xfd, 0xdd, 0x36, 0x9d, 0x76, 0x56, 0xbd, 0x1d, 0xf6, 0xd6, 0x3d, 0x96, 0x7d, 0x5d, 0xb6, 0x2c, 0xc7, 0xe7, 0xc, 0xa7, 0x4c, 0x6c, 0x87, 0x27, 0xcc, 0xec, 0x7, 0xac, 0x47, 0x67, 0x8c, 0x3a, 0xd1, 0xf1, 0x1a, 0xb1, 0x5a, 0x7a, 0x91, 0x31, 0xda, 0xfa, 0x11, 0xba, 0x51, 0x71, 0x9a, 0x58, 0xb3, 0x93, 0x78, 0xd3, 0x38, 0x18, 0xf3, 0x53, 0xb8, 0x98, 0x73, 0xd8, 0x33, 0x13, 0xf8, 0x4e, 0xa5, 0x85, 0x6e, 0xc5, 0x2e, 0xe, 0xe5, 0x45, 0xae, 0x8e, 0x65, 0xce, 0x25, 0x5, 0xee, 0x74, 0x9f, 0xbf, 0x54, 0xff, 0x14, 0x34, 0xdf, 0x7f, 0x94, 0xb4, 0x5f, 0xf4, 0x1f, 0x3f, 0xd4, 0x62, 0x89, 0xa9, 0x42, 0xe9, 0x2, 0x22, 0xc9, 0x69, 0x82, 0xa2, 0x49, 0xe2, 0x9, 0x29, 0xc2, 0xb0, 0x5b, 0x7b, 0x90, 0x3b, 0xd0, 0xf0, 0x1b, 0xbb, 0x50, 0x70, 0x9b, 0x30, 0xdb, 0xfb, 0x10, 0xa6, 0x4d, 0x6d, 0x86, 0x2d, 0xc6, 0xe6, 0xd, 0xad, 0x46, 0x66, 0x8d, 0x26, 0xcd, 0xed, 0x6, 0x9c, 0x77, 0x57, 0xbc, 0x17, 0xfc, 0xdc, 0x37, 0x97, 0x7c, 0x5c, 0xb7, 0x1c, 0xf7, 0xd7, 0x3c, 0x8a, 0x61, 0x41, 0xaa, 0x1, 0xea, 0xca, 0x21, 0x81, 0x6a, 0x4a, 0xa1, 0xa, 0xe1, 0xc1, 0x2a, 0xe8, 0x3, 0x23, 0xc8, 0x63, 0x88, 0xa8, 0x43, 0xe3, 0x8, 0x28, 0xc3, 0x68, 0x83, 0xa3, 0x48, 0xfe, 0x15, 0x35, 0xde, 0x75, 0x9e, 0xbe, 0x55, 0xf5, 0x1e, 0x3e, 0xd5, 0x7e, 0x95, 0xb5, 0x5e, 0xc4, 0x2f, 0xf, 0xe4, 0x4f, 0xa4, 0x84, 0x6f, 0xcf, 0x24, 0x4, 0xef, 0x44, 0xaf, 0x8f, 0x64, 0xd2, 0x39, 0x19, 0xf2, 0x59, 0xb2, 0x92, 0x79, 0xd9, 0x32, 0x12, 0xf9, 0x52, 0xb9, 0x99, 0x72}, - {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d, 0x66, 0x8a, 0xa3, 0x4f, 0xf1, 0x1d, 0x34, 0xd8, 0x55, 0xb9, 0x90, 0x7c, 0xc2, 0x2e, 0x7, 0xeb, 0xcc, 0x20, 0x9, 0xe5, 0x5b, 0xb7, 0x9e, 0x72, 0xff, 0x13, 0x3a, 0xd6, 0x68, 0x84, 0xad, 0x41, 0xaa, 0x46, 0x6f, 0x83, 0x3d, 0xd1, 0xf8, 0x14, 0x99, 0x75, 0x5c, 0xb0, 0xe, 0xe2, 0xcb, 0x27, 0x85, 0x69, 0x40, 0xac, 0x12, 0xfe, 0xd7, 0x3b, 0xb6, 0x5a, 0x73, 0x9f, 0x21, 0xcd, 0xe4, 0x8, 0xe3, 0xf, 0x26, 0xca, 0x74, 0x98, 0xb1, 0x5d, 0xd0, 0x3c, 0x15, 0xf9, 0x47, 0xab, 0x82, 0x6e, 0x49, 0xa5, 0x8c, 0x60, 0xde, 0x32, 0x1b, 0xf7, 0x7a, 0x96, 0xbf, 0x53, 0xed, 0x1, 0x28, 0xc4, 0x2f, 0xc3, 0xea, 0x6, 0xb8, 0x54, 0x7d, 0x91, 0x1c, 0xf0, 0xd9, 0x35, 0x8b, 0x67, 0x4e, 0xa2, 0x17, 0xfb, 0xd2, 0x3e, 0x80, 0x6c, 0x45, 0xa9, 0x24, 0xc8, 0xe1, 0xd, 0xb3, 0x5f, 0x76, 0x9a, 0x71, 0x9d, 0xb4, 0x58, 0xe6, 0xa, 0x23, 0xcf, 0x42, 0xae, 0x87, 0x6b, 0xd5, 0x39, 0x10, 0xfc, 0xdb, 0x37, 0x1e, 0xf2, 0x4c, 0xa0, 0x89, 0x65, 0xe8, 0x4, 0x2d, 0xc1, 0x7f, 0x93, 0xba, 0x56, 0xbd, 0x51, 0x78, 0x94, 0x2a, 0xc6, 0xef, 0x3, 0x8e, 0x62, 0x4b, 0xa7, 0x19, 0xf5, 0xdc, 0x30, 0x92, 0x7e, 0x57, 0xbb, 0x5, 0xe9, 0xc0, 0x2c, 0xa1, 0x4d, 0x64, 0x88, 0x36, 0xda, 0xf3, 0x1f, 0xf4, 0x18, 0x31, 0xdd, 0x63, 0x8f, 0xa6, 0x4a, 0xc7, 0x2b, 0x2, 0xee, 0x50, 0xbc, 0x95, 0x79, 0x5e, 0xb2, 0x9b, 0x77, 0xc9, 0x25, 0xc, 0xe0, 0x6d, 0x81, 0xa8, 0x44, 0xfa, 0x16, 0x3f, 0xd3, 0x38, 0xd4, 0xfd, 0x11, 0xaf, 0x43, 0x6a, 0x86, 0xb, 0xe7, 0xce, 0x22, 0x9c, 0x70, 0x59, 0xb5}, - {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82, 0x76, 0x9b, 0xb1, 0x5c, 0xe5, 0x8, 0x22, 0xcf, 0x4d, 0xa0, 0x8a, 0x67, 0xde, 0x33, 0x19, 0xf4, 0xec, 0x1, 0x2b, 0xc6, 0x7f, 0x92, 0xb8, 0x55, 0xd7, 0x3a, 0x10, 0xfd, 0x44, 0xa9, 0x83, 0x6e, 0x9a, 0x77, 0x5d, 0xb0, 0x9, 0xe4, 0xce, 0x23, 0xa1, 0x4c, 0x66, 0x8b, 0x32, 0xdf, 0xf5, 0x18, 0xc5, 0x28, 0x2, 0xef, 0x56, 0xbb, 0x91, 0x7c, 0xfe, 0x13, 0x39, 0xd4, 0x6d, 0x80, 0xaa, 0x47, 0xb3, 0x5e, 0x74, 0x99, 0x20, 0xcd, 0xe7, 0xa, 0x88, 0x65, 0x4f, 0xa2, 0x1b, 0xf6, 0xdc, 0x31, 0x29, 0xc4, 0xee, 0x3, 0xba, 0x57, 0x7d, 0x90, 0x12, 0xff, 0xd5, 0x38, 0x81, 0x6c, 0x46, 0xab, 0x5f, 0xb2, 0x98, 0x75, 0xcc, 0x21, 0xb, 0xe6, 0x64, 0x89, 0xa3, 0x4e, 0xf7, 0x1a, 0x30, 0xdd, 0x97, 0x7a, 0x50, 0xbd, 0x4, 0xe9, 0xc3, 0x2e, 0xac, 0x41, 0x6b, 0x86, 0x3f, 0xd2, 0xf8, 0x15, 0xe1, 0xc, 0x26, 0xcb, 0x72, 0x9f, 0xb5, 0x58, 0xda, 0x37, 0x1d, 0xf0, 0x49, 0xa4, 0x8e, 0x63, 0x7b, 0x96, 0xbc, 0x51, 0xe8, 0x5, 0x2f, 0xc2, 0x40, 0xad, 0x87, 0x6a, 0xd3, 0x3e, 0x14, 0xf9, 0xd, 0xe0, 0xca, 0x27, 0x9e, 0x73, 0x59, 0xb4, 0x36, 0xdb, 0xf1, 0x1c, 0xa5, 0x48, 0x62, 0x8f, 0x52, 0xbf, 0x95, 0x78, 0xc1, 0x2c, 0x6, 0xeb, 0x69, 0x84, 0xae, 0x43, 0xfa, 0x17, 0x3d, 0xd0, 0x24, 0xc9, 0xe3, 0xe, 0xb7, 0x5a, 0x70, 0x9d, 0x1f, 0xf2, 0xd8, 0x35, 0x8c, 0x61, 0x4b, 0xa6, 0xbe, 0x53, 0x79, 0x94, 0x2d, 0xc0, 0xea, 0x7, 0x85, 0x68, 0x42, 0xaf, 0x16, 0xfb, 0xd1, 0x3c, 0xc8, 0x25, 0xf, 0xe2, 0x5b, 0xb6, 0x9c, 0x71, 0xf3, 0x1e, 0x34, 0xd9, 0x60, 0x8d, 0xa7, 0x4a}, - {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93, 0x46, 0xa8, 0x87, 0x69, 0xd9, 0x37, 0x18, 0xf6, 0x65, 0x8b, 0xa4, 0x4a, 0xfa, 0x14, 0x3b, 0xd5, 0x8c, 0x62, 0x4d, 0xa3, 0x13, 0xfd, 0xd2, 0x3c, 0xaf, 0x41, 0x6e, 0x80, 0x30, 0xde, 0xf1, 0x1f, 0xca, 0x24, 0xb, 0xe5, 0x55, 0xbb, 0x94, 0x7a, 0xe9, 0x7, 0x28, 0xc6, 0x76, 0x98, 0xb7, 0x59, 0x5, 0xeb, 0xc4, 0x2a, 0x9a, 0x74, 0x5b, 0xb5, 0x26, 0xc8, 0xe7, 0x9, 0xb9, 0x57, 0x78, 0x96, 0x43, 0xad, 0x82, 0x6c, 0xdc, 0x32, 0x1d, 0xf3, 0x60, 0x8e, 0xa1, 0x4f, 0xff, 0x11, 0x3e, 0xd0, 0x89, 0x67, 0x48, 0xa6, 0x16, 0xf8, 0xd7, 0x39, 0xaa, 0x44, 0x6b, 0x85, 0x35, 0xdb, 0xf4, 0x1a, 0xcf, 0x21, 0xe, 0xe0, 0x50, 0xbe, 0x91, 0x7f, 0xec, 0x2, 0x2d, 0xc3, 0x73, 0x9d, 0xb2, 0x5c, 0xa, 0xe4, 0xcb, 0x25, 0x95, 0x7b, 0x54, 0xba, 0x29, 0xc7, 0xe8, 0x6, 0xb6, 0x58, 0x77, 0x99, 0x4c, 0xa2, 0x8d, 0x63, 0xd3, 0x3d, 0x12, 0xfc, 0x6f, 0x81, 0xae, 0x40, 0xf0, 0x1e, 0x31, 0xdf, 0x86, 0x68, 0x47, 0xa9, 0x19, 0xf7, 0xd8, 0x36, 0xa5, 0x4b, 0x64, 0x8a, 0x3a, 0xd4, 0xfb, 0x15, 0xc0, 0x2e, 0x1, 0xef, 0x5f, 0xb1, 0x9e, 0x70, 0xe3, 0xd, 0x22, 0xcc, 0x7c, 0x92, 0xbd, 0x53, 0xf, 0xe1, 0xce, 0x20, 0x90, 0x7e, 0x51, 0xbf, 0x2c, 0xc2, 0xed, 0x3, 0xb3, 0x5d, 0x72, 0x9c, 0x49, 0xa7, 0x88, 0x66, 0xd6, 0x38, 0x17, 0xf9, 0x6a, 0x84, 0xab, 0x45, 0xf5, 0x1b, 0x34, 0xda, 0x83, 0x6d, 0x42, 0xac, 0x1c, 0xf2, 0xdd, 0x33, 0xa0, 0x4e, 0x61, 0x8f, 0x3f, 0xd1, 0xfe, 0x10, 0xc5, 0x2b, 0x4, 0xea, 0x5a, 0xb4, 0x9b, 0x75, 0xe6, 0x8, 0x27, 0xc9, 0x79, 0x97, 0xb8, 0x56}, - {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c, 0x56, 0xb9, 0x95, 0x7a, 0xcd, 0x22, 0xe, 0xe1, 0x7d, 0x92, 0xbe, 0x51, 0xe6, 0x9, 0x25, 0xca, 0xac, 0x43, 0x6f, 0x80, 0x37, 0xd8, 0xf4, 0x1b, 0x87, 0x68, 0x44, 0xab, 0x1c, 0xf3, 0xdf, 0x30, 0xfa, 0x15, 0x39, 0xd6, 0x61, 0x8e, 0xa2, 0x4d, 0xd1, 0x3e, 0x12, 0xfd, 0x4a, 0xa5, 0x89, 0x66, 0x45, 0xaa, 0x86, 0x69, 0xde, 0x31, 0x1d, 0xf2, 0x6e, 0x81, 0xad, 0x42, 0xf5, 0x1a, 0x36, 0xd9, 0x13, 0xfc, 0xd0, 0x3f, 0x88, 0x67, 0x4b, 0xa4, 0x38, 0xd7, 0xfb, 0x14, 0xa3, 0x4c, 0x60, 0x8f, 0xe9, 0x6, 0x2a, 0xc5, 0x72, 0x9d, 0xb1, 0x5e, 0xc2, 0x2d, 0x1, 0xee, 0x59, 0xb6, 0x9a, 0x75, 0xbf, 0x50, 0x7c, 0x93, 0x24, 0xcb, 0xe7, 0x8, 0x94, 0x7b, 0x57, 0xb8, 0xf, 0xe0, 0xcc, 0x23, 0x8a, 0x65, 0x49, 0xa6, 0x11, 0xfe, 0xd2, 0x3d, 0xa1, 0x4e, 0x62, 0x8d, 0x3a, 0xd5, 0xf9, 0x16, 0xdc, 0x33, 0x1f, 0xf0, 0x47, 0xa8, 0x84, 0x6b, 0xf7, 0x18, 0x34, 0xdb, 0x6c, 0x83, 0xaf, 0x40, 0x26, 0xc9, 0xe5, 0xa, 0xbd, 0x52, 0x7e, 0x91, 0xd, 0xe2, 0xce, 0x21, 0x96, 0x79, 0x55, 0xba, 0x70, 0x9f, 0xb3, 0x5c, 0xeb, 0x4, 0x28, 0xc7, 0x5b, 0xb4, 0x98, 0x77, 0xc0, 0x2f, 0x3, 0xec, 0xcf, 0x20, 0xc, 0xe3, 0x54, 0xbb, 0x97, 0x78, 0xe4, 0xb, 0x27, 0xc8, 0x7f, 0x90, 0xbc, 0x53, 0x99, 0x76, 0x5a, 0xb5, 0x2, 0xed, 0xc1, 0x2e, 0xb2, 0x5d, 0x71, 0x9e, 0x29, 0xc6, 0xea, 0x5, 0x63, 0x8c, 0xa0, 0x4f, 0xf8, 0x17, 0x3b, 0xd4, 0x48, 0xa7, 0x8b, 0x64, 0xd3, 0x3c, 0x10, 0xff, 0x35, 0xda, 0xf6, 0x19, 0xae, 0x41, 0x6d, 0x82, 0x1e, 0xf1, 0xdd, 0x32, 0x85, 0x6a, 0x46, 0xa9}, - {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39, 0xbb, 0x4b, 0x46, 0xb6, 0x5c, 0xac, 0xa1, 0x51, 0x68, 0x98, 0x95, 0x65, 0x8f, 0x7f, 0x72, 0x82, 0x6b, 0x9b, 0x96, 0x66, 0x8c, 0x7c, 0x71, 0x81, 0xb8, 0x48, 0x45, 0xb5, 0x5f, 0xaf, 0xa2, 0x52, 0xd0, 0x20, 0x2d, 0xdd, 0x37, 0xc7, 0xca, 0x3a, 0x3, 0xf3, 0xfe, 0xe, 0xe4, 0x14, 0x19, 0xe9, 0xd6, 0x26, 0x2b, 0xdb, 0x31, 0xc1, 0xcc, 0x3c, 0x5, 0xf5, 0xf8, 0x8, 0xe2, 0x12, 0x1f, 0xef, 0x6d, 0x9d, 0x90, 0x60, 0x8a, 0x7a, 0x77, 0x87, 0xbe, 0x4e, 0x43, 0xb3, 0x59, 0xa9, 0xa4, 0x54, 0xbd, 0x4d, 0x40, 0xb0, 0x5a, 0xaa, 0xa7, 0x57, 0x6e, 0x9e, 0x93, 0x63, 0x89, 0x79, 0x74, 0x84, 0x6, 0xf6, 0xfb, 0xb, 0xe1, 0x11, 0x1c, 0xec, 0xd5, 0x25, 0x28, 0xd8, 0x32, 0xc2, 0xcf, 0x3f, 0xb1, 0x41, 0x4c, 0xbc, 0x56, 0xa6, 0xab, 0x5b, 0x62, 0x92, 0x9f, 0x6f, 0x85, 0x75, 0x78, 0x88, 0xa, 0xfa, 0xf7, 0x7, 0xed, 0x1d, 0x10, 0xe0, 0xd9, 0x29, 0x24, 0xd4, 0x3e, 0xce, 0xc3, 0x33, 0xda, 0x2a, 0x27, 0xd7, 0x3d, 0xcd, 0xc0, 0x30, 0x9, 0xf9, 0xf4, 0x4, 0xee, 0x1e, 0x13, 0xe3, 0x61, 0x91, 0x9c, 0x6c, 0x86, 0x76, 0x7b, 0x8b, 0xb2, 0x42, 0x4f, 0xbf, 0x55, 0xa5, 0xa8, 0x58, 0x67, 0x97, 0x9a, 0x6a, 0x80, 0x70, 0x7d, 0x8d, 0xb4, 0x44, 0x49, 0xb9, 0x53, 0xa3, 0xae, 0x5e, 0xdc, 0x2c, 0x21, 0xd1, 0x3b, 0xcb, 0xc6, 0x36, 0xf, 0xff, 0xf2, 0x2, 0xe8, 0x18, 0x15, 0xe5, 0xc, 0xfc, 0xf1, 0x1, 0xeb, 0x1b, 0x16, 0xe6, 0xdf, 0x2f, 0x22, 0xd2, 0x38, 0xc8, 0xc5, 0x35, 0xb7, 0x47, 0x4a, 0xba, 0x50, 0xa0, 0xad, 0x5d, 0x64, 0x94, 0x99, 0x69, 0x83, 0x73, 0x7e, 0x8e}, - {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36, 0xab, 0x5a, 0x54, 0xa5, 0x48, 0xb9, 0xb7, 0x46, 0x70, 0x81, 0x8f, 0x7e, 0x93, 0x62, 0x6c, 0x9d, 0x4b, 0xba, 0xb4, 0x45, 0xa8, 0x59, 0x57, 0xa6, 0x90, 0x61, 0x6f, 0x9e, 0x73, 0x82, 0x8c, 0x7d, 0xe0, 0x11, 0x1f, 0xee, 0x3, 0xf2, 0xfc, 0xd, 0x3b, 0xca, 0xc4, 0x35, 0xd8, 0x29, 0x27, 0xd6, 0x96, 0x67, 0x69, 0x98, 0x75, 0x84, 0x8a, 0x7b, 0x4d, 0xbc, 0xb2, 0x43, 0xae, 0x5f, 0x51, 0xa0, 0x3d, 0xcc, 0xc2, 0x33, 0xde, 0x2f, 0x21, 0xd0, 0xe6, 0x17, 0x19, 0xe8, 0x5, 0xf4, 0xfa, 0xb, 0xdd, 0x2c, 0x22, 0xd3, 0x3e, 0xcf, 0xc1, 0x30, 0x6, 0xf7, 0xf9, 0x8, 0xe5, 0x14, 0x1a, 0xeb, 0x76, 0x87, 0x89, 0x78, 0x95, 0x64, 0x6a, 0x9b, 0xad, 0x5c, 0x52, 0xa3, 0x4e, 0xbf, 0xb1, 0x40, 0x31, 0xc0, 0xce, 0x3f, 0xd2, 0x23, 0x2d, 0xdc, 0xea, 0x1b, 0x15, 0xe4, 0x9, 0xf8, 0xf6, 0x7, 0x9a, 0x6b, 0x65, 0x94, 0x79, 0x88, 0x86, 0x77, 0x41, 0xb0, 0xbe, 0x4f, 0xa2, 0x53, 0x5d, 0xac, 0x7a, 0x8b, 0x85, 0x74, 0x99, 0x68, 0x66, 0x97, 0xa1, 0x50, 0x5e, 0xaf, 0x42, 0xb3, 0xbd, 0x4c, 0xd1, 0x20, 0x2e, 0xdf, 0x32, 0xc3, 0xcd, 0x3c, 0xa, 0xfb, 0xf5, 0x4, 0xe9, 0x18, 0x16, 0xe7, 0xa7, 0x56, 0x58, 0xa9, 0x44, 0xb5, 0xbb, 0x4a, 0x7c, 0x8d, 0x83, 0x72, 0x9f, 0x6e, 0x60, 0x91, 0xc, 0xfd, 0xf3, 0x2, 0xef, 0x1e, 0x10, 0xe1, 0xd7, 0x26, 0x28, 0xd9, 0x34, 0xc5, 0xcb, 0x3a, 0xec, 0x1d, 0x13, 0xe2, 0xf, 0xfe, 0xf0, 0x1, 0x37, 0xc6, 0xc8, 0x39, 0xd4, 0x25, 0x2b, 0xda, 0x47, 0xb6, 0xb8, 0x49, 0xa4, 0x55, 0x5b, 0xaa, 0x9c, 0x6d, 0x63, 0x92, 0x7f, 0x8e, 0x80, 0x71}, - {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27, 0x9b, 0x69, 0x62, 0x90, 0x74, 0x86, 0x8d, 0x7f, 0x58, 0xaa, 0xa1, 0x53, 0xb7, 0x45, 0x4e, 0xbc, 0x2b, 0xd9, 0xd2, 0x20, 0xc4, 0x36, 0x3d, 0xcf, 0xe8, 0x1a, 0x11, 0xe3, 0x7, 0xf5, 0xfe, 0xc, 0xb0, 0x42, 0x49, 0xbb, 0x5f, 0xad, 0xa6, 0x54, 0x73, 0x81, 0x8a, 0x78, 0x9c, 0x6e, 0x65, 0x97, 0x56, 0xa4, 0xaf, 0x5d, 0xb9, 0x4b, 0x40, 0xb2, 0x95, 0x67, 0x6c, 0x9e, 0x7a, 0x88, 0x83, 0x71, 0xcd, 0x3f, 0x34, 0xc6, 0x22, 0xd0, 0xdb, 0x29, 0xe, 0xfc, 0xf7, 0x5, 0xe1, 0x13, 0x18, 0xea, 0x7d, 0x8f, 0x84, 0x76, 0x92, 0x60, 0x6b, 0x99, 0xbe, 0x4c, 0x47, 0xb5, 0x51, 0xa3, 0xa8, 0x5a, 0xe6, 0x14, 0x1f, 0xed, 0x9, 0xfb, 0xf0, 0x2, 0x25, 0xd7, 0xdc, 0x2e, 0xca, 0x38, 0x33, 0xc1, 0xac, 0x5e, 0x55, 0xa7, 0x43, 0xb1, 0xba, 0x48, 0x6f, 0x9d, 0x96, 0x64, 0x80, 0x72, 0x79, 0x8b, 0x37, 0xc5, 0xce, 0x3c, 0xd8, 0x2a, 0x21, 0xd3, 0xf4, 0x6, 0xd, 0xff, 0x1b, 0xe9, 0xe2, 0x10, 0x87, 0x75, 0x7e, 0x8c, 0x68, 0x9a, 0x91, 0x63, 0x44, 0xb6, 0xbd, 0x4f, 0xab, 0x59, 0x52, 0xa0, 0x1c, 0xee, 0xe5, 0x17, 0xf3, 0x1, 0xa, 0xf8, 0xdf, 0x2d, 0x26, 0xd4, 0x30, 0xc2, 0xc9, 0x3b, 0xfa, 0x8, 0x3, 0xf1, 0x15, 0xe7, 0xec, 0x1e, 0x39, 0xcb, 0xc0, 0x32, 0xd6, 0x24, 0x2f, 0xdd, 0x61, 0x93, 0x98, 0x6a, 0x8e, 0x7c, 0x77, 0x85, 0xa2, 0x50, 0x5b, 0xa9, 0x4d, 0xbf, 0xb4, 0x46, 0xd1, 0x23, 0x28, 0xda, 0x3e, 0xcc, 0xc7, 0x35, 0x12, 0xe0, 0xeb, 0x19, 0xfd, 0xf, 0x4, 0xf6, 0x4a, 0xb8, 0xb3, 0x41, 0xa5, 0x57, 0x5c, 0xae, 0x89, 0x7b, 0x70, 0x82, 0x66, 0x94, 0x9f, 0x6d}, - {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28, 0x8b, 0x78, 0x70, 0x83, 0x60, 0x93, 0x9b, 0x68, 0x40, 0xb3, 0xbb, 0x48, 0xab, 0x58, 0x50, 0xa3, 0xb, 0xf8, 0xf0, 0x3, 0xe0, 0x13, 0x1b, 0xe8, 0xc0, 0x33, 0x3b, 0xc8, 0x2b, 0xd8, 0xd0, 0x23, 0x80, 0x73, 0x7b, 0x88, 0x6b, 0x98, 0x90, 0x63, 0x4b, 0xb8, 0xb0, 0x43, 0xa0, 0x53, 0x5b, 0xa8, 0x16, 0xe5, 0xed, 0x1e, 0xfd, 0xe, 0x6, 0xf5, 0xdd, 0x2e, 0x26, 0xd5, 0x36, 0xc5, 0xcd, 0x3e, 0x9d, 0x6e, 0x66, 0x95, 0x76, 0x85, 0x8d, 0x7e, 0x56, 0xa5, 0xad, 0x5e, 0xbd, 0x4e, 0x46, 0xb5, 0x1d, 0xee, 0xe6, 0x15, 0xf6, 0x5, 0xd, 0xfe, 0xd6, 0x25, 0x2d, 0xde, 0x3d, 0xce, 0xc6, 0x35, 0x96, 0x65, 0x6d, 0x9e, 0x7d, 0x8e, 0x86, 0x75, 0x5d, 0xae, 0xa6, 0x55, 0xb6, 0x45, 0x4d, 0xbe, 0x2c, 0xdf, 0xd7, 0x24, 0xc7, 0x34, 0x3c, 0xcf, 0xe7, 0x14, 0x1c, 0xef, 0xc, 0xff, 0xf7, 0x4, 0xa7, 0x54, 0x5c, 0xaf, 0x4c, 0xbf, 0xb7, 0x44, 0x6c, 0x9f, 0x97, 0x64, 0x87, 0x74, 0x7c, 0x8f, 0x27, 0xd4, 0xdc, 0x2f, 0xcc, 0x3f, 0x37, 0xc4, 0xec, 0x1f, 0x17, 0xe4, 0x7, 0xf4, 0xfc, 0xf, 0xac, 0x5f, 0x57, 0xa4, 0x47, 0xb4, 0xbc, 0x4f, 0x67, 0x94, 0x9c, 0x6f, 0x8c, 0x7f, 0x77, 0x84, 0x3a, 0xc9, 0xc1, 0x32, 0xd1, 0x22, 0x2a, 0xd9, 0xf1, 0x2, 0xa, 0xf9, 0x1a, 0xe9, 0xe1, 0x12, 0xb1, 0x42, 0x4a, 0xb9, 0x5a, 0xa9, 0xa1, 0x52, 0x7a, 0x89, 0x81, 0x72, 0x91, 0x62, 0x6a, 0x99, 0x31, 0xc2, 0xca, 0x39, 0xda, 0x29, 0x21, 0xd2, 0xfa, 0x9, 0x1, 0xf2, 0x11, 0xe2, 0xea, 0x19, 0xba, 0x49, 0x41, 0xb2, 0x51, 0xa2, 0xaa, 0x59, 0x71, 0x82, 0x8a, 0x79, 0x9a, 0x69, 0x61, 0x92}, - {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5, 0xfb, 0xf, 0xe, 0xfa, 0xc, 0xf8, 0xf9, 0xd, 0x8, 0xfc, 0xfd, 0x9, 0xff, 0xb, 0xa, 0xfe, 0xeb, 0x1f, 0x1e, 0xea, 0x1c, 0xe8, 0xe9, 0x1d, 0x18, 0xec, 0xed, 0x19, 0xef, 0x1b, 0x1a, 0xee, 0x10, 0xe4, 0xe5, 0x11, 0xe7, 0x13, 0x12, 0xe6, 0xe3, 0x17, 0x16, 0xe2, 0x14, 0xe0, 0xe1, 0x15, 0xcb, 0x3f, 0x3e, 0xca, 0x3c, 0xc8, 0xc9, 0x3d, 0x38, 0xcc, 0xcd, 0x39, 0xcf, 0x3b, 0x3a, 0xce, 0x30, 0xc4, 0xc5, 0x31, 0xc7, 0x33, 0x32, 0xc6, 0xc3, 0x37, 0x36, 0xc2, 0x34, 0xc0, 0xc1, 0x35, 0x20, 0xd4, 0xd5, 0x21, 0xd7, 0x23, 0x22, 0xd6, 0xd3, 0x27, 0x26, 0xd2, 0x24, 0xd0, 0xd1, 0x25, 0xdb, 0x2f, 0x2e, 0xda, 0x2c, 0xd8, 0xd9, 0x2d, 0x28, 0xdc, 0xdd, 0x29, 0xdf, 0x2b, 0x2a, 0xde, 0x8b, 0x7f, 0x7e, 0x8a, 0x7c, 0x88, 0x89, 0x7d, 0x78, 0x8c, 0x8d, 0x79, 0x8f, 0x7b, 0x7a, 0x8e, 0x70, 0x84, 0x85, 0x71, 0x87, 0x73, 0x72, 0x86, 0x83, 0x77, 0x76, 0x82, 0x74, 0x80, 0x81, 0x75, 0x60, 0x94, 0x95, 0x61, 0x97, 0x63, 0x62, 0x96, 0x93, 0x67, 0x66, 0x92, 0x64, 0x90, 0x91, 0x65, 0x9b, 0x6f, 0x6e, 0x9a, 0x6c, 0x98, 0x99, 0x6d, 0x68, 0x9c, 0x9d, 0x69, 0x9f, 0x6b, 0x6a, 0x9e, 0x40, 0xb4, 0xb5, 0x41, 0xb7, 0x43, 0x42, 0xb6, 0xb3, 0x47, 0x46, 0xb2, 0x44, 0xb0, 0xb1, 0x45, 0xbb, 0x4f, 0x4e, 0xba, 0x4c, 0xb8, 0xb9, 0x4d, 0x48, 0xbc, 0xbd, 0x49, 0xbf, 0x4b, 0x4a, 0xbe, 0xab, 0x5f, 0x5e, 0xaa, 0x5c, 0xa8, 0xa9, 0x5d, 0x58, 0xac, 0xad, 0x59, 0xaf, 0x5b, 0x5a, 0xae, 0x50, 0xa4, 0xa5, 0x51, 0xa7, 0x53, 0x52, 0xa6, 0xa3, 0x57, 0x56, 0xa2, 0x54, 0xa0, 0xa1, 0x55}, - {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa, 0xeb, 0x1e, 0x1c, 0xe9, 0x18, 0xed, 0xef, 0x1a, 0x10, 0xe5, 0xe7, 0x12, 0xe3, 0x16, 0x14, 0xe1, 0xcb, 0x3e, 0x3c, 0xc9, 0x38, 0xcd, 0xcf, 0x3a, 0x30, 0xc5, 0xc7, 0x32, 0xc3, 0x36, 0x34, 0xc1, 0x20, 0xd5, 0xd7, 0x22, 0xd3, 0x26, 0x24, 0xd1, 0xdb, 0x2e, 0x2c, 0xd9, 0x28, 0xdd, 0xdf, 0x2a, 0x8b, 0x7e, 0x7c, 0x89, 0x78, 0x8d, 0x8f, 0x7a, 0x70, 0x85, 0x87, 0x72, 0x83, 0x76, 0x74, 0x81, 0x60, 0x95, 0x97, 0x62, 0x93, 0x66, 0x64, 0x91, 0x9b, 0x6e, 0x6c, 0x99, 0x68, 0x9d, 0x9f, 0x6a, 0x40, 0xb5, 0xb7, 0x42, 0xb3, 0x46, 0x44, 0xb1, 0xbb, 0x4e, 0x4c, 0xb9, 0x48, 0xbd, 0xbf, 0x4a, 0xab, 0x5e, 0x5c, 0xa9, 0x58, 0xad, 0xaf, 0x5a, 0x50, 0xa5, 0xa7, 0x52, 0xa3, 0x56, 0x54, 0xa1, 0xb, 0xfe, 0xfc, 0x9, 0xf8, 0xd, 0xf, 0xfa, 0xf0, 0x5, 0x7, 0xf2, 0x3, 0xf6, 0xf4, 0x1, 0xe0, 0x15, 0x17, 0xe2, 0x13, 0xe6, 0xe4, 0x11, 0x1b, 0xee, 0xec, 0x19, 0xe8, 0x1d, 0x1f, 0xea, 0xc0, 0x35, 0x37, 0xc2, 0x33, 0xc6, 0xc4, 0x31, 0x3b, 0xce, 0xcc, 0x39, 0xc8, 0x3d, 0x3f, 0xca, 0x2b, 0xde, 0xdc, 0x29, 0xd8, 0x2d, 0x2f, 0xda, 0xd0, 0x25, 0x27, 0xd2, 0x23, 0xd6, 0xd4, 0x21, 0x80, 0x75, 0x77, 0x82, 0x73, 0x86, 0x84, 0x71, 0x7b, 0x8e, 0x8c, 0x79, 0x88, 0x7d, 0x7f, 0x8a, 0x6b, 0x9e, 0x9c, 0x69, 0x98, 0x6d, 0x6f, 0x9a, 0x90, 0x65, 0x67, 0x92, 0x63, 0x96, 0x94, 0x61, 0x4b, 0xbe, 0xbc, 0x49, 0xb8, 0x4d, 0x4f, 0xba, 0xb0, 0x45, 0x47, 0xb2, 0x43, 0xb6, 0xb4, 0x41, 0xa0, 0x55, 0x57, 0xa2, 0x53, 0xa6, 0xa4, 0x51, 0x5b, 0xae, 0xac, 0x59, 0xa8, 0x5d, 0x5f, 0xaa}, - {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b, 0xdb, 0x2d, 0x2a, 0xdc, 0x24, 0xd2, 0xd5, 0x23, 0x38, 0xce, 0xc9, 0x3f, 0xc7, 0x31, 0x36, 0xc0, 0xab, 0x5d, 0x5a, 0xac, 0x54, 0xa2, 0xa5, 0x53, 0x48, 0xbe, 0xb9, 0x4f, 0xb7, 0x41, 0x46, 0xb0, 0x70, 0x86, 0x81, 0x77, 0x8f, 0x79, 0x7e, 0x88, 0x93, 0x65, 0x62, 0x94, 0x6c, 0x9a, 0x9d, 0x6b, 0x4b, 0xbd, 0xba, 0x4c, 0xb4, 0x42, 0x45, 0xb3, 0xa8, 0x5e, 0x59, 0xaf, 0x57, 0xa1, 0xa6, 0x50, 0x90, 0x66, 0x61, 0x97, 0x6f, 0x99, 0x9e, 0x68, 0x73, 0x85, 0x82, 0x74, 0x8c, 0x7a, 0x7d, 0x8b, 0xe0, 0x16, 0x11, 0xe7, 0x1f, 0xe9, 0xee, 0x18, 0x3, 0xf5, 0xf2, 0x4, 0xfc, 0xa, 0xd, 0xfb, 0x3b, 0xcd, 0xca, 0x3c, 0xc4, 0x32, 0x35, 0xc3, 0xd8, 0x2e, 0x29, 0xdf, 0x27, 0xd1, 0xd6, 0x20, 0x96, 0x60, 0x67, 0x91, 0x69, 0x9f, 0x98, 0x6e, 0x75, 0x83, 0x84, 0x72, 0x8a, 0x7c, 0x7b, 0x8d, 0x4d, 0xbb, 0xbc, 0x4a, 0xb2, 0x44, 0x43, 0xb5, 0xae, 0x58, 0x5f, 0xa9, 0x51, 0xa7, 0xa0, 0x56, 0x3d, 0xcb, 0xcc, 0x3a, 0xc2, 0x34, 0x33, 0xc5, 0xde, 0x28, 0x2f, 0xd9, 0x21, 0xd7, 0xd0, 0x26, 0xe6, 0x10, 0x17, 0xe1, 0x19, 0xef, 0xe8, 0x1e, 0x5, 0xf3, 0xf4, 0x2, 0xfa, 0xc, 0xb, 0xfd, 0xdd, 0x2b, 0x2c, 0xda, 0x22, 0xd4, 0xd3, 0x25, 0x3e, 0xc8, 0xcf, 0x39, 0xc1, 0x37, 0x30, 0xc6, 0x6, 0xf0, 0xf7, 0x1, 0xf9, 0xf, 0x8, 0xfe, 0xe5, 0x13, 0x14, 0xe2, 0x1a, 0xec, 0xeb, 0x1d, 0x76, 0x80, 0x87, 0x71, 0x89, 0x7f, 0x78, 0x8e, 0x95, 0x63, 0x64, 0x92, 0x6a, 0x9c, 0x9b, 0x6d, 0xad, 0x5b, 0x5c, 0xaa, 0x52, 0xa4, 0xa3, 0x55, 0x4e, 0xb8, 0xbf, 0x49, 0xb1, 0x47, 0x40, 0xb6}, - {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14, 0xcb, 0x3c, 0x38, 0xcf, 0x30, 0xc7, 0xc3, 0x34, 0x20, 0xd7, 0xd3, 0x24, 0xdb, 0x2c, 0x28, 0xdf, 0x8b, 0x7c, 0x78, 0x8f, 0x70, 0x87, 0x83, 0x74, 0x60, 0x97, 0x93, 0x64, 0x9b, 0x6c, 0x68, 0x9f, 0x40, 0xb7, 0xb3, 0x44, 0xbb, 0x4c, 0x48, 0xbf, 0xab, 0x5c, 0x58, 0xaf, 0x50, 0xa7, 0xa3, 0x54, 0xb, 0xfc, 0xf8, 0xf, 0xf0, 0x7, 0x3, 0xf4, 0xe0, 0x17, 0x13, 0xe4, 0x1b, 0xec, 0xe8, 0x1f, 0xc0, 0x37, 0x33, 0xc4, 0x3b, 0xcc, 0xc8, 0x3f, 0x2b, 0xdc, 0xd8, 0x2f, 0xd0, 0x27, 0x23, 0xd4, 0x80, 0x77, 0x73, 0x84, 0x7b, 0x8c, 0x88, 0x7f, 0x6b, 0x9c, 0x98, 0x6f, 0x90, 0x67, 0x63, 0x94, 0x4b, 0xbc, 0xb8, 0x4f, 0xb0, 0x47, 0x43, 0xb4, 0xa0, 0x57, 0x53, 0xa4, 0x5b, 0xac, 0xa8, 0x5f, 0x16, 0xe1, 0xe5, 0x12, 0xed, 0x1a, 0x1e, 0xe9, 0xfd, 0xa, 0xe, 0xf9, 0x6, 0xf1, 0xf5, 0x2, 0xdd, 0x2a, 0x2e, 0xd9, 0x26, 0xd1, 0xd5, 0x22, 0x36, 0xc1, 0xc5, 0x32, 0xcd, 0x3a, 0x3e, 0xc9, 0x9d, 0x6a, 0x6e, 0x99, 0x66, 0x91, 0x95, 0x62, 0x76, 0x81, 0x85, 0x72, 0x8d, 0x7a, 0x7e, 0x89, 0x56, 0xa1, 0xa5, 0x52, 0xad, 0x5a, 0x5e, 0xa9, 0xbd, 0x4a, 0x4e, 0xb9, 0x46, 0xb1, 0xb5, 0x42, 0x1d, 0xea, 0xee, 0x19, 0xe6, 0x11, 0x15, 0xe2, 0xf6, 0x1, 0x5, 0xf2, 0xd, 0xfa, 0xfe, 0x9, 0xd6, 0x21, 0x25, 0xd2, 0x2d, 0xda, 0xde, 0x29, 0x3d, 0xca, 0xce, 0x39, 0xc6, 0x31, 0x35, 0xc2, 0x96, 0x61, 0x65, 0x92, 0x6d, 0x9a, 0x9e, 0x69, 0x7d, 0x8a, 0x8e, 0x79, 0x86, 0x71, 0x75, 0x82, 0x5d, 0xaa, 0xae, 0x59, 0xa6, 0x51, 0x55, 0xa2, 0xb6, 0x41, 0x45, 0xb2, 0x4d, 0xba, 0xbe, 0x49}, - {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41, 0x3b, 0xc3, 0xd6, 0x2e, 0xfc, 0x4, 0x11, 0xe9, 0xa8, 0x50, 0x45, 0xbd, 0x6f, 0x97, 0x82, 0x7a, 0x76, 0x8e, 0x9b, 0x63, 0xb1, 0x49, 0x5c, 0xa4, 0xe5, 0x1d, 0x8, 0xf0, 0x22, 0xda, 0xcf, 0x37, 0x4d, 0xb5, 0xa0, 0x58, 0x8a, 0x72, 0x67, 0x9f, 0xde, 0x26, 0x33, 0xcb, 0x19, 0xe1, 0xf4, 0xc, 0xec, 0x14, 0x1, 0xf9, 0x2b, 0xd3, 0xc6, 0x3e, 0x7f, 0x87, 0x92, 0x6a, 0xb8, 0x40, 0x55, 0xad, 0xd7, 0x2f, 0x3a, 0xc2, 0x10, 0xe8, 0xfd, 0x5, 0x44, 0xbc, 0xa9, 0x51, 0x83, 0x7b, 0x6e, 0x96, 0x9a, 0x62, 0x77, 0x8f, 0x5d, 0xa5, 0xb0, 0x48, 0x9, 0xf1, 0xe4, 0x1c, 0xce, 0x36, 0x23, 0xdb, 0xa1, 0x59, 0x4c, 0xb4, 0x66, 0x9e, 0x8b, 0x73, 0x32, 0xca, 0xdf, 0x27, 0xf5, 0xd, 0x18, 0xe0, 0xc5, 0x3d, 0x28, 0xd0, 0x2, 0xfa, 0xef, 0x17, 0x56, 0xae, 0xbb, 0x43, 0x91, 0x69, 0x7c, 0x84, 0xfe, 0x6, 0x13, 0xeb, 0x39, 0xc1, 0xd4, 0x2c, 0x6d, 0x95, 0x80, 0x78, 0xaa, 0x52, 0x47, 0xbf, 0xb3, 0x4b, 0x5e, 0xa6, 0x74, 0x8c, 0x99, 0x61, 0x20, 0xd8, 0xcd, 0x35, 0xe7, 0x1f, 0xa, 0xf2, 0x88, 0x70, 0x65, 0x9d, 0x4f, 0xb7, 0xa2, 0x5a, 0x1b, 0xe3, 0xf6, 0xe, 0xdc, 0x24, 0x31, 0xc9, 0x29, 0xd1, 0xc4, 0x3c, 0xee, 0x16, 0x3, 0xfb, 0xba, 0x42, 0x57, 0xaf, 0x7d, 0x85, 0x90, 0x68, 0x12, 0xea, 0xff, 0x7, 0xd5, 0x2d, 0x38, 0xc0, 0x81, 0x79, 0x6c, 0x94, 0x46, 0xbe, 0xab, 0x53, 0x5f, 0xa7, 0xb2, 0x4a, 0x98, 0x60, 0x75, 0x8d, 0xcc, 0x34, 0x21, 0xd9, 0xb, 0xf3, 0xe6, 0x1e, 0x64, 0x9c, 0x89, 0x71, 0xa3, 0x5b, 0x4e, 0xb6, 0xf7, 0xf, 0x1a, 0xe2, 0x30, 0xc8, 0xdd, 0x25}, - {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e, 0x2b, 0xd2, 0xc4, 0x3d, 0xe8, 0x11, 0x7, 0xfe, 0xb0, 0x49, 0x5f, 0xa6, 0x73, 0x8a, 0x9c, 0x65, 0x56, 0xaf, 0xb9, 0x40, 0x95, 0x6c, 0x7a, 0x83, 0xcd, 0x34, 0x22, 0xdb, 0xe, 0xf7, 0xe1, 0x18, 0x7d, 0x84, 0x92, 0x6b, 0xbe, 0x47, 0x51, 0xa8, 0xe6, 0x1f, 0x9, 0xf0, 0x25, 0xdc, 0xca, 0x33, 0xac, 0x55, 0x43, 0xba, 0x6f, 0x96, 0x80, 0x79, 0x37, 0xce, 0xd8, 0x21, 0xf4, 0xd, 0x1b, 0xe2, 0x87, 0x7e, 0x68, 0x91, 0x44, 0xbd, 0xab, 0x52, 0x1c, 0xe5, 0xf3, 0xa, 0xdf, 0x26, 0x30, 0xc9, 0xfa, 0x3, 0x15, 0xec, 0x39, 0xc0, 0xd6, 0x2f, 0x61, 0x98, 0x8e, 0x77, 0xa2, 0x5b, 0x4d, 0xb4, 0xd1, 0x28, 0x3e, 0xc7, 0x12, 0xeb, 0xfd, 0x4, 0x4a, 0xb3, 0xa5, 0x5c, 0x89, 0x70, 0x66, 0x9f, 0x45, 0xbc, 0xaa, 0x53, 0x86, 0x7f, 0x69, 0x90, 0xde, 0x27, 0x31, 0xc8, 0x1d, 0xe4, 0xf2, 0xb, 0x6e, 0x97, 0x81, 0x78, 0xad, 0x54, 0x42, 0xbb, 0xf5, 0xc, 0x1a, 0xe3, 0x36, 0xcf, 0xd9, 0x20, 0x13, 0xea, 0xfc, 0x5, 0xd0, 0x29, 0x3f, 0xc6, 0x88, 0x71, 0x67, 0x9e, 0x4b, 0xb2, 0xa4, 0x5d, 0x38, 0xc1, 0xd7, 0x2e, 0xfb, 0x2, 0x14, 0xed, 0xa3, 0x5a, 0x4c, 0xb5, 0x60, 0x99, 0x8f, 0x76, 0xe9, 0x10, 0x6, 0xff, 0x2a, 0xd3, 0xc5, 0x3c, 0x72, 0x8b, 0x9d, 0x64, 0xb1, 0x48, 0x5e, 0xa7, 0xc2, 0x3b, 0x2d, 0xd4, 0x1, 0xf8, 0xee, 0x17, 0x59, 0xa0, 0xb6, 0x4f, 0x9a, 0x63, 0x75, 0x8c, 0xbf, 0x46, 0x50, 0xa9, 0x7c, 0x85, 0x93, 0x6a, 0x24, 0xdd, 0xcb, 0x32, 0xe7, 0x1e, 0x8, 0xf1, 0x94, 0x6d, 0x7b, 0x82, 0x57, 0xae, 0xb8, 0x41, 0xf, 0xf6, 0xe0, 0x19, 0xcc, 0x35, 0x23, 0xda}, - {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f, 0x1b, 0xe1, 0xf2, 0x8, 0xd4, 0x2e, 0x3d, 0xc7, 0x98, 0x62, 0x71, 0x8b, 0x57, 0xad, 0xbe, 0x44, 0x36, 0xcc, 0xdf, 0x25, 0xf9, 0x3, 0x10, 0xea, 0xb5, 0x4f, 0x5c, 0xa6, 0x7a, 0x80, 0x93, 0x69, 0x2d, 0xd7, 0xc4, 0x3e, 0xe2, 0x18, 0xb, 0xf1, 0xae, 0x54, 0x47, 0xbd, 0x61, 0x9b, 0x88, 0x72, 0x6c, 0x96, 0x85, 0x7f, 0xa3, 0x59, 0x4a, 0xb0, 0xef, 0x15, 0x6, 0xfc, 0x20, 0xda, 0xc9, 0x33, 0x77, 0x8d, 0x9e, 0x64, 0xb8, 0x42, 0x51, 0xab, 0xf4, 0xe, 0x1d, 0xe7, 0x3b, 0xc1, 0xd2, 0x28, 0x5a, 0xa0, 0xb3, 0x49, 0x95, 0x6f, 0x7c, 0x86, 0xd9, 0x23, 0x30, 0xca, 0x16, 0xec, 0xff, 0x5, 0x41, 0xbb, 0xa8, 0x52, 0x8e, 0x74, 0x67, 0x9d, 0xc2, 0x38, 0x2b, 0xd1, 0xd, 0xf7, 0xe4, 0x1e, 0xd8, 0x22, 0x31, 0xcb, 0x17, 0xed, 0xfe, 0x4, 0x5b, 0xa1, 0xb2, 0x48, 0x94, 0x6e, 0x7d, 0x87, 0xc3, 0x39, 0x2a, 0xd0, 0xc, 0xf6, 0xe5, 0x1f, 0x40, 0xba, 0xa9, 0x53, 0x8f, 0x75, 0x66, 0x9c, 0xee, 0x14, 0x7, 0xfd, 0x21, 0xdb, 0xc8, 0x32, 0x6d, 0x97, 0x84, 0x7e, 0xa2, 0x58, 0x4b, 0xb1, 0xf5, 0xf, 0x1c, 0xe6, 0x3a, 0xc0, 0xd3, 0x29, 0x76, 0x8c, 0x9f, 0x65, 0xb9, 0x43, 0x50, 0xaa, 0xb4, 0x4e, 0x5d, 0xa7, 0x7b, 0x81, 0x92, 0x68, 0x37, 0xcd, 0xde, 0x24, 0xf8, 0x2, 0x11, 0xeb, 0xaf, 0x55, 0x46, 0xbc, 0x60, 0x9a, 0x89, 0x73, 0x2c, 0xd6, 0xc5, 0x3f, 0xe3, 0x19, 0xa, 0xf0, 0x82, 0x78, 0x6b, 0x91, 0x4d, 0xb7, 0xa4, 0x5e, 0x1, 0xfb, 0xe8, 0x12, 0xce, 0x34, 0x27, 0xdd, 0x99, 0x63, 0x70, 0x8a, 0x56, 0xac, 0xbf, 0x45, 0x1a, 0xe0, 0xf3, 0x9, 0xd5, 0x2f, 0x3c, 0xc6}, - {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50, 0xb, 0xf0, 0xe0, 0x1b, 0xc0, 0x3b, 0x2b, 0xd0, 0x80, 0x7b, 0x6b, 0x90, 0x4b, 0xb0, 0xa0, 0x5b, 0x16, 0xed, 0xfd, 0x6, 0xdd, 0x26, 0x36, 0xcd, 0x9d, 0x66, 0x76, 0x8d, 0x56, 0xad, 0xbd, 0x46, 0x1d, 0xe6, 0xf6, 0xd, 0xd6, 0x2d, 0x3d, 0xc6, 0x96, 0x6d, 0x7d, 0x86, 0x5d, 0xa6, 0xb6, 0x4d, 0x2c, 0xd7, 0xc7, 0x3c, 0xe7, 0x1c, 0xc, 0xf7, 0xa7, 0x5c, 0x4c, 0xb7, 0x6c, 0x97, 0x87, 0x7c, 0x27, 0xdc, 0xcc, 0x37, 0xec, 0x17, 0x7, 0xfc, 0xac, 0x57, 0x47, 0xbc, 0x67, 0x9c, 0x8c, 0x77, 0x3a, 0xc1, 0xd1, 0x2a, 0xf1, 0xa, 0x1a, 0xe1, 0xb1, 0x4a, 0x5a, 0xa1, 0x7a, 0x81, 0x91, 0x6a, 0x31, 0xca, 0xda, 0x21, 0xfa, 0x1, 0x11, 0xea, 0xba, 0x41, 0x51, 0xaa, 0x71, 0x8a, 0x9a, 0x61, 0x58, 0xa3, 0xb3, 0x48, 0x93, 0x68, 0x78, 0x83, 0xd3, 0x28, 0x38, 0xc3, 0x18, 0xe3, 0xf3, 0x8, 0x53, 0xa8, 0xb8, 0x43, 0x98, 0x63, 0x73, 0x88, 0xd8, 0x23, 0x33, 0xc8, 0x13, 0xe8, 0xf8, 0x3, 0x4e, 0xb5, 0xa5, 0x5e, 0x85, 0x7e, 0x6e, 0x95, 0xc5, 0x3e, 0x2e, 0xd5, 0xe, 0xf5, 0xe5, 0x1e, 0x45, 0xbe, 0xae, 0x55, 0x8e, 0x75, 0x65, 0x9e, 0xce, 0x35, 0x25, 0xde, 0x5, 0xfe, 0xee, 0x15, 0x74, 0x8f, 0x9f, 0x64, 0xbf, 0x44, 0x54, 0xaf, 0xff, 0x4, 0x14, 0xef, 0x34, 0xcf, 0xdf, 0x24, 0x7f, 0x84, 0x94, 0x6f, 0xb4, 0x4f, 0x5f, 0xa4, 0xf4, 0xf, 0x1f, 0xe4, 0x3f, 0xc4, 0xd4, 0x2f, 0x62, 0x99, 0x89, 0x72, 0xa9, 0x52, 0x42, 0xb9, 0xe9, 0x12, 0x2, 0xf9, 0x22, 0xd9, 0xc9, 0x32, 0x69, 0x92, 0x82, 0x79, 0xa2, 0x59, 0x49, 0xb2, 0xe2, 0x19, 0x9, 0xf2, 0x29, 0xd2, 0xc2, 0x39}, - {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d, 0x7b, 0x87, 0x9e, 0x62, 0xac, 0x50, 0x49, 0xb5, 0xc8, 0x34, 0x2d, 0xd1, 0x1f, 0xe3, 0xfa, 0x6, 0xf6, 0xa, 0x13, 0xef, 0x21, 0xdd, 0xc4, 0x38, 0x45, 0xb9, 0xa0, 0x5c, 0x92, 0x6e, 0x77, 0x8b, 0x8d, 0x71, 0x68, 0x94, 0x5a, 0xa6, 0xbf, 0x43, 0x3e, 0xc2, 0xdb, 0x27, 0xe9, 0x15, 0xc, 0xf0, 0xf1, 0xd, 0x14, 0xe8, 0x26, 0xda, 0xc3, 0x3f, 0x42, 0xbe, 0xa7, 0x5b, 0x95, 0x69, 0x70, 0x8c, 0x8a, 0x76, 0x6f, 0x93, 0x5d, 0xa1, 0xb8, 0x44, 0x39, 0xc5, 0xdc, 0x20, 0xee, 0x12, 0xb, 0xf7, 0x7, 0xfb, 0xe2, 0x1e, 0xd0, 0x2c, 0x35, 0xc9, 0xb4, 0x48, 0x51, 0xad, 0x63, 0x9f, 0x86, 0x7a, 0x7c, 0x80, 0x99, 0x65, 0xab, 0x57, 0x4e, 0xb2, 0xcf, 0x33, 0x2a, 0xd6, 0x18, 0xe4, 0xfd, 0x1, 0xff, 0x3, 0x1a, 0xe6, 0x28, 0xd4, 0xcd, 0x31, 0x4c, 0xb0, 0xa9, 0x55, 0x9b, 0x67, 0x7e, 0x82, 0x84, 0x78, 0x61, 0x9d, 0x53, 0xaf, 0xb6, 0x4a, 0x37, 0xcb, 0xd2, 0x2e, 0xe0, 0x1c, 0x5, 0xf9, 0x9, 0xf5, 0xec, 0x10, 0xde, 0x22, 0x3b, 0xc7, 0xba, 0x46, 0x5f, 0xa3, 0x6d, 0x91, 0x88, 0x74, 0x72, 0x8e, 0x97, 0x6b, 0xa5, 0x59, 0x40, 0xbc, 0xc1, 0x3d, 0x24, 0xd8, 0x16, 0xea, 0xf3, 0xf, 0xe, 0xf2, 0xeb, 0x17, 0xd9, 0x25, 0x3c, 0xc0, 0xbd, 0x41, 0x58, 0xa4, 0x6a, 0x96, 0x8f, 0x73, 0x75, 0x89, 0x90, 0x6c, 0xa2, 0x5e, 0x47, 0xbb, 0xc6, 0x3a, 0x23, 0xdf, 0x11, 0xed, 0xf4, 0x8, 0xf8, 0x4, 0x1d, 0xe1, 0x2f, 0xd3, 0xca, 0x36, 0x4b, 0xb7, 0xae, 0x52, 0x9c, 0x60, 0x79, 0x85, 0x83, 0x7f, 0x66, 0x9a, 0x54, 0xa8, 0xb1, 0x4d, 0x30, 0xcc, 0xd5, 0x29, 0xe7, 0x1b, 0x2, 0xfe}, - {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72, 0x6b, 0x96, 0x8c, 0x71, 0xb8, 0x45, 0x5f, 0xa2, 0xd0, 0x2d, 0x37, 0xca, 0x3, 0xfe, 0xe4, 0x19, 0xd6, 0x2b, 0x31, 0xcc, 0x5, 0xf8, 0xe2, 0x1f, 0x6d, 0x90, 0x8a, 0x77, 0xbe, 0x43, 0x59, 0xa4, 0xbd, 0x40, 0x5a, 0xa7, 0x6e, 0x93, 0x89, 0x74, 0x6, 0xfb, 0xe1, 0x1c, 0xd5, 0x28, 0x32, 0xcf, 0xb1, 0x4c, 0x56, 0xab, 0x62, 0x9f, 0x85, 0x78, 0xa, 0xf7, 0xed, 0x10, 0xd9, 0x24, 0x3e, 0xc3, 0xda, 0x27, 0x3d, 0xc0, 0x9, 0xf4, 0xee, 0x13, 0x61, 0x9c, 0x86, 0x7b, 0xb2, 0x4f, 0x55, 0xa8, 0x67, 0x9a, 0x80, 0x7d, 0xb4, 0x49, 0x53, 0xae, 0xdc, 0x21, 0x3b, 0xc6, 0xf, 0xf2, 0xe8, 0x15, 0xc, 0xf1, 0xeb, 0x16, 0xdf, 0x22, 0x38, 0xc5, 0xb7, 0x4a, 0x50, 0xad, 0x64, 0x99, 0x83, 0x7e, 0x7f, 0x82, 0x98, 0x65, 0xac, 0x51, 0x4b, 0xb6, 0xc4, 0x39, 0x23, 0xde, 0x17, 0xea, 0xf0, 0xd, 0x14, 0xe9, 0xf3, 0xe, 0xc7, 0x3a, 0x20, 0xdd, 0xaf, 0x52, 0x48, 0xb5, 0x7c, 0x81, 0x9b, 0x66, 0xa9, 0x54, 0x4e, 0xb3, 0x7a, 0x87, 0x9d, 0x60, 0x12, 0xef, 0xf5, 0x8, 0xc1, 0x3c, 0x26, 0xdb, 0xc2, 0x3f, 0x25, 0xd8, 0x11, 0xec, 0xf6, 0xb, 0x79, 0x84, 0x9e, 0x63, 0xaa, 0x57, 0x4d, 0xb0, 0xce, 0x33, 0x29, 0xd4, 0x1d, 0xe0, 0xfa, 0x7, 0x75, 0x88, 0x92, 0x6f, 0xa6, 0x5b, 0x41, 0xbc, 0xa5, 0x58, 0x42, 0xbf, 0x76, 0x8b, 0x91, 0x6c, 0x1e, 0xe3, 0xf9, 0x4, 0xcd, 0x30, 0x2a, 0xd7, 0x18, 0xe5, 0xff, 0x2, 0xcb, 0x36, 0x2c, 0xd1, 0xa3, 0x5e, 0x44, 0xb9, 0x70, 0x8d, 0x97, 0x6a, 0x73, 0x8e, 0x94, 0x69, 0xa0, 0x5d, 0x47, 0xba, 0xc8, 0x35, 0x2f, 0xd2, 0x1b, 0xe6, 0xfc, 0x1}, - {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63, 0x5b, 0xa5, 0xba, 0x44, 0x84, 0x7a, 0x65, 0x9b, 0xf8, 0x6, 0x19, 0xe7, 0x27, 0xd9, 0xc6, 0x38, 0xb6, 0x48, 0x57, 0xa9, 0x69, 0x97, 0x88, 0x76, 0x15, 0xeb, 0xf4, 0xa, 0xca, 0x34, 0x2b, 0xd5, 0xed, 0x13, 0xc, 0xf2, 0x32, 0xcc, 0xd3, 0x2d, 0x4e, 0xb0, 0xaf, 0x51, 0x91, 0x6f, 0x70, 0x8e, 0x71, 0x8f, 0x90, 0x6e, 0xae, 0x50, 0x4f, 0xb1, 0xd2, 0x2c, 0x33, 0xcd, 0xd, 0xf3, 0xec, 0x12, 0x2a, 0xd4, 0xcb, 0x35, 0xf5, 0xb, 0x14, 0xea, 0x89, 0x77, 0x68, 0x96, 0x56, 0xa8, 0xb7, 0x49, 0xc7, 0x39, 0x26, 0xd8, 0x18, 0xe6, 0xf9, 0x7, 0x64, 0x9a, 0x85, 0x7b, 0xbb, 0x45, 0x5a, 0xa4, 0x9c, 0x62, 0x7d, 0x83, 0x43, 0xbd, 0xa2, 0x5c, 0x3f, 0xc1, 0xde, 0x20, 0xe0, 0x1e, 0x1, 0xff, 0xe2, 0x1c, 0x3, 0xfd, 0x3d, 0xc3, 0xdc, 0x22, 0x41, 0xbf, 0xa0, 0x5e, 0x9e, 0x60, 0x7f, 0x81, 0xb9, 0x47, 0x58, 0xa6, 0x66, 0x98, 0x87, 0x79, 0x1a, 0xe4, 0xfb, 0x5, 0xc5, 0x3b, 0x24, 0xda, 0x54, 0xaa, 0xb5, 0x4b, 0x8b, 0x75, 0x6a, 0x94, 0xf7, 0x9, 0x16, 0xe8, 0x28, 0xd6, 0xc9, 0x37, 0xf, 0xf1, 0xee, 0x10, 0xd0, 0x2e, 0x31, 0xcf, 0xac, 0x52, 0x4d, 0xb3, 0x73, 0x8d, 0x92, 0x6c, 0x93, 0x6d, 0x72, 0x8c, 0x4c, 0xb2, 0xad, 0x53, 0x30, 0xce, 0xd1, 0x2f, 0xef, 0x11, 0xe, 0xf0, 0xc8, 0x36, 0x29, 0xd7, 0x17, 0xe9, 0xf6, 0x8, 0x6b, 0x95, 0x8a, 0x74, 0xb4, 0x4a, 0x55, 0xab, 0x25, 0xdb, 0xc4, 0x3a, 0xfa, 0x4, 0x1b, 0xe5, 0x86, 0x78, 0x67, 0x99, 0x59, 0xa7, 0xb8, 0x46, 0x7e, 0x80, 0x9f, 0x61, 0xa1, 0x5f, 0x40, 0xbe, 0xdd, 0x23, 0x3c, 0xc2, 0x2, 0xfc, 0xe3, 0x1d}, - {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c, 0x4b, 0xb4, 0xa8, 0x57, 0x90, 0x6f, 0x73, 0x8c, 0xe0, 0x1f, 0x3, 0xfc, 0x3b, 0xc4, 0xd8, 0x27, 0x96, 0x69, 0x75, 0x8a, 0x4d, 0xb2, 0xae, 0x51, 0x3d, 0xc2, 0xde, 0x21, 0xe6, 0x19, 0x5, 0xfa, 0xdd, 0x22, 0x3e, 0xc1, 0x6, 0xf9, 0xe5, 0x1a, 0x76, 0x89, 0x95, 0x6a, 0xad, 0x52, 0x4e, 0xb1, 0x31, 0xce, 0xd2, 0x2d, 0xea, 0x15, 0x9, 0xf6, 0x9a, 0x65, 0x79, 0x86, 0x41, 0xbe, 0xa2, 0x5d, 0x7a, 0x85, 0x99, 0x66, 0xa1, 0x5e, 0x42, 0xbd, 0xd1, 0x2e, 0x32, 0xcd, 0xa, 0xf5, 0xe9, 0x16, 0xa7, 0x58, 0x44, 0xbb, 0x7c, 0x83, 0x9f, 0x60, 0xc, 0xf3, 0xef, 0x10, 0xd7, 0x28, 0x34, 0xcb, 0xec, 0x13, 0xf, 0xf0, 0x37, 0xc8, 0xd4, 0x2b, 0x47, 0xb8, 0xa4, 0x5b, 0x9c, 0x63, 0x7f, 0x80, 0x62, 0x9d, 0x81, 0x7e, 0xb9, 0x46, 0x5a, 0xa5, 0xc9, 0x36, 0x2a, 0xd5, 0x12, 0xed, 0xf1, 0xe, 0x29, 0xd6, 0xca, 0x35, 0xf2, 0xd, 0x11, 0xee, 0x82, 0x7d, 0x61, 0x9e, 0x59, 0xa6, 0xba, 0x45, 0xf4, 0xb, 0x17, 0xe8, 0x2f, 0xd0, 0xcc, 0x33, 0x5f, 0xa0, 0xbc, 0x43, 0x84, 0x7b, 0x67, 0x98, 0xbf, 0x40, 0x5c, 0xa3, 0x64, 0x9b, 0x87, 0x78, 0x14, 0xeb, 0xf7, 0x8, 0xcf, 0x30, 0x2c, 0xd3, 0x53, 0xac, 0xb0, 0x4f, 0x88, 0x77, 0x6b, 0x94, 0xf8, 0x7, 0x1b, 0xe4, 0x23, 0xdc, 0xc0, 0x3f, 0x18, 0xe7, 0xfb, 0x4, 0xc3, 0x3c, 0x20, 0xdf, 0xb3, 0x4c, 0x50, 0xaf, 0x68, 0x97, 0x8b, 0x74, 0xc5, 0x3a, 0x26, 0xd9, 0x1e, 0xe1, 0xfd, 0x2, 0x6e, 0x91, 0x8d, 0x72, 0xb5, 0x4a, 0x56, 0xa9, 0x8e, 0x71, 0x6d, 0x92, 0x55, 0xaa, 0xb6, 0x49, 0x25, 0xda, 0xc6, 0x39, 0xfe, 0x1, 0x1d, 0xe2}} - -var mulTableLow = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, - {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, - {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, - {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, - {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, - {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, - {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, - {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, - {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, - {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, - {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, - {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, - {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, - {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, - {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, - {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, - {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, - {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, - {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, - {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, - {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, - {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, - {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, - {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, - {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, - {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, - {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, - {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, - {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, - {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, - {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, - {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, - {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, - {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, - {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, - {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, - {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, - {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, - {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, - {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, - {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, - {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, - {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, - {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, - {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, - {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, - {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, - {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, - {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, - {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, - {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, - {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, - {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, - {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, - {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, - {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, - {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, - {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, - {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, - {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, - {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, - {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, - {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, - {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, - {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, - {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, - {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, - {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, - {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, - {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, - {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, - {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, - {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, - {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, - {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, - {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}, - {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, - {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, - {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, - {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, - {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, - {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, - {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, - {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, - {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, - {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, - {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, - {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, - {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, - {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, - {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, - {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, - {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, - {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, - {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, - {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, - {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, - {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, - {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, - {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, - {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, - {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, - {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, - {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, - {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, - {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, - {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, - {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, - {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, - {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, - {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, - {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, - {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, - {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, - {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, - {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, - {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, - {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, - {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, - {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, - {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, - {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, - {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, - {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, - {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, - {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, - {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, - {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, - {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, - {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, - {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, - {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, - {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, - {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, - {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, - {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, - {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, - {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, - {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, - {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, - {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, - {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, - {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, - {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, - {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, - {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, - {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, - {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, - {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, - {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, - {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, - {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, - {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, - {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, - {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, - {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, - {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, - {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, - {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, - {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, - {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, - {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, - {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, - {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, - {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, - {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, - {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, - {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, - {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, - {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, - {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, - {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, - {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, - {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, - {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, - {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, - {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, - {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, - {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, - {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, - {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, - {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, - {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, - {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, - {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, - {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, - {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, - {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, - {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, - {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, - {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, - {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, - {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, - {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, - {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, - {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, - {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, - {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, - {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, - {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, - {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, - {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, - {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, - {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, - {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, - {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, - {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, - {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, - {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, - {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, - {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, - {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, - {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, - {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, - {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, - {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, - {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, - {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, - {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, - {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, - {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, - {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, - {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, - {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, - {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, - {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, - {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, - {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, - {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, - {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, - {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, - {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, - {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, - {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, - {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, - {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, - {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, - {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, - {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, - {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, - {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, - {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, - {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, - {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, - {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, - {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, - {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, - {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, - {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, - {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, - {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, - {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, - {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, - {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, - {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, - {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}} -var mulTableHigh = [256][16]uint8{{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, - {0x0, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xa0, 0xb0, 0xc0, 0xd0, 0xe0, 0xf0}, - {0x0, 0x20, 0x40, 0x60, 0x80, 0xa0, 0xc0, 0xe0, 0x1d, 0x3d, 0x5d, 0x7d, 0x9d, 0xbd, 0xdd, 0xfd}, - {0x0, 0x30, 0x60, 0x50, 0xc0, 0xf0, 0xa0, 0x90, 0x9d, 0xad, 0xfd, 0xcd, 0x5d, 0x6d, 0x3d, 0xd}, - {0x0, 0x40, 0x80, 0xc0, 0x1d, 0x5d, 0x9d, 0xdd, 0x3a, 0x7a, 0xba, 0xfa, 0x27, 0x67, 0xa7, 0xe7}, - {0x0, 0x50, 0xa0, 0xf0, 0x5d, 0xd, 0xfd, 0xad, 0xba, 0xea, 0x1a, 0x4a, 0xe7, 0xb7, 0x47, 0x17}, - {0x0, 0x60, 0xc0, 0xa0, 0x9d, 0xfd, 0x5d, 0x3d, 0x27, 0x47, 0xe7, 0x87, 0xba, 0xda, 0x7a, 0x1a}, - {0x0, 0x70, 0xe0, 0x90, 0xdd, 0xad, 0x3d, 0x4d, 0xa7, 0xd7, 0x47, 0x37, 0x7a, 0xa, 0x9a, 0xea}, - {0x0, 0x80, 0x1d, 0x9d, 0x3a, 0xba, 0x27, 0xa7, 0x74, 0xf4, 0x69, 0xe9, 0x4e, 0xce, 0x53, 0xd3}, - {0x0, 0x90, 0x3d, 0xad, 0x7a, 0xea, 0x47, 0xd7, 0xf4, 0x64, 0xc9, 0x59, 0x8e, 0x1e, 0xb3, 0x23}, - {0x0, 0xa0, 0x5d, 0xfd, 0xba, 0x1a, 0xe7, 0x47, 0x69, 0xc9, 0x34, 0x94, 0xd3, 0x73, 0x8e, 0x2e}, - {0x0, 0xb0, 0x7d, 0xcd, 0xfa, 0x4a, 0x87, 0x37, 0xe9, 0x59, 0x94, 0x24, 0x13, 0xa3, 0x6e, 0xde}, - {0x0, 0xc0, 0x9d, 0x5d, 0x27, 0xe7, 0xba, 0x7a, 0x4e, 0x8e, 0xd3, 0x13, 0x69, 0xa9, 0xf4, 0x34}, - {0x0, 0xd0, 0xbd, 0x6d, 0x67, 0xb7, 0xda, 0xa, 0xce, 0x1e, 0x73, 0xa3, 0xa9, 0x79, 0x14, 0xc4}, - {0x0, 0xe0, 0xdd, 0x3d, 0xa7, 0x47, 0x7a, 0x9a, 0x53, 0xb3, 0x8e, 0x6e, 0xf4, 0x14, 0x29, 0xc9}, - {0x0, 0xf0, 0xfd, 0xd, 0xe7, 0x17, 0x1a, 0xea, 0xd3, 0x23, 0x2e, 0xde, 0x34, 0xc4, 0xc9, 0x39}, - {0x0, 0x1d, 0x3a, 0x27, 0x74, 0x69, 0x4e, 0x53, 0xe8, 0xf5, 0xd2, 0xcf, 0x9c, 0x81, 0xa6, 0xbb}, - {0x0, 0xd, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b}, - {0x0, 0x3d, 0x7a, 0x47, 0xf4, 0xc9, 0x8e, 0xb3, 0xf5, 0xc8, 0x8f, 0xb2, 0x1, 0x3c, 0x7b, 0x46}, - {0x0, 0x2d, 0x5a, 0x77, 0xb4, 0x99, 0xee, 0xc3, 0x75, 0x58, 0x2f, 0x2, 0xc1, 0xec, 0x9b, 0xb6}, - {0x0, 0x5d, 0xba, 0xe7, 0x69, 0x34, 0xd3, 0x8e, 0xd2, 0x8f, 0x68, 0x35, 0xbb, 0xe6, 0x1, 0x5c}, - {0x0, 0x4d, 0x9a, 0xd7, 0x29, 0x64, 0xb3, 0xfe, 0x52, 0x1f, 0xc8, 0x85, 0x7b, 0x36, 0xe1, 0xac}, - {0x0, 0x7d, 0xfa, 0x87, 0xe9, 0x94, 0x13, 0x6e, 0xcf, 0xb2, 0x35, 0x48, 0x26, 0x5b, 0xdc, 0xa1}, - {0x0, 0x6d, 0xda, 0xb7, 0xa9, 0xc4, 0x73, 0x1e, 0x4f, 0x22, 0x95, 0xf8, 0xe6, 0x8b, 0x3c, 0x51}, - {0x0, 0x9d, 0x27, 0xba, 0x4e, 0xd3, 0x69, 0xf4, 0x9c, 0x1, 0xbb, 0x26, 0xd2, 0x4f, 0xf5, 0x68}, - {0x0, 0x8d, 0x7, 0x8a, 0xe, 0x83, 0x9, 0x84, 0x1c, 0x91, 0x1b, 0x96, 0x12, 0x9f, 0x15, 0x98}, - {0x0, 0xbd, 0x67, 0xda, 0xce, 0x73, 0xa9, 0x14, 0x81, 0x3c, 0xe6, 0x5b, 0x4f, 0xf2, 0x28, 0x95}, - {0x0, 0xad, 0x47, 0xea, 0x8e, 0x23, 0xc9, 0x64, 0x1, 0xac, 0x46, 0xeb, 0x8f, 0x22, 0xc8, 0x65}, - {0x0, 0xdd, 0xa7, 0x7a, 0x53, 0x8e, 0xf4, 0x29, 0xa6, 0x7b, 0x1, 0xdc, 0xf5, 0x28, 0x52, 0x8f}, - {0x0, 0xcd, 0x87, 0x4a, 0x13, 0xde, 0x94, 0x59, 0x26, 0xeb, 0xa1, 0x6c, 0x35, 0xf8, 0xb2, 0x7f}, - {0x0, 0xfd, 0xe7, 0x1a, 0xd3, 0x2e, 0x34, 0xc9, 0xbb, 0x46, 0x5c, 0xa1, 0x68, 0x95, 0x8f, 0x72}, - {0x0, 0xed, 0xc7, 0x2a, 0x93, 0x7e, 0x54, 0xb9, 0x3b, 0xd6, 0xfc, 0x11, 0xa8, 0x45, 0x6f, 0x82}, - {0x0, 0x3a, 0x74, 0x4e, 0xe8, 0xd2, 0x9c, 0xa6, 0xcd, 0xf7, 0xb9, 0x83, 0x25, 0x1f, 0x51, 0x6b}, - {0x0, 0x2a, 0x54, 0x7e, 0xa8, 0x82, 0xfc, 0xd6, 0x4d, 0x67, 0x19, 0x33, 0xe5, 0xcf, 0xb1, 0x9b}, - {0x0, 0x1a, 0x34, 0x2e, 0x68, 0x72, 0x5c, 0x46, 0xd0, 0xca, 0xe4, 0xfe, 0xb8, 0xa2, 0x8c, 0x96}, - {0x0, 0xa, 0x14, 0x1e, 0x28, 0x22, 0x3c, 0x36, 0x50, 0x5a, 0x44, 0x4e, 0x78, 0x72, 0x6c, 0x66}, - {0x0, 0x7a, 0xf4, 0x8e, 0xf5, 0x8f, 0x1, 0x7b, 0xf7, 0x8d, 0x3, 0x79, 0x2, 0x78, 0xf6, 0x8c}, - {0x0, 0x6a, 0xd4, 0xbe, 0xb5, 0xdf, 0x61, 0xb, 0x77, 0x1d, 0xa3, 0xc9, 0xc2, 0xa8, 0x16, 0x7c}, - {0x0, 0x5a, 0xb4, 0xee, 0x75, 0x2f, 0xc1, 0x9b, 0xea, 0xb0, 0x5e, 0x4, 0x9f, 0xc5, 0x2b, 0x71}, - {0x0, 0x4a, 0x94, 0xde, 0x35, 0x7f, 0xa1, 0xeb, 0x6a, 0x20, 0xfe, 0xb4, 0x5f, 0x15, 0xcb, 0x81}, - {0x0, 0xba, 0x69, 0xd3, 0xd2, 0x68, 0xbb, 0x1, 0xb9, 0x3, 0xd0, 0x6a, 0x6b, 0xd1, 0x2, 0xb8}, - {0x0, 0xaa, 0x49, 0xe3, 0x92, 0x38, 0xdb, 0x71, 0x39, 0x93, 0x70, 0xda, 0xab, 0x1, 0xe2, 0x48}, - {0x0, 0x9a, 0x29, 0xb3, 0x52, 0xc8, 0x7b, 0xe1, 0xa4, 0x3e, 0x8d, 0x17, 0xf6, 0x6c, 0xdf, 0x45}, - {0x0, 0x8a, 0x9, 0x83, 0x12, 0x98, 0x1b, 0x91, 0x24, 0xae, 0x2d, 0xa7, 0x36, 0xbc, 0x3f, 0xb5}, - {0x0, 0xfa, 0xe9, 0x13, 0xcf, 0x35, 0x26, 0xdc, 0x83, 0x79, 0x6a, 0x90, 0x4c, 0xb6, 0xa5, 0x5f}, - {0x0, 0xea, 0xc9, 0x23, 0x8f, 0x65, 0x46, 0xac, 0x3, 0xe9, 0xca, 0x20, 0x8c, 0x66, 0x45, 0xaf}, - {0x0, 0xda, 0xa9, 0x73, 0x4f, 0x95, 0xe6, 0x3c, 0x9e, 0x44, 0x37, 0xed, 0xd1, 0xb, 0x78, 0xa2}, - {0x0, 0xca, 0x89, 0x43, 0xf, 0xc5, 0x86, 0x4c, 0x1e, 0xd4, 0x97, 0x5d, 0x11, 0xdb, 0x98, 0x52}, - {0x0, 0x27, 0x4e, 0x69, 0x9c, 0xbb, 0xd2, 0xf5, 0x25, 0x2, 0x6b, 0x4c, 0xb9, 0x9e, 0xf7, 0xd0}, - {0x0, 0x37, 0x6e, 0x59, 0xdc, 0xeb, 0xb2, 0x85, 0xa5, 0x92, 0xcb, 0xfc, 0x79, 0x4e, 0x17, 0x20}, - {0x0, 0x7, 0xe, 0x9, 0x1c, 0x1b, 0x12, 0x15, 0x38, 0x3f, 0x36, 0x31, 0x24, 0x23, 0x2a, 0x2d}, - {0x0, 0x17, 0x2e, 0x39, 0x5c, 0x4b, 0x72, 0x65, 0xb8, 0xaf, 0x96, 0x81, 0xe4, 0xf3, 0xca, 0xdd}, - {0x0, 0x67, 0xce, 0xa9, 0x81, 0xe6, 0x4f, 0x28, 0x1f, 0x78, 0xd1, 0xb6, 0x9e, 0xf9, 0x50, 0x37}, - {0x0, 0x77, 0xee, 0x99, 0xc1, 0xb6, 0x2f, 0x58, 0x9f, 0xe8, 0x71, 0x6, 0x5e, 0x29, 0xb0, 0xc7}, - {0x0, 0x47, 0x8e, 0xc9, 0x1, 0x46, 0x8f, 0xc8, 0x2, 0x45, 0x8c, 0xcb, 0x3, 0x44, 0x8d, 0xca}, - {0x0, 0x57, 0xae, 0xf9, 0x41, 0x16, 0xef, 0xb8, 0x82, 0xd5, 0x2c, 0x7b, 0xc3, 0x94, 0x6d, 0x3a}, - {0x0, 0xa7, 0x53, 0xf4, 0xa6, 0x1, 0xf5, 0x52, 0x51, 0xf6, 0x2, 0xa5, 0xf7, 0x50, 0xa4, 0x3}, - {0x0, 0xb7, 0x73, 0xc4, 0xe6, 0x51, 0x95, 0x22, 0xd1, 0x66, 0xa2, 0x15, 0x37, 0x80, 0x44, 0xf3}, - {0x0, 0x87, 0x13, 0x94, 0x26, 0xa1, 0x35, 0xb2, 0x4c, 0xcb, 0x5f, 0xd8, 0x6a, 0xed, 0x79, 0xfe}, - {0x0, 0x97, 0x33, 0xa4, 0x66, 0xf1, 0x55, 0xc2, 0xcc, 0x5b, 0xff, 0x68, 0xaa, 0x3d, 0x99, 0xe}, - {0x0, 0xe7, 0xd3, 0x34, 0xbb, 0x5c, 0x68, 0x8f, 0x6b, 0x8c, 0xb8, 0x5f, 0xd0, 0x37, 0x3, 0xe4}, - {0x0, 0xf7, 0xf3, 0x4, 0xfb, 0xc, 0x8, 0xff, 0xeb, 0x1c, 0x18, 0xef, 0x10, 0xe7, 0xe3, 0x14}, - {0x0, 0xc7, 0x93, 0x54, 0x3b, 0xfc, 0xa8, 0x6f, 0x76, 0xb1, 0xe5, 0x22, 0x4d, 0x8a, 0xde, 0x19}, - {0x0, 0xd7, 0xb3, 0x64, 0x7b, 0xac, 0xc8, 0x1f, 0xf6, 0x21, 0x45, 0x92, 0x8d, 0x5a, 0x3e, 0xe9}, - {0x0, 0x74, 0xe8, 0x9c, 0xcd, 0xb9, 0x25, 0x51, 0x87, 0xf3, 0x6f, 0x1b, 0x4a, 0x3e, 0xa2, 0xd6}, - {0x0, 0x64, 0xc8, 0xac, 0x8d, 0xe9, 0x45, 0x21, 0x7, 0x63, 0xcf, 0xab, 0x8a, 0xee, 0x42, 0x26}, - {0x0, 0x54, 0xa8, 0xfc, 0x4d, 0x19, 0xe5, 0xb1, 0x9a, 0xce, 0x32, 0x66, 0xd7, 0x83, 0x7f, 0x2b}, - {0x0, 0x44, 0x88, 0xcc, 0xd, 0x49, 0x85, 0xc1, 0x1a, 0x5e, 0x92, 0xd6, 0x17, 0x53, 0x9f, 0xdb}, - {0x0, 0x34, 0x68, 0x5c, 0xd0, 0xe4, 0xb8, 0x8c, 0xbd, 0x89, 0xd5, 0xe1, 0x6d, 0x59, 0x5, 0x31}, - {0x0, 0x24, 0x48, 0x6c, 0x90, 0xb4, 0xd8, 0xfc, 0x3d, 0x19, 0x75, 0x51, 0xad, 0x89, 0xe5, 0xc1}, - {0x0, 0x14, 0x28, 0x3c, 0x50, 0x44, 0x78, 0x6c, 0xa0, 0xb4, 0x88, 0x9c, 0xf0, 0xe4, 0xd8, 0xcc}, - {0x0, 0x4, 0x8, 0xc, 0x10, 0x14, 0x18, 0x1c, 0x20, 0x24, 0x28, 0x2c, 0x30, 0x34, 0x38, 0x3c}, - {0x0, 0xf4, 0xf5, 0x1, 0xf7, 0x3, 0x2, 0xf6, 0xf3, 0x7, 0x6, 0xf2, 0x4, 0xf0, 0xf1, 0x5}, - {0x0, 0xe4, 0xd5, 0x31, 0xb7, 0x53, 0x62, 0x86, 0x73, 0x97, 0xa6, 0x42, 0xc4, 0x20, 0x11, 0xf5}, - {0x0, 0xd4, 0xb5, 0x61, 0x77, 0xa3, 0xc2, 0x16, 0xee, 0x3a, 0x5b, 0x8f, 0x99, 0x4d, 0x2c, 0xf8}, - {0x0, 0xc4, 0x95, 0x51, 0x37, 0xf3, 0xa2, 0x66, 0x6e, 0xaa, 0xfb, 0x3f, 0x59, 0x9d, 0xcc, 0x8}, - {0x0, 0xb4, 0x75, 0xc1, 0xea, 0x5e, 0x9f, 0x2b, 0xc9, 0x7d, 0xbc, 0x8, 0x23, 0x97, 0x56, 0xe2}, - {0x0, 0xa4, 0x55, 0xf1, 0xaa, 0xe, 0xff, 0x5b, 0x49, 0xed, 0x1c, 0xb8, 0xe3, 0x47, 0xb6, 0x12}, - {0x0, 0x94, 0x35, 0xa1, 0x6a, 0xfe, 0x5f, 0xcb, 0xd4, 0x40, 0xe1, 0x75, 0xbe, 0x2a, 0x8b, 0x1f}, - {0x0, 0x84, 0x15, 0x91, 0x2a, 0xae, 0x3f, 0xbb, 0x54, 0xd0, 0x41, 0xc5, 0x7e, 0xfa, 0x6b, 0xef}, - {0x0, 0x69, 0xd2, 0xbb, 0xb9, 0xd0, 0x6b, 0x2, 0x6f, 0x6, 0xbd, 0xd4, 0xd6, 0xbf, 0x4, 0x6d}, - {0x0, 0x79, 0xf2, 0x8b, 0xf9, 0x80, 0xb, 0x72, 0xef, 0x96, 0x1d, 0x64, 0x16, 0x6f, 0xe4, 0x9d}, - {0x0, 0x49, 0x92, 0xdb, 0x39, 0x70, 0xab, 0xe2, 0x72, 0x3b, 0xe0, 0xa9, 0x4b, 0x2, 0xd9, 0x90}, - {0x0, 0x59, 0xb2, 0xeb, 0x79, 0x20, 0xcb, 0x92, 0xf2, 0xab, 0x40, 0x19, 0x8b, 0xd2, 0x39, 0x60}, - {0x0, 0x29, 0x52, 0x7b, 0xa4, 0x8d, 0xf6, 0xdf, 0x55, 0x7c, 0x7, 0x2e, 0xf1, 0xd8, 0xa3, 0x8a}, - {0x0, 0x39, 0x72, 0x4b, 0xe4, 0xdd, 0x96, 0xaf, 0xd5, 0xec, 0xa7, 0x9e, 0x31, 0x8, 0x43, 0x7a}, - {0x0, 0x9, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77}, - {0x0, 0x19, 0x32, 0x2b, 0x64, 0x7d, 0x56, 0x4f, 0xc8, 0xd1, 0xfa, 0xe3, 0xac, 0xb5, 0x9e, 0x87}, - {0x0, 0xe9, 0xcf, 0x26, 0x83, 0x6a, 0x4c, 0xa5, 0x1b, 0xf2, 0xd4, 0x3d, 0x98, 0x71, 0x57, 0xbe}, - {0x0, 0xf9, 0xef, 0x16, 0xc3, 0x3a, 0x2c, 0xd5, 0x9b, 0x62, 0x74, 0x8d, 0x58, 0xa1, 0xb7, 0x4e}, - {0x0, 0xc9, 0x8f, 0x46, 0x3, 0xca, 0x8c, 0x45, 0x6, 0xcf, 0x89, 0x40, 0x5, 0xcc, 0x8a, 0x43}, - {0x0, 0xd9, 0xaf, 0x76, 0x43, 0x9a, 0xec, 0x35, 0x86, 0x5f, 0x29, 0xf0, 0xc5, 0x1c, 0x6a, 0xb3}, - {0x0, 0xa9, 0x4f, 0xe6, 0x9e, 0x37, 0xd1, 0x78, 0x21, 0x88, 0x6e, 0xc7, 0xbf, 0x16, 0xf0, 0x59}, - {0x0, 0xb9, 0x6f, 0xd6, 0xde, 0x67, 0xb1, 0x8, 0xa1, 0x18, 0xce, 0x77, 0x7f, 0xc6, 0x10, 0xa9}, - {0x0, 0x89, 0xf, 0x86, 0x1e, 0x97, 0x11, 0x98, 0x3c, 0xb5, 0x33, 0xba, 0x22, 0xab, 0x2d, 0xa4}, - {0x0, 0x99, 0x2f, 0xb6, 0x5e, 0xc7, 0x71, 0xe8, 0xbc, 0x25, 0x93, 0xa, 0xe2, 0x7b, 0xcd, 0x54}, - {0x0, 0x4e, 0x9c, 0xd2, 0x25, 0x6b, 0xb9, 0xf7, 0x4a, 0x4, 0xd6, 0x98, 0x6f, 0x21, 0xf3, 0xbd}, - {0x0, 0x5e, 0xbc, 0xe2, 0x65, 0x3b, 0xd9, 0x87, 0xca, 0x94, 0x76, 0x28, 0xaf, 0xf1, 0x13, 0x4d}, - {0x0, 0x6e, 0xdc, 0xb2, 0xa5, 0xcb, 0x79, 0x17, 0x57, 0x39, 0x8b, 0xe5, 0xf2, 0x9c, 0x2e, 0x40}, - {0x0, 0x7e, 0xfc, 0x82, 0xe5, 0x9b, 0x19, 0x67, 0xd7, 0xa9, 0x2b, 0x55, 0x32, 0x4c, 0xce, 0xb0}, - {0x0, 0xe, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a}, - {0x0, 0x1e, 0x3c, 0x22, 0x78, 0x66, 0x44, 0x5a, 0xf0, 0xee, 0xcc, 0xd2, 0x88, 0x96, 0xb4, 0xaa}, - {0x0, 0x2e, 0x5c, 0x72, 0xb8, 0x96, 0xe4, 0xca, 0x6d, 0x43, 0x31, 0x1f, 0xd5, 0xfb, 0x89, 0xa7}, - {0x0, 0x3e, 0x7c, 0x42, 0xf8, 0xc6, 0x84, 0xba, 0xed, 0xd3, 0x91, 0xaf, 0x15, 0x2b, 0x69, 0x57}, - {0x0, 0xce, 0x81, 0x4f, 0x1f, 0xd1, 0x9e, 0x50, 0x3e, 0xf0, 0xbf, 0x71, 0x21, 0xef, 0xa0, 0x6e}, - {0x0, 0xde, 0xa1, 0x7f, 0x5f, 0x81, 0xfe, 0x20, 0xbe, 0x60, 0x1f, 0xc1, 0xe1, 0x3f, 0x40, 0x9e}, - {0x0, 0xee, 0xc1, 0x2f, 0x9f, 0x71, 0x5e, 0xb0, 0x23, 0xcd, 0xe2, 0xc, 0xbc, 0x52, 0x7d, 0x93}, - {0x0, 0xfe, 0xe1, 0x1f, 0xdf, 0x21, 0x3e, 0xc0, 0xa3, 0x5d, 0x42, 0xbc, 0x7c, 0x82, 0x9d, 0x63}, - {0x0, 0x8e, 0x1, 0x8f, 0x2, 0x8c, 0x3, 0x8d, 0x4, 0x8a, 0x5, 0x8b, 0x6, 0x88, 0x7, 0x89}, - {0x0, 0x9e, 0x21, 0xbf, 0x42, 0xdc, 0x63, 0xfd, 0x84, 0x1a, 0xa5, 0x3b, 0xc6, 0x58, 0xe7, 0x79}, - {0x0, 0xae, 0x41, 0xef, 0x82, 0x2c, 0xc3, 0x6d, 0x19, 0xb7, 0x58, 0xf6, 0x9b, 0x35, 0xda, 0x74}, - {0x0, 0xbe, 0x61, 0xdf, 0xc2, 0x7c, 0xa3, 0x1d, 0x99, 0x27, 0xf8, 0x46, 0x5b, 0xe5, 0x3a, 0x84}, - {0x0, 0x53, 0xa6, 0xf5, 0x51, 0x2, 0xf7, 0xa4, 0xa2, 0xf1, 0x4, 0x57, 0xf3, 0xa0, 0x55, 0x6}, - {0x0, 0x43, 0x86, 0xc5, 0x11, 0x52, 0x97, 0xd4, 0x22, 0x61, 0xa4, 0xe7, 0x33, 0x70, 0xb5, 0xf6}, - {0x0, 0x73, 0xe6, 0x95, 0xd1, 0xa2, 0x37, 0x44, 0xbf, 0xcc, 0x59, 0x2a, 0x6e, 0x1d, 0x88, 0xfb}, - {0x0, 0x63, 0xc6, 0xa5, 0x91, 0xf2, 0x57, 0x34, 0x3f, 0x5c, 0xf9, 0x9a, 0xae, 0xcd, 0x68, 0xb}, - {0x0, 0x13, 0x26, 0x35, 0x4c, 0x5f, 0x6a, 0x79, 0x98, 0x8b, 0xbe, 0xad, 0xd4, 0xc7, 0xf2, 0xe1}, - {0x0, 0x3, 0x6, 0x5, 0xc, 0xf, 0xa, 0x9, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11}, - {0x0, 0x33, 0x66, 0x55, 0xcc, 0xff, 0xaa, 0x99, 0x85, 0xb6, 0xe3, 0xd0, 0x49, 0x7a, 0x2f, 0x1c}, - {0x0, 0x23, 0x46, 0x65, 0x8c, 0xaf, 0xca, 0xe9, 0x5, 0x26, 0x43, 0x60, 0x89, 0xaa, 0xcf, 0xec}, - {0x0, 0xd3, 0xbb, 0x68, 0x6b, 0xb8, 0xd0, 0x3, 0xd6, 0x5, 0x6d, 0xbe, 0xbd, 0x6e, 0x6, 0xd5}, - {0x0, 0xc3, 0x9b, 0x58, 0x2b, 0xe8, 0xb0, 0x73, 0x56, 0x95, 0xcd, 0xe, 0x7d, 0xbe, 0xe6, 0x25}, - {0x0, 0xf3, 0xfb, 0x8, 0xeb, 0x18, 0x10, 0xe3, 0xcb, 0x38, 0x30, 0xc3, 0x20, 0xd3, 0xdb, 0x28}, - {0x0, 0xe3, 0xdb, 0x38, 0xab, 0x48, 0x70, 0x93, 0x4b, 0xa8, 0x90, 0x73, 0xe0, 0x3, 0x3b, 0xd8}, - {0x0, 0x93, 0x3b, 0xa8, 0x76, 0xe5, 0x4d, 0xde, 0xec, 0x7f, 0xd7, 0x44, 0x9a, 0x9, 0xa1, 0x32}, - {0x0, 0x83, 0x1b, 0x98, 0x36, 0xb5, 0x2d, 0xae, 0x6c, 0xef, 0x77, 0xf4, 0x5a, 0xd9, 0x41, 0xc2}, - {0x0, 0xb3, 0x7b, 0xc8, 0xf6, 0x45, 0x8d, 0x3e, 0xf1, 0x42, 0x8a, 0x39, 0x7, 0xb4, 0x7c, 0xcf}, - {0x0, 0xa3, 0x5b, 0xf8, 0xb6, 0x15, 0xed, 0x4e, 0x71, 0xd2, 0x2a, 0x89, 0xc7, 0x64, 0x9c, 0x3f}, - {0x0, 0xe8, 0xcd, 0x25, 0x87, 0x6f, 0x4a, 0xa2, 0x13, 0xfb, 0xde, 0x36, 0x94, 0x7c, 0x59, 0xb1}, - {0x0, 0xf8, 0xed, 0x15, 0xc7, 0x3f, 0x2a, 0xd2, 0x93, 0x6b, 0x7e, 0x86, 0x54, 0xac, 0xb9, 0x41}, - {0x0, 0xc8, 0x8d, 0x45, 0x7, 0xcf, 0x8a, 0x42, 0xe, 0xc6, 0x83, 0x4b, 0x9, 0xc1, 0x84, 0x4c}, - {0x0, 0xd8, 0xad, 0x75, 0x47, 0x9f, 0xea, 0x32, 0x8e, 0x56, 0x23, 0xfb, 0xc9, 0x11, 0x64, 0xbc}, - {0x0, 0xa8, 0x4d, 0xe5, 0x9a, 0x32, 0xd7, 0x7f, 0x29, 0x81, 0x64, 0xcc, 0xb3, 0x1b, 0xfe, 0x56}, - {0x0, 0xb8, 0x6d, 0xd5, 0xda, 0x62, 0xb7, 0xf, 0xa9, 0x11, 0xc4, 0x7c, 0x73, 0xcb, 0x1e, 0xa6}, - {0x0, 0x88, 0xd, 0x85, 0x1a, 0x92, 0x17, 0x9f, 0x34, 0xbc, 0x39, 0xb1, 0x2e, 0xa6, 0x23, 0xab}, - {0x0, 0x98, 0x2d, 0xb5, 0x5a, 0xc2, 0x77, 0xef, 0xb4, 0x2c, 0x99, 0x1, 0xee, 0x76, 0xc3, 0x5b}, - {0x0, 0x68, 0xd0, 0xb8, 0xbd, 0xd5, 0x6d, 0x5, 0x67, 0xf, 0xb7, 0xdf, 0xda, 0xb2, 0xa, 0x62}, - {0x0, 0x78, 0xf0, 0x88, 0xfd, 0x85, 0xd, 0x75, 0xe7, 0x9f, 0x17, 0x6f, 0x1a, 0x62, 0xea, 0x92}, - {0x0, 0x48, 0x90, 0xd8, 0x3d, 0x75, 0xad, 0xe5, 0x7a, 0x32, 0xea, 0xa2, 0x47, 0xf, 0xd7, 0x9f}, - {0x0, 0x58, 0xb0, 0xe8, 0x7d, 0x25, 0xcd, 0x95, 0xfa, 0xa2, 0x4a, 0x12, 0x87, 0xdf, 0x37, 0x6f}, - {0x0, 0x28, 0x50, 0x78, 0xa0, 0x88, 0xf0, 0xd8, 0x5d, 0x75, 0xd, 0x25, 0xfd, 0xd5, 0xad, 0x85}, - {0x0, 0x38, 0x70, 0x48, 0xe0, 0xd8, 0x90, 0xa8, 0xdd, 0xe5, 0xad, 0x95, 0x3d, 0x5, 0x4d, 0x75}, - {0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38, 0x40, 0x48, 0x50, 0x58, 0x60, 0x68, 0x70, 0x78}, - {0x0, 0x18, 0x30, 0x28, 0x60, 0x78, 0x50, 0x48, 0xc0, 0xd8, 0xf0, 0xe8, 0xa0, 0xb8, 0x90, 0x88}, - {0x0, 0xf5, 0xf7, 0x2, 0xf3, 0x6, 0x4, 0xf1, 0xfb, 0xe, 0xc, 0xf9, 0x8, 0xfd, 0xff, 0xa}, - {0x0, 0xe5, 0xd7, 0x32, 0xb3, 0x56, 0x64, 0x81, 0x7b, 0x9e, 0xac, 0x49, 0xc8, 0x2d, 0x1f, 0xfa}, - {0x0, 0xd5, 0xb7, 0x62, 0x73, 0xa6, 0xc4, 0x11, 0xe6, 0x33, 0x51, 0x84, 0x95, 0x40, 0x22, 0xf7}, - {0x0, 0xc5, 0x97, 0x52, 0x33, 0xf6, 0xa4, 0x61, 0x66, 0xa3, 0xf1, 0x34, 0x55, 0x90, 0xc2, 0x7}, - {0x0, 0xb5, 0x77, 0xc2, 0xee, 0x5b, 0x99, 0x2c, 0xc1, 0x74, 0xb6, 0x3, 0x2f, 0x9a, 0x58, 0xed}, - {0x0, 0xa5, 0x57, 0xf2, 0xae, 0xb, 0xf9, 0x5c, 0x41, 0xe4, 0x16, 0xb3, 0xef, 0x4a, 0xb8, 0x1d}, - {0x0, 0x95, 0x37, 0xa2, 0x6e, 0xfb, 0x59, 0xcc, 0xdc, 0x49, 0xeb, 0x7e, 0xb2, 0x27, 0x85, 0x10}, - {0x0, 0x85, 0x17, 0x92, 0x2e, 0xab, 0x39, 0xbc, 0x5c, 0xd9, 0x4b, 0xce, 0x72, 0xf7, 0x65, 0xe0}, - {0x0, 0x75, 0xea, 0x9f, 0xc9, 0xbc, 0x23, 0x56, 0x8f, 0xfa, 0x65, 0x10, 0x46, 0x33, 0xac, 0xd9}, - {0x0, 0x65, 0xca, 0xaf, 0x89, 0xec, 0x43, 0x26, 0xf, 0x6a, 0xc5, 0xa0, 0x86, 0xe3, 0x4c, 0x29}, - {0x0, 0x55, 0xaa, 0xff, 0x49, 0x1c, 0xe3, 0xb6, 0x92, 0xc7, 0x38, 0x6d, 0xdb, 0x8e, 0x71, 0x24}, - {0x0, 0x45, 0x8a, 0xcf, 0x9, 0x4c, 0x83, 0xc6, 0x12, 0x57, 0x98, 0xdd, 0x1b, 0x5e, 0x91, 0xd4}, - {0x0, 0x35, 0x6a, 0x5f, 0xd4, 0xe1, 0xbe, 0x8b, 0xb5, 0x80, 0xdf, 0xea, 0x61, 0x54, 0xb, 0x3e}, - {0x0, 0x25, 0x4a, 0x6f, 0x94, 0xb1, 0xde, 0xfb, 0x35, 0x10, 0x7f, 0x5a, 0xa1, 0x84, 0xeb, 0xce}, - {0x0, 0x15, 0x2a, 0x3f, 0x54, 0x41, 0x7e, 0x6b, 0xa8, 0xbd, 0x82, 0x97, 0xfc, 0xe9, 0xd6, 0xc3}, - {0x0, 0x5, 0xa, 0xf, 0x14, 0x11, 0x1e, 0x1b, 0x28, 0x2d, 0x22, 0x27, 0x3c, 0x39, 0x36, 0x33}, - {0x0, 0xd2, 0xb9, 0x6b, 0x6f, 0xbd, 0xd6, 0x4, 0xde, 0xc, 0x67, 0xb5, 0xb1, 0x63, 0x8, 0xda}, - {0x0, 0xc2, 0x99, 0x5b, 0x2f, 0xed, 0xb6, 0x74, 0x5e, 0x9c, 0xc7, 0x5, 0x71, 0xb3, 0xe8, 0x2a}, - {0x0, 0xf2, 0xf9, 0xb, 0xef, 0x1d, 0x16, 0xe4, 0xc3, 0x31, 0x3a, 0xc8, 0x2c, 0xde, 0xd5, 0x27}, - {0x0, 0xe2, 0xd9, 0x3b, 0xaf, 0x4d, 0x76, 0x94, 0x43, 0xa1, 0x9a, 0x78, 0xec, 0xe, 0x35, 0xd7}, - {0x0, 0x92, 0x39, 0xab, 0x72, 0xe0, 0x4b, 0xd9, 0xe4, 0x76, 0xdd, 0x4f, 0x96, 0x4, 0xaf, 0x3d}, - {0x0, 0x82, 0x19, 0x9b, 0x32, 0xb0, 0x2b, 0xa9, 0x64, 0xe6, 0x7d, 0xff, 0x56, 0xd4, 0x4f, 0xcd}, - {0x0, 0xb2, 0x79, 0xcb, 0xf2, 0x40, 0x8b, 0x39, 0xf9, 0x4b, 0x80, 0x32, 0xb, 0xb9, 0x72, 0xc0}, - {0x0, 0xa2, 0x59, 0xfb, 0xb2, 0x10, 0xeb, 0x49, 0x79, 0xdb, 0x20, 0x82, 0xcb, 0x69, 0x92, 0x30}, - {0x0, 0x52, 0xa4, 0xf6, 0x55, 0x7, 0xf1, 0xa3, 0xaa, 0xf8, 0xe, 0x5c, 0xff, 0xad, 0x5b, 0x9}, - {0x0, 0x42, 0x84, 0xc6, 0x15, 0x57, 0x91, 0xd3, 0x2a, 0x68, 0xae, 0xec, 0x3f, 0x7d, 0xbb, 0xf9}, - {0x0, 0x72, 0xe4, 0x96, 0xd5, 0xa7, 0x31, 0x43, 0xb7, 0xc5, 0x53, 0x21, 0x62, 0x10, 0x86, 0xf4}, - {0x0, 0x62, 0xc4, 0xa6, 0x95, 0xf7, 0x51, 0x33, 0x37, 0x55, 0xf3, 0x91, 0xa2, 0xc0, 0x66, 0x4}, - {0x0, 0x12, 0x24, 0x36, 0x48, 0x5a, 0x6c, 0x7e, 0x90, 0x82, 0xb4, 0xa6, 0xd8, 0xca, 0xfc, 0xee}, - {0x0, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e}, - {0x0, 0x32, 0x64, 0x56, 0xc8, 0xfa, 0xac, 0x9e, 0x8d, 0xbf, 0xe9, 0xdb, 0x45, 0x77, 0x21, 0x13}, - {0x0, 0x22, 0x44, 0x66, 0x88, 0xaa, 0xcc, 0xee, 0xd, 0x2f, 0x49, 0x6b, 0x85, 0xa7, 0xc1, 0xe3}, - {0x0, 0xcf, 0x83, 0x4c, 0x1b, 0xd4, 0x98, 0x57, 0x36, 0xf9, 0xb5, 0x7a, 0x2d, 0xe2, 0xae, 0x61}, - {0x0, 0xdf, 0xa3, 0x7c, 0x5b, 0x84, 0xf8, 0x27, 0xb6, 0x69, 0x15, 0xca, 0xed, 0x32, 0x4e, 0x91}, - {0x0, 0xef, 0xc3, 0x2c, 0x9b, 0x74, 0x58, 0xb7, 0x2b, 0xc4, 0xe8, 0x7, 0xb0, 0x5f, 0x73, 0x9c}, - {0x0, 0xff, 0xe3, 0x1c, 0xdb, 0x24, 0x38, 0xc7, 0xab, 0x54, 0x48, 0xb7, 0x70, 0x8f, 0x93, 0x6c}, - {0x0, 0x8f, 0x3, 0x8c, 0x6, 0x89, 0x5, 0x8a, 0xc, 0x83, 0xf, 0x80, 0xa, 0x85, 0x9, 0x86}, - {0x0, 0x9f, 0x23, 0xbc, 0x46, 0xd9, 0x65, 0xfa, 0x8c, 0x13, 0xaf, 0x30, 0xca, 0x55, 0xe9, 0x76}, - {0x0, 0xaf, 0x43, 0xec, 0x86, 0x29, 0xc5, 0x6a, 0x11, 0xbe, 0x52, 0xfd, 0x97, 0x38, 0xd4, 0x7b}, - {0x0, 0xbf, 0x63, 0xdc, 0xc6, 0x79, 0xa5, 0x1a, 0x91, 0x2e, 0xf2, 0x4d, 0x57, 0xe8, 0x34, 0x8b}, - {0x0, 0x4f, 0x9e, 0xd1, 0x21, 0x6e, 0xbf, 0xf0, 0x42, 0xd, 0xdc, 0x93, 0x63, 0x2c, 0xfd, 0xb2}, - {0x0, 0x5f, 0xbe, 0xe1, 0x61, 0x3e, 0xdf, 0x80, 0xc2, 0x9d, 0x7c, 0x23, 0xa3, 0xfc, 0x1d, 0x42}, - {0x0, 0x6f, 0xde, 0xb1, 0xa1, 0xce, 0x7f, 0x10, 0x5f, 0x30, 0x81, 0xee, 0xfe, 0x91, 0x20, 0x4f}, - {0x0, 0x7f, 0xfe, 0x81, 0xe1, 0x9e, 0x1f, 0x60, 0xdf, 0xa0, 0x21, 0x5e, 0x3e, 0x41, 0xc0, 0xbf}, - {0x0, 0xf, 0x1e, 0x11, 0x3c, 0x33, 0x22, 0x2d, 0x78, 0x77, 0x66, 0x69, 0x44, 0x4b, 0x5a, 0x55}, - {0x0, 0x1f, 0x3e, 0x21, 0x7c, 0x63, 0x42, 0x5d, 0xf8, 0xe7, 0xc6, 0xd9, 0x84, 0x9b, 0xba, 0xa5}, - {0x0, 0x2f, 0x5e, 0x71, 0xbc, 0x93, 0xe2, 0xcd, 0x65, 0x4a, 0x3b, 0x14, 0xd9, 0xf6, 0x87, 0xa8}, - {0x0, 0x3f, 0x7e, 0x41, 0xfc, 0xc3, 0x82, 0xbd, 0xe5, 0xda, 0x9b, 0xa4, 0x19, 0x26, 0x67, 0x58}, - {0x0, 0x9c, 0x25, 0xb9, 0x4a, 0xd6, 0x6f, 0xf3, 0x94, 0x8, 0xb1, 0x2d, 0xde, 0x42, 0xfb, 0x67}, - {0x0, 0x8c, 0x5, 0x89, 0xa, 0x86, 0xf, 0x83, 0x14, 0x98, 0x11, 0x9d, 0x1e, 0x92, 0x1b, 0x97}, - {0x0, 0xbc, 0x65, 0xd9, 0xca, 0x76, 0xaf, 0x13, 0x89, 0x35, 0xec, 0x50, 0x43, 0xff, 0x26, 0x9a}, - {0x0, 0xac, 0x45, 0xe9, 0x8a, 0x26, 0xcf, 0x63, 0x9, 0xa5, 0x4c, 0xe0, 0x83, 0x2f, 0xc6, 0x6a}, - {0x0, 0xdc, 0xa5, 0x79, 0x57, 0x8b, 0xf2, 0x2e, 0xae, 0x72, 0xb, 0xd7, 0xf9, 0x25, 0x5c, 0x80}, - {0x0, 0xcc, 0x85, 0x49, 0x17, 0xdb, 0x92, 0x5e, 0x2e, 0xe2, 0xab, 0x67, 0x39, 0xf5, 0xbc, 0x70}, - {0x0, 0xfc, 0xe5, 0x19, 0xd7, 0x2b, 0x32, 0xce, 0xb3, 0x4f, 0x56, 0xaa, 0x64, 0x98, 0x81, 0x7d}, - {0x0, 0xec, 0xc5, 0x29, 0x97, 0x7b, 0x52, 0xbe, 0x33, 0xdf, 0xf6, 0x1a, 0xa4, 0x48, 0x61, 0x8d}, - {0x0, 0x1c, 0x38, 0x24, 0x70, 0x6c, 0x48, 0x54, 0xe0, 0xfc, 0xd8, 0xc4, 0x90, 0x8c, 0xa8, 0xb4}, - {0x0, 0xc, 0x18, 0x14, 0x30, 0x3c, 0x28, 0x24, 0x60, 0x6c, 0x78, 0x74, 0x50, 0x5c, 0x48, 0x44}, - {0x0, 0x3c, 0x78, 0x44, 0xf0, 0xcc, 0x88, 0xb4, 0xfd, 0xc1, 0x85, 0xb9, 0xd, 0x31, 0x75, 0x49}, - {0x0, 0x2c, 0x58, 0x74, 0xb0, 0x9c, 0xe8, 0xc4, 0x7d, 0x51, 0x25, 0x9, 0xcd, 0xe1, 0x95, 0xb9}, - {0x0, 0x5c, 0xb8, 0xe4, 0x6d, 0x31, 0xd5, 0x89, 0xda, 0x86, 0x62, 0x3e, 0xb7, 0xeb, 0xf, 0x53}, - {0x0, 0x4c, 0x98, 0xd4, 0x2d, 0x61, 0xb5, 0xf9, 0x5a, 0x16, 0xc2, 0x8e, 0x77, 0x3b, 0xef, 0xa3}, - {0x0, 0x7c, 0xf8, 0x84, 0xed, 0x91, 0x15, 0x69, 0xc7, 0xbb, 0x3f, 0x43, 0x2a, 0x56, 0xd2, 0xae}, - {0x0, 0x6c, 0xd8, 0xb4, 0xad, 0xc1, 0x75, 0x19, 0x47, 0x2b, 0x9f, 0xf3, 0xea, 0x86, 0x32, 0x5e}, - {0x0, 0x81, 0x1f, 0x9e, 0x3e, 0xbf, 0x21, 0xa0, 0x7c, 0xfd, 0x63, 0xe2, 0x42, 0xc3, 0x5d, 0xdc}, - {0x0, 0x91, 0x3f, 0xae, 0x7e, 0xef, 0x41, 0xd0, 0xfc, 0x6d, 0xc3, 0x52, 0x82, 0x13, 0xbd, 0x2c}, - {0x0, 0xa1, 0x5f, 0xfe, 0xbe, 0x1f, 0xe1, 0x40, 0x61, 0xc0, 0x3e, 0x9f, 0xdf, 0x7e, 0x80, 0x21}, - {0x0, 0xb1, 0x7f, 0xce, 0xfe, 0x4f, 0x81, 0x30, 0xe1, 0x50, 0x9e, 0x2f, 0x1f, 0xae, 0x60, 0xd1}, - {0x0, 0xc1, 0x9f, 0x5e, 0x23, 0xe2, 0xbc, 0x7d, 0x46, 0x87, 0xd9, 0x18, 0x65, 0xa4, 0xfa, 0x3b}, - {0x0, 0xd1, 0xbf, 0x6e, 0x63, 0xb2, 0xdc, 0xd, 0xc6, 0x17, 0x79, 0xa8, 0xa5, 0x74, 0x1a, 0xcb}, - {0x0, 0xe1, 0xdf, 0x3e, 0xa3, 0x42, 0x7c, 0x9d, 0x5b, 0xba, 0x84, 0x65, 0xf8, 0x19, 0x27, 0xc6}, - {0x0, 0xf1, 0xff, 0xe, 0xe3, 0x12, 0x1c, 0xed, 0xdb, 0x2a, 0x24, 0xd5, 0x38, 0xc9, 0xc7, 0x36}, - {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}, - {0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, - {0x0, 0x21, 0x42, 0x63, 0x84, 0xa5, 0xc6, 0xe7, 0x15, 0x34, 0x57, 0x76, 0x91, 0xb0, 0xd3, 0xf2}, - {0x0, 0x31, 0x62, 0x53, 0xc4, 0xf5, 0xa6, 0x97, 0x95, 0xa4, 0xf7, 0xc6, 0x51, 0x60, 0x33, 0x2}, - {0x0, 0x41, 0x82, 0xc3, 0x19, 0x58, 0x9b, 0xda, 0x32, 0x73, 0xb0, 0xf1, 0x2b, 0x6a, 0xa9, 0xe8}, - {0x0, 0x51, 0xa2, 0xf3, 0x59, 0x8, 0xfb, 0xaa, 0xb2, 0xe3, 0x10, 0x41, 0xeb, 0xba, 0x49, 0x18}, - {0x0, 0x61, 0xc2, 0xa3, 0x99, 0xf8, 0x5b, 0x3a, 0x2f, 0x4e, 0xed, 0x8c, 0xb6, 0xd7, 0x74, 0x15}, - {0x0, 0x71, 0xe2, 0x93, 0xd9, 0xa8, 0x3b, 0x4a, 0xaf, 0xde, 0x4d, 0x3c, 0x76, 0x7, 0x94, 0xe5}, - {0x0, 0xa6, 0x51, 0xf7, 0xa2, 0x4, 0xf3, 0x55, 0x59, 0xff, 0x8, 0xae, 0xfb, 0x5d, 0xaa, 0xc}, - {0x0, 0xb6, 0x71, 0xc7, 0xe2, 0x54, 0x93, 0x25, 0xd9, 0x6f, 0xa8, 0x1e, 0x3b, 0x8d, 0x4a, 0xfc}, - {0x0, 0x86, 0x11, 0x97, 0x22, 0xa4, 0x33, 0xb5, 0x44, 0xc2, 0x55, 0xd3, 0x66, 0xe0, 0x77, 0xf1}, - {0x0, 0x96, 0x31, 0xa7, 0x62, 0xf4, 0x53, 0xc5, 0xc4, 0x52, 0xf5, 0x63, 0xa6, 0x30, 0x97, 0x1}, - {0x0, 0xe6, 0xd1, 0x37, 0xbf, 0x59, 0x6e, 0x88, 0x63, 0x85, 0xb2, 0x54, 0xdc, 0x3a, 0xd, 0xeb}, - {0x0, 0xf6, 0xf1, 0x7, 0xff, 0x9, 0xe, 0xf8, 0xe3, 0x15, 0x12, 0xe4, 0x1c, 0xea, 0xed, 0x1b}, - {0x0, 0xc6, 0x91, 0x57, 0x3f, 0xf9, 0xae, 0x68, 0x7e, 0xb8, 0xef, 0x29, 0x41, 0x87, 0xd0, 0x16}, - {0x0, 0xd6, 0xb1, 0x67, 0x7f, 0xa9, 0xce, 0x18, 0xfe, 0x28, 0x4f, 0x99, 0x81, 0x57, 0x30, 0xe6}, - {0x0, 0x26, 0x4c, 0x6a, 0x98, 0xbe, 0xd4, 0xf2, 0x2d, 0xb, 0x61, 0x47, 0xb5, 0x93, 0xf9, 0xdf}, - {0x0, 0x36, 0x6c, 0x5a, 0xd8, 0xee, 0xb4, 0x82, 0xad, 0x9b, 0xc1, 0xf7, 0x75, 0x43, 0x19, 0x2f}, - {0x0, 0x6, 0xc, 0xa, 0x18, 0x1e, 0x14, 0x12, 0x30, 0x36, 0x3c, 0x3a, 0x28, 0x2e, 0x24, 0x22}, - {0x0, 0x16, 0x2c, 0x3a, 0x58, 0x4e, 0x74, 0x62, 0xb0, 0xa6, 0x9c, 0x8a, 0xe8, 0xfe, 0xc4, 0xd2}, - {0x0, 0x66, 0xcc, 0xaa, 0x85, 0xe3, 0x49, 0x2f, 0x17, 0x71, 0xdb, 0xbd, 0x92, 0xf4, 0x5e, 0x38}, - {0x0, 0x76, 0xec, 0x9a, 0xc5, 0xb3, 0x29, 0x5f, 0x97, 0xe1, 0x7b, 0xd, 0x52, 0x24, 0xbe, 0xc8}, - {0x0, 0x46, 0x8c, 0xca, 0x5, 0x43, 0x89, 0xcf, 0xa, 0x4c, 0x86, 0xc0, 0xf, 0x49, 0x83, 0xc5}, - {0x0, 0x56, 0xac, 0xfa, 0x45, 0x13, 0xe9, 0xbf, 0x8a, 0xdc, 0x26, 0x70, 0xcf, 0x99, 0x63, 0x35}, - {0x0, 0xbb, 0x6b, 0xd0, 0xd6, 0x6d, 0xbd, 0x6, 0xb1, 0xa, 0xda, 0x61, 0x67, 0xdc, 0xc, 0xb7}, - {0x0, 0xab, 0x4b, 0xe0, 0x96, 0x3d, 0xdd, 0x76, 0x31, 0x9a, 0x7a, 0xd1, 0xa7, 0xc, 0xec, 0x47}, - {0x0, 0x9b, 0x2b, 0xb0, 0x56, 0xcd, 0x7d, 0xe6, 0xac, 0x37, 0x87, 0x1c, 0xfa, 0x61, 0xd1, 0x4a}, - {0x0, 0x8b, 0xb, 0x80, 0x16, 0x9d, 0x1d, 0x96, 0x2c, 0xa7, 0x27, 0xac, 0x3a, 0xb1, 0x31, 0xba}, - {0x0, 0xfb, 0xeb, 0x10, 0xcb, 0x30, 0x20, 0xdb, 0x8b, 0x70, 0x60, 0x9b, 0x40, 0xbb, 0xab, 0x50}, - {0x0, 0xeb, 0xcb, 0x20, 0x8b, 0x60, 0x40, 0xab, 0xb, 0xe0, 0xc0, 0x2b, 0x80, 0x6b, 0x4b, 0xa0}, - {0x0, 0xdb, 0xab, 0x70, 0x4b, 0x90, 0xe0, 0x3b, 0x96, 0x4d, 0x3d, 0xe6, 0xdd, 0x6, 0x76, 0xad}, - {0x0, 0xcb, 0x8b, 0x40, 0xb, 0xc0, 0x80, 0x4b, 0x16, 0xdd, 0x9d, 0x56, 0x1d, 0xd6, 0x96, 0x5d}, - {0x0, 0x3b, 0x76, 0x4d, 0xec, 0xd7, 0x9a, 0xa1, 0xc5, 0xfe, 0xb3, 0x88, 0x29, 0x12, 0x5f, 0x64}, - {0x0, 0x2b, 0x56, 0x7d, 0xac, 0x87, 0xfa, 0xd1, 0x45, 0x6e, 0x13, 0x38, 0xe9, 0xc2, 0xbf, 0x94}, - {0x0, 0x1b, 0x36, 0x2d, 0x6c, 0x77, 0x5a, 0x41, 0xd8, 0xc3, 0xee, 0xf5, 0xb4, 0xaf, 0x82, 0x99}, - {0x0, 0xb, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69}, - {0x0, 0x7b, 0xf6, 0x8d, 0xf1, 0x8a, 0x7, 0x7c, 0xff, 0x84, 0x9, 0x72, 0xe, 0x75, 0xf8, 0x83}, - {0x0, 0x6b, 0xd6, 0xbd, 0xb1, 0xda, 0x67, 0xc, 0x7f, 0x14, 0xa9, 0xc2, 0xce, 0xa5, 0x18, 0x73}, - {0x0, 0x5b, 0xb6, 0xed, 0x71, 0x2a, 0xc7, 0x9c, 0xe2, 0xb9, 0x54, 0xf, 0x93, 0xc8, 0x25, 0x7e}, - {0x0, 0x4b, 0x96, 0xdd, 0x31, 0x7a, 0xa7, 0xec, 0x62, 0x29, 0xf4, 0xbf, 0x53, 0x18, 0xc5, 0x8e}} - -// galMultiply multiplies to elements of the field. -// Uses lookup table ~40% faster -func galMultiply(a, b byte) byte { - return mulTable[a][b] -} - -// amd64 indicates whether we are on an amd64 platform. -var amd64 bool - -// Original function: -/* -// galMultiply multiplies to elements of the field. -func galMultiply(a, b byte) byte { - if a == 0 || b == 0 { - return 0 - } - logA := int(logTable[a]) - logB := int(logTable[b]) - return expTable[logA+logB] -} -*/ - -// galDivide is inverse of galMultiply. -func galDivide(a, b byte) byte { - if a == 0 { - return 0 - } - if b == 0 { - panic("Argument 'divisor' is 0") - } - logA := int(logTable[a]) - logB := int(logTable[b]) - logResult := logA - logB - if logResult < 0 { - logResult += 255 - } - return expTable[logResult] -} - -// Computes a**n. -// -// The result will be the same as multiplying a times itself n times. -func galExp(a byte, n int) byte { - if n == 0 { - return 1 - } - if a == 0 { - return 0 - } - - logA := logTable[a] - logResult := int(logA) * n - for logResult >= 255 { - logResult -= 255 - } - return expTable[logResult] -} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go deleted file mode 100644 index 4c1dc75..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.go +++ /dev/null @@ -1,188 +0,0 @@ -//+build !noasm -//+build !appengine -//+build !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2019, Minio, Inc. - -package reedsolomon - -//go:noescape -func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) - -//go:noescape -func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) - -func init() { - amd64 = true -} - -const ( - dimIn = 8 // Number of input rows processed simultaneously - dimOut82 = 2 // Number of output rows processed simultaneously for x2 routine - dimOut84 = 4 // Number of output rows processed simultaneously for x4 routine - matrixSize82 = (16 + 16) * dimIn * dimOut82 // Dimension of slice of matrix coefficient passed into x2 routine - matrixSize84 = (16 + 16) * dimIn * dimOut84 // Dimension of slice of matrix coefficient passed into x4 routine -) - -// Construct block of matrix coefficients for 2 outputs rows in parallel -func setupMatrix82(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize82]byte) { - offset := 0 - for c := inputOffset; c < inputOffset+dimIn; c++ { - for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { - if c < len(matrixRows[iRow]) { - coeff := matrixRows[iRow][c] - copy(matrix[offset*32:], mulTableLow[coeff][:]) - copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) - } else { - // coefficients not used for this input shard (so null out) - v := matrix[offset*32 : offset*32+32] - for i := range v { - v[i] = 0 - } - } - offset += dimIn - if offset >= dimIn*dimOut82 { - offset -= dimIn*dimOut82 - 1 - } - } - } -} - -// Construct block of matrix coefficients for 4 outputs rows in parallel -func setupMatrix84(matrixRows [][]byte, inputOffset, outputOffset int, matrix *[matrixSize84]byte) { - offset := 0 - for c := inputOffset; c < inputOffset+dimIn; c++ { - for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { - if c < len(matrixRows[iRow]) { - coeff := matrixRows[iRow][c] - copy(matrix[offset*32:], mulTableLow[coeff][:]) - copy(matrix[offset*32+16:], mulTableHigh[coeff][:]) - } else { - // coefficients not used for this input shard (so null out) - v := matrix[offset*32 : offset*32+32] - for i := range v { - v[i] = 0 - } - } - offset += dimIn - if offset >= dimIn*dimOut84 { - offset -= dimIn*dimOut84 - 1 - } - } - } -} - -// Invoke AVX512 routine for 2 output rows in parallel -func galMulAVX512Parallel82(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { - done := len(in[0]) - if done == 0 { - return - } - - inputEnd := inputOffset + dimIn - if inputEnd > len(in) { - inputEnd = len(in) - } - outputEnd := outputOffset + dimOut82 - if outputEnd > len(out) { - outputEnd = len(out) - } - - matrix82 := [matrixSize82]byte{} - setupMatrix82(matrixRows, inputOffset, outputOffset, &matrix82) - addTo := inputOffset != 0 // Except for the first input column, add to previous results - _galMulAVX512Parallel82(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix82, addTo) - - done = (done >> 6) << 6 - if len(in[0])-done == 0 { - return - } - - for c := inputOffset; c < inputOffset+dimIn; c++ { - for iRow := outputOffset; iRow < outputOffset+dimOut82; iRow++ { - if c < len(matrixRows[iRow]) { - mt := mulTable[matrixRows[iRow][c]][:256] - for i := done; i < len(in[0]); i++ { - if c == 0 { // only set value for first input column - out[iRow][i] = mt[in[c][i]] - } else { // and add for all others - out[iRow][i] ^= mt[in[c][i]] - } - } - } - } - } -} - -// Invoke AVX512 routine for 4 output rows in parallel -func galMulAVX512Parallel84(in, out [][]byte, matrixRows [][]byte, inputOffset, outputOffset int) { - done := len(in[0]) - if done == 0 { - return - } - - inputEnd := inputOffset + dimIn - if inputEnd > len(in) { - inputEnd = len(in) - } - outputEnd := outputOffset + dimOut84 - if outputEnd > len(out) { - outputEnd = len(out) - } - - matrix84 := [matrixSize84]byte{} - setupMatrix84(matrixRows, inputOffset, outputOffset, &matrix84) - addTo := inputOffset != 0 // Except for the first input column, add to previous results - _galMulAVX512Parallel84(in[inputOffset:inputEnd], out[outputOffset:outputEnd], &matrix84, addTo) - - done = (done >> 6) << 6 - if len(in[0])-done == 0 { - return - } - - for c := inputOffset; c < inputOffset+dimIn; c++ { - for iRow := outputOffset; iRow < outputOffset+dimOut84; iRow++ { - if c < len(matrixRows[iRow]) { - mt := mulTable[matrixRows[iRow][c]][:256] - for i := done; i < len(in[0]); i++ { - if c == 0 { // only set value for first input column - out[iRow][i] = mt[in[c][i]] - } else { // and add for all others - out[iRow][i] ^= mt[in[c][i]] - } - } - } - } - } -} - -// Perform the same as codeSomeShards, but taking advantage of -// AVX512 parallelism for up to 4x faster execution as compared to AVX2 -func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { - outputRow := 0 - // First process (multiple) batches of 4 output rows in parallel - for ; outputRow+dimOut84 <= len(outputs); outputRow += dimOut84 { - for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { - galMulAVX512Parallel84(inputs, outputs, matrixRows, inputRow, outputRow) - } - } - // Then process a (single) batch of 2 output rows in parallel - if outputRow+dimOut82 <= len(outputs) { - // fmt.Println(outputRow, len(outputs)) - for inputRow := 0; inputRow < len(inputs); inputRow += dimIn { - galMulAVX512Parallel82(inputs, outputs, matrixRows, inputRow, outputRow) - } - outputRow += dimOut82 - } - // Lastly, we may have a single output row left (for uneven parity) - if outputRow < len(outputs) { - for c := 0; c < r.DataShards; c++ { - if c == 0 { - galMulSlice(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) - } else { - galMulSliceXor(matrixRows[outputRow][c], inputs[c], outputs[outputRow], &r.o) - } - } - } -} diff --git a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s b/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s deleted file mode 100644 index ce611cc..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galoisAvx512_amd64.s +++ /dev/null @@ -1,590 +0,0 @@ -//+build !noasm !appengine !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2019, Minio, Inc. - -// -// Process 2 output rows in parallel from a total of 8 input rows -// -// func _galMulAVX512Parallel82(in, out [][]byte, matrix *[matrixSize82]byte, addTo bool) -TEXT ·_galMulAVX512Parallel82(SB), 7, $0 - MOVQ in+0(FP), SI // - MOVQ 8(SI), R9 // R9: len(in) - SHRQ $6, R9 // len(in) / 64 - TESTQ R9, R9 - JZ done_avx512_parallel82 - - MOVQ matrix+48(FP), SI - LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] - LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] - LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] - LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] - LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] - LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] - LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] - LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] - - MOVQ $15, BX - MOVQ BX, X5 - LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 - - MOVB addTo+56(FP), AX - LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 - WORD $0xf749; BYTE $0xe0 // mul r8 - LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax - MOVQ in+0(FP), SI // SI: &in - MOVQ in_len+8(FP), AX // number of inputs - XORQ R11, R11 - MOVQ out+24(FP), DX - MOVQ 24(DX), CX // CX: &out[1][0] - MOVQ (DX), DX // DX: &out[0][0] - -loopback_avx512_parallel82: - LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] - LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] - - MOVQ (SI), BX // BX: &in[0][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 - LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 - LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $1 - JE skip_avx512_parallel82 - - MOVQ 24(SI), BX // BX: &in[1][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa - LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa - LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $2 - JE skip_avx512_parallel82 - - MOVQ 48(SI), BX // BX: &in[2][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 - LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 - LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $3 - JE skip_avx512_parallel82 - - MOVQ 72(SI), BX // BX: &in[3][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa - LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa - LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $4 - JE skip_avx512_parallel82 - - MOVQ 96(SI), BX // BX: &in[4][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 - LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 - LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $5 - JE skip_avx512_parallel82 - - MOVQ 120(SI), BX // BX: &in[5][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa - LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa - LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $6 - JE skip_avx512_parallel82 - - MOVQ 144(SI), BX // BX: &in[6][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 - LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 - LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - CMPQ AX, $7 - JE skip_avx512_parallel82 - - MOVQ 168(SI), BX // BX: &in[7][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa - LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa - LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - -skip_avx512_parallel82: - LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 - LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 - - ADDQ $64, R11 // in4+=64 - - ADDQ $64, DX // out+=64 - ADDQ $64, CX // out2+=64 - - SUBQ $1, R9 - JNZ loopback_avx512_parallel82 - -done_avx512_parallel82: - VZEROUPPER - RET - -// -// Process 4 output rows in parallel from a total of 8 input rows -// -// func _galMulAVX512Parallel84(in, out [][]byte, matrix *[matrixSize84]byte, addTo bool) -TEXT ·_galMulAVX512Parallel84(SB), 7, $0 - MOVQ in+0(FP), SI // - MOVQ 8(SI), R9 // R9: len(in) - SHRQ $6, R9 // len(in) / 64 - TESTQ R9, R9 - JZ done_avx512_parallel84 - - MOVQ matrix+48(FP), SI - LONG $0x48fee162; WORD $0x066f // VMOVDQU64 ZMM16, 0x000[rsi] - LONG $0x48fee162; WORD $0x4e6f; BYTE $0x01 // VMOVDQU64 ZMM17, 0x040[rsi] - LONG $0x48fee162; WORD $0x566f; BYTE $0x02 // VMOVDQU64 ZMM18, 0x080[rsi] - LONG $0x48fee162; WORD $0x5e6f; BYTE $0x03 // VMOVDQU64 ZMM19, 0x0c0[rsi] - LONG $0x48fee162; WORD $0x666f; BYTE $0x04 // VMOVDQU64 ZMM20, 0x100[rsi] - LONG $0x48fee162; WORD $0x6e6f; BYTE $0x05 // VMOVDQU64 ZMM21, 0x140[rsi] - LONG $0x48fee162; WORD $0x766f; BYTE $0x06 // VMOVDQU64 ZMM22, 0x180[rsi] - LONG $0x48fee162; WORD $0x7e6f; BYTE $0x07 // VMOVDQU64 ZMM23, 0x1c0[rsi] - LONG $0x48fe6162; WORD $0x466f; BYTE $0x08 // VMOVDQU64 ZMM24, 0x200[rsi] - LONG $0x48fe6162; WORD $0x4e6f; BYTE $0x09 // VMOVDQU64 ZMM25, 0x240[rsi] - LONG $0x48fe6162; WORD $0x566f; BYTE $0x0a // VMOVDQU64 ZMM26, 0x280[rsi] - LONG $0x48fe6162; WORD $0x5e6f; BYTE $0x0b // VMOVDQU64 ZMM27, 0x2c0[rsi] - LONG $0x48fe6162; WORD $0x666f; BYTE $0x0c // VMOVDQU64 ZMM28, 0x300[rsi] - LONG $0x48fe6162; WORD $0x6e6f; BYTE $0x0d // VMOVDQU64 ZMM29, 0x340[rsi] - LONG $0x48fe6162; WORD $0x766f; BYTE $0x0e // VMOVDQU64 ZMM30, 0x380[rsi] - LONG $0x48fe6162; WORD $0x7e6f; BYTE $0x0f // VMOVDQU64 ZMM31, 0x3c0[rsi] - - MOVQ $15, BX - MOVQ BX, X5 - LONG $0x487df262; WORD $0xd578 // VPBROADCASTB ZMM2, XMM5 - - MOVB addTo+56(FP), AX - LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 - WORD $0xf749; BYTE $0xe0 // mul r8 - LONG $0x92fbe1c4; BYTE $0xc8 // kmovq k1, rax - MOVQ in+0(FP), SI // SI: &in - MOVQ in_len+8(FP), AX // number of inputs - XORQ R11, R11 - MOVQ out+24(FP), DX - MOVQ 24(DX), CX // CX: &out[1][0] - MOVQ 48(DX), R10 // R10: &out[2][0] - MOVQ 72(DX), R12 // R12: &out[3][0] - MOVQ (DX), DX // DX: &out[0][0] - -loopback_avx512_parallel84: - LONG $0xc9fef162; WORD $0x226f // VMOVDQU64 ZMM4{k1}{z}, [rdx] - LONG $0xc9fef162; WORD $0x296f // VMOVDQU64 ZMM5{k1}{z}, [rcx] - LONG $0xc9fed162; WORD $0x326f // VMOVDQU64 ZMM6{k1}{z}, [r10] - LONG $0xc9fed162; WORD $0x3c6f; BYTE $0x24 // VMOVDQU64 ZMM7{k1}{z}, [r12] - - MOVQ (SI), BX // BX: &in[0][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40fd3362; WORD $0xf043; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0x00 - LONG $0x40fd3362; WORD $0xf843; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40dd3362; WORD $0xe443; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0x00 - LONG $0x40dd3362; WORD $0xec43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40bd1362; WORD $0xd043; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0x00 - LONG $0x40bd1362; WORD $0xd843; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0x55 - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x409d1362; WORD $0xc443; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0x00 - LONG $0x409d1362; WORD $0xcc43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0x55 - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $1 - JE skip_avx512_parallel84 - - MOVQ 24(SI), BX // BX: &in[1][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40fd3362; WORD $0xf043; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM16, ZMM16, 0xaa - LONG $0x40fd3362; WORD $0xf843; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM16, ZMM16, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40dd3362; WORD $0xe443; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM20, ZMM20, 0xaa - LONG $0x40dd3362; WORD $0xec43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM20, ZMM20, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40bd1362; WORD $0xd043; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM24, ZMM24, 0xaa - LONG $0x40bd1362; WORD $0xd843; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM24, ZMM24, 0xff - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x409d1362; WORD $0xc443; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM28, ZMM28, 0xaa - LONG $0x409d1362; WORD $0xcc43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM28, ZMM28, 0xff - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $2 - JE skip_avx512_parallel84 - - MOVQ 48(SI), BX // BX: &in[2][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40f53362; WORD $0xf143; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0x00 - LONG $0x40f53362; WORD $0xf943; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40d53362; WORD $0xe543; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0x00 - LONG $0x40d53362; WORD $0xed43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40b51362; WORD $0xd143; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0x00 - LONG $0x40b51362; WORD $0xd943; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0x55 - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x40951362; WORD $0xc543; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0x00 - LONG $0x40951362; WORD $0xcd43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0x55 - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $3 - JE skip_avx512_parallel84 - - MOVQ 72(SI), BX // BX: &in[3][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40f53362; WORD $0xf143; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM17, ZMM17, 0xaa - LONG $0x40f53362; WORD $0xf943; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM17, ZMM17, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40d53362; WORD $0xe543; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM21, ZMM21, 0xaa - LONG $0x40d53362; WORD $0xed43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM21, ZMM21, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40b51362; WORD $0xd143; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM25, ZMM25, 0xaa - LONG $0x40b51362; WORD $0xd943; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM25, ZMM25, 0xff - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x40951362; WORD $0xc543; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM29, ZMM29, 0xaa - LONG $0x40951362; WORD $0xcd43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM29, ZMM29, 0xff - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $4 - JE skip_avx512_parallel84 - - MOVQ 96(SI), BX // BX: &in[4][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40ed3362; WORD $0xf243; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0x00 - LONG $0x40ed3362; WORD $0xfa43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40cd3362; WORD $0xe643; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0x00 - LONG $0x40cd3362; WORD $0xee43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40ad1362; WORD $0xd243; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0x00 - LONG $0x40ad1362; WORD $0xda43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0x55 - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x408d1362; WORD $0xc643; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0x00 - LONG $0x408d1362; WORD $0xce43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0x55 - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $5 - JE skip_avx512_parallel84 - - MOVQ 120(SI), BX // BX: &in[5][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40ed3362; WORD $0xf243; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM18, ZMM18, 0xaa - LONG $0x40ed3362; WORD $0xfa43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM18, ZMM18, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40cd3362; WORD $0xe643; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM22, ZMM22, 0xaa - LONG $0x40cd3362; WORD $0xee43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM22, ZMM22, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40ad1362; WORD $0xd243; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM26, ZMM26, 0xaa - LONG $0x40ad1362; WORD $0xda43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM26, ZMM26, 0xff - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x408d1362; WORD $0xc643; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM30, ZMM30, 0xaa - LONG $0x408d1362; WORD $0xce43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM30, ZMM30, 0xff - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $6 - JE skip_avx512_parallel84 - - MOVQ 144(SI), BX // BX: &in[6][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40e53362; WORD $0xf343; BYTE $0x00 // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0x00 - LONG $0x40e53362; WORD $0xfb43; BYTE $0x55 // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0x55 - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40c53362; WORD $0xe743; BYTE $0x00 // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0x00 - LONG $0x40c53362; WORD $0xef43; BYTE $0x55 // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0x55 - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40a51362; WORD $0xd343; BYTE $0x00 // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0x00 - LONG $0x40a51362; WORD $0xdb43; BYTE $0x55 // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0x55 - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x40851362; WORD $0xc743; BYTE $0x00 // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0x00 - LONG $0x40851362; WORD $0xcf43; BYTE $0x55 // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0x55 - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - - CMPQ AX, $7 - JE skip_avx512_parallel84 - - MOVQ 168(SI), BX // BX: &in[7][0] - LONG $0x48feb162; WORD $0x046f; BYTE $0x1b // VMOVDQU64 ZMM0, [rbx+r11] - LONG $0x40e53362; WORD $0xf343; BYTE $0xaa // VSHUFI64x2 ZMM14, ZMM19, ZMM19, 0xaa - LONG $0x40e53362; WORD $0xfb43; BYTE $0xff // VSHUFI64x2 ZMM15, ZMM19, ZMM19, 0xff - LONG $0x48f5f162; WORD $0xd073; BYTE $0x04 // VPSRLQ ZMM1, ZMM0, 4 ; high input - LONG $0x48fdf162; WORD $0xc2db // VPANDQ ZMM0, ZMM0, ZMM2 ; low input - LONG $0x48f5f162; WORD $0xcadb // VPANDQ ZMM1, ZMM1, ZMM2 ; high input - LONG $0x480d7262; WORD $0xf000 // VPSHUFB ZMM14, ZMM14, ZMM0 ; mul low part - LONG $0x48057262; WORD $0xf900 // VPSHUFB ZMM15, ZMM15, ZMM1 ; mul high part - LONG $0x488d5162; WORD $0xf7ef // VPXORQ ZMM14, ZMM14, ZMM15 ; result - LONG $0x48ddd162; WORD $0xe6ef // VPXORQ ZMM4, ZMM4, ZMM14 - - LONG $0x40c53362; WORD $0xe743; BYTE $0xaa // VSHUFI64x2 ZMM12, ZMM23, ZMM23, 0xaa - LONG $0x40c53362; WORD $0xef43; BYTE $0xff // VSHUFI64x2 ZMM13, ZMM23, ZMM23, 0xff - LONG $0x481d7262; WORD $0xe000 // VPSHUFB ZMM12, ZMM12, ZMM0 ; mul low part - LONG $0x48157262; WORD $0xe900 // VPSHUFB ZMM13, ZMM13, ZMM1 ; mul high part - LONG $0x489d5162; WORD $0xe5ef // VPXORQ ZMM12, ZMM12, ZMM13 ; result - LONG $0x48d5d162; WORD $0xecef // VPXORQ ZMM5, ZMM5, ZMM12 - - LONG $0x40a51362; WORD $0xd343; BYTE $0xaa // VSHUFI64x2 ZMM10, ZMM27, ZMM27, 0xaa - LONG $0x40a51362; WORD $0xdb43; BYTE $0xff // VSHUFI64x2 ZMM11, ZMM27, ZMM27, 0xff - LONG $0x482d7262; WORD $0xd000 // VPSHUFB ZMM10, ZMM10, ZMM0 ; mul low part - LONG $0x48257262; WORD $0xd900 // VPSHUFB ZMM11, ZMM11, ZMM1 ; mul high part - LONG $0x48ad5162; WORD $0xd3ef // VPXORQ ZMM10, ZMM10, ZMM11 ; result - LONG $0x48cdd162; WORD $0xf2ef // VPXORQ ZMM6, ZMM6, ZMM10 - - LONG $0x40851362; WORD $0xc743; BYTE $0xaa // VSHUFI64x2 ZMM8, ZMM31, ZMM31, 0xaa - LONG $0x40851362; WORD $0xcf43; BYTE $0xff // VSHUFI64x2 ZMM9, ZMM31, ZMM31, 0xff - LONG $0x483d7262; WORD $0xc000 // VPSHUFB ZMM8, ZMM8, ZMM0 ; mul low part - LONG $0x48357262; WORD $0xc900 // VPSHUFB ZMM9, ZMM9, ZMM1 ; mul high part - LONG $0x48bd5162; WORD $0xc1ef // VPXORQ ZMM8, ZMM8, ZMM9 ; result - LONG $0x48c5d162; WORD $0xf8ef // VPXORQ ZMM7, ZMM7, ZMM8 - -skip_avx512_parallel84: - LONG $0x48fef162; WORD $0x227f // VMOVDQU64 [rdx], ZMM4 - LONG $0x48fef162; WORD $0x297f // VMOVDQU64 [rcx], ZMM5 - LONG $0x48fed162; WORD $0x327f // VMOVDQU64 [r10], ZMM6 - LONG $0x48fed162; WORD $0x3c7f; BYTE $0x24 // VMOVDQU64 [r12], ZMM7 - - ADDQ $64, R11 // in4+=64 - - ADDQ $64, DX // out+=64 - ADDQ $64, CX // out2+=64 - ADDQ $64, R10 // out3+=64 - ADDQ $64, R12 // out4+=64 - - SUBQ $1, R9 - JNZ loopback_avx512_parallel84 - -done_avx512_parallel84: - VZEROUPPER - RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.go b/vendor/github.com/klauspost/reedsolomon/galois_amd64.go deleted file mode 100644 index 7515ec5..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_amd64.go +++ /dev/null @@ -1,92 +0,0 @@ -//+build !noasm -//+build !appengine -//+build !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. - -package reedsolomon - -//go:noescape -func galMulSSSE3(low, high, in, out []byte) - -//go:noescape -func galMulSSSE3Xor(low, high, in, out []byte) - -//go:noescape -func galMulAVX2Xor(low, high, in, out []byte) - -//go:noescape -func galMulAVX2(low, high, in, out []byte) - -//go:noescape -func sSE2XorSlice(in, out []byte) - -// This is what the assembler routines do in blocks of 16 bytes: -/* -func galMulSSSE3(low, high, in, out []byte) { - for n, input := range in { - l := input & 0xf - h := input >> 4 - out[n] = low[l] ^ high[h] - } -} - -func galMulSSSE3Xor(low, high, in, out []byte) { - for n, input := range in { - l := input & 0xf - h := input >> 4 - out[n] ^= low[l] ^ high[h] - } -} -*/ - -func galMulSlice(c byte, in, out []byte, o *options) { - var done int - if o.useAVX2 { - galMulAVX2(mulTableLow[c][:], mulTableHigh[c][:], in, out) - done = (len(in) >> 5) << 5 - } else if o.useSSSE3 { - galMulSSSE3(mulTableLow[c][:], mulTableHigh[c][:], in, out) - done = (len(in) >> 4) << 4 - } - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] = mt[in[i]] - } - } -} - -func galMulSliceXor(c byte, in, out []byte, o *options) { - var done int - if o.useAVX2 { - galMulAVX2Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) - done = (len(in) >> 5) << 5 - } else if o.useSSSE3 { - galMulSSSE3Xor(mulTableLow[c][:], mulTableHigh[c][:], in, out) - done = (len(in) >> 4) << 4 - } - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] ^= mt[in[i]] - } - } -} - -// slice galois add -func sliceXor(in, out []byte, sse2 bool) { - var done int - if sse2 { - sSE2XorSlice(in, out) - done = (len(in) >> 4) << 4 - } - remain := len(in) - done - if remain > 0 { - for i := done; i < len(in); i++ { - out[i] ^= in[i] - } - } -} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_amd64.s b/vendor/github.com/klauspost/reedsolomon/galois_amd64.s deleted file mode 100644 index b768028..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_amd64.s +++ /dev/null @@ -1,236 +0,0 @@ -//+build !noasm !appengine !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. - -// Based on http://www.snia.org/sites/default/files2/SDC2013/presentations/NewThinking/EthanMiller_Screaming_Fast_Galois_Field%20Arithmetic_SIMD%20Instructions.pdf -// and http://jerasure.org/jerasure/gf-complete/tree/master - -// func galMulSSSE3Xor(low, high, in, out []byte) -TEXT ·galMulSSSE3Xor(SB), 7, $0 - MOVQ low+0(FP), SI // SI: &low - MOVQ high+24(FP), DX // DX: &high - MOVOU (SI), X6 // X6 low - MOVOU (DX), X7 // X7: high - MOVQ $15, BX // BX: low mask - MOVQ BX, X8 - PXOR X5, X5 - MOVQ in+48(FP), SI // R11: &in - MOVQ in_len+56(FP), R9 // R9: len(in) - MOVQ out+72(FP), DX // DX: &out - PSHUFB X5, X8 // X8: lomask (unpacked) - SHRQ $4, R9 // len(in) / 16 - MOVQ SI, AX - MOVQ DX, BX - ANDQ $15, AX - ANDQ $15, BX - CMPQ R9, $0 - JEQ done_xor - ORQ AX, BX - CMPQ BX, $0 - JNZ loopback_xor - -loopback_xor_aligned: - MOVOA (SI), X0 // in[x] - MOVOA (DX), X4 // out[x] - MOVOA X0, X1 // in[x] - MOVOA X6, X2 // low copy - MOVOA X7, X3 // high copy - PSRLQ $4, X1 // X1: high input - PAND X8, X0 // X0: low input - PAND X8, X1 // X0: high input - PSHUFB X0, X2 // X2: mul low part - PSHUFB X1, X3 // X3: mul high part - PXOR X2, X3 // X3: Result - PXOR X4, X3 // X3: Result xor existing out - MOVOA X3, (DX) // Store - ADDQ $16, SI // in+=16 - ADDQ $16, DX // out+=16 - SUBQ $1, R9 - JNZ loopback_xor_aligned - JMP done_xor - -loopback_xor: - MOVOU (SI), X0 // in[x] - MOVOU (DX), X4 // out[x] - MOVOU X0, X1 // in[x] - MOVOU X6, X2 // low copy - MOVOU X7, X3 // high copy - PSRLQ $4, X1 // X1: high input - PAND X8, X0 // X0: low input - PAND X8, X1 // X0: high input - PSHUFB X0, X2 // X2: mul low part - PSHUFB X1, X3 // X3: mul high part - PXOR X2, X3 // X3: Result - PXOR X4, X3 // X3: Result xor existing out - MOVOU X3, (DX) // Store - ADDQ $16, SI // in+=16 - ADDQ $16, DX // out+=16 - SUBQ $1, R9 - JNZ loopback_xor - -done_xor: - RET - -// func galMulSSSE3(low, high, in, out []byte) -TEXT ·galMulSSSE3(SB), 7, $0 - MOVQ low+0(FP), SI // SI: &low - MOVQ high+24(FP), DX // DX: &high - MOVOU (SI), X6 // X6 low - MOVOU (DX), X7 // X7: high - MOVQ $15, BX // BX: low mask - MOVQ BX, X8 - PXOR X5, X5 - MOVQ in+48(FP), SI // R11: &in - MOVQ in_len+56(FP), R9 // R9: len(in) - MOVQ out+72(FP), DX // DX: &out - PSHUFB X5, X8 // X8: lomask (unpacked) - MOVQ SI, AX - MOVQ DX, BX - SHRQ $4, R9 // len(in) / 16 - ANDQ $15, AX - ANDQ $15, BX - CMPQ R9, $0 - JEQ done - ORQ AX, BX - CMPQ BX, $0 - JNZ loopback - -loopback_aligned: - MOVOA (SI), X0 // in[x] - MOVOA X0, X1 // in[x] - MOVOA X6, X2 // low copy - MOVOA X7, X3 // high copy - PSRLQ $4, X1 // X1: high input - PAND X8, X0 // X0: low input - PAND X8, X1 // X0: high input - PSHUFB X0, X2 // X2: mul low part - PSHUFB X1, X3 // X3: mul high part - PXOR X2, X3 // X3: Result - MOVOA X3, (DX) // Store - ADDQ $16, SI // in+=16 - ADDQ $16, DX // out+=16 - SUBQ $1, R9 - JNZ loopback_aligned - JMP done - -loopback: - MOVOU (SI), X0 // in[x] - MOVOU X0, X1 // in[x] - MOVOA X6, X2 // low copy - MOVOA X7, X3 // high copy - PSRLQ $4, X1 // X1: high input - PAND X8, X0 // X0: low input - PAND X8, X1 // X0: high input - PSHUFB X0, X2 // X2: mul low part - PSHUFB X1, X3 // X3: mul high part - PXOR X2, X3 // X3: Result - MOVOU X3, (DX) // Store - ADDQ $16, SI // in+=16 - ADDQ $16, DX // out+=16 - SUBQ $1, R9 - JNZ loopback - -done: - RET - -// func galMulAVX2Xor(low, high, in, out []byte) -TEXT ·galMulAVX2Xor(SB), 7, $0 - MOVQ low+0(FP), SI // SI: &low - MOVQ high+24(FP), DX // DX: &high - MOVQ $15, BX // BX: low mask - MOVQ BX, X5 - MOVOU (SI), X6 // X6: low - MOVOU (DX), X7 // X7: high - MOVQ in_len+56(FP), R9 // R9: len(in) - - VINSERTI128 $1, X6, Y6, Y6 // low - VINSERTI128 $1, X7, Y7, Y7 // high - VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) - - SHRQ $5, R9 // len(in) / 32 - MOVQ out+72(FP), DX // DX: &out - MOVQ in+48(FP), SI // SI: &in - TESTQ R9, R9 - JZ done_xor_avx2 - -loopback_xor_avx2: - VMOVDQU (SI), Y0 - VMOVDQU (DX), Y4 - VPSRLQ $4, Y0, Y1 // Y1: high input - VPAND Y8, Y0, Y0 // Y0: low input - VPAND Y8, Y1, Y1 // Y1: high input - VPSHUFB Y0, Y6, Y2 // Y2: mul low part - VPSHUFB Y1, Y7, Y3 // Y3: mul high part - VPXOR Y3, Y2, Y3 // Y3: Result - VPXOR Y4, Y3, Y4 // Y4: Result - VMOVDQU Y4, (DX) - - ADDQ $32, SI // in+=32 - ADDQ $32, DX // out+=32 - SUBQ $1, R9 - JNZ loopback_xor_avx2 - -done_xor_avx2: - VZEROUPPER - RET - -// func galMulAVX2(low, high, in, out []byte) -TEXT ·galMulAVX2(SB), 7, $0 - MOVQ low+0(FP), SI // SI: &low - MOVQ high+24(FP), DX // DX: &high - MOVQ $15, BX // BX: low mask - MOVQ BX, X5 - MOVOU (SI), X6 // X6: low - MOVOU (DX), X7 // X7: high - MOVQ in_len+56(FP), R9 // R9: len(in) - - VINSERTI128 $1, X6, Y6, Y6 // low - VINSERTI128 $1, X7, Y7, Y7 // high - VPBROADCASTB X5, Y8 // Y8: lomask (unpacked) - - SHRQ $5, R9 // len(in) / 32 - MOVQ out+72(FP), DX // DX: &out - MOVQ in+48(FP), SI // SI: &in - TESTQ R9, R9 - JZ done_avx2 - -loopback_avx2: - VMOVDQU (SI), Y0 - VPSRLQ $4, Y0, Y1 // Y1: high input - VPAND Y8, Y0, Y0 // Y0: low input - VPAND Y8, Y1, Y1 // Y1: high input - VPSHUFB Y0, Y6, Y2 // Y2: mul low part - VPSHUFB Y1, Y7, Y3 // Y3: mul high part - VPXOR Y3, Y2, Y4 // Y4: Result - VMOVDQU Y4, (DX) - - ADDQ $32, SI // in+=32 - ADDQ $32, DX // out+=32 - SUBQ $1, R9 - JNZ loopback_avx2 - -done_avx2: - VZEROUPPER - RET - -// func sSE2XorSlice(in, out []byte) -TEXT ·sSE2XorSlice(SB), 7, $0 - MOVQ in+0(FP), SI // SI: &in - MOVQ in_len+8(FP), R9 // R9: len(in) - MOVQ out+24(FP), DX // DX: &out - SHRQ $4, R9 // len(in) / 16 - CMPQ R9, $0 - JEQ done_xor_sse2 - -loopback_xor_sse2: - MOVOU (SI), X0 // in[x] - MOVOU (DX), X1 // out[x] - PXOR X0, X1 - MOVOU X1, (DX) - ADDQ $16, SI // in+=16 - ADDQ $16, DX // out+=16 - SUBQ $1, R9 - JNZ loopback_xor_sse2 - -done_xor_sse2: - RET diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.go b/vendor/github.com/klauspost/reedsolomon/galois_arm64.go deleted file mode 100644 index 9224ff7..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_arm64.go +++ /dev/null @@ -1,52 +0,0 @@ -//+build !noasm -//+build !appengine -//+build !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2017, Minio, Inc. - -package reedsolomon - -//go:noescape -func galMulNEON(c uint64, in, out []byte) - -//go:noescape -func galMulXorNEON(c uint64, in, out []byte) - -func galMulSlice(c byte, in, out []byte, o *options) { - var done int - galMulNEON(uint64(c), in, out) - done = (len(in) >> 5) << 5 - - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] = mt[in[i]] - } - } -} - -func galMulSliceXor(c byte, in, out []byte, o *options) { - var done int - galMulXorNEON(uint64(c), in, out) - done = (len(in) >> 5) << 5 - - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] ^= mt[in[i]] - } - } -} - -// slice galois add -func sliceXor(in, out []byte, sse2 bool) { - for n, input := range in { - out[n] ^= input - } -} - -func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { -} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_arm64.s b/vendor/github.com/klauspost/reedsolomon/galois_arm64.s deleted file mode 100644 index 0c43f6d..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_arm64.s +++ /dev/null @@ -1,141 +0,0 @@ -//+build !noasm !appengine !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2017, Minio, Inc. - -// Use github.com/minio/asm2plan9s on this file to assemble ARM instructions to -// the opcodes of their Plan9 equivalents - -// polynomial multiplication -#define POLYNOMIAL_MULTIPLICATION \ - WORD $0x0e3ce340 \ // pmull v0.8h,v26.8b,v28.8b - WORD $0x4e3ce346 \ // pmull2 v6.8h,v26.16b,v28.16b - WORD $0x0e3ce36c \ // pmull v12.8h,v27.8b,v28.8b - WORD $0x4e3ce372 // pmull2 v18.8h,v27.16b,v28.16b - -// first reduction -#define FIRST_REDUCTION \ - WORD $0x0f088402 \ // shrn v2.8b, v0.8h, #8 - WORD $0x0f0884c8 \ // shrn v8.8b, v6.8h, #8 - WORD $0x0f08858e \ // shrn v14.8b, v12.8h, #8 - WORD $0x0f088654 \ // shrn v20.8b, v18.8h, #8 - WORD $0x0e22e3c3 \ // pmull v3.8h,v30.8b,v2.8b - WORD $0x0e28e3c9 \ // pmull v9.8h,v30.8b,v8.8b - WORD $0x0e2ee3cf \ // pmull v15.8h,v30.8b,v14.8b - WORD $0x0e34e3d5 \ // pmull v21.8h,v30.8b,v20.8b - WORD $0x6e201c60 \ // eor v0.16b,v3.16b,v0.16b - WORD $0x6e261d26 \ // eor v6.16b,v9.16b,v6.16b - WORD $0x6e2c1dec \ // eor v12.16b,v15.16b,v12.16b - WORD $0x6e321eb2 // eor v18.16b,v21.16b,v18.16b - -// second reduction -#define SECOND_REDUCTION \ - WORD $0x0f088404 \ // shrn v4.8b, v0.8h, #8 - WORD $0x0f0884ca \ // shrn v10.8b, v6.8h, #8 - WORD $0x0f088590 \ // shrn v16.8b, v12.8h, #8 - WORD $0x0f088656 \ // shrn v22.8b, v18.8h, #8 - WORD $0x6e241c44 \ // eor v4.16b,v2.16b,v4.16b - WORD $0x6e2a1d0a \ // eor v10.16b,v8.16b,v10.16b - WORD $0x6e301dd0 \ // eor v16.16b,v14.16b,v16.16b - WORD $0x6e361e96 \ // eor v22.16b,v20.16b,v22.16b - WORD $0x0e24e3c5 \ // pmull v5.8h,v30.8b,v4.8b - WORD $0x0e2ae3cb \ // pmull v11.8h,v30.8b,v10.8b - WORD $0x0e30e3d1 \ // pmull v17.8h,v30.8b,v16.8b - WORD $0x0e36e3d7 \ // pmull v23.8h,v30.8b,v22.8b - WORD $0x6e201ca0 \ // eor v0.16b,v5.16b,v0.16b - WORD $0x6e261d61 \ // eor v1.16b,v11.16b,v6.16b - WORD $0x6e2c1e22 \ // eor v2.16b,v17.16b,v12.16b - WORD $0x6e321ee3 // eor v3.16b,v23.16b,v18.16b - -// func galMulNEON(c uint64, in, out []byte) -TEXT ·galMulNEON(SB), 7, $0 - MOVD c+0(FP), R0 - MOVD in_base+8(FP), R1 - MOVD in_len+16(FP), R2 // length of message - MOVD out_base+32(FP), R5 - SUBS $32, R2 - BMI complete - - // Load constants table pointer - MOVD $·constants(SB), R3 - - // and load constants into v30 & v31 - WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] - - WORD $0x4e010c1c // dup v28.16b, w0 - -loop: - // Main loop - WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 - - POLYNOMIAL_MULTIPLICATION - - FIRST_REDUCTION - - SECOND_REDUCTION - - // combine results - WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b - WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b - - // Store result - WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 - - SUBS $32, R2 - BPL loop - -complete: - RET - -// func galMulXorNEON(c uint64, in, out []byte) -TEXT ·galMulXorNEON(SB), 7, $0 - MOVD c+0(FP), R0 - MOVD in_base+8(FP), R1 - MOVD in_len+16(FP), R2 // length of message - MOVD out_base+32(FP), R5 - SUBS $32, R2 - BMI completeXor - - // Load constants table pointer - MOVD $·constants(SB), R3 - - // and load constants into v30 & v31 - WORD $0x4c40a07e // ld1 {v30.16b-v31.16b}, [x3] - - WORD $0x4e010c1c // dup v28.16b, w0 - -loopXor: - // Main loop - WORD $0x4cdfa83a // ld1 {v26.4s-v27.4s}, [x1], #32 - WORD $0x4c40a8b8 // ld1 {v24.4s-v25.4s}, [x5] - - POLYNOMIAL_MULTIPLICATION - - FIRST_REDUCTION - - SECOND_REDUCTION - - // combine results - WORD $0x4e1f2000 // tbl v0.16b,{v0.16b,v1.16b},v31.16b - WORD $0x4e1f2041 // tbl v1.16b,{v2.16b,v3.16b},v31.16b - - // Xor result and store - WORD $0x6e381c00 // eor v0.16b,v0.16b,v24.16b - WORD $0x6e391c21 // eor v1.16b,v1.16b,v25.16b - WORD $0x4c9faca0 // st1 {v0.2d-v1.2d}, [x5], #32 - - SUBS $32, R2 - BPL loopXor - -completeXor: - RET - -// Constants table -// generating polynomial is 29 (= 0x1d) -DATA ·constants+0x0(SB)/8, $0x1d1d1d1d1d1d1d1d -DATA ·constants+0x8(SB)/8, $0x1d1d1d1d1d1d1d1d -// constant for TBL instruction -DATA ·constants+0x10(SB)/8, $0x0e0c0a0806040200 -DATA ·constants+0x18(SB)/8, $0x1e1c1a1816141210 - -GLOBL ·constants(SB), 8, $32 diff --git a/vendor/github.com/klauspost/reedsolomon/galois_noasm.go b/vendor/github.com/klauspost/reedsolomon/galois_noasm.go deleted file mode 100644 index cc43658..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_noasm.go +++ /dev/null @@ -1,34 +0,0 @@ -//+build !amd64 noasm appengine gccgo -//+build !arm64 noasm appengine gccgo -//+build !ppc64le noasm appengine gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. - -package reedsolomon - -func galMulSlice(c byte, in, out []byte, o *options) { - mt := mulTable[c][:256] - out = out[:len(in)] - for n, input := range in { - out[n] = mt[input] - } -} - -func galMulSliceXor(c byte, in, out []byte, o *options) { - mt := mulTable[c][:256] - out = out[:len(in)] - for n, input := range in { - out[n] ^= mt[input] - } -} - -// slice galois add -func sliceXor(in, out []byte, sse2 bool) { - for n, input := range in { - out[n] ^= input - } -} - -func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { - panic("unreachable") -} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go deleted file mode 100644 index 42314a5..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.go +++ /dev/null @@ -1,70 +0,0 @@ -//+build !noasm -//+build !appengine -//+build !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2018, Minio, Inc. - -package reedsolomon - -//go:noescape -func galMulPpc(low, high, in, out []byte) - -//go:noescape -func galMulPpcXor(low, high, in, out []byte) - -// This is what the assembler routines do in blocks of 16 bytes: -/* -func galMulPpc(low, high, in, out []byte) { - for n, input := range in { - l := input & 0xf - h := input >> 4 - out[n] = low[l] ^ high[h] - } -} -func galMulPpcXor(low, high, in, out []byte) { - for n, input := range in { - l := input & 0xf - h := input >> 4 - out[n] ^= low[l] ^ high[h] - } -} -*/ - -func galMulSlice(c byte, in, out []byte, o *options) { - done := (len(in) >> 4) << 4 - if done > 0 { - galMulPpc(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) - } - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] = mt[in[i]] - } - } -} - -func galMulSliceXor(c byte, in, out []byte, o *options) { - done := (len(in) >> 4) << 4 - if done > 0 { - galMulPpcXor(mulTableLow[c][:], mulTableHigh[c][:], in[:done], out) - } - remain := len(in) - done - if remain > 0 { - mt := mulTable[c][:256] - for i := done; i < len(in); i++ { - out[i] ^= mt[in[i]] - } - } -} - -// slice galois add -func sliceXor(in, out []byte, sse2 bool) { - for n, input := range in { - out[n] ^= input - } -} - -func (r reedSolomon) codeSomeShardsAvx512(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { -} diff --git a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s b/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s deleted file mode 100644 index 960087c..0000000 --- a/vendor/github.com/klauspost/reedsolomon/galois_ppc64le.s +++ /dev/null @@ -1,126 +0,0 @@ -//+build !noasm !appengine !gccgo - -// Copyright 2015, Klaus Post, see LICENSE for details. -// Copyright 2018, Minio, Inc. - -#include "textflag.h" - -#define LOW R3 -#define HIGH R4 -#define IN R5 -#define LEN R6 -#define OUT R7 -#define CONSTANTS R8 -#define OFFSET R9 -#define OFFSET1 R10 -#define OFFSET2 R11 - -#define X6 VS34 -#define X6_ V2 -#define X7 VS35 -#define X7_ V3 -#define MSG VS36 -#define MSG_ V4 -#define MSG_HI VS37 -#define MSG_HI_ V5 -#define RESULT VS38 -#define RESULT_ V6 -#define ROTATE VS39 -#define ROTATE_ V7 -#define MASK VS40 -#define MASK_ V8 -#define FLIP VS41 -#define FLIP_ V9 - - -// func galMulPpc(low, high, in, out []byte) -TEXT ·galMulPpc(SB), NOFRAME|NOSPLIT, $0-96 - MOVD low+0(FP), LOW - MOVD high+24(FP), HIGH - MOVD in+48(FP), IN - MOVD in_len+56(FP), LEN - MOVD out+72(FP), OUT - - MOVD $16, OFFSET1 - MOVD $32, OFFSET2 - - MOVD $·constants(SB), CONSTANTS - LXVD2X (CONSTANTS)(R0), ROTATE - LXVD2X (CONSTANTS)(OFFSET1), MASK - LXVD2X (CONSTANTS)(OFFSET2), FLIP - - LXVD2X (LOW)(R0), X6 - LXVD2X (HIGH)(R0), X7 - VPERM X6_, V31, FLIP_, X6_ - VPERM X7_, V31, FLIP_, X7_ - - MOVD $0, OFFSET - -loop: - LXVD2X (IN)(OFFSET), MSG - - VSRB MSG_, ROTATE_, MSG_HI_ - VAND MSG_, MASK_, MSG_ - VPERM X6_, V31, MSG_, MSG_ - VPERM X7_, V31, MSG_HI_, MSG_HI_ - - VXOR MSG_, MSG_HI_, MSG_ - - STXVD2X MSG, (OUT)(OFFSET) - - ADD $16, OFFSET, OFFSET - CMP LEN, OFFSET - BGT loop - RET - - -// func galMulPpcXorlow, high, in, out []byte) -TEXT ·galMulPpcXor(SB), NOFRAME|NOSPLIT, $0-96 - MOVD low+0(FP), LOW - MOVD high+24(FP), HIGH - MOVD in+48(FP), IN - MOVD in_len+56(FP), LEN - MOVD out+72(FP), OUT - - MOVD $16, OFFSET1 - MOVD $32, OFFSET2 - - MOVD $·constants(SB), CONSTANTS - LXVD2X (CONSTANTS)(R0), ROTATE - LXVD2X (CONSTANTS)(OFFSET1), MASK - LXVD2X (CONSTANTS)(OFFSET2), FLIP - - LXVD2X (LOW)(R0), X6 - LXVD2X (HIGH)(R0), X7 - VPERM X6_, V31, FLIP_, X6_ - VPERM X7_, V31, FLIP_, X7_ - - MOVD $0, OFFSET - -loopXor: - LXVD2X (IN)(OFFSET), MSG - LXVD2X (OUT)(OFFSET), RESULT - - VSRB MSG_, ROTATE_, MSG_HI_ - VAND MSG_, MASK_, MSG_ - VPERM X6_, V31, MSG_, MSG_ - VPERM X7_, V31, MSG_HI_, MSG_HI_ - - VXOR MSG_, MSG_HI_, MSG_ - VXOR MSG_, RESULT_, RESULT_ - - STXVD2X RESULT, (OUT)(OFFSET) - - ADD $16, OFFSET, OFFSET - CMP LEN, OFFSET - BGT loopXor - RET - -DATA ·constants+0x0(SB)/8, $0x0404040404040404 -DATA ·constants+0x8(SB)/8, $0x0404040404040404 -DATA ·constants+0x10(SB)/8, $0x0f0f0f0f0f0f0f0f -DATA ·constants+0x18(SB)/8, $0x0f0f0f0f0f0f0f0f -DATA ·constants+0x20(SB)/8, $0x0706050403020100 -DATA ·constants+0x28(SB)/8, $0x0f0e0d0c0b0a0908 - -GLOBL ·constants(SB), 8, $48 diff --git a/vendor/github.com/klauspost/reedsolomon/gentables.go b/vendor/github.com/klauspost/reedsolomon/gentables.go deleted file mode 100644 index 843aade..0000000 --- a/vendor/github.com/klauspost/reedsolomon/gentables.go +++ /dev/null @@ -1,132 +0,0 @@ -//+build ignore - -package main - -import ( - "fmt" -) - -var logTable = [fieldSize]int16{ - -1, 0, 1, 25, 2, 50, 26, 198, - 3, 223, 51, 238, 27, 104, 199, 75, - 4, 100, 224, 14, 52, 141, 239, 129, - 28, 193, 105, 248, 200, 8, 76, 113, - 5, 138, 101, 47, 225, 36, 15, 33, - 53, 147, 142, 218, 240, 18, 130, 69, - 29, 181, 194, 125, 106, 39, 249, 185, - 201, 154, 9, 120, 77, 228, 114, 166, - 6, 191, 139, 98, 102, 221, 48, 253, - 226, 152, 37, 179, 16, 145, 34, 136, - 54, 208, 148, 206, 143, 150, 219, 189, - 241, 210, 19, 92, 131, 56, 70, 64, - 30, 66, 182, 163, 195, 72, 126, 110, - 107, 58, 40, 84, 250, 133, 186, 61, - 202, 94, 155, 159, 10, 21, 121, 43, - 78, 212, 229, 172, 115, 243, 167, 87, - 7, 112, 192, 247, 140, 128, 99, 13, - 103, 74, 222, 237, 49, 197, 254, 24, - 227, 165, 153, 119, 38, 184, 180, 124, - 17, 68, 146, 217, 35, 32, 137, 46, - 55, 63, 209, 91, 149, 188, 207, 205, - 144, 135, 151, 178, 220, 252, 190, 97, - 242, 86, 211, 171, 20, 42, 93, 158, - 132, 60, 57, 83, 71, 109, 65, 162, - 31, 45, 67, 216, 183, 123, 164, 118, - 196, 23, 73, 236, 127, 12, 111, 246, - 108, 161, 59, 82, 41, 157, 85, 170, - 251, 96, 134, 177, 187, 204, 62, 90, - 203, 89, 95, 176, 156, 169, 160, 81, - 11, 245, 22, 235, 122, 117, 44, 215, - 79, 174, 213, 233, 230, 231, 173, 232, - 116, 214, 244, 234, 168, 80, 88, 175, -} - -const ( - // The number of elements in the field. - fieldSize = 256 - - // The polynomial used to generate the logarithm table. - // - // There are a number of polynomials that work to generate - // a Galois field of 256 elements. The choice is arbitrary, - // and we just use the first one. - // - // The possibilities are: 29, 43, 45, 77, 95, 99, 101, 105, - //* 113, 135, 141, 169, 195, 207, 231, and 245. - generatingPolynomial = 29 -) - -func main() { - t := generateExpTable() - fmt.Printf("var expTable = %#v\n", t) - //t2 := generateMulTableSplit(t) - //fmt.Printf("var mulTable = %#v\n", t2) - low, high := generateMulTableHalf(t) - fmt.Printf("var mulTableLow = %#v\n", low) - fmt.Printf("var mulTableHigh = %#v\n", high) -} - -/** - * Generates the inverse log table. - */ -func generateExpTable() []byte { - result := make([]byte, fieldSize*2-2) - for i := 1; i < fieldSize; i++ { - log := logTable[i] - result[log] = byte(i) - result[log+fieldSize-1] = byte(i) - } - return result -} - -func generateMulTable(expTable []byte) []byte { - result := make([]byte, 256*256) - for v := range result { - a := byte(v & 0xff) - b := byte(v >> 8) - if a == 0 || b == 0 { - result[v] = 0 - continue - } - logA := int(logTable[a]) - logB := int(logTable[b]) - result[v] = expTable[logA+logB] - } - return result -} - -func generateMulTableSplit(expTable []byte) [256][256]byte { - var result [256][256]byte - for a := range result { - for b := range result[a] { - if a == 0 || b == 0 { - result[a][b] = 0 - continue - } - logA := int(logTable[a]) - logB := int(logTable[b]) - result[a][b] = expTable[logA+logB] - } - } - return result -} - -func generateMulTableHalf(expTable []byte) (low [256][16]byte, high [256][16]byte) { - for a := range low { - for b := range low { - result := 0 - if !(a == 0 || b == 0) { - logA := int(logTable[a]) - logB := int(logTable[b]) - result = int(expTable[logA+logB]) - } - if (b & 0xf) == b { - low[a][b] = byte(result) - } - if (b & 0xf0) == b { - high[a][b>>4] = byte(result) - } - } - } - return -} diff --git a/vendor/github.com/klauspost/reedsolomon/inversion_tree.go b/vendor/github.com/klauspost/reedsolomon/inversion_tree.go deleted file mode 100644 index c9d8ab2..0000000 --- a/vendor/github.com/klauspost/reedsolomon/inversion_tree.go +++ /dev/null @@ -1,160 +0,0 @@ -/** - * A thread-safe tree which caches inverted matrices. - * - * Copyright 2016, Peter Collins - */ - -package reedsolomon - -import ( - "errors" - "sync" -) - -// The tree uses a Reader-Writer mutex to make it thread-safe -// when accessing cached matrices and inserting new ones. -type inversionTree struct { - mutex *sync.RWMutex - root inversionNode -} - -type inversionNode struct { - matrix matrix - children []*inversionNode -} - -// newInversionTree initializes a tree for storing inverted matrices. -// Note that the root node is the identity matrix as it implies -// there were no errors with the original data. -func newInversionTree(dataShards, parityShards int) inversionTree { - identity, _ := identityMatrix(dataShards) - root := inversionNode{ - matrix: identity, - children: make([]*inversionNode, dataShards+parityShards), - } - return inversionTree{ - mutex: &sync.RWMutex{}, - root: root, - } -} - -// GetInvertedMatrix returns the cached inverted matrix or nil if it -// is not found in the tree keyed on the indices of invalid rows. -func (t inversionTree) GetInvertedMatrix(invalidIndices []int) matrix { - // Lock the tree for reading before accessing the tree. - t.mutex.RLock() - defer t.mutex.RUnlock() - - // If no invalid indices were give we should return the root - // identity matrix. - if len(invalidIndices) == 0 { - return t.root.matrix - } - - // Recursively search for the inverted matrix in the tree, passing in - // 0 as the parent index as we start at the root of the tree. - return t.root.getInvertedMatrix(invalidIndices, 0) -} - -// errAlreadySet is returned if the root node matrix is overwritten -var errAlreadySet = errors.New("the root node identity matrix is already set") - -// InsertInvertedMatrix inserts a new inverted matrix into the tree -// keyed by the indices of invalid rows. The total number of shards -// is required for creating the proper length lists of child nodes for -// each node. -func (t inversionTree) InsertInvertedMatrix(invalidIndices []int, matrix matrix, shards int) error { - // If no invalid indices were given then we are done because the - // root node is already set with the identity matrix. - if len(invalidIndices) == 0 { - return errAlreadySet - } - - if !matrix.IsSquare() { - return errNotSquare - } - - // Lock the tree for writing and reading before accessing the tree. - t.mutex.Lock() - defer t.mutex.Unlock() - - // Recursively create nodes for the inverted matrix in the tree until - // we reach the node to insert the matrix to. We start by passing in - // 0 as the parent index as we start at the root of the tree. - t.root.insertInvertedMatrix(invalidIndices, matrix, shards, 0) - - return nil -} - -func (n inversionNode) getInvertedMatrix(invalidIndices []int, parent int) matrix { - // Get the child node to search next from the list of children. The - // list of children starts relative to the parent index passed in - // because the indices of invalid rows is sorted (by default). As we - // search recursively, the first invalid index gets popped off the list, - // so when searching through the list of children, use that first invalid - // index to find the child node. - firstIndex := invalidIndices[0] - node := n.children[firstIndex-parent] - - // If the child node doesn't exist in the list yet, fail fast by - // returning, so we can construct and insert the proper inverted matrix. - if node == nil { - return nil - } - - // If there's more than one invalid index left in the list we should - // keep searching recursively. - if len(invalidIndices) > 1 { - // Search recursively on the child node by passing in the invalid indices - // with the first index popped off the front. Also the parent index to - // pass down is the first index plus one. - return node.getInvertedMatrix(invalidIndices[1:], firstIndex+1) - } - // If there aren't any more invalid indices to search, we've found our - // node. Return it, however keep in mind that the matrix could still be - // nil because intermediary nodes in the tree are created sometimes with - // their inversion matrices uninitialized. - return node.matrix -} - -func (n inversionNode) insertInvertedMatrix(invalidIndices []int, matrix matrix, shards, parent int) { - // As above, get the child node to search next from the list of children. - // The list of children starts relative to the parent index passed in - // because the indices of invalid rows is sorted (by default). As we - // search recursively, the first invalid index gets popped off the list, - // so when searching through the list of children, use that first invalid - // index to find the child node. - firstIndex := invalidIndices[0] - node := n.children[firstIndex-parent] - - // If the child node doesn't exist in the list yet, create a new - // node because we have the writer lock and add it to the list - // of children. - if node == nil { - // Make the length of the list of children equal to the number - // of shards minus the first invalid index because the list of - // invalid indices is sorted, so only this length of errors - // are possible in the tree. - node = &inversionNode{ - children: make([]*inversionNode, shards-firstIndex), - } - // Insert the new node into the tree at the first index relative - // to the parent index that was given in this recursive call. - n.children[firstIndex-parent] = node - } - - // If there's more than one invalid index left in the list we should - // keep searching recursively in order to find the node to add our - // matrix. - if len(invalidIndices) > 1 { - // As above, search recursively on the child node by passing in - // the invalid indices with the first index popped off the front. - // Also the total number of shards and parent index are passed down - // which is equal to the first index plus one. - node.insertInvertedMatrix(invalidIndices[1:], matrix, shards, firstIndex+1) - } else { - // If there aren't any more invalid indices to search, we've found our - // node. Cache the inverted matrix in this node. - node.matrix = matrix - } -} diff --git a/vendor/github.com/klauspost/reedsolomon/matrix.go b/vendor/github.com/klauspost/reedsolomon/matrix.go deleted file mode 100644 index a6b9730..0000000 --- a/vendor/github.com/klauspost/reedsolomon/matrix.go +++ /dev/null @@ -1,279 +0,0 @@ -/** - * Matrix Algebra over an 8-bit Galois Field - * - * Copyright 2015, Klaus Post - * Copyright 2015, Backblaze, Inc. - */ - -package reedsolomon - -import ( - "errors" - "fmt" - "strconv" - "strings" -) - -// byte[row][col] -type matrix [][]byte - -// newMatrix returns a matrix of zeros. -func newMatrix(rows, cols int) (matrix, error) { - if rows <= 0 { - return nil, errInvalidRowSize - } - if cols <= 0 { - return nil, errInvalidColSize - } - - m := matrix(make([][]byte, rows)) - for i := range m { - m[i] = make([]byte, cols) - } - return m, nil -} - -// NewMatrixData initializes a matrix with the given row-major data. -// Note that data is not copied from input. -func newMatrixData(data [][]byte) (matrix, error) { - m := matrix(data) - err := m.Check() - if err != nil { - return nil, err - } - return m, nil -} - -// IdentityMatrix returns an identity matrix of the given size. -func identityMatrix(size int) (matrix, error) { - m, err := newMatrix(size, size) - if err != nil { - return nil, err - } - for i := range m { - m[i][i] = 1 - } - return m, nil -} - -// errInvalidRowSize will be returned if attempting to create a matrix with negative or zero row number. -var errInvalidRowSize = errors.New("invalid row size") - -// errInvalidColSize will be returned if attempting to create a matrix with negative or zero column number. -var errInvalidColSize = errors.New("invalid column size") - -// errColSizeMismatch is returned if the size of matrix columns mismatch. -var errColSizeMismatch = errors.New("column size is not the same for all rows") - -func (m matrix) Check() error { - rows := len(m) - if rows <= 0 { - return errInvalidRowSize - } - cols := len(m[0]) - if cols <= 0 { - return errInvalidColSize - } - - for _, col := range m { - if len(col) != cols { - return errColSizeMismatch - } - } - return nil -} - -// String returns a human-readable string of the matrix contents. -// -// Example: [[1, 2], [3, 4]] -func (m matrix) String() string { - rowOut := make([]string, 0, len(m)) - for _, row := range m { - colOut := make([]string, 0, len(row)) - for _, col := range row { - colOut = append(colOut, strconv.Itoa(int(col))) - } - rowOut = append(rowOut, "["+strings.Join(colOut, ", ")+"]") - } - return "[" + strings.Join(rowOut, ", ") + "]" -} - -// Multiply multiplies this matrix (the one on the left) by another -// matrix (the one on the right) and returns a new matrix with the result. -func (m matrix) Multiply(right matrix) (matrix, error) { - if len(m[0]) != len(right) { - return nil, fmt.Errorf("columns on left (%d) is different than rows on right (%d)", len(m[0]), len(right)) - } - result, _ := newMatrix(len(m), len(right[0])) - for r, row := range result { - for c := range row { - var value byte - for i := range m[0] { - value ^= galMultiply(m[r][i], right[i][c]) - } - result[r][c] = value - } - } - return result, nil -} - -// Augment returns the concatenation of this matrix and the matrix on the right. -func (m matrix) Augment(right matrix) (matrix, error) { - if len(m) != len(right) { - return nil, errMatrixSize - } - - result, _ := newMatrix(len(m), len(m[0])+len(right[0])) - for r, row := range m { - for c := range row { - result[r][c] = m[r][c] - } - cols := len(m[0]) - for c := range right[0] { - result[r][cols+c] = right[r][c] - } - } - return result, nil -} - -// errMatrixSize is returned if matrix dimensions are doesn't match. -var errMatrixSize = errors.New("matrix sizes do not match") - -func (m matrix) SameSize(n matrix) error { - if len(m) != len(n) { - return errMatrixSize - } - for i := range m { - if len(m[i]) != len(n[i]) { - return errMatrixSize - } - } - return nil -} - -// SubMatrix returns a part of this matrix. Data is copied. -func (m matrix) SubMatrix(rmin, cmin, rmax, cmax int) (matrix, error) { - result, err := newMatrix(rmax-rmin, cmax-cmin) - if err != nil { - return nil, err - } - // OPTME: If used heavily, use copy function to copy slice - for r := rmin; r < rmax; r++ { - for c := cmin; c < cmax; c++ { - result[r-rmin][c-cmin] = m[r][c] - } - } - return result, nil -} - -// SwapRows Exchanges two rows in the matrix. -func (m matrix) SwapRows(r1, r2 int) error { - if r1 < 0 || len(m) <= r1 || r2 < 0 || len(m) <= r2 { - return errInvalidRowSize - } - m[r2], m[r1] = m[r1], m[r2] - return nil -} - -// IsSquare will return true if the matrix is square -// and nil if the matrix is square -func (m matrix) IsSquare() bool { - return len(m) == len(m[0]) -} - -// errSingular is returned if the matrix is singular and cannot be inversed -var errSingular = errors.New("matrix is singular") - -// errNotSquare is returned if attempting to inverse a non-square matrix. -var errNotSquare = errors.New("only square matrices can be inverted") - -// Invert returns the inverse of this matrix. -// Returns ErrSingular when the matrix is singular and doesn't have an inverse. -// The matrix must be square, otherwise ErrNotSquare is returned. -func (m matrix) Invert() (matrix, error) { - if !m.IsSquare() { - return nil, errNotSquare - } - - size := len(m) - work, _ := identityMatrix(size) - work, _ = m.Augment(work) - - err := work.gaussianElimination() - if err != nil { - return nil, err - } - - return work.SubMatrix(0, size, size, size*2) -} - -func (m matrix) gaussianElimination() error { - rows := len(m) - columns := len(m[0]) - // Clear out the part below the main diagonal and scale the main - // diagonal to be 1. - for r := 0; r < rows; r++ { - // If the element on the diagonal is 0, find a row below - // that has a non-zero and swap them. - if m[r][r] == 0 { - for rowBelow := r + 1; rowBelow < rows; rowBelow++ { - if m[rowBelow][r] != 0 { - m.SwapRows(r, rowBelow) - break - } - } - } - // If we couldn't find one, the matrix is singular. - if m[r][r] == 0 { - return errSingular - } - // Scale to 1. - if m[r][r] != 1 { - scale := galDivide(1, m[r][r]) - for c := 0; c < columns; c++ { - m[r][c] = galMultiply(m[r][c], scale) - } - } - // Make everything below the 1 be a 0 by subtracting - // a multiple of it. (Subtraction and addition are - // both exclusive or in the Galois field.) - for rowBelow := r + 1; rowBelow < rows; rowBelow++ { - if m[rowBelow][r] != 0 { - scale := m[rowBelow][r] - for c := 0; c < columns; c++ { - m[rowBelow][c] ^= galMultiply(scale, m[r][c]) - } - } - } - } - - // Now clear the part above the main diagonal. - for d := 0; d < rows; d++ { - for rowAbove := 0; rowAbove < d; rowAbove++ { - if m[rowAbove][d] != 0 { - scale := m[rowAbove][d] - for c := 0; c < columns; c++ { - m[rowAbove][c] ^= galMultiply(scale, m[d][c]) - } - - } - } - } - return nil -} - -// Create a Vandermonde matrix, which is guaranteed to have the -// property that any subset of rows that forms a square matrix -// is invertible. -func vandermonde(rows, cols int) (matrix, error) { - result, err := newMatrix(rows, cols) - if err != nil { - return nil, err - } - for r, row := range result { - for c := range row { - result[r][c] = galExp(byte(r), c) - } - } - return result, nil -} diff --git a/vendor/github.com/klauspost/reedsolomon/options.go b/vendor/github.com/klauspost/reedsolomon/options.go deleted file mode 100644 index 0c01d44..0000000 --- a/vendor/github.com/klauspost/reedsolomon/options.go +++ /dev/null @@ -1,118 +0,0 @@ -package reedsolomon - -import ( - "runtime" - - "github.com/klauspost/cpuid" -) - -// Option allows to override processing parameters. -type Option func(*options) - -type options struct { - maxGoroutines int - minSplitSize int - useAVX512, useAVX2, useSSSE3, useSSE2 bool - usePAR1Matrix bool - useCauchy bool - shardSize int -} - -var defaultOptions = options{ - maxGoroutines: 384, - minSplitSize: 1024, -} - -func init() { - if runtime.GOMAXPROCS(0) <= 1 { - defaultOptions.maxGoroutines = 1 - } - // Detect CPU capabilities. - defaultOptions.useSSSE3 = cpuid.CPU.SSSE3() - defaultOptions.useSSE2 = cpuid.CPU.SSE2() - defaultOptions.useAVX2 = cpuid.CPU.AVX2() - defaultOptions.useAVX512 = cpuid.CPU.AVX512F() && cpuid.CPU.AVX512BW() && amd64 -} - -// WithMaxGoroutines is the maximum number of goroutines number for encoding & decoding. -// Jobs will be split into this many parts, unless each goroutine would have to process -// less than minSplitSize bytes (set with WithMinSplitSize). -// For the best speed, keep this well above the GOMAXPROCS number for more fine grained -// scheduling. -// If n <= 0, it is ignored. -func WithMaxGoroutines(n int) Option { - return func(o *options) { - if n > 0 { - o.maxGoroutines = n - } - } -} - -// WithAutoGoroutines will adjust the number of goroutines for optimal speed with a -// specific shard size. -// Send in the shard size you expect to send. Other shard sizes will work, but may not -// run at the optimal speed. -// Overwrites WithMaxGoroutines. -// If shardSize <= 0, it is ignored. -func WithAutoGoroutines(shardSize int) Option { - return func(o *options) { - o.shardSize = shardSize - } -} - -// WithMinSplitSize is the minimum encoding size in bytes per goroutine. -// See WithMaxGoroutines on how jobs are split. -// If n <= 0, it is ignored. -func WithMinSplitSize(n int) Option { - return func(o *options) { - if n > 0 { - o.minSplitSize = n - } - } -} - -func withSSE3(enabled bool) Option { - return func(o *options) { - o.useSSSE3 = enabled - } -} - -func withAVX2(enabled bool) Option { - return func(o *options) { - o.useAVX2 = enabled - } -} - -func withSSE2(enabled bool) Option { - return func(o *options) { - o.useSSE2 = enabled - } -} - -func withAVX512(enabled bool) Option { - return func(o *options) { - o.useAVX512 = enabled - } -} - -// WithPAR1Matrix causes the encoder to build the matrix how PARv1 -// does. Note that the method they use is buggy, and may lead to cases -// where recovery is impossible, even if there are enough parity -// shards. -func WithPAR1Matrix() Option { - return func(o *options) { - o.usePAR1Matrix = true - o.useCauchy = false - } -} - -// WithCauchyMatrix will make the encoder build a Cauchy style matrix. -// The output of this is not compatible with the standard output. -// A Cauchy matrix is faster to generate. This does not affect data throughput, -// but will result in slightly faster start-up time. -func WithCauchyMatrix() Option { - return func(o *options) { - o.useCauchy = true - o.usePAR1Matrix = false - } -} diff --git a/vendor/github.com/klauspost/reedsolomon/reedsolomon.go b/vendor/github.com/klauspost/reedsolomon/reedsolomon.go deleted file mode 100644 index 3d4d7da..0000000 --- a/vendor/github.com/klauspost/reedsolomon/reedsolomon.go +++ /dev/null @@ -1,900 +0,0 @@ -/** - * Reed-Solomon Coding over 8-bit values. - * - * Copyright 2015, Klaus Post - * Copyright 2015, Backblaze, Inc. - */ - -// Package reedsolomon enables Erasure Coding in Go -// -// For usage and examples, see https://github.com/klauspost/reedsolomon -// -package reedsolomon - -import ( - "bytes" - "errors" - "io" - "runtime" - "sync" - - "github.com/klauspost/cpuid" -) - -// Encoder is an interface to encode Reed-Salomon parity sets for your data. -type Encoder interface { - // Encode parity for a set of data shards. - // Input is 'shards' containing data shards followed by parity shards. - // The number of shards must match the number given to New(). - // Each shard is a byte array, and they must all be the same size. - // The parity shards will always be overwritten and the data shards - // will remain the same, so it is safe for you to read from the - // data shards while this is running. - Encode(shards [][]byte) error - - // Verify returns true if the parity shards contain correct data. - // The data is the same format as Encode. No data is modified, so - // you are allowed to read from data while this is running. - Verify(shards [][]byte) (bool, error) - - // Reconstruct will recreate the missing shards if possible. - // - // Given a list of shards, some of which contain data, fills in the - // ones that don't have data. - // - // The length of the array must be equal to the total number of shards. - // You indicate that a shard is missing by setting it to nil or zero-length. - // If a shard is zero-length but has sufficient capacity, that memory will - // be used, otherwise a new []byte will be allocated. - // - // If there are too few shards to reconstruct the missing - // ones, ErrTooFewShards will be returned. - // - // The reconstructed shard set is complete, but integrity is not verified. - // Use the Verify function to check if data set is ok. - Reconstruct(shards [][]byte) error - - // ReconstructData will recreate any missing data shards, if possible. - // - // Given a list of shards, some of which contain data, fills in the - // data shards that don't have data. - // - // The length of the array must be equal to Shards. - // You indicate that a shard is missing by setting it to nil or zero-length. - // If a shard is zero-length but has sufficient capacity, that memory will - // be used, otherwise a new []byte will be allocated. - // - // If there are too few shards to reconstruct the missing - // ones, ErrTooFewShards will be returned. - // - // As the reconstructed shard set may contain missing parity shards, - // calling the Verify function is likely to fail. - ReconstructData(shards [][]byte) error - - // Update parity is use for change a few data shards and update it's parity. - // Input 'newDatashards' containing data shards changed. - // Input 'shards' containing old data shards (if data shard not changed, it can be nil) and old parity shards. - // new parity shards will in shards[DataShards:] - // Update is very useful if DataShards much larger than ParityShards and changed data shards is few. It will - // faster than Encode and not need read all data shards to encode. - Update(shards [][]byte, newDatashards [][]byte) error - - // Split a data slice into the number of shards given to the encoder, - // and create empty parity shards. - // - // The data will be split into equally sized shards. - // If the data size isn't dividable by the number of shards, - // the last shard will contain extra zeros. - // - // There must be at least 1 byte otherwise ErrShortData will be - // returned. - // - // The data will not be copied, except for the last shard, so you - // should not modify the data of the input slice afterwards. - Split(data []byte) ([][]byte, error) - - // Join the shards and write the data segment to dst. - // - // Only the data shards are considered. - // You must supply the exact output size you want. - // If there are to few shards given, ErrTooFewShards will be returned. - // If the total data size is less than outSize, ErrShortData will be returned. - Join(dst io.Writer, shards [][]byte, outSize int) error -} - -// reedSolomon contains a matrix for a specific -// distribution of datashards and parity shards. -// Construct if using New() -type reedSolomon struct { - DataShards int // Number of data shards, should not be modified. - ParityShards int // Number of parity shards, should not be modified. - Shards int // Total number of shards. Calculated, and should not be modified. - m matrix - tree inversionTree - parity [][]byte - o options -} - -// ErrInvShardNum will be returned by New, if you attempt to create -// an Encoder where either data or parity shards is zero or less. -var ErrInvShardNum = errors.New("cannot create Encoder with zero or less data/parity shards") - -// ErrMaxShardNum will be returned by New, if you attempt to create an -// Encoder where data and parity shards are bigger than the order of -// GF(2^8). -var ErrMaxShardNum = errors.New("cannot create Encoder with more than 256 data+parity shards") - -// buildMatrix creates the matrix to use for encoding, given the -// number of data shards and the number of total shards. -// -// The top square of the matrix is guaranteed to be an identity -// matrix, which means that the data shards are unchanged after -// encoding. -func buildMatrix(dataShards, totalShards int) (matrix, error) { - // Start with a Vandermonde matrix. This matrix would work, - // in theory, but doesn't have the property that the data - // shards are unchanged after encoding. - vm, err := vandermonde(totalShards, dataShards) - if err != nil { - return nil, err - } - - // Multiply by the inverse of the top square of the matrix. - // This will make the top square be the identity matrix, but - // preserve the property that any square subset of rows is - // invertible. - top, err := vm.SubMatrix(0, 0, dataShards, dataShards) - if err != nil { - return nil, err - } - - topInv, err := top.Invert() - if err != nil { - return nil, err - } - - return vm.Multiply(topInv) -} - -// buildMatrixPAR1 creates the matrix to use for encoding according to -// the PARv1 spec, given the number of data shards and the number of -// total shards. Note that the method they use is buggy, and may lead -// to cases where recovery is impossible, even if there are enough -// parity shards. -// -// The top square of the matrix is guaranteed to be an identity -// matrix, which means that the data shards are unchanged after -// encoding. -func buildMatrixPAR1(dataShards, totalShards int) (matrix, error) { - result, err := newMatrix(totalShards, dataShards) - if err != nil { - return nil, err - } - - for r, row := range result { - // The top portion of the matrix is the identity - // matrix, and the bottom is a transposed Vandermonde - // matrix starting at 1 instead of 0. - if r < dataShards { - result[r][r] = 1 - } else { - for c := range row { - result[r][c] = galExp(byte(c+1), r-dataShards) - } - } - } - return result, nil -} - -func buildMatrixCauchy(dataShards, totalShards int) (matrix, error) { - result, err := newMatrix(totalShards, dataShards) - if err != nil { - return nil, err - } - - for r, row := range result { - // The top portion of the matrix is the identity - // matrix, and the bottom is a transposed Cauchy matrix. - if r < dataShards { - result[r][r] = 1 - } else { - for c := range row { - result[r][c] = invTable[(byte(r ^ c))] - } - } - } - return result, nil -} - -// New creates a new encoder and initializes it to -// the number of data shards and parity shards that -// you want to use. You can reuse this encoder. -// Note that the maximum number of total shards is 256. -// If no options are supplied, default options are used. -func New(dataShards, parityShards int, opts ...Option) (Encoder, error) { - r := reedSolomon{ - DataShards: dataShards, - ParityShards: parityShards, - Shards: dataShards + parityShards, - o: defaultOptions, - } - - for _, opt := range opts { - opt(&r.o) - } - if dataShards <= 0 || parityShards <= 0 { - return nil, ErrInvShardNum - } - - if dataShards+parityShards > 256 { - return nil, ErrMaxShardNum - } - - var err error - switch { - case r.o.useCauchy: - r.m, err = buildMatrixCauchy(dataShards, r.Shards) - case r.o.usePAR1Matrix: - r.m, err = buildMatrixPAR1(dataShards, r.Shards) - default: - r.m, err = buildMatrix(dataShards, r.Shards) - } - if err != nil { - return nil, err - } - if r.o.shardSize > 0 { - cacheSize := cpuid.CPU.Cache.L2 - if cacheSize <= 0 { - // Set to 128K if undetectable. - cacheSize = 128 << 10 - } - p := runtime.NumCPU() - - // 1 input + parity must fit in cache, and we add one more to be safer. - shards := 1 + parityShards - g := (r.o.shardSize * shards) / (cacheSize - (cacheSize >> 4)) - - if cpuid.CPU.ThreadsPerCore > 1 { - // If multiple threads per core, make sure they don't contend for cache. - g *= cpuid.CPU.ThreadsPerCore - } - g *= 2 - if g < p { - g = p - } - - // Have g be multiple of p - g += p - 1 - g -= g % p - - r.o.maxGoroutines = g - } - - // Inverted matrices are cached in a tree keyed by the indices - // of the invalid rows of the data to reconstruct. - // The inversion root node will have the identity matrix as - // its inversion matrix because it implies there are no errors - // with the original data. - r.tree = newInversionTree(dataShards, parityShards) - - r.parity = make([][]byte, parityShards) - for i := range r.parity { - r.parity[i] = r.m[dataShards+i] - } - - return &r, err -} - -// ErrTooFewShards is returned if too few shards where given to -// Encode/Verify/Reconstruct/Update. It will also be returned from Reconstruct -// if there were too few shards to reconstruct the missing data. -var ErrTooFewShards = errors.New("too few shards given") - -// Encodes parity for a set of data shards. -// An array 'shards' containing data shards followed by parity shards. -// The number of shards must match the number given to New. -// Each shard is a byte array, and they must all be the same size. -// The parity shards will always be overwritten and the data shards -// will remain the same. -func (r reedSolomon) Encode(shards [][]byte) error { - if len(shards) != r.Shards { - return ErrTooFewShards - } - - err := checkShards(shards, false) - if err != nil { - return err - } - - // Get the slice of output buffers. - output := shards[r.DataShards:] - - // Do the coding. - r.codeSomeShards(r.parity, shards[0:r.DataShards], output, r.ParityShards, len(shards[0])) - return nil -} - -// ErrInvalidInput is returned if invalid input parameter of Update. -var ErrInvalidInput = errors.New("invalid input") - -func (r reedSolomon) Update(shards [][]byte, newDatashards [][]byte) error { - if len(shards) != r.Shards { - return ErrTooFewShards - } - - if len(newDatashards) != r.DataShards { - return ErrTooFewShards - } - - err := checkShards(shards, true) - if err != nil { - return err - } - - err = checkShards(newDatashards, true) - if err != nil { - return err - } - - for i := range newDatashards { - if newDatashards[i] != nil && shards[i] == nil { - return ErrInvalidInput - } - } - for _, p := range shards[r.DataShards:] { - if p == nil { - return ErrInvalidInput - } - } - - shardSize := shardSize(shards) - - // Get the slice of output buffers. - output := shards[r.DataShards:] - - // Do the coding. - r.updateParityShards(r.parity, shards[0:r.DataShards], newDatashards[0:r.DataShards], output, r.ParityShards, shardSize) - return nil -} - -func (r reedSolomon) updateParityShards(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { - if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { - r.updateParityShardsP(matrixRows, oldinputs, newinputs, outputs, outputCount, byteCount) - return - } - - for c := 0; c < r.DataShards; c++ { - in := newinputs[c] - if in == nil { - continue - } - oldin := oldinputs[c] - // oldinputs data will be change - sliceXor(in, oldin, r.o.useSSE2) - for iRow := 0; iRow < outputCount; iRow++ { - galMulSliceXor(matrixRows[iRow][c], oldin, outputs[iRow], &r.o) - } - } -} - -func (r reedSolomon) updateParityShardsP(matrixRows, oldinputs, newinputs, outputs [][]byte, outputCount, byteCount int) { - var wg sync.WaitGroup - do := byteCount / r.o.maxGoroutines - if do < r.o.minSplitSize { - do = r.o.minSplitSize - } - start := 0 - for start < byteCount { - if start+do > byteCount { - do = byteCount - start - } - wg.Add(1) - go func(start, stop int) { - for c := 0; c < r.DataShards; c++ { - in := newinputs[c] - if in == nil { - continue - } - oldin := oldinputs[c] - // oldinputs data will be change - sliceXor(in[start:stop], oldin[start:stop], r.o.useSSE2) - for iRow := 0; iRow < outputCount; iRow++ { - galMulSliceXor(matrixRows[iRow][c], oldin[start:stop], outputs[iRow][start:stop], &r.o) - } - } - wg.Done() - }(start, start+do) - start += do - } - wg.Wait() -} - -// Verify returns true if the parity shards contain the right data. -// The data is the same format as Encode. No data is modified. -func (r reedSolomon) Verify(shards [][]byte) (bool, error) { - if len(shards) != r.Shards { - return false, ErrTooFewShards - } - err := checkShards(shards, false) - if err != nil { - return false, err - } - - // Slice of buffers being checked. - toCheck := shards[r.DataShards:] - - // Do the checking. - return r.checkSomeShards(r.parity, shards[0:r.DataShards], toCheck, r.ParityShards, len(shards[0])), nil -} - -// Multiplies a subset of rows from a coding matrix by a full set of -// input shards to produce some output shards. -// 'matrixRows' is The rows from the matrix to use. -// 'inputs' An array of byte arrays, each of which is one input shard. -// The number of inputs used is determined by the length of each matrix row. -// outputs Byte arrays where the computed shards are stored. -// The number of outputs computed, and the -// number of matrix rows used, is determined by -// outputCount, which is the number of outputs to compute. -func (r reedSolomon) codeSomeShards(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { - if r.o.useAVX512 && len(inputs) >= 4 && len(outputs) >= 2 { - r.codeSomeShardsAvx512(matrixRows, inputs, outputs, outputCount, byteCount) - return - } else if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { - r.codeSomeShardsP(matrixRows, inputs, outputs, outputCount, byteCount) - return - } - for c := 0; c < r.DataShards; c++ { - in := inputs[c] - for iRow := 0; iRow < outputCount; iRow++ { - if c == 0 { - galMulSlice(matrixRows[iRow][c], in, outputs[iRow], &r.o) - } else { - galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) - } - } - } -} - -// Perform the same as codeSomeShards, but split the workload into -// several goroutines. -func (r reedSolomon) codeSomeShardsP(matrixRows, inputs, outputs [][]byte, outputCount, byteCount int) { - var wg sync.WaitGroup - do := byteCount / r.o.maxGoroutines - if do < r.o.minSplitSize { - do = r.o.minSplitSize - } - // Make sizes divisible by 32 - do = (do + 31) & (^31) - start := 0 - for start < byteCount { - if start+do > byteCount { - do = byteCount - start - } - wg.Add(1) - go func(start, stop int) { - for c := 0; c < r.DataShards; c++ { - in := inputs[c][start:stop] - for iRow := 0; iRow < outputCount; iRow++ { - if c == 0 { - galMulSlice(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) - } else { - galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow][start:stop], &r.o) - } - } - } - wg.Done() - }(start, start+do) - start += do - } - wg.Wait() -} - -// checkSomeShards is mostly the same as codeSomeShards, -// except this will check values and return -// as soon as a difference is found. -func (r reedSolomon) checkSomeShards(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { - if r.o.maxGoroutines > 1 && byteCount > r.o.minSplitSize { - return r.checkSomeShardsP(matrixRows, inputs, toCheck, outputCount, byteCount) - } - outputs := make([][]byte, len(toCheck)) - for i := range outputs { - outputs[i] = make([]byte, byteCount) - } - for c := 0; c < r.DataShards; c++ { - in := inputs[c] - for iRow := 0; iRow < outputCount; iRow++ { - galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) - } - } - - for i, calc := range outputs { - if !bytes.Equal(calc, toCheck[i]) { - return false - } - } - return true -} - -func (r reedSolomon) checkSomeShardsP(matrixRows, inputs, toCheck [][]byte, outputCount, byteCount int) bool { - same := true - var mu sync.RWMutex // For above - - var wg sync.WaitGroup - do := byteCount / r.o.maxGoroutines - if do < r.o.minSplitSize { - do = r.o.minSplitSize - } - // Make sizes divisible by 32 - do = (do + 31) & (^31) - start := 0 - for start < byteCount { - if start+do > byteCount { - do = byteCount - start - } - wg.Add(1) - go func(start, do int) { - defer wg.Done() - outputs := make([][]byte, len(toCheck)) - for i := range outputs { - outputs[i] = make([]byte, do) - } - for c := 0; c < r.DataShards; c++ { - mu.RLock() - if !same { - mu.RUnlock() - return - } - mu.RUnlock() - in := inputs[c][start : start+do] - for iRow := 0; iRow < outputCount; iRow++ { - galMulSliceXor(matrixRows[iRow][c], in, outputs[iRow], &r.o) - } - } - - for i, calc := range outputs { - if !bytes.Equal(calc, toCheck[i][start:start+do]) { - mu.Lock() - same = false - mu.Unlock() - return - } - } - }(start, do) - start += do - } - wg.Wait() - return same -} - -// ErrShardNoData will be returned if there are no shards, -// or if the length of all shards is zero. -var ErrShardNoData = errors.New("no shard data") - -// ErrShardSize is returned if shard length isn't the same for all -// shards. -var ErrShardSize = errors.New("shard sizes do not match") - -// checkShards will check if shards are the same size -// or 0, if allowed. An error is returned if this fails. -// An error is also returned if all shards are size 0. -func checkShards(shards [][]byte, nilok bool) error { - size := shardSize(shards) - if size == 0 { - return ErrShardNoData - } - for _, shard := range shards { - if len(shard) != size { - if len(shard) != 0 || !nilok { - return ErrShardSize - } - } - } - return nil -} - -// shardSize return the size of a single shard. -// The first non-zero size is returned, -// or 0 if all shards are size 0. -func shardSize(shards [][]byte) int { - for _, shard := range shards { - if len(shard) != 0 { - return len(shard) - } - } - return 0 -} - -// Reconstruct will recreate the missing shards, if possible. -// -// Given a list of shards, some of which contain data, fills in the -// ones that don't have data. -// -// The length of the array must be equal to Shards. -// You indicate that a shard is missing by setting it to nil or zero-length. -// If a shard is zero-length but has sufficient capacity, that memory will -// be used, otherwise a new []byte will be allocated. -// -// If there are too few shards to reconstruct the missing -// ones, ErrTooFewShards will be returned. -// -// The reconstructed shard set is complete, but integrity is not verified. -// Use the Verify function to check if data set is ok. -func (r reedSolomon) Reconstruct(shards [][]byte) error { - return r.reconstruct(shards, false) -} - -// ReconstructData will recreate any missing data shards, if possible. -// -// Given a list of shards, some of which contain data, fills in the -// data shards that don't have data. -// -// The length of the array must be equal to Shards. -// You indicate that a shard is missing by setting it to nil or zero-length. -// If a shard is zero-length but has sufficient capacity, that memory will -// be used, otherwise a new []byte will be allocated. -// -// If there are too few shards to reconstruct the missing -// ones, ErrTooFewShards will be returned. -// -// As the reconstructed shard set may contain missing parity shards, -// calling the Verify function is likely to fail. -func (r reedSolomon) ReconstructData(shards [][]byte) error { - return r.reconstruct(shards, true) -} - -// reconstruct will recreate the missing data shards, and unless -// dataOnly is true, also the missing parity shards -// -// The length of the array must be equal to Shards. -// You indicate that a shard is missing by setting it to nil. -// -// If there are too few shards to reconstruct the missing -// ones, ErrTooFewShards will be returned. -func (r reedSolomon) reconstruct(shards [][]byte, dataOnly bool) error { - if len(shards) != r.Shards { - return ErrTooFewShards - } - // Check arguments. - err := checkShards(shards, true) - if err != nil { - return err - } - - shardSize := shardSize(shards) - - // Quick check: are all of the shards present? If so, there's - // nothing to do. - numberPresent := 0 - dataPresent := 0 - for i := 0; i < r.Shards; i++ { - if len(shards[i]) != 0 { - numberPresent++ - if i < r.DataShards { - dataPresent++ - } - } - } - if numberPresent == r.Shards || dataOnly && dataPresent == r.DataShards { - // Cool. All of the shards data data. We don't - // need to do anything. - return nil - } - - // More complete sanity check - if numberPresent < r.DataShards { - return ErrTooFewShards - } - - // Pull out an array holding just the shards that - // correspond to the rows of the submatrix. These shards - // will be the input to the decoding process that re-creates - // the missing data shards. - // - // Also, create an array of indices of the valid rows we do have - // and the invalid rows we don't have up until we have enough valid rows. - subShards := make([][]byte, r.DataShards) - validIndices := make([]int, r.DataShards) - invalidIndices := make([]int, 0) - subMatrixRow := 0 - for matrixRow := 0; matrixRow < r.Shards && subMatrixRow < r.DataShards; matrixRow++ { - if len(shards[matrixRow]) != 0 { - subShards[subMatrixRow] = shards[matrixRow] - validIndices[subMatrixRow] = matrixRow - subMatrixRow++ - } else { - invalidIndices = append(invalidIndices, matrixRow) - } - } - - // Attempt to get the cached inverted matrix out of the tree - // based on the indices of the invalid rows. - dataDecodeMatrix := r.tree.GetInvertedMatrix(invalidIndices) - - // If the inverted matrix isn't cached in the tree yet we must - // construct it ourselves and insert it into the tree for the - // future. In this way the inversion tree is lazily loaded. - if dataDecodeMatrix == nil { - // Pull out the rows of the matrix that correspond to the - // shards that we have and build a square matrix. This - // matrix could be used to generate the shards that we have - // from the original data. - subMatrix, _ := newMatrix(r.DataShards, r.DataShards) - for subMatrixRow, validIndex := range validIndices { - for c := 0; c < r.DataShards; c++ { - subMatrix[subMatrixRow][c] = r.m[validIndex][c] - } - } - // Invert the matrix, so we can go from the encoded shards - // back to the original data. Then pull out the row that - // generates the shard that we want to decode. Note that - // since this matrix maps back to the original data, it can - // be used to create a data shard, but not a parity shard. - dataDecodeMatrix, err = subMatrix.Invert() - if err != nil { - return err - } - - // Cache the inverted matrix in the tree for future use keyed on the - // indices of the invalid rows. - err = r.tree.InsertInvertedMatrix(invalidIndices, dataDecodeMatrix, r.Shards) - if err != nil { - return err - } - } - - // Re-create any data shards that were missing. - // - // The input to the coding is all of the shards we actually - // have, and the output is the missing data shards. The computation - // is done using the special decode matrix we just built. - outputs := make([][]byte, r.ParityShards) - matrixRows := make([][]byte, r.ParityShards) - outputCount := 0 - - for iShard := 0; iShard < r.DataShards; iShard++ { - if len(shards[iShard]) == 0 { - if cap(shards[iShard]) >= shardSize { - shards[iShard] = shards[iShard][0:shardSize] - } else { - shards[iShard] = make([]byte, shardSize) - } - outputs[outputCount] = shards[iShard] - matrixRows[outputCount] = dataDecodeMatrix[iShard] - outputCount++ - } - } - r.codeSomeShards(matrixRows, subShards, outputs[:outputCount], outputCount, shardSize) - - if dataOnly { - // Exit out early if we are only interested in the data shards - return nil - } - - // Now that we have all of the data shards intact, we can - // compute any of the parity that is missing. - // - // The input to the coding is ALL of the data shards, including - // any that we just calculated. The output is whichever of the - // data shards were missing. - outputCount = 0 - for iShard := r.DataShards; iShard < r.Shards; iShard++ { - if len(shards[iShard]) == 0 { - if cap(shards[iShard]) >= shardSize { - shards[iShard] = shards[iShard][0:shardSize] - } else { - shards[iShard] = make([]byte, shardSize) - } - outputs[outputCount] = shards[iShard] - matrixRows[outputCount] = r.parity[iShard-r.DataShards] - outputCount++ - } - } - r.codeSomeShards(matrixRows, shards[:r.DataShards], outputs[:outputCount], outputCount, shardSize) - return nil -} - -// ErrShortData will be returned by Split(), if there isn't enough data -// to fill the number of shards. -var ErrShortData = errors.New("not enough data to fill the number of requested shards") - -// Split a data slice into the number of shards given to the encoder, -// and create empty parity shards if necessary. -// -// The data will be split into equally sized shards. -// If the data size isn't divisible by the number of shards, -// the last shard will contain extra zeros. -// -// There must be at least 1 byte otherwise ErrShortData will be -// returned. -// -// The data will not be copied, except for the last shard, so you -// should not modify the data of the input slice afterwards. -func (r reedSolomon) Split(data []byte) ([][]byte, error) { - if len(data) == 0 { - return nil, ErrShortData - } - // Calculate number of bytes per data shard. - perShard := (len(data) + r.DataShards - 1) / r.DataShards - - if cap(data) > len(data) { - data = data[:cap(data)] - } - - // Only allocate memory if necessary - var padding []byte - if len(data) < (r.Shards * perShard) { - // calculate maximum number of full shards in `data` slice - fullShards := len(data) / perShard - padding = make([]byte, r.Shards*perShard-perShard*fullShards) - copy(padding, data[perShard*fullShards:]) - data = data[0 : perShard*fullShards] - } - - // Split into equal-length shards. - dst := make([][]byte, r.Shards) - i := 0 - for ; i < len(dst) && len(data) >= perShard; i++ { - dst[i] = data[:perShard:perShard] - data = data[perShard:] - } - - for j := 0; i+j < len(dst); j++ { - dst[i+j] = padding[:perShard:perShard] - padding = padding[perShard:] - } - - return dst, nil -} - -// ErrReconstructRequired is returned if too few data shards are intact and a -// reconstruction is required before you can successfully join the shards. -var ErrReconstructRequired = errors.New("reconstruction required as one or more required data shards are nil") - -// Join the shards and write the data segment to dst. -// -// Only the data shards are considered. -// You must supply the exact output size you want. -// -// If there are to few shards given, ErrTooFewShards will be returned. -// If the total data size is less than outSize, ErrShortData will be returned. -// If one or more required data shards are nil, ErrReconstructRequired will be returned. -func (r reedSolomon) Join(dst io.Writer, shards [][]byte, outSize int) error { - // Do we have enough shards? - if len(shards) < r.DataShards { - return ErrTooFewShards - } - shards = shards[:r.DataShards] - - // Do we have enough data? - size := 0 - for _, shard := range shards { - if shard == nil { - return ErrReconstructRequired - } - size += len(shard) - - // Do we have enough data already? - if size >= outSize { - break - } - } - if size < outSize { - return ErrShortData - } - - // Copy data to dst - write := outSize - for _, shard := range shards { - if write < len(shard) { - _, err := dst.Write(shard[:write]) - return err - } - n, err := dst.Write(shard) - if err != nil { - return err - } - write -= n - } - return nil -} diff --git a/vendor/github.com/klauspost/reedsolomon/streaming.go b/vendor/github.com/klauspost/reedsolomon/streaming.go deleted file mode 100644 index e1a91e2..0000000 --- a/vendor/github.com/klauspost/reedsolomon/streaming.go +++ /dev/null @@ -1,582 +0,0 @@ -/** - * Reed-Solomon Coding over 8-bit values. - * - * Copyright 2015, Klaus Post - * Copyright 2015, Backblaze, Inc. - */ - -package reedsolomon - -import ( - "bytes" - "errors" - "fmt" - "io" - "sync" -) - -// StreamEncoder is an interface to encode Reed-Salomon parity sets for your data. -// It provides a fully streaming interface, and processes data in blocks of up to 4MB. -// -// For small shard sizes, 10MB and below, it is recommended to use the in-memory interface, -// since the streaming interface has a start up overhead. -// -// For all operations, no readers and writers should not assume any order/size of -// individual reads/writes. -// -// For usage examples, see "stream-encoder.go" and "streamdecoder.go" in the examples -// folder. -type StreamEncoder interface { - // Encode parity shards for a set of data shards. - // - // Input is 'shards' containing readers for data shards followed by parity shards - // io.Writer. - // - // The number of shards must match the number given to NewStream(). - // - // Each reader must supply the same number of bytes. - // - // The parity shards will be written to the writer. - // The number of bytes written will match the input size. - // - // If a data stream returns an error, a StreamReadError type error - // will be returned. If a parity writer returns an error, a - // StreamWriteError will be returned. - Encode(data []io.Reader, parity []io.Writer) error - - // Verify returns true if the parity shards contain correct data. - // - // The number of shards must match the number total data+parity shards - // given to NewStream(). - // - // Each reader must supply the same number of bytes. - // If a shard stream returns an error, a StreamReadError type error - // will be returned. - Verify(shards []io.Reader) (bool, error) - - // Reconstruct will recreate the missing shards if possible. - // - // Given a list of valid shards (to read) and invalid shards (to write) - // - // You indicate that a shard is missing by setting it to nil in the 'valid' - // slice and at the same time setting a non-nil writer in "fill". - // An index cannot contain both non-nil 'valid' and 'fill' entry. - // If both are provided 'ErrReconstructMismatch' is returned. - // - // If there are too few shards to reconstruct the missing - // ones, ErrTooFewShards will be returned. - // - // The reconstructed shard set is complete, but integrity is not verified. - // Use the Verify function to check if data set is ok. - Reconstruct(valid []io.Reader, fill []io.Writer) error - - // Split a an input stream into the number of shards given to the encoder. - // - // The data will be split into equally sized shards. - // If the data size isn't dividable by the number of shards, - // the last shard will contain extra zeros. - // - // You must supply the total size of your input. - // 'ErrShortData' will be returned if it is unable to retrieve the - // number of bytes indicated. - Split(data io.Reader, dst []io.Writer, size int64) (err error) - - // Join the shards and write the data segment to dst. - // - // Only the data shards are considered. - // - // You must supply the exact output size you want. - // If there are to few shards given, ErrTooFewShards will be returned. - // If the total data size is less than outSize, ErrShortData will be returned. - Join(dst io.Writer, shards []io.Reader, outSize int64) error -} - -// StreamReadError is returned when a read error is encountered -// that relates to a supplied stream. -// This will allow you to find out which reader has failed. -type StreamReadError struct { - Err error // The error - Stream int // The stream number on which the error occurred -} - -// Error returns the error as a string -func (s StreamReadError) Error() string { - return fmt.Sprintf("error reading stream %d: %s", s.Stream, s.Err) -} - -// String returns the error as a string -func (s StreamReadError) String() string { - return s.Error() -} - -// StreamWriteError is returned when a write error is encountered -// that relates to a supplied stream. This will allow you to -// find out which reader has failed. -type StreamWriteError struct { - Err error // The error - Stream int // The stream number on which the error occurred -} - -// Error returns the error as a string -func (s StreamWriteError) Error() string { - return fmt.Sprintf("error writing stream %d: %s", s.Stream, s.Err) -} - -// String returns the error as a string -func (s StreamWriteError) String() string { - return s.Error() -} - -// rsStream contains a matrix for a specific -// distribution of datashards and parity shards. -// Construct if using NewStream() -type rsStream struct { - r *reedSolomon - bs int // Block size - // Shard reader - readShards func(dst [][]byte, in []io.Reader) error - // Shard writer - writeShards func(out []io.Writer, in [][]byte) error -} - -// NewStream creates a new encoder and initializes it to -// the number of data shards and parity shards that -// you want to use. You can reuse this encoder. -// Note that the maximum number of data shards is 256. -func NewStream(dataShards, parityShards int, o ...Option) (StreamEncoder, error) { - enc, err := New(dataShards, parityShards, o...) - if err != nil { - return nil, err - } - rs := enc.(*reedSolomon) - r := rsStream{r: rs, bs: 4 << 20} - r.readShards = readShards - r.writeShards = writeShards - return &r, err -} - -// NewStreamC creates a new encoder and initializes it to -// the number of data shards and parity shards given. -// -// This functions as 'NewStream', but allows you to enable CONCURRENT reads and writes. -func NewStreamC(dataShards, parityShards int, conReads, conWrites bool, o ...Option) (StreamEncoder, error) { - enc, err := New(dataShards, parityShards, o...) - if err != nil { - return nil, err - } - rs := enc.(*reedSolomon) - r := rsStream{r: rs, bs: 4 << 20} - r.readShards = readShards - r.writeShards = writeShards - if conReads { - r.readShards = cReadShards - } - if conWrites { - r.writeShards = cWriteShards - } - return &r, err -} - -func createSlice(n, length int) [][]byte { - out := make([][]byte, n) - for i := range out { - out[i] = make([]byte, length) - } - return out -} - -// Encodes parity shards for a set of data shards. -// -// Input is 'shards' containing readers for data shards followed by parity shards -// io.Writer. -// -// The number of shards must match the number given to NewStream(). -// -// Each reader must supply the same number of bytes. -// -// The parity shards will be written to the writer. -// The number of bytes written will match the input size. -// -// If a data stream returns an error, a StreamReadError type error -// will be returned. If a parity writer returns an error, a -// StreamWriteError will be returned. -func (r rsStream) Encode(data []io.Reader, parity []io.Writer) error { - if len(data) != r.r.DataShards { - return ErrTooFewShards - } - - if len(parity) != r.r.ParityShards { - return ErrTooFewShards - } - - all := createSlice(r.r.Shards, r.bs) - in := all[:r.r.DataShards] - out := all[r.r.DataShards:] - read := 0 - - for { - err := r.readShards(in, data) - switch err { - case nil: - case io.EOF: - if read == 0 { - return ErrShardNoData - } - return nil - default: - return err - } - out = trimShards(out, shardSize(in)) - read += shardSize(in) - err = r.r.Encode(all) - if err != nil { - return err - } - err = r.writeShards(parity, out) - if err != nil { - return err - } - } -} - -// Trim the shards so they are all the same size -func trimShards(in [][]byte, size int) [][]byte { - for i := range in { - if in[i] != nil { - in[i] = in[i][0:size] - } - if len(in[i]) < size { - in[i] = nil - } - } - return in -} - -func readShards(dst [][]byte, in []io.Reader) error { - if len(in) != len(dst) { - panic("internal error: in and dst size do not match") - } - size := -1 - for i := range in { - if in[i] == nil { - dst[i] = nil - continue - } - n, err := io.ReadFull(in[i], dst[i]) - // The error is EOF only if no bytes were read. - // If an EOF happens after reading some but not all the bytes, - // ReadFull returns ErrUnexpectedEOF. - switch err { - case io.ErrUnexpectedEOF, io.EOF: - if size < 0 { - size = n - } else if n != size { - // Shard sizes must match. - return ErrShardSize - } - dst[i] = dst[i][0:n] - case nil: - continue - default: - return StreamReadError{Err: err, Stream: i} - } - } - if size == 0 { - return io.EOF - } - return nil -} - -func writeShards(out []io.Writer, in [][]byte) error { - if len(out) != len(in) { - panic("internal error: in and out size do not match") - } - for i := range in { - if out[i] == nil { - continue - } - n, err := out[i].Write(in[i]) - if err != nil { - return StreamWriteError{Err: err, Stream: i} - } - // - if n != len(in[i]) { - return StreamWriteError{Err: io.ErrShortWrite, Stream: i} - } - } - return nil -} - -type readResult struct { - n int - size int - err error -} - -// cReadShards reads shards concurrently -func cReadShards(dst [][]byte, in []io.Reader) error { - if len(in) != len(dst) { - panic("internal error: in and dst size do not match") - } - var wg sync.WaitGroup - wg.Add(len(in)) - res := make(chan readResult, len(in)) - for i := range in { - if in[i] == nil { - dst[i] = nil - wg.Done() - continue - } - go func(i int) { - defer wg.Done() - n, err := io.ReadFull(in[i], dst[i]) - // The error is EOF only if no bytes were read. - // If an EOF happens after reading some but not all the bytes, - // ReadFull returns ErrUnexpectedEOF. - res <- readResult{size: n, err: err, n: i} - - }(i) - } - wg.Wait() - close(res) - size := -1 - for r := range res { - switch r.err { - case io.ErrUnexpectedEOF, io.EOF: - if size < 0 { - size = r.size - } else if r.size != size { - // Shard sizes must match. - return ErrShardSize - } - dst[r.n] = dst[r.n][0:r.size] - case nil: - default: - return StreamReadError{Err: r.err, Stream: r.n} - } - } - if size == 0 { - return io.EOF - } - return nil -} - -// cWriteShards writes shards concurrently -func cWriteShards(out []io.Writer, in [][]byte) error { - if len(out) != len(in) { - panic("internal error: in and out size do not match") - } - var errs = make(chan error, len(out)) - var wg sync.WaitGroup - wg.Add(len(out)) - for i := range in { - go func(i int) { - defer wg.Done() - if out[i] == nil { - errs <- nil - return - } - n, err := out[i].Write(in[i]) - if err != nil { - errs <- StreamWriteError{Err: err, Stream: i} - return - } - if n != len(in[i]) { - errs <- StreamWriteError{Err: io.ErrShortWrite, Stream: i} - } - }(i) - } - wg.Wait() - close(errs) - for err := range errs { - if err != nil { - return err - } - } - - return nil -} - -// Verify returns true if the parity shards contain correct data. -// -// The number of shards must match the number total data+parity shards -// given to NewStream(). -// -// Each reader must supply the same number of bytes. -// If a shard stream returns an error, a StreamReadError type error -// will be returned. -func (r rsStream) Verify(shards []io.Reader) (bool, error) { - if len(shards) != r.r.Shards { - return false, ErrTooFewShards - } - - read := 0 - all := createSlice(r.r.Shards, r.bs) - for { - err := r.readShards(all, shards) - if err == io.EOF { - if read == 0 { - return false, ErrShardNoData - } - return true, nil - } - if err != nil { - return false, err - } - read += shardSize(all) - ok, err := r.r.Verify(all) - if !ok || err != nil { - return ok, err - } - } -} - -// ErrReconstructMismatch is returned by the StreamEncoder, if you supply -// "valid" and "fill" streams on the same index. -// Therefore it is impossible to see if you consider the shard valid -// or would like to have it reconstructed. -var ErrReconstructMismatch = errors.New("valid shards and fill shards are mutually exclusive") - -// Reconstruct will recreate the missing shards if possible. -// -// Given a list of valid shards (to read) and invalid shards (to write) -// -// You indicate that a shard is missing by setting it to nil in the 'valid' -// slice and at the same time setting a non-nil writer in "fill". -// An index cannot contain both non-nil 'valid' and 'fill' entry. -// -// If there are too few shards to reconstruct the missing -// ones, ErrTooFewShards will be returned. -// -// The reconstructed shard set is complete when explicitly asked for all missing shards. -// However its integrity is not automatically verified. -// Use the Verify function to check in case the data set is complete. -func (r rsStream) Reconstruct(valid []io.Reader, fill []io.Writer) error { - if len(valid) != r.r.Shards { - return ErrTooFewShards - } - if len(fill) != r.r.Shards { - return ErrTooFewShards - } - - all := createSlice(r.r.Shards, r.bs) - reconDataOnly := true - for i := range valid { - if valid[i] != nil && fill[i] != nil { - return ErrReconstructMismatch - } - if i >= r.r.DataShards && fill[i] != nil { - reconDataOnly = false - } - } - - read := 0 - for { - err := r.readShards(all, valid) - if err == io.EOF { - if read == 0 { - return ErrShardNoData - } - return nil - } - if err != nil { - return err - } - read += shardSize(all) - all = trimShards(all, shardSize(all)) - - if reconDataOnly { - err = r.r.ReconstructData(all) // just reconstruct missing data shards - } else { - err = r.r.Reconstruct(all) // reconstruct all missing shards - } - if err != nil { - return err - } - err = r.writeShards(fill, all) - if err != nil { - return err - } - } -} - -// Join the shards and write the data segment to dst. -// -// Only the data shards are considered. -// -// You must supply the exact output size you want. -// If there are to few shards given, ErrTooFewShards will be returned. -// If the total data size is less than outSize, ErrShortData will be returned. -func (r rsStream) Join(dst io.Writer, shards []io.Reader, outSize int64) error { - // Do we have enough shards? - if len(shards) < r.r.DataShards { - return ErrTooFewShards - } - - // Trim off parity shards if any - shards = shards[:r.r.DataShards] - for i := range shards { - if shards[i] == nil { - return StreamReadError{Err: ErrShardNoData, Stream: i} - } - } - // Join all shards - src := io.MultiReader(shards...) - - // Copy data to dst - n, err := io.CopyN(dst, src, outSize) - if err == io.EOF { - return ErrShortData - } - if err != nil { - return err - } - if n != outSize { - return ErrShortData - } - return nil -} - -// Split a an input stream into the number of shards given to the encoder. -// -// The data will be split into equally sized shards. -// If the data size isn't dividable by the number of shards, -// the last shard will contain extra zeros. -// -// You must supply the total size of your input. -// 'ErrShortData' will be returned if it is unable to retrieve the -// number of bytes indicated. -func (r rsStream) Split(data io.Reader, dst []io.Writer, size int64) error { - if size == 0 { - return ErrShortData - } - if len(dst) != r.r.DataShards { - return ErrInvShardNum - } - - for i := range dst { - if dst[i] == nil { - return StreamWriteError{Err: ErrShardNoData, Stream: i} - } - } - - // Calculate number of bytes per shard. - perShard := (size + int64(r.r.DataShards) - 1) / int64(r.r.DataShards) - - // Pad data to r.Shards*perShard. - padding := make([]byte, (int64(r.r.Shards)*perShard)-size) - data = io.MultiReader(data, bytes.NewBuffer(padding)) - - // Split into equal-length shards and copy. - for i := range dst { - n, err := io.CopyN(dst[i], data, perShard) - if err != io.EOF && err != nil { - return err - } - if n != perShard { - return ErrShortData - } - } - - return nil -} diff --git a/vendor/github.com/kr/pty/.gitignore b/vendor/github.com/kr/pty/.gitignore deleted file mode 100644 index 1f0a99f..0000000 --- a/vendor/github.com/kr/pty/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -[568].out -_go* -_test* -_obj diff --git a/vendor/github.com/kr/pty/License b/vendor/github.com/kr/pty/License deleted file mode 100644 index 6b7558b..0000000 --- a/vendor/github.com/kr/pty/License +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2011 Keith Rarick - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall -be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/kr/pty/README.md b/vendor/github.com/kr/pty/README.md deleted file mode 100644 index f9bb002..0000000 --- a/vendor/github.com/kr/pty/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# pty - -Pty is a Go package for using unix pseudo-terminals. - -## Install - - go get github.com/kr/pty - -## Example - -### Command - -```go -package main - -import ( - "github.com/kr/pty" - "io" - "os" - "os/exec" -) - -func main() { - c := exec.Command("grep", "--color=auto", "bar") - f, err := pty.Start(c) - if err != nil { - panic(err) - } - - go func() { - f.Write([]byte("foo\n")) - f.Write([]byte("bar\n")) - f.Write([]byte("baz\n")) - f.Write([]byte{4}) // EOT - }() - io.Copy(os.Stdout, f) -} -``` - -### Shell - -```go -package main - -import ( - "io" - "log" - "os" - "os/exec" - "os/signal" - "syscall" - - "github.com/kr/pty" - "golang.org/x/crypto/ssh/terminal" -) - -func test() error { - // Create arbitrary command. - c := exec.Command("bash") - - // Start the command with a pty. - ptmx, err := pty.Start(c) - if err != nil { - return err - } - // Make sure to close the pty at the end. - defer func() { _ = ptmx.Close() }() // Best effort. - - // Handle pty size. - ch := make(chan os.Signal, 1) - signal.Notify(ch, syscall.SIGWINCH) - go func() { - for range ch { - if err := pty.InheritSize(os.Stdin, ptmx); err != nil { - log.Printf("error resizing pty: %s", err) - } - } - }() - ch <- syscall.SIGWINCH // Initial resize. - - // Set stdin in raw mode. - oldState, err := terminal.MakeRaw(int(os.Stdin.Fd())) - if err != nil { - panic(err) - } - defer func() { _ = terminal.Restore(int(os.Stdin.Fd()), oldState) }() // Best effort. - - // Copy stdin to the pty and the pty to stdout. - go func() { _, _ = io.Copy(ptmx, os.Stdin) }() - _, _ = io.Copy(os.Stdout, ptmx) - - return nil -} - -func main() { - if err := test(); err != nil { - log.Fatal(err) - } -} -``` diff --git a/vendor/github.com/kr/pty/doc.go b/vendor/github.com/kr/pty/doc.go deleted file mode 100644 index 190cfbe..0000000 --- a/vendor/github.com/kr/pty/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Package pty provides functions for working with Unix terminals. -package pty - -import ( - "errors" - "os" -) - -// ErrUnsupported is returned if a function is not -// available on the current platform. -var ErrUnsupported = errors.New("unsupported") - -// Opens a pty and its corresponding tty. -func Open() (pty, tty *os.File, err error) { - return open() -} diff --git a/vendor/github.com/kr/pty/go.mod b/vendor/github.com/kr/pty/go.mod deleted file mode 100644 index 4a275a5..0000000 --- a/vendor/github.com/kr/pty/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/kr/pty diff --git a/vendor/github.com/kr/pty/ioctl.go b/vendor/github.com/kr/pty/ioctl.go deleted file mode 100644 index c57c19e..0000000 --- a/vendor/github.com/kr/pty/ioctl.go +++ /dev/null @@ -1,13 +0,0 @@ -// +build !windows - -package pty - -import "syscall" - -func ioctl(fd, cmd, ptr uintptr) error { - _, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr) - if e != 0 { - return e - } - return nil -} diff --git a/vendor/github.com/kr/pty/ioctl_bsd.go b/vendor/github.com/kr/pty/ioctl_bsd.go deleted file mode 100644 index 73b12c5..0000000 --- a/vendor/github.com/kr/pty/ioctl_bsd.go +++ /dev/null @@ -1,39 +0,0 @@ -// +build darwin dragonfly freebsd netbsd openbsd - -package pty - -// from -const ( - _IOC_VOID uintptr = 0x20000000 - _IOC_OUT uintptr = 0x40000000 - _IOC_IN uintptr = 0x80000000 - _IOC_IN_OUT uintptr = _IOC_OUT | _IOC_IN - _IOC_DIRMASK = _IOC_VOID | _IOC_OUT | _IOC_IN - - _IOC_PARAM_SHIFT = 13 - _IOC_PARAM_MASK = (1 << _IOC_PARAM_SHIFT) - 1 -) - -func _IOC_PARM_LEN(ioctl uintptr) uintptr { - return (ioctl >> 16) & _IOC_PARAM_MASK -} - -func _IOC(inout uintptr, group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return inout | (param_len&_IOC_PARAM_MASK)<<16 | uintptr(group)<<8 | ioctl_num -} - -func _IO(group byte, ioctl_num uintptr) uintptr { - return _IOC(_IOC_VOID, group, ioctl_num, 0) -} - -func _IOR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_OUT, group, ioctl_num, param_len) -} - -func _IOW(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_IN, group, ioctl_num, param_len) -} - -func _IOWR(group byte, ioctl_num uintptr, param_len uintptr) uintptr { - return _IOC(_IOC_IN_OUT, group, ioctl_num, param_len) -} diff --git a/vendor/github.com/kr/pty/mktypes.bash b/vendor/github.com/kr/pty/mktypes.bash deleted file mode 100644 index 82ee167..0000000 --- a/vendor/github.com/kr/pty/mktypes.bash +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -GOOSARCH="${GOOS}_${GOARCH}" -case "$GOOSARCH" in -_* | *_ | _) - echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 - exit 1 - ;; -esac - -GODEFS="go tool cgo -godefs" - -$GODEFS types.go |gofmt > ztypes_$GOARCH.go - -case $GOOS in -freebsd|dragonfly|openbsd) - $GODEFS types_$GOOS.go |gofmt > ztypes_$GOOSARCH.go - ;; -esac diff --git a/vendor/github.com/kr/pty/pty_darwin.go b/vendor/github.com/kr/pty/pty_darwin.go deleted file mode 100644 index 6344b6b..0000000 --- a/vendor/github.com/kr/pty/pty_darwin.go +++ /dev/null @@ -1,65 +0,0 @@ -package pty - -import ( - "errors" - "os" - "syscall" - "unsafe" -) - -func open() (pty, tty *os.File, err error) { - pFD, err := syscall.Open("/dev/ptmx", syscall.O_RDWR|syscall.O_CLOEXEC, 0) - if err != nil { - return nil, nil, err - } - p := os.NewFile(uintptr(pFD), "/dev/ptmx") - // In case of error after this point, make sure we close the ptmx fd. - defer func() { - if err != nil { - _ = p.Close() // Best effort. - } - }() - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - if err := grantpt(p); err != nil { - return nil, nil, err - } - - if err := unlockpt(p); err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func ptsname(f *os.File) (string, error) { - n := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME)) - - err := ioctl(f.Fd(), syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0]))) - if err != nil { - return "", err - } - - for i, c := range n { - if c == 0 { - return string(n[:i]), nil - } - } - return "", errors.New("TIOCPTYGNAME string not NUL-terminated") -} - -func grantpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYGRANT, 0) -} - -func unlockpt(f *os.File) error { - return ioctl(f.Fd(), syscall.TIOCPTYUNLK, 0) -} diff --git a/vendor/github.com/kr/pty/pty_dragonfly.go b/vendor/github.com/kr/pty/pty_dragonfly.go deleted file mode 100644 index b7d1f20..0000000 --- a/vendor/github.com/kr/pty/pty_dragonfly.go +++ /dev/null @@ -1,80 +0,0 @@ -package pty - -import ( - "errors" - "os" - "strings" - "syscall" - "unsafe" -) - -// same code as pty_darwin.go -func open() (pty, tty *os.File, err error) { - p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - // In case of error after this point, make sure we close the ptmx fd. - defer func() { - if err != nil { - _ = p.Close() // Best effort. - } - }() - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - if err := grantpt(p); err != nil { - return nil, nil, err - } - - if err := unlockpt(p); err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func grantpt(f *os.File) error { - _, err := isptmaster(f.Fd()) - return err -} - -func unlockpt(f *os.File) error { - _, err := isptmaster(f.Fd()) - return err -} - -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCISPTMASTER, 0) - return err == nil, err -} - -var ( - emptyFiodgnameArg fiodgnameArg - ioctl_FIODNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) -) - -func ptsname(f *os.File) (string, error) { - name := make([]byte, _C_SPECNAMELEN) - fa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}} - - err := ioctl(f.Fd(), ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa))) - if err != nil { - return "", err - } - - for i, c := range name { - if c == 0 { - s := "/dev/" + string(name[:i]) - return strings.Replace(s, "ptm", "pts", -1), nil - } - } - return "", errors.New("TIOCPTYGNAME string not NUL-terminated") -} diff --git a/vendor/github.com/kr/pty/pty_freebsd.go b/vendor/github.com/kr/pty/pty_freebsd.go deleted file mode 100644 index 63b6d91..0000000 --- a/vendor/github.com/kr/pty/pty_freebsd.go +++ /dev/null @@ -1,78 +0,0 @@ -package pty - -import ( - "errors" - "os" - "syscall" - "unsafe" -) - -func posixOpenpt(oflag int) (fd int, err error) { - r0, _, e1 := syscall.Syscall(syscall.SYS_POSIX_OPENPT, uintptr(oflag), 0, 0) - fd = int(r0) - if e1 != 0 { - err = e1 - } - return fd, err -} - -func open() (pty, tty *os.File, err error) { - fd, err := posixOpenpt(syscall.O_RDWR | syscall.O_CLOEXEC) - if err != nil { - return nil, nil, err - } - p := os.NewFile(uintptr(fd), "/dev/pts") - // In case of error after this point, make sure we close the pts fd. - defer func() { - if err != nil { - _ = p.Close() // Best effort. - } - }() - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - t, err := os.OpenFile("/dev/"+sname, os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func isptmaster(fd uintptr) (bool, error) { - err := ioctl(fd, syscall.TIOCPTMASTER, 0) - return err == nil, err -} - -var ( - emptyFiodgnameArg fiodgnameArg - ioctlFIODGNAME = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg)) -) - -func ptsname(f *os.File) (string, error) { - master, err := isptmaster(f.Fd()) - if err != nil { - return "", err - } - if !master { - return "", syscall.EINVAL - } - - const n = _C_SPECNAMELEN + 1 - var ( - buf = make([]byte, n) - arg = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))} - ) - if err := ioctl(f.Fd(), ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil { - return "", err - } - - for i, c := range buf { - if c == 0 { - return string(buf[:i]), nil - } - } - return "", errors.New("FIODGNAME string not NUL-terminated") -} diff --git a/vendor/github.com/kr/pty/pty_linux.go b/vendor/github.com/kr/pty/pty_linux.go deleted file mode 100644 index 4a833de..0000000 --- a/vendor/github.com/kr/pty/pty_linux.go +++ /dev/null @@ -1,51 +0,0 @@ -package pty - -import ( - "os" - "strconv" - "syscall" - "unsafe" -) - -func open() (pty, tty *os.File, err error) { - p, err := os.OpenFile("/dev/ptmx", os.O_RDWR, 0) - if err != nil { - return nil, nil, err - } - // In case of error after this point, make sure we close the ptmx fd. - defer func() { - if err != nil { - _ = p.Close() // Best effort. - } - }() - - sname, err := ptsname(p) - if err != nil { - return nil, nil, err - } - - if err := unlockpt(p); err != nil { - return nil, nil, err - } - - t, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) - if err != nil { - return nil, nil, err - } - return p, t, nil -} - -func ptsname(f *os.File) (string, error) { - var n _C_uint - err := ioctl(f.Fd(), syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) - if err != nil { - return "", err - } - return "/dev/pts/" + strconv.Itoa(int(n)), nil -} - -func unlockpt(f *os.File) error { - var u _C_int - // use TIOCSPTLCK with a pointer to zero to clear the lock - return ioctl(f.Fd(), syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) -} diff --git a/vendor/github.com/kr/pty/pty_openbsd.go b/vendor/github.com/kr/pty/pty_openbsd.go deleted file mode 100644 index a6a35d1..0000000 --- a/vendor/github.com/kr/pty/pty_openbsd.go +++ /dev/null @@ -1,33 +0,0 @@ -package pty - -import ( - "os" - "syscall" - "unsafe" -) - -func open() (pty, tty *os.File, err error) { - /* - * from ptm(4): - * The PTMGET command allocates a free pseudo terminal, changes its - * ownership to the caller, revokes the access privileges for all previous - * users, opens the file descriptors for the pty and tty devices and - * returns them to the caller in struct ptmget. - */ - - p, err := os.OpenFile("/dev/ptm", os.O_RDWR|syscall.O_CLOEXEC, 0) - if err != nil { - return nil, nil, err - } - defer p.Close() - - var ptm ptmget - if err := ioctl(p.Fd(), uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil { - return nil, nil, err - } - - pty = os.NewFile(uintptr(ptm.Cfd), "/dev/ptm") - tty = os.NewFile(uintptr(ptm.Sfd), "/dev/ptm") - - return pty, tty, nil -} diff --git a/vendor/github.com/kr/pty/pty_unsupported.go b/vendor/github.com/kr/pty/pty_unsupported.go deleted file mode 100644 index 9a3e721..0000000 --- a/vendor/github.com/kr/pty/pty_unsupported.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux,!darwin,!freebsd,!dragonfly,!openbsd - -package pty - -import ( - "os" -) - -func open() (pty, tty *os.File, err error) { - return nil, nil, ErrUnsupported -} diff --git a/vendor/github.com/kr/pty/run.go b/vendor/github.com/kr/pty/run.go deleted file mode 100644 index 56a26ad..0000000 --- a/vendor/github.com/kr/pty/run.go +++ /dev/null @@ -1,56 +0,0 @@ -// +build !windows - -package pty - -import ( - "os" - "os/exec" - "syscall" -) - -// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, -// and c.Stderr, calls c.Start, and returns the File of the tty's -// corresponding pty. -func Start(c *exec.Cmd) (pty *os.File, err error) { - return StartWithSize(c, nil) -} - -// StartWithSize assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout, -// and c.Stderr, calls c.Start, and returns the File of the tty's -// corresponding pty. -// -// This will resize the pty to the specified size before starting the command -func StartWithSize(c *exec.Cmd, sz *Winsize) (pty *os.File, err error) { - pty, tty, err := Open() - if err != nil { - return nil, err - } - defer tty.Close() - if sz != nil { - err = Setsize(pty, sz) - if err != nil { - pty.Close() - return nil, err - } - } - if c.Stdout == nil { - c.Stdout = tty - } - if c.Stderr == nil { - c.Stderr = tty - } - if c.Stdin == nil { - c.Stdin = tty - } - if c.SysProcAttr == nil { - c.SysProcAttr = &syscall.SysProcAttr{} - } - c.SysProcAttr.Setctty = true - c.SysProcAttr.Setsid = true - err = c.Start() - if err != nil { - pty.Close() - return nil, err - } - return pty, err -} diff --git a/vendor/github.com/kr/pty/types.go b/vendor/github.com/kr/pty/types.go deleted file mode 100644 index 5aecb6b..0000000 --- a/vendor/github.com/kr/pty/types.go +++ /dev/null @@ -1,10 +0,0 @@ -// +build ignore - -package pty - -import "C" - -type ( - _C_int C.int - _C_uint C.uint -) diff --git a/vendor/github.com/kr/pty/types_dragonfly.go b/vendor/github.com/kr/pty/types_dragonfly.go deleted file mode 100644 index 5c0493b..0000000 --- a/vendor/github.com/kr/pty/types_dragonfly.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build ignore - -package pty - -/* -#define _KERNEL -#include -#include -#include -*/ -import "C" - -const ( - _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ -) - -type fiodgnameArg C.struct_fiodname_args diff --git a/vendor/github.com/kr/pty/types_freebsd.go b/vendor/github.com/kr/pty/types_freebsd.go deleted file mode 100644 index ce3eb95..0000000 --- a/vendor/github.com/kr/pty/types_freebsd.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build ignore - -package pty - -/* -#include -#include -*/ -import "C" - -const ( - _C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */ -) - -type fiodgnameArg C.struct_fiodgname_arg diff --git a/vendor/github.com/kr/pty/types_openbsd.go b/vendor/github.com/kr/pty/types_openbsd.go deleted file mode 100644 index 47701b5..0000000 --- a/vendor/github.com/kr/pty/types_openbsd.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build ignore - -package pty - -/* -#include -#include -#include -*/ -import "C" - -type ptmget C.struct_ptmget - -var ioctl_PTMGET = C.PTMGET diff --git a/vendor/github.com/kr/pty/util.go b/vendor/github.com/kr/pty/util.go deleted file mode 100644 index 2fa741c..0000000 --- a/vendor/github.com/kr/pty/util.go +++ /dev/null @@ -1,64 +0,0 @@ -// +build !windows - -package pty - -import ( - "os" - "syscall" - "unsafe" -) - -// InheritSize applies the terminal size of pty to tty. This should be run -// in a signal handler for syscall.SIGWINCH to automatically resize the tty when -// the pty receives a window size change notification. -func InheritSize(pty, tty *os.File) error { - size, err := GetsizeFull(pty) - if err != nil { - return err - } - err = Setsize(tty, size) - if err != nil { - return err - } - return nil -} - -// Setsize resizes t to s. -func Setsize(t *os.File, ws *Winsize) error { - return windowRectCall(ws, t.Fd(), syscall.TIOCSWINSZ) -} - -// GetsizeFull returns the full terminal size description. -func GetsizeFull(t *os.File) (size *Winsize, err error) { - var ws Winsize - err = windowRectCall(&ws, t.Fd(), syscall.TIOCGWINSZ) - return &ws, err -} - -// Getsize returns the number of rows (lines) and cols (positions -// in each line) in terminal t. -func Getsize(t *os.File) (rows, cols int, err error) { - ws, err := GetsizeFull(t) - return int(ws.Rows), int(ws.Cols), err -} - -// Winsize describes the terminal size. -type Winsize struct { - Rows uint16 // ws_row: Number of rows (in cells) - Cols uint16 // ws_col: Number of columns (in cells) - X uint16 // ws_xpixel: Width in pixels - Y uint16 // ws_ypixel: Height in pixels -} - -func windowRectCall(ws *Winsize, fd, a2 uintptr) error { - _, _, errno := syscall.Syscall( - syscall.SYS_IOCTL, - fd, - a2, - uintptr(unsafe.Pointer(ws)), - ) - if errno != 0 { - return syscall.Errno(errno) - } - return nil -} diff --git a/vendor/github.com/kr/pty/ztypes_386.go b/vendor/github.com/kr/pty/ztypes_386.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_386.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_amd64.go b/vendor/github.com/kr/pty/ztypes_amd64.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_amd64.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_arm.go b/vendor/github.com/kr/pty/ztypes_arm.go deleted file mode 100644 index ff0b8fd..0000000 --- a/vendor/github.com/kr/pty/ztypes_arm.go +++ /dev/null @@ -1,9 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_arm64.go b/vendor/github.com/kr/pty/ztypes_arm64.go deleted file mode 100644 index 6c29a4b..0000000 --- a/vendor/github.com/kr/pty/ztypes_arm64.go +++ /dev/null @@ -1,11 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -// +build arm64 - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go b/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go deleted file mode 100644 index 6b0ba03..0000000 --- a/vendor/github.com/kr/pty/ztypes_dragonfly_amd64.go +++ /dev/null @@ -1,14 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_dragonfly.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Name *byte - Len uint32 - Pad_cgo_0 [4]byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_386.go b/vendor/github.com/kr/pty/ztypes_freebsd_386.go deleted file mode 100644 index d997537..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_386.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go b/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go deleted file mode 100644 index 5fa102f..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_amd64.go +++ /dev/null @@ -1,14 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Pad_cgo_0 [4]byte - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go b/vendor/github.com/kr/pty/ztypes_freebsd_arm.go deleted file mode 100644 index d997537..0000000 --- a/vendor/github.com/kr/pty/ztypes_freebsd_arm.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_freebsd.go - -package pty - -const ( - _C_SPECNAMELEN = 0x3f -) - -type fiodgnameArg struct { - Len int32 - Buf *byte -} diff --git a/vendor/github.com/kr/pty/ztypes_mipsx.go b/vendor/github.com/kr/pty/ztypes_mipsx.go deleted file mode 100644 index f0ce740..0000000 --- a/vendor/github.com/kr/pty/ztypes_mipsx.go +++ /dev/null @@ -1,12 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -// +build linux -// +build mips mipsle mips64 mips64le - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_386.go b/vendor/github.com/kr/pty/ztypes_openbsd_386.go deleted file mode 100644 index ccb3aab..0000000 --- a/vendor/github.com/kr/pty/ztypes_openbsd_386.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go - -package pty - -type ptmget struct { - Cfd int32 - Sfd int32 - Cn [16]int8 - Sn [16]int8 -} - -var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go b/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go deleted file mode 100644 index e670516..0000000 --- a/vendor/github.com/kr/pty/ztypes_openbsd_amd64.go +++ /dev/null @@ -1,13 +0,0 @@ -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types_openbsd.go - -package pty - -type ptmget struct { - Cfd int32 - Sfd int32 - Cn [16]int8 - Sn [16]int8 -} - -var ioctl_PTMGET = 0x40287401 diff --git a/vendor/github.com/kr/pty/ztypes_ppc64.go b/vendor/github.com/kr/pty/ztypes_ppc64.go deleted file mode 100644 index 4e1af84..0000000 --- a/vendor/github.com/kr/pty/ztypes_ppc64.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build ppc64 - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_ppc64le.go b/vendor/github.com/kr/pty/ztypes_ppc64le.go deleted file mode 100644 index e6780f4..0000000 --- a/vendor/github.com/kr/pty/ztypes_ppc64le.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build ppc64le - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/kr/pty/ztypes_s390x.go b/vendor/github.com/kr/pty/ztypes_s390x.go deleted file mode 100644 index a7452b6..0000000 --- a/vendor/github.com/kr/pty/ztypes_s390x.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build s390x - -// Created by cgo -godefs - DO NOT EDIT -// cgo -godefs types.go - -package pty - -type ( - _C_int int32 - _C_uint uint32 -) diff --git a/vendor/github.com/mattn/go-isatty/.travis.yml b/vendor/github.com/mattn/go-isatty/.travis.yml deleted file mode 100644 index 5597e02..0000000 --- a/vendor/github.com/mattn/go-isatty/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go -go: - - tip - -os: - - linux - - osx - -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 diff --git a/vendor/github.com/mattn/go-isatty/LICENSE b/vendor/github.com/mattn/go-isatty/LICENSE deleted file mode 100644 index 65dc692..0000000 --- a/vendor/github.com/mattn/go-isatty/LICENSE +++ /dev/null @@ -1,9 +0,0 @@ -Copyright (c) Yasuhiro MATSUMOTO - -MIT License (Expat) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/mattn/go-isatty/README.md b/vendor/github.com/mattn/go-isatty/README.md deleted file mode 100644 index 1e69004..0000000 --- a/vendor/github.com/mattn/go-isatty/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# go-isatty - -[![Godoc Reference](https://godoc.org/github.com/mattn/go-isatty?status.svg)](http://godoc.org/github.com/mattn/go-isatty) -[![Build Status](https://travis-ci.org/mattn/go-isatty.svg?branch=master)](https://travis-ci.org/mattn/go-isatty) -[![Coverage Status](https://coveralls.io/repos/github/mattn/go-isatty/badge.svg?branch=master)](https://coveralls.io/github/mattn/go-isatty?branch=master) -[![Go Report Card](https://goreportcard.com/badge/mattn/go-isatty)](https://goreportcard.com/report/mattn/go-isatty) - -isatty for golang - -## Usage - -```go -package main - -import ( - "fmt" - "github.com/mattn/go-isatty" - "os" -) - -func main() { - if isatty.IsTerminal(os.Stdout.Fd()) { - fmt.Println("Is Terminal") - } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) { - fmt.Println("Is Cygwin/MSYS2 Terminal") - } else { - fmt.Println("Is Not Terminal") - } -} -``` - -## Installation - -``` -$ go get github.com/mattn/go-isatty -``` - -## License - -MIT - -## Author - -Yasuhiro Matsumoto (a.k.a mattn) - -## Thanks - -* k-takata: base idea for IsCygwinTerminal - - https://github.com/k-takata/go-iscygpty diff --git a/vendor/github.com/mattn/go-isatty/doc.go b/vendor/github.com/mattn/go-isatty/doc.go deleted file mode 100644 index 17d4f90..0000000 --- a/vendor/github.com/mattn/go-isatty/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// Package isatty implements interface to isatty -package isatty diff --git a/vendor/github.com/mattn/go-isatty/go.mod b/vendor/github.com/mattn/go-isatty/go.mod deleted file mode 100644 index f310320..0000000 --- a/vendor/github.com/mattn/go-isatty/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/mattn/go-isatty - -require golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 diff --git a/vendor/github.com/mattn/go-isatty/go.sum b/vendor/github.com/mattn/go-isatty/go.sum deleted file mode 100644 index 426c897..0000000 --- a/vendor/github.com/mattn/go-isatty/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/mattn/go-isatty/isatty_android.go b/vendor/github.com/mattn/go-isatty/isatty_android.go deleted file mode 100644 index d3567cb..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_android.go +++ /dev/null @@ -1,23 +0,0 @@ -// +build android - -package isatty - -import ( - "syscall" - "unsafe" -) - -const ioctlReadTermios = syscall.TCGETS - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - var termios syscall.Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 -} - -// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_bsd.go b/vendor/github.com/mattn/go-isatty/isatty_bsd.go deleted file mode 100644 index 07e9303..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_bsd.go +++ /dev/null @@ -1,24 +0,0 @@ -// +build darwin freebsd openbsd netbsd dragonfly -// +build !appengine - -package isatty - -import ( - "syscall" - "unsafe" -) - -const ioctlReadTermios = syscall.TIOCGETA - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - var termios syscall.Termios - _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) - return err == 0 -} - -// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_linux.go b/vendor/github.com/mattn/go-isatty/isatty_linux.go deleted file mode 100644 index 4f8af46..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_linux.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build linux -// +build !appengine -// +build !android - -package isatty - -import "golang.org/x/sys/unix" - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - _, err := unix.IoctlGetTermios(int(fd), unix.TCGETS) - return err == nil -} - -// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_others.go b/vendor/github.com/mattn/go-isatty/isatty_others.go deleted file mode 100644 index f02849c..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_others.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build appengine js - -package isatty - -// IsTerminal returns true if the file descriptor is terminal which -// is always false on js and appengine classic which is a sandboxed PaaS. -func IsTerminal(fd uintptr) bool { - return false -} - -// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_solaris.go b/vendor/github.com/mattn/go-isatty/isatty_solaris.go deleted file mode 100644 index bdd5c79..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_solaris.go +++ /dev/null @@ -1,22 +0,0 @@ -// +build solaris -// +build !appengine - -package isatty - -import ( - "golang.org/x/sys/unix" -) - -// IsTerminal returns true if the given file descriptor is a terminal. -// see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c -func IsTerminal(fd uintptr) bool { - var termio unix.Termio - err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) - return err == nil -} - -// IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 -// terminal. This is also always false on this environment. -func IsCygwinTerminal(fd uintptr) bool { - return false -} diff --git a/vendor/github.com/mattn/go-isatty/isatty_windows.go b/vendor/github.com/mattn/go-isatty/isatty_windows.go deleted file mode 100644 index af51cbc..0000000 --- a/vendor/github.com/mattn/go-isatty/isatty_windows.go +++ /dev/null @@ -1,94 +0,0 @@ -// +build windows -// +build !appengine - -package isatty - -import ( - "strings" - "syscall" - "unicode/utf16" - "unsafe" -) - -const ( - fileNameInfo uintptr = 2 - fileTypePipe = 3 -) - -var ( - kernel32 = syscall.NewLazyDLL("kernel32.dll") - procGetConsoleMode = kernel32.NewProc("GetConsoleMode") - procGetFileInformationByHandleEx = kernel32.NewProc("GetFileInformationByHandleEx") - procGetFileType = kernel32.NewProc("GetFileType") -) - -func init() { - // Check if GetFileInformationByHandleEx is available. - if procGetFileInformationByHandleEx.Find() != nil { - procGetFileInformationByHandleEx = nil - } -} - -// IsTerminal return true if the file descriptor is terminal. -func IsTerminal(fd uintptr) bool { - var st uint32 - r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) - return r != 0 && e == 0 -} - -// Check pipe name is used for cygwin/msys2 pty. -// Cygwin/MSYS2 PTY has a name like: -// \{cygwin,msys}-XXXXXXXXXXXXXXXX-ptyN-{from,to}-master -func isCygwinPipeName(name string) bool { - token := strings.Split(name, "-") - if len(token) < 5 { - return false - } - - if token[0] != `\msys` && token[0] != `\cygwin` { - return false - } - - if token[1] == "" { - return false - } - - if !strings.HasPrefix(token[2], "pty") { - return false - } - - if token[3] != `from` && token[3] != `to` { - return false - } - - if token[4] != "master" { - return false - } - - return true -} - -// IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 -// terminal. -func IsCygwinTerminal(fd uintptr) bool { - if procGetFileInformationByHandleEx == nil { - return false - } - - // Cygwin/msys's pty is a pipe. - ft, _, e := syscall.Syscall(procGetFileType.Addr(), 1, fd, 0, 0) - if ft != fileTypePipe || e != 0 { - return false - } - - var buf [2 + syscall.MAX_PATH]uint16 - r, _, e := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), - 4, fd, fileNameInfo, uintptr(unsafe.Pointer(&buf)), - uintptr(len(buf)*2), 0, 0) - if r == 0 || e != 0 { - return false - } - - l := *(*uint32)(unsafe.Pointer(&buf)) - return isCygwinPipeName(string(utf16.Decode(buf[2 : 2+l/2]))) -} diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/pkg/errors/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml deleted file mode 100644 index d4b9266..0000000 --- a/vendor/github.com/pkg/errors/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -language: go -go_import_path: github.com/pkg/errors -go: - - 1.4.x - - 1.5.x - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - 1.10.x - - 1.11.x - - tip - -script: - - go test -v ./... diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE deleted file mode 100644 index 835ba3e..0000000 --- a/vendor/github.com/pkg/errors/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2015, Dave Cheney -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md deleted file mode 100644 index 6483ba2..0000000 --- a/vendor/github.com/pkg/errors/README.md +++ /dev/null @@ -1,52 +0,0 @@ -# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge) - -Package errors provides simple error handling primitives. - -`go get github.com/pkg/errors` - -The traditional error handling idiom in Go is roughly akin to -```go -if err != nil { - return err -} -``` -which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. - -## Adding context to an error - -The errors.Wrap function returns a new error that adds context to the original error. For example -```go -_, err := ioutil.ReadAll(r) -if err != nil { - return errors.Wrap(err, "read failed") -} -``` -## Retrieving the cause of an error - -Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. -```go -type causer interface { - Cause() error -} -``` -`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: -```go -switch err := errors.Cause(err).(type) { -case *MyError: - // handle specifically -default: - // unknown error -} -``` - -[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). - -## Contributing - -We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. - -Before proposing a change, please discuss your change by raising an issue. - -## License - -BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml deleted file mode 100644 index a932ead..0000000 --- a/vendor/github.com/pkg/errors/appveyor.yml +++ /dev/null @@ -1,32 +0,0 @@ -version: build-{build}.{branch} - -clone_folder: C:\gopath\src\github.com\pkg\errors -shallow_clone: true # for startup speed - -environment: - GOPATH: C:\gopath - -platform: - - x64 - -# http://www.appveyor.com/docs/installed-software -install: - # some helpful output for debugging builds - - go version - - go env - # pre-installed MinGW at C:\MinGW is 32bit only - # but MSYS2 at C:\msys64 has mingw64 - - set PATH=C:\msys64\mingw64\bin;%PATH% - - gcc --version - - g++ --version - -build_script: - - go install -v ./... - -test_script: - - set PATH=C:\gopath\bin;%PATH% - - go test -v ./... - -#artifacts: -# - path: '%GOPATH%\bin\*.exe' -deploy: off diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go deleted file mode 100644 index 7421f32..0000000 --- a/vendor/github.com/pkg/errors/errors.go +++ /dev/null @@ -1,282 +0,0 @@ -// Package errors provides simple error handling primitives. -// -// The traditional error handling idiom in Go is roughly akin to -// -// if err != nil { -// return err -// } -// -// which when applied recursively up the call stack results in error reports -// without context or debugging information. The errors package allows -// programmers to add context to the failure path in their code in a way -// that does not destroy the original value of the error. -// -// Adding context to an error -// -// The errors.Wrap function returns a new error that adds context to the -// original error by recording a stack trace at the point Wrap is called, -// together with the supplied message. For example -// -// _, err := ioutil.ReadAll(r) -// if err != nil { -// return errors.Wrap(err, "read failed") -// } -// -// If additional control is required, the errors.WithStack and -// errors.WithMessage functions destructure errors.Wrap into its component -// operations: annotating an error with a stack trace and with a message, -// respectively. -// -// Retrieving the cause of an error -// -// Using errors.Wrap constructs a stack of errors, adding context to the -// preceding error. Depending on the nature of the error it may be necessary -// to reverse the operation of errors.Wrap to retrieve the original error -// for inspection. Any error value which implements this interface -// -// type causer interface { -// Cause() error -// } -// -// can be inspected by errors.Cause. errors.Cause will recursively retrieve -// the topmost error that does not implement causer, which is assumed to be -// the original cause. For example: -// -// switch err := errors.Cause(err).(type) { -// case *MyError: -// // handle specifically -// default: -// // unknown error -// } -// -// Although the causer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// Formatted printing of errors -// -// All error values returned from this package implement fmt.Formatter and can -// be formatted by the fmt package. The following verbs are supported: -// -// %s print the error. If the error has a Cause it will be -// printed recursively. -// %v see %s -// %+v extended format. Each Frame of the error's StackTrace will -// be printed in detail. -// -// Retrieving the stack trace of an error or wrapper -// -// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are -// invoked. This information can be retrieved with the following interface: -// -// type stackTracer interface { -// StackTrace() errors.StackTrace -// } -// -// The returned errors.StackTrace type is defined as -// -// type StackTrace []Frame -// -// The Frame type represents a call site in the stack trace. Frame supports -// the fmt.Formatter interface that can be used for printing information about -// the stack trace of this error. For example: -// -// if err, ok := err.(stackTracer); ok { -// for _, f := range err.StackTrace() { -// fmt.Printf("%+s:%d", f) -// } -// } -// -// Although the stackTracer interface is not exported by this package, it is -// considered a part of its stable public interface. -// -// See the documentation for Frame.Format for more details. -package errors - -import ( - "fmt" - "io" -) - -// New returns an error with the supplied message. -// New also records the stack trace at the point it was called. -func New(message string) error { - return &fundamental{ - msg: message, - stack: callers(), - } -} - -// Errorf formats according to a format specifier and returns the string -// as a value that satisfies error. -// Errorf also records the stack trace at the point it was called. -func Errorf(format string, args ...interface{}) error { - return &fundamental{ - msg: fmt.Sprintf(format, args...), - stack: callers(), - } -} - -// fundamental is an error that has a message and a stack, but no caller. -type fundamental struct { - msg string - *stack -} - -func (f *fundamental) Error() string { return f.msg } - -func (f *fundamental) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - io.WriteString(s, f.msg) - f.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, f.msg) - case 'q': - fmt.Fprintf(s, "%q", f.msg) - } -} - -// WithStack annotates err with a stack trace at the point WithStack was called. -// If err is nil, WithStack returns nil. -func WithStack(err error) error { - if err == nil { - return nil - } - return &withStack{ - err, - callers(), - } -} - -type withStack struct { - error - *stack -} - -func (w *withStack) Cause() error { return w.error } - -func (w *withStack) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v", w.Cause()) - w.stack.Format(s, verb) - return - } - fallthrough - case 's': - io.WriteString(s, w.Error()) - case 'q': - fmt.Fprintf(s, "%q", w.Error()) - } -} - -// Wrap returns an error annotating err with a stack trace -// at the point Wrap is called, and the supplied message. -// If err is nil, Wrap returns nil. -func Wrap(err error, message string) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: message, - } - return &withStack{ - err, - callers(), - } -} - -// Wrapf returns an error annotating err with a stack trace -// at the point Wrapf is called, and the format specifier. -// If err is nil, Wrapf returns nil. -func Wrapf(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - err = &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } - return &withStack{ - err, - callers(), - } -} - -// WithMessage annotates err with a new message. -// If err is nil, WithMessage returns nil. -func WithMessage(err error, message string) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: message, - } -} - -// WithMessagef annotates err with the format specifier. -// If err is nil, WithMessagef returns nil. -func WithMessagef(err error, format string, args ...interface{}) error { - if err == nil { - return nil - } - return &withMessage{ - cause: err, - msg: fmt.Sprintf(format, args...), - } -} - -type withMessage struct { - cause error - msg string -} - -func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } -func (w *withMessage) Cause() error { return w.cause } - -func (w *withMessage) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - if s.Flag('+') { - fmt.Fprintf(s, "%+v\n", w.Cause()) - io.WriteString(s, w.msg) - return - } - fallthrough - case 's', 'q': - io.WriteString(s, w.Error()) - } -} - -// Cause returns the underlying cause of the error, if possible. -// An error value has a cause if it implements the following -// interface: -// -// type causer interface { -// Cause() error -// } -// -// If the error does not implement Cause, the original error will -// be returned. If the error is nil, nil will be returned without further -// investigation. -func Cause(err error) error { - type causer interface { - Cause() error - } - - for err != nil { - cause, ok := err.(causer) - if !ok { - break - } - err = cause.Cause() - } - return err -} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go deleted file mode 100644 index 2874a04..0000000 --- a/vendor/github.com/pkg/errors/stack.go +++ /dev/null @@ -1,147 +0,0 @@ -package errors - -import ( - "fmt" - "io" - "path" - "runtime" - "strings" -) - -// Frame represents a program counter inside a stack frame. -type Frame uintptr - -// pc returns the program counter for this frame; -// multiple frames may have the same PC value. -func (f Frame) pc() uintptr { return uintptr(f) - 1 } - -// file returns the full path to the file that contains the -// function for this Frame's pc. -func (f Frame) file() string { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return "unknown" - } - file, _ := fn.FileLine(f.pc()) - return file -} - -// line returns the line number of source code of the -// function for this Frame's pc. -func (f Frame) line() int { - fn := runtime.FuncForPC(f.pc()) - if fn == nil { - return 0 - } - _, line := fn.FileLine(f.pc()) - return line -} - -// Format formats the frame according to the fmt.Formatter interface. -// -// %s source file -// %d source line -// %n function name -// %v equivalent to %s:%d -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+s function name and path of source file relative to the compile time -// GOPATH separated by \n\t (\n\t) -// %+v equivalent to %+s:%d -func (f Frame) Format(s fmt.State, verb rune) { - switch verb { - case 's': - switch { - case s.Flag('+'): - pc := f.pc() - fn := runtime.FuncForPC(pc) - if fn == nil { - io.WriteString(s, "unknown") - } else { - file, _ := fn.FileLine(pc) - fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) - } - default: - io.WriteString(s, path.Base(f.file())) - } - case 'd': - fmt.Fprintf(s, "%d", f.line()) - case 'n': - name := runtime.FuncForPC(f.pc()).Name() - io.WriteString(s, funcname(name)) - case 'v': - f.Format(s, 's') - io.WriteString(s, ":") - f.Format(s, 'd') - } -} - -// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). -type StackTrace []Frame - -// Format formats the stack of Frames according to the fmt.Formatter interface. -// -// %s lists source files for each Frame in the stack -// %v lists the source file and line number for each Frame in the stack -// -// Format accepts flags that alter the printing of some verbs, as follows: -// -// %+v Prints filename, function, and line number for each Frame in the stack. -func (st StackTrace) Format(s fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case s.Flag('+'): - for _, f := range st { - fmt.Fprintf(s, "\n%+v", f) - } - case s.Flag('#'): - fmt.Fprintf(s, "%#v", []Frame(st)) - default: - fmt.Fprintf(s, "%v", []Frame(st)) - } - case 's': - fmt.Fprintf(s, "%s", []Frame(st)) - } -} - -// stack represents a stack of program counters. -type stack []uintptr - -func (s *stack) Format(st fmt.State, verb rune) { - switch verb { - case 'v': - switch { - case st.Flag('+'): - for _, pc := range *s { - f := Frame(pc) - fmt.Fprintf(st, "\n%+v", f) - } - } - } -} - -func (s *stack) StackTrace() StackTrace { - f := make([]Frame, len(*s)) - for i := 0; i < len(f); i++ { - f[i] = Frame((*s)[i]) - } - return f -} - -func callers() *stack { - const depth = 32 - var pcs [depth]uintptr - n := runtime.Callers(3, pcs[:]) - var st stack = pcs[0:n] - return &st -} - -// funcname removes the path prefix component of a function's name reported by func.Name(). -func funcname(name string) string { - i := strings.LastIndex(name, "/") - name = name[i+1:] - i = strings.Index(name, ".") - return name[i+1:] -} diff --git a/vendor/github.com/templexxx/cpufeat/.gitignore b/vendor/github.com/templexxx/cpufeat/.gitignore deleted file mode 100644 index 08baa1a..0000000 --- a/vendor/github.com/templexxx/cpufeat/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Binaries for programs and plugins -*.exe -*.dll -*.so -*.dylib - -# Test binary, build with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - -# Project-local glide cache, RE: https://github.com/Masterminds/glide/issues/736 -.glide/ -.idea diff --git a/vendor/github.com/templexxx/cpufeat/LICENSE b/vendor/github.com/templexxx/cpufeat/LICENSE deleted file mode 100644 index ea5ea89..0000000 --- a/vendor/github.com/templexxx/cpufeat/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/vendor/github.com/templexxx/cpufeat/README.md b/vendor/github.com/templexxx/cpufeat/README.md deleted file mode 100644 index 16afe53..0000000 --- a/vendor/github.com/templexxx/cpufeat/README.md +++ /dev/null @@ -1 +0,0 @@ -see: https://github.com/templexxx/cpu diff --git a/vendor/github.com/templexxx/cpufeat/cpu.go b/vendor/github.com/templexxx/cpufeat/cpu.go deleted file mode 100644 index dd5a949..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package cpu implements processor feature detection -// used by the Go standard libary. -package cpufeat - -var X86 x86 - -// The booleans in x86 contain the correspondingly named cpuid feature bit. -// HasAVX and HasAVX2 are only set if the OS does support XMM and YMM registers -// in addition to the cpuid feature bit being set. -// The struct is padded to avoid false sharing. -type x86 struct { - _ [CacheLineSize]byte - HasAES bool - HasAVX bool - HasAVX2 bool - HasAVX512 bool - HasBMI1 bool - HasBMI2 bool - HasERMS bool - HasOSXSAVE bool - HasPCLMULQDQ bool - HasPOPCNT bool - HasSSE2 bool - HasSSE3 bool - HasSSSE3 bool - HasSSE41 bool - HasSSE42 bool - _ [CacheLineSize]byte -} diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm.go b/vendor/github.com/templexxx/cpufeat/cpu_arm.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_arm.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_arm64.go b/vendor/github.com/templexxx/cpufeat/cpu_arm64.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_arm64.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips.go b/vendor/github.com/templexxx/cpufeat/cpu_mips.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_mips.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_mips64.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go b/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_mips64le.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go b/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go deleted file mode 100644 index b3eb5a9..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_mipsle.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 32 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go deleted file mode 100644 index 1e738e3..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_ppc64.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go b/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go deleted file mode 100644 index 1e738e3..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_ppc64le.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 128 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_s390x.go b/vendor/github.com/templexxx/cpufeat/cpu_s390x.go deleted file mode 100644 index 17be8fe..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_s390x.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpufeat - -const CacheLineSize = 256 diff --git a/vendor/github.com/templexxx/cpufeat/cpu_x86.go b/vendor/github.com/templexxx/cpufeat/cpu_x86.go deleted file mode 100644 index 19d6d22..0000000 --- a/vendor/github.com/templexxx/cpufeat/cpu_x86.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build 386 amd64 amd64p32 - -package cpufeat - -const CacheLineSize = 64 - -// cpuid is implemented in cpu_x86.s. -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) - -// xgetbv with ecx = 0 is implemented in cpu_x86.s. -func xgetbv() (eax, edx uint32) - -func init() { - maxId, _, _, _ := cpuid(0, 0) - - if maxId < 1 { - return - } - - _, _, ecx1, edx1 := cpuid(1, 0) - X86.HasSSE2 = isSet(26, edx1) - - X86.HasSSE3 = isSet(0, ecx1) - X86.HasPCLMULQDQ = isSet(1, ecx1) - X86.HasSSSE3 = isSet(9, ecx1) - X86.HasSSE41 = isSet(19, ecx1) - X86.HasSSE42 = isSet(20, ecx1) - X86.HasPOPCNT = isSet(23, ecx1) - X86.HasAES = isSet(25, ecx1) - X86.HasOSXSAVE = isSet(27, ecx1) - - osSupportsAVX := false - osSupportAVX512 := false - // For XGETBV, OSXSAVE bit is required and sufficient. - if X86.HasOSXSAVE { - eax, _ := xgetbv() - // Check if XMM and YMM registers have OS support. - osSupportsAVX = isSet(1, eax) && isSet(2, eax) - // Check is ZMM registers have OS support. - osSupportAVX512 = (eax>>5)&7 == 7 && (eax>>1)&3 == 3 - } - - X86.HasAVX = isSet(28, ecx1) && osSupportsAVX - - if maxId < 7 { - return - } - - _, ebx7, _, _ := cpuid(7, 0) - X86.HasBMI1 = isSet(3, ebx7) - X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX - X86.HasBMI2 = isSet(8, ebx7) - X86.HasERMS = isSet(9, ebx7) - X86.HasAVX512 = hasAVX512(ebx7) && osSupportAVX512 -} - -func isSet(bitpos uint, value uint32) bool { - return value&(1< 0 { - wordBytes := w * wordSize - fastXORWords(dst[:wordBytes], a[:wordBytes], b[:wordBytes]) - } - for i := n - n%wordSize; i < n; i++ { - dst[i] = a[i] ^ b[i] - } -} - -func safeXORBytes(dst, a, b []byte, n int) { - ex := n % 8 - for i := 0; i < ex; i++ { - dst[i] = a[i] ^ b[i] - } - - for i := ex; i < n; i += 8 { - _dst := dst[i : i+8] - _a := a[i : i+8] - _b := b[i : i+8] - _dst[0] = _a[0] ^ _b[0] - _dst[1] = _a[1] ^ _b[1] - _dst[2] = _a[2] ^ _b[2] - _dst[3] = _a[3] ^ _b[3] - - _dst[4] = _a[4] ^ _b[4] - _dst[5] = _a[5] ^ _b[5] - _dst[6] = _a[6] ^ _b[6] - _dst[7] = _a[7] ^ _b[7] - } -} - -// fastXORWords XORs multiples of 4 or 8 bytes (depending on architecture.) -// The arguments are assumed to be of equal length. -func fastXORWords(dst, a, b []byte) { - dw := *(*[]uintptr)(unsafe.Pointer(&dst)) - aw := *(*[]uintptr)(unsafe.Pointer(&a)) - bw := *(*[]uintptr)(unsafe.Pointer(&b)) - n := len(b) / wordSize - ex := n % 8 - for i := 0; i < ex; i++ { - dw[i] = aw[i] ^ bw[i] - } - - for i := ex; i < n; i += 8 { - _dw := dw[i : i+8] - _aw := aw[i : i+8] - _bw := bw[i : i+8] - _dw[0] = _aw[0] ^ _bw[0] - _dw[1] = _aw[1] ^ _bw[1] - _dw[2] = _aw[2] ^ _bw[2] - _dw[3] = _aw[3] ^ _bw[3] - _dw[4] = _aw[4] ^ _bw[4] - _dw[5] = _aw[5] ^ _bw[5] - _dw[6] = _aw[6] ^ _bw[6] - _dw[7] = _aw[7] ^ _bw[7] - } -} diff --git a/vendor/github.com/templexxx/xor/sse2_amd64.s b/vendor/github.com/templexxx/xor/sse2_amd64.s deleted file mode 100644 index d7f702b..0000000 --- a/vendor/github.com/templexxx/xor/sse2_amd64.s +++ /dev/null @@ -1,574 +0,0 @@ -#include "textflag.h" - -// addr of mem -#define DST BX -#define SRC SI -#define SRC0 TMP4 -#define SRC1 TMP5 - -// loop args -// num of vect -#define VECT CX -#define LEN DX -// pos of matrix -#define POS R8 - -// tmp store -// num of vect or ... -#define TMP1 R9 -// pos of matrix or ... -#define TMP2 R10 -// store addr of data/parity or ... -#define TMP3 R11 -#define TMP4 R12 -#define TMP5 R13 -#define TMP6 R14 - -// func bytesSrc0(dst, src0, src1 []byte) -TEXT ·xorSrc0(SB), NOSPLIT, $0 - MOVQ len+32(FP), LEN - CMPQ LEN, $0 - JE ret - MOVQ dst+0(FP), DST - MOVQ src0+24(FP), SRC0 - MOVQ src1+48(FP), SRC1 - TESTQ $15, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop16b: - MOVOU (SRC0)(POS*1), X0 - XORPD (SRC1)(POS*1), X0 - MOVOU X0, (DST)(POS*1) - ADDQ $16, POS - CMPQ LEN, POS - JNE loop16b - RET - -loop_1b: - MOVB -1(SRC0)(LEN*1), TMP1 - MOVB -1(SRC1)(LEN*1), TMP2 - XORB TMP1, TMP2 - MOVB TMP2, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - CMPQ LEN, $0 - JE ret - TESTQ $15, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP1 - ANDQ $15, TMP1 - -loop_8b: - MOVQ -8(SRC0)(LEN*1), TMP2 - MOVQ -8(SRC1)(LEN*1), TMP3 - XORQ TMP2, TMP3 - MOVQ TMP3, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP1 - JG loop_8b - - CMPQ LEN, $16 - JGE aligned - RET - -ret: - RET - -// func bytesSrc1(dst, src0, src1 []byte) -TEXT ·xorSrc1(SB), NOSPLIT, $0 - MOVQ len+56(FP), LEN - CMPQ LEN, $0 - JE ret - MOVQ dst+0(FP), DST - MOVQ src0+24(FP), SRC0 - MOVQ src1+48(FP), SRC1 - TESTQ $15, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop16b: - MOVOU (SRC0)(POS*1), X0 - XORPD (SRC1)(POS*1), X0 - MOVOU X0, (DST)(POS*1) - ADDQ $16, POS - CMPQ LEN, POS - JNE loop16b - RET - -loop_1b: - MOVB -1(SRC0)(LEN*1), TMP1 - MOVB -1(SRC1)(LEN*1), TMP2 - XORB TMP1, TMP2 - MOVB TMP2, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - CMPQ LEN, $0 - JE ret - TESTQ $15, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP1 - ANDQ $15, TMP1 - -loop_8b: - MOVQ -8(SRC0)(LEN*1), TMP2 - MOVQ -8(SRC1)(LEN*1), TMP3 - XORQ TMP2, TMP3 - MOVQ TMP3, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP1 - JG loop_8b - - CMPQ LEN, $16 - JGE aligned - RET - -ret: - RET - -// func bytesSSE2mini(dst, src0, src1 []byte, size int) -TEXT ·bytesSSE2mini(SB), NOSPLIT, $0 - MOVQ len+72(FP), LEN - CMPQ LEN, $0 - JE ret - MOVQ dst+0(FP), DST - MOVQ src0+24(FP), SRC0 - MOVQ src1+48(FP), SRC1 - TESTQ $15, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop16b: - MOVOU (SRC0)(POS*1), X0 - XORPD (SRC1)(POS*1), X0 - - // MOVOU (SRC1)(POS*1), X4 - // PXOR X4, X0 - MOVOU X0, (DST)(POS*1) - ADDQ $16, POS - CMPQ LEN, POS - JNE loop16b - RET - -loop_1b: - MOVB -1(SRC0)(LEN*1), TMP1 - MOVB -1(SRC1)(LEN*1), TMP2 - XORB TMP1, TMP2 - MOVB TMP2, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - CMPQ LEN, $0 - JE ret - TESTQ $15, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP1 - ANDQ $15, TMP1 - -loop_8b: - MOVQ -8(SRC0)(LEN*1), TMP2 - MOVQ -8(SRC1)(LEN*1), TMP3 - XORQ TMP2, TMP3 - MOVQ TMP3, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP1 - JG loop_8b - - CMPQ LEN, $16 - JGE aligned - RET - -ret: - RET - -// func bytesSSE2small(dst, src0, src1 []byte, size int) -TEXT ·bytesSSE2small(SB), NOSPLIT, $0 - MOVQ len+72(FP), LEN - CMPQ LEN, $0 - JE ret - MOVQ dst+0(FP), DST - MOVQ src0+24(FP), SRC0 - MOVQ src1+48(FP), SRC1 - TESTQ $63, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop64b: - MOVOU (SRC0)(POS*1), X0 - MOVOU 16(SRC0)(POS*1), X1 - MOVOU 32(SRC0)(POS*1), X2 - MOVOU 48(SRC0)(POS*1), X3 - - MOVOU (SRC1)(POS*1), X4 - MOVOU 16(SRC1)(POS*1), X5 - MOVOU 32(SRC1)(POS*1), X6 - MOVOU 48(SRC1)(POS*1), X7 - - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X2 - PXOR X7, X3 - - MOVOU X0, (DST)(POS*1) - MOVOU X1, 16(DST)(POS*1) - MOVOU X2, 32(DST)(POS*1) - MOVOU X3, 48(DST)(POS*1) - - ADDQ $64, POS - CMPQ LEN, POS - JNE loop64b - RET - -loop_1b: - MOVB -1(SRC0)(LEN*1), TMP1 - MOVB -1(SRC1)(LEN*1), TMP2 - XORB TMP1, TMP2 - MOVB TMP2, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - CMPQ LEN, $0 - JE ret - TESTQ $63, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP1 - ANDQ $63, TMP1 - -loop_8b: - MOVQ -8(SRC0)(LEN*1), TMP2 - MOVQ -8(SRC1)(LEN*1), TMP3 - XORQ TMP2, TMP3 - MOVQ TMP3, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP1 - JG loop_8b - - CMPQ LEN, $64 - JGE aligned - RET - -ret: - RET - -// func bytesSSE2big(dst, src0, src1 []byte, size int) -TEXT ·bytesSSE2big(SB), NOSPLIT, $0 - MOVQ len+72(FP), LEN - CMPQ LEN, $0 - JE ret - MOVQ dst+0(FP), DST - MOVQ src0+24(FP), SRC0 - MOVQ src1+48(FP), SRC1 - TESTQ $63, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop64b: - MOVOU (SRC0)(POS*1), X0 - MOVOU 16(SRC0)(POS*1), X1 - MOVOU 32(SRC0)(POS*1), X2 - MOVOU 48(SRC0)(POS*1), X3 - - MOVOU (SRC1)(POS*1), X4 - MOVOU 16(SRC1)(POS*1), X5 - MOVOU 32(SRC1)(POS*1), X6 - MOVOU 48(SRC1)(POS*1), X7 - - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X2 - PXOR X7, X3 - - LONG $0xe70f4266; WORD $0x0304 // MOVNTDQ - LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 - LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 - LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 - - ADDQ $64, POS - CMPQ LEN, POS - JNE loop64b - RET - -loop_1b: - MOVB -1(SRC0)(LEN*1), TMP1 - MOVB -1(SRC1)(LEN*1), TMP2 - XORB TMP1, TMP2 - MOVB TMP2, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - CMPQ LEN, $0 - JE ret - TESTQ $63, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP1 - ANDQ $63, TMP1 - -loop_8b: - MOVQ -8(SRC0)(LEN*1), TMP2 - MOVQ -8(SRC1)(LEN*1), TMP3 - XORQ TMP2, TMP3 - MOVQ TMP3, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP1 - JG loop_8b - - CMPQ LEN, $64 - JGE aligned - RET - -ret: - RET - -// func matrixSSE2small(dst []byte, src [][]byte) -TEXT ·matrixSSE2small(SB), NOSPLIT, $0 - MOVQ dst+0(FP), DST - MOVQ src+24(FP), SRC - MOVQ vec+32(FP), VECT - MOVQ len+8(FP), LEN - TESTQ $63, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop64b: - MOVQ VECT, TMP1 - SUBQ $2, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ TMP3, TMP4 - MOVOU (TMP3)(POS*1), X0 - MOVOU 16(TMP4)(POS*1), X1 - MOVOU 32(TMP3)(POS*1), X2 - MOVOU 48(TMP4)(POS*1), X3 - -next_vect: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ TMP3, TMP4 - MOVOU (TMP3)(POS*1), X4 - MOVOU 16(TMP4)(POS*1), X5 - MOVOU 32(TMP3)(POS*1), X6 - MOVOU 48(TMP4)(POS*1), X7 - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X2 - PXOR X7, X3 - SUBQ $1, TMP1 - JGE next_vect - - MOVOU X0, (DST)(POS*1) - MOVOU X1, 16(DST)(POS*1) - MOVOU X2, 32(DST)(POS*1) - MOVOU X3, 48(DST)(POS*1) - - ADDQ $64, POS - CMPQ LEN, POS - JNE loop64b - RET - -loop_1b: - MOVQ VECT, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - SUBQ $2, TMP1 - MOVB -1(TMP3)(LEN*1), TMP5 - -next_vect_1b: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVB -1(TMP3)(LEN*1), TMP6 - XORB TMP6, TMP5 - SUBQ $1, TMP1 - JGE next_vect_1b - - MOVB TMP5, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - - CMPQ LEN, $0 - JE ret - TESTQ $63, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP4 - ANDQ $63, TMP4 - -loop_8b: - MOVQ VECT, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - SUBQ $2, TMP1 - MOVQ -8(TMP3)(LEN*1), TMP5 - -next_vect_8b: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ -8(TMP3)(LEN*1), TMP6 - XORQ TMP6, TMP5 - SUBQ $1, TMP1 - JGE next_vect_8b - - MOVQ TMP5, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP4 - JG loop_8b - - CMPQ LEN, $64 - JGE aligned - RET - -ret: - RET - -// func matrixSSE2big(dst []byte, src [][]byte) -TEXT ·matrixSSE2big(SB), NOSPLIT, $0 - MOVQ dst+0(FP), DST - MOVQ src+24(FP), SRC - MOVQ vec+32(FP), VECT - MOVQ len+8(FP), LEN - TESTQ $63, LEN - JNZ not_aligned - -aligned: - MOVQ $0, POS - -loop64b: - MOVQ VECT, TMP1 - SUBQ $2, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ TMP3, TMP4 - MOVOU (TMP3)(POS*1), X0 - MOVOU 16(TMP4)(POS*1), X1 - MOVOU 32(TMP3)(POS*1), X2 - MOVOU 48(TMP4)(POS*1), X3 - -next_vect: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ TMP3, TMP4 - MOVOU (TMP3)(POS*1), X4 - MOVOU 16(TMP4)(POS*1), X5 - MOVOU 32(TMP3)(POS*1), X6 - MOVOU 48(TMP4)(POS*1), X7 - PXOR X4, X0 - PXOR X5, X1 - PXOR X6, X2 - PXOR X7, X3 - SUBQ $1, TMP1 - JGE next_vect - - LONG $0xe70f4266; WORD $0x0304 - LONG $0xe70f4266; WORD $0x034c; BYTE $0x10 - LONG $0xe70f4266; WORD $0x0354; BYTE $0x20 - LONG $0xe70f4266; WORD $0x035c; BYTE $0x30 - - ADDQ $64, POS - CMPQ LEN, POS - JNE loop64b - RET - -loop_1b: - MOVQ VECT, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - SUBQ $2, TMP1 - MOVB -1(TMP3)(LEN*1), TMP5 - -next_vect_1b: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVB -1(TMP3)(LEN*1), TMP6 - XORB TMP6, TMP5 - SUBQ $1, TMP1 - JGE next_vect_1b - - MOVB TMP5, -1(DST)(LEN*1) - SUBQ $1, LEN - TESTQ $7, LEN - JNZ loop_1b - - CMPQ LEN, $0 - JE ret - TESTQ $63, LEN - JZ aligned - -not_aligned: - TESTQ $7, LEN - JNE loop_1b - MOVQ LEN, TMP4 - ANDQ $63, TMP4 - -loop_8b: - MOVQ VECT, TMP1 - MOVQ $0, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - SUBQ $2, TMP1 - MOVQ -8(TMP3)(LEN*1), TMP5 - -next_vect_8b: - ADDQ $24, TMP2 - MOVQ (SRC)(TMP2*1), TMP3 - MOVQ -8(TMP3)(LEN*1), TMP6 - XORQ TMP6, TMP5 - SUBQ $1, TMP1 - JGE next_vect_8b - - MOVQ TMP5, -8(DST)(LEN*1) - SUBQ $8, LEN - SUBQ $8, TMP4 - JG loop_8b - - CMPQ LEN, $64 - JGE aligned - RET - -ret: - RET - -TEXT ·hasSSE2(SB), NOSPLIT, $0 - XORQ AX, AX - INCL AX - CPUID - SHRQ $26, DX - ANDQ $1, DX - MOVB DX, ret+0(FP) - RET - diff --git a/vendor/github.com/templexxx/xor/xor.go b/vendor/github.com/templexxx/xor/xor.go deleted file mode 100644 index 2fa5616..0000000 --- a/vendor/github.com/templexxx/xor/xor.go +++ /dev/null @@ -1,49 +0,0 @@ -package xor - -// SIMD Extensions -const ( - none = iota - avx2 - // first introduced by Intel with the initial version of the Pentium 4 in 2001 - // so I think we can assume all amd64 has sse2 - sse2 -) - -var extension = none - -// Bytes : chose the shortest one as xor size -// it's better to use it for big data ( > 64bytes ) -func Bytes(dst, src0, src1 []byte) { - size := len(dst) - if size > len(src0) { - size = len(src0) - } - if size > len(src1) { - size = len(src1) - } - xorBytes(dst, src0, src1, size) -} - -// BytesSameLen : all slice's length must be equal -// cut size branch, save time for small data -func BytesSameLen(dst, src0, src1 []byte) { - xorSrc1(dst, src0, src1) -} - -// BytesSrc0 : src1 >= src0, dst >= src0 -// xor src0's len bytes -func BytesSrc0(dst, src0, src1 []byte) { - xorSrc0(dst, src0, src1) -} - -// BytesSrc1 : src0 >= src1, dst >= src1 -// xor src1's len bytes -func BytesSrc1(dst, src0, src1 []byte) { - xorSrc1(dst, src0, src1) -} - -// Matrix : all slice's length must be equal && != 0 -// len(src) must >= 2 -func Matrix(dst []byte, src [][]byte) { - xorMatrix(dst, src) -} diff --git a/vendor/github.com/templexxx/xor/xor_amd64.go b/vendor/github.com/templexxx/xor/xor_amd64.go deleted file mode 100644 index b449bc0..0000000 --- a/vendor/github.com/templexxx/xor/xor_amd64.go +++ /dev/null @@ -1,120 +0,0 @@ -package xor - -import "github.com/templexxx/cpufeat" - -func init() { - getEXT() -} - -func getEXT() { - if cpufeat.X86.HasAVX2 { - extension = avx2 - } else { - extension = sse2 - } - return -} - -func xorBytes(dst, src0, src1 []byte, size int) { - switch extension { - case avx2: - bytesAVX2(dst, src0, src1, size) - default: - bytesSSE2(dst, src0, src1, size) - } -} - -// non-temporal hint store -const nontmp = 8 * 1024 -const avx2loopsize = 128 - -func bytesAVX2(dst, src0, src1 []byte, size int) { - if size < avx2loopsize { - bytesAVX2mini(dst, src0, src1, size) - } else if size >= avx2loopsize && size <= nontmp { - bytesAVX2small(dst, src0, src1, size) - } else { - bytesAVX2big(dst, src0, src1, size) - } -} - -const sse2loopsize = 64 - -func bytesSSE2(dst, src0, src1 []byte, size int) { - if size < sse2loopsize { - bytesSSE2mini(dst, src0, src1, size) - } else if size >= sse2loopsize && size <= nontmp { - bytesSSE2small(dst, src0, src1, size) - } else { - bytesSSE2big(dst, src0, src1, size) - } -} - -func xorMatrix(dst []byte, src [][]byte) { - switch extension { - case avx2: - matrixAVX2(dst, src) - default: - matrixSSE2(dst, src) - } -} - -func matrixAVX2(dst []byte, src [][]byte) { - size := len(dst) - if size > nontmp { - matrixAVX2big(dst, src) - } else { - matrixAVX2small(dst, src) - } -} - -func matrixSSE2(dst []byte, src [][]byte) { - size := len(dst) - if size > nontmp { - matrixSSE2big(dst, src) - } else { - matrixSSE2small(dst, src) - } -} - -//go:noescape -func xorSrc0(dst, src0, src1 []byte) - -//go:noescape -func xorSrc1(dst, src0, src1 []byte) - -//go:noescape -func bytesAVX2mini(dst, src0, src1 []byte, size int) - -//go:noescape -func bytesAVX2big(dst, src0, src1 []byte, size int) - -//go:noescape -func bytesAVX2small(dst, src0, src1 []byte, size int) - -//go:noescape -func bytesSSE2mini(dst, src0, src1 []byte, size int) - -//go:noescape -func bytesSSE2small(dst, src0, src1 []byte, size int) - -//go:noescape -func bytesSSE2big(dst, src0, src1 []byte, size int) - -//go:noescape -func matrixAVX2small(dst []byte, src [][]byte) - -//go:noescape -func matrixAVX2big(dst []byte, src [][]byte) - -//go:noescape -func matrixSSE2small(dst []byte, src [][]byte) - -//go:noescape -func matrixSSE2big(dst []byte, src [][]byte) - -//go:noescape -func hasAVX2() bool - -//go:noescape -func hasSSE2() bool diff --git a/vendor/github.com/templexxx/xor/xor_other.go b/vendor/github.com/templexxx/xor/xor_other.go deleted file mode 100644 index 4aa2967..0000000 --- a/vendor/github.com/templexxx/xor/xor_other.go +++ /dev/null @@ -1,19 +0,0 @@ -// +build !amd64 noasm - -package xor - -func xorBytes(dst, src0, src1 []byte, size int) { - bytesNoSIMD(dst, src0, src1, size) -} - -func xorMatrix(dst []byte, src [][]byte) { - matrixNoSIMD(dst, src) -} - -func xorSrc0(dst, src0, src1 []byte) { - bytesNoSIMD(dst, src0, src1, len(src0)) -} - -func xorSrc1(dst, src0, src1 []byte) { - bytesNoSIMD(dst, src0, src1, len(src1)) -} diff --git a/vendor/github.com/tjfoc/gmsm/LICENSE b/vendor/github.com/tjfoc/gmsm/LICENSE deleted file mode 100644 index 8dada3e..0000000 --- a/vendor/github.com/tjfoc/gmsm/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/tjfoc/gmsm/sm4/sm4.go b/vendor/github.com/tjfoc/gmsm/sm4/sm4.go deleted file mode 100644 index 1742933..0000000 --- a/vendor/github.com/tjfoc/gmsm/sm4/sm4.go +++ /dev/null @@ -1,342 +0,0 @@ -/* -Copyright Suzhou Tongji Fintech Research Institute 2017 All Rights Reserved. -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - -sm4 acceration -modified by Jack, 2017 Oct -*/ - -package sm4 - -import ( - "crypto/cipher" - "crypto/rand" - "crypto/x509" - "encoding/pem" - "errors" - "io/ioutil" - "os" - "strconv" -) - -const BlockSize = 16 - -type SM4Key []byte - -type KeySizeError int - -// Cipher is an instance of SM4 encryption. -type Sm4Cipher struct { - subkeys []uint32 - block1 []uint32 - block2 []byte -} - -// sm4密钥参量 -var fk = [4]uint32{ - 0xa3b1bac6, 0x56aa3350, 0x677d9197, 0xb27022dc, -} - -// sm4密钥参量 -var ck = [32]uint32{ - 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, - 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, - 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, - 0x50575e65, 0x6c737a81, 0x888f969d, 0xa4abb2b9, - 0xc0c7ced5, 0xdce3eaf1, 0xf8ff060d, 0x141b2229, - 0x30373e45, 0x4c535a61, 0x686f767d, 0x848b9299, - 0xa0a7aeb5, 0xbcc3cad1, 0xd8dfe6ed, 0xf4fb0209, - 0x10171e25, 0x2c333a41, 0x484f565d, 0x646b7279, -} - -// sm4密钥参量 -var sbox = [256]uint8{ - 0xd6, 0x90, 0xe9, 0xfe, 0xcc, 0xe1, 0x3d, 0xb7, 0x16, 0xb6, 0x14, 0xc2, 0x28, 0xfb, 0x2c, 0x05, - 0x2b, 0x67, 0x9a, 0x76, 0x2a, 0xbe, 0x04, 0xc3, 0xaa, 0x44, 0x13, 0x26, 0x49, 0x86, 0x06, 0x99, - 0x9c, 0x42, 0x50, 0xf4, 0x91, 0xef, 0x98, 0x7a, 0x33, 0x54, 0x0b, 0x43, 0xed, 0xcf, 0xac, 0x62, - 0xe4, 0xb3, 0x1c, 0xa9, 0xc9, 0x08, 0xe8, 0x95, 0x80, 0xdf, 0x94, 0xfa, 0x75, 0x8f, 0x3f, 0xa6, - 0x47, 0x07, 0xa7, 0xfc, 0xf3, 0x73, 0x17, 0xba, 0x83, 0x59, 0x3c, 0x19, 0xe6, 0x85, 0x4f, 0xa8, - 0x68, 0x6b, 0x81, 0xb2, 0x71, 0x64, 0xda, 0x8b, 0xf8, 0xeb, 0x0f, 0x4b, 0x70, 0x56, 0x9d, 0x35, - 0x1e, 0x24, 0x0e, 0x5e, 0x63, 0x58, 0xd1, 0xa2, 0x25, 0x22, 0x7c, 0x3b, 0x01, 0x21, 0x78, 0x87, - 0xd4, 0x00, 0x46, 0x57, 0x9f, 0xd3, 0x27, 0x52, 0x4c, 0x36, 0x02, 0xe7, 0xa0, 0xc4, 0xc8, 0x9e, - 0xea, 0xbf, 0x8a, 0xd2, 0x40, 0xc7, 0x38, 0xb5, 0xa3, 0xf7, 0xf2, 0xce, 0xf9, 0x61, 0x15, 0xa1, - 0xe0, 0xae, 0x5d, 0xa4, 0x9b, 0x34, 0x1a, 0x55, 0xad, 0x93, 0x32, 0x30, 0xf5, 0x8c, 0xb1, 0xe3, - 0x1d, 0xf6, 0xe2, 0x2e, 0x82, 0x66, 0xca, 0x60, 0xc0, 0x29, 0x23, 0xab, 0x0d, 0x53, 0x4e, 0x6f, - 0xd5, 0xdb, 0x37, 0x45, 0xde, 0xfd, 0x8e, 0x2f, 0x03, 0xff, 0x6a, 0x72, 0x6d, 0x6c, 0x5b, 0x51, - 0x8d, 0x1b, 0xaf, 0x92, 0xbb, 0xdd, 0xbc, 0x7f, 0x11, 0xd9, 0x5c, 0x41, 0x1f, 0x10, 0x5a, 0xd8, - 0x0a, 0xc1, 0x31, 0x88, 0xa5, 0xcd, 0x7b, 0xbd, 0x2d, 0x74, 0xd0, 0x12, 0xb8, 0xe5, 0xb4, 0xb0, - 0x89, 0x69, 0x97, 0x4a, 0x0c, 0x96, 0x77, 0x7e, 0x65, 0xb9, 0xf1, 0x09, 0xc5, 0x6e, 0xc6, 0x84, - 0x18, 0xf0, 0x7d, 0xec, 0x3a, 0xdc, 0x4d, 0x20, 0x79, 0xee, 0x5f, 0x3e, 0xd7, 0xcb, 0x39, 0x48, -} - -var sbox0 = [256]uint32{ - 0xd55b5b8e, 0x924242d0, 0xeaa7a74d, 0xfdfbfb06, 0xcf3333fc, 0xe2878765, 0x3df4f4c9, 0xb5dede6b, 0x1658584e, 0xb4dada6e, 0x14505044, 0xc10b0bca, 0x28a0a088, 0xf8efef17, 0x2cb0b09c, 0x05141411, - 0x2bacac87, 0x669d9dfb, 0x986a6af2, 0x77d9d9ae, 0x2aa8a882, 0xbcfafa46, 0x04101014, 0xc00f0fcf, 0xa8aaaa02, 0x45111154, 0x134c4c5f, 0x269898be, 0x4825256d, 0x841a1a9e, 0x0618181e, 0x9b6666fd, - 0x9e7272ec, 0x4309094a, 0x51414110, 0xf7d3d324, 0x934646d5, 0xecbfbf53, 0x9a6262f8, 0x7be9e992, 0x33ccccff, 0x55515104, 0x0b2c2c27, 0x420d0d4f, 0xeeb7b759, 0xcc3f3ff3, 0xaeb2b21c, 0x638989ea, - 0xe7939374, 0xb1cece7f, 0x1c70706c, 0xaba6a60d, 0xca2727ed, 0x08202028, 0xeba3a348, 0x975656c1, 0x82020280, 0xdc7f7fa3, 0x965252c4, 0xf9ebeb12, 0x74d5d5a1, 0x8d3e3eb3, 0x3ffcfcc3, 0xa49a9a3e, - 0x461d1d5b, 0x071c1c1b, 0xa59e9e3b, 0xfff3f30c, 0xf0cfcf3f, 0x72cdcdbf, 0x175c5c4b, 0xb8eaea52, 0x810e0e8f, 0x5865653d, 0x3cf0f0cc, 0x1964647d, 0xe59b9b7e, 0x87161691, 0x4e3d3d73, 0xaaa2a208, - 0x69a1a1c8, 0x6aadadc7, 0x83060685, 0xb0caca7a, 0x70c5c5b5, 0x659191f4, 0xd96b6bb2, 0x892e2ea7, 0xfbe3e318, 0xe8afaf47, 0x0f3c3c33, 0x4a2d2d67, 0x71c1c1b0, 0x5759590e, 0x9f7676e9, 0x35d4d4e1, - 0x1e787866, 0x249090b4, 0x0e383836, 0x5f797926, 0x628d8def, 0x59616138, 0xd2474795, 0xa08a8a2a, 0x259494b1, 0x228888aa, 0x7df1f18c, 0x3bececd7, 0x01040405, 0x218484a5, 0x79e1e198, 0x851e1e9b, - 0xd7535384, 0x00000000, 0x4719195e, 0x565d5d0b, 0x9d7e7ee3, 0xd04f4f9f, 0x279c9cbb, 0x5349491a, 0x4d31317c, 0x36d8d8ee, 0x0208080a, 0xe49f9f7b, 0xa2828220, 0xc71313d4, 0xcb2323e8, 0x9c7a7ae6, - 0xe9abab42, 0xbdfefe43, 0x882a2aa2, 0xd14b4b9a, 0x41010140, 0xc41f1fdb, 0x38e0e0d8, 0xb7d6d661, 0xa18e8e2f, 0xf4dfdf2b, 0xf1cbcb3a, 0xcd3b3bf6, 0xfae7e71d, 0x608585e5, 0x15545441, 0xa3868625, - 0xe3838360, 0xacbaba16, 0x5c757529, 0xa6929234, 0x996e6ef7, 0x34d0d0e4, 0x1a686872, 0x54555501, 0xafb6b619, 0x914e4edf, 0x32c8c8fa, 0x30c0c0f0, 0xf6d7d721, 0x8e3232bc, 0xb3c6c675, 0xe08f8f6f, - 0x1d747469, 0xf5dbdb2e, 0xe18b8b6a, 0x2eb8b896, 0x800a0a8a, 0x679999fe, 0xc92b2be2, 0x618181e0, 0xc30303c0, 0x29a4a48d, 0x238c8caf, 0xa9aeae07, 0x0d343439, 0x524d4d1f, 0x4f393976, 0x6ebdbdd3, - 0xd6575781, 0xd86f6fb7, 0x37dcdceb, 0x44151551, 0xdd7b7ba6, 0xfef7f709, 0x8c3a3ab6, 0x2fbcbc93, 0x030c0c0f, 0xfcffff03, 0x6ba9a9c2, 0x73c9c9ba, 0x6cb5b5d9, 0x6db1b1dc, 0x5a6d6d37, 0x50454515, - 0x8f3636b9, 0x1b6c6c77, 0xadbebe13, 0x904a4ada, 0xb9eeee57, 0xde7777a9, 0xbef2f24c, 0x7efdfd83, 0x11444455, 0xda6767bd, 0x5d71712c, 0x40050545, 0x1f7c7c63, 0x10404050, 0x5b696932, 0xdb6363b8, - 0x0a282822, 0xc20707c5, 0x31c4c4f5, 0x8a2222a8, 0xa7969631, 0xce3737f9, 0x7aeded97, 0xbff6f649, 0x2db4b499, 0x75d1d1a4, 0xd3434390, 0x1248485a, 0xbae2e258, 0xe6979771, 0xb6d2d264, 0xb2c2c270, - 0x8b2626ad, 0x68a5a5cd, 0x955e5ecb, 0x4b292962, 0x0c30303c, 0x945a5ace, 0x76ddddab, 0x7ff9f986, 0x649595f1, 0xbbe6e65d, 0xf2c7c735, 0x0924242d, 0xc61717d1, 0x6fb9b9d6, 0xc51b1bde, 0x86121294, - 0x18606078, 0xf3c3c330, 0x7cf5f589, 0xefb3b35c, 0x3ae8e8d2, 0xdf7373ac, 0x4c353579, 0x208080a0, 0x78e5e59d, 0xedbbbb56, 0x5e7d7d23, 0x3ef8f8c6, 0xd45f5f8b, 0xc82f2fe7, 0x39e4e4dd, 0x49212168, -} - -var sbox1 = [256]uint32{ - 0x5b5b8ed5, 0x4242d092, 0xa7a74dea, 0xfbfb06fd, 0x3333fccf, 0x878765e2, 0xf4f4c93d, 0xdede6bb5, 0x58584e16, 0xdada6eb4, 0x50504414, 0x0b0bcac1, 0xa0a08828, 0xefef17f8, 0xb0b09c2c, 0x14141105, - 0xacac872b, 0x9d9dfb66, 0x6a6af298, 0xd9d9ae77, 0xa8a8822a, 0xfafa46bc, 0x10101404, 0x0f0fcfc0, 0xaaaa02a8, 0x11115445, 0x4c4c5f13, 0x9898be26, 0x25256d48, 0x1a1a9e84, 0x18181e06, 0x6666fd9b, - 0x7272ec9e, 0x09094a43, 0x41411051, 0xd3d324f7, 0x4646d593, 0xbfbf53ec, 0x6262f89a, 0xe9e9927b, 0xccccff33, 0x51510455, 0x2c2c270b, 0x0d0d4f42, 0xb7b759ee, 0x3f3ff3cc, 0xb2b21cae, 0x8989ea63, - 0x939374e7, 0xcece7fb1, 0x70706c1c, 0xa6a60dab, 0x2727edca, 0x20202808, 0xa3a348eb, 0x5656c197, 0x02028082, 0x7f7fa3dc, 0x5252c496, 0xebeb12f9, 0xd5d5a174, 0x3e3eb38d, 0xfcfcc33f, 0x9a9a3ea4, - 0x1d1d5b46, 0x1c1c1b07, 0x9e9e3ba5, 0xf3f30cff, 0xcfcf3ff0, 0xcdcdbf72, 0x5c5c4b17, 0xeaea52b8, 0x0e0e8f81, 0x65653d58, 0xf0f0cc3c, 0x64647d19, 0x9b9b7ee5, 0x16169187, 0x3d3d734e, 0xa2a208aa, - 0xa1a1c869, 0xadadc76a, 0x06068583, 0xcaca7ab0, 0xc5c5b570, 0x9191f465, 0x6b6bb2d9, 0x2e2ea789, 0xe3e318fb, 0xafaf47e8, 0x3c3c330f, 0x2d2d674a, 0xc1c1b071, 0x59590e57, 0x7676e99f, 0xd4d4e135, - 0x7878661e, 0x9090b424, 0x3838360e, 0x7979265f, 0x8d8def62, 0x61613859, 0x474795d2, 0x8a8a2aa0, 0x9494b125, 0x8888aa22, 0xf1f18c7d, 0xececd73b, 0x04040501, 0x8484a521, 0xe1e19879, 0x1e1e9b85, - 0x535384d7, 0x00000000, 0x19195e47, 0x5d5d0b56, 0x7e7ee39d, 0x4f4f9fd0, 0x9c9cbb27, 0x49491a53, 0x31317c4d, 0xd8d8ee36, 0x08080a02, 0x9f9f7be4, 0x828220a2, 0x1313d4c7, 0x2323e8cb, 0x7a7ae69c, - 0xabab42e9, 0xfefe43bd, 0x2a2aa288, 0x4b4b9ad1, 0x01014041, 0x1f1fdbc4, 0xe0e0d838, 0xd6d661b7, 0x8e8e2fa1, 0xdfdf2bf4, 0xcbcb3af1, 0x3b3bf6cd, 0xe7e71dfa, 0x8585e560, 0x54544115, 0x868625a3, - 0x838360e3, 0xbaba16ac, 0x7575295c, 0x929234a6, 0x6e6ef799, 0xd0d0e434, 0x6868721a, 0x55550154, 0xb6b619af, 0x4e4edf91, 0xc8c8fa32, 0xc0c0f030, 0xd7d721f6, 0x3232bc8e, 0xc6c675b3, 0x8f8f6fe0, - 0x7474691d, 0xdbdb2ef5, 0x8b8b6ae1, 0xb8b8962e, 0x0a0a8a80, 0x9999fe67, 0x2b2be2c9, 0x8181e061, 0x0303c0c3, 0xa4a48d29, 0x8c8caf23, 0xaeae07a9, 0x3434390d, 0x4d4d1f52, 0x3939764f, 0xbdbdd36e, - 0x575781d6, 0x6f6fb7d8, 0xdcdceb37, 0x15155144, 0x7b7ba6dd, 0xf7f709fe, 0x3a3ab68c, 0xbcbc932f, 0x0c0c0f03, 0xffff03fc, 0xa9a9c26b, 0xc9c9ba73, 0xb5b5d96c, 0xb1b1dc6d, 0x6d6d375a, 0x45451550, - 0x3636b98f, 0x6c6c771b, 0xbebe13ad, 0x4a4ada90, 0xeeee57b9, 0x7777a9de, 0xf2f24cbe, 0xfdfd837e, 0x44445511, 0x6767bdda, 0x71712c5d, 0x05054540, 0x7c7c631f, 0x40405010, 0x6969325b, 0x6363b8db, - 0x2828220a, 0x0707c5c2, 0xc4c4f531, 0x2222a88a, 0x969631a7, 0x3737f9ce, 0xeded977a, 0xf6f649bf, 0xb4b4992d, 0xd1d1a475, 0x434390d3, 0x48485a12, 0xe2e258ba, 0x979771e6, 0xd2d264b6, 0xc2c270b2, - 0x2626ad8b, 0xa5a5cd68, 0x5e5ecb95, 0x2929624b, 0x30303c0c, 0x5a5ace94, 0xddddab76, 0xf9f9867f, 0x9595f164, 0xe6e65dbb, 0xc7c735f2, 0x24242d09, 0x1717d1c6, 0xb9b9d66f, 0x1b1bdec5, 0x12129486, - 0x60607818, 0xc3c330f3, 0xf5f5897c, 0xb3b35cef, 0xe8e8d23a, 0x7373acdf, 0x3535794c, 0x8080a020, 0xe5e59d78, 0xbbbb56ed, 0x7d7d235e, 0xf8f8c63e, 0x5f5f8bd4, 0x2f2fe7c8, 0xe4e4dd39, 0x21216849, -} - -var sbox2 = [256]uint32{ - 0x5b8ed55b, 0x42d09242, 0xa74deaa7, 0xfb06fdfb, 0x33fccf33, 0x8765e287, 0xf4c93df4, 0xde6bb5de, 0x584e1658, 0xda6eb4da, 0x50441450, 0x0bcac10b, 0xa08828a0, 0xef17f8ef, 0xb09c2cb0, 0x14110514, - 0xac872bac, 0x9dfb669d, 0x6af2986a, 0xd9ae77d9, 0xa8822aa8, 0xfa46bcfa, 0x10140410, 0x0fcfc00f, 0xaa02a8aa, 0x11544511, 0x4c5f134c, 0x98be2698, 0x256d4825, 0x1a9e841a, 0x181e0618, 0x66fd9b66, - 0x72ec9e72, 0x094a4309, 0x41105141, 0xd324f7d3, 0x46d59346, 0xbf53ecbf, 0x62f89a62, 0xe9927be9, 0xccff33cc, 0x51045551, 0x2c270b2c, 0x0d4f420d, 0xb759eeb7, 0x3ff3cc3f, 0xb21caeb2, 0x89ea6389, - 0x9374e793, 0xce7fb1ce, 0x706c1c70, 0xa60daba6, 0x27edca27, 0x20280820, 0xa348eba3, 0x56c19756, 0x02808202, 0x7fa3dc7f, 0x52c49652, 0xeb12f9eb, 0xd5a174d5, 0x3eb38d3e, 0xfcc33ffc, 0x9a3ea49a, - 0x1d5b461d, 0x1c1b071c, 0x9e3ba59e, 0xf30cfff3, 0xcf3ff0cf, 0xcdbf72cd, 0x5c4b175c, 0xea52b8ea, 0x0e8f810e, 0x653d5865, 0xf0cc3cf0, 0x647d1964, 0x9b7ee59b, 0x16918716, 0x3d734e3d, 0xa208aaa2, - 0xa1c869a1, 0xadc76aad, 0x06858306, 0xca7ab0ca, 0xc5b570c5, 0x91f46591, 0x6bb2d96b, 0x2ea7892e, 0xe318fbe3, 0xaf47e8af, 0x3c330f3c, 0x2d674a2d, 0xc1b071c1, 0x590e5759, 0x76e99f76, 0xd4e135d4, - 0x78661e78, 0x90b42490, 0x38360e38, 0x79265f79, 0x8def628d, 0x61385961, 0x4795d247, 0x8a2aa08a, 0x94b12594, 0x88aa2288, 0xf18c7df1, 0xecd73bec, 0x04050104, 0x84a52184, 0xe19879e1, 0x1e9b851e, - 0x5384d753, 0x00000000, 0x195e4719, 0x5d0b565d, 0x7ee39d7e, 0x4f9fd04f, 0x9cbb279c, 0x491a5349, 0x317c4d31, 0xd8ee36d8, 0x080a0208, 0x9f7be49f, 0x8220a282, 0x13d4c713, 0x23e8cb23, 0x7ae69c7a, - 0xab42e9ab, 0xfe43bdfe, 0x2aa2882a, 0x4b9ad14b, 0x01404101, 0x1fdbc41f, 0xe0d838e0, 0xd661b7d6, 0x8e2fa18e, 0xdf2bf4df, 0xcb3af1cb, 0x3bf6cd3b, 0xe71dfae7, 0x85e56085, 0x54411554, 0x8625a386, - 0x8360e383, 0xba16acba, 0x75295c75, 0x9234a692, 0x6ef7996e, 0xd0e434d0, 0x68721a68, 0x55015455, 0xb619afb6, 0x4edf914e, 0xc8fa32c8, 0xc0f030c0, 0xd721f6d7, 0x32bc8e32, 0xc675b3c6, 0x8f6fe08f, - 0x74691d74, 0xdb2ef5db, 0x8b6ae18b, 0xb8962eb8, 0x0a8a800a, 0x99fe6799, 0x2be2c92b, 0x81e06181, 0x03c0c303, 0xa48d29a4, 0x8caf238c, 0xae07a9ae, 0x34390d34, 0x4d1f524d, 0x39764f39, 0xbdd36ebd, - 0x5781d657, 0x6fb7d86f, 0xdceb37dc, 0x15514415, 0x7ba6dd7b, 0xf709fef7, 0x3ab68c3a, 0xbc932fbc, 0x0c0f030c, 0xff03fcff, 0xa9c26ba9, 0xc9ba73c9, 0xb5d96cb5, 0xb1dc6db1, 0x6d375a6d, 0x45155045, - 0x36b98f36, 0x6c771b6c, 0xbe13adbe, 0x4ada904a, 0xee57b9ee, 0x77a9de77, 0xf24cbef2, 0xfd837efd, 0x44551144, 0x67bdda67, 0x712c5d71, 0x05454005, 0x7c631f7c, 0x40501040, 0x69325b69, 0x63b8db63, - 0x28220a28, 0x07c5c207, 0xc4f531c4, 0x22a88a22, 0x9631a796, 0x37f9ce37, 0xed977aed, 0xf649bff6, 0xb4992db4, 0xd1a475d1, 0x4390d343, 0x485a1248, 0xe258bae2, 0x9771e697, 0xd264b6d2, 0xc270b2c2, - 0x26ad8b26, 0xa5cd68a5, 0x5ecb955e, 0x29624b29, 0x303c0c30, 0x5ace945a, 0xddab76dd, 0xf9867ff9, 0x95f16495, 0xe65dbbe6, 0xc735f2c7, 0x242d0924, 0x17d1c617, 0xb9d66fb9, 0x1bdec51b, 0x12948612, - 0x60781860, 0xc330f3c3, 0xf5897cf5, 0xb35cefb3, 0xe8d23ae8, 0x73acdf73, 0x35794c35, 0x80a02080, 0xe59d78e5, 0xbb56edbb, 0x7d235e7d, 0xf8c63ef8, 0x5f8bd45f, 0x2fe7c82f, 0xe4dd39e4, 0x21684921, -} - -var sbox3 = [256]uint32{ - 0x8ed55b5b, 0xd0924242, 0x4deaa7a7, 0x06fdfbfb, 0xfccf3333, 0x65e28787, 0xc93df4f4, 0x6bb5dede, 0x4e165858, 0x6eb4dada, 0x44145050, 0xcac10b0b, 0x8828a0a0, 0x17f8efef, 0x9c2cb0b0, 0x11051414, - 0x872bacac, 0xfb669d9d, 0xf2986a6a, 0xae77d9d9, 0x822aa8a8, 0x46bcfafa, 0x14041010, 0xcfc00f0f, 0x02a8aaaa, 0x54451111, 0x5f134c4c, 0xbe269898, 0x6d482525, 0x9e841a1a, 0x1e061818, 0xfd9b6666, - 0xec9e7272, 0x4a430909, 0x10514141, 0x24f7d3d3, 0xd5934646, 0x53ecbfbf, 0xf89a6262, 0x927be9e9, 0xff33cccc, 0x04555151, 0x270b2c2c, 0x4f420d0d, 0x59eeb7b7, 0xf3cc3f3f, 0x1caeb2b2, 0xea638989, - 0x74e79393, 0x7fb1cece, 0x6c1c7070, 0x0daba6a6, 0xedca2727, 0x28082020, 0x48eba3a3, 0xc1975656, 0x80820202, 0xa3dc7f7f, 0xc4965252, 0x12f9ebeb, 0xa174d5d5, 0xb38d3e3e, 0xc33ffcfc, 0x3ea49a9a, - 0x5b461d1d, 0x1b071c1c, 0x3ba59e9e, 0x0cfff3f3, 0x3ff0cfcf, 0xbf72cdcd, 0x4b175c5c, 0x52b8eaea, 0x8f810e0e, 0x3d586565, 0xcc3cf0f0, 0x7d196464, 0x7ee59b9b, 0x91871616, 0x734e3d3d, 0x08aaa2a2, - 0xc869a1a1, 0xc76aadad, 0x85830606, 0x7ab0caca, 0xb570c5c5, 0xf4659191, 0xb2d96b6b, 0xa7892e2e, 0x18fbe3e3, 0x47e8afaf, 0x330f3c3c, 0x674a2d2d, 0xb071c1c1, 0x0e575959, 0xe99f7676, 0xe135d4d4, - 0x661e7878, 0xb4249090, 0x360e3838, 0x265f7979, 0xef628d8d, 0x38596161, 0x95d24747, 0x2aa08a8a, 0xb1259494, 0xaa228888, 0x8c7df1f1, 0xd73becec, 0x05010404, 0xa5218484, 0x9879e1e1, 0x9b851e1e, - 0x84d75353, 0x00000000, 0x5e471919, 0x0b565d5d, 0xe39d7e7e, 0x9fd04f4f, 0xbb279c9c, 0x1a534949, 0x7c4d3131, 0xee36d8d8, 0x0a020808, 0x7be49f9f, 0x20a28282, 0xd4c71313, 0xe8cb2323, 0xe69c7a7a, - 0x42e9abab, 0x43bdfefe, 0xa2882a2a, 0x9ad14b4b, 0x40410101, 0xdbc41f1f, 0xd838e0e0, 0x61b7d6d6, 0x2fa18e8e, 0x2bf4dfdf, 0x3af1cbcb, 0xf6cd3b3b, 0x1dfae7e7, 0xe5608585, 0x41155454, 0x25a38686, - 0x60e38383, 0x16acbaba, 0x295c7575, 0x34a69292, 0xf7996e6e, 0xe434d0d0, 0x721a6868, 0x01545555, 0x19afb6b6, 0xdf914e4e, 0xfa32c8c8, 0xf030c0c0, 0x21f6d7d7, 0xbc8e3232, 0x75b3c6c6, 0x6fe08f8f, - 0x691d7474, 0x2ef5dbdb, 0x6ae18b8b, 0x962eb8b8, 0x8a800a0a, 0xfe679999, 0xe2c92b2b, 0xe0618181, 0xc0c30303, 0x8d29a4a4, 0xaf238c8c, 0x07a9aeae, 0x390d3434, 0x1f524d4d, 0x764f3939, 0xd36ebdbd, - 0x81d65757, 0xb7d86f6f, 0xeb37dcdc, 0x51441515, 0xa6dd7b7b, 0x09fef7f7, 0xb68c3a3a, 0x932fbcbc, 0x0f030c0c, 0x03fcffff, 0xc26ba9a9, 0xba73c9c9, 0xd96cb5b5, 0xdc6db1b1, 0x375a6d6d, 0x15504545, - 0xb98f3636, 0x771b6c6c, 0x13adbebe, 0xda904a4a, 0x57b9eeee, 0xa9de7777, 0x4cbef2f2, 0x837efdfd, 0x55114444, 0xbdda6767, 0x2c5d7171, 0x45400505, 0x631f7c7c, 0x50104040, 0x325b6969, 0xb8db6363, - 0x220a2828, 0xc5c20707, 0xf531c4c4, 0xa88a2222, 0x31a79696, 0xf9ce3737, 0x977aeded, 0x49bff6f6, 0x992db4b4, 0xa475d1d1, 0x90d34343, 0x5a124848, 0x58bae2e2, 0x71e69797, 0x64b6d2d2, 0x70b2c2c2, - 0xad8b2626, 0xcd68a5a5, 0xcb955e5e, 0x624b2929, 0x3c0c3030, 0xce945a5a, 0xab76dddd, 0x867ff9f9, 0xf1649595, 0x5dbbe6e6, 0x35f2c7c7, 0x2d092424, 0xd1c61717, 0xd66fb9b9, 0xdec51b1b, 0x94861212, - 0x78186060, 0x30f3c3c3, 0x897cf5f5, 0x5cefb3b3, 0xd23ae8e8, 0xacdf7373, 0x794c3535, 0xa0208080, 0x9d78e5e5, 0x56edbbbb, 0x235e7d7d, 0xc63ef8f8, 0x8bd45f5f, 0xe7c82f2f, 0xdd39e4e4, 0x68492121, -} - -func rl(x uint32, i uint8) uint32 { return (x << (i % 32)) | (x >> (32 - (i % 32))) } - -func l0(b uint32) uint32 { return b ^ rl(b, 13) ^ rl(b, 23) } - -func feistel0(x0, x1, x2, x3, rk uint32) uint32 { return x0 ^ l0(p(x1^x2^x3^rk)) } - -//非线性变换τ(.) -func p(a uint32) uint32 { - return (uint32(sbox[a>>24]) << 24) ^ (uint32(sbox[(a>>16)&0xff]) << 16) ^ (uint32(sbox[(a>>8)&0xff]) << 8) ^ uint32(sbox[(a)&0xff]) -} - -func permuteInitialBlock(b []uint32, block []byte) { - for i := 0; i < 4; i++ { - b[i] = (uint32(block[i*4]) << 24) | (uint32(block[i*4+1]) << 16) | - (uint32(block[i*4+2]) << 8) | (uint32(block[i*4+3])) - } -} - -func permuteFinalBlock(b []byte, block []uint32) { - for i := 0; i < 4; i++ { - b[i*4] = uint8(block[i] >> 24) - b[i*4+1] = uint8(block[i] >> 16) - b[i*4+2] = uint8(block[i] >> 8) - b[i*4+3] = uint8(block[i]) - } -} - -//修改后的加密核心函数 -func cryptBlock(subkeys []uint32, b []uint32, r []byte, dst, src []byte, decrypt bool) { - var x uint32 - permuteInitialBlock(b, src) - if decrypt { - for i := 0; i < 8; i++ { - x = b[1] ^ b[2] ^ b[3] ^ subkeys[31-4*i] - b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[0] ^ b[2] ^ b[3] ^ subkeys[31-4*i-1] - b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[0] ^ b[1] ^ b[3] ^ subkeys[31-4*i-2] - b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[1] ^ b[2] ^ b[0] ^ subkeys[31-4*i-3] - b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - } - } else { - for i := 0; i < 8; i++ { - x = b[1] ^ b[2] ^ b[3] ^ subkeys[4*i] - b[0] = b[0] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[0] ^ b[2] ^ b[3] ^ subkeys[4*i+1] - b[1] = b[1] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[0] ^ b[1] ^ b[3] ^ subkeys[4*i+2] - b[2] = b[2] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - x = b[1] ^ b[2] ^ b[0] ^ subkeys[4*i+3] - b[3] = b[3] ^ sbox0[x&0xff] ^ sbox1[(x>>8)&0xff] ^ sbox2[(x>>16)&0xff] ^ sbox3[(x>>24)&0xff] - } - } - b[0], b[1], b[2], b[3] = b[3], b[2], b[1], b[0] - permuteFinalBlock(r, b) - copy(dst, r) -} - -func generateSubKeys(key []byte) []uint32 { - subkeys := make([]uint32, 32) - b := make([]uint32, 4) - permuteInitialBlock(b, key) - b[0] ^= fk[0] - b[1] ^= fk[1] - b[2] ^= fk[2] - b[3] ^= fk[3] - for i := 0; i < 32; i++ { - subkeys[i] = feistel0(b[0], b[1], b[2], b[3], ck[i]) - b[0], b[1], b[2], b[3] = b[1], b[2], b[3], subkeys[i] - } - return subkeys -} - -func EncryptBlock(key SM4Key, dst, src []byte) { - subkeys := generateSubKeys(key) - cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, false) -} - -func DecryptBlock(key SM4Key, dst, src []byte) { - subkeys := generateSubKeys(key) - cryptBlock(subkeys, make([]uint32, 4), make([]byte, 16), dst, src, true) -} - -func ReadKeyFromMem(data []byte, pwd []byte) (SM4Key, error) { - block, _ := pem.Decode(data) - if x509.IsEncryptedPEMBlock(block) { - if block.Type != "SM4 ENCRYPTED KEY" { - return nil, errors.New("SM4: unknown type") - } - if pwd == nil { - return nil, errors.New("SM4: need passwd") - } - data, err := x509.DecryptPEMBlock(block, pwd) - if err != nil { - return nil, err - } - return data, nil - } - if block.Type != "SM4 KEY" { - return nil, errors.New("SM4: unknown type") - } - return block.Bytes, nil -} - -func ReadKeyFromPem(FileName string, pwd []byte) (SM4Key, error) { - data, err := ioutil.ReadFile(FileName) - if err != nil { - return nil, err - } - return ReadKeyFromMem(data, pwd) -} - -func WriteKeytoMem(key SM4Key, pwd []byte) ([]byte, error) { - if pwd != nil { - block, err := x509.EncryptPEMBlock(rand.Reader, - "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) - if err != nil { - return nil, err - } - return pem.EncodeToMemory(block), nil - } else { - block := &pem.Block{ - Type: "SM4 KEY", - Bytes: key, - } - return pem.EncodeToMemory(block), nil - } -} - -func WriteKeyToPem(FileName string, key SM4Key, pwd []byte) (bool, error) { - var block *pem.Block - - if pwd != nil { - var err error - block, err = x509.EncryptPEMBlock(rand.Reader, - "SM4 ENCRYPTED KEY", key, pwd, x509.PEMCipherAES256) - if err != nil { - return false, err - } - } else { - block = &pem.Block{ - Type: "SM4 KEY", - Bytes: key, - } - } - file, err := os.Create(FileName) - if err != nil { - return false, err - } - defer file.Close() - err = pem.Encode(file, block) - if err != nil { - return false, nil - } - return true, nil -} - -func (k KeySizeError) Error() string { - return "SM4: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a new cipher.Block. -func NewCipher(key []byte) (cipher.Block, error) { - if len(key) != BlockSize { - return nil, KeySizeError(len(key)) - } - c := new(Sm4Cipher) - c.subkeys = generateSubKeys(key) - c.block1 = make([]uint32, 4) - c.block2 = make([]byte, 16) - return c, nil -} - -func (c *Sm4Cipher) BlockSize() int { - return BlockSize -} - -func (c *Sm4Cipher) Encrypt(dst, src []byte) { - cryptBlock(c.subkeys, c.block1, c.block2, dst, src, false) -} - -func (c *Sm4Cipher) Decrypt(dst, src []byte) { - cryptBlock(c.subkeys, c.block1, c.block2, dst, src, true) -} diff --git a/vendor/github.com/xtaci/kcp-go/.gitignore b/vendor/github.com/xtaci/kcp-go/.gitignore deleted file mode 100644 index daf913b..0000000 --- a/vendor/github.com/xtaci/kcp-go/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/vendor/github.com/xtaci/kcp-go/.travis.yml b/vendor/github.com/xtaci/kcp-go/.travis.yml deleted file mode 100644 index fb83e80..0000000 --- a/vendor/github.com/xtaci/kcp-go/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -language: go -go: - - 1.9.x - - 1.10.x - - 1.11.x - -before_install: - - go get -t -v ./... - -install: - - go get github.com/xtaci/kcp-go - -script: - - go test -coverprofile=coverage.txt -covermode=atomic -bench . - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/xtaci/kcp-go/LICENSE b/vendor/github.com/xtaci/kcp-go/LICENSE deleted file mode 100644 index 8294d13..0000000 --- a/vendor/github.com/xtaci/kcp-go/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Daniel Fu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/xtaci/kcp-go/README.md b/vendor/github.com/xtaci/kcp-go/README.md deleted file mode 100644 index 629e57a..0000000 --- a/vendor/github.com/xtaci/kcp-go/README.md +++ /dev/null @@ -1,229 +0,0 @@ -kcp-go - - -[![GoDoc][1]][2] [![Powered][9]][10] [![MIT licensed][11]][12] [![Build Status][3]][4] [![Go Report Card][5]][6] [![Coverage Statusd][7]][8] - -[1]: https://godoc.org/github.com/xtaci/kcp-go?status.svg -[2]: https://godoc.org/github.com/xtaci/kcp-go -[3]: https://travis-ci.org/xtaci/kcp-go.svg?branch=master -[4]: https://travis-ci.org/xtaci/kcp-go -[5]: https://goreportcard.com/badge/github.com/xtaci/kcp-go -[6]: https://goreportcard.com/report/github.com/xtaci/kcp-go -[7]: https://codecov.io/gh/xtaci/kcp-go/branch/master/graph/badge.svg -[8]: https://codecov.io/gh/xtaci/kcp-go -[9]: https://img.shields.io/badge/KCP-Powered-blue.svg -[10]: https://github.com/skywind3000/kcp -[11]: https://img.shields.io/badge/license-MIT-blue.svg -[12]: LICENSE - -## Introduction - -**kcp-go** is a **Production-Grade Reliable-UDP** library for [golang](https://golang.org/). - -This library intents to provide a **smooth, resilient, ordered, error-checked and anonymous** delivery of streams over **UDP** packets, it has been battle-tested with opensource project [kcptun](https://github.com/xtaci/kcptun). Millions of devices(from low-end MIPS routers to high-end servers) have deployed **kcp-go** powered program in a variety of forms like **online games, live broadcasting, file synchronization and network acceleration**. - -[Lastest Release](https://github.com/xtaci/kcp-go/releases) - -## Features - -1. Designed for **Latency-sensitive** scenarios. -1. **Cache friendly** and **Memory optimized** design, offers extremely **High Performance** core. -1. Handles **>5K concurrent connections** on a single commodity server. -1. Compatible with [net.Conn](https://golang.org/pkg/net/#Conn) and [net.Listener](https://golang.org/pkg/net/#Listener), a drop-in replacement for [net.TCPConn](https://golang.org/pkg/net/#TCPConn). -1. [FEC(Forward Error Correction)](https://en.wikipedia.org/wiki/Forward_error_correction) Support with [Reed-Solomon Codes](https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction) -1. Packet level encryption support with [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard), [TEA](https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm), [3DES](https://en.wikipedia.org/wiki/Triple_DES), [Blowfish](https://en.wikipedia.org/wiki/Blowfish_(cipher)), [Cast5](https://en.wikipedia.org/wiki/CAST-128), [Salsa20]( https://en.wikipedia.org/wiki/Salsa20), etc. in [CFB](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_.28CFB.29) mode, which generates completely anonymous packet. -1. Only **A fixed number of goroutines** will be created for the entire server application, costs in **context switch** between goroutines have been taken into consideration. -1. Compatible with [skywind3000's](https://github.com/skywind3000) C version with various improvements. -1. Platform-dependent optimizations: [sendmmsg](http://man7.org/linux/man-pages/man2/sendmmsg.2.html) and [recvmmsg](http://man7.org/linux/man-pages/man2/recvmmsg.2.html) were expoloited for linux. - -## Documentation - -For complete documentation, see the associated [Godoc](https://godoc.org/github.com/xtaci/kcp-go). - -## Specification - -Frame Format - -``` -NONCE: - 16bytes cryptographically secure random number, nonce changes for every packet. - -CRC32: - CRC-32 checksum of data using the IEEE polynomial - -FEC TYPE: - typeData = 0xF1 - typeParity = 0xF2 - -FEC SEQID: - monotonically increasing in range: [0, (0xffffffff/shardSize) * shardSize - 1] - -SIZE: - The size of KCP frame plus 2 -``` - -``` -+-----------------+ -| SESSION | -+-----------------+ -| KCP(ARQ) | -+-----------------+ -| FEC(OPTIONAL) | -+-----------------+ -| CRYPTO(OPTIONAL)| -+-----------------+ -| UDP(PACKET) | -+-----------------+ -| IP | -+-----------------+ -| LINK | -+-----------------+ -| PHY | -+-----------------+ -(LAYER MODEL OF KCP-GO) -``` - - -## Examples - -1. [simple examples](https://github.com/xtaci/kcp-go/tree/master/examples) -2. [kcptun client](https://github.com/xtaci/kcptun/blob/master/client/main.go) -3. [kcptun server](https://github.com/xtaci/kcptun/blob/master/server/main.go) - -## Benchmark -``` - Model Name: MacBook Pro - Model Identifier: MacBookPro14,1 - Processor Name: Intel Core i5 - Processor Speed: 3.1 GHz - Number of Processors: 1 - Total Number of Cores: 2 - L2 Cache (per Core): 256 KB - L3 Cache: 4 MB - Memory: 8 GB -``` -``` -$ go test -v -run=^$ -bench . -beginning tests, encryption:salsa20, fec:10/3 -goos: darwin -goarch: amd64 -pkg: github.com/xtaci/kcp-go -BenchmarkSM4-4 50000 32180 ns/op 93.23 MB/s 0 B/op 0 allocs/op -BenchmarkAES128-4 500000 3285 ns/op 913.21 MB/s 0 B/op 0 allocs/op -BenchmarkAES192-4 300000 3623 ns/op 827.85 MB/s 0 B/op 0 allocs/op -BenchmarkAES256-4 300000 3874 ns/op 774.20 MB/s 0 B/op 0 allocs/op -BenchmarkTEA-4 100000 15384 ns/op 195.00 MB/s 0 B/op 0 allocs/op -BenchmarkXOR-4 20000000 89.9 ns/op 33372.00 MB/s 0 B/op 0 allocs/op -BenchmarkBlowfish-4 50000 26927 ns/op 111.41 MB/s 0 B/op 0 allocs/op -BenchmarkNone-4 30000000 45.7 ns/op 65597.94 MB/s 0 B/op 0 allocs/op -BenchmarkCast5-4 50000 34258 ns/op 87.57 MB/s 0 B/op 0 allocs/op -Benchmark3DES-4 10000 117149 ns/op 25.61 MB/s 0 B/op 0 allocs/op -BenchmarkTwofish-4 50000 33538 ns/op 89.45 MB/s 0 B/op 0 allocs/op -BenchmarkXTEA-4 30000 45666 ns/op 65.69 MB/s 0 B/op 0 allocs/op -BenchmarkSalsa20-4 500000 3308 ns/op 906.76 MB/s 0 B/op 0 allocs/op -BenchmarkCRC32-4 20000000 65.2 ns/op 15712.43 MB/s -BenchmarkCsprngSystem-4 1000000 1150 ns/op 13.91 MB/s -BenchmarkCsprngMD5-4 10000000 145 ns/op 110.26 MB/s -BenchmarkCsprngSHA1-4 10000000 158 ns/op 126.54 MB/s -BenchmarkCsprngNonceMD5-4 10000000 153 ns/op 104.22 MB/s -BenchmarkCsprngNonceAES128-4 100000000 19.1 ns/op 837.81 MB/s -BenchmarkFECDecode-4 1000000 1119 ns/op 1339.61 MB/s 1606 B/op 2 allocs/op -BenchmarkFECEncode-4 2000000 832 ns/op 1801.83 MB/s 17 B/op 0 allocs/op -BenchmarkFlush-4 5000000 272 ns/op 0 B/op 0 allocs/op -BenchmarkEchoSpeed4K-4 5000 259617 ns/op 15.78 MB/s 5451 B/op 149 allocs/op -BenchmarkEchoSpeed64K-4 1000 1706084 ns/op 38.41 MB/s 56002 B/op 1604 allocs/op -BenchmarkEchoSpeed512K-4 100 14345505 ns/op 36.55 MB/s 482597 B/op 13045 allocs/op -BenchmarkEchoSpeed1M-4 30 34859104 ns/op 30.08 MB/s 1143773 B/op 27186 allocs/op -BenchmarkSinkSpeed4K-4 50000 31369 ns/op 130.57 MB/s 1566 B/op 30 allocs/op -BenchmarkSinkSpeed64K-4 5000 329065 ns/op 199.16 MB/s 21529 B/op 453 allocs/op -BenchmarkSinkSpeed256K-4 500 2373354 ns/op 220.91 MB/s 166332 B/op 3554 allocs/op -BenchmarkSinkSpeed1M-4 300 5117927 ns/op 204.88 MB/s 310378 B/op 6988 allocs/op -PASS -ok github.com/xtaci/kcp-go 50.349s -``` - - -## Typical Flame Graph -![Flame Graph in kcptun](flame.png) - -## Key Design Considerations - -1. slice vs. container/list - -`kcp.flush()` loops through the send queue for retransmission checking for every 20ms(interval). - -I've wrote a benchmark for comparing sequential loop through *slice* and *container/list* here: - -https://github.com/xtaci/notes/blob/master/golang/benchmark2/cachemiss_test.go - -``` -BenchmarkLoopSlice-4 2000000000 0.39 ns/op -BenchmarkLoopList-4 100000000 54.6 ns/op -``` - -List structure introduces **heavy cache misses** compared to slice which owns better **locality**, 5000 connections with 32 window size and 20ms interval will cost 6us/0.03%(cpu) using slice, and 8.7ms/43.5%(cpu) for list for each `kcp.flush()`. - -2. Timing accuracy vs. syscall clock_gettime - -Timing is **critical** to **RTT estimator**, inaccurate timing leads to false retransmissions in KCP, but calling `time.Now()` costs 42 cycles(10.5ns on 4GHz CPU, 15.6ns on my MacBook Pro 2.7GHz). - -The benchmark for time.Now() lies here: - -https://github.com/xtaci/notes/blob/master/golang/benchmark2/syscall_test.go - -``` -BenchmarkNow-4 100000000 15.6 ns/op -``` - -In kcp-go, after each `kcp.output()` function call, current clock time will be updated upon return, and for a single `kcp.flush()` operation, current time will be queried from system once. For most of the time, 5000 connections costs 5000 * 15.6ns = 78us(a fixed cost while no packet needs to be sent), as for 10MB/s data transfering with 1400 MTU, `kcp.output()` will be called around 7500 times and costs 117us for `time.Now()` in **every second**. - -3. Memory management - -Primary memory allocation are done from a global buffer pool xmit.Buf, in kcp-go, when we need to allocate some bytes, we can get from that pool, and a fixed-capacity 1500 bytes(mtuLimit) will be returned, the rx queue, tx queue and fec queue all receive bytes from there, and they will return the bytes to the pool after using to prevent unnecessary zer0ing of bytes. The pool mechanism maintained a high watermark for slice objects, these in-flight objects from the pool will survive from the perodical garbage collection, meanwhile the pool kept the ability to return the memory to runtime if in idle. - -4. Information security - -kcp-go is shipped with builtin packet encryption powered by various block encryption algorithms and works in [Cipher Feedback Mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_(CFB)), for each packet to be sent, the encryption process will start from encrypting a [nonce](https://en.wikipedia.org/wiki/Cryptographic_nonce) from the [system entropy](https://en.wikipedia.org/wiki//dev/random), so encryption to same plaintexts never leads to a same ciphertexts thereafter. - -The contents of the packets are completely anonymous with encryption, including the headers(FEC,KCP), checksums and contents. Note that, no matter which encryption method you choose on you upper layer, if you disable encryption, the transmit will be insecure somehow, since the header is ***PLAINTEXT*** to everyone it would be susceptible to header tampering, such as jamming the *sliding window size*, *round-trip time*, *FEC property* and *checksums*. ```AES-128``` is suggested for minimal encryption since modern CPUs are shipped with [AES-NI](https://en.wikipedia.org/wiki/AES_instruction_set) instructions and performs even better than `salsa20`(check the table above). - -Other possible attacks to kcp-go includes: a) [traffic analysis](https://en.wikipedia.org/wiki/Traffic_analysis), dataflow on specific websites may have pattern while interchanging data, but this type of eavesdropping has been mitigated by adapting [smux](https://github.com/xtaci/smux) to mix data streams so as to introduce noises, perfect solution to this has not appeared yet, theroretically by shuffling/mixing messages on larger scale network may mitigate this problem. b) [replay attack](https://en.wikipedia.org/wiki/Replay_attack), since the asymmetrical encryption has not been introduced into kcp-go for some reason, capturing the packets and replay them on a different machine is possible, (notice: hijacking the session and decrypting the contents is still *impossible*), so upper layers should contain a asymmetrical encryption system to guarantee the authenticity of each message(to process message exactly once), such as HTTPS/OpenSSL/LibreSSL, only by signing the requests with private keys can eliminate this type of attack. - -## Connection Termination - -Control messages like **SYN/FIN/RST** in TCP **are not defined** in KCP, you need some **keepalive/heartbeat mechanism** in the application-level. A real world example is to use some **multiplexing** protocol over session, such as [smux](https://github.com/xtaci/smux)(with embedded keepalive mechanism), see [kcptun](https://github.com/xtaci/kcptun) for example. - -## FAQ - -Q: I'm handling >5K connections on my server, the CPU utilization is so high. - -A: A standalone `agent` or `gate` server for running kcp-go is suggested, not only for CPU utilization, but also important to the **precision** of RTT measurements(timing) which indirectly affects retransmission. By increasing update `interval` with `SetNoDelay` like `conn.SetNoDelay(1, 40, 1, 1)` will dramatically reduce system load, but lower the performance. - -Q: When should I enable FEC? - -A: Forward error correction is critical to long-distance transmission, because a packet loss will lead to a huge penalty in time. And for the complicated packet routing network in modern world, round-trip time based loss check will not always be efficient, the big deviation of RTT samples in the long way usually leads to a larger RTO value in typical rtt estimator, which in other words, slows down the transmission. - -Q: Should I enable encryption? - -A: Yes, for the safety of protocol, even if the upper layer has encrypted. - -## Who is using this? - -1. https://github.com/xtaci/kcptun -- A Secure Tunnel Based On KCP over UDP. -2. https://github.com/getlantern/lantern -- Lantern delivers fast access to the open Internet. -3. https://github.com/smallnest/rpcx -- A RPC service framework based on net/rpc like alibaba Dubbo and weibo Motan. -4. https://github.com/gonet2/agent -- A gateway for games with stream multiplexing. -5. https://github.com/syncthing/syncthing -- Open Source Continuous File Synchronization. - -## Links - -1. https://github.com/xtaci/smux/ -- A Stream Multiplexing Library for golang with least memory -1. https://github.com/xtaci/libkcp -- FEC enhanced KCP session library for iOS/Android in C++ -1. https://github.com/skywind3000/kcp -- A Fast and Reliable ARQ Protocol -1. https://github.com/klauspost/reedsolomon -- Reed-Solomon Erasure Coding in Go - -## Consulting - -WeChat(付费技术咨询) - -kcptun diff --git a/vendor/github.com/xtaci/kcp-go/batchconn.go b/vendor/github.com/xtaci/kcp-go/batchconn.go deleted file mode 100644 index 6c30701..0000000 --- a/vendor/github.com/xtaci/kcp-go/batchconn.go +++ /dev/null @@ -1,12 +0,0 @@ -package kcp - -import "golang.org/x/net/ipv4" - -const ( - batchSize = 16 -) - -type batchConn interface { - WriteBatch(ms []ipv4.Message, flags int) (int, error) - ReadBatch(ms []ipv4.Message, flags int) (int, error) -} diff --git a/vendor/github.com/xtaci/kcp-go/crypt.go b/vendor/github.com/xtaci/kcp-go/crypt.go deleted file mode 100644 index 958fdea..0000000 --- a/vendor/github.com/xtaci/kcp-go/crypt.go +++ /dev/null @@ -1,785 +0,0 @@ -package kcp - -import ( - "crypto/aes" - "crypto/cipher" - "crypto/des" - "crypto/sha1" - - "github.com/templexxx/xor" - "github.com/tjfoc/gmsm/sm4" - - "golang.org/x/crypto/blowfish" - "golang.org/x/crypto/cast5" - "golang.org/x/crypto/pbkdf2" - "golang.org/x/crypto/salsa20" - "golang.org/x/crypto/tea" - "golang.org/x/crypto/twofish" - "golang.org/x/crypto/xtea" -) - -var ( - initialVector = []byte{167, 115, 79, 156, 18, 172, 27, 1, 164, 21, 242, 193, 252, 120, 230, 107} - saltxor = `sH3CIVoF#rWLtJo6` -) - -// BlockCrypt defines encryption/decryption methods for a given byte slice. -// Notes on implementing: the data to be encrypted contains a builtin -// nonce at the first 16 bytes -type BlockCrypt interface { - // Encrypt encrypts the whole block in src into dst. - // Dst and src may point at the same memory. - Encrypt(dst, src []byte) - - // Decrypt decrypts the whole block in src into dst. - // Dst and src may point at the same memory. - Decrypt(dst, src []byte) -} - -type salsa20BlockCrypt struct { - key [32]byte -} - -// NewSalsa20BlockCrypt https://en.wikipedia.org/wiki/Salsa20 -func NewSalsa20BlockCrypt(key []byte) (BlockCrypt, error) { - c := new(salsa20BlockCrypt) - copy(c.key[:], key) - return c, nil -} - -func (c *salsa20BlockCrypt) Encrypt(dst, src []byte) { - salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) - copy(dst[:8], src[:8]) -} -func (c *salsa20BlockCrypt) Decrypt(dst, src []byte) { - salsa20.XORKeyStream(dst[8:], src[8:], src[:8], &c.key) - copy(dst[:8], src[:8]) -} - -type sm4BlockCrypt struct { - encbuf [sm4.BlockSize]byte - decbuf [2 * sm4.BlockSize]byte - block cipher.Block -} - -// NewSM4BlockCrypt https://github.com/tjfoc/gmsm/tree/master/sm4 -func NewSM4BlockCrypt(key []byte) (BlockCrypt, error) { - c := new(sm4BlockCrypt) - block, err := sm4.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *sm4BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *sm4BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type twofishBlockCrypt struct { - encbuf [twofish.BlockSize]byte - decbuf [2 * twofish.BlockSize]byte - block cipher.Block -} - -// NewTwofishBlockCrypt https://en.wikipedia.org/wiki/Twofish -func NewTwofishBlockCrypt(key []byte) (BlockCrypt, error) { - c := new(twofishBlockCrypt) - block, err := twofish.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *twofishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *twofishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type tripleDESBlockCrypt struct { - encbuf [des.BlockSize]byte - decbuf [2 * des.BlockSize]byte - block cipher.Block -} - -// NewTripleDESBlockCrypt https://en.wikipedia.org/wiki/Triple_DES -func NewTripleDESBlockCrypt(key []byte) (BlockCrypt, error) { - c := new(tripleDESBlockCrypt) - block, err := des.NewTripleDESCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *tripleDESBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *tripleDESBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type cast5BlockCrypt struct { - encbuf [cast5.BlockSize]byte - decbuf [2 * cast5.BlockSize]byte - block cipher.Block -} - -// NewCast5BlockCrypt https://en.wikipedia.org/wiki/CAST-128 -func NewCast5BlockCrypt(key []byte) (BlockCrypt, error) { - c := new(cast5BlockCrypt) - block, err := cast5.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *cast5BlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *cast5BlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type blowfishBlockCrypt struct { - encbuf [blowfish.BlockSize]byte - decbuf [2 * blowfish.BlockSize]byte - block cipher.Block -} - -// NewBlowfishBlockCrypt https://en.wikipedia.org/wiki/Blowfish_(cipher) -func NewBlowfishBlockCrypt(key []byte) (BlockCrypt, error) { - c := new(blowfishBlockCrypt) - block, err := blowfish.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *blowfishBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *blowfishBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type aesBlockCrypt struct { - encbuf [aes.BlockSize]byte - decbuf [2 * aes.BlockSize]byte - block cipher.Block -} - -// NewAESBlockCrypt https://en.wikipedia.org/wiki/Advanced_Encryption_Standard -func NewAESBlockCrypt(key []byte) (BlockCrypt, error) { - c := new(aesBlockCrypt) - block, err := aes.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *aesBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *aesBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type teaBlockCrypt struct { - encbuf [tea.BlockSize]byte - decbuf [2 * tea.BlockSize]byte - block cipher.Block -} - -// NewTEABlockCrypt https://en.wikipedia.org/wiki/Tiny_Encryption_Algorithm -func NewTEABlockCrypt(key []byte) (BlockCrypt, error) { - c := new(teaBlockCrypt) - block, err := tea.NewCipherWithRounds(key, 16) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *teaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *teaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type xteaBlockCrypt struct { - encbuf [xtea.BlockSize]byte - decbuf [2 * xtea.BlockSize]byte - block cipher.Block -} - -// NewXTEABlockCrypt https://en.wikipedia.org/wiki/XTEA -func NewXTEABlockCrypt(key []byte) (BlockCrypt, error) { - c := new(xteaBlockCrypt) - block, err := xtea.NewCipher(key) - if err != nil { - return nil, err - } - c.block = block - return c, nil -} - -func (c *xteaBlockCrypt) Encrypt(dst, src []byte) { encrypt(c.block, dst, src, c.encbuf[:]) } -func (c *xteaBlockCrypt) Decrypt(dst, src []byte) { decrypt(c.block, dst, src, c.decbuf[:]) } - -type simpleXORBlockCrypt struct { - xortbl []byte -} - -// NewSimpleXORBlockCrypt simple xor with key expanding -func NewSimpleXORBlockCrypt(key []byte) (BlockCrypt, error) { - c := new(simpleXORBlockCrypt) - c.xortbl = pbkdf2.Key(key, []byte(saltxor), 32, mtuLimit, sha1.New) - return c, nil -} - -func (c *simpleXORBlockCrypt) Encrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } -func (c *simpleXORBlockCrypt) Decrypt(dst, src []byte) { xor.Bytes(dst, src, c.xortbl) } - -type noneBlockCrypt struct{} - -// NewNoneBlockCrypt does nothing but copying -func NewNoneBlockCrypt(key []byte) (BlockCrypt, error) { - return new(noneBlockCrypt), nil -} - -func (c *noneBlockCrypt) Encrypt(dst, src []byte) { copy(dst, src) } -func (c *noneBlockCrypt) Decrypt(dst, src []byte) { copy(dst, src) } - -// packet encryption with local CFB mode -func encrypt(block cipher.Block, dst, src, buf []byte) { - switch block.BlockSize() { - case 8: - encrypt8(block, dst, src, buf) - case 16: - encrypt16(block, dst, src, buf) - default: - encryptVariant(block, dst, src, buf) - } -} - -// optimized encryption for the ciphers which works in 8-bytes -func encrypt8(block cipher.Block, dst, src, buf []byte) { - tbl := buf[:8] - block.Encrypt(tbl, initialVector) - n := len(src) / 8 - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - s := src[base:][0:64] - d := dst[base:][0:64] - // 1 - xor.BytesSrc1(d[0:8], s[0:8], tbl) - block.Encrypt(tbl, d[0:8]) - // 2 - xor.BytesSrc1(d[8:16], s[8:16], tbl) - block.Encrypt(tbl, d[8:16]) - // 3 - xor.BytesSrc1(d[16:24], s[16:24], tbl) - block.Encrypt(tbl, d[16:24]) - // 4 - xor.BytesSrc1(d[24:32], s[24:32], tbl) - block.Encrypt(tbl, d[24:32]) - // 5 - xor.BytesSrc1(d[32:40], s[32:40], tbl) - block.Encrypt(tbl, d[32:40]) - // 6 - xor.BytesSrc1(d[40:48], s[40:48], tbl) - block.Encrypt(tbl, d[40:48]) - // 7 - xor.BytesSrc1(d[48:56], s[48:56], tbl) - block.Encrypt(tbl, d[48:56]) - // 8 - xor.BytesSrc1(d[56:64], s[56:64], tbl) - block.Encrypt(tbl, d[56:64]) - base += 64 - } - - switch left { - case 7: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 6: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 5: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 4: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 3: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 2: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 1: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 8 - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} - -// optimized encryption for the ciphers which works in 16-bytes -func encrypt16(block cipher.Block, dst, src, buf []byte) { - tbl := buf[:16] - block.Encrypt(tbl, initialVector) - n := len(src) / 16 - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - s := src[base:][0:128] - d := dst[base:][0:128] - // 1 - xor.BytesSrc1(d[0:16], s[0:16], tbl) - block.Encrypt(tbl, d[0:16]) - // 2 - xor.BytesSrc1(d[16:32], s[16:32], tbl) - block.Encrypt(tbl, d[16:32]) - // 3 - xor.BytesSrc1(d[32:48], s[32:48], tbl) - block.Encrypt(tbl, d[32:48]) - // 4 - xor.BytesSrc1(d[48:64], s[48:64], tbl) - block.Encrypt(tbl, d[48:64]) - // 5 - xor.BytesSrc1(d[64:80], s[64:80], tbl) - block.Encrypt(tbl, d[64:80]) - // 6 - xor.BytesSrc1(d[80:96], s[80:96], tbl) - block.Encrypt(tbl, d[80:96]) - // 7 - xor.BytesSrc1(d[96:112], s[96:112], tbl) - block.Encrypt(tbl, d[96:112]) - // 8 - xor.BytesSrc1(d[112:128], s[112:128], tbl) - block.Encrypt(tbl, d[112:128]) - base += 128 - } - - switch left { - case 7: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 6: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 5: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 4: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 3: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 2: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 1: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += 16 - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} - -func encryptVariant(block cipher.Block, dst, src, buf []byte) { - blocksize := block.BlockSize() - tbl := buf[:blocksize] - block.Encrypt(tbl, initialVector) - n := len(src) / blocksize - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - // 1 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 2 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 3 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 4 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 5 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 6 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 7 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - - // 8 - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - } - - switch left { - case 7: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 6: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 5: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 4: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 3: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 2: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 1: - xor.BytesSrc1(dst[base:], src[base:], tbl) - block.Encrypt(tbl, dst[base:]) - base += blocksize - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} - -// decryption -func decrypt(block cipher.Block, dst, src, buf []byte) { - switch block.BlockSize() { - case 8: - decrypt8(block, dst, src, buf) - case 16: - decrypt16(block, dst, src, buf) - default: - decryptVariant(block, dst, src, buf) - } -} - -func decrypt8(block cipher.Block, dst, src, buf []byte) { - tbl := buf[0:8] - next := buf[8:16] - block.Encrypt(tbl, initialVector) - n := len(src) / 8 - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - s := src[base:][0:64] - d := dst[base:][0:64] - // 1 - block.Encrypt(next, s[0:8]) - xor.BytesSrc1(d[0:8], s[0:8], tbl) - // 2 - block.Encrypt(tbl, s[8:16]) - xor.BytesSrc1(d[8:16], s[8:16], next) - // 3 - block.Encrypt(next, s[16:24]) - xor.BytesSrc1(d[16:24], s[16:24], tbl) - // 4 - block.Encrypt(tbl, s[24:32]) - xor.BytesSrc1(d[24:32], s[24:32], next) - // 5 - block.Encrypt(next, s[32:40]) - xor.BytesSrc1(d[32:40], s[32:40], tbl) - // 6 - block.Encrypt(tbl, s[40:48]) - xor.BytesSrc1(d[40:48], s[40:48], next) - // 7 - block.Encrypt(next, s[48:56]) - xor.BytesSrc1(d[48:56], s[48:56], tbl) - // 8 - block.Encrypt(tbl, s[56:64]) - xor.BytesSrc1(d[56:64], s[56:64], next) - base += 64 - } - - switch left { - case 7: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 6: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 5: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 4: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 3: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 2: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 1: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 8 - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} - -func decrypt16(block cipher.Block, dst, src, buf []byte) { - tbl := buf[0:16] - next := buf[16:32] - block.Encrypt(tbl, initialVector) - n := len(src) / 16 - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - s := src[base:][0:128] - d := dst[base:][0:128] - // 1 - block.Encrypt(next, s[0:16]) - xor.BytesSrc1(d[0:16], s[0:16], tbl) - // 2 - block.Encrypt(tbl, s[16:32]) - xor.BytesSrc1(d[16:32], s[16:32], next) - // 3 - block.Encrypt(next, s[32:48]) - xor.BytesSrc1(d[32:48], s[32:48], tbl) - // 4 - block.Encrypt(tbl, s[48:64]) - xor.BytesSrc1(d[48:64], s[48:64], next) - // 5 - block.Encrypt(next, s[64:80]) - xor.BytesSrc1(d[64:80], s[64:80], tbl) - // 6 - block.Encrypt(tbl, s[80:96]) - xor.BytesSrc1(d[80:96], s[80:96], next) - // 7 - block.Encrypt(next, s[96:112]) - xor.BytesSrc1(d[96:112], s[96:112], tbl) - // 8 - block.Encrypt(tbl, s[112:128]) - xor.BytesSrc1(d[112:128], s[112:128], next) - base += 128 - } - - switch left { - case 7: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 6: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 5: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 4: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 3: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 2: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 1: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += 16 - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} - -func decryptVariant(block cipher.Block, dst, src, buf []byte) { - blocksize := block.BlockSize() - tbl := buf[:blocksize] - next := buf[blocksize:] - block.Encrypt(tbl, initialVector) - n := len(src) / blocksize - base := 0 - repeat := n / 8 - left := n % 8 - for i := 0; i < repeat; i++ { - // 1 - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - base += blocksize - - // 2 - block.Encrypt(tbl, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], next) - base += blocksize - - // 3 - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - base += blocksize - - // 4 - block.Encrypt(tbl, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], next) - base += blocksize - - // 5 - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - base += blocksize - - // 6 - block.Encrypt(tbl, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], next) - base += blocksize - - // 7 - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - base += blocksize - - // 8 - block.Encrypt(tbl, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], next) - base += blocksize - } - - switch left { - case 7: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 6: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 5: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 4: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 3: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 2: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 1: - block.Encrypt(next, src[base:]) - xor.BytesSrc1(dst[base:], src[base:], tbl) - tbl, next = next, tbl - base += blocksize - fallthrough - case 0: - xor.BytesSrc0(dst[base:], src[base:], tbl) - } -} diff --git a/vendor/github.com/xtaci/kcp-go/donate.png b/vendor/github.com/xtaci/kcp-go/donate.png deleted file mode 100644 index 0f353d96e902936aed15a7312a6e8b4b332fe960..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4420 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 diff --git a/vendor/github.com/xtaci/kcp-go/entropy.go b/vendor/github.com/xtaci/kcp-go/entropy.go deleted file mode 100644 index 156c1cd..0000000 --- a/vendor/github.com/xtaci/kcp-go/entropy.go +++ /dev/null @@ -1,52 +0,0 @@ -package kcp - -import ( - "crypto/aes" - "crypto/cipher" - "crypto/md5" - "crypto/rand" - "io" -) - -// Entropy defines a entropy source -type Entropy interface { - Init() - Fill(nonce []byte) -} - -// nonceMD5 nonce generator for packet header -type nonceMD5 struct { - seed [md5.Size]byte -} - -func (n *nonceMD5) Init() { /*nothing required*/ } - -func (n *nonceMD5) Fill(nonce []byte) { - if n.seed[0] == 0 { // entropy update - io.ReadFull(rand.Reader, n.seed[:]) - } - n.seed = md5.Sum(n.seed[:]) - copy(nonce, n.seed[:]) -} - -// nonceAES128 nonce generator for packet headers -type nonceAES128 struct { - seed [aes.BlockSize]byte - block cipher.Block -} - -func (n *nonceAES128) Init() { - var key [16]byte //aes-128 - io.ReadFull(rand.Reader, key[:]) - io.ReadFull(rand.Reader, n.seed[:]) - block, _ := aes.NewCipher(key[:]) - n.block = block -} - -func (n *nonceAES128) Fill(nonce []byte) { - if n.seed[0] == 0 { // entropy update - io.ReadFull(rand.Reader, n.seed[:]) - } - n.block.Encrypt(n.seed[:], n.seed[:]) - copy(nonce, n.seed[:]) -} diff --git a/vendor/github.com/xtaci/kcp-go/fec.go b/vendor/github.com/xtaci/kcp-go/fec.go deleted file mode 100644 index 97cd40b..0000000 --- a/vendor/github.com/xtaci/kcp-go/fec.go +++ /dev/null @@ -1,337 +0,0 @@ -package kcp - -import ( - "encoding/binary" - "sync/atomic" - - "github.com/klauspost/reedsolomon" -) - -const ( - fecHeaderSize = 6 - fecHeaderSizePlus2 = fecHeaderSize + 2 // plus 2B data size - typeData = 0xf1 - typeParity = 0xf2 - fecExpire = 60000 -) - -// fecPacket is a decoded FEC packet -type fecPacket []byte - -func (bts fecPacket) seqid() uint32 { return binary.LittleEndian.Uint32(bts) } -func (bts fecPacket) flag() uint16 { return binary.LittleEndian.Uint16(bts[4:]) } -func (bts fecPacket) data() []byte { return bts[6:] } - -// fecElement has auxcilliary time field -type fecElement struct { - fecPacket - ts uint32 -} - -// fecDecoder for decoding incoming packets -type fecDecoder struct { - rxlimit int // queue size limit - dataShards int - parityShards int - shardSize int - rx []fecElement // ordered receive queue - - // caches - decodeCache [][]byte - flagCache []bool - - // zeros - zeros []byte - - // RS decoder - codec reedsolomon.Encoder -} - -func newFECDecoder(rxlimit, dataShards, parityShards int) *fecDecoder { - if dataShards <= 0 || parityShards <= 0 { - return nil - } - if rxlimit < dataShards+parityShards { - return nil - } - - dec := new(fecDecoder) - dec.rxlimit = rxlimit - dec.dataShards = dataShards - dec.parityShards = parityShards - dec.shardSize = dataShards + parityShards - codec, err := reedsolomon.New(dataShards, parityShards) - if err != nil { - return nil - } - dec.codec = codec - dec.decodeCache = make([][]byte, dec.shardSize) - dec.flagCache = make([]bool, dec.shardSize) - dec.zeros = make([]byte, mtuLimit) - return dec -} - -// decode a fec packet -func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) { - // insertion - n := len(dec.rx) - 1 - insertIdx := 0 - for i := n; i >= 0; i-- { - if in.seqid() == dec.rx[i].seqid() { // de-duplicate - return nil - } else if _itimediff(in.seqid(), dec.rx[i].seqid()) > 0 { // insertion - insertIdx = i + 1 - break - } - } - - // make a copy - pkt := fecPacket(xmitBuf.Get().([]byte)[:len(in)]) - copy(pkt, in) - elem := fecElement{pkt, currentMs()} - - // insert into ordered rx queue - if insertIdx == n+1 { - dec.rx = append(dec.rx, elem) - } else { - dec.rx = append(dec.rx, fecElement{}) - copy(dec.rx[insertIdx+1:], dec.rx[insertIdx:]) // shift right - dec.rx[insertIdx] = elem - } - - // shard range for current packet - shardBegin := pkt.seqid() - pkt.seqid()%uint32(dec.shardSize) - shardEnd := shardBegin + uint32(dec.shardSize) - 1 - - // max search range in ordered queue for current shard - searchBegin := insertIdx - int(pkt.seqid()%uint32(dec.shardSize)) - if searchBegin < 0 { - searchBegin = 0 - } - searchEnd := searchBegin + dec.shardSize - 1 - if searchEnd >= len(dec.rx) { - searchEnd = len(dec.rx) - 1 - } - - // re-construct datashards - if searchEnd-searchBegin+1 >= dec.dataShards { - var numshard, numDataShard, first, maxlen int - - // zero caches - shards := dec.decodeCache - shardsflag := dec.flagCache - for k := range dec.decodeCache { - shards[k] = nil - shardsflag[k] = false - } - - // shard assembly - for i := searchBegin; i <= searchEnd; i++ { - seqid := dec.rx[i].seqid() - if _itimediff(seqid, shardEnd) > 0 { - break - } else if _itimediff(seqid, shardBegin) >= 0 { - shards[seqid%uint32(dec.shardSize)] = dec.rx[i].data() - shardsflag[seqid%uint32(dec.shardSize)] = true - numshard++ - if dec.rx[i].flag() == typeData { - numDataShard++ - } - if numshard == 1 { - first = i - } - if len(dec.rx[i].data()) > maxlen { - maxlen = len(dec.rx[i].data()) - } - } - } - - if numDataShard == dec.dataShards { - // case 1: no loss on data shards - dec.rx = dec.freeRange(first, numshard, dec.rx) - } else if numshard >= dec.dataShards { - // case 2: loss on data shards, but it's recoverable from parity shards - for k := range shards { - if shards[k] != nil { - dlen := len(shards[k]) - shards[k] = shards[k][:maxlen] - copy(shards[k][dlen:], dec.zeros) - } else if k < dec.dataShards { - shards[k] = xmitBuf.Get().([]byte)[:0] - } - } - if err := dec.codec.ReconstructData(shards); err == nil { - for k := range shards[:dec.dataShards] { - if !shardsflag[k] { - // recovered data should be recycled - recovered = append(recovered, shards[k]) - } - } - } - dec.rx = dec.freeRange(first, numshard, dec.rx) - } - } - - // keep rxlimit - if len(dec.rx) > dec.rxlimit { - if dec.rx[0].flag() == typeData { // track the unrecoverable data - atomic.AddUint64(&DefaultSnmp.FECShortShards, 1) - } - dec.rx = dec.freeRange(0, 1, dec.rx) - } - - // timeout policy - current := currentMs() - numExpired := 0 - for k := range dec.rx { - if _itimediff(current, dec.rx[k].ts) > fecExpire { - numExpired++ - continue - } - break - } - if numExpired > 0 { - dec.rx = dec.freeRange(0, numExpired, dec.rx) - } - return -} - -// free a range of fecPacket -func (dec *fecDecoder) freeRange(first, n int, q []fecElement) []fecElement { - for i := first; i < first+n; i++ { // recycle buffer - xmitBuf.Put([]byte(q[i].fecPacket)) - } - - if first == 0 && n < cap(q)/2 { - return q[n:] - } - copy(q[first:], q[first+n:]) - return q[:len(q)-n] -} - -// release all segments back to xmitBuf -func (dec *fecDecoder) release() { - if n := len(dec.rx); n > 0 { - dec.rx = dec.freeRange(0, n, dec.rx) - } -} - -type ( - // fecEncoder for encoding outgoing packets - fecEncoder struct { - dataShards int - parityShards int - shardSize int - paws uint32 // Protect Against Wrapped Sequence numbers - next uint32 // next seqid - - shardCount int // count the number of datashards collected - maxSize int // track maximum data length in datashard - - headerOffset int // FEC header offset - payloadOffset int // FEC payload offset - - // caches - shardCache [][]byte - encodeCache [][]byte - - // zeros - zeros []byte - - // RS encoder - codec reedsolomon.Encoder - } -) - -func newFECEncoder(dataShards, parityShards, offset int) *fecEncoder { - if dataShards <= 0 || parityShards <= 0 { - return nil - } - enc := new(fecEncoder) - enc.dataShards = dataShards - enc.parityShards = parityShards - enc.shardSize = dataShards + parityShards - enc.paws = 0xffffffff / uint32(enc.shardSize) * uint32(enc.shardSize) - enc.headerOffset = offset - enc.payloadOffset = enc.headerOffset + fecHeaderSize - - codec, err := reedsolomon.New(dataShards, parityShards) - if err != nil { - return nil - } - enc.codec = codec - - // caches - enc.encodeCache = make([][]byte, enc.shardSize) - enc.shardCache = make([][]byte, enc.shardSize) - for k := range enc.shardCache { - enc.shardCache[k] = make([]byte, mtuLimit) - } - enc.zeros = make([]byte, mtuLimit) - return enc -} - -// encodes the packet, outputs parity shards if we have collected quorum datashards -// notice: the contents of 'ps' will be re-written in successive calling -func (enc *fecEncoder) encode(b []byte) (ps [][]byte) { - // The header format: - // | FEC SEQID(4B) | FEC TYPE(2B) | SIZE (2B) | PAYLOAD(SIZE-2) | - // |<-headerOffset |<-payloadOffset - enc.markData(b[enc.headerOffset:]) - binary.LittleEndian.PutUint16(b[enc.payloadOffset:], uint16(len(b[enc.payloadOffset:]))) - - // copy data from payloadOffset to fec shard cache - sz := len(b) - enc.shardCache[enc.shardCount] = enc.shardCache[enc.shardCount][:sz] - copy(enc.shardCache[enc.shardCount][enc.payloadOffset:], b[enc.payloadOffset:]) - enc.shardCount++ - - // track max datashard length - if sz > enc.maxSize { - enc.maxSize = sz - } - - // Generation of Reed-Solomon Erasure Code - if enc.shardCount == enc.dataShards { - // fill '0' into the tail of each datashard - for i := 0; i < enc.dataShards; i++ { - shard := enc.shardCache[i] - slen := len(shard) - copy(shard[slen:enc.maxSize], enc.zeros) - } - - // construct equal-sized slice with stripped header - cache := enc.encodeCache - for k := range cache { - cache[k] = enc.shardCache[k][enc.payloadOffset:enc.maxSize] - } - - // encoding - if err := enc.codec.Encode(cache); err == nil { - ps = enc.shardCache[enc.dataShards:] - for k := range ps { - enc.markParity(ps[k][enc.headerOffset:]) - ps[k] = ps[k][:enc.maxSize] - } - } - - // counters resetting - enc.shardCount = 0 - enc.maxSize = 0 - } - - return -} - -func (enc *fecEncoder) markData(data []byte) { - binary.LittleEndian.PutUint32(data, enc.next) - binary.LittleEndian.PutUint16(data[4:], typeData) - enc.next++ -} - -func (enc *fecEncoder) markParity(data []byte) { - binary.LittleEndian.PutUint32(data, enc.next) - binary.LittleEndian.PutUint16(data[4:], typeParity) - // sequence wrap will only happen at parity shard - enc.next = (enc.next + 1) % enc.paws -} diff --git a/vendor/github.com/xtaci/kcp-go/flame.png b/vendor/github.com/xtaci/kcp-go/flame.png deleted file mode 100644 index 672f649ef9c72635be58e330cc901a8937db0fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57142 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 diff --git a/vendor/github.com/xtaci/kcp-go/kcp-go.png b/vendor/github.com/xtaci/kcp-go/kcp-go.png deleted file mode 100644 index 151b7c4f7c49c1a8382552322787a3e7f04ac3c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9153 zcmdUzMOPe5(?HR|H88ll1b5fq65QP-xZB|F?m>dP1P=oQx4~UQa0~9dJiG5Ne2ebe zrx#VVsB^0OMyo2zpdk|?LqS2I$;nEoeQ@MsnIQr`cHFHzAQTiTj;*Ams+^=GxvHy^ zm92v%6qIaqx;BE2`Y5nKUkwrIGbS`ckyokqks)RhI*$Z4c^VXw_+SDHW4q^9XrfM- z;%z-BT_#UUtcE27N=Bv=GiVe>CpEF9rC(mZoX%hP-KMhNCxpE?U_r%bOuW1(nlR+K zg{)D?SC+KYwCr*lAef2xsmCQ}LpkJ2NH^6HjZ zS=_Ki~j=B@q`W;!B2A}>R%92w1dBq zzek*7$m!&PWS_UK!y`v`YZMP6;&w<3OvP@plo(mr;LLPv4`=#svb-5oZv3HHS%}Tx zqXfgUXNowshQp5ncg%TUzNTe0Q~bVAgAe|yMx-dL&zFH`HEAWcAJPi)IVc~7QwV5; zt7D^Zh=YwhAtV0_a%q3jA>c*T%5+MbXyfB$QnN}t+qQz2mRlkaq-KsHy*?X@gr_w` zIF$p~%a=OT?X16y;4|!}5%GGzuPT87pe;KEZE?YDdGjqmR}U=`W5 zU1uJsIM}Eg4J{R9#>Spx!!s3%rfc0t3)LM|f)Xx_XGOQ)Pd2`zFVxQ|LAQgn11!pQ z#`qmvok51dxznmSw4d*dt2y1joKxk27XPT&AC{Bas`T0b7958SH7Lbxju)iYyiq*|sq zW%h&@4CaQW^(3?(T5U)*6EZ?lp-E@s(N7E0r;QsRYHqA-K5Bb>8CYjtdD*?i-gi6L zj}-;<=B@j{80qXww$YgHJ)rVVO=98T)$+Xs0dNnAMTot~Xy0K`K@1ba=zP##+h{Og z98734G0H4>Z6Oj1$tgE5Oal&1s9FQM1K_U--7>5lSlk((EBMnkb30;PFuF5}5XfT& z!6-zW4fP8q90dheSb`0CXB3uM@G=EU6dg7wjN+>-WlCHrg}+o7vsebjj}bsA@k;zW zWiRD$a`Omo>8Fm!8}io?qPe5=viAeyvoFzU}lv?nzdxuQ8^2djwpjKn<^sG=aiy!i6ac71fw0J(jzW=`=hn# zYfMX&UWRol-@=L&*^9hY&FBfzex%i=`HsPlNsj6J`1l0)Xg}Is2|dzW>HozTHO{z5 zewWoO%29u<;H;oLCbZ+eMZG1x{T%;=v&?5M#pbbvyG3u6f7N^y0lqV&RU!&T#<~?6hhp3bc<_z3&_K7D+a`3niXseXn3r7lcIR0J!e%7nV z=+H`A^sg1xbJUYu6<8Ht?O0uFnYP6^WOMKK;BeMilF7MArips}??7dsQ0y5nKLbudTj7^w`d<>Js`Nz7V9k8ZMD78BiO!ME(WeFK z0XezUMU_sjqw4q)rHo0VT!f#DKh+ rPWxmb2Fy&lpd?t7ZrM6=*p4DcCmHBREt%LHs&& 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 diff --git a/vendor/github.com/xtaci/kcp-go/kcp.go b/vendor/github.com/xtaci/kcp-go/kcp.go deleted file mode 100644 index c42f7f3..0000000 --- a/vendor/github.com/xtaci/kcp-go/kcp.go +++ /dev/null @@ -1,1069 +0,0 @@ -package kcp - -import ( - "encoding/binary" - "sync/atomic" - "time" -) - -const ( - IKCP_RTO_NDL = 30 // no delay min rto - IKCP_RTO_MIN = 100 // normal min rto - IKCP_RTO_DEF = 200 - IKCP_RTO_MAX = 60000 - IKCP_CMD_PUSH = 81 // cmd: push data - IKCP_CMD_ACK = 82 // cmd: ack - IKCP_CMD_WASK = 83 // cmd: window probe (ask) - IKCP_CMD_WINS = 84 // cmd: window size (tell) - IKCP_ASK_SEND = 1 // need to send IKCP_CMD_WASK - IKCP_ASK_TELL = 2 // need to send IKCP_CMD_WINS - IKCP_WND_SND = 32 - IKCP_WND_RCV = 32 - IKCP_MTU_DEF = 1400 - IKCP_ACK_FAST = 3 - IKCP_INTERVAL = 100 - IKCP_OVERHEAD = 24 - IKCP_DEADLINK = 20 - IKCP_THRESH_INIT = 2 - IKCP_THRESH_MIN = 2 - IKCP_PROBE_INIT = 7000 // 7 secs to probe window size - IKCP_PROBE_LIMIT = 120000 // up to 120 secs to probe window -) - -// monotonic reference time point -var refTime time.Time = time.Now() - -// currentMs returns current elasped monotonic milliseconds since program startup -func currentMs() uint32 { return uint32(time.Now().Sub(refTime) / time.Millisecond) } - -// output_callback is a prototype which ought capture conn and call conn.Write -type output_callback func(buf []byte, size int) - -/* encode 8 bits unsigned int */ -func ikcp_encode8u(p []byte, c byte) []byte { - p[0] = c - return p[1:] -} - -/* decode 8 bits unsigned int */ -func ikcp_decode8u(p []byte, c *byte) []byte { - *c = p[0] - return p[1:] -} - -/* encode 16 bits unsigned int (lsb) */ -func ikcp_encode16u(p []byte, w uint16) []byte { - binary.LittleEndian.PutUint16(p, w) - return p[2:] -} - -/* decode 16 bits unsigned int (lsb) */ -func ikcp_decode16u(p []byte, w *uint16) []byte { - *w = binary.LittleEndian.Uint16(p) - return p[2:] -} - -/* encode 32 bits unsigned int (lsb) */ -func ikcp_encode32u(p []byte, l uint32) []byte { - binary.LittleEndian.PutUint32(p, l) - return p[4:] -} - -/* decode 32 bits unsigned int (lsb) */ -func ikcp_decode32u(p []byte, l *uint32) []byte { - *l = binary.LittleEndian.Uint32(p) - return p[4:] -} - -func _imin_(a, b uint32) uint32 { - if a <= b { - return a - } - return b -} - -func _imax_(a, b uint32) uint32 { - if a >= b { - return a - } - return b -} - -func _ibound_(lower, middle, upper uint32) uint32 { - return _imin_(_imax_(lower, middle), upper) -} - -func _itimediff(later, earlier uint32) int32 { - return (int32)(later - earlier) -} - -// segment defines a KCP segment -type segment struct { - conv uint32 - cmd uint8 - frg uint8 - wnd uint16 - ts uint32 - sn uint32 - una uint32 - rto uint32 - xmit uint32 - resendts uint32 - fastack uint32 - acked uint32 // mark if the seg has acked - data []byte -} - -// encode a segment into buffer -func (seg *segment) encode(ptr []byte) []byte { - ptr = ikcp_encode32u(ptr, seg.conv) - ptr = ikcp_encode8u(ptr, seg.cmd) - ptr = ikcp_encode8u(ptr, seg.frg) - ptr = ikcp_encode16u(ptr, seg.wnd) - ptr = ikcp_encode32u(ptr, seg.ts) - ptr = ikcp_encode32u(ptr, seg.sn) - ptr = ikcp_encode32u(ptr, seg.una) - ptr = ikcp_encode32u(ptr, uint32(len(seg.data))) - atomic.AddUint64(&DefaultSnmp.OutSegs, 1) - return ptr -} - -// KCP defines a single KCP connection -type KCP struct { - conv, mtu, mss, state uint32 - snd_una, snd_nxt, rcv_nxt uint32 - ssthresh uint32 - rx_rttvar, rx_srtt int32 - rx_rto, rx_minrto uint32 - snd_wnd, rcv_wnd, rmt_wnd, cwnd, probe uint32 - interval, ts_flush uint32 - nodelay, updated uint32 - ts_probe, probe_wait uint32 - dead_link, incr uint32 - - fastresend int32 - nocwnd, stream int32 - - snd_queue []segment - rcv_queue []segment - snd_buf []segment - rcv_buf []segment - - acklist []ackItem - - buffer []byte - reserved int - output output_callback -} - -type ackItem struct { - sn uint32 - ts uint32 -} - -// NewKCP create a new kcp state machine -// -// 'conv' must be equal in the connection peers, or else data will be silently rejected. -// -// 'output' function will be called whenever these is data to be sent on wire. -func NewKCP(conv uint32, output output_callback) *KCP { - kcp := new(KCP) - kcp.conv = conv - kcp.snd_wnd = IKCP_WND_SND - kcp.rcv_wnd = IKCP_WND_RCV - kcp.rmt_wnd = IKCP_WND_RCV - kcp.mtu = IKCP_MTU_DEF - kcp.mss = kcp.mtu - IKCP_OVERHEAD - kcp.buffer = make([]byte, kcp.mtu) - kcp.rx_rto = IKCP_RTO_DEF - kcp.rx_minrto = IKCP_RTO_MIN - kcp.interval = IKCP_INTERVAL - kcp.ts_flush = IKCP_INTERVAL - kcp.ssthresh = IKCP_THRESH_INIT - kcp.dead_link = IKCP_DEADLINK - kcp.output = output - return kcp -} - -// newSegment creates a KCP segment -func (kcp *KCP) newSegment(size int) (seg segment) { - seg.data = xmitBuf.Get().([]byte)[:size] - return -} - -// delSegment recycles a KCP segment -func (kcp *KCP) delSegment(seg *segment) { - if seg.data != nil { - xmitBuf.Put(seg.data) - seg.data = nil - } -} - -// ReserveBytes keeps n bytes untouched from the beginning of the buffer, -// the output_callback function should be aware of this. -// -// Return false if n >= mss -func (kcp *KCP) ReserveBytes(n int) bool { - if n >= int(kcp.mtu-IKCP_OVERHEAD) || n < 0 { - return false - } - kcp.reserved = n - kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(n) - return true -} - -// PeekSize checks the size of next message in the recv queue -func (kcp *KCP) PeekSize() (length int) { - if len(kcp.rcv_queue) == 0 { - return -1 - } - - seg := &kcp.rcv_queue[0] - if seg.frg == 0 { - return len(seg.data) - } - - if len(kcp.rcv_queue) < int(seg.frg+1) { - return -1 - } - - for k := range kcp.rcv_queue { - seg := &kcp.rcv_queue[k] - length += len(seg.data) - if seg.frg == 0 { - break - } - } - return -} - -// Receive data from kcp state machine -// -// Return number of bytes read. -// -// Return -1 when there is no readable data. -// -// Return -2 if len(buffer) is smaller than kcp.PeekSize(). -func (kcp *KCP) Recv(buffer []byte) (n int) { - peeksize := kcp.PeekSize() - if peeksize < 0 { - return -1 - } - - if peeksize > len(buffer) { - return -2 - } - - var fast_recover bool - if len(kcp.rcv_queue) >= int(kcp.rcv_wnd) { - fast_recover = true - } - - // merge fragment - count := 0 - for k := range kcp.rcv_queue { - seg := &kcp.rcv_queue[k] - copy(buffer, seg.data) - buffer = buffer[len(seg.data):] - n += len(seg.data) - count++ - kcp.delSegment(seg) - if seg.frg == 0 { - break - } - } - if count > 0 { - kcp.rcv_queue = kcp.remove_front(kcp.rcv_queue, count) - } - - // move available data from rcv_buf -> rcv_queue - count = 0 - for k := range kcp.rcv_buf { - seg := &kcp.rcv_buf[k] - if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { - kcp.rcv_nxt++ - count++ - } else { - break - } - } - - if count > 0 { - kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) - kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) - } - - // fast recover - if len(kcp.rcv_queue) < int(kcp.rcv_wnd) && fast_recover { - // ready to send back IKCP_CMD_WINS in ikcp_flush - // tell remote my window size - kcp.probe |= IKCP_ASK_TELL - } - return -} - -// Send is user/upper level send, returns below zero for error -func (kcp *KCP) Send(buffer []byte) int { - var count int - if len(buffer) == 0 { - return -1 - } - - // append to previous segment in streaming mode (if possible) - if kcp.stream != 0 { - n := len(kcp.snd_queue) - if n > 0 { - seg := &kcp.snd_queue[n-1] - if len(seg.data) < int(kcp.mss) { - capacity := int(kcp.mss) - len(seg.data) - extend := capacity - if len(buffer) < capacity { - extend = len(buffer) - } - - // grow slice, the underlying cap is guaranteed to - // be larger than kcp.mss - oldlen := len(seg.data) - seg.data = seg.data[:oldlen+extend] - copy(seg.data[oldlen:], buffer) - buffer = buffer[extend:] - } - } - - if len(buffer) == 0 { - return 0 - } - } - - if len(buffer) <= int(kcp.mss) { - count = 1 - } else { - count = (len(buffer) + int(kcp.mss) - 1) / int(kcp.mss) - } - - if count > 255 { - return -2 - } - - if count == 0 { - count = 1 - } - - for i := 0; i < count; i++ { - var size int - if len(buffer) > int(kcp.mss) { - size = int(kcp.mss) - } else { - size = len(buffer) - } - seg := kcp.newSegment(size) - copy(seg.data, buffer[:size]) - if kcp.stream == 0 { // message mode - seg.frg = uint8(count - i - 1) - } else { // stream mode - seg.frg = 0 - } - kcp.snd_queue = append(kcp.snd_queue, seg) - buffer = buffer[size:] - } - return 0 -} - -func (kcp *KCP) update_ack(rtt int32) { - // https://tools.ietf.org/html/rfc6298 - var rto uint32 - if kcp.rx_srtt == 0 { - kcp.rx_srtt = rtt - kcp.rx_rttvar = rtt >> 1 - } else { - delta := rtt - kcp.rx_srtt - kcp.rx_srtt += delta >> 3 - if delta < 0 { - delta = -delta - } - if rtt < kcp.rx_srtt-kcp.rx_rttvar { - // if the new RTT sample is below the bottom of the range of - // what an RTT measurement is expected to be. - // give an 8x reduced weight versus its normal weighting - kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 5 - } else { - kcp.rx_rttvar += (delta - kcp.rx_rttvar) >> 2 - } - } - rto = uint32(kcp.rx_srtt) + _imax_(kcp.interval, uint32(kcp.rx_rttvar)<<2) - kcp.rx_rto = _ibound_(kcp.rx_minrto, rto, IKCP_RTO_MAX) -} - -func (kcp *KCP) shrink_buf() { - if len(kcp.snd_buf) > 0 { - seg := &kcp.snd_buf[0] - kcp.snd_una = seg.sn - } else { - kcp.snd_una = kcp.snd_nxt - } -} - -func (kcp *KCP) parse_ack(sn uint32) { - if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { - return - } - - for k := range kcp.snd_buf { - seg := &kcp.snd_buf[k] - if sn == seg.sn { - // mark and free space, but leave the segment here, - // and wait until `una` to delete this, then we don't - // have to shift the segments behind forward, - // which is an expensive operation for large window - seg.acked = 1 - kcp.delSegment(seg) - break - } - if _itimediff(sn, seg.sn) < 0 { - break - } - } -} - -func (kcp *KCP) parse_fastack(sn, ts uint32) { - if _itimediff(sn, kcp.snd_una) < 0 || _itimediff(sn, kcp.snd_nxt) >= 0 { - return - } - - for k := range kcp.snd_buf { - seg := &kcp.snd_buf[k] - if _itimediff(sn, seg.sn) < 0 { - break - } else if sn != seg.sn && _itimediff(seg.ts, ts) <= 0 { - seg.fastack++ - } - } -} - -func (kcp *KCP) parse_una(una uint32) { - count := 0 - for k := range kcp.snd_buf { - seg := &kcp.snd_buf[k] - if _itimediff(una, seg.sn) > 0 { - kcp.delSegment(seg) - count++ - } else { - break - } - } - if count > 0 { - kcp.snd_buf = kcp.remove_front(kcp.snd_buf, count) - } -} - -// ack append -func (kcp *KCP) ack_push(sn, ts uint32) { - kcp.acklist = append(kcp.acklist, ackItem{sn, ts}) -} - -// returns true if data has repeated -func (kcp *KCP) parse_data(newseg segment) bool { - sn := newseg.sn - if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) >= 0 || - _itimediff(sn, kcp.rcv_nxt) < 0 { - return true - } - - n := len(kcp.rcv_buf) - 1 - insert_idx := 0 - repeat := false - for i := n; i >= 0; i-- { - seg := &kcp.rcv_buf[i] - if seg.sn == sn { - repeat = true - break - } - if _itimediff(sn, seg.sn) > 0 { - insert_idx = i + 1 - break - } - } - - if !repeat { - // replicate the content if it's new - dataCopy := xmitBuf.Get().([]byte)[:len(newseg.data)] - copy(dataCopy, newseg.data) - newseg.data = dataCopy - - if insert_idx == n+1 { - kcp.rcv_buf = append(kcp.rcv_buf, newseg) - } else { - kcp.rcv_buf = append(kcp.rcv_buf, segment{}) - copy(kcp.rcv_buf[insert_idx+1:], kcp.rcv_buf[insert_idx:]) - kcp.rcv_buf[insert_idx] = newseg - } - } - - // move available data from rcv_buf -> rcv_queue - count := 0 - for k := range kcp.rcv_buf { - seg := &kcp.rcv_buf[k] - if seg.sn == kcp.rcv_nxt && len(kcp.rcv_queue)+count < int(kcp.rcv_wnd) { - kcp.rcv_nxt++ - count++ - } else { - break - } - } - if count > 0 { - kcp.rcv_queue = append(kcp.rcv_queue, kcp.rcv_buf[:count]...) - kcp.rcv_buf = kcp.remove_front(kcp.rcv_buf, count) - } - - return repeat -} - -// Input a packet into kcp state machine. -// -// 'regular' indicates it's a real data packet from remote, and it means it's not generated from ReedSolomon -// codecs. -// -// 'ackNoDelay' will trigger immediate ACK, but surely it will not be efficient in bandwidth -func (kcp *KCP) Input(data []byte, regular, ackNoDelay bool) int { - snd_una := kcp.snd_una - if len(data) < IKCP_OVERHEAD { - return -1 - } - - var latest uint32 // the latest ack packet - var flag int - var inSegs uint64 - - for { - var ts, sn, length, una, conv uint32 - var wnd uint16 - var cmd, frg uint8 - - if len(data) < int(IKCP_OVERHEAD) { - break - } - - data = ikcp_decode32u(data, &conv) - if conv != kcp.conv { - return -1 - } - - data = ikcp_decode8u(data, &cmd) - data = ikcp_decode8u(data, &frg) - data = ikcp_decode16u(data, &wnd) - data = ikcp_decode32u(data, &ts) - data = ikcp_decode32u(data, &sn) - data = ikcp_decode32u(data, &una) - data = ikcp_decode32u(data, &length) - if len(data) < int(length) { - return -2 - } - - if cmd != IKCP_CMD_PUSH && cmd != IKCP_CMD_ACK && - cmd != IKCP_CMD_WASK && cmd != IKCP_CMD_WINS { - return -3 - } - - // only trust window updates from regular packets. i.e: latest update - if regular { - kcp.rmt_wnd = uint32(wnd) - } - kcp.parse_una(una) - kcp.shrink_buf() - - if cmd == IKCP_CMD_ACK { - kcp.parse_ack(sn) - kcp.parse_fastack(sn, ts) - flag |= 1 - latest = ts - } else if cmd == IKCP_CMD_PUSH { - repeat := true - if _itimediff(sn, kcp.rcv_nxt+kcp.rcv_wnd) < 0 { - kcp.ack_push(sn, ts) - if _itimediff(sn, kcp.rcv_nxt) >= 0 { - var seg segment - seg.conv = conv - seg.cmd = cmd - seg.frg = frg - seg.wnd = wnd - seg.ts = ts - seg.sn = sn - seg.una = una - seg.data = data[:length] // delayed data copying - repeat = kcp.parse_data(seg) - } - } - if regular && repeat { - atomic.AddUint64(&DefaultSnmp.RepeatSegs, 1) - } - } else if cmd == IKCP_CMD_WASK { - // ready to send back IKCP_CMD_WINS in Ikcp_flush - // tell remote my window size - kcp.probe |= IKCP_ASK_TELL - } else if cmd == IKCP_CMD_WINS { - // do nothing - } else { - return -3 - } - - inSegs++ - data = data[length:] - } - atomic.AddUint64(&DefaultSnmp.InSegs, inSegs) - - // update rtt with the latest ts - // ignore the FEC packet - if flag != 0 && regular { - current := currentMs() - if _itimediff(current, latest) >= 0 { - kcp.update_ack(_itimediff(current, latest)) - } - } - - // cwnd update when packet arrived - if kcp.nocwnd == 0 { - if _itimediff(kcp.snd_una, snd_una) > 0 { - if kcp.cwnd < kcp.rmt_wnd { - mss := kcp.mss - if kcp.cwnd < kcp.ssthresh { - kcp.cwnd++ - kcp.incr += mss - } else { - if kcp.incr < mss { - kcp.incr = mss - } - kcp.incr += (mss*mss)/kcp.incr + (mss / 16) - if (kcp.cwnd+1)*mss <= kcp.incr { - kcp.cwnd++ - } - } - if kcp.cwnd > kcp.rmt_wnd { - kcp.cwnd = kcp.rmt_wnd - kcp.incr = kcp.rmt_wnd * mss - } - } - } - } - - if ackNoDelay && len(kcp.acklist) > 0 { // ack immediately - kcp.flush(true) - } - return 0 -} - -func (kcp *KCP) wnd_unused() uint16 { - if len(kcp.rcv_queue) < int(kcp.rcv_wnd) { - return uint16(int(kcp.rcv_wnd) - len(kcp.rcv_queue)) - } - return 0 -} - -// flush pending data -func (kcp *KCP) flush(ackOnly bool) uint32 { - var seg segment - seg.conv = kcp.conv - seg.cmd = IKCP_CMD_ACK - seg.wnd = kcp.wnd_unused() - seg.una = kcp.rcv_nxt - - buffer := kcp.buffer - ptr := buffer[kcp.reserved:] // keep n bytes untouched - - // makeSpace makes room for writing - makeSpace := func(space int) { - size := len(buffer) - len(ptr) - if size+space > int(kcp.mtu) { - kcp.output(buffer, size) - ptr = buffer[kcp.reserved:] - } - } - - // flush bytes in buffer if there is any - flushBuffer := func() { - size := len(buffer) - len(ptr) - if size > kcp.reserved { - kcp.output(buffer, size) - } - } - - // flush acknowledges - for i, ack := range kcp.acklist { - makeSpace(IKCP_OVERHEAD) - // filter jitters caused by bufferbloat - if ack.sn >= kcp.rcv_nxt || len(kcp.acklist)-1 == i { - seg.sn, seg.ts = ack.sn, ack.ts - ptr = seg.encode(ptr) - } - } - kcp.acklist = kcp.acklist[0:0] - - if ackOnly { // flash remain ack segments - flushBuffer() - return kcp.interval - } - - // probe window size (if remote window size equals zero) - if kcp.rmt_wnd == 0 { - current := currentMs() - if kcp.probe_wait == 0 { - kcp.probe_wait = IKCP_PROBE_INIT - kcp.ts_probe = current + kcp.probe_wait - } else { - if _itimediff(current, kcp.ts_probe) >= 0 { - if kcp.probe_wait < IKCP_PROBE_INIT { - kcp.probe_wait = IKCP_PROBE_INIT - } - kcp.probe_wait += kcp.probe_wait / 2 - if kcp.probe_wait > IKCP_PROBE_LIMIT { - kcp.probe_wait = IKCP_PROBE_LIMIT - } - kcp.ts_probe = current + kcp.probe_wait - kcp.probe |= IKCP_ASK_SEND - } - } - } else { - kcp.ts_probe = 0 - kcp.probe_wait = 0 - } - - // flush window probing commands - if (kcp.probe & IKCP_ASK_SEND) != 0 { - seg.cmd = IKCP_CMD_WASK - makeSpace(IKCP_OVERHEAD) - ptr = seg.encode(ptr) - } - - // flush window probing commands - if (kcp.probe & IKCP_ASK_TELL) != 0 { - seg.cmd = IKCP_CMD_WINS - makeSpace(IKCP_OVERHEAD) - ptr = seg.encode(ptr) - } - - kcp.probe = 0 - - // calculate window size - cwnd := _imin_(kcp.snd_wnd, kcp.rmt_wnd) - if kcp.nocwnd == 0 { - cwnd = _imin_(kcp.cwnd, cwnd) - } - - // sliding window, controlled by snd_nxt && sna_una+cwnd - newSegsCount := 0 - for k := range kcp.snd_queue { - if _itimediff(kcp.snd_nxt, kcp.snd_una+cwnd) >= 0 { - break - } - newseg := kcp.snd_queue[k] - newseg.conv = kcp.conv - newseg.cmd = IKCP_CMD_PUSH - newseg.sn = kcp.snd_nxt - kcp.snd_buf = append(kcp.snd_buf, newseg) - kcp.snd_nxt++ - newSegsCount++ - } - if newSegsCount > 0 { - kcp.snd_queue = kcp.remove_front(kcp.snd_queue, newSegsCount) - } - - // calculate resent - resent := uint32(kcp.fastresend) - if kcp.fastresend <= 0 { - resent = 0xffffffff - } - - // check for retransmissions - current := currentMs() - var change, lostSegs, fastRetransSegs, earlyRetransSegs uint64 - minrto := int32(kcp.interval) - - ref := kcp.snd_buf[:len(kcp.snd_buf)] // for bounds check elimination - for k := range ref { - segment := &ref[k] - needsend := false - if segment.acked == 1 { - continue - } - if segment.xmit == 0 { // initial transmit - needsend = true - segment.rto = kcp.rx_rto - segment.resendts = current + segment.rto - } else if segment.fastack >= resent { // fast retransmit - needsend = true - segment.fastack = 0 - segment.rto = kcp.rx_rto - segment.resendts = current + segment.rto - change++ - fastRetransSegs++ - } else if segment.fastack > 0 && newSegsCount == 0 { // early retransmit - needsend = true - segment.fastack = 0 - segment.rto = kcp.rx_rto - segment.resendts = current + segment.rto - change++ - earlyRetransSegs++ - } else if _itimediff(current, segment.resendts) >= 0 { // RTO - needsend = true - if kcp.nodelay == 0 { - segment.rto += kcp.rx_rto - } else { - segment.rto += kcp.rx_rto / 2 - } - segment.fastack = 0 - segment.resendts = current + segment.rto - lostSegs++ - } - - if needsend { - current = currentMs() - segment.xmit++ - segment.ts = current - segment.wnd = seg.wnd - segment.una = seg.una - - need := IKCP_OVERHEAD + len(segment.data) - makeSpace(need) - ptr = segment.encode(ptr) - copy(ptr, segment.data) - ptr = ptr[len(segment.data):] - - if segment.xmit >= kcp.dead_link { - kcp.state = 0xFFFFFFFF - } - } - - // get the nearest rto - if rto := _itimediff(segment.resendts, current); rto > 0 && rto < minrto { - minrto = rto - } - } - - // flash remain segments - flushBuffer() - - // counter updates - sum := lostSegs - if lostSegs > 0 { - atomic.AddUint64(&DefaultSnmp.LostSegs, lostSegs) - } - if fastRetransSegs > 0 { - atomic.AddUint64(&DefaultSnmp.FastRetransSegs, fastRetransSegs) - sum += fastRetransSegs - } - if earlyRetransSegs > 0 { - atomic.AddUint64(&DefaultSnmp.EarlyRetransSegs, earlyRetransSegs) - sum += earlyRetransSegs - } - if sum > 0 { - atomic.AddUint64(&DefaultSnmp.RetransSegs, sum) - } - - // cwnd update - if kcp.nocwnd == 0 { - // update ssthresh - // rate halving, https://tools.ietf.org/html/rfc6937 - if change > 0 { - inflight := kcp.snd_nxt - kcp.snd_una - kcp.ssthresh = inflight / 2 - if kcp.ssthresh < IKCP_THRESH_MIN { - kcp.ssthresh = IKCP_THRESH_MIN - } - kcp.cwnd = kcp.ssthresh + resent - kcp.incr = kcp.cwnd * kcp.mss - } - - // congestion control, https://tools.ietf.org/html/rfc5681 - if lostSegs > 0 { - kcp.ssthresh = cwnd / 2 - if kcp.ssthresh < IKCP_THRESH_MIN { - kcp.ssthresh = IKCP_THRESH_MIN - } - kcp.cwnd = 1 - kcp.incr = kcp.mss - } - - if kcp.cwnd < 1 { - kcp.cwnd = 1 - kcp.incr = kcp.mss - } - } - - return uint32(minrto) -} - -// (deprecated) -// -// Update updates state (call it repeatedly, every 10ms-100ms), or you can ask -// ikcp_check when to call it again (without ikcp_input/_send calling). -// 'current' - current timestamp in millisec. -func (kcp *KCP) Update() { - var slap int32 - - current := currentMs() - if kcp.updated == 0 { - kcp.updated = 1 - kcp.ts_flush = current - } - - slap = _itimediff(current, kcp.ts_flush) - - if slap >= 10000 || slap < -10000 { - kcp.ts_flush = current - slap = 0 - } - - if slap >= 0 { - kcp.ts_flush += kcp.interval - if _itimediff(current, kcp.ts_flush) >= 0 { - kcp.ts_flush = current + kcp.interval - } - kcp.flush(false) - } -} - -// (deprecated) -// -// Check determines when should you invoke ikcp_update: -// returns when you should invoke ikcp_update in millisec, if there -// is no ikcp_input/_send calling. you can call ikcp_update in that -// time, instead of call update repeatly. -// Important to reduce unnacessary ikcp_update invoking. use it to -// schedule ikcp_update (eg. implementing an epoll-like mechanism, -// or optimize ikcp_update when handling massive kcp connections) -func (kcp *KCP) Check() uint32 { - current := currentMs() - ts_flush := kcp.ts_flush - tm_flush := int32(0x7fffffff) - tm_packet := int32(0x7fffffff) - minimal := uint32(0) - if kcp.updated == 0 { - return current - } - - if _itimediff(current, ts_flush) >= 10000 || - _itimediff(current, ts_flush) < -10000 { - ts_flush = current - } - - if _itimediff(current, ts_flush) >= 0 { - return current - } - - tm_flush = _itimediff(ts_flush, current) - - for k := range kcp.snd_buf { - seg := &kcp.snd_buf[k] - diff := _itimediff(seg.resendts, current) - if diff <= 0 { - return current - } - if diff < tm_packet { - tm_packet = diff - } - } - - minimal = uint32(tm_packet) - if tm_packet >= tm_flush { - minimal = uint32(tm_flush) - } - if minimal >= kcp.interval { - minimal = kcp.interval - } - - return current + minimal -} - -// SetMtu changes MTU size, default is 1400 -func (kcp *KCP) SetMtu(mtu int) int { - if mtu < 50 || mtu < IKCP_OVERHEAD { - return -1 - } - if kcp.reserved >= int(kcp.mtu-IKCP_OVERHEAD) || kcp.reserved < 0 { - return -1 - } - - buffer := make([]byte, mtu) - if buffer == nil { - return -2 - } - kcp.mtu = uint32(mtu) - kcp.mss = kcp.mtu - IKCP_OVERHEAD - uint32(kcp.reserved) - kcp.buffer = buffer - return 0 -} - -// NoDelay options -// fastest: ikcp_nodelay(kcp, 1, 20, 2, 1) -// nodelay: 0:disable(default), 1:enable -// interval: internal update timer interval in millisec, default is 100ms -// resend: 0:disable fast resend(default), 1:enable fast resend -// nc: 0:normal congestion control(default), 1:disable congestion control -func (kcp *KCP) NoDelay(nodelay, interval, resend, nc int) int { - if nodelay >= 0 { - kcp.nodelay = uint32(nodelay) - if nodelay != 0 { - kcp.rx_minrto = IKCP_RTO_NDL - } else { - kcp.rx_minrto = IKCP_RTO_MIN - } - } - if interval >= 0 { - if interval > 5000 { - interval = 5000 - } else if interval < 10 { - interval = 10 - } - kcp.interval = uint32(interval) - } - if resend >= 0 { - kcp.fastresend = int32(resend) - } - if nc >= 0 { - kcp.nocwnd = int32(nc) - } - return 0 -} - -// WndSize sets maximum window size: sndwnd=32, rcvwnd=32 by default -func (kcp *KCP) WndSize(sndwnd, rcvwnd int) int { - if sndwnd > 0 { - kcp.snd_wnd = uint32(sndwnd) - } - if rcvwnd > 0 { - kcp.rcv_wnd = uint32(rcvwnd) - } - return 0 -} - -// WaitSnd gets how many packet is waiting to be sent -func (kcp *KCP) WaitSnd() int { - return len(kcp.snd_buf) + len(kcp.snd_queue) -} - -// remove front n elements from queue -// if the number of elements to remove is more than half of the size. -// just shift the rear elements to front, otherwise just reslice q to q[n:] -// then the cost of runtime.growslice can always be less than n/2 -func (kcp *KCP) remove_front(q []segment, n int) []segment { - if n > cap(q)/2 { - newn := copy(q, q[n:]) - return q[:newn] - } - return q[n:] -} - -// Release all cached outgoing segments -func (kcp *KCP) ReleaseTX() { - for k := range kcp.snd_queue { - if kcp.snd_queue[k].data != nil { - xmitBuf.Put(kcp.snd_queue[k].data) - } - } - for k := range kcp.snd_buf { - if kcp.snd_buf[k].data != nil { - xmitBuf.Put(kcp.snd_buf[k].data) - } - } - kcp.snd_queue = nil - kcp.snd_buf = nil -} diff --git a/vendor/github.com/xtaci/kcp-go/readloop.go b/vendor/github.com/xtaci/kcp-go/readloop.go deleted file mode 100644 index bc48e84..0000000 --- a/vendor/github.com/xtaci/kcp-go/readloop.go +++ /dev/null @@ -1,48 +0,0 @@ -package kcp - -import ( - "sync/atomic" - - "github.com/pkg/errors" -) - -func (s *UDPSession) defaultReadLoop() { - buf := make([]byte, mtuLimit) - var src string - for { - if n, addr, err := s.conn.ReadFrom(buf); err == nil { - // make sure the packet is from the same source - if src == "" { // set source address - src = addr.String() - } else if addr.String() != src { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - continue - } - - if n >= s.headerSize+IKCP_OVERHEAD { - s.packetInput(buf[:n]) - } else { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - } - } else { - s.notifyReadError(errors.WithStack(err)) - return - } - } -} - -func (l *Listener) defaultMonitor() { - buf := make([]byte, mtuLimit) - for { - if n, from, err := l.conn.ReadFrom(buf); err == nil { - if n >= l.headerSize+IKCP_OVERHEAD { - l.packetInput(buf[:n], from) - } else { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - } - } else { - l.notifyReadError(errors.WithStack(err)) - return - } - } -} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_generic.go b/vendor/github.com/xtaci/kcp-go/readloop_generic.go deleted file mode 100644 index 5dbe4f4..0000000 --- a/vendor/github.com/xtaci/kcp-go/readloop_generic.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux - -package kcp - -func (s *UDPSession) readLoop() { - s.defaultReadLoop() -} - -func (l *Listener) monitor() { - l.defaultMonitor() -} diff --git a/vendor/github.com/xtaci/kcp-go/readloop_linux.go b/vendor/github.com/xtaci/kcp-go/readloop_linux.go deleted file mode 100644 index 6226478..0000000 --- a/vendor/github.com/xtaci/kcp-go/readloop_linux.go +++ /dev/null @@ -1,120 +0,0 @@ -// +build linux - -package kcp - -import ( - "net" - "os" - "sync/atomic" - - "github.com/pkg/errors" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -// the read loop for a client session -func (s *UDPSession) readLoop() { - // default version - if s.xconn == nil { - s.defaultReadLoop() - return - } - - // x/net version - var src string - msgs := make([]ipv4.Message, batchSize) - for k := range msgs { - msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} - } - - for { - if count, err := s.xconn.ReadBatch(msgs, 0); err == nil { - for i := 0; i < count; i++ { - msg := &msgs[i] - // make sure the packet is from the same source - if src == "" { // set source address if nil - src = msg.Addr.String() - } else if msg.Addr.String() != src { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - continue - } - - if msg.N < s.headerSize+IKCP_OVERHEAD { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - continue - } - - // source and size has validated - s.packetInput(msg.Buffers[0][:msg.N]) - } - } else { - // compatibility issue: - // for linux kernel<=2.6.32, support for sendmmsg is not available - // an error of type os.SyscallError will be returned - if operr, ok := err.(*net.OpError); ok { - if se, ok := operr.Err.(*os.SyscallError); ok { - if se.Syscall == "recvmmsg" { - s.defaultReadLoop() - return - } - } - } - s.notifyReadError(errors.WithStack(err)) - return - } - } -} - -// monitor incoming data for all connections of server -func (l *Listener) monitor() { - var xconn batchConn - if _, ok := l.conn.(*net.UDPConn); ok { - addr, err := net.ResolveUDPAddr("udp", l.conn.LocalAddr().String()) - if err == nil { - if addr.IP.To4() != nil { - xconn = ipv4.NewPacketConn(l.conn) - } else { - xconn = ipv6.NewPacketConn(l.conn) - } - } - } - - // default version - if xconn == nil { - l.defaultMonitor() - return - } - - // x/net version - msgs := make([]ipv4.Message, batchSize) - for k := range msgs { - msgs[k].Buffers = [][]byte{make([]byte, mtuLimit)} - } - - for { - if count, err := xconn.ReadBatch(msgs, 0); err == nil { - for i := 0; i < count; i++ { - msg := &msgs[i] - if msg.N >= l.headerSize+IKCP_OVERHEAD { - l.packetInput(msg.Buffers[0][:msg.N], msg.Addr) - } else { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - } - } - } else { - // compatibility issue: - // for linux kernel<=2.6.32, support for sendmmsg is not available - // an error of type os.SyscallError will be returned - if operr, ok := err.(*net.OpError); ok { - if se, ok := operr.Err.(*os.SyscallError); ok { - if se.Syscall == "recvmmsg" { - l.defaultMonitor() - return - } - } - } - l.notifyReadError(errors.WithStack(err)) - return - } - } -} diff --git a/vendor/github.com/xtaci/kcp-go/sess.go b/vendor/github.com/xtaci/kcp-go/sess.go deleted file mode 100644 index 13a1a5c..0000000 --- a/vendor/github.com/xtaci/kcp-go/sess.go +++ /dev/null @@ -1,1047 +0,0 @@ -// Package kcp-go is a Reliable-UDP library for golang. -// -// This library intents to provide a smooth, resilient, ordered, -// error-checked and anonymous delivery of streams over UDP packets. -// -// The interfaces of this package aims to be compatible with -// net.Conn in standard library, but offers powerful features for advanced users. -package kcp - -import ( - "crypto/rand" - "encoding/binary" - "hash/crc32" - "io" - "net" - "sync" - "sync/atomic" - "time" - - "github.com/pkg/errors" - "golang.org/x/net/ipv4" - "golang.org/x/net/ipv6" -) - -const ( - // 16-bytes nonce for each packet - nonceSize = 16 - - // 4-bytes packet checksum - crcSize = 4 - - // overall crypto header size - cryptHeaderSize = nonceSize + crcSize - - // maximum packet size - mtuLimit = 1500 - - // FEC keeps rxFECMulti* (dataShard+parityShard) ordered packets in memory - rxFECMulti = 3 - - // accept backlog - acceptBacklog = 128 -) - -var ( - errInvalidOperation = errors.New("invalid operation") - errTimeout = errors.New("timeout") -) - -var ( - // a system-wide packet buffer shared among sending, receiving and FEC - // to mitigate high-frequency memory allocation for packets - xmitBuf sync.Pool -) - -func init() { - xmitBuf.New = func() interface{} { - return make([]byte, mtuLimit) - } -} - -type ( - // UDPSession defines a KCP session implemented by UDP - UDPSession struct { - conn net.PacketConn // the underlying packet connection - kcp *KCP // KCP ARQ protocol - l *Listener // pointing to the Listener object if it's been accepted by a Listener - block BlockCrypt // block encryption object - - // kcp receiving is based on packets - // recvbuf turns packets into stream - recvbuf []byte - bufptr []byte - - // FEC codec - fecDecoder *fecDecoder - fecEncoder *fecEncoder - - // settings - remote net.Addr // remote peer address - rd time.Time // read deadline - wd time.Time // write deadline - headerSize int // the header size additional to a KCP frame - ackNoDelay bool // send ack immediately for each incoming packet(testing purpose) - writeDelay bool // delay kcp.flush() for Write() for bulk transfer - dup int // duplicate udp packets(testing purpose) - - // notifications - die chan struct{} // notify current session has Closed - dieOnce sync.Once - chReadEvent chan struct{} // notify Read() can be called without blocking - chWriteEvent chan struct{} // notify Write() can be called without blocking - - // socket error handling - socketReadError atomic.Value - socketWriteError atomic.Value - chSocketReadError chan struct{} - chSocketWriteError chan struct{} - socketReadErrorOnce sync.Once - socketWriteErrorOnce sync.Once - - // nonce generator - nonce Entropy - - // packets waiting to be sent on wire - txqueue []ipv4.Message - xconn batchConn // for x/net - xconnWriteError error - - mu sync.Mutex - } - - setReadBuffer interface { - SetReadBuffer(bytes int) error - } - - setWriteBuffer interface { - SetWriteBuffer(bytes int) error - } - - setDSCP interface { - SetDSCP(int) error - } -) - -// newUDPSession create a new udp session for client or server -func newUDPSession(conv uint32, dataShards, parityShards int, l *Listener, conn net.PacketConn, remote net.Addr, block BlockCrypt) *UDPSession { - sess := new(UDPSession) - sess.die = make(chan struct{}) - sess.nonce = new(nonceAES128) - sess.nonce.Init() - sess.chReadEvent = make(chan struct{}, 1) - sess.chWriteEvent = make(chan struct{}, 1) - sess.chSocketReadError = make(chan struct{}) - sess.chSocketWriteError = make(chan struct{}) - sess.remote = remote - sess.conn = conn - sess.l = l - sess.block = block - sess.recvbuf = make([]byte, mtuLimit) - - // cast to writebatch conn - if _, ok := conn.(*net.UDPConn); ok { - addr, err := net.ResolveUDPAddr("udp", conn.LocalAddr().String()) - if err == nil { - if addr.IP.To4() != nil { - sess.xconn = ipv4.NewPacketConn(conn) - } else { - sess.xconn = ipv6.NewPacketConn(conn) - } - } - } - - // FEC codec initialization - sess.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) - if sess.block != nil { - sess.fecEncoder = newFECEncoder(dataShards, parityShards, cryptHeaderSize) - } else { - sess.fecEncoder = newFECEncoder(dataShards, parityShards, 0) - } - - // calculate additional header size introduced by FEC and encryption - if sess.block != nil { - sess.headerSize += cryptHeaderSize - } - if sess.fecEncoder != nil { - sess.headerSize += fecHeaderSizePlus2 - } - - sess.kcp = NewKCP(conv, func(buf []byte, size int) { - if size >= IKCP_OVERHEAD+sess.headerSize { - sess.output(buf[:size]) - } - }) - sess.kcp.ReserveBytes(sess.headerSize) - - if sess.l == nil { // it's a client connection - go sess.readLoop() - atomic.AddUint64(&DefaultSnmp.ActiveOpens, 1) - } else { - atomic.AddUint64(&DefaultSnmp.PassiveOpens, 1) - } - - // start per-session updater - go sess.updater() - - currestab := atomic.AddUint64(&DefaultSnmp.CurrEstab, 1) - maxconn := atomic.LoadUint64(&DefaultSnmp.MaxConn) - if currestab > maxconn { - atomic.CompareAndSwapUint64(&DefaultSnmp.MaxConn, maxconn, currestab) - } - - return sess -} - -// Read implements net.Conn -func (s *UDPSession) Read(b []byte) (n int, err error) { - for { - s.mu.Lock() - if len(s.bufptr) > 0 { // copy from buffer into b - n = copy(b, s.bufptr) - s.bufptr = s.bufptr[n:] - s.mu.Unlock() - atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) - return n, nil - } - - if size := s.kcp.PeekSize(); size > 0 { // peek data size from kcp - if len(b) >= size { // receive data into 'b' directly - s.kcp.Recv(b) - s.mu.Unlock() - atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(size)) - return size, nil - } - - // if necessary resize the stream buffer to guarantee a sufficent buffer space - if cap(s.recvbuf) < size { - s.recvbuf = make([]byte, size) - } - - // resize the length of recvbuf to correspond to data size - s.recvbuf = s.recvbuf[:size] - s.kcp.Recv(s.recvbuf) - n = copy(b, s.recvbuf) // copy to 'b' - s.bufptr = s.recvbuf[n:] // pointer update - s.mu.Unlock() - atomic.AddUint64(&DefaultSnmp.BytesReceived, uint64(n)) - return n, nil - } - - // deadline for current reading operation - var timeout *time.Timer - var c <-chan time.Time - if !s.rd.IsZero() { - if time.Now().After(s.rd) { - s.mu.Unlock() - return 0, errors.WithStack(errTimeout) - } - - delay := s.rd.Sub(time.Now()) - timeout = time.NewTimer(delay) - c = timeout.C - } - s.mu.Unlock() - - // wait for read event or timeout or error - select { - case <-s.chReadEvent: - if timeout != nil { - timeout.Stop() - } - case <-c: - return 0, errors.WithStack(errTimeout) - case <-s.chSocketReadError: - return 0, s.socketReadError.Load().(error) - case <-s.die: - return 0, errors.WithStack(io.ErrClosedPipe) - } - } -} - -// Write implements net.Conn -func (s *UDPSession) Write(b []byte) (n int, err error) { return s.WriteBuffers([][]byte{b}) } - -// WriteBuffers write a vector of byte slices to the underlying connection -func (s *UDPSession) WriteBuffers(v [][]byte) (n int, err error) { - for { - select { - case <-s.chSocketWriteError: - return 0, s.socketWriteError.Load().(error) - case <-s.die: - return 0, errors.WithStack(io.ErrClosedPipe) - default: - } - - s.mu.Lock() - - // make sure write do not overflow the max sliding window on both side - waitsnd := s.kcp.WaitSnd() - if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { - for _, b := range v { - n += len(b) - for { - if len(b) <= int(s.kcp.mss) { - s.kcp.Send(b) - break - } else { - s.kcp.Send(b[:s.kcp.mss]) - b = b[s.kcp.mss:] - } - } - } - - waitsnd = s.kcp.WaitSnd() - if waitsnd >= int(s.kcp.snd_wnd) || waitsnd >= int(s.kcp.rmt_wnd) || !s.writeDelay { - s.kcp.flush(false) - s.uncork() - } - s.mu.Unlock() - atomic.AddUint64(&DefaultSnmp.BytesSent, uint64(n)) - return n, nil - } - - var timeout *time.Timer - var c <-chan time.Time - if !s.wd.IsZero() { - if time.Now().After(s.wd) { - s.mu.Unlock() - return 0, errors.WithStack(errTimeout) - } - delay := s.wd.Sub(time.Now()) - timeout = time.NewTimer(delay) - c = timeout.C - } - s.mu.Unlock() - - select { - case <-s.chWriteEvent: - if timeout != nil { - timeout.Stop() - } - case <-c: - return 0, errors.WithStack(errTimeout) - case <-s.chSocketWriteError: - return 0, s.socketWriteError.Load().(error) - case <-s.die: - return 0, errors.WithStack(io.ErrClosedPipe) - } - } -} - -// uncork sends data in txqueue if there is any -func (s *UDPSession) uncork() { - if len(s.txqueue) > 0 { - s.tx(s.txqueue) - // recycle - for k := range s.txqueue { - xmitBuf.Put(s.txqueue[k].Buffers[0]) - s.txqueue[k].Buffers = nil - } - s.txqueue = s.txqueue[:0] - } - return -} - -// Close closes the connection. -func (s *UDPSession) Close() error { - var once bool - s.dieOnce.Do(func() { - close(s.die) - once = true - }) - - if once { - atomic.AddUint64(&DefaultSnmp.CurrEstab, ^uint64(0)) - - // try best to send all queued messages - s.mu.Lock() - s.kcp.flush(false) - s.uncork() - // release pending segments - s.kcp.ReleaseTX() - if s.fecDecoder != nil { - s.fecDecoder.release() - } - s.mu.Unlock() - - if s.l != nil { // belongs to listener - s.l.closeSession(s.remote) - return nil - } else { // client socket close - return s.conn.Close() - } - } else { - return errors.WithStack(io.ErrClosedPipe) - } -} - -// LocalAddr returns the local network address. The Addr returned is shared by all invocations of LocalAddr, so do not modify it. -func (s *UDPSession) LocalAddr() net.Addr { return s.conn.LocalAddr() } - -// RemoteAddr returns the remote network address. The Addr returned is shared by all invocations of RemoteAddr, so do not modify it. -func (s *UDPSession) RemoteAddr() net.Addr { return s.remote } - -// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. -func (s *UDPSession) SetDeadline(t time.Time) error { - s.mu.Lock() - defer s.mu.Unlock() - s.rd = t - s.wd = t - s.notifyReadEvent() - s.notifyWriteEvent() - return nil -} - -// SetReadDeadline implements the Conn SetReadDeadline method. -func (s *UDPSession) SetReadDeadline(t time.Time) error { - s.mu.Lock() - defer s.mu.Unlock() - s.rd = t - s.notifyReadEvent() - return nil -} - -// SetWriteDeadline implements the Conn SetWriteDeadline method. -func (s *UDPSession) SetWriteDeadline(t time.Time) error { - s.mu.Lock() - defer s.mu.Unlock() - s.wd = t - s.notifyWriteEvent() - return nil -} - -// SetWriteDelay delays write for bulk transfer until the next update interval -func (s *UDPSession) SetWriteDelay(delay bool) { - s.mu.Lock() - defer s.mu.Unlock() - s.writeDelay = delay -} - -// SetWindowSize set maximum window size -func (s *UDPSession) SetWindowSize(sndwnd, rcvwnd int) { - s.mu.Lock() - defer s.mu.Unlock() - s.kcp.WndSize(sndwnd, rcvwnd) -} - -// SetMtu sets the maximum transmission unit(not including UDP header) -func (s *UDPSession) SetMtu(mtu int) bool { - if mtu > mtuLimit { - return false - } - - s.mu.Lock() - defer s.mu.Unlock() - s.kcp.SetMtu(mtu) - return true -} - -// SetStreamMode toggles the stream mode on/off -func (s *UDPSession) SetStreamMode(enable bool) { - s.mu.Lock() - defer s.mu.Unlock() - if enable { - s.kcp.stream = 1 - } else { - s.kcp.stream = 0 - } -} - -// SetACKNoDelay changes ack flush option, set true to flush ack immediately, -func (s *UDPSession) SetACKNoDelay(nodelay bool) { - s.mu.Lock() - defer s.mu.Unlock() - s.ackNoDelay = nodelay -} - -// (deprecated) -// -// SetDUP duplicates udp packets for kcp output. -func (s *UDPSession) SetDUP(dup int) { - s.mu.Lock() - defer s.mu.Unlock() - s.dup = dup -} - -// SetNoDelay calls nodelay() of kcp -// https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration -func (s *UDPSession) SetNoDelay(nodelay, interval, resend, nc int) { - s.mu.Lock() - defer s.mu.Unlock() - s.kcp.NoDelay(nodelay, interval, resend, nc) -} - -// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. -// -// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke -// this function instead. -// -// It has no effect if it's accepted from Listener. -func (s *UDPSession) SetDSCP(dscp int) error { - s.mu.Lock() - defer s.mu.Unlock() - if s.l != nil { - return errInvalidOperation - } - - // interface enabled - if ts, ok := s.conn.(setDSCP); ok { - return ts.SetDSCP(dscp) - } - - if nc, ok := s.conn.(net.Conn); ok { - var succeed bool - if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { - succeed = true - } - if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { - succeed = true - } - - if succeed { - return nil - } - } - return errInvalidOperation -} - -// SetReadBuffer sets the socket read buffer, no effect if it's accepted from Listener -func (s *UDPSession) SetReadBuffer(bytes int) error { - s.mu.Lock() - defer s.mu.Unlock() - if s.l == nil { - if nc, ok := s.conn.(setReadBuffer); ok { - return nc.SetReadBuffer(bytes) - } - } - return errInvalidOperation -} - -// SetWriteBuffer sets the socket write buffer, no effect if it's accepted from Listener -func (s *UDPSession) SetWriteBuffer(bytes int) error { - s.mu.Lock() - defer s.mu.Unlock() - if s.l == nil { - if nc, ok := s.conn.(setWriteBuffer); ok { - return nc.SetWriteBuffer(bytes) - } - } - return errInvalidOperation -} - -// post-processing for sending a packet from kcp core -// steps: -// 1. FEC packet generation -// 2. CRC32 integrity -// 3. Encryption -// 4. TxQueue -func (s *UDPSession) output(buf []byte) { - var ecc [][]byte - - // 1. FEC encoding - if s.fecEncoder != nil { - ecc = s.fecEncoder.encode(buf) - } - - // 2&3. crc32 & encryption - if s.block != nil { - s.nonce.Fill(buf[:nonceSize]) - checksum := crc32.ChecksumIEEE(buf[cryptHeaderSize:]) - binary.LittleEndian.PutUint32(buf[nonceSize:], checksum) - s.block.Encrypt(buf, buf) - - for k := range ecc { - s.nonce.Fill(ecc[k][:nonceSize]) - checksum := crc32.ChecksumIEEE(ecc[k][cryptHeaderSize:]) - binary.LittleEndian.PutUint32(ecc[k][nonceSize:], checksum) - s.block.Encrypt(ecc[k], ecc[k]) - } - } - - // 4. TxQueue - var msg ipv4.Message - for i := 0; i < s.dup+1; i++ { - bts := xmitBuf.Get().([]byte)[:len(buf)] - copy(bts, buf) - msg.Buffers = [][]byte{bts} - msg.Addr = s.remote - s.txqueue = append(s.txqueue, msg) - } - - for k := range ecc { - bts := xmitBuf.Get().([]byte)[:len(ecc[k])] - copy(bts, ecc[k]) - msg.Buffers = [][]byte{bts} - msg.Addr = s.remote - s.txqueue = append(s.txqueue, msg) - } -} - -// sess updater to trigger protocol -func (s *UDPSession) updater() { - timer := time.NewTimer(0) - for { - select { - case <-timer.C: - s.mu.Lock() - interval := time.Duration(s.kcp.flush(false)) * time.Millisecond - waitsnd := s.kcp.WaitSnd() - if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { - s.notifyWriteEvent() - } - s.uncork() - s.mu.Unlock() - timer.Reset(interval) - case <-s.die: - timer.Stop() - return - } - } -} - -// GetConv gets conversation id of a session -func (s *UDPSession) GetConv() uint32 { return s.kcp.conv } - -func (s *UDPSession) notifyReadEvent() { - select { - case s.chReadEvent <- struct{}{}: - default: - } -} - -func (s *UDPSession) notifyWriteEvent() { - select { - case s.chWriteEvent <- struct{}{}: - default: - } -} - -func (s *UDPSession) notifyReadError(err error) { - s.socketReadErrorOnce.Do(func() { - s.socketReadError.Store(err) - close(s.chSocketReadError) - }) -} - -func (s *UDPSession) notifyWriteError(err error) { - s.socketWriteErrorOnce.Do(func() { - s.socketWriteError.Store(err) - close(s.chSocketWriteError) - }) -} - -// packet input stage -func (s *UDPSession) packetInput(data []byte) { - dataValid := false - if s.block != nil { - s.block.Decrypt(data, data) - data = data[nonceSize:] - checksum := crc32.ChecksumIEEE(data[crcSize:]) - if checksum == binary.LittleEndian.Uint32(data) { - data = data[crcSize:] - dataValid = true - } else { - atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) - } - } else if s.block == nil { - dataValid = true - } - - if dataValid { - s.kcpInput(data) - } -} - -func (s *UDPSession) kcpInput(data []byte) { - var kcpInErrors, fecErrs, fecRecovered, fecParityShards uint64 - - if s.fecDecoder != nil { - if len(data) > fecHeaderSize { // must be larger than fec header size - f := fecPacket(data) - if f.flag() == typeData || f.flag() == typeParity { // header check - if f.flag() == typeParity { - fecParityShards++ - } - - // lock - s.mu.Lock() - recovers := s.fecDecoder.decode(f) - if f.flag() == typeData { - if ret := s.kcp.Input(data[fecHeaderSizePlus2:], true, s.ackNoDelay); ret != 0 { - kcpInErrors++ - } - } - - for _, r := range recovers { - if len(r) >= 2 { // must be larger than 2bytes - sz := binary.LittleEndian.Uint16(r) - if int(sz) <= len(r) && sz >= 2 { - if ret := s.kcp.Input(r[2:sz], false, s.ackNoDelay); ret == 0 { - fecRecovered++ - } else { - kcpInErrors++ - } - } else { - fecErrs++ - } - } else { - fecErrs++ - } - // recycle the recovers - xmitBuf.Put(r) - } - - // to notify the readers to receive the data - if n := s.kcp.PeekSize(); n > 0 { - s.notifyReadEvent() - } - // to notify the writers - waitsnd := s.kcp.WaitSnd() - if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { - s.notifyWriteEvent() - } - - s.uncork() - s.mu.Unlock() - } else { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - } - } else { - atomic.AddUint64(&DefaultSnmp.InErrs, 1) - } - } else { - s.mu.Lock() - if ret := s.kcp.Input(data, true, s.ackNoDelay); ret != 0 { - kcpInErrors++ - } - if n := s.kcp.PeekSize(); n > 0 { - s.notifyReadEvent() - } - waitsnd := s.kcp.WaitSnd() - if waitsnd < int(s.kcp.snd_wnd) && waitsnd < int(s.kcp.rmt_wnd) { - s.notifyWriteEvent() - } - s.uncork() - s.mu.Unlock() - } - - atomic.AddUint64(&DefaultSnmp.InPkts, 1) - atomic.AddUint64(&DefaultSnmp.InBytes, uint64(len(data))) - if fecParityShards > 0 { - atomic.AddUint64(&DefaultSnmp.FECParityShards, fecParityShards) - } - if kcpInErrors > 0 { - atomic.AddUint64(&DefaultSnmp.KCPInErrors, kcpInErrors) - } - if fecErrs > 0 { - atomic.AddUint64(&DefaultSnmp.FECErrs, fecErrs) - } - if fecRecovered > 0 { - atomic.AddUint64(&DefaultSnmp.FECRecovered, fecRecovered) - } - -} - -type ( - // Listener defines a server which will be waiting to accept incoming connections - Listener struct { - block BlockCrypt // block encryption - dataShards int // FEC data shard - parityShards int // FEC parity shard - fecDecoder *fecDecoder // FEC mock initialization - conn net.PacketConn // the underlying packet connection - - sessions map[string]*UDPSession // all sessions accepted by this Listener - sessionLock sync.Mutex - chAccepts chan *UDPSession // Listen() backlog - chSessionClosed chan net.Addr // session close queue - headerSize int // the additional header to a KCP frame - - die chan struct{} // notify the listener has closed - dieOnce sync.Once - - // socket error handling - socketReadError atomic.Value - chSocketReadError chan struct{} - socketReadErrorOnce sync.Once - - rd atomic.Value // read deadline for Accept() - } -) - -// packet input stage -func (l *Listener) packetInput(data []byte, addr net.Addr) { - dataValid := false - if l.block != nil { - l.block.Decrypt(data, data) - data = data[nonceSize:] - checksum := crc32.ChecksumIEEE(data[crcSize:]) - if checksum == binary.LittleEndian.Uint32(data) { - data = data[crcSize:] - dataValid = true - } else { - atomic.AddUint64(&DefaultSnmp.InCsumErrors, 1) - } - } else if l.block == nil { - dataValid = true - } - - if dataValid { - l.sessionLock.Lock() - s, ok := l.sessions[addr.String()] - l.sessionLock.Unlock() - - if !ok { // new address:port - if len(l.chAccepts) < cap(l.chAccepts) { // do not let the new sessions overwhelm accept queue - var conv uint32 - convValid := false - if l.fecDecoder != nil { - isfec := binary.LittleEndian.Uint16(data[4:]) - if isfec == typeData { - conv = binary.LittleEndian.Uint32(data[fecHeaderSizePlus2:]) - convValid = true - } - } else { - conv = binary.LittleEndian.Uint32(data) - convValid = true - } - - if convValid { // creates a new session only if the 'conv' field in kcp is accessible - s := newUDPSession(conv, l.dataShards, l.parityShards, l, l.conn, addr, l.block) - s.kcpInput(data) - l.sessionLock.Lock() - l.sessions[addr.String()] = s - l.sessionLock.Unlock() - l.chAccepts <- s - } - } - } else { - s.kcpInput(data) - } - } -} - -func (l *Listener) notifyReadError(err error) { - l.socketReadErrorOnce.Do(func() { - l.socketReadError.Store(err) - close(l.chSocketReadError) - - // propagate read error to all sessions - l.sessionLock.Lock() - for _, s := range l.sessions { - s.notifyReadError(err) - } - l.sessionLock.Unlock() - }) -} - -// SetReadBuffer sets the socket read buffer for the Listener -func (l *Listener) SetReadBuffer(bytes int) error { - if nc, ok := l.conn.(setReadBuffer); ok { - return nc.SetReadBuffer(bytes) - } - return errInvalidOperation -} - -// SetWriteBuffer sets the socket write buffer for the Listener -func (l *Listener) SetWriteBuffer(bytes int) error { - if nc, ok := l.conn.(setWriteBuffer); ok { - return nc.SetWriteBuffer(bytes) - } - return errInvalidOperation -} - -// SetDSCP sets the 6bit DSCP field in IPv4 header, or 8bit Traffic Class in IPv6 header. -// -// if the underlying connection has implemented `func SetDSCP(int) error`, SetDSCP() will invoke -// this function instead. -func (l *Listener) SetDSCP(dscp int) error { - // interface enabled - if ts, ok := l.conn.(setDSCP); ok { - return ts.SetDSCP(dscp) - } - - if nc, ok := l.conn.(net.Conn); ok { - var succeed bool - if err := ipv4.NewConn(nc).SetTOS(dscp << 2); err == nil { - succeed = true - } - if err := ipv6.NewConn(nc).SetTrafficClass(dscp); err == nil { - succeed = true - } - - if succeed { - return nil - } - } - return errInvalidOperation -} - -// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn. -func (l *Listener) Accept() (net.Conn, error) { - return l.AcceptKCP() -} - -// AcceptKCP accepts a KCP connection -func (l *Listener) AcceptKCP() (*UDPSession, error) { - var timeout <-chan time.Time - if tdeadline, ok := l.rd.Load().(time.Time); ok && !tdeadline.IsZero() { - timeout = time.After(tdeadline.Sub(time.Now())) - } - - select { - case <-timeout: - return nil, errors.WithStack(errTimeout) - case c := <-l.chAccepts: - return c, nil - case <-l.chSocketReadError: - return nil, l.socketReadError.Load().(error) - case <-l.die: - return nil, errors.WithStack(io.ErrClosedPipe) - } -} - -// SetDeadline sets the deadline associated with the listener. A zero time value disables the deadline. -func (l *Listener) SetDeadline(t time.Time) error { - l.SetReadDeadline(t) - l.SetWriteDeadline(t) - return nil -} - -// SetReadDeadline implements the Conn SetReadDeadline method. -func (l *Listener) SetReadDeadline(t time.Time) error { - l.rd.Store(t) - return nil -} - -// SetWriteDeadline implements the Conn SetWriteDeadline method. -func (l *Listener) SetWriteDeadline(t time.Time) error { return errInvalidOperation } - -// Close stops listening on the UDP address, and closes the socket -func (l *Listener) Close() error { - var once bool - l.dieOnce.Do(func() { - close(l.die) - once = true - }) - - if once { - return l.conn.Close() - } else { - return errors.WithStack(io.ErrClosedPipe) - } -} - -// closeSession notify the listener that a session has closed -func (l *Listener) closeSession(remote net.Addr) (ret bool) { - l.sessionLock.Lock() - defer l.sessionLock.Unlock() - if _, ok := l.sessions[remote.String()]; ok { - delete(l.sessions, remote.String()) - return true - } - return false -} - -// Addr returns the listener's network address, The Addr returned is shared by all invocations of Addr, so do not modify it. -func (l *Listener) Addr() net.Addr { return l.conn.LocalAddr() } - -// Listen listens for incoming KCP packets addressed to the local address laddr on the network "udp", -func Listen(laddr string) (net.Listener, error) { return ListenWithOptions(laddr, nil, 0, 0) } - -// ListenWithOptions listens for incoming KCP packets addressed to the local address laddr on the network "udp" with packet encryption. -// -// 'block' is the block encryption algorithm to encrypt packets. -// -// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. -// -// Check https://github.com/klauspost/reedsolomon for details -func ListenWithOptions(laddr string, block BlockCrypt, dataShards, parityShards int) (*Listener, error) { - udpaddr, err := net.ResolveUDPAddr("udp", laddr) - if err != nil { - return nil, errors.WithStack(err) - } - conn, err := net.ListenUDP("udp", udpaddr) - if err != nil { - return nil, errors.WithStack(err) - } - - return ServeConn(block, dataShards, parityShards, conn) -} - -// ServeConn serves KCP protocol for a single packet connection. -func ServeConn(block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*Listener, error) { - l := new(Listener) - l.conn = conn - l.sessions = make(map[string]*UDPSession) - l.chAccepts = make(chan *UDPSession, acceptBacklog) - l.chSessionClosed = make(chan net.Addr) - l.die = make(chan struct{}) - l.dataShards = dataShards - l.parityShards = parityShards - l.block = block - l.fecDecoder = newFECDecoder(rxFECMulti*(dataShards+parityShards), dataShards, parityShards) - l.chSocketReadError = make(chan struct{}) - - // calculate header size - if l.block != nil { - l.headerSize += cryptHeaderSize - } - if l.fecDecoder != nil { - l.headerSize += fecHeaderSizePlus2 - } - - go l.monitor() - return l, nil -} - -// Dial connects to the remote address "raddr" on the network "udp" without encryption and FEC -func Dial(raddr string) (net.Conn, error) { return DialWithOptions(raddr, nil, 0, 0) } - -// DialWithOptions connects to the remote address "raddr" on the network "udp" with packet encryption -// -// 'block' is the block encryption algorithm to encrypt packets. -// -// 'dataShards', 'parityShards' specifiy how many parity packets will be generated following the data packets. -// -// Check https://github.com/klauspost/reedsolomon for details -func DialWithOptions(raddr string, block BlockCrypt, dataShards, parityShards int) (*UDPSession, error) { - // network type detection - udpaddr, err := net.ResolveUDPAddr("udp", raddr) - if err != nil { - return nil, errors.WithStack(err) - } - network := "udp4" - if udpaddr.IP.To4() == nil { - network = "udp" - } - - conn, err := net.ListenUDP(network, nil) - if err != nil { - return nil, errors.WithStack(err) - } - - return NewConn(raddr, block, dataShards, parityShards, conn) -} - -// NewConn3 establishes a session and talks KCP protocol over a packet connection. -func NewConn3(convid uint32, raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { - return newUDPSession(convid, dataShards, parityShards, nil, conn, raddr, block), nil -} - -// NewConn2 establishes a session and talks KCP protocol over a packet connection. -func NewConn2(raddr net.Addr, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { - var convid uint32 - binary.Read(rand.Reader, binary.LittleEndian, &convid) - return NewConn3(convid, raddr, block, dataShards, parityShards, conn) -} - -// NewConn establishes a session and talks KCP protocol over a packet connection. -func NewConn(raddr string, block BlockCrypt, dataShards, parityShards int, conn net.PacketConn) (*UDPSession, error) { - udpaddr, err := net.ResolveUDPAddr("udp", raddr) - if err != nil { - return nil, errors.WithStack(err) - } - return NewConn2(udpaddr, block, dataShards, parityShards, conn) -} diff --git a/vendor/github.com/xtaci/kcp-go/snmp.go b/vendor/github.com/xtaci/kcp-go/snmp.go deleted file mode 100644 index 607118e..0000000 --- a/vendor/github.com/xtaci/kcp-go/snmp.go +++ /dev/null @@ -1,164 +0,0 @@ -package kcp - -import ( - "fmt" - "sync/atomic" -) - -// Snmp defines network statistics indicator -type Snmp struct { - BytesSent uint64 // bytes sent from upper level - BytesReceived uint64 // bytes received to upper level - MaxConn uint64 // max number of connections ever reached - ActiveOpens uint64 // accumulated active open connections - PassiveOpens uint64 // accumulated passive open connections - CurrEstab uint64 // current number of established connections - InErrs uint64 // UDP read errors reported from net.PacketConn - InCsumErrors uint64 // checksum errors from CRC32 - KCPInErrors uint64 // packet iput errors reported from KCP - InPkts uint64 // incoming packets count - OutPkts uint64 // outgoing packets count - InSegs uint64 // incoming KCP segments - OutSegs uint64 // outgoing KCP segments - InBytes uint64 // UDP bytes received - OutBytes uint64 // UDP bytes sent - RetransSegs uint64 // accmulated retransmited segments - FastRetransSegs uint64 // accmulated fast retransmitted segments - EarlyRetransSegs uint64 // accmulated early retransmitted segments - LostSegs uint64 // number of segs infered as lost - RepeatSegs uint64 // number of segs duplicated - FECRecovered uint64 // correct packets recovered from FEC - FECErrs uint64 // incorrect packets recovered from FEC - FECParityShards uint64 // FEC segments received - FECShortShards uint64 // number of data shards that's not enough for recovery -} - -func newSnmp() *Snmp { - return new(Snmp) -} - -// Header returns all field names -func (s *Snmp) Header() []string { - return []string{ - "BytesSent", - "BytesReceived", - "MaxConn", - "ActiveOpens", - "PassiveOpens", - "CurrEstab", - "InErrs", - "InCsumErrors", - "KCPInErrors", - "InPkts", - "OutPkts", - "InSegs", - "OutSegs", - "InBytes", - "OutBytes", - "RetransSegs", - "FastRetransSegs", - "EarlyRetransSegs", - "LostSegs", - "RepeatSegs", - "FECParityShards", - "FECErrs", - "FECRecovered", - "FECShortShards", - } -} - -// ToSlice returns current snmp info as slice -func (s *Snmp) ToSlice() []string { - snmp := s.Copy() - return []string{ - fmt.Sprint(snmp.BytesSent), - fmt.Sprint(snmp.BytesReceived), - fmt.Sprint(snmp.MaxConn), - fmt.Sprint(snmp.ActiveOpens), - fmt.Sprint(snmp.PassiveOpens), - fmt.Sprint(snmp.CurrEstab), - fmt.Sprint(snmp.InErrs), - fmt.Sprint(snmp.InCsumErrors), - fmt.Sprint(snmp.KCPInErrors), - fmt.Sprint(snmp.InPkts), - fmt.Sprint(snmp.OutPkts), - fmt.Sprint(snmp.InSegs), - fmt.Sprint(snmp.OutSegs), - fmt.Sprint(snmp.InBytes), - fmt.Sprint(snmp.OutBytes), - fmt.Sprint(snmp.RetransSegs), - fmt.Sprint(snmp.FastRetransSegs), - fmt.Sprint(snmp.EarlyRetransSegs), - fmt.Sprint(snmp.LostSegs), - fmt.Sprint(snmp.RepeatSegs), - fmt.Sprint(snmp.FECParityShards), - fmt.Sprint(snmp.FECErrs), - fmt.Sprint(snmp.FECRecovered), - fmt.Sprint(snmp.FECShortShards), - } -} - -// Copy make a copy of current snmp snapshot -func (s *Snmp) Copy() *Snmp { - d := newSnmp() - d.BytesSent = atomic.LoadUint64(&s.BytesSent) - d.BytesReceived = atomic.LoadUint64(&s.BytesReceived) - d.MaxConn = atomic.LoadUint64(&s.MaxConn) - d.ActiveOpens = atomic.LoadUint64(&s.ActiveOpens) - d.PassiveOpens = atomic.LoadUint64(&s.PassiveOpens) - d.CurrEstab = atomic.LoadUint64(&s.CurrEstab) - d.InErrs = atomic.LoadUint64(&s.InErrs) - d.InCsumErrors = atomic.LoadUint64(&s.InCsumErrors) - d.KCPInErrors = atomic.LoadUint64(&s.KCPInErrors) - d.InPkts = atomic.LoadUint64(&s.InPkts) - d.OutPkts = atomic.LoadUint64(&s.OutPkts) - d.InSegs = atomic.LoadUint64(&s.InSegs) - d.OutSegs = atomic.LoadUint64(&s.OutSegs) - d.InBytes = atomic.LoadUint64(&s.InBytes) - d.OutBytes = atomic.LoadUint64(&s.OutBytes) - d.RetransSegs = atomic.LoadUint64(&s.RetransSegs) - d.FastRetransSegs = atomic.LoadUint64(&s.FastRetransSegs) - d.EarlyRetransSegs = atomic.LoadUint64(&s.EarlyRetransSegs) - d.LostSegs = atomic.LoadUint64(&s.LostSegs) - d.RepeatSegs = atomic.LoadUint64(&s.RepeatSegs) - d.FECParityShards = atomic.LoadUint64(&s.FECParityShards) - d.FECErrs = atomic.LoadUint64(&s.FECErrs) - d.FECRecovered = atomic.LoadUint64(&s.FECRecovered) - d.FECShortShards = atomic.LoadUint64(&s.FECShortShards) - return d -} - -// Reset values to zero -func (s *Snmp) Reset() { - atomic.StoreUint64(&s.BytesSent, 0) - atomic.StoreUint64(&s.BytesReceived, 0) - atomic.StoreUint64(&s.MaxConn, 0) - atomic.StoreUint64(&s.ActiveOpens, 0) - atomic.StoreUint64(&s.PassiveOpens, 0) - atomic.StoreUint64(&s.CurrEstab, 0) - atomic.StoreUint64(&s.InErrs, 0) - atomic.StoreUint64(&s.InCsumErrors, 0) - atomic.StoreUint64(&s.KCPInErrors, 0) - atomic.StoreUint64(&s.InPkts, 0) - atomic.StoreUint64(&s.OutPkts, 0) - atomic.StoreUint64(&s.InSegs, 0) - atomic.StoreUint64(&s.OutSegs, 0) - atomic.StoreUint64(&s.InBytes, 0) - atomic.StoreUint64(&s.OutBytes, 0) - atomic.StoreUint64(&s.RetransSegs, 0) - atomic.StoreUint64(&s.FastRetransSegs, 0) - atomic.StoreUint64(&s.EarlyRetransSegs, 0) - atomic.StoreUint64(&s.LostSegs, 0) - atomic.StoreUint64(&s.RepeatSegs, 0) - atomic.StoreUint64(&s.FECParityShards, 0) - atomic.StoreUint64(&s.FECErrs, 0) - atomic.StoreUint64(&s.FECRecovered, 0) - atomic.StoreUint64(&s.FECShortShards, 0) -} - -// DefaultSnmp is the global KCP connection statistics collector -var DefaultSnmp *Snmp - -func init() { - DefaultSnmp = newSnmp() -} diff --git a/vendor/github.com/xtaci/kcp-go/tx.go b/vendor/github.com/xtaci/kcp-go/tx.go deleted file mode 100644 index 3397b82..0000000 --- a/vendor/github.com/xtaci/kcp-go/tx.go +++ /dev/null @@ -1,24 +0,0 @@ -package kcp - -import ( - "sync/atomic" - - "github.com/pkg/errors" - "golang.org/x/net/ipv4" -) - -func (s *UDPSession) defaultTx(txqueue []ipv4.Message) { - nbytes := 0 - npkts := 0 - for k := range txqueue { - if n, err := s.conn.WriteTo(txqueue[k].Buffers[0], txqueue[k].Addr); err == nil { - nbytes += n - npkts++ - } else { - s.notifyWriteError(errors.WithStack(err)) - break - } - } - atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) - atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) -} diff --git a/vendor/github.com/xtaci/kcp-go/tx_generic.go b/vendor/github.com/xtaci/kcp-go/tx_generic.go deleted file mode 100644 index 0b4f349..0000000 --- a/vendor/github.com/xtaci/kcp-go/tx_generic.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build !linux - -package kcp - -import ( - "golang.org/x/net/ipv4" -) - -func (s *UDPSession) tx(txqueue []ipv4.Message) { - s.defaultTx(txqueue) -} diff --git a/vendor/github.com/xtaci/kcp-go/tx_linux.go b/vendor/github.com/xtaci/kcp-go/tx_linux.go deleted file mode 100644 index 4f19df5..0000000 --- a/vendor/github.com/xtaci/kcp-go/tx_linux.go +++ /dev/null @@ -1,51 +0,0 @@ -// +build linux - -package kcp - -import ( - "net" - "os" - "sync/atomic" - - "github.com/pkg/errors" - "golang.org/x/net/ipv4" -) - -func (s *UDPSession) tx(txqueue []ipv4.Message) { - // default version - if s.xconn == nil || s.xconnWriteError != nil { - s.defaultTx(txqueue) - return - } - - // x/net version - nbytes := 0 - npkts := 0 - for len(txqueue) > 0 { - if n, err := s.xconn.WriteBatch(txqueue, 0); err == nil { - for k := range txqueue[:n] { - nbytes += len(txqueue[k].Buffers[0]) - } - npkts += n - txqueue = txqueue[n:] - } else { - // compatibility issue: - // for linux kernel<=2.6.32, support for sendmmsg is not available - // an error of type os.SyscallError will be returned - if operr, ok := err.(*net.OpError); ok { - if se, ok := operr.Err.(*os.SyscallError); ok { - if se.Syscall == "sendmmsg" { - s.xconnWriteError = se - s.defaultTx(txqueue) - return - } - } - } - s.notifyWriteError(errors.WithStack(err)) - break - } - } - - atomic.AddUint64(&DefaultSnmp.OutPkts, uint64(npkts)) - atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(nbytes)) -} diff --git a/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg b/vendor/github.com/xtaci/kcp-go/wechat_donate.jpg deleted file mode 100644 index ad72505ce56882faf47353fbc27c54826df29526..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35307 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 F|JmoHbYK7g diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS deleted file mode 100644 index 2b00ddb..0000000 --- a/vendor/golang.org/x/crypto/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at https://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS deleted file mode 100644 index 1fbd3e9..0000000 --- a/vendor/golang.org/x/crypto/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at https://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/crypto/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/crypto/PATENTS b/vendor/golang.org/x/crypto/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/crypto/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/crypto/argon2/argon2.go b/vendor/golang.org/x/crypto/argon2/argon2.go deleted file mode 100644 index b423fea..0000000 --- a/vendor/golang.org/x/crypto/argon2/argon2.go +++ /dev/null @@ -1,285 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package argon2 implements the key derivation function Argon2. -// Argon2 was selected as the winner of the Password Hashing Competition and can -// be used to derive cryptographic keys from passwords. -// -// For a detailed specification of Argon2 see [1]. -// -// If you aren't sure which function you need, use Argon2id (IDKey) and -// the parameter recommendations for your scenario. -// -// -// Argon2i -// -// Argon2i (implemented by Key) is the side-channel resistant version of Argon2. -// It uses data-independent memory access, which is preferred for password -// hashing and password-based key derivation. Argon2i requires more passes over -// memory than Argon2id to protect from trade-off attacks. The recommended -// parameters (taken from [2]) for non-interactive operations are time=3 and to -// use the maximum available memory. -// -// -// Argon2id -// -// Argon2id (implemented by IDKey) is a hybrid version of Argon2 combining -// Argon2i and Argon2d. It uses data-independent memory access for the first -// half of the first iteration over the memory and data-dependent memory access -// for the rest. Argon2id is side-channel resistant and provides better brute- -// force cost savings due to time-memory tradeoffs than Argon2i. The recommended -// parameters for non-interactive operations (taken from [2]) are time=1 and to -// use the maximum available memory. -// -// [1] https://github.com/P-H-C/phc-winner-argon2/blob/master/argon2-specs.pdf -// [2] https://tools.ietf.org/html/draft-irtf-cfrg-argon2-03#section-9.3 -package argon2 - -import ( - "encoding/binary" - "sync" - - "golang.org/x/crypto/blake2b" -) - -// The Argon2 version implemented by this package. -const Version = 0x13 - -const ( - argon2d = iota - argon2i - argon2id -) - -// Key derives a key from the password, salt, and cost parameters using Argon2i -// returning a byte slice of length keyLen that can be used as cryptographic -// key. The CPU cost and parallelism degree must be greater than zero. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: -// -// key := argon2.Key([]byte("some password"), salt, 3, 32*1024, 4, 32) -// -// The draft RFC recommends[2] time=3, and memory=32*1024 is a sensible number. -// If using that amount of memory (32 MB) is not possible in some contexts then -// the time parameter can be increased to compensate. -// -// The time parameter specifies the number of passes over the memory and the -// memory parameter specifies the size of the memory in KiB. For example -// memory=32*1024 sets the memory cost to ~32 MB. The number of threads can be -// adjusted to the number of available CPUs. The cost parameters should be -// increased as memory latency and CPU parallelism increases. Remember to get a -// good random salt. -func Key(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - return deriveKey(argon2i, password, salt, nil, nil, time, memory, threads, keyLen) -} - -// IDKey derives a key from the password, salt, and cost parameters using -// Argon2id returning a byte slice of length keyLen that can be used as -// cryptographic key. The CPU cost and parallelism degree must be greater than -// zero. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: -// -// key := argon2.IDKey([]byte("some password"), salt, 1, 64*1024, 4, 32) -// -// The draft RFC recommends[2] time=1, and memory=64*1024 is a sensible number. -// If using that amount of memory (64 MB) is not possible in some contexts then -// the time parameter can be increased to compensate. -// -// The time parameter specifies the number of passes over the memory and the -// memory parameter specifies the size of the memory in KiB. For example -// memory=64*1024 sets the memory cost to ~64 MB. The number of threads can be -// adjusted to the numbers of available CPUs. The cost parameters should be -// increased as memory latency and CPU parallelism increases. Remember to get a -// good random salt. -func IDKey(password, salt []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - return deriveKey(argon2id, password, salt, nil, nil, time, memory, threads, keyLen) -} - -func deriveKey(mode int, password, salt, secret, data []byte, time, memory uint32, threads uint8, keyLen uint32) []byte { - if time < 1 { - panic("argon2: number of rounds too small") - } - if threads < 1 { - panic("argon2: parallelism degree too low") - } - h0 := initHash(password, salt, secret, data, time, memory, uint32(threads), keyLen, mode) - - memory = memory / (syncPoints * uint32(threads)) * (syncPoints * uint32(threads)) - if memory < 2*syncPoints*uint32(threads) { - memory = 2 * syncPoints * uint32(threads) - } - B := initBlocks(&h0, memory, uint32(threads)) - processBlocks(B, time, memory, uint32(threads), mode) - return extractKey(B, memory, uint32(threads), keyLen) -} - -const ( - blockLength = 128 - syncPoints = 4 -) - -type block [blockLength]uint64 - -func initHash(password, salt, key, data []byte, time, memory, threads, keyLen uint32, mode int) [blake2b.Size + 8]byte { - var ( - h0 [blake2b.Size + 8]byte - params [24]byte - tmp [4]byte - ) - - b2, _ := blake2b.New512(nil) - binary.LittleEndian.PutUint32(params[0:4], threads) - binary.LittleEndian.PutUint32(params[4:8], keyLen) - binary.LittleEndian.PutUint32(params[8:12], memory) - binary.LittleEndian.PutUint32(params[12:16], time) - binary.LittleEndian.PutUint32(params[16:20], uint32(Version)) - binary.LittleEndian.PutUint32(params[20:24], uint32(mode)) - b2.Write(params[:]) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(password))) - b2.Write(tmp[:]) - b2.Write(password) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(salt))) - b2.Write(tmp[:]) - b2.Write(salt) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(key))) - b2.Write(tmp[:]) - b2.Write(key) - binary.LittleEndian.PutUint32(tmp[:], uint32(len(data))) - b2.Write(tmp[:]) - b2.Write(data) - b2.Sum(h0[:0]) - return h0 -} - -func initBlocks(h0 *[blake2b.Size + 8]byte, memory, threads uint32) []block { - var block0 [1024]byte - B := make([]block, memory) - for lane := uint32(0); lane < threads; lane++ { - j := lane * (memory / threads) - binary.LittleEndian.PutUint32(h0[blake2b.Size+4:], lane) - - binary.LittleEndian.PutUint32(h0[blake2b.Size:], 0) - blake2bHash(block0[:], h0[:]) - for i := range B[j+0] { - B[j+0][i] = binary.LittleEndian.Uint64(block0[i*8:]) - } - - binary.LittleEndian.PutUint32(h0[blake2b.Size:], 1) - blake2bHash(block0[:], h0[:]) - for i := range B[j+1] { - B[j+1][i] = binary.LittleEndian.Uint64(block0[i*8:]) - } - } - return B -} - -func processBlocks(B []block, time, memory, threads uint32, mode int) { - lanes := memory / threads - segments := lanes / syncPoints - - processSegment := func(n, slice, lane uint32, wg *sync.WaitGroup) { - var addresses, in, zero block - if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { - in[0] = uint64(n) - in[1] = uint64(lane) - in[2] = uint64(slice) - in[3] = uint64(memory) - in[4] = uint64(time) - in[5] = uint64(mode) - } - - index := uint32(0) - if n == 0 && slice == 0 { - index = 2 // we have already generated the first two blocks - if mode == argon2i || mode == argon2id { - in[6]++ - processBlock(&addresses, &in, &zero) - processBlock(&addresses, &addresses, &zero) - } - } - - offset := lane*lanes + slice*segments + index - var random uint64 - for index < segments { - prev := offset - 1 - if index == 0 && slice == 0 { - prev += lanes // last block in lane - } - if mode == argon2i || (mode == argon2id && n == 0 && slice < syncPoints/2) { - if index%blockLength == 0 { - in[6]++ - processBlock(&addresses, &in, &zero) - processBlock(&addresses, &addresses, &zero) - } - random = addresses[index%blockLength] - } else { - random = B[prev][0] - } - newOffset := indexAlpha(random, lanes, segments, threads, n, slice, lane, index) - processBlockXOR(&B[offset], &B[prev], &B[newOffset]) - index, offset = index+1, offset+1 - } - wg.Done() - } - - for n := uint32(0); n < time; n++ { - for slice := uint32(0); slice < syncPoints; slice++ { - var wg sync.WaitGroup - for lane := uint32(0); lane < threads; lane++ { - wg.Add(1) - go processSegment(n, slice, lane, &wg) - } - wg.Wait() - } - } - -} - -func extractKey(B []block, memory, threads, keyLen uint32) []byte { - lanes := memory / threads - for lane := uint32(0); lane < threads-1; lane++ { - for i, v := range B[(lane*lanes)+lanes-1] { - B[memory-1][i] ^= v - } - } - - var block [1024]byte - for i, v := range B[memory-1] { - binary.LittleEndian.PutUint64(block[i*8:], v) - } - key := make([]byte, keyLen) - blake2bHash(key, block[:]) - return key -} - -func indexAlpha(rand uint64, lanes, segments, threads, n, slice, lane, index uint32) uint32 { - refLane := uint32(rand>>32) % threads - if n == 0 && slice == 0 { - refLane = lane - } - m, s := 3*segments, ((slice+1)%syncPoints)*segments - if lane == refLane { - m += index - } - if n == 0 { - m, s = slice*segments, 0 - if slice == 0 || lane == refLane { - m += index - } - } - if index == 0 || lane == refLane { - m-- - } - return phi(rand, uint64(m), uint64(s), refLane, lanes) -} - -func phi(rand, m, s uint64, lane, lanes uint32) uint32 { - p := rand & 0xFFFFFFFF - p = (p * p) >> 32 - p = (p * m) >> 32 - return lane*lanes + uint32((s+m-(p+1))%uint64(lanes)) -} diff --git a/vendor/golang.org/x/crypto/argon2/blake2b.go b/vendor/golang.org/x/crypto/argon2/blake2b.go deleted file mode 100644 index 10f4694..0000000 --- a/vendor/golang.org/x/crypto/argon2/blake2b.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package argon2 - -import ( - "encoding/binary" - "hash" - - "golang.org/x/crypto/blake2b" -) - -// blake2bHash computes an arbitrary long hash value of in -// and writes the hash to out. -func blake2bHash(out []byte, in []byte) { - var b2 hash.Hash - if n := len(out); n < blake2b.Size { - b2, _ = blake2b.New(n, nil) - } else { - b2, _ = blake2b.New512(nil) - } - - var buffer [blake2b.Size]byte - binary.LittleEndian.PutUint32(buffer[:4], uint32(len(out))) - b2.Write(buffer[:4]) - b2.Write(in) - - if len(out) <= blake2b.Size { - b2.Sum(out[:0]) - return - } - - outLen := len(out) - b2.Sum(buffer[:0]) - b2.Reset() - copy(out, buffer[:32]) - out = out[32:] - for len(out) > blake2b.Size { - b2.Write(buffer[:]) - b2.Sum(buffer[:0]) - copy(out, buffer[:32]) - out = out[32:] - b2.Reset() - } - - if outLen%blake2b.Size > 0 { // outLen > 64 - r := ((outLen + 31) / 32) - 2 // ⌈τ /32⌉-2 - b2, _ = blake2b.New(outLen-32*r, nil) - } - b2.Write(buffer[:]) - b2.Sum(out[:0]) -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go b/vendor/golang.org/x/crypto/argon2/blamka_amd64.go deleted file mode 100644 index 2fc1ec0..0000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_amd64.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!gccgo,!appengine - -package argon2 - -import "golang.org/x/sys/cpu" - -func init() { - useSSE4 = cpu.X86.HasSSE41 -} - -//go:noescape -func mixBlocksSSE2(out, a, b, c *block) - -//go:noescape -func xorBlocksSSE2(out, a, b, c *block) - -//go:noescape -func blamkaSSE4(b *block) - -func processBlockSSE(out, in1, in2 *block, xor bool) { - var t block - mixBlocksSSE2(&t, in1, in2, &t) - if useSSE4 { - blamkaSSE4(&t) - } else { - for i := 0; i < blockLength; i += 16 { - blamkaGeneric( - &t[i+0], &t[i+1], &t[i+2], &t[i+3], - &t[i+4], &t[i+5], &t[i+6], &t[i+7], - &t[i+8], &t[i+9], &t[i+10], &t[i+11], - &t[i+12], &t[i+13], &t[i+14], &t[i+15], - ) - } - for i := 0; i < blockLength/8; i += 2 { - blamkaGeneric( - &t[i], &t[i+1], &t[16+i], &t[16+i+1], - &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], - &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], - &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], - ) - } - } - if xor { - xorBlocksSSE2(out, in1, in2, &t) - } else { - mixBlocksSSE2(out, in1, in2, &t) - } -} - -func processBlock(out, in1, in2 *block) { - processBlockSSE(out, in1, in2, false) -} - -func processBlockXOR(out, in1, in2 *block) { - processBlockSSE(out, in1, in2, true) -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s deleted file mode 100644 index 74a6e73..0000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48) \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFD $0xB1, v6, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - PSHUFB c40, v2; \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFB c48, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - MOVO v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v7, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - PSHUFB c40, v3; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFB c48, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - MOVO v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG_0(block, off) \ - MOVOU 8*(off+0)(block), X0; \ - MOVOU 8*(off+2)(block), X1; \ - MOVOU 8*(off+4)(block), X2; \ - MOVOU 8*(off+6)(block), X3; \ - MOVOU 8*(off+8)(block), X4; \ - MOVOU 8*(off+10)(block), X5; \ - MOVOU 8*(off+12)(block), X6; \ - MOVOU 8*(off+14)(block), X7 - -#define STORE_MSG_0(block, off) \ - MOVOU X0, 8*(off+0)(block); \ - MOVOU X1, 8*(off+2)(block); \ - MOVOU X2, 8*(off+4)(block); \ - MOVOU X3, 8*(off+6)(block); \ - MOVOU X4, 8*(off+8)(block); \ - MOVOU X5, 8*(off+10)(block); \ - MOVOU X6, 8*(off+12)(block); \ - MOVOU X7, 8*(off+14)(block) - -#define LOAD_MSG_1(block, off) \ - MOVOU 8*off+0*8(block), X0; \ - MOVOU 8*off+16*8(block), X1; \ - MOVOU 8*off+32*8(block), X2; \ - MOVOU 8*off+48*8(block), X3; \ - MOVOU 8*off+64*8(block), X4; \ - MOVOU 8*off+80*8(block), X5; \ - MOVOU 8*off+96*8(block), X6; \ - MOVOU 8*off+112*8(block), X7 - -#define STORE_MSG_1(block, off) \ - MOVOU X0, 8*off+0*8(block); \ - MOVOU X1, 8*off+16*8(block); \ - MOVOU X2, 8*off+32*8(block); \ - MOVOU X3, 8*off+48*8(block); \ - MOVOU X4, 8*off+64*8(block); \ - MOVOU X5, 8*off+80*8(block); \ - MOVOU X6, 8*off+96*8(block); \ - MOVOU X7, 8*off+112*8(block) - -#define BLAMKA_ROUND_0(block, off, t0, t1, c40, c48) \ - LOAD_MSG_0(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_0(block, off) - -#define BLAMKA_ROUND_1(block, off, t0, t1, c40, c48) \ - LOAD_MSG_1(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_1(block, off) - -// func blamkaSSE4(b *block) -TEXT ·blamkaSSE4(SB), 4, $0-8 - MOVQ b+0(FP), AX - - MOVOU ·c40<>(SB), X10 - MOVOU ·c48<>(SB), X11 - - BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11) - - BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11) - RET - -// func mixBlocksSSE2(out, a, b, c *block) -TEXT ·mixBlocksSSE2(SB), 4, $0-32 - MOVQ out+0(FP), DX - MOVQ a+8(FP), AX - MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP - -loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 - PXOR X1, X0 - PXOR X2, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, BP - JA loop - RET - -// func xorBlocksSSE2(out, a, b, c *block) -TEXT ·xorBlocksSSE2(SB), 4, $0-32 - MOVQ out+0(FP), DX - MOVQ a+8(FP), AX - MOVQ b+16(FP), BX - MOVQ a+24(FP), CX - MOVQ $128, BP - -loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 - MOVOU 0(DX), X3 - PXOR X1, X0 - PXOR X2, X0 - PXOR X3, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, BP - JA loop - RET diff --git a/vendor/golang.org/x/crypto/argon2/blamka_generic.go b/vendor/golang.org/x/crypto/argon2/blamka_generic.go deleted file mode 100644 index a481b22..0000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_generic.go +++ /dev/null @@ -1,163 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package argon2 - -var useSSE4 bool - -func processBlockGeneric(out, in1, in2 *block, xor bool) { - var t block - for i := range t { - t[i] = in1[i] ^ in2[i] - } - for i := 0; i < blockLength; i += 16 { - blamkaGeneric( - &t[i+0], &t[i+1], &t[i+2], &t[i+3], - &t[i+4], &t[i+5], &t[i+6], &t[i+7], - &t[i+8], &t[i+9], &t[i+10], &t[i+11], - &t[i+12], &t[i+13], &t[i+14], &t[i+15], - ) - } - for i := 0; i < blockLength/8; i += 2 { - blamkaGeneric( - &t[i], &t[i+1], &t[16+i], &t[16+i+1], - &t[32+i], &t[32+i+1], &t[48+i], &t[48+i+1], - &t[64+i], &t[64+i+1], &t[80+i], &t[80+i+1], - &t[96+i], &t[96+i+1], &t[112+i], &t[112+i+1], - ) - } - if xor { - for i := range t { - out[i] ^= in1[i] ^ in2[i] ^ t[i] - } - } else { - for i := range t { - out[i] = in1[i] ^ in2[i] ^ t[i] - } - } -} - -func blamkaGeneric(t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10, t11, t12, t13, t14, t15 *uint64) { - v00, v01, v02, v03 := *t00, *t01, *t02, *t03 - v04, v05, v06, v07 := *t04, *t05, *t06, *t07 - v08, v09, v10, v11 := *t08, *t09, *t10, *t11 - v12, v13, v14, v15 := *t12, *t13, *t14, *t15 - - v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) - v12 ^= v00 - v12 = v12>>32 | v12<<32 - v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) - v04 ^= v08 - v04 = v04>>24 | v04<<40 - - v00 += v04 + 2*uint64(uint32(v00))*uint64(uint32(v04)) - v12 ^= v00 - v12 = v12>>16 | v12<<48 - v08 += v12 + 2*uint64(uint32(v08))*uint64(uint32(v12)) - v04 ^= v08 - v04 = v04>>63 | v04<<1 - - v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) - v13 ^= v01 - v13 = v13>>32 | v13<<32 - v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) - v05 ^= v09 - v05 = v05>>24 | v05<<40 - - v01 += v05 + 2*uint64(uint32(v01))*uint64(uint32(v05)) - v13 ^= v01 - v13 = v13>>16 | v13<<48 - v09 += v13 + 2*uint64(uint32(v09))*uint64(uint32(v13)) - v05 ^= v09 - v05 = v05>>63 | v05<<1 - - v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) - v14 ^= v02 - v14 = v14>>32 | v14<<32 - v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) - v06 ^= v10 - v06 = v06>>24 | v06<<40 - - v02 += v06 + 2*uint64(uint32(v02))*uint64(uint32(v06)) - v14 ^= v02 - v14 = v14>>16 | v14<<48 - v10 += v14 + 2*uint64(uint32(v10))*uint64(uint32(v14)) - v06 ^= v10 - v06 = v06>>63 | v06<<1 - - v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) - v15 ^= v03 - v15 = v15>>32 | v15<<32 - v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) - v07 ^= v11 - v07 = v07>>24 | v07<<40 - - v03 += v07 + 2*uint64(uint32(v03))*uint64(uint32(v07)) - v15 ^= v03 - v15 = v15>>16 | v15<<48 - v11 += v15 + 2*uint64(uint32(v11))*uint64(uint32(v15)) - v07 ^= v11 - v07 = v07>>63 | v07<<1 - - v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) - v15 ^= v00 - v15 = v15>>32 | v15<<32 - v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) - v05 ^= v10 - v05 = v05>>24 | v05<<40 - - v00 += v05 + 2*uint64(uint32(v00))*uint64(uint32(v05)) - v15 ^= v00 - v15 = v15>>16 | v15<<48 - v10 += v15 + 2*uint64(uint32(v10))*uint64(uint32(v15)) - v05 ^= v10 - v05 = v05>>63 | v05<<1 - - v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) - v12 ^= v01 - v12 = v12>>32 | v12<<32 - v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) - v06 ^= v11 - v06 = v06>>24 | v06<<40 - - v01 += v06 + 2*uint64(uint32(v01))*uint64(uint32(v06)) - v12 ^= v01 - v12 = v12>>16 | v12<<48 - v11 += v12 + 2*uint64(uint32(v11))*uint64(uint32(v12)) - v06 ^= v11 - v06 = v06>>63 | v06<<1 - - v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) - v13 ^= v02 - v13 = v13>>32 | v13<<32 - v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) - v07 ^= v08 - v07 = v07>>24 | v07<<40 - - v02 += v07 + 2*uint64(uint32(v02))*uint64(uint32(v07)) - v13 ^= v02 - v13 = v13>>16 | v13<<48 - v08 += v13 + 2*uint64(uint32(v08))*uint64(uint32(v13)) - v07 ^= v08 - v07 = v07>>63 | v07<<1 - - v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) - v14 ^= v03 - v14 = v14>>32 | v14<<32 - v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) - v04 ^= v09 - v04 = v04>>24 | v04<<40 - - v03 += v04 + 2*uint64(uint32(v03))*uint64(uint32(v04)) - v14 ^= v03 - v14 = v14>>16 | v14<<48 - v09 += v14 + 2*uint64(uint32(v09))*uint64(uint32(v14)) - v04 ^= v09 - v04 = v04>>63 | v04<<1 - - *t00, *t01, *t02, *t03 = v00, v01, v02, v03 - *t04, *t05, *t06, *t07 = v04, v05, v06, v07 - *t08, *t09, *t10, *t11 = v08, v09, v10, v11 - *t12, *t13, *t14, *t15 = v12, v13, v14, v15 -} diff --git a/vendor/golang.org/x/crypto/argon2/blamka_ref.go b/vendor/golang.org/x/crypto/argon2/blamka_ref.go deleted file mode 100644 index baf7b55..0000000 --- a/vendor/golang.org/x/crypto/argon2/blamka_ref.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !amd64 appengine gccgo - -package argon2 - -func processBlock(out, in1, in2 *block) { - processBlockGeneric(out, in1, in2, false) -} - -func processBlockXOR(out, in1, in2 *block) { - processBlockGeneric(out, in1, in2, true) -} diff --git a/vendor/golang.org/x/crypto/bcrypt/base64.go b/vendor/golang.org/x/crypto/bcrypt/base64.go deleted file mode 100644 index fc31160..0000000 --- a/vendor/golang.org/x/crypto/bcrypt/base64.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bcrypt - -import "encoding/base64" - -const alphabet = "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - -var bcEncoding = base64.NewEncoding(alphabet) - -func base64Encode(src []byte) []byte { - n := bcEncoding.EncodedLen(len(src)) - dst := make([]byte, n) - bcEncoding.Encode(dst, src) - for dst[n-1] == '=' { - n-- - } - return dst[:n] -} - -func base64Decode(src []byte) ([]byte, error) { - numOfEquals := 4 - (len(src) % 4) - for i := 0; i < numOfEquals; i++ { - src = append(src, '=') - } - - dst := make([]byte, bcEncoding.DecodedLen(len(src))) - n, err := bcEncoding.Decode(dst, src) - if err != nil { - return nil, err - } - return dst[:n], nil -} diff --git a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go b/vendor/golang.org/x/crypto/bcrypt/bcrypt.go deleted file mode 100644 index aeb73f8..0000000 --- a/vendor/golang.org/x/crypto/bcrypt/bcrypt.go +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package bcrypt implements Provos and Mazières's bcrypt adaptive hashing -// algorithm. See http://www.usenix.org/event/usenix99/provos/provos.pdf -package bcrypt // import "golang.org/x/crypto/bcrypt" - -// The code is a port of Provos and Mazières's C implementation. -import ( - "crypto/rand" - "crypto/subtle" - "errors" - "fmt" - "io" - "strconv" - - "golang.org/x/crypto/blowfish" -) - -const ( - MinCost int = 4 // the minimum allowable cost as passed in to GenerateFromPassword - MaxCost int = 31 // the maximum allowable cost as passed in to GenerateFromPassword - DefaultCost int = 10 // the cost that will actually be set if a cost below MinCost is passed into GenerateFromPassword -) - -// The error returned from CompareHashAndPassword when a password and hash do -// not match. -var ErrMismatchedHashAndPassword = errors.New("crypto/bcrypt: hashedPassword is not the hash of the given password") - -// The error returned from CompareHashAndPassword when a hash is too short to -// be a bcrypt hash. -var ErrHashTooShort = errors.New("crypto/bcrypt: hashedSecret too short to be a bcrypted password") - -// The error returned from CompareHashAndPassword when a hash was created with -// a bcrypt algorithm newer than this implementation. -type HashVersionTooNewError byte - -func (hv HashVersionTooNewError) Error() string { - return fmt.Sprintf("crypto/bcrypt: bcrypt algorithm version '%c' requested is newer than current version '%c'", byte(hv), majorVersion) -} - -// The error returned from CompareHashAndPassword when a hash starts with something other than '$' -type InvalidHashPrefixError byte - -func (ih InvalidHashPrefixError) Error() string { - return fmt.Sprintf("crypto/bcrypt: bcrypt hashes must start with '$', but hashedSecret started with '%c'", byte(ih)) -} - -type InvalidCostError int - -func (ic InvalidCostError) Error() string { - return fmt.Sprintf("crypto/bcrypt: cost %d is outside allowed range (%d,%d)", int(ic), int(MinCost), int(MaxCost)) -} - -const ( - majorVersion = '2' - minorVersion = 'a' - maxSaltSize = 16 - maxCryptedHashSize = 23 - encodedSaltSize = 22 - encodedHashSize = 31 - minHashSize = 59 -) - -// magicCipherData is an IV for the 64 Blowfish encryption calls in -// bcrypt(). It's the string "OrpheanBeholderScryDoubt" in big-endian bytes. -var magicCipherData = []byte{ - 0x4f, 0x72, 0x70, 0x68, - 0x65, 0x61, 0x6e, 0x42, - 0x65, 0x68, 0x6f, 0x6c, - 0x64, 0x65, 0x72, 0x53, - 0x63, 0x72, 0x79, 0x44, - 0x6f, 0x75, 0x62, 0x74, -} - -type hashed struct { - hash []byte - salt []byte - cost int // allowed range is MinCost to MaxCost - major byte - minor byte -} - -// GenerateFromPassword returns the bcrypt hash of the password at the given -// cost. If the cost given is less than MinCost, the cost will be set to -// DefaultCost, instead. Use CompareHashAndPassword, as defined in this package, -// to compare the returned hashed password with its cleartext version. -func GenerateFromPassword(password []byte, cost int) ([]byte, error) { - p, err := newFromPassword(password, cost) - if err != nil { - return nil, err - } - return p.Hash(), nil -} - -// CompareHashAndPassword compares a bcrypt hashed password with its possible -// plaintext equivalent. Returns nil on success, or an error on failure. -func CompareHashAndPassword(hashedPassword, password []byte) error { - p, err := newFromHash(hashedPassword) - if err != nil { - return err - } - - otherHash, err := bcrypt(password, p.cost, p.salt) - if err != nil { - return err - } - - otherP := &hashed{otherHash, p.salt, p.cost, p.major, p.minor} - if subtle.ConstantTimeCompare(p.Hash(), otherP.Hash()) == 1 { - return nil - } - - return ErrMismatchedHashAndPassword -} - -// Cost returns the hashing cost used to create the given hashed -// password. When, in the future, the hashing cost of a password system needs -// to be increased in order to adjust for greater computational power, this -// function allows one to establish which passwords need to be updated. -func Cost(hashedPassword []byte) (int, error) { - p, err := newFromHash(hashedPassword) - if err != nil { - return 0, err - } - return p.cost, nil -} - -func newFromPassword(password []byte, cost int) (*hashed, error) { - if cost < MinCost { - cost = DefaultCost - } - p := new(hashed) - p.major = majorVersion - p.minor = minorVersion - - err := checkCost(cost) - if err != nil { - return nil, err - } - p.cost = cost - - unencodedSalt := make([]byte, maxSaltSize) - _, err = io.ReadFull(rand.Reader, unencodedSalt) - if err != nil { - return nil, err - } - - p.salt = base64Encode(unencodedSalt) - hash, err := bcrypt(password, p.cost, p.salt) - if err != nil { - return nil, err - } - p.hash = hash - return p, err -} - -func newFromHash(hashedSecret []byte) (*hashed, error) { - if len(hashedSecret) < minHashSize { - return nil, ErrHashTooShort - } - p := new(hashed) - n, err := p.decodeVersion(hashedSecret) - if err != nil { - return nil, err - } - hashedSecret = hashedSecret[n:] - n, err = p.decodeCost(hashedSecret) - if err != nil { - return nil, err - } - hashedSecret = hashedSecret[n:] - - // The "+2" is here because we'll have to append at most 2 '=' to the salt - // when base64 decoding it in expensiveBlowfishSetup(). - p.salt = make([]byte, encodedSaltSize, encodedSaltSize+2) - copy(p.salt, hashedSecret[:encodedSaltSize]) - - hashedSecret = hashedSecret[encodedSaltSize:] - p.hash = make([]byte, len(hashedSecret)) - copy(p.hash, hashedSecret) - - return p, nil -} - -func bcrypt(password []byte, cost int, salt []byte) ([]byte, error) { - cipherData := make([]byte, len(magicCipherData)) - copy(cipherData, magicCipherData) - - c, err := expensiveBlowfishSetup(password, uint32(cost), salt) - if err != nil { - return nil, err - } - - for i := 0; i < 24; i += 8 { - for j := 0; j < 64; j++ { - c.Encrypt(cipherData[i:i+8], cipherData[i:i+8]) - } - } - - // Bug compatibility with C bcrypt implementations. We only encode 23 of - // the 24 bytes encrypted. - hsh := base64Encode(cipherData[:maxCryptedHashSize]) - return hsh, nil -} - -func expensiveBlowfishSetup(key []byte, cost uint32, salt []byte) (*blowfish.Cipher, error) { - csalt, err := base64Decode(salt) - if err != nil { - return nil, err - } - - // Bug compatibility with C bcrypt implementations. They use the trailing - // NULL in the key string during expansion. - // We copy the key to prevent changing the underlying array. - ckey := append(key[:len(key):len(key)], 0) - - c, err := blowfish.NewSaltedCipher(ckey, csalt) - if err != nil { - return nil, err - } - - var i, rounds uint64 - rounds = 1 << cost - for i = 0; i < rounds; i++ { - blowfish.ExpandKey(ckey, c) - blowfish.ExpandKey(csalt, c) - } - - return c, nil -} - -func (p *hashed) Hash() []byte { - arr := make([]byte, 60) - arr[0] = '$' - arr[1] = p.major - n := 2 - if p.minor != 0 { - arr[2] = p.minor - n = 3 - } - arr[n] = '$' - n++ - copy(arr[n:], []byte(fmt.Sprintf("%02d", p.cost))) - n += 2 - arr[n] = '$' - n++ - copy(arr[n:], p.salt) - n += encodedSaltSize - copy(arr[n:], p.hash) - n += encodedHashSize - return arr[:n] -} - -func (p *hashed) decodeVersion(sbytes []byte) (int, error) { - if sbytes[0] != '$' { - return -1, InvalidHashPrefixError(sbytes[0]) - } - if sbytes[1] > majorVersion { - return -1, HashVersionTooNewError(sbytes[1]) - } - p.major = sbytes[1] - n := 3 - if sbytes[2] != '$' { - p.minor = sbytes[2] - n++ - } - return n, nil -} - -// sbytes should begin where decodeVersion left off. -func (p *hashed) decodeCost(sbytes []byte) (int, error) { - cost, err := strconv.Atoi(string(sbytes[0:2])) - if err != nil { - return -1, err - } - err = checkCost(cost) - if err != nil { - return -1, err - } - p.cost = cost - return 3, nil -} - -func (p *hashed) String() string { - return fmt.Sprintf("&{hash: %#v, salt: %#v, cost: %d, major: %c, minor: %c}", string(p.hash), p.salt, p.cost, p.major, p.minor) -} - -func checkCost(cost int) error { - if cost < MinCost || cost > MaxCost { - return InvalidCostError(cost) - } - return nil -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b.go b/vendor/golang.org/x/crypto/blake2b/blake2b.go deleted file mode 100644 index c160e1a..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b.go +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package blake2b implements the BLAKE2b hash algorithm defined by RFC 7693 -// and the extendable output function (XOF) BLAKE2Xb. -// -// For a detailed specification of BLAKE2b see https://blake2.net/blake2.pdf -// and for BLAKE2Xb see https://blake2.net/blake2x.pdf -// -// If you aren't sure which function you need, use BLAKE2b (Sum512 or New512). -// If you need a secret-key MAC (message authentication code), use the New512 -// function with a non-nil key. -// -// BLAKE2X is a construction to compute hash values larger than 64 bytes. It -// can produce hash values between 0 and 4 GiB. -package blake2b - -import ( - "encoding/binary" - "errors" - "hash" -) - -const ( - // The blocksize of BLAKE2b in bytes. - BlockSize = 128 - // The hash size of BLAKE2b-512 in bytes. - Size = 64 - // The hash size of BLAKE2b-384 in bytes. - Size384 = 48 - // The hash size of BLAKE2b-256 in bytes. - Size256 = 32 -) - -var ( - useAVX2 bool - useAVX bool - useSSE4 bool -) - -var ( - errKeySize = errors.New("blake2b: invalid key size") - errHashSize = errors.New("blake2b: invalid hash size") -) - -var iv = [8]uint64{ - 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, - 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179, -} - -// Sum512 returns the BLAKE2b-512 checksum of the data. -func Sum512(data []byte) [Size]byte { - var sum [Size]byte - checkSum(&sum, Size, data) - return sum -} - -// Sum384 returns the BLAKE2b-384 checksum of the data. -func Sum384(data []byte) [Size384]byte { - var sum [Size]byte - var sum384 [Size384]byte - checkSum(&sum, Size384, data) - copy(sum384[:], sum[:Size384]) - return sum384 -} - -// Sum256 returns the BLAKE2b-256 checksum of the data. -func Sum256(data []byte) [Size256]byte { - var sum [Size]byte - var sum256 [Size256]byte - checkSum(&sum, Size256, data) - copy(sum256[:], sum[:Size256]) - return sum256 -} - -// New512 returns a new hash.Hash computing the BLAKE2b-512 checksum. A non-nil -// key turns the hash into a MAC. The key must be between zero and 64 bytes long. -func New512(key []byte) (hash.Hash, error) { return newDigest(Size, key) } - -// New384 returns a new hash.Hash computing the BLAKE2b-384 checksum. A non-nil -// key turns the hash into a MAC. The key must be between zero and 64 bytes long. -func New384(key []byte) (hash.Hash, error) { return newDigest(Size384, key) } - -// New256 returns a new hash.Hash computing the BLAKE2b-256 checksum. A non-nil -// key turns the hash into a MAC. The key must be between zero and 64 bytes long. -func New256(key []byte) (hash.Hash, error) { return newDigest(Size256, key) } - -// New returns a new hash.Hash computing the BLAKE2b checksum with a custom length. -// A non-nil key turns the hash into a MAC. The key must be between zero and 64 bytes long. -// The hash size can be a value between 1 and 64 but it is highly recommended to use -// values equal or greater than: -// - 32 if BLAKE2b is used as a hash function (The key is zero bytes long). -// - 16 if BLAKE2b is used as a MAC function (The key is at least 16 bytes long). -// When the key is nil, the returned hash.Hash implements BinaryMarshaler -// and BinaryUnmarshaler for state (de)serialization as documented by hash.Hash. -func New(size int, key []byte) (hash.Hash, error) { return newDigest(size, key) } - -func newDigest(hashSize int, key []byte) (*digest, error) { - if hashSize < 1 || hashSize > Size { - return nil, errHashSize - } - if len(key) > Size { - return nil, errKeySize - } - d := &digest{ - size: hashSize, - keyLen: len(key), - } - copy(d.key[:], key) - d.Reset() - return d, nil -} - -func checkSum(sum *[Size]byte, hashSize int, data []byte) { - h := iv - h[0] ^= uint64(hashSize) | (1 << 16) | (1 << 24) - var c [2]uint64 - - if length := len(data); length > BlockSize { - n := length &^ (BlockSize - 1) - if length == n { - n -= BlockSize - } - hashBlocks(&h, &c, 0, data[:n]) - data = data[n:] - } - - var block [BlockSize]byte - offset := copy(block[:], data) - remaining := uint64(BlockSize - offset) - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) - - for i, v := range h[:(hashSize+7)/8] { - binary.LittleEndian.PutUint64(sum[8*i:], v) - } -} - -type digest struct { - h [8]uint64 - c [2]uint64 - size int - block [BlockSize]byte - offset int - - key [BlockSize]byte - keyLen int -} - -const ( - magic = "b2b" - marshaledSize = len(magic) + 8*8 + 2*8 + 1 + BlockSize + 1 -) - -func (d *digest) MarshalBinary() ([]byte, error) { - if d.keyLen != 0 { - return nil, errors.New("crypto/blake2b: cannot marshal MACs") - } - b := make([]byte, 0, marshaledSize) - b = append(b, magic...) - for i := 0; i < 8; i++ { - b = appendUint64(b, d.h[i]) - } - b = appendUint64(b, d.c[0]) - b = appendUint64(b, d.c[1]) - // Maximum value for size is 64 - b = append(b, byte(d.size)) - b = append(b, d.block[:]...) - b = append(b, byte(d.offset)) - return b, nil -} - -func (d *digest) UnmarshalBinary(b []byte) error { - if len(b) < len(magic) || string(b[:len(magic)]) != magic { - return errors.New("crypto/blake2b: invalid hash state identifier") - } - if len(b) != marshaledSize { - return errors.New("crypto/blake2b: invalid hash state size") - } - b = b[len(magic):] - for i := 0; i < 8; i++ { - b, d.h[i] = consumeUint64(b) - } - b, d.c[0] = consumeUint64(b) - b, d.c[1] = consumeUint64(b) - d.size = int(b[0]) - b = b[1:] - copy(d.block[:], b[:BlockSize]) - b = b[BlockSize:] - d.offset = int(b[0]) - return nil -} - -func (d *digest) BlockSize() int { return BlockSize } - -func (d *digest) Size() int { return d.size } - -func (d *digest) Reset() { - d.h = iv - d.h[0] ^= uint64(d.size) | (uint64(d.keyLen) << 8) | (1 << 16) | (1 << 24) - d.offset, d.c[0], d.c[1] = 0, 0, 0 - if d.keyLen > 0 { - d.block = d.key - d.offset = BlockSize - } -} - -func (d *digest) Write(p []byte) (n int, err error) { - n = len(p) - - if d.offset > 0 { - remaining := BlockSize - d.offset - if n <= remaining { - d.offset += copy(d.block[d.offset:], p) - return - } - copy(d.block[d.offset:], p[:remaining]) - hashBlocks(&d.h, &d.c, 0, d.block[:]) - d.offset = 0 - p = p[remaining:] - } - - if length := len(p); length > BlockSize { - nn := length &^ (BlockSize - 1) - if length == nn { - nn -= BlockSize - } - hashBlocks(&d.h, &d.c, 0, p[:nn]) - p = p[nn:] - } - - if len(p) > 0 { - d.offset += copy(d.block[:], p) - } - - return -} - -func (d *digest) Sum(sum []byte) []byte { - var hash [Size]byte - d.finalize(&hash) - return append(sum, hash[:d.size]...) -} - -func (d *digest) finalize(hash *[Size]byte) { - var block [BlockSize]byte - copy(block[:], d.block[:d.offset]) - remaining := uint64(BlockSize - d.offset) - - c := d.c - if c[0] < remaining { - c[1]-- - } - c[0] -= remaining - - h := d.h - hashBlocks(&h, &c, 0xFFFFFFFFFFFFFFFF, block[:]) - - for i, v := range h { - binary.LittleEndian.PutUint64(hash[8*i:], v) - } -} - -func appendUint64(b []byte, x uint64) []byte { - var a [8]byte - binary.BigEndian.PutUint64(a[:], x) - return append(b, a[:]...) -} - -func appendUint32(b []byte, x uint32) []byte { - var a [4]byte - binary.BigEndian.PutUint32(a[:], x) - return append(b, a[:]...) -} - -func consumeUint64(b []byte) ([]byte, uint64) { - x := binary.BigEndian.Uint64(b) - return b[8:], x -} - -func consumeUint32(b []byte) ([]byte, uint32) { - x := binary.BigEndian.Uint32(b) - return b[4:], x -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go deleted file mode 100644 index 4d31dd0..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.7,amd64,!gccgo,!appengine - -package blake2b - -import "golang.org/x/sys/cpu" - -func init() { - useAVX2 = cpu.X86.HasAVX2 - useAVX = cpu.X86.HasAVX - useSSE4 = cpu.X86.HasSSE41 -} - -//go:noescape -func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -//go:noescape -func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -//go:noescape -func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - switch { - case useAVX2: - hashBlocksAVX2(h, c, flag, blocks) - case useAVX: - hashBlocksAVX(h, c, flag, blocks) - case useSSE4: - hashBlocksSSE4(h, c, flag, blocks) - default: - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s deleted file mode 100644 index 5593b1b..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s +++ /dev/null @@ -1,750 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.7,amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·AVX2_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX2_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -DATA ·AVX2_iv0<>+0x10(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX2_iv0<>+0x18(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX2_iv0<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_iv1<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX2_iv1<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -DATA ·AVX2_iv1<>+0x10(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX2_iv1<>+0x18(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX2_iv1<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -DATA ·AVX2_c40<>+0x10(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x18(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX2_c40<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -DATA ·AVX2_c48<>+0x10(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x18(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX2_c48<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·AVX_iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX_iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX_iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX_iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·AVX_iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX_iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX_iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX_c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX_c48<>(SB), (NOPTR+RODATA), $16 - -#define VPERMQ_0x39_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x39 -#define VPERMQ_0x93_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x93 -#define VPERMQ_0x4E_Y2_Y2 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xd2; BYTE $0x4e -#define VPERMQ_0x93_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x93 -#define VPERMQ_0x39_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x39 - -#define ROUND_AVX2(m0, m1, m2, m3, t, c40, c48) \ - VPADDQ m0, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m1, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y1_Y1; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y3_Y3; \ - VPADDQ m2, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m3, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y3_Y3; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y1_Y1 - -#define VMOVQ_SI_X11_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x1E -#define VMOVQ_SI_X12_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x26 -#define VMOVQ_SI_X13_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x2E -#define VMOVQ_SI_X14_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x36 -#define VMOVQ_SI_X15_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x3E - -#define VMOVQ_SI_X11(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x5E; BYTE $n -#define VMOVQ_SI_X12(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x66; BYTE $n -#define VMOVQ_SI_X13(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x6E; BYTE $n -#define VMOVQ_SI_X14(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x76; BYTE $n -#define VMOVQ_SI_X15(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x7E; BYTE $n - -#define VPINSRQ_1_SI_X11_0 BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x1E; BYTE $0x01 -#define VPINSRQ_1_SI_X12_0 BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x26; BYTE $0x01 -#define VPINSRQ_1_SI_X13_0 BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x2E; BYTE $0x01 -#define VPINSRQ_1_SI_X14_0 BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x36; BYTE $0x01 -#define VPINSRQ_1_SI_X15_0 BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x3E; BYTE $0x01 - -#define VPINSRQ_1_SI_X11(n) BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x5E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X12(n) BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x66; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X13(n) BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x6E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X14(n) BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x76; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X15(n) BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x7E; BYTE $n; BYTE $0x01 - -#define VMOVQ_R8_X15 BYTE $0xC4; BYTE $0x41; BYTE $0xF9; BYTE $0x6E; BYTE $0xF8 -#define VPINSRQ_1_R9_X15 BYTE $0xC4; BYTE $0x43; BYTE $0x81; BYTE $0x22; BYTE $0xF9; BYTE $0x01 - -// load msg: Y12 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y12(i0, i1, i2, i3) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y12, Y12 - -// load msg: Y13 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y13(i0, i1, i2, i3) \ - VMOVQ_SI_X13(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X13(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y13, Y13 - -// load msg: Y14 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y14(i0, i1, i2, i3) \ - VMOVQ_SI_X14(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X14(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y14, Y14 - -// load msg: Y15 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y15(i0, i1, i2, i3) \ - VMOVQ_SI_X15(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X15(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X11(6*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(1, 3, 5, 7); \ - LOAD_MSG_AVX2_Y14(8, 10, 12, 14); \ - LOAD_MSG_AVX2_Y15(9, 11, 13, 15) - -#define LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() \ - LOAD_MSG_AVX2_Y12(14, 4, 9, 13); \ - LOAD_MSG_AVX2_Y13(10, 8, 15, 6); \ - VMOVQ_SI_X11(11*8); \ - VPSHUFD $0x4E, 0*8(SI), X14; \ - VPINSRQ_1_SI_X11(5*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(12, 2, 7, 3) - -#define LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() \ - VMOVQ_SI_X11(5*8); \ - VMOVDQU 11*8(SI), X12; \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - VMOVQ_SI_X13(8*8); \ - VMOVQ_SI_X11(2*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X11(13*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(10, 3, 7, 9); \ - LOAD_MSG_AVX2_Y15(14, 6, 1, 4) - -#define LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() \ - LOAD_MSG_AVX2_Y12(7, 3, 13, 11); \ - LOAD_MSG_AVX2_Y13(9, 1, 12, 14); \ - LOAD_MSG_AVX2_Y14(2, 5, 4, 15); \ - VMOVQ_SI_X15(6*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X15(10*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() \ - LOAD_MSG_AVX2_Y12(9, 5, 2, 10); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X13(7*8); \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(14, 11, 6, 3); \ - LOAD_MSG_AVX2_Y15(1, 12, 8, 13) - -#define LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(12, 10, 11, 3); \ - LOAD_MSG_AVX2_Y14(4, 7, 15, 1); \ - LOAD_MSG_AVX2_Y15(13, 5, 14, 9) - -#define LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() \ - LOAD_MSG_AVX2_Y12(12, 1, 14, 4); \ - LOAD_MSG_AVX2_Y13(5, 15, 13, 10); \ - VMOVQ_SI_X14_0; \ - VPSHUFD $0x4E, 8*8(SI), X11; \ - VPINSRQ_1_SI_X14(6*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(7, 3, 2, 11) - -#define LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() \ - LOAD_MSG_AVX2_Y12(13, 7, 12, 3); \ - LOAD_MSG_AVX2_Y13(11, 14, 1, 9); \ - LOAD_MSG_AVX2_Y14(5, 15, 8, 2); \ - VMOVQ_SI_X15_0; \ - VMOVQ_SI_X11(6*8); \ - VPINSRQ_1_SI_X15(4*8); \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() \ - VMOVQ_SI_X12(6*8); \ - VMOVQ_SI_X11(11*8); \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(15, 9, 3, 8); \ - VMOVQ_SI_X11(1*8); \ - VMOVDQU 12*8(SI), X14; \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - VMOVQ_SI_X15(2*8); \ - VMOVDQU 4*8(SI), X11; \ - VPINSRQ_1_SI_X15(7*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() \ - LOAD_MSG_AVX2_Y12(10, 8, 7, 1); \ - VMOVQ_SI_X13(2*8); \ - VPSHUFD $0x4E, 5*8(SI), X11; \ - VPINSRQ_1_SI_X13(4*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(15, 9, 3, 13); \ - VMOVQ_SI_X15(11*8); \ - VMOVQ_SI_X11(12*8); \ - VPINSRQ_1_SI_X15(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y15, Y15 - -// func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX2(SB), 4, $320-48 // frame size = 288 + 32 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, DX - MOVQ SP, R9 - ADDQ $31, R9 - ANDQ $~31, R9 - MOVQ R9, SP - - MOVQ CX, 16(SP) - XORQ CX, CX - MOVQ CX, 24(SP) - - VMOVDQU ·AVX2_c40<>(SB), Y4 - VMOVDQU ·AVX2_c48<>(SB), Y5 - - VMOVDQU 0(AX), Y8 - VMOVDQU 32(AX), Y9 - VMOVDQU ·AVX2_iv0<>(SB), Y6 - VMOVDQU ·AVX2_iv1<>(SB), Y7 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - MOVQ R9, 8(SP) - -loop: - ADDQ $128, R8 - MOVQ R8, 0(SP) - CMPQ R8, $128 - JGE noinc - INCQ R9 - MOVQ R9, 8(SP) - -noinc: - VMOVDQA Y8, Y0 - VMOVDQA Y9, Y1 - VMOVDQA Y6, Y2 - VPXOR 0(SP), Y7, Y3 - - LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() - VMOVDQA Y12, 32(SP) - VMOVDQA Y13, 64(SP) - VMOVDQA Y14, 96(SP) - VMOVDQA Y15, 128(SP) - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() - VMOVDQA Y12, 160(SP) - VMOVDQA Y13, 192(SP) - VMOVDQA Y14, 224(SP) - VMOVDQA Y15, 256(SP) - - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - - ROUND_AVX2(32(SP), 64(SP), 96(SP), 128(SP), Y10, Y4, Y5) - ROUND_AVX2(160(SP), 192(SP), 224(SP), 256(SP), Y10, Y4, Y5) - - VPXOR Y0, Y8, Y8 - VPXOR Y1, Y9, Y9 - VPXOR Y2, Y8, Y8 - VPXOR Y3, Y9, Y9 - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - - VMOVDQU Y8, 0(AX) - VMOVDQU Y9, 32(AX) - VZEROUPPER - - MOVQ DX, SP - RET - -#define VPUNPCKLQDQ_X2_X2_X15 BYTE $0xC5; BYTE $0x69; BYTE $0x6C; BYTE $0xFA -#define VPUNPCKLQDQ_X3_X3_X15 BYTE $0xC5; BYTE $0x61; BYTE $0x6C; BYTE $0xFB -#define VPUNPCKLQDQ_X7_X7_X15 BYTE $0xC5; BYTE $0x41; BYTE $0x6C; BYTE $0xFF -#define VPUNPCKLQDQ_X13_X13_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x11; BYTE $0x6C; BYTE $0xFD -#define VPUNPCKLQDQ_X14_X14_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x09; BYTE $0x6C; BYTE $0xFE - -#define VPUNPCKHQDQ_X15_X2_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x69; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X3_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X6_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x49; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X7_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xFF -#define VPUNPCKHQDQ_X15_X3_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X7_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X13_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X13_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xFF - -#define SHUFFLE_AVX() \ - VMOVDQA X6, X13; \ - VMOVDQA X2, X14; \ - VMOVDQA X4, X6; \ - VPUNPCKLQDQ_X13_X13_X15; \ - VMOVDQA X5, X4; \ - VMOVDQA X6, X5; \ - VPUNPCKHQDQ_X15_X7_X6; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X13_X7; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VPUNPCKHQDQ_X15_X2_X2; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X3_X3; \ - -#define SHUFFLE_AVX_INV() \ - VMOVDQA X2, X13; \ - VMOVDQA X4, X14; \ - VPUNPCKLQDQ_X2_X2_X15; \ - VMOVDQA X5, X4; \ - VPUNPCKHQDQ_X15_X3_X2; \ - VMOVDQA X14, X5; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VMOVDQA X6, X14; \ - VPUNPCKHQDQ_X15_X13_X3; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X6_X6; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X7_X7; \ - -#define HALF_ROUND_AVX(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - VPADDQ m0, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m1, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFD $-79, v6, v6; \ - VPSHUFD $-79, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPSHUFB c40, v2, v2; \ - VPSHUFB c40, v3, v3; \ - VPADDQ m2, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m3, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFB c48, v6, v6; \ - VPSHUFB c48, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPADDQ v2, v2, t0; \ - VPSRLQ $63, v2, v2; \ - VPXOR t0, v2, v2; \ - VPADDQ v3, v3, t0; \ - VPSRLQ $63, v3, v3; \ - VPXOR t0, v3, v3 - -// load msg: X12 = (i0, i1), X13 = (i2, i3), X14 = (i4, i5), X15 = (i6, i7) -// i0, i1, i2, i3, i4, i5, i6, i7 must not be 0 -#define LOAD_MSG_AVX(i0, i1, i2, i3, i4, i5, i6, i7) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X13(i2*8); \ - VMOVQ_SI_X14(i4*8); \ - VMOVQ_SI_X15(i6*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X13(i3*8); \ - VPINSRQ_1_SI_X14(i5*8); \ - VPINSRQ_1_SI_X15(i7*8) - -// load msg: X12 = (0, 2), X13 = (4, 6), X14 = (1, 3), X15 = (5, 7) -#define LOAD_MSG_AVX_0_2_4_6_1_3_5_7() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(1*8); \ - VMOVQ_SI_X15(5*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X13(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(7*8) - -// load msg: X12 = (1, 0), X13 = (11, 5), X14 = (12, 2), X15 = (7, 3) -#define LOAD_MSG_AVX_1_0_11_5_12_2_7_3() \ - VPSHUFD $0x4E, 0*8(SI), X12; \ - VMOVQ_SI_X13(11*8); \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(7*8); \ - VPINSRQ_1_SI_X13(5*8); \ - VPINSRQ_1_SI_X14(2*8); \ - VPINSRQ_1_SI_X15(3*8) - -// load msg: X12 = (11, 12), X13 = (5, 15), X14 = (8, 0), X15 = (2, 13) -#define LOAD_MSG_AVX_11_12_5_15_8_0_2_13() \ - VMOVDQU 11*8(SI), X12; \ - VMOVQ_SI_X13(5*8); \ - VMOVQ_SI_X14(8*8); \ - VMOVQ_SI_X15(2*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14_0; \ - VPINSRQ_1_SI_X15(13*8) - -// load msg: X12 = (2, 5), X13 = (4, 15), X14 = (6, 10), X15 = (0, 8) -#define LOAD_MSG_AVX_2_5_4_15_6_10_0_8() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(6*8); \ - VMOVQ_SI_X15_0; \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(8*8) - -// load msg: X12 = (9, 5), X13 = (2, 10), X14 = (0, 7), X15 = (4, 15) -#define LOAD_MSG_AVX_9_5_2_10_0_7_4_15() \ - VMOVQ_SI_X12(9*8); \ - VMOVQ_SI_X13(2*8); \ - VMOVQ_SI_X14_0; \ - VMOVQ_SI_X15(4*8); \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VPINSRQ_1_SI_X15(15*8) - -// load msg: X12 = (2, 6), X13 = (0, 8), X14 = (12, 10), X15 = (11, 3) -#define LOAD_MSG_AVX_2_6_0_8_12_10_11_3() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(11*8); \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X13(8*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(3*8) - -// load msg: X12 = (0, 6), X13 = (9, 8), X14 = (7, 3), X15 = (2, 11) -#define LOAD_MSG_AVX_0_6_9_8_7_3_2_11() \ - MOVQ 0*8(SI), X12; \ - VPSHUFD $0x4E, 8*8(SI), X13; \ - MOVQ 7*8(SI), X14; \ - MOVQ 2*8(SI), X15; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(11*8) - -// load msg: X12 = (6, 14), X13 = (11, 0), X14 = (15, 9), X15 = (3, 8) -#define LOAD_MSG_AVX_6_14_11_0_15_9_3_8() \ - MOVQ 6*8(SI), X12; \ - MOVQ 11*8(SI), X13; \ - MOVQ 15*8(SI), X14; \ - MOVQ 3*8(SI), X15; \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X14(9*8); \ - VPINSRQ_1_SI_X15(8*8) - -// load msg: X12 = (5, 15), X13 = (8, 2), X14 = (0, 4), X15 = (6, 10) -#define LOAD_MSG_AVX_5_15_8_2_0_4_6_10() \ - MOVQ 5*8(SI), X12; \ - MOVQ 8*8(SI), X13; \ - MOVQ 0*8(SI), X14; \ - MOVQ 6*8(SI), X15; \ - VPINSRQ_1_SI_X12(15*8); \ - VPINSRQ_1_SI_X13(2*8); \ - VPINSRQ_1_SI_X14(4*8); \ - VPINSRQ_1_SI_X15(10*8) - -// load msg: X12 = (12, 13), X13 = (1, 10), X14 = (2, 7), X15 = (4, 5) -#define LOAD_MSG_AVX_12_13_1_10_2_7_4_5() \ - VMOVDQU 12*8(SI), X12; \ - MOVQ 1*8(SI), X13; \ - MOVQ 2*8(SI), X14; \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VMOVDQU 4*8(SI), X15 - -// load msg: X12 = (15, 9), X13 = (3, 13), X14 = (11, 14), X15 = (12, 0) -#define LOAD_MSG_AVX_15_9_3_13_11_14_12_0() \ - MOVQ 15*8(SI), X12; \ - MOVQ 3*8(SI), X13; \ - MOVQ 11*8(SI), X14; \ - MOVQ 12*8(SI), X15; \ - VPINSRQ_1_SI_X12(9*8); \ - VPINSRQ_1_SI_X13(13*8); \ - VPINSRQ_1_SI_X14(14*8); \ - VPINSRQ_1_SI_X15_0 - -// func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, BP - MOVQ SP, R9 - ADDQ $15, R9 - ANDQ $~15, R9 - MOVQ R9, SP - - VMOVDQU ·AVX_c40<>(SB), X0 - VMOVDQU ·AVX_c48<>(SB), X1 - VMOVDQA X0, X8 - VMOVDQA X1, X9 - - VMOVDQU ·AVX_iv3<>(SB), X0 - VMOVDQA X0, 0(SP) - XORQ CX, 0(SP) // 0(SP) = ·AVX_iv3 ^ (CX || 0) - - VMOVDQU 0(AX), X10 - VMOVDQU 16(AX), X11 - VMOVDQU 32(AX), X2 - VMOVDQU 48(AX), X3 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - -loop: - ADDQ $128, R8 - CMPQ R8, $128 - JGE noinc - INCQ R9 - -noinc: - VMOVQ_R8_X15 - VPINSRQ_1_R9_X15 - - VMOVDQA X10, X0 - VMOVDQA X11, X1 - VMOVDQU ·AVX_iv0<>(SB), X4 - VMOVDQU ·AVX_iv1<>(SB), X5 - VMOVDQU ·AVX_iv2<>(SB), X6 - - VPXOR X15, X6, X6 - VMOVDQA 0(SP), X7 - - LOAD_MSG_AVX_0_2_4_6_1_3_5_7() - VMOVDQA X12, 16(SP) - VMOVDQA X13, 32(SP) - VMOVDQA X14, 48(SP) - VMOVDQA X15, 64(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(8, 10, 12, 14, 9, 11, 13, 15) - VMOVDQA X12, 80(SP) - VMOVDQA X13, 96(SP) - VMOVDQA X14, 112(SP) - VMOVDQA X15, 128(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(14, 4, 9, 13, 10, 8, 15, 6) - VMOVDQA X12, 144(SP) - VMOVDQA X13, 160(SP) - VMOVDQA X14, 176(SP) - VMOVDQA X15, 192(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_1_0_11_5_12_2_7_3() - VMOVDQA X12, 208(SP) - VMOVDQA X13, 224(SP) - VMOVDQA X14, 240(SP) - VMOVDQA X15, 256(SP) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_11_12_5_15_8_0_2_13() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_2_5_4_15_6_10_0_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_9_5_2_10_0_7_4_15() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_2_6_0_8_12_10_11_3() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_0_6_9_8_7_3_2_11() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_5_15_8_2_0_4_6_10() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_6_14_11_0_15_9_3_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_12_13_1_10_2_7_4_5() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_15_9_3_13_11_14_12_0() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X15, X8, X9) - SHUFFLE_AVX_INV() - - VMOVDQU 32(AX), X14 - VMOVDQU 48(AX), X15 - VPXOR X0, X10, X10 - VPXOR X1, X11, X11 - VPXOR X2, X14, X14 - VPXOR X3, X15, X15 - VPXOR X4, X10, X10 - VPXOR X5, X11, X11 - VPXOR X6, X14, X2 - VPXOR X7, X15, X3 - VMOVDQU X2, 32(AX) - VMOVDQU X3, 48(AX) - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - VMOVDQU X10, 0(AX) - VMOVDQU X11, 16(AX) - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - VZEROUPPER - - MOVQ BP, SP - RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go deleted file mode 100644 index 30e2fcd..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.7,amd64,!gccgo,!appengine - -package blake2b - -import "golang.org/x/sys/cpu" - -func init() { - useSSE4 = cpu.X86.HasSSE41 -} - -//go:noescape -func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - if useSSE4 { - hashBlocksSSE4(h, c, flag, blocks) - } else { - hashBlocksGeneric(h, c, flag, blocks) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s deleted file mode 100644 index 578e947..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s +++ /dev/null @@ -1,281 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!gccgo,!appengine - -#include "textflag.h" - -DATA ·iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - PADDQ m0, v0; \ - PADDQ m1, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v6, v6; \ - PSHUFD $0xB1, v7, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - PSHUFB c40, v2; \ - PSHUFB c40, v3; \ - PADDQ m2, v0; \ - PADDQ m3, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFB c48, v6; \ - PSHUFB c48, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - MOVOU v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVOU v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7) \ - MOVQ i0*8(src), m0; \ - PINSRQ $1, i1*8(src), m0; \ - MOVQ i2*8(src), m1; \ - PINSRQ $1, i3*8(src), m1; \ - MOVQ i4*8(src), m2; \ - PINSRQ $1, i5*8(src), m2; \ - MOVQ i6*8(src), m3; \ - PINSRQ $1, i7*8(src), m3 - -// func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksSSE4(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, BP - MOVQ SP, R9 - ADDQ $15, R9 - ANDQ $~15, R9 - MOVQ R9, SP - - MOVOU ·iv3<>(SB), X0 - MOVO X0, 0(SP) - XORQ CX, 0(SP) // 0(SP) = ·iv3 ^ (CX || 0) - - MOVOU ·c40<>(SB), X13 - MOVOU ·c48<>(SB), X14 - - MOVOU 0(AX), X12 - MOVOU 16(AX), X15 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - -loop: - ADDQ $128, R8 - CMPQ R8, $128 - JGE noinc - INCQ R9 - -noinc: - MOVQ R8, X8 - PINSRQ $1, R9, X8 - - MOVO X12, X0 - MOVO X15, X1 - MOVOU 32(AX), X2 - MOVOU 48(AX), X3 - MOVOU ·iv0<>(SB), X4 - MOVOU ·iv1<>(SB), X5 - MOVOU ·iv2<>(SB), X6 - - PXOR X8, X6 - MOVO 0(SP), X7 - - LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7) - MOVO X8, 16(SP) - MOVO X9, 32(SP) - MOVO X10, 48(SP) - MOVO X11, 64(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15) - MOVO X8, 80(SP) - MOVO X9, 96(SP) - MOVO X10, 112(SP) - MOVO X11, 128(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6) - MOVO X8, 144(SP) - MOVO X9, 160(SP) - MOVO X10, 176(SP) - MOVO X11, 192(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3) - MOVO X8, 208(SP) - MOVO X9, 224(SP) - MOVO X10, 240(SP) - MOVO X11, 256(SP) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 16(SP), 32(SP), 48(SP), 64(SP), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 80(SP), 96(SP), 112(SP), 128(SP), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 144(SP), 160(SP), 176(SP), 192(SP), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 208(SP), 224(SP), 240(SP), 256(SP), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - MOVOU 32(AX), X10 - MOVOU 48(AX), X11 - PXOR X0, X12 - PXOR X1, X15 - PXOR X2, X10 - PXOR X3, X11 - PXOR X4, X12 - PXOR X5, X15 - PXOR X6, X10 - PXOR X7, X11 - MOVOU X10, 32(AX) - MOVOU X11, 48(AX) - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - MOVOU X12, 0(AX) - MOVOU X15, 16(AX) - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - - MOVQ BP, SP - RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go b/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go deleted file mode 100644 index 3168a8a..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_generic.go +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blake2b - -import ( - "encoding/binary" - "math/bits" -) - -// the precomputed values for BLAKE2b -// there are 12 16-byte arrays - one for each round -// the entries are calculated from the sigma constants. -var precomputed = [12][16]byte{ - {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, - {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, - {11, 12, 5, 15, 8, 0, 2, 13, 10, 3, 7, 9, 14, 6, 1, 4}, - {7, 3, 13, 11, 9, 1, 12, 14, 2, 5, 4, 15, 6, 10, 0, 8}, - {9, 5, 2, 10, 0, 7, 4, 15, 14, 11, 6, 3, 1, 12, 8, 13}, - {2, 6, 0, 8, 12, 10, 11, 3, 4, 7, 15, 1, 13, 5, 14, 9}, - {12, 1, 14, 4, 5, 15, 13, 10, 0, 6, 9, 8, 7, 3, 2, 11}, - {13, 7, 12, 3, 11, 14, 1, 9, 5, 15, 8, 2, 0, 4, 6, 10}, - {6, 14, 11, 0, 15, 9, 3, 8, 12, 13, 1, 10, 2, 7, 4, 5}, - {10, 8, 7, 1, 2, 4, 6, 5, 15, 9, 3, 13, 11, 14, 12, 0}, - {0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15}, // equal to the first - {14, 4, 9, 13, 10, 8, 15, 6, 1, 0, 11, 5, 12, 2, 7, 3}, // equal to the second -} - -func hashBlocksGeneric(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - var m [16]uint64 - c0, c1 := c[0], c[1] - - for i := 0; i < len(blocks); { - c0 += BlockSize - if c0 < BlockSize { - c1++ - } - - v0, v1, v2, v3, v4, v5, v6, v7 := h[0], h[1], h[2], h[3], h[4], h[5], h[6], h[7] - v8, v9, v10, v11, v12, v13, v14, v15 := iv[0], iv[1], iv[2], iv[3], iv[4], iv[5], iv[6], iv[7] - v12 ^= c0 - v13 ^= c1 - v14 ^= flag - - for j := range m { - m[j] = binary.LittleEndian.Uint64(blocks[i:]) - i += 8 - } - - for j := range precomputed { - s := &(precomputed[j]) - - v0 += m[s[0]] - v0 += v4 - v12 ^= v0 - v12 = bits.RotateLeft64(v12, -32) - v8 += v12 - v4 ^= v8 - v4 = bits.RotateLeft64(v4, -24) - v1 += m[s[1]] - v1 += v5 - v13 ^= v1 - v13 = bits.RotateLeft64(v13, -32) - v9 += v13 - v5 ^= v9 - v5 = bits.RotateLeft64(v5, -24) - v2 += m[s[2]] - v2 += v6 - v14 ^= v2 - v14 = bits.RotateLeft64(v14, -32) - v10 += v14 - v6 ^= v10 - v6 = bits.RotateLeft64(v6, -24) - v3 += m[s[3]] - v3 += v7 - v15 ^= v3 - v15 = bits.RotateLeft64(v15, -32) - v11 += v15 - v7 ^= v11 - v7 = bits.RotateLeft64(v7, -24) - - v0 += m[s[4]] - v0 += v4 - v12 ^= v0 - v12 = bits.RotateLeft64(v12, -16) - v8 += v12 - v4 ^= v8 - v4 = bits.RotateLeft64(v4, -63) - v1 += m[s[5]] - v1 += v5 - v13 ^= v1 - v13 = bits.RotateLeft64(v13, -16) - v9 += v13 - v5 ^= v9 - v5 = bits.RotateLeft64(v5, -63) - v2 += m[s[6]] - v2 += v6 - v14 ^= v2 - v14 = bits.RotateLeft64(v14, -16) - v10 += v14 - v6 ^= v10 - v6 = bits.RotateLeft64(v6, -63) - v3 += m[s[7]] - v3 += v7 - v15 ^= v3 - v15 = bits.RotateLeft64(v15, -16) - v11 += v15 - v7 ^= v11 - v7 = bits.RotateLeft64(v7, -63) - - v0 += m[s[8]] - v0 += v5 - v15 ^= v0 - v15 = bits.RotateLeft64(v15, -32) - v10 += v15 - v5 ^= v10 - v5 = bits.RotateLeft64(v5, -24) - v1 += m[s[9]] - v1 += v6 - v12 ^= v1 - v12 = bits.RotateLeft64(v12, -32) - v11 += v12 - v6 ^= v11 - v6 = bits.RotateLeft64(v6, -24) - v2 += m[s[10]] - v2 += v7 - v13 ^= v2 - v13 = bits.RotateLeft64(v13, -32) - v8 += v13 - v7 ^= v8 - v7 = bits.RotateLeft64(v7, -24) - v3 += m[s[11]] - v3 += v4 - v14 ^= v3 - v14 = bits.RotateLeft64(v14, -32) - v9 += v14 - v4 ^= v9 - v4 = bits.RotateLeft64(v4, -24) - - v0 += m[s[12]] - v0 += v5 - v15 ^= v0 - v15 = bits.RotateLeft64(v15, -16) - v10 += v15 - v5 ^= v10 - v5 = bits.RotateLeft64(v5, -63) - v1 += m[s[13]] - v1 += v6 - v12 ^= v1 - v12 = bits.RotateLeft64(v12, -16) - v11 += v12 - v6 ^= v11 - v6 = bits.RotateLeft64(v6, -63) - v2 += m[s[14]] - v2 += v7 - v13 ^= v2 - v13 = bits.RotateLeft64(v13, -16) - v8 += v13 - v7 ^= v8 - v7 = bits.RotateLeft64(v7, -63) - v3 += m[s[15]] - v3 += v4 - v14 ^= v3 - v14 = bits.RotateLeft64(v14, -16) - v9 += v14 - v4 ^= v9 - v4 = bits.RotateLeft64(v4, -63) - - } - - h[0] ^= v0 ^ v8 - h[1] ^= v1 ^ v9 - h[2] ^= v2 ^ v10 - h[3] ^= v3 ^ v11 - h[4] ^= v4 ^ v12 - h[5] ^= v5 ^ v13 - h[6] ^= v6 ^ v14 - h[7] ^= v7 ^ v15 - } - c[0], c[1] = c0, c1 -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go b/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go deleted file mode 100644 index da156a1..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_ref.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !amd64 appengine gccgo - -package blake2b - -func hashBlocks(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) { - hashBlocksGeneric(h, c, flag, blocks) -} diff --git a/vendor/golang.org/x/crypto/blake2b/blake2x.go b/vendor/golang.org/x/crypto/blake2b/blake2x.go deleted file mode 100644 index 52c414d..0000000 --- a/vendor/golang.org/x/crypto/blake2b/blake2x.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blake2b - -import ( - "encoding/binary" - "errors" - "io" -) - -// XOF defines the interface to hash functions that -// support arbitrary-length output. -type XOF interface { - // Write absorbs more data into the hash's state. It panics if called - // after Read. - io.Writer - - // Read reads more output from the hash. It returns io.EOF if the limit - // has been reached. - io.Reader - - // Clone returns a copy of the XOF in its current state. - Clone() XOF - - // Reset resets the XOF to its initial state. - Reset() -} - -// OutputLengthUnknown can be used as the size argument to NewXOF to indicate -// the length of the output is not known in advance. -const OutputLengthUnknown = 0 - -// magicUnknownOutputLength is a magic value for the output size that indicates -// an unknown number of output bytes. -const magicUnknownOutputLength = (1 << 32) - 1 - -// maxOutputLength is the absolute maximum number of bytes to produce when the -// number of output bytes is unknown. -const maxOutputLength = (1 << 32) * 64 - -// NewXOF creates a new variable-output-length hash. The hash either produce a -// known number of bytes (1 <= size < 2**32-1), or an unknown number of bytes -// (size == OutputLengthUnknown). In the latter case, an absolute limit of -// 256GiB applies. -// -// A non-nil key turns the hash into a MAC. The key must between -// zero and 32 bytes long. -func NewXOF(size uint32, key []byte) (XOF, error) { - if len(key) > Size { - return nil, errKeySize - } - if size == magicUnknownOutputLength { - // 2^32-1 indicates an unknown number of bytes and thus isn't a - // valid length. - return nil, errors.New("blake2b: XOF length too large") - } - if size == OutputLengthUnknown { - size = magicUnknownOutputLength - } - x := &xof{ - d: digest{ - size: Size, - keyLen: len(key), - }, - length: size, - } - copy(x.d.key[:], key) - x.Reset() - return x, nil -} - -type xof struct { - d digest - length uint32 - remaining uint64 - cfg, root, block [Size]byte - offset int - nodeOffset uint32 - readMode bool -} - -func (x *xof) Write(p []byte) (n int, err error) { - if x.readMode { - panic("blake2b: write to XOF after read") - } - return x.d.Write(p) -} - -func (x *xof) Clone() XOF { - clone := *x - return &clone -} - -func (x *xof) Reset() { - x.cfg[0] = byte(Size) - binary.LittleEndian.PutUint32(x.cfg[4:], uint32(Size)) // leaf length - binary.LittleEndian.PutUint32(x.cfg[12:], x.length) // XOF length - x.cfg[17] = byte(Size) // inner hash size - - x.d.Reset() - x.d.h[1] ^= uint64(x.length) << 32 - - x.remaining = uint64(x.length) - if x.remaining == magicUnknownOutputLength { - x.remaining = maxOutputLength - } - x.offset, x.nodeOffset = 0, 0 - x.readMode = false -} - -func (x *xof) Read(p []byte) (n int, err error) { - if !x.readMode { - x.d.finalize(&x.root) - x.readMode = true - } - - if x.remaining == 0 { - return 0, io.EOF - } - - n = len(p) - if uint64(n) > x.remaining { - n = int(x.remaining) - p = p[:n] - } - - if x.offset > 0 { - blockRemaining := Size - x.offset - if n < blockRemaining { - x.offset += copy(p, x.block[x.offset:]) - x.remaining -= uint64(n) - return - } - copy(p, x.block[x.offset:]) - p = p[blockRemaining:] - x.offset = 0 - x.remaining -= uint64(blockRemaining) - } - - for len(p) >= Size { - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - copy(p, x.block[:]) - p = p[Size:] - x.remaining -= uint64(Size) - } - - if todo := len(p); todo > 0 { - if x.remaining < uint64(Size) { - x.cfg[0] = byte(x.remaining) - } - binary.LittleEndian.PutUint32(x.cfg[8:], x.nodeOffset) - x.nodeOffset++ - - x.d.initConfig(&x.cfg) - x.d.Write(x.root[:]) - x.d.finalize(&x.block) - - x.offset = copy(p, x.block[:todo]) - x.remaining -= uint64(todo) - } - return -} - -func (d *digest) initConfig(cfg *[Size]byte) { - d.offset, d.c[0], d.c[1] = 0, 0, 0 - for i := range d.h { - d.h[i] = iv[i] ^ binary.LittleEndian.Uint64(cfg[i*8:]) - } -} diff --git a/vendor/golang.org/x/crypto/blake2b/register.go b/vendor/golang.org/x/crypto/blake2b/register.go deleted file mode 100644 index efd689a..0000000 --- a/vendor/golang.org/x/crypto/blake2b/register.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.9 - -package blake2b - -import ( - "crypto" - "hash" -) - -func init() { - newHash256 := func() hash.Hash { - h, _ := New256(nil) - return h - } - newHash384 := func() hash.Hash { - h, _ := New384(nil) - return h - } - - newHash512 := func() hash.Hash { - h, _ := New512(nil) - return h - } - - crypto.RegisterHash(crypto.BLAKE2b_256, newHash256) - crypto.RegisterHash(crypto.BLAKE2b_384, newHash384) - crypto.RegisterHash(crypto.BLAKE2b_512, newHash512) -} diff --git a/vendor/golang.org/x/crypto/blowfish/block.go b/vendor/golang.org/x/crypto/blowfish/block.go deleted file mode 100644 index 9d80f19..0000000 --- a/vendor/golang.org/x/crypto/blowfish/block.go +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package blowfish - -// getNextWord returns the next big-endian uint32 value from the byte slice -// at the given position in a circular manner, updating the position. -func getNextWord(b []byte, pos *int) uint32 { - var w uint32 - j := *pos - for i := 0; i < 4; i++ { - w = w<<8 | uint32(b[j]) - j++ - if j >= len(b) { - j = 0 - } - } - *pos = j - return w -} - -// ExpandKey performs a key expansion on the given *Cipher. Specifically, it -// performs the Blowfish algorithm's key schedule which sets up the *Cipher's -// pi and substitution tables for calls to Encrypt. This is used, primarily, -// by the bcrypt package to reuse the Blowfish key schedule during its -// set up. It's unlikely that you need to use this directly. -func ExpandKey(key []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - // Using inlined getNextWord for performance. - var d uint32 - for k := 0; k < 4; k++ { - d = d<<8 | uint32(key[j]) - j++ - if j >= len(key) { - j = 0 - } - } - c.p[i] ^= d - } - - var l, r uint32 - for i := 0; i < 18; i += 2 { - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - for i := 0; i < 256; i += 2 { - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -// This is similar to ExpandKey, but folds the salt during the key -// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero -// salt passed in, reusing ExpandKey turns out to be a place of inefficiency -// and specializing it here is useful. -func expandKeyWithSalt(key []byte, salt []byte, c *Cipher) { - j := 0 - for i := 0; i < 18; i++ { - c.p[i] ^= getNextWord(key, &j) - } - - j = 0 - var l, r uint32 - for i := 0; i < 18; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.p[i], c.p[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s0[i], c.s0[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s1[i], c.s1[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s2[i], c.s2[i+1] = l, r - } - - for i := 0; i < 256; i += 2 { - l ^= getNextWord(salt, &j) - r ^= getNextWord(salt, &j) - l, r = encryptBlock(l, r, c) - c.s3[i], c.s3[i+1] = l, r - } -} - -func encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[0] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16] - xr ^= c.p[17] - return xr, xl -} - -func decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) { - xl, xr := l, r - xl ^= c.p[17] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3] - xr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2] - xl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1] - xr ^= c.p[0] - return xr, xl -} diff --git a/vendor/golang.org/x/crypto/blowfish/cipher.go b/vendor/golang.org/x/crypto/blowfish/cipher.go deleted file mode 100644 index 213bf20..0000000 --- a/vendor/golang.org/x/crypto/blowfish/cipher.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm. -// -// Blowfish is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package blowfish // import "golang.org/x/crypto/blowfish" - -// The code is a port of Bruce Schneier's C implementation. -// See https://www.schneier.com/blowfish.html. - -import "strconv" - -// The Blowfish block size in bytes. -const BlockSize = 8 - -// A Cipher is an instance of Blowfish encryption using a particular key. -type Cipher struct { - p [18]uint32 - s0, s1, s2, s3 [256]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/blowfish: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a Cipher. -// The key argument should be the Blowfish key, from 1 to 56 bytes. -func NewCipher(key []byte) (*Cipher, error) { - var result Cipher - if k := len(key); k < 1 || k > 56 { - return nil, KeySizeError(k) - } - initCipher(&result) - ExpandKey(key, &result) - return &result, nil -} - -// NewSaltedCipher creates a returns a Cipher that folds a salt into its key -// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is -// sufficient and desirable. For bcrypt compatibility, the key can be over 56 -// bytes. -func NewSaltedCipher(key, salt []byte) (*Cipher, error) { - if len(salt) == 0 { - return NewCipher(key) - } - var result Cipher - if k := len(key); k < 1 { - return nil, KeySizeError(k) - } - initCipher(&result) - expandKeyWithSalt(key, salt, &result) - return &result, nil -} - -// BlockSize returns the Blowfish block size, 8 bytes. -// It is necessary to satisfy the Block interface in the -// package "crypto/cipher". -func (c *Cipher) BlockSize() int { return BlockSize } - -// Encrypt encrypts the 8-byte buffer src using the key k -// and stores the result in dst. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = encryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -// Decrypt decrypts the 8-byte buffer src using the key k -// and stores the result in dst. -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - l, r = decryptBlock(l, r, c) - dst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l) - dst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r) -} - -func initCipher(c *Cipher) { - copy(c.p[0:], p[0:]) - copy(c.s0[0:], s0[0:]) - copy(c.s1[0:], s1[0:]) - copy(c.s2[0:], s2[0:]) - copy(c.s3[0:], s3[0:]) -} diff --git a/vendor/golang.org/x/crypto/blowfish/const.go b/vendor/golang.org/x/crypto/blowfish/const.go deleted file mode 100644 index d040775..0000000 --- a/vendor/golang.org/x/crypto/blowfish/const.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// The startup permutation array and substitution boxes. -// They are the hexadecimal digits of PI; see: -// https://www.schneier.com/code/constants.txt. - -package blowfish - -var s0 = [256]uint32{ - 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, - 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, - 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658, - 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, - 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, - 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, - 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6, - 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, - 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, - 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, - 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1, - 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, - 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, - 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, - 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176, - 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, - 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, - 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, - 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b, - 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, - 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, - 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, - 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a, - 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, - 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, - 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, - 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8, - 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, - 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, - 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, - 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0, - 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, - 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, - 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, - 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705, - 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, - 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, - 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, - 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9, - 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, - 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, - 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, - 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, -} - -var s1 = [256]uint32{ - 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, - 0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, - 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, - 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, - 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, - 0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, - 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, - 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, - 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, - 0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, - 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, - 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, - 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, - 0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, - 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, - 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, - 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, - 0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, - 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, - 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, - 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, - 0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, - 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, - 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, - 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, - 0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, - 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, - 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, - 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, - 0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, - 0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, - 0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, - 0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, - 0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, - 0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, - 0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, - 0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, - 0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, - 0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, - 0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, - 0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, - 0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, - 0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, -} - -var s2 = [256]uint32{ - 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, - 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, - 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, - 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, - 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, - 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, - 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, - 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, - 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, - 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, - 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, - 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, - 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, - 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, - 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, - 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, - 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, - 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, - 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, - 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, - 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, - 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, - 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, - 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, - 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, - 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, - 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, - 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, - 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, - 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, - 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, - 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, - 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, - 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, - 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, - 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, - 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, - 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, - 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, - 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, - 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, - 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, - 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0, -} - -var s3 = [256]uint32{ - 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742, - 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b, - 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79, - 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6, - 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a, - 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4, - 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1, - 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59, - 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797, - 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28, - 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6, - 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28, - 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba, - 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a, - 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5, - 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f, - 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce, - 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680, - 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd, - 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb, - 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb, - 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370, - 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc, - 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048, - 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc, - 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9, - 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a, - 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f, - 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a, - 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1, - 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b, - 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e, - 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e, - 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f, - 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623, - 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc, - 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a, - 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6, - 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3, - 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060, - 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c, - 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f, - 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6, -} - -var p = [18]uint32{ - 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, - 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, - 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b, -} diff --git a/vendor/golang.org/x/crypto/cast5/cast5.go b/vendor/golang.org/x/crypto/cast5/cast5.go deleted file mode 100644 index ddcbeb6..0000000 --- a/vendor/golang.org/x/crypto/cast5/cast5.go +++ /dev/null @@ -1,533 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package cast5 implements CAST5, as defined in RFC 2144. -// -// CAST5 is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package cast5 // import "golang.org/x/crypto/cast5" - -import "errors" - -const BlockSize = 8 -const KeySize = 16 - -type Cipher struct { - masking [16]uint32 - rotate [16]uint8 -} - -func NewCipher(key []byte) (c *Cipher, err error) { - if len(key) != KeySize { - return nil, errors.New("CAST5: keys must be 16 bytes") - } - - c = new(Cipher) - c.keySchedule(key) - return -} - -func (c *Cipher) BlockSize() int { - return BlockSize -} - -func (c *Cipher) Encrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -func (c *Cipher) Decrypt(dst, src []byte) { - l := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - - l, r = r, l^f1(r, c.masking[15], c.rotate[15]) - l, r = r, l^f3(r, c.masking[14], c.rotate[14]) - l, r = r, l^f2(r, c.masking[13], c.rotate[13]) - l, r = r, l^f1(r, c.masking[12], c.rotate[12]) - - l, r = r, l^f3(r, c.masking[11], c.rotate[11]) - l, r = r, l^f2(r, c.masking[10], c.rotate[10]) - l, r = r, l^f1(r, c.masking[9], c.rotate[9]) - l, r = r, l^f3(r, c.masking[8], c.rotate[8]) - - l, r = r, l^f2(r, c.masking[7], c.rotate[7]) - l, r = r, l^f1(r, c.masking[6], c.rotate[6]) - l, r = r, l^f3(r, c.masking[5], c.rotate[5]) - l, r = r, l^f2(r, c.masking[4], c.rotate[4]) - - l, r = r, l^f1(r, c.masking[3], c.rotate[3]) - l, r = r, l^f3(r, c.masking[2], c.rotate[2]) - l, r = r, l^f2(r, c.masking[1], c.rotate[1]) - l, r = r, l^f1(r, c.masking[0], c.rotate[0]) - - dst[0] = uint8(r >> 24) - dst[1] = uint8(r >> 16) - dst[2] = uint8(r >> 8) - dst[3] = uint8(r) - dst[4] = uint8(l >> 24) - dst[5] = uint8(l >> 16) - dst[6] = uint8(l >> 8) - dst[7] = uint8(l) -} - -type keyScheduleA [4][7]uint8 -type keyScheduleB [4][5]uint8 - -// keyScheduleRound contains the magic values for a round of the key schedule. -// The keyScheduleA deals with the lines like: -// z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8] -// Conceptually, both x and z are in the same array, x first. The first -// element describes which word of this array gets written to and the -// second, which word gets read. So, for the line above, it's "4, 0", because -// it's writing to the first word of z, which, being after x, is word 4, and -// reading from the first word of x: word 0. -// -// Next are the indexes into the S-boxes. Now the array is treated as bytes. So -// "xD" is 0xd. The first byte of z is written as "16 + 0", just to be clear -// that it's z that we're indexing. -// -// keyScheduleB deals with lines like: -// K1 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2] -// "K1" is ignored because key words are always written in order. So the five -// elements are the S-box indexes. They use the same form as in keyScheduleA, -// above. - -type keyScheduleRound struct{} -type keySchedule []keyScheduleRound - -var schedule = []struct { - a keyScheduleA - b keyScheduleB -}{ - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 0x8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 8, 16 + 9, 16 + 7, 16 + 6, 16 + 2}, - {16 + 0xa, 16 + 0xb, 16 + 5, 16 + 4, 16 + 6}, - {16 + 0xc, 16 + 0xd, 16 + 3, 16 + 2, 16 + 9}, - {16 + 0xe, 16 + 0xf, 16 + 1, 16 + 0, 16 + 0xc}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {3, 2, 0xc, 0xd, 8}, - {1, 0, 0xe, 0xf, 0xd}, - {7, 6, 8, 9, 3}, - {5, 4, 0xa, 0xb, 7}, - }, - }, - { - keyScheduleA{ - {4, 0, 0xd, 0xf, 0xc, 0xe, 8}, - {5, 2, 16 + 0, 16 + 2, 16 + 1, 16 + 3, 0xa}, - {6, 3, 16 + 7, 16 + 6, 16 + 5, 16 + 4, 9}, - {7, 1, 16 + 0xa, 16 + 9, 16 + 0xb, 16 + 8, 0xb}, - }, - keyScheduleB{ - {16 + 3, 16 + 2, 16 + 0xc, 16 + 0xd, 16 + 9}, - {16 + 1, 16 + 0, 16 + 0xe, 16 + 0xf, 16 + 0xc}, - {16 + 7, 16 + 6, 16 + 8, 16 + 9, 16 + 2}, - {16 + 5, 16 + 4, 16 + 0xa, 16 + 0xb, 16 + 6}, - }, - }, - { - keyScheduleA{ - {0, 6, 16 + 5, 16 + 7, 16 + 4, 16 + 6, 16 + 0}, - {1, 4, 0, 2, 1, 3, 16 + 2}, - {2, 5, 7, 6, 5, 4, 16 + 1}, - {3, 7, 0xa, 9, 0xb, 8, 16 + 3}, - }, - keyScheduleB{ - {8, 9, 7, 6, 3}, - {0xa, 0xb, 5, 4, 7}, - {0xc, 0xd, 3, 2, 8}, - {0xe, 0xf, 1, 0, 0xd}, - }, - }, -} - -func (c *Cipher) keySchedule(in []byte) { - var t [8]uint32 - var k [32]uint32 - - for i := 0; i < 4; i++ { - j := i * 4 - t[i] = uint32(in[j])<<24 | uint32(in[j+1])<<16 | uint32(in[j+2])<<8 | uint32(in[j+3]) - } - - x := []byte{6, 7, 4, 5} - ki := 0 - - for half := 0; half < 2; half++ { - for _, round := range schedule { - for j := 0; j < 4; j++ { - var a [7]uint8 - copy(a[:], round.a[j][:]) - w := t[a[1]] - w ^= sBox[4][(t[a[2]>>2]>>(24-8*(a[2]&3)))&0xff] - w ^= sBox[5][(t[a[3]>>2]>>(24-8*(a[3]&3)))&0xff] - w ^= sBox[6][(t[a[4]>>2]>>(24-8*(a[4]&3)))&0xff] - w ^= sBox[7][(t[a[5]>>2]>>(24-8*(a[5]&3)))&0xff] - w ^= sBox[x[j]][(t[a[6]>>2]>>(24-8*(a[6]&3)))&0xff] - t[a[0]] = w - } - - for j := 0; j < 4; j++ { - var b [5]uint8 - copy(b[:], round.b[j][:]) - w := sBox[4][(t[b[0]>>2]>>(24-8*(b[0]&3)))&0xff] - w ^= sBox[5][(t[b[1]>>2]>>(24-8*(b[1]&3)))&0xff] - w ^= sBox[6][(t[b[2]>>2]>>(24-8*(b[2]&3)))&0xff] - w ^= sBox[7][(t[b[3]>>2]>>(24-8*(b[3]&3)))&0xff] - w ^= sBox[4+j][(t[b[4]>>2]>>(24-8*(b[4]&3)))&0xff] - k[ki] = w - ki++ - } - } - } - - for i := 0; i < 16; i++ { - c.masking[i] = k[i] - c.rotate[i] = uint8(k[16+i] & 0x1f) - } -} - -// These are the three 'f' functions. See RFC 2144, section 2.2. -func f1(d, m uint32, r uint8) uint32 { - t := m + d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] ^ sBox[1][(I>>16)&0xff]) - sBox[2][(I>>8)&0xff]) + sBox[3][I&0xff] -} - -func f2(d, m uint32, r uint8) uint32 { - t := m ^ d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] - sBox[1][(I>>16)&0xff]) + sBox[2][(I>>8)&0xff]) ^ sBox[3][I&0xff] -} - -func f3(d, m uint32, r uint8) uint32 { - t := m - d - I := (t << r) | (t >> (32 - r)) - return ((sBox[0][I>>24] + sBox[1][(I>>16)&0xff]) ^ sBox[2][(I>>8)&0xff]) - sBox[3][I&0xff] -} - -var sBox = [8][256]uint32{ - { - 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a, 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949, - 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675, 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e, - 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2, 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d, - 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f, 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0, - 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de, 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7, - 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f, 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935, - 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d, 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d, - 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165, 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50, - 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272, 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe, - 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d, 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3, - 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a, 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167, - 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f, 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291, - 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9, 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779, - 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6, 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2, - 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9, 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511, - 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e, 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d, - 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e, 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5, - 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82, 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324, - 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac, 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c, - 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f, 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc, - 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491, 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d, - 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de, 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96, - 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a, 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a, - 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79, 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d, - 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779, 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd, - 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755, 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6, - 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb, 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9, - 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0, 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872, - 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79, 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c, - 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298, 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e, - 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571, 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9, - 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d, 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf, - }, - { - 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380, 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651, - 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba, 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3, - 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909, 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb, - 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b, 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806, - 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4, 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b, - 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f, 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359, - 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21, 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b, - 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d, 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c, - 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f, 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34, - 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d, 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb, - 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4, 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd, - 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801, 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860, - 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755, 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b, - 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709, 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304, - 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b, 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b, - 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c, 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf, - 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9, 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c, - 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3, 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13, - 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9, 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f, - 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab, 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6, - 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4, 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6, - 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43, 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58, - 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8, 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906, - 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171, 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d, - 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89, 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6, - 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b, 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4, - 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb, 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6, - 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e, 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f, - 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea, 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249, - 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea, 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa, - 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd, 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9, - 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef, 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1, - }, - { - 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907, 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90, - 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae, 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5, - 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e, 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e, - 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc, 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240, - 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e, 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5, - 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f, 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b, - 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99, 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71, - 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f, 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04, - 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380, 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82, - 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8, 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15, - 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504, 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2, - 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6, 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176, - 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e, 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148, - 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d, 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc, - 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1, 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341, - 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c, 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e, - 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15, 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51, - 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4, 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f, - 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b, 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a, - 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392, 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b, - 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231, 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b, - 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889, 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5, - 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67, 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45, - 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49, 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536, - 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d, 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc, - 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d, 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0, - 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e, 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69, - 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767, 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2, - 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce, 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49, - 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24, 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d, - 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0, 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a, - 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5, 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783, - }, - { - 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298, 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1, - 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120, 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf, - 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220, 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15, - 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe, 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121, - 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701, 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25, - 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b, 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5, - 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93, 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb, - 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746, 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5, - 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9, 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d, - 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb, 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6, - 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c, 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23, - 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7, 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003, - 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340, 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6, - 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327, 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119, - 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec, 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24, - 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205, 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a, - 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031, 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79, - 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5, 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df, - 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c, 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26, - 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69, 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab, - 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9, 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7, - 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff, 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417, - 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3, 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2, - 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2, 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2, - 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff, 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a, - 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091, 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919, - 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df, 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef, - 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf, 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876, - 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367, 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab, - 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c, 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04, - 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43, 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282, - 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e, 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2, - }, - { - 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911, 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f, - 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00, 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a, - 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180, 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff, - 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2, 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02, - 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725, 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a, - 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b, 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7, - 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571, 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9, - 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec, 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981, - 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea, 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774, - 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263, 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655, - 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468, 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2, - 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b, 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910, - 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284, 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1, - 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4, 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da, - 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7, 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049, - 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce, 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f, - 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6, 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba, - 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4, 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be, - 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561, 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3, - 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6, 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840, - 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406, 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4, - 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472, 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2, - 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487, 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7, - 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288, 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5, - 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2, 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e, - 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78, 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e, - 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76, 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801, - 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0, 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad, - 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58, 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0, - 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2, 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20, - 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be, 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8, - 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55, 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4, - }, - { - 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c, 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac, - 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9, 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138, - 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e, 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367, - 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866, 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98, - 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c, 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072, - 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd, 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3, - 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53, 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd, - 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d, 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8, - 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf, 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9, - 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807, 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54, - 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a, 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387, - 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563, 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc, - 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0, 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf, - 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be, 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf, - 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0, 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f, - 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2, 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289, - 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853, 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950, - 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa, 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f, - 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9, 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b, - 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751, 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be, - 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358, 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13, - 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397, 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976, - 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459, 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0, - 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4, 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891, - 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f, 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da, - 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb, 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc, - 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2, 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084, - 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab, 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25, - 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b, 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121, - 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b, 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5, - 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855, 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd, - 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454, 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f, - }, - { - 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693, 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f, - 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82, 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de, - 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd, 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43, - 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f, 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19, - 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9, 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2, - 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e, 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516, - 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83, 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88, - 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e, 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816, - 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a, 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756, - 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f, 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a, - 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b, 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264, - 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78, 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688, - 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d, 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28, - 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802, 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3, - 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9, 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7, - 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302, 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06, - 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858, 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033, - 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a, 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a, - 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4, 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566, - 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df, 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509, - 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9, 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962, - 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c, 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e, - 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07, 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c, - 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939, 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c, - 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e, 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285, - 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378, 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301, - 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd, 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be, - 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567, 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767, - 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2, 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647, - 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf, 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914, - 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2, 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c, - 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada, 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3, - }, - { - 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095, 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5, - 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174, 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc, - 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940, 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd, - 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42, 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d, - 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164, 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2, - 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4, 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862, - 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0, 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc, - 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6, 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c, - 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491, 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e, - 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b, 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039, - 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8, 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8, - 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006, 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42, - 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564, 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5, - 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab, 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472, - 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc, 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225, - 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8, 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c, - 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441, 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb, - 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f, 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054, - 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504, 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70, - 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c, 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc, - 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6, 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c, - 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd, 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3, - 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4, 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4, - 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc, 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101, - 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba, 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f, - 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf, 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e, - 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603, 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a, - 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37, 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c, - 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819, 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384, - 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d, 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c, - 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347, 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82, - 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d, 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e, - }, -} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing.go deleted file mode 100644 index f38797b..0000000 --- a/vendor/golang.org/x/crypto/internal/subtle/aliasing.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !appengine - -// Package subtle implements functions that are often useful in cryptographic -// code but require careful thought to use correctly. -package subtle // import "golang.org/x/crypto/internal/subtle" - -import "unsafe" - -// AnyOverlap reports whether x and y share memory at any (not necessarily -// corresponding) index. The memory beyond the slice length is ignored. -func AnyOverlap(x, y []byte) bool { - return len(x) > 0 && len(y) > 0 && - uintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) && - uintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1])) -} - -// InexactOverlap reports whether x and y share memory at any non-corresponding -// index. The memory beyond the slice length is ignored. Note that x and y can -// have different lengths and still not have any inexact overlap. -// -// InexactOverlap can be used to implement the requirements of the crypto/cipher -// AEAD, Block, BlockMode and Stream interfaces. -func InexactOverlap(x, y []byte) bool { - if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { - return false - } - return AnyOverlap(x, y) -} diff --git a/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go b/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go deleted file mode 100644 index 0cc4a8a..0000000 --- a/vendor/golang.org/x/crypto/internal/subtle/aliasing_appengine.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build appengine - -// Package subtle implements functions that are often useful in cryptographic -// code but require careful thought to use correctly. -package subtle // import "golang.org/x/crypto/internal/subtle" - -// This is the Google App Engine standard variant based on reflect -// because the unsafe package and cgo are disallowed. - -import "reflect" - -// AnyOverlap reports whether x and y share memory at any (not necessarily -// corresponding) index. The memory beyond the slice length is ignored. -func AnyOverlap(x, y []byte) bool { - return len(x) > 0 && len(y) > 0 && - reflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() && - reflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer() -} - -// InexactOverlap reports whether x and y share memory at any non-corresponding -// index. The memory beyond the slice length is ignored. Note that x and y can -// have different lengths and still not have any inexact overlap. -// -// InexactOverlap can be used to implement the requirements of the crypto/cipher -// AEAD, Block, BlockMode and Stream interfaces. -func InexactOverlap(x, y []byte) bool { - if len(x) == 0 || len(y) == 0 || &x[0] == &y[0] { - return false - } - return AnyOverlap(x, y) -} diff --git a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go b/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go deleted file mode 100644 index 593f653..0000000 --- a/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package pbkdf2 implements the key derivation function PBKDF2 as defined in RFC -2898 / PKCS #5 v2.0. - -A key derivation function is useful when encrypting data based on a password -or any other not-fully-random data. It uses a pseudorandom function to derive -a secure encryption key based on the password. - -While v2.0 of the standard defines only one pseudorandom function to use, -HMAC-SHA1, the drafted v2.1 specification allows use of all five FIPS Approved -Hash Functions SHA-1, SHA-224, SHA-256, SHA-384 and SHA-512 for HMAC. To -choose, you can pass the `New` functions from the different SHA packages to -pbkdf2.Key. -*/ -package pbkdf2 // import "golang.org/x/crypto/pbkdf2" - -import ( - "crypto/hmac" - "hash" -) - -// Key derives a key from the password, salt and iteration count, returning a -// []byte of length keylen that can be used as cryptographic key. The key is -// derived based on the method described as PBKDF2 with the HMAC variant using -// the supplied hash function. -// -// For example, to use a HMAC-SHA-1 based PBKDF2 key derivation function, you -// can get a derived key for e.g. AES-256 (which needs a 32-byte key) by -// doing: -// -// dk := pbkdf2.Key([]byte("some password"), salt, 4096, 32, sha1.New) -// -// Remember to get a good random salt. At least 8 bytes is recommended by the -// RFC. -// -// Using a higher iteration count will increase the cost of an exhaustive -// search but will also make derivation proportionally slower. -func Key(password, salt []byte, iter, keyLen int, h func() hash.Hash) []byte { - prf := hmac.New(h, password) - hashLen := prf.Size() - numBlocks := (keyLen + hashLen - 1) / hashLen - - var buf [4]byte - dk := make([]byte, 0, numBlocks*hashLen) - U := make([]byte, hashLen) - for block := 1; block <= numBlocks; block++ { - // N.B.: || means concatenation, ^ means XOR - // for each block T_i = U_1 ^ U_2 ^ ... ^ U_iter - // U_1 = PRF(password, salt || uint(i)) - prf.Reset() - prf.Write(salt) - buf[0] = byte(block >> 24) - buf[1] = byte(block >> 16) - buf[2] = byte(block >> 8) - buf[3] = byte(block) - prf.Write(buf[:4]) - dk = prf.Sum(dk) - T := dk[len(dk)-hashLen:] - copy(U, T) - - // U_n = PRF(password, U_(n-1)) - for n := 2; n <= iter; n++ { - prf.Reset() - prf.Write(U) - U = U[:0] - U = prf.Sum(U) - for x := range U { - T[x] ^= U[x] - } - } - } - return dk[:keyLen] -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go deleted file mode 100644 index 4c96147..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/hsalsa20.go +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package salsa provides low-level access to functions in the Salsa family. -package salsa // import "golang.org/x/crypto/salsa20/salsa" - -// Sigma is the Salsa20 constant for 256-bit keys. -var Sigma = [16]byte{'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'} - -// HSalsa20 applies the HSalsa20 core function to a 16-byte input in, 32-byte -// key k, and 16-byte constant c, and puts the result into the 32-byte array -// out. -func HSalsa20(out *[32]byte, in *[16]byte, k *[32]byte, c *[16]byte) { - x0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 - x1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 - x2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 - x3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 - x4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 - x5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 - x6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - x7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - x8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - x9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - x10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 - x11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 - x12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 - x13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 - x14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 - x15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 - - for i := 0; i < 20; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x5) - out[5] = byte(x5 >> 8) - out[6] = byte(x5 >> 16) - out[7] = byte(x5 >> 24) - - out[8] = byte(x10) - out[9] = byte(x10 >> 8) - out[10] = byte(x10 >> 16) - out[11] = byte(x10 >> 24) - - out[12] = byte(x15) - out[13] = byte(x15 >> 8) - out[14] = byte(x15 >> 16) - out[15] = byte(x15 >> 24) - - out[16] = byte(x6) - out[17] = byte(x6 >> 8) - out[18] = byte(x6 >> 16) - out[19] = byte(x6 >> 24) - - out[20] = byte(x7) - out[21] = byte(x7 >> 8) - out[22] = byte(x7 >> 16) - out[23] = byte(x7 >> 24) - - out[24] = byte(x8) - out[25] = byte(x8 >> 8) - out[26] = byte(x8 >> 16) - out[27] = byte(x8 >> 24) - - out[28] = byte(x9) - out[29] = byte(x9 >> 8) - out[30] = byte(x9 >> 16) - out[31] = byte(x9 >> 24) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go deleted file mode 100644 index 9bfc092..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa208.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package salsa - -// Core208 applies the Salsa20/8 core function to the 64-byte array in and puts -// the result into the 64-byte array out. The input and output may be the same array. -func Core208(out *[64]byte, in *[64]byte) { - j0 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - j1 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - j2 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - j3 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - j4 := uint32(in[16]) | uint32(in[17])<<8 | uint32(in[18])<<16 | uint32(in[19])<<24 - j5 := uint32(in[20]) | uint32(in[21])<<8 | uint32(in[22])<<16 | uint32(in[23])<<24 - j6 := uint32(in[24]) | uint32(in[25])<<8 | uint32(in[26])<<16 | uint32(in[27])<<24 - j7 := uint32(in[28]) | uint32(in[29])<<8 | uint32(in[30])<<16 | uint32(in[31])<<24 - j8 := uint32(in[32]) | uint32(in[33])<<8 | uint32(in[34])<<16 | uint32(in[35])<<24 - j9 := uint32(in[36]) | uint32(in[37])<<8 | uint32(in[38])<<16 | uint32(in[39])<<24 - j10 := uint32(in[40]) | uint32(in[41])<<8 | uint32(in[42])<<16 | uint32(in[43])<<24 - j11 := uint32(in[44]) | uint32(in[45])<<8 | uint32(in[46])<<16 | uint32(in[47])<<24 - j12 := uint32(in[48]) | uint32(in[49])<<8 | uint32(in[50])<<16 | uint32(in[51])<<24 - j13 := uint32(in[52]) | uint32(in[53])<<8 | uint32(in[54])<<16 | uint32(in[55])<<24 - j14 := uint32(in[56]) | uint32(in[57])<<8 | uint32(in[58])<<16 | uint32(in[59])<<24 - j15 := uint32(in[60]) | uint32(in[61])<<8 | uint32(in[62])<<16 | uint32(in[63])<<24 - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 - x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 - - for i := 0; i < 8; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - x0 += j0 - x1 += j1 - x2 += j2 - x3 += j3 - x4 += j4 - x5 += j5 - x6 += j6 - x7 += j7 - x8 += j8 - x9 += j9 - x10 += j10 - x11 += j11 - x12 += j12 - x13 += j13 - x14 += j14 - x15 += j15 - - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x1) - out[5] = byte(x1 >> 8) - out[6] = byte(x1 >> 16) - out[7] = byte(x1 >> 24) - - out[8] = byte(x2) - out[9] = byte(x2 >> 8) - out[10] = byte(x2 >> 16) - out[11] = byte(x2 >> 24) - - out[12] = byte(x3) - out[13] = byte(x3 >> 8) - out[14] = byte(x3 >> 16) - out[15] = byte(x3 >> 24) - - out[16] = byte(x4) - out[17] = byte(x4 >> 8) - out[18] = byte(x4 >> 16) - out[19] = byte(x4 >> 24) - - out[20] = byte(x5) - out[21] = byte(x5 >> 8) - out[22] = byte(x5 >> 16) - out[23] = byte(x5 >> 24) - - out[24] = byte(x6) - out[25] = byte(x6 >> 8) - out[26] = byte(x6 >> 16) - out[27] = byte(x6 >> 24) - - out[28] = byte(x7) - out[29] = byte(x7 >> 8) - out[30] = byte(x7 >> 16) - out[31] = byte(x7 >> 24) - - out[32] = byte(x8) - out[33] = byte(x8 >> 8) - out[34] = byte(x8 >> 16) - out[35] = byte(x8 >> 24) - - out[36] = byte(x9) - out[37] = byte(x9 >> 8) - out[38] = byte(x9 >> 16) - out[39] = byte(x9 >> 24) - - out[40] = byte(x10) - out[41] = byte(x10 >> 8) - out[42] = byte(x10 >> 16) - out[43] = byte(x10 >> 24) - - out[44] = byte(x11) - out[45] = byte(x11 >> 8) - out[46] = byte(x11 >> 16) - out[47] = byte(x11 >> 24) - - out[48] = byte(x12) - out[49] = byte(x12 >> 8) - out[50] = byte(x12 >> 16) - out[51] = byte(x12 >> 24) - - out[52] = byte(x13) - out[53] = byte(x13 >> 8) - out[54] = byte(x13 >> 16) - out[55] = byte(x13 >> 24) - - out[56] = byte(x14) - out[57] = byte(x14 >> 8) - out[58] = byte(x14 >> 16) - out[59] = byte(x14 >> 24) - - out[60] = byte(x15) - out[61] = byte(x15 >> 8) - out[62] = byte(x15 >> 16) - out[63] = byte(x15 >> 24) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go deleted file mode 100644 index 656e8df..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!appengine,!gccgo - -package salsa - -//go:noescape - -// salsa2020XORKeyStream is implemented in salsa20_amd64.s. -func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) - -// XORKeyStream crypts bytes from in to out using the given key and counters. -// In and out must overlap entirely or not at all. Counter -// contains the raw salsa20 counter bytes (both nonce and block counter). -func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - if len(in) == 0 { - return - } - _ = out[len(in)-1] - salsa2020XORKeyStream(&out[0], &in[0], uint64(len(in)), &counter[0], &key[0]) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s deleted file mode 100644 index 18085d2..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_amd64.s +++ /dev/null @@ -1,883 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!appengine,!gccgo - -// This code was translated into a form compatible with 6a from the public -// domain sources in SUPERCOP: https://bench.cr.yp.to/supercop.html - -// func salsa2020XORKeyStream(out, in *byte, n uint64, nonce, key *byte) -// This needs up to 64 bytes at 360(SP); hence the non-obvious frame size. -TEXT ·salsa2020XORKeyStream(SB),0,$456-40 // frame = 424 + 32 byte alignment - MOVQ out+0(FP),DI - MOVQ in+8(FP),SI - MOVQ n+16(FP),DX - MOVQ nonce+24(FP),CX - MOVQ key+32(FP),R8 - - MOVQ SP,R12 - MOVQ SP,R9 - ADDQ $31, R9 - ANDQ $~31, R9 - MOVQ R9, SP - - MOVQ DX,R9 - MOVQ CX,DX - MOVQ R8,R10 - CMPQ R9,$0 - JBE DONE - START: - MOVL 20(R10),CX - MOVL 0(R10),R8 - MOVL 0(DX),AX - MOVL 16(R10),R11 - MOVL CX,0(SP) - MOVL R8, 4 (SP) - MOVL AX, 8 (SP) - MOVL R11, 12 (SP) - MOVL 8(DX),CX - MOVL 24(R10),R8 - MOVL 4(R10),AX - MOVL 4(DX),R11 - MOVL CX,16(SP) - MOVL R8, 20 (SP) - MOVL AX, 24 (SP) - MOVL R11, 28 (SP) - MOVL 12(DX),CX - MOVL 12(R10),DX - MOVL 28(R10),R8 - MOVL 8(R10),AX - MOVL DX,32(SP) - MOVL CX, 36 (SP) - MOVL R8, 40 (SP) - MOVL AX, 44 (SP) - MOVQ $1634760805,DX - MOVQ $857760878,CX - MOVQ $2036477234,R8 - MOVQ $1797285236,AX - MOVL DX,48(SP) - MOVL CX, 52 (SP) - MOVL R8, 56 (SP) - MOVL AX, 60 (SP) - CMPQ R9,$256 - JB BYTESBETWEEN1AND255 - MOVOA 48(SP),X0 - PSHUFL $0X55,X0,X1 - PSHUFL $0XAA,X0,X2 - PSHUFL $0XFF,X0,X3 - PSHUFL $0X00,X0,X0 - MOVOA X1,64(SP) - MOVOA X2,80(SP) - MOVOA X3,96(SP) - MOVOA X0,112(SP) - MOVOA 0(SP),X0 - PSHUFL $0XAA,X0,X1 - PSHUFL $0XFF,X0,X2 - PSHUFL $0X00,X0,X3 - PSHUFL $0X55,X0,X0 - MOVOA X1,128(SP) - MOVOA X2,144(SP) - MOVOA X3,160(SP) - MOVOA X0,176(SP) - MOVOA 16(SP),X0 - PSHUFL $0XFF,X0,X1 - PSHUFL $0X55,X0,X2 - PSHUFL $0XAA,X0,X0 - MOVOA X1,192(SP) - MOVOA X2,208(SP) - MOVOA X0,224(SP) - MOVOA 32(SP),X0 - PSHUFL $0X00,X0,X1 - PSHUFL $0XAA,X0,X2 - PSHUFL $0XFF,X0,X0 - MOVOA X1,240(SP) - MOVOA X2,256(SP) - MOVOA X0,272(SP) - BYTESATLEAST256: - MOVL 16(SP),DX - MOVL 36 (SP),CX - MOVL DX,288(SP) - MOVL CX,304(SP) - SHLQ $32,CX - ADDQ CX,DX - ADDQ $1,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 292 (SP) - MOVL CX, 308 (SP) - ADDQ $1,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 296 (SP) - MOVL CX, 312 (SP) - ADDQ $1,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX, 300 (SP) - MOVL CX, 316 (SP) - ADDQ $1,DX - MOVQ DX,CX - SHRQ $32,CX - MOVL DX,16(SP) - MOVL CX, 36 (SP) - MOVQ R9,352(SP) - MOVQ $20,DX - MOVOA 64(SP),X0 - MOVOA 80(SP),X1 - MOVOA 96(SP),X2 - MOVOA 256(SP),X3 - MOVOA 272(SP),X4 - MOVOA 128(SP),X5 - MOVOA 144(SP),X6 - MOVOA 176(SP),X7 - MOVOA 192(SP),X8 - MOVOA 208(SP),X9 - MOVOA 224(SP),X10 - MOVOA 304(SP),X11 - MOVOA 112(SP),X12 - MOVOA 160(SP),X13 - MOVOA 240(SP),X14 - MOVOA 288(SP),X15 - MAINLOOP1: - MOVOA X1,320(SP) - MOVOA X2,336(SP) - MOVOA X13,X1 - PADDL X12,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X14 - PSRLL $25,X2 - PXOR X2,X14 - MOVOA X7,X1 - PADDL X0,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X11 - PSRLL $25,X2 - PXOR X2,X11 - MOVOA X12,X1 - PADDL X14,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X15 - PSRLL $23,X2 - PXOR X2,X15 - MOVOA X0,X1 - PADDL X11,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X9 - PSRLL $23,X2 - PXOR X2,X9 - MOVOA X14,X1 - PADDL X15,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X13 - PSRLL $19,X2 - PXOR X2,X13 - MOVOA X11,X1 - PADDL X9,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X7 - PSRLL $19,X2 - PXOR X2,X7 - MOVOA X15,X1 - PADDL X13,X1 - MOVOA X1,X2 - PSLLL $18,X1 - PXOR X1,X12 - PSRLL $14,X2 - PXOR X2,X12 - MOVOA 320(SP),X1 - MOVOA X12,320(SP) - MOVOA X9,X2 - PADDL X7,X2 - MOVOA X2,X12 - PSLLL $18,X2 - PXOR X2,X0 - PSRLL $14,X12 - PXOR X12,X0 - MOVOA X5,X2 - PADDL X1,X2 - MOVOA X2,X12 - PSLLL $7,X2 - PXOR X2,X3 - PSRLL $25,X12 - PXOR X12,X3 - MOVOA 336(SP),X2 - MOVOA X0,336(SP) - MOVOA X6,X0 - PADDL X2,X0 - MOVOA X0,X12 - PSLLL $7,X0 - PXOR X0,X4 - PSRLL $25,X12 - PXOR X12,X4 - MOVOA X1,X0 - PADDL X3,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X10 - PSRLL $23,X12 - PXOR X12,X10 - MOVOA X2,X0 - PADDL X4,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X8 - PSRLL $23,X12 - PXOR X12,X8 - MOVOA X3,X0 - PADDL X10,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X5 - PSRLL $19,X12 - PXOR X12,X5 - MOVOA X4,X0 - PADDL X8,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X6 - PSRLL $19,X12 - PXOR X12,X6 - MOVOA X10,X0 - PADDL X5,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X1 - PSRLL $14,X12 - PXOR X12,X1 - MOVOA 320(SP),X0 - MOVOA X1,320(SP) - MOVOA X4,X1 - PADDL X0,X1 - MOVOA X1,X12 - PSLLL $7,X1 - PXOR X1,X7 - PSRLL $25,X12 - PXOR X12,X7 - MOVOA X8,X1 - PADDL X6,X1 - MOVOA X1,X12 - PSLLL $18,X1 - PXOR X1,X2 - PSRLL $14,X12 - PXOR X12,X2 - MOVOA 336(SP),X12 - MOVOA X2,336(SP) - MOVOA X14,X1 - PADDL X12,X1 - MOVOA X1,X2 - PSLLL $7,X1 - PXOR X1,X5 - PSRLL $25,X2 - PXOR X2,X5 - MOVOA X0,X1 - PADDL X7,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X10 - PSRLL $23,X2 - PXOR X2,X10 - MOVOA X12,X1 - PADDL X5,X1 - MOVOA X1,X2 - PSLLL $9,X1 - PXOR X1,X8 - PSRLL $23,X2 - PXOR X2,X8 - MOVOA X7,X1 - PADDL X10,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X4 - PSRLL $19,X2 - PXOR X2,X4 - MOVOA X5,X1 - PADDL X8,X1 - MOVOA X1,X2 - PSLLL $13,X1 - PXOR X1,X14 - PSRLL $19,X2 - PXOR X2,X14 - MOVOA X10,X1 - PADDL X4,X1 - MOVOA X1,X2 - PSLLL $18,X1 - PXOR X1,X0 - PSRLL $14,X2 - PXOR X2,X0 - MOVOA 320(SP),X1 - MOVOA X0,320(SP) - MOVOA X8,X0 - PADDL X14,X0 - MOVOA X0,X2 - PSLLL $18,X0 - PXOR X0,X12 - PSRLL $14,X2 - PXOR X2,X12 - MOVOA X11,X0 - PADDL X1,X0 - MOVOA X0,X2 - PSLLL $7,X0 - PXOR X0,X6 - PSRLL $25,X2 - PXOR X2,X6 - MOVOA 336(SP),X2 - MOVOA X12,336(SP) - MOVOA X3,X0 - PADDL X2,X0 - MOVOA X0,X12 - PSLLL $7,X0 - PXOR X0,X13 - PSRLL $25,X12 - PXOR X12,X13 - MOVOA X1,X0 - PADDL X6,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X15 - PSRLL $23,X12 - PXOR X12,X15 - MOVOA X2,X0 - PADDL X13,X0 - MOVOA X0,X12 - PSLLL $9,X0 - PXOR X0,X9 - PSRLL $23,X12 - PXOR X12,X9 - MOVOA X6,X0 - PADDL X15,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X11 - PSRLL $19,X12 - PXOR X12,X11 - MOVOA X13,X0 - PADDL X9,X0 - MOVOA X0,X12 - PSLLL $13,X0 - PXOR X0,X3 - PSRLL $19,X12 - PXOR X12,X3 - MOVOA X15,X0 - PADDL X11,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X1 - PSRLL $14,X12 - PXOR X12,X1 - MOVOA X9,X0 - PADDL X3,X0 - MOVOA X0,X12 - PSLLL $18,X0 - PXOR X0,X2 - PSRLL $14,X12 - PXOR X12,X2 - MOVOA 320(SP),X12 - MOVOA 336(SP),X0 - SUBQ $2,DX - JA MAINLOOP1 - PADDL 112(SP),X12 - PADDL 176(SP),X7 - PADDL 224(SP),X10 - PADDL 272(SP),X4 - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 0(SI),DX - XORL 4(SI),CX - XORL 8(SI),R8 - XORL 12(SI),R9 - MOVL DX,0(DI) - MOVL CX,4(DI) - MOVL R8,8(DI) - MOVL R9,12(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 64(SI),DX - XORL 68(SI),CX - XORL 72(SI),R8 - XORL 76(SI),R9 - MOVL DX,64(DI) - MOVL CX,68(DI) - MOVL R8,72(DI) - MOVL R9,76(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - PSHUFL $0X39,X12,X12 - PSHUFL $0X39,X7,X7 - PSHUFL $0X39,X10,X10 - PSHUFL $0X39,X4,X4 - XORL 128(SI),DX - XORL 132(SI),CX - XORL 136(SI),R8 - XORL 140(SI),R9 - MOVL DX,128(DI) - MOVL CX,132(DI) - MOVL R8,136(DI) - MOVL R9,140(DI) - MOVD X12,DX - MOVD X7,CX - MOVD X10,R8 - MOVD X4,R9 - XORL 192(SI),DX - XORL 196(SI),CX - XORL 200(SI),R8 - XORL 204(SI),R9 - MOVL DX,192(DI) - MOVL CX,196(DI) - MOVL R8,200(DI) - MOVL R9,204(DI) - PADDL 240(SP),X14 - PADDL 64(SP),X0 - PADDL 128(SP),X5 - PADDL 192(SP),X8 - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 16(SI),DX - XORL 20(SI),CX - XORL 24(SI),R8 - XORL 28(SI),R9 - MOVL DX,16(DI) - MOVL CX,20(DI) - MOVL R8,24(DI) - MOVL R9,28(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 80(SI),DX - XORL 84(SI),CX - XORL 88(SI),R8 - XORL 92(SI),R9 - MOVL DX,80(DI) - MOVL CX,84(DI) - MOVL R8,88(DI) - MOVL R9,92(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - PSHUFL $0X39,X14,X14 - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X5,X5 - PSHUFL $0X39,X8,X8 - XORL 144(SI),DX - XORL 148(SI),CX - XORL 152(SI),R8 - XORL 156(SI),R9 - MOVL DX,144(DI) - MOVL CX,148(DI) - MOVL R8,152(DI) - MOVL R9,156(DI) - MOVD X14,DX - MOVD X0,CX - MOVD X5,R8 - MOVD X8,R9 - XORL 208(SI),DX - XORL 212(SI),CX - XORL 216(SI),R8 - XORL 220(SI),R9 - MOVL DX,208(DI) - MOVL CX,212(DI) - MOVL R8,216(DI) - MOVL R9,220(DI) - PADDL 288(SP),X15 - PADDL 304(SP),X11 - PADDL 80(SP),X1 - PADDL 144(SP),X6 - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 32(SI),DX - XORL 36(SI),CX - XORL 40(SI),R8 - XORL 44(SI),R9 - MOVL DX,32(DI) - MOVL CX,36(DI) - MOVL R8,40(DI) - MOVL R9,44(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 96(SI),DX - XORL 100(SI),CX - XORL 104(SI),R8 - XORL 108(SI),R9 - MOVL DX,96(DI) - MOVL CX,100(DI) - MOVL R8,104(DI) - MOVL R9,108(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - PSHUFL $0X39,X15,X15 - PSHUFL $0X39,X11,X11 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X6,X6 - XORL 160(SI),DX - XORL 164(SI),CX - XORL 168(SI),R8 - XORL 172(SI),R9 - MOVL DX,160(DI) - MOVL CX,164(DI) - MOVL R8,168(DI) - MOVL R9,172(DI) - MOVD X15,DX - MOVD X11,CX - MOVD X1,R8 - MOVD X6,R9 - XORL 224(SI),DX - XORL 228(SI),CX - XORL 232(SI),R8 - XORL 236(SI),R9 - MOVL DX,224(DI) - MOVL CX,228(DI) - MOVL R8,232(DI) - MOVL R9,236(DI) - PADDL 160(SP),X13 - PADDL 208(SP),X9 - PADDL 256(SP),X3 - PADDL 96(SP),X2 - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 48(SI),DX - XORL 52(SI),CX - XORL 56(SI),R8 - XORL 60(SI),R9 - MOVL DX,48(DI) - MOVL CX,52(DI) - MOVL R8,56(DI) - MOVL R9,60(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 112(SI),DX - XORL 116(SI),CX - XORL 120(SI),R8 - XORL 124(SI),R9 - MOVL DX,112(DI) - MOVL CX,116(DI) - MOVL R8,120(DI) - MOVL R9,124(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - PSHUFL $0X39,X13,X13 - PSHUFL $0X39,X9,X9 - PSHUFL $0X39,X3,X3 - PSHUFL $0X39,X2,X2 - XORL 176(SI),DX - XORL 180(SI),CX - XORL 184(SI),R8 - XORL 188(SI),R9 - MOVL DX,176(DI) - MOVL CX,180(DI) - MOVL R8,184(DI) - MOVL R9,188(DI) - MOVD X13,DX - MOVD X9,CX - MOVD X3,R8 - MOVD X2,R9 - XORL 240(SI),DX - XORL 244(SI),CX - XORL 248(SI),R8 - XORL 252(SI),R9 - MOVL DX,240(DI) - MOVL CX,244(DI) - MOVL R8,248(DI) - MOVL R9,252(DI) - MOVQ 352(SP),R9 - SUBQ $256,R9 - ADDQ $256,SI - ADDQ $256,DI - CMPQ R9,$256 - JAE BYTESATLEAST256 - CMPQ R9,$0 - JBE DONE - BYTESBETWEEN1AND255: - CMPQ R9,$64 - JAE NOCOPY - MOVQ DI,DX - LEAQ 360(SP),DI - MOVQ R9,CX - REP; MOVSB - LEAQ 360(SP),DI - LEAQ 360(SP),SI - NOCOPY: - MOVQ R9,352(SP) - MOVOA 48(SP),X0 - MOVOA 0(SP),X1 - MOVOA 16(SP),X2 - MOVOA 32(SP),X3 - MOVOA X1,X4 - MOVQ $20,CX - MAINLOOP2: - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X3 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X3,X3 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X1 - PSHUFL $0X4E,X2,X2 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X1,X1 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X1 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X1,X1 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X3 - PSHUFL $0X4E,X2,X2 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X3,X3 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X3 - PXOR X6,X3 - PADDL X3,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X3,X3 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X1 - PSHUFL $0X4E,X2,X2 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X3,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X1,X1 - PXOR X6,X0 - PADDL X0,X4 - MOVOA X0,X5 - MOVOA X4,X6 - PSLLL $7,X4 - PSRLL $25,X6 - PXOR X4,X1 - PXOR X6,X1 - PADDL X1,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $9,X5 - PSRLL $23,X6 - PXOR X5,X2 - PSHUFL $0X93,X1,X1 - PXOR X6,X2 - PADDL X2,X4 - MOVOA X2,X5 - MOVOA X4,X6 - PSLLL $13,X4 - PSRLL $19,X6 - PXOR X4,X3 - PSHUFL $0X4E,X2,X2 - PXOR X6,X3 - SUBQ $4,CX - PADDL X3,X5 - MOVOA X1,X4 - MOVOA X5,X6 - PSLLL $18,X5 - PXOR X7,X7 - PSRLL $14,X6 - PXOR X5,X0 - PSHUFL $0X39,X3,X3 - PXOR X6,X0 - JA MAINLOOP2 - PADDL 48(SP),X0 - PADDL 0(SP),X1 - PADDL 16(SP),X2 - PADDL 32(SP),X3 - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 0(SI),CX - XORL 48(SI),R8 - XORL 32(SI),R9 - XORL 16(SI),AX - MOVL CX,0(DI) - MOVL R8,48(DI) - MOVL R9,32(DI) - MOVL AX,16(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 20(SI),CX - XORL 4(SI),R8 - XORL 52(SI),R9 - XORL 36(SI),AX - MOVL CX,20(DI) - MOVL R8,4(DI) - MOVL R9,52(DI) - MOVL AX,36(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - PSHUFL $0X39,X0,X0 - PSHUFL $0X39,X1,X1 - PSHUFL $0X39,X2,X2 - PSHUFL $0X39,X3,X3 - XORL 40(SI),CX - XORL 24(SI),R8 - XORL 8(SI),R9 - XORL 56(SI),AX - MOVL CX,40(DI) - MOVL R8,24(DI) - MOVL R9,8(DI) - MOVL AX,56(DI) - MOVD X0,CX - MOVD X1,R8 - MOVD X2,R9 - MOVD X3,AX - XORL 60(SI),CX - XORL 44(SI),R8 - XORL 28(SI),R9 - XORL 12(SI),AX - MOVL CX,60(DI) - MOVL R8,44(DI) - MOVL R9,28(DI) - MOVL AX,12(DI) - MOVQ 352(SP),R9 - MOVL 16(SP),CX - MOVL 36 (SP),R8 - ADDQ $1,CX - SHLQ $32,R8 - ADDQ R8,CX - MOVQ CX,R8 - SHRQ $32,R8 - MOVL CX,16(SP) - MOVL R8, 36 (SP) - CMPQ R9,$64 - JA BYTESATLEAST65 - JAE BYTESATLEAST64 - MOVQ DI,SI - MOVQ DX,DI - MOVQ R9,CX - REP; MOVSB - BYTESATLEAST64: - DONE: - MOVQ R12,SP - RET - BYTESATLEAST65: - SUBQ $64,R9 - ADDQ $64,DI - ADDQ $64,SI - JMP BYTESBETWEEN1AND255 diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go deleted file mode 100644 index 8a46bd2..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !amd64 appengine gccgo - -package salsa - -// XORKeyStream crypts bytes from in to out using the given key and counters. -// In and out must overlap entirely or not at all. Counter -// contains the raw salsa20 counter bytes (both nonce and block counter). -func XORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - genericXORKeyStream(out, in, counter, key) -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go b/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go deleted file mode 100644 index 68169c6..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa/salsa20_ref.go +++ /dev/null @@ -1,231 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package salsa - -const rounds = 20 - -// core applies the Salsa20 core function to 16-byte input in, 32-byte key k, -// and 16-byte constant c, and puts the result into 64-byte array out. -func core(out *[64]byte, in *[16]byte, k *[32]byte, c *[16]byte) { - j0 := uint32(c[0]) | uint32(c[1])<<8 | uint32(c[2])<<16 | uint32(c[3])<<24 - j1 := uint32(k[0]) | uint32(k[1])<<8 | uint32(k[2])<<16 | uint32(k[3])<<24 - j2 := uint32(k[4]) | uint32(k[5])<<8 | uint32(k[6])<<16 | uint32(k[7])<<24 - j3 := uint32(k[8]) | uint32(k[9])<<8 | uint32(k[10])<<16 | uint32(k[11])<<24 - j4 := uint32(k[12]) | uint32(k[13])<<8 | uint32(k[14])<<16 | uint32(k[15])<<24 - j5 := uint32(c[4]) | uint32(c[5])<<8 | uint32(c[6])<<16 | uint32(c[7])<<24 - j6 := uint32(in[0]) | uint32(in[1])<<8 | uint32(in[2])<<16 | uint32(in[3])<<24 - j7 := uint32(in[4]) | uint32(in[5])<<8 | uint32(in[6])<<16 | uint32(in[7])<<24 - j8 := uint32(in[8]) | uint32(in[9])<<8 | uint32(in[10])<<16 | uint32(in[11])<<24 - j9 := uint32(in[12]) | uint32(in[13])<<8 | uint32(in[14])<<16 | uint32(in[15])<<24 - j10 := uint32(c[8]) | uint32(c[9])<<8 | uint32(c[10])<<16 | uint32(c[11])<<24 - j11 := uint32(k[16]) | uint32(k[17])<<8 | uint32(k[18])<<16 | uint32(k[19])<<24 - j12 := uint32(k[20]) | uint32(k[21])<<8 | uint32(k[22])<<16 | uint32(k[23])<<24 - j13 := uint32(k[24]) | uint32(k[25])<<8 | uint32(k[26])<<16 | uint32(k[27])<<24 - j14 := uint32(k[28]) | uint32(k[29])<<8 | uint32(k[30])<<16 | uint32(k[31])<<24 - j15 := uint32(c[12]) | uint32(c[13])<<8 | uint32(c[14])<<16 | uint32(c[15])<<24 - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := j0, j1, j2, j3, j4, j5, j6, j7, j8 - x9, x10, x11, x12, x13, x14, x15 := j9, j10, j11, j12, j13, j14, j15 - - for i := 0; i < rounds; i += 2 { - u := x0 + x12 - x4 ^= u<<7 | u>>(32-7) - u = x4 + x0 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x4 - x12 ^= u<<13 | u>>(32-13) - u = x12 + x8 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x1 - x9 ^= u<<7 | u>>(32-7) - u = x9 + x5 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x9 - x1 ^= u<<13 | u>>(32-13) - u = x1 + x13 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x6 - x14 ^= u<<7 | u>>(32-7) - u = x14 + x10 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x14 - x6 ^= u<<13 | u>>(32-13) - u = x6 + x2 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x11 - x3 ^= u<<7 | u>>(32-7) - u = x3 + x15 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x3 - x11 ^= u<<13 | u>>(32-13) - u = x11 + x7 - x15 ^= u<<18 | u>>(32-18) - - u = x0 + x3 - x1 ^= u<<7 | u>>(32-7) - u = x1 + x0 - x2 ^= u<<9 | u>>(32-9) - u = x2 + x1 - x3 ^= u<<13 | u>>(32-13) - u = x3 + x2 - x0 ^= u<<18 | u>>(32-18) - - u = x5 + x4 - x6 ^= u<<7 | u>>(32-7) - u = x6 + x5 - x7 ^= u<<9 | u>>(32-9) - u = x7 + x6 - x4 ^= u<<13 | u>>(32-13) - u = x4 + x7 - x5 ^= u<<18 | u>>(32-18) - - u = x10 + x9 - x11 ^= u<<7 | u>>(32-7) - u = x11 + x10 - x8 ^= u<<9 | u>>(32-9) - u = x8 + x11 - x9 ^= u<<13 | u>>(32-13) - u = x9 + x8 - x10 ^= u<<18 | u>>(32-18) - - u = x15 + x14 - x12 ^= u<<7 | u>>(32-7) - u = x12 + x15 - x13 ^= u<<9 | u>>(32-9) - u = x13 + x12 - x14 ^= u<<13 | u>>(32-13) - u = x14 + x13 - x15 ^= u<<18 | u>>(32-18) - } - x0 += j0 - x1 += j1 - x2 += j2 - x3 += j3 - x4 += j4 - x5 += j5 - x6 += j6 - x7 += j7 - x8 += j8 - x9 += j9 - x10 += j10 - x11 += j11 - x12 += j12 - x13 += j13 - x14 += j14 - x15 += j15 - - out[0] = byte(x0) - out[1] = byte(x0 >> 8) - out[2] = byte(x0 >> 16) - out[3] = byte(x0 >> 24) - - out[4] = byte(x1) - out[5] = byte(x1 >> 8) - out[6] = byte(x1 >> 16) - out[7] = byte(x1 >> 24) - - out[8] = byte(x2) - out[9] = byte(x2 >> 8) - out[10] = byte(x2 >> 16) - out[11] = byte(x2 >> 24) - - out[12] = byte(x3) - out[13] = byte(x3 >> 8) - out[14] = byte(x3 >> 16) - out[15] = byte(x3 >> 24) - - out[16] = byte(x4) - out[17] = byte(x4 >> 8) - out[18] = byte(x4 >> 16) - out[19] = byte(x4 >> 24) - - out[20] = byte(x5) - out[21] = byte(x5 >> 8) - out[22] = byte(x5 >> 16) - out[23] = byte(x5 >> 24) - - out[24] = byte(x6) - out[25] = byte(x6 >> 8) - out[26] = byte(x6 >> 16) - out[27] = byte(x6 >> 24) - - out[28] = byte(x7) - out[29] = byte(x7 >> 8) - out[30] = byte(x7 >> 16) - out[31] = byte(x7 >> 24) - - out[32] = byte(x8) - out[33] = byte(x8 >> 8) - out[34] = byte(x8 >> 16) - out[35] = byte(x8 >> 24) - - out[36] = byte(x9) - out[37] = byte(x9 >> 8) - out[38] = byte(x9 >> 16) - out[39] = byte(x9 >> 24) - - out[40] = byte(x10) - out[41] = byte(x10 >> 8) - out[42] = byte(x10 >> 16) - out[43] = byte(x10 >> 24) - - out[44] = byte(x11) - out[45] = byte(x11 >> 8) - out[46] = byte(x11 >> 16) - out[47] = byte(x11 >> 24) - - out[48] = byte(x12) - out[49] = byte(x12 >> 8) - out[50] = byte(x12 >> 16) - out[51] = byte(x12 >> 24) - - out[52] = byte(x13) - out[53] = byte(x13 >> 8) - out[54] = byte(x13 >> 16) - out[55] = byte(x13 >> 24) - - out[56] = byte(x14) - out[57] = byte(x14 >> 8) - out[58] = byte(x14 >> 16) - out[59] = byte(x14 >> 24) - - out[60] = byte(x15) - out[61] = byte(x15 >> 8) - out[62] = byte(x15 >> 16) - out[63] = byte(x15 >> 24) -} - -// genericXORKeyStream is the generic implementation of XORKeyStream to be used -// when no assembly implementation is available. -func genericXORKeyStream(out, in []byte, counter *[16]byte, key *[32]byte) { - var block [64]byte - var counterCopy [16]byte - copy(counterCopy[:], counter[:]) - - for len(in) >= 64 { - core(&block, &counterCopy, key, &Sigma) - for i, x := range block { - out[i] = in[i] ^ x - } - u := uint32(1) - for i := 8; i < 16; i++ { - u += uint32(counterCopy[i]) - counterCopy[i] = byte(u) - u >>= 8 - } - in = in[64:] - out = out[64:] - } - - if len(in) > 0 { - core(&block, &counterCopy, key, &Sigma) - for i, v := range in { - out[i] = v ^ block[i] - } - } -} diff --git a/vendor/golang.org/x/crypto/salsa20/salsa20.go b/vendor/golang.org/x/crypto/salsa20/salsa20.go deleted file mode 100644 index 6f9bb10..0000000 --- a/vendor/golang.org/x/crypto/salsa20/salsa20.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* -Package salsa20 implements the Salsa20 stream cipher as specified in https://cr.yp.to/snuffle/spec.pdf. - -Salsa20 differs from many other stream ciphers in that it is message orientated -rather than byte orientated. Keystream blocks are not preserved between calls, -therefore each side must encrypt/decrypt data with the same segmentation. - -Another aspect of this difference is that part of the counter is exposed as -a nonce in each call. Encrypting two different messages with the same (key, -nonce) pair leads to trivial plaintext recovery. This is analogous to -encrypting two different messages with the same key with a traditional stream -cipher. - -This package also implements XSalsa20: a version of Salsa20 with a 24-byte -nonce as specified in https://cr.yp.to/snuffle/xsalsa-20081128.pdf. Simply -passing a 24-byte slice as the nonce triggers XSalsa20. -*/ -package salsa20 // import "golang.org/x/crypto/salsa20" - -// TODO(agl): implement XORKeyStream12 and XORKeyStream8 - the reduced round variants of Salsa20. - -import ( - "golang.org/x/crypto/internal/subtle" - "golang.org/x/crypto/salsa20/salsa" -) - -// XORKeyStream crypts bytes from in to out using the given key and nonce. -// In and out must overlap entirely or not at all. Nonce must -// be either 8 or 24 bytes long. -func XORKeyStream(out, in []byte, nonce []byte, key *[32]byte) { - if len(out) < len(in) { - panic("salsa20: output smaller than input") - } - if subtle.InexactOverlap(out[:len(in)], in) { - panic("salsa20: invalid buffer overlap") - } - - var subNonce [16]byte - - if len(nonce) == 24 { - var subKey [32]byte - var hNonce [16]byte - copy(hNonce[:], nonce[:16]) - salsa.HSalsa20(&subKey, &hNonce, key, &salsa.Sigma) - copy(subNonce[:], nonce[16:]) - key = &subKey - } else if len(nonce) == 8 { - copy(subNonce[:], nonce[:]) - } else { - panic("salsa20: nonce must be 8 or 24 bytes") - } - - salsa.XORKeyStream(out, in, &subNonce, key) -} diff --git a/vendor/golang.org/x/crypto/scrypt/scrypt.go b/vendor/golang.org/x/crypto/scrypt/scrypt.go deleted file mode 100644 index 2f81fe4..0000000 --- a/vendor/golang.org/x/crypto/scrypt/scrypt.go +++ /dev/null @@ -1,213 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package scrypt implements the scrypt key derivation function as defined in -// Colin Percival's paper "Stronger Key Derivation via Sequential Memory-Hard -// Functions" (https://www.tarsnap.com/scrypt/scrypt.pdf). -package scrypt // import "golang.org/x/crypto/scrypt" - -import ( - "crypto/sha256" - "errors" - "math/bits" - - "golang.org/x/crypto/pbkdf2" -) - -const maxInt = int(^uint(0) >> 1) - -// blockCopy copies n numbers from src into dst. -func blockCopy(dst, src []uint32, n int) { - copy(dst, src[:n]) -} - -// blockXOR XORs numbers from dst with n numbers from src. -func blockXOR(dst, src []uint32, n int) { - for i, v := range src[:n] { - dst[i] ^= v - } -} - -// salsaXOR applies Salsa20/8 to the XOR of 16 numbers from tmp and in, -// and puts the result into both tmp and out. -func salsaXOR(tmp *[16]uint32, in, out []uint32) { - w0 := tmp[0] ^ in[0] - w1 := tmp[1] ^ in[1] - w2 := tmp[2] ^ in[2] - w3 := tmp[3] ^ in[3] - w4 := tmp[4] ^ in[4] - w5 := tmp[5] ^ in[5] - w6 := tmp[6] ^ in[6] - w7 := tmp[7] ^ in[7] - w8 := tmp[8] ^ in[8] - w9 := tmp[9] ^ in[9] - w10 := tmp[10] ^ in[10] - w11 := tmp[11] ^ in[11] - w12 := tmp[12] ^ in[12] - w13 := tmp[13] ^ in[13] - w14 := tmp[14] ^ in[14] - w15 := tmp[15] ^ in[15] - - x0, x1, x2, x3, x4, x5, x6, x7, x8 := w0, w1, w2, w3, w4, w5, w6, w7, w8 - x9, x10, x11, x12, x13, x14, x15 := w9, w10, w11, w12, w13, w14, w15 - - for i := 0; i < 8; i += 2 { - x4 ^= bits.RotateLeft32(x0+x12, 7) - x8 ^= bits.RotateLeft32(x4+x0, 9) - x12 ^= bits.RotateLeft32(x8+x4, 13) - x0 ^= bits.RotateLeft32(x12+x8, 18) - - x9 ^= bits.RotateLeft32(x5+x1, 7) - x13 ^= bits.RotateLeft32(x9+x5, 9) - x1 ^= bits.RotateLeft32(x13+x9, 13) - x5 ^= bits.RotateLeft32(x1+x13, 18) - - x14 ^= bits.RotateLeft32(x10+x6, 7) - x2 ^= bits.RotateLeft32(x14+x10, 9) - x6 ^= bits.RotateLeft32(x2+x14, 13) - x10 ^= bits.RotateLeft32(x6+x2, 18) - - x3 ^= bits.RotateLeft32(x15+x11, 7) - x7 ^= bits.RotateLeft32(x3+x15, 9) - x11 ^= bits.RotateLeft32(x7+x3, 13) - x15 ^= bits.RotateLeft32(x11+x7, 18) - - x1 ^= bits.RotateLeft32(x0+x3, 7) - x2 ^= bits.RotateLeft32(x1+x0, 9) - x3 ^= bits.RotateLeft32(x2+x1, 13) - x0 ^= bits.RotateLeft32(x3+x2, 18) - - x6 ^= bits.RotateLeft32(x5+x4, 7) - x7 ^= bits.RotateLeft32(x6+x5, 9) - x4 ^= bits.RotateLeft32(x7+x6, 13) - x5 ^= bits.RotateLeft32(x4+x7, 18) - - x11 ^= bits.RotateLeft32(x10+x9, 7) - x8 ^= bits.RotateLeft32(x11+x10, 9) - x9 ^= bits.RotateLeft32(x8+x11, 13) - x10 ^= bits.RotateLeft32(x9+x8, 18) - - x12 ^= bits.RotateLeft32(x15+x14, 7) - x13 ^= bits.RotateLeft32(x12+x15, 9) - x14 ^= bits.RotateLeft32(x13+x12, 13) - x15 ^= bits.RotateLeft32(x14+x13, 18) - } - x0 += w0 - x1 += w1 - x2 += w2 - x3 += w3 - x4 += w4 - x5 += w5 - x6 += w6 - x7 += w7 - x8 += w8 - x9 += w9 - x10 += w10 - x11 += w11 - x12 += w12 - x13 += w13 - x14 += w14 - x15 += w15 - - out[0], tmp[0] = x0, x0 - out[1], tmp[1] = x1, x1 - out[2], tmp[2] = x2, x2 - out[3], tmp[3] = x3, x3 - out[4], tmp[4] = x4, x4 - out[5], tmp[5] = x5, x5 - out[6], tmp[6] = x6, x6 - out[7], tmp[7] = x7, x7 - out[8], tmp[8] = x8, x8 - out[9], tmp[9] = x9, x9 - out[10], tmp[10] = x10, x10 - out[11], tmp[11] = x11, x11 - out[12], tmp[12] = x12, x12 - out[13], tmp[13] = x13, x13 - out[14], tmp[14] = x14, x14 - out[15], tmp[15] = x15, x15 -} - -func blockMix(tmp *[16]uint32, in, out []uint32, r int) { - blockCopy(tmp[:], in[(2*r-1)*16:], 16) - for i := 0; i < 2*r; i += 2 { - salsaXOR(tmp, in[i*16:], out[i*8:]) - salsaXOR(tmp, in[i*16+16:], out[i*8+r*16:]) - } -} - -func integer(b []uint32, r int) uint64 { - j := (2*r - 1) * 16 - return uint64(b[j]) | uint64(b[j+1])<<32 -} - -func smix(b []byte, r, N int, v, xy []uint32) { - var tmp [16]uint32 - x := xy - y := xy[32*r:] - - j := 0 - for i := 0; i < 32*r; i++ { - x[i] = uint32(b[j]) | uint32(b[j+1])<<8 | uint32(b[j+2])<<16 | uint32(b[j+3])<<24 - j += 4 - } - for i := 0; i < N; i += 2 { - blockCopy(v[i*(32*r):], x, 32*r) - blockMix(&tmp, x, y, r) - - blockCopy(v[(i+1)*(32*r):], y, 32*r) - blockMix(&tmp, y, x, r) - } - for i := 0; i < N; i += 2 { - j := int(integer(x, r) & uint64(N-1)) - blockXOR(x, v[j*(32*r):], 32*r) - blockMix(&tmp, x, y, r) - - j = int(integer(y, r) & uint64(N-1)) - blockXOR(y, v[j*(32*r):], 32*r) - blockMix(&tmp, y, x, r) - } - j = 0 - for _, v := range x[:32*r] { - b[j+0] = byte(v >> 0) - b[j+1] = byte(v >> 8) - b[j+2] = byte(v >> 16) - b[j+3] = byte(v >> 24) - j += 4 - } -} - -// Key derives a key from the password, salt, and cost parameters, returning -// a byte slice of length keyLen that can be used as cryptographic key. -// -// N is a CPU/memory cost parameter, which must be a power of two greater than 1. -// r and p must satisfy r * p < 2³⁰. If the parameters do not satisfy the -// limits, the function returns a nil byte slice and an error. -// -// For example, you can get a derived key for e.g. AES-256 (which needs a -// 32-byte key) by doing: -// -// dk, err := scrypt.Key([]byte("some password"), salt, 32768, 8, 1, 32) -// -// The recommended parameters for interactive logins as of 2017 are N=32768, r=8 -// and p=1. The parameters N, r, and p should be increased as memory latency and -// CPU parallelism increases; consider setting N to the highest power of 2 you -// can derive within 100 milliseconds. Remember to get a good random salt. -func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) { - if N <= 1 || N&(N-1) != 0 { - return nil, errors.New("scrypt: N must be > 1 and a power of 2") - } - if uint64(r)*uint64(p) >= 1<<30 || r > maxInt/128/p || r > maxInt/256 || N > maxInt/128/r { - return nil, errors.New("scrypt: parameters are too large") - } - - xy := make([]uint32, 64*r) - v := make([]uint32, 32*N*r) - b := pbkdf2.Key(password, salt, 1, p*128*r, sha256.New) - - for i := 0; i < p; i++ { - smix(b[i*128*r:], r, N, v, xy) - } - - return pbkdf2.Key(password, b, 1, keyLen, sha256.New), nil -} diff --git a/vendor/golang.org/x/crypto/sha3/doc.go b/vendor/golang.org/x/crypto/sha3/doc.go deleted file mode 100644 index c2fef30..0000000 --- a/vendor/golang.org/x/crypto/sha3/doc.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package sha3 implements the SHA-3 fixed-output-length hash functions and -// the SHAKE variable-output-length hash functions defined by FIPS-202. -// -// Both types of hash function use the "sponge" construction and the Keccak -// permutation. For a detailed specification see http://keccak.noekeon.org/ -// -// -// Guidance -// -// If you aren't sure what function you need, use SHAKE256 with at least 64 -// bytes of output. The SHAKE instances are faster than the SHA3 instances; -// the latter have to allocate memory to conform to the hash.Hash interface. -// -// If you need a secret-key MAC (message authentication code), prepend the -// secret key to the input, hash with SHAKE256 and read at least 32 bytes of -// output. -// -// -// Security strengths -// -// The SHA3-x (x equals 224, 256, 384, or 512) functions have a security -// strength against preimage attacks of x bits. Since they only produce "x" -// bits of output, their collision-resistance is only "x/2" bits. -// -// The SHAKE-256 and -128 functions have a generic security strength of 256 and -// 128 bits against all attacks, provided that at least 2x bits of their output -// is used. Requesting more than 64 or 32 bytes of output, respectively, does -// not increase the collision-resistance of the SHAKE functions. -// -// -// The sponge construction -// -// A sponge builds a pseudo-random function from a public pseudo-random -// permutation, by applying the permutation to a state of "rate + capacity" -// bytes, but hiding "capacity" of the bytes. -// -// A sponge starts out with a zero state. To hash an input using a sponge, up -// to "rate" bytes of the input are XORed into the sponge's state. The sponge -// is then "full" and the permutation is applied to "empty" it. This process is -// repeated until all the input has been "absorbed". The input is then padded. -// The digest is "squeezed" from the sponge in the same way, except that output -// is copied out instead of input being XORed in. -// -// A sponge is parameterized by its generic security strength, which is equal -// to half its capacity; capacity + rate is equal to the permutation's width. -// Since the KeccakF-1600 permutation is 1600 bits (200 bytes) wide, this means -// that the security strength of a sponge instance is equal to (1600 - bitrate) / 2. -// -// -// Recommendations -// -// The SHAKE functions are recommended for most new uses. They can produce -// output of arbitrary length. SHAKE256, with an output length of at least -// 64 bytes, provides 256-bit security against all attacks. The Keccak team -// recommends it for most applications upgrading from SHA2-512. (NIST chose a -// much stronger, but much slower, sponge instance for SHA3-512.) -// -// The SHA-3 functions are "drop-in" replacements for the SHA-2 functions. -// They produce output of the same length, with the same security strengths -// against all attacks. This means, in particular, that SHA3-256 only has -// 128-bit collision resistance, because its output length is 32 bytes. -package sha3 // import "golang.org/x/crypto/sha3" diff --git a/vendor/golang.org/x/crypto/sha3/hashes.go b/vendor/golang.org/x/crypto/sha3/hashes.go deleted file mode 100644 index 0d8043f..0000000 --- a/vendor/golang.org/x/crypto/sha3/hashes.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sha3 - -// This file provides functions for creating instances of the SHA-3 -// and SHAKE hash functions, as well as utility functions for hashing -// bytes. - -import ( - "hash" -) - -// New224 creates a new SHA3-224 hash. -// Its generic security strength is 224 bits against preimage attacks, -// and 112 bits against collision attacks. -func New224() hash.Hash { - if h := new224Asm(); h != nil { - return h - } - return &state{rate: 144, outputLen: 28, dsbyte: 0x06} -} - -// New256 creates a new SHA3-256 hash. -// Its generic security strength is 256 bits against preimage attacks, -// and 128 bits against collision attacks. -func New256() hash.Hash { - if h := new256Asm(); h != nil { - return h - } - return &state{rate: 136, outputLen: 32, dsbyte: 0x06} -} - -// New384 creates a new SHA3-384 hash. -// Its generic security strength is 384 bits against preimage attacks, -// and 192 bits against collision attacks. -func New384() hash.Hash { - if h := new384Asm(); h != nil { - return h - } - return &state{rate: 104, outputLen: 48, dsbyte: 0x06} -} - -// New512 creates a new SHA3-512 hash. -// Its generic security strength is 512 bits against preimage attacks, -// and 256 bits against collision attacks. -func New512() hash.Hash { - if h := new512Asm(); h != nil { - return h - } - return &state{rate: 72, outputLen: 64, dsbyte: 0x06} -} - -// NewLegacyKeccak256 creates a new Keccak-256 hash. -// -// Only use this function if you require compatibility with an existing cryptosystem -// that uses non-standard padding. All other users should use New256 instead. -func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} } - -// NewLegacyKeccak512 creates a new Keccak-512 hash. -// -// Only use this function if you require compatibility with an existing cryptosystem -// that uses non-standard padding. All other users should use New512 instead. -func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} } - -// Sum224 returns the SHA3-224 digest of the data. -func Sum224(data []byte) (digest [28]byte) { - h := New224() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum256 returns the SHA3-256 digest of the data. -func Sum256(data []byte) (digest [32]byte) { - h := New256() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum384 returns the SHA3-384 digest of the data. -func Sum384(data []byte) (digest [48]byte) { - h := New384() - h.Write(data) - h.Sum(digest[:0]) - return -} - -// Sum512 returns the SHA3-512 digest of the data. -func Sum512(data []byte) (digest [64]byte) { - h := New512() - h.Write(data) - h.Sum(digest[:0]) - return -} diff --git a/vendor/golang.org/x/crypto/sha3/hashes_generic.go b/vendor/golang.org/x/crypto/sha3/hashes_generic.go deleted file mode 100644 index f455147..0000000 --- a/vendor/golang.org/x/crypto/sha3/hashes_generic.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gccgo appengine !s390x - -package sha3 - -import ( - "hash" -) - -// new224Asm returns an assembly implementation of SHA3-224 if available, -// otherwise it returns nil. -func new224Asm() hash.Hash { return nil } - -// new256Asm returns an assembly implementation of SHA3-256 if available, -// otherwise it returns nil. -func new256Asm() hash.Hash { return nil } - -// new384Asm returns an assembly implementation of SHA3-384 if available, -// otherwise it returns nil. -func new384Asm() hash.Hash { return nil } - -// new512Asm returns an assembly implementation of SHA3-512 if available, -// otherwise it returns nil. -func new512Asm() hash.Hash { return nil } diff --git a/vendor/golang.org/x/crypto/sha3/keccakf.go b/vendor/golang.org/x/crypto/sha3/keccakf.go deleted file mode 100644 index 46d03ed..0000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf.go +++ /dev/null @@ -1,412 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !amd64 appengine gccgo - -package sha3 - -// rc stores the round constants for use in the ι step. -var rc = [24]uint64{ - 0x0000000000000001, - 0x0000000000008082, - 0x800000000000808A, - 0x8000000080008000, - 0x000000000000808B, - 0x0000000080000001, - 0x8000000080008081, - 0x8000000000008009, - 0x000000000000008A, - 0x0000000000000088, - 0x0000000080008009, - 0x000000008000000A, - 0x000000008000808B, - 0x800000000000008B, - 0x8000000000008089, - 0x8000000000008003, - 0x8000000000008002, - 0x8000000000000080, - 0x000000000000800A, - 0x800000008000000A, - 0x8000000080008081, - 0x8000000000008080, - 0x0000000080000001, - 0x8000000080008008, -} - -// keccakF1600 applies the Keccak permutation to a 1600b-wide -// state represented as a slice of 25 uint64s. -func keccakF1600(a *[25]uint64) { - // Implementation translated from Keccak-inplace.c - // in the keccak reference code. - var t, bc0, bc1, bc2, bc3, bc4, d0, d1, d2, d3, d4 uint64 - - for i := 0; i < 24; i += 4 { - // Combines the 5 steps in each round into 2 steps. - // Unrolls 4 rounds per loop and spreads some steps across rounds. - - // Round 1 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[6] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[12] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[18] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[24] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i] - a[6] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[16] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[22] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[3] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[10] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[1] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[7] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[19] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[20] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[11] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[23] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[4] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[5] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[2] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[8] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[14] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[15] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - // Round 2 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[16] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[7] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[23] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[14] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+1] - a[16] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[11] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[2] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[18] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[20] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[6] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[22] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[4] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[15] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[1] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[8] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[24] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[10] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[12] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[3] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[19] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[5] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - // Round 3 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[11] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[22] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[8] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[19] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+2] - a[11] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[1] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[12] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[23] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[15] = bc0 ^ (bc2 &^ bc1) - a[1] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[16] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[2] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[24] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[5] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[6] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[3] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[14] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[20] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[7] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[18] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[4] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[10] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - // Round 4 - bc0 = a[0] ^ a[5] ^ a[10] ^ a[15] ^ a[20] - bc1 = a[1] ^ a[6] ^ a[11] ^ a[16] ^ a[21] - bc2 = a[2] ^ a[7] ^ a[12] ^ a[17] ^ a[22] - bc3 = a[3] ^ a[8] ^ a[13] ^ a[18] ^ a[23] - bc4 = a[4] ^ a[9] ^ a[14] ^ a[19] ^ a[24] - d0 = bc4 ^ (bc1<<1 | bc1>>63) - d1 = bc0 ^ (bc2<<1 | bc2>>63) - d2 = bc1 ^ (bc3<<1 | bc3>>63) - d3 = bc2 ^ (bc4<<1 | bc4>>63) - d4 = bc3 ^ (bc0<<1 | bc0>>63) - - bc0 = a[0] ^ d0 - t = a[1] ^ d1 - bc1 = t<<44 | t>>(64-44) - t = a[2] ^ d2 - bc2 = t<<43 | t>>(64-43) - t = a[3] ^ d3 - bc3 = t<<21 | t>>(64-21) - t = a[4] ^ d4 - bc4 = t<<14 | t>>(64-14) - a[0] = bc0 ^ (bc2 &^ bc1) ^ rc[i+3] - a[1] = bc1 ^ (bc3 &^ bc2) - a[2] = bc2 ^ (bc4 &^ bc3) - a[3] = bc3 ^ (bc0 &^ bc4) - a[4] = bc4 ^ (bc1 &^ bc0) - - t = a[5] ^ d0 - bc2 = t<<3 | t>>(64-3) - t = a[6] ^ d1 - bc3 = t<<45 | t>>(64-45) - t = a[7] ^ d2 - bc4 = t<<61 | t>>(64-61) - t = a[8] ^ d3 - bc0 = t<<28 | t>>(64-28) - t = a[9] ^ d4 - bc1 = t<<20 | t>>(64-20) - a[5] = bc0 ^ (bc2 &^ bc1) - a[6] = bc1 ^ (bc3 &^ bc2) - a[7] = bc2 ^ (bc4 &^ bc3) - a[8] = bc3 ^ (bc0 &^ bc4) - a[9] = bc4 ^ (bc1 &^ bc0) - - t = a[10] ^ d0 - bc4 = t<<18 | t>>(64-18) - t = a[11] ^ d1 - bc0 = t<<1 | t>>(64-1) - t = a[12] ^ d2 - bc1 = t<<6 | t>>(64-6) - t = a[13] ^ d3 - bc2 = t<<25 | t>>(64-25) - t = a[14] ^ d4 - bc3 = t<<8 | t>>(64-8) - a[10] = bc0 ^ (bc2 &^ bc1) - a[11] = bc1 ^ (bc3 &^ bc2) - a[12] = bc2 ^ (bc4 &^ bc3) - a[13] = bc3 ^ (bc0 &^ bc4) - a[14] = bc4 ^ (bc1 &^ bc0) - - t = a[15] ^ d0 - bc1 = t<<36 | t>>(64-36) - t = a[16] ^ d1 - bc2 = t<<10 | t>>(64-10) - t = a[17] ^ d2 - bc3 = t<<15 | t>>(64-15) - t = a[18] ^ d3 - bc4 = t<<56 | t>>(64-56) - t = a[19] ^ d4 - bc0 = t<<27 | t>>(64-27) - a[15] = bc0 ^ (bc2 &^ bc1) - a[16] = bc1 ^ (bc3 &^ bc2) - a[17] = bc2 ^ (bc4 &^ bc3) - a[18] = bc3 ^ (bc0 &^ bc4) - a[19] = bc4 ^ (bc1 &^ bc0) - - t = a[20] ^ d0 - bc3 = t<<41 | t>>(64-41) - t = a[21] ^ d1 - bc4 = t<<2 | t>>(64-2) - t = a[22] ^ d2 - bc0 = t<<62 | t>>(64-62) - t = a[23] ^ d3 - bc1 = t<<55 | t>>(64-55) - t = a[24] ^ d4 - bc2 = t<<39 | t>>(64-39) - a[20] = bc0 ^ (bc2 &^ bc1) - a[21] = bc1 ^ (bc3 &^ bc2) - a[22] = bc2 ^ (bc4 &^ bc3) - a[23] = bc3 ^ (bc0 &^ bc4) - a[24] = bc4 ^ (bc1 &^ bc0) - } -} diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go deleted file mode 100644 index 7886795..0000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!appengine,!gccgo - -package sha3 - -// This function is implemented in keccakf_amd64.s. - -//go:noescape - -func keccakF1600(a *[25]uint64) diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s deleted file mode 100644 index f88533a..0000000 --- a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s +++ /dev/null @@ -1,390 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64,!appengine,!gccgo - -// This code was translated into a form compatible with 6a from the public -// domain sources at https://github.com/gvanas/KeccakCodePackage - -// Offsets in state -#define _ba (0*8) -#define _be (1*8) -#define _bi (2*8) -#define _bo (3*8) -#define _bu (4*8) -#define _ga (5*8) -#define _ge (6*8) -#define _gi (7*8) -#define _go (8*8) -#define _gu (9*8) -#define _ka (10*8) -#define _ke (11*8) -#define _ki (12*8) -#define _ko (13*8) -#define _ku (14*8) -#define _ma (15*8) -#define _me (16*8) -#define _mi (17*8) -#define _mo (18*8) -#define _mu (19*8) -#define _sa (20*8) -#define _se (21*8) -#define _si (22*8) -#define _so (23*8) -#define _su (24*8) - -// Temporary registers -#define rT1 AX - -// Round vars -#define rpState DI -#define rpStack SP - -#define rDa BX -#define rDe CX -#define rDi DX -#define rDo R8 -#define rDu R9 - -#define rBa R10 -#define rBe R11 -#define rBi R12 -#define rBo R13 -#define rBu R14 - -#define rCa SI -#define rCe BP -#define rCi rBi -#define rCo rBo -#define rCu R15 - -#define MOVQ_RBI_RCE MOVQ rBi, rCe -#define XORQ_RT1_RCA XORQ rT1, rCa -#define XORQ_RT1_RCE XORQ rT1, rCe -#define XORQ_RBA_RCU XORQ rBa, rCu -#define XORQ_RBE_RCU XORQ rBe, rCu -#define XORQ_RDU_RCU XORQ rDu, rCu -#define XORQ_RDA_RCA XORQ rDa, rCa -#define XORQ_RDE_RCE XORQ rDe, rCe - -#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \ - /* Prepare round */ \ - MOVQ rCe, rDa; \ - ROLQ $1, rDa; \ - \ - MOVQ _bi(iState), rCi; \ - XORQ _gi(iState), rDi; \ - XORQ rCu, rDa; \ - XORQ _ki(iState), rCi; \ - XORQ _mi(iState), rDi; \ - XORQ rDi, rCi; \ - \ - MOVQ rCi, rDe; \ - ROLQ $1, rDe; \ - \ - MOVQ _bo(iState), rCo; \ - XORQ _go(iState), rDo; \ - XORQ rCa, rDe; \ - XORQ _ko(iState), rCo; \ - XORQ _mo(iState), rDo; \ - XORQ rDo, rCo; \ - \ - MOVQ rCo, rDi; \ - ROLQ $1, rDi; \ - \ - MOVQ rCu, rDo; \ - XORQ rCe, rDi; \ - ROLQ $1, rDo; \ - \ - MOVQ rCa, rDu; \ - XORQ rCi, rDo; \ - ROLQ $1, rDu; \ - \ - /* Result b */ \ - MOVQ _ba(iState), rBa; \ - MOVQ _ge(iState), rBe; \ - XORQ rCo, rDu; \ - MOVQ _ki(iState), rBi; \ - MOVQ _mo(iState), rBo; \ - MOVQ _su(iState), rBu; \ - XORQ rDe, rBe; \ - ROLQ $44, rBe; \ - XORQ rDi, rBi; \ - XORQ rDa, rBa; \ - ROLQ $43, rBi; \ - \ - MOVQ rBe, rCa; \ - MOVQ rc, rT1; \ - ORQ rBi, rCa; \ - XORQ rBa, rT1; \ - XORQ rT1, rCa; \ - MOVQ rCa, _ba(oState); \ - \ - XORQ rDu, rBu; \ - ROLQ $14, rBu; \ - MOVQ rBa, rCu; \ - ANDQ rBe, rCu; \ - XORQ rBu, rCu; \ - MOVQ rCu, _bu(oState); \ - \ - XORQ rDo, rBo; \ - ROLQ $21, rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _bi(oState); \ - \ - NOTQ rBi; \ - ORQ rBa, rBu; \ - ORQ rBo, rBi; \ - XORQ rBo, rBu; \ - XORQ rBe, rBi; \ - MOVQ rBu, _bo(oState); \ - MOVQ rBi, _be(oState); \ - B_RBI_RCE; \ - \ - /* Result g */ \ - MOVQ _gu(iState), rBe; \ - XORQ rDu, rBe; \ - MOVQ _ka(iState), rBi; \ - ROLQ $20, rBe; \ - XORQ rDa, rBi; \ - ROLQ $3, rBi; \ - MOVQ _bo(iState), rBa; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDo, rBa; \ - MOVQ _me(iState), rBo; \ - MOVQ _si(iState), rBu; \ - ROLQ $28, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ga(oState); \ - G_RT1_RCA; \ - \ - XORQ rDe, rBo; \ - ROLQ $45, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ge(oState); \ - G_RT1_RCE; \ - \ - XORQ rDi, rBu; \ - ROLQ $61, rBu; \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _go(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _gu(oState); \ - NOTQ rBu; \ - G_RBA_RCU; \ - \ - ORQ rBu, rBo; \ - XORQ rBi, rBo; \ - MOVQ rBo, _gi(oState); \ - \ - /* Result k */ \ - MOVQ _be(iState), rBa; \ - MOVQ _gi(iState), rBe; \ - MOVQ _ko(iState), rBi; \ - MOVQ _mu(iState), rBo; \ - MOVQ _sa(iState), rBu; \ - XORQ rDi, rBe; \ - ROLQ $6, rBe; \ - XORQ rDo, rBi; \ - ROLQ $25, rBi; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDe, rBa; \ - ROLQ $1, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ka(oState); \ - K_RT1_RCA; \ - \ - XORQ rDu, rBo; \ - ROLQ $8, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ke(oState); \ - K_RT1_RCE; \ - \ - XORQ rDa, rBu; \ - ROLQ $18, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _ki(oState); \ - \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _ko(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _ku(oState); \ - K_RBA_RCU; \ - \ - /* Result m */ \ - MOVQ _ga(iState), rBe; \ - XORQ rDa, rBe; \ - MOVQ _ke(iState), rBi; \ - ROLQ $36, rBe; \ - XORQ rDe, rBi; \ - MOVQ _bu(iState), rBa; \ - ROLQ $10, rBi; \ - MOVQ rBe, rT1; \ - MOVQ _mi(iState), rBo; \ - ANDQ rBi, rT1; \ - XORQ rDu, rBa; \ - MOVQ _so(iState), rBu; \ - ROLQ $27, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ma(oState); \ - M_RT1_RCA; \ - \ - XORQ rDi, rBo; \ - ROLQ $15, rBo; \ - MOVQ rBi, rT1; \ - ORQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _me(oState); \ - M_RT1_RCE; \ - \ - XORQ rDo, rBu; \ - ROLQ $56, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ORQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _mi(oState); \ - \ - ORQ rBa, rBe; \ - XORQ rBu, rBe; \ - MOVQ rBe, _mu(oState); \ - \ - ANDQ rBa, rBu; \ - XORQ rBo, rBu; \ - MOVQ rBu, _mo(oState); \ - M_RBE_RCU; \ - \ - /* Result s */ \ - MOVQ _bi(iState), rBa; \ - MOVQ _go(iState), rBe; \ - MOVQ _ku(iState), rBi; \ - XORQ rDi, rBa; \ - MOVQ _ma(iState), rBo; \ - ROLQ $62, rBa; \ - XORQ rDo, rBe; \ - MOVQ _se(iState), rBu; \ - ROLQ $55, rBe; \ - \ - XORQ rDu, rBi; \ - MOVQ rBa, rDu; \ - XORQ rDe, rBu; \ - ROLQ $2, rBu; \ - ANDQ rBe, rDu; \ - XORQ rBu, rDu; \ - MOVQ rDu, _su(oState); \ - \ - ROLQ $39, rBi; \ - S_RDU_RCU; \ - NOTQ rBe; \ - XORQ rDa, rBo; \ - MOVQ rBe, rDa; \ - ANDQ rBi, rDa; \ - XORQ rBa, rDa; \ - MOVQ rDa, _sa(oState); \ - S_RDA_RCA; \ - \ - ROLQ $41, rBo; \ - MOVQ rBi, rDe; \ - ORQ rBo, rDe; \ - XORQ rBe, rDe; \ - MOVQ rDe, _se(oState); \ - S_RDE_RCE; \ - \ - MOVQ rBo, rDi; \ - MOVQ rBu, rDo; \ - ANDQ rBu, rDi; \ - ORQ rBa, rDo; \ - XORQ rBi, rDi; \ - XORQ rBo, rDo; \ - MOVQ rDi, _si(oState); \ - MOVQ rDo, _so(oState) \ - -// func keccakF1600(state *[25]uint64) -TEXT ·keccakF1600(SB), 0, $200-8 - MOVQ state+0(FP), rpState - - // Convert the user state into an internal state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) - - // Execute the KeccakF permutation - MOVQ _ba(rpState), rCa - MOVQ _be(rpState), rCe - MOVQ _bu(rpState), rCu - - XORQ _ga(rpState), rCa - XORQ _ge(rpState), rCe - XORQ _gu(rpState), rCu - - XORQ _ka(rpState), rCa - XORQ _ke(rpState), rCe - XORQ _ku(rpState), rCu - - XORQ _ma(rpState), rCa - XORQ _me(rpState), rCe - XORQ _mu(rpState), rCu - - XORQ _sa(rpState), rCa - XORQ _se(rpState), rCe - MOVQ _si(rpState), rDi - MOVQ _so(rpState), rDo - XORQ _su(rpState), rCu - - mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP) - - // Revert the internal state to the user state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) - - RET diff --git a/vendor/golang.org/x/crypto/sha3/register.go b/vendor/golang.org/x/crypto/sha3/register.go deleted file mode 100644 index 3cf6a22..0000000 --- a/vendor/golang.org/x/crypto/sha3/register.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.4 - -package sha3 - -import ( - "crypto" -) - -func init() { - crypto.RegisterHash(crypto.SHA3_224, New224) - crypto.RegisterHash(crypto.SHA3_256, New256) - crypto.RegisterHash(crypto.SHA3_384, New384) - crypto.RegisterHash(crypto.SHA3_512, New512) -} diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go deleted file mode 100644 index ba269a0..0000000 --- a/vendor/golang.org/x/crypto/sha3/sha3.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sha3 - -// spongeDirection indicates the direction bytes are flowing through the sponge. -type spongeDirection int - -const ( - // spongeAbsorbing indicates that the sponge is absorbing input. - spongeAbsorbing spongeDirection = iota - // spongeSqueezing indicates that the sponge is being squeezed. - spongeSqueezing -) - -const ( - // maxRate is the maximum size of the internal buffer. SHAKE-256 - // currently needs the largest buffer. - maxRate = 168 -) - -type state struct { - // Generic sponge components. - a [25]uint64 // main state of the hash - buf []byte // points into storage - rate int // the number of bytes of state to use - - // dsbyte contains the "domain separation" bits and the first bit of - // the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the - // SHA-3 and SHAKE functions by appending bitstrings to the message. - // Using a little-endian bit-ordering convention, these are "01" for SHA-3 - // and "1111" for SHAKE, or 00000010b and 00001111b, respectively. Then the - // padding rule from section 5.1 is applied to pad the message to a multiple - // of the rate, which involves adding a "1" bit, zero or more "0" bits, and - // a final "1" bit. We merge the first "1" bit from the padding into dsbyte, - // giving 00000110b (0x06) and 00011111b (0x1f). - // [1] http://csrc.nist.gov/publications/drafts/fips-202/fips_202_draft.pdf - // "Draft FIPS 202: SHA-3 Standard: Permutation-Based Hash and - // Extendable-Output Functions (May 2014)" - dsbyte byte - - storage storageBuf - - // Specific to SHA-3 and SHAKE. - outputLen int // the default output size in bytes - state spongeDirection // whether the sponge is absorbing or squeezing -} - -// BlockSize returns the rate of sponge underlying this hash function. -func (d *state) BlockSize() int { return d.rate } - -// Size returns the output size of the hash function in bytes. -func (d *state) Size() int { return d.outputLen } - -// Reset clears the internal state by zeroing the sponge state and -// the byte buffer, and setting Sponge.state to absorbing. -func (d *state) Reset() { - // Zero the permutation's state. - for i := range d.a { - d.a[i] = 0 - } - d.state = spongeAbsorbing - d.buf = d.storage.asBytes()[:0] -} - -func (d *state) clone() *state { - ret := *d - if ret.state == spongeAbsorbing { - ret.buf = ret.storage.asBytes()[:len(ret.buf)] - } else { - ret.buf = ret.storage.asBytes()[d.rate-cap(d.buf) : d.rate] - } - - return &ret -} - -// permute applies the KeccakF-1600 permutation. It handles -// any input-output buffering. -func (d *state) permute() { - switch d.state { - case spongeAbsorbing: - // If we're absorbing, we need to xor the input into the state - // before applying the permutation. - xorIn(d, d.buf) - d.buf = d.storage.asBytes()[:0] - keccakF1600(&d.a) - case spongeSqueezing: - // If we're squeezing, we need to apply the permutatin before - // copying more output. - keccakF1600(&d.a) - d.buf = d.storage.asBytes()[:d.rate] - copyOut(d, d.buf) - } -} - -// pads appends the domain separation bits in dsbyte, applies -// the multi-bitrate 10..1 padding rule, and permutes the state. -func (d *state) padAndPermute(dsbyte byte) { - if d.buf == nil { - d.buf = d.storage.asBytes()[:0] - } - // Pad with this instance's domain-separator bits. We know that there's - // at least one byte of space in d.buf because, if it were full, - // permute would have been called to empty it. dsbyte also contains the - // first one bit for the padding. See the comment in the state struct. - d.buf = append(d.buf, dsbyte) - zerosStart := len(d.buf) - d.buf = d.storage.asBytes()[:d.rate] - for i := zerosStart; i < d.rate; i++ { - d.buf[i] = 0 - } - // This adds the final one bit for the padding. Because of the way that - // bits are numbered from the LSB upwards, the final bit is the MSB of - // the last byte. - d.buf[d.rate-1] ^= 0x80 - // Apply the permutation - d.permute() - d.state = spongeSqueezing - d.buf = d.storage.asBytes()[:d.rate] - copyOut(d, d.buf) -} - -// Write absorbs more data into the hash's state. It produces an error -// if more data is written to the ShakeHash after writing -func (d *state) Write(p []byte) (written int, err error) { - if d.state != spongeAbsorbing { - panic("sha3: write to sponge after read") - } - if d.buf == nil { - d.buf = d.storage.asBytes()[:0] - } - written = len(p) - - for len(p) > 0 { - if len(d.buf) == 0 && len(p) >= d.rate { - // The fast path; absorb a full "rate" bytes of input and apply the permutation. - xorIn(d, p[:d.rate]) - p = p[d.rate:] - keccakF1600(&d.a) - } else { - // The slow path; buffer the input until we can fill the sponge, and then xor it in. - todo := d.rate - len(d.buf) - if todo > len(p) { - todo = len(p) - } - d.buf = append(d.buf, p[:todo]...) - p = p[todo:] - - // If the sponge is full, apply the permutation. - if len(d.buf) == d.rate { - d.permute() - } - } - } - - return -} - -// Read squeezes an arbitrary number of bytes from the sponge. -func (d *state) Read(out []byte) (n int, err error) { - // If we're still absorbing, pad and apply the permutation. - if d.state == spongeAbsorbing { - d.padAndPermute(d.dsbyte) - } - - n = len(out) - - // Now, do the squeezing. - for len(out) > 0 { - n := copy(out, d.buf) - d.buf = d.buf[n:] - out = out[n:] - - // Apply the permutation if we've squeezed the sponge dry. - if len(d.buf) == 0 { - d.permute() - } - } - - return -} - -// Sum applies padding to the hash state and then squeezes out the desired -// number of output bytes. -func (d *state) Sum(in []byte) []byte { - // Make a copy of the original hash so that caller can keep writing - // and summing. - dup := d.clone() - hash := make([]byte, dup.outputLen) - dup.Read(hash) - return append(in, hash...) -} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go b/vendor/golang.org/x/crypto/sha3/sha3_s390x.go deleted file mode 100644 index 259ff4d..0000000 --- a/vendor/golang.org/x/crypto/sha3/sha3_s390x.go +++ /dev/null @@ -1,284 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo,!appengine - -package sha3 - -// This file contains code for using the 'compute intermediate -// message digest' (KIMD) and 'compute last message digest' (KLMD) -// instructions to compute SHA-3 and SHAKE hashes on IBM Z. - -import ( - "hash" - - "golang.org/x/sys/cpu" -) - -// codes represent 7-bit KIMD/KLMD function codes as defined in -// the Principles of Operation. -type code uint64 - -const ( - // function codes for KIMD/KLMD - sha3_224 code = 32 - sha3_256 = 33 - sha3_384 = 34 - sha3_512 = 35 - shake_128 = 36 - shake_256 = 37 - nopad = 0x100 -) - -// kimd is a wrapper for the 'compute intermediate message digest' instruction. -// src must be a multiple of the rate for the given function code. -//go:noescape -func kimd(function code, chain *[200]byte, src []byte) - -// klmd is a wrapper for the 'compute last message digest' instruction. -// src padding is handled by the instruction. -//go:noescape -func klmd(function code, chain *[200]byte, dst, src []byte) - -type asmState struct { - a [200]byte // 1600 bit state - buf []byte // care must be taken to ensure cap(buf) is a multiple of rate - rate int // equivalent to block size - storage [3072]byte // underlying storage for buf - outputLen int // output length if fixed, 0 if not - function code // KIMD/KLMD function code - state spongeDirection // whether the sponge is absorbing or squeezing -} - -func newAsmState(function code) *asmState { - var s asmState - s.function = function - switch function { - case sha3_224: - s.rate = 144 - s.outputLen = 28 - case sha3_256: - s.rate = 136 - s.outputLen = 32 - case sha3_384: - s.rate = 104 - s.outputLen = 48 - case sha3_512: - s.rate = 72 - s.outputLen = 64 - case shake_128: - s.rate = 168 - case shake_256: - s.rate = 136 - default: - panic("sha3: unrecognized function code") - } - - // limit s.buf size to a multiple of s.rate - s.resetBuf() - return &s -} - -func (s *asmState) clone() *asmState { - c := *s - c.buf = c.storage[:len(s.buf):cap(s.buf)] - return &c -} - -// copyIntoBuf copies b into buf. It will panic if there is not enough space to -// store all of b. -func (s *asmState) copyIntoBuf(b []byte) { - bufLen := len(s.buf) - s.buf = s.buf[:len(s.buf)+len(b)] - copy(s.buf[bufLen:], b) -} - -// resetBuf points buf at storage, sets the length to 0 and sets cap to be a -// multiple of the rate. -func (s *asmState) resetBuf() { - max := (cap(s.storage) / s.rate) * s.rate - s.buf = s.storage[:0:max] -} - -// Write (via the embedded io.Writer interface) adds more data to the running hash. -// It never returns an error. -func (s *asmState) Write(b []byte) (int, error) { - if s.state != spongeAbsorbing { - panic("sha3: write to sponge after read") - } - length := len(b) - for len(b) > 0 { - if len(s.buf) == 0 && len(b) >= cap(s.buf) { - // Hash the data directly and push any remaining bytes - // into the buffer. - remainder := len(b) % s.rate - kimd(s.function, &s.a, b[:len(b)-remainder]) - if remainder != 0 { - s.copyIntoBuf(b[len(b)-remainder:]) - } - return length, nil - } - - if len(s.buf) == cap(s.buf) { - // flush the buffer - kimd(s.function, &s.a, s.buf) - s.buf = s.buf[:0] - } - - // copy as much as we can into the buffer - n := len(b) - if len(b) > cap(s.buf)-len(s.buf) { - n = cap(s.buf) - len(s.buf) - } - s.copyIntoBuf(b[:n]) - b = b[n:] - } - return length, nil -} - -// Read squeezes an arbitrary number of bytes from the sponge. -func (s *asmState) Read(out []byte) (n int, err error) { - n = len(out) - - // need to pad if we were absorbing - if s.state == spongeAbsorbing { - s.state = spongeSqueezing - - // write hash directly into out if possible - if len(out)%s.rate == 0 { - klmd(s.function, &s.a, out, s.buf) // len(out) may be 0 - s.buf = s.buf[:0] - return - } - - // write hash into buffer - max := cap(s.buf) - if max > len(out) { - max = (len(out)/s.rate)*s.rate + s.rate - } - klmd(s.function, &s.a, s.buf[:max], s.buf) - s.buf = s.buf[:max] - } - - for len(out) > 0 { - // flush the buffer - if len(s.buf) != 0 { - c := copy(out, s.buf) - out = out[c:] - s.buf = s.buf[c:] - continue - } - - // write hash directly into out if possible - if len(out)%s.rate == 0 { - klmd(s.function|nopad, &s.a, out, nil) - return - } - - // write hash into buffer - s.resetBuf() - if cap(s.buf) > len(out) { - s.buf = s.buf[:(len(out)/s.rate)*s.rate+s.rate] - } - klmd(s.function|nopad, &s.a, s.buf, nil) - } - return -} - -// Sum appends the current hash to b and returns the resulting slice. -// It does not change the underlying hash state. -func (s *asmState) Sum(b []byte) []byte { - if s.outputLen == 0 { - panic("sha3: cannot call Sum on SHAKE functions") - } - - // Copy the state to preserve the original. - a := s.a - - // Hash the buffer. Note that we don't clear it because we - // aren't updating the state. - klmd(s.function, &a, nil, s.buf) - return append(b, a[:s.outputLen]...) -} - -// Reset resets the Hash to its initial state. -func (s *asmState) Reset() { - for i := range s.a { - s.a[i] = 0 - } - s.resetBuf() - s.state = spongeAbsorbing -} - -// Size returns the number of bytes Sum will return. -func (s *asmState) Size() int { - return s.outputLen -} - -// BlockSize returns the hash's underlying block size. -// The Write method must be able to accept any amount -// of data, but it may operate more efficiently if all writes -// are a multiple of the block size. -func (s *asmState) BlockSize() int { - return s.rate -} - -// Clone returns a copy of the ShakeHash in its current state. -func (s *asmState) Clone() ShakeHash { - return s.clone() -} - -// new224Asm returns an assembly implementation of SHA3-224 if available, -// otherwise it returns nil. -func new224Asm() hash.Hash { - if cpu.S390X.HasSHA3 { - return newAsmState(sha3_224) - } - return nil -} - -// new256Asm returns an assembly implementation of SHA3-256 if available, -// otherwise it returns nil. -func new256Asm() hash.Hash { - if cpu.S390X.HasSHA3 { - return newAsmState(sha3_256) - } - return nil -} - -// new384Asm returns an assembly implementation of SHA3-384 if available, -// otherwise it returns nil. -func new384Asm() hash.Hash { - if cpu.S390X.HasSHA3 { - return newAsmState(sha3_384) - } - return nil -} - -// new512Asm returns an assembly implementation of SHA3-512 if available, -// otherwise it returns nil. -func new512Asm() hash.Hash { - if cpu.S390X.HasSHA3 { - return newAsmState(sha3_512) - } - return nil -} - -// newShake128Asm returns an assembly implementation of SHAKE-128 if available, -// otherwise it returns nil. -func newShake128Asm() ShakeHash { - if cpu.S390X.HasSHA3 { - return newAsmState(shake_128) - } - return nil -} - -// newShake256Asm returns an assembly implementation of SHAKE-256 if available, -// otherwise it returns nil. -func newShake256Asm() ShakeHash { - if cpu.S390X.HasSHA3 { - return newAsmState(shake_256) - } - return nil -} diff --git a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s b/vendor/golang.org/x/crypto/sha3/sha3_s390x.s deleted file mode 100644 index 8a4458f..0000000 --- a/vendor/golang.org/x/crypto/sha3/sha3_s390x.s +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo,!appengine - -#include "textflag.h" - -// func kimd(function code, chain *[200]byte, src []byte) -TEXT ·kimd(SB), NOFRAME|NOSPLIT, $0-40 - MOVD function+0(FP), R0 - MOVD chain+8(FP), R1 - LMG src+16(FP), R2, R3 // R2=base, R3=len - -continue: - WORD $0xB93E0002 // KIMD --, R2 - BVS continue // continue if interrupted - MOVD $0, R0 // reset R0 for pre-go1.8 compilers - RET - -// func klmd(function code, chain *[200]byte, dst, src []byte) -TEXT ·klmd(SB), NOFRAME|NOSPLIT, $0-64 - // TODO: SHAKE support - MOVD function+0(FP), R0 - MOVD chain+8(FP), R1 - LMG dst+16(FP), R2, R3 // R2=base, R3=len - LMG src+40(FP), R4, R5 // R4=base, R5=len - -continue: - WORD $0xB93F0024 // KLMD R2, R4 - BVS continue // continue if interrupted - MOVD $0, R0 // reset R0 for pre-go1.8 compilers - RET diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go deleted file mode 100644 index d7be295..0000000 --- a/vendor/golang.org/x/crypto/sha3/shake.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sha3 - -// This file defines the ShakeHash interface, and provides -// functions for creating SHAKE and cSHAKE instances, as well as utility -// functions for hashing bytes to arbitrary-length output. -// -// -// SHAKE implementation is based on FIPS PUB 202 [1] -// cSHAKE implementations is based on NIST SP 800-185 [2] -// -// [1] https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf -// [2] https://doi.org/10.6028/NIST.SP.800-185 - -import ( - "encoding/binary" - "io" -) - -// ShakeHash defines the interface to hash functions that -// support arbitrary-length output. -type ShakeHash interface { - // Write absorbs more data into the hash's state. It panics if input is - // written to it after output has been read from it. - io.Writer - - // Read reads more output from the hash; reading affects the hash's - // state. (ShakeHash.Read is thus very different from Hash.Sum) - // It never returns an error. - io.Reader - - // Clone returns a copy of the ShakeHash in its current state. - Clone() ShakeHash - - // Reset resets the ShakeHash to its initial state. - Reset() -} - -// cSHAKE specific context -type cshakeState struct { - *state // SHA-3 state context and Read/Write operations - - // initBlock is the cSHAKE specific initialization set of bytes. It is initialized - // by newCShake function and stores concatenation of N followed by S, encoded - // by the method specified in 3.3 of [1]. - // It is stored here in order for Reset() to be able to put context into - // initial state. - initBlock []byte -} - -// Consts for configuring initial SHA-3 state -const ( - dsbyteShake = 0x1f - dsbyteCShake = 0x04 - rate128 = 168 - rate256 = 136 -) - -func bytepad(input []byte, w int) []byte { - // leftEncode always returns max 9 bytes - buf := make([]byte, 0, 9+len(input)+w) - buf = append(buf, leftEncode(uint64(w))...) - buf = append(buf, input...) - padlen := w - (len(buf) % w) - return append(buf, make([]byte, padlen)...) -} - -func leftEncode(value uint64) []byte { - var b [9]byte - binary.BigEndian.PutUint64(b[1:], value) - // Trim all but last leading zero bytes - i := byte(1) - for i < 8 && b[i] == 0 { - i++ - } - // Prepend number of encoded bytes - b[i-1] = 9 - i - return b[i-1:] -} - -func newCShake(N, S []byte, rate int, dsbyte byte) ShakeHash { - c := cshakeState{state: &state{rate: rate, dsbyte: dsbyte}} - - // leftEncode returns max 9 bytes - c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) - c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...) - c.initBlock = append(c.initBlock, N...) - c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...) - c.initBlock = append(c.initBlock, S...) - c.Write(bytepad(c.initBlock, c.rate)) - return &c -} - -// Reset resets the hash to initial state. -func (c *cshakeState) Reset() { - c.state.Reset() - c.Write(bytepad(c.initBlock, c.rate)) -} - -// Clone returns copy of a cSHAKE context within its current state. -func (c *cshakeState) Clone() ShakeHash { - b := make([]byte, len(c.initBlock)) - copy(b, c.initBlock) - return &cshakeState{state: c.clone(), initBlock: b} -} - -// Clone returns copy of SHAKE context within its current state. -func (c *state) Clone() ShakeHash { - return c.clone() -} - -// NewShake128 creates a new SHAKE128 variable-output-length ShakeHash. -// Its generic security strength is 128 bits against all attacks if at -// least 32 bytes of its output are used. -func NewShake128() ShakeHash { - if h := newShake128Asm(); h != nil { - return h - } - return &state{rate: rate128, dsbyte: dsbyteShake} -} - -// NewShake256 creates a new SHAKE256 variable-output-length ShakeHash. -// Its generic security strength is 256 bits against all attacks if -// at least 64 bytes of its output are used. -func NewShake256() ShakeHash { - if h := newShake256Asm(); h != nil { - return h - } - return &state{rate: rate256, dsbyte: dsbyteShake} -} - -// NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash, -// a customizable variant of SHAKE128. -// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is -// desired. S is a customization byte string used for domain separation - two cSHAKE -// computations on same input with different S yield unrelated outputs. -// When N and S are both empty, this is equivalent to NewShake128. -func NewCShake128(N, S []byte) ShakeHash { - if len(N) == 0 && len(S) == 0 { - return NewShake128() - } - return newCShake(N, S, rate128, dsbyteCShake) -} - -// NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash, -// a customizable variant of SHAKE256. -// N is used to define functions based on cSHAKE, it can be empty when plain cSHAKE is -// desired. S is a customization byte string used for domain separation - two cSHAKE -// computations on same input with different S yield unrelated outputs. -// When N and S are both empty, this is equivalent to NewShake256. -func NewCShake256(N, S []byte) ShakeHash { - if len(N) == 0 && len(S) == 0 { - return NewShake256() - } - return newCShake(N, S, rate256, dsbyteCShake) -} - -// ShakeSum128 writes an arbitrary-length digest of data into hash. -func ShakeSum128(hash, data []byte) { - h := NewShake128() - h.Write(data) - h.Read(hash) -} - -// ShakeSum256 writes an arbitrary-length digest of data into hash. -func ShakeSum256(hash, data []byte) { - h := NewShake256() - h.Write(data) - h.Read(hash) -} diff --git a/vendor/golang.org/x/crypto/sha3/shake_generic.go b/vendor/golang.org/x/crypto/sha3/shake_generic.go deleted file mode 100644 index add4e73..0000000 --- a/vendor/golang.org/x/crypto/sha3/shake_generic.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gccgo appengine !s390x - -package sha3 - -// newShake128Asm returns an assembly implementation of SHAKE-128 if available, -// otherwise it returns nil. -func newShake128Asm() ShakeHash { - return nil -} - -// newShake256Asm returns an assembly implementation of SHAKE-256 if available, -// otherwise it returns nil. -func newShake256Asm() ShakeHash { - return nil -} diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go deleted file mode 100644 index 079b650..0000000 --- a/vendor/golang.org/x/crypto/sha3/xor.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !amd64,!386,!ppc64le appengine - -package sha3 - -// A storageBuf is an aligned array of maxRate bytes. -type storageBuf [maxRate]byte - -func (b *storageBuf) asBytes() *[maxRate]byte { - return (*[maxRate]byte)(b) -} - -var ( - xorIn = xorInGeneric - copyOut = copyOutGeneric - xorInUnaligned = xorInGeneric - copyOutUnaligned = copyOutGeneric -) - -const xorImplementationUnaligned = "generic" diff --git a/vendor/golang.org/x/crypto/sha3/xor_generic.go b/vendor/golang.org/x/crypto/sha3/xor_generic.go deleted file mode 100644 index fd35f02..0000000 --- a/vendor/golang.org/x/crypto/sha3/xor_generic.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sha3 - -import "encoding/binary" - -// xorInGeneric xors the bytes in buf into the state; it -// makes no non-portable assumptions about memory layout -// or alignment. -func xorInGeneric(d *state, buf []byte) { - n := len(buf) / 8 - - for i := 0; i < n; i++ { - a := binary.LittleEndian.Uint64(buf) - d.a[i] ^= a - buf = buf[8:] - } -} - -// copyOutGeneric copies ulint64s to a byte buffer. -func copyOutGeneric(d *state, b []byte) { - for i := 0; len(b) >= 8; i++ { - binary.LittleEndian.PutUint64(b, d.a[i]) - b = b[8:] - } -} diff --git a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go b/vendor/golang.org/x/crypto/sha3/xor_unaligned.go deleted file mode 100644 index a3d0686..0000000 --- a/vendor/golang.org/x/crypto/sha3/xor_unaligned.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64 386 ppc64le -// +build !appengine - -package sha3 - -import "unsafe" - -// A storageBuf is an aligned array of maxRate bytes. -type storageBuf [maxRate / 8]uint64 - -func (b *storageBuf) asBytes() *[maxRate]byte { - return (*[maxRate]byte)(unsafe.Pointer(b)) -} - -func xorInUnaligned(d *state, buf []byte) { - n := len(buf) - bw := (*[maxRate / 8]uint64)(unsafe.Pointer(&buf[0]))[: n/8 : n/8] - if n >= 72 { - d.a[0] ^= bw[0] - d.a[1] ^= bw[1] - d.a[2] ^= bw[2] - d.a[3] ^= bw[3] - d.a[4] ^= bw[4] - d.a[5] ^= bw[5] - d.a[6] ^= bw[6] - d.a[7] ^= bw[7] - d.a[8] ^= bw[8] - } - if n >= 104 { - d.a[9] ^= bw[9] - d.a[10] ^= bw[10] - d.a[11] ^= bw[11] - d.a[12] ^= bw[12] - } - if n >= 136 { - d.a[13] ^= bw[13] - d.a[14] ^= bw[14] - d.a[15] ^= bw[15] - d.a[16] ^= bw[16] - } - if n >= 144 { - d.a[17] ^= bw[17] - } - if n >= 168 { - d.a[18] ^= bw[18] - d.a[19] ^= bw[19] - d.a[20] ^= bw[20] - } -} - -func copyOutUnaligned(d *state, buf []byte) { - ab := (*[maxRate]uint8)(unsafe.Pointer(&d.a[0])) - copy(buf, ab[:]) -} - -var ( - xorIn = xorInUnaligned - copyOut = copyOutUnaligned -) - -const xorImplementationUnaligned = "unaligned" diff --git a/vendor/golang.org/x/crypto/tea/cipher.go b/vendor/golang.org/x/crypto/tea/cipher.go deleted file mode 100644 index c1ff90e..0000000 --- a/vendor/golang.org/x/crypto/tea/cipher.go +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package tea implements the TEA algorithm, as defined in Needham and -// Wheeler's 1994 technical report, “TEA, a Tiny Encryption Algorithm”. See -// http://www.cix.co.uk/~klockstone/tea.pdf for details. -// -// TEA is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package tea - -import ( - "crypto/cipher" - "encoding/binary" - "errors" -) - -const ( - // BlockSize is the size of a TEA block, in bytes. - BlockSize = 8 - - // KeySize is the size of a TEA key, in bytes. - KeySize = 16 - - // delta is the TEA key schedule constant. - delta = 0x9e3779b9 - - // numRounds is the standard number of rounds in TEA. - numRounds = 64 -) - -// tea is an instance of the TEA cipher with a particular key. -type tea struct { - key [16]byte - rounds int -} - -// NewCipher returns an instance of the TEA cipher with the standard number of -// rounds. The key argument must be 16 bytes long. -func NewCipher(key []byte) (cipher.Block, error) { - return NewCipherWithRounds(key, numRounds) -} - -// NewCipherWithRounds returns an instance of the TEA cipher with a given -// number of rounds, which must be even. The key argument must be 16 bytes -// long. -func NewCipherWithRounds(key []byte, rounds int) (cipher.Block, error) { - if len(key) != 16 { - return nil, errors.New("tea: incorrect key size") - } - - if rounds&1 != 0 { - return nil, errors.New("tea: odd number of rounds specified") - } - - c := &tea{ - rounds: rounds, - } - copy(c.key[:], key) - - return c, nil -} - -// BlockSize returns the TEA block size, which is eight bytes. It is necessary -// to satisfy the Block interface in the package "crypto/cipher". -func (*tea) BlockSize() int { - return BlockSize -} - -// Encrypt encrypts the 8 byte buffer src using the key in t and stores the -// result in dst. Note that for amounts of data larger than a block, it is not -// safe to just call Encrypt on successive blocks; instead, use an encryption -// mode like CBC (see crypto/cipher/cbc.go). -func (t *tea) Encrypt(dst, src []byte) { - e := binary.BigEndian - v0, v1 := e.Uint32(src), e.Uint32(src[4:]) - k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) - - sum := uint32(0) - delta := uint32(delta) - - for i := 0; i < t.rounds/2; i++ { - sum += delta - v0 += ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) - v1 += ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) - } - - e.PutUint32(dst, v0) - e.PutUint32(dst[4:], v1) -} - -// Decrypt decrypts the 8 byte buffer src using the key in t and stores the -// result in dst. -func (t *tea) Decrypt(dst, src []byte) { - e := binary.BigEndian - v0, v1 := e.Uint32(src), e.Uint32(src[4:]) - k0, k1, k2, k3 := e.Uint32(t.key[0:]), e.Uint32(t.key[4:]), e.Uint32(t.key[8:]), e.Uint32(t.key[12:]) - - delta := uint32(delta) - sum := delta * uint32(t.rounds/2) // in general, sum = delta * n - - for i := 0; i < t.rounds/2; i++ { - v1 -= ((v0 << 4) + k2) ^ (v0 + sum) ^ ((v0 >> 5) + k3) - v0 -= ((v1 << 4) + k0) ^ (v1 + sum) ^ ((v1 >> 5) + k1) - sum -= delta - } - - e.PutUint32(dst, v0) - e.PutUint32(dst[4:], v1) -} diff --git a/vendor/golang.org/x/crypto/twofish/twofish.go b/vendor/golang.org/x/crypto/twofish/twofish.go deleted file mode 100644 index 1197d75..0000000 --- a/vendor/golang.org/x/crypto/twofish/twofish.go +++ /dev/null @@ -1,348 +0,0 @@ -// Copyright 2011 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package twofish implements Bruce Schneier's Twofish encryption algorithm. -// -// Deprecated: Twofish is a legacy cipher and should not be used for new -// applications. Also, this package does not and will not provide an optimized -// implementation. Instead, use AES (from crypto/aes, if necessary in an AEAD -// mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package twofish // import "golang.org/x/crypto/twofish" - -// Twofish is defined in https://www.schneier.com/paper-twofish-paper.pdf [TWOFISH] - -// This code is a port of the LibTom C implementation. -// See http://libtom.org/?page=features&newsitems=5&whatfile=crypt. -// LibTomCrypt is free for all purposes under the public domain. -// It was heavily inspired by the go blowfish package. - -import "strconv" - -// BlockSize is the constant block size of Twofish. -const BlockSize = 16 - -const mdsPolynomial = 0x169 // x^8 + x^6 + x^5 + x^3 + 1, see [TWOFISH] 4.2 -const rsPolynomial = 0x14d // x^8 + x^6 + x^3 + x^2 + 1, see [TWOFISH] 4.3 - -// A Cipher is an instance of Twofish encryption using a particular key. -type Cipher struct { - s [4][256]uint32 - k [40]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/twofish: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a Cipher. -// The key argument should be the Twofish key, 16, 24 or 32 bytes. -func NewCipher(key []byte) (*Cipher, error) { - keylen := len(key) - - if keylen != 16 && keylen != 24 && keylen != 32 { - return nil, KeySizeError(keylen) - } - - // k is the number of 64 bit words in key - k := keylen / 8 - - // Create the S[..] words - var S [4 * 4]byte - for i := 0; i < k; i++ { - // Computes [y0 y1 y2 y3] = rs . [x0 x1 x2 x3 x4 x5 x6 x7] - for j, rsRow := range rs { - for k, rsVal := range rsRow { - S[4*i+j] ^= gfMult(key[8*i+k], rsVal, rsPolynomial) - } - } - } - - // Calculate subkeys - c := new(Cipher) - var tmp [4]byte - for i := byte(0); i < 20; i++ { - // A = h(p * 2x, Me) - for j := range tmp { - tmp[j] = 2 * i - } - A := h(tmp[:], key, 0) - - // B = rolc(h(p * (2x + 1), Mo), 8) - for j := range tmp { - tmp[j] = 2*i + 1 - } - B := h(tmp[:], key, 1) - B = rol(B, 8) - - c.k[2*i] = A + B - - // K[2i+1] = (A + 2B) <<< 9 - c.k[2*i+1] = rol(2*B+A, 9) - } - - // Calculate sboxes - switch k { - case 2: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][byte(i)]^S[0]]^S[4]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][byte(i)]^S[1]]^S[5]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][byte(i)]^S[2]]^S[6]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][byte(i)]^S[3]]^S[7]], 3) - } - case 3: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[1]]^S[5]]^S[9]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[3]]^S[7]]^S[11]], 3) - } - default: - for i := range c.s[0] { - c.s[0][i] = mdsColumnMult(sbox[1][sbox[0][sbox[0][sbox[1][sbox[1][byte(i)]^S[0]]^S[4]]^S[8]]^S[12]], 0) - c.s[1][i] = mdsColumnMult(sbox[0][sbox[0][sbox[1][sbox[1][sbox[0][byte(i)]^S[1]]^S[5]]^S[9]]^S[13]], 1) - c.s[2][i] = mdsColumnMult(sbox[1][sbox[1][sbox[0][sbox[0][sbox[0][byte(i)]^S[2]]^S[6]]^S[10]]^S[14]], 2) - c.s[3][i] = mdsColumnMult(sbox[0][sbox[1][sbox[1][sbox[0][sbox[1][byte(i)]^S[3]]^S[7]]^S[11]]^S[15]], 3) - } - } - - return c, nil -} - -// BlockSize returns the Twofish block size, 16 bytes. -func (c *Cipher) BlockSize() int { return BlockSize } - -// store32l stores src in dst in little-endian form. -func store32l(dst []byte, src uint32) { - dst[0] = byte(src) - dst[1] = byte(src >> 8) - dst[2] = byte(src >> 16) - dst[3] = byte(src >> 24) - return -} - -// load32l reads a little-endian uint32 from src. -func load32l(src []byte) uint32 { - return uint32(src[0]) | uint32(src[1])<<8 | uint32(src[2])<<16 | uint32(src[3])<<24 -} - -// rol returns x after a left circular rotation of y bits. -func rol(x, y uint32) uint32 { - return (x << (y & 31)) | (x >> (32 - (y & 31))) -} - -// ror returns x after a right circular rotation of y bits. -func ror(x, y uint32) uint32 { - return (x >> (y & 31)) | (x << (32 - (y & 31))) -} - -// The RS matrix. See [TWOFISH] 4.3 -var rs = [4][8]byte{ - {0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E}, - {0xA4, 0x56, 0x82, 0xF3, 0x1E, 0xC6, 0x68, 0xE5}, - {0x02, 0xA1, 0xFC, 0xC1, 0x47, 0xAE, 0x3D, 0x19}, - {0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E, 0x03}, -} - -// sbox tables -var sbox = [2][256]byte{ - { - 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, - 0x0d, 0xc6, 0x35, 0x98, 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, 0x94, 0x48, - 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, - 0x63, 0x01, 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, 0x16, 0x0c, 0xe3, 0x61, - 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, - 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, - 0xfb, 0xc3, 0x8e, 0xb5, 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, 0x62, 0x71, - 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, - 0xa1, 0x1d, 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, 0x31, 0xc2, 0x27, 0x90, - 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, - 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, - 0x2a, 0xce, 0xcb, 0x2f, 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, 0xa7, 0x5a, - 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, - 0x57, 0xc7, 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, 0x58, 0x07, 0x99, 0x34, - 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, - 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0, - }, - { - 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, - 0xd6, 0x32, 0xd8, 0xfd, 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, 0x06, 0x3f, - 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, - 0xa0, 0x84, 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, 0x92, 0x74, 0x36, 0x51, - 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, - 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, - 0xa6, 0x83, 0x20, 0xff, 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, 0x2b, 0xe2, - 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, - 0x66, 0x94, 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, 0xef, 0xd1, 0x53, 0x3e, - 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, - 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, - 0x4f, 0xf2, 0x65, 0x8e, 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, 0x05, 0x64, - 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, - 0x29, 0x2e, 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, 0x35, 0x6a, 0xcf, 0xdc, - 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, - 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91, - }, -} - -// gfMult returns a·b in GF(2^8)/p -func gfMult(a, b byte, p uint32) byte { - B := [2]uint32{0, uint32(b)} - P := [2]uint32{0, p} - var result uint32 - - // branchless GF multiplier - for i := 0; i < 7; i++ { - result ^= B[a&1] - a >>= 1 - B[1] = P[B[1]>>7] ^ (B[1] << 1) - } - result ^= B[a&1] - return byte(result) -} - -// mdsColumnMult calculates y{col} where [y0 y1 y2 y3] = MDS · [x0] -func mdsColumnMult(in byte, col int) uint32 { - mul01 := in - mul5B := gfMult(in, 0x5B, mdsPolynomial) - mulEF := gfMult(in, 0xEF, mdsPolynomial) - - switch col { - case 0: - return uint32(mul01) | uint32(mul5B)<<8 | uint32(mulEF)<<16 | uint32(mulEF)<<24 - case 1: - return uint32(mulEF) | uint32(mulEF)<<8 | uint32(mul5B)<<16 | uint32(mul01)<<24 - case 2: - return uint32(mul5B) | uint32(mulEF)<<8 | uint32(mul01)<<16 | uint32(mulEF)<<24 - case 3: - return uint32(mul5B) | uint32(mul01)<<8 | uint32(mulEF)<<16 | uint32(mul5B)<<24 - } - - panic("unreachable") -} - -// h implements the S-box generation function. See [TWOFISH] 4.3.5 -func h(in, key []byte, offset int) uint32 { - var y [4]byte - for x := range y { - y[x] = in[x] - } - switch len(key) / 8 { - case 4: - y[0] = sbox[1][y[0]] ^ key[4*(6+offset)+0] - y[1] = sbox[0][y[1]] ^ key[4*(6+offset)+1] - y[2] = sbox[0][y[2]] ^ key[4*(6+offset)+2] - y[3] = sbox[1][y[3]] ^ key[4*(6+offset)+3] - fallthrough - case 3: - y[0] = sbox[1][y[0]] ^ key[4*(4+offset)+0] - y[1] = sbox[1][y[1]] ^ key[4*(4+offset)+1] - y[2] = sbox[0][y[2]] ^ key[4*(4+offset)+2] - y[3] = sbox[0][y[3]] ^ key[4*(4+offset)+3] - fallthrough - case 2: - y[0] = sbox[1][sbox[0][sbox[0][y[0]]^key[4*(2+offset)+0]]^key[4*(0+offset)+0]] - y[1] = sbox[0][sbox[0][sbox[1][y[1]]^key[4*(2+offset)+1]]^key[4*(0+offset)+1]] - y[2] = sbox[1][sbox[1][sbox[0][y[2]]^key[4*(2+offset)+2]]^key[4*(0+offset)+2]] - y[3] = sbox[0][sbox[1][sbox[1][y[3]]^key[4*(2+offset)+3]]^key[4*(0+offset)+3]] - } - // [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] - var mdsMult uint32 - for i := range y { - mdsMult ^= mdsColumnMult(y[i], i) - } - return mdsMult -} - -// Encrypt encrypts a 16-byte block from src to dst, which may overlap. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { - S1 := c.s[0] - S2 := c.s[1] - S3 := c.s[2] - S4 := c.s[3] - - // Load input - ia := load32l(src[0:4]) - ib := load32l(src[4:8]) - ic := load32l(src[8:12]) - id := load32l(src[12:16]) - - // Pre-whitening - ia ^= c.k[0] - ib ^= c.k[1] - ic ^= c.k[2] - id ^= c.k[3] - - for i := 0; i < 8; i++ { - k := c.k[8+i*4 : 12+i*4] - t2 := S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] - t1 := S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 - ic = ror(ic^(t1+k[0]), 1) - id = rol(id, 1) ^ (t2 + t1 + k[1]) - - t2 = S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] - t1 = S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 - ia = ror(ia^(t1+k[2]), 1) - ib = rol(ib, 1) ^ (t2 + t1 + k[3]) - } - - // Output with "undo last swap" - ta := ic ^ c.k[4] - tb := id ^ c.k[5] - tc := ia ^ c.k[6] - td := ib ^ c.k[7] - - store32l(dst[0:4], ta) - store32l(dst[4:8], tb) - store32l(dst[8:12], tc) - store32l(dst[12:16], td) -} - -// Decrypt decrypts a 16-byte block from src to dst, which may overlap. -func (c *Cipher) Decrypt(dst, src []byte) { - S1 := c.s[0] - S2 := c.s[1] - S3 := c.s[2] - S4 := c.s[3] - - // Load input - ta := load32l(src[0:4]) - tb := load32l(src[4:8]) - tc := load32l(src[8:12]) - td := load32l(src[12:16]) - - // Undo undo final swap - ia := tc ^ c.k[6] - ib := td ^ c.k[7] - ic := ta ^ c.k[4] - id := tb ^ c.k[5] - - for i := 8; i > 0; i-- { - k := c.k[4+i*4 : 8+i*4] - t2 := S2[byte(id)] ^ S3[byte(id>>8)] ^ S4[byte(id>>16)] ^ S1[byte(id>>24)] - t1 := S1[byte(ic)] ^ S2[byte(ic>>8)] ^ S3[byte(ic>>16)] ^ S4[byte(ic>>24)] + t2 - ia = rol(ia, 1) ^ (t1 + k[2]) - ib = ror(ib^(t2+t1+k[3]), 1) - - t2 = S2[byte(ib)] ^ S3[byte(ib>>8)] ^ S4[byte(ib>>16)] ^ S1[byte(ib>>24)] - t1 = S1[byte(ia)] ^ S2[byte(ia>>8)] ^ S3[byte(ia>>16)] ^ S4[byte(ia>>24)] + t2 - ic = rol(ic, 1) ^ (t1 + k[0]) - id = ror(id^(t2+t1+k[1]), 1) - } - - // Undo pre-whitening - ia ^= c.k[0] - ib ^= c.k[1] - ic ^= c.k[2] - id ^= c.k[3] - - store32l(dst[0:4], ia) - store32l(dst[4:8], ib) - store32l(dst[8:12], ic) - store32l(dst[12:16], id) -} diff --git a/vendor/golang.org/x/crypto/xtea/block.go b/vendor/golang.org/x/crypto/xtea/block.go deleted file mode 100644 index fcb4e4d..0000000 --- a/vendor/golang.org/x/crypto/xtea/block.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* - Implementation adapted from Needham and Wheeler's paper: - http://www.cix.co.uk/~klockstone/xtea.pdf - - A precalculated look up table is used during encryption/decryption for values that are based purely on the key. -*/ - -package xtea - -// XTEA is based on 64 rounds. -const numRounds = 64 - -// blockToUint32 reads an 8 byte slice into two uint32s. -// The block is treated as big endian. -func blockToUint32(src []byte) (uint32, uint32) { - r0 := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3]) - r1 := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7]) - return r0, r1 -} - -// uint32ToBlock writes two uint32s into an 8 byte data block. -// Values are written as big endian. -func uint32ToBlock(v0, v1 uint32, dst []byte) { - dst[0] = byte(v0 >> 24) - dst[1] = byte(v0 >> 16) - dst[2] = byte(v0 >> 8) - dst[3] = byte(v0) - dst[4] = byte(v1 >> 24) - dst[5] = byte(v1 >> 16) - dst[6] = byte(v1 >> 8) - dst[7] = byte(v1 >> 0) -} - -// encryptBlock encrypts a single 8 byte block using XTEA. -func encryptBlock(c *Cipher, dst, src []byte) { - v0, v1 := blockToUint32(src) - - // Two rounds of XTEA applied per loop - for i := 0; i < numRounds; { - v0 += ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] - i++ - v1 += ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] - i++ - } - - uint32ToBlock(v0, v1, dst) -} - -// decryptBlock decrypts a single 8 byte block using XTEA. -func decryptBlock(c *Cipher, dst, src []byte) { - v0, v1 := blockToUint32(src) - - // Two rounds of XTEA applied per loop - for i := numRounds; i > 0; { - i-- - v1 -= ((v0<<4 ^ v0>>5) + v0) ^ c.table[i] - i-- - v0 -= ((v1<<4 ^ v1>>5) + v1) ^ c.table[i] - } - - uint32ToBlock(v0, v1, dst) -} diff --git a/vendor/golang.org/x/crypto/xtea/cipher.go b/vendor/golang.org/x/crypto/xtea/cipher.go deleted file mode 100644 index a4c2fd0..0000000 --- a/vendor/golang.org/x/crypto/xtea/cipher.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package xtea implements XTEA encryption, as defined in Needham and Wheeler's -// 1997 technical report, "Tea extensions." -// -// XTEA is a legacy cipher and its short block size makes it vulnerable to -// birthday bound attacks (see https://sweet32.info). It should only be used -// where compatibility with legacy systems, not security, is the goal. -// -// Deprecated: any new system should use AES (from crypto/aes, if necessary in -// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from -// golang.org/x/crypto/chacha20poly1305). -package xtea // import "golang.org/x/crypto/xtea" - -// For details, see http://www.cix.co.uk/~klockstone/xtea.pdf - -import "strconv" - -// The XTEA block size in bytes. -const BlockSize = 8 - -// A Cipher is an instance of an XTEA cipher using a particular key. -type Cipher struct { - // table contains a series of precalculated values that are used each round. - table [64]uint32 -} - -type KeySizeError int - -func (k KeySizeError) Error() string { - return "crypto/xtea: invalid key size " + strconv.Itoa(int(k)) -} - -// NewCipher creates and returns a new Cipher. -// The key argument should be the XTEA key. -// XTEA only supports 128 bit (16 byte) keys. -func NewCipher(key []byte) (*Cipher, error) { - k := len(key) - switch k { - default: - return nil, KeySizeError(k) - case 16: - break - } - - c := new(Cipher) - initCipher(c, key) - - return c, nil -} - -// BlockSize returns the XTEA block size, 8 bytes. -// It is necessary to satisfy the Block interface in the -// package "crypto/cipher". -func (c *Cipher) BlockSize() int { return BlockSize } - -// Encrypt encrypts the 8 byte buffer src using the key and stores the result in dst. -// Note that for amounts of data larger than a block, -// it is not safe to just call Encrypt on successive blocks; -// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go). -func (c *Cipher) Encrypt(dst, src []byte) { encryptBlock(c, dst, src) } - -// Decrypt decrypts the 8 byte buffer src using the key and stores the result in dst. -func (c *Cipher) Decrypt(dst, src []byte) { decryptBlock(c, dst, src) } - -// initCipher initializes the cipher context by creating a look up table -// of precalculated values that are based on the key. -func initCipher(c *Cipher, key []byte) { - // Load the key into four uint32s - var k [4]uint32 - for i := 0; i < len(k); i++ { - j := i << 2 // Multiply by 4 - k[i] = uint32(key[j+0])<<24 | uint32(key[j+1])<<16 | uint32(key[j+2])<<8 | uint32(key[j+3]) - } - - // Precalculate the table - const delta = 0x9E3779B9 - var sum uint32 - - // Two rounds of XTEA applied per loop - for i := 0; i < numRounds; { - c.table[i] = sum + k[sum&3] - i++ - sum += delta - c.table[i] = sum + k[(sum>>11)&3] - i++ - } -} diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/net/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/net/PATENTS b/vendor/golang.org/x/net/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/net/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/net/bpf/asm.go b/vendor/golang.org/x/net/bpf/asm.go deleted file mode 100644 index 15e21b1..0000000 --- a/vendor/golang.org/x/net/bpf/asm.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -import "fmt" - -// Assemble converts insts into raw instructions suitable for loading -// into a BPF virtual machine. -// -// Currently, no optimization is attempted, the assembled program flow -// is exactly as provided. -func Assemble(insts []Instruction) ([]RawInstruction, error) { - ret := make([]RawInstruction, len(insts)) - var err error - for i, inst := range insts { - ret[i], err = inst.Assemble() - if err != nil { - return nil, fmt.Errorf("assembling instruction %d: %s", i+1, err) - } - } - return ret, nil -} - -// Disassemble attempts to parse raw back into -// Instructions. Unrecognized RawInstructions are assumed to be an -// extension not implemented by this package, and are passed through -// unchanged to the output. The allDecoded value reports whether insts -// contains no RawInstructions. -func Disassemble(raw []RawInstruction) (insts []Instruction, allDecoded bool) { - insts = make([]Instruction, len(raw)) - allDecoded = true - for i, r := range raw { - insts[i] = r.Disassemble() - if _, ok := insts[i].(RawInstruction); ok { - allDecoded = false - } - } - return insts, allDecoded -} diff --git a/vendor/golang.org/x/net/bpf/constants.go b/vendor/golang.org/x/net/bpf/constants.go deleted file mode 100644 index 12f3ee8..0000000 --- a/vendor/golang.org/x/net/bpf/constants.go +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -// A Register is a register of the BPF virtual machine. -type Register uint16 - -const ( - // RegA is the accumulator register. RegA is always the - // destination register of ALU operations. - RegA Register = iota - // RegX is the indirection register, used by LoadIndirect - // operations. - RegX -) - -// An ALUOp is an arithmetic or logic operation. -type ALUOp uint16 - -// ALU binary operation types. -const ( - ALUOpAdd ALUOp = iota << 4 - ALUOpSub - ALUOpMul - ALUOpDiv - ALUOpOr - ALUOpAnd - ALUOpShiftLeft - ALUOpShiftRight - aluOpNeg // Not exported because it's the only unary ALU operation, and gets its own instruction type. - ALUOpMod - ALUOpXor -) - -// A JumpTest is a comparison operator used in conditional jumps. -type JumpTest uint16 - -// Supported operators for conditional jumps. -// K can be RegX for JumpIfX -const ( - // K == A - JumpEqual JumpTest = iota - // K != A - JumpNotEqual - // K > A - JumpGreaterThan - // K < A - JumpLessThan - // K >= A - JumpGreaterOrEqual - // K <= A - JumpLessOrEqual - // K & A != 0 - JumpBitsSet - // K & A == 0 - JumpBitsNotSet -) - -// An Extension is a function call provided by the kernel that -// performs advanced operations that are expensive or impossible -// within the BPF virtual machine. -// -// Extensions are only implemented by the Linux kernel. -// -// TODO: should we prune this list? Some of these extensions seem -// either broken or near-impossible to use correctly, whereas other -// (len, random, ifindex) are quite useful. -type Extension int - -// Extension functions available in the Linux kernel. -const ( - // extOffset is the negative maximum number of instructions used - // to load instructions by overloading the K argument. - extOffset = -0x1000 - // ExtLen returns the length of the packet. - ExtLen Extension = 1 - // ExtProto returns the packet's L3 protocol type. - ExtProto Extension = 0 - // ExtType returns the packet's type (skb->pkt_type in the kernel) - // - // TODO: better documentation. How nice an API do we want to - // provide for these esoteric extensions? - ExtType Extension = 4 - // ExtPayloadOffset returns the offset of the packet payload, or - // the first protocol header that the kernel does not know how to - // parse. - ExtPayloadOffset Extension = 52 - // ExtInterfaceIndex returns the index of the interface on which - // the packet was received. - ExtInterfaceIndex Extension = 8 - // ExtNetlinkAttr returns the netlink attribute of type X at - // offset A. - ExtNetlinkAttr Extension = 12 - // ExtNetlinkAttrNested returns the nested netlink attribute of - // type X at offset A. - ExtNetlinkAttrNested Extension = 16 - // ExtMark returns the packet's mark value. - ExtMark Extension = 20 - // ExtQueue returns the packet's assigned hardware queue. - ExtQueue Extension = 24 - // ExtLinkLayerType returns the packet's hardware address type - // (e.g. Ethernet, Infiniband). - ExtLinkLayerType Extension = 28 - // ExtRXHash returns the packets receive hash. - // - // TODO: figure out what this rxhash actually is. - ExtRXHash Extension = 32 - // ExtCPUID returns the ID of the CPU processing the current - // packet. - ExtCPUID Extension = 36 - // ExtVLANTag returns the packet's VLAN tag. - ExtVLANTag Extension = 44 - // ExtVLANTagPresent returns non-zero if the packet has a VLAN - // tag. - // - // TODO: I think this might be a lie: it reads bit 0x1000 of the - // VLAN header, which changed meaning in recent revisions of the - // spec - this extension may now return meaningless information. - ExtVLANTagPresent Extension = 48 - // ExtVLANProto returns 0x8100 if the frame has a VLAN header, - // 0x88a8 if the frame has a "Q-in-Q" double VLAN header, or some - // other value if no VLAN information is present. - ExtVLANProto Extension = 60 - // ExtRand returns a uniformly random uint32. - ExtRand Extension = 56 -) - -// The following gives names to various bit patterns used in opcode construction. - -const ( - opMaskCls uint16 = 0x7 - // opClsLoad masks - opMaskLoadDest = 0x01 - opMaskLoadWidth = 0x18 - opMaskLoadMode = 0xe0 - // opClsALU & opClsJump - opMaskOperand = 0x08 - opMaskOperator = 0xf0 -) - -const ( - // +---------------+-----------------+---+---+---+ - // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 0 | - // +---------------+-----------------+---+---+---+ - opClsLoadA uint16 = iota - // +---------------+-----------------+---+---+---+ - // | AddrMode (3b) | LoadWidth (2b) | 0 | 0 | 1 | - // +---------------+-----------------+---+---+---+ - opClsLoadX - // +---+---+---+---+---+---+---+---+ - // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | - // +---+---+---+---+---+---+---+---+ - opClsStoreA - // +---+---+---+---+---+---+---+---+ - // | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | - // +---+---+---+---+---+---+---+---+ - opClsStoreX - // +---------------+-----------------+---+---+---+ - // | Operator (4b) | OperandSrc (1b) | 1 | 0 | 0 | - // +---------------+-----------------+---+---+---+ - opClsALU - // +-----------------------------+---+---+---+---+ - // | TestOperator (4b) | 0 | 1 | 0 | 1 | - // +-----------------------------+---+---+---+---+ - opClsJump - // +---+-------------------------+---+---+---+---+ - // | 0 | 0 | 0 | RetSrc (1b) | 0 | 1 | 1 | 0 | - // +---+-------------------------+---+---+---+---+ - opClsReturn - // +---+-------------------------+---+---+---+---+ - // | 0 | 0 | 0 | TXAorTAX (1b) | 0 | 1 | 1 | 1 | - // +---+-------------------------+---+---+---+---+ - opClsMisc -) - -const ( - opAddrModeImmediate uint16 = iota << 5 - opAddrModeAbsolute - opAddrModeIndirect - opAddrModeScratch - opAddrModePacketLen // actually an extension, not an addressing mode. - opAddrModeMemShift -) - -const ( - opLoadWidth4 uint16 = iota << 3 - opLoadWidth2 - opLoadWidth1 -) - -// Operand for ALU and Jump instructions -type opOperand uint16 - -// Supported operand sources. -const ( - opOperandConstant opOperand = iota << 3 - opOperandX -) - -// An jumpOp is a conditional jump condition. -type jumpOp uint16 - -// Supported jump conditions. -const ( - opJumpAlways jumpOp = iota << 4 - opJumpEqual - opJumpGT - opJumpGE - opJumpSet -) - -const ( - opRetSrcConstant uint16 = iota << 4 - opRetSrcA -) - -const ( - opMiscTAX = 0x00 - opMiscTXA = 0x80 -) diff --git a/vendor/golang.org/x/net/bpf/doc.go b/vendor/golang.org/x/net/bpf/doc.go deleted file mode 100644 index ae62feb..0000000 --- a/vendor/golang.org/x/net/bpf/doc.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -/* - -Package bpf implements marshaling and unmarshaling of programs for the -Berkeley Packet Filter virtual machine, and provides a Go implementation -of the virtual machine. - -BPF's main use is to specify a packet filter for network taps, so that -the kernel doesn't have to expensively copy every packet it sees to -userspace. However, it's been repurposed to other areas where running -user code in-kernel is needed. For example, Linux's seccomp uses BPF -to apply security policies to system calls. For simplicity, this -documentation refers only to packets, but other uses of BPF have their -own data payloads. - -BPF programs run in a restricted virtual machine. It has almost no -access to kernel functions, and while conditional branches are -allowed, they can only jump forwards, to guarantee that there are no -infinite loops. - -The virtual machine - -The BPF VM is an accumulator machine. Its main register, called -register A, is an implicit source and destination in all arithmetic -and logic operations. The machine also has 16 scratch registers for -temporary storage, and an indirection register (register X) for -indirect memory access. All registers are 32 bits wide. - -Each run of a BPF program is given one packet, which is placed in the -VM's read-only "main memory". LoadAbsolute and LoadIndirect -instructions can fetch up to 32 bits at a time into register A for -examination. - -The goal of a BPF program is to produce and return a verdict (uint32), -which tells the kernel what to do with the packet. In the context of -packet filtering, the returned value is the number of bytes of the -packet to forward to userspace, or 0 to ignore the packet. Other -contexts like seccomp define their own return values. - -In order to simplify programs, attempts to read past the end of the -packet terminate the program execution with a verdict of 0 (ignore -packet). This means that the vast majority of BPF programs don't need -to do any explicit bounds checking. - -In addition to the bytes of the packet, some BPF programs have access -to extensions, which are essentially calls to kernel utility -functions. Currently, the only extensions supported by this package -are the Linux packet filter extensions. - -Examples - -This packet filter selects all ARP packets. - - bpf.Assemble([]bpf.Instruction{ - // Load "EtherType" field from the ethernet header. - bpf.LoadAbsolute{Off: 12, Size: 2}, - // Skip over the next instruction if EtherType is not ARP. - bpf.JumpIf{Cond: bpf.JumpNotEqual, Val: 0x0806, SkipTrue: 1}, - // Verdict is "send up to 4k of the packet to userspace." - bpf.RetConstant{Val: 4096}, - // Verdict is "ignore packet." - bpf.RetConstant{Val: 0}, - }) - -This packet filter captures a random 1% sample of traffic. - - bpf.Assemble([]bpf.Instruction{ - // Get a 32-bit random number from the Linux kernel. - bpf.LoadExtension{Num: bpf.ExtRand}, - // 1% dice roll? - bpf.JumpIf{Cond: bpf.JumpLessThan, Val: 2^32/100, SkipFalse: 1}, - // Capture. - bpf.RetConstant{Val: 4096}, - // Ignore. - bpf.RetConstant{Val: 0}, - }) - -*/ -package bpf // import "golang.org/x/net/bpf" diff --git a/vendor/golang.org/x/net/bpf/instructions.go b/vendor/golang.org/x/net/bpf/instructions.go deleted file mode 100644 index 3cffcaa..0000000 --- a/vendor/golang.org/x/net/bpf/instructions.go +++ /dev/null @@ -1,726 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -import "fmt" - -// An Instruction is one instruction executed by the BPF virtual -// machine. -type Instruction interface { - // Assemble assembles the Instruction into a RawInstruction. - Assemble() (RawInstruction, error) -} - -// A RawInstruction is a raw BPF virtual machine instruction. -type RawInstruction struct { - // Operation to execute. - Op uint16 - // For conditional jump instructions, the number of instructions - // to skip if the condition is true/false. - Jt uint8 - Jf uint8 - // Constant parameter. The meaning depends on the Op. - K uint32 -} - -// Assemble implements the Instruction Assemble method. -func (ri RawInstruction) Assemble() (RawInstruction, error) { return ri, nil } - -// Disassemble parses ri into an Instruction and returns it. If ri is -// not recognized by this package, ri itself is returned. -func (ri RawInstruction) Disassemble() Instruction { - switch ri.Op & opMaskCls { - case opClsLoadA, opClsLoadX: - reg := Register(ri.Op & opMaskLoadDest) - sz := 0 - switch ri.Op & opMaskLoadWidth { - case opLoadWidth4: - sz = 4 - case opLoadWidth2: - sz = 2 - case opLoadWidth1: - sz = 1 - default: - return ri - } - switch ri.Op & opMaskLoadMode { - case opAddrModeImmediate: - if sz != 4 { - return ri - } - return LoadConstant{Dst: reg, Val: ri.K} - case opAddrModeScratch: - if sz != 4 || ri.K > 15 { - return ri - } - return LoadScratch{Dst: reg, N: int(ri.K)} - case opAddrModeAbsolute: - if ri.K > extOffset+0xffffffff { - return LoadExtension{Num: Extension(-extOffset + ri.K)} - } - return LoadAbsolute{Size: sz, Off: ri.K} - case opAddrModeIndirect: - return LoadIndirect{Size: sz, Off: ri.K} - case opAddrModePacketLen: - if sz != 4 { - return ri - } - return LoadExtension{Num: ExtLen} - case opAddrModeMemShift: - return LoadMemShift{Off: ri.K} - default: - return ri - } - - case opClsStoreA: - if ri.Op != opClsStoreA || ri.K > 15 { - return ri - } - return StoreScratch{Src: RegA, N: int(ri.K)} - - case opClsStoreX: - if ri.Op != opClsStoreX || ri.K > 15 { - return ri - } - return StoreScratch{Src: RegX, N: int(ri.K)} - - case opClsALU: - switch op := ALUOp(ri.Op & opMaskOperator); op { - case ALUOpAdd, ALUOpSub, ALUOpMul, ALUOpDiv, ALUOpOr, ALUOpAnd, ALUOpShiftLeft, ALUOpShiftRight, ALUOpMod, ALUOpXor: - switch operand := opOperand(ri.Op & opMaskOperand); operand { - case opOperandX: - return ALUOpX{Op: op} - case opOperandConstant: - return ALUOpConstant{Op: op, Val: ri.K} - default: - return ri - } - case aluOpNeg: - return NegateA{} - default: - return ri - } - - case opClsJump: - switch op := jumpOp(ri.Op & opMaskOperator); op { - case opJumpAlways: - return Jump{Skip: ri.K} - case opJumpEqual, opJumpGT, opJumpGE, opJumpSet: - cond, skipTrue, skipFalse := jumpOpToTest(op, ri.Jt, ri.Jf) - switch operand := opOperand(ri.Op & opMaskOperand); operand { - case opOperandX: - return JumpIfX{Cond: cond, SkipTrue: skipTrue, SkipFalse: skipFalse} - case opOperandConstant: - return JumpIf{Cond: cond, Val: ri.K, SkipTrue: skipTrue, SkipFalse: skipFalse} - default: - return ri - } - default: - return ri - } - - case opClsReturn: - switch ri.Op { - case opClsReturn | opRetSrcA: - return RetA{} - case opClsReturn | opRetSrcConstant: - return RetConstant{Val: ri.K} - default: - return ri - } - - case opClsMisc: - switch ri.Op { - case opClsMisc | opMiscTAX: - return TAX{} - case opClsMisc | opMiscTXA: - return TXA{} - default: - return ri - } - - default: - panic("unreachable") // switch is exhaustive on the bit pattern - } -} - -func jumpOpToTest(op jumpOp, skipTrue uint8, skipFalse uint8) (JumpTest, uint8, uint8) { - var test JumpTest - - // Decode "fake" jump conditions that don't appear in machine code - // Ensures the Assemble -> Disassemble stage recreates the same instructions - // See https://github.com/golang/go/issues/18470 - if skipTrue == 0 { - switch op { - case opJumpEqual: - test = JumpNotEqual - case opJumpGT: - test = JumpLessOrEqual - case opJumpGE: - test = JumpLessThan - case opJumpSet: - test = JumpBitsNotSet - } - - return test, skipFalse, 0 - } - - switch op { - case opJumpEqual: - test = JumpEqual - case opJumpGT: - test = JumpGreaterThan - case opJumpGE: - test = JumpGreaterOrEqual - case opJumpSet: - test = JumpBitsSet - } - - return test, skipTrue, skipFalse -} - -// LoadConstant loads Val into register Dst. -type LoadConstant struct { - Dst Register - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadConstant) Assemble() (RawInstruction, error) { - return assembleLoad(a.Dst, 4, opAddrModeImmediate, a.Val) -} - -// String returns the instruction in assembler notation. -func (a LoadConstant) String() string { - switch a.Dst { - case RegA: - return fmt.Sprintf("ld #%d", a.Val) - case RegX: - return fmt.Sprintf("ldx #%d", a.Val) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadScratch loads scratch[N] into register Dst. -type LoadScratch struct { - Dst Register - N int // 0-15 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadScratch) Assemble() (RawInstruction, error) { - if a.N < 0 || a.N > 15 { - return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) - } - return assembleLoad(a.Dst, 4, opAddrModeScratch, uint32(a.N)) -} - -// String returns the instruction in assembler notation. -func (a LoadScratch) String() string { - switch a.Dst { - case RegA: - return fmt.Sprintf("ld M[%d]", a.N) - case RegX: - return fmt.Sprintf("ldx M[%d]", a.N) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadAbsolute loads packet[Off:Off+Size] as an integer value into -// register A. -type LoadAbsolute struct { - Off uint32 - Size int // 1, 2 or 4 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadAbsolute) Assemble() (RawInstruction, error) { - return assembleLoad(RegA, a.Size, opAddrModeAbsolute, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadAbsolute) String() string { - switch a.Size { - case 1: // byte - return fmt.Sprintf("ldb [%d]", a.Off) - case 2: // half word - return fmt.Sprintf("ldh [%d]", a.Off) - case 4: // word - if a.Off > extOffset+0xffffffff { - return LoadExtension{Num: Extension(a.Off + 0x1000)}.String() - } - return fmt.Sprintf("ld [%d]", a.Off) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadIndirect loads packet[X+Off:X+Off+Size] as an integer value -// into register A. -type LoadIndirect struct { - Off uint32 - Size int // 1, 2 or 4 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadIndirect) Assemble() (RawInstruction, error) { - return assembleLoad(RegA, a.Size, opAddrModeIndirect, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadIndirect) String() string { - switch a.Size { - case 1: // byte - return fmt.Sprintf("ldb [x + %d]", a.Off) - case 2: // half word - return fmt.Sprintf("ldh [x + %d]", a.Off) - case 4: // word - return fmt.Sprintf("ld [x + %d]", a.Off) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// LoadMemShift multiplies the first 4 bits of the byte at packet[Off] -// by 4 and stores the result in register X. -// -// This instruction is mainly useful to load into X the length of an -// IPv4 packet header in a single instruction, rather than have to do -// the arithmetic on the header's first byte by hand. -type LoadMemShift struct { - Off uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a LoadMemShift) Assemble() (RawInstruction, error) { - return assembleLoad(RegX, 1, opAddrModeMemShift, a.Off) -} - -// String returns the instruction in assembler notation. -func (a LoadMemShift) String() string { - return fmt.Sprintf("ldx 4*([%d]&0xf)", a.Off) -} - -// LoadExtension invokes a linux-specific extension and stores the -// result in register A. -type LoadExtension struct { - Num Extension -} - -// Assemble implements the Instruction Assemble method. -func (a LoadExtension) Assemble() (RawInstruction, error) { - if a.Num == ExtLen { - return assembleLoad(RegA, 4, opAddrModePacketLen, 0) - } - return assembleLoad(RegA, 4, opAddrModeAbsolute, uint32(extOffset+a.Num)) -} - -// String returns the instruction in assembler notation. -func (a LoadExtension) String() string { - switch a.Num { - case ExtLen: - return "ld #len" - case ExtProto: - return "ld #proto" - case ExtType: - return "ld #type" - case ExtPayloadOffset: - return "ld #poff" - case ExtInterfaceIndex: - return "ld #ifidx" - case ExtNetlinkAttr: - return "ld #nla" - case ExtNetlinkAttrNested: - return "ld #nlan" - case ExtMark: - return "ld #mark" - case ExtQueue: - return "ld #queue" - case ExtLinkLayerType: - return "ld #hatype" - case ExtRXHash: - return "ld #rxhash" - case ExtCPUID: - return "ld #cpu" - case ExtVLANTag: - return "ld #vlan_tci" - case ExtVLANTagPresent: - return "ld #vlan_avail" - case ExtVLANProto: - return "ld #vlan_tpid" - case ExtRand: - return "ld #rand" - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// StoreScratch stores register Src into scratch[N]. -type StoreScratch struct { - Src Register - N int // 0-15 -} - -// Assemble implements the Instruction Assemble method. -func (a StoreScratch) Assemble() (RawInstruction, error) { - if a.N < 0 || a.N > 15 { - return RawInstruction{}, fmt.Errorf("invalid scratch slot %d", a.N) - } - var op uint16 - switch a.Src { - case RegA: - op = opClsStoreA - case RegX: - op = opClsStoreX - default: - return RawInstruction{}, fmt.Errorf("invalid source register %v", a.Src) - } - - return RawInstruction{ - Op: op, - K: uint32(a.N), - }, nil -} - -// String returns the instruction in assembler notation. -func (a StoreScratch) String() string { - switch a.Src { - case RegA: - return fmt.Sprintf("st M[%d]", a.N) - case RegX: - return fmt.Sprintf("stx M[%d]", a.N) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// ALUOpConstant executes A = A Val. -type ALUOpConstant struct { - Op ALUOp - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a ALUOpConstant) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | uint16(opOperandConstant) | uint16(a.Op), - K: a.Val, - }, nil -} - -// String returns the instruction in assembler notation. -func (a ALUOpConstant) String() string { - switch a.Op { - case ALUOpAdd: - return fmt.Sprintf("add #%d", a.Val) - case ALUOpSub: - return fmt.Sprintf("sub #%d", a.Val) - case ALUOpMul: - return fmt.Sprintf("mul #%d", a.Val) - case ALUOpDiv: - return fmt.Sprintf("div #%d", a.Val) - case ALUOpMod: - return fmt.Sprintf("mod #%d", a.Val) - case ALUOpAnd: - return fmt.Sprintf("and #%d", a.Val) - case ALUOpOr: - return fmt.Sprintf("or #%d", a.Val) - case ALUOpXor: - return fmt.Sprintf("xor #%d", a.Val) - case ALUOpShiftLeft: - return fmt.Sprintf("lsh #%d", a.Val) - case ALUOpShiftRight: - return fmt.Sprintf("rsh #%d", a.Val) - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// ALUOpX executes A = A X -type ALUOpX struct { - Op ALUOp -} - -// Assemble implements the Instruction Assemble method. -func (a ALUOpX) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | uint16(opOperandX) | uint16(a.Op), - }, nil -} - -// String returns the instruction in assembler notation. -func (a ALUOpX) String() string { - switch a.Op { - case ALUOpAdd: - return "add x" - case ALUOpSub: - return "sub x" - case ALUOpMul: - return "mul x" - case ALUOpDiv: - return "div x" - case ALUOpMod: - return "mod x" - case ALUOpAnd: - return "and x" - case ALUOpOr: - return "or x" - case ALUOpXor: - return "xor x" - case ALUOpShiftLeft: - return "lsh x" - case ALUOpShiftRight: - return "rsh x" - default: - return fmt.Sprintf("unknown instruction: %#v", a) - } -} - -// NegateA executes A = -A. -type NegateA struct{} - -// Assemble implements the Instruction Assemble method. -func (a NegateA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsALU | uint16(aluOpNeg), - }, nil -} - -// String returns the instruction in assembler notation. -func (a NegateA) String() string { - return fmt.Sprintf("neg") -} - -// Jump skips the following Skip instructions in the program. -type Jump struct { - Skip uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a Jump) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsJump | uint16(opJumpAlways), - K: a.Skip, - }, nil -} - -// String returns the instruction in assembler notation. -func (a Jump) String() string { - return fmt.Sprintf("ja %d", a.Skip) -} - -// JumpIf skips the following Skip instructions in the program if A -// Val is true. -type JumpIf struct { - Cond JumpTest - Val uint32 - SkipTrue uint8 - SkipFalse uint8 -} - -// Assemble implements the Instruction Assemble method. -func (a JumpIf) Assemble() (RawInstruction, error) { - return jumpToRaw(a.Cond, opOperandConstant, a.Val, a.SkipTrue, a.SkipFalse) -} - -// String returns the instruction in assembler notation. -func (a JumpIf) String() string { - return jumpToString(a.Cond, fmt.Sprintf("#%d", a.Val), a.SkipTrue, a.SkipFalse) -} - -// JumpIfX skips the following Skip instructions in the program if A -// X is true. -type JumpIfX struct { - Cond JumpTest - SkipTrue uint8 - SkipFalse uint8 -} - -// Assemble implements the Instruction Assemble method. -func (a JumpIfX) Assemble() (RawInstruction, error) { - return jumpToRaw(a.Cond, opOperandX, 0, a.SkipTrue, a.SkipFalse) -} - -// String returns the instruction in assembler notation. -func (a JumpIfX) String() string { - return jumpToString(a.Cond, "x", a.SkipTrue, a.SkipFalse) -} - -// jumpToRaw assembles a jump instruction into a RawInstruction -func jumpToRaw(test JumpTest, operand opOperand, k uint32, skipTrue, skipFalse uint8) (RawInstruction, error) { - var ( - cond jumpOp - flip bool - ) - switch test { - case JumpEqual: - cond = opJumpEqual - case JumpNotEqual: - cond, flip = opJumpEqual, true - case JumpGreaterThan: - cond = opJumpGT - case JumpLessThan: - cond, flip = opJumpGE, true - case JumpGreaterOrEqual: - cond = opJumpGE - case JumpLessOrEqual: - cond, flip = opJumpGT, true - case JumpBitsSet: - cond = opJumpSet - case JumpBitsNotSet: - cond, flip = opJumpSet, true - default: - return RawInstruction{}, fmt.Errorf("unknown JumpTest %v", test) - } - jt, jf := skipTrue, skipFalse - if flip { - jt, jf = jf, jt - } - return RawInstruction{ - Op: opClsJump | uint16(cond) | uint16(operand), - Jt: jt, - Jf: jf, - K: k, - }, nil -} - -// jumpToString converts a jump instruction to assembler notation -func jumpToString(cond JumpTest, operand string, skipTrue, skipFalse uint8) string { - switch cond { - // K == A - case JumpEqual: - return conditionalJump(operand, skipTrue, skipFalse, "jeq", "jneq") - // K != A - case JumpNotEqual: - return fmt.Sprintf("jneq %s,%d", operand, skipTrue) - // K > A - case JumpGreaterThan: - return conditionalJump(operand, skipTrue, skipFalse, "jgt", "jle") - // K < A - case JumpLessThan: - return fmt.Sprintf("jlt %s,%d", operand, skipTrue) - // K >= A - case JumpGreaterOrEqual: - return conditionalJump(operand, skipTrue, skipFalse, "jge", "jlt") - // K <= A - case JumpLessOrEqual: - return fmt.Sprintf("jle %s,%d", operand, skipTrue) - // K & A != 0 - case JumpBitsSet: - if skipFalse > 0 { - return fmt.Sprintf("jset %s,%d,%d", operand, skipTrue, skipFalse) - } - return fmt.Sprintf("jset %s,%d", operand, skipTrue) - // K & A == 0, there is no assembler instruction for JumpBitNotSet, use JumpBitSet and invert skips - case JumpBitsNotSet: - return jumpToString(JumpBitsSet, operand, skipFalse, skipTrue) - default: - return fmt.Sprintf("unknown JumpTest %#v", cond) - } -} - -func conditionalJump(operand string, skipTrue, skipFalse uint8, positiveJump, negativeJump string) string { - if skipTrue > 0 { - if skipFalse > 0 { - return fmt.Sprintf("%s %s,%d,%d", positiveJump, operand, skipTrue, skipFalse) - } - return fmt.Sprintf("%s %s,%d", positiveJump, operand, skipTrue) - } - return fmt.Sprintf("%s %s,%d", negativeJump, operand, skipFalse) -} - -// RetA exits the BPF program, returning the value of register A. -type RetA struct{} - -// Assemble implements the Instruction Assemble method. -func (a RetA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsReturn | opRetSrcA, - }, nil -} - -// String returns the instruction in assembler notation. -func (a RetA) String() string { - return fmt.Sprintf("ret a") -} - -// RetConstant exits the BPF program, returning a constant value. -type RetConstant struct { - Val uint32 -} - -// Assemble implements the Instruction Assemble method. -func (a RetConstant) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsReturn | opRetSrcConstant, - K: a.Val, - }, nil -} - -// String returns the instruction in assembler notation. -func (a RetConstant) String() string { - return fmt.Sprintf("ret #%d", a.Val) -} - -// TXA copies the value of register X to register A. -type TXA struct{} - -// Assemble implements the Instruction Assemble method. -func (a TXA) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsMisc | opMiscTXA, - }, nil -} - -// String returns the instruction in assembler notation. -func (a TXA) String() string { - return fmt.Sprintf("txa") -} - -// TAX copies the value of register A to register X. -type TAX struct{} - -// Assemble implements the Instruction Assemble method. -func (a TAX) Assemble() (RawInstruction, error) { - return RawInstruction{ - Op: opClsMisc | opMiscTAX, - }, nil -} - -// String returns the instruction in assembler notation. -func (a TAX) String() string { - return fmt.Sprintf("tax") -} - -func assembleLoad(dst Register, loadSize int, mode uint16, k uint32) (RawInstruction, error) { - var ( - cls uint16 - sz uint16 - ) - switch dst { - case RegA: - cls = opClsLoadA - case RegX: - cls = opClsLoadX - default: - return RawInstruction{}, fmt.Errorf("invalid target register %v", dst) - } - switch loadSize { - case 1: - sz = opLoadWidth1 - case 2: - sz = opLoadWidth2 - case 4: - sz = opLoadWidth4 - default: - return RawInstruction{}, fmt.Errorf("invalid load byte length %d", sz) - } - return RawInstruction{ - Op: cls | sz | mode, - K: k, - }, nil -} diff --git a/vendor/golang.org/x/net/bpf/setter.go b/vendor/golang.org/x/net/bpf/setter.go deleted file mode 100644 index 43e35f0..0000000 --- a/vendor/golang.org/x/net/bpf/setter.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -// A Setter is a type which can attach a compiled BPF filter to itself. -type Setter interface { - SetBPF(filter []RawInstruction) error -} diff --git a/vendor/golang.org/x/net/bpf/vm.go b/vendor/golang.org/x/net/bpf/vm.go deleted file mode 100644 index 73f57f1..0000000 --- a/vendor/golang.org/x/net/bpf/vm.go +++ /dev/null @@ -1,150 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -import ( - "errors" - "fmt" -) - -// A VM is an emulated BPF virtual machine. -type VM struct { - filter []Instruction -} - -// NewVM returns a new VM using the input BPF program. -func NewVM(filter []Instruction) (*VM, error) { - if len(filter) == 0 { - return nil, errors.New("one or more Instructions must be specified") - } - - for i, ins := range filter { - check := len(filter) - (i + 1) - switch ins := ins.(type) { - // Check for out-of-bounds jumps in instructions - case Jump: - if check <= int(ins.Skip) { - return nil, fmt.Errorf("cannot jump %d instructions; jumping past program bounds", ins.Skip) - } - case JumpIf: - if check <= int(ins.SkipTrue) { - return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) - } - if check <= int(ins.SkipFalse) { - return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) - } - case JumpIfX: - if check <= int(ins.SkipTrue) { - return nil, fmt.Errorf("cannot jump %d instructions in true case; jumping past program bounds", ins.SkipTrue) - } - if check <= int(ins.SkipFalse) { - return nil, fmt.Errorf("cannot jump %d instructions in false case; jumping past program bounds", ins.SkipFalse) - } - // Check for division or modulus by zero - case ALUOpConstant: - if ins.Val != 0 { - break - } - - switch ins.Op { - case ALUOpDiv, ALUOpMod: - return nil, errors.New("cannot divide by zero using ALUOpConstant") - } - // Check for unknown extensions - case LoadExtension: - switch ins.Num { - case ExtLen: - default: - return nil, fmt.Errorf("extension %d not implemented", ins.Num) - } - } - } - - // Make sure last instruction is a return instruction - switch filter[len(filter)-1].(type) { - case RetA, RetConstant: - default: - return nil, errors.New("BPF program must end with RetA or RetConstant") - } - - // Though our VM works using disassembled instructions, we - // attempt to assemble the input filter anyway to ensure it is compatible - // with an operating system VM. - _, err := Assemble(filter) - - return &VM{ - filter: filter, - }, err -} - -// Run runs the VM's BPF program against the input bytes. -// Run returns the number of bytes accepted by the BPF program, and any errors -// which occurred while processing the program. -func (v *VM) Run(in []byte) (int, error) { - var ( - // Registers of the virtual machine - regA uint32 - regX uint32 - regScratch [16]uint32 - - // OK is true if the program should continue processing the next - // instruction, or false if not, causing the loop to break - ok = true - ) - - // TODO(mdlayher): implement: - // - NegateA: - // - would require a change from uint32 registers to int32 - // registers - - // TODO(mdlayher): add interop tests that check signedness of ALU - // operations against kernel implementation, and make sure Go - // implementation matches behavior - - for i := 0; i < len(v.filter) && ok; i++ { - ins := v.filter[i] - - switch ins := ins.(type) { - case ALUOpConstant: - regA = aluOpConstant(ins, regA) - case ALUOpX: - regA, ok = aluOpX(ins, regA, regX) - case Jump: - i += int(ins.Skip) - case JumpIf: - jump := jumpIf(ins, regA) - i += jump - case JumpIfX: - jump := jumpIfX(ins, regA, regX) - i += jump - case LoadAbsolute: - regA, ok = loadAbsolute(ins, in) - case LoadConstant: - regA, regX = loadConstant(ins, regA, regX) - case LoadExtension: - regA = loadExtension(ins, in) - case LoadIndirect: - regA, ok = loadIndirect(ins, in, regX) - case LoadMemShift: - regX, ok = loadMemShift(ins, in) - case LoadScratch: - regA, regX = loadScratch(ins, regScratch, regA, regX) - case RetA: - return int(regA), nil - case RetConstant: - return int(ins.Val), nil - case StoreScratch: - regScratch = storeScratch(ins, regScratch, regA, regX) - case TAX: - regX = regA - case TXA: - regA = regX - default: - return 0, fmt.Errorf("unknown Instruction at index %d: %T", i, ins) - } - } - - return 0, nil -} diff --git a/vendor/golang.org/x/net/bpf/vm_instructions.go b/vendor/golang.org/x/net/bpf/vm_instructions.go deleted file mode 100644 index cf8947c..0000000 --- a/vendor/golang.org/x/net/bpf/vm_instructions.go +++ /dev/null @@ -1,182 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package bpf - -import ( - "encoding/binary" - "fmt" -) - -func aluOpConstant(ins ALUOpConstant, regA uint32) uint32 { - return aluOpCommon(ins.Op, regA, ins.Val) -} - -func aluOpX(ins ALUOpX, regA uint32, regX uint32) (uint32, bool) { - // Guard against division or modulus by zero by terminating - // the program, as the OS BPF VM does - if regX == 0 { - switch ins.Op { - case ALUOpDiv, ALUOpMod: - return 0, false - } - } - - return aluOpCommon(ins.Op, regA, regX), true -} - -func aluOpCommon(op ALUOp, regA uint32, value uint32) uint32 { - switch op { - case ALUOpAdd: - return regA + value - case ALUOpSub: - return regA - value - case ALUOpMul: - return regA * value - case ALUOpDiv: - // Division by zero not permitted by NewVM and aluOpX checks - return regA / value - case ALUOpOr: - return regA | value - case ALUOpAnd: - return regA & value - case ALUOpShiftLeft: - return regA << value - case ALUOpShiftRight: - return regA >> value - case ALUOpMod: - // Modulus by zero not permitted by NewVM and aluOpX checks - return regA % value - case ALUOpXor: - return regA ^ value - default: - return regA - } -} - -func jumpIf(ins JumpIf, regA uint32) int { - return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, ins.Val) -} - -func jumpIfX(ins JumpIfX, regA uint32, regX uint32) int { - return jumpIfCommon(ins.Cond, ins.SkipTrue, ins.SkipFalse, regA, regX) -} - -func jumpIfCommon(cond JumpTest, skipTrue, skipFalse uint8, regA uint32, value uint32) int { - var ok bool - - switch cond { - case JumpEqual: - ok = regA == value - case JumpNotEqual: - ok = regA != value - case JumpGreaterThan: - ok = regA > value - case JumpLessThan: - ok = regA < value - case JumpGreaterOrEqual: - ok = regA >= value - case JumpLessOrEqual: - ok = regA <= value - case JumpBitsSet: - ok = (regA & value) != 0 - case JumpBitsNotSet: - ok = (regA & value) == 0 - } - - if ok { - return int(skipTrue) - } - - return int(skipFalse) -} - -func loadAbsolute(ins LoadAbsolute, in []byte) (uint32, bool) { - offset := int(ins.Off) - size := int(ins.Size) - - return loadCommon(in, offset, size) -} - -func loadConstant(ins LoadConstant, regA uint32, regX uint32) (uint32, uint32) { - switch ins.Dst { - case RegA: - regA = ins.Val - case RegX: - regX = ins.Val - } - - return regA, regX -} - -func loadExtension(ins LoadExtension, in []byte) uint32 { - switch ins.Num { - case ExtLen: - return uint32(len(in)) - default: - panic(fmt.Sprintf("unimplemented extension: %d", ins.Num)) - } -} - -func loadIndirect(ins LoadIndirect, in []byte, regX uint32) (uint32, bool) { - offset := int(ins.Off) + int(regX) - size := int(ins.Size) - - return loadCommon(in, offset, size) -} - -func loadMemShift(ins LoadMemShift, in []byte) (uint32, bool) { - offset := int(ins.Off) - - // Size of LoadMemShift is always 1 byte - if !inBounds(len(in), offset, 1) { - return 0, false - } - - // Mask off high 4 bits and multiply low 4 bits by 4 - return uint32(in[offset]&0x0f) * 4, true -} - -func inBounds(inLen int, offset int, size int) bool { - return offset+size <= inLen -} - -func loadCommon(in []byte, offset int, size int) (uint32, bool) { - if !inBounds(len(in), offset, size) { - return 0, false - } - - switch size { - case 1: - return uint32(in[offset]), true - case 2: - return uint32(binary.BigEndian.Uint16(in[offset : offset+size])), true - case 4: - return uint32(binary.BigEndian.Uint32(in[offset : offset+size])), true - default: - panic(fmt.Sprintf("invalid load size: %d", size)) - } -} - -func loadScratch(ins LoadScratch, regScratch [16]uint32, regA uint32, regX uint32) (uint32, uint32) { - switch ins.Dst { - case RegA: - regA = regScratch[ins.N] - case RegX: - regX = regScratch[ins.N] - } - - return regA, regX -} - -func storeScratch(ins StoreScratch, regScratch [16]uint32, regA uint32, regX uint32) [16]uint32 { - switch ins.Src { - case RegA: - regScratch[ins.N] = regA - case RegX: - regScratch[ins.N] = regX - } - - return regScratch -} diff --git a/vendor/golang.org/x/net/internal/iana/const.go b/vendor/golang.org/x/net/internal/iana/const.go deleted file mode 100644 index cea712f..0000000 --- a/vendor/golang.org/x/net/internal/iana/const.go +++ /dev/null @@ -1,223 +0,0 @@ -// go generate gen.go -// Code generated by the command above; DO NOT EDIT. - -// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA). -package iana // import "golang.org/x/net/internal/iana" - -// Differentiated Services Field Codepoints (DSCP), Updated: 2018-05-04 -const ( - DiffServCS0 = 0x00 // CS0 - DiffServCS1 = 0x20 // CS1 - DiffServCS2 = 0x40 // CS2 - DiffServCS3 = 0x60 // CS3 - DiffServCS4 = 0x80 // CS4 - DiffServCS5 = 0xa0 // CS5 - DiffServCS6 = 0xc0 // CS6 - DiffServCS7 = 0xe0 // CS7 - DiffServAF11 = 0x28 // AF11 - DiffServAF12 = 0x30 // AF12 - DiffServAF13 = 0x38 // AF13 - DiffServAF21 = 0x48 // AF21 - DiffServAF22 = 0x50 // AF22 - DiffServAF23 = 0x58 // AF23 - DiffServAF31 = 0x68 // AF31 - DiffServAF32 = 0x70 // AF32 - DiffServAF33 = 0x78 // AF33 - DiffServAF41 = 0x88 // AF41 - DiffServAF42 = 0x90 // AF42 - DiffServAF43 = 0x98 // AF43 - DiffServEF = 0xb8 // EF - DiffServVOICEADMIT = 0xb0 // VOICE-ADMIT - NotECNTransport = 0x00 // Not-ECT (Not ECN-Capable Transport) - ECNTransport1 = 0x01 // ECT(1) (ECN-Capable Transport(1)) - ECNTransport0 = 0x02 // ECT(0) (ECN-Capable Transport(0)) - CongestionExperienced = 0x03 // CE (Congestion Experienced) -) - -// Protocol Numbers, Updated: 2017-10-13 -const ( - ProtocolIP = 0 // IPv4 encapsulation, pseudo protocol number - ProtocolHOPOPT = 0 // IPv6 Hop-by-Hop Option - ProtocolICMP = 1 // Internet Control Message - ProtocolIGMP = 2 // Internet Group Management - ProtocolGGP = 3 // Gateway-to-Gateway - ProtocolIPv4 = 4 // IPv4 encapsulation - ProtocolST = 5 // Stream - ProtocolTCP = 6 // Transmission Control - ProtocolCBT = 7 // CBT - ProtocolEGP = 8 // Exterior Gateway Protocol - ProtocolIGP = 9 // any private interior gateway (used by Cisco for their IGRP) - ProtocolBBNRCCMON = 10 // BBN RCC Monitoring - ProtocolNVPII = 11 // Network Voice Protocol - ProtocolPUP = 12 // PUP - ProtocolEMCON = 14 // EMCON - ProtocolXNET = 15 // Cross Net Debugger - ProtocolCHAOS = 16 // Chaos - ProtocolUDP = 17 // User Datagram - ProtocolMUX = 18 // Multiplexing - ProtocolDCNMEAS = 19 // DCN Measurement Subsystems - ProtocolHMP = 20 // Host Monitoring - ProtocolPRM = 21 // Packet Radio Measurement - ProtocolXNSIDP = 22 // XEROX NS IDP - ProtocolTRUNK1 = 23 // Trunk-1 - ProtocolTRUNK2 = 24 // Trunk-2 - ProtocolLEAF1 = 25 // Leaf-1 - ProtocolLEAF2 = 26 // Leaf-2 - ProtocolRDP = 27 // Reliable Data Protocol - ProtocolIRTP = 28 // Internet Reliable Transaction - ProtocolISOTP4 = 29 // ISO Transport Protocol Class 4 - ProtocolNETBLT = 30 // Bulk Data Transfer Protocol - ProtocolMFENSP = 31 // MFE Network Services Protocol - ProtocolMERITINP = 32 // MERIT Internodal Protocol - ProtocolDCCP = 33 // Datagram Congestion Control Protocol - Protocol3PC = 34 // Third Party Connect Protocol - ProtocolIDPR = 35 // Inter-Domain Policy Routing Protocol - ProtocolXTP = 36 // XTP - ProtocolDDP = 37 // Datagram Delivery Protocol - ProtocolIDPRCMTP = 38 // IDPR Control Message Transport Proto - ProtocolTPPP = 39 // TP++ Transport Protocol - ProtocolIL = 40 // IL Transport Protocol - ProtocolIPv6 = 41 // IPv6 encapsulation - ProtocolSDRP = 42 // Source Demand Routing Protocol - ProtocolIPv6Route = 43 // Routing Header for IPv6 - ProtocolIPv6Frag = 44 // Fragment Header for IPv6 - ProtocolIDRP = 45 // Inter-Domain Routing Protocol - ProtocolRSVP = 46 // Reservation Protocol - ProtocolGRE = 47 // Generic Routing Encapsulation - ProtocolDSR = 48 // Dynamic Source Routing Protocol - ProtocolBNA = 49 // BNA - ProtocolESP = 50 // Encap Security Payload - ProtocolAH = 51 // Authentication Header - ProtocolINLSP = 52 // Integrated Net Layer Security TUBA - ProtocolNARP = 54 // NBMA Address Resolution Protocol - ProtocolMOBILE = 55 // IP Mobility - ProtocolTLSP = 56 // Transport Layer Security Protocol using Kryptonet key management - ProtocolSKIP = 57 // SKIP - ProtocolIPv6ICMP = 58 // ICMP for IPv6 - ProtocolIPv6NoNxt = 59 // No Next Header for IPv6 - ProtocolIPv6Opts = 60 // Destination Options for IPv6 - ProtocolCFTP = 62 // CFTP - ProtocolSATEXPAK = 64 // SATNET and Backroom EXPAK - ProtocolKRYPTOLAN = 65 // Kryptolan - ProtocolRVD = 66 // MIT Remote Virtual Disk Protocol - ProtocolIPPC = 67 // Internet Pluribus Packet Core - ProtocolSATMON = 69 // SATNET Monitoring - ProtocolVISA = 70 // VISA Protocol - ProtocolIPCV = 71 // Internet Packet Core Utility - ProtocolCPNX = 72 // Computer Protocol Network Executive - ProtocolCPHB = 73 // Computer Protocol Heart Beat - ProtocolWSN = 74 // Wang Span Network - ProtocolPVP = 75 // Packet Video Protocol - ProtocolBRSATMON = 76 // Backroom SATNET Monitoring - ProtocolSUNND = 77 // SUN ND PROTOCOL-Temporary - ProtocolWBMON = 78 // WIDEBAND Monitoring - ProtocolWBEXPAK = 79 // WIDEBAND EXPAK - ProtocolISOIP = 80 // ISO Internet Protocol - ProtocolVMTP = 81 // VMTP - ProtocolSECUREVMTP = 82 // SECURE-VMTP - ProtocolVINES = 83 // VINES - ProtocolTTP = 84 // Transaction Transport Protocol - ProtocolIPTM = 84 // Internet Protocol Traffic Manager - ProtocolNSFNETIGP = 85 // NSFNET-IGP - ProtocolDGP = 86 // Dissimilar Gateway Protocol - ProtocolTCF = 87 // TCF - ProtocolEIGRP = 88 // EIGRP - ProtocolOSPFIGP = 89 // OSPFIGP - ProtocolSpriteRPC = 90 // Sprite RPC Protocol - ProtocolLARP = 91 // Locus Address Resolution Protocol - ProtocolMTP = 92 // Multicast Transport Protocol - ProtocolAX25 = 93 // AX.25 Frames - ProtocolIPIP = 94 // IP-within-IP Encapsulation Protocol - ProtocolSCCSP = 96 // Semaphore Communications Sec. Pro. - ProtocolETHERIP = 97 // Ethernet-within-IP Encapsulation - ProtocolENCAP = 98 // Encapsulation Header - ProtocolGMTP = 100 // GMTP - ProtocolIFMP = 101 // Ipsilon Flow Management Protocol - ProtocolPNNI = 102 // PNNI over IP - ProtocolPIM = 103 // Protocol Independent Multicast - ProtocolARIS = 104 // ARIS - ProtocolSCPS = 105 // SCPS - ProtocolQNX = 106 // QNX - ProtocolAN = 107 // Active Networks - ProtocolIPComp = 108 // IP Payload Compression Protocol - ProtocolSNP = 109 // Sitara Networks Protocol - ProtocolCompaqPeer = 110 // Compaq Peer Protocol - ProtocolIPXinIP = 111 // IPX in IP - ProtocolVRRP = 112 // Virtual Router Redundancy Protocol - ProtocolPGM = 113 // PGM Reliable Transport Protocol - ProtocolL2TP = 115 // Layer Two Tunneling Protocol - ProtocolDDX = 116 // D-II Data Exchange (DDX) - ProtocolIATP = 117 // Interactive Agent Transfer Protocol - ProtocolSTP = 118 // Schedule Transfer Protocol - ProtocolSRP = 119 // SpectraLink Radio Protocol - ProtocolUTI = 120 // UTI - ProtocolSMP = 121 // Simple Message Protocol - ProtocolPTP = 123 // Performance Transparency Protocol - ProtocolISIS = 124 // ISIS over IPv4 - ProtocolFIRE = 125 // FIRE - ProtocolCRTP = 126 // Combat Radio Transport Protocol - ProtocolCRUDP = 127 // Combat Radio User Datagram - ProtocolSSCOPMCE = 128 // SSCOPMCE - ProtocolIPLT = 129 // IPLT - ProtocolSPS = 130 // Secure Packet Shield - ProtocolPIPE = 131 // Private IP Encapsulation within IP - ProtocolSCTP = 132 // Stream Control Transmission Protocol - ProtocolFC = 133 // Fibre Channel - ProtocolRSVPE2EIGNORE = 134 // RSVP-E2E-IGNORE - ProtocolMobilityHeader = 135 // Mobility Header - ProtocolUDPLite = 136 // UDPLite - ProtocolMPLSinIP = 137 // MPLS-in-IP - ProtocolMANET = 138 // MANET Protocols - ProtocolHIP = 139 // Host Identity Protocol - ProtocolShim6 = 140 // Shim6 Protocol - ProtocolWESP = 141 // Wrapped Encapsulating Security Payload - ProtocolROHC = 142 // Robust Header Compression - ProtocolReserved = 255 // Reserved -) - -// Address Family Numbers, Updated: 2018-04-02 -const ( - AddrFamilyIPv4 = 1 // IP (IP version 4) - AddrFamilyIPv6 = 2 // IP6 (IP version 6) - AddrFamilyNSAP = 3 // NSAP - AddrFamilyHDLC = 4 // HDLC (8-bit multidrop) - AddrFamilyBBN1822 = 5 // BBN 1822 - AddrFamily802 = 6 // 802 (includes all 802 media plus Ethernet "canonical format") - AddrFamilyE163 = 7 // E.163 - AddrFamilyE164 = 8 // E.164 (SMDS, Frame Relay, ATM) - AddrFamilyF69 = 9 // F.69 (Telex) - AddrFamilyX121 = 10 // X.121 (X.25, Frame Relay) - AddrFamilyIPX = 11 // IPX - AddrFamilyAppletalk = 12 // Appletalk - AddrFamilyDecnetIV = 13 // Decnet IV - AddrFamilyBanyanVines = 14 // Banyan Vines - AddrFamilyE164withSubaddress = 15 // E.164 with NSAP format subaddress - AddrFamilyDNS = 16 // DNS (Domain Name System) - AddrFamilyDistinguishedName = 17 // Distinguished Name - AddrFamilyASNumber = 18 // AS Number - AddrFamilyXTPoverIPv4 = 19 // XTP over IP version 4 - AddrFamilyXTPoverIPv6 = 20 // XTP over IP version 6 - AddrFamilyXTPnativemodeXTP = 21 // XTP native mode XTP - AddrFamilyFibreChannelWorldWidePortName = 22 // Fibre Channel World-Wide Port Name - AddrFamilyFibreChannelWorldWideNodeName = 23 // Fibre Channel World-Wide Node Name - AddrFamilyGWID = 24 // GWID - AddrFamilyL2VPN = 25 // AFI for L2VPN information - AddrFamilyMPLSTPSectionEndpointID = 26 // MPLS-TP Section Endpoint Identifier - AddrFamilyMPLSTPLSPEndpointID = 27 // MPLS-TP LSP Endpoint Identifier - AddrFamilyMPLSTPPseudowireEndpointID = 28 // MPLS-TP Pseudowire Endpoint Identifier - AddrFamilyMTIPv4 = 29 // MT IP: Multi-Topology IP version 4 - AddrFamilyMTIPv6 = 30 // MT IPv6: Multi-Topology IP version 6 - AddrFamilyEIGRPCommonServiceFamily = 16384 // EIGRP Common Service Family - AddrFamilyEIGRPIPv4ServiceFamily = 16385 // EIGRP IPv4 Service Family - AddrFamilyEIGRPIPv6ServiceFamily = 16386 // EIGRP IPv6 Service Family - AddrFamilyLISPCanonicalAddressFormat = 16387 // LISP Canonical Address Format (LCAF) - AddrFamilyBGPLS = 16388 // BGP-LS - AddrFamily48bitMAC = 16389 // 48-bit MAC - AddrFamily64bitMAC = 16390 // 64-bit MAC - AddrFamilyOUI = 16391 // OUI - AddrFamilyMACFinal24bits = 16392 // MAC/24 - AddrFamilyMACFinal40bits = 16393 // MAC/40 - AddrFamilyIPv6Initial64bits = 16394 // IPv6/64 - AddrFamilyRBridgePortID = 16395 // RBridge Port ID - AddrFamilyTRILLNickname = 16396 // TRILL Nickname -) diff --git a/vendor/golang.org/x/net/internal/iana/gen.go b/vendor/golang.org/x/net/internal/iana/gen.go deleted file mode 100644 index 2a7661c..0000000 --- a/vendor/golang.org/x/net/internal/iana/gen.go +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates internet protocol constants and tables by -// reading IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "strconv" - "strings" -) - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/dscp-registry/dscp-registry.xml", - parseDSCPRegistry, - }, - { - "https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xml", - parseProtocolNumbers, - }, - { - "https://www.iana.org/assignments/address-family-numbers/address-family-numbers.xml", - parseAddrFamilyNumbers, - }, -} - -func main() { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") - fmt.Fprintf(&bb, "// Package iana provides protocol number resources managed by the Internet Assigned Numbers Authority (IANA).\n") - fmt.Fprintf(&bb, `package iana // import "golang.org/x/net/internal/iana"`+"\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - fmt.Fprintf(os.Stderr, "got HTTP status code %v for %v\n", resp.StatusCode, r.url) - os.Exit(1) - } - if err := r.parse(&bb, resp.Body); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := ioutil.WriteFile("const.go", b, 0644); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func parseDSCPRegistry(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var dr dscpRegistry - if err := dec.Decode(&dr); err != nil { - return err - } - fmt.Fprintf(w, "// %s, Updated: %s\n", dr.Title, dr.Updated) - fmt.Fprintf(w, "const (\n") - for _, dr := range dr.escapeDSCP() { - fmt.Fprintf(w, "DiffServ%s = %#02x", dr.Name, dr.Value) - fmt.Fprintf(w, "// %s\n", dr.OrigName) - } - for _, er := range dr.escapeECN() { - fmt.Fprintf(w, "%s = %#02x", er.Descr, er.Value) - fmt.Fprintf(w, "// %s\n", er.OrigDescr) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type dscpRegistry struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Note string `xml:"note"` - Registries []struct { - Title string `xml:"title"` - Registries []struct { - Title string `xml:"title"` - Records []struct { - Name string `xml:"name"` - Space string `xml:"space"` - } `xml:"record"` - } `xml:"registry"` - Records []struct { - Value string `xml:"value"` - Descr string `xml:"description"` - } `xml:"record"` - } `xml:"registry"` -} - -type canonDSCPRecord struct { - OrigName string - Name string - Value int -} - -func (drr *dscpRegistry) escapeDSCP() []canonDSCPRecord { - var drs []canonDSCPRecord - for _, preg := range drr.Registries { - if !strings.Contains(preg.Title, "Differentiated Services Field Codepoints") { - continue - } - for _, reg := range preg.Registries { - if !strings.Contains(reg.Title, "Pool 1 Codepoints") { - continue - } - drs = make([]canonDSCPRecord, len(reg.Records)) - sr := strings.NewReplacer( - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, dr := range reg.Records { - s := strings.TrimSpace(dr.Name) - drs[i].OrigName = s - drs[i].Name = sr.Replace(s) - n, err := strconv.ParseUint(dr.Space, 2, 8) - if err != nil { - continue - } - drs[i].Value = int(n) << 2 - } - } - } - return drs -} - -type canonECNRecord struct { - OrigDescr string - Descr string - Value int -} - -func (drr *dscpRegistry) escapeECN() []canonECNRecord { - var ers []canonECNRecord - for _, reg := range drr.Registries { - if !strings.Contains(reg.Title, "ECN Field") { - continue - } - ers = make([]canonECNRecord, len(reg.Records)) - sr := strings.NewReplacer( - "Capable", "", - "Not-ECT", "", - "ECT(1)", "", - "ECT(0)", "", - "CE", "", - "(", "", - ")", "", - "+", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, er := range reg.Records { - s := strings.TrimSpace(er.Descr) - ers[i].OrigDescr = s - ss := strings.Split(s, " ") - if len(ss) > 1 { - ers[i].Descr = strings.Join(ss[1:], " ") - } else { - ers[i].Descr = ss[0] - } - ers[i].Descr = sr.Replace(er.Descr) - n, err := strconv.ParseUint(er.Value, 2, 8) - if err != nil { - continue - } - ers[i].Value = int(n) - } - } - return ers -} - -func parseProtocolNumbers(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var pn protocolNumbers - if err := dec.Decode(&pn); err != nil { - return err - } - prs := pn.escape() - prs = append([]canonProtocolRecord{{ - Name: "IP", - Descr: "IPv4 encapsulation, pseudo protocol number", - Value: 0, - }}, prs...) - fmt.Fprintf(w, "// %s, Updated: %s\n", pn.Title, pn.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "Protocol%s = %d", pr.Name, pr.Value) - s := pr.Descr - if s == "" { - s = pr.OrigName - } - fmt.Fprintf(w, "// %s\n", s) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type protocolNumbers struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - RegTitle string `xml:"registry>title"` - Note string `xml:"registry>note"` - Records []struct { - Value string `xml:"value"` - Name string `xml:"name"` - Descr string `xml:"description"` - } `xml:"registry>record"` -} - -type canonProtocolRecord struct { - OrigName string - Name string - Descr string - Value int -} - -func (pn *protocolNumbers) escape() []canonProtocolRecord { - prs := make([]canonProtocolRecord, len(pn.Records)) - sr := strings.NewReplacer( - "-in-", "in", - "-within-", "within", - "-over-", "over", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range pn.Records { - if strings.Contains(pr.Name, "Deprecated") || - strings.Contains(pr.Name, "deprecated") { - continue - } - prs[i].OrigName = pr.Name - s := strings.TrimSpace(pr.Name) - switch pr.Name { - case "ISIS over IPv4": - prs[i].Name = "ISIS" - case "manet": - prs[i].Name = "MANET" - default: - prs[i].Name = sr.Replace(s) - } - ss := strings.Split(pr.Descr, "\n") - for i := range ss { - ss[i] = strings.TrimSpace(ss[i]) - } - if len(ss) > 1 { - prs[i].Descr = strings.Join(ss, " ") - } else { - prs[i].Descr = ss[0] - } - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} - -func parseAddrFamilyNumbers(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var afn addrFamilylNumbers - if err := dec.Decode(&afn); err != nil { - return err - } - afrs := afn.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", afn.Title, afn.Updated) - fmt.Fprintf(w, "const (\n") - for _, afr := range afrs { - if afr.Name == "" { - continue - } - fmt.Fprintf(w, "AddrFamily%s = %d", afr.Name, afr.Value) - fmt.Fprintf(w, "// %s\n", afr.Descr) - } - fmt.Fprintf(w, ")\n") - return nil -} - -type addrFamilylNumbers struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - RegTitle string `xml:"registry>title"` - Note string `xml:"registry>note"` - Records []struct { - Value string `xml:"value"` - Descr string `xml:"description"` - } `xml:"registry>record"` -} - -type canonAddrFamilyRecord struct { - Name string - Descr string - Value int -} - -func (afn *addrFamilylNumbers) escape() []canonAddrFamilyRecord { - afrs := make([]canonAddrFamilyRecord, len(afn.Records)) - sr := strings.NewReplacer( - "IP version 4", "IPv4", - "IP version 6", "IPv6", - "Identifier", "ID", - "-", "", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, afr := range afn.Records { - if strings.Contains(afr.Descr, "Unassigned") || - strings.Contains(afr.Descr, "Reserved") { - continue - } - afrs[i].Descr = afr.Descr - s := strings.TrimSpace(afr.Descr) - switch s { - case "IP (IP version 4)": - afrs[i].Name = "IPv4" - case "IP6 (IP version 6)": - afrs[i].Name = "IPv6" - case "AFI for L2VPN information": - afrs[i].Name = "L2VPN" - case "E.164 with NSAP format subaddress": - afrs[i].Name = "E164withSubaddress" - case "MT IP: Multi-Topology IP version 4": - afrs[i].Name = "MTIPv4" - case "MAC/24": - afrs[i].Name = "MACFinal24bits" - case "MAC/40": - afrs[i].Name = "MACFinal40bits" - case "IPv6/64": - afrs[i].Name = "IPv6Initial64bits" - default: - n := strings.Index(s, "(") - if n > 0 { - s = s[:n] - } - n = strings.Index(s, ":") - if n > 0 { - s = s[:n] - } - afrs[i].Name = sr.Replace(s) - } - afrs[i].Value, _ = strconv.Atoi(afr.Value) - } - return afrs -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr.go b/vendor/golang.org/x/net/internal/socket/cmsghdr.go deleted file mode 100644 index 0a73e27..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket - -func (h *cmsghdr) len() int { return int(h.Len) } -func (h *cmsghdr) lvl() int { return int(h.Level) } -func (h *cmsghdr) typ() int { return int(h.Type) } diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go deleted file mode 100644 index 14dbb3a..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd openbsd - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go deleted file mode 100644 index bac6681..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm mips mipsle 386 -// +build linux - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go deleted file mode 100644 index 27be0ef..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x -// +build linux - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint64(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go deleted file mode 100644 index 7dedd43..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64 -// +build solaris - -package socket - -func (h *cmsghdr) set(l, lvl, typ int) { - h.Len = uint32(l) - h.Level = int32(lvl) - h.Type = int32(typ) -} diff --git a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go deleted file mode 100644 index e581011..0000000 --- a/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type cmsghdr struct{} - -const sizeofCmsghdr = 0 - -func (h *cmsghdr) len() int { return 0 } -func (h *cmsghdr) lvl() int { return 0 } -func (h *cmsghdr) typ() int { return 0 } - -func (h *cmsghdr) set(l, lvl, typ int) {} diff --git a/vendor/golang.org/x/net/internal/socket/defs_aix.go b/vendor/golang.org/x/net/internal/socket/defs_aix.go deleted file mode 100644 index ae1b21c..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_aix.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type mmsghdr C.struct_mmsghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_darwin.go b/vendor/golang.org/x/net/internal/socket/defs_darwin.go deleted file mode 100644 index b780bc6..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_darwin.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go b/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go deleted file mode 100644 index b780bc6..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_dragonfly.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go b/vendor/golang.org/x/net/internal/socket/defs_freebsd.go deleted file mode 100644 index b780bc6..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_freebsd.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_linux.go b/vendor/golang.org/x/net/internal/socket/defs_linux.go deleted file mode 100644 index 85bb745..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_linux.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include -#include - -#define _GNU_SOURCE -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type mmsghdr C.struct_mmsghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go b/vendor/golang.org/x/net/internal/socket/defs_netbsd.go deleted file mode 100644 index 5bfdd46..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_netbsd.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type mmsghdr C.struct_mmsghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go b/vendor/golang.org/x/net/internal/socket/defs_openbsd.go deleted file mode 100644 index b780bc6..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_openbsd.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/defs_solaris.go b/vendor/golang.org/x/net/internal/socket/defs_solaris.go deleted file mode 100644 index b780bc6..0000000 --- a/vendor/golang.org/x/net/internal/socket/defs_solaris.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package socket - -/* -#include - -#include -*/ -import "C" - -type iovec C.struct_iovec - -type msghdr C.struct_msghdr - -type cmsghdr C.struct_cmsghdr - -type sockaddrInet C.struct_sockaddr_in - -type sockaddrInet6 C.struct_sockaddr_in6 - -const ( - sizeofIovec = C.sizeof_struct_iovec - sizeofMsghdr = C.sizeof_struct_msghdr - sizeofCmsghdr = C.sizeof_struct_cmsghdr - - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 -) diff --git a/vendor/golang.org/x/net/internal/socket/empty.s b/vendor/golang.org/x/net/internal/socket/empty.s deleted file mode 100644 index bff0231..0000000 --- a/vendor/golang.org/x/net/internal/socket/empty.s +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin,go1.12 - -// This exists solely so we can linkname in symbols from syscall. diff --git a/vendor/golang.org/x/net/internal/socket/error_unix.go b/vendor/golang.org/x/net/internal/socket/error_unix.go deleted file mode 100644 index f14872d..0000000 --- a/vendor/golang.org/x/net/internal/socket/error_unix.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket - -import "syscall" - -var ( - errEAGAIN error = syscall.EAGAIN - errEINVAL error = syscall.EINVAL - errENOENT error = syscall.ENOENT -) - -// errnoErr returns common boxed Errno values, to prevent allocations -// at runtime. -func errnoErr(errno syscall.Errno) error { - switch errno { - case 0: - return nil - case syscall.EAGAIN: - return errEAGAIN - case syscall.EINVAL: - return errEINVAL - case syscall.ENOENT: - return errENOENT - } - return errno -} diff --git a/vendor/golang.org/x/net/internal/socket/error_windows.go b/vendor/golang.org/x/net/internal/socket/error_windows.go deleted file mode 100644 index 6a6379a..0000000 --- a/vendor/golang.org/x/net/internal/socket/error_windows.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import "syscall" - -var ( - errERROR_IO_PENDING error = syscall.ERROR_IO_PENDING - errEINVAL error = syscall.EINVAL -) - -// errnoErr returns common boxed Errno values, to prevent allocations -// at runtime. -func errnoErr(errno syscall.Errno) error { - switch errno { - case 0: - return nil - case syscall.ERROR_IO_PENDING: - return errERROR_IO_PENDING - case syscall.EINVAL: - return errEINVAL - } - return errno -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go b/vendor/golang.org/x/net/internal/socket/iovec_32bit.go deleted file mode 100644 index 05d6082..0000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm mips mipsle 386 -// +build darwin dragonfly freebsd linux netbsd openbsd - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_64bit.go deleted file mode 100644 index dfeda75..0000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x -// +build aix darwin dragonfly freebsd linux netbsd openbsd - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*byte)(unsafe.Pointer(&b[0])) - v.Len = uint64(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go deleted file mode 100644 index 8d17a40..0000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64 -// +build solaris - -package socket - -import "unsafe" - -func (v *iovec) set(b []byte) { - l := len(b) - if l == 0 { - return - } - v.Base = (*int8)(unsafe.Pointer(&b[0])) - v.Len = uint64(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/iovec_stub.go b/vendor/golang.org/x/net/internal/socket/iovec_stub.go deleted file mode 100644 index a746e90..0000000 --- a/vendor/golang.org/x/net/internal/socket/iovec_stub.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type iovec struct{} - -func (v *iovec) set(b []byte) {} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go deleted file mode 100644 index 1a7f279..0000000 --- a/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!linux,!netbsd - -package socket - -import "net" - -type mmsghdr struct{} - -type mmsghdrs []mmsghdr - -func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { - return nil -} - -func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go b/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go deleted file mode 100644 index f110068..0000000 --- a/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix linux netbsd - -package socket - -import "net" - -type mmsghdrs []mmsghdr - -func (hs mmsghdrs) pack(ms []Message, parseFn func([]byte, string) (net.Addr, error), marshalFn func(net.Addr) []byte) error { - for i := range hs { - vs := make([]iovec, len(ms[i].Buffers)) - var sa []byte - if parseFn != nil { - sa = make([]byte, sizeofSockaddrInet6) - } - if marshalFn != nil { - sa = marshalFn(ms[i].Addr) - } - hs[i].Hdr.pack(vs, ms[i].Buffers, ms[i].OOB, sa) - } - return nil -} - -func (hs mmsghdrs) unpack(ms []Message, parseFn func([]byte, string) (net.Addr, error), hint string) error { - for i := range hs { - ms[i].N = int(hs[i].Len) - ms[i].NN = hs[i].Hdr.controllen() - ms[i].Flags = hs[i].Hdr.flags() - if parseFn != nil { - var err error - ms[i].Addr, err = parseFn(hs[i].Hdr.name(), hint) - if err != nil { - return err - } - } - } - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go deleted file mode 100644 index 77f44c1..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd openbsd - -package socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - h.setIov(vs) - if len(oob) > 0 { - h.Control = (*byte)(unsafe.Pointer(&oob[0])) - h.Controllen = uint32(len(oob)) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) name() []byte { - if h.Name != nil && h.Namelen > 0 { - return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] - } - return nil -} - -func (h *msghdr) controllen() int { - return int(h.Controllen) -} - -func (h *msghdr) flags() int { - return int(h.Flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go b/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go deleted file mode 100644 index c5562dd..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd - -package socket - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = int32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux.go deleted file mode 100644 index 5a38798..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - h.setIov(vs) - if len(oob) > 0 { - h.setControl(oob) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) name() []byte { - if h.Name != nil && h.Namelen > 0 { - return (*[sizeofSockaddrInet6]byte)(unsafe.Pointer(h.Name))[:h.Namelen] - } - return nil -} - -func (h *msghdr) controllen() int { - return int(h.Controllen) -} - -func (h *msghdr) flags() int { - return int(h.Flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go deleted file mode 100644 index a7a5987..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm mips mipsle 386 -// +build linux - -package socket - -import "unsafe" - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint32(l) -} - -func (h *msghdr) setControl(b []byte) { - h.Control = (*byte)(unsafe.Pointer(&b[0])) - h.Controllen = uint32(len(b)) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go deleted file mode 100644 index e731833..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build arm64 amd64 ppc64 ppc64le mips64 mips64le riscv64 s390x -// +build linux - -package socket - -import "unsafe" - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint64(l) -} - -func (h *msghdr) setControl(b []byte) { - h.Control = (*byte)(unsafe.Pointer(&b[0])) - h.Controllen = uint64(len(b)) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go b/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go deleted file mode 100644 index 71a69e2..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -func (h *msghdr) setIov(vs []iovec) { - l := len(vs) - if l == 0 { - return - } - h.Iov = &vs[0] - h.Iovlen = uint32(l) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go b/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go deleted file mode 100644 index 6465b20..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build amd64 -// +build solaris - -package socket - -import "unsafe" - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) { - for i := range vs { - vs[i].set(bs[i]) - } - if len(vs) > 0 { - h.Iov = &vs[0] - h.Iovlen = int32(len(vs)) - } - if len(oob) > 0 { - h.Accrights = (*int8)(unsafe.Pointer(&oob[0])) - h.Accrightslen = int32(len(oob)) - } - if sa != nil { - h.Name = (*byte)(unsafe.Pointer(&sa[0])) - h.Namelen = uint32(len(sa)) - } -} - -func (h *msghdr) controllen() int { - return int(h.Accrightslen) -} - -func (h *msghdr) flags() int { - return int(NativeEndian.Uint32(h.Pad_cgo_2[:])) -} diff --git a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go b/vendor/golang.org/x/net/internal/socket/msghdr_stub.go deleted file mode 100644 index 873490a..0000000 --- a/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package socket - -type msghdr struct{} - -func (h *msghdr) pack(vs []iovec, bs [][]byte, oob []byte, sa []byte) {} -func (h *msghdr) name() []byte { return nil } -func (h *msghdr) controllen() int { return 0 } -func (h *msghdr) flags() int { return 0 } diff --git a/vendor/golang.org/x/net/internal/socket/norace.go b/vendor/golang.org/x/net/internal/socket/norace.go deleted file mode 100644 index 9519ffb..0000000 --- a/vendor/golang.org/x/net/internal/socket/norace.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !race - -package socket - -func (m *Message) raceRead() { -} -func (m *Message) raceWrite() { -} diff --git a/vendor/golang.org/x/net/internal/socket/race.go b/vendor/golang.org/x/net/internal/socket/race.go deleted file mode 100644 index df60c62..0000000 --- a/vendor/golang.org/x/net/internal/socket/race.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build race - -package socket - -import ( - "runtime" - "unsafe" -) - -// This package reads and writes the Message buffers using a -// direct system call, which the race detector can't see. -// These functions tell the race detector what is going on during the syscall. - -func (m *Message) raceRead() { - for _, b := range m.Buffers { - if len(b) > 0 { - runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) - } - } - if b := m.OOB; len(b) > 0 { - runtime.RaceReadRange(unsafe.Pointer(&b[0]), len(b)) - } -} -func (m *Message) raceWrite() { - for _, b := range m.Buffers { - if len(b) > 0 { - runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) - } - } - if b := m.OOB; len(b) > 0 { - runtime.RaceWriteRange(unsafe.Pointer(&b[0]), len(b)) - } -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn.go b/vendor/golang.org/x/net/internal/socket/rawconn.go deleted file mode 100644 index b07b890..0000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "errors" - "net" - "os" - "syscall" -) - -// A Conn represents a raw connection. -type Conn struct { - network string - c syscall.RawConn -} - -// NewConn returns a new raw connection. -func NewConn(c net.Conn) (*Conn, error) { - var err error - var cc Conn - switch c := c.(type) { - case *net.TCPConn: - cc.network = "tcp" - cc.c, err = c.SyscallConn() - case *net.UDPConn: - cc.network = "udp" - cc.c, err = c.SyscallConn() - case *net.IPConn: - cc.network = "ip" - cc.c, err = c.SyscallConn() - default: - return nil, errors.New("unknown connection type") - } - if err != nil { - return nil, err - } - return &cc, nil -} - -func (o *Option) get(c *Conn, b []byte) (int, error) { - var operr error - var n int - fn := func(s uintptr) { - n, operr = getsockopt(s, o.Level, o.Name, b) - } - if err := c.c.Control(fn); err != nil { - return 0, err - } - return n, os.NewSyscallError("getsockopt", operr) -} - -func (o *Option) set(c *Conn, b []byte) error { - var operr error - fn := func(s uintptr) { - operr = setsockopt(s, o.Level, o.Name, b) - } - if err := c.c.Control(fn); err != nil { - return err - } - return os.NewSyscallError("setsockopt", operr) -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go deleted file mode 100644 index d01fc4c..0000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux - -package socket - -import ( - "net" - "os" - "syscall" -) - -func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { - for i := range ms { - ms[i].raceWrite() - } - hs := make(mmsghdrs, len(ms)) - var parseFn func([]byte, string) (net.Addr, error) - if c.network != "tcp" { - parseFn = parseInetAddr - } - if err := hs.pack(ms, parseFn, nil); err != nil { - return 0, err - } - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = recvmmsg(s, hs, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Read(fn); err != nil { - return n, err - } - if operr != nil { - return n, os.NewSyscallError("recvmmsg", operr) - } - if err := hs[:n].unpack(ms[:n], parseFn, c.network); err != nil { - return n, err - } - return n, nil -} - -func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { - for i := range ms { - ms[i].raceRead() - } - hs := make(mmsghdrs, len(ms)) - var marshalFn func(net.Addr) []byte - if c.network != "tcp" { - marshalFn = marshalInetAddr - } - if err := hs.pack(ms, nil, marshalFn); err != nil { - return 0, err - } - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = sendmmsg(s, hs, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Write(fn); err != nil { - return n, err - } - if operr != nil { - return n, os.NewSyscallError("sendmmsg", operr) - } - if err := hs[:n].unpack(ms[:n], nil, ""); err != nil { - return n, err - } - return n, nil -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go b/vendor/golang.org/x/net/internal/socket/rawconn_msg.go deleted file mode 100644 index d5ae3f8..0000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package socket - -import ( - "os" - "syscall" -) - -func (c *Conn) recvMsg(m *Message, flags int) error { - m.raceWrite() - var h msghdr - vs := make([]iovec, len(m.Buffers)) - var sa []byte - if c.network != "tcp" { - sa = make([]byte, sizeofSockaddrInet6) - } - h.pack(vs, m.Buffers, m.OOB, sa) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = recvmsg(s, &h, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Read(fn); err != nil { - return err - } - if operr != nil { - return os.NewSyscallError("recvmsg", operr) - } - if c.network != "tcp" { - var err error - m.Addr, err = parseInetAddr(sa[:], c.network) - if err != nil { - return err - } - } - m.N = n - m.NN = h.controllen() - m.Flags = h.flags() - return nil -} - -func (c *Conn) sendMsg(m *Message, flags int) error { - m.raceRead() - var h msghdr - vs := make([]iovec, len(m.Buffers)) - var sa []byte - if m.Addr != nil { - sa = marshalInetAddr(m.Addr) - } - h.pack(vs, m.Buffers, m.OOB, sa) - var operr error - var n int - fn := func(s uintptr) bool { - n, operr = sendmsg(s, &h, flags) - if operr == syscall.EAGAIN { - return false - } - return true - } - if err := c.c.Write(fn); err != nil { - return err - } - if operr != nil { - return os.NewSyscallError("sendmsg", operr) - } - m.N = n - m.NN = len(m.OOB) - return nil -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go deleted file mode 100644 index fe5bb94..0000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !linux - -package socket - -func (c *Conn) recvMsgs(ms []Message, flags int) (int, error) { - return 0, errNotImplemented -} - -func (c *Conn) sendMsgs(ms []Message, flags int) (int, error) { - return 0, errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go b/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go deleted file mode 100644 index b8cea6f..0000000 --- a/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package socket - -func (c *Conn) recvMsg(m *Message, flags int) error { - return errNotImplemented -} - -func (c *Conn) sendMsg(m *Message, flags int) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/socket.go b/vendor/golang.org/x/net/internal/socket/socket.go deleted file mode 100644 index 23571b8..0000000 --- a/vendor/golang.org/x/net/internal/socket/socket.go +++ /dev/null @@ -1,288 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package socket provides a portable interface for socket system -// calls. -package socket // import "golang.org/x/net/internal/socket" - -import ( - "errors" - "net" - "runtime" - "unsafe" -) - -var errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) - -// An Option represents a sticky socket option. -type Option struct { - Level int // level - Name int // name; must be equal or greater than 1 - Len int // length of value in bytes; must be equal or greater than 1 -} - -// Get reads a value for the option from the kernel. -// It returns the number of bytes written into b. -func (o *Option) Get(c *Conn, b []byte) (int, error) { - if o.Name < 1 || o.Len < 1 { - return 0, errors.New("invalid option") - } - if len(b) < o.Len { - return 0, errors.New("short buffer") - } - return o.get(c, b) -} - -// GetInt returns an integer value for the option. -// -// The Len field of Option must be either 1 or 4. -func (o *Option) GetInt(c *Conn) (int, error) { - if o.Len != 1 && o.Len != 4 { - return 0, errors.New("invalid option") - } - var b []byte - var bb [4]byte - if o.Len == 1 { - b = bb[:1] - } else { - b = bb[:4] - } - n, err := o.get(c, b) - if err != nil { - return 0, err - } - if n != o.Len { - return 0, errors.New("invalid option length") - } - if o.Len == 1 { - return int(b[0]), nil - } - return int(NativeEndian.Uint32(b[:4])), nil -} - -// Set writes the option and value to the kernel. -func (o *Option) Set(c *Conn, b []byte) error { - if o.Name < 1 || o.Len < 1 { - return errors.New("invalid option") - } - if len(b) < o.Len { - return errors.New("short buffer") - } - return o.set(c, b) -} - -// SetInt writes the option and value to the kernel. -// -// The Len field of Option must be either 1 or 4. -func (o *Option) SetInt(c *Conn, v int) error { - if o.Len != 1 && o.Len != 4 { - return errors.New("invalid option") - } - var b []byte - if o.Len == 1 { - b = []byte{byte(v)} - } else { - var bb [4]byte - NativeEndian.PutUint32(bb[:o.Len], uint32(v)) - b = bb[:4] - } - return o.set(c, b) -} - -func controlHeaderLen() int { - return roundup(sizeofCmsghdr) -} - -func controlMessageLen(dataLen int) int { - return roundup(sizeofCmsghdr) + dataLen -} - -// ControlMessageSpace returns the whole length of control message. -func ControlMessageSpace(dataLen int) int { - return roundup(sizeofCmsghdr) + roundup(dataLen) -} - -// A ControlMessage represents the head message in a stream of control -// messages. -// -// A control message comprises of a header, data and a few padding -// fields to conform to the interface to the kernel. -// -// See RFC 3542 for further information. -type ControlMessage []byte - -// Data returns the data field of the control message at the head on -// m. -func (m ControlMessage) Data(dataLen int) []byte { - l := controlHeaderLen() - if len(m) < l || len(m) < l+dataLen { - return nil - } - return m[l : l+dataLen] -} - -// Next returns the control message at the next on m. -// -// Next works only for standard control messages. -func (m ControlMessage) Next(dataLen int) ControlMessage { - l := ControlMessageSpace(dataLen) - if len(m) < l { - return nil - } - return m[l:] -} - -// MarshalHeader marshals the header fields of the control message at -// the head on m. -func (m ControlMessage) MarshalHeader(lvl, typ, dataLen int) error { - if len(m) < controlHeaderLen() { - return errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - h.set(controlMessageLen(dataLen), lvl, typ) - return nil -} - -// ParseHeader parses and returns the header fields of the control -// message at the head on m. -func (m ControlMessage) ParseHeader() (lvl, typ, dataLen int, err error) { - l := controlHeaderLen() - if len(m) < l { - return 0, 0, 0, errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - return h.lvl(), h.typ(), int(uint64(h.len()) - uint64(l)), nil -} - -// Marshal marshals the control message at the head on m, and returns -// the next control message. -func (m ControlMessage) Marshal(lvl, typ int, data []byte) (ControlMessage, error) { - l := len(data) - if len(m) < ControlMessageSpace(l) { - return nil, errors.New("short message") - } - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - h.set(controlMessageLen(l), lvl, typ) - if l > 0 { - copy(m.Data(l), data) - } - return m.Next(l), nil -} - -// Parse parses m as a single or multiple control messages. -// -// Parse works for both standard and compatible messages. -func (m ControlMessage) Parse() ([]ControlMessage, error) { - var ms []ControlMessage - for len(m) >= controlHeaderLen() { - h := (*cmsghdr)(unsafe.Pointer(&m[0])) - l := h.len() - if l <= 0 { - return nil, errors.New("invalid header length") - } - if uint64(l) < uint64(controlHeaderLen()) { - return nil, errors.New("invalid message length") - } - if uint64(l) > uint64(len(m)) { - return nil, errors.New("short buffer") - } - // On message reception: - // - // |<- ControlMessageSpace --------------->| - // |<- controlMessageLen ---------->| | - // |<- controlHeaderLen ->| | | - // +---------------+------+---------+------+ - // | Header | PadH | Data | PadD | - // +---------------+------+---------+------+ - // - // On compatible message reception: - // - // | ... |<- controlMessageLen ----------->| - // | ... |<- controlHeaderLen ->| | - // +-----+---------------+------+----------+ - // | ... | Header | PadH | Data | - // +-----+---------------+------+----------+ - ms = append(ms, ControlMessage(m[:l])) - ll := l - controlHeaderLen() - if len(m) >= ControlMessageSpace(ll) { - m = m[ControlMessageSpace(ll):] - } else { - m = m[controlMessageLen(ll):] - } - } - return ms, nil -} - -// NewControlMessage returns a new stream of control messages. -func NewControlMessage(dataLen []int) ControlMessage { - var l int - for i := range dataLen { - l += ControlMessageSpace(dataLen[i]) - } - return make([]byte, l) -} - -// A Message represents an IO message. -type Message struct { - // When writing, the Buffers field must contain at least one - // byte to write. - // When reading, the Buffers field will always contain a byte - // to read. - Buffers [][]byte - - // OOB contains protocol-specific control or miscellaneous - // ancillary data known as out-of-band data. - OOB []byte - - // Addr specifies a destination address when writing. - // It can be nil when the underlying protocol of the raw - // connection uses connection-oriented communication. - // After a successful read, it may contain the source address - // on the received packet. - Addr net.Addr - - N int // # of bytes read or written from/to Buffers - NN int // # of bytes read or written from/to OOB - Flags int // protocol-specific information on the received message -} - -// RecvMsg wraps recvmsg system call. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -func (c *Conn) RecvMsg(m *Message, flags int) error { - return c.recvMsg(m, flags) -} - -// SendMsg wraps sendmsg system call. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -func (c *Conn) SendMsg(m *Message, flags int) error { - return c.sendMsg(m, flags) -} - -// RecvMsgs wraps recvmmsg system call. -// -// It returns the number of processed messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// Only Linux supports this. -func (c *Conn) RecvMsgs(ms []Message, flags int) (int, error) { - return c.recvMsgs(ms, flags) -} - -// SendMsgs wraps sendmmsg system call. -// -// It returns the number of processed messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// Only Linux supports this. -func (c *Conn) SendMsgs(ms []Message, flags int) (int, error) { - return c.sendMsgs(ms, flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys.go b/vendor/golang.org/x/net/internal/socket/sys.go deleted file mode 100644 index ee492ba..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "encoding/binary" - "unsafe" -) - -var ( - // NativeEndian is the machine native endian implementation of - // ByteOrder. - NativeEndian binary.ByteOrder - - kernelAlign int -) - -func init() { - i := uint32(1) - b := (*[4]byte)(unsafe.Pointer(&i)) - if b[0] == 1 { - NativeEndian = binary.LittleEndian - } else { - NativeEndian = binary.BigEndian - } - kernelAlign = probeProtocolStack() -} - -func roundup(l int) int { - return (l + kernelAlign - 1) &^ (kernelAlign - 1) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsd.go b/vendor/golang.org/x/net/internal/socket/sys_bsd.go deleted file mode 100644 index d432835..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_bsd.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd openbsd - -package socket - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go b/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go deleted file mode 100644 index b4f41b5..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_bsdvar.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix freebsd netbsd openbsd - -package socket - -import ( - "runtime" - "unsafe" -) - -func probeProtocolStack() int { - if (runtime.GOOS == "netbsd" || runtime.GOOS == "openbsd") && runtime.GOARCH == "arm" { - return 8 - } - if runtime.GOOS == "aix" { - return 1 - } - var p uintptr - return int(unsafe.Sizeof(p)) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go b/vendor/golang.org/x/net/internal/socket/sys_const_unix.go deleted file mode 100644 index 43797d6..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_const_unix.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package socket - -import "golang.org/x/sys/unix" - -const ( - sysAF_UNSPEC = unix.AF_UNSPEC - sysAF_INET = unix.AF_INET - sysAF_INET6 = unix.AF_INET6 - - sysSOCK_RAW = unix.SOCK_RAW -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_darwin.go deleted file mode 100644 index b17d223..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_darwin.go +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -func probeProtocolStack() int { return 4 } diff --git a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go b/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go deleted file mode 100644 index ed0448f..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_dragonfly.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "sync" - "syscall" - "unsafe" -) - -// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h -var ( - osreldateOnce sync.Once - osreldate uint32 -) - -// First __DragonFly_version after September 2019 ABI changes -// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html -const _dragonflyABIChangeVersion = 500705 - -func probeProtocolStack() int { - osreldateOnce.Do(func() { osreldate, _ = syscall.SysctlUint32("kern.osreldate") }) - var p uintptr - if int(unsafe.Sizeof(p)) == 8 && osreldate >= _dragonflyABIChangeVersion { - return int(unsafe.Sizeof(p)) - } - // 64-bit Dragonfly before the September 2019 ABI changes still requires - // 32-bit aligned access to network subsystem. - return 4 -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go b/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go deleted file mode 100644 index 02d2b3c..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_go1_11_darwin.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !go1.12 - -package socket - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linkname.go b/vendor/golang.org/x/net/internal/socket/sys_linkname.go deleted file mode 100644 index 61c3f38..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linkname.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix go1.12,darwin - -package socket - -import ( - "syscall" - "unsafe" -) - -//go:linkname syscall_getsockopt syscall.getsockopt -func syscall_getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *uint32) error - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - err := syscall_getsockopt(int(s), level, name, unsafe.Pointer(&b[0]), &l) - return int(l), err -} - -//go:linkname syscall_setsockopt syscall.setsockopt -func syscall_setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error - -func setsockopt(s uintptr, level, name int, b []byte) error { - return syscall_setsockopt(int(s), level, name, unsafe.Pointer(&b[0]), uintptr(len(b))) -} - -//go:linkname syscall_recvmsg syscall.recvmsg -func syscall_recvmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - return syscall_recvmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) -} - -//go:linkname syscall_sendmsg syscall.sendmsg -func syscall_sendmsg(s int, msg *syscall.Msghdr, flags int) (n int, err error) - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - return syscall_sendmsg(int(s), (*syscall.Msghdr)(unsafe.Pointer(h)), flags) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux.go b/vendor/golang.org/x/net/internal/socket/sys_linux.go deleted file mode 100644 index 1559521..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux,!s390x,!386 - -package socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { - var p uintptr - return int(unsafe.Sizeof(p)) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go b/vendor/golang.org/x/net/internal/socket/sys_linux_386.go deleted file mode 100644 index 235b2cc..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { return 4 } - -const ( - sysSETSOCKOPT = 0xe - sysGETSOCKOPT = 0xf - sysSENDMSG = 0x10 - sysRECVMSG = 0x11 - sysRECVMMSG = 0x13 - sysSENDMMSG = 0x14 -) - -func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) -func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s b/vendor/golang.org/x/net/internal/socket/sys_linux_386.s deleted file mode 100644 index 93e7d75..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-36 - JMP syscall·socketcall(SB) - -TEXT ·rawsocketcall(SB),NOSPLIT,$0-36 - JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go deleted file mode 100644 index 9decee2..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x12b - sysSENDMMSG = 0x133 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go deleted file mode 100644 index d753b43..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x16d - sysSENDMMSG = 0x176 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go deleted file mode 100644 index b670894..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0xf3 - sysSENDMMSG = 0x10d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go deleted file mode 100644 index 9c0d740..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x10ef - sysSENDMMSG = 0x10f7 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go deleted file mode 100644 index 071a4ab..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x14ae - sysSENDMMSG = 0x14b6 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go deleted file mode 100644 index 071a4ab..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x14ae - sysSENDMMSG = 0x14b6 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go deleted file mode 100644 index 9c0d740..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x10ef - sysSENDMMSG = 0x10f7 -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go deleted file mode 100644 index 21c1e3f..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x157 - sysSENDMMSG = 0x15d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go deleted file mode 100644 index 21c1e3f..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -const ( - sysRECVMMSG = 0x157 - sysSENDMMSG = 0x15d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go deleted file mode 100644 index 64f69f1..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build riscv64 - -package socket - -const ( - sysRECVMMSG = 0xf3 - sysSENDMMSG = 0x10d -) diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go deleted file mode 100644 index 327979e..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "syscall" - "unsafe" -) - -func probeProtocolStack() int { return 8 } - -const ( - sysSETSOCKOPT = 0xe - sysGETSOCKOPT = 0xf - sysSENDMSG = 0x10 - sysRECVMSG = 0x11 - sysRECVMMSG = 0x13 - sysSENDMMSG = 0x14 -) - -func socketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) -func rawsocketcall(call, a0, a1, a2, a3, a4, a5 uintptr) (uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, errno := socketcall(sysGETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, errno := socketcall(sysSETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, errno := socketcall(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s b/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s deleted file mode 100644 index 06d7562..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -TEXT ·socketcall(SB),NOSPLIT,$0-72 - JMP syscall·socketcall(SB) - -TEXT ·rawsocketcall(SB),NOSPLIT,$0-72 - JMP syscall·rawsocketcall(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go b/vendor/golang.org/x/net/internal/socket/sys_netbsd.go deleted file mode 100644 index 431851c..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "syscall" - "unsafe" -) - -const ( - sysRECVMMSG = 0x1db - sysSENDMMSG = 0x1dc -) - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysRECVMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall6(sysSENDMMSG, s, uintptr(unsafe.Pointer(&hs[0])), uintptr(len(hs)), uintptr(flags), 0, 0) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_posix.go b/vendor/golang.org/x/net/internal/socket/sys_posix.go deleted file mode 100644 index 22eae80..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_posix.go +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package socket - -import ( - "encoding/binary" - "errors" - "net" - "runtime" - "strconv" - "sync" - "time" -) - -func marshalInetAddr(a net.Addr) []byte { - switch a := a.(type) { - case *net.TCPAddr: - return marshalSockaddr(a.IP, a.Port, a.Zone) - case *net.UDPAddr: - return marshalSockaddr(a.IP, a.Port, a.Zone) - case *net.IPAddr: - return marshalSockaddr(a.IP, 0, a.Zone) - default: - return nil - } -} - -func marshalSockaddr(ip net.IP, port int, zone string) []byte { - if ip4 := ip.To4(); ip4 != nil { - b := make([]byte, sizeofSockaddrInet) - switch runtime.GOOS { - case "android", "illumos", "linux", "solaris", "windows": - NativeEndian.PutUint16(b[:2], uint16(sysAF_INET)) - default: - b[0] = sizeofSockaddrInet - b[1] = sysAF_INET - } - binary.BigEndian.PutUint16(b[2:4], uint16(port)) - copy(b[4:8], ip4) - return b - } - if ip6 := ip.To16(); ip6 != nil && ip.To4() == nil { - b := make([]byte, sizeofSockaddrInet6) - switch runtime.GOOS { - case "android", "illumos", "linux", "solaris", "windows": - NativeEndian.PutUint16(b[:2], uint16(sysAF_INET6)) - default: - b[0] = sizeofSockaddrInet6 - b[1] = sysAF_INET6 - } - binary.BigEndian.PutUint16(b[2:4], uint16(port)) - copy(b[8:24], ip6) - if zone != "" { - NativeEndian.PutUint32(b[24:28], uint32(zoneCache.index(zone))) - } - return b - } - return nil -} - -func parseInetAddr(b []byte, network string) (net.Addr, error) { - if len(b) < 2 { - return nil, errors.New("invalid address") - } - var af int - switch runtime.GOOS { - case "android", "illumos", "linux", "solaris", "windows": - af = int(NativeEndian.Uint16(b[:2])) - default: - af = int(b[1]) - } - var ip net.IP - var zone string - if af == sysAF_INET { - if len(b) < sizeofSockaddrInet { - return nil, errors.New("short address") - } - ip = make(net.IP, net.IPv4len) - copy(ip, b[4:8]) - } - if af == sysAF_INET6 { - if len(b) < sizeofSockaddrInet6 { - return nil, errors.New("short address") - } - ip = make(net.IP, net.IPv6len) - copy(ip, b[8:24]) - if id := int(NativeEndian.Uint32(b[24:28])); id > 0 { - zone = zoneCache.name(id) - } - } - switch network { - case "tcp", "tcp4", "tcp6": - return &net.TCPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil - case "udp", "udp4", "udp6": - return &net.UDPAddr{IP: ip, Port: int(binary.BigEndian.Uint16(b[2:4])), Zone: zone}, nil - default: - return &net.IPAddr{IP: ip, Zone: zone}, nil - } -} - -// An ipv6ZoneCache represents a cache holding partial network -// interface information. It is used for reducing the cost of IPv6 -// addressing scope zone resolution. -// -// Multiple names sharing the index are managed by first-come -// first-served basis for consistency. -type ipv6ZoneCache struct { - sync.RWMutex // guard the following - lastFetched time.Time // last time routing information was fetched - toIndex map[string]int // interface name to its index - toName map[int]string // interface index to its name -} - -var zoneCache = ipv6ZoneCache{ - toIndex: make(map[string]int), - toName: make(map[int]string), -} - -// update refreshes the network interface information if the cache was last -// updated more than 1 minute ago, or if force is set. It returns whether the -// cache was updated. -func (zc *ipv6ZoneCache) update(ift []net.Interface, force bool) (updated bool) { - zc.Lock() - defer zc.Unlock() - now := time.Now() - if !force && zc.lastFetched.After(now.Add(-60*time.Second)) { - return false - } - zc.lastFetched = now - if len(ift) == 0 { - var err error - if ift, err = net.Interfaces(); err != nil { - return false - } - } - zc.toIndex = make(map[string]int, len(ift)) - zc.toName = make(map[int]string, len(ift)) - for _, ifi := range ift { - zc.toIndex[ifi.Name] = ifi.Index - if _, ok := zc.toName[ifi.Index]; !ok { - zc.toName[ifi.Index] = ifi.Name - } - } - return true -} - -func (zc *ipv6ZoneCache) name(zone int) string { - updated := zoneCache.update(nil, false) - zoneCache.RLock() - name, ok := zoneCache.toName[zone] - zoneCache.RUnlock() - if !ok && !updated { - zoneCache.update(nil, true) - zoneCache.RLock() - name, ok = zoneCache.toName[zone] - zoneCache.RUnlock() - } - if !ok { // last resort - name = strconv.Itoa(zone) - } - return name -} - -func (zc *ipv6ZoneCache) index(zone string) int { - updated := zoneCache.update(nil, false) - zoneCache.RLock() - index, ok := zoneCache.toIndex[zone] - zoneCache.RUnlock() - if !ok && !updated { - zoneCache.update(nil, true) - zoneCache.RLock() - index, ok = zoneCache.toIndex[zone] - zoneCache.RUnlock() - } - if !ok { // last resort - index, _ = strconv.Atoi(zone) - } - return index -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris.go b/vendor/golang.org/x/net/internal/socket/sys_solaris.go deleted file mode 100644 index 66b5547..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_solaris.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "runtime" - "syscall" - "unsafe" -) - -func probeProtocolStack() int { - switch runtime.GOARCH { - case "amd64": - return 4 - default: - var p uintptr - return int(unsafe.Sizeof(p)) - } -} - -//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt "libsocket.so" -//go:cgo_import_dynamic libc_setsockopt setsockopt "libsocket.so" -//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg "libsocket.so" -//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg "libsocket.so" - -//go:linkname procGetsockopt libc___xnet_getsockopt -//go:linkname procSetsockopt libc_setsockopt -//go:linkname procRecvmsg libc___xnet_recvmsg -//go:linkname procSendmsg libc___xnet_sendmsg - -var ( - procGetsockopt uintptr - procSetsockopt uintptr - procRecvmsg uintptr - procSendmsg uintptr -) - -func sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) -func rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (uintptr, uintptr, syscall.Errno) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procGetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSetsockopt)), 5, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procRecvmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procSendmsg)), 3, s, uintptr(unsafe.Pointer(h)), uintptr(flags), 0, 0, 0) - return int(n), errnoErr(errno) -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s b/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s deleted file mode 100644 index a18ac5e..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_solaris_amd64.s +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "textflag.h" - -TEXT ·sysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·sysvicall6(SB) - -TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 - JMP syscall·rawSysvicall6(SB) diff --git a/vendor/golang.org/x/net/internal/socket/sys_stub.go b/vendor/golang.org/x/net/internal/socket/sys_stub.go deleted file mode 100644 index 0f61742..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_stub.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package socket - -import ( - "net" - "runtime" - "unsafe" -) - -const ( - sysAF_UNSPEC = 0x0 - sysAF_INET = 0x2 - sysAF_INET6 = 0xa - - sysSOCK_RAW = 0x3 -) - -func probeProtocolStack() int { - switch runtime.GOARCH { - case "amd64p32", "mips64p32": - return 4 - default: - var p uintptr - return int(unsafe.Sizeof(p)) - } -} - -func marshalInetAddr(ip net.IP, port int, zone string) []byte { - return nil -} - -func parseInetAddr(b []byte, network string) (net.Addr, error) { - return nil, errNotImplemented -} - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - return 0, errNotImplemented -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - return errNotImplemented -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_unix.go b/vendor/golang.org/x/net/internal/socket/sys_unix.go deleted file mode 100644 index 0eb7128..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_unix.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build dragonfly freebsd linux,!s390x,!386 netbsd openbsd - -package socket - -import ( - "syscall" - "unsafe" -) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - _, _, errno := syscall.Syscall6(syscall.SYS_GETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(unsafe.Pointer(&l)), 0) - return int(l), errnoErr(errno) -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - _, _, errno := syscall.Syscall6(syscall.SYS_SETSOCKOPT, s, uintptr(level), uintptr(name), uintptr(unsafe.Pointer(&b[0])), uintptr(len(b)), 0) - return errnoErr(errno) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_RECVMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - n, _, errno := syscall.Syscall(syscall.SYS_SENDMSG, s, uintptr(unsafe.Pointer(h)), uintptr(flags)) - return int(n), errnoErr(errno) -} diff --git a/vendor/golang.org/x/net/internal/socket/sys_windows.go b/vendor/golang.org/x/net/internal/socket/sys_windows.go deleted file mode 100644 index d556a44..0000000 --- a/vendor/golang.org/x/net/internal/socket/sys_windows.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package socket - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -func probeProtocolStack() int { - var p uintptr - return int(unsafe.Sizeof(p)) -} - -const ( - sysAF_UNSPEC = windows.AF_UNSPEC - sysAF_INET = windows.AF_INET - sysAF_INET6 = windows.AF_INET6 - - sysSOCK_RAW = windows.SOCK_RAW -) - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) - -func getsockopt(s uintptr, level, name int, b []byte) (int, error) { - l := uint32(len(b)) - err := syscall.Getsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), (*int32)(unsafe.Pointer(&l))) - return int(l), err -} - -func setsockopt(s uintptr, level, name int, b []byte) error { - return syscall.Setsockopt(syscall.Handle(s), int32(level), int32(name), (*byte)(unsafe.Pointer(&b[0])), int32(len(b))) -} - -func recvmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmsg(s uintptr, h *msghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func recvmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} - -func sendmmsg(s uintptr, hs []mmsghdr, flags int) (int, error) { - return 0, errNotImplemented -} diff --git a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go deleted file mode 100644 index e740c8f..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_aix.go - -// Added for go1.11 compatibility -// +build aix - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]uint8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go deleted file mode 100644 index 083bda5..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_386.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go deleted file mode 100644 index 55c6c9f..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go deleted file mode 100644 index 083bda5..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go deleted file mode 100644 index 55c6c9f..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go deleted file mode 100644 index 8b7d161..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_dragonfly.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go deleted file mode 100644 index 3e71ff5..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go deleted file mode 100644 index 238d90d..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go deleted file mode 100644 index 3e71ff5..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go deleted file mode 100644 index 238d90d..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go deleted file mode 100644 index d33025b..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +++ /dev/null @@ -1,54 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go deleted file mode 100644 index b20d216..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +++ /dev/null @@ -1,57 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go deleted file mode 100644 index 1bb10a4..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go deleted file mode 100644 index 1bb10a4..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go deleted file mode 100644 index 1bb10a4..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +++ /dev/null @@ -1,55 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go deleted file mode 100644 index f12a1d7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go +++ /dev/null @@ -1,59 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -// +build riscv64 - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_0 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go b/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go deleted file mode 100644 index 7f6e8a7..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +++ /dev/null @@ -1,58 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint64 - Control *byte - Controllen uint64 - Flags int32 - Pad_cgo_1 [4]byte -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint64 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x38 - - sizeofCmsghdr = 0x10 - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go deleted file mode 100644 index 7e258ce..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +++ /dev/null @@ -1,57 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go deleted file mode 100644 index b3f9c0d..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go deleted file mode 100644 index 7e258ce..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +++ /dev/null @@ -1,57 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen int32 - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go deleted file mode 100644 index da26ef0..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go +++ /dev/null @@ -1,59 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type mmsghdr struct { - Hdr msghdr - Len uint32 - Pad_cgo_0 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go deleted file mode 100644 index 73655a1..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go deleted file mode 100644 index 0a4de80..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go deleted file mode 100644 index 73655a1..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint32 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Iov *iovec - Iovlen uint32 - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x8 - sizeofMsghdr = 0x1c - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go b/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go deleted file mode 100644 index 0a4de80..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go +++ /dev/null @@ -1,53 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package socket - -type iovec struct { - Base *byte - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen uint32 - Pad_cgo_1 [4]byte - Control *byte - Controllen uint32 - Flags int32 -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x1c -) diff --git a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go b/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go deleted file mode 100644 index 353cd5f..0000000 --- a/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +++ /dev/null @@ -1,52 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_solaris.go - -package socket - -type iovec struct { - Base *int8 - Len uint64 -} - -type msghdr struct { - Name *byte - Namelen uint32 - Pad_cgo_0 [4]byte - Iov *iovec - Iovlen int32 - Pad_cgo_1 [4]byte - Accrights *int8 - Accrightslen int32 - Pad_cgo_2 [4]byte -} - -type cmsghdr struct { - Len uint32 - Level int32 - Type int32 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 - X__sin6_src_id uint32 -} - -const ( - sizeofIovec = 0x10 - sizeofMsghdr = 0x30 - sizeofCmsghdr = 0xc - - sizeofSockaddrInet = 0x10 - sizeofSockaddrInet6 = 0x20 -) diff --git a/vendor/golang.org/x/net/ipv4/batch.go b/vendor/golang.org/x/net/ipv4/batch.go deleted file mode 100644 index 1a3a4fc..0000000 --- a/vendor/golang.org/x/net/ipv4/batch.go +++ /dev/null @@ -1,194 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "runtime" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// PacketConn are not implemented. - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// RawConn are not implemented. - -// A Message represents an IO message. -// -// type Message struct { -// Buffers [][]byte -// OOB []byte -// Addr net.Addr -// N int -// NN int -// Flags int -// } -// -// The Buffers fields represents a list of contiguous buffers, which -// can be used for vectored IO, for example, putting a header and a -// payload in each slice. -// When writing, the Buffers field must contain at least one byte to -// write. -// When reading, the Buffers field will always contain a byte to read. -// -// The OOB field contains protocol-specific control or miscellaneous -// ancillary data known as out-of-band data. -// It can be nil when not required. -// -// The Addr field specifies a destination address when writing. -// It can be nil when the underlying protocol of the endpoint uses -// connection-oriented communication. -// After a successful read, it may contain the source address on the -// received packet. -// -// The N field indicates the number of bytes read or written from/to -// Buffers. -// -// The NN field indicates the number of bytes read or written from/to -// OOB. -// -// The Flags field contains protocol-specific information on the -// received message. -type Message = socket.Message - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -// -// Unlike the ReadFrom method, it doesn't strip the IPv4 header -// followed by option headers from the received IPv4 datagram when the -// underlying transport is net.IPConn. Each Buffers field of Message -// must be large enough to accommodate an IPv4 header and option -// headers. -func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - if compatFreeBSD32 && ms[0].NN > 0 { - adjustFreeBSD32(&ms[0]) - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -func (c *packetHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - if compatFreeBSD32 && ms[0].NN > 0 { - adjustFreeBSD32(&ms[0]) - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *packetHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - return n, err - } -} diff --git a/vendor/golang.org/x/net/ipv4/control.go b/vendor/golang.org/x/net/ipv4/control.go deleted file mode 100644 index a2b02ca..0000000 --- a/vendor/golang.org/x/net/ipv4/control.go +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "fmt" - "net" - "sync" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -type rawOpt struct { - sync.RWMutex - cflags ControlFlags -} - -func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } -func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } -func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } - -type ControlFlags uint - -const ( - FlagTTL ControlFlags = 1 << iota // pass the TTL on the received packet - FlagSrc // pass the source address on the received packet - FlagDst // pass the destination address on the received packet - FlagInterface // pass the interface index on the received packet -) - -// A ControlMessage represents per packet basis IP-level socket options. -type ControlMessage struct { - // Receiving socket options: SetControlMessage allows to - // receive the options from the protocol stack using ReadFrom - // method of PacketConn or RawConn. - // - // Specifying socket options: ControlMessage for WriteTo - // method of PacketConn or RawConn allows to send the options - // to the protocol stack. - // - TTL int // time-to-live, receiving only - Src net.IP // source address, specifying only - Dst net.IP // destination address, receiving only - IfIndex int // interface index, must be 1 <= value when specifying -} - -func (cm *ControlMessage) String() string { - if cm == nil { - return "" - } - return fmt.Sprintf("ttl=%d src=%v dst=%v ifindex=%d", cm.TTL, cm.Src, cm.Dst, cm.IfIndex) -} - -// Marshal returns the binary encoding of cm. -func (cm *ControlMessage) Marshal() []byte { - if cm == nil { - return nil - } - var m socket.ControlMessage - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To4() != nil || cm.IfIndex > 0) { - m = socket.NewControlMessage([]int{ctlOpts[ctlPacketInfo].length}) - } - if len(m) > 0 { - ctlOpts[ctlPacketInfo].marshal(m, cm) - } - return m -} - -// Parse parses b as a control message and stores the result in cm. -func (cm *ControlMessage) Parse(b []byte) error { - ms, err := socket.ControlMessage(b).Parse() - if err != nil { - return err - } - for _, m := range ms { - lvl, typ, l, err := m.ParseHeader() - if err != nil { - return err - } - if lvl != iana.ProtocolIP { - continue - } - switch { - case typ == ctlOpts[ctlTTL].name && l >= ctlOpts[ctlTTL].length: - ctlOpts[ctlTTL].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlDst].name && l >= ctlOpts[ctlDst].length: - ctlOpts[ctlDst].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlInterface].name && l >= ctlOpts[ctlInterface].length: - ctlOpts[ctlInterface].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: - ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) - } - } - return nil -} - -// NewControlMessage returns a new control message. -// -// The returned message is large enough for options specified by cf. -func NewControlMessage(cf ControlFlags) []byte { - opt := rawOpt{cflags: cf} - var l int - if opt.isset(FlagTTL) && ctlOpts[ctlTTL].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlTTL].length) - } - if ctlOpts[ctlPacketInfo].name > 0 { - if opt.isset(FlagSrc | FlagDst | FlagInterface) { - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - } else { - if opt.isset(FlagDst) && ctlOpts[ctlDst].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlDst].length) - } - if opt.isset(FlagInterface) && ctlOpts[ctlInterface].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlInterface].length) - } - } - var b []byte - if l > 0 { - b = make([]byte, l) - } - return b -} - -// Ancillary data socket options -const ( - ctlTTL = iota // header field - ctlSrc // header field - ctlDst // header field - ctlInterface // inbound or outbound interface - ctlPacketInfo // inbound or outbound packet path - ctlMax -) - -// A ctlOpt represents a binding for ancillary data socket option. -type ctlOpt struct { - name int // option name, must be equal or greater than 1 - length int // option length - marshal func([]byte, *ControlMessage) []byte - parse func(*ControlMessage, []byte) -} diff --git a/vendor/golang.org/x/net/ipv4/control_bsd.go b/vendor/golang.org/x/net/ipv4/control_bsd.go deleted file mode 100644 index 69c4f55..0000000 --- a/vendor/golang.org/x/net/ipv4/control_bsd.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd openbsd - -package ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalDst(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVDSTADDR, net.IPv4len) - return m.Next(net.IPv4len) -} - -func parseDst(cm *ControlMessage, b []byte) { - if len(cm.Dst) < net.IPv4len { - cm.Dst = make(net.IP, net.IPv4len) - } - copy(cm.Dst, b[:net.IPv4len]) -} - -func marshalInterface(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVIF, syscall.SizeofSockaddrDatalink) - return m.Next(syscall.SizeofSockaddrDatalink) -} - -func parseInterface(cm *ControlMessage, b []byte) { - var sadl syscall.SockaddrDatalink - copy((*[unsafe.Sizeof(sadl)]byte)(unsafe.Pointer(&sadl))[:], b) - cm.IfIndex = int(sadl.Index) -} diff --git a/vendor/golang.org/x/net/ipv4/control_pktinfo.go b/vendor/golang.org/x/net/ipv4/control_pktinfo.go deleted file mode 100644 index 425338f..0000000 --- a/vendor/golang.org/x/net/ipv4/control_pktinfo.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin linux solaris - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_PKTINFO, sizeofInetPktinfo) - if cm != nil { - pi := (*inetPktinfo)(unsafe.Pointer(&m.Data(sizeofInetPktinfo)[0])) - if ip := cm.Src.To4(); ip != nil { - copy(pi.Spec_dst[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInetPktinfo) -} - -func parsePacketInfo(cm *ControlMessage, b []byte) { - pi := (*inetPktinfo)(unsafe.Pointer(&b[0])) - cm.IfIndex = int(pi.Ifindex) - if len(cm.Dst) < net.IPv4len { - cm.Dst = make(net.IP, net.IPv4len) - } - copy(cm.Dst, pi.Addr[:]) -} diff --git a/vendor/golang.org/x/net/ipv4/control_stub.go b/vendor/golang.org/x/net/ipv4/control_stub.go deleted file mode 100644 index a0c049d..0000000 --- a/vendor/golang.org/x/net/ipv4/control_stub.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/control_unix.go b/vendor/golang.org/x/net/ipv4/control_unix.go deleted file mode 100644 index b27fa49..0000000 --- a/vendor/golang.org/x/net/ipv4/control_unix.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv4 - -import ( - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - opt.Lock() - defer opt.Unlock() - if so, ok := sockOpts[ssoReceiveTTL]; ok && cf&FlagTTL != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagTTL) - } else { - opt.clear(FlagTTL) - } - } - if so, ok := sockOpts[ssoPacketInfo]; ok { - if cf&(FlagSrc|FlagDst|FlagInterface) != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(cf & (FlagSrc | FlagDst | FlagInterface)) - } else { - opt.clear(cf & (FlagSrc | FlagDst | FlagInterface)) - } - } - } else { - if so, ok := sockOpts[ssoReceiveDst]; ok && cf&FlagDst != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagDst) - } else { - opt.clear(FlagDst) - } - } - if so, ok := sockOpts[ssoReceiveInterface]; ok && cf&FlagInterface != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagInterface) - } else { - opt.clear(FlagInterface) - } - } - } - return nil -} - -func marshalTTL(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIP, sysIP_RECVTTL, 1) - return m.Next(1) -} - -func parseTTL(cm *ControlMessage, b []byte) { - cm.TTL = int(*(*byte)(unsafe.Pointer(&b[:1][0]))) -} diff --git a/vendor/golang.org/x/net/ipv4/control_windows.go b/vendor/golang.org/x/net/ipv4/control_windows.go deleted file mode 100644 index 82c6306..0000000 --- a/vendor/golang.org/x/net/ipv4/control_windows.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/defs_aix.go b/vendor/golang.org/x/net/ipv4/defs_aix.go deleted file mode 100644 index 0f37211..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_aix.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - // IP_RECVIF is defined on AIX but doesn't work. - // IP_RECVINTERFACE must be used instead. - sysIP_RECVIF = C.IP_RECVINTERFACE - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_darwin.go b/vendor/golang.org/x/net/ipv4/defs_darwin.go deleted file mode 100644 index c8f2e05..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_darwin.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include - -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_STRIPHDR = C.IP_STRIPHDR - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_BOUND_IF = C.IP_BOUND_IF - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_RECVPKTINFO = C.IP_RECVPKTINFO - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_MULTICAST_IFINDEX = C.IP_MULTICAST_IFINDEX - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go b/vendor/golang.org/x/net/ipv4/defs_dragonfly.go deleted file mode 100644 index f30544e..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_dragonfly.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_freebsd.go b/vendor/golang.org/x/net/ipv4/defs_freebsd.go deleted file mode 100644 index 4dd57d8..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_freebsd.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include - -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_SENDSRCADDR = C.IP_SENDSRCADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_ONESBCAST = C.IP_ONESBCAST - sysIP_BINDANY = C.IP_BINDANY - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_MINTTL = C.IP_MINTTL - sysIP_DONTFRAG = C.IP_DONTFRAG - sysIP_RECVTOS = C.IP_RECVTOS - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_MULTICAST_VIF = C.IP_MULTICAST_VIF - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/defs_linux.go b/vendor/golang.org/x/net/ipv4/defs_linux.go deleted file mode 100644 index 7d05c1d..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_linux.go +++ /dev/null @@ -1,113 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include - -#include -#include -#include -#include -#include -*/ -import "C" - -const ( - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_ROUTER_ALERT = C.IP_ROUTER_ALERT - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_PKTOPTIONS = C.IP_PKTOPTIONS - sysIP_MTU_DISCOVER = C.IP_MTU_DISCOVER - sysIP_RECVERR = C.IP_RECVERR - sysIP_RECVTTL = C.IP_RECVTTL - sysIP_RECVTOS = C.IP_RECVTOS - sysIP_MTU = C.IP_MTU - sysIP_FREEBIND = C.IP_FREEBIND - sysIP_TRANSPARENT = C.IP_TRANSPARENT - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_ORIGDSTADDR = C.IP_ORIGDSTADDR - sysIP_RECVORIGDSTADDR = C.IP_RECVORIGDSTADDR - sysIP_MINTTL = C.IP_MINTTL - sysIP_NODEFRAG = C.IP_NODEFRAG - sysIP_UNICAST_IF = C.IP_UNICAST_IF - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_MSFILTER = C.IP_MSFILTER - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_MSFILTER = C.MCAST_MSFILTER - sysIP_MULTICAST_ALL = C.IP_MULTICAST_ALL - - //sysIP_PMTUDISC_DONT = C.IP_PMTUDISC_DONT - //sysIP_PMTUDISC_WANT = C.IP_PMTUDISC_WANT - //sysIP_PMTUDISC_DO = C.IP_PMTUDISC_DO - //sysIP_PMTUDISC_PROBE = C.IP_PMTUDISC_PROBE - //sysIP_PMTUDISC_INTERFACE = C.IP_PMTUDISC_INTERFACE - //sysIP_PMTUDISC_OMIT = C.IP_PMTUDISC_OMIT - - sysICMP_FILTER = C.ICMP_FILTER - - sysSO_EE_ORIGIN_NONE = C.SO_EE_ORIGIN_NONE - sysSO_EE_ORIGIN_LOCAL = C.SO_EE_ORIGIN_LOCAL - sysSO_EE_ORIGIN_ICMP = C.SO_EE_ORIGIN_ICMP - sysSO_EE_ORIGIN_ICMP6 = C.SO_EE_ORIGIN_ICMP6 - sysSO_EE_ORIGIN_TXSTATUS = C.SO_EE_ORIGIN_TXSTATUS - sysSO_EE_ORIGIN_TIMESTAMPING = C.SO_EE_ORIGIN_TIMESTAMPING - - sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - sizeofSockExtendedErr = C.sizeof_struct_sock_extended_err - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqn = C.sizeof_struct_ip_mreqn - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPFilter = C.sizeof_struct_icmp_filter -) - -type kernelSockaddrStorage C.struct___kernel_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type sockExtendedErr C.struct_sock_extended_err - -type ipMreq C.struct_ip_mreq - -type ipMreqn C.struct_ip_mreqn - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpFilter C.struct_icmp_filter diff --git a/vendor/golang.org/x/net/ipv4/defs_netbsd.go b/vendor/golang.org/x/net/ipv4/defs_netbsd.go deleted file mode 100644 index 8f8af1b..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_netbsd.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_openbsd.go b/vendor/golang.org/x/net/ipv4/defs_openbsd.go deleted file mode 100644 index 8f8af1b..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_openbsd.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - - sizeofIPMreq = C.sizeof_struct_ip_mreq -) - -type ipMreq C.struct_ip_mreq diff --git a/vendor/golang.org/x/net/ipv4/defs_solaris.go b/vendor/golang.org/x/net/ipv4/defs_solaris.go deleted file mode 100644 index aeb33e9..0000000 --- a/vendor/golang.org/x/net/ipv4/defs_solaris.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in_addr [4]byte /* in_addr */ - -package ipv4 - -/* -#include - -#include -*/ -import "C" - -const ( - sysIP_OPTIONS = C.IP_OPTIONS - sysIP_HDRINCL = C.IP_HDRINCL - sysIP_TOS = C.IP_TOS - sysIP_TTL = C.IP_TTL - sysIP_RECVOPTS = C.IP_RECVOPTS - sysIP_RECVRETOPTS = C.IP_RECVRETOPTS - sysIP_RECVDSTADDR = C.IP_RECVDSTADDR - sysIP_RETOPTS = C.IP_RETOPTS - sysIP_RECVIF = C.IP_RECVIF - sysIP_RECVSLLA = C.IP_RECVSLLA - sysIP_RECVTTL = C.IP_RECVTTL - - sysIP_MULTICAST_IF = C.IP_MULTICAST_IF - sysIP_MULTICAST_TTL = C.IP_MULTICAST_TTL - sysIP_MULTICAST_LOOP = C.IP_MULTICAST_LOOP - sysIP_ADD_MEMBERSHIP = C.IP_ADD_MEMBERSHIP - sysIP_DROP_MEMBERSHIP = C.IP_DROP_MEMBERSHIP - sysIP_BLOCK_SOURCE = C.IP_BLOCK_SOURCE - sysIP_UNBLOCK_SOURCE = C.IP_UNBLOCK_SOURCE - sysIP_ADD_SOURCE_MEMBERSHIP = C.IP_ADD_SOURCE_MEMBERSHIP - sysIP_DROP_SOURCE_MEMBERSHIP = C.IP_DROP_SOURCE_MEMBERSHIP - sysIP_NEXTHOP = C.IP_NEXTHOP - - sysIP_PKTINFO = C.IP_PKTINFO - sysIP_RECVPKTINFO = C.IP_RECVPKTINFO - sysIP_DONTFRAG = C.IP_DONTFRAG - - sysIP_BOUND_IF = C.IP_BOUND_IF - sysIP_UNSPEC_SRC = C.IP_UNSPEC_SRC - sysIP_BROADCAST_TTL = C.IP_BROADCAST_TTL - sysIP_DHCPINIT_IF = C.IP_DHCPINIT_IF - - sysIP_REUSEADDR = C.IP_REUSEADDR - sysIP_DONTROUTE = C.IP_DONTROUTE - sysIP_BROADCAST = C.IP_BROADCAST - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet = C.sizeof_struct_sockaddr_in - sizeofInetPktinfo = C.sizeof_struct_in_pktinfo - - sizeofIPMreq = C.sizeof_struct_ip_mreq - sizeofIPMreqSource = C.sizeof_struct_ip_mreq_source - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet C.struct_sockaddr_in - -type inetPktinfo C.struct_in_pktinfo - -type ipMreq C.struct_ip_mreq - -type ipMreqSource C.struct_ip_mreq_source - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv4/dgramopt.go b/vendor/golang.org/x/net/ipv4/dgramopt.go deleted file mode 100644 index c191c22..0000000 --- a/vendor/golang.org/x/net/ipv4/dgramopt.go +++ /dev/null @@ -1,264 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - - "golang.org/x/net/bpf" -) - -// MulticastTTL returns the time-to-live field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastTTL() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoMulticastTTL] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetMulticastTTL sets the time-to-live field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastTTL(ttl int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastTTL] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, ttl) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, errInvalidConn - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return nil, errNotImplemented - } - return so.getMulticastInterface(c.Conn) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return errNotImplemented - } - return so.setMulticastInterface(c.Conn, ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, errInvalidConn - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return false, errNotImplemented - } - on, err := so.GetInt(c.Conn) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoJoinGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoLeaveGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoJoinSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoLeaveSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoBlockSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoUnblockSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP4(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP4(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ICMPFilter returns an ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, errInvalidConn - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return nil, errNotImplemented - } - return so.getICMPFilter(c.Conn) -} - -// SetICMPFilter deploys the ICMP filter. -// Currently only Linux supports this. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return errNotImplemented - } - return so.setICMPFilter(c.Conn, f) -} - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoAttachFilter] - if !ok { - return errNotImplemented - } - return so.setBPF(c.Conn, filter) -} diff --git a/vendor/golang.org/x/net/ipv4/doc.go b/vendor/golang.org/x/net/ipv4/doc.go deleted file mode 100644 index 2458349..0000000 --- a/vendor/golang.org/x/net/ipv4/doc.go +++ /dev/null @@ -1,244 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ipv4 implements IP-level socket options for the Internet -// Protocol version 4. -// -// The package provides IP-level socket options that allow -// manipulation of IPv4 facilities. -// -// The IPv4 protocol and basic host requirements for IPv4 are defined -// in RFC 791 and RFC 1122. -// Host extensions for multicasting and socket interface extensions -// for multicast source filters are defined in RFC 1112 and RFC 3678. -// IGMPv1, IGMPv2 and IGMPv3 are defined in RFC 1112, RFC 2236 and RFC -// 3376. -// Source-specific multicast is defined in RFC 4607. -// -// -// Unicasting -// -// The options for unicasting are available for net.TCPConn, -// net.UDPConn and net.IPConn which are created as network connections -// that use the IPv4 transport. When a single TCP connection carrying -// a data flow of multiple packets needs to indicate the flow is -// important, Conn is used to set the type-of-service field on the -// IPv4 header for each packet. -// -// ln, err := net.Listen("tcp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer ln.Close() -// for { -// c, err := ln.Accept() -// if err != nil { -// // error handling -// } -// go func(c net.Conn) { -// defer c.Close() -// -// The outgoing packets will be labeled DiffServ assured forwarding -// class 1 low drop precedence, known as AF11 packets. -// -// if err := ipv4.NewConn(c).SetTOS(0x28); err != nil { -// // error handling -// } -// if _, err := c.Write(data); err != nil { -// // error handling -// } -// }(c) -// } -// -// -// Multicasting -// -// The options for multicasting are available for net.UDPConn and -// net.IPConn which are created as network connections that use the -// IPv4 transport. A few network facilities must be prepared before -// you begin multicasting, at a minimum joining network interfaces and -// multicast groups. -// -// en0, err := net.InterfaceByName("en0") -// if err != nil { -// // error handling -// } -// en1, err := net.InterfaceByIndex(911) -// if err != nil { -// // error handling -// } -// group := net.IPv4(224, 0, 0, 250) -// -// First, an application listens to an appropriate address with an -// appropriate service port. -// -// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// -// Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the -// service port for transport layer protocol does not matter with this -// operation as joining groups affects only network and link layer -// protocols, such as IPv4 and Ethernet. -// -// p := ipv4.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// -// The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application -// needs a destination address on an incoming packet, -// SetControlMessage of PacketConn is used to enable control message -// transmissions. -// -// if err := p.SetControlMessage(ipv4.FlagDst, true); err != nil { -// // error handling -// } -// -// The application could identify whether the received packets are -// of interest by using the control message that contains the -// destination address of the received packet. -// -// b := make([]byte, 1500) -// for { -// n, cm, src, err := p.ReadFrom(b) -// if err != nil { -// // error handling -// } -// if cm.Dst.IsMulticast() { -// if cm.Dst.Equal(group) { -// // joined group, do something -// } else { -// // unknown group, discard -// continue -// } -// } -// -// The application can also send both unicast and multicast packets. -// -// p.SetTOS(0x0) -// p.SetTTL(16) -// if _, err := p.WriteTo(data, nil, src); err != nil { -// // error handling -// } -// dst := &net.UDPAddr{IP: group, Port: 1024} -// for _, ifi := range []*net.Interface{en0, en1} { -// if err := p.SetMulticastInterface(ifi); err != nil { -// // error handling -// } -// p.SetMulticastTTL(2) -// if _, err := p.WriteTo(data, nil, dst); err != nil { -// // error handling -// } -// } -// } -// -// -// More multicasting -// -// An application that uses PacketConn or RawConn may join multiple -// multicast groups. For example, a UDP listener with port 1024 might -// join two different groups across over two different network -// interfaces by using: -// -// c, err := net.ListenPacket("udp4", "0.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// p := ipv4.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 249)}); err != nil { -// // error handling -// } -// -// It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will -// provide a socket that listens to a wildcard address with reusable -// UDP port when an appropriate multicast address prefix is passed to -// the net.ListenPacket or net.ListenUDP. -// -// c1, err := net.ListenPacket("udp4", "224.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c1.Close() -// c2, err := net.ListenPacket("udp4", "224.0.0.0:1024") -// if err != nil { -// // error handling -// } -// defer c2.Close() -// p1 := ipv4.NewPacketConn(c1) -// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// p2 := ipv4.NewPacketConn(c2) -// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// -// Also it is possible for the application to leave or rejoin a -// multicast group on the network interface. -// -// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 248)}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.IPv4(224, 0, 0, 250)}); err != nil { -// // error handling -// } -// -// -// Source-specific multicasting -// -// An application that uses PacketConn or RawConn on IGMPv3 supported -// platform is able to join source-specific multicast groups. -// The application may use JoinSourceSpecificGroup and -// LeaveSourceSpecificGroup for the operation known as "include" mode, -// -// ssmgroup := net.UDPAddr{IP: net.IPv4(232, 7, 8, 9)} -// ssmsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 1)} -// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// -// or JoinGroup, ExcludeSourceSpecificGroup, -// IncludeSourceSpecificGroup and LeaveGroup for the operation known -// as "exclude" mode. -// -// exclsource := net.UDPAddr{IP: net.IPv4(192, 168, 0, 254)} -// if err := p.JoinGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { -// // error handling -// } -// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// -// Note that it depends on each platform implementation what happens -// when an application which runs on IGMPv3 unsupported platform uses -// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. -// In general the platform tries to fall back to conversations using -// IGMPv1 or IGMPv2 and starts to listen to multicast traffic. -// In the fallback case, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup may return an error. -package ipv4 // import "golang.org/x/net/ipv4" - -// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv4/endpoint.go b/vendor/golang.org/x/net/ipv4/endpoint.go deleted file mode 100644 index 4a6d7a8..0000000 --- a/vendor/golang.org/x/net/ipv4/endpoint.go +++ /dev/null @@ -1,186 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "time" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the JoinSourceSpecificGroup, -// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup methods of PacketConn and RawConn are -// not implemented. - -// A Conn represents a network endpoint that uses the IPv4 transport. -// It is used to control basic IP-level socket options such as TOS and -// TTL. -type Conn struct { - genericOpt -} - -type genericOpt struct { - *socket.Conn -} - -func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } - -// NewConn returns a new Conn. -func NewConn(c net.Conn) *Conn { - cc, _ := socket.NewConn(c) - return &Conn{ - genericOpt: genericOpt{Conn: cc}, - } -} - -// A PacketConn represents a packet network endpoint that uses the -// IPv4 transport. It is used to control several IP-level socket -// options including multicasting. It also provides datagram based -// network I/O methods specific to the IPv4 and higher layer protocols -// such as UDP. -type PacketConn struct { - genericOpt - dgramOpt - payloadHandler -} - -type dgramOpt struct { - *socket.Conn -} - -func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } - -// SetControlMessage sets the per packet IP-level socket options. -func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *PacketConn) SetDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.PacketConn.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *PacketConn) SetReadDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.PacketConn.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *PacketConn) SetWriteDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.PacketConn.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *PacketConn) Close() error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.PacketConn.Close() -} - -// NewPacketConn returns a new PacketConn using c as its underlying -// transport. -func NewPacketConn(c net.PacketConn) *PacketConn { - cc, _ := socket.NewConn(c.(net.Conn)) - p := &PacketConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, - } - return p -} - -// A RawConn represents a packet network endpoint that uses the IPv4 -// transport. It is used to control several IP-level socket options -// including IPv4 header manipulation. It also provides datagram -// based network I/O methods specific to the IPv4 and higher layer -// protocols that handle IPv4 datagram directly such as OSPF, GRE. -type RawConn struct { - genericOpt - dgramOpt - packetHandler -} - -// SetControlMessage sets the per packet IP-level socket options. -func (c *RawConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.packetHandler.ok() { - return errInvalidConn - } - return setControlMessage(c.dgramOpt.Conn, &c.packetHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *RawConn) SetDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return errInvalidConn - } - return c.packetHandler.IPConn.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *RawConn) SetReadDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return errInvalidConn - } - return c.packetHandler.IPConn.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *RawConn) SetWriteDeadline(t time.Time) error { - if !c.packetHandler.ok() { - return errInvalidConn - } - return c.packetHandler.IPConn.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *RawConn) Close() error { - if !c.packetHandler.ok() { - return errInvalidConn - } - return c.packetHandler.IPConn.Close() -} - -// NewRawConn returns a new RawConn using c as its underlying -// transport. -func NewRawConn(c net.PacketConn) (*RawConn, error) { - cc, err := socket.NewConn(c.(net.Conn)) - if err != nil { - return nil, err - } - r := &RawConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - packetHandler: packetHandler{IPConn: c.(*net.IPConn), Conn: cc}, - } - so, ok := sockOpts[ssoHeaderPrepend] - if !ok { - return nil, errNotImplemented - } - if err := so.SetInt(r.dgramOpt.Conn, boolint(true)); err != nil { - return nil, err - } - return r, nil -} diff --git a/vendor/golang.org/x/net/ipv4/gen.go b/vendor/golang.org/x/net/ipv4/gen.go deleted file mode 100644 index 1bb1737..0000000 --- a/vendor/golang.org/x/net/ipv4/gen.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates system adaptation constants and types, -// internet protocol constants and tables by reading template files -// and IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "os/exec" - "runtime" - "strconv" - "strings" -) - -func main() { - if err := genzsys(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := geniana(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func genzsys() error { - defs := "defs_" + runtime.GOOS + ".go" - f, err := os.Open(defs) - if err != nil { - if os.IsNotExist(err) { - return nil - } - return err - } - f.Close() - cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) - b, err := cmd.Output() - if err != nil { - return err - } - b, err = format.Source(b) - if err != nil { - return err - } - zsys := "zsys_" + runtime.GOOS + ".go" - switch runtime.GOOS { - case "freebsd", "linux": - zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" - } - if err := ioutil.WriteFile(zsys, b, 0644); err != nil { - return err - } - return nil -} - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml", - parseICMPv4Parameters, - }, -} - -func geniana() error { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") - fmt.Fprintf(&bb, "package ipv4\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) - } - if err := r.parse(&bb, resp.Body); err != nil { - return err - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - return err - } - if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { - return err - } - return nil -} - -func parseICMPv4Parameters(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var icp icmpv4Parameters - if err := dec.Decode(&icp); err != nil { - return err - } - prs := icp.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Descr == "" { - continue - } - fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Descr, pr.Value) - fmt.Fprintf(w, "// %s\n", pr.OrigDescr) - } - fmt.Fprintf(w, ")\n\n") - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") - for _, pr := range prs { - if pr.Descr == "" { - continue - } - fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigDescr)) - } - fmt.Fprintf(w, "}\n") - return nil -} - -type icmpv4Parameters struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Registries []struct { - Title string `xml:"title"` - Records []struct { - Value string `xml:"value"` - Descr string `xml:"description"` - } `xml:"record"` - } `xml:"registry"` -} - -type canonICMPv4ParamRecord struct { - OrigDescr string - Descr string - Value int -} - -func (icp *icmpv4Parameters) escape() []canonICMPv4ParamRecord { - id := -1 - for i, r := range icp.Registries { - if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { - id = i - break - } - } - if id < 0 { - return nil - } - prs := make([]canonICMPv4ParamRecord, len(icp.Registries[id].Records)) - sr := strings.NewReplacer( - "Messages", "", - "Message", "", - "ICMP", "", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range icp.Registries[id].Records { - if strings.Contains(pr.Descr, "Reserved") || - strings.Contains(pr.Descr, "Unassigned") || - strings.Contains(pr.Descr, "Deprecated") || - strings.Contains(pr.Descr, "Experiment") || - strings.Contains(pr.Descr, "experiment") { - continue - } - ss := strings.Split(pr.Descr, "\n") - if len(ss) > 1 { - prs[i].Descr = strings.Join(ss, " ") - } else { - prs[i].Descr = ss[0] - } - s := strings.TrimSpace(prs[i].Descr) - prs[i].OrigDescr = s - prs[i].Descr = sr.Replace(s) - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} diff --git a/vendor/golang.org/x/net/ipv4/genericopt.go b/vendor/golang.org/x/net/ipv4/genericopt.go deleted file mode 100644 index 51c1237..0000000 --- a/vendor/golang.org/x/net/ipv4/genericopt.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -// TOS returns the type-of-service field value for outgoing packets. -func (c *genericOpt) TOS() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoTOS] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetTOS sets the type-of-service field value for future outgoing -// packets. -func (c *genericOpt) SetTOS(tos int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoTOS] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, tos) -} - -// TTL returns the time-to-live field value for outgoing packets. -func (c *genericOpt) TTL() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoTTL] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetTTL sets the time-to-live field value for future outgoing -// packets. -func (c *genericOpt) SetTTL(ttl int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoTTL] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, ttl) -} diff --git a/vendor/golang.org/x/net/ipv4/header.go b/vendor/golang.org/x/net/ipv4/header.go deleted file mode 100644 index 701bd4b..0000000 --- a/vendor/golang.org/x/net/ipv4/header.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "encoding/binary" - "fmt" - "net" - "runtime" - - "golang.org/x/net/internal/socket" -) - -const ( - Version = 4 // protocol version - HeaderLen = 20 // header length without extension headers - maxHeaderLen = 60 // sensible default, revisit if later RFCs define new usage of version and header length fields -) - -type HeaderFlags int - -const ( - MoreFragments HeaderFlags = 1 << iota // more fragments flag - DontFragment // don't fragment flag -) - -// A Header represents an IPv4 header. -type Header struct { - Version int // protocol version - Len int // header length - TOS int // type-of-service - TotalLen int // packet total length - ID int // identification - Flags HeaderFlags // flags - FragOff int // fragment offset - TTL int // time-to-live - Protocol int // next protocol - Checksum int // checksum - Src net.IP // source address - Dst net.IP // destination address - Options []byte // options, extension headers -} - -func (h *Header) String() string { - if h == nil { - return "" - } - return fmt.Sprintf("ver=%d hdrlen=%d tos=%#x totallen=%d id=%#x flags=%#x fragoff=%#x ttl=%d proto=%d cksum=%#x src=%v dst=%v", h.Version, h.Len, h.TOS, h.TotalLen, h.ID, h.Flags, h.FragOff, h.TTL, h.Protocol, h.Checksum, h.Src, h.Dst) -} - -// Marshal returns the binary encoding of h. -// -// The returned slice is in the format used by a raw IP socket on the -// local system. -// This may differ from the wire format, depending on the system. -func (h *Header) Marshal() ([]byte, error) { - if h == nil { - return nil, errNilHeader - } - if h.Len < HeaderLen { - return nil, errHeaderTooShort - } - hdrlen := HeaderLen + len(h.Options) - b := make([]byte, hdrlen) - b[0] = byte(Version<<4 | (hdrlen >> 2 & 0x0f)) - b[1] = byte(h.TOS) - flagsAndFragOff := (h.FragOff & 0x1fff) | int(h.Flags<<13) - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - case "freebsd": - if freebsdVersion < 1100000 { - socket.NativeEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - socket.NativeEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } else { - binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } - default: - binary.BigEndian.PutUint16(b[2:4], uint16(h.TotalLen)) - binary.BigEndian.PutUint16(b[6:8], uint16(flagsAndFragOff)) - } - binary.BigEndian.PutUint16(b[4:6], uint16(h.ID)) - b[8] = byte(h.TTL) - b[9] = byte(h.Protocol) - binary.BigEndian.PutUint16(b[10:12], uint16(h.Checksum)) - if ip := h.Src.To4(); ip != nil { - copy(b[12:16], ip[:net.IPv4len]) - } - if ip := h.Dst.To4(); ip != nil { - copy(b[16:20], ip[:net.IPv4len]) - } else { - return nil, errMissingAddress - } - if len(h.Options) > 0 { - copy(b[HeaderLen:], h.Options) - } - return b, nil -} - -// Parse parses b as an IPv4 header and stores the result in h. -// -// The provided b must be in the format used by a raw IP socket on the -// local system. -// This may differ from the wire format, depending on the system. -func (h *Header) Parse(b []byte) error { - if h == nil || b == nil { - return errNilHeader - } - if len(b) < HeaderLen { - return errHeaderTooShort - } - hdrlen := int(b[0]&0x0f) << 2 - if len(b) < hdrlen { - return errExtHeaderTooShort - } - h.Version = int(b[0] >> 4) - h.Len = hdrlen - h.TOS = int(b[1]) - h.ID = int(binary.BigEndian.Uint16(b[4:6])) - h.TTL = int(b[8]) - h.Protocol = int(b[9]) - h.Checksum = int(binary.BigEndian.Uint16(b[10:12])) - h.Src = net.IPv4(b[12], b[13], b[14], b[15]) - h.Dst = net.IPv4(b[16], b[17], b[18], b[19]) - switch runtime.GOOS { - case "darwin", "dragonfly", "netbsd": - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) + hdrlen - h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) - case "freebsd": - if freebsdVersion < 1100000 { - h.TotalLen = int(socket.NativeEndian.Uint16(b[2:4])) - if freebsdVersion < 1000000 { - h.TotalLen += hdrlen - } - h.FragOff = int(socket.NativeEndian.Uint16(b[6:8])) - } else { - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) - } - default: - h.TotalLen = int(binary.BigEndian.Uint16(b[2:4])) - h.FragOff = int(binary.BigEndian.Uint16(b[6:8])) - } - h.Flags = HeaderFlags(h.FragOff&0xe000) >> 13 - h.FragOff = h.FragOff & 0x1fff - optlen := hdrlen - HeaderLen - if optlen > 0 && len(b) >= hdrlen { - if cap(h.Options) < optlen { - h.Options = make([]byte, optlen) - } else { - h.Options = h.Options[:optlen] - } - copy(h.Options, b[HeaderLen:hdrlen]) - } - return nil -} - -// ParseHeader parses b as an IPv4 header. -// -// The provided b must be in the format used by a raw IP socket on the -// local system. -// This may differ from the wire format, depending on the system. -func ParseHeader(b []byte) (*Header, error) { - h := new(Header) - if err := h.Parse(b); err != nil { - return nil, err - } - return h, nil -} diff --git a/vendor/golang.org/x/net/ipv4/helper.go b/vendor/golang.org/x/net/ipv4/helper.go deleted file mode 100644 index b494a2c..0000000 --- a/vendor/golang.org/x/net/ipv4/helper.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "errors" - "net" - "runtime" - - "golang.org/x/net/internal/socket" -) - -var ( - errInvalidConn = errors.New("invalid connection") - errMissingAddress = errors.New("missing address") - errMissingHeader = errors.New("missing header") - errNilHeader = errors.New("nil header") - errHeaderTooShort = errors.New("header too short") - errExtHeaderTooShort = errors.New("extension header too short") - errInvalidConnType = errors.New("invalid conn type") - errNoSuchInterface = errors.New("no such interface") - errNoSuchMulticastInterface = errors.New("no such multicast interface") - errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) - - // See https://www.freebsd.org/doc/en/books/porters-handbook/versions.html. - freebsdVersion uint32 - compatFreeBSD32 bool // 386 emulation on amd64 -) - -// See golang.org/issue/30899. -func adjustFreeBSD32(m *socket.Message) { - // FreeBSD 12.0-RELEASE is affected by https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236737 - if 1200086 <= freebsdVersion && freebsdVersion < 1201000 { - l := (m.NN + 4 - 1) &^ (4 - 1) - if m.NN < l && l <= len(m.OOB) { - m.NN = l - } - } -} - -func boolint(b bool) int { - if b { - return 1 - } - return 0 -} - -func netAddrToIP4(a net.Addr) net.IP { - switch v := a.(type) { - case *net.UDPAddr: - if ip := v.IP.To4(); ip != nil { - return ip - } - case *net.IPAddr: - if ip := v.IP.To4(); ip != nil { - return ip - } - } - return nil -} - -func opAddr(a net.Addr) net.Addr { - switch a.(type) { - case *net.TCPAddr: - if a == nil { - return nil - } - case *net.UDPAddr: - if a == nil { - return nil - } - case *net.IPAddr: - if a == nil { - return nil - } - } - return a -} diff --git a/vendor/golang.org/x/net/ipv4/iana.go b/vendor/golang.org/x/net/ipv4/iana.go deleted file mode 100644 index 4375b40..0000000 --- a/vendor/golang.org/x/net/ipv4/iana.go +++ /dev/null @@ -1,38 +0,0 @@ -// go generate gen.go -// Code generated by the command above; DO NOT EDIT. - -package ipv4 - -// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 -const ( - ICMPTypeEchoReply ICMPType = 0 // Echo Reply - ICMPTypeDestinationUnreachable ICMPType = 3 // Destination Unreachable - ICMPTypeRedirect ICMPType = 5 // Redirect - ICMPTypeEcho ICMPType = 8 // Echo - ICMPTypeRouterAdvertisement ICMPType = 9 // Router Advertisement - ICMPTypeRouterSolicitation ICMPType = 10 // Router Solicitation - ICMPTypeTimeExceeded ICMPType = 11 // Time Exceeded - ICMPTypeParameterProblem ICMPType = 12 // Parameter Problem - ICMPTypeTimestamp ICMPType = 13 // Timestamp - ICMPTypeTimestampReply ICMPType = 14 // Timestamp Reply - ICMPTypePhoturis ICMPType = 40 // Photuris - ICMPTypeExtendedEchoRequest ICMPType = 42 // Extended Echo Request - ICMPTypeExtendedEchoReply ICMPType = 43 // Extended Echo Reply -) - -// Internet Control Message Protocol (ICMP) Parameters, Updated: 2018-02-26 -var icmpTypes = map[ICMPType]string{ - 0: "echo reply", - 3: "destination unreachable", - 5: "redirect", - 8: "echo", - 9: "router advertisement", - 10: "router solicitation", - 11: "time exceeded", - 12: "parameter problem", - 13: "timestamp", - 14: "timestamp reply", - 40: "photuris", - 42: "extended echo request", - 43: "extended echo reply", -} diff --git a/vendor/golang.org/x/net/ipv4/icmp.go b/vendor/golang.org/x/net/ipv4/icmp.go deleted file mode 100644 index 9902bb3..0000000 --- a/vendor/golang.org/x/net/ipv4/icmp.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import "golang.org/x/net/internal/iana" - -// An ICMPType represents a type of ICMP message. -type ICMPType int - -func (typ ICMPType) String() string { - s, ok := icmpTypes[typ] - if !ok { - return "" - } - return s -} - -// Protocol returns the ICMPv4 protocol number. -func (typ ICMPType) Protocol() int { - return iana.ProtocolICMP -} - -// An ICMPFilter represents an ICMP message filter for incoming -// packets. The filter belongs to a packet delivery path on a host and -// it cannot interact with forwarding packets or tunnel-outer packets. -// -// Note: RFC 8200 defines a reasonable role model and it works not -// only for IPv6 but IPv4. A node means a device that implements IP. -// A router means a node that forwards IP packets not explicitly -// addressed to itself, and a host means a node that is not a router. -type ICMPFilter struct { - icmpFilter -} - -// Accept accepts incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Accept(typ ICMPType) { - f.accept(typ) -} - -// Block blocks incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Block(typ ICMPType) { - f.block(typ) -} - -// SetAll sets the filter action to the filter. -func (f *ICMPFilter) SetAll(block bool) { - f.setAll(block) -} - -// WillBlock reports whether the ICMP type will be blocked. -func (f *ICMPFilter) WillBlock(typ ICMPType) bool { - return f.willBlock(typ) -} diff --git a/vendor/golang.org/x/net/ipv4/icmp_linux.go b/vendor/golang.org/x/net/ipv4/icmp_linux.go deleted file mode 100644 index 6e1c5c8..0000000 --- a/vendor/golang.org/x/net/ipv4/icmp_linux.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -func (f *icmpFilter) accept(typ ICMPType) { - f.Data &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpFilter) block(typ ICMPType) { - f.Data |= 1 << (uint32(typ) & 31) -} - -func (f *icmpFilter) setAll(block bool) { - if block { - f.Data = 1<<32 - 1 - } else { - f.Data = 0 - } -} - -func (f *icmpFilter) willBlock(typ ICMPType) bool { - return f.Data&(1<<(uint32(typ)&31)) != 0 -} diff --git a/vendor/golang.org/x/net/ipv4/icmp_stub.go b/vendor/golang.org/x/net/ipv4/icmp_stub.go deleted file mode 100644 index 21bb29a..0000000 --- a/vendor/golang.org/x/net/ipv4/icmp_stub.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !linux - -package ipv4 - -const sizeofICMPFilter = 0x0 - -type icmpFilter struct { -} - -func (f *icmpFilter) accept(typ ICMPType) { -} - -func (f *icmpFilter) block(typ ICMPType) { -} - -func (f *icmpFilter) setAll(block bool) { -} - -func (f *icmpFilter) willBlock(typ ICMPType) bool { - return false -} diff --git a/vendor/golang.org/x/net/ipv4/packet.go b/vendor/golang.org/x/net/ipv4/packet.go deleted file mode 100644 index 7d784e0..0000000 --- a/vendor/golang.org/x/net/ipv4/packet.go +++ /dev/null @@ -1,117 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadFrom and WriteTo methods of RawConn -// are not implemented. - -// A packetHandler represents the IPv4 datagram handler. -type packetHandler struct { - *net.IPConn - *socket.Conn - rawOpt -} - -func (c *packetHandler) ok() bool { return c != nil && c.IPConn != nil && c.Conn != nil } - -// ReadFrom reads an IPv4 datagram from the endpoint c, copying the -// datagram into b. It returns the received datagram as the IPv4 -// header h, the payload p and the control message cm. -func (c *packetHandler) ReadFrom(b []byte) (h *Header, p []byte, cm *ControlMessage, err error) { - if !c.ok() { - return nil, nil, nil, errInvalidConn - } - c.rawOpt.RLock() - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - if err := c.RecvMsg(&m, 0); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - var hs []byte - if hs, p, err = slicePacket(b[:m.N]); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - if h, err = ParseHeader(hs); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - if m.NN > 0 { - if compatFreeBSD32 { - adjustFreeBSD32(&m) - } - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return nil, nil, nil, &net.OpError{Op: "read", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Err: err} - } - } - if src, ok := m.Addr.(*net.IPAddr); ok && cm != nil { - cm.Src = src.IP - } - return -} - -func slicePacket(b []byte) (h, p []byte, err error) { - if len(b) < HeaderLen { - return nil, nil, errHeaderTooShort - } - hdrlen := int(b[0]&0x0f) << 2 - return b[:hdrlen], b[hdrlen:], nil -} - -// WriteTo writes an IPv4 datagram through the endpoint c, copying the -// datagram from the IPv4 header h and the payload p. The control -// message cm allows the datagram path and the outgoing interface to be -// specified. Currently only Darwin and Linux support this. The cm -// may be nil if control of the outgoing datagram is not required. -// -// The IPv4 header h must contain appropriate fields that include: -// -// Version = -// Len = -// TOS = -// TotalLen = -// ID = platform sets an appropriate value if ID is zero -// FragOff = -// TTL = -// Protocol = -// Checksum = platform sets an appropriate value if Checksum is zero -// Src = platform sets an appropriate value if Src is nil -// Dst = -// Options = optional -func (c *packetHandler) WriteTo(h *Header, p []byte, cm *ControlMessage) error { - if !c.ok() { - return errInvalidConn - } - m := socket.Message{ - OOB: cm.Marshal(), - } - wh, err := h.Marshal() - if err != nil { - return err - } - m.Buffers = [][]byte{wh, p} - dst := new(net.IPAddr) - if cm != nil { - if ip := cm.Dst.To4(); ip != nil { - dst.IP = ip - } - } - if dst.IP == nil { - dst.IP = h.Dst - } - m.Addr = dst - if err := c.SendMsg(&m, 0); err != nil { - return &net.OpError{Op: "write", Net: c.IPConn.LocalAddr().Network(), Source: c.IPConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv4/payload.go b/vendor/golang.org/x/net/ipv4/payload.go deleted file mode 100644 index f95f811..0000000 --- a/vendor/golang.org/x/net/ipv4/payload.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo -// methods of PacketConn is not implemented. - -// A payloadHandler represents the IPv4 datagram payload handler. -type payloadHandler struct { - net.PacketConn - *socket.Conn - rawOpt -} - -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv4/payload_cmsg.go b/vendor/golang.org/x/net/ipv4/payload_cmsg.go deleted file mode 100644 index e761466..0000000 --- a/vendor/golang.org/x/net/ipv4/payload_cmsg.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, errInvalidConn - } - c.rawOpt.RLock() - m := socket.Message{ - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - switch c.PacketConn.(type) { - case *net.UDPConn: - m.Buffers = [][]byte{b} - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - case *net.IPConn: - h := make([]byte, HeaderLen) - m.Buffers = [][]byte{h, b} - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - hdrlen := int(h[0]&0x0f) << 2 - if hdrlen > len(h) { - d := hdrlen - len(h) - copy(b, b[d:]) - m.N -= d - } else { - m.N -= hdrlen - } - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} - } - if m.NN > 0 { - if compatFreeBSD32 { - adjustFreeBSD32(&m) - } - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - cm.Src = netAddrToIP4(m.Addr) - } - return m.N, cm, m.Addr, nil -} - -// WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if -// control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, errInvalidConn - } - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: cm.Marshal(), - Addr: dst, - } - err = c.SendMsg(&m, 0) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return m.N, err -} diff --git a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go b/vendor/golang.org/x/net/ipv4/payload_nocmsg.go deleted file mode 100644 index 1116256..0000000 --- a/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package ipv4 - -import "net" - -// ReadFrom reads a payload of the received IPv4 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, errInvalidConn - } - if n, src, err = c.PacketConn.ReadFrom(b); err != nil { - return 0, nil, nil, err - } - return -} - -// WriteTo writes a payload of the IPv4 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the datagram path and the outgoing interface to be specified. -// Currently only Darwin and Linux support this. The cm may be nil if -// control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, errInvalidConn - } - if dst == nil { - return 0, errMissingAddress - } - return c.PacketConn.WriteTo(b, dst) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt.go b/vendor/golang.org/x/net/ipv4/sockopt.go deleted file mode 100644 index 22e90c0..0000000 --- a/vendor/golang.org/x/net/ipv4/sockopt.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import "golang.org/x/net/internal/socket" - -// Sticky socket options -const ( - ssoTOS = iota // header field for unicast packet - ssoTTL // header field for unicast packet - ssoMulticastTTL // header field for multicast packet - ssoMulticastInterface // outbound interface for multicast packet - ssoMulticastLoopback // loopback for multicast packet - ssoReceiveTTL // header field on received packet - ssoReceiveDst // header field on received packet - ssoReceiveInterface // inbound interface on received packet - ssoPacketInfo // incbound or outbound packet path - ssoHeaderPrepend // ipv4 header prepend - ssoStripHeader // strip ipv4 header - ssoICMPFilter // icmp filter - ssoJoinGroup // any-source multicast - ssoLeaveGroup // any-source multicast - ssoJoinSourceGroup // source-specific multicast - ssoLeaveSourceGroup // source-specific multicast - ssoBlockSourceGroup // any-source or source-specific multicast - ssoUnblockSourceGroup // any-source or source-specific multicast - ssoAttachFilter // attach BPF for filtering inbound traffic -) - -// Sticky socket option value types -const ( - ssoTypeIPMreq = iota + 1 - ssoTypeIPMreqn - ssoTypeGroupReq - ssoTypeGroupSourceReq -) - -// A sockOpt represents a binding for sticky socket option. -type sockOpt struct { - socket.Option - typ int // hint for option value type; optional -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_posix.go b/vendor/golang.org/x/net/ipv4/sockopt_posix.go deleted file mode 100644 index dea6451..0000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_posix.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - switch so.typ { - case ssoTypeIPMreqn: - return so.getIPMreqn(c) - default: - return so.getMulticastIf(c) - } -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - switch so.typ { - case ssoTypeIPMreqn: - return so.setIPMreqn(c, ifi, nil) - default: - return so.setMulticastIf(c, ifi) - } -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, err - } - if n != sizeofICMPFilter { - return nil, errNotImplemented - } - return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - b := (*[sizeofICMPFilter]byte)(unsafe.Pointer(f))[:sizeofICMPFilter] - return so.Set(c, b) -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - switch so.typ { - case ssoTypeIPMreq: - return so.setIPMreq(c, ifi, grp) - case ssoTypeIPMreqn: - return so.setIPMreqn(c, ifi, grp) - case ssoTypeGroupReq: - return so.setGroupReq(c, ifi, grp) - default: - return errNotImplemented - } -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return so.setGroupSourceReq(c, ifi, grp, src) -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return so.setAttachFilter(c, f) -} diff --git a/vendor/golang.org/x/net/ipv4/sockopt_stub.go b/vendor/golang.org/x/net/ipv4/sockopt_stub.go deleted file mode 100644 index 37d4806..0000000 --- a/vendor/golang.org/x/net/ipv4/sockopt_stub.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import ( - "net" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - return errNotImplemented -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - return errNotImplemented -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/sys_aix.go b/vendor/golang.org/x/net/ipv4/sys_aix.go deleted file mode 100644 index 3d1201e..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_aix.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Added for go1.11 compatibility -// +build aix - -package ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq.go b/vendor/golang.org/x/net/ipv4/sys_asmreq.go deleted file mode 100644 index c5eaafe..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreq.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd openbsd solaris windows - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - mreq := ipMreq{Multiaddr: [4]byte{grp[0], grp[1], grp[2], grp[3]}} - if err := setIPMreqInterface(&mreq, ifi); err != nil { - return err - } - b := (*[sizeofIPMreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPMreq] - return so.Set(c, b) -} - -func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { - var b [4]byte - if _, err := so.Get(c, b[:]); err != nil { - return nil, err - } - ifi, err := netIP4ToInterface(net.IPv4(b[0], b[1], b[2], b[3])) - if err != nil { - return nil, err - } - return ifi, nil -} - -func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { - ip, err := netInterfaceToIP4(ifi) - if err != nil { - return err - } - var b [4]byte - copy(b[:], ip) - return so.Set(c, b[:]) -} - -func setIPMreqInterface(mreq *ipMreq, ifi *net.Interface) error { - if ifi == nil { - return nil - } - ifat, err := ifi.Addrs() - if err != nil { - return err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - copy(mreq.Interface[:], ip) - return nil - } - } - } - return errNoSuchInterface -} - -func netIP4ToInterface(ip net.IP) (*net.Interface, error) { - ift, err := net.Interfaces() - if err != nil { - return nil, err - } - for _, ifi := range ift { - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - case *net.IPNet: - if ip.Equal(ifa.IP) { - return &ifi, nil - } - } - } - } - return nil, errNoSuchInterface -} - -func netInterfaceToIP4(ifi *net.Interface) (net.IP, error) { - if ifi == nil { - return net.IPv4zero.To4(), nil - } - ifat, err := ifi.Addrs() - if err != nil { - return nil, err - } - for _, ifa := range ifat { - switch ifa := ifa.(type) { - case *net.IPAddr: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - case *net.IPNet: - if ip := ifa.IP.To4(); ip != nil { - return ip, nil - } - } - } - return nil, errNoSuchInterface -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go deleted file mode 100644 index 6dc339c..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) getMulticastIf(c *socket.Conn) (*net.Interface, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setMulticastIf(c *socket.Conn, ifi *net.Interface) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn.go deleted file mode 100644 index 1f24f69..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin freebsd linux - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { - b := make([]byte, so.Len) - if _, err := so.Get(c, b); err != nil { - return nil, err - } - mreqn := (*ipMreqn)(unsafe.Pointer(&b[0])) - if mreqn.Ifindex == 0 { - return nil, nil - } - ifi, err := net.InterfaceByIndex(int(mreqn.Ifindex)) - if err != nil { - return nil, err - } - return ifi, nil -} - -func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var mreqn ipMreqn - if ifi != nil { - mreqn.Ifindex = int32(ifi.Index) - } - if grp != nil { - mreqn.Multiaddr = [4]byte{grp[0], grp[1], grp[2], grp[3]} - } - b := (*[sizeofIPMreqn]byte)(unsafe.Pointer(&mreqn))[:sizeofIPMreqn] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go b/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go deleted file mode 100644 index 48ef556..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!freebsd,!linux - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getIPMreqn(c *socket.Conn) (*net.Interface, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setIPMreqn(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf.go b/vendor/golang.org/x/net/ipv4/sys_bpf.go deleted file mode 100644 index 5c03dce..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_bpf.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux - -package ipv4 - -import ( - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" - "golang.org/x/sys/unix" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - prog := unix.SockFprog{ - Len: uint16(len(f)), - Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), - } - b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go deleted file mode 100644 index 5c98642..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !linux - -package ipv4 - -import ( - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/sys_bsd.go b/vendor/golang.org/x/net/ipv4/sys_bsd.go deleted file mode 100644 index 58256dd..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_bsd.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build netbsd openbsd - -package ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_darwin.go b/vendor/golang.org/x/net/ipv4/sys_darwin.go deleted file mode 100644 index ac213c7..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_darwin.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoStripHeader: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_STRIPHDR, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go b/vendor/golang.org/x/net/ipv4/sys_dragonfly.go deleted file mode 100644 index 859764f..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) diff --git a/vendor/golang.org/x/net/ipv4/sys_freebsd.go b/vendor/golang.org/x/net/ipv4/sys_freebsd.go deleted file mode 100644 index 482873d..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_freebsd.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "runtime" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 1, marshalTTL, parseTTL}, - ctlDst: {sysIP_RECVDSTADDR, net.IPv4len, marshalDst, parseDst}, - ctlInterface: {sysIP_RECVIF, syscall.SizeofSockaddrDatalink, marshalInterface, parseInterface}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoReceiveDst: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVDSTADDR, Len: 4}}, - ssoReceiveInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVIF, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func init() { - freebsdVersion, _ = syscall.SysctlUint32("kern.osreldate") - if freebsdVersion >= 1000000 { - sockOpts[ssoMulticastInterface] = &sockOpt{Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn} - } - if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { - archs, _ := syscall.Sysctl("kern.supported_archs") - for _, s := range strings.Fields(archs) { - if s == "amd64" { - compatFreeBSD32 = true - break - } - } - } -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) - sa.Len = sizeofSockaddrInet - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_linux.go b/vendor/golang.org/x/net/ipv4/sys_linux.go deleted file mode 100644 index cf755c7..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_linux.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" - "golang.org/x/sys/unix" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_TTL, 1, marshalTTL, parseTTL}, - ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: sizeofIPMreqn}, typ: ssoTypeIPMreqn}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_PKTINFO, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysICMP_FILTER, Len: sizeofICMPFilter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gr.Group)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(&gsr.Group)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(&gsr.Source)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_solaris.go b/vendor/golang.org/x/net/ipv4/sys_solaris.go deleted file mode 100644 index 832fef1..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_solaris.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTTL: {sysIP_RECVTTL, 4, marshalTTL, parseTTL}, - ctlPacketInfo: {sysIP_PKTINFO, sizeofInetPktinfo, marshalPacketInfo, parsePacketInfo}, - } - - sockOpts = map[int]sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 1}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 1}}, - ssoReceiveTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVTTL, Len: 4}}, - ssoPacketInfo: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_RECVPKTINFO, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], grp) - sa = (*sockaddrInet)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) - sa.Family = syscall.AF_INET - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq.go deleted file mode 100644 index eeced7f..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin freebsd linux solaris - -package ipv4 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var b []byte - if compatFreeBSD32 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] - } - return so.Set(c, b) -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var b []byte - if compatFreeBSD32 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] - } - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go deleted file mode 100644 index c092167..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !darwin,!freebsd,!linux,!solaris - -package ipv4 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv4/sys_stub.go b/vendor/golang.org/x/net/ipv4/sys_stub.go deleted file mode 100644 index b9c85b3..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_stub.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv4 - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{} -) diff --git a/vendor/golang.org/x/net/ipv4/sys_windows.go b/vendor/golang.org/x/net/ipv4/sys_windows.go deleted file mode 100644 index b0913d5..0000000 --- a/vendor/golang.org/x/net/ipv4/sys_windows.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv4 - -import ( - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -const ( - // See ws2tcpip.h. - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_DONTFRAGMENT = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0xf - sysIP_DROP_SOURCE_MEMBERSHIP = 0x10 - sysIP_PKTINFO = 0x13 - - sizeofInetPktinfo = 0x8 - sizeofIPMreq = 0x8 - sizeofIPMreqSource = 0xc -) - -type inetPktinfo struct { - Addr [4]byte - Ifindex int32 -} - -type ipMreq struct { - Multiaddr [4]byte - Interface [4]byte -} - -type ipMreqSource struct { - Multiaddr [4]byte - Sourceaddr [4]byte - Interface [4]byte -} - -// See http://msdn.microsoft.com/en-us/library/windows/desktop/ms738586(v=vs.85).aspx -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{ - ssoTOS: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TOS, Len: 4}}, - ssoTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_TTL, Len: 4}}, - ssoMulticastTTL: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_TTL, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_IF, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_MULTICAST_LOOP, Len: 4}}, - ssoHeaderPrepend: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_HDRINCL, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_ADD_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIP, Name: sysIP_DROP_MEMBERSHIP, Len: sizeofIPMreq}, typ: ssoTypeIPMreq}, - } -) - -func (pi *inetPktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go deleted file mode 100644 index c741d5c..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go +++ /dev/null @@ -1,33 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_aix.go - -// Added for go1.11 compatibility -// +build aix - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x20 - sysIP_RECVTTL = 0x22 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_darwin.go b/vendor/golang.org/x/net/ipv4/zsys_darwin.go deleted file mode 100644 index e05a251..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_darwin.go +++ /dev/null @@ -1,99 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_STRIPHDR = 0x17 - sysIP_RECVTTL = 0x18 - sysIP_BOUND_IF = 0x19 - sysIP_PKTINFO = 0x1a - sysIP_RECVPKTINFO = 0x1a - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_MULTICAST_IFINDEX = 0x42 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type inetPktinfo struct { - Ifindex uint32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [128]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [128]byte - Pad_cgo_1 [128]byte -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go deleted file mode 100644 index 6d65e9f..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +++ /dev/null @@ -1,31 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_dragonfly.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_RECVTTL = 0x41 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go deleted file mode 100644 index 136e2b8..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +++ /dev/null @@ -1,93 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go deleted file mode 100644 index 4f730f1..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +++ /dev/null @@ -1,95 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go deleted file mode 100644 index 4f730f1..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +++ /dev/null @@ -1,95 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go deleted file mode 100644 index ecebf32..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go +++ /dev/null @@ -1,93 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_SENDSRCADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_ONESBCAST = 0x17 - sysIP_BINDANY = 0x18 - sysIP_RECVTTL = 0x41 - sysIP_MINTTL = 0x42 - sysIP_DONTFRAG = 0x43 - sysIP_RECVTOS = 0x44 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - sysIP_MULTICAST_VIF = 0xe - sysIP_ADD_SOURCE_MEMBERSHIP = 0x46 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x47 - sysIP_BLOCK_SOURCE = 0x48 - sysIP_UNBLOCK_SOURCE = 0x49 - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]uint8 - X__ss_align int64 - X__ss_pad2 [112]uint8 -} - -type sockaddrInet struct { - Len uint8 - Family uint8 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]uint8 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go b/vendor/golang.org/x/net/ipv4/zsys_linux_386.go deleted file mode 100644 index 1c7fdfa..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go deleted file mode 100644 index 1c7fdfa..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go deleted file mode 100644 index 1c7fdfa..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go deleted file mode 100644 index 1c7fdfa..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go deleted file mode 100644 index 3c5ea54..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +++ /dev/null @@ -1,130 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]uint8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go deleted file mode 100644 index e626134..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go +++ /dev/null @@ -1,134 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -// +build riscv64 - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go deleted file mode 100644 index a04e785..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +++ /dev/null @@ -1,132 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv4 - -const ( - sysIP_TOS = 0x1 - sysIP_TTL = 0x2 - sysIP_HDRINCL = 0x3 - sysIP_OPTIONS = 0x4 - sysIP_ROUTER_ALERT = 0x5 - sysIP_RECVOPTS = 0x6 - sysIP_RETOPTS = 0x7 - sysIP_PKTINFO = 0x8 - sysIP_PKTOPTIONS = 0x9 - sysIP_MTU_DISCOVER = 0xa - sysIP_RECVERR = 0xb - sysIP_RECVTTL = 0xc - sysIP_RECVTOS = 0xd - sysIP_MTU = 0xe - sysIP_FREEBIND = 0xf - sysIP_TRANSPARENT = 0x13 - sysIP_RECVRETOPTS = 0x7 - sysIP_ORIGDSTADDR = 0x14 - sysIP_RECVORIGDSTADDR = 0x14 - sysIP_MINTTL = 0x15 - sysIP_NODEFRAG = 0x16 - sysIP_UNICAST_IF = 0x32 - - sysIP_MULTICAST_IF = 0x20 - sysIP_MULTICAST_TTL = 0x21 - sysIP_MULTICAST_LOOP = 0x22 - sysIP_ADD_MEMBERSHIP = 0x23 - sysIP_DROP_MEMBERSHIP = 0x24 - sysIP_UNBLOCK_SOURCE = 0x25 - sysIP_BLOCK_SOURCE = 0x26 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x27 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x28 - sysIP_MSFILTER = 0x29 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIP_MULTICAST_ALL = 0x31 - - sysICMP_FILTER = 0x1 - - sysSO_EE_ORIGIN_NONE = 0x0 - sysSO_EE_ORIGIN_LOCAL = 0x1 - sysSO_EE_ORIGIN_ICMP = 0x2 - sysSO_EE_ORIGIN_ICMP6 = 0x3 - sysSO_EE_ORIGIN_TXSTATUS = 0x4 - sysSO_EE_ORIGIN_TIMESTAMPING = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - sizeofSockExtendedErr = 0x10 - - sizeofIPMreq = 0x8 - sizeofIPMreqn = 0xc - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPFilter = 0x4 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - X__pad [8]uint8 -} - -type inetPktinfo struct { - Ifindex int32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type sockExtendedErr struct { - Errno uint32 - Origin uint8 - Type uint8 - Code uint8 - Pad uint8 - Info uint32 - Data uint32 -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqn struct { - Multiaddr [4]byte /* in_addr */ - Address [4]byte /* in_addr */ - Ifindex int32 -} - -type ipMreqSource struct { - Multiaddr uint32 - Interface uint32 - Sourceaddr uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpFilter struct { - Data uint32 -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go b/vendor/golang.org/x/net/ipv4/zsys_netbsd.go deleted file mode 100644 index 8cfc648..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x14 - sysIP_RECVTTL = 0x17 - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go b/vendor/golang.org/x/net/ipv4/zsys_openbsd.go deleted file mode 100644 index 37629cb..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x1e - sysIP_RECVTTL = 0x1f - - sysIP_MULTICAST_IF = 0x9 - sysIP_MULTICAST_TTL = 0xa - sysIP_MULTICAST_LOOP = 0xb - sysIP_ADD_MEMBERSHIP = 0xc - sysIP_DROP_MEMBERSHIP = 0xd - - sizeofIPMreq = 0x8 -) - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} diff --git a/vendor/golang.org/x/net/ipv4/zsys_solaris.go b/vendor/golang.org/x/net/ipv4/zsys_solaris.go deleted file mode 100644 index cb80a30..0000000 --- a/vendor/golang.org/x/net/ipv4/zsys_solaris.go +++ /dev/null @@ -1,100 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_solaris.go - -package ipv4 - -const ( - sysIP_OPTIONS = 0x1 - sysIP_HDRINCL = 0x2 - sysIP_TOS = 0x3 - sysIP_TTL = 0x4 - sysIP_RECVOPTS = 0x5 - sysIP_RECVRETOPTS = 0x6 - sysIP_RECVDSTADDR = 0x7 - sysIP_RETOPTS = 0x8 - sysIP_RECVIF = 0x9 - sysIP_RECVSLLA = 0xa - sysIP_RECVTTL = 0xb - - sysIP_MULTICAST_IF = 0x10 - sysIP_MULTICAST_TTL = 0x11 - sysIP_MULTICAST_LOOP = 0x12 - sysIP_ADD_MEMBERSHIP = 0x13 - sysIP_DROP_MEMBERSHIP = 0x14 - sysIP_BLOCK_SOURCE = 0x15 - sysIP_UNBLOCK_SOURCE = 0x16 - sysIP_ADD_SOURCE_MEMBERSHIP = 0x17 - sysIP_DROP_SOURCE_MEMBERSHIP = 0x18 - sysIP_NEXTHOP = 0x19 - - sysIP_PKTINFO = 0x1a - sysIP_RECVPKTINFO = 0x1a - sysIP_DONTFRAG = 0x1b - - sysIP_BOUND_IF = 0x41 - sysIP_UNSPEC_SRC = 0x42 - sysIP_BROADCAST_TTL = 0x43 - sysIP_DHCPINIT_IF = 0x45 - - sysIP_REUSEADDR = 0x104 - sysIP_DONTROUTE = 0x105 - sysIP_BROADCAST = 0x106 - - sysMCAST_JOIN_GROUP = 0x29 - sysMCAST_LEAVE_GROUP = 0x2a - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_JOIN_SOURCE_GROUP = 0x2d - sysMCAST_LEAVE_SOURCE_GROUP = 0x2e - - sizeofSockaddrStorage = 0x100 - sizeofSockaddrInet = 0x10 - sizeofInetPktinfo = 0xc - - sizeofIPMreq = 0x8 - sizeofIPMreqSource = 0xc - sizeofGroupReq = 0x104 - sizeofGroupSourceReq = 0x204 -) - -type sockaddrStorage struct { - Family uint16 - X_ss_pad1 [6]int8 - X_ss_align float64 - X_ss_pad2 [240]int8 -} - -type sockaddrInet struct { - Family uint16 - Port uint16 - Addr [4]byte /* in_addr */ - Zero [8]int8 -} - -type inetPktinfo struct { - Ifindex uint32 - Spec_dst [4]byte /* in_addr */ - Addr [4]byte /* in_addr */ -} - -type ipMreq struct { - Multiaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type ipMreqSource struct { - Multiaddr [4]byte /* in_addr */ - Sourceaddr [4]byte /* in_addr */ - Interface [4]byte /* in_addr */ -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [256]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [256]byte - Pad_cgo_1 [256]byte -} diff --git a/vendor/golang.org/x/net/ipv6/batch.go b/vendor/golang.org/x/net/ipv6/batch.go deleted file mode 100644 index 2ccb984..0000000 --- a/vendor/golang.org/x/net/ipv6/batch.go +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "runtime" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ReadBatch and WriteBatch methods of -// PacketConn are not implemented. - -// A Message represents an IO message. -// -// type Message struct { -// Buffers [][]byte -// OOB []byte -// Addr net.Addr -// N int -// NN int -// Flags int -// } -// -// The Buffers fields represents a list of contiguous buffers, which -// can be used for vectored IO, for example, putting a header and a -// payload in each slice. -// When writing, the Buffers field must contain at least one byte to -// write. -// When reading, the Buffers field will always contain a byte to read. -// -// The OOB field contains protocol-specific control or miscellaneous -// ancillary data known as out-of-band data. -// It can be nil when not required. -// -// The Addr field specifies a destination address when writing. -// It can be nil when the underlying protocol of the endpoint uses -// connection-oriented communication. -// After a successful read, it may contain the source address on the -// received packet. -// -// The N field indicates the number of bytes read or written from/to -// Buffers. -// -// The NN field indicates the number of bytes read or written from/to -// OOB. -// -// The Flags field contains protocol-specific information on the -// received message. -type Message = socket.Message - -// ReadBatch reads a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_PEEK. -// -// On a successful read it returns the number of messages received, up -// to len(ms). -// -// On Linux, a batch read will be optimized. -// On other platforms, this method will read only a single message. -func (c *payloadHandler) ReadBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.RecvMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.RecvMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} - -// WriteBatch writes a batch of messages. -// -// The provided flags is a set of platform-dependent flags, such as -// syscall.MSG_DONTROUTE. -// -// It returns the number of messages written on a successful write. -// -// On Linux, a batch write will be optimized. -// On other platforms, this method will write only a single message. -func (c *payloadHandler) WriteBatch(ms []Message, flags int) (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - switch runtime.GOOS { - case "linux": - n, err := c.SendMsgs([]socket.Message(ms), flags) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - default: - n := 1 - err := c.SendMsg(&ms[0], flags) - if err != nil { - n = 0 - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - return n, err - } -} diff --git a/vendor/golang.org/x/net/ipv6/control.go b/vendor/golang.org/x/net/ipv6/control.go deleted file mode 100644 index 2da6444..0000000 --- a/vendor/golang.org/x/net/ipv6/control.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "fmt" - "net" - "sync" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -// Note that RFC 3542 obsoletes RFC 2292 but OS X Snow Leopard and the -// former still support RFC 2292 only. Please be aware that almost -// all protocol implementations prohibit using a combination of RFC -// 2292 and RFC 3542 for some practical reasons. - -type rawOpt struct { - sync.RWMutex - cflags ControlFlags -} - -func (c *rawOpt) set(f ControlFlags) { c.cflags |= f } -func (c *rawOpt) clear(f ControlFlags) { c.cflags &^= f } -func (c *rawOpt) isset(f ControlFlags) bool { return c.cflags&f != 0 } - -// A ControlFlags represents per packet basis IP-level socket option -// control flags. -type ControlFlags uint - -const ( - FlagTrafficClass ControlFlags = 1 << iota // pass the traffic class on the received packet - FlagHopLimit // pass the hop limit on the received packet - FlagSrc // pass the source address on the received packet - FlagDst // pass the destination address on the received packet - FlagInterface // pass the interface index on the received packet - FlagPathMTU // pass the path MTU on the received packet path -) - -const flagPacketInfo = FlagDst | FlagInterface - -// A ControlMessage represents per packet basis IP-level socket -// options. -type ControlMessage struct { - // Receiving socket options: SetControlMessage allows to - // receive the options from the protocol stack using ReadFrom - // method of PacketConn. - // - // Specifying socket options: ControlMessage for WriteTo - // method of PacketConn allows to send the options to the - // protocol stack. - // - TrafficClass int // traffic class, must be 1 <= value <= 255 when specifying - HopLimit int // hop limit, must be 1 <= value <= 255 when specifying - Src net.IP // source address, specifying only - Dst net.IP // destination address, receiving only - IfIndex int // interface index, must be 1 <= value when specifying - NextHop net.IP // next hop address, specifying only - MTU int // path MTU, receiving only -} - -func (cm *ControlMessage) String() string { - if cm == nil { - return "" - } - return fmt.Sprintf("tclass=%#x hoplim=%d src=%v dst=%v ifindex=%d nexthop=%v mtu=%d", cm.TrafficClass, cm.HopLimit, cm.Src, cm.Dst, cm.IfIndex, cm.NextHop, cm.MTU) -} - -// Marshal returns the binary encoding of cm. -func (cm *ControlMessage) Marshal() []byte { - if cm == nil { - return nil - } - var l int - tclass := false - if ctlOpts[ctlTrafficClass].name > 0 && cm.TrafficClass > 0 { - tclass = true - l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) - } - hoplimit := false - if ctlOpts[ctlHopLimit].name > 0 && cm.HopLimit > 0 { - hoplimit = true - l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) - } - pktinfo := false - if ctlOpts[ctlPacketInfo].name > 0 && (cm.Src.To16() != nil && cm.Src.To4() == nil || cm.IfIndex > 0) { - pktinfo = true - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - nexthop := false - if ctlOpts[ctlNextHop].name > 0 && cm.NextHop.To16() != nil && cm.NextHop.To4() == nil { - nexthop = true - l += socket.ControlMessageSpace(ctlOpts[ctlNextHop].length) - } - var b []byte - if l > 0 { - b = make([]byte, l) - bb := b - if tclass { - bb = ctlOpts[ctlTrafficClass].marshal(bb, cm) - } - if hoplimit { - bb = ctlOpts[ctlHopLimit].marshal(bb, cm) - } - if pktinfo { - bb = ctlOpts[ctlPacketInfo].marshal(bb, cm) - } - if nexthop { - bb = ctlOpts[ctlNextHop].marshal(bb, cm) - } - } - return b -} - -// Parse parses b as a control message and stores the result in cm. -func (cm *ControlMessage) Parse(b []byte) error { - ms, err := socket.ControlMessage(b).Parse() - if err != nil { - return err - } - for _, m := range ms { - lvl, typ, l, err := m.ParseHeader() - if err != nil { - return err - } - if lvl != iana.ProtocolIPv6 { - continue - } - switch { - case typ == ctlOpts[ctlTrafficClass].name && l >= ctlOpts[ctlTrafficClass].length: - ctlOpts[ctlTrafficClass].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlHopLimit].name && l >= ctlOpts[ctlHopLimit].length: - ctlOpts[ctlHopLimit].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPacketInfo].name && l >= ctlOpts[ctlPacketInfo].length: - ctlOpts[ctlPacketInfo].parse(cm, m.Data(l)) - case typ == ctlOpts[ctlPathMTU].name && l >= ctlOpts[ctlPathMTU].length: - ctlOpts[ctlPathMTU].parse(cm, m.Data(l)) - } - } - return nil -} - -// NewControlMessage returns a new control message. -// -// The returned message is large enough for options specified by cf. -func NewControlMessage(cf ControlFlags) []byte { - opt := rawOpt{cflags: cf} - var l int - if opt.isset(FlagTrafficClass) && ctlOpts[ctlTrafficClass].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlTrafficClass].length) - } - if opt.isset(FlagHopLimit) && ctlOpts[ctlHopLimit].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlHopLimit].length) - } - if opt.isset(flagPacketInfo) && ctlOpts[ctlPacketInfo].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlPacketInfo].length) - } - if opt.isset(FlagPathMTU) && ctlOpts[ctlPathMTU].name > 0 { - l += socket.ControlMessageSpace(ctlOpts[ctlPathMTU].length) - } - var b []byte - if l > 0 { - b = make([]byte, l) - } - return b -} - -// Ancillary data socket options -const ( - ctlTrafficClass = iota // header field - ctlHopLimit // header field - ctlPacketInfo // inbound or outbound packet path - ctlNextHop // nexthop - ctlPathMTU // path mtu - ctlMax -) - -// A ctlOpt represents a binding for ancillary data socket option. -type ctlOpt struct { - name int // option name, must be equal or greater than 1 - length int // option length - marshal func([]byte, *ControlMessage) []byte - parse func(*ControlMessage, []byte) -} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go deleted file mode 100644 index 9fd9eb1..0000000 --- a/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build darwin - -package ipv6 - -import ( - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshal2292HopLimit(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292HOPLIMIT, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) - } - return m.Next(4) -} - -func marshal2292PacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292PKTINFO, sizeofInet6Pktinfo) - if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) - if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { - copy(pi.Addr[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInet6Pktinfo) -} - -func marshal2292NextHop(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_2292NEXTHOP, sizeofSockaddrInet6) - if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) - sa.setSockaddr(cm.NextHop, cm.IfIndex) - } - return m.Next(sizeofSockaddrInet6) -} diff --git a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go b/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go deleted file mode 100644 index 8c221b5..0000000 --- a/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -func marshalTrafficClass(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_TCLASS, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.TrafficClass)) - } - return m.Next(4) -} - -func parseTrafficClass(cm *ControlMessage, b []byte) { - cm.TrafficClass = int(socket.NativeEndian.Uint32(b[:4])) -} - -func marshalHopLimit(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_HOPLIMIT, 4) - if cm != nil { - socket.NativeEndian.PutUint32(m.Data(4), uint32(cm.HopLimit)) - } - return m.Next(4) -} - -func parseHopLimit(cm *ControlMessage, b []byte) { - cm.HopLimit = int(socket.NativeEndian.Uint32(b[:4])) -} - -func marshalPacketInfo(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PKTINFO, sizeofInet6Pktinfo) - if cm != nil { - pi := (*inet6Pktinfo)(unsafe.Pointer(&m.Data(sizeofInet6Pktinfo)[0])) - if ip := cm.Src.To16(); ip != nil && ip.To4() == nil { - copy(pi.Addr[:], ip) - } - if cm.IfIndex > 0 { - pi.setIfindex(cm.IfIndex) - } - } - return m.Next(sizeofInet6Pktinfo) -} - -func parsePacketInfo(cm *ControlMessage, b []byte) { - pi := (*inet6Pktinfo)(unsafe.Pointer(&b[0])) - if len(cm.Dst) < net.IPv6len { - cm.Dst = make(net.IP, net.IPv6len) - } - copy(cm.Dst, pi.Addr[:]) - cm.IfIndex = int(pi.Ifindex) -} - -func marshalNextHop(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_NEXTHOP, sizeofSockaddrInet6) - if cm != nil { - sa := (*sockaddrInet6)(unsafe.Pointer(&m.Data(sizeofSockaddrInet6)[0])) - sa.setSockaddr(cm.NextHop, cm.IfIndex) - } - return m.Next(sizeofSockaddrInet6) -} - -func parseNextHop(cm *ControlMessage, b []byte) { -} - -func marshalPathMTU(b []byte, cm *ControlMessage) []byte { - m := socket.ControlMessage(b) - m.MarshalHeader(iana.ProtocolIPv6, sysIPV6_PATHMTU, sizeofIPv6Mtuinfo) - return m.Next(sizeofIPv6Mtuinfo) -} - -func parsePathMTU(cm *ControlMessage, b []byte) { - mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) - if len(cm.Dst) < net.IPv6len { - cm.Dst = make(net.IP, net.IPv6len) - } - copy(cm.Dst, mi.Addr.Addr[:]) - cm.IfIndex = int(mi.Addr.Scope_id) - cm.MTU = int(mi.Mtu) -} diff --git a/vendor/golang.org/x/net/ipv6/control_stub.go b/vendor/golang.org/x/net/ipv6/control_stub.go deleted file mode 100644 index 1d773cb..0000000 --- a/vendor/golang.org/x/net/ipv6/control_stub.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/control_unix.go b/vendor/golang.org/x/net/ipv6/control_unix.go deleted file mode 100644 index 0971a00..0000000 --- a/vendor/golang.org/x/net/ipv6/control_unix.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv6 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - opt.Lock() - defer opt.Unlock() - if so, ok := sockOpts[ssoReceiveTrafficClass]; ok && cf&FlagTrafficClass != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagTrafficClass) - } else { - opt.clear(FlagTrafficClass) - } - } - if so, ok := sockOpts[ssoReceiveHopLimit]; ok && cf&FlagHopLimit != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagHopLimit) - } else { - opt.clear(FlagHopLimit) - } - } - if so, ok := sockOpts[ssoReceivePacketInfo]; ok && cf&flagPacketInfo != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(cf & flagPacketInfo) - } else { - opt.clear(cf & flagPacketInfo) - } - } - if so, ok := sockOpts[ssoReceivePathMTU]; ok && cf&FlagPathMTU != 0 { - if err := so.SetInt(c, boolint(on)); err != nil { - return err - } - if on { - opt.set(FlagPathMTU) - } else { - opt.clear(FlagPathMTU) - } - } - return nil -} diff --git a/vendor/golang.org/x/net/ipv6/control_windows.go b/vendor/golang.org/x/net/ipv6/control_windows.go deleted file mode 100644 index 8882d81..0000000 --- a/vendor/golang.org/x/net/ipv6/control_windows.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import "golang.org/x/net/internal/socket" - -func setControlMessage(c *socket.Conn, opt *rawOpt, cf ControlFlags, on bool) error { - // TODO(mikio): implement this - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/defs_aix.go b/vendor/golang.org/x/net/ipv6/defs_aix.go deleted file mode 100644 index ea396a3..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_aix.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_darwin.go b/vendor/golang.org/x/net/ipv6/defs_darwin.go deleted file mode 100644 index 55ddc11..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_darwin.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#define __APPLE_USE_RFC_3542 -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO - sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT - sysIPV6_2292NEXTHOP = C.IPV6_2292NEXTHOP - sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS - sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS - sysIPV6_2292RTHDR = C.IPV6_2292RTHDR - - sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_TCLASS = C.IPV6_TCLASS - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_MSFILTER = C.IPV6_MSFILTER - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sysIPV6_BOUND_IF = C.IPV6_BOUND_IF - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req diff --git a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go b/vendor/golang.org/x/net/ipv6/defs_dragonfly.go deleted file mode 100644 index 27a1d1d..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_dragonfly.go +++ /dev/null @@ -1,82 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_freebsd.go b/vendor/golang.org/x/net/ipv6/defs_freebsd.go deleted file mode 100644 index 53e6253..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_freebsd.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PREFER_TEMPADDR = C.IPV6_PREFER_TEMPADDR - - sysIPV6_BINDANY = C.IPV6_BINDANY - - sysIPV6_MSFILTER = C.IPV6_MSFILTER - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_linux.go b/vendor/golang.org/x/net/ipv6/defs_linux.go deleted file mode 100644 index 3b697be..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_linux.go +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include -#include -#include -#include -#include -*/ -import "C" - -const ( - sysIPV6_ADDRFORM = C.IPV6_ADDRFORM - sysIPV6_2292PKTINFO = C.IPV6_2292PKTINFO - sysIPV6_2292HOPOPTS = C.IPV6_2292HOPOPTS - sysIPV6_2292DSTOPTS = C.IPV6_2292DSTOPTS - sysIPV6_2292RTHDR = C.IPV6_2292RTHDR - sysIPV6_2292PKTOPTIONS = C.IPV6_2292PKTOPTIONS - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_2292HOPLIMIT = C.IPV6_2292HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_FLOWINFO = C.IPV6_FLOWINFO - - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_ADD_MEMBERSHIP = C.IPV6_ADD_MEMBERSHIP - sysIPV6_DROP_MEMBERSHIP = C.IPV6_DROP_MEMBERSHIP - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_MSFILTER = C.MCAST_MSFILTER - sysIPV6_ROUTER_ALERT = C.IPV6_ROUTER_ALERT - sysIPV6_MTU_DISCOVER = C.IPV6_MTU_DISCOVER - sysIPV6_MTU = C.IPV6_MTU - sysIPV6_RECVERR = C.IPV6_RECVERR - sysIPV6_V6ONLY = C.IPV6_V6ONLY - sysIPV6_JOIN_ANYCAST = C.IPV6_JOIN_ANYCAST - sysIPV6_LEAVE_ANYCAST = C.IPV6_LEAVE_ANYCAST - - //sysIPV6_PMTUDISC_DONT = C.IPV6_PMTUDISC_DONT - //sysIPV6_PMTUDISC_WANT = C.IPV6_PMTUDISC_WANT - //sysIPV6_PMTUDISC_DO = C.IPV6_PMTUDISC_DO - //sysIPV6_PMTUDISC_PROBE = C.IPV6_PMTUDISC_PROBE - //sysIPV6_PMTUDISC_INTERFACE = C.IPV6_PMTUDISC_INTERFACE - //sysIPV6_PMTUDISC_OMIT = C.IPV6_PMTUDISC_OMIT - - sysIPV6_FLOWLABEL_MGR = C.IPV6_FLOWLABEL_MGR - sysIPV6_FLOWINFO_SEND = C.IPV6_FLOWINFO_SEND - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - sysIPV6_XFRM_POLICY = C.IPV6_XFRM_POLICY - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RTHDR = C.IPV6_RTHDR - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_TCLASS = C.IPV6_TCLASS - - sysIPV6_ADDR_PREFERENCES = C.IPV6_ADDR_PREFERENCES - - sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP - sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = C.IPV6_PREFER_SRC_PUBTMP_DEFAULT - sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA - sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME - sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA - sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA - - sysIPV6_MINHOPCOUNT = C.IPV6_MINHOPCOUNT - - sysIPV6_ORIGDSTADDR = C.IPV6_ORIGDSTADDR - sysIPV6_RECVORIGDSTADDR = C.IPV6_RECVORIGDSTADDR - sysIPV6_TRANSPARENT = C.IPV6_TRANSPARENT - sysIPV6_UNICAST_IF = C.IPV6_UNICAST_IF - - sysICMPV6_FILTER = C.ICMPV6_FILTER - - sysICMPV6_FILTER_BLOCK = C.ICMPV6_FILTER_BLOCK - sysICMPV6_FILTER_PASS = C.ICMPV6_FILTER_PASS - sysICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS - sysICMPV6_FILTER_PASSONLY = C.ICMPV6_FILTER_PASSONLY - - sizeofKernelSockaddrStorage = C.sizeof_struct___kernel_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - sizeofIPv6FlowlabelReq = C.sizeof_struct_in6_flowlabel_req - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type kernelSockaddrStorage C.struct___kernel_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6FlowlabelReq C.struct_in6_flowlabel_req - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_netbsd.go b/vendor/golang.org/x/net/ipv6/defs_netbsd.go deleted file mode 100644 index be9ceb9..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_netbsd.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_IPSEC_POLICY = C.IPV6_IPSEC_POLICY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_openbsd.go b/vendor/golang.org/x/net/ipv6/defs_openbsd.go deleted file mode 100644 index 177ddf8..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_openbsd.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - sysIPV6_PORTRANGE = C.IPV6_PORTRANGE - sysICMP6_FILTER = C.ICMP6_FILTER - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - - sysIPV6_PATHMTU = C.IPV6_PATHMTU - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - sysIPV6_RTHDR = C.IPV6_RTHDR - - sysIPV6_AUTH_LEVEL = C.IPV6_AUTH_LEVEL - sysIPV6_ESP_TRANS_LEVEL = C.IPV6_ESP_TRANS_LEVEL - sysIPV6_ESP_NETWORK_LEVEL = C.IPV6_ESP_NETWORK_LEVEL - sysIPSEC6_OUTSA = C.IPSEC6_OUTSA - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - - sysIPV6_AUTOFLOWLABEL = C.IPV6_AUTOFLOWLABEL - sysIPV6_IPCOMP_LEVEL = C.IPV6_IPCOMP_LEVEL - - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - sysIPV6_PIPEX = C.IPV6_PIPEX - - sysIPV6_RTABLE = C.IPV6_RTABLE - - sysIPV6_PORTRANGE_DEFAULT = C.IPV6_PORTRANGE_DEFAULT - sysIPV6_PORTRANGE_HIGH = C.IPV6_PORTRANGE_HIGH - sysIPV6_PORTRANGE_LOW = C.IPV6_PORTRANGE_LOW - - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/defs_solaris.go b/vendor/golang.org/x/net/ipv6/defs_solaris.go deleted file mode 100644 index 0f8ce2b..0000000 --- a/vendor/golang.org/x/net/ipv6/defs_solaris.go +++ /dev/null @@ -1,114 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -// +godefs map struct_in6_addr [16]byte /* in6_addr */ - -package ipv6 - -/* -#include - -#include -#include -*/ -import "C" - -const ( - sysIPV6_UNICAST_HOPS = C.IPV6_UNICAST_HOPS - sysIPV6_MULTICAST_IF = C.IPV6_MULTICAST_IF - sysIPV6_MULTICAST_HOPS = C.IPV6_MULTICAST_HOPS - sysIPV6_MULTICAST_LOOP = C.IPV6_MULTICAST_LOOP - sysIPV6_JOIN_GROUP = C.IPV6_JOIN_GROUP - sysIPV6_LEAVE_GROUP = C.IPV6_LEAVE_GROUP - - sysIPV6_PKTINFO = C.IPV6_PKTINFO - - sysIPV6_HOPLIMIT = C.IPV6_HOPLIMIT - sysIPV6_NEXTHOP = C.IPV6_NEXTHOP - sysIPV6_HOPOPTS = C.IPV6_HOPOPTS - sysIPV6_DSTOPTS = C.IPV6_DSTOPTS - - sysIPV6_RTHDR = C.IPV6_RTHDR - sysIPV6_RTHDRDSTOPTS = C.IPV6_RTHDRDSTOPTS - - sysIPV6_RECVPKTINFO = C.IPV6_RECVPKTINFO - sysIPV6_RECVHOPLIMIT = C.IPV6_RECVHOPLIMIT - sysIPV6_RECVHOPOPTS = C.IPV6_RECVHOPOPTS - - sysIPV6_RECVRTHDR = C.IPV6_RECVRTHDR - - sysIPV6_RECVRTHDRDSTOPTS = C.IPV6_RECVRTHDRDSTOPTS - - sysIPV6_CHECKSUM = C.IPV6_CHECKSUM - sysIPV6_RECVTCLASS = C.IPV6_RECVTCLASS - sysIPV6_USE_MIN_MTU = C.IPV6_USE_MIN_MTU - sysIPV6_DONTFRAG = C.IPV6_DONTFRAG - sysIPV6_SEC_OPT = C.IPV6_SEC_OPT - sysIPV6_SRC_PREFERENCES = C.IPV6_SRC_PREFERENCES - sysIPV6_RECVPATHMTU = C.IPV6_RECVPATHMTU - sysIPV6_PATHMTU = C.IPV6_PATHMTU - sysIPV6_TCLASS = C.IPV6_TCLASS - sysIPV6_V6ONLY = C.IPV6_V6ONLY - - sysIPV6_RECVDSTOPTS = C.IPV6_RECVDSTOPTS - - sysMCAST_JOIN_GROUP = C.MCAST_JOIN_GROUP - sysMCAST_LEAVE_GROUP = C.MCAST_LEAVE_GROUP - sysMCAST_BLOCK_SOURCE = C.MCAST_BLOCK_SOURCE - sysMCAST_UNBLOCK_SOURCE = C.MCAST_UNBLOCK_SOURCE - sysMCAST_JOIN_SOURCE_GROUP = C.MCAST_JOIN_SOURCE_GROUP - sysMCAST_LEAVE_SOURCE_GROUP = C.MCAST_LEAVE_SOURCE_GROUP - - sysIPV6_PREFER_SRC_HOME = C.IPV6_PREFER_SRC_HOME - sysIPV6_PREFER_SRC_COA = C.IPV6_PREFER_SRC_COA - sysIPV6_PREFER_SRC_PUBLIC = C.IPV6_PREFER_SRC_PUBLIC - sysIPV6_PREFER_SRC_TMP = C.IPV6_PREFER_SRC_TMP - sysIPV6_PREFER_SRC_NONCGA = C.IPV6_PREFER_SRC_NONCGA - sysIPV6_PREFER_SRC_CGA = C.IPV6_PREFER_SRC_CGA - - sysIPV6_PREFER_SRC_MIPMASK = C.IPV6_PREFER_SRC_MIPMASK - sysIPV6_PREFER_SRC_MIPDEFAULT = C.IPV6_PREFER_SRC_MIPDEFAULT - sysIPV6_PREFER_SRC_TMPMASK = C.IPV6_PREFER_SRC_TMPMASK - sysIPV6_PREFER_SRC_TMPDEFAULT = C.IPV6_PREFER_SRC_TMPDEFAULT - sysIPV6_PREFER_SRC_CGAMASK = C.IPV6_PREFER_SRC_CGAMASK - sysIPV6_PREFER_SRC_CGADEFAULT = C.IPV6_PREFER_SRC_CGADEFAULT - - sysIPV6_PREFER_SRC_MASK = C.IPV6_PREFER_SRC_MASK - - sysIPV6_PREFER_SRC_DEFAULT = C.IPV6_PREFER_SRC_DEFAULT - - sysIPV6_BOUND_IF = C.IPV6_BOUND_IF - sysIPV6_UNSPEC_SRC = C.IPV6_UNSPEC_SRC - - sysICMP6_FILTER = C.ICMP6_FILTER - - sizeofSockaddrStorage = C.sizeof_struct_sockaddr_storage - sizeofSockaddrInet6 = C.sizeof_struct_sockaddr_in6 - sizeofInet6Pktinfo = C.sizeof_struct_in6_pktinfo - sizeofIPv6Mtuinfo = C.sizeof_struct_ip6_mtuinfo - - sizeofIPv6Mreq = C.sizeof_struct_ipv6_mreq - sizeofGroupReq = C.sizeof_struct_group_req - sizeofGroupSourceReq = C.sizeof_struct_group_source_req - - sizeofICMPv6Filter = C.sizeof_struct_icmp6_filter -) - -type sockaddrStorage C.struct_sockaddr_storage - -type sockaddrInet6 C.struct_sockaddr_in6 - -type inet6Pktinfo C.struct_in6_pktinfo - -type ipv6Mtuinfo C.struct_ip6_mtuinfo - -type ipv6Mreq C.struct_ipv6_mreq - -type groupReq C.struct_group_req - -type groupSourceReq C.struct_group_source_req - -type icmpv6Filter C.struct_icmp6_filter diff --git a/vendor/golang.org/x/net/ipv6/dgramopt.go b/vendor/golang.org/x/net/ipv6/dgramopt.go deleted file mode 100644 index 1f422e7..0000000 --- a/vendor/golang.org/x/net/ipv6/dgramopt.go +++ /dev/null @@ -1,301 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - - "golang.org/x/net/bpf" -) - -// MulticastHopLimit returns the hop limit field value for outgoing -// multicast packets. -func (c *dgramOpt) MulticastHopLimit() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoMulticastHopLimit] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetMulticastHopLimit sets the hop limit field value for future -// outgoing multicast packets. -func (c *dgramOpt) SetMulticastHopLimit(hoplim int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastHopLimit] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, hoplim) -} - -// MulticastInterface returns the default interface for multicast -// packet transmissions. -func (c *dgramOpt) MulticastInterface() (*net.Interface, error) { - if !c.ok() { - return nil, errInvalidConn - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return nil, errNotImplemented - } - return so.getMulticastInterface(c.Conn) -} - -// SetMulticastInterface sets the default interface for future -// multicast packet transmissions. -func (c *dgramOpt) SetMulticastInterface(ifi *net.Interface) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastInterface] - if !ok { - return errNotImplemented - } - return so.setMulticastInterface(c.Conn, ifi) -} - -// MulticastLoopback reports whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) MulticastLoopback() (bool, error) { - if !c.ok() { - return false, errInvalidConn - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return false, errNotImplemented - } - on, err := so.GetInt(c.Conn) - if err != nil { - return false, err - } - return on == 1, nil -} - -// SetMulticastLoopback sets whether transmitted multicast packets -// should be copied and send back to the originator. -func (c *dgramOpt) SetMulticastLoopback(on bool) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoMulticastLoopback] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, boolint(on)) -} - -// JoinGroup joins the group address group on the interface ifi. -// By default all sources that can cast data to group are accepted. -// It's possible to mute and unmute data transmission from a specific -// source by using ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup. -// JoinGroup uses the system assigned multicast interface when ifi is -// nil, although this is not recommended because the assignment -// depends on platforms and sometimes it might require routing -// configuration. -func (c *dgramOpt) JoinGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoJoinGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// LeaveGroup leaves the group address group on the interface ifi -// regardless of whether the group is any-source group or -// source-specific group. -func (c *dgramOpt) LeaveGroup(ifi *net.Interface, group net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoLeaveGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - return so.setGroup(c.Conn, ifi, grp) -} - -// JoinSourceSpecificGroup joins the source-specific group comprising -// group and source on the interface ifi. -// JoinSourceSpecificGroup uses the system assigned multicast -// interface when ifi is nil, although this is not recommended because -// the assignment depends on platforms and sometimes it might require -// routing configuration. -func (c *dgramOpt) JoinSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoJoinSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// LeaveSourceSpecificGroup leaves the source-specific group on the -// interface ifi. -func (c *dgramOpt) LeaveSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoLeaveSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// ExcludeSourceSpecificGroup excludes the source-specific group from -// the already joined any-source groups by JoinGroup on the interface -// ifi. -func (c *dgramOpt) ExcludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoBlockSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// IncludeSourceSpecificGroup includes the excluded source-specific -// group by ExcludeSourceSpecificGroup again on the interface ifi. -func (c *dgramOpt) IncludeSourceSpecificGroup(ifi *net.Interface, group, source net.Addr) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoUnblockSourceGroup] - if !ok { - return errNotImplemented - } - grp := netAddrToIP16(group) - if grp == nil { - return errMissingAddress - } - src := netAddrToIP16(source) - if src == nil { - return errMissingAddress - } - return so.setSourceGroup(c.Conn, ifi, grp, src) -} - -// Checksum reports whether the kernel will compute, store or verify a -// checksum for both incoming and outgoing packets. If on is true, it -// returns an offset in bytes into the data of where the checksum -// field is located. -func (c *dgramOpt) Checksum() (on bool, offset int, err error) { - if !c.ok() { - return false, 0, errInvalidConn - } - so, ok := sockOpts[ssoChecksum] - if !ok { - return false, 0, errNotImplemented - } - offset, err = so.GetInt(c.Conn) - if err != nil { - return false, 0, err - } - if offset < 0 { - return false, 0, nil - } - return true, offset, nil -} - -// SetChecksum enables the kernel checksum processing. If on is ture, -// the offset should be an offset in bytes into the data of where the -// checksum field is located. -func (c *dgramOpt) SetChecksum(on bool, offset int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoChecksum] - if !ok { - return errNotImplemented - } - if !on { - offset = -1 - } - return so.SetInt(c.Conn, offset) -} - -// ICMPFilter returns an ICMP filter. -func (c *dgramOpt) ICMPFilter() (*ICMPFilter, error) { - if !c.ok() { - return nil, errInvalidConn - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return nil, errNotImplemented - } - return so.getICMPFilter(c.Conn) -} - -// SetICMPFilter deploys the ICMP filter. -func (c *dgramOpt) SetICMPFilter(f *ICMPFilter) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoICMPFilter] - if !ok { - return errNotImplemented - } - return so.setICMPFilter(c.Conn, f) -} - -// SetBPF attaches a BPF program to the connection. -// -// Only supported on Linux. -func (c *dgramOpt) SetBPF(filter []bpf.RawInstruction) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoAttachFilter] - if !ok { - return errNotImplemented - } - return so.setBPF(c.Conn, filter) -} diff --git a/vendor/golang.org/x/net/ipv6/doc.go b/vendor/golang.org/x/net/ipv6/doc.go deleted file mode 100644 index e0be9d5..0000000 --- a/vendor/golang.org/x/net/ipv6/doc.go +++ /dev/null @@ -1,243 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package ipv6 implements IP-level socket options for the Internet -// Protocol version 6. -// -// The package provides IP-level socket options that allow -// manipulation of IPv6 facilities. -// -// The IPv6 protocol is defined in RFC 8200. -// Socket interface extensions are defined in RFC 3493, RFC 3542 and -// RFC 3678. -// MLDv1 and MLDv2 are defined in RFC 2710 and RFC 3810. -// Source-specific multicast is defined in RFC 4607. -// -// On Darwin, this package requires OS X Mavericks version 10.9 or -// above, or equivalent. -// -// -// Unicasting -// -// The options for unicasting are available for net.TCPConn, -// net.UDPConn and net.IPConn which are created as network connections -// that use the IPv6 transport. When a single TCP connection carrying -// a data flow of multiple packets needs to indicate the flow is -// important, Conn is used to set the traffic class field on the IPv6 -// header for each packet. -// -// ln, err := net.Listen("tcp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer ln.Close() -// for { -// c, err := ln.Accept() -// if err != nil { -// // error handling -// } -// go func(c net.Conn) { -// defer c.Close() -// -// The outgoing packets will be labeled DiffServ assured forwarding -// class 1 low drop precedence, known as AF11 packets. -// -// if err := ipv6.NewConn(c).SetTrafficClass(0x28); err != nil { -// // error handling -// } -// if _, err := c.Write(data); err != nil { -// // error handling -// } -// }(c) -// } -// -// -// Multicasting -// -// The options for multicasting are available for net.UDPConn and -// net.IPConn which are created as network connections that use the -// IPv6 transport. A few network facilities must be prepared before -// you begin multicasting, at a minimum joining network interfaces and -// multicast groups. -// -// en0, err := net.InterfaceByName("en0") -// if err != nil { -// // error handling -// } -// en1, err := net.InterfaceByIndex(911) -// if err != nil { -// // error handling -// } -// group := net.ParseIP("ff02::114") -// -// First, an application listens to an appropriate address with an -// appropriate service port. -// -// c, err := net.ListenPacket("udp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// -// Second, the application joins multicast groups, starts listening to -// the groups on the specified network interfaces. Note that the -// service port for transport layer protocol does not matter with this -// operation as joining groups affects only network and link layer -// protocols, such as IPv6 and Ethernet. -// -// p := ipv6.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: group}); err != nil { -// // error handling -// } -// -// The application might set per packet control message transmissions -// between the protocol stack within the kernel. When the application -// needs a destination address on an incoming packet, -// SetControlMessage of PacketConn is used to enable control message -// transmissions. -// -// if err := p.SetControlMessage(ipv6.FlagDst, true); err != nil { -// // error handling -// } -// -// The application could identify whether the received packets are -// of interest by using the control message that contains the -// destination address of the received packet. -// -// b := make([]byte, 1500) -// for { -// n, rcm, src, err := p.ReadFrom(b) -// if err != nil { -// // error handling -// } -// if rcm.Dst.IsMulticast() { -// if rcm.Dst.Equal(group) { -// // joined group, do something -// } else { -// // unknown group, discard -// continue -// } -// } -// -// The application can also send both unicast and multicast packets. -// -// p.SetTrafficClass(0x0) -// p.SetHopLimit(16) -// if _, err := p.WriteTo(data[:n], nil, src); err != nil { -// // error handling -// } -// dst := &net.UDPAddr{IP: group, Port: 1024} -// wcm := ipv6.ControlMessage{TrafficClass: 0xe0, HopLimit: 1} -// for _, ifi := range []*net.Interface{en0, en1} { -// wcm.IfIndex = ifi.Index -// if _, err := p.WriteTo(data[:n], &wcm, dst); err != nil { -// // error handling -// } -// } -// } -// -// -// More multicasting -// -// An application that uses PacketConn may join multiple multicast -// groups. For example, a UDP listener with port 1024 might join two -// different groups across over two different network interfaces by -// using: -// -// c, err := net.ListenPacket("udp6", "[::]:1024") -// if err != nil { -// // error handling -// } -// defer c.Close() -// p := ipv6.NewPacketConn(c) -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::1:114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en1, &net.UDPAddr{IP: net.ParseIP("ff02::2:114")}); err != nil { -// // error handling -// } -// -// It is possible for multiple UDP listeners that listen on the same -// UDP port to join the same multicast group. The net package will -// provide a socket that listens to a wildcard address with reusable -// UDP port when an appropriate multicast address prefix is passed to -// the net.ListenPacket or net.ListenUDP. -// -// c1, err := net.ListenPacket("udp6", "[ff02::]:1024") -// if err != nil { -// // error handling -// } -// defer c1.Close() -// c2, err := net.ListenPacket("udp6", "[ff02::]:1024") -// if err != nil { -// // error handling -// } -// defer c2.Close() -// p1 := ipv6.NewPacketConn(c1) -// if err := p1.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// p2 := ipv6.NewPacketConn(c2) -// if err := p2.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// -// Also it is possible for the application to leave or rejoin a -// multicast group on the network interface. -// -// if err := p.LeaveGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff02::114")}); err != nil { -// // error handling -// } -// if err := p.JoinGroup(en0, &net.UDPAddr{IP: net.ParseIP("ff01::114")}); err != nil { -// // error handling -// } -// -// -// Source-specific multicasting -// -// An application that uses PacketConn on MLDv2 supported platform is -// able to join source-specific multicast groups. -// The application may use JoinSourceSpecificGroup and -// LeaveSourceSpecificGroup for the operation known as "include" mode, -// -// ssmgroup := net.UDPAddr{IP: net.ParseIP("ff32::8000:9")} -// ssmsource := net.UDPAddr{IP: net.ParseIP("fe80::cafe")} -// if err := p.JoinSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// if err := p.LeaveSourceSpecificGroup(en0, &ssmgroup, &ssmsource); err != nil { -// // error handling -// } -// -// or JoinGroup, ExcludeSourceSpecificGroup, -// IncludeSourceSpecificGroup and LeaveGroup for the operation known -// as "exclude" mode. -// -// exclsource := net.UDPAddr{IP: net.ParseIP("fe80::dead")} -// if err := p.JoinGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// if err := p.ExcludeSourceSpecificGroup(en0, &ssmgroup, &exclsource); err != nil { -// // error handling -// } -// if err := p.LeaveGroup(en0, &ssmgroup); err != nil { -// // error handling -// } -// -// Note that it depends on each platform implementation what happens -// when an application which runs on MLDv2 unsupported platform uses -// JoinSourceSpecificGroup and LeaveSourceSpecificGroup. -// In general the platform tries to fall back to conversations using -// MLDv1 and starts to listen to multicast traffic. -// In the fallback case, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup may return an error. -package ipv6 // import "golang.org/x/net/ipv6" - -// BUG(mikio): This package is not implemented on JS, NaCl and Plan 9. diff --git a/vendor/golang.org/x/net/ipv6/endpoint.go b/vendor/golang.org/x/net/ipv6/endpoint.go deleted file mode 100644 index f534a0b..0000000 --- a/vendor/golang.org/x/net/ipv6/endpoint.go +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "time" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the JoinSourceSpecificGroup, -// LeaveSourceSpecificGroup, ExcludeSourceSpecificGroup and -// IncludeSourceSpecificGroup methods of PacketConn are not -// implemented. - -// A Conn represents a network endpoint that uses IPv6 transport. -// It allows to set basic IP-level socket options such as traffic -// class and hop limit. -type Conn struct { - genericOpt -} - -type genericOpt struct { - *socket.Conn -} - -func (c *genericOpt) ok() bool { return c != nil && c.Conn != nil } - -// PathMTU returns a path MTU value for the destination associated -// with the endpoint. -func (c *Conn) PathMTU() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoPathMTU] - if !ok { - return 0, errNotImplemented - } - _, mtu, err := so.getMTUInfo(c.Conn) - if err != nil { - return 0, err - } - return mtu, nil -} - -// NewConn returns a new Conn. -func NewConn(c net.Conn) *Conn { - cc, _ := socket.NewConn(c) - return &Conn{ - genericOpt: genericOpt{Conn: cc}, - } -} - -// A PacketConn represents a packet network endpoint that uses IPv6 -// transport. It is used to control several IP-level socket options -// including IPv6 header manipulation. It also provides datagram -// based network I/O methods specific to the IPv6 and higher layer -// protocols such as OSPF, GRE, and UDP. -type PacketConn struct { - genericOpt - dgramOpt - payloadHandler -} - -type dgramOpt struct { - *socket.Conn -} - -func (c *dgramOpt) ok() bool { return c != nil && c.Conn != nil } - -// SetControlMessage allows to receive the per packet basis IP-level -// socket options. -func (c *PacketConn) SetControlMessage(cf ControlFlags, on bool) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return setControlMessage(c.dgramOpt.Conn, &c.payloadHandler.rawOpt, cf, on) -} - -// SetDeadline sets the read and write deadlines associated with the -// endpoint. -func (c *PacketConn) SetDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.SetDeadline(t) -} - -// SetReadDeadline sets the read deadline associated with the -// endpoint. -func (c *PacketConn) SetReadDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.SetReadDeadline(t) -} - -// SetWriteDeadline sets the write deadline associated with the -// endpoint. -func (c *PacketConn) SetWriteDeadline(t time.Time) error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.SetWriteDeadline(t) -} - -// Close closes the endpoint. -func (c *PacketConn) Close() error { - if !c.payloadHandler.ok() { - return errInvalidConn - } - return c.payloadHandler.Close() -} - -// NewPacketConn returns a new PacketConn using c as its underlying -// transport. -func NewPacketConn(c net.PacketConn) *PacketConn { - cc, _ := socket.NewConn(c.(net.Conn)) - return &PacketConn{ - genericOpt: genericOpt{Conn: cc}, - dgramOpt: dgramOpt{Conn: cc}, - payloadHandler: payloadHandler{PacketConn: c, Conn: cc}, - } -} diff --git a/vendor/golang.org/x/net/ipv6/gen.go b/vendor/golang.org/x/net/ipv6/gen.go deleted file mode 100644 index 5885664..0000000 --- a/vendor/golang.org/x/net/ipv6/gen.go +++ /dev/null @@ -1,199 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build ignore - -//go:generate go run gen.go - -// This program generates system adaptation constants and types, -// internet protocol constants and tables by reading template files -// and IANA protocol registries. -package main - -import ( - "bytes" - "encoding/xml" - "fmt" - "go/format" - "io" - "io/ioutil" - "net/http" - "os" - "os/exec" - "runtime" - "strconv" - "strings" -) - -func main() { - if err := genzsys(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } - if err := geniana(); err != nil { - fmt.Fprintln(os.Stderr, err) - os.Exit(1) - } -} - -func genzsys() error { - defs := "defs_" + runtime.GOOS + ".go" - f, err := os.Open(defs) - if err != nil { - if os.IsNotExist(err) { - return nil - } - return err - } - f.Close() - cmd := exec.Command("go", "tool", "cgo", "-godefs", defs) - b, err := cmd.Output() - if err != nil { - return err - } - b, err = format.Source(b) - if err != nil { - return err - } - zsys := "zsys_" + runtime.GOOS + ".go" - switch runtime.GOOS { - case "freebsd", "linux": - zsys = "zsys_" + runtime.GOOS + "_" + runtime.GOARCH + ".go" - } - if err := ioutil.WriteFile(zsys, b, 0644); err != nil { - return err - } - return nil -} - -var registries = []struct { - url string - parse func(io.Writer, io.Reader) error -}{ - { - "https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xml", - parseICMPv6Parameters, - }, -} - -func geniana() error { - var bb bytes.Buffer - fmt.Fprintf(&bb, "// go generate gen.go\n") - fmt.Fprintf(&bb, "// Code generated by the command above; DO NOT EDIT.\n\n") - fmt.Fprintf(&bb, "package ipv6\n\n") - for _, r := range registries { - resp, err := http.Get(r.url) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("got HTTP status code %v for %v\n", resp.StatusCode, r.url) - } - if err := r.parse(&bb, resp.Body); err != nil { - return err - } - fmt.Fprintf(&bb, "\n") - } - b, err := format.Source(bb.Bytes()) - if err != nil { - return err - } - if err := ioutil.WriteFile("iana.go", b, 0644); err != nil { - return err - } - return nil -} - -func parseICMPv6Parameters(w io.Writer, r io.Reader) error { - dec := xml.NewDecoder(r) - var icp icmpv6Parameters - if err := dec.Decode(&icp); err != nil { - return err - } - prs := icp.escape() - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "const (\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "ICMPType%s ICMPType = %d", pr.Name, pr.Value) - fmt.Fprintf(w, "// %s\n", pr.OrigName) - } - fmt.Fprintf(w, ")\n\n") - fmt.Fprintf(w, "// %s, Updated: %s\n", icp.Title, icp.Updated) - fmt.Fprintf(w, "var icmpTypes = map[ICMPType]string{\n") - for _, pr := range prs { - if pr.Name == "" { - continue - } - fmt.Fprintf(w, "%d: %q,\n", pr.Value, strings.ToLower(pr.OrigName)) - } - fmt.Fprintf(w, "}\n") - return nil -} - -type icmpv6Parameters struct { - XMLName xml.Name `xml:"registry"` - Title string `xml:"title"` - Updated string `xml:"updated"` - Registries []struct { - Title string `xml:"title"` - Records []struct { - Value string `xml:"value"` - Name string `xml:"name"` - } `xml:"record"` - } `xml:"registry"` -} - -type canonICMPv6ParamRecord struct { - OrigName string - Name string - Value int -} - -func (icp *icmpv6Parameters) escape() []canonICMPv6ParamRecord { - id := -1 - for i, r := range icp.Registries { - if strings.Contains(r.Title, "Type") || strings.Contains(r.Title, "type") { - id = i - break - } - } - if id < 0 { - return nil - } - prs := make([]canonICMPv6ParamRecord, len(icp.Registries[id].Records)) - sr := strings.NewReplacer( - "Messages", "", - "Message", "", - "ICMP", "", - "+", "P", - "-", "", - "/", "", - ".", "", - " ", "", - ) - for i, pr := range icp.Registries[id].Records { - if strings.Contains(pr.Name, "Reserved") || - strings.Contains(pr.Name, "Unassigned") || - strings.Contains(pr.Name, "Deprecated") || - strings.Contains(pr.Name, "Experiment") || - strings.Contains(pr.Name, "experiment") { - continue - } - ss := strings.Split(pr.Name, "\n") - if len(ss) > 1 { - prs[i].Name = strings.Join(ss, " ") - } else { - prs[i].Name = ss[0] - } - s := strings.TrimSpace(prs[i].Name) - prs[i].OrigName = s - prs[i].Name = sr.Replace(s) - prs[i].Value, _ = strconv.Atoi(pr.Value) - } - return prs -} diff --git a/vendor/golang.org/x/net/ipv6/genericopt.go b/vendor/golang.org/x/net/ipv6/genericopt.go deleted file mode 100644 index 0326aed..0000000 --- a/vendor/golang.org/x/net/ipv6/genericopt.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -// TrafficClass returns the traffic class field value for outgoing -// packets. -func (c *genericOpt) TrafficClass() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoTrafficClass] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetTrafficClass sets the traffic class field value for future -// outgoing packets. -func (c *genericOpt) SetTrafficClass(tclass int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoTrafficClass] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, tclass) -} - -// HopLimit returns the hop limit field value for outgoing packets. -func (c *genericOpt) HopLimit() (int, error) { - if !c.ok() { - return 0, errInvalidConn - } - so, ok := sockOpts[ssoHopLimit] - if !ok { - return 0, errNotImplemented - } - return so.GetInt(c.Conn) -} - -// SetHopLimit sets the hop limit field value for future outgoing -// packets. -func (c *genericOpt) SetHopLimit(hoplim int) error { - if !c.ok() { - return errInvalidConn - } - so, ok := sockOpts[ssoHopLimit] - if !ok { - return errNotImplemented - } - return so.SetInt(c.Conn, hoplim) -} diff --git a/vendor/golang.org/x/net/ipv6/header.go b/vendor/golang.org/x/net/ipv6/header.go deleted file mode 100644 index e05cb08..0000000 --- a/vendor/golang.org/x/net/ipv6/header.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "encoding/binary" - "fmt" - "net" -) - -const ( - Version = 6 // protocol version - HeaderLen = 40 // header length -) - -// A Header represents an IPv6 base header. -type Header struct { - Version int // protocol version - TrafficClass int // traffic class - FlowLabel int // flow label - PayloadLen int // payload length - NextHeader int // next header - HopLimit int // hop limit - Src net.IP // source address - Dst net.IP // destination address -} - -func (h *Header) String() string { - if h == nil { - return "" - } - return fmt.Sprintf("ver=%d tclass=%#x flowlbl=%#x payloadlen=%d nxthdr=%d hoplim=%d src=%v dst=%v", h.Version, h.TrafficClass, h.FlowLabel, h.PayloadLen, h.NextHeader, h.HopLimit, h.Src, h.Dst) -} - -// ParseHeader parses b as an IPv6 base header. -func ParseHeader(b []byte) (*Header, error) { - if len(b) < HeaderLen { - return nil, errHeaderTooShort - } - h := &Header{ - Version: int(b[0]) >> 4, - TrafficClass: int(b[0]&0x0f)<<4 | int(b[1])>>4, - FlowLabel: int(b[1]&0x0f)<<16 | int(b[2])<<8 | int(b[3]), - PayloadLen: int(binary.BigEndian.Uint16(b[4:6])), - NextHeader: int(b[6]), - HopLimit: int(b[7]), - } - h.Src = make(net.IP, net.IPv6len) - copy(h.Src, b[8:24]) - h.Dst = make(net.IP, net.IPv6len) - copy(h.Dst, b[24:40]) - return h, nil -} diff --git a/vendor/golang.org/x/net/ipv6/helper.go b/vendor/golang.org/x/net/ipv6/helper.go deleted file mode 100644 index f767b1f..0000000 --- a/vendor/golang.org/x/net/ipv6/helper.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "errors" - "net" - "runtime" -) - -var ( - errInvalidConn = errors.New("invalid connection") - errMissingAddress = errors.New("missing address") - errHeaderTooShort = errors.New("header too short") - errInvalidConnType = errors.New("invalid conn type") - errNoSuchInterface = errors.New("no such interface") - errNotImplemented = errors.New("not implemented on " + runtime.GOOS + "/" + runtime.GOARCH) -) - -func boolint(b bool) int { - if b { - return 1 - } - return 0 -} - -func netAddrToIP16(a net.Addr) net.IP { - switch v := a.(type) { - case *net.UDPAddr: - if ip := v.IP.To16(); ip != nil && ip.To4() == nil { - return ip - } - case *net.IPAddr: - if ip := v.IP.To16(); ip != nil && ip.To4() == nil { - return ip - } - } - return nil -} - -func opAddr(a net.Addr) net.Addr { - switch a.(type) { - case *net.TCPAddr: - if a == nil { - return nil - } - case *net.UDPAddr: - if a == nil { - return nil - } - case *net.IPAddr: - if a == nil { - return nil - } - } - return a -} diff --git a/vendor/golang.org/x/net/ipv6/iana.go b/vendor/golang.org/x/net/ipv6/iana.go deleted file mode 100644 index 32db1aa..0000000 --- a/vendor/golang.org/x/net/ipv6/iana.go +++ /dev/null @@ -1,86 +0,0 @@ -// go generate gen.go -// Code generated by the command above; DO NOT EDIT. - -package ipv6 - -// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 -const ( - ICMPTypeDestinationUnreachable ICMPType = 1 // Destination Unreachable - ICMPTypePacketTooBig ICMPType = 2 // Packet Too Big - ICMPTypeTimeExceeded ICMPType = 3 // Time Exceeded - ICMPTypeParameterProblem ICMPType = 4 // Parameter Problem - ICMPTypeEchoRequest ICMPType = 128 // Echo Request - ICMPTypeEchoReply ICMPType = 129 // Echo Reply - ICMPTypeMulticastListenerQuery ICMPType = 130 // Multicast Listener Query - ICMPTypeMulticastListenerReport ICMPType = 131 // Multicast Listener Report - ICMPTypeMulticastListenerDone ICMPType = 132 // Multicast Listener Done - ICMPTypeRouterSolicitation ICMPType = 133 // Router Solicitation - ICMPTypeRouterAdvertisement ICMPType = 134 // Router Advertisement - ICMPTypeNeighborSolicitation ICMPType = 135 // Neighbor Solicitation - ICMPTypeNeighborAdvertisement ICMPType = 136 // Neighbor Advertisement - ICMPTypeRedirect ICMPType = 137 // Redirect Message - ICMPTypeRouterRenumbering ICMPType = 138 // Router Renumbering - ICMPTypeNodeInformationQuery ICMPType = 139 // ICMP Node Information Query - ICMPTypeNodeInformationResponse ICMPType = 140 // ICMP Node Information Response - ICMPTypeInverseNeighborDiscoverySolicitation ICMPType = 141 // Inverse Neighbor Discovery Solicitation Message - ICMPTypeInverseNeighborDiscoveryAdvertisement ICMPType = 142 // Inverse Neighbor Discovery Advertisement Message - ICMPTypeVersion2MulticastListenerReport ICMPType = 143 // Version 2 Multicast Listener Report - ICMPTypeHomeAgentAddressDiscoveryRequest ICMPType = 144 // Home Agent Address Discovery Request Message - ICMPTypeHomeAgentAddressDiscoveryReply ICMPType = 145 // Home Agent Address Discovery Reply Message - ICMPTypeMobilePrefixSolicitation ICMPType = 146 // Mobile Prefix Solicitation - ICMPTypeMobilePrefixAdvertisement ICMPType = 147 // Mobile Prefix Advertisement - ICMPTypeCertificationPathSolicitation ICMPType = 148 // Certification Path Solicitation Message - ICMPTypeCertificationPathAdvertisement ICMPType = 149 // Certification Path Advertisement Message - ICMPTypeMulticastRouterAdvertisement ICMPType = 151 // Multicast Router Advertisement - ICMPTypeMulticastRouterSolicitation ICMPType = 152 // Multicast Router Solicitation - ICMPTypeMulticastRouterTermination ICMPType = 153 // Multicast Router Termination - ICMPTypeFMIPv6 ICMPType = 154 // FMIPv6 Messages - ICMPTypeRPLControl ICMPType = 155 // RPL Control Message - ICMPTypeILNPv6LocatorUpdate ICMPType = 156 // ILNPv6 Locator Update Message - ICMPTypeDuplicateAddressRequest ICMPType = 157 // Duplicate Address Request - ICMPTypeDuplicateAddressConfirmation ICMPType = 158 // Duplicate Address Confirmation - ICMPTypeMPLControl ICMPType = 159 // MPL Control Message - ICMPTypeExtendedEchoRequest ICMPType = 160 // Extended Echo Request - ICMPTypeExtendedEchoReply ICMPType = 161 // Extended Echo Reply -) - -// Internet Control Message Protocol version 6 (ICMPv6) Parameters, Updated: 2018-03-09 -var icmpTypes = map[ICMPType]string{ - 1: "destination unreachable", - 2: "packet too big", - 3: "time exceeded", - 4: "parameter problem", - 128: "echo request", - 129: "echo reply", - 130: "multicast listener query", - 131: "multicast listener report", - 132: "multicast listener done", - 133: "router solicitation", - 134: "router advertisement", - 135: "neighbor solicitation", - 136: "neighbor advertisement", - 137: "redirect message", - 138: "router renumbering", - 139: "icmp node information query", - 140: "icmp node information response", - 141: "inverse neighbor discovery solicitation message", - 142: "inverse neighbor discovery advertisement message", - 143: "version 2 multicast listener report", - 144: "home agent address discovery request message", - 145: "home agent address discovery reply message", - 146: "mobile prefix solicitation", - 147: "mobile prefix advertisement", - 148: "certification path solicitation message", - 149: "certification path advertisement message", - 151: "multicast router advertisement", - 152: "multicast router solicitation", - 153: "multicast router termination", - 154: "fmipv6 messages", - 155: "rpl control message", - 156: "ilnpv6 locator update message", - 157: "duplicate address request", - 158: "duplicate address confirmation", - 159: "mpl control message", - 160: "extended echo request", - 161: "extended echo reply", -} diff --git a/vendor/golang.org/x/net/ipv6/icmp.go b/vendor/golang.org/x/net/ipv6/icmp.go deleted file mode 100644 index b7f48e2..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import "golang.org/x/net/internal/iana" - -// BUG(mikio): On Windows, methods related to ICMPFilter are not -// implemented. - -// An ICMPType represents a type of ICMP message. -type ICMPType int - -func (typ ICMPType) String() string { - s, ok := icmpTypes[typ] - if !ok { - return "" - } - return s -} - -// Protocol returns the ICMPv6 protocol number. -func (typ ICMPType) Protocol() int { - return iana.ProtocolIPv6ICMP -} - -// An ICMPFilter represents an ICMP message filter for incoming -// packets. The filter belongs to a packet delivery path on a host and -// it cannot interact with forwarding packets or tunnel-outer packets. -// -// Note: RFC 8200 defines a reasonable role model. A node means a -// device that implements IP. A router means a node that forwards IP -// packets not explicitly addressed to itself, and a host means a node -// that is not a router. -type ICMPFilter struct { - icmpv6Filter -} - -// Accept accepts incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Accept(typ ICMPType) { - f.accept(typ) -} - -// Block blocks incoming ICMP packets including the type field value -// typ. -func (f *ICMPFilter) Block(typ ICMPType) { - f.block(typ) -} - -// SetAll sets the filter action to the filter. -func (f *ICMPFilter) SetAll(block bool) { - f.setAll(block) -} - -// WillBlock reports whether the ICMP type will be blocked. -func (f *ICMPFilter) WillBlock(typ ICMPType) bool { - return f.willBlock(typ) -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_bsd.go b/vendor/golang.org/x/net/ipv6/icmp_bsd.go deleted file mode 100644 index b03025c..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp_bsd.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd netbsd openbsd - -package ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.Filt[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.Filt[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.Filt { - if block { - f.Filt[i] = 0 - } else { - f.Filt[i] = 1<<32 - 1 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.Filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_linux.go b/vendor/golang.org/x/net/ipv6/icmp_linux.go deleted file mode 100644 index 647f6b4..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp_linux.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.Data[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.Data[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.Data { - if block { - f.Data[i] = 1<<32 - 1 - } else { - f.Data[i] = 0 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.Data[typ>>5]&(1<<(uint32(typ)&31)) != 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_solaris.go b/vendor/golang.org/x/net/ipv6/icmp_solaris.go deleted file mode 100644 index 7c23bb1..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp_solaris.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - f.X__icmp6_filt[typ>>5] |= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) block(typ ICMPType) { - f.X__icmp6_filt[typ>>5] &^= 1 << (uint32(typ) & 31) -} - -func (f *icmpv6Filter) setAll(block bool) { - for i := range f.X__icmp6_filt { - if block { - f.X__icmp6_filt[i] = 0 - } else { - f.X__icmp6_filt[i] = 1<<32 - 1 - } - } -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return f.X__icmp6_filt[typ>>5]&(1<<(uint32(typ)&31)) == 0 -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_stub.go b/vendor/golang.org/x/net/ipv6/icmp_stub.go deleted file mode 100644 index 370e51a..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp_stub.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -type icmpv6Filter struct { -} - -func (f *icmpv6Filter) accept(typ ICMPType) { -} - -func (f *icmpv6Filter) block(typ ICMPType) { -} - -func (f *icmpv6Filter) setAll(block bool) { -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - return false -} diff --git a/vendor/golang.org/x/net/ipv6/icmp_windows.go b/vendor/golang.org/x/net/ipv6/icmp_windows.go deleted file mode 100644 index 443cd07..0000000 --- a/vendor/golang.org/x/net/ipv6/icmp_windows.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -func (f *icmpv6Filter) accept(typ ICMPType) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) block(typ ICMPType) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) setAll(block bool) { - // TODO(mikio): implement this -} - -func (f *icmpv6Filter) willBlock(typ ICMPType) bool { - // TODO(mikio): implement this - return false -} diff --git a/vendor/golang.org/x/net/ipv6/payload.go b/vendor/golang.org/x/net/ipv6/payload.go deleted file mode 100644 index a8197f1..0000000 --- a/vendor/golang.org/x/net/ipv6/payload.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// BUG(mikio): On Windows, the ControlMessage for ReadFrom and WriteTo -// methods of PacketConn is not implemented. - -// A payloadHandler represents the IPv6 datagram payload handler. -type payloadHandler struct { - net.PacketConn - *socket.Conn - rawOpt -} - -func (c *payloadHandler) ok() bool { return c != nil && c.PacketConn != nil && c.Conn != nil } diff --git a/vendor/golang.org/x/net/ipv6/payload_cmsg.go b/vendor/golang.org/x/net/ipv6/payload_cmsg.go deleted file mode 100644 index 284a042..0000000 --- a/vendor/golang.org/x/net/ipv6/payload_cmsg.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -// ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, errInvalidConn - } - c.rawOpt.RLock() - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: NewControlMessage(c.rawOpt.cflags), - } - c.rawOpt.RUnlock() - switch c.PacketConn.(type) { - case *net.UDPConn: - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - case *net.IPConn: - if err := c.RecvMsg(&m, 0); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - default: - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: errInvalidConnType} - } - if m.NN > 0 { - cm = new(ControlMessage) - if err := cm.Parse(m.OOB[:m.NN]); err != nil { - return 0, nil, nil, &net.OpError{Op: "read", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Err: err} - } - cm.Src = netAddrToIP16(m.Addr) - } - return m.N, cm, m.Addr, nil -} - -// WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The -// cm may be nil if control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, errInvalidConn - } - m := socket.Message{ - Buffers: [][]byte{b}, - OOB: cm.Marshal(), - Addr: dst, - } - err = c.SendMsg(&m, 0) - if err != nil { - err = &net.OpError{Op: "write", Net: c.PacketConn.LocalAddr().Network(), Source: c.PacketConn.LocalAddr(), Addr: opAddr(dst), Err: err} - } - return m.N, err -} diff --git a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go b/vendor/golang.org/x/net/ipv6/payload_nocmsg.go deleted file mode 100644 index c5a4c96..0000000 --- a/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris - -package ipv6 - -import "net" - -// ReadFrom reads a payload of the received IPv6 datagram, from the -// endpoint c, copying the payload into b. It returns the number of -// bytes copied into b, the control message cm and the source address -// src of the received datagram. -func (c *payloadHandler) ReadFrom(b []byte) (n int, cm *ControlMessage, src net.Addr, err error) { - if !c.ok() { - return 0, nil, nil, errInvalidConn - } - if n, src, err = c.PacketConn.ReadFrom(b); err != nil { - return 0, nil, nil, err - } - return -} - -// WriteTo writes a payload of the IPv6 datagram, to the destination -// address dst through the endpoint c, copying the payload from b. It -// returns the number of bytes written. The control message cm allows -// the IPv6 header fields and the datagram path to be specified. The -// cm may be nil if control of the outgoing datagram is not required. -func (c *payloadHandler) WriteTo(b []byte, cm *ControlMessage, dst net.Addr) (n int, err error) { - if !c.ok() { - return 0, errInvalidConn - } - if dst == nil { - return 0, errMissingAddress - } - return c.PacketConn.WriteTo(b, dst) -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt.go b/vendor/golang.org/x/net/ipv6/sockopt.go deleted file mode 100644 index cc3907d..0000000 --- a/vendor/golang.org/x/net/ipv6/sockopt.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import "golang.org/x/net/internal/socket" - -// Sticky socket options -const ( - ssoTrafficClass = iota // header field for unicast packet, RFC 3542 - ssoHopLimit // header field for unicast packet, RFC 3493 - ssoMulticastInterface // outbound interface for multicast packet, RFC 3493 - ssoMulticastHopLimit // header field for multicast packet, RFC 3493 - ssoMulticastLoopback // loopback for multicast packet, RFC 3493 - ssoReceiveTrafficClass // header field on received packet, RFC 3542 - ssoReceiveHopLimit // header field on received packet, RFC 2292 or 3542 - ssoReceivePacketInfo // incbound or outbound packet path, RFC 2292 or 3542 - ssoReceivePathMTU // path mtu, RFC 3542 - ssoPathMTU // path mtu, RFC 3542 - ssoChecksum // packet checksum, RFC 2292 or 3542 - ssoICMPFilter // icmp filter, RFC 2292 or 3542 - ssoJoinGroup // any-source multicast, RFC 3493 - ssoLeaveGroup // any-source multicast, RFC 3493 - ssoJoinSourceGroup // source-specific multicast - ssoLeaveSourceGroup // source-specific multicast - ssoBlockSourceGroup // any-source or source-specific multicast - ssoUnblockSourceGroup // any-source or source-specific multicast - ssoAttachFilter // attach BPF for filtering inbound traffic -) - -// Sticky socket option value types -const ( - ssoTypeIPMreq = iota + 1 - ssoTypeGroupReq - ssoTypeGroupSourceReq -) - -// A sockOpt represents a binding for sticky socket option. -type sockOpt struct { - socket.Option - typ int // hint for option value type; optional -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_posix.go b/vendor/golang.org/x/net/ipv6/sockopt_posix.go deleted file mode 100644 index 824c623..0000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_posix.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "runtime" - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - n, err := so.GetInt(c) - if err != nil { - return nil, err - } - return net.InterfaceByIndex(n) -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - var n int - if ifi != nil { - n = ifi.Index - } - return so.SetInt(c, n) -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, err - } - if n != sizeofICMPv6Filter { - return nil, errNotImplemented - } - return (*ICMPFilter)(unsafe.Pointer(&b[0])), nil -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - b := (*[sizeofICMPv6Filter]byte)(unsafe.Pointer(f))[:sizeofICMPv6Filter] - return so.Set(c, b) -} - -func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { - b := make([]byte, so.Len) - n, err := so.Get(c, b) - if err != nil { - return nil, 0, err - } - if n != sizeofIPv6Mtuinfo { - return nil, 0, errNotImplemented - } - mi := (*ipv6Mtuinfo)(unsafe.Pointer(&b[0])) - if mi.Addr.Scope_id == 0 || runtime.GOOS == "aix" { - // AIX kernel might return a wrong address. - return nil, int(mi.Mtu), nil - } - ifi, err := net.InterfaceByIndex(int(mi.Addr.Scope_id)) - if err != nil { - return nil, 0, err - } - return ifi, int(mi.Mtu), nil -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - switch so.typ { - case ssoTypeIPMreq: - return so.setIPMreq(c, ifi, grp) - case ssoTypeGroupReq: - return so.setGroupReq(c, ifi, grp) - default: - return errNotImplemented - } -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return so.setGroupSourceReq(c, ifi, grp, src) -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return so.setAttachFilter(c, f) -} diff --git a/vendor/golang.org/x/net/ipv6/sockopt_stub.go b/vendor/golang.org/x/net/ipv6/sockopt_stub.go deleted file mode 100644 index 0a87a93..0000000 --- a/vendor/golang.org/x/net/ipv6/sockopt_stub.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import ( - "net" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) getMulticastInterface(c *socket.Conn) (*net.Interface, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setMulticastInterface(c *socket.Conn, ifi *net.Interface) error { - return errNotImplemented -} - -func (so *sockOpt) getICMPFilter(c *socket.Conn) (*ICMPFilter, error) { - return nil, errNotImplemented -} - -func (so *sockOpt) setICMPFilter(c *socket.Conn, f *ICMPFilter) error { - return errNotImplemented -} - -func (so *sockOpt) getMTUInfo(c *socket.Conn) (*net.Interface, int, error) { - return nil, 0, errNotImplemented -} - -func (so *sockOpt) setGroup(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setSourceGroup(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setBPF(c *socket.Conn, f []bpf.RawInstruction) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/sys_aix.go b/vendor/golang.org/x/net/ipv6/sys_aix.go deleted file mode 100644 index bce7091..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_aix.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Added for go1.11 compatibility -// +build aix - -package ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq.go b/vendor/golang.org/x/net/ipv6/sys_asmreq.go deleted file mode 100644 index 8c3934c..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_asmreq.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin dragonfly freebsd linux netbsd openbsd solaris windows - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var mreq ipv6Mreq - copy(mreq.Multiaddr[:], grp) - if ifi != nil { - mreq.setIfindex(ifi.Index) - } - b := (*[sizeofIPv6Mreq]byte)(unsafe.Pointer(&mreq))[:sizeofIPv6Mreq] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go deleted file mode 100644 index 87ae481..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setIPMreq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf.go b/vendor/golang.org/x/net/ipv6/sys_bpf.go deleted file mode 100644 index 90ef4df..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_bpf.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux - -package ipv6 - -import ( - "unsafe" - - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" - "golang.org/x/sys/unix" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - prog := unix.SockFprog{ - Len: uint16(len(f)), - Filter: (*unix.SockFilter)(unsafe.Pointer(&f[0])), - } - b := (*[unix.SizeofSockFprog]byte)(unsafe.Pointer(&prog))[:unix.SizeofSockFprog] - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go b/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go deleted file mode 100644 index eb9f831..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !linux - -package ipv6 - -import ( - "golang.org/x/net/bpf" - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setAttachFilter(c *socket.Conn, f []bpf.RawInstruction) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/sys_bsd.go b/vendor/golang.org/x/net/ipv6/sys_bsd.go deleted file mode 100644 index e416eaa..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_bsd.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build dragonfly netbsd openbsd - -package ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_darwin.go b/vendor/golang.org/x/net/ipv6/sys_darwin.go deleted file mode 100644 index 12cc5cb..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_darwin.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 132)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_freebsd.go b/vendor/golang.org/x/net/ipv6/sys_freebsd.go deleted file mode 100644 index 85a9f5d..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_freebsd.go +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "runtime" - "strings" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func init() { - if runtime.GOOS == "freebsd" && runtime.GOARCH == "386" { - archs, _ := syscall.Sysctl("kern.supported_archs") - for _, s := range strings.Fields(archs) { - if s == "amd64" { - compatFreeBSD32 = true - break - } - } - } -} - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) - sa.Len = sizeofSockaddrInet6 - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_linux.go b/vendor/golang.org/x/net/ipv6/sys_linux.go deleted file mode 100644 index 96e8093..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_linux.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" - "golang.org/x/sys/unix" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolReserved, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMPV6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoAttachFilter: {Option: socket.Option{Level: unix.SOL_SOCKET, Name: unix.SO_ATTACH_FILTER, Len: unix.SizeofSockFprog}}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = int32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Ifindex = int32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gr.Group)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(&gsr.Group)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(&gsr.Source)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_solaris.go b/vendor/golang.org/x/net/ipv6/sys_solaris.go deleted file mode 100644 index d348b5f..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_solaris.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "syscall" - "unsafe" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -var ( - ctlOpts = [ctlMax]ctlOpt{ - ctlTrafficClass: {sysIPV6_TCLASS, 4, marshalTrafficClass, parseTrafficClass}, - ctlHopLimit: {sysIPV6_HOPLIMIT, 4, marshalHopLimit, parseHopLimit}, - ctlPacketInfo: {sysIPV6_PKTINFO, sizeofInet6Pktinfo, marshalPacketInfo, parsePacketInfo}, - ctlNextHop: {sysIPV6_NEXTHOP, sizeofSockaddrInet6, marshalNextHop, parseNextHop}, - ctlPathMTU: {sysIPV6_PATHMTU, sizeofIPv6Mtuinfo, marshalPathMTU, parsePathMTU}, - } - - sockOpts = map[int]*sockOpt{ - ssoTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_TCLASS, Len: 4}}, - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoReceiveTrafficClass: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVTCLASS, Len: 4}}, - ssoReceiveHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVHOPLIMIT, Len: 4}}, - ssoReceivePacketInfo: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPKTINFO, Len: 4}}, - ssoReceivePathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_RECVPATHMTU, Len: 4}}, - ssoPathMTU: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_PATHMTU, Len: sizeofIPv6Mtuinfo}}, - ssoChecksum: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_CHECKSUM, Len: 4}}, - ssoICMPFilter: {Option: socket.Option{Level: iana.ProtocolIPv6ICMP, Name: sysICMP6_FILTER, Len: sizeofICMPv6Filter}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_GROUP, Len: sizeofGroupReq}, typ: ssoTypeGroupReq}, - ssoJoinSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_JOIN_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoLeaveSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_LEAVE_SOURCE_GROUP, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoBlockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_BLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - ssoUnblockSourceGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysMCAST_UNBLOCK_SOURCE, Len: sizeofGroupSourceReq}, typ: ssoTypeGroupSourceReq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (pi *inet6Pktinfo) setIfindex(i int) { - pi.Ifindex = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} - -func (gr *groupReq) setGroup(grp net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gr)) + 4)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) -} - -func (gsr *groupSourceReq) setSourceGroup(grp, src net.IP) { - sa := (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 4)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], grp) - sa = (*sockaddrInet6)(unsafe.Pointer(uintptr(unsafe.Pointer(gsr)) + 260)) - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], src) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq.go deleted file mode 100644 index 9b52e97..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix darwin freebsd linux solaris - -package ipv6 - -import ( - "net" - "unsafe" - - "golang.org/x/net/internal/socket" -) - -var compatFreeBSD32 bool // 386 emulation on amd64 - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - var gr groupReq - if ifi != nil { - gr.Interface = uint32(ifi.Index) - } - gr.setGroup(grp) - var b []byte - if compatFreeBSD32 { - var d [sizeofGroupReq + 4]byte - s := (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupReq]byte)(unsafe.Pointer(&gr))[:sizeofGroupReq] - } - return so.Set(c, b) -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - var gsr groupSourceReq - if ifi != nil { - gsr.Interface = uint32(ifi.Index) - } - gsr.setSourceGroup(grp, src) - var b []byte - if compatFreeBSD32 { - var d [sizeofGroupSourceReq + 4]byte - s := (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr)) - copy(d[:4], s[:4]) - copy(d[8:], s[4:]) - b = d[:] - } else { - b = (*[sizeofGroupSourceReq]byte)(unsafe.Pointer(&gsr))[:sizeofGroupSourceReq] - } - return so.Set(c, b) -} diff --git a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go b/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go deleted file mode 100644 index d5bc110..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!freebsd,!linux,!solaris - -package ipv6 - -import ( - "net" - - "golang.org/x/net/internal/socket" -) - -func (so *sockOpt) setGroupReq(c *socket.Conn, ifi *net.Interface, grp net.IP) error { - return errNotImplemented -} - -func (so *sockOpt) setGroupSourceReq(c *socket.Conn, ifi *net.Interface, grp, src net.IP) error { - return errNotImplemented -} diff --git a/vendor/golang.org/x/net/ipv6/sys_stub.go b/vendor/golang.org/x/net/ipv6/sys_stub.go deleted file mode 100644 index 4f252d0..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_stub.go +++ /dev/null @@ -1,13 +0,0 @@ -// Copyright 2014 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !aix,!darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris,!windows - -package ipv6 - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{} -) diff --git a/vendor/golang.org/x/net/ipv6/sys_windows.go b/vendor/golang.org/x/net/ipv6/sys_windows.go deleted file mode 100644 index fc36b01..0000000 --- a/vendor/golang.org/x/net/ipv6/sys_windows.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2013 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package ipv6 - -import ( - "net" - "syscall" - - "golang.org/x/net/internal/iana" - "golang.org/x/net/internal/socket" -) - -const ( - // See ws2tcpip.h. - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PKTINFO = 0x13 - - sizeofSockaddrInet6 = 0x1c - - sizeofIPv6Mreq = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofICMPv6Filter = 0 -) - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type icmpv6Filter struct { - // TODO(mikio): implement this -} - -var ( - ctlOpts = [ctlMax]ctlOpt{} - - sockOpts = map[int]*sockOpt{ - ssoHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_UNICAST_HOPS, Len: 4}}, - ssoMulticastInterface: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_IF, Len: 4}}, - ssoMulticastHopLimit: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_HOPS, Len: 4}}, - ssoMulticastLoopback: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_MULTICAST_LOOP, Len: 4}}, - ssoJoinGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_JOIN_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - ssoLeaveGroup: {Option: socket.Option{Level: iana.ProtocolIPv6, Name: sysIPV6_LEAVE_GROUP, Len: sizeofIPv6Mreq}, typ: ssoTypeIPMreq}, - } -) - -func (sa *sockaddrInet6) setSockaddr(ip net.IP, i int) { - sa.Family = syscall.AF_INET6 - copy(sa.Addr[:], ip) - sa.Scope_id = uint32(i) -} - -func (mreq *ipv6Mreq) setIfindex(i int) { - mreq.Interface = uint32(i) -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go deleted file mode 100644 index bf44e33..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go +++ /dev/null @@ -1,103 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_aix.go - -// Added for go1.11 compatibility -// +build aix - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysICMP6_FILTER = 0x26 - - sysIPV6_CHECKSUM = 0x27 - sysIPV6_V6ONLY = 0x25 - - sysIPV6_RTHDRDSTOPTS = 0x37 - - sysIPV6_RECVPKTINFO = 0x23 - sysIPV6_RECVHOPLIMIT = 0x29 - sysIPV6_RECVRTHDR = 0x33 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_RECVDSTOPTS = 0x38 - - sysIPV6_USE_MIN_MTU = 0x2c - sysIPV6_RECVPATHMTU = 0x2f - sysIPV6_PATHMTU = 0x2e - - sysIPV6_PKTINFO = 0x21 - sysIPV6_HOPLIMIT = 0x28 - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x34 - sysIPV6_DSTOPTS = 0x36 - sysIPV6_RTHDR = 0x32 - - sysIPV6_RECVTCLASS = 0x2a - - sysIPV6_TCLASS = 0x2b - sysIPV6_DONTFRAG = 0x2d - - sizeofSockaddrStorage = 0x508 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x510 - sizeofGroupSourceReq = 0xa18 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - X__ss_len uint8 - Family uint8 - X__ss_pad1 [6]uint8 - X__ss_align int64 - X__ss_pad2 [1265]uint8 - Pad_cgo_0 [7]byte -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_darwin.go b/vendor/golang.org/x/net/ipv6/zsys_darwin.go deleted file mode 100644 index 555744a..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_darwin.go +++ /dev/null @@ -1,131 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_darwin.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - sysIPV6_2292PKTINFO = 0x13 - sysIPV6_2292HOPLIMIT = 0x14 - sysIPV6_2292NEXTHOP = 0x15 - sysIPV6_2292HOPOPTS = 0x16 - sysIPV6_2292DSTOPTS = 0x17 - sysIPV6_2292RTHDR = 0x18 - - sysIPV6_2292PKTOPTIONS = 0x19 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RECVTCLASS = 0x23 - sysIPV6_TCLASS = 0x24 - - sysIPV6_RTHDRDSTOPTS = 0x39 - - sysIPV6_RECVPKTINFO = 0x3d - - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_MSFILTER = 0x4a - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_BOUND_IF = 0x7d - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [128]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [128]byte - Pad_cgo_1 [128]byte -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go b/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go deleted file mode 100644 index cf3cc10..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +++ /dev/null @@ -1,88 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_dragonfly.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go deleted file mode 100644 index 73f31b2..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +++ /dev/null @@ -1,122 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go deleted file mode 100644 index 490ce7c..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +++ /dev/null @@ -1,124 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go deleted file mode 100644 index 490ce7c..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +++ /dev/null @@ -1,124 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]int8 - X__ss_align int64 - X__ss_pad2 [112]int8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go deleted file mode 100644 index 47e99ac..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go +++ /dev/null @@ -1,122 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_freebsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PREFER_TEMPADDR = 0x3f - - sysIPV6_BINDANY = 0x40 - - sysIPV6_MSFILTER = 0x4a - - sysMCAST_JOIN_GROUP = 0x50 - sysMCAST_LEAVE_GROUP = 0x51 - sysMCAST_JOIN_SOURCE_GROUP = 0x52 - sysMCAST_LEAVE_SOURCE_GROUP = 0x53 - sysMCAST_BLOCK_SOURCE = 0x54 - sysMCAST_UNBLOCK_SOURCE = 0x55 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Len uint8 - Family uint8 - X__ss_pad1 [6]uint8 - X__ss_align int64 - X__ss_pad2 [112]uint8 -} - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Group sockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group sockaddrStorage - Source sockaddrStorage -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go b/vendor/golang.org/x/net/ipv6/zsys_linux_386.go deleted file mode 100644 index bde4a8f..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go deleted file mode 100644 index bde4a8f..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go deleted file mode 100644 index bde4a8f..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go b/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go deleted file mode 100644 index bde4a8f..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go deleted file mode 100644 index 66fd236..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +++ /dev/null @@ -1,152 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x84 - sizeofGroupSourceReq = 0x104 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]uint8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go b/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go b/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go deleted file mode 100644 index 6083ddc..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go +++ /dev/null @@ -1,156 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -// +build riscv64 - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go b/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go deleted file mode 100644 index 992ac9e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +++ /dev/null @@ -1,154 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_linux.go - -package ipv6 - -const ( - sysIPV6_ADDRFORM = 0x1 - sysIPV6_2292PKTINFO = 0x2 - sysIPV6_2292HOPOPTS = 0x3 - sysIPV6_2292DSTOPTS = 0x4 - sysIPV6_2292RTHDR = 0x5 - sysIPV6_2292PKTOPTIONS = 0x6 - sysIPV6_CHECKSUM = 0x7 - sysIPV6_2292HOPLIMIT = 0x8 - sysIPV6_NEXTHOP = 0x9 - sysIPV6_FLOWINFO = 0xb - - sysIPV6_UNICAST_HOPS = 0x10 - sysIPV6_MULTICAST_IF = 0x11 - sysIPV6_MULTICAST_HOPS = 0x12 - sysIPV6_MULTICAST_LOOP = 0x13 - sysIPV6_ADD_MEMBERSHIP = 0x14 - sysIPV6_DROP_MEMBERSHIP = 0x15 - sysMCAST_JOIN_GROUP = 0x2a - sysMCAST_LEAVE_GROUP = 0x2d - sysMCAST_JOIN_SOURCE_GROUP = 0x2e - sysMCAST_LEAVE_SOURCE_GROUP = 0x2f - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_MSFILTER = 0x30 - sysIPV6_ROUTER_ALERT = 0x16 - sysIPV6_MTU_DISCOVER = 0x17 - sysIPV6_MTU = 0x18 - sysIPV6_RECVERR = 0x19 - sysIPV6_V6ONLY = 0x1a - sysIPV6_JOIN_ANYCAST = 0x1b - sysIPV6_LEAVE_ANYCAST = 0x1c - - sysIPV6_FLOWLABEL_MGR = 0x20 - sysIPV6_FLOWINFO_SEND = 0x21 - - sysIPV6_IPSEC_POLICY = 0x22 - sysIPV6_XFRM_POLICY = 0x23 - - sysIPV6_RECVPKTINFO = 0x31 - sysIPV6_PKTINFO = 0x32 - sysIPV6_RECVHOPLIMIT = 0x33 - sysIPV6_HOPLIMIT = 0x34 - sysIPV6_RECVHOPOPTS = 0x35 - sysIPV6_HOPOPTS = 0x36 - sysIPV6_RTHDRDSTOPTS = 0x37 - sysIPV6_RECVRTHDR = 0x38 - sysIPV6_RTHDR = 0x39 - sysIPV6_RECVDSTOPTS = 0x3a - sysIPV6_DSTOPTS = 0x3b - sysIPV6_RECVPATHMTU = 0x3c - sysIPV6_PATHMTU = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_RECVTCLASS = 0x42 - sysIPV6_TCLASS = 0x43 - - sysIPV6_ADDR_PREFERENCES = 0x48 - - sysIPV6_PREFER_SRC_TMP = 0x1 - sysIPV6_PREFER_SRC_PUBLIC = 0x2 - sysIPV6_PREFER_SRC_PUBTMP_DEFAULT = 0x100 - sysIPV6_PREFER_SRC_COA = 0x4 - sysIPV6_PREFER_SRC_HOME = 0x400 - sysIPV6_PREFER_SRC_CGA = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x800 - - sysIPV6_MINHOPCOUNT = 0x49 - - sysIPV6_ORIGDSTADDR = 0x4a - sysIPV6_RECVORIGDSTADDR = 0x4a - sysIPV6_TRANSPARENT = 0x4b - sysIPV6_UNICAST_IF = 0x4c - - sysICMPV6_FILTER = 0x1 - - sysICMPV6_FILTER_BLOCK = 0x1 - sysICMPV6_FILTER_PASS = 0x2 - sysICMPV6_FILTER_BLOCKOTHERS = 0x3 - sysICMPV6_FILTER_PASSONLY = 0x4 - - sizeofKernelSockaddrStorage = 0x80 - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - sizeofIPv6FlowlabelReq = 0x20 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x88 - sizeofGroupSourceReq = 0x108 - - sizeofICMPv6Filter = 0x20 -) - -type kernelSockaddrStorage struct { - Family uint16 - X__data [126]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex int32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6FlowlabelReq struct { - Dst [16]byte /* in6_addr */ - Label uint32 - Action uint8 - Share uint8 - Flags uint16 - Expires uint16 - Linger uint16 - X__flr_pad uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Ifindex int32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [4]byte - Group kernelSockaddrStorage - Source kernelSockaddrStorage -} - -type icmpv6Filter struct { - Data [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go b/vendor/golang.org/x/net/ipv6/zsys_netbsd.go deleted file mode 100644 index e39571e..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +++ /dev/null @@ -1,84 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_netbsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_IPSEC_POLICY = 0x1c - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go b/vendor/golang.org/x/net/ipv6/zsys_openbsd.go deleted file mode 100644 index cc1899a..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +++ /dev/null @@ -1,93 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_openbsd.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x4 - sysIPV6_MULTICAST_IF = 0x9 - sysIPV6_MULTICAST_HOPS = 0xa - sysIPV6_MULTICAST_LOOP = 0xb - sysIPV6_JOIN_GROUP = 0xc - sysIPV6_LEAVE_GROUP = 0xd - sysIPV6_PORTRANGE = 0xe - sysICMP6_FILTER = 0x12 - - sysIPV6_CHECKSUM = 0x1a - sysIPV6_V6ONLY = 0x1b - - sysIPV6_RTHDRDSTOPTS = 0x23 - - sysIPV6_RECVPKTINFO = 0x24 - sysIPV6_RECVHOPLIMIT = 0x25 - sysIPV6_RECVRTHDR = 0x26 - sysIPV6_RECVHOPOPTS = 0x27 - sysIPV6_RECVDSTOPTS = 0x28 - - sysIPV6_USE_MIN_MTU = 0x2a - sysIPV6_RECVPATHMTU = 0x2b - - sysIPV6_PATHMTU = 0x2c - - sysIPV6_PKTINFO = 0x2e - sysIPV6_HOPLIMIT = 0x2f - sysIPV6_NEXTHOP = 0x30 - sysIPV6_HOPOPTS = 0x31 - sysIPV6_DSTOPTS = 0x32 - sysIPV6_RTHDR = 0x33 - - sysIPV6_AUTH_LEVEL = 0x35 - sysIPV6_ESP_TRANS_LEVEL = 0x36 - sysIPV6_ESP_NETWORK_LEVEL = 0x37 - sysIPSEC6_OUTSA = 0x38 - sysIPV6_RECVTCLASS = 0x39 - - sysIPV6_AUTOFLOWLABEL = 0x3b - sysIPV6_IPCOMP_LEVEL = 0x3c - - sysIPV6_TCLASS = 0x3d - sysIPV6_DONTFRAG = 0x3e - sysIPV6_PIPEX = 0x3f - - sysIPV6_RTABLE = 0x1021 - - sysIPV6_PORTRANGE_DEFAULT = 0x0 - sysIPV6_PORTRANGE_HIGH = 0x1 - sysIPV6_PORTRANGE_LOW = 0x2 - - sizeofSockaddrInet6 = 0x1c - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x20 - - sizeofIPv6Mreq = 0x14 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrInet6 struct { - Len uint8 - Family uint8 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type icmpv6Filter struct { - Filt [8]uint32 -} diff --git a/vendor/golang.org/x/net/ipv6/zsys_solaris.go b/vendor/golang.org/x/net/ipv6/zsys_solaris.go deleted file mode 100644 index 690eef9..0000000 --- a/vendor/golang.org/x/net/ipv6/zsys_solaris.go +++ /dev/null @@ -1,131 +0,0 @@ -// Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs defs_solaris.go - -package ipv6 - -const ( - sysIPV6_UNICAST_HOPS = 0x5 - sysIPV6_MULTICAST_IF = 0x6 - sysIPV6_MULTICAST_HOPS = 0x7 - sysIPV6_MULTICAST_LOOP = 0x8 - sysIPV6_JOIN_GROUP = 0x9 - sysIPV6_LEAVE_GROUP = 0xa - - sysIPV6_PKTINFO = 0xb - - sysIPV6_HOPLIMIT = 0xc - sysIPV6_NEXTHOP = 0xd - sysIPV6_HOPOPTS = 0xe - sysIPV6_DSTOPTS = 0xf - - sysIPV6_RTHDR = 0x10 - sysIPV6_RTHDRDSTOPTS = 0x11 - - sysIPV6_RECVPKTINFO = 0x12 - sysIPV6_RECVHOPLIMIT = 0x13 - sysIPV6_RECVHOPOPTS = 0x14 - - sysIPV6_RECVRTHDR = 0x16 - - sysIPV6_RECVRTHDRDSTOPTS = 0x17 - - sysIPV6_CHECKSUM = 0x18 - sysIPV6_RECVTCLASS = 0x19 - sysIPV6_USE_MIN_MTU = 0x20 - sysIPV6_DONTFRAG = 0x21 - sysIPV6_SEC_OPT = 0x22 - sysIPV6_SRC_PREFERENCES = 0x23 - sysIPV6_RECVPATHMTU = 0x24 - sysIPV6_PATHMTU = 0x25 - sysIPV6_TCLASS = 0x26 - sysIPV6_V6ONLY = 0x27 - - sysIPV6_RECVDSTOPTS = 0x28 - - sysMCAST_JOIN_GROUP = 0x29 - sysMCAST_LEAVE_GROUP = 0x2a - sysMCAST_BLOCK_SOURCE = 0x2b - sysMCAST_UNBLOCK_SOURCE = 0x2c - sysMCAST_JOIN_SOURCE_GROUP = 0x2d - sysMCAST_LEAVE_SOURCE_GROUP = 0x2e - - sysIPV6_PREFER_SRC_HOME = 0x1 - sysIPV6_PREFER_SRC_COA = 0x2 - sysIPV6_PREFER_SRC_PUBLIC = 0x4 - sysIPV6_PREFER_SRC_TMP = 0x8 - sysIPV6_PREFER_SRC_NONCGA = 0x10 - sysIPV6_PREFER_SRC_CGA = 0x20 - - sysIPV6_PREFER_SRC_MIPMASK = 0x3 - sysIPV6_PREFER_SRC_MIPDEFAULT = 0x1 - sysIPV6_PREFER_SRC_TMPMASK = 0xc - sysIPV6_PREFER_SRC_TMPDEFAULT = 0x4 - sysIPV6_PREFER_SRC_CGAMASK = 0x30 - sysIPV6_PREFER_SRC_CGADEFAULT = 0x10 - - sysIPV6_PREFER_SRC_MASK = 0x3f - - sysIPV6_PREFER_SRC_DEFAULT = 0x15 - - sysIPV6_BOUND_IF = 0x41 - sysIPV6_UNSPEC_SRC = 0x42 - - sysICMP6_FILTER = 0x1 - - sizeofSockaddrStorage = 0x100 - sizeofSockaddrInet6 = 0x20 - sizeofInet6Pktinfo = 0x14 - sizeofIPv6Mtuinfo = 0x24 - - sizeofIPv6Mreq = 0x14 - sizeofGroupReq = 0x104 - sizeofGroupSourceReq = 0x204 - - sizeofICMPv6Filter = 0x20 -) - -type sockaddrStorage struct { - Family uint16 - X_ss_pad1 [6]int8 - X_ss_align float64 - X_ss_pad2 [240]int8 -} - -type sockaddrInet6 struct { - Family uint16 - Port uint16 - Flowinfo uint32 - Addr [16]byte /* in6_addr */ - Scope_id uint32 - X__sin6_src_id uint32 -} - -type inet6Pktinfo struct { - Addr [16]byte /* in6_addr */ - Ifindex uint32 -} - -type ipv6Mtuinfo struct { - Addr sockaddrInet6 - Mtu uint32 -} - -type ipv6Mreq struct { - Multiaddr [16]byte /* in6_addr */ - Interface uint32 -} - -type groupReq struct { - Interface uint32 - Pad_cgo_0 [256]byte -} - -type groupSourceReq struct { - Interface uint32 - Pad_cgo_0 [256]byte - Pad_cgo_1 [256]byte -} - -type icmpv6Filter struct { - X__icmp6_filt [8]uint32 -} diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS deleted file mode 100644 index 15167cd..0000000 --- a/vendor/golang.org/x/sys/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS deleted file mode 100644 index 1c4577e..0000000 --- a/vendor/golang.org/x/sys/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE deleted file mode 100644 index 6a66aea..0000000 --- a/vendor/golang.org/x/sys/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/golang.org/x/sys/PATENTS b/vendor/golang.org/x/sys/PATENTS deleted file mode 100644 index 7330990..0000000 --- a/vendor/golang.org/x/sys/PATENTS +++ /dev/null @@ -1,22 +0,0 @@ -Additional IP Rights Grant (Patents) - -"This implementation" means the copyrightable works distributed by -Google as part of the Go project. - -Google hereby grants to You a perpetual, worldwide, non-exclusive, -no-charge, royalty-free, irrevocable (except as stated in this section) -patent license to make, have made, use, offer to sell, sell, import, -transfer and otherwise run, modify and propagate the contents of this -implementation of Go, where such license applies only to those patent -claims, both currently owned or controlled by Google and acquired in -the future, licensable by Google that are necessarily infringed by this -implementation of Go. This grant does not include claims that would be -infringed only as a consequence of further modification of this -implementation. If you or your agent or exclusive licensee institute or -order or agree to the institution of patent litigation against any -entity (including a cross-claim or counterclaim in a lawsuit) alleging -that this implementation of Go or any code incorporated within this -implementation of Go constitutes direct or contributory patent -infringement, or inducement of patent infringement, then any patent -rights granted to you under this License for this implementation of Go -shall terminate as of the date such litigation is filed. diff --git a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s b/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s deleted file mode 100644 index 06f84b8..0000000 --- a/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo - -#include "textflag.h" - -// -// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go -// - -TEXT ·syscall6(SB),NOSPLIT,$0-88 - JMP syscall·syscall6(SB) - -TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 - JMP syscall·rawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/cpu/byteorder.go b/vendor/golang.org/x/sys/cpu/byteorder.go deleted file mode 100644 index da6b9e4..0000000 --- a/vendor/golang.org/x/sys/cpu/byteorder.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpu - -import ( - "encoding/binary" - "runtime" -) - -// hostByteOrder returns binary.LittleEndian on little-endian machines and -// binary.BigEndian on big-endian machines. -func hostByteOrder() binary.ByteOrder { - switch runtime.GOARCH { - case "386", "amd64", "amd64p32", - "arm", "arm64", - "mipsle", "mips64le", "mips64p32le", - "ppc64le", - "riscv", "riscv64": - return binary.LittleEndian - case "armbe", "arm64be", - "mips", "mips64", "mips64p32", - "ppc", "ppc64", - "s390", "s390x", - "sparc", "sparc64": - return binary.BigEndian - } - panic("unknown architecture") -} diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go deleted file mode 100644 index 679e78c..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Package cpu implements processor feature detection for -// various CPU architectures. -package cpu - -// Initialized reports whether the CPU features were initialized. -// -// For some GOOS/GOARCH combinations initialization of the CPU features depends -// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm -// Initialized will report false if reading the file fails. -var Initialized bool - -// CacheLinePad is used to pad structs to avoid false sharing. -type CacheLinePad struct{ _ [cacheLineSize]byte } - -// X86 contains the supported CPU features of the -// current X86/AMD64 platform. If the current platform -// is not X86/AMD64 then all feature flags are false. -// -// X86 is padded to avoid false sharing. Further the HasAVX -// and HasAVX2 are only set if the OS supports XMM and YMM -// registers in addition to the CPUID feature bit being set. -var X86 struct { - _ CacheLinePad - HasAES bool // AES hardware implementation (AES NI) - HasADX bool // Multi-precision add-carry instruction extensions - HasAVX bool // Advanced vector extension - HasAVX2 bool // Advanced vector extension 2 - HasBMI1 bool // Bit manipulation instruction set 1 - HasBMI2 bool // Bit manipulation instruction set 2 - HasERMS bool // Enhanced REP for MOVSB and STOSB - HasFMA bool // Fused-multiply-add instructions - HasOSXSAVE bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers. - HasPCLMULQDQ bool // PCLMULQDQ instruction - most often used for AES-GCM - HasPOPCNT bool // Hamming weight instruction POPCNT. - HasRDRAND bool // RDRAND instruction (on-chip random number generator) - HasRDSEED bool // RDSEED instruction (on-chip random number generator) - HasSSE2 bool // Streaming SIMD extension 2 (always available on amd64) - HasSSE3 bool // Streaming SIMD extension 3 - HasSSSE3 bool // Supplemental streaming SIMD extension 3 - HasSSE41 bool // Streaming SIMD extension 4 and 4.1 - HasSSE42 bool // Streaming SIMD extension 4 and 4.2 - _ CacheLinePad -} - -// ARM64 contains the supported CPU features of the -// current ARMv8(aarch64) platform. If the current platform -// is not arm64 then all feature flags are false. -var ARM64 struct { - _ CacheLinePad - HasFP bool // Floating-point instruction set (always available) - HasASIMD bool // Advanced SIMD (always available) - HasEVTSTRM bool // Event stream support - HasAES bool // AES hardware implementation - HasPMULL bool // Polynomial multiplication instruction set - HasSHA1 bool // SHA1 hardware implementation - HasSHA2 bool // SHA2 hardware implementation - HasCRC32 bool // CRC32 hardware implementation - HasATOMICS bool // Atomic memory operation instruction set - HasFPHP bool // Half precision floating-point instruction set - HasASIMDHP bool // Advanced SIMD half precision instruction set - HasCPUID bool // CPUID identification scheme registers - HasASIMDRDM bool // Rounding double multiply add/subtract instruction set - HasJSCVT bool // Javascript conversion from floating-point to integer - HasFCMA bool // Floating-point multiplication and addition of complex numbers - HasLRCPC bool // Release Consistent processor consistent support - HasDCPOP bool // Persistent memory support - HasSHA3 bool // SHA3 hardware implementation - HasSM3 bool // SM3 hardware implementation - HasSM4 bool // SM4 hardware implementation - HasASIMDDP bool // Advanced SIMD double precision instruction set - HasSHA512 bool // SHA512 hardware implementation - HasSVE bool // Scalable Vector Extensions - HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 - _ CacheLinePad -} - -// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms. -// If the current platform is not ppc64/ppc64le then all feature flags are false. -// -// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00, -// since there are no optional categories. There are some exceptions that also -// require kernel support to work (DARN, SCV), so there are feature bits for -// those as well. The minimum processor requirement is POWER8 (ISA 2.07). -// The struct is padded to avoid false sharing. -var PPC64 struct { - _ CacheLinePad - HasDARN bool // Hardware random number generator (requires kernel enablement) - HasSCV bool // Syscall vectored (requires kernel enablement) - IsPOWER8 bool // ISA v2.07 (POWER8) - IsPOWER9 bool // ISA v3.00 (POWER9) - _ CacheLinePad -} - -// S390X contains the supported CPU features of the current IBM Z -// (s390x) platform. If the current platform is not IBM Z then all -// feature flags are false. -// -// S390X is padded to avoid false sharing. Further HasVX is only set -// if the OS supports vector registers in addition to the STFLE -// feature bit being set. -var S390X struct { - _ CacheLinePad - HasZARCH bool // z/Architecture mode is active [mandatory] - HasSTFLE bool // store facility list extended - HasLDISP bool // long (20-bit) displacements - HasEIMM bool // 32-bit immediates - HasDFP bool // decimal floating point - HasETF3EH bool // ETF-3 enhanced - HasMSA bool // message security assist (CPACF) - HasAES bool // KM-AES{128,192,256} functions - HasAESCBC bool // KMC-AES{128,192,256} functions - HasAESCTR bool // KMCTR-AES{128,192,256} functions - HasAESGCM bool // KMA-GCM-AES{128,192,256} functions - HasGHASH bool // KIMD-GHASH function - HasSHA1 bool // K{I,L}MD-SHA-1 functions - HasSHA256 bool // K{I,L}MD-SHA-256 functions - HasSHA512 bool // K{I,L}MD-SHA-512 functions - HasSHA3 bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions - HasVX bool // vector facility - HasVXE bool // vector-enhancements facility 1 - _ CacheLinePad -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go b/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go deleted file mode 100644 index be60272..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_aix_ppc64.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build aix,ppc64 - -package cpu - -const cacheLineSize = 128 - -const ( - // getsystemcfg constants - _SC_IMPL = 2 - _IMPL_POWER8 = 0x10000 - _IMPL_POWER9 = 0x20000 -) - -func init() { - impl := getsystemcfg(_SC_IMPL) - if impl&_IMPL_POWER8 != 0 { - PPC64.IsPOWER8 = true - } - if impl&_IMPL_POWER9 != 0 { - PPC64.IsPOWER9 = true - } - - Initialized = true -} - -func getsystemcfg(label int) (n uint64) { - r0, _ := callgetsystemcfg(label) - n = uint64(r0) - return -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm.go b/vendor/golang.org/x/sys/cpu/cpu_arm.go deleted file mode 100644 index 7f2348b..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_arm.go +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpu - -const cacheLineSize = 32 - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go deleted file mode 100644 index 568bcd0..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo - -package cpu - -// haveAsmFunctions reports whether the other functions in this file can -// be safely called. -func haveAsmFunctions() bool { return true } - -// The following feature detection functions are defined in cpu_s390x.s. -// They are likely to be expensive to call so the results should be cached. -func stfle() facilityList -func kmQuery() queryResult -func kmcQuery() queryResult -func kmctrQuery() queryResult -func kmaQuery() queryResult -func kimdQuery() queryResult -func klmdQuery() queryResult diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go deleted file mode 100644 index f7cb469..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build 386 amd64 amd64p32 -// +build !gccgo - -package cpu - -// cpuid is implemented in cpu_x86.s for gc compiler -// and in cpu_gccgo.c for gccgo. -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) - -// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler -// and in cpu_gccgo.c for gccgo. -func xgetbv() (eax, edx uint32) diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.c b/vendor/golang.org/x/sys/cpu/cpu_gccgo.c deleted file mode 100644 index e363c7d..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo.c +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build 386 amd64 amd64p32 -// +build gccgo - -#include -#include - -// Need to wrap __get_cpuid_count because it's declared as static. -int -gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, - uint32_t *eax, uint32_t *ebx, - uint32_t *ecx, uint32_t *edx) -{ - return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); -} - -// xgetbv reads the contents of an XCR (Extended Control Register) -// specified in the ECX register into registers EDX:EAX. -// Currently, the only supported value for XCR is 0. -// -// TODO: Replace with a better alternative: -// -// #include -// -// #pragma GCC target("xsave") -// -// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { -// unsigned long long x = _xgetbv(0); -// *eax = x & 0xffffffff; -// *edx = (x >> 32) & 0xffffffff; -// } -// -// Note that _xgetbv is defined starting with GCC 8. -void -gccgoXgetbv(uint32_t *eax, uint32_t *edx) -{ - __asm(" xorl %%ecx, %%ecx\n" - " xgetbv" - : "=a"(*eax), "=d"(*edx)); -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo.go deleted file mode 100644 index ba49b91..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build 386 amd64 amd64p32 -// +build gccgo - -package cpu - -//extern gccgoGetCpuidCount -func gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32) - -func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) { - var a, b, c, d uint32 - gccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d) - return a, b, c, d -} - -//extern gccgoXgetbv -func gccgoXgetbv(eax, edx *uint32) - -func xgetbv() (eax, edx uint32) { - var a, d uint32 - gccgoXgetbv(&a, &d) - return a, d -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go deleted file mode 100644 index aa986f7..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build gccgo - -package cpu - -// haveAsmFunctions reports whether the other functions in this file can -// be safely called. -func haveAsmFunctions() bool { return false } - -// TODO(mundaym): the following feature detection functions are currently -// stubs. See https://golang.org/cl/162887 for how to fix this. -// They are likely to be expensive to call so the results should be cached. -func stfle() facilityList { panic("not implemented for gccgo") } -func kmQuery() queryResult { panic("not implemented for gccgo") } -func kmcQuery() queryResult { panic("not implemented for gccgo") } -func kmctrQuery() queryResult { panic("not implemented for gccgo") } -func kmaQuery() queryResult { panic("not implemented for gccgo") } -func kimdQuery() queryResult { panic("not implemented for gccgo") } -func klmdQuery() queryResult { panic("not implemented for gccgo") } diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux.go b/vendor/golang.org/x/sys/cpu/cpu_linux.go deleted file mode 100644 index 76b5f50..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//+build !amd64,!amd64p32,!386 - -package cpu - -import ( - "io/ioutil" -) - -const ( - _AT_HWCAP = 16 - _AT_HWCAP2 = 26 - - procAuxv = "/proc/self/auxv" - - uintSize = int(32 << (^uint(0) >> 63)) -) - -// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2 -// These are initialized in cpu_$GOARCH.go -// and should not be changed after they are initialized. -var hwCap uint -var hwCap2 uint - -func init() { - buf, err := ioutil.ReadFile(procAuxv) - if err != nil { - // e.g. on android /proc/self/auxv is not accessible, so silently - // ignore the error and leave Initialized = false - return - } - - bo := hostByteOrder() - for len(buf) >= 2*(uintSize/8) { - var tag, val uint - switch uintSize { - case 32: - tag = uint(bo.Uint32(buf[0:])) - val = uint(bo.Uint32(buf[4:])) - buf = buf[8:] - case 64: - tag = uint(bo.Uint64(buf[0:])) - val = uint(bo.Uint64(buf[8:])) - buf = buf[16:] - } - switch tag { - case _AT_HWCAP: - hwCap = val - case _AT_HWCAP2: - hwCap2 = val - } - } - doinit() - - Initialized = true -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go deleted file mode 100644 index fa7fb1b..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +++ /dev/null @@ -1,67 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpu - -const cacheLineSize = 64 - -// HWCAP/HWCAP2 bits. These are exposed by Linux. -const ( - hwcap_FP = 1 << 0 - hwcap_ASIMD = 1 << 1 - hwcap_EVTSTRM = 1 << 2 - hwcap_AES = 1 << 3 - hwcap_PMULL = 1 << 4 - hwcap_SHA1 = 1 << 5 - hwcap_SHA2 = 1 << 6 - hwcap_CRC32 = 1 << 7 - hwcap_ATOMICS = 1 << 8 - hwcap_FPHP = 1 << 9 - hwcap_ASIMDHP = 1 << 10 - hwcap_CPUID = 1 << 11 - hwcap_ASIMDRDM = 1 << 12 - hwcap_JSCVT = 1 << 13 - hwcap_FCMA = 1 << 14 - hwcap_LRCPC = 1 << 15 - hwcap_DCPOP = 1 << 16 - hwcap_SHA3 = 1 << 17 - hwcap_SM3 = 1 << 18 - hwcap_SM4 = 1 << 19 - hwcap_ASIMDDP = 1 << 20 - hwcap_SHA512 = 1 << 21 - hwcap_SVE = 1 << 22 - hwcap_ASIMDFHM = 1 << 23 -) - -func doinit() { - // HWCAP feature bits - ARM64.HasFP = isSet(hwCap, hwcap_FP) - ARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD) - ARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM) - ARM64.HasAES = isSet(hwCap, hwcap_AES) - ARM64.HasPMULL = isSet(hwCap, hwcap_PMULL) - ARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1) - ARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2) - ARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32) - ARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS) - ARM64.HasFPHP = isSet(hwCap, hwcap_FPHP) - ARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP) - ARM64.HasCPUID = isSet(hwCap, hwcap_CPUID) - ARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM) - ARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT) - ARM64.HasFCMA = isSet(hwCap, hwcap_FCMA) - ARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC) - ARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP) - ARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3) - ARM64.HasSM3 = isSet(hwCap, hwcap_SM3) - ARM64.HasSM4 = isSet(hwCap, hwcap_SM4) - ARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP) - ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) - ARM64.HasSVE = isSet(hwCap, hwcap_SVE) - ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go deleted file mode 100644 index 6c8d975..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build linux -// +build ppc64 ppc64le - -package cpu - -const cacheLineSize = 128 - -// HWCAP/HWCAP2 bits. These are exposed by the kernel. -const ( - // ISA Level - _PPC_FEATURE2_ARCH_2_07 = 0x80000000 - _PPC_FEATURE2_ARCH_3_00 = 0x00800000 - - // CPU features - _PPC_FEATURE2_DARN = 0x00200000 - _PPC_FEATURE2_SCV = 0x00100000 -) - -func doinit() { - // HWCAP2 feature bits - PPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07) - PPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00) - PPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN) - PPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV) -} - -func isSet(hwc uint, value uint) bool { - return hwc&value != 0 -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go b/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go deleted file mode 100644 index d579eae..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package cpu - -const cacheLineSize = 256 - -const ( - // bit mask values from /usr/include/bits/hwcap.h - hwcap_ZARCH = 2 - hwcap_STFLE = 4 - hwcap_MSA = 8 - hwcap_LDISP = 16 - hwcap_EIMM = 32 - hwcap_DFP = 64 - hwcap_ETF3EH = 256 - hwcap_VX = 2048 - hwcap_VXE = 8192 -) - -// bitIsSet reports whether the bit at index is set. The bit index -// is in big endian order, so bit index 0 is the leftmost bit. -func bitIsSet(bits []uint64, index uint) bool { - return bits[index/64]&((1<<63)>>(index%64)) != 0 -} - -// function is the code for the named cryptographic function. -type function uint8 - -const ( - // KM{,A,C,CTR} function codes - aes128 function = 18 // AES-128 - aes192 function = 19 // AES-192 - aes256 function = 20 // AES-256 - - // K{I,L}MD function codes - sha1 function = 1 // SHA-1 - sha256 function = 2 // SHA-256 - sha512 function = 3 // SHA-512 - sha3_224 function = 32 // SHA3-224 - sha3_256 function = 33 // SHA3-256 - sha3_384 function = 34 // SHA3-384 - sha3_512 function = 35 // SHA3-512 - shake128 function = 36 // SHAKE-128 - shake256 function = 37 // SHAKE-256 - - // KLMD function codes - ghash function = 65 // GHASH -) - -// queryResult contains the result of a Query function -// call. Bits are numbered in big endian order so the -// leftmost bit (the MSB) is at index 0. -type queryResult struct { - bits [2]uint64 -} - -// Has reports whether the given functions are present. -func (q *queryResult) Has(fns ...function) bool { - if len(fns) == 0 { - panic("no function codes provided") - } - for _, f := range fns { - if !bitIsSet(q.bits[:], uint(f)) { - return false - } - } - return true -} - -// facility is a bit index for the named facility. -type facility uint8 - -const ( - // cryptography facilities - msa4 facility = 77 // message-security-assist extension 4 - msa8 facility = 146 // message-security-assist extension 8 -) - -// facilityList contains the result of an STFLE call. -// Bits are numbered in big endian order so the -// leftmost bit (the MSB) is at index 0. -type facilityList struct { - bits [4]uint64 -} - -// Has reports whether the given facilities are present. -func (s *facilityList) Has(fs ...facility) bool { - if len(fs) == 0 { - panic("no facility bits provided") - } - for _, f := range fs { - if !bitIsSet(s.bits[:], uint(f)) { - return false - } - } - return true -} - -func doinit() { - // test HWCAP bit vector - has := func(featureMask uint) bool { - return hwCap&featureMask == featureMask - } - - // mandatory - S390X.HasZARCH = has(hwcap_ZARCH) - - // optional - S390X.HasSTFLE = has(hwcap_STFLE) - S390X.HasLDISP = has(hwcap_LDISP) - S390X.HasEIMM = has(hwcap_EIMM) - S390X.HasETF3EH = has(hwcap_ETF3EH) - S390X.HasDFP = has(hwcap_DFP) - S390X.HasMSA = has(hwcap_MSA) - S390X.HasVX = has(hwcap_VX) - if S390X.HasVX { - S390X.HasVXE = has(hwcap_VXE) - } - - // We need implementations of stfle, km and so on - // to detect cryptographic features. - if !haveAsmFunctions() { - return - } - - // optional cryptographic functions - if S390X.HasMSA { - aes := []function{aes128, aes192, aes256} - - // cipher message - km, kmc := kmQuery(), kmcQuery() - S390X.HasAES = km.Has(aes...) - S390X.HasAESCBC = kmc.Has(aes...) - if S390X.HasSTFLE { - facilities := stfle() - if facilities.Has(msa4) { - kmctr := kmctrQuery() - S390X.HasAESCTR = kmctr.Has(aes...) - } - if facilities.Has(msa8) { - kma := kmaQuery() - S390X.HasAESGCM = kma.Has(aes...) - } - } - - // compute message digest - kimd := kimdQuery() // intermediate (no padding) - klmd := klmdQuery() // last (padding) - S390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1) - S390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256) - S390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512) - S390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist - sha3 := []function{ - sha3_224, sha3_256, sha3_384, sha3_512, - shake128, shake256, - } - S390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...) - } -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go b/vendor/golang.org/x/sys/cpu/cpu_mips64x.go deleted file mode 100644 index f55e0c8..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build mips64 mips64le - -package cpu - -const cacheLineSize = 32 - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go b/vendor/golang.org/x/sys/cpu/cpu_mipsx.go deleted file mode 100644 index cda87b1..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build mips mipsle - -package cpu - -const cacheLineSize = 32 - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go deleted file mode 100644 index dd1e76d..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !linux,arm64 - -package cpu - -const cacheLineSize = 64 - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_s390x.s b/vendor/golang.org/x/sys/cpu/cpu_s390x.s deleted file mode 100644 index e5037d9..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_s390x.s +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build !gccgo - -#include "textflag.h" - -// func stfle() facilityList -TEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32 - MOVD $ret+0(FP), R1 - MOVD $3, R0 // last doubleword index to store - XC $32, (R1), (R1) // clear 4 doublewords (32 bytes) - WORD $0xb2b01000 // store facility list extended (STFLE) - RET - -// func kmQuery() queryResult -TEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KM-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92E0024 // cipher message (KM) - RET - -// func kmcQuery() queryResult -TEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMC-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92F0024 // cipher message with chaining (KMC) - RET - -// func kmctrQuery() queryResult -TEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMCTR-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB92D4024 // cipher message with counter (KMCTR) - RET - -// func kmaQuery() queryResult -TEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KMA-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xb9296024 // cipher message with authentication (KMA) - RET - -// func kimdQuery() queryResult -TEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KIMD-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB93E0024 // compute intermediate message digest (KIMD) - RET - -// func klmdQuery() queryResult -TEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16 - MOVD $0, R0 // set function code to 0 (KLMD-Query) - MOVD $ret+0(FP), R1 // address of 16-byte return value - WORD $0xB93F0024 // compute last message digest (KLMD) - RET diff --git a/vendor/golang.org/x/sys/cpu/cpu_wasm.go b/vendor/golang.org/x/sys/cpu/cpu_wasm.go deleted file mode 100644 index bd9bbda..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_wasm.go +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build wasm - -package cpu - -// We're compiling the cpu package for an unknown (software-abstracted) CPU. -// Make CacheLinePad an empty struct and hope that the usual struct alignment -// rules are good enough. - -const cacheLineSize = 0 - -func doinit() {} diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go deleted file mode 100644 index d70d317..0000000 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build 386 amd64 amd64p32 - -package cpu - -const cacheLineSize = 64 - -func init() { - Initialized = true - - maxID, _, _, _ := cpuid(0, 0) - - if maxID < 1 { - return - } - - _, _, ecx1, edx1 := cpuid(1, 0) - X86.HasSSE2 = isSet(26, edx1) - - X86.HasSSE3 = isSet(0, ecx1) - X86.HasPCLMULQDQ = isSet(1, ecx1) - X86.HasSSSE3 = isSet(9, ecx1) - X86.HasFMA = isSet(12, ecx1) - X86.HasSSE41 = isSet(19, ecx1) - X86.HasSSE42 = isSet(20, ecx1) - X86.HasPOPCNT = isSet(23, ecx1) - X86.HasAES = isSet(25, ecx1) - X86.HasOSXSAVE = isSet(27, ecx1) - X86.HasRDRAND = isSet(30, ecx1) - - osSupportsAVX := false - // For XGETBV, OSXSAVE bit is required and sufficient. - if X86.HasOSXSAVE { - eax, _ := xgetbv() - // Check if XMM and YMM registers have OS support. - osSupportsAVX = isSet(1, eax) && isSet(2, eax) - } - - X86.HasAVX = isSet(28, ecx1) && osSupportsAVX - - if maxID < 7 { - return - } - - _, ebx7, _, _ := cpuid(7, 0) - X86.HasBMI1 = isSet(3, ebx7) - X86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX - X86.HasBMI2 = isSet(8, ebx7) - X86.HasERMS = isSet(9, ebx7) - X86.HasRDSEED = isSet(18, ebx7) - X86.HasADX = isSet(19, ebx7) -} - -func isSet(bitpos uint, value uint32) bool { - return value&(1<

      3. ~0}#L3n%Hl4u(uETp>6 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 BOlklC diff --git a/hkexsh/hkexsh-vis.gv b/hkexsh/hkexsh-vis.gv deleted file mode 100755 index 41242e3..0000000 --- a/hkexsh/hkexsh-vis.gv +++ /dev/null @@ -1,263 +0,0 @@ -digraph gocallvis { - label="blitter.com/go/hkexsh/hkexsh"; - labeljust="l"; - fontname="Arial"; - fontsize="14"; - rankdir="LR"; - bgcolor="lightgray"; - style="solid"; - penwidth="0.5"; - pad="0.0"; - nodesep="0.35"; - - node [shape="ellipse" style="filled" fillcolor="honeydew" fontname="Verdana" penwidth="1.0" margin="0.05,0.0"]; - edge [minlen="2"] - - subgraph "cluster_focus" { - bgcolor="#e6ecfa"; -label="main"; -labelloc="t"; -labeljust="c"; -fontsize="18"; - - "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ penwidth="0.5" fillcolor="lightblue" label="reqTunnel" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ fillcolor="lightblue" label="shellRemoteToStdin" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ fillcolor="lightblue" label="doShellMode$1$1" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode" [ fillcolor="lightblue" label="doShellMode" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ fillcolor="lightblue" label="handleTermResizes$1" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.GetSize" [ label="GetSize" penwidth="1.5" fillcolor="lightblue" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ penwidth="0.5" fillcolor="lightblue" label="handleTermResizes" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" [ fillcolor="lightblue" label="copyBuffer" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ fillcolor="lightblue" label="copyBuffer$1" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer$2" [ fillcolor="lightblue" label="copyBuffer$2" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer$3" [ style="dotted,filled" fillcolor="lightblue" label="copyBuffer$3" ] - "blitter.com/go/hkexsh/hkexsh.Copy" [ fillcolor="lightblue" label="Copy" penwidth="1.5" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ fillcolor="lightblue" label="doShellMode$2$1" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ fillcolor="lightblue" label="shellStdinToRemote" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.main$2" [ fillcolor="lightblue" label="deferCloseChaff" style="dotted,filled" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ fillcolor="lightblue" label="sendSessionParams" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.main$1" [ label="deferRestore" style="dotted,filled" fillcolor="lightblue" ] - "blitter.com/go/hkexsh/hkexsh.launchTuns" [ penwidth="0.5" fillcolor="lightblue" label="launchTuns" ] - "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ label="rejectUserMsg" penwidth="0.5" fillcolor="lightblue" ] - "blitter.com/go/hkexsh/hkexsh.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ fillcolor="lightblue" label="parseNonSwitchArgs" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ fillcolor="lightblue" label="doCopyMode" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.usageShell" [ fillcolor="lightblue" label="usageShell" penwidth="0.5" ] - "blitter.com/go/hkexsh/hkexsh.usageCp" [ fillcolor="lightblue" label="usageCp" penwidth="0.5" ] - - subgraph "cluster_blitter.com/go/hkexsh" { - style="filled"; -fillcolor="lightyellow"; -rank="sink"; -label="[hkexsh]"; -tooltip="package: blitter.com/go/hkexsh"; -penwidth="0.8"; -fontsize="16"; -fontname="bold"; -URL="/?f=blitter.com/go/hkexsh"; - - "blitter.com/go/hkexsh.Restore" [ fillcolor="moccasin" label="Restore" penwidth="1.5" ] - "blitter.com/go/hkexsh.MakeRaw" [ fillcolor="moccasin" label="MakeRaw" penwidth="1.5" ] - "blitter.com/go/hkexsh.ReadPassword" [ penwidth="1.5" fillcolor="moccasin" label="ReadPassword" ] - "blitter.com/go/hkexsh.NewSession" [ label="NewSession" penwidth="1.5" fillcolor="moccasin" ] - - subgraph "cluster_*blitter.com/go/hkexsh.Session" { - style="rounded,filled"; -fillcolor="wheat2"; -label="(*Session)"; -tooltip="type: *blitter.com/go/hkexsh.Session"; -penwidth="0.5"; -fontsize="15"; -fontcolor="#222222"; -labelloc="b"; - - "(*blitter.com/go/hkexsh.Session).SetStatus" [ label="SetStatus" penwidth="1.5" fillcolor="moccasin" ] - - } - - subgraph "cluster_blitter.com/go/hkexsh.Session" { - fillcolor="wheat2"; -label="(Session)"; -tooltip="type: blitter.com/go/hkexsh.Session"; -penwidth="0.5"; -fontsize="15"; -fontcolor="#222222"; -labelloc="b"; -style="rounded,filled"; - - "(blitter.com/go/hkexsh.Session).Status" [ label="Status" penwidth="1.5" fillcolor="moccasin" ] - "(blitter.com/go/hkexsh.Session).Op" [ fillcolor="moccasin" label="Op" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).Who" [ fillcolor="moccasin" label="Who" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).ConnHost" [ fillcolor="moccasin" label="ConnHost" penwidth="1.5" ] - "(blitter.com/go/hkexsh.Session).TermType" [ penwidth="1.5" fillcolor="moccasin" label="TermType" ] - "(blitter.com/go/hkexsh.Session).Cmd" [ label="Cmd" penwidth="1.5" fillcolor="moccasin" ] - "(blitter.com/go/hkexsh.Session).AuthCookie" [ fillcolor="moccasin" label="AuthCookie" penwidth="1.5" ] - - } - - } - - subgraph "cluster_blitter.com/go/hkexsh/hkexnet" { - fontname="bold"; -label="[hkexnet]"; -URL="/?f=blitter.com/go/hkexsh/hkexnet"; -tooltip="package: blitter.com/go/hkexsh/hkexnet"; -fontsize="16"; -fillcolor="lightyellow"; -rank="sink"; -penwidth="0.8"; -style="filled"; - - "blitter.com/go/hkexsh/hkexnet.Init" [ fillcolor="moccasin" label="Init" penwidth="1.5" ] - "blitter.com/go/hkexsh/hkexnet.Dial" [ penwidth="1.5" fillcolor="moccasin" label="Dial" ] - - subgraph "cluster_*blitter.com/go/hkexsh/hkexnet.Conn" { - penwidth="0.5"; -fontsize="15"; -fontcolor="#222222"; -labelloc="b"; -style="rounded,filled"; -fillcolor="wheat2"; -label="(*Conn)"; -tooltip="type: *blitter.com/go/hkexsh/hkexnet.Conn"; - - "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ fillcolor="moccasin" label="WritePacket" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ fillcolor="moccasin" label="Close" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ fillcolor="moccasin" label="SetupChaff" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ fillcolor="moccasin" label="EnableChaff" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ fillcolor="moccasin" label="DisableChaff" penwidth="1.5" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ label="ShutdownChaff" penwidth="1.5" fillcolor="moccasin" ] - "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ penwidth="1.5" fillcolor="moccasin" label="SetStatus" ] - - } - - subgraph "cluster_blitter.com/go/hkexsh/hkexnet.Conn" { - labelloc="b"; -style="rounded,filled"; -fillcolor="wheat2"; -label="(Conn)"; -tooltip="type: blitter.com/go/hkexsh/hkexnet.Conn"; -penwidth="0.5"; -fontsize="15"; -fontcolor="#222222"; - - "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ fillcolor="moccasin" label="GetStatus" penwidth="1.5" ] - "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ fillcolor="moccasin" label="Write" penwidth="1.5" ] - "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ fillcolor="moccasin" label="Read" penwidth="1.5" ] - - } - - } - - subgraph "cluster_blitter.com/go/hkexsh/logger" { - fillcolor="lightyellow"; -fontname="bold"; -label="[logger]"; -tooltip="package: blitter.com/go/hkexsh/logger"; -penwidth="0.8"; -style="filled"; -rank="sink"; -URL="/?f=blitter.com/go/hkexsh/logger"; -fontsize="16"; - - "blitter.com/go/hkexsh/logger.LogDebug" [ fillcolor="moccasin" label="LogDebug" penwidth="1.5" ] - "blitter.com/go/hkexsh/logger.New" [ fillcolor="moccasin" label="New" penwidth="1.5" ] - - } - - subgraph "cluster_blitter.com/go/hkexsh/spinsult" { - penwidth="0.8"; -style="filled"; -rank="sink"; -tooltip="package: blitter.com/go/hkexsh/spinsult"; -fontsize="16"; -fillcolor="lightyellow"; -fontname="bold"; -label="[spinsult]"; -URL="/?f=blitter.com/go/hkexsh/spinsult"; - - "blitter.com/go/hkexsh/spinsult.GetSentence" [ fillcolor="moccasin" label="GetSentence" penwidth="1.5" ] - - } - - subgraph "cluster_github.com/mattn/go-isatty" { - tooltip="package: github.com/mattn/go-isatty"; -penwidth="0.8"; -fillcolor="lightyellow"; -rank="sink"; -label="[isatty]"; -URL="/?f=github.com/mattn/go-isatty"; -fontsize="16"; -style="filled"; -fontname="bold"; - - "github.com/mattn/go-isatty.IsTerminal" [ fillcolor="moccasin" label="IsTerminal" penwidth="1.5" ] - - } - - } - - "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "blitter.com/go/hkexsh/logger.LogDebug" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.reqTunnel" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$1" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$1" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "blitter.com/go/hkexsh/hkexsh.GetSize" [ ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.handleTermResizes" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes$1" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.handleTermResizes" [ ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$1" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$2" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.copyBuffer" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer$3" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.Copy" -> "blitter.com/go/hkexsh/hkexsh.copyBuffer" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" -> "blitter.com/go/hkexsh/hkexsh.Copy" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2$1" [ ] - "blitter.com/go/hkexsh/hkexsh.doShellMode$2" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doShellMode" -> "blitter.com/go/hkexsh/hkexsh.doShellMode$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.main$2" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Op" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Who" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).ConnHost" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).TermType" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh.Session).AuthCookie" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.sendSessionParams" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Write" [ style="dashed" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main$1" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.launchTuns" -> "blitter.com/go/hkexsh/hkexsh.reqTunnel" [ ] - "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" -> "blitter.com/go/hkexsh/spinsult.GetSentence" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.parseNonSwitchArgs" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/logger.New" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Init" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexnet.Dial" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).Close" [ color="saddlebrown" arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "github.com/mattn/go-isatty.IsTerminal" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.MakeRaw" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$1" [ arrowhead="normalnoneodiamond" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.ReadPassword" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.NewSession" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.sendSessionParams" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh.Session).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.rejectUserMsg" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetupChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).EnableChaff" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).DisableChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).ShutdownChaff" [ arrowhead="normalnoneodiamond" color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.main$2" [ arrowhead="normalnoneodot" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.launchTuns" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doShellMode" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "(blitter.com/go/hkexsh.Session).Status" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh.Session).Cmd" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).WritePacket" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).Read" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(*blitter.com/go/hkexsh/hkexnet.Conn).SetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.doCopyMode" -> "(blitter.com/go/hkexsh/hkexnet.Conn).GetStatus" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.doCopyMode" [ ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh.Restore" [ color="saddlebrown" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.usageShell" [ style="dashed" ] - "blitter.com/go/hkexsh/hkexsh.main" -> "blitter.com/go/hkexsh/hkexsh.usageCp" [ style="dashed" ] -} diff --git a/hkexsh/hkexsh_seq.png b/hkexsh/hkexsh_seq.png deleted file mode 100644 index 5b54cf6b1f84241e59d3ee56e37b873b75a7d6da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69430 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 diff --git a/hkexshd/hkexshd-vis-fixedup.png b/hkexshd/hkexshd-vis-fixedup.png deleted file mode 100644 index 518a2fd9246774c0261516336b448dbfc4c79dc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600193 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ⅈqV>#^?Uw_g8b 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

    5. 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Ⓢ1~gLByi+xrh9BXMWXa7QF8x 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 DVpaYU literal 583066 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

    6. KNi~dpPXi}ui9ANI-HZvV)heGsb6ZtQ@4y?mc9|$bj3D;VhHqGV7wv*>(64I7i zJln5acD}FvU3q$YFk8Lb_x^N41sOUNDsFF^6VY5~kItX>8NC&`Ks4R*3Nj}0{(Wf% z2U3$@a8@2GZWCJUm03AHuixbOC;vahAB9MPgzmiq-o=UjZgKE%DZb)V4Fl6RH}sw; z(caSK=)P8RH5{g#7vDJyig2Q2beyVn-eo9?$DTCxY_npu40jBUMgU)-@z;2~PvgZH zB~QcZyXS8Zh&_JCpeLRp{~U}T7EHNy3r1*rE;_XeZVD#O7o|B`c2`*B+IW=v`H@Ld zcKofl(@64p&$oQ9l%6K$&wgpBrehhfr9fJn_X=V^7kBI=U(>+I5d4oKHHX)7F+iR^RoJ)wA@QQ9!$*Kv-kJ_(0?!pdzf#C}#&>tS ze)~S;a${l~JGjN-_KfE|cGOY#Y*{qrT=~0q!`8`^qG&3Eg_4K1Mj|Q7F_)-m`tPdUjXN{#>ntM1Y z#IcFqbJbsYq;u&0k(k*LPaPv`)@C0+ino0hU7LUZkJ-&vtGA#A4hctiz+ItuwxFEd zv-F21oc*K)?zM$#WV%)FqMFP9~(jf+bW(5XB7lteR?_sqF@vf@rC=~xdY$*pLl z01^=3E()QKGJs5%<>=@%F{5Pvcp=j0`KCxYqzW#g>~*{9rcIH6;7a*{3K>}eCw07} zoN(@1#m_&jVmn6#t#?WrG5c7r!;*Z7Z+NW;?=@@& zK@ilU@;B{oyzk)d7~QY*cv6toHs@pgOt3a|LsT1nE;KDi$cf68hvxZ944ex5u+fuD zukUJXeTHA=ZX?M+{U_?uBQYW!6HCU2q!kP|zLUq+j8S{TO!wvq@4fx`2Is}aAX{Rl z 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%0DR=0#3F2@`uO7(>IM&F}+m4dMD$fvt#bQHUr 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

      ~0}#L3n%Hl4u(uETp>6 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 BOlklC literal 709574 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 $zKE6V#OXqr=|( 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 {Y0CT=1q(qUgb*%biOeeIa($amMg*=)!uC0L| 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

    0T3hS6UJ8S|+<3cSF{9>wg6X{AfL6|Ob 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�cP#eQp3cZQkcd}{TdcT15;SD;cz8)AHz-XYZ z>+kV@In1D7)c`@~r2PIUbb8Iyn%B% z49n~M8x)Gm7CDpd{)6bH`{I%6V@%&*zoR#k<2LMYiuAkHH1~UE^XaB)6BJrY&dhcu z?8|(MqLtWvJmhb}rhFgCTxU5OXY`mexeqlpDje;y7+JFSXI~gFo|9uG0#d7JoOxfE z#msTl*l&zy_D2%W=j1SG)kprl4DCFm*D^ZaU;O(TIMpST&jjj2j0Rs~BU;shmUaHE z^rTwzdneN4&q~x>|DP8CXL`c~_Fq#f`C#9if5xg2Abvnms-UlvR}ZWQ=>w=UM$b*j;CzDjr=p-5X!zA- z0eWt%?asV~D%0_pzxt>91sX9;VAd5=g}j& z%vh0B==Had>jaZ2wNEEqG_3F^ahB!wEms_81jKZI;PuNe%kF}&Hm<`1J!yx79^yjKH%v6<7jdf9NEDS5C#8JYsj8tp#=m zXieVPa&z6(UIV$dKX?yo(7(?h?F5@o`xo%5-AxrG&88XLNS;5Y@|N4yT$Pxyr=6VO zlWt+n+#d=zrl-aD+#W>Ty8SM;16NR-NrH|$wYFM+GBrPpQFc$ut^};Z*9A{6a}dJnk;1la zBp_k`l4Za~11ch~hZ28?s9-iqCjhY-OXbBnAei|)X1z~3ltPz#Q}8QM@Q|Liw$&;*&JKhZLwMbF<{~H>Faxkcf7FhTrNEhL~+=+#p!QYpacN zz`ABUZXW_!(ph?gPu)P@0%qM`WN!XTPRsih&jrmL;4A|JQQSib`GX_)(|W*sis4Fa z=hIGW9&8&C^o?&w2B$yh^M9`!?_8yb53e>6)|DGfIRTIZ0c?ufS2O8`g9#6^!6)f9 zxS;{Cn}tAd%L2%Aek@E6RKId)cs!Yo6~Kv#AZk_(jEa#9WhyZ5-o@M0cL$35-aBPE z*V(itywKQVmg!%0dp?4c#uv(AyP@aU@Grh>ufdfuTGV8y24MUW?*`Z-leOW$Nc6CK zJYL6CTYsv;#-%wcp86;JRhVUGVC1zjqK?*dW<-UjaSd&3CwK!Jh9?T}z$R0tO=rUv zk8z{}xueY^-?@3uP?&{>TF)$gfi%a}7%|HAk-=^R@6*ep?BKU|X2uMQf*r5Ya4GSc zOZDNe{$=6)dQg)rV|dqKK#^8>h$A5i#)P0lV#ZXc4CYVP*55*btSfX|(`^-F5-(!A zq?AXb{F|!k*{n~x+2gxNc1uCk#!I+dDbFBm7L0P2GX{(0j|0F}=F-T+vi-9)6mLEm z@hEv__ley=m<(sy>Mps9rtWO#Szm=VmM#MYr3Cbg-@#&9x7yUpXp?yt%1vjdcx8<9 zw*EFyHo>kk4i%;@%d+e_h2P_JA5%?Lm#k{N)R zKqCMz3R=_-hC>7}K(BK0=FU!ZR9Zk;IxD}#`!yw1TBB&E7m2Dgr02ZIxWsZekalo9 zbrkXeAcCiHizC{kjLK_74P0Slj-UDf$@;q72e;Y=sk7qkciG?a0 ztT;7Avy-C8e#yq8=<=ZWc0KfKu-pjaU#gH8?Ur_1UxNHYf=fh8$)dD(h3w?EaPUzc zxfYgA5`lj28J&+=`5tYUUu)ev{Q09IZIVW|%eJfTia_9K47mQFj zN_s#Shx@|*Z3OA(u7Cgh&fp0C&hejS^*B~5pZCYqU7Y$Pdb}JM#g#2eC~2XL&_9P8 zV|t6IL~^i@Bj^s6e-G&P(=i=mOOJs6@UAC(r|ROb?DM?SFG(I$6BCPPF0;Z&`=iaZ zMcd9#0SNmuWHXqJpk7*QjfCWZG*(Phf)jK!5iFDUaKNm|fxHb%TG)5>6_7p~Tk?}? zTlwBcpRQG;J0fyp%WO-N{ro_8Jf^JmLTV|`+a=;GkK7jIa~sC05U01b>921?`<%VK ziou2f=gy(u11jq=#}29$Qv3f@68RQ(!1uGn$YAEm%O@dycxNZB{+pm(!OZY0BH_sH zp1dtAw1Ab<*}$6z93CEZ;E{HE{aIg+R%v}y2GvERTz6f~Etee2TKBluPSc^-7+v)! zvZ1&rk{Q-34|NT-r9U-osVwGFd*hZwKjj!@&Tx!S{_gt|ip!DGV4uefHVf$INY9u= zq=BOe1xgG#-@_9*9`%@*(L|}wJIOMy37&_OSG>%m7nBuet?X9#h2wQvmwk?CtyoKs zkT@vL$`Q0OePq;G>-)!GGdenIz?`rY;9OKRlrIhm zglp}~evs~Hn>*oEzNm?Z>&9P;ip=_GXn{hIzNtTlCplvHvQ{0J(*uDT1S6y;n83Q7QDNOO^|DkOHTeNZsO%+ zHp18alKm#;W?SEEu|sI4HXk^f7=@rH|GaoWRwer zrG=_il^S)2!pts&C}9cCOqeD`_H(mOj1t>GV8H|YzCJF#f_q~WoNG4S@`53pNO2k# zPJG>dP$4(>4w>uB46#hzSD*|E4ePT#y?}3^_B9(BDq45=FQda>Ce_^d?udWN4V~Y* zBjrS=M0fr4b3pv`C;bA)7>XwaKXz74og`koqLNjFK1NPaGf=85udp#ZxE}{Lq(8sN z+TvoKUWz&Z30D8#Dq|@DZb*y}N6jH}VWhwTD z3g?J}7WlGm{y4;QTU_dlw30l3XNCFKkXc7(qZ&2jH9tZE|6H3l9YstXaa6x83~qY{ zk5(6{5voybcy~DH!Gx4M!!E1%TN2=xSbuDVtvq{fny7$&ISBMPF$-QFnY(YOjMo^y z)7rs1B0c(x_(#wjHONo5QxA)sHlS|BE15Bcf z2ijYYMQFHllGzpCNC;`ccf2s?_9CYGrqyLaMN?7gDuVMtZ^Q9ND0r)W=u@0?CB=yw zI$9Rl=g3j{LWzKqB%AJV{O;4WcT6m3D?)-d;|JCF$Cj3*4&CEpzT+EbfD8*WlZv-F zU5K#Zb;U}JV3;6qeM_64cl=hAU==`U$A&P7hvekSO8hvPH~kS0aK2g*I~heITuKfG6s0Jnnem?d2Q`uw?g#As zRWaBPmtu!c_g3~gEww@NeLTHOFHm>32Oxme3y12RE}g8h-QpPJwitf{1JRfATC)<) z4-Kf{#$_>CM@Wjf6N3cGgh=Fdj@EtqIig3Yob?Y-LR-A6>(53J9v_=QiSv4Clhr>R z#>lw1zII|8X6>`qCLI6)SpO;PE%&oRFgKgj(-Ify#q%EOvux*HufFwM&(g2 ziqkeSf-R;SQjZ&Xda!krReh%uS@ z)mer?XD>TzYyBAlQSdnEU90V5@OW5MarkiGj2U;Cq8vQr@dJNgiLoF$3XrV5Ot7<~ z)}5;(mOf(mhegZfc@277=qB&dx=u)< zUQy1jF*<49jTMKE&GE{lhP$|gHd5>pXauWgIj2Ee&3Mw{x#1rU?AAYfcd@9aK5lLs ztZmRZb)dNgE_xQ(hT()2)D%u#%;&m^jc;IiD4)!KT+|t@x`~0J;;~IQ8+i)ur|19& zom5oA9MNk_#=^qma8s^a<}6RU?F;zVE@(Q6i79J=;YQ#q z6%zDk1DCPEPh0r0ZX|1lop^8c+-Pkbf2Ae%NPH!yRcxqy;key(6bqy6df8PQjn#p( zT}TAWv(i_Bx~ognKO|@qrb&7AxyX`dG z9S&L@pzJxS?e|N`xf)Hc&SCq-`uDW!e9_hQEis0!Jr;05N(=7iK;=odF)->@AE$Om z5hSLdrv9CuZ@&tb&5V`0VUgMMZ?h zDi+ux^D(nzcX%~bRg(CD;m@^S=;QUx&BIbtEsL~=hY{sU$R3S(=3SV<0t3t+b|`H=-U-X6J!QmNA2FHilN>nDAVD?;2|1U&B@k{ z;zv7!(xczz<{G^Z^o#n9JQA8{ABr!6Oiy|9H~sr3=EaBfg`17ZC{0RUAx33j{8Sk4 zuj`$y4n;xooX&F_noOhLyp22Qoqt9{P&BMZ!Wv1SXzgJ$VNhC0zXJGRpv?{Q(l5<`aR?v6|1!YC(7S1l6Q#&-bSbG`pLU_Q`(4 zl_+~?9DXEm5hQ)kyeboSw+5#$xKhnhLM|> z8ScrL(6qz-P}eJqjz9N?gLZ#YK{A-d%L;QJiSA^65746pNSXhpV+{#cR5 z&Mj%Yc*EjuR}xk}`d7W%2jwMO{_R?)?r<__&2ONmQif};uB9bHA_X%vEMMJ9DA6T4 z*TXbXU3oj(`J!QSm&grK)OTA%Y&|~%e0g=XzopI?s~Eg-zYYjloKnP%7 z`Bojei2-)Pe!8t267T7X78KZJ0k^zDdcWCR!kiqe`Fahd6r1%9E|Lz@9}!Ob%NQD8!5Wcefx^<_bt6Dq*wB5-9L zb#i33;(g{oP*x_ym+vN=Mn>D8$ht$aGDowwz&;sipQ&!RP`BMD0GOo>mhkL*@& zUf-f16q{0P=CF7U$qClSyB?XHTshT*u}Y>O@W^6iG9JKwn5xWg!7Eg5cggBx0eTz~!p58Zq%l{1#` zcK0ryMQN5ZC=G!yL7MnD|3QHd<@KpMAb0pq6DWS-JinSE8d5< zeN?aea`;FRMKu_fqJjKgfV0TZFu2{OPrv?#FybqD-sxyJ-co zLrJu1nb)tAjI<|gA>_v3*GDGF*1tV_Ff?Js*|e*${W*HEd93bxQ;uy(4@Jq{2p1&r zQ)rY3JT<3bVi4Z**+-I6@8+QnW9gh>Nn+bBTy%1a?uHdc@|IhXh-Y^UKN{87^PGZC zeJ&@vgP%>p5Zmt)8V5G?;@gUgW06%q*Zk(r@+KBtg zcJibYm>~Yq`v+AwnB>oxGMMAN$a0iF9W4~l4|mPaHL+w}!6bEmaAJ7y^JAm2K?qx| zmG=JEzOVw$V*BoYkB)`z6C2AG1QQ58?b_PiJch@{U?O^rfo&~1=ev^Mu#~b-f(?JD zeh=N4`yqh$)HcF8rFh1)Z~lxWh-UcZA0DfHFTwi*LhH0E$G7)&8_CHfAphT5vKjF-83d>N6Z-eQy&+5YjLnbf{VM ztNHm%N^GWSi-OQ-gNI>UMzPB;FpWg-ye58%M-KTO6-02g@1IaRIw0wamqaV)6WhLAxU;FmmNf$f0E$8%fCDh$WF+%%;%J0hL+pQ5<$Mg3; zH+E3ic7h1naBGMzKVtH@%WUDkUM+gp8AQ+>AHR{rYC4U{ki@RJPgyY6J$?V@7;$-< zJf|r-G5fdmq-}Mzf9n$dZa!#c32^+|a8Obr4D&Ww-@V5%ih6dWeV(T4p9u?9LZ=K$Z$lI8Z9y6g~-|aG2 z7ziUbj)Goj{hLEPm?3k%plNDHTSCJ3(F6K26X;d``wwz6UJ?L8DO(&Q`eegcsGO5r zDVmXgZvNFvHG|C)O?3GkIC`p4KjL@JXnRNq3Go_btrd+5Z4%D^Xh>zb_OfJ1W)NHQ z6|$j4P0UJ;NlkChFkYcR(mgs9x*ZG*!_Sj+OO4w|j*F^aM;KJ35A`~CU(D{o=7}S^ z#I_tFpdFCP)zXBoPUFS;e_7i9J|~yNC%O8;!~h8P(r3;W}sLnDsd!=>& ze0p>JJf`t8ZX~R zWsSocN#G5dOD~6(#k07z{Pf9Up0*0!sB62fGTL|pfmotFzNFnjhRZ<`{POt&v(Ql{9DmRgUB|sXGexokI>^1OoKCdCzOBXsejq%0m2gYOXW~1 zJ6_4RfhO(JoO*?!bz>_L5)>XaTwn10c77f6M-C-VWAg+MK|~U^q1-%g%xf;IgK)ny zn)&???@oGE^_6%5?dRd&9PBpnJQyXVPUI8e4jYDn6t78vTa? zImX{3EO`IhqLR$=_70L)sqASdy>p*R+(I^z+RBHax9+lj|Dp({TObc`MX$rcQ!C=Y*Q+#svyML zK$;g8Wo^!S1w8Mxut(s+gUl8Ynf>XfmDF_W{P^4O$9qJS8M;FzaWC-S)QTdmZF*`9_Kp(d3hts^A^rY@#+jYhDn6|N!2GB3e7O@hD%!1)aE02gf8u8MiQY%u|TI*==g2>?(VP& z!K2EIhJ^yDTfk8NP(>LJTr9&VAMt&)$|$x>P<;b0i}`FjVz(65mHz%vcUTyJo@^*! zRf=6h^-{d~z!Tv+fT62<@~zGE2A2mG#LC}OC-$3l&bC2VeIO?Qx7pk);#~lcsZc8I zOR96RVpMr%B|3zCES!^;Zaq@Mm--vQSBPhObt20W51JOgU!!eM-NE=TFiGBbmx*fD z{m$o-cG#a?8rC7YD_fbnp5x(kd0;x3NUyj!Wp*k=RIl4Ymc*fhKxtpz!CP@9s@bx2 zDc^zYfxC9Lu1a6)#)m1MLl?OZ5;QZzEw5#!m|aOVr$8_QqfV7}5L3q8$oI!NPPPux z>muDgr+0rtC>^HGmB#u`bNXi{c=TfGXu&=u)n>F zi`&}j>Q_0z*YO_TV!ch?g%bi$B$bU9y?@}NJsjsS9Oef z%PrpxTB;UN;$51zDgu+AxO(i*#nlLSxEwr$Fk6=YPFQ=6tnkE~+S#wRVD6x;ZU`Dl zp^VVo1qoYw^n^c&xbB@LtKCBrsI~o3d~@2uFn!*k&#}61&@)3*dpgu#;!$sb@8+Av zvmI*Abt0!dbAHwId~rqios%Ba^N;epFrYSSC^*22>an1=|GHE|08}WN{Sk~LyKS1W}1X#!0batv`8@8tWfm`~sO}LC4^1#eaLLl5((Ql-Lv){zkYzP)hsX1=)X8In{T0x{ve<9aKf~XgK6i&Zs50A!s1Yp8sioOBH*Tl5 z#^u7g2KKx-KJh&-C%*qn>MTt`^2e23-{ltv+(}Y*HUqtW=k@#hzy~Jt{!#WG7n5g& z$Cl)W>=lQj@1Vop#~(G`gl1K@&IM)iR4=CSak0vaV+@MB?_YrlRiQUX>+Y)nR#Gls zpX3FSg)QNzQ>Qw}<4oP~WbM-qw+$@C@f_nD{?7~WYzPA`6kg}3F=n96*y-%)qmx^b zS#JGz@Pnylausmq*(+%EiZdiIB9Vi|F)GV^~3anX%ht!$qoA zXN5nvH+OwJ=`dO=sJzf>$}W?qe5O)WRB}8X_gGs8?HEUMLAYJkJf~KSHM6kb;oDM0 zrdMvy44ZWg)ZLnNB8&!!coN_T_c@9IR1?>X96oDnBXeq3|7K348SV9B>14(CE4lGw zRof~$^FKl48C_mAQp!+(+t3)+Ptl)(5$m#dsJPtes&kqY`lMZ6_U@bB4(`vv z>KkuH03DG1LdZC(vKon-#Jdskym3tr_$k(Ql(C&w0yXWzh81KJdghhW{#4$gv!rPY zuAb5u&lT1MlI~A#zn$L;Hv6o}qr^Jc|6<&oRw8+DBlq%bucY+=X{LVQJ*i?$!v+pllJ1S?s1?$8fn6AI#1w^9e;bp@ zt0o92dT|4wXp+y3@W|pm>iPHUy`(z?NIn44wR%? z==MVYwtIOo+xiRPN>vzwb=$A;u2gmYdxD(gzzR}FYFu-;e(Izb9u8C11aWmt$Ur1m zGAcHxAJrTFE{#r-gkmuS<#ro~0gMprO6x`yOs}t&oPq*VV`=e!CCNG(0Gvx7(O;1* zZ{8p^xMk=vY)qkp`yI2 zk$iOJD@V^Pvy%rlJ8@KBh0~ev7Ov=R4U#Tkmr}tU%D%(?_aN< zDIt>LAD^47bquHY#j`zm@p)2Os$z>?sG=WSd2pHfVnN3vf2SbO>_{KbP}o3KJ#6lr z=WEx=V0|K5o8g;mX@4fvlz#_uB)=8KnGG!Fdi65RDEr@=fPav;9`r)d+RJ!vSPm5Hc#%6<5$5Oq_A6eQ+{vAF?muneOQ~z;X8(P41;D z9-DN0{zm!2z8Z(A@-oR8Zhe;qc&o-sHGEk`xqtJ@=~=WCF$FK~sgYx70R8&_g*Csl zpy@Q|McU%!3nFKCw$*Uq^oE-1>G%f6`KR> z1c$fsG#|ri%;4QLf>J0g8@8TW`*Y7M$sE#TFI{IcDO|5$SiX`!Lfa5Ou=M%A1KmXuGFoXyjYbZ zuzwU)1t-ma0Q$q-`OXlY^1X zmyWD@;OHpzOz1rzJg^=3=GU6jnpJN&vknN|Nyt3~3<4C8`TKN}Bjg5$Xn#98%-`HT_;v>HMezda$dP?FNo>l3kBNx{ zqc`mXq4^8nzhmEmS5#-Hi2uR&4OA>bR3_hNmmYLIl1KFxDH5i&t2`^i$w-^$S@fQc zowlsp(l<14EI#iR8+N8eC2*$Nrp!M`xjv@w69Ql}5dOx*(QVq=QtQrTp?HjQej(+B zp%g(xuIksX&(0XRHfOKdxiWw;B`bbX^&>NVu!Rk0 zGiyKWEhOt5q=injldjV!)6yIaC##d!Oc~gvh}*#6Embe2(ZH?_bIb?$KPp~KcvzPD zJRAT&cu64ya#X76VZPZrzcrReZV(U3FAzHgx6BS_UyrSgFqb-|MKSHscvj}(ViL$` zbsyC0*11ez(<t z#)$IB_C9y+6{}PwCmV%ZTzqDchpfs&)W4n#FZ-MHxsg9c2aqS6n^3)l`{;W7+k9tVPKLG!GGM0(pFMv&Z-Uv6|Fz#Wv$V{CGoIeE1sI z>B0fo@1S2eT_|m6tG9skZ~5*6^F--Nmw2jk=#jWp=T{Q_adGns+pD(IkoTGRFW&ai zKzc2dGSVA8h)h=1J=zZ}5kck?%FR3v`!~#yrQSO7is}S7`B@gW!>IPB$S4;Mo|Z%x zA0m3JH!Tq9)&1<-GIuQ!{#-m1XpwzcMGWcGe7T8eryma=#|VQ*`d7JM}?qOCX z8J>gW#i2mDO>t`T{1F-T>%sD|rJ}Wnq#7(Jqdkf{=o)nQcYMJgYPU|)y?saMJis>L z{5%xU#juKp-ha6hr=z>jwDQ2snO`nj@SP`0`umq2H>Q3=xiodoz`pGJs>{GIWrZ=D ziSVy{9(VM5*&|0gE)`0}OMQn86Ff{)v7-Nd&Cu|*3+ZJJC-^nkO#1J6rH7wNW%a?k z-JIn!fVEd>MOjKXB+QHGi2S)*Rq*S6G6Mq5*aD6SXM zo&3insOn1;YW3&6X!DL;#2#mZtx|5DmQT%W>_R(zjT)!TMh%UbmC5{7?PpuMecY5I zQF%7^x)cs^+mEloc&)VUaS1K01t3>$ugQ{H3F+swFVg2O*aNL>q|L*Z#zDxyG+(}>1Y`)K%gP)?}GO3>KYKRA#7 zS;Ik2o~^H+rbmryo&QgHqd`fp7V+ngpq(8KB_(K$zZH>`BnNqvDA&-A(Ha{Z{HUud z=i$Ng_We02(0jYPKLBZ4BOv70@K_vWQms|y=S1yH9>40Mb~h9t*a* zxr!4cLV1MR*Dbgoa5{l6f2f+g#3kRLxv*qse>p+K4xkhpzGR$p8zRTNQk zAco{|qAQrSDD{+(yfbP6&pYSpOkb(|Z4bp8Sk77^F#kSl`@A2}&`vhN{Gen2$WRHP zk)X|7sf8Ne$%z;x1;@l@4RBdK8!M{0fUzRDAqf%K$T+esi_00>=KIlKP)jkdn;>|q zOgL_zy8+|KZmx#8`5t9nc4m2g_}E5NWVA|{lDssKy@BS9$LCQ#!8*_{4Udd$JY9?> z8iduYqSmpxN@Q&CjyIyFz(6W5?2u_YWa@fvr)U3WS*Me?ELVx0SUH78@8Vskf~G>} zg^kBAll336xOL>N+bcKy$&TzTki$1{E?C^MDV1(*eEn7jSbX39l%$`-gEBBN28a)k z$Dcq8WOjX4f3(H2%rXEf_BwPaSg;3hE}K`|v>f6qk@pd#5TvZ-!aAYY3VV#ZCYQu+ z^-vVXy%M^*km0iXr;Uzh7ZI?ImDJ+Bu>Z$=*%;=692fE*#lbLUeg`Ne+ccb!k}}_#uBs{ zacZf}ot~z7WN~sj>^7r4l4kNi{98w^TrmE>p${TLE5Fk2kkJ!T-)a|>H#8cc5VgKRI*`UlOEK7A9TGOp;q(6FITc2$9?kMk-;g057-V__--J? z{6+WZIpt@@Z8|#uxm5psF06I#5n#Pi=a%N-)j}eAxaEQAPk#w=)E{2{zyaI&DJsFq zfT>w;xx2__4TTv6L}I!cVcT6Drv_)t$8;MK^T7yhJH*txByAlJCo|hKn%2#Yj{kZ+ z!HU6SxxbSf(u+*~EV?&E3D6296?NXt%~l1C?jyDP)uVmH%;ao%kHNQCK3fK~!ri5G zlZolCnhfURZ_<5PY)Ui7cKrG6e(|$+m0TXZCdo7`F`wX4Ezt0j{I}kTo5gIiNCS&# z-UL_n$pPaX9J09_Cdi+44Wtso-gA@^+|9|MgnGTW35;r7+M^tI(EEUeB}nfd+%4vB zi_pUC#f6tI`DipB`JDURy?vZzjkrzeTAsLAPxvp{uP?cnN4 z?)vmlbh8?ml3iE`6CY?(mKCzxiJgwcNmBoBOV0*4d4C5Z5wUUojv;9Bng4|fSt^d% zXtE?-F(o5})+dJY>kJO3zIM4ksjIo1^-r5=9JaF5@)%)dmDkmASWGz3CUtsDxUVpM z<<4K5!WakjRpHKSVzr|BPK9hjH7IvrE64KBjR}f2sqv_kG++ph z)zr1TO1wQK0-@_W68>m#&kL`g>r0EB)R#B_)^d4XyE!t>VJ`W4eu4TfJSk+cMSraI z&1}SRw5Ez84^1DGvzf^jo*ExEceMpF94KTv2g&i2ETaBn7jXzcBe!!o>9|ra`9_Nq z{P9OgTY9y@;hVxbH>{7Fo=09qReosiFtz$xVWz@8XcBDHtXAe!G^eYM7|M(vo(GeB zq^%8gJu~(vwH1shb2@|jn@iD0AtD5-8e+nSco{Gh=5fx1{?@k&FatnHvHf<$mPzO4 zv#fwt$6+>PY-ZNN-nV4Xx4AHXbM2?aP8p3I;g|X+5OtsG>h~5Kld6b~1}Y z=IlZ4&SQ7}{qqvXcu}WDPjV)ucZF^)IbWk^Uq2IC(Gk)jmnc9*$nNHp1Ul*qKoISF zwA#MK`m%gISA4eX7woR*cUb*wt@&tVgh8Wo&w12vg%KPqBThmljZfHD_RfYUOH5Dq zBld3J+z{<@Mb>7?YG_jZ^cMV5sgNtJ~BqfEpn!;h|x(p6`8rLQq0;+%29!h zPMa~ z$SZe8(5*u7+InWuHxJeam0;B?!V6XEUCH>z_&{%9Ta5rarEQzDO{(~D-tiqhU1RU` z$Su!Fk7zZ8!h->rO(q!gTwG*9+Wt_@KBa!Ovm~Ty%C=tmu)0l1xWcFRO7aMj#9iFd z{LC3SQU&(V7XkdWKY!wblt(#`MRfNTSXC&7_yk1;Q9#}B;wz`C{uWvY(Dnh^R&evv z-&wX^ZwJUzdq|JrcqePA%yc9{S!Lo=lw>S)O*mQ81x@D=cy>)#G7&hdwE064OhWWG zX0>_FChdT!FphZ(0@@eF4e>)?+t{4g3vT1E4e|jG5tBLWkboK*dD>4R zYeF_G?}&4q^`r+*6EGluBjk9&Y~fB!4#L$o1b~PBl&3eERfjOk@wQ$rXFJ@$W6Wk( znk+;W^?j`(J=SsHJKxQv9Oyd=17WHANfd;Q)c z_;*c3M6q^kA&fq6lqBJThXteGL|ZJebivyb_AZmjMM(Xjt$VkBKda~z)ooX=(y}p zn~z>oeBQt|MYZ%6T@^Ub0KcK<0KGq9ubMCYv%9O2h!^Q`I_udV&jbLu8;y@vCx|(A zV-@K&PdjoqMhn)5HCxd8iz%nZyF=~#e41c4~At%shOy4h*Q=63JTSM_a6^jdwF zq-U|$t?|(l%!nQ2v8#VOXFrF>(KmR-ISwrdXn*hq4G6(T-(CcMNo63VWCWvWePmS< zYvFvN@GEsv50aJQAs=4D;=O`(&@3G5TBGEv3rtx|`i$EWYn+q6;*kL^RUp_Gok|QGxVs zR%opMV7_wWHfjIx>5T$@CF8NcsnU%JPC)GFAAW4D^n`hyi`M{VK_Xz%QgQjVdkXu2DN4s1U(*|%Hp%Hbg5-`^R;HEO%k(L9gdgW zFYl~sif*T;l5Vvzvok<{};KVYc*QBw8y{JrQ7Hjz`>GopAC%5%yj74!Jp zr-qW6&odxrt?tOgMi+f~t+SEUhIxy>sLZxYpG>;i=U`6l1NyqfzNsL+$=>KZa^0=6 zaVQ1OEAZ9;#dGcH_uXpK*ID;vo()C^cS1(sQu#m!rsMth<3#a8{Z#Wr$k3L!S~s}o zhK6gFik*hQA4V}GO`<1#HSk?Vvk6`E>I?A8IL^kBqgDO6oZ5O{clA1w;F~|xo#kR8 z+g>T*o!7H2L(a^&?MOjm2^?r$6a-@ zpnV&VRDT6mz~nVSqIaC@+n2b}u=pRzR@bIL_0QzQl8PCjISX8VnWYS`tF}uzLtcN8 zn1vuguU^TvcyW3XC7-@-!UFD~w@HAx^bY(u0sVAw;fN>4FKYVL`#G32cbqfR3`q)R znYHI67~@Q;p+_`qIe*(~dYM#?msgS-^dLppW-?uIt>fsK6*PkhbUUy&6?7jyCO7L1 zrx*XHfR(xy|DW0-dG%NJ&V~q3?=j;!)ZKDi;?2j5;zp-PO^~fYj%4>kd=gYNRY>J_ zJ&aI+YS*c5sWJW?^GP-A3!#=;DXztZ zerb&Vtjps0dv~NvySszXldTlpK%=ErqmncDETXOK5`!1=!1Q%svkn3_)F~}=wY}pi5W|!TiBEUqC>D6=b}NACoPFt@fh#G*grM=~4jNpQ`{B+hRp!DY z(H(MDgUVY9)qq3^=gOF*+ih`0WPdHfM@ZzR_rK)4->wb+jZ{#hcx zq0_}HQ<2gT1!T0lSl4eL8FZnz)dU`z#1i-!9RIcM$*{^_Yo8>1+pw7|JI6w7aW}M% z|Fvs6OYLuQ=^n5c)mBDh0q*979x$0Mg3HOs{>)u2^5ZaTih&gBJ@{|Re3)&r@_y#; zSgKjJ)s=^pC!$+J&agRP*Uv6r3{$afhd$?FUN+`&fd6-x(j? zGh%Thp~yAuTscc+_80K~onk>{d90MhE~+g5A=H;be7#%u9Ugat(%_OM-WR90EL1)^ zPTW-$)hG^rJaYY|-p=;V23;12+JNW=VKAUNe0;9IlQ{5!mGb5!>#J*`OO;e8^)uIzIk$1nUw*X$-5PuGSY30Rq$< z^qM$M)SCBkt?%Q~wyes>m35a+zd|?fs*c59!SwhkeAPg49LQ%gA;dSEeE5GaKr)~9 zAi&j#&EY0n#1Rr^L-8_qGnMSvCSs(vdy8!g9gQ2YW$CEk%hyDpDeYlg(#^jMPNl9c zCfo5BYzG|ub2iYHK6-xReQ`nhf2Z(Wf2S1UQbHP_4pq8MwHz@8MGHSF^7uhflsh1^ z9WohvHa>=2e3Q-&qV@ZRn?mcJ=oIL4HI|*7Eu2+Xj%)F2SUta>;JaNZIStKQrLp8I zf>l94Ky3d3c&+i~mN`BiM}dONge>~IQEe>57YNlX%1MXONfDqLHG_KoT-wIvvJzeX zS(Mz|x)`;M`_Zx2r89HNJe#UFjfXmJ^qfPIc~!&hLocmW$yH!0c)rN!CC}jp9%w1) z$|zZ3%--Sv>ppnfVVaxQ`FHHESvFvqoin@De01^zz{RR8K>|(n4XjArWYA_iYd2q| zRQhMmQk~CkZqW%7STKcUBI1c)G%MYl!*Yy5t{w1GYMR`hDbd>;bZ&WvEB zW8ZsDpQzJ*73n`Il#&u8qtR*O>UQsNrAe%Ya=8H@?dW?u(m@LEcvUZeHpH9Q*6w3YCIE#%-1@Lvy;f7LPT_mGD*u_CNQRM3$kL z?t6WKz_2hdRbWPUocuuGUB)ah6rvD%_+$hVYxpjXzg}n)`KbKHu@4==5P_M*PTgKW zfl5T*+FzJRK;H}|R?m1s>jh|(_E?tlj}(MG1p9X+ij>BaYykGHZ*F$W421P=#A>J$ zNA<|ZY7#NCisZ`cnVUJbV8_M#x-qbT-cS5RHbUwHa~%I^W#X*q`+?($rhPo-#8t zRcPR+JQe>0o;FG2L&{u>-4h3UJw4@5$P1iFpI-~oQE&A2jRs!vtXBNt1K9qzs%Q31RdjS5&y{bh?W#af(|A21cNmChW?VBIQio#4#N#-@r1 zu|@s_5roGF7Gtl>9RKl1V(?bf6hKybClJ|y2M|OF`5SL%*W?IzO+e#{Z%-uI!?Dy!!KRICG?bMx|pa#^LQWB`bZUWDM&Ki_`eTT=s=3D!o{- zk|sDRjujIgBf8hA$dfdp8=Yb{7GqRD8k6r|)iB$5+7v4$g-sIc&nG?zx0k`KKEt+I zZk|xlSeltBhf=kraF&_i-1zkU*F1r-;U7AA|8g3UymaK0v}pnA?oHc#EI^zX5E%uI z-1l7g!4<6AEHb7zxOA}t!bBb8t*AMIKl{hgeQID7U7rtij8akImtSvqZ`pK-BuSBnGU=3JJzeuAtyIXcD?55JHwFcW?UVm1rK%)h2B? z+ZS1-ic1b_WzgbTG|1+US-6qQ7deOkot-gm`TVXvn7=Vdi)<}9i*I!=Me{0vJJ~ZF z9LXEAi;zA#ola3W6oUPMk#jAl1Fr5^Mj?6&o|Rt1Z$ttcODSVr$S5rOI#t?LfLkuG zng6Y<-&y@sz>y^)qM24$gXG`tEpyZ$D&&ZC|ia{xN$ZGsa&a8oZ-QU(v#ym!M7p4ebfRU7_lzj?K5hm$Kirkrj~_jXcs zR9REPAQ(qRn^cB1%8IUrl`-sZv0_?rv8c6vVCy_iP7SFYGj)H|U^lI0d}y5dXXYwF zYh$1Jc?4irJv%a1701W~AipDIS}^qFh%boM4ckr=L-u9Mf}NF&Cq7q!Z)bcwGfemG z=Bt01{=V^4z>N~`TN}NFW05cfe79>)({)GHxq0kA)>8Tw-4RM-0zXq!+lFez5m(?v zMMtOiXExbI)-ccI7^zy@A2q-T_@*%#QMnV}EiMs~7*U?BV(=bK^~IbvY$YDqE3BN( zZzX1>pR7qiXLxh#f^B6_B{AkVH>F77QFvfA%WE@pZAlP+IrUM9ZOd*ohowbFu0 z2VY3Y41K2HiC5u2$PFoAMAY=XJX>=!dZut8SoPJFaYTwOn6j28`EF-S6v;Zerihql89;N zu0!%?l_*~}h)_IFa%;KEXkkkF-8`b5`cdyKvb@4nyZ!l{ox0qj;i%;4VLMOp00%uO zjv*5ZVn3t(-tVsMtK3R#ZrmT9Irr>9~%`@ z(UeP+p?qtXnVaK7^*2@1y<@OVYo;-*|GFA#_40|{2t$R6x>sRhxV^cCR@aKlC)!Ag zreJT<3_F`|u8eQeitAPLrp;1Tf=$BiUQ+$S^y$MLhZ7` zlqy2>DyQ+WH}K(4&vHeLZi(5I*`}=fOI&It>kblo#%r>g8=rE=igdB8${?)iIF#2G zkOM_E$Uz?JsDeV(Mrrb~C6lfBP(>0oWlx_AO;_t1n|ng+s#n_&J+kF8`MbPJH5T-p z6{bCfa>i$OnrK)hrmUj02fGcj($YLOjVGVajDs=@6091w-nB;jZE9kFOj?L*Iz=Wb zTv$EeRKma?74pwWmA5%eUQFb26&}%lJMdL|keOy+h=`vRNhv0?$h5(6-K1PvLvLdw zZ^Yu?8$wb>J^lv1`TLZ^)Bwfs6baFF45oCio*)FGJ0}hdqmFE|9sT|N;NYVV(uws9 zwwE6@Ia6NzgPB3!%CM!svsNKu;P+ZhbdWq_rX1}1OTwNMUN0?)P`XUWUr(K9_BYk$ zS7tJ$d97&n9!{EterRpT%iY>e)9tvwnHIlm3sH8te6#nk(lSmBZTtZHWc@hvc4H|r zQss}T>R$s(UoRUqyoXx-tucSkJ2{lnU4}Lu>0Jk8d!^T?;bRiwvRxA=EhKCF)CUBr z56%awJTG{~pz^GbMMc_7GfPleaoHjzywKVseqI{i>}vGCxhOqNhzDEm>_0QHVgIr;hKHg_?yc8u;AfjeN&%5+Y zIM+dOpZwr?&tBVf#!MEXgQ(Lr-V$f4Yo&K}&uJO|fFQ)L?i(z&pnH_U@9aa*cNboS zDcdn#t#4EQwlzXfTPBL0FR^`A#xIWVK&bKN(ms;F7Pd0&_w&9HBro1yFT~8(sd-0F zMuefG#K&+YnP6eOQEu>>jii!1LUDG&weoB95#AZmCf+MoRc91v8f+`X~*{xR@|ttPSr z*pEF*B4sMZf_JmBR9B^ks_Yg&a_zTrb6;GHu#|rpYku!ZjamMFV1$98=yqWk&(Z2N zxYg~dx&khuQ8CI%>2H-;=fhMkgi9POyriadIBp%Eci%6P&1EmIKmzqVsDE+?G_Y`rrj(v3I%eVgCkB>)wk$7B53X4C zl*jH(8{DRdFS4#g`u-}G9Wvr8e2uUAXQmuZtxxbg*O}eB#aa`p>1o8v%^jw;j~5s{t1gg4Gu3w5WPJ7T7KYrw|&K6 zfABju^Uxr8PhCkzQCz_dRV1zlJ(FB9GEQ2-7*zzjXTGmd%2uayDe5OGeEhAkDNcO4 znc>f5pVylOT&YI$uV{q=bKj(f`AowCr8)_GP*(Hj$ku3pnaFj~+$dziazUVtVq&bS zq92pobzK4%q#HI5C38_3l))!7mK_t^9mvWEm5a*Rfo6bUNm*anOc z+1V_Ihz)mIc=>OeTob&=ix~6`kKhRAoN4~L^?OoL^*UUdiI}A1YNOct=RC*AbQ8gK z)UAc`Tw-Dx+5wz%k2foPWo+8w!PUctds`&J-*^0GsxP4!Q!k5pt+X*59eq9SVNkj* z?L7uC=aFjLmy!9!mR48hlFLf%VlO7UJepi;#jz0N{^>t(qf|MuFF~uq%*MzmxDw5Y z%qYeaf(!6FJ2Sm~U<04;ON~GKo9pO!s){rn({?OARCIQcR=^Q>hf@YEOvK(s0XKdXl*MGSUaGN@#kF$*$ zDGW0zWxseDMLHGb*VwrG=D43YAZ#UQq+89RmZ>HUvswSl3?tR>-89A4Oii_+s)Pl? z8@tnD()WW!%sr=rz4@?mk-%I-740e*ozL<2er&gZEx{4(*e(L8GH~ zii%~q5jIb3o~!otOeU;CdE}d!zL8NeXep6{Ge7q3OE0k0kc(b6kAF=$ z@7Jn4;vYJD&7GRMcwOe$#d{=oJuuh*cuxKT_9E9Uxa7&@(-F;AO;+P-{ulVL1IDx7 z0uBe$u$mUkr|%9+44zzHNJ{qQPFYGP`a9?H9f5^qi5A(T6DGWiDoxX>A!JrkjcuDz zDbm|rm${4Ki`tvLs@UPidKWXfuX&Gxn-!dXv>$4_cd`_6Xd~^JLeCfbyCl^`NX5mi zf!Bz`X5cQFPMaGDIGNkuUxcxs<8&{SHJJJmv50pTyijI!wBQ+%*H933(&C`=BxiM{ znK_x-zMd@=Ey5_*C#c+c4ZE{+Wp>~`$TUn9McFfX{uB;PbE8|@;bN$C)Vq&IOuV;-x#NHO)BcD0JeKL5 zqZR%Orz5^!b%7WmmC-UEy*}|!ejMruX8V$hc1LfX!djgL+Wis6G68iNp_U;*kmGHYRaCa8in!-04@{O$z8FgrDDL5DD#|4NXkr@L23Mh1qw?&JI2jkcg3A<&l2reaL(ovsPEOOWe>4>7-N!jt3t zk_*WyCylS2?Mzm)o2uRy=`di(AUYx?*S98(TlP}pKo?VMJVwB6E*ad__FRG}%2OpZ2pv;_F4-yZJt7&$1I>+vk_=V~L%f1jN{IIx2-VW)Yepgh64{dCE* z?|IMhc!9e5YH;MP;Hu|7-BFCX>}}{Y$0Q z9B2#e9(Q^Amn)@@9h5>sx3`mbkcK+9(K?F*oAI4J^RtE3oluYZO36ks-onDn-n%ie z)5r5L)|r{B7z7m|fI=ExZRi;NtX2B4%SAzH-E zn9g~uw7a`^ZBVyqYZF63-XSzRymS^b9}bj2jfHHtZnId}yWgz8{q~9byqT%eMAQGi zq>`m$vGbJ`?a8LQm5yr(A=;7-ZMd)C*~ZKwT%2@gg+;2v&Ti56cW>h~4)S0SnWVM3 zCpqYdPZ7xI7G-dx&i$7_)zq4KRxDazzjw@axREj9-Y;esuuo{nBv?ta+1Y4gyTknQ z2>zXdqS<|otXw((Yo%*NVG$n$tVd~2mC|~e(1eU!!C~Hx{hDsF@k?Z`u=+eD2qMLP zuF2tV1$+%WW5CJyB~Mj$z8<^H_n^zw%5tqP4S|)KmfB=QE#YM>`w=aS7%>m6hRelD z=i?Ejbf8$*e4&B`hEXQS+*P)_oQ0F@w+R8YA#@MM&>)K|zWd7+OA=1!YP0+Rix_K) ziBbI1+zQ#>K?5$Rap#0*c+6&JMA2)<%tW^5iQ zgt?@pEv~9)9>^iJTG%fxVR9#`T;qdRj*L1nHyGOJ`+R-lO3C)oXHnagf zTPeIWiy`F<)q<04X`aRKq&Bf#Ob1O1gea(~nW2xCok6aFpv`j}WMR(0z$kaSINAIx z+KS{eXOh#wJQk;|rpEZbx(G_l<(Dc>{UAZlAAtG7>rI8p}1g}Fq z;446SD7VxPi1X*0j3$dsz|k|(|5fAv(ifI%d(S*Q=kt=_n;d0P9RU02T5Vi4XXRBvNJ10JdP9iy++qKQK?8eEE zARR9JWouh(Z3a24(h4l0n#1$UiGkj1g`tx!Lig#qD=hjUt(G1u z-M{(w+xC7wzT9@3RMgOUpMU@+{>N%8QqmLGkLyAb>OLPqC_%MLQ;=vo#;5KHLNabn zdmZd%pshovjnFxihk@_w)b-Dv{nypOYB#d(SZfF3(w3OM;e_JI=iY^da?3#&En)_e za47-y-$62hRGth1*{Ox1xN5jO8r;j9roj=O?-KWEY)dUZUm5CYQ&LJWj8C=5>%sv{ zE(YA0h9nC;By1~mj3>^&8$JDwajW2)u!k1TE$QHv*6of5c27Ee-N1r(4Ao&k77I+5 z25;hS2sSpy!;Sb4RUNRNaa^Kb7P}_l{w=oGb(+8!h_$o3J5xDe>w18AE_lOP@ zSIgI`1P#L#rq`T;u9PF~iTAIUrlR{C11%&3K9cj{%9sg!eAqf_X|4>OpM;D?E%cFd zvqc7FQyX^qh7maW0E8H+JU(1e+}6E_&)xJHYo^X%d-+kgJ{IGRfaxI#D*WCQeMcK{ zV%f{7xYI?PN!k>j@X<2$nGxky>v`k(guXvLhQOUhki=D?<{;jxlnFA&tI0vI_t^s6 zG@~}!WZ#BxxTJON+v^{Ls+|Jqtn!@BwiDt<_M)aFf`iHQrr1DRm-i-3bS@WAB>ePD zoAFWQUTP}%YPX0r6Cn=ULn@Rocx0Z!)I#4-KjtJ)jg^_%msgWc)m&evZr;z52MZIm zboQbH*2c{Va=g_505$l_$o4y}3cW>a`51n2o6X>Hx%vn}Swoq?4mAbBHPpF|RJprL z2dA7qA~5Bo5q|(|+zL;F$Ja)~m+I=+Sh#@&G=c+EeUjZ0^#XY?^i(Ga}$L{24i{P1IR^OXtQxbkpr{jB1X0^Kw3(=;AB z4_Z+#qTu3*A2%+v!)mqm6rmA#!llhgL&#{U zioxV z%p2AtNLHB>EAsJKUdl`Pm5!3^5XYz%rW$Fmy05fWoxiOotz}LyhGlC~nU-qu>z~*V zY*849AiWa?=eK%jsQwH@n<+4?suaH3fvKr%LQRja-3_!A#sFc7|Y3%6hIRl ze{n6BoTEL(=)xkdoDIS%3oGC6Z?wID+SEE(dd268kIkFd7=$zgbJ91-J8CIuf!VmS zu(sREAF}9t(d>Am|Lm1`)ZVMz*K3}%+Am-Mr!(MzyIeQTbEzU@)OhZnS`3IDSrHJ8 z4J`$wa5V*memzsbDx!v;;zd82CVb_!3j#=S-}|i=9NRrjG)|Aj~a_DpI);H5?EU+-ijcT^>68eAVl|z$PTaac!hb&3lcv(;=_Hm+NK5q z$A!%csJ4VUw#kw#htsxre^j40K416X5P!#DUqU7Cou0Yoor18@)uFB4fZaX0Ov`YZ z&%6N*MSWK^ZYwtNo}RsHizS zsA31)2aAuszQ8P+UtW#E?bj^*sUTE$He3C(+_6l_p?e@1&`ZHY@u_beqp&f&wjGb;2+M-j_uB_k|$}FV|Ft@iZ+g{%P zdjT3#4y`BQ+v?XT6pNBptlM2jZD8beBK>@m;Ww?g#vu3Pu~j?2lK-WrwV{JY(dG<# zUy$i^?j!WuGQZ#K($1bIb^_6Y+425`h~K0oNd8O@=||J9$FE*6o5*hV(La$>z4swA z8MFN$fXlZjyG?27k&@@=;i^EOHrWvBSrt~kKkZTHN=-?*wmJusg#>Ab(OtRCN#EBl z!D4n7o4vj2oGjy&4CUA*J8|Qfq3qe$zT{l!lxuCN^V0ez*_hB1?^rioddC7V-xn2= zwH||8Ca15+8gonj$lLA5FOw)JXpDzO`Yh*df30l^&Qu>@;a1_dfjr2p zgFpBqnQzDvbF&i_#AF2?o(A=%OHC2K&pbPZOibSjS07usS&{mJY68Hja2d;-$*^4Z zt4iZFFch1q+%5Zs^}L;{MW;T3#8$IB!uSAP#Xc`f@lTj|lkr!5iU`$kYz$$$ZrgA# zqzEWEEC!;LbYg=U_c<-itYg=3VL>(tSXoo!*$R7NhVRI0T|=weBlh)=k5hQuxUKOb zMS;0(INgR!YzKS;Kq?}lCMWdt)P`K^GtxJ52#=(~54}b7RO+Aic$!VqavweJEjs%n z@$Xvt>or!Ig`1>gFNfoCTaFiD4&#V$BHv(+?o?{U+>glxx7GbA7?}k)T&zVTc)_#` zVG&o(EVldhg;>q&V5~s9*Hv##jJM7X=-sdN*C3KoeJ_uloWE^S3t@BD!{t&D!Hl6h zII_5!3Cro=j6}pv$Lkn?GH4ZJ?);mjSyd1^6!7DZ_$H(>+5RQU zi}RzUqza3e(b9h|o-{lXU80&0{yeP^>i1SM~bI87d;vb<8Mw?edj_ z(_m#?T0j++eK479|N8SU)p*CdjE;_Bliq~w zxN*<9@3s<@eNA(N$hcQZii*DB;oi1w4>zWprnA-4Y#mDI1T8&u9pZNb9E&Si|F&3Q;m+=*+ighOs{q?7n6|iFCNyrMa*9MS=U-dOuUOg zwX1P z$JvZv-St#J?|VzRi#NIj<;UiUM@BN*jKN$n66$SCz~PTY2OuecH?^ij>7u-TMMaop zCiHq!g~T)u)^MQ4Zn?7wS+6L07#W#VcKD5e@d335bIH}*mlJpC#Oq(v z2;>yr+F7YU#PZJQyR$upo}?ONU>Lo5xaGI>fHT;5a7d9Uvak#|I!ixxwdSZ2^75~B z2ubHJ6wq9Hp~US@MNLJBMIWUa9uwbL*zs=ra+CybcB-*%TdUb|5pZtb){a0oPptVY z;=s+uAQN1_Og9Zdd?36s7@U64ftr27t;F9N!)QYLegQ_*HFV{z!5*LN+Ya4d71urk zG==l?^O7>>XXR8hPC<>q_B^-bRRJi+-DjK`oi44zvAzvicFdZ5@!~!s)0!0$*tK%& zzxg*(LIOiT;;|*k)mW=+J)pc^z`>r>-skS$RGrYjt;cdMU2MJ-GwGG3KU2s}g(D{> z#soa8sZMNcwAW`tgf-tk|E{sewBH$3SxjzFo20J?WL#h~?*=i~gsG?H;OQ zydhV|LHJcgJv%+UqwYv{W5GEqt$;R{0j5I%P)oCQgtjJCyi8^;2SXD;Ya4N2yzIhD zTBXR#Ssfoi&I*C78)cwjqBmDWh$$$l3ToUewWlgmZH&|N+mfG>C5eU#-F%ioKf;J% zFnJ8MT(F0IF~o*+U+n;k&#O()XOFroDx>0)vj)dt?Sjmwe!{K$R2oVMkpJ!7~-y#;cN*jJcB{h=9-xJyS8Gc9SK5o-erk)ghza6={Pc8o_)dq1mb*l#d^WM4quOen0Re{DECU1yrODH zt|#FvQi{*Nx~6F-nzz4>gZ4%{{N7LYpB^}=-d~fyzHf-*$YlrA zQCi`p1EdMmSesJ^=56Wc4Cd=xO_|-K6fZ*RlnFlCkxqa8^4(koYf!}#VFdbCFXA?0}==i?J-c$oaX`e2f3N*i$eJcc7Qh@~3^fx&h;FQ4& zbXve=(bZA$1>{_!IwK0PyE71!G88O&0zpDrUnT}{D}p7*yR^M(Z26@+5kIQZATh}K|NXOeuZ*Lh-~N1^X+PJR{&U!X1Zrqv z6doD-MGDupJMZ{!&~)C5SgwirWfEd8tO&B{c$x@RySsTOyxL&Vw2b+`H>cT5krLFL zO`C`$y}9SHXUvjR=7>5{1Oa7A{(LvwjO36k5`MHZHtn73Stbo9tl#m`$$|!G01w6c zA>s2(*IwW@1hEuteh-y2CLfE<`^8T*BgMtBbD zs>;6HdQHsX$e8%h_1a&iTJs?`IT;DW(XI>$;+@eBu|#zWo)Vy87a!feD#>CWyS$m1 zDEf)^8tISQ8PNmgq0R8#YLa)y#RKkcw7t&qv#>`s6zZ%2K`CN$7$DJ0Rae&58pP?o;-JL(LjJ3nRRtZO-mE} zYFZ2+=2I9xT0o(XXR!862FAvEyKY;}m6Tl*bhn}m2#kS3R|<&nDc{X(RH9buaB(oi zu0x{0H6F8B;q!6I?rX#!ED*Ags4j;ya-;?8+-kLq4rFBXj}gzEWa>duW;Ey|G479T z55^tYpRo^Wa1TYn!s`5qrpEDo72yS}+w8O6)O2a>QeN5B5XH-;nu!p2r(;Wrq5$tL z+Kyt!8&VciWKYb65+|+7+c`e|dn(IYYwM1lM7ad0oYq z*gu|`>VXvfC8IZF74>mXUL$B7VL%4A0$deUi<+t^MQ58w+nW z9>(dkxo335b2{L4ox#$0ZH(JBKnl%uPG8n^0eZ6iF6F5|RjDN-!wP@VZobB`@BEtOASkFzS!85r6Scv721MiIVUz$Q zF_%`uPG3E(K29GXf&n6+WnBGH+uHzSrS^Y9ZMkoZn24O9K2}+&+v;3w9KPef&xH5Y zg}T&Y^bDs8TlQF#T_rxlV>+X`uAA7Q*?coRlJ)BeEIHyrHDWz!3w>^I!(X7uJyu)6 zObFpfIzOjDBH-!R8H?d?K18s!^`DrFJz^f8N=-_@4{?f~R!=YhRivkseLk%W1LLTL zvPmD1Jxc8my1NJ0oW4<2MU4KIlU#FB#9>d5`0d{$Wc2U+Cnwl1K)#MN)X_iOI<^fB zy(1+p(UviVI1E^ooF9{)Zo}q#!hYXdmIG;Qm2p!@#4qzZsgF;!Qw~?9xQx&{K(dDi zAmr|vL$$}=_`d;e9cAUb!l=}Ci=%uJQeMB$4_s#(T}8Z1`dBz9eox)V-P9DhjnPp` zU%*XlSz)BPvldH7HI<3;&XW<)XG~wZ{?(R6xNr6+I!sDKln#7H{;k=RLEyoH$llkc z8`GpBe$dvF+7GHL++=$;U3@`tFvoc^+Rb;0R51f;2m!iz-Uj%0@QMyttr4PR#N2d2 zPD4Y5wqI2p7|gkRw>74xI0_qk4>uz4Jl>@Er?8qr0M)RbDLi7-d4(8~NNQ%X<3zVIVy;D|&0V?TN57PJ zvR}vfZYoSo-rJqp9Rws8LS&P1WtHDD;$U1517rbGUm_=ct2<5MeZaRykE zOUSs?&&qR{1GyI<1#gV@O1eG{rADZ5{`P93{i}O*IRT{)t$m~bR9%VFjC5y1MUbl$ z`*2wxxoUJ;4F<5rd?E*V0dKYmH%FOjF&HBkBZFK~<4eSMMn>?)J1$))8*#F9&ysWKCEN%6XPAuy8*BTBOiRgRO9(8+LElQznKMc zbNbBRcOObQ@}Aqs$^+8=U1tb>?{tY!UeQ8Bf~>GGdX){i%2Pn792qHTRDQnJ;R5yM z|MBz{P*F$Q*C?U_0@5WQ-Cfd>0@BhQ64D(~N=i$2cXy|BcS;OBbd7X@eHj2|34=iRL28jW8@Fc45;CwPyR;) zpt>1P*s#tbLEjTSGVWQkbnJb5C-)R7i|V{up?S+KVkXnrHzSa#)msSv3Hfg1vwvC@ zXeubFFU!BE^)&8kL+-IbnEf==?{mS-+%fSeKJiQg7}M2ILo>a^MSy>b-D_KV;Cl)TQj(K%E)7L=V_K{4nbJpfHx_f(< z>ADDjbg+n&s%yNa4B&v`ZtW+)73-ebX6!KtSP0x1;dJXXkLz755E0;& z)g;>is zVnk_KPIbLJM+d3GL*|%H;Z|3O*n?XulU82)wFkj%#4Gz9vG;&utmNP>I-c^_dpgj# zR)3qa^YY~W8?R^Bj6^5uol8%bTB3Xykft!Vyxuz~njirJx5m>;)pr{*f6E9MS^xuE zj^8b9N_N&W_IOTfhZ0!`PE}S8h9Li%hjB&*&Sn;6M~rog1J+kuN?cj~X@by5a$erc z+1WUCEiF1;EMc=aq)Ck5G*STYRCS~oQF69^b{nB1AugUsyYX`R+i1l@>Xp~Vv!*xc zLj`|ycGu>@FAm>*JG6w2(}@Epa)@2+tgq|~ns$V2!_e8Wi~Wh%TinZ%kMi~3qT8N` zmh?a-RqvMD6H1@XEJVHw6p5Ej+DL5(9WZ!aZnOKsWABkMFq6UbL{)~Zd{`qaypAgS zrAuksiov+=C#~4HSce14*C0$+SuFDhoL^du-|u&JPXC6!ayA@FtG+vhBCe#)R+uEo zV^&5e|3>EIbXwA^C1v1fxcJk_PEOB+6|GrEW!mEhx^NuK!(Pd7xU zAf{O7lWPENiTLr!w!Q%4PehODk>=!UoH{ew)X)c1S9`xlRaBwZ+ z6-L8@r{!G$%fS$G4Kcs0qbNXko=gh&dbtXZ{MOmg!-;n5@+?TGUUY(#lP|Jz0Pf0l z+LJpK91l=IY}^bStDjALm3VUys`J_5NyTKaXxDNxw)(g9YVUNPi|Cm?tp1qY+*VB{ z^dG3zvZLz>wc5N%R(~ROA-My^n27?hHb)i~;vxZ08eI1m2 ztQF3&x1RqsnBO)%`!*eICiTwwAF3w^egEb;`fYnxCRCjQLy=Ee&CT1%fSa|*Tl5bX zQ(cW+W$D8QIwpT^p@(n)oVp!Xr}O-~6u)Anb^1m|MAbDw<@x*{-k465I)BE5apU(FBQJY1VaNK<6Qm>UqRV7W; zupN@HQ+e9@pStvwx?I$H3$@X>breyyPG5s|PXDIQ41{|unr3W`%=V}EnE z?d%K^`mcxE{X&{2I9R$`RPw)%h4I!s<75=DVkFTln`B8gpxcwJBKW$@Qpq&eV zI3KQb)^|64^>y09eXDSekVMxz)V9Hig#NWWe7c}#Vs zXZohySqjb(Tyumr$RbeAU%C7cC@DVmVdf@{9&p{*5*ACl4_cqs>5oEFz`8f}Jz986 znY*Q|Dy{hCi`zD4!275GpLdOQ=DuKZnSo(Q)khUfEKu0T#E|GXX(pseN_kQB+LrIkvGG&M{`g>z}d z?AlUgWPtGnvCPhLxx^d(lP&MjZTI;^kIQH)p#DT_4NR0$`E-4i^Qstg3_-h`wa#0} zYkQIt?!c<3i5eobZ?jv!7!>@u(5^HfIIJDH1F#2c>-s9GX8c}EHBv{HESHaER;42( zivsCi0Ug~RR#nATy4VE70M8X>Ui8ct#!=B!W>$=Zhaqnf@;onitR`^afuw7zmIvxtS@oMc?kwscza3Ro~Ew~xsWFXtP>_Y z)i?k*vR&g-)&IJ9Ap~`B4^8^4_?--tMf5aP+xgKh^l+#t4NB0`%2M~XKh*SIQ0En!;Uuzi-ttyXl6);qiVW-RB}96{HPYk77GR3Vz*em;A)~ z-9BS4?n@>B>d^XQp~vxrBWkcDWNXZ7}sZBR6Hz%dRL$n2IlB z-Jc?PhBsMXWH12uI^dZpx!Zrqi9%1d{w{Y@<|(P_3WGW(6Wy-l+KpNF-gJ5w_K$^8 zE8%&?L38R?C=S@2+kJ5lO}z0MsT`Ub^~HtT*<8MbU1&HS0rnse}RNHT8f2mXxKHN^bAC+bc83DOh(#!LM*HqDV z*ZDj5S2F=#% z%m~7rZ`Ehfb45aF{CPG`omSF}K>|Pizlu`xqT~E_=GSo>t4}m;=e#?|kJe9*4-0p( zxVNXUxaFy;?HDei((vXzPeR+H5W=7p1V zxP#gpL{U|j(3eleJE2R;@BLQdysWG!l*RC8CzHr17Qxpw=&=F7LAid%v=d0Fs_IR@ ze$S!DQ{M&XxVfgo5A0MgqBV=q_rTESAG3BJ zj^xz4tl#o#T6YOPik;?t=q)6SD25RZzYW_#x;A43s3D%K z#piX8SEK-kGBhy%RTPY5LiN(MnU58Ej*ix?sdp^nnYIPf?OA9;*fTHsFt1*rKl-^u zkG1%Z#cUr?S~f(-$y(rQwFsCCCO>MBu4um990dBrswySx<{g(9!lD2@6`Vw( zphOb14+Ys5^#kw4vV@?$jHhvLfI>prFRS>q^E7wZxaP2yQ|J7jY+V>gbzd*H;KjFL zvPMoVgmR%>?e;Bzq^#S z3g-YBAcQeZcO&76q69_2qxK_o;n!ncY3`qBVbpy z#?HjfRa4|s5n$flk|R0z8HqK{2)YTF93ZkRaZ%AV(ByX!kz3`h*v5rJ!)$V61;T=( zYzWB20udMMVv4;Pa_&E;Pp)BKt1vwc)dVm3dXP+H<&{S0K$9RJT}U|N&(=kNH2#5A ze72>Kh8{L!I;E(hxLte>_K6;+WQk&IGSKJ$P%LN8Ysd*j%m%n|GtG}Cc?uMSMgUM` zr8dV)5(sX9P;S1Ql!A>LTvfz-qk2Yr8#j;xGMf;ccqnk^vujRfi8UR6oAp|^jUlMi zH{CX_VUI63t$e>jE}yaC|7jng29pM^WOafT-(RPO(fluxErZV-BzXSH8eUISL#4I1 zlHfa44e<>X_l4&tJL|tj!4+;6bAxH}+byBWbQ`(&^z$w5WYn>YiSB71(QC88^_-a-owI{va}!Ca!?M7=X_IUk!S zYFrW^2)o?Y#KLP}_^{>~bSyn9o3ZZTF&Y54_E6A*vRMis;$Uo|;0!no#5rNAuKqu* z+jgwAYUHz@*0)+ghnWQX{QqeI>LegdUa=uhbvRY@`n-d7>-KWn3AF}L=F4lVALr3O z;?$ga1NzhV=(wb>*Tpt_7URD;Wf~*s$Rmp=>8pf(n05-=T>itHYTBP&wc|&e{WUd>lXq#RF$(sy5+Kc;PD=`AG17Uj9gY;U{KjVKrKY zg3Q9rsqCmO|D;Ub99`w0Z$dS%P9 zAO*(2PcGT1@Z+TelBVkNx^attpK?q#$Fr;X`s$f`{!RjlUf`)6@;9HBmiwEq(4NMC zv4VreIhG=03wyacCqQ@FTlhqIZ9Jz$(3p2F(wp1lBc-Mpl9QM}5_JL}RA<^LNZgy9;TPN;#hLUeAa&I^+ggSV~9Z@Az+poXlI zR@0O)KV2F@Y(gqHxYs@OUl4mj4F43##>BNi>F_q!0MLAYaI(3@lV zbMB{?zwrru7Bl7uIUt~yfazXuZ7*+(hPFS-!BL)@1PzzzKx@Qr!jqQ1T>qg+$o3dU z1=?Q4>9Avy<)eW1KqjF!%9?zIoQ&=nwLATVwRZoVi=KprMoy18nINA?^vTITDh>)s z(9Rg4VXT3O;IhF|#Q62BjH^gi~?w> zS}wQEMh`W_<58`!h;*w#0r1~9&qWpNI+m=;D)VvVRS2!vv!Kq5#wtW@d_uVVp^F_)VLLrqd|K^Om3}scC1nLbd^ry9kB#tYuqET}{%cyrH1w=4D;! zK0okB7%tBA;mdshX;g)}t?|WWLpl)`M^X5^D@thMqxD*Th5Hkw=6m~!k+r?}Uj#?N zbU1SXxL?I7;p9#&$i6_!YRHgKo2aoy(7P=6i-IB=*t)GZ6OnpXuzbFu@i!5mDI{Td zK;Ua17`}p_`9WGrcUaOjL2Cu5(r{5QtEXTol8qfmWp1zPn_9!oov`*c=bj(X|xopa};PwQ(6@UxTtbDk4u-FVoYSH z?_-ElT6D5&bobEhDIQGNH_DSOF$Tc@{xvNz#13Ad>m_@|;=h6I_46N~|LkCQPj3RUgiqU}yBr22Fkwp|;OfIFWhTmEfW z@B9@whQWZQpr>Utf>gpiJ+Iiy7kO=$oS=Y6ARuJ17=&pHJa{^t=Z~|{1*3j+{T^gO zGnSTewGX;KXFpH@6h{`mT7nb3k(rq%_^!E9eGbOol@RT%zfy#GqdMx8hS_Ay8sKbI zc~N%jyzPwyY4d5G8=Ev;LFM=-OIQ;yeisuTi%#SevL0m^8YWv&?c%XHznLRu-6x)H zqyH;A8u{;E-UwEu|J<*n=*`t^EaSY@>08Ri(!y_M;g_G&?Lo;=bHD<}&Mnkfde5Mw z6vdKZ`s(GsgN~6MF|P%CzvVzCTXMQcAe^YwpP}+tN_8uffA#X>U#4#$vb41Q2iQHW z3%5XWSH2IABi%32d>>i{x|bh8u0@=>g#Rc4YOG^Fpow%D@V#O{lI>lt7T~MD&jgC- zJ~5#B1icg5H|?4m4F?Ujp@&=5oIJEUZwYSl5n3Mu8k z7p;Qx(;3^0v}zIPmACXDp?vdYF8n-=nct19ED#-+P*h5aHM>{2Rh>Cny70FYZ9Mo> zBv(e-(2!sB-V+Y*u~#O~lZE65QsEm4l~+deq{32UYnP0K*9N;Ha9qUvqRGx_G@oM> zRH8CUD1;Fxr(-E-=xI-Hd!4{4=2ft0%H>fo;t}(|g|3J=(c(ws2wlKJ4LRw&dc>7N z670-9Ha%UMj4m)U8*;igRiQT}jJvl%3K9D5&yL%54eM|NLV)*RssL#D#3}jf2k3+Q zruzJLZ}%ogv#{*a+^jAyGEl){0+~-?$l5zzY%w!2Z6{y+ATg0w@@f+NbFpjiyhhgM z1*>N1f=?=Q{ILtc63qvEo&^m&0({VZlo_;@FZM-4SJNH3*}wuQ$f$g(np9isI0CJ7LklfFfqvzEA|r$EWRIrDZCynS5V&yfF+-aLLPf=QKUP=V zw`Qm9a}KMf2Z!VSRt%rzn{;XOu(^aUx!XL$ew8JoD0U&3a(WA&EBO=t`Ky1|+PLv2 zX}6v$x9{+wOHjA8+iv-d!sTybiF};MGa=I1q-v#9TBY0Bg~#X~Hy^BP_t%$OxvvRO zlKMFMzG$hRZIl`HV3}rfezB9@6gU8Lrc5|BYf~c{hEgSb&Xyee{NT7P_^;@`b=h>QX+n*P= z+iEN|)2UEeSXi0#*n5*iz!Y@+qnx(X%tgKvFofx| z8&#UEihEEH;$5pTc_t|opWpBeijU^+T%}0xDpiUuzlRPCHap-NTAByTl)XRJlQ(?$ zOr^GZprMt&PyYr*5s$#o!0L-(ibS#TUS}*^fy#Bau_=Ze zX=-Msk2O)!WU1&EIBSWX>SHsOJ~_Q@nG?<<`J9QI(uvIXaNT3dsAw zWmyd4abYH*1gC{JRd@V4<@Y&c?Er!w__A~`#b~EVBS*r2!eQHb;wpz=%AE8|?AZ0m z{_x$6!yXsns<}PeS!k%?7;AM+QRkZwYWLwWtu#&1G)<{sC8;ds0N)7azOl5fJxliZM-jkhi<@=U9?A@vOFpJx6sJ@#cLlT^|7Ep3c`zaC*)-A3O%T1p; zb}mjKa+~tKvn;i>EAjVD#g+(osp930f$^m=K1O;e^_GGn&z^ppi97q~Ejsqt$POPx zF8@PgU27?}7mCFce}*6Wt!Fw`d!Dv>vl~`=Dze_%PtXJvwMw>CTPvAq_Dr1vJ zRhd#qOlS6|q*}?c#>-q!b_a7HJt#BFp;eWBHW>*nfB`I zawmqrEx5Uv=o%4j803+Xzxl-xx}s<}367v!c0$Z(KPm(*=dLe*P-+=aZxM^HY~-Nf~K!LDHb^+d_)muULH5gP>iI+PGh;^t!O7+3gN8A*z> z4VnNG^$o0j{1Xx5aPsE=svD{eDIM@##k?&~@sr-ded{Miwg#d`lhbkbQ`Crh=Y}4n z91!d7YiLAQg(!WnK=gsjJg{?K8|q+9bb~p@1s_S66hmAxWA6szU(&kh8Jx)vZ9Jp^ z7UK16z<~d9dX(7qwRn1IU}W1XEvn;Z*SCi|$*)=J>I{k6!uow>FPsmMKDtWqzEq;U zkdXL5K$!V^x@DyHiP~BF=3oS|FIn=eES)QnE?>;J+^6s(g7&wl?Fu-cNyKGoS;-n% z82u~_^KYAaYySQeNxDE82Pe+eb#~kE7Y%{nh*B1l(b_@SQb)sl!qXX7-L{9W8~8|g zXTo@-xJ4zKJ$>VBMyF^61^>Z;%V2iCy~MT^mmJxh*h8XJ50gw0kLPLa?;nFY%c0Ur z8?Uj#lTY~N@y8IL*ext9jgJ1A9f!lk#GLpj{??B!GA&KY!~_Q)U*oHZNv2ZaK>wAg z5M!;T==U3;p#v-=1QV0T7FwG4Ay#f~#=E(}!RHPR>{v*rlb;G2&)A}Z1RG;B=u(W; zCCM^J7Ln&qrQ}h^+!C$Rtv=F~-}DmryjK=DjsH^M`0z~F?F6IDa!gb3GOtbIEcVXVXqMa5nj;esYX2AQ$2O5gdHUxe(9Ok~egD4x%JHv^X8mr) z@icIRq)K0=fxFIjv@ytK%<9c( z_hd!M+56!guBx|69`^}?a6x0Yo=E28_4TVN{S`~kd{X7Cn4O{N<9p2@)`5DaJ?$EL zsikXy=_0~km9edIrv$aZJJDLFyR4`bxi;g@k0vaLYVwokFj?b4dT>0~M~^dy^7j?- z5@Wr5PP*4^`dID7yvaJtPiNI2QwALhp85Zjr=Aa7UrWl!;7_&_dRs3^1)>^Cl)itB zaJ2lHjDaDgSdF~FjXkNL-~$=CQBZI&IVEMOj8S4TK4^anZPfS^C_~rNd6%B(_js?F zs5jmN%e?d8OkChWcr@Ai9Tg`fp^Dnr=(f4NZTINK#%&`JpWv&_)HO1K&&Dcn9Zc;B$K8*9Kti`>=_&`NJ3~4eH4Pa**!BS zIju2%$WW1UY=Ygsg8oW|WzY4ujbgJo|^h5dLG=B zfs-5LU@9B)Aw)|luZ8LE6hX5#DUaDpH4k)HDt_Zw8XlzJksoM~Z<}`E9m@$A(TWDS zd|X^`btPh1FIAJwCiaWWmq=(4o0|j3DFTFpiR_tvetwbZ<=+7%-H8SHe#B7%6(*9W z2IDkO>|HvhW}Y=`#(nRg~bb#FSlbFS{w5QNp{T$sBu4YYt= z_P{WYyH6e>(!BnSZQj%hR85&6ackh?rJoCwwE2b0Z z@e(xR8`KPdu^K@t);o(zi9_?qC`9esfb9N_OQIenyWCReN8=YO?dQ$=DO0T$`3-Ki zoK}!)701tI&l?F))TSo;Rf^A3gW=3--o~fO=1Gg|I5=!(+0(q{)U`YyLVfo^@d_Q+ zCBOd=;4A^>{AR=oXhM3-9{WujT4O}GeVX3~8|?82XbRL8{lC}h5H~V%%MZ*DR%(a+ z+B&N>8`TS5l{s-*-@u%2aYIYyK7Q8G@lkjv?wRA!QqpLu)>M}G5A|7w7>(X#$s<4F zoUYrUf2q=>g)(xtQXvcMtwOI%BeHI5M*73(Y~m{3zrG;{0~%vbU}zK+S1BO=&gkiyrGkwwbjut>loBfrUMy1#qvqaa|$K_Hj% zVQhQEeZI+wncG?nyK#ACHrRQDaFVPe(B$F#wWanehiX&zi$jY`}+uhQ+K@RY}$Tgu4X$`SJnzRAd} zV9^16ZPx|XVP0d7y+RbQ%NJ`nQ*`)gha8CV#nbIGn=e2_ z^7k444a+jS!WwA8^`+xR9>R#D#^n+|wY(FXYa(hvyM0;exWY^cvY|I4C3e)7#U1m0idPpm_}#@$T*Qb>rw?(kS* zrH5x@-z(eFFA=i>x089MdQ|*#mBW{PYV=7Qu62-@LON7u)s`C(d0o#;>RtQ=AodLp;|s60 zI>rYxYKO~o0xK&k*L!eZu^4o!x3miUORdU~*JNC~jr-Ev#qwsj2?MgS?D;D7FLK!C*6w2h?MiQ5gDhc0CIH8ut1HXTL~7QI^fx=|JrE{AZT z&I3pt!jkyn!^d4$#Zt$D`0LOkKp8OjdBs*ccbL@U`1s0^q}W0DY~_4PEd8%^;J{EM zZ8yg7V3umJ)Tkshw~)P}s&>wW7u)(W3Hy%gKAWs>@=Fv?s|$7h<&j4Y4bSDVZ$v2i zd?h^&SMAl#wV+>M8neBYM&GN1%gaprm1J*@Z_DAwTn7{xvdz@Q;4GdE4Gx-|u5%72 zRwpDR_@uiaJ7C_p*bMBD>g-I;$}{lIl7p`VoLh`lcpXX&^&1|}W|z!Yq;Hs(pKL_5 z!=~ivcb1zm)4gs`88xr=`E-QQ)yo)1BoJCM@7?@f62FYGu?n$-Sp&FYYG08UXVtIq?bN3Y8 zwU$uH+;X~7w!ogPaLyq`&d8#cV3g?|54U}^;pI+Tgo2=EkRP`xbB3(Va?-@BKALFK!Kflk9bq>u(^aI!kC%*p9}gm3VfHjao@d0z z|15`2sM12etqtLB1Ymx@v#p$SUt$f@90}0dK9hiMzp*&@)7-k~pg;AOtTGvA^i>8d z!+=4M;7!MR_8*xCJ64qE$@>@YpIJNYJ=6bcsYJUG9~f_Al*Lv}cMb{>eqA{^CU(;Y zzh-v}ums5`A;Fbk7N)<8hS}&~fK9*MDnIA^kfpC4rk<31_BTX;=VH!MF! z-}vtS(o3`M-N(zL>;~Jlsh2yazdO~ZbT8`Ly)-T$n)Tsf}zbl{Hm*#7&m9GpEH zyE-q-;Xr43;cB1XTKf%C=wgGdAXDxBc;=%}&lXzXKRPzmHYKT@AaZSfw-_{BhFrIJ zV&1KjA!syDg`Mo$T)mC>$y8r73ma>u(^wna*Sy?kEH_nS+*#brFb|CU5cakw5B3^S1Dnkuakk zP+ZWKkS1}Q7@i&=dfcz!d1*AJUVpBuayg!gmWlj7Er8<1Azv>DI@b@k^0qF_ji<2+ zu-snVjnUjL$AlJbNMTHvm`F&xY386Dweuo_c@Q>_kHSWfDVj*^DcWl?div;O^tBr~ z@q+iXtZEe(X6lAA_S43e{DcA%PS$}3eU0B-QVluHv03x$6q`MFhgLDm(kM7@ker$$ zX1-ZEc@f8R4fi&0{KAO;ij2MCrK{UG+Kh|amBM(d;dI0+py!H6Lqkz?78~&nQtfOU z>EM}M`*n|bNW<~!`99O9>YWpWUb$4oaq+7;H(sdiX*YV_LsNFQy* z@+_TF0?qW+lh^)z@%HeG_e^AWkqZ%&L17J}$JHkKUkwK&uH-Oach5R^ykF8ZT&Y`_Os;> zxvl`6L_U{qu@6kRMY{8GB$bY3z9HVYAQLgcC=8voVeS}j04mOLdaWka-&MIYuZfJ?Wn}JVYwEkpQ$+LD1i%*SLPU&3#JAZV|r-fRBmwCWog{K zJT?Dv^Ky8tIbL6jSu!6#2yV`WiHutysMi-VMXO6A#P~b0oNlhMT=o$ME&U~4aw7ZY z2qN59(;T6TtJIx-GN|C=towmZeei&ivKk+U@dEc0+%MGjA_r6(Pl3RU@MRV* z_P*JHL^~4iXCJ3)>HS%4JXi_GZrZxV{a|x8$Z!cK+MiYqCf6ekw>P>av`u^G*T8RJ zciww*ptBUb^pLZm=I3ba6|4Q}ZJP1^oK3z)wbwg7XB;g;!4(}YEaiB|@+>IFq)j`15XIK@ z2!8U+xa4+~6T>D*irh!x%giuDL?kRnf#$?&J^_UI+*immy5>txH3UvUL(yN1$}<(W zjP75EcP*0M0uX9-bx||_Dj`~{vXs!TFx4W+j)xYpI~5{&Pt3f}QN~6eTVW-%v3Pk% z{Wo24JWM)U`17@iqATZ>DbHOyVFCY<>vwylwMtCBdN!jamQkXm&wKao1vBCyao5HP zoKQmb8urR%UmsmLRg*PVEo#%YM+;`XvZd~d(_^6z+aiV@?~wCl4UU^sdcwU0Hu=-r zKKzd9e(|#Xfk`K@?L=}oI#f^5o^wySJ>WfmvAqKfjQ=7V6MEzVFi8tb203~kF8kWn zgQ3aVm;U9RaBSF$>3-E%WwG%E{@PW*{(f=b-e3lMb?YyA?K zu3v-$pDRgt*dl3c{K`++Y$XgAFEnDtG1s*q=nU4?fTYbCaa_nWwKo1^f{+s z+%%cCyt|6r zxhuaR03IXg1;m8W?Lk=4X6;XP3)dkbTpg3v)x5(f$=|-v_%v#E##q5@y)}O+5&^EV zmJPKW6_{!D_pM3k_VD-o7FAVMV9pWt!<7;Hwn;BT3g|gzNC?e!I}ID~%NK=MGd8q5 zntpe&?rn9K`nSg!Ae-#G%g31MvzfE9F*|X7b>T@^Sh8JDqF_P!=Ek0>EG)UoU~jQo z4{^pt+UI?Y;t1GTJxv1&m=fK_n7ca9klX%ygVnpuyG6#2 z4=*qrCG{)lx&G!YiIJhTqU+syP_|0ar`tB)E2~~*jExQA#=})Ti|ehafr1&j@2wx| zY!@8F!}KObk04?4>)$T=j(W$ZG2jw^vMMz`Q%Zbu?VC>RA4#i}_^wb}aXw7P!15Ue zBAY1rroHHIX;v26D{pWoK$81Da!>(JD3qJ|@|ZxlKzgB&Hi6$vPMH`SyC+k9$@j6d zE9ps_(Oc6RYn^uuviJiLvs${aUuIGkx~NmVYxN+A&SN%QiDG<1BAB){1Z6Q46Y|Wb z;?J~L^zP~C7RhgIv_MJ}5pI_^tvuYPwM^hmdp70WA&}A7HU(5>pTGtnWm=)fk7sB0 zjb4nQ5@Gk}so^It0KW1BuNcZqVsZ&fz2*y-PV}t~PyYBR{cmupyn~FDj&x`UZzaC5 zDxDK=Yr#|lsfCH5Ikd>3jfM>sL%1jt;@Pb^Qt=>gOz1Sw~fXbJH3fF!pC$)X7;0K zW_riF;Jg|00U6mpgKg+}&KCt$Q_uQk>C?QP?j^^O-hG2k|m30&L%$}JM1a5q*$w$!rMZe!*>Ygm*Pes&d607v;*K)&uh?}cpjzqbt<5##J4Ys` zd%ymntjZ#KbS@|CUyt_P$|LeB5JB|EA$@$syY>g zKhOYR^53*bx>$qYZ+xubf*5?9chPijB56Y(8b>-_Cw88sv%U$797I9ZQx|M$J*o4? zW+T!4g2i?&ADbQ_k-I*dn7zdBghlS)Kydl)V>a=9!ItigDlrVoY%~6lSHFEXppx)5CZ50h@_MtQT1*>rD=G$}`y80xl)5p4i+3xa&e#3Li{ts3kQafK!5h40cR_;kYI##AqGht zEY`JC|H1X(1pf^Iyy}d%NuO7I6XPBk4RIPxba4n&u6dP(7{12U|3ZwQRgP2W_V^Ic z($5)&jGQ@!R9m%r`|(yEGP@M&IQm$dRK2gJuhz^I=Kim%-hw1_n305so1Z@lP3Z0= zxS>@%(PDoTXgKzxD^otW#7_O0b31Nj)~MR#^USA+QS`E=nsa8%^csr?{KGC^>L7XK z`1k4k>9c~7vV|$B;GmpiYKWoP4Hm>yxM1z6Hn;bB_A}*!vpVG4Yx(z#7X)x|);+lP zpxz{p9ISAJ(av#JMIZkrCiyw_Sud7&*f)3JJSmpf{p99|Qr(@avrbnb$WB3_MyA0d z=4gsb6ah=noGna3biMV(yLUq?JWW=&Pm^Nh+LVGMvW2rJ__>%sDNs@(17N6U2-PTu zsVTOnXS2J!JtIC-=MBnK*^dp}yFy2@slDUp>UQ;RvzJ@B5qa<#s>QBtnS3GPFZMmW zz76tvxs@qmxEp07(c-CodSpsb2^2BW2uVO2n(@7UexAzNHGtSIA)`+DhXRHi$UK-`h8 zW|ddKtM!s+xEToQd9b48vZbr(?F=~R(0dD21b%iH)%c#IdJ>sc1N^D3vCDf(47lQqnAm8i0{m7%zmty0`SHuBwUU2t`FNoQCbl-0?2@{vy@LWkjE>&DU2QJD@11CO zwfhus0E3fBxggZF4)+l7MlluXMBXrYXo$OU(#Gd(fRP*V?`~`#u5}lXrfQr)iQ|}b z`nVx6cPWwuf&flxX!0aQxsB-SD7ll3GAGEt33Ii3K&l(Q`Vni>Dp`+6GL=!SzCiwZ zChY$X07y>D{B*LuW$dJ=VCF8j{mlK`ieVI$&17^qQL!}ltKAWgFCB-MQ6~hA=Lf(- zFL5ZDW!oxk5Rfn(00=_kG~67I8tr<>v7B!+!2`{oDM_4CZ#Acl7D|#Z>vvm8zvBHu z-7b0zeaYfDFR597_)A&SL$SzOVA&*@4htzq37D>$$yQpf9zjS8OZ%GywMw%LdJ2eRLk$B;#8qR3AvI#cUvGU+MjzRETI0sXF z$g=6UqpuxICfh%|@69rqkpX$>PgUfi7Jg;$Et-sjB|cXN(^wql*aRwqgDEMmP7}>) z38tkfi&}iP1>F+y9|xt8u^t_+Z6yp<&Dl(6A4U^vhwzuje_^qkE~OMZYn-i+|FOLF zBskRKAY&vCIZc1)oE6AVYBkZ{fu36+~XOpQ?BU(@Xeoc=o? zAuCGBkLOmMZ!pkriuSF99AlrN^!TYs#z)%-(ssFj|&00MPN?aY?9>S^;r z4lNDQ>&%`pZ*bd@Z&?&7|3Z2;nb-J)p{0&h-wQNZo{kMaLh3yp+x75St5(H710~a9 zo%PrIzbbDCmyln5qQ3b@)O~{6J6;h-Q1*jkJ-i-#m#e70gCOLZ;zLPvP3sXUu~sGk3J zb_gXzK11sk4vt}1Hi7TnsqTnJb|+RVBJA;Wh>~_1Wr3m%|$!8>)|vi#(s-;3gw^Y;GVUu8))T{5_E4=kK4bT8w=87N@8j zlxEfkTEeS4%)bc*ll|EMy|=GezBXBbxM=FxJ6QkeYzYM3W1X`XK!H*eknr-oG7r$g zZcshbe#29Ktn6nm9n${O-(lI%W=u-zJvSq|#n>4jh=UqM4y6bzxVz#Z^pqHh2ehtJ7>q*Yp zbE0F={=RKuASpUq&tULUm_WcGdM7x_bT*RSd4DeacIC1P8PdBcY3IoLF$IvOPI?z? zkO}yn2dE0!K0V{XM z@PI+w!zTv_Y-(@a8|Gj9j80UR@g8q|Ak@Uf==f-a<~&rljc9&8y3z>9tK>xTGM@Kw z_~1U^g4VQwslQY%1%I>m;91}w%+npUgoS#g{7EE$E<*W|YK*7ki&U9k7A!tH7m@YJY+m#Rd7uPk$O+Z$s9 z)~h)wG4Rzu51ZKM^wlA+tHJeOT{f$g(ApJ`^t^Aw%-&-zm>;P31n_5yY3?;?Vzb80 zcUR81O?_bK9M#s+L*f+CV`CG)tf;9|`2FD1zfR!Kzy4x2d_Qk}ZNfk-mx|IXwLQkD+QR+Y2ttURdLuF7_F zPPg>g)I!OgDGWAT^Phzyhm8=#skFHw00aeeR#l7WS#;%Ww??Q+A^UiE_h)%?t-U@= z4#hR6p&vAhYmU9TL=I@R4#{-|h0hCZ0N_hdct6gmnl8FsgMysg{BzPO-pTuhkxM#U zqIL0gqh^%rZ|s+umOm1M{)mS*0Rc@mxdVd->#NkD4`V97&5cYZ;Z8UYgJU(J`1cuGfxCZGKTS`!JkkVkJ$F zBS01-QCDGxkRD0U*AsX)UO=46PO8F>h(?#A)B;;Am2tQG15ldpma=F1$spzS7oq8{ zc7RJ=z5U9m3fDxf4sBrV z?CuSUwg`BiqQU7N!R}LQYU!!qM7mdKPnLp-u$G88wJPY&U37GIPwQg0HAM(K2E3P+ zQkd8<7DZIdG>e1IXa#!96?sA39P8V`D)KRQ+_8&G_tu6GuP~((Y-&81i6|f*3daIw z4#~>Qzy|a!(8KRw2nIBZ%@3z;^c+#Kz%uWa9U{GTC-Jla7dL!fY>V zZwAbS&Dn0h4~(XWg+Tu%;`*N5i%`F-flas@yCN_vmh{w2%(o#@MRFCtd0JG9Zgu}uB#yOMyN z{$bihNF6qU>vKRbGI?sMb>*<3#Z0KT_zDt_YCe9*Gn$7=Ft0p#lLX7_d}O5!7N%rm zHdqjXyLG)YyY%h!d?h*-GKr0bpDrP0in4f>z7^Xa1#3LBj~l;jjf%Z_geA9>6d~yl z)lTpov@DfxRNfHeQPjH}%PVDdzQ%jVZBZ_)fut4WIfM3%T}>p z8n*Xw&j-L$FxgL=1d5;y$Jcdh%Nh-)qohWcM+9Ba{mYY%YiK9|qZOx#kB%C41D`E< zfB%=$vs3?KKd}fr^|c#BOiD)nkiXTd3bl9Ybkgeeq;L`i%UOgi^qThG!^HReb{y5o z@Z%8J`yq(Ud1}fBK6FsGj^P97Pe_#YHy-7ot9!`Z^FNN2eV|Y8;&H{=!}D zU3=&=cI0t8Y{$;tw%;>k8jNQ!K6=M$G5?29I5;B5ZS`A1vKB^K`mdC(ADPWSFW+P< zU5kmG9n5B8);mx46=c9^uXgxXd6O$@%o~T9(0=JqGWeQbNKHY`CI>`a*JV?0u^#SP z2h1wfPPJ#Z-5d65tiRC2mYK}&3~4n53O@2kTo*6GO%)w>guUQpKAC=$$i-B<*W-r0 zppen(%Oj*z*e=>#7)gi8dcDOj^1GBh0Iw)lP-e4HkHenzA4BBjOcP5MLV6SLL3wv$ zJ*#f#T;ES1bd2W5Szq=|T4Qg&pC<*b@@*NaOo~c{)0VUQ#09146%pD@2svPR+Y%`M7XH z)0kLoZI2{0$baRU^R3}zkl;mXkb;R%E0m|qCZT}(cXSlT%21ZWMHhz&Zq7i%k93d`dP;OzDw6#SMe@Cp}+3@9HMS}@H zQ@FRpThNV!-|LE&?u~$;H^yXZ%5aELuzIU2Cb4{Cn|RD>rq`$dvWG7jy=Jw^P~T^8 z_sUG}3?Md^duO%=g-jVCxzDan9YY33#0tmxD*Brhd=o7S5AKa{;gt}T^JO|unRUtl zq0}3w78+e2w*byXgn^y!;CQR4QO4L|VbeFEkxfnn)|=sW9=+0>d1vxvQ%l3H^?7u4 zzQ$_`O*o@q7o&qR@heBKr8&TGx#v48M(dsYBC1*VrT!vpV&Cp|qe_QfYlPm0=aMVy92A<=`z*HaF;vXwzq z7ArqhKff)nMqS;Ie*wyh^Sls0z$Gi{nRku87E}~R4&0WWvs+`05Vv7a3ylaB%F-pCSb!%RL|8H+OQBFra z`x;xAvCQ(uki+IWrm0Cg3BLO8qy;N3o3Ti_tOQsmc*x_NsT0iL&FzGuRcoyeijF2W z$MyhE|vznj`c6Rif+t0j5~X8NX(6+W! zODiGqLyTnq&;W^EE(I@T)aDej;RbrW7h~Y=;#D0Q(csp;qKL>c$$=-E!EE-8%`{4m z5+Z#P$KU!A`rXOmS4Rxw&}CW`J;Q||%rKDGIRCuNaH=pt^uo*Q z*6kkXtkw1_LuViq{TOSwnsLq#H5`TZ3@l@_-mPCPh4Hl@7K=rwCI7m*Or0Nq`yUrT zGAin?>#+b&3(QMHxuoW3wYB%Qy6Dj43|d*Y9^PBDEk1ebmL zi&%t5Y(ZbLwfYr8^X++Wk!z~dK+Am&S{W;QrdpK1{mq8;fsM8KydRZjvFd8!G?il^ zhL*4}0dj)cRUIYg z5L=F5;8J!a!Sq7!CKPg@4R)3EU7r}8r~Xp#|I5zWKP;0wFU@+9I-uO%x8(227@p^_ zV+&qa`#17d{jE)*Poo0vHwXfi-JSTgwr6(@{E(ad4`6aDu-B(aXK$(j5!C!(HcqUL z>tBmf-%ypl)(0zTR&4^S@w%2BQs#OOsgdvBovt^@BU4(2%30O8JWBpc-9@Jtqoi%fWg4S zFO3dw=-Lv^Tb4r&9LRq8=dN4^13wnzD39b7 zYWiufe}5ehzwdV4vGc9V77B&jT?C(r0Anj(cp#El=vLyiddF5a5SmKh0L+Ft&DsZv zSIg?$JmUsagKYn%Qjr#G?e+JB4w{=R7K#`dE(STHGbwn0TUvdniWH_4LRzJ>TbN5G z@mXLgGqd_P>rgzkkB^IofkCE)G2}YZH)OEW?qt2-;SX}}wd4LU0s#+H1YWBZ+}ZSU zQcrzr6-RW@OwaeC!kyOu#)j8d|*{*k)TX?XeT+*q%d&5Ep z$!P3;xll$EyY3>gWn_}S-M^5u>v1JTh!!RO7T`*dO|a}}6XuXnmOI{jRK0)1cU!lc ztoXvaJ#-fVifAkjWDl&w#0O<>R~C+*{<#Fc>L6niBI*I}i7!$kM03&)dBaSVboFKT zY&=ySg!!(}wy{s`QPPiHJ#BD-Ri=-~K)*FlgH;fPP*Zp`&4|nKmc@6ur_%hg5&7S= zrXBa55y$EzQ$QKyYR%V?r&K1bH*Pr}E`e>&#P@nlS&<3S0|t#!w7C##Gt!=>9-z)? zn$_CNyO+1_XxXIPtv*PNzG-0*VYIRhmt92`@0Io@xf|)PPi0#YDt~oSGCbEewd_KA z!E@SEu=0}abVf@TG{^Z?YY9iMY{WIiuxL36{?5koA|gd?gLBPlcVbG>!t+y2>=KLh zT@m-mzfWUD6uz>e<7M!Y5lFogxz`WKtmsDlqy23S1hNW%*xn}>+FR%ltYow?a@aF9 zQr(3zjEVqjTWWt1d`r&g(o(+TW(?o+#A(}3xu8E)efb0({!Hg=y+0R(N5&f|pER&u zYKUqV)^pE83hHM5E$IL(Jv;Gy@GfKsPcRa&Da&2PpZnyil9PQ6k%^2cXEuYagy#y4 zjQIvQFtMP$68>CZfX9AH!sU+ObLUFV%^uKR>N{NE*1B`KOa}U$D$k2m2Z{X%b0lYL z=PT|oR8_GcI*nhsodnQdby^-RRYZ*!s8qR|)U+sjP|SI_kDnEXAcIX{*4oG$)cdVgfGjp<<4rmGg;I2#wtXvtl zYCmoT^Ln^~HH`7^?uS+cTk}M}z6+5o^gcag(G=wT25!PdYL>!t=1GMyTG-bQro$;c z4|i8()tJfIs&0D@Yg~6OG?$m4*aNr#m|Yy?yG#uWekuZ$7fYw+>YR8T-v0Y?5H21e zCAnEHdo6Hf8X}Db$U|#h@f(vqbdJI?EISZJGdV)D{;XFA*IulkxM||NK^JR2$HU56 z6HjD2w)ix6;VzfT7X%8w6%LLZ+F0X1D&Ws%!54EP>%fHgn21b=3mB1N(HF9nNYdNe zFH8H=z0;K(rjFcsj@;XCUST zX9)#_G&`-Ku1?rIY zQoAWBfa_7%%~ z4KBv~0}!@pZA?mSR7q!5+J#|t#~9NQAVxl<`d}^ulVOA4G+XfwJFeSi1m3;AVb5zf`>4T zGaQ^bWM-Ji`!rk7(XL%3l7+6MULSYbJ#{oDebu|OrW@U17vDftA-+a&DKzXzL6)K+ zSiDmTG>0v#xp;YxFJ@zK`90rHSYEnGxT{zWeHmf6dA-_Vx3SK6X*Y}Qgs-KEf-Cn4 z+M>wg`9`Dt3;eB{@KE2H>BfwajMuTdwPxo*Y#~=yS_z?Zq2>Fz#$* z{l&+u{*MX`2Slek1=_lPlA`YVgP~iG z7k*IQ7hlWEQK2ooaZ!T4_((|O{Vfy7!-aevF~DzpxQ$#MbL*Hb6&~d83-_evMFZ7+gBv zx=ZQVd?rvqw1%n_Rl^GZJ=d~uPQcKj7IvOITYRoH|J5hrYeNjX`%r)F~J5~g;UnigW45v9O^ z1hbG1=5u+#6;?Ld+bk5%;f4$xIIjm>O?ofYl1Do68ViD|vx*R`M>{KigBKA57{RBV zZhC0g_`_wWM($?o7)wjtymq&Lfe3=%Cxx}yJQnV}sQF56(c&x(BR?f&f-aG^)(`{0ZW3&(oI?3e`pJISSGopbz*F=xEDlr4#Y6@OAl>|lZ4qE%K=5n)kXZE&S+ z`c2ORs2PVS*LFXbh@|E)@ngP&eS#nL#)}$xhJ(j>e`RWF(O*WXr$0CmNTAak`uJ|R zj&wQE=`=L)`r50DGH>n3a5N~^Zk%5IYOl0W7MoaJ&i3YazAnr^9k$RLFv?&&e<#oC zvh=|xnBqwk3F$on+DNS)!=xKd$J^f~I_(R^F(Z26e->zHPFeA6M8`eOV|aFQ(wC6GieD*4l*E=@;4cZm8*D7!=h4^3h-Di%?0Au zH*kEQT)sM$iI;>td%SF!h}MS(H-9&_W_^a$dl4(9a^49Cov&S=m}Al31{G^vRk}beYL56L@{>s?DN#%Z<{q!_Jok8)IEpI%1lin; zlvy4MxDtlumB_vQnx9V#HhKk6rX_^R%$!>NMx1RdbHGhhoZKus4_3@FDCR6Cckr%E!j^@Oq!RPDI2)!HI+wEyD%&uLx zpdSsMg!`7N`uglSY_&go-a240qy$9C^RiSRx%=JVHK2GVp+vK~JFL_a@cW=%2rj38 zU(5p!H0pO~G@(qqhIacQCSAAh^1+OWjcqf{3;t{;UGG4)FskY9x1M^fU zuv5}IRbOEn7n92MKYvOLPGg9Fy0gdV!!8Myk0py_a2|y}Ml->-Ea(zB(IdnU94xYu@)@-snxXGv#~2BY<(sA!Ck+DN_%-} z-is;pOA+T-u2n{h@Y6CHO+-#kv+W^|q`~-i_Pb;0e3x^^1Ox{XlA{}y#2k}u_tt!k z{6pD{j9c+8cl`tO6K;LQ{z8T8eT89k*Us!dy`w$U?lhBTJ_8HI;)Q=oz*KC?*5E1$ z?;V>~4a9i8YdoucUgroNXiK}#oUQvbwAnt^=tC))`VIlJ5apfew@ z3v&H7{Yc1T^!@K5&7Fd27vnBHxDOBB$onhF;&KyP6usvI_jVzXvN-|qNW8v2*joEF zij(JClszZ6mFS9p{<$A)k>{9g?epev$li;gosUc?iS^30boGd^8cyN(1e2O)s!|uw z4GC>8^vQLeU*Bf83`6!6f4QQHnoy5$*5MZ^sl>RgQK3fpW;n?WjJGn?R9QGv8oEdl zSy0xF`D|zLDh1>)cZ&vkUq5O=ZVo9u&ks6lmU~6`d7eZAYJN$Oo$t@4`aU$A9o7;% zo||Lfa~>IP^epG(nVwFjd)@4fHp5-Joa-w<^=~g;XLuDb5;lqGG~*W*K(-G8i&Dbn z^kL=dk!d0M6@RuD>Ow-8JA*_WSA9BhSWT%I7>eCy6||JT{2p!>eYdemEO{+_25z{0 z3_)|#9`7M43Pkf;L?x1MbOR?&!Tvvc=u+$;Wn}qTkxA7%lzd@#PHmnW1FB;A%FTST zY)CN-rdM2&ou@Q%If}ipYR9zPE8C_Z9^v}6wT5UdN;bHRiPL0p6v^JjQY!)?;O)Z` z(yswobx5Jq)9Q)STj}gmm|CAkh-Smk{Qmc+z2S)H9xw9e;L{}xwtqYj9sETLcf`eH zuA~&V6C4T_UI@R7n+beh2){(C)Hkm=g;b}BNV_iHQvu}gaF>z#3Yc2>uyGZXzhu6A zg$Bq1xLB!Gf?@j{F{L=)M}Bk)S>dc5vOJ(iHCBUzhd0sc_wM!z+CGtc_9IMMf3;=f zVAU^0I9Sf{#*!kw)b#XXbP=wsHg=r9E6SEcz!~Y1yg>R+)koz>?9U%7ATCZx!x6$- zE}0S{NhU!3plKsiAU^>Q?`k@hAp!sPUw7NL==C`VT4gQWuE!{%HW5?lbnF%}!w+cq zZj~r&%T&XIYuD*T(eu3P+gEnOF0o3VP47h~M$*Yi86p?{NgeR>l~+}h3bH45Dfcq{ z!rRzh#EmNX_IuOVK;QU><`;yo+fcOk@sR`{Xi3uAS<~8PhO<8-cjr2qwl+ThYJ!xO z;glcbq{$2Dd{<$5n=;mD`6Co%>$8M>{LLq~(H(~*AfAOi#j{`XE8^MXKe{B5$VOX2 zMGU{@T6rC!v*AfiGAr) z#mdoDFf|^Oq#1L=6W35~?CvFQMn@8cpkQL3U-NdL=RB$7_n&y-(eJjlk(abcV zeSwRz8uUADyA!# zC8Qe1N(fhEm?vYgk5zke~C@HckYY{6J(@hxdkzdKbn?rOy z6ufRgSCDSemA3GB)p;At>@;vp(OW!juHL%AB?zmIn%qI7W{3r{A0fd-FCM($PmjO1 zzr2Ip`O2*`H#{~B*>IlOG#pwN)8AZf?BHCC@zULR(ku7A?OKppa;~4$?6q@TE5Sy? z`)nb}yth~A?zJx=gXpQ8=Jd)5fipaOxGGW&!#D#H$LW=yDW)T?yKW&wG1Ag5@^+s2 z?${8+mj($jY%s$@MU*xxc5A@ zkda}a@8W;_j+B(t^Ab7NY;?>@Pg;I-8@w#J)KC&0p2)homv7#La(i%mi!nnlX)C zQk+D6?l1IHDz_^w0!^|LtAOv0MwPR`?1zYBCut9?i0k6{zyM211BdQt8Q0yOc zV3cv562;kQSML|8@Pbq3sU11|MfOO9;khwtmFxGVHP)KFDQfB6Lqp*vdLS}xB0zV~ z{!?%({=2mm6d#X&wJLbJF#8564D51@mX0rZj~(BZE3GCWCr3$38+8tOK2iCG%ln`I z2)hl0&fcM-ThsL0&;&9*t@M*{lSYDpg@LP$T1Z4}cl9I{&}itRgV}`UsT39z+}GOb zyU5bBS4&x1#j2=$0U}&L6&Uk0)RKnAiYi7;NkK)-*8o>4_Fqux;=sT!*F(PJvwex# z5`pWxyRqsbMgf6Cpr5o@SR+xad%Bwwj3EM5LL7Gd6tEJ*KhVenvwB4i=R zE#aD;vg$RchOVz&*Srrjdcu;^ZW_(T>DG?3HWXa|0cW_u82yVB2EuzH+zVU{vPNhVQ%er9FmsLE>R^W9|{`0E=GJy=;s*CeWz zYF{&niXry%|7=&%-cvLf!H9MwWy*p}NZPPERlSG30f%UxokLRa#bxTxpSg!+Gh+;V zed7-nGv%A92-)*ZcNjA)NRf7$jyi8e5O`@pujuvL-M+A>h~^NrEWc<}o#U&Ej{?l8 z&B3EAhWea7!Bcr)@yeLt_wS-VOsVKqJmgpo@e0+{fG^47DpuP#Mz6op<1WO%h;i#yo8(kx$ za)lURoa0oncm@_XcB!<=%IHHwGRz!th87l)z>cb_EOhk4(fxGg6+pse97SB*OGf5g zc|*O9_aTOfuFm<_XS@5z0QtHWVKmJTE;@u7h}h!=`^g_A$$_>(w282P$2kJwGGx~660A;paHekYImO>Sr|Eyw9yPXJK#${sgAKKwgU;Y|szn9HQ$0arNelQ;~@zgZ?3{Svh=om>FmJPJ^)vOb=5oU@KLlm zp_ZB`>E6wehj&?AEf&nGEKasLexsk@(uKI!g-?D`Aj4F%OfhfBMrGy~NkUo!Zhx|f&J0z}QhJfd$`_@UGF zV*kc33M`9u$NU^C4XsNydQnd9C!;cy{#=?{1U3OwB6bjjA4=1cboBWmF7Cbok#|wrhF!8y)|2^kW z#qz!#*;wMOLI6)n?H7M{@3FS?y0m4syFFGNDLA6v3Bm#b?f%)i-b5W|$Vo(m z*Zux2S1eR`MWJaEGB-kAg`?B(Qs3J8BPcMLP9d~7i3vuw`&lkcbhL;rsc-N{w;vn_ zTiuaCq6opCZ-4#M#g~vXxA>(<4%~=I}33 zD6_?qy^s(omph%<|2E`ke*3dda7kD9&O`T2z)r~bO#8b{>={ZJ-?HtfR~)`Z^V$bE z=^erL?3mzneY3#qW_DI0oSytMqSExra^EMdN4VZ>#`5cAm;2LMUkoYo4RJ9?=T1sE z?^aK2xK=;z;E=2H_V$rCtjb27fo`V5vrcdzUvrN!WMz&6sf(;mYSKE|O|fUc5c+?v zP9h@W1d1nNEpr}0iR32ZF*1Ft`HklvVw@=%FlG2qu7^(P8AEDYy%kh!AJ=lqWwVE{ zhu`?;j03nL2MG@mM=W$Q;aQ-dZ4u7nq;1Kgp=MZbN9Z}esSs^ywa2AZEAE~dd92}! z|L>Ui+wc4~B`dR9;WwXhLH2XQ=NRVGAbmZosHB;WTv=OfIpZ=Cc|lI3#Ci&wJfoyA zduBiSGiX?^2YLTl+g4E`c-wqou4y9&0?u(Jt9FLlR)Z&dXI!MjDQ@&PxbZ*Vw6#f= z8g2S82I*eu@4CE$PrDjpK4pfRU`Zyb4A6PF$}Pyb-`35rSAI%r6v5jOnJ5dS9&GWC zwGvMSdkhfO>)krq3ih>pvlcrzQtEez>qC&!l@l2(d@0va?4hwKK_A|=@ik` zTvT>)+S|^V)qleNW$DH#oM0hr5D{CW)`Kx>$o*fO;C}(~HF#*fy^5ayaRIh;xH{5q zjLIEtM~`ok%k9lQjoy5&!-cU)jhovpIo!bZF?Idctu{)~Yx(m0?$H+o(@9AiemWb! z>g8ZC9bdwg!C6L-Mq+g(3g7N_YkBqPL+IjS`S0IU!8G2K<*-Yse5MLJcaR@L%u+^3 zp1sx6M&GQL!Qauby-;$M3ZV+$TVr>$0by5s$6Z5As1n+Mm7gN6q5RD$UN>T7FmygD zHzs~0$K+vrQ-CLmaCRU}QV^i#Yph9_ddk)-WpU-%@PGH_BUA6>(1^x2{=cWx;V(;i zAeQf>cYgh1RXt*=Lvxh`(dKJ$1oGD`Q=-;XfpXt~?q0o;<{GVI(`(lP`Ea{czr6Oj zIR5;S zB)hwG41;xwnWBhq5c6wlf^r7q&j~|;hOHD05)0m{MMC1(y=M?&K2v#xowLqYNTrwk zJN!HsnJ-$Ru0zk7yq2=hZZ|vq4E2p=8vE|Rvl+4By_Lpl?wyq9>#GVT-iW&3b#QiW zG1>orTIja`E#W@v#81&ap?SO#5Qmzzwzc)CuNolQe2?*YVBQEn@Hf@rH2lP66m*eM z)$~i(NY`L5G=eODCrjZE6-_j{6LaFI@0`r;@eaO@*}uAHa6_IuyuOcC#DU#g7+CRV z021-=Xb-*RzM3B0dKCxAp$2SBuH^Fb8VRj4QA^0f13l6@jOs_;G*P+Jn0Q?uC3D9dDCEwG#rSzQlk3tmsw7y zgcMI$10a)0d{TH_&O9#Taokfp8@MQ)=7ULw2GQm*CuEeChl_yU-zJcsF{hFV@9-O{ zjF21Tsl^7pmXXJ3&E82l+aB%=#yploS@AceDYEk(I5U zaRHkqRA(;SqD@$EgW!V_5|fRrttUR<7D(IJyk(z;mFRu>5~7ruQ3d(^?+*<|sAlTy z;~Bxs%#0r;x{ZUgV+UA)3-!BJrnvcopPRUxj!5y0zW&(xf)9%{YYnX8 ztIJ~4$(i0AH+qbOVhDj2zBEwM!x^Lf5lm@r$8hrw-H6)D7xwkZtzQHMkWrYCM1Pg{ za?6XrZ-ewgJJmJQg+f6aXCjg*&)i)&T&5GOAO#NDvWa*F`wFS6wGcmmnEIdo1Pof3F%h&H!OtQTB=My7hh&XR-%m9(^k#XRvWEc$cu zbAP4933+P10ZoC;P2;Ecs-v@9eRFvkImgSTZ?^NbIF(RW_we=GC;d168rMs84Gkj$ zi;&pZi|XFEI2JG_Zg*#;SO|8F^hFPDseJjOq@yG1p+OD4A&QokmWq)!x1k|vef{Gb zq|+a*_GwvJ&ri?Jz&|(J@`HOsK$vRpTp~}w!(IP(^T0pe&8w+tacyrN1zU|185!tp zXI|JlxES^SBK}5vK^Xd>>W%4kE$nJlcHCTI>49{-m7$G2gRwdNPHBn}P#XhkX$hOO zCFMp9pwUjq`>Rb?%%CNXn0?1&;G9k|JgX`{)}=m>Vn)HVlZY6hi;p!IUDjrnbj}xW z_noOuULt1u-|7DC3pnIG?A!Di)FiOsC=iR1i!3GG_ZmJh3(Lp|-6wc5FLsA)walp^ z!fZz@3Kv#-|6LgeH`!ok`O6MLwbbX8!0hjGURwL^rsuW*Z%x&S*~ehdNn4WnTc;r# zDIK5F^)gQmFCs9I9Mof7!^<0jrPRCfuBsGjztAM4Ah5b$&WW3wWZ>nMxHwi;SN0AT z5$diS?v59|v$ZAS;%!`C{}&Wi#LG}pLVs%(6CI5@!%?HYxU_^q9heoD)gc5RCn~z3 z{DO?X(B4-Vm{>o(*+Y!P-~CFA_O(&Vo|?mPbCc(5URc|jMv-TPT1D|UH30?4=2%9> z_qL6(MKgQ6z^B<(E}VXp^S(m^5Emj2XIR^vp4dlJ&bF5i(Gp}b&3^Bpj1Lh|zt!o3 z90Mzt^K(%Ka+AO7#=Sp%*S#F`p91~*_wQmEDpWsOal|FezqfQ+Om5Drm0ylE7nRVF zKHE1XTBWM<#zROy77LTYCQA_lVPC84lK$L+l5+!X3>!T$b>`%JaV^G8}s7 zr_+Gbn{z_CJJuhZ?zd<^DT%W-5;Hg$((0ZT=1{I(_g-4){#6N?P78R?BP-AJRv7>Q zVcK`B=hnv|F)4FLagaw(k7 zk9{jDSrutw;ec}3`qnav9TesI)+IA0int~9VQ+I|cDr>Ilo}nW@%Vn>8+ro4B8F{0 zYhfLQPVzp%WUt|5>g_(Hd*4v**ASC(2n2!#6Tn5GD;lTxaPQ;^{G&57)3PnR{=4@J zZoA)OtKS0m{n4Vp?6e7k?_RwePC6OrybSx}N{Sxw|r2Mg)MUn&pRlpvwf11nUz?|ORjeqym(z`BB4#U&a zTd&=oK!zp9e>|AjoD7t<4@%&>TZ z&QV*uOf>*~mIG^JKK=(?aM>vSJ4yhq^7j`Ci3pi-qq0eoQj~SE5MVJobgQ)-3@e~! z?3yXsON}X#K8xPTUE7>39{1qhdAE+n_Gw?;bcz97LOvG)*%GS04~&mo4|?@rqW=VY zgmv!`^`pVu^Xchnhnoq}tSmW4hFi9A#r!%?a#UcPS~o9%G$ycZ89aY3yo>jqE;42x zyf_k~G+lRh&+&af$57A=2@hxcg~k}|euE|%f+&*C-A`PkMiL+Y;=+aWf#+_P61CBp z{KJQYl5g#9ISe_V@)*1Qo!9NOo~!|i;M`s#;z@@wwx=_r*?clQ4go4JDLU zcX#Xf*kEJ_1+ZQq1q%~X+hQaC%E}=wi}RF=(Y!|DEIB$lgN||Mtsrpq-D6`v=4D4KA{WGvn=*^37Wc<)rhUPzMvV1D_H` zkYApZ`MsauYx>peai2N2O#*<$v>jX6IazN|x;Ip(;%_<$+($?7%In*hwAZE&p;aSa zNIV5EYBDzeh6Wyno^H$HSn?%bOb_aW#YRJO>pw0{Y-cPrM8nqpzwF;o!h-tSV2qqc z?;~4KaS}OXu*}jIqZ;ILDV^v~`y#o?WFPN*F_w%+hu zbohbRy-?WZ-d03&Gb!^<7Vx_A17}L*&f`AL*}w*ug#O7*X@By5O@vE3H$z`7$FSi! zju7{_U1w_svu3-kFV%y)vVc#f&0htNu=+!cSHLPlHg~;0ak8M`XQj`T!#Md3$D}#i z(|K4~UYu`rqXga@NSKUgi`%97KAOOz;K^ab;CzCqmtHOL^Eq4{8+R2j&$h(H$9LY$ zRd#i!k#bNZnWX!QNIC$qep3)Q$BMXP{)Oi8arlCkZ?6Jbsot#dN$TR_m+J%s!GP*8#`1=SYO%uFo^1%G(VAp6^`;HOeu zNwV7^Nx4*>9`GaAhBqJKcy6vySBfe5Js(^y7*;*kZX9OLICI^0-IOGJ4of z>P&@d=kp^l+x!Q`(lW$&8=`Z<5tHVgj)Yiv-s*?4-|81elv%uwA@{|FUVh{zMQ@h) zlcjOrDHtpKb_c)9OZV)lRbKXU>@|m-b`g|m0RqDCk~6`J5}J|E8uYyj&3n8+nlHV5 zqMp!{V}xhNxRb5}L~`*%PyOqd~Bsu&`%j<=gQOB4;S7q;dMQm#>0D77~HKpw|Yy zyK8zqM~BIs1l~H<-HU0?<@fUMH9ulg^14DEe~RngfAi)&)=WhVP;~PaZ~rVAJj-lK3!C^JARy4y*}+7exk`BMD?C*1s}p%kR^iXBN^P|e?slY4Tfv}ANyEtm5*PUm~HM_4P8nB3GE zu= zK&KG=0kRUGV9M7Kzoc@%2f9(xHStCXet|iW(bET#246aCjtRsu-2C)#(raH?i7q=n za)#ncu095U5Q8Zx0{klf&z)S<=701RfO7yY&hoZR+fs|mj0gI6KOE@@cehLD+Y98) zdCr!~g6tP`05~XMX_i zmwbD`569Hy7ysgbl7>oJt()w4&L~5FXpgu%yO|)MQTMfO&dGY!2U%IUl0uL2zNjiE z;faHCTT5K;%nWK6yPjpiK!+>AuX<*FPsV|T04p^Sr}YQC8x<*5bpnJ5Q2#g{^nH$_ zzxnZWZi-99#W{ovgI*QYk7LUW{BR?psIkrTK=<6T~SyoWob_nO%x4;@_1 z8%|ihEkU4h^!F*m00xV@>n;C~uc=VjQCZWK1hSK$Zuee-2pmtfo7wmxEAIRGbNJ+r zRPv|DgN24il9ajojgJ%8$x976Lbf_G-h|R%e?GT=e~U7uL&Y>|Nc1YQa;dIU-Rs)2 zSvm!`8cAAQ-nyxpGV6(nL+eNfFE&8|lE!O;mRoOTV#dc`3_AET@)*t_>JadH{+w>T zZ;P}^W@2G69I6YU(>~`0u_HuBO{mBiWEcweIG@`M_#O@hsbZxJN7B}IqhAp4I{xG? z<$Ho+4tbpo$9|$B6S4T~Hs2W-W<8h{Jmsl;ma+a_%Yu#ulRM^9mK}L5fum*O%uE<| zW`Q;R3j_X9+X6i=HsDWJ@>?rl=E%f;7ub6DRk74YcV}Gzq`O#4=eK9I%90wdo){W- ze#`B-ImmD+gf<>~{dbAXCR}1!zRqD3z5{Q-tgr-^l`1R;cwPbzT^bg%WyBWH_O05V zKMx`elvL!pb_ozelbUx3u5y)y?+ah}W_C5M*(;^QsF385NF+~Zp+vW3lFN72B^=(c zBakP+mMuB^T0uQw^q-!u{;-{3bW)OxyU05M^}2B84GKexc}J+}n~uW|u~K_8q`z$W zKYHv<*H2BUpu60@M0j_w)%K_Zxj#Yz=tjuFa{6asaVGP=*A6mzfJsJS&Sp6wZ$r9$ zbyY}B-{#h3^fKH7r7*A>u=c)Vk<7Ke@beLjVr7oM*(|C);B|}yHFEb8JUZ9Pk1lp) zaNj3!?^8V+*s3$I^~HM8E$HG&se9Gpj}-=79na#)Quv*_^C^=9#tp-NOd>46B+81~ zR#s8@+T5HCs%X~DdTRB0OFMN%WnBrI|3lMP0Cm}PedA3@i%54PDcvC5-7SrDcPJ^{ zAT8Y>-5}lF-QC^rEzdjOj10nz&UO8F_nh;KbJk6vDuNP|LS)iy3XQ85AfV4OZNhz! zHs;~Ev^2pd%$VO>*tYk$j7C;C9L+U@O5ZkrqwH`NxgIOs9ovbZHX=>iqc76o%fF=# zU%1#j#_M)$kd{0OlvxKBs~}ML|4$_usEmR5 zYj3mQd>i76SR{2}d-SQyL3ZR`=&k0TQH-V7yke6!a^|=bX2F^?o61R>6YhPdgtOdz z7r9rU^mH>Q+4^*2T4H6H^2tXlN40pq&J=dl=N4KF`8ZohjBv$$R|xDkNWf*iMIO3z z&|EV~;2!oJg;!KZ2OpE6tI~9q?dE8q=XTXQA~^W-vb*p^`72Rics(ZJ>c|7K21r-k zRL$-YbJK)TxIT!9|GdK<%pylVvicHfmuJ_}oQ|ZAENLildXhu{F|yKd_4~)zDskzN zjiyyFUcr=<^sfUquyO$%JTRq-*LuX6gL}ci(D)~~V}}WWIV=n@T1`2-s5o0&R|K3z zjRujeEzH=2Bsot5E<3nFpa>|c<+ox4WoEvMUVdtDQD->8o`7^wgZ1)~@_+pwh8PB1 z3J9_WhFRd&VB|ujDS4fkp!kRfzikZ(;Q0DI&&B?|B`e1aF)U}!`TYbZC4dpK-phIDygLUxs+G1hY1zRpACe{jrpv}_e7*j<;*Q64-CM2Yt;D0 zuX+i{I%5b0hHs2sbMG&^{3%eOde7cJHg=}T+ofjG=4FMs@zTPr@v<+-=juZ5o%W2) zXiiHi8cs~bA^r3UyxS?tG0xHT*BLQ(Ca|*JyjZQ@5RhAuY;X{KZ4D`U6a#Ni49#A@ z9ANN>9Ca7tMTYFo?T4oFC4RLlOckQsWeCSISvlnlQgO;y9(L!Z7H3m z)6g1Yc&ik7#u2wiVs`WXj2Bc)MYGTjN_H${?~6Dg#AH=mU-b5=iv<~k2QDFqo#8T8 zwad$Byc3Zyg~PgRo{>_DEbA@vl8@cE_q-=znwV6taW{-Lw4n(Jg}+~aEWZO^^3k34BzizM=UquDzZLDpSY54P(;buKoK`K27_2MY^=ai^XS;NGcYdX==nD7S@$v z4h%5X(1~&mcAKU~-6y>>gBkD2pTn9W&=`D)STeu@>kIJtL*Jh*g*^;oG~9P&I8s01O7ek)p49mVpS42qL&RSzl`NTbd&`SnkU1KXXBg6FvEu zXhN>2lN>4abrr@CTY;M~E_n@a&b9;;NDoQJP~krNfs8q1dh3_Qp>MXH==YC47ncqi z=fk^Cch73SlatQpHbc{*j)ttIFk;&G~ep zM~Q1cRAs*d(GzHBk&s7%k&2)dBrvB<+<vcRH2t(WDD7xeShMIsy~D!N{4dsUv*WZ0qL7M+g0 ziBoilSNK1Omc&6B00RTF@#_L#F*-4Ds3C2J(YPk{Af}nZMV4MRLZno2Z7sVAPEz-Y z5wGb=*ud5clMX2BOQB-t?{V|48>b8pZISmvlhUNJ8IP7)lYj%G!uA}~>gBhdwJe)W z^9_%eyYu$eIVtVKm4&RZj>%5!XsCZCQS}$VUb}AWV`{V+6EdFfd)}SfL#(7;k`TY> zhPAnT;V*kietOd86{807v>_-ufUH+}T=Nc3^Xa|GOUG@ zfq`Vu$`PEij!!Zw*Q+Qt@fSEGSdu9S<>>3}F@QaSHm$ij!h*&8f+3@)yUoR~qPd?t^j+2L`;ez?cuM|X0;}0z_#kyh6DIdKKE0)4#-7j;Iw!P zWE)w6UO{hfly)$|v%&7uo`>mSf02?1gw3Hn5!k)k3CW{{L+cpIH{TkfmB(VZ?d*GG zILaOExYkZHH0nzwz(^?_ssmUNsE9_3x0F&n6Mlf5kfW1R+x$MU%nK*XIDOgAE9jea zDK0_#AV&*+@XvSY%c5)#PyDZUbcKceR<-vMZf@9m-nG9$Sp6w&(%lS=kaTlqh=rT7 z2M*8&>t0Uwwg2x0h-qkm2Halno=2~OlG1Q1FZX=qce=|}_wWV>-M7IhVJ$W!AkMb; z%*d{;!~2ejqLZa=T$IHFe^b|7Mmy$Kxp9S519KH0R&=xIrMccIXfTJ`F4_IJRe36D!kdcc(zC zmM@M|-{X+gPEYz(BQ_a9p@w0ipp&||C)@cH+H1SNfE&E^APENs{VSvIt`V&KP1i4N z{{3`kD9raLl0DjH*)K*F2cPb7UPIBnsChJB6MnnXChM+A9m)Gb%h3A71xUdMWN@R& z;?UBPFDPJ{OqPVHskgw*N&&;Tvlk0ea+lzX+4k&9&yrfk*H5g{&;s@G@UdAEoRtZ2 zq=#b#hi50u>3ybry)#Y4|JPpfLi)euc_%=Og^i8sKrcy#WRpGc!~#K^R^t;nSc$d| zj8?HT)Y2gx|Hi~kTX6or!;Pt~U43SL88|f!ck#!*(OwQA1Fl)q0{?}Sk~@@8)w6%e zjj%dt(=9lW;e3U=yb5S1ZzRuXn~k{xH!Ya3V*35_=1Z_rgU^QYz@X%OjRTDqd#T~f zB{L(-7o)v11?k^cM4*hbxkSnWG$1FsTOk?YeJBV&(Ytxyj!%Tv{MGh2*4~BDbqz~` zm@p&wluNaQ4vO{j^W!1Fr!8^ccmw6Yy#I1CI$6_zy2|E@YJN#>77-dv9R-*x9@5iO zg&<0?5ZQ&H7yicYz)N8!Ox%iAfr7Cjh-bRQ&<0lXU765gH}GxSaxV3R{`+^TM=r z1{*R^QF_9Cet`OVosbCUBLG(%psxk=F~xYg(m@BCeyOPLu3DsW=WY1ZJ7QJ0o(lGx z#sBsjDF=(MIw&`4i~8hd-B>izy`aMzku6*@C`wi0K7|{Sip4rG5OfdqVAIse&U&@f zHvh^hW^}~A)b_J5-|pV(CM3N`8g(l3Am3*Klk3()ZB&U_*{s2vkb?fE1%B`C=X;xP z-@g4b)qC!%e6)Cr95GxoBzinrHtXz zvl94RCS3~N-n{0*pwjRr*4u!2-VPS;{WvycaZGUqb@4n?*NNH?4Dl6tFRcaEF|c=^$(UWT*WfjCl=V*C<*PgrQ z7Fd_?!Q1?idPGihbsFK(O=FI{tT5Gh>@D|vzR&l(JJIfFx_)zfH`qKG(b74wr+$RW zbONPa6lzWEQI$tunv9_1XI7&VeV{UUGD0>Qg=bTK=E`Oq+i^Nb#L zH<45BPj{kXu}U%Jf891U`CcFLRg=`qK+HPtaM5VkKmeThe8nx)Pl3$;#egR5|AX_* zysxA;CoAoGJ}(1Hv!>@GOKPAHMg)0E8bCJ9?NJqh4_~ttlw#a}0>4pT*outZfLj=y zl^xQa&?sf%1}Y<-p#u$|q`}+l{RG^NOL&=%-xoGEVvvEvaaJfUnpx7qWd|ygS2!Dp zKI5R#co=a-aAA^(D&!Zm&%Zvn2LfqteisFmXMGxGmSx-Q0{9HaTZQsf8wSt%GQFB_ zE+*p=6E9ynjHNyH7|&sJKlp16%+2{L+%EMNc${Pd7Donmw$l38oZ$BtcoaDX3b~|_ zt@d5s` zy^X@bootX&10V&PUq1xkWT#Im+iyNy$Eg>SzdST>k=CRs)vEf6EXaK8nz%_2;Ar%A zj6)8-N>F2H^MzMdBHoS>Bb7Bcvv2}WA*(rv^`o%`|+szkIu-}k82W~3SZFu+Mz=ZlFHm~Gq0d=YL%`0cSH`>v)`n3^0Ro@ zbNglFL5l1)?d#;~eLLvnfAsvyfi@EwuSH2)(`9>XR+)73pjm2{xPFqRm2`PfWj2MQ z`g8}IebOKYEN{MJFiuBXgCHb-c?`clT5d^WZF}y*E$1B#I&J9&kIH0xK$`VfNmNaQ ze!u@Ize^$2K7AwZ5*U~T6g1qy^K)2Z0He^H>mzA&bvkY-c<7E&ps0YS1~q?;&r^tG zZU^8rc0FiRwsMK1vA(VEjoZ@lBY_>Sf)*1voqMm0ZoE0B;8Ds8s>v*x-LvT!?S%c9&HOXKU?`TJrmI}Dc}o5ljyD`>$4RC?w#k_Dwy0tyO(rOi;rPSEBm zbRi*%2XQq8pIE7i2NY;56sA=b)U^C0RTjU|8LM#O)I2QkOUckhVM&yykh0eN`#1KU z3`&_}#f=Sj!j3j!GC;4f9BB0bHQGaS5jR$~4Wo6~FO@>1(z6&6w13iB12j~JA z9Zl|ZU>Moi3MPGeIgD)Pwn0W%NgoDv-}%~A($(I)*sA_YO&lw_GP;S9#%~EHJLLFo zPVj@Gj_NN#UFq=Vy;G>n=JuMvo;)l`8OGYb9rEVBnHAVQCQOK7GJtC{G&A{GSm@w) z2%LFe?tCOVUS&vTd`b}uS$ z6pxP;h-e5FVM9jZ!?bT`YHkU>FaU`nfz5}%wx_EDrZAUPw8w<~(W-@}@K71lR79f< zl5W^9n#-NunQljVhlbyZI6EV)t;xYNKRW;K#!3~X3}7Px{3{+ko-=KUgswY$1~$yf^fee3Vv zljwAg$US~B8Tq}>`td%5!?yKgc9s_vlNuRHB=9{vH4`n7kgC*Rp5F;?48?cmRsR3F zVNxxYoKj(;;BEqTX%)3?clG34f*jt?j0(X zujcyR(L&Db|4b;q%Ocg#eaFNjA|ixEdSl{Te@H0hv0pn{Q(Z$NO>^eU!?2e**h^@V z6#cpjwPxU{#eMBdciwc9@cHn;OR1C=7DC7v8(PeH!oqr4DwhBC3X+Gn8H=~o_onX{GMzgRu+N~d_E1jQm(9vzOlZReWaonFc@ zInLRd41515TlQeRW-0$%+#SZn9)D3{sJxXbn3fnq!H(|ajgv=B2SI>hHScO@-vWtv5=)2~J=Kf&|a z+F|BOf`jF6Aq9mLU_wdX$_%_I-wyy3W`V}OtEn5kfGp_a4DeAVUD?wpjmslPW!}l; zVoyO*iOZpwFd3`X+{B3e`DEC%$8zn~WLSw}4TJaoz)0`#Z>3@6&%S z%h_z1wwECxl%bB<*~sv=(=0EepuF@Lkd*i_aA$+rSMGnA>Uo9(dFWz0CbGfG)yH6y zi_z(UwkM(uKS_FJYO*f9&y9 z<1^ul*jmI1ltxo4%kW+wCS+I9Sf{_#yXorgv~(N&Q_ih{M!m)fQ_)=X@*<~5TX1gE z46Tq<40qEF8MT{=z{AzhxW2dL8!8=~9YhGIp4ua^q=^L7 z&zJvHthJnvNp8DT)}6*hZQhE4u{hx|c{AsY4eqL|VmU^vBH*o+Vl0CK`=pEv)1@uJ z$+9|YL@M_7TrnpU6IqD9>`;9iP)zWvfMQj+YJ3i_9JPIu>2_F-K8iy7>Ag0h| z#NZ&U%DfUK<8kyqUH2CWYh32&Cesn}N+D?_xywpr3?q44PX_XQ6vc#eX^kC)p&oNQ zogCKy(RF+Rq2gAw^N?TN%sDMO6fL&b5~#ww7h<$&DIib0Go2TyL#r57zMq?c$rKaS!ekM$t~Di1D@N<%%eCZcn2u&6QV)C1T@|8v*1LYr?qyre zod!=3?nM817M!oQ^>~_4c~m^AUVG)>eseH*)pWX@fSPUR+{y=Op;{aeQiApgZ&hgg zyyX+Ys$Xjfgc#=MmGz2(1;?!6v8FR?Y(J*@VJ9Uuc|dspc_`yUxtYI7zRF=ORXhP1 z!2*MCpqjX`0tLj$%MB}tHI(n#ulx47{22Q*g+m( zy+T%HhWwEgI;wrHwq|u};2f&oeSz6^;+?-X{m;Q<<>x?ekY3#pah6JFyZW2p5-hnr z=yi$lWw$kGKKgG!uAbMxv%^W(>}bZm%jzJ$%ScymZ@I*-Si=bcLeZ}$C-Ow ze25G7+D4L|i_W>r!^~$EtB@+iu4J*NUa*MIj^uOpzbi_a(r2 zzJ2wTYbvXETWE88+Uj({<};_I(-LLjC_n73%+0vGLPKHtHa1NAa7XhgWJhC37krSC zQD9;N?iYV=$Uu4dsNTwQ{@tqXP}kkkL~Q3lag$NEDA4W1;+aL0qp2hKGOn{lX+ycY zMsc+rARfycJ%?AI*TSPL6?OI})2 z4W%TvECd2brkxseCX%B$AI4n-(-x&BKQdxp-RXeKL{Dx1`zU7G6fvM0nv~jA>WIZU zdZOLrVnum>My%^`==Zif1w|88YwaEyubb5Ao)2wHxBs%UxGO%SQ8#<_*SUO#E{v z5KcWz3`$0DXtF;F2xV%7gdcWoM6L>z&j#?Lc8zw4V|N+&x6`jpvu;+``X-VCPDW6}#}eU!RBpSGAtk zIb0~eZeNp4OUGUXS`w!R0b_+zVrPAnLOJo{KZ=nf4LRKjLWsNCQ`xBkH>h4vFy@@J zY59)f{SKf0jr5TG2$Kd=G9!Ab#{dhfZA5T=vaxp*k{xO>>_u7FWCjIF3|mOlw($Uy z&n(sCx+~NlQI0VMI%&RYrHa^^KAMm|TnHk@8;5JAtHdP#auL=}t4S}xU=GN?L1RA; z*4)fBRUAvi{OGEW_Nh4j=(+9VxJ~79LxR^cCwwj}AY83%Wo5n}?&u|Xj4G3Gcm3Tu zj4x1bmEk1^FKY5RM}%sW=M_GZ|C;A;rfefNa%Fqx=koqS3ucuG|G!dF(apU*^+T*! z0XcyI*|&F{(ZglLEk6G~nIx-}PJEPCA&y=|(TKAyYFsp7z_iDxvi}8?4=RUW)WBb8 z824F!BdOFf#=cXkAt;{rSI`TdHt11S3GTM+P|t;~!uHekn>KGRP=fr%rmW9~1M%0O zyP(u;K+1{*1j>k!+8x)AVw9;lrd6)^Wc7WPPHAbm_IRnOcJ}e>t~WF7)Lm>Mn+bw@*}VGHn0jR9^Fi&5@( z8{pm;i)I#5Y%4otx<_@b&}Fjd5;oM1Rs%xFHXY(ewIe9)@S9ZA#*dU^p~nhOc01twe9 zuTV3nUw-=AhfxXY-hPdc*c3e2VA2t5c(RXTsYdX4c;Hk2Bo0#Vt;+h^nmpQ_J+B9i zojoU^EoAEQr!}H?1#s2VJPBHzN#5We;gLmLpFoBWO0w*+eq+mMD_1h)P1!dqn=q*O zZK;P_^aZyFVgy$FUAAoav_X5p?2l>R)~xrT^ZtdBq1{GZ%B7tKOjA&@qs!%yv7xvT zW!4-`4Vzoko#5F-PJULU{AbDzO@ERO9*JWxu68Y3`X?xeLa&y73qlcszUPs*_%Muiq^B>;HTfpJ~;LehgegpUIrLW5AsOZ7rktlO}9C6J?ym(*v)%t|4-K?uq#s zJ^_zAbY=&i;Sw{8B;^2(gNAmC`-G{as3@%Q9nRP|w{~$tabQ4_ijGboe>$stBD;*L z&E(R--d^ye>@PH`v3+y1imRL3=5}evqEtX#B+7~|HTYG5G9PGi+&J6?x7pprGAwaC zT;U1>R*u8&={?PgPsCR4Yx~2X12DCFl6s6^mnFjOb0K0jm@3Js)c1s`#48s|0c?|1 zRQbs-FU(x#v&weuXOs&9X4ejkr)y0ZBVcP~SlCc&05k&oDuGnGT6 zE-l$PJM_-01ZEc_nkIb&$BR-8dqk0wp2=87b*UkYYkiEGo88pgdTEGKj7P$otbvc(gNX{@W{P#EI0ZGv6DP;1H5QD{tK z$`q?@d>8PgbNlJkubn|=W*_v}vhX~Cs;{V0C}BF`LOgz|RMVWbIM264J5 zE}p1$>J4bpHdC7m&Ut?5Wy=zl*MCa(a`)U%KG5th6=Jq5sg%#YT^R)5Aea- zs<>|!$rE3nb*rogkP!W+7JylHqRWbHMsFWkg>5FOy+r^{dGellKp=-Wo?WzuZUqYT zP$0F|2ZizqXd)-`qMBNwY`VFE_CLi14dpcbylri&;R0&J!asv7Fd)3v^TVm#_71mkWi}5z(uA98wLYODMzq5H~vXBgG)g4 z;XAnO0d$~ zYaj42$l}Ui)rdtgcQ&(pNobjzlJ#RgJ&5-92zl4g;DvjMfH`}T_5UD);3S-Dr z02r&jLEP@L`Dx@xv?Y+*>GSl##sYR3dbjd-Nf0CceC9D6bW{PcV%nQ-V~wa?W!(ya zrE$?ZSCUX`OhF%kUNW9fyyYp{?O}c6n`!Hdda6mRe5bqfdEaZ+}aSyQUa%3 zj2cm~T-C^Svn<8pUL&s8ceSF$otAt)t2z{=HRjzq^xggasJViHO-o1tPfI|ECa`bj zSvtQw?~*wP8EX!H+cnTI(3_`(;))yZP+6W}t3~FW=w)E!ck{<9)i${(i%B*PpZu$N zcF9x@44$&xr*TH5zz7-jYMt=HAun7z71zzhGOg0{^42^5zkkmT>51}H)ogonqK!;) zs!X1DL|raFm8EWM2qIGwY|V`uMG#2rfN!!He8K%@B@R9=xv(#pba03k!9Jl01y7Lj z&`_BdC|!fAgrkSe-@{|8m`_Fs>S=KGZ2B$P6m*q^?R1fI1McH6wv^%$g#=7s+)SDJ zMhE^B6#M|q4KE9qrlp44_AU!z&O}VqfnZ-`Wf}YmKKzxEazqkI@m@{U?FMebrG&z1 zu@0*m{mx}i<`kAMPb5*_dAKe|kv(sPGZfSne~m90JRimdDZ-lqkjL$YJkA(_OT~1S zMWo&x99n>4-k`NcTrdEfI^X%?MUueJe`xx<4Qi*GV>ue;m|mB7Z7<=!p5Xe*Ez;XYN2cWa43|!I<||y& z1nl%1vBjoo4J94@$5e&T-$zYU_vd$34EzPcpt)}V#$Y#hk)D-(QXH5v=BYw(=kD=g z?^GuA8-Iu36C6UtGBx@J>-M$uQ#X2Y&73PxH#3T82ZVLS#>NcTGU)~cvFD1~9pZAx zQ77Eg(-r|*?a?@h*o7XJwMTgsFuO&4OAD{zYY~1HEyQDoP9+)*sX+wKC?A8nPJZVp z>Z%SLqXjAf(3pIk@_ji^M@eo!(3Ay-(|zj;?CmKqcedaywIzbat)^$PhzO{Fx-8=+ zDnZRU@-MWh|Hcxa`~$Mjo^HLkPWSfwsfj+QeEpWTSgJ}x4lesO&5L!R@M~t?H%jN} zNs8^IqU+oJH-CD|DJv^0EZRNRAmzg4v@e@Kvi!?z+P0HSz>GGu|6kJbA!qBkk|cA? z`TOru0AvVXVMk77um5WmCeiO3TSvs^O5N%Vy0abE8cJbKo7MA<;JhTzpEw4iw2*3& z5kT>7>k!-2$lVmp_XlFIxeoS2r#kCYv5D6ovI?i{NLW)0DVaIFxnd3TE5%2LC@IUaV&_{a z4p%ujIMz-NgUjn+(+N(fwydd^md}(26sV1;wwSba((Do??40>tU!?ZwJIBwT90ZjL zJFn`7gla^C<_$8Nvp$BaM&>DkKS83!`6XE~8;Y!841t-G3Yc3KlN{|a>$!{T|^w z+p72j$)f*6s}t4nV)Y-9sB-mVd;AY?m^d`_bf^e@mF1cxnbk@kLswtnW>Z8%UAhOx z0w);&Vh1G!nP0`ATs&_9Ku?wCeF5EwKx~F}9m~ADhA3bygjd`_azf%S717Hz?Z_z% zZz(A*%gOmAVQ7TNE45a^lv`At4%5M@B}zgMwK{!xDD9U8$*6QH_fQg`lbIobRviVzK=^ zc5jO>&gc0H#5gDj1{-u>aKwUPl#9B(5#OQZui+|7QszESbU}2#7fY_YS6?=^S-_j^cyafL{DgC@HX1$ zE3UO>dZ*qnX^qZEV<9Atxo&%d2%kr}WK}|rUsnAd0KC(h$&!0-ukyt{V=bAet;yvJ zQwGtv`T@?k@&U(h&*WzbO3o<95K>B}z5%)-2fg5~pJU(jI<%lZpkjP=MbNrQ&xoWH zc&R<&0 z?y*+gA0=rEuHKqlB}-h*fa&LV^|seCsx@M3m zyz7pn0#|tOrkyG+t3fvC-?YvI^~!-$3LHZ5s|T5O@=~g0t>sI=v5%$6ZUnzM>yxdm zEfGf+tJNmgBwH)m@kY~FmXj8lLBqPr=E=Im+h*_$o>p;JjE&_;a*RR?e&mdI{8gFt zAKS|lDXz~8>JN-e{i|d4->uKElRj%7#{WtdBvSCFp|yDl9L#J3!W!GTO!WKL(^E^5y#my&!9;fpjhKhISUD%YQn?S#t$(5 zwPa;#dIlc1Cf}aXfYg#L$&uA>0 zZb(oq#t*0xR^JH#7@$TNk+*fkY>d$c`)qLp8M)r=Zk{R3%eSB)kg6elvgzX)B4P*W z7bw$0GwGaZl?pF8Cb*^;@wwQc;7N^|+NMU1NybL>W$xN+k6vfTU<)B(vwukVSeKxp z9PN!wPqQ!`Pe`y3=Sm(~5u%)PIOFia=X%=-ZIpOhxBh-lC};8m4TV}P&+a`;e_ZfN zHDOqXMV9`(5x+Ca)Ov!N{y_c%j3k3!Eg5EUx3($iCmC<9fgVR$S-GBKV`)%s$Q_An zfW*IHBb8YC#z1B*|4pj7srfClMeyQRZ--zW?gK)>6Xbv8p&2%+JJ=Kv*dZy>Jp(mu z>${kMiZY)85aRBosT?rD<`D#(+RXG$v8b!25a;aIq+t1<1O-!U69f(K1N@ncHt-RX zTwzs11F8)_qE1|sE^&l9fiCXDW6vh&Fayvgz-gv$zVipna(CXjR{+g$MKBCv)*KoAMqYaFy@ zfd$-=u|_Y|Adl#MQg-dyx0UZj)8s$s48^hM;Em-iG_Tw6!MC_}D|s0IP-&n8nR7JM zucJ<2L`KzOF6S3zy|}3qv;-Lc9P(S$Z&TB>f z`@jR~t8n+AbBRJRfqc?w$u!YuFqk% zld`cl&lwXjURw5e)NawesMP*Lw*qm`$y-FrL>9FP1&>r;4nD;NZ$sIg9+&OZxYI=I z`1qz&>x;b^iYW52gyUm^49g{Ms4E-%u&%bJDX1)&_CuK7MLo{LB2C}#Bh4^FQOWR2 z+vYbyx(86cbQBx2$SS%GtGkUzfP@GoeB1DCwFRpNy=KIiEd>BM>{#oJm91rZ<_V>w zFD6vFy40#AE5GUn^4I;KxG_Ql_+2aw=O;$*jW-{Xk$dfPW9oIE_m+IV@CL4gC{x(1 zNq1Zi36Nx}1gUE}{W2cnz0Lm2u=x)Z4$p_9WH0xy+#hTIlIkOjKJTKwDQkt3rl`2H zg@yTa+K>lJlQ~cIQDJHPe?op`zZyz0Jg{$R+S%D{M|@{)c#deAKbzF#Q@?`|f^{@J zi_%JZ?TZDCJ1r8sYJ`A~qhJUJdU9MEr=-XZ<3MFZ7Tw4@%W#b5j;u38D><{sXizMQ zqRu^p&_7~8t*^=)=v(9{(nvtewODY6W+aPk{B%;@+Lcew5E9XiI6iE~lRaIL713qu zsj4X=mzAY@{_p(#`&wfP7%0;6p?nes+}sqjGPU&@{gpyAyw#+y6Ecid&eNRR!``S>@^|Wq_U#DXs`>}yv^o{h4tg~QFbKgq* zc~Ig@{~t$t_ZTYofj*#?BYz~f-$V$#F{atwA{8Re6tCTYZF(N6Te&owhh}qh)DbQ&>%ErfprD{C42Bu9k~+yJ%%*6c z?HLK_-BT`@v>1>7{k4S&&*=D95qtIlJLQ$@L=puiBCQMj+$SSve279bS7`zb{2ffU z>4nWVZKiMf5{SXLn3%J9>1AgqNk}Sq&-+3VC0hPdlZj=_y16Q^i{*z4t^gGv64=xD z1uYGX9Ba9q9;;!qn}1pMSn2}tTH^KR&2VQKOLnbqOf{M0L=2To-LiS8rHyqiL91(^ zDC!3IkW<8H91QcMgsM!G9dq6?g^CeP|S?%&K5;*^W%x*-b}xqPvD#SYuXdVXPRjoukpd3xCLu zb@GC;vJEhZv+^$cwxDDRVk}dOp=UTr&T^Dbt;RZR%o9)o1_!?RNi3%dA7{$-k4*_} zcci&Sd0T$GVXVo~){X*3v}E_>4&wpNJMPCe??7`I?DN=Hp~XxWQaf{9>~8jJ{5}~k z*vi-PWm@-Bq?6w)F?|JC1fE-;0nOtf;+=?njU&mdNF^hcMaCKpmKY2Qgs{Ct{)&z& zcKA-|3^}rsn*^g!(Q}UEeMg%gI-I=?dMh=`qm?SnLZ#wVK!EZm^gr~}f3m)0OnSH| zX=wU(8^HXNDeUSTCCs&fAn^94@_If$yX;gsk*$$cJ51e;=$GT|UQm0L5}vhoY_j61 z3}sobQZKQToEtq1ZKd2d!+}Vb zcCwMesx{wC8ePY)F$}9$VtBFlj)%*Ir~T)~skzr%k#!R%iJ}=;w_%(09!HlNAn|lM z?z!;d%L!ZCs6Tg$itCMWxs;2Qh=;C|%B~v>Kzt{<mcSY`7>0lQ8UjQi zo0Q9UJ<~Lar16psPF;Ia%|$dq#id3AU8u^+aTV4=|FyQh$S_6j?2V@RoJ|>`*gj0b zK`gi&3~b#;qE2SNY@c+rB~}&F_)$vhkJa}dtyKR!<#$afnWRi|7{#Z3K2Xy2azM3O zsI|Eh?r;)N11T>=O?3g6G^4Q1tqtzOD8U6tH!Pz#MRiE=`@Irfh0 zicoqfO3OAn&1R(*6v}cf&Hje@maH2>eqL@yH&`c0Oo&M->Ywd+73!PpcJBn1IK4jv zDJr_%RuO8nI^*hr+TZ@WC2H(RTsHxMAhHzrKyburJUlYESzN<%G=}w7~*a;~(SR&}CvqzA{z}GN~5S&da3DTPP%UGr}HhERMxQN2L z{M(a_K0>X(>U5aAqYZ2N1GTH1wah>7GV4fe(1#stygC`QZr_cuk^Iizk=cr3jW(Z+&;ljB>t6^ET}amM(hCP$>g$ZfZQWfhq7#DQ{rS|f$M>Bi$8Qkw@nqPxXv-(sFhNTrDwr&tJ(0elg@LiRs7Qg##t3KEZ|%4K@h_*lMM|`%a4RW+b+YeBDZialV)aRO)c;`pp<2_Gnlm{9h=pk+=z6s}r0t&JxF#OpQ zKGJdlQ>88)C=3poE1AVAz|3zpfxe$P_+sFPk()0jt)c&=5+61ddR?w6W<2Q`6mR@!0YwH zZ3~gFuUs*;Ug(dlp71Vh@`2ATkm>pgGQ7DK9R^Hm`la7)#$2s$=<>mdKx}Ippf83T zXMJkFL_3|@iP3{k=j%!PaCM6tOxlU-P2dQ9wdN3jTY}yf&LI)6BJJnASl2kfeg$&D zN4|TzqNOMGMrYtCEX$F}iU=aK8vNxNUHazfYWX}o{7!4q2uKm?bQoHg#;~wUEzRd} zR>4IgR1}yl7|kzq{rdr~)Z3mfGk#%BH7=8~y7gJ0V*1TyO(gW-Y;*u=Q(!c8S5r9OE zBvUMA>x*sO1>^g(XZHK6*Z|M!J6sr~*6n0IXNP!KGk%BDq>z3igAOkgX15nZBm%=4 zb=SvC56&b<2pfJMilx{0_>YMH24^!Qoj7x$@A2lFLaq4Anqk!B>*$KxApgyGLua@D zOPF4@n~h~)nfE+UR2w@NMG=31f;pe4By>G)ZQ^LQfOV0@9xhLD3C$glA!D~gXySMO zK*`Q2l&%+Q(}Y{@TsUoz2i$$#l(*3t&1p+p#{l00!tXrtNFcv(bbYdxCY`v(Z#FGZ zdTZs8aQm2D&j6%)$6pbfa1~-VEIH3!ZtWzFk=G*8@VkYa$v?uVtn->iMXP+>$V2%R3SVAhHHSZX zq17P(@o*cazgRSDZp9xLBbl#%35Rk`X*G)(p4=w%tMopf)uWSK?=d&^6;DhI&YN1! z-6edZ|B-Tx^X8!RrhZ{oH3LGAfz9iYU-$VN`Dn{El3d#Zw951}50A$ZYsTQU@Y~{x zdiK(jkrSA?ioJudvSVX9g=qSd0ZJ7JV@OscsmWMCW-9E~Zp1#mKjp5NQ5P6MZYt|1 z|1P1d@(Fdx&USbXrMQihiz59d`bH?6p<{IzCP!sMYlVAh4z&b8*bA6Mh?=*3cu#M=oL+dV%w9ZYuDe5F^V z>9<%Vce`G!ZvIZIW7-^2HPupR>eQ`_VG@&3nfA1Gyp?;@C9e^voY|58|7iN^s4Bnb zYZVnGC8bf3knRqpyQRA>-JKsvk?sa*kOt|JZZ6$jm+s~Q@8SEd-ybZIwe+%{bDo(! zd-lwBqRbK-A_Izp>|G2|=bx)*Wh(Zpn~XNiC%T8}?BO$Yvb-0AQeYEV-I5_t9{Cpy zj{fL-^g>92bqTl*_EPIzPe7<>>GOS{c;2_WZVQ`EWqJ4`H1Q0rk7-toXwygp$>jtHOHIm$ENdcF)%tf)dDO4wN!WcJnE{;E zJ?W{}px^W$i{d;!hfDasyk$Hay>i`2+vHsNCsfs=b6}=ZD~v3-8i+x-oRlMUXJxi2 z=m*GXCkB~eIkB}3Em(~M5Fu=;_gLAa(*I_l`CUnc+}diKhWB?9C~8)gSKD*@G$Vml z-_04{!O00npzQI79af&!p|N%)Xf-AJEH6GyC9puCjo=U$yvmPdn4w1RFmO5+<(fyf z*K5Fp!!twJU>Oc$6ZZUc*=oJndg4?yUyMO}osTI)e9Mi1BY{)NeRnmwf!5szS`(Hc z0q+Pdghr+>6rne@m!K?Oo_0I*n)lAn%1JDDj#}Wok!_z7$)cw*UY=UsU3gqDWHp%& z(0#mL4xl$4MrFbeE56?s!VM)EjJ;M_AR%q@9raVM-5?vJF!bxm;QX6mrajNXPwkJo zOk0TGnk*1>TPL~b>bROOZfp-`Q~OENa&u1-GO{KQE}U&Qg60IvUtLOe@3ZBQ z*C=hctS@J3XbPvUe{75^n_v8Wi=HJkFaPHcD%@$?sKjd+5tUF^0GiyqnryU|=8^j6 zFDcjc-W}jS{YH(}z}~I;-H64BJUP5h4rJ1QK$0TM@O-Su$6 zBu;9dc($?Yy_ChP5ikIyG>b^XdSh017x>Ap!Byou5FyY~2&IAHK{)ej)pVRF&g(&p$MY?e zuR^-O7Bml=m~tNc{~q`Z?VOw_Haqb#FF%jxH(H6r0T%3T3H#aW%NFlP+`9kY09kH& zq@rt(g*>h*J%PEk%h7wzsQ96fBhP_-v1Q|)2A7jdWmeA>)c=1a&_*jbd3a)6O?{N) za@7lH`$}0-n3e|8@WhKeIUdP=B<~3s6UE`_2#V&D$y#!S_?UBxWP=O7^$% zC8d29Ds=gv>-_Sijs|3AK;e5Xr2FqluaP~!_9>mL>>5jK_gpp04>13((bG9j-*QGy ztf`=Z@}JyqujxbNsw4WrfAf{MJWsJ>>ESu8s|}Oxq3mj7C##P7308^WS|7KUFI&iR zEzi-a_PpC}OqqJk=)SI0mIj#m9bilgb>AEE_xa1#imKq)U+z>A;;NyBRB0A>*kOhHzEED4o5|pA|vGs&)eAduQrjA04Y%C$}b^WaKek@5Bj* zC3=i%G^o|y3q7AGx=aK&L~uPfz0Yton$*tT-l$7V zZe?@SR@6)UH+qTYYlYG&d#X+N(V4*TD^!oJk+L8wE}QoBjpPHwXu0gE?WeYAWUI?i zolvhWkzinU8T0YKs*Dv-0FaORz++rRWjop6>>5|;UF!@! z-vUJEXKW(U?t|o*&PD_N?(q-2jwyTR;6`&mD_YN`bU)5AsgeH&}!i7 zE_JT<9a>hYKAAS_I3q*JDg_mOpKDEM>E!lCD&Xvnt;Tbw)Y?V`PLAXo2h^7I=cC*I zt6JavWnW``6IQWq)0(qaM+6G2Akw-Zz_+*Pw5YHu)(OL2oK^7Mv6e&l=(9urZA~t} zIPRS%9k-YfkJVYK6VLq%gdb!_o+$s)We5+#!SIgD_L$Eb>q8{Z7k=Q39$(a0Hnz^+ zb|8T)wHUPEdp8U7Zw#Vbe2v~=UQup!ut|sBLKK$fAmj|U9C+PySNI;E(-~8e!6tTz z`gM59;36cYasS$_WYKQk=k`bK*0PZNfJ#%1JpzUTObSEmAVbKo-oq7h^yBN8QE^H8 zdj|G^0hhID=>a}4vIw@3xC#=`vB;hYajcAv7va)>d$ zY|0}pspkzAP}d|5#Sb)ousrh0<3Gk7-)a?UPdB1w)j$!&DukT6o~^T;w;V7{5G;yB zaNx;&CYFKR3LQNI&{k%srnHv7^F0l_9Wz~!xnI^Gjmho1GB;%Przyl(bV6@EemR@D9N7vmZ__w2*)rMC38WPk8NL z!t$eN{q6GAw`%bc3~QJiv@t3HC1``&H+Y`NeZwUS%Gn=ygen|Gsg@ph9lbxQ~ zW%QesETD!1T7b{8JrN5bA#+~v)wtUtc|ZVlBN$xsnJq^{B&xfKm(t90<-5;55Emc+OiM*ZP%e%^q<$8A(*(=$8~%@0$in1z7{i%=N#wc1cn?Bq znXY;Dl&5xVij|9&GVHMW@a}c(v#*b}`>aKi8cMo0D|K@}_P(v>AH%vYEY+)g?Hov& zC>G@iSzz70L*;Djy9+))7i%1nyt$l=IGZ0kJ$*YgPflwE=IB^j0GyG^Jw;x@mRHpB zoQ1ukZ#O5u33B0V+Ojg}q5H7qySzG02xh|IvBXBCGs2fYmJ7h->moz!f7>mNc=sQ^ zogkDp-iCmN!c&i^7Ns?;+Ct@cYLB7PWU>|vk9ltm`Cy~Vl?BQ@t*+2w0tax>diZ)J zQ$3quXXbgc!Oi}>?rhB-W5h82KpVCuu71k#?_}EcUUoW8XX=o9iTs_}dOpoZ=|5aG z^d4v=kdCqU+tXyP>!saCdumK<3TkJ2qH$8x0Oi>Bocf9SM{w`@lprC&8{O>(r8ChT zlh9E==PSF19cuJU#)ZN5H#(&viWi2UQMg*Pln6sF>=P~>D{u! z{7_AI(h-9?G|%6!ZeY>%CYT4`Ly95xkQt3wVlz&JX0NFf5N!Hm3)9D!%ExEZ3?pCi zCdqZ>gqBmfw@27RKYDRL)mq+5e}f9wAGJ}3o@j~8P9O}LW20eA83Lw%khZt%bD!o3 z-Dh77#1v8gVl)ShHyuy6%1QG~-ZQ+CJDHk!mE?GTF!5PCbVFVw(sQX-t#N#RXU|>~ z*OX%g=0uxKOz#^eQHVTQBy)Q>OJjg7Ilf^qV-RNQ+9OU#VsP$hlb2^9GAAvP9;vQrN4Fimju4_awGinfy@Zh zK1Zrzk(j-sWa1mVf3s>~KvF6ko+uSU-y#3fpTjeH?@5RNjDC&J6N5cl4ZhekoxXU|qciW^l&{hiHlGf8YT0p}ea#3E2ZL8p6|c;3}!6qewl5LRw; zL{H-3N`D3Q2?fKp4dAMfS&UCj9o(L;3W3W48ppHs`otCj_y3UyS$DOHsC6KwO#)$| zqEfW0*Q6*wV!Ee>(=aWB*zWzStKXSHwdkAVBG{WotM4&2SiJYYE~Y6!U*Qj#V1=kzCoez6??LKLQNg~d#t<+eq3q3nZy1n?h8e_vAUCxulzsUW2 z@;k;NJ&Nx4MG35Xk2%C~`kwlg#s7lkUcgj?)k9qozC_!;&PsL(L3i-FRWZa6^r>z9jE}tcnkTn9Y_Y*BSltT zrmc|KbPIxFVM>9;4B%4G=-x08V1AHLI zzI&wl__f@>UftN}%p{(tVrcm*&y|)Pkl@f@i3K zoOIG{zx<2K^W)ux#+jyFO(ciP2k4SlkBIi;b0VKbVvi%by61>1OCDR)Y=m>eQMXmb z>d9OKd2t$M=B0y!NghW5gvya0nT;b1m+a225Py9_lgIXlo}Fy#U)3ME`asWC?pmO* zd(m8F#mE#PX*DVyRfhGLkIe&Kd^cQNFAwK~fs}dm$9QgXtR;%nMuZR~N<0_*Si)OY z_N1kn0Q;UtjU7U;BN0q>ddBJFD$pv|e5EK$)0nk!Q@A*<@E$jwXX;z$z$w=_ zCw$r6zLL4GuYY4?%SZj>;5=nMHeF<@Mpc0ScE`nt86n<>C5>(X7gyja=YgbuZ}4Gp zW7BB;VEhfo)#=ddcZV`bDQypBfeMl7UytxL|46qpGO&doYfH`Wth=$xnfBepjXyJG zF{fvsf17(1O6MxTv701|x6}t#3(5&(3>Tj1qj;{0m`LBp4j&{}+T9a4Hi(s(k%I)v ztM(&{s_)`=?mu*Ui|&;N!*4`9#4ln~&1R~-Mw_9*4w?Hr&J~^fSBmizw8nNcQF)WQ zBj!%qj_!`!Ucp8gk|kfR>>v+KubXwC9%WZ#@NENZg_Kds{SN~6)Ef+ zC8)lc*+oIZ`B(0=@VAD`-N3Fx7nfFq8fQ6y_i1(6?ImI7Wl4(K*?>#vow;@W<>N|_ z?v2|T=P>CK^p_2!d~F^-w}y$G&G7u3i@du5-7P7xNOk69I)fH|8q-tnj~Q+~|Ffa| zUF&6LxB=kP>M+-@c7JPOyl&$9btZP{aIs*9>-q4l5Jp&QE%(SFx@ah8It_VtTkr0j z#F_qm87f*d%4l@%PkDJIPeM?g%+~6O_-~%9htJ3&lNS3_8O{3)i9m#eFW;(rtR7xP zORZ=vNn1h5f#Gl}P>J=4vBJ3%Xy^!9kNHbwxIeNLJX9SL5v3+xTxcy3USYHjrgey6 ziB_&893^s^5g@!qb)&xc4v0kaXibTR3CA0jR-yRz_A)TvdeG6mopMKXTJd|@QSA>k8O)jCAuhNC$0?746k zHrvsybHApV<`O+l)uYws-i)?LfcHRQ3fCK`l#4q=iF{A&A zXWm&h5hM_(8s*AIMyXY%>(7{-yA#X0462M`<3B&a@3A(`Qt-USGf~y+hQGdzCR;$;a^<7%0F1n`q&hTjM zS7sDO-WKkJ*@S=Qk=MVYJGs$|fCR~dyW#g$Nfn;N2e&ByhG$N;-7B~A^4SoN3k05;VOOR}3jP6FsdW?cDpvRK?P_|D zE2Llgw&|84+?u2p1!aKP!VRAQpUG>swTb-%xv9yEiIu&(xAP@~jjqn45%u^391)@8 zu4lC6=qvyAs%j21zR%-1>YmSI{Wf>{zhxme+D8-a;86wE^UKXi3>?+6yu5xnDZQgm z*r?gWd2&VW7-rxu-15^Utsykwe)d*hv)zTEqux%;UG6dBBeI_<%dXf0g8Rfz|J5|G zzxVnff0@hn`~@n(?eS9YD$4G3!1#|Iny1a2{^q%(L&kj&KQgI_Et;az12|ZRupmBM zcT;zMx~6$?r#QYTo{QO_Jc7BQDU~{HBcNlT&iJp6BZS}win|4_)Z?s>v?mfUOWt4b z^cBihFZU!Ix@*xrbXfYsa(#b9*cS`?1nq;|U#^EfSb7&)>5^(F$M3EuNnKlYIa_~* zM5g4gh_4vmhF@1sTneRIKm}T5+W&p+7GuFZThE%WdOzU7hwg6GzdLc0CHh}jvxUIe z1C;qGJ~_h?G|IQijGr8nNo`rQVsLVn|4kJ+4)rW-m@cFUxT@=`?BjUehS9U7)06R8L?oiyLEc5*K;`p4C6{rruJm29nXdH4G*qCoyY1~VZpnaCX#Ar4Xr<;(X$$)JUv07En!W3h z0}@t`qhXl$!r!Zw`NcxR$M@Sat&WtqMvYNhOEs-MuNx(9?7@Y zxV8q<`&XVX?r^NUYDr`d;&$3obq2d;-#~fMRS^lM&OUsi{?RPP5Zm}R*e?x7rm6Xt z#o?kxxMx27L2|j#koB_{1k)wu&TG`DlZzx#-c%dR&!tbL&xhD$7Q2LoC9<1Mi1V|D{xIN+Vo%@K-!u|$Yt`PL)Ql} zH|xJL(XbD;HnZNxNbT7pX4S>%cWgy18DYxQoB1~(C+Map$HW15(UksGK2!42R%tso zT@Crkj1y+c!o)WT#2FV)FK<*&!06gV5{f#WaAU=p?Zpu=HoC$XDJI`zKiFChYy24= zo@IgPL*d06er`XN211!F1D1E7>9a<zJ?94f(`N%AkE!`Oc@$|ulrh5NMCs}UvcN?#7rrJ7Z-T)JMcNeqaA3m^! z^=*+rU?#tNlkp)&BI)!%(&X_}uD%SWUpCYMZ@i$28Vz=B;28z{l7+mAszF|+{K16H z%98=%xA)NCB;%{!(`E`rxq654m3CjhiDGKRVHP2NM%`pmeOBJwbGmWfdnO_yZ>@;4 z5s5=6xDJz&b&^Bj7d}7}dfwYBPIf%OgiC*O7gYxHo-k)S3M2Rt6T>3#P+8C(!GL|^ zZLKgK&E`Y5-h(d6a^8&YYTQmKF1#q7`C=2caXdh|UT1s$;dNjjobk%#^|BT{J#TX8 zUK`P^Gbeks=l1E2B#I2RNnS@s!Re;(zP4=V5)SrO--$U-WR0PBdy93~BIhJ_TEn^C za%PpKR%>7xL{@)(Dhz&fFNX(iNq2XIN++l*GV?rOll<@+Pn!JUAf~Gb8BcC!)B4K{ z4hxhsld$@uGm=s?^t9DWDyXJr^4VP~B4}TYGX0ij+3e>=kfVq>?eh@2-e~@4%pI8d zqs^<zoAH=BR#&XP_ zCHT_+Ba9=Knau8${FbkfkZhKig8k~hT+QaY!xVf%-@-5!im7n&ZYKh^q|tMm|cHK9vuHmCBEnOv-etU*U zg6dkl&Ogbk@**)wL;U=(LK1+G(K(Hprx>DPuJ$3Q)q|LFxyJFPJmelez zsW;2b*q;>%&OM2bmX7qyVW*u??KFv8#lU7b!960H$!eJZ)74#>T7@M>3a)RpDR#j=iI(uFq)CK?eB&;EJ{!7(jH*A_>|XA!z*qyACF*A5?nEwJ2P4KYbW zt4417NP!7kB5(q$%Qz%Pz`L9J>aE)n*Fx4}bhTV1vQ{2AYVHIWc_>vL=^2b;@A626c*k$;a7J~TNCLAYHDiChL`A;^Ip=QQAm~A>-mV%?$FXp?#8|0 zWpb?g1>@#Fd5_;~3Yg1Xmy)v*u%^Rc8F_sx=pyaMZ|$8NV0Rhbke($h;M&RTs^`)j z?jCksH-mV1)mmXw=>eO{$IbDY&P{-w{v{{xbgQLG(4YIzkE?Hbh8^I zdRX#&Lr8->MW5`O-7I4q^xX_N#udcBNUjE6LRbX$^_4<}_DIYzphEacO~WZO|Pfh%7rO0D)vhwNlaxBhv-P0VD~S9V*3j_GezYH1L)y_ zc;ra7YL}DDlqst;-W{&f9^1+QqGJJ0fA>IVVKvuX6HWhRaFnYm_973b4Ay%Vi8*_oXuEVNo2D=@P_E-Y{lML|{L^1)<4 z-Sy?A%qV5>9&Qq-Rd!Zu$HK+R5S)H50Bc>$FR!T7ThACbo%;LG;ZofFzen0+KHb$l z6}}PzqvnaF7K@7WtxwY|JW0(dKy;QJ{?+(PHoFCOy79O7jFYv_(9C|u%#oXJxWy`@ zXRItutfZH&6jEo=7B$AG!i*5cxRQQX7c?TFa`TBbG1WPDp*)B z1NPdM_81Aw)^VxHeC(6u&iEaHh8R-%MPh=7VIIj0XQG*AE{*@*q>)S9F6X#+5Bokf5oqaOx%bZS`|n|Lc)nnl^JJ{>r_4fK7GJ+%Re-`|znK^mwx4mA1j5f> z(rORe5iQqzVEm$IYu#-}1I4DDj(Im6n*Y zUg>IBnwtJhO5%C~?Evd`O&vPhf2EE)g|8%Vg4&1XaY?#rt0WSVQ(<=UqWj7knv>}@ zTWejN=%t1L5JI`lqB*~J3!;)()4$cnsm$+1JClt9JXdK(o5@40Hlq!d9mTkUwfEgg z0s`56krAesyYJ=pc~2nDm0pS*(L&+lhs|z|_m*t9F859EsDaJR$FgRoXeC&OtILF| zH{6iZ9PWS!MJa1>)fqu=Vir| zSV0YlA4W%qR&m6laY~U%q1tJA<^jLIhEv}OXwfD!Ue#y{$Z5qiz?uq8b zLw+_mYq-lG^GoptPwa#|kt!7Q!(}1;%;>k}nXx(Vpc#EOxlDms#08v%m z7g}ZejS=rB-^KLB`M!9_Dr`A*wXAulDWe6L-N(*70g|lmn%>%Vm>ezDJddqtWSP1k1IK%54yti_pVVq&IIzohFX> zeR0d6o&SX4gr&a*hv*VHcccJh;C3*PTWyZ&U}9(gmfz?#UNl+|99BQP?V_W9F=y3l zREbFRWb3zuH&TQu<7L6(efmN+9d)x~Cq%vKh7lmROe=>`*Aw;Fv=r#{*`x8&7+t{x zfn_mm;{9w&DBfIlrBIRLQ^=_S#p&@poV0gfpsQUFTe~&)0}DpPR$XVLQ@!s=35sZJa1c&vFT*27xNHgW$AOn zuc%DCx!%_EhRA55Pt266L}dN`kO6$MstoTa&<^KizJ22#(yUqSh@c#|`KM>@hTBXU zPR!Li%aT8`ckv8R6OodirIUI6DjrjQDr;Oy?0G*7-2iqViF=(8SW*rox5htN6w4ki zb@wgKt1(+34K<$swkq?!u0Hb54LiW9cV68Q4-Z*gs}Op5xG1q*|J9L$a1##?JTMm@ z(WVpnMUP9I3nZFk9cVx+1f#~{t(6!wS7%x^qt|SVY}jt?>a8h~{SLF;D-yap-l(%T zI0NHF>>=@`-%3cjffa}(U)iWBr}z20Cj>b)?LhPKY0ciBzJZRU10S!hC(B~XOU2=r zA|uu#!rXt&J0a^jMtWuJal~2juXmET;0*?ZXO9b#D$XQ|h5iW{NA1NDHmjyK+Ow9k z)7mY}qM)ixpvV`~7A~Ui?1NpR55>|@j#yNKbo^7JWb5C*}g@Y#so$r^89RIw)tD zlR^Vgz0~S9YzW-%`0a^QRHmA4F7cK;Jy1^UDu7oBN1aRf^t-Y3TS*}6$kldax!AYBEH(rV!qSdJO!-5FmpI_3> z)t+yTUj;J%hFGAWbV?ump`d0DzVWd(-VyMilET zkBRoaz5tM^fdv?au`D-t*dJw?j)mA6M0%NFsSvU6k$!2@+SM;E+?mS|*9G>+*D@!H zek9Iu8?HJwz7`&f%bsy(>+T#&7ec&@q=RNb9U^?lQlg@|0f~CDCPjwF>N;acTE-pn zrnNuN$*0Qhei>xJ-)Z9uen>^l zvYNN~soW#$k^bv{%2uEEOqt>$Aa2N?aixi4J^DXNotH8u&n0 zURhmK&gp+D6&~{O)Ab9CZ?LzGuJMWG^5-s}KLXRyotZ)!uXI9T=+b?8CFb%Hzl26y zG*)Xk8PoQMH2w#y2$N=#79}p6Efafq!f1||cFs`avO?M2&!D5v%3K*TL_x~bjW%P) z@eGtc{y{;M&9~=1l2LC#1A%Z*S|$eej>gzc|&HetLi*b0^ifLsh z(z}`C6BZ^vUOXba_FffjsJ>d?{FdgHDW{oAWJ%4lK=7?-((dyyGoeem-a&k}QNP2F zEa9US*c{8@!MChF39hF%rR0XgqOJSFf|@6kS}00AmX)=duAY{WfgCr1;!5tdakp06 zLSL1#-CgM3H*r*yie@eZg|g`=TsO4G1b!O3;nYrxx|RzZ_vZ8`^Qmsl2;IoXWj31G zYD46`$N7-z0uNQ`vgs#db`@I9P7s-aV@KxWzqY6B;e5a&p!fn90hAl}tmdb~nV6Vz z9j4PA59hF`lGWW0r9Z%+X%mo@Gp^@z-1m zU^qsMvNNTG6wHClqrmKG^KBLf8Wrmc8aNRL{UL0lY`vm%QwSCjZ(wkswhDWf9-g>u z!D_uGXVm#!nHop25IgC|bMv@A6E)mvXmJ`{$NKlP4%?0alb^uK{sL?8#^9Z~`*b%g zWsJXXzqYvdewg=)_M`OWa{ZKOr{tY2G$4wyGoAka_HV~PM`5KL8>q6r*87watPUStM25f(7Ghk?>n>=48Wio{? zS-nBymXox{^twg!EZ!5Bkuljihq^*0T<5Bf;A%a8=(mPiUw*}gPE7hqEc_`LKgrGC*r)ig0Hp=lq&BgO4Kgr3F(e1qca#A4@Je|1r zxu+` zHn+i2gx)#dBBsr5wp7JYsY`i(9G^Eoj>4M2mnkd3C$jcBd#;}}34U)HY~v$o+OV;) zKSYT$vN8*nC}vKYK0SiY0fgCxvp0Ep5#AkfDJg!kMIyN>3i9&utno4021#J|hI248 zqRZIcg%Jd@e05DhK>;fGg)28DC6>^`f-nmclW@>6VlG6H8pz6XGugt$(eM>|=bxM} z<3KvcdbOIu0Q7_{UuzEDZX6ftg{QZ)kB+Ne+uj;9?YWIqDLv!kc|B6yOv$ z4ATBAa-Rf?o0F>kfB*jLmVtvX+v+M^G>J**kOt~oE!1Y|nMoR9QGX0VLK#teO#D6x z|I{zdw9t_mJP(MfWm>A8tzE}(-z$&zs>S>J6@M$b#-`9{GxhFgCseY&CEJ3ihgE%AwuE2?-xc`U}}gPa`Ap@Anue7wp;sZvDXQp+{FxnOp; zH~52^0QLK~X|#u-*-a%|pHCFeuX_ zARu@WvbEJJU_H@;^0Bdv_B)>-(AV}{*DpS*(%bP-NBjDE3eqEvx5|m76LR{);hy#m z4)Rnu*c-5H#7OLeGBIDBG6wHZVPBnm#D9Zhe>gvy8EKq*vsFd?1yI6c4OId6`cUKgYU0J-+eg^!aWRLg}e%YXrbUk?S%+?r_Sxi~=z@KyAP9|yO z8h~~i?W4m-kmqx}5o{>r(uP79T2X6&X%!Lt>ZQVdzR#q@QPQqRbrO%EDoi8XeN{h!a;h5WbYu4L;XdWsu!4SbLD`1v z1EuhUX0Q@)rvIl(K^CRFZ>iTTE44yOiUqp-+|p|P5W>+n>*_Hvbd+>-aiQm|%q%S8 z5)u?-G=8*hxU=?dqoMp?BS_L7RNB!8ONyClYq}Q}V}@H~wvA1~6*E83&;^|55K_?< zzuCSa%EOJvTZS(b6`pew-?-Id<6_GfDF5z-3MFNT1wZ{XGDXJQnf+Bg zS3#U4@Pxtq`sw*w%+RpV@|udS%Pk*ZQ^GmJv$nC}o7RkQd5MNcfdBn+6Up}&k9JT7 zf2@^E=+;Fzd(!^olnpJTsWVEcEfx6}m1Lkc3S!N(m3>p8y=OKWw`{*FYAI#B%$1-6 zI7!8)s*k*8`0Djq4Foc#!bIObPIF;le-js`)v)SQ-_{`+b~HN@OQ`X7G@r*tEn&6KXlk2!jVli?dSc@4|KR>8hXdBaw{$w_pmY zLjC-c!?VK!ul3Tb$ov)1)85Dt2Jnw*bD)fb>tSJmh(CohU7w*<6s*4|z2SuZ0k8fP zygF2*^-xad}l$&(su&CJ)a( zF_E3a*}twyVpUa+g#`=X$Uz&w#MgnX{)On?`15I9k>jmiAC|<{4l8vy)F&cGN^JXf zM^fv)LFJmuUo2Z5+m`HO%XSqt(~r&^;W0%e38=VGp>o#v-l){)?Q?fHNiG7~00Ia}p(@Xp z{vsW3joWol$y0GTFr_-QVWgsmZ?tcUD~@ddckyJaJK6U~5Ccnp8$S(J>+N6{KJ;Bz zZl(NqWT$3e$KhFH-t?XdDL7n?f}1{I`x?7cgc6egzh|=?PjO5#p`VF0a&`JIKZs;w z3uVu(lJ9=bCdvgrF^uUxUy&a)>T@bP3NW#gf;rhO)eUGl$X~N~)ZR@M^oKY88ti=; z(iqPGvZB78rHYoV00%j)hzgP{e=R6Gw7Gs&arru-Y z;xb!JxkPw|LKJFvLyV<-U{LbbOl2xOz%Yg4-+i<`B#9%|sMa?y&;TMS{aDFY>PbmP z#wNffA_CO%&d%%s0g~Vz*jH{+VI###lFK*fsOo28<|-+yn3Z@lsl?=DeG5oXS{eed$`x~WO2BnaHazRrGd2IVT;{BQ@Nj%( z;Z}%KPjs^?Q@Pf$&E&*~c9EhAZij~wHBM)@FcvAPkiGpU4ooZw@t~jwSNRrq z^W-iDSc;saM166`c%`D9c5KYy*PX2NI>BpeaRrJ!jBHF<;rYlqhq9bpYU^vJAt5nz z;g?f&T=VN2dSTVMT=BShYMT5>iah;-IQ4Ew_NPeVGEfROZCQH_+%IPKiYyzSDIk%t z$s&%Pr+ip`wQ3rPt4gi7EvS5E6C)ueGP|oV&G&|eC%G=h?_BT%t6`)gzBaAtqQF%G z4UMf)>iaj7o#a5bLOV6i>6RmY^%MOWSJ!17dru|N36cHX>yL3bUZFXGuRgIcwwE3r zkUD=+4PRd<;KK}#1rTZ^S5q!D>`3=F{M&E_&yX%nLb={5(*D4S)I}97A75PDz=K{N zDe}mkW7GLAq4c$F^tO(ApR}~}Q=XU{x?d$k7JLOtM6IQBmXDfS>q||P2i?Oxy~S&g zV6)g8BDnL*n?k$uzbBI!}1MqGCEYxPJIzd#|%wROvU>*CIp&GBP3y zH-n?yA7L>pP7T*%W3%4}-(VjW7Dxxu@vaQem#Fyh(uINi(3wNwaB__?_NXnRqJhL5 zjGZLxTU12oWImm1o#sAqS{$Z&z#TEUFZ#~^*XrhKXhIMR2=TNe0|Tn>yy??axPr&8&j*0`^K|1x$BPT(OVp-6?yZ#qcJgfi8WNhHL1 zHR=>g=6=-86fT;KiqZTJ^kx=#UzvyH4NgNWEq~@Wjt}k8-i|lw(0LL}WW{R^)lGY- zJk_uVH;8|~eu{cWEwV!qt#)JXjQ!r26_ZAR;)LX_*PAQUfJ0c5GBUonxw+LUVxUk>B*d9(_J_% zwZBT+UutqOZ`YWnoW1kZnzt4afjHjb$%2K-wsg#?y}gWrf5r#%r5bcRrpkptCtBtg<9|22ouT%wyA#U&*RN_x`5*4JlTZa){kwF61n2=ncw z^X2t5Yy0$k!fRBot^{LW`96?+%~qEqaUXJhL}Bl#z=5oaD!w*LvR53d6qkZh(2=EV zOh}Ja+4m07eBhA#X07vlw*JNlwza%Y8!{fvxd(C?W$iBzti781V1)1-|2;BKR4L|TuW;A)ea=Sso4xnZwpu4&0UxVQU z1YqO-2_cd-=PM|HR!qQnvriqB1B?7tPJ+2_G``o{G|@1xW|OY@O$xE~ney)^?0uP( zz-tfecqH*?y$?4T(&QVfoGUN-2C#q0 zneG@aIf7v;AV7<>K4{JAEC2B=HZltA2L69I5u3SP+0$kfO>#0qZqjd_O}UVxvSj%J z55SK03fyOA`jE&EZL8rFG+#0)?aan7fS9?>tI^G4V@B+k$1aR?EGJmNruokFPSw~v z?w8MW>DnC^%ZMqPCw%99C=ttQ)E+-Tw3g#$Y{L6DF;aUzot@oL>AKec`tlDtTs(!{ z)8e1F)(i6wi}}S}58=sw*^*@Q$!O1!DCLOP7j9TKwqW|E=7ISxWV~L4XM#}gtl{7C z*-6Qo@~vjiE>d1&N9;IpM;m0nMQ$E^5IK{O`YA*arC2M=$Nl$6cyH>UyrSCUpTg7V z{~vKc0ug)!!nLt6MRCa{1;f1xY$FOBwr};>&cc96{c3l5WDOb*iE2Cs2AlE*yzB1r zqqH3KZNgY^wB#zyebmu*UtwXH!FaZ+V?UOB%yJm55ex zIC2y7)L5B-{SrBOdB?*AC(_p|N(xo-@65{w69-b&xr2cO7f2)9j=JQ2S#aTQFZ4zTYDs9p2XhxZMK~wh8c{f^HI!L8gf~Jo z_g}pNV*GvcYf8%Z1Z-9*f+$cm2$Z0YmvXwjISA7YPr^9Y=Itb428A`hchbqt=C`7WJ) zMF%EL`;GoVwmap!Zu9&}TH3w!qLIlJ{ErgycNoVgYAPgrX z;|NBgkTD*fM`B=REdIZTA4rI__r8|0w-)+0^YY;-P`cShdV#|J<@aXl)3Fcp(IuiZ zw9no2=ws~%7~LPoi!)l0O)^t5E3O7RE{Tc3h*7?BGXsXu%+@mzy=5U1q&^0#n9X?wf*$Nvj``r&u&s_E0*fL~z9E*fWl9W*pUivFNJ%gb6 z5C5nnbRbECm!_qsXB8x7>YiW5d57u%CRQ_4S5i$V$${c~Gb$hide19zDf4VhyGOra1>MBG#5D6EE5Af}Ek%_#Jxrx!eemSk-|&Dw`e1*djtc?jE_P8T zXIQXeDjsLfjKvhqZLijRdhjiCz=yqQ>gf=ak{bG8t0&B-O|7j8#BH+lrueKmnOy zljFH(xFimBwE~!7k+`s$ZdUlaAX|P1bL?|#3O6sj&cPfD$ z@Xh6f5K;uCc2CxQGj=Y=<7kb<)O9Z#wkuYqZU=Iu2L#vuz*yM?w~k`N+tD(qbmli{ zDt(edG`s4Q}!KX$Mf;@29_fqz;z#p>iH>znnOM5=-Gr! z()sK9af8T2!|5Mbjy}J_%Nlu_ORC`^fw+`lMz)yF)~~P*OjN@$nBhhRF1QA~#5>p+yW7YVUt0Js;~Hfg}j3(y`eEV56rQg|rxDH}$PN3bZliVaag8FS1k< z92{g@?BBvUUsICCd8}sVL**Uzgs(c^1w8Re=B#Nhd6k7_WLOpXAiog~UqGnTG3h-b ztgJ#GQUzjV@GOnqdxQcmUj?F)!aTksErz`y2f2?>lM#U0dr-R^Tk6{fC4ZCaHakfHCDL`a!yr*;U7{Ba_PPTP z)jf_<%VR9=6B5vZ^hmQMI*umcVj?JGqFMSe==A9q{74xCbHlfDkE^b|S{x-e^&asa z04dSb2ewQ|v-%~-X;}Tche-k5W;zq_U0#1;c=UrqkcJw&oBoN~RY9DjcIongo}u1j z?l++KS#N)p?8rZ*)D=dJ$XzhSM2Y1ls;%jerzYS8P5&uW65ZC^vQw3Gx)=^?fA7vy z&t@{1E1W89{^OU`N;YXW(CQcu8v!_FeEJ^`$SFUMw<;GItVxQ9;9Tx_cQt+zzJ|{r z18n!!vz<*$M#k7h2kYc+69uHKf#{>Mq_@Uf&aEw zvOh~vojAO9e0D^KCZEYEUwe6OQM>A^xbkqp1tPN5zT(fexaz#^d;=Qe5{$+lK4%`^~{qV_>cHOK708kx3S5BYy#d=cDm3 zhk$AX9J3XJ9xY|%X^)(0y!kUEs6Y{sLS<@1%e$Zk-i&jhQ6p1JsSY;L99KK`5)gfz z4quEP!fYyQYu$-=Y3PcEp-?UQP&z!;A{p8ITBq4B6gLNCBk3L>SMMh)w2Am=+u4gu z_01yVJl?%7z_v=q9z^@lV14gPJTJ(@x?hh%&a1xpaOZl@ku!JlpoaTU572%95yz`t z{08#DfS6sLgd($-RIGr`o-((!o=)%T z_?jmxtV_8vnRI#kW9xnSwP^TVPQ=Z>6yq7%^sG?xgEALYPKso02*$G9Vrs+ zqAkCBNd{Nw!&Mz1b+3WB)i*ZlNv&J5tP4p5$) zK2+s8P9c33kIdQivLry>*IX^&p`U(z8>o`A(?5#<)yiXp5o+Q&8byoiYPEqWd$m?v z)bxRb+)I2q?#HUKni(Y-Bs_k}(b_6P3;gh`3~o48&@h&b^`@1HeEY&cC{eN`*o@T z$#9Z`GmY$sCqH7E514B=wS*0TS$I?p#$|4k84A|zi^4`1sxV7QHxJsO05Zd~m&Y8_ z`6?P7k6WKogO%hDx3c3-D$n#OF)a;I6bUuoNXxq~jnepCEG)gmxKl9ben1{r0B--M zH57^|5>WsQS)mPWEP~c&h390^0+9~*E`4r}haxu>x`K{sAF1=+f`N65R|kEer)`l7 z_%)S-sJCfOaHr*ZYUvC9!0l;8gW=%WXB@4cJ(1H_=B&+$gxC3#P4r94{b^t4V6s#m zN}PiFjsf3b-P$1!{dquow|@ZRc>hDp$kBRNtw5UjqZ5^{Q&tuGjRfh`R0+ z*H{NRWyrQeK5C;2jCmX^@UyylTu6Z!_9|{+T6O<~3qyf%g4ErgYsjWwC(+ZWV+D$; z#=RF#%vP#b9{&~uANxne`i7Pgcq>}}ru(R%;Cjb_?KoaO_7kNKAlIWu7Z#w&Am!kN z7WO7U{AN9Eu>s7jt9e;Ip^Ul^+Uw*yrklqP!-pyC?Gyot>U4&(C@nyKn(p$53Bg zk!pebem#jaI#3{dW2um;x0n1qOj?DWcvtRZT8!dmWr@S7@6*Dkb>R-vR5h?e`6jej2qZu2n@A#x zCGnUZi0S#G2CH|UeC4h|k!54-_{+|oyY+j*?(V^K&NSU@{#)c*D@tXmD|Z>lJvQ4n zg3P`xFeHqn{OA{T_tk#JM5Crnazc*GN!M@+^M8NZxS)VDGSaIxV2XG9U+RiThXO8OYj&HYLK++h-**;~;DD{6*xJj||mKA+vrsCS+<&NTTh zUL30NjWoU@WyU*Pbg1sEmEEqu<<6j&rN!?4%gm>o-}r}E34zzb<(Nc%E9b8pFPQO0 zC$0l#bBQu{1fbfb>++no=$P}!JcOgG0)}Y3h3c&7Yr>W0D%X?{-qV~`w!zEfRkN1@ z)Q`&zHFxJp&n>~tD8sUvh~u?ZqOB=)q)!_h&X5{kewz+e{WY&cm6)VxsptGRJ)Z;{ z+nAenE3@h3JzCjQjdXnm{zHJoO5l7;W-aRWKqR7KP0pP+jX1qKjY_D~R8#-o4oPB< zaC7kKTiINIbZ+tILW=;F-N0ck;R$F7Q*$YS!@0i+ncrB6Ue)EBNKzW~PvAhh0UM)a z7eoQUQXU-r&DGD;{~Y8#`yUkSl#Zdj{{wvCBH<~sjm?1}!-m7BGC29&Ki2o$#*Vko z*VUS4X&4N4PC(bEDBy-=VQ2kn?whT$6^-rifg+Yt>P7 z`6E=93Oj?qDRRG2gXDTUq6bfK!MNm1i2g~Czi_8ozuZ>uT8cH&Vl?=J!JECOiHz2> zL$~C%2jLkBthf9SZ^5f5pZ%-9`gmT8O3v))8_Nsd?Q0idrLo=$z0cSU<$KW|>9MeE zbloa7Tyklsn)(8G$b?*b% zAz2;cr#U`7bG?DMDT?`a`%h3do}6*BJV3qQzxyxWNB!(R$dkJe#-`S+yCQ~<_*%p> zK^<5eaB0o9Pzm2M{t-+d*hLJcEyYo9e(B}YLTng*EUa_|#ZaPz3&lznk@RkRb zxa=>H%+f0>nbsxmdbHV$E5n-@8(dBv=;vTqS+Od^8G8K?625fR<`mx<7#80zGhYdSp~lm0g=EEVo%H7tb-%-klW%tr&IWwS+oPIv5lvHTY82*<}8TWfAF(Ar6Mh)N#C| zJC#5+Zti0ywUDHfi8|cbJ$}(izeoKKQw{FXGAs_XeVv70_1=veS{$pBqK+{*Citm( zWLTbZLENQ#A4kPUYByBMF4Fo$^Rjs&S}bR4Kd0afxn-DbRQ3?MOW5!E0*p;EfWcEZmwMs>-16D&e*dxzetjn zlbA%*+xZt^CdpXMd`;xuhFFlPR&TS?-7mjMM_GTn<`(y>AB$Y7`5a~RXpoAQcIQU3 z_p*Zzf=>N%LvFT%H@;Qy@I2$}bHgzA@R_Q2 z505do!otk$ZxXZpUDAq|i21(uUNHL%)pEt`Wz3;*J&S_Vt0S_N#jkKZhk=#hIQE%` zW0OW-B&?@<`7KDK2;4W{{h>cNl$ftRa)HvhvuE`qm+GDD#RyOk|1QK#=gETm^EqX% zVd+Gor_G{Fk9pOvqGPO3^OSyizoyP$I@XMPe)6lq9O%7HDLvxqH0#-}-je2_;~6tw z6=Umo`CVJH>n2Xpbw9ppD>qN;rpe_Bzp}c9!hT*XxlZ~>y`$La{=~^=veb&${EqUg z)iLLDW5R|$?-XmFj|cRZXXtEZ7Lr^D5rOxmAQYkvn^aQ-9w$o1xNY&!kQ!vkclP)N z+i34(Qxw90s*zx$c@EROV+dc6i4MA>x=NGz zQt(USv#iXCosUS3pV~u)j6k!1qO^DFN&5+H73tm6qv#EVRsO3NKJZ>I6xL71d<|og zM$0WeD6HGUu^9D+r`iK+87o88eFEywo?lx`c=-${6MET15s4hz4oGh(3#Y7 zS@?(CSmFuA$4;|@5Mq0z(l5JzG$f`F^(?LZL_5U0Wgu^Ze!i$a*OuiP>DoGO&t3W4 zDLx>kEv~FP7AH41&yq@;z+%%ED&At^tvDMN2oC*XaMHFqWVGOdk$}6TqUvusN)Cj? zrfmIcXa4f6l~L#`Owi0cjPv53FG3IF zx^m}PQo)M$&BIQ@n^W zhe8uFtIn7CMJ!Ru`bT!c+d z!C4ApE~Oo1KvQwH+mda3fG+k|hK4KWIJJ8$a4Vm4%7gWS=m%(AZFM-zQa z6VjFk1vg{+o3dFPvH(2zFwQFwiWzQ zmagT=;;wC!;P+mVle@z(8oL&QdWM$E)_f3*&)Cvtdb}_VmRs?n8SVasV=|Fn#Pcky zc@H@k^YfjDzLB1Mo3oetw98v>L1>fyXi1KQ6ijq~_TTJwg8PZdBVuH|0F~KqsX<-$VH=6{8C(C?T+=lOA1MFJ7 zGR*EL*Tltn2ZtBD&Tx=t%`n*E21-oqwjv|R!zgDr-&dZHlB zETX2%t0h7by`4guQ`kUEH7J2&+SplIXtPGA@k#FaX%}OAyy>;@_!Jam1C`W=a__kB z?pYDKSNr_3nPF(|P=m2RCN<`AyeTbX4tvg3&j|kUV(aZ#t=e4sE`-~>qy)j|-b9Ho z&F93Pgd|YQhY1&h_Q&qQc3BQ|(5kIuN8YppHtXt zF2O>b(-i5uL%W0q*H47>=2QdrQ(dyP_wX-fKka!n6KJiaao&QKuy2VCKK^3XlEm2E zKHHlAkMwBOu3lR!wzl!z@?E#XuC9C|5jm?&<3gAftyk8Rd0{`Vh#6Q~nIj6f6(r_w z>Hle&1-9wJN4$A9HDwhfpU5y71C0rfg`@?u=As4+{R4%sl8q^y&;yCL^H~c-ab{z; z^iP%xx~@wu6`}^w6S>mUn@fvIvg?_VG*4}z1{pV^u(1s`(c!wqRnDuoszp>ak+aO%PXX&kyBQw^x8)8e%V@y zcY-IGPjB&N_j$T?P(UQiJW~1sK2QmL8*jNfYAoFi3##L+@Egx5GjkOBJqIt-iJCHTjG!U51k(%5G3wSSke+*U{eCe1~EKqoJHaHz@srdpEu%OOt z#te?eLc_qg^n*gXCPc-#_-9~<{X}UwocK2Ekyp;g<`=ubjyonrANE0nj8me6bQgxI zYKqI#9<*}Lj27*|`{#R@1%_Kq#@o}}to-H{LCp8-#KBPj527JscfGW=G;@W~2x!au zcTS@;O_n;TgXV1*_)^l)g@dv^lOqk%QIL?Yf~aUq@#K`-*yr}!DIB#{4u===iuqMm_k;;;kX_!4 zo`f;J-YD&*`}>&NJMjI@BLgbOy3Ow>)}U0AJ#xXOW18xbTXDK_!cw=%ze3ludgKD` zIMcK1c`A6RDj>ECCh=b55&6fLXBfL@ucJlSKbICmkFkI(yFsYtq`@* zpuyP1F-@S%0Ne8IN7(Isa$BysuLVU_QI-6HV~f`dt3BbB^Iu3$Rt82{hLT)w{R{~t zw_4bA_iUf_*ktx??*q)0<}NRTY#1*O3BOtJbqYs|RodV74X$+5N%fx4mfUZLCb<3O z^I!HC#M8OK1vs7tldY8)<{$b@2CsY-R*I&h!#%2$(b&aGbq_JIMOjveNieTWtlbxnnwgF_U}`XlMQ&-!4q_^ExmM3 zm5gy@9GNqR4?o;6oiss^Q?<3mnsr>{lvVA<(%9@6nf$g(8a@*sudICe~H^**=W+*cOpMXqxAA1A_rav8Ckjc1K~q7U#wr0`C^Y%6Qep;d+%Zz4ApH z`Lz9!VT|vVa*-UN3YFYtzbZR0e4{9`eP=AAJ%^GF1{VgVSE?f-qgh(4ju)>^|R?)kgCDFdz8HV!{7-IJ4(KN2#>!sz;R)Lot@ zX|+Do_p+{+!z{HnI5p{+U+np?e7|o12Oz4^g+eod&Uj-5>Eb>_+ETkd(E#RFAvz;; zvKuXdcQvea`{wfGPzwaY#LFGH*6T%&#^xs73vYj*2B;&~v>Gm?K=|ZTR~+JN@M()2 zkNmcuKbo~vh&pZ^@3XIo5Fav z&*i^LhaCgqKk7Z}dIbLpBnr7SL6uQ$>CE4Hi#+bNucV%m7pJU)>Hwbpj-W2sr?k4xy8`l#zwP$JM` zX;VBN@&B~|`@!d>$4b;n8M?#uj;xzEGg-i1Zq!UW@g5~ znn21~Z^R8oDvy+KbIhpYZ0}0+mG&#?78A@;JvclL&5L9CB#L-@m#Zge#E{P#QC2ZC zlgDg2S4#X{p?lT!uL!qk&?xAh+t!2W^9ZW#T1s57;QHnU+s5y0tl*=z8I}F$Q1dSfT)Xb zqpOR9_YbP&uXxpEdW9VZsdtnOw&-b+uCUy>F3;`gZsQG(vQe0u$p?_4tl&?gQ^X9o zUX~#(v_I3ed)*+D^WL$4c?a#}qUJkp5Qnyf++aWhl~drjjNQ~SGgqj_dr0$ji_!bu z?bD8a@gYms^kDK&J%dkJ#)WxB)V#vhonP!x5u;j-@L>|3!U}{&|E^u`;}ZO*DMzV- z7_qxh0um5uAac?X2eM8Kj0KwHtilqB$_sdNFKyLin4e8vkBdw*_hx|_Bqs%26l^of zii**pE7;OTtD8^WV33GLkg+<`>-s!XEyaJ`dJs*wRJD-# z>_2olRw(ona3^-R*L;18syYUK$s?iO#|Mynx^#;--je?)8>69 zFro7rOVwE| zU3>Ni2PmMRucGMjQ?|UV7a=a zw)&eoVfDh0nj+fK{2e8XnGa^u@jL(NL`DUFm`&$b^LW3p0CBhE_NzQW4bht5vVmu; zf9}otVDoRnhPW!yD|~srwnea+8o1^zdT~z`Ra80~*1SiXo7NaM>RTGE$16_|r9ZpF zlNcBXJR)rbBX#VZ$Y~T&58hjx)1jrZkCGtqjqa(got*sk|E7O90TY)8^L&C8+7|v{ z`-2-=I^g$cldLYCb3`N4Qeeve<97}8U*9_p%}wBzLi4A2HBsu&a1$pJwm*hEJaB@% zY_#Jqi&(|nL?Lxw_l~1)WjQkvs^%{1N)$vsEg>YYgbt+$fH9*Rd2nhpQ;K5q`;h5J z#YF zk3lje>;GEk`j^jP{>Eew+b`m_85?f*R5rM5bs_PIDr@(QbqsHptYQ2^Meg}G(4c?1 z0XTzCoyyz#=GZ#J&Dv$^OMn8!$6IWK&XelxLgJBuxbPjERQl715y$DDt_QRQVd@!B zjLT^X>K%N7Rfvf3{y`}2W7XZgj5qh^$MRc2J0!%OZUHG}O#e}$SN;+m@Rtq_OnuQP zdxTt#uZd%LvAyGnMyv{A+0en@1y^b^d|*_di44H5!yFOPgk80C;NbzSbo2yIfy zhx_Gf)vV3`t0gP4$z>Luw1;n+ti5)%H&D#IfV26WRa9dB?BQVWZbSnCVCGtB1k*!{ zan@opYx7KTZNZr4_})coW)^hjS(VJ9qU@}C6lp86a29kcUK)}-j{KYQ#CdiD<3nFR zA9xHIF9w$bzW@h9G~?qIM_6cS|QCe@JDjYoo zzLB%n=aZm;*-&7Vrwj|;$6Q+X_R+2V8NH#O?tQa8#9J_=toD0sI;HQ2kx^IlHg08g z{XRI#lDRX5MKl9BR75+H)86{Kx!My)dHWc}TSNkAysV;VMt;+bFeoHv z(bxR}3@gZ!SU3vk>x77-u%ev@FJ)n74rM5C-Y{RY>|JvTriNedB{TojyHcwW3D>D$ zlj`e{V^gY_%PCU*PbWx4J4j|OtiGz;NlC{gM$8B+N$rQBeqiS?j)4O%_^>M5>%Xg= z7y(J>y%^4k3!FK%cD<$BmuTOjbz~RgbvZ7U9@U!f8P2<|)f#{GN@3D`(pOUFEMrf)#k-m1t(A^e8|P4t32^WUn+Y_PQSo!dBXI@c{MsOeXa((N(_58$ljH znnG?{5uPh-wbGr!=%mB$LIqkt04myRz%J59wbfTyFgq~gRq_FU~WiX)E zy48#t0l^%RV1DRfZO4xLp7O-|KOuNRK{1G$Ay4CBJ>YBrk3dSe*f*i=qo}Grn#nKd zwv*L&hV+pW((60^CaLq|+#e#XcYeRpIKv0C1ui1U<$uQyukk_N{}jvsldJ%mVTBfi6=fR8+=`xK(nB$dp-3;Kl&ow@DGkk^ z;dZYJ87FGgHl3inrTv1YxF)K-TIn)rxxvZJ%G+?p)}lGZbPUlmY1x|F-La;_^dQbK zy`JixSTxM@D~AfljU?^X=xE~nRc;J}yl6<-JY{maRvwN8bz#3mE;r48ARip8L6KKQ zdqbp}thap-3Wy*X{&!XOmwn3!E9nUF!Dq&&M*H ze(huU@!ch8dXqAa93Gc9S+5I0u}v{LvdZn!-TQ9MX3vQ6!QX!!a|UT`oIXkj&HtMc zsHzRFzcVE7l~-5#72}7x*(b9xL1&^zKKSvY_MhGbbX=3US&d)!1APNr=|YpbxE!_a z94Zl`t~!_zb585*H`n~cap?{|JxSPTM!7Wyq1f>4n>tSwf3YnDeN) zX=ZudH8I7QdZ)BScNUG~{h)DR`Vu26;KP-aWFkeWtfqgpQNS^w#!8%5)=<3OU8f^Abs{kOZf=-LUyU@JlVotxtViV|4H--F@wF6=A*nbeP1_5q(T zM!hCjEQ{HCH@K44; zcUj}b{z*o|8sg5b`l(GvR9S|xXTXDUh+V*K2iaWG{tdl@ZQm%D@1JudgJbNlyp)V} z51M@6k33?2#bI{=r*`(Y_MW0Ef>&*)!DcI}Vsf^W{C@*s^rdkSf0g<_14 zPy4s%LbXRR+y#gRyZ`dF4F;8p0177Ya6Yl#D0Uok<;IpKCewePPu%WlQ|ave6Nt3F zONjCJdFCld@AGck7Gp=ScoDQI~z4;YyV$DF606H*MJED5Ds3vm&lsz*uE_;CB^m>WMV8sy@)yC4XOIL!j}jpSzPSPbX+d*OASBj+Pe;>zpb?`B^_ zd|`PKbSg*;mWWX>eEhY{2LD$owYPK$nz6v9LhHUF6qADd2L;M1z*{@tV1p^i=S8R- z4%;;O9trZD+fU#e5wUAnfq5LopJ_iig=%<|nCl*^iK>s1X1Gs`yl0HwcK4&N@ku)o&a|hF0)B+oVfKt7A9yp|HD=M$kUGkg!B=?qK?xsIjMKAt$P7`09)e z+zIa07Km;c5%7u)3`q5IKcKOWYNvcuotchFP7;;S_(pLV(mzT=&eoBb`h-GVZ2rxa z4-{uCB$H_&n%!`T?6%|YJ zv*ZPhoM^%C40q8pn4klq@Q~O%KKo&6-;w)r>m6P&SO3L~rqGvTYfxA( zAkxDP_@qhsfBY4i@hm%Z4+`tGaH=ni!7(zW$Y)Wb+k$g-^jnE;O=x%)IrOE zs{p33*gu({-}(u-o@MpDkt;bA=ZzQA*XJ%_Ez7GeMk$JV%eDpvf4;N3Jnxzq*=(I! ze4j;8SWyPN^nOoaN*6MuipmOMQCfi+k$mz|6H>U(Zwb})p*U8pfcmRaSUZ}L#6D7LOi)0va966Pr3eMIUy@rF9xdr3o)H6Eqf zK$&7sPZqS-KrF&`+sdHkI(z`D)XI|v-g@`nQCL+9O}yhWyV{!Go&ji4E{oE#VX&ru zmyZ~6|E3DZs7OkeB~vTogA*DXt1PdeBCTh~0e(P>Q&CXU;#ZMDE|8$^AO1$l)Kb~y zaDHn?F~1f{q>Gf@`ScO#yjRHWc!vD+6VUPPU3ZdXi%W!^p3pb@H&@U9{%t0&8Xq*- zTh+DkF!N!*F^yqTxMEH|E+q`4$WWAH5`RW1vg`B&KnaEWLE3OFnlSO@j_LRYlhEZi zXs1w@Ry9A+OcZ{z*l#>RH|ve>jZS~<_mw$YYJzI>{C z>|z+nR`Hb>DN5hP0A%E3!F@l${ei# zW=L>uxqdyhyb0TJ#1dlkt*I}P(Q(lWU&e|zrTGCGu{-0RoB;K?=v1(z)T!-OX0QT( zWe3HV7oGQajT3WSN$u$}t{$A5rfbh6ZsA+@mSwb+b@hLiE|+UsaBx^shiS=a8h*tz z2^;RDZn$cE>r-@~{9696e*!)NZ^Tqv_gf4y-am0ESEz|~@2g1o?mo$<8?8^Tq=5T6 z^2Ar2+Dt$Spa4=JwE}nXp}G7kA=BfHb~~7o0J4nA)|V@>*5vFMQ``fMluRW4vN+?!bCQ_I$b{ife#GwhbiDZY7kb10!k=6yaN=)&J}}rBN$NRj3dLg8mul!9 zPl+`l|6OB)es7lolG$M3lm}VMr$l!AgtK)lDq(5*EEjX7xR}-*4+XZ7uIbUZb-Lj` z9%BKQATr0dfQ12oxwA88@vDucB@qb^=xd=A-2my?DTN0x+Ds&}u8rizngE=ajji?I znjlQj>uJRiTEM1YZl99wTQ(_Q!sL_IAgn#r$e3Ws1W}Bbt*tF7JAEP+9KI2{$DYaY zuer>WeWp8=qt>n#E>HeO;w_Poc$uN~tpdEf^6KhM^y@&r>J21$_1}GaqUoKJS(}^( z(u>C61kP8{1>-+P|B{r-5np0O-ajxL`q>Yq-}(IU=8}|o9L`2Ifj|*P&a9NEf6R}l z&@)QC;V?cqlQl_W#7FMP&_RVm+gCw_=8MTalqafBZlMc!Tat`oJEYAV2L} z3KgFD$TFL8?@iO`wQ&pa(Rt6pUVs=64<*%uE2b|BCV6Ppx1VndL%jdWQE&`sg%G0_3j=VMm`2 z?|t9^oAiD>mb)KV_SEIJ)T1^UKzjuQgt8Glldlu7V0b_hXXT50$8lL^lw(>?L>1VE zh4bZ5+;&s$!rMB!qE-dQ^eszCNtsiBkK0;5%z1!avSpk>%0&@cy5dtq!WG)wtWnF! zV;}Gq#s%p}Yo)5%rF(S-K~vOZSQwvu9mOmqx$rA(KBFCs(TD`~&>-c|SWa{6tH)f6 zx@)Egeb?o8g*{rc~`+Jd!iUCb$&#T;YxZRx-62M)F7he?w&T34hte9%jZ z_CrTg z_O_;attSmiu>bfUUMZZF4BS2>(*6oB1fTWE*MN5@EOISK9Q8Z)^H~4H<|~lNnJF|= zn9Ho?$jR4pdt;4!EV@zzJN2g0@!U*XCCUq4l8p~!2eF0({1q0!(of&hzH_0)+Q3F}-F+U_eyPn9kDKm4L0iMQ) z(lkjbX)gb&CIqmK3}+J+wjcNC%u!+6bOfb2ig0(Ln%#I6io$-UWRU&n?CKBiF=hNK zC%G^&(NwoTm;}yQ|HuG2A6<~5aDd_Ia&LR*+u~yCi36v-s2_%wVP!FJvxpID98Eut z|NR8VQN{TNi>4)CB+mAF;?Pk^H9n`9vY@#%EM$Y2Iux$xD^-4eHr^+q7zuh-g?~Gy zk-DSyTBInRJY8p4tWkf~8}!Xx>=1B=(;hyvUXyj^w+pH7AXmFo5Lr#VjrjJ6vU?b~ z&ZLh6o+Jc@L?ALQ1}jp@crV$L*F7y_C!f526!Ip?gD9nX`l;=fGCVnd*2(vo2b+o1 zcS4XDi{Xs(D{Z$^XH#M_R)aX{funo0f=soM>RU}`e7(89n|RV30~4_^o}3n++Pzj1 zxmn{i$q~qzD`jt?eZpT&V{kjwahCmjeU4xCowXGqhrva#^uk#M6jtW zl9mC?#@<$#pPypOGh6X012Y-d1tzuyL~?KvTdnDF6N3dYVLXc+8cBe<p zA)KI#p4X6mSH_4N#aYpmy;!-)k1HpsB<92v3i$4oo)?J>fk@&wiC-Vj$%(sD5(qlt zM5IxdZpo|kpLJfAYa_#AK6vt&aOjSy%Lx5Kx|PBonZ^wa-Z~-!?F;z-&W%XT4@OIX*a3F;YF4y6L}shxS7ZXYmm$pXjhwS}9ekbKd1M z`nJ(=v&`7D9eF*gvsBY_xeQ-{gPEz^_x>yB=;Lw6V-$WYk^~nndchHi)s*K2l1=yYY(Rg@YNy9mT0gq}bi(*OU^uS! z4*>u$}4LND=U-D%qZ`@;c>rmAFq2dGuI0) z3iyy8KbxqbmQBylBW4!Xl*a;_hZ3L=oD@LTo1ae^7MGZOyV~7YUla`O#BD0A zY^g09^ftKt^85w_aVHF@K(F$%xj1pzt7PELgP{o5r?cJ$%iG{2@AP-kMlukxval4| zA$;tlS+?aPjTwldflu=^f+g7!5n(p3JqndIcx)#Pk)Sr6KA12Nvkb>09FffEot#^1 z;gZb}Wm3Un&=X=t6%k^3+$@-P`-ertdSrB-;S*!a9pk^5)cU+nx6G~gS(ck#J&d>Y zBLGq#v7!SVj3EuLo8zEZ;kTHa#^M_}RTZe8NrI31HO0PRtlHc_&&8~ipg*~HB-nTuN4|zhX3E+tbzu`xf;`T?sV4!h+OTHpgY;#wR^hHgPy%Zje3I{ z5{TTYNAo=L`@!#Wt&>Gp*Teh6q|b5all}xxRoUO3o{Ya=FV3_orSKSo1t_Y3n(c!J z1Phvn12ysuo7S``KL4J?&JG5!iI2}M-9FJ|@aGkaC~HeQ)qSZ_)71@X){!<6#y)^% znL#k0EGaHjotw&3$x%>#mzf|244psUr|BTkR**qjp@HbR9~~C>>&Y{zFDy^{=ku?er?~TgCYU3{PTFAl1QXEd;2a(z44GSu?>mZ- z238571m`-TMJW+y88Ijny(eix&d)biQ&%_8*Y}<5ey>S`Ybh;FUsc^ZI0dK31o}K! zRn}H_E)GJI2;a)A#SLz;zefZTN~kE8c5y55Zy)SZ`uVB@-Z|*}`-2B0cAY%tUr(ON z>#4LIzLC$$yq8Lq0hc2sZ&k)shxg97FPqrYCaR~%O2Fx!2gB(<9Hr0YA4DWjp;x?J zf=&Uq#N=~MZan%}Q@2@F5<`2t$`G>eBKsNNyX8MAa-*$GdJ#m}%^?>8y_x*yr)EnU z+q+!`*{$5hMRl_!ccR`%f)FX=K5NL%XLz~GOZfJ zUQ|P91+;a?v~PK*;|gX+3kchWK$F(HwUF?ueUkKl+OR+sxU=SCtN)A#q#Jf0@&5ej z>-g*N2O*m`im0}bc7V+5P=K)kA`{b$5t(=n?|P?r^!(`LV(L3?_La5_80|V&axO#r z*_aE>EKR>x%qgx!TPn@X>#c&F)?-Z_ZN2EhM~cN zV%g%?n%Zg+;;2k!m269KB@Oi@t!W^)9meND7-$ckGApDiIQylCb6Ld)8H(y*s=R^k zq&3GQU_gb(j~P>KQ6v6KWl98?NqJTDn0BKt*h}6dZX>siA`#@alR2Om-Ofls@lm_5 zy!}6$ozj1O0f&WUOx&edoJ9T!gc+T=^3T5q$}N+~vkYKKI2u;y{gJ0QjRfI@8we;yALS;x7lSK{ z=#bqn9k%dS#TI+rET3(u>%GcJTrXnu9qVnSLHp9u)!N7gzUQPTMI$Kq6U<=`y5*6? zEaVluG}~`pJZX0aEBmeYN6fD;cKF_6-eHg3z}h2V$p)_%reZnLFU`p%$ZZC>W6~E2 zOhTCiy@x=lC_RR`lv>111T}WC+Bf158>7}yh8I9!BWqYzg1=C)CS*TO{{1&ODOcL? zl@{@`^3(KmA&|8S9kRB78ua#^eEWm5jB2V(P&MP!eTNCb`s!l=)A0#R`MjNn@8Tr4 zOlgMT&dpksn2{?|hu?49jNa~iuQyKod*KH(GEr?F9Q&G>3YyWOg5Q0h`5yhUxC$Ew z(BEeT#SEge>$1TEXo>6q2~yfFP{4v<-kQtll(a(s?{0FI{RAa)VxKDO5%ZMypAGLU#5E<*5XC_wdf^n9kKpQ{oB zRnvs{#1$bU%H@k{a+;3;|K2)KpSlIHMYTCleF$CxJAWP9gQT70)Lija88lI7sB%X7 zv&i%FA8tlIzp{v4r}M>4#X7iHIoMBGj-IpaB5^{2FF>s^wM{8ZIztYGqnOGio%Qa( zCen&D>A}FJ_Yppce}W@3=})z%x&kcvk~?lLk5bm;%Zj^tCgN{(T2n+%@FJDm)2SXi zm4_xfV`W!ee~X^rjNxWHbxzi`xV@w;Sgttv+n8_%17(U!kgM`5Vlzc1Kps)m9sXWn zL*?!juBaOKW80gvNEPU29QMYY4~t}s^!E>zG;%~M0)$W)As78t}6giqKu#6Gs77Le|4P`bM%q`SMNySrPuyZ^&G^UeG-7YCf-a_2nz>{x5xj#?u>3cTc+ zOF4ben1@bwLh^DdTFzGFDsj3+MqlyKK*9HTGTXxNK18R&b&@Bx2ad;O6Ee;1c3|lQMrEb?w?6|t zMq-K3^4gtiWKghp1BVh!;5OmqW`4u9P9UIythg%ZGcTlZ(%zN6LsVhxMK2O2VR zAAg_%rDmj;F*h(IK0v*S3_)?-%XCmUTmOz)vd#JQDkHJpu&;D{j>z8DiLTgIc_ibK z>JK1C6d^s4;DuL)31} z0Sg6^=gOS#=mG*J?W6PmJF83KM73;D7{v{H402X?#HXE|U2=6ld0IlN*$wy4u#c-EP z0eVafOo|J>^^{>68il@yjt&MLwajPF3l>pkAn26=Uz^F~<{rQBZN9Wnh`(Op) zvb(fPnl?StO~JMRo*tvFRMG6pS5Z=ATCjBti5bTqZL8Ct=`~hdcnw~hO(fra~W)39j8fG6@Xzzb|wy>Gl z(=ykXT6#U|vpg@?vVOBM!RXFW>LM{Xolc2Uq1L^h2;gO~I{WuQdj-WWDkX=vwcUr# zeYj(LvHqbyV!meI4EM-wr}KkN4mFGsOhh1Q0W_078xX39vZz3hl9bpt6$< zfTHV>^roT;#@p|D4zAf56@E0r1GRX63O{^}6g5y~OUI|x2E2*cEev2J`@}moYtJBJ zbMbmQ8tB}Vd(ZX{P9Tw;jCuQeV{Q+NPMRK5JRh#eW{TB&HgXP1MZM3}GeGXxu<1oi zeFtTs@OHhfP5kd|K;!_%GF~!)CIgsnetzkEzQH1gTo<(OZ4bn2HX*pfYk5YS*bJx* z6(&vrucM_PfLx;lwhQ#6y@OrsTWs@xYp1jEcPYUdKDe9P7GB%OQrKks+wD;qD%(0r z^z75$_IFm1&BxH0Cmx??1Lc-IDEW~TRaXB_S`G1+&0dU~-RLNGl-JGQI^hHJwXg_fT>7J4-+TYvSAHd^^g{IPm25XycM~HkXDhWhi8GHJM;C|juxDOpJEtKR@ zO7;%5zfFqDc(4YjCs2#cIlq5ZhUS*Sfxer+V^H0FheG=yVT(XP>a0LNR6Pz9j$Q-*oID33+e&SF;vGv;6Pat`wz@4yPu4g<(C2&1M6!m* z2Z?2v^W|^RtyHTG&JF2}kFA5(GABKDf3E~ro-6~Ho8GO<4?lRkB{5Kf4~E_F6S3N> z+1(I>y z*5=E(l29D{>2-$v>9EIDH#^lwA4-gwQ%#=0(ztuu^jdJ<;wYvEcX z-K}p*x}7WVym(SLtuXF4XQ8`czXr~)zP`R0vRE;R$WBsZ2snk}3-&L?RD+#E6;JQt z3hB`fz8-us{0#jU+@w#>eF>uCD1)bvF3^oF8;G4fQV%+Q5D4$c}jFXfzOSAh=Xi4@;hieM;eI zj8PDAl8;O928789S@2)6Nt+P-h#EJbba^#=O(Ia!@pPX2HM+%PVxE$B{z26MJ!5^F zP{+pf!koe%uz|su#3wVHeZD1!_;Su-rj6yjn)m?IwmI$i)f8%7o?5*E;b&diZ%3ir zOrHCF$$u|4jWa7jq3-yuXE;N{lJ!UalO!4UQm(DTj$z59&kHWTG)<_gcas`ROgy#A zttTGWAC%4K7Vqyz!yedD5~VkEssR7DOOFrcQ?`tH_GiW|E>e#Uv3KuOB~*DH=w6rJ zzmfQ$aNV5>u@(>OL;Kvdw_tZ7398^&r#4MNQ$rrkYZ3-iQNaZK6VorR_vSs|*Z!=@ zf()kKVLuf_P!a`|gv@I8C#Zr_rq2(E96p6`6E=w4Pd=JSze6WF5Od<*#sQ^;?S()o zeFhg53SgOF=SeOPcwv$xd(Ly(06Z{MqLAyb*WiA;a-|Y=IDz9m>bgkGyV9cq^AJ+}4kH zCfEtJCi}wgsA!IPzT?pIv0N`EE;THsE;TIK7~NP(9&e5GF5zL(>(i%fVC1_^_Qa^4 zKYYmvU6(cfkUo2H$|Til+lsufwdFn%G=M8HlhPEl&z#xf()yYmox{kPis5>)1a*$) z*7S=^$FGt7@n$i*wpg7>-cm(_}EBm;l|of;d~TN7?w&nVN}HV;}*jr9Gmw@+q= zzJD{Mj6!*Dx_{_?eq?Luv8#mdcAWJ@Ix=HHyS5|q+333=r5P)RbwABZZgz7#+4BR1 z%#z)_r@s4BXLs{Ww@jC?-^GxC3WKL0FOw+=PTldwKWJ@TDQWzRw3oo%lZMcJbsPw> zv#1B|nGE}_nv>@y?y(>L^pobOD#~m4lGvnxp)!Vfw zySy@r{8vdse4?){b{6^#TcKkV&tCL((_s!LJ?YiEKdshiy8THIQ`@D&84Twag<+3J z!3U7eFUzcnp4XD_!jm>l;oEIbUB5x~Yoz0x>f4pQ>6mu>$NY$Brr80Bh6m}1u0Ek! zEP*I4eL+ldeQTpeN#S>sfAZ2ac+cDnXR7C!k4z{Pg4ft1V^ry+9Cq-OF}o&|;89UV zQN(s3CJG+@6sy)eBc9fXS9t85-Ew~<_Vl8P*X}evZ@jzfZy-kG{mqx~tWa%+5_Pvx6Z+B3+$gUrf_}ie)zL7VwEo9{vVTid&;6{tr5xWUPHS#3Ay3;woETh<)2|-_ zkPiC;=$3^dP!cZgkf@v=As#*lZMq!cSYwrP zAGgkr?{vD1irU9&CCh6114d1R^rh#_aO!HjKc?e&45j^RMd)5Ezx?#6S*t!N(a!SC z9~LWwhL|&3ZN^{( z&xiMMd43%ZBwSj)ni-}t1T0$jSO#X8a`(NgOz2O)6iM^kmx%^u=yG4)-9$3n*#b30 zDx64J`|+EwExc$p2_8@wXn`UqH z1EA3Y{Ya*vLyeqJEgxN+-d3l7MV_;3sxN*I5i&1oqlO@q!z?mAdFrg~CQ>Dc1!-K) zF4K3{7=4_Cg5tYL-t)l+Ne7%+4R0{tFk_p8PiQh(X>uog| z!rN!%LyWs0DK_tp8*SaCsdOoxey(k8_2g5d2g}|YAg%p!v&<7Q*Ln%=JX`bd z>ODA1i|ilLifXIzd+fG~zBr2^M_8A`~GP&TEb4lHcY1PG3?|;(m80vgFw7(ObfP8WGaA*?F_F;brCN zJMX?vBUFuHWzaoX2TmvJgq?MK=MbkmL@PtW?7G2P1#>f>vP(NYq=oCVn-EX<`I|=? zDT1g!%)MywDPsFw4Zb7>sPPjrio>rKh{vD75Y1?bNU`~EY`55`_ol4;DPUIhX#ua; z?FKShc!a=Z3!cagL4b(8hBO^6fR2La_IXc`#)VsxGlUY-`7upmkqq-K^_|5g-_3)? z^v7Ho?1kqiIx5z;ktx<|H!2C>y+oomHDNbg&IT${MxPM2|=ZIBJI=|k;N zR6s938{;0;I8`r?2F3a+SiKAV?-0R08P}U5k&zyUp@!3m5yYLq8kRfbbGC&%GPh!k zJ`76qg%&p?4oXM8+l#HOTCwc=IVSO0T0zXXQ2vrUy-xY;b7W7ow$#bI;jJRj20Oc} zKXcb>)Nd`&631!T5I?`8(>1lXgYOy;69~-ELZ|I7XrLs_6!FUCzC&x=jU7RhKsL5z zUNgz>(J%R{pc7P-3#B5(aGZ>qQbWSTQ49eRD5ihT@HTs0hBDc+NwePrC6Ex6;FO%s zl|Y^Yljkj~g{8Lh;?w%oQvb<2p#SBJW?<&=?}))k23!b{ZXXkBfOO}Q-EIaFX^OmS z4%zo9vwphb?{1zHEfX7@oWu|t`a|gGN~c?1yqniWqe5UK?q(TI{n>K@V&ke5QZv|d zWck_G_QIzO;xJD1vFLy{X<*gTE53@>!&l@aWzZz6vLaE6iJ4VFQN6RQsP^=q2ydn5 zx?Kv7C4rF?{=jUA3d3XZV#CQl_7rXdESqr@HZ5&&D$~Wf)$-jtG}j}%qd_4mNGzWG zSy*l>70`j=UH*Cg3A)1ZYG4F$GvC>w9UpC=mXF-h?A`upqDQS=>`qq1^5p24a^qVM zd!!$P8BB)@f~vOGCbn8D*!C5lw&)(?paa6TR%Lhwk`zV>xt5wo88|yyoL0RhX*o-u zP@9O{TzIH-8euj19V-o2`N~XY!IW4IPU>~ynukt5VU@RGBd*wZ%I=6%VbWA#Bk$eA zIhtq0n`N!+H1);-^LLo#VA;v*+%P^jVw5 z&X>*FfEOn$75m%p>jln<_$9q~+SNe$g6|929(juChp)lz`U?nlR&951Qc_{$=ozVa zBPeI{-eDF_GFVqrDw*MPb&5;ca^Hr2PA;@rk*@?365jR))fl63k2b^oZ1ldmjWq;p zqp&{K!EDLDQa5}a+6p?Y^S3&l&nPFJw-~NIXZ0yrgRoHKw|m?(El&_Vw`nPNx6v*B zlQ3j;@xn6JceKdH7CG}fD;J5geyg7kKW$oBWOU=0k1QYB)p?u{BcD!g)d~=N(_fq= ztxJV~ROdo`ETLg~SYm20XL7-WEiQn zV`sJOPeFs&gwPr`J!3 z(chtbW$c&IWS?HkyQjVZd{H|Ew8c6LLMpfKMgew$&DR`&9Iw5iygbaCD4##*GAml4 zVmF{#mR{&;xIL_K#wmoA8OW|_i1Lps;By<*`IJiKhTlQKu#U*Tp~YS9C)aGoGyR51s5eZF*v8k5#E4JO!aCH);XApLmF52C*V$I8noAxSDX}8hk(X z2+b0Kj2W~-29!diFN$WUaV6jycZf-3Ff;7uss!$_rcGNt`!qJ!gf`w`yw|*ii2LoC zYkg;Aert_?u=+yAFpnmR&m2?#D@N$*QH&pR=DM{{H_y0}BiL?c^X4H+GzTjyGe~;) zZ%S+^JB44Yud!u=>3f;BOIS?J7h)VtUavl499$QS_4eAA1AWG%*fyQ7K5aTxCu|U6rO|XVtT$A?~)znxBQxwiaD2|H-iniw-G6UtzzZtFW!9Sjm(e84{3ZXzRt zcEe_I!L2_SU?9Hi09hq5s-&2Q3HefJTTYPDVlWn?Ia9jVJx|prKy+r#`u)6~E#c^^sqW*Q`=FD6YorLsgH<`ssE$Bqli+y52;nMGW9sdHa1~t?Hk>Z> z-X4Yp$Q3ot?tfjMYkAoo<+@%H>H8u7d~;b65XZ&y3G8qrI1CUZ%CItIVaJ(ua3mKQ z+Q~O7V}v?YrIHIc;@<9;ll!Sy`pqo-t+$dt)SJW&x2l8Lh_U2NIb$hRCrbiB{U6gZ zi&$K`96*_r!f7WR(A%v0guUYWMDoo2qC`YQ#QAuu6$GBv)d{!waptTTFiFA$Uc&c+ zxNp5A(83G(HET$mO~q}d<2OpFx|I}yn@Y{g1pf#U37ODmF(u3W&XoN`MBkO0F@_C0 zoh)lC<-0FQ&h#GL^ev+h`8jfqYB<$v(m{qIV2-VT{}irNwlX3kGeTnb&*Dd#8x^5A z4TZj845J~7wgxi^Ra@@b4pN`iEr)--y}a-!slgI%?0w)!E7UrSSPo+>2cC8l7(Mr( zp|N09$HFS7CHw8O)K8vyj>lhcmQ5SVX}2daSnvyI7?orFEBDT@DoYIMGs?UXOD?dT z&<@XxS0hBPFbD)l7S1kYctHUyQarA<`mC2bZ;>~@vrxC0n*Kj6fXsw7*?l7Z(I5&= za2-k}!ynj)j11!s|CPcYi$y-hf3q8uhC8?G2hML)8&3mec4DFvL z^{})@t|4aoqO3}1)7KpPi?UKQccd0gonV@ zy78BdvBb@aOZ;CmxDgzT_%-9+1IBzNfyffpuhE8&K(N4IN~$cfZWm#O#u)~rBmO!! zxVC<95OL%DJ)cyfZF=ISFfEC^`kTz}^my3Qxr8MDsYdq zp)0q>%ZhG3oT3#|lz0l$g4E&B4`S+M>03#cq@Fw+FO8PH=KDX*w@V6#3rVAu+c;o6 z0-on%X{K{`!sFTg(NU*#brftWo_xY~Ax*b(bDaN1iRuSdU8)sejJPng!_y)+-!LbA z@byOpFjIpG8==)Dh-?jR?z{ko08*McoV92pG`uWHu0FeT$XV`T+UG8 z>HZ_}A~xUHjZUrc_k5>R*dUNtcg|kESL-Lk*;EPtz9dap7#mJ8TZuz`u`)O{O@yoZ zVh6T^lG~KS3B*^&$N(@0vUA11Cdf905m zlH%;wo7_CLYd1u&GSlVeG0coMZDwBAf#WrZzU|xRjhvZLuCHBc0{aMx#7*488M)4 zUU~jO;ly+OzDAkzV^vT>dUH}m=YxZzvDWKQy$(oXVq#sm4`fE0jh1mtm+U2p2%Qk8 zGb*T=Q>d8>lhw?~r<;Ye!kBT*4~U034VPGMJP1O+A?ZmBF-LcMvcwSh*d5Cik` z-c`*{WK{52pMVbe9-D1uR)<}iCb;y;fs>1}3>Gh%&Qec*V4Ek0ksPTlpq=@#X6j!_ z4y_l>b?_UA%W>{N(a(ZQV+Fn>*X^-$B8rHw1+cd@zwsBe#K%5XYOiDUcrHdCl-V}X zj?;qbIymaL-M>$xo z5~p88-K(t@UQ!94P!peh&k;X_R2u@PWHKfs_-6)(Ubs7QjMYp=o}LKRPuyY5&ZM*B zv`z^bpCt$iX6&ST@)MKC`+pH$TWMY`?M>-4n?>DT)~ix>^>@Kla=wAp;!ZWL`uMEN zFN{SjTW{!X?7f~JZlw}Cg=8+4yQ(yh5x)T?d>nWAB7(r#{DJI#2ZZ&k(qUCshk^>9 zncbKB+U$&?+E~LfG<|nE)7mmYjE{Z;SYl5jVdSB5Q|z@9Yb)&~UTtLpn~x@YL?7uM z<0INsefe$9rM?smYk`ebWuWKJ=00mxUvhVPp3niVti(SVuPA@vkqU!-5X8wyD#gU; zudguhzhX`Rto@S5^xX9UtL%Yqz$GK3#M?Y}{_SA3ItuQ-At=B^Igd7cj=w~SzW$2h zKh@-A$6yr?0Z@hYYdw;H2I+NkJrail!>u-&y%X2j33^q^%|^o|8j*L=A$qyz%L8#*3FfB5K^zJ^e=t zwIGh-{A;5v2%^3Rj(+b&DnpG&$Mu$1DThp03KT99B8_7(8A!tWm^Zq!oyKXkk@9Kh ztLfz}BB!NFRNEHbOsfa)_)`z##yzHN{#7d81nlHttwPO}Q(^6+@OHe8jq)-7M^tga z9^?r!E$^IB@{VZ6Zd8lc$c5a98>H9+@W>3r2;D0jr_Dl|8~`NZ&$JR^zb!zcC35Hx zI_gw-{R=oNZn3_)Mo|oRl`*CF<^2|&N($apjaWJY82B0p$H{uYvoOW(TzJW8ue9*6 z?Vgs2wHNPxGVUN6^ZyMSB0(%zW2JX>)vZA<*o$Y^f&9%3u9Y`hG~1V4z~uaHA%W#3 z4)ki}u+ncg{$>z5TK-4DFw(&}y4p=g#bR^QJlju0zJ1;{x|8wJJbI*(K8S%S$(O}* z?d-R?dBePTJNx1D#ZzSs@G$%sgqlu!YD=C+l2eptC$+r)g~TWTukWO};0APtYp-5O z#NucnKs}cDVtY@S1$9J{V+9+aV${sADg&=fmj0=+jpQE>269kGx0_4AqW?%fI z@fZt2_l!pQ3%H#7U!t6KpA}R~9Jo$T(eNCHN(t7i43?XaqMLRR7>$;M+mh zY77)DpOemOLJH;{Km3~c2tr=aXLr(Z4-x$lEN@9dPuLHyRzJpl$#d`?T^+4Rr!C}T zSqxtSkG~)#=i!qRl1x9xiL~SMBjLNjkFw?FkWrrm#D3c|zzXCM#!-cDV%UfBlD%7I z?smp5Jex1HQ3jaal32*-a%%~{z93H0&yi?R#eY~o`a7LZVj`ShE?#s4gO4J+Rx2W@ zwgkJ#Hfk45>^TwH(1nQNkmHg^dbPzx zk$9f)chZ@Yi|9CFAd|SmcSv9Z`qwW{*Js<#NAe`@Jcd~yrYK450H)#JmMUd#FGwab zSM!=R;|e;y@PP+ZYrfJK7^M%QslfUC0fg+n5AW^Lj4hGd$#TTFl2&zII^lP!k_s2A5Yz%p}wN3Yv% zR<2=NMOgdg4R8ncj-tIX1mBiR!(z)cBdP62rsCzi zx*eDfIf+zjLU9kU>Z!@!uq2j1uC z!ydEin@+=&06|Lbt%@9Z*u03(L$NkKs*i&lX&zU0$|bA+`K0NakBs>`*aKaefI#qFXJlY*(tF)koheS4U zPLx~+6A2nS_1w39af*pcub&rL?w0F2vZzSG^71k#kS3&xA$f{9M;wkI7HqzI10rpP z@wQ5A={;gu33ds4+T1S%ET$XXA?|=6lHUJyiavj$MlvUj!HH_D5HirgHae2BfUaJUKS0-tqXQ?M7iZ_x)d*M_K!uw%YUNp z)0tyJQL>`yuH+;3=3~zB7GZAz2QCk$P-fBA`&MU&@IWYlvfW^bAU708aAky%=k}cJ zqkCg)&F}M93>)XzElBsRE2G=OYh5p79=p5k!Bt&*uhwA6neN_{BGalRZ6M|Gpg-^7 zYTbVq!*)_!ksnK@!~3)eh9A9KM+RKTcLml@{u9P^0Mvw;#xk*2H8DBQL|o-G*)60c z(w$R-sAjpdR>IT|JP`9(C*{9d&+p7ESZsg{;t7ubhG3M+iIY^UuT5Nh`-J(?^M(1u z>ygIxuK#Q^&#?FNu(A4Gq%B_I!HEE3&mB%e;Hte2E66(xLklOI$6)mHOvj*}vvnG89J0V=M)l8nMQ z9PkGA23iT2FtUvnRO}&bS*|LO;{|&up3B2s*N0W3xh4X_@~s{k8aHav^s148W-x1)?XOds8aj&p{*Bo&HWK}DcL^z|msuYkB0eS{_!dpwD z02@_oJO^J>DFEejUByATA@IXOJ=U9wkEumN7?Uqc|6L6Rprip1IC7DEfG}%!9Y}$E z^9$mu;mBU(+@mLN1eY}?nhd9p4Vc5&$H1v^Hc+N^wu%#kXN~=()C;m9bMv0Zkb0abX)$@yG3yrnCinjCTx{65 zm2;ZcbK^Jj(AE0Che(lz2CNVO^Ve<(e2KljIsXgHUq zL?Q&m2dF{v0JZ!I!Cvf)mIJgSHnqGnY?i9`}q#Gfm~$+4$BEzMg7*{OBN_(VqpI z$(eFG7MOy4uwV1S4gXDzv!&pFd}@xj`dId(-wH>yhA=@1$JXU?9%(E;F7(qvLQqyE z7DGPk(?jkb_@nzLT22XFF=nsg)pj~Bb3^bO^JPdRoUcDcc+u)|5PE>Hv?+RV<+QaN1HgSL=Yr``lbB5I#F^i`m-K=!8$~ zF<=1Sd>du?!e2apkZnKA50~I2KK)Ne&QB$I)5xBe;g%%dI&Sb`D4YI-lGNg88eBKh*|h-PH_M< zHWt~>dkhgb*D(|7(Q}EG3?d94iDnq^N%zL*ch;P^bMD&7IM}E0absI&V^ed1qeopk zXJdyK>kdtkqTjrsVB2-FWgrjk zG$!ZsWMMhYz5zanU%AB-v$NEBKT-ShQ7O8;66Sg#4Is>gI>rh>>8!s)*S=2CbVNsy zA0#Pg5ekYJyu%RZ;8x|Lm88-AGM>C#V=^(dw^$zQ1_4S8i@^yi zu`eOe&!Ya@-JGiKtNRvucEC8)t?ZH|rVRHpy&YXkaA?}HyOj7 zCYC~%E%O>0V8Q?N9_4~>nwF&{?7q?_#PkS%23`n;^cJ`|(4Fes(w=(^611PIpNqZE zp-w*BKC$6mOE;~wF=9zUkPF0-$FxcZ<333?MTp~q1smQNjAiRQ@j^P}fax2NB6 zq~aGy3IlJ0Ep^HhrW~M2E0Q(-z9^Fk+urppWgK>#cv$=QZzVIxnQZJ-xa#WaSW|R< zA7~pxi^^L3b`$3WPNw|s+_eiSsq%|TGFn%}rL+)0zva}-w7gYGRz(F0Z~Ge#FM^*l z-v!N>GG-3s4iNI~U6~9&#N&U;-n}xu6lS_t_?pqki&}tgq4CE4W;T3mX)bWlq}QNs z({ZkX<1kiHWqo+Gd((cccF}r9!^Fgr9~A~sJ(7s8jP-kkAPNfpFLt8nzCO{8FGR2r zfdq{5&0;)q)GZ?P`|&DwN4yDWh0NnG-fl?s7NE{v@!!ABUP~uKcEc&Oo{s0&h1a%Gw{?oI1kgYc>%X&( z->VRRV4@~Dxqq#g!2Y-v&y;a}^ND*yG&F=*as0_GSY?`}yedDs#D&CsUao7V8I|RP zJaeY;#Ej9d{@1UkiBA)}J^;NLFLQ!pOmZHz<@ztn=T~)xvN?k_Un;LXAVUBVvlfBx zO!YPII=QOPDhxyp`!!Z;D(L2d?_UpZE~Ei-s{t!fPD`_dy$96K@ubSF?jJ~sS`TK>qFZWB#g#p!+GS4kL7@O{#ZXe+xc=h{O5ult z!&BcF-_;YVBE!m~0`toG@_C;+JVa>3CIk>I2e-R69XGA#Y}gK+myXvw@Nf7=Q8Hz# zX+9{T6v7DQu@WQF<`{_C< zF@JLJdhe)keE$@z+k1Te^4xUh%*DjajA#G*=W0afC-;iOD`#U9G$t$fj$bu#UAHdiFjQHV(70QB*6ZaF( z0b_r%ruStFrom^pe6O!DF^=`9&!o$gJca{*6f|7=r?mEc-ekL38Q18+i(AyEuXJmT zI94aopAFd$StzNf$mysuDhs_Q&KW5O2Fn*MZr?&aLPZ8pG6<=U1ql6N@XPv|6!cqxF@jh%fjf9_4m3Ny|Oy_1=-P=VfK3LeH+!1xdYQk zabi)DKQMCNgMvwUSkmSa*)p^A1B1ePaZLyXxyU#KHDAQw+y1G6Wbq5gD}d|17Kh^~ z3OQp@+^kWmJINZu0)_S;7InZ?ps{{OP3{x4j~A?tCr00YOLnL=Ewn}F7D1ykM7ERF zD~83Ax-wbHX`s<_t0_I>e(~;(Dgg~2XY>>6lDMSs>;t=JJ<*rYBc(tH%ZLaB4LH?= zn9)Wl7ht-AK)wXjd3u{OTBqA-9-x9^h_{YLqbBYZiHb%R($gdcGQi9sUDY9BqA&2i z_Ih-8@0&sjli!;bvrrb{X2x+cUiB*d?+2G*F*M+sNds;clDPt24PR z?aZlFK+$kEJ@-jvdQm01Zr5R8hL*o{B8tnD^h=o+r2a0Ys9YqJH;IOa7owae zQiepDJ%vr9UP628p%E>Pf*o91qApE+!p#D71kT*}=8ibp5zy(QA(OhjM~<6UuGURj zY`Bii_(R!$T;kmZ@oVjwN zV`9k5Yl`ZQ)53)~%BiXGN&JoAMgEq>ifS0tVI0))y*84|@XcGAaXj@iQhPe=7W^=6 z8A;m+AIsT=2}uD91cx|`EhUx8TmmFBrFYkj*pDZfe!yP3r)qbaI_uu!3_8v*rdjrX<(dL>~qQkwKhCZc+`YO}2crEfB-CiAoqXaIF5nU({H%xuLH9|RSiE7^1sqyT=C$55q zri5*IWevIuk<~E|I&Uy!67SK}sj;AjBfp?(e9nH2r>e>C_a$+c&_tC87x(1GUTT`? z=#;Zw7U;(5jp^@ynG{0i_@;dQZN>d52MBv2-NPHN#Tg=M-srpcXh(1sIo8~KHNWOK zV^YkBkjS&Yy7475@D}9PdUmZ|*WXZI z7|eFmJ_;)_aCjJrr~#w`ncL|V`r|kNwE;v$Aj&Ma%wy!&r~$xK26n8QSX%a|t4Js* zy{loKo|;mW(^3+%kYZL+!Z?C$2P19{YyDfU&2#r?W0m21m$7oYOA)kLiq+w z@E+{9Tp@v7=HbNDT;8XrFhoO9f`Wpm`1pJv=o#8=5u){jsXT5TZEk;h%G#*)=O=_N zk7N3$XO{;;)i4hg)Lg5*K674N^o_2z*WxXbQ!e<;?&L5-fV7%u6AdOLh>VdvZd{)f z^&>?gnXf)sOaL+po`m4#uY^_B`{t?GI9V^Z(6^4>>@SrI>og~jWgs5A^F(g0U0c(CMWIS zK=M&y)?Ne^CJZ2rR8&!t)zA=7GGKS8shOIdu9l(p z`;NpVp~z%d<(I#UwXuN)`{4r^T^BlUPDst=UM849@Tg>*j~YU9pYJKd!pdAj_UQ(G zzg)MZCW2$Hz2ZUrM(hD6jB;}Y#1oG@ z6Z#Bt$e4CPS78~~n?os6b(xJ#G|udstFuZ@irXD+?tq;ps ziV@oX(*lqp!^oJCi| zGG_~-YOgpG`m=YdDM2;-KJ|U7vY&F*PK0(IDbdhR_Mvaa`Nkn*%m3xD{+{!1fw0Sb zp*~GaA=lB7?P1%>B)4B5i4@^2Bv23LcV0ir0|Eh{Ki87dw1YyWvKfp*8~J^CC-bcG zZFXQW3a}St=6wDR z^tAG|mJH$oP~0+YDN{jqi!uHDH#@fMfILRH<|v}Jl7UwS_9!PO?4q`(Jt)}OIV>nF zgo1`A@*~^NQ|&GN?=L~sg8CJLy0wD36@m^0D|Q_PWWWfCh*Y_q>yv*cm#ZJ-*UiW& zC`@}UE?j%G)P!$rbX*f>^`psAFEh7lGeRd@9S}|2gmQE7YcK&dHD55m-dZY z3gW9>nHu5i&}m6pxKK=d`?;GBa-;j0ROX+dX&%z5CtUzFPo3_*1>D74p^YN?*aQ}? zEy@1}&KIJ+)g@4YWHd`>g(`~vG1*A%ybs>fb6+o)>l^`YILItLql$O})KvXkHy?wQ z-T443cz1j}2?L6Xo;{UFrt>AsCi@0G4aABZD)OSA446-0Q|$sWjX8Z}-hxE!xR!r$ zX_ehzMDpC8p-_C$B+FPMW0!nh6;|dG<>P8dzaRi9pzTHjYLKaQw`l+41x6r~K8lGs z+P>S>pDd62w_#<{6FZd*}etc#*Z=MM~3$P4N#MI#FwSz(OMy(?D>3h=?v*Y;z29WbZ?wp279Hz2qAtk z8$vL{?KS05mlp*B0`S9>#=%0}^xh>Pw^48sz5&HXr*J4KEl*TpqN<+WW>8R=fD0VW zDvC4>A>2E;aRxw zL@-IKiVi9?l2PA_7O8(2OdfiTw2b-;#6;!$LkBMb3ueE?+S3u0bU84VhtG^kH`ltd z>i(+gG(?+{V@gFKFaAlF+WflO2IC|qfa)-@FflX`lP@V^{YH)P8+R(l}p zsq9#ptVbZNeBX8}8_#3{3TrblQR!W<&U-zUKq|G1J?VbAanI_NcES-78q96MTzRZiI*$~<+%p+_>F+Yi=#Aj_4##{2tQ%6$ zk14;;j<~})VaRG~ikiGWD?df$*gBco=>vo=GUBMn#I9E@61Nd8Y>-%2Hwh{lPJp!2 znn{Q^!C^^bVP;Fj`Y+L(iRNj(~Any;p-T!n+0TcjBALV`c0kHIMVHRQnIXql*WwJzkPkH-nB1(jCVHMnv zhMHMjg&4ub$@nNLk^kLRZU z2O|LT!OfA)iQZaCg8$7GcPOWiG?<&d9eN3{O3yFCZ`Z6Wa@ee(c}um12d!H9 zi^`(b8{c;vaxPH4tBEJRWGLvmP7jrbn>*kILuo7&Fl_C10r}Sv}i)bWxpfwK>lE ztXtlNd}}CW6hH!#$MuR&cg9Y85h$C{803(2bvw17x}C_?FgBFOizKxp9W-|9WIU46N)_xLvbjCccCP#f%a#GyC8d?13wiTD~IVZCzMYP{2wJN#<$5xi@N9ZvA=$4of zD$cBj&Ma^nv5k)okIx%nDeP7Z*mjym0lr*{Qb6+jn%Yj!Y;V2XvH)?vpMw?ew}E>0 z>{LgFg}xCtD(z}Y;-TfabiUO`Qb2%DUHSUs%2RJmUp$oFHN{h=_z0C z$ZG({qP@7^o4;xhCh|$-%5*> zo$*f6if|`2>nV0T?z<#2>dULTu=~NGm@Xa75;#45LEhT7EdJCcROa%qX%&H zORe6pv9CU);A2_u!h4g2a-Q3x^!a6D(i(D2{$W5=R{I=$l6u>9pl^*Xqn52Ken$|z zs3EphMV8RCYu6Y6!A$PRlg@O+_y==yu6R#MANR98R5i7_ZXu+!repb7?)D<+s7i~E zh%^ZLYv(_OfuHc22I~lZn+Wqv~&whs1P%^u& zQYc6DQBeY@aGf#^nVuvQ18P3;^BB9`J-fW}dO#)kU8RKLGl=$x0Mz_2QzkumsNg-h z0SM9DMstLIIM#l%v)gMjOt~5^A~W)6Blz+tzb|;pt;sLgSto||ehUg)milE-{?A(~ zB2*&I?$y)ah4RyoUla*@)^Z(lmr3~fE*)B|UXICJH1ka_NOkFH&zH?|V`G{8Ow2qg z|6ZGG%I3*U%|To7f1v9QgDN&nVPJO@?8Q7iP2c3O9|>cdcHu4=kJk{Q$IOC+!Eo&eN{k zkqbE5guofTq@u#YWdg3ze%KhWL7-h!+G&~z2qxY^aUFhjfGD3TMc;|U?+HvPkmr#S zph|%NUH-J=@p``!5cjQKK9xP?6PN48+)S^ss=>$s!1Wd;bsATc3KvXc5)divUn)oO z*wBO@fq41)P}%Da;?(K=8uPZRn^4{Z-*e^T|9Xve&1KhT?jT&og-ME|a6#Tn-~qOc z_Xcm!CJSYo2Hd+fQi3Wg_p^9rhu529>dW8pzfLy|`tpaX$z}svM%i7dq7Bd(0vK4oUMB+rxHQ>y(dU{DfEcgAK2Do&%;K_3UZBqac0j$HtEc5X?6**ewJ=GS|0N zt*X|Xu$wqHfojPdjmp3)$MzoDlgRpO@R@ecR{09-lpsRCL6#ig%z>8A?$o99{%laV zC=Gel$V3H9DCzto9w2;3cV4);ur%ZWNAkP_T2AE-GDG>*#`}DP&TpwZ!L|IH?e_?K zL@Ahy0hoa7un5Ga#_bGPdPTa+Qes`li;}^)I}~HG)ss2O-?488@mbT60N4WD#QdHh z0?=#p*BSW!G4|LuA)k8^JhvBk$7eTU;=v6cwElify=Hj(@igskI@-${H=5rH?1(DI z4j~ zYayOs~_gpcCrg z$3*P?1XtD&5{8t9mc?s(kr9ZS;i5SeHG06AxT5H-*9_K9dIM5RM<6*2jeO4ALuiZR zH644le^j6!{Po;y-SlD#=PLiWBvtO<=>>w13)I2lSixYqLp>-LZhAWD@3bWasUM9> zJfT!i;AZ&xGl}wv;2^apz5xtb|3;JH4xf(AmkhnSj078hn%yf)gfy`HsIBlv^e+tL zR&?lJL=Tw!4`rytr6lUR{}{hhQI(?~{h(Y{%3A$ggk+{|{{fTIg=zq|Au|Dqjn(CP z>o~5{@#GF29+1M$2s<^PcDx2gXX)lmSN}bk#OJW!&uo2Ie?inKWMtl(dM=qOPDIYE z6Db??FEa}kuYAiW3w`Yyna$22bLcPZ1;N_Cm6ev2g@Mo&Tz7eLD_>+~+kfa({F|Ef zy~~J3{Vz4zs89?wQw)Dnjs zZ;pnr90Go7;svLG_?~Nmh>&@g~~N zKPUAqX5y#RSAPjn{jccYaNRv`)6`bImJ8oCOmPr`nV;fQJDXUZqhpWQT;)fZ4S*9u z`p*gd=;%m9CE>*)!Rc;BRILYPc+<-v#r@XFqnm*3n%WNeW31?`pKL6%k27V(QsYs? z$OWr<08T9QlPhT;C*k!mGBR2^Y(YDHOOLFXW_-9h*k6`MQlTH=et1*^&KmK>lL2nu zT}L}qGLPo!FPV4+gt#W_=Px|mZBn+5Wt##1Ft(Xl1R<9nE?Y%m`~k_$k*t73Kz@7- z5dqnvuh{ARdpNA61|oOxz0|a8pzst6hUFy7+h~it=aB+GU(*X($?IpqV`3bw1Y~kQnX27&@E7InDJF`2^`&WKQ^}o5i!PqYyMFh0lzv4b^>ls(6wL0XmUo zw(SrZ{9aJ%RQZIlkoQ zSuY+>Zr;|WR|7KrnqP<2<5Auh?7X*R-lIP6p+#1y-lM?&ki14ipg4Z!v1885`h6^$ znB<&axS)n@4r63=rNknil^Jz)mp4qHiGFgFSDu)sy!gvNB|6$4rR4)gpvd~gx7Xm! z0ExpX<%cH@LAe@^67_lF7YmxbU~S-bGre9epNd#YG@B(&el& zT|L)tzg<^4-0X$dThyO)g|HvfcLF;XX+1844ODsz@n(+&Hl`R`P8K=!~N{-kkdn+RSrE)aPB#Z(#-Z>h6By9U@0UL#Z5sGNar;=26$HaJKf0PNQO+*k9600;7;c|-3)~WNwr=2aaL|J* z41443(uZV}M3k8ZS2i%Jm|mlPzha-g1QE6eKneKy6}CU2veL$|neJmJe};g@=XsH{ zc(SXx;L#giky-^FTN+blsc2BM+#1m8Ok;le+QQJ{3B-1UQ&$QMZVMc;j_LExtq0id znM~O0^$s-&VL*pKcl!Z)ix2OkcggVk3Q=rIN=if+acz8fpwvb_yqn@`$fbH=^Hwpv z%^z@!9d)kU-th4~yI`+0IzCkRwqovjhr&Zh8kkT*3J9k?pTh^pA_bhDSu7_r%ygHw zESBZurmf~O^qwh#hgpC6w@WbGK_?|S=e}i3Ci!(5ujas03T|p%C?rAA(~pElhi}{d zGqFXu4{~x5tel+WEX91W3O*6%0-^}#8z)({Ca}=mFW(j`&z}8u(I>|sjmv_>4_jv` z+#oLGKiUI&Pt&@@Yqyir(_>}fj6m$q4+(J-X|)dutvi_9^b9!G5)Fwhbh$V1biMBH zFB9Nx@>I&1wtBb%zM<9B1$4sm?bE-#v^P?ymyfMy_|FW&&SfAJ{Ck$Nj#S`mh#Wo; zlCF1@oM-K4HIb{yQoCelh^{Tq-c=Uq#Zc}!6CcEqZs+0HV4NIdkZJ3(R}KEcKq2kS zId|JcdED3>2c4F&R;@<+`<_rMUaYF$yFI+FQ}s*M8Lhta^#OO&vZOu?xtzYb;Fwwp zYF@NJUUkHj?NK*6-nqRKdpNMV{xux?j>U5(@0s^P42TRjg@3k`$UyoRchEzM3N(Bi zX*FJE6uL`VRw|2?yo_X9cjQ0CV+9?OLav!yb!DW@q%J7(>V=xafe8q7Ed z@81P>(_!NPQ~zvyKDp7G!$L`q+ZNM}RBBFs&8rm2$~IW!Y58*V!D2!XyU4I-tpMf# z^+H@pN=!!?2XGb~-sfbUkoXNhxTy*$=^NX^VDaZyRsswkf=lp)RCfOF z@ez6%`0aAV$mbekA7ssL?OtJ^>@j)U^eS~v-dj>mckp-rj?wpC-GGcQ^+xNw4>CR&QJDb3Pi`1d}1DZi%BXn(e}EAW**c19$14| zW2snu)3hgSr-}}xTeL6q*|7>@KXm^(AiPvKs(t6be$qjB)4EP~WP+SszR^c^fc3C@ zAFaj5t(=-Lp1cC5+b}Um!gHeDdpC z4Hgi+!g!s2_GFxT-((}K!gVF$Z5lns-IRC!8mSet^s?Dvc5M#5&*gFklvW)HWIJWd zLf>Y%KX=z%nA!5({#_fn2d?{yfnpt7b$!w75*`8MOIk4VarhFrrB{W(?3GeyX;PKmm{qskQ9WK4)ws;_gFkQ{DESsnR zlEJa-Chpt49W5UZ^V`MHt3$pcA>Fp>cD;!l7@r5*b4V02N{$Pkj|IPAps5t<6v)yc z`MEu0Xh}^`O3!#}MqNJp3Ymo0T~bQw;XwA|LzPaWEyj*Tr~9aUd!gr3z|G-GfMY@o z@8;p77ZL&~dIWG{z%CB{M}NC1ialq&bpaJI$_?#XhRqB9z8wc&;mN7ECEk`lzfzp6 zM!h$P$z+d{9N~>Z`x& z+h{BZTzDtv)M@gyqCL{uoc`T+E4Hx)VlT8Qy9-p*_}G!488>0WZ!z74#q`aUX~gfN zaR*D_6O|a-)iBwTe9J@W{fc!-RoGjSp@RJPW(Cv=q-EOS;_oLjl$>N4HDk*=Auspj zaWVKs-@EI{Ua=|S!lLLA_o(}yuV!2|#=TSPh%{6U)QZo{0c(*&kD*0+ADv%TCI=vg zK5+>a^J7;#X87W>E{0_3=_EpB?F`+jEMx5nbtw6>HDz@``83oA_@0!W^$?8vCC&ud1a=~BLh4KGQD=c8+awmgZ|;UeCasjy>2DB*13OvvmB|Lu9BJ`zjQE z6yi6f7tnszy?w2U^=8?76a>&w&55>8+OP~%s_ycy>?9Eb3-1IQ!q-*Mc^m5{WVI#5 zk7M7hO?fb&qDl4M0BYCbSvAOc=2Y|XIymiL?AwYJ46Ljq1)4e$<`(qZU$d0+rX3w! z?4WF?`bzEwNcfMG6;D?t0u@eDAJ!P$CcTU|pgRI?U~`p-$)Eb-S|KnH)ZGGR|E{r- zRuM=i)}|l~kJ~YKZ%AwhWV~VsIFAjnLaY`rdqz-5j)O_b88ru=xz{IJypHcVmRzXB z3fqu9q9KLmzJ5RBpKo_WQUQ+`i(U4vg#4J<{yB%oCpJFA(1CwZfBwl4c0_xI2@2;8 z&{!QUR#n$fyD!XZ=O%(r3Ghdc+oPgnWs@?o71^4%`a;Oz9b%!DlHz#o{DCBcQHG&} z;*X|d-oCtinB`^`OLCQMTXv#F)~3`$gvV9-EzMb|z_Rs?hUO4=(=kkZtX-eY-#k~p zXH%+>LXUuL7~u*HEG)mQUif?G+sk(oQa}HhLTC{eIS9gjS3~gg_9(WZ;$6DGw!sM{9DWJH(IYYiX?~gw``cF!Y+ou@1!6+_HK?<4`TnkIv7)9Gg)kyrNlImhxyI)1L%!qy_THY!*7A4FNCB50Yqx4pf?n5gx-m&9agwKLSP$UxioioG{IOgRt#nlQHX!51G|3I)cMk(V z?1S5DXgm09#z*HSTE3#3uGxLJtpYLin(4^0r@8uy=!fORBG~!2e&34HI}}bB%N(93 zCMfqaUX#U2$`?zJsBGV-ZSaN3XEB~hjAWb+ZG&=r^I7h0mFrDn=E#Eei@XFvENin5m@xNeekYwaGCVsiaF2vhYp_OV36^-S~g4< zW5;;C=Q>gdSk8?B5Mw&Z9C^sLGMP^0n))ze+pfg zaiO1<1wY&7Lda!S)l0A*PkAtQ%|1+WSU#%ACi``qO~YlDou&IN?w-5u)Q$g1ASy|7 z^i60%=R;)%_0g2hQ+s<9W5bm~Y~)V`6ml^7gorA%-~uDdtRsDa~B-4jkR@HxZq@yq2I`5w*cbl=>Sm`znG*X;Uwsi zz6~v7|2Y`DL-zqGfz)3f0UwAzGz2`p*tBmO)7CdF^=0D=Z*H$r*k+bFbSYR)oF}seIq;JG_rRL9IM`RJ6T4VQf!YP8z+1H0+ue zs_JXYNTfw2jyj#{+%PyOTIn4{24Y#ql9R31v{cGn-r0QSxyZaF(O=~^-FuGZZg+#J z-KH?>mmprL%~Ch?^*zg4Ic@CffH~r{qT6F5xKJP%k5Ly&NY9D@;%|9=>aH9fqAutM z*WjkF*}c7v_vWIFWY!7@%UoR@GZj&=SJ{-F`o4M zLk?H$34^m=qq3hSCi~}RBFGa+D}37ZXm)Np^uxp{l1aH;RD)6!QtGta4;d*)NB~G9 z(IOAmwVEL5=s3$;t5TU;UMZ=eHdG?epx^ZN(z+H&m=ynTsp@*N;hui$b?1X$<}Q)} zdFk~g!(O|XsCq$eivc;Fc-`kin=%l!#snl1j4rU+T@kK9`=GxrUNC0zW}sXMDm_p8 zg^^Z=umV_6dgwpC!h?@YUS2*tCZcOm2~u)9Z!U3|uJu*>cdTUIK(&EFui2WM@r#;XsUTrX=H^X z$c&0>-{-f*3`T}HQz3pi2@yDfYzXP3f5OFUK1AL^k{2HBbbl&PfLO>Ip`{(!1C1FD zm2iaU!dLo25QgQ;ml-e{fLmd#W_AZtIqfJiTkm>GG2S%R%W9Ma2ZLt^d3+q1Ez!;^ z+5~}wjd-oTQpVJhin`i(*uz%qdi^sQ7aNE903X>K`@zpo`Fau5ws#+r{U0n6_B$rZ z>c}e3cz-235Rx0er`{_{3b96pQ9@c=&ykTf{q_n6`8?2!=Wey#3_Gvy zC_4P^v?*dqOy==iwC?&dEVQNMF4}B5yZ>3$#fE3c#@z`?B2in_K!^RJm+Ntl)GWmW^{y81)#Ey!-s(gvRP*&9s$ zw5uF*zSI{sXc3Q1G`@{y(7E^WGN9PLcQ>$f*}KSpKNe|s9dyP^fw68mad2@T8t3iJ zXAdHs0Z061Jd?+N)SO^5**KRJx_`Rb^H=JWpE;uJJ3}%(ct&%S2t6b*e~*mV{}dvx z1(1K<|4j&7U0n~iiG*Fv-p48h=&X+B$ZGs-@v)?jsD1a#;3TVjx;XBj$kg@(PFTi* z-vEY`{PDp8vsMn_(y^#KpKw#S6K=BLt6KH(Vz#IC0+Jn*biT$Xo~L!jQnO%W2oQYO?Lq-Mlt1~g=KBNX1t9H<%M4m*54)9}D?XOHZ zy^^yVMR|=Wbm$1LFs^QHkKpwF_S+G5ex7><#xtEp8tX;>AfTb#0|05PJl{&RmX=t| zX7c2H&y#52Q34S7deUA3u>778S_n$84-WFmib6q=ME>M{1TTH;T5n~na|vX=vP~kr zOLgZS+j$epI$B{lHLRR56RzhNJzY*{T;3!w14{e%Rn~m_s2PqY2TgtLO?klb)vKzL z<;PX$n6ou`jS+Q#V+MHATO#(jX{9ky&5LZx8aT-T-^&|9#S4_3%LNoFgRsK#e0)=O z_VP25qcwru!kt!>`FM!`^-BxTA3H(DBdlz|#8LWmhw=aB1G=6U)fj{PV)yaLQKP>? zI~pCk-(PSO?1&3Wms(#55#p`eFooxwCsiPQu7aa`;{>jNcsBn?ph5uKc1@Zu$O{dg z^Hm1mg|69Vei7nt|2-cD_H=K$mA5U|m>`n6yCZkxw7KY-Z*9Qd3u1-oaFM0hQ%+6K z`w!>&6iz!Dk3z3`$MnzSZ3$^Ur&o&qQ0n{&BpejXLpwKkhB+U30__a52G+Xc+}FLQ zD>ccGqZ|aEd}%+lWUS@CFV|mZ!Hp3FPzOb;zPV`ky znR42n4o)LHWCUvnvW=Cd?`qI4F1UQ=Ncm#8eSVXya$R{WY1Fc@SJ&1W|NWa2~|g0{;U(EWSCo{3=UM&c5w?!ySO+h{}8< zR%*Xdmit^WT*|!4|4?eEGv@mZms9x+4~0` zhV^p^C>iL9D{kWe8$5lVha{QJCT4t3Tz%fHdL}9+1I{Nd;4^4BghV|2^v$bF5G=HXxF~Z$MRK<)Nm`b-@D|ZvwY6I_(IS5fY z8FhztKgBk+eBavBA8q!&Wq#^xDeZ>|q5hV_{q!%#$5T6A4IlGSun#-=IZ zmzykUeLOD2X&4GXN>aeuD%r!SIM)*lXC?iQut2WZ!o$;6?R_Wtdf(X;#^0WORc9!% z+4XgG6cd3|%PZ|joR|ly>u-3|dDI%N9=Oku9VEA+`2_Xt$Zec!BTB+yXz~c zBddKT{`Zz;+JCe+Bh+Z&F=%?|`Mn&yPMO_CBQG^ry^CveNB`oj7g?_Q(Gwj}FYRuPoc|TE+A?Su2CoLXp;OBL+9!tRMi_BDsHi2OiD12!YCyVm1 zpDvNX>lNi-n5{51rF=`mw^gWE54`Aam6p`du4h8{mKR_hz3~e30zLD=Nu(=BSBvor zB9>+)A@RfOsnP$IUjlj@R7Mxk?d&CnS$7Qu#SRBQ2hb~P8fJq9yk|S497ZA|rFrob zPq+N^xU1py1rQqz4C*iD;e9T^ORZiMubS=}lZdg7&M$<-D;`}nexbOARl=7a(Kn0{ z-`@|7uVW#}F_`31)DwPD(-;C~{~o5#Sr8I#O!2hv3z3-WYNChJjko_O$-|>Qy4oF? zzdbyDr@1}dtTI1M@VkwgdSv(IB{Pk+%MS?<&y(4)g zp@EpGarfb9^of)lXx2-z@Ij~(dXZd}E1~_o z#pa_~)up8rJ1LkES~vQ#{!wgmE+Qr`duJQmUytSoU6K~vm@-F)2+;&6J5=55g%_`( zp&rc6sjUYTf`M-J(P5b=%dT5({M6JnFb|3MJ>`uvv6R1I_k)L!sI@P|2Nqi7^S|2T z8ZhkVXO-c{X=Mx@eW|2&e5mknYMg!^{N?9akYZN)kMQvZ8oHwtRu^lf{Q}3C2%LxX zqlEnFL9UO@A~$9h`7Vxc_Q_0dd5>I9v8AJO+|To0#xho>Z_*reZAm4RQKbS>C1h5p z0kneLWMHamTe+{MqSw~}YFlct!wN+^lVDsZaOf0ad~o8Sl#1;gI(+4arbI`04`ou5 z`YBf4bUVM~bgd?>ze*r7L5bEoHZv@*t*9}D7QLP)y2N}b)kim|wlpG441%y(2ZM&k zwcpNn5Xeg~?KEeL39h1XKS6shbd?6wYm7=qoK=+UdIPR?|5P}0QegOzrVT7G3+)XZ z;~;0hjF2qOcpTr_+*g_{xiGK0trIp7D(jy2eMYZm*;48ho_hcKPDETHYxbBB08CI* zT#e=9U+N!<7L2qF2qhO=ACoO;i~#zywp@IKMZAbHeYZyz8kz|Ai{9Odl9ui&n{8j} z{$`)R*TrIPaBtllUD@INN(8QrsEXqraXWO!PB&1>n*_!0OGkn#uTph55`$d$R^^bxSWZwd2*yM%TDxy38cXuF`9H%2>uqF= z;vk$eh!*Dj_YE<=UfJwkvqd!|ZWy=;SXr5fNI2Pp2z~avN}BKRqjl63y!?4p*lon= zVPi;IRa1Qf^V`{IxIS8G>Ff7DHFUD>lpIXW+7L-O=Pd?^0AxY${&`o|TBF3iG*3W6Ega+xh_P8Zu0m#Y1F z2i*!5_xh5-*z$X#lp-GteRFJZG*(Y~;<=4Usrss_z02;?0|8)SkgX3Wk#=m=d2CP4fjxXbS5%a z=kWA69vE}NI-0qYvtzDMKRP_#;(O&#WDZD}Fg5J!%dtz*rjr3l1Ds*2VtU?L!Q2%Q z+mCXF6rShR4+9_wx%bn|>c$BMdS8KQ=yInoD><4{e@mSqC;)5jm=JR!1L{w1eWKmw znCaBmf#cEk>NW%&VFmL)YKp+T1op;8@V~oiJ@s|74-@c0P;ki&BE7ZkYJh;E(M=*b zDNH(F>^MnF7TemJZ`D~jKd8hd6b?2;qe5#WYgHm^=M9p0l|b4(a{Nl4 z@fmPs72R`lQK170`#DYt%4PF_5U1Kl34b-kKena-=j=!8EO{|sqavC=O@i`Cd^nQZNIrG*`pXqSZbYnx@JhlO6zi@JxzZw6@i5x%;JwFRMOH^!@)#figLBA%XNFd(`Lb0vuj1Nu@AR+2WRxXcaFy_W=zN_qZP3=>De%kWck81$k$A}A>eIn zd?CGGAg89DXz1gQ!XeAy6Yv^WNjZSIBss!?_`X8qUxiy?_h2*WQ2LBRtRz0=Pe29Y zhwp)2XIHz|Hg{j6?DU7jmV)A<*_SnQKPk&iC0cwei~GC!J#V-M4`4k5lF<(Qr=8QS zJ_7xQQk|LMB|&)IO1>+nJDS+$E{CIo#quSDUK;{PbsW3Gc{meS}L1<8T2ZSJKF~UPL_e*JM8&^F5)vJwSYdueD@sdk_=Y@)-^n41iW+Bm2<6 zU=kWI=^??I5Q(z{uSsiEK$5BuNcO;q+4T5t!5Q_sN_1^RB9`uD=0hu(@XuOEUU`whixhbLxrg?A05r|<(JXN`N5gB_bx7`jAQcEU%0w^#_*9` zOo3%UQ?octr;$`v|Glnp0Y>QQoaOT?&+4_JR5ZzIxCgnE3li4Wu;2NaaY{-!T2&~` zmSs|T8!1noosduYKgq|?wEX$;UD*STu=2qRpg0clHtKaDh^s zTZI<5uj5@SE6K{H1FY8ab{bw@Eg4~TMLbTsP{wir!k;mXFSf#M2ATdT8wRGeM;UMt zRvJrXVN0%@^856u&Quta%nP(qwWrE79Sr=BdD`1oH?JN|!m)u26tI2=A0;<089U(` zZago4LV#kYk8u8VP^6qlEaoLbQ#x`TFwjn3ZDqR?kyGGzw#Zp2{rQxo)?HL-#htLP z<(^dObb%}kkN}c1GtPjW?LYB7v5d&_*bA&$1PLD~cDNGY|AT+0pcM>$3u4rbGgc4B z);%99Rb9Rxl0xD@kQ$b0?@3Y}l!@RDlB{SsGKiKGlXa!4{lQECK9$2y{oOD`8X>o5 zwuc>`q$+LikCDa`yt|K=kf|%KXn?WoC4r5Tl2cmpE$;D60Wb@3cNei#U_U8MteuH% z7^ni)eF2wyMc3HUG%zTW8nrQbX;o+2${`qdXf+{kE=CcZ`ufp|;;ri=uI~#0km#i9 zYBfGR&+qk1D=>ay9+9-R2$C)WGphnw!oVUg?Px6~>;2`RmRhh|(K+^jEp>}@ca%*U zZj&m21i=+Vj}Nm|^`!X`Z$3Q3gPg3FnH(OzlwQov+lr2-tF$$a7ou;A0TPqN=C4-{ zVWTNb*MrA6|Bjx1WDl8`KdNB#&FJt_S(@reM>hrV7SDM21O&4VUFc6J_$nTsxoFdi zi*LlwS0rcV#m%nS%84@^&kiFk@eDHrRuKupf4osiv}6FJGS#5|N63nk63G|WjTSPC zbbT!y!R@jN0j6PKTUu1_-LxS4otu}huMvR+8+62UEPz&zmVC3_U-4OT&N>qfRW6^B zk~aO&yZV-(fNk5S0t`r4<&5%Ges)peHRKjFA<}o$_yn@7tenE7%-wxMP?TbyFvFQz zO;~9L?${9=+!RVw$lo+2P23tHoF&d0RJ3`L)El&;*t}rX)n!LUaE3;4)aXj-7?YLN zD2j^nPeTlyKSY`*4l~dtX#R5KxM_sU&Eo8wS_P%ok&sq`o7jbjw!T3Z1 zS_L2eKZq*>Rb#+=G4+YhG`;=R$nFH_#k4xKBx)~w9o{*8=23+bq{`vi_^)X#Ig~$Q zUf07=4aF)&L&1WX=iFd28-EE#Ty}qxn?+RHs2@KO{&C)&p_>EU0Y-H(ncm*;Mak_y zRTsaC8fdAlsud=wtE<;~c;MUkzXk6|p_yF#9om`Aw%Av#b8^M3)dA{H!s(}{B>0@Z z*g$<1+PY3&MYR%>ghXcdJo6_tZH`LWbds#o<>kOeFP3E$c&V+Gd}01|nj`Q}2~a~Y zqoMxg#u0bAD<0uoiykSSnwGkKLezC=06OA7@rsIGonZZIfylUDkXNcPM|2YtD51M( zQC4$^dyS6Q#Jtcvff;&HQVGxuft6Giopm82e82V_13AGXSkZwO#vkd zXYcgk9O+4r6XwERz`@5s(*504_)(v}%$~C-Zwls2n9_)_vbNjmLF#Y(?PIH;x*!g4 zBW^SIijjk9An<_dj?2BQYiep9k!64K)AiQXt%k)WEou!@n@5``*z925Ld{|iHxBR% z`wccn+OTGOxbYduV$M3Kp-PgAJ{{6jJ^j-msAqbIOA|>kXL?6}&mv+|*q@$yI(rqU z|7j~}YHMq|r-##uhg?<=2}dHQxf(=)Tr4nHfBo*d{YyrW)E~MDi4r5n}lvv>la)i>%=KtHx~kHgRJ#!Ev}SW%OtTgo_oaCi@FC0@;*Km*N{n-0E#GQ#Fv ztb|TwDqN)%o1N1-7b+~yejCP(j^YcNAeSxJT1@@gdYik)01Cz;=@gjZj`x>6>%Eac zc2?R}`Bm*#D!P(rkNGw@q=tbf+}fOjLSNrDW4+qVZE#>1mJg2$&>uBqbu*){70W7% zD07yViXRNrqI+E^G%)Iiq+J?Cav=D=dyl!9lp1ZB%Cn4cv zXT(Yiro)j~E><7$HYHqbHLK;Dag$mckbpnBNtL+Z`Ss7PoL#zRfd@^W^3M(TH<~u=TpT@X zb76{S4gtT*OLb&qy_sZ6mh}|Ix2#th3`=Qq{W}EqG=Rsn#cN ztiuz9Uk-e{9*$C-D08{(*$4oo^@ji`GGdSvWLnSxXy%Y8J&$gryXP!>Oyr+uZ)8fe zpoRXGkQSAmgGl|!DRDvia690@J0ukK6c`HWBg7x6RW3ETyve2e zRVlA>YpwJx&e4cNgk7)~phhhSn#k?P==t4up@5u^|84t3-s={zyuwb`js&>1AFT}F z;6fgrV7E{3hJF%NG9<~)s3gcJDpFBD($mJ0P%$th5JnR=NCuT8p>R$xY4Nm}oSa5f zB(R6*JXb4T8kLqPD`%w0o!@mCS@1rl9Tg|dABKtJ6Q%t<-;XH@#REZ5yKMH^wX}4; z`7G$V%WTxApyC8Z@~PW26(gH1tv znX7Fx%Y)HOg7&Upr~a|NVpxxBqv@2xt)0E7*u`-&onkc(ssalvqHNjIJvAl+8EQ_! zq@TNtl~m@A)SrUfbkSfwPR|y&z&3%y|B`rA-dEhLKlNLSw!FH`zhOrKE`I$g-7u z8`cwWOT;Sq1Sl4Z-!(`^_jRGm`AChG+tpNibj?hVGVu9~mD~Od5PA;<04tSW2@*~Q zsKLw2iTitBv^kAMXrvrjDZN^(ek62*`BJ}*PpU?llS9al|qe4#*~-6WB*~fR2KDE746M0~OYcc zE0Y)W2PfiSe`ID7*HHWEv}Ml7!B#7=FyuN0)Q0<}rwOFsrJytQYmhzw?I#$zx?A|Z zx=u}9xjF^;rRBv;f3&nS#3W=$_gYF4EvVx?AJDA98tZJ;o~DJlaTP=%`;GWoyhdhc zYKtFhTFeZ&McpJmF|A8+JhhC-!p5yGxVZOP>pce%T!Hm&Zwtm-JNEys^mlG7*4BOi zlL<^#25k{@<7!ul0Ps84#YYqF4opkcOt}u@d+FE!x&H!BsMCEc%K&1j zVNm&TTa?0bV$kJb4mKv(kV=p>^P$f*`K<5a$0b zuP7BJ1|XXv&#BPd%quO&ha%BOEVY)U6QW(y~ca`}bs^7g}CvsnOCJ zN$S$(*3MrVdghcm^I2Yv=k~CNQ751f)1%Z`Zr)cMI%QX2(*Ms5d$Qo;<8QF4UbRL< zIDfdl8J?UhD6ang{Da?lB6C~RUobfMQB7Sv=iS_#e{sRPDEV;~Hje(OKI9;qH;ykH zAoq1-Q&sj`6qMh+tq^#gT%)u@O&(g>`oJ9Dl}%&XW7P5?bysyoth%6?2Mdt-~x1fqCz-|eUvVkqt<#+d_TPcUN7`1sp{-wirM zaku;imWIB+3iusu&ZabFXaAH{7xSFMLCuWXni|Ge%!=Icm4`ks#e6tz69SCNvhVMC z6!BbUmI%r8^y7seI_2{%J^B|Ib{C|zHU6-eD673c#u!k9)|hFb(g;gzbp?sVo+D%}tfvEKSBqmS7=-;Yx29lFgiGPk<(#_?8D+7NZ zAg>S|KNZ_(WVN@%xbv!OZOvxm4+$31sQQ!Jo>8+yQ)9Ml&FgNTB`*V*13H5J;M5d? zCKsh1fK{F|X5vj`W#xV)C4be?5&b5E*k90}m|qmHp(E-f!-|8mM@LUzT(PFETO{XK zp_j6+QP(bI{nuT$BawKf8GQ*Ovy`$yNTDPO1^Sgz*TvI?o2x4e2S@Kx-+LE!7sj#A zj-2d+YrQb+sxD(=pIJEAd)L;WUnDJbmzU(b@+RNQvTe%<)g|oiq=&6`07G-#oA104 z03I=w*OS9qUSxG|#gA&AiKM03kJZmm-+#1g+s#^?L*2apGp5#DvCUA}no<$#B$w@$ zHI4yXQn{};=JgMLUNjQ1i=#9W<-D|V;C=@uOLM3*|)i><9;f=y~rfzV+hZ-q91a^f}m+xrJ3rLr>h*WZ|* z?>%;dQi{H6tB+q@a=V}M^$t|;P!;V}o9($Lm#@X-fp8KAZ%tQr$vs(Y$ z<9$Lbsj0;`6}*<}+T>6iBP(1(Gp&D&d1>6w=hQS+41US@`{QgdsnE;1lzf#t{ObWR zZAsZS0m$!u+M7_=yZMqFMl}5fr6w|x!hrB`iWbrJ=0c^ z5|AuVyrQm#BqgCJje7^CDUIXCd_?*u7F1woZ|WLb%N^cPQ%h7W`TCWHIj_AOSv@-9 zxRf3{VkIUA&%lBj_ z^-1Lu+}lVhFee5+4guz6We^Z>#4H-1!SKP{Qa^=N!oER8MJxQ0MPXrM>*N&jbF83G$_(gS5;07%B5=qVv}-)oVg6sgE!(fEX4a zm>H_Y3oR${(BO+|A&Qyz>x-+p#LdEfkaCaD0Veu48C+aP+srx5l% z|Fz(PfrtIv3_5@$QODAwvH}r<1hr!4@*i8FO4aBa9oDG-yJSuo|$ zzu5FJ$@=9>&(xIkL$!P)a9{`-Pw(Evwo8dTYpYD2?v7+7=`Gbmoq)Ul6|i)NxbrPg z_&(5E>FWImHQibXPgU5Qxwtb-|B@V2`QB7_kq-{=_aEp#uqk7ks~RN!t9KC`fd4Q| z7qPI$*I(+>jmn*zeS%zc|u=SuX9MouNe98>Y@()J$c!lgx+q+Ea`}@tcx_nsP+i1lm4~owCGo&>@&!@#tV$_|w_Scc-}j zJpc*60uNDob)8{(fhRS^fu!+rwb?^Nc@~`xe#iwA!pfzKoc5#Z@;ClC=;|af8q@u? z@^)*5xrCJN$=el&talQq^(+^gkgi%3w>1-wVuM`v7k2+vKVd- zEp_s|aD-7+`;@S6uBem{m`4TgE(8}SrSz9Fqkp!P-;7u#mMElShmXfdPuReRh!)Eg znf@^=@5&^o^Fgq$i7H=JN%!Z&a;)KXLl9GKJAPE9mXzosrWZU?p-A?t5b(v;b5uw1 zo$ZoY9s|XzuSVA0Gb+L7v$MHQw&3|QEUB|>^uPOKEM3WWd%eX=)tA_Ukk-tDW|L0c z`YiHt7bfFBiuyht`0AKN%leje|G_+<(iEmiN5Mmrcl|Ty0_{qUPAOq;VUAU`JV6y> z_p3EX+(MiWk&G+lM@=TL8YM@3IqFpIPDM2P@k(3x_O>vELh3vXs7vXt3Y?daJPpbR zr+ba&a9xwY@5}w}8&3aWS7n>T+3(|YS2=9_5@~@{ z&c+G!m3VIWEI!`k7q!M^EE)r$u6rqw=)3J4^!vdyN^+L*_Y-DBJ#P^kMvd=S@f#{gRy#in8Nj3t>?IJdp?|w)zD%jxf z2ss`C@AsrY+Qy5=An$e_tJihr5kh&lUjtSMBlO7C1PQNBCV zWY^01V$$LDiuFu6T>ihSiO~l*_9g;sWDQ@VsHCt4-?P3AYUAx+YoJ$5*4%N2zH0xQ^D$6FNmJYB#!c3nT%S&Dmg{j{+HDyWLtEWQno^nvX2--i<$ zuaMM6aNyp_#FWl%UTK13^H|gO?JaxhS_K~Y)BOI- z;nQ(7B&*r234L*Tt(Oh`*z)kFe|ChFkuezDbsuM8Am6{^!n!@~>Gm|dUxE$+Q~Ugz zTG$gQSEPzQSB9lj;jvYZ5np4BgQK$-e>2Bw{rK=UPy4#SXWvki4IHKlnW&s_Cbe?k zcS};h7QKO7&q^KZ8ee8@bRd?>3c1CnS1!$?;z(pmz1QNhr)mno-xFQ-z%A0{R+kY1 z`d{vYI^ILO1^L242F7BB0SPNx#C+TcnzwZ9!V{~Xt6v%oR-~}9XSS&GHDB1iX9F$A zo9THP**CjC`)A)74mhmZqBsk`N#SxKyF~`yM^}kas&>hrq)nCTvAP`dkB`LrejQFD zko5vf_@uW5H5vH$&E9ZAex$sNV^J#+bFgv&FY6m$F3G*6y8e-Xv7d+Z0lquK8y7}T z^8+^}ilTLczfjXr)fS)2q-~S$g)$VC{Fk#YEiX{wrWj%4RiN zf@d`O?`?Z#{}j( zypMdWQw1ihwEGV;Si`dM1bp=ZR!aEy$F) z9TG8RAnxO-x@0$G>L|JfNpdRt})4_RKZ3d-H|sABpWn6^b?; zs+?T9uQH6E=tzX;PUyFt8vx@;IIs@gosOy0ea~M7nzJ5U|CMRZKz5mU%&a%)5~I&2(4?PZznUl`nK?eRSE1lz z-v6*>k~JYxHKSN%OW@%oZT2_DmW;hp;|7xV_-b=ZSF^I&^3Mi)rPaAd$5V|Py5Okp z@VuS`H5JQ8>>N@ak^qL2cx?81c>1(?MjM07TP>6NvmU&SYPW0TakJg6bGLIdhW732 zuA?RHR6UtumfcG&SvM$U=aW4#d{lU-BrWXyVu2alj$t0x zxT=p{9FDJu9~wJPhOy*(S@#R_QNsJRQv&;TKeKURLk~Pmh}NV$ax(=qxT=l!?4ZV* zn_J)5*fnO%Hh$ew@ijyXR56Md{c=;TJQx*H?_!OM326KzkDVpxnsf^sW4kUdh2Ca2 zf%|RG2b5-{CAB8umyuCFKR>a4^Cy)$c>IjuO;o^jNp)y($=z^{5=EC9#Zb?{OaM1s zJrcqaZ2XR$@pB_J^T}f!Xn!HpdI`Psm&eBRKH*Z>jIyliNY7k>?6^dv&`gS zZu@}kOLHNT+_ex-3-$vS49hY0!DWa#YwbuiY3l6=WM`|4mpwI+F?wxFWAxmkJCg{Em zhxMAmZSDl~?IU!W>1Ke|{^iw0#Xz)l%6vtt#WpL6NHV08qSpyNa6rJA#j?ara~#ik zAO73z1{;PLjvg|Fkg?1ZP8S|bA&1V0V}4tCg3r^OJq-5MKVddV@Z^eo<5)cHa-{>? z$5wjAHE>C(c|U&wJ1-0SAg1C<;iU8(C2(D%j0^m4JFM;{ z2IDdKlL}S_loQ+oBI@5}=-%?e?|c9Bb>gczfma01@0D|(MO{N~{~4CnnJ$*R-IG6D zX>Yl6rDK~$E=pB&rF;is^hZ|}tW!6r6=o-YR+7JM@tBQk?!`=ETUTKTYIAki8=U8de_PYnC&a^tD3i1BYi7Zpe4XXu1{Kt($U>n%%l(VTB zql@Ii#i>3y$Y%^2%?VR_5vc-Ig;24AjgoK(-GR z$)W%caf}zxZywZw7kMxBejafa3+?CjIbmyhP-QDVUu|7m#PDQvuok1P_F93w0ec-;RQQ2-SC;eLb-EL}e2YOy)yX|1n z84~&VApjQVTk2vA^XRRn}!eb;0 z+}f4%((5}-@S_KN+qqe>*-S(m2EC?E4c5EOXmZxx#MANxu|x4`H?X6Y1rtse+@&ur z3f~_t*SyX4d17$gctpi(BKQjlCd5Jz`8UlmfEM^y132V!$N1y1FYawUA|8>T2W~e{ z0;x+-i{V;?H{7*uxGu&%Ho*^7lSX&%x#-1_M;{B8_r9mRr{;6?3&G_py?01+J{*rp zrkFHb%w)5kIju$Lb=10#@C50=bb9TdJ5YXj_4?VnoKVL4#;U$OVdZ4&I@+gD|M5|A zjz}`T62-tpErYDp;4o>&ivJec1p#G;%NGJ^2qJZ`ZAVIW=tAgysPc3rOr zRqFJa%O^4@ClXKA0X&#`aZi`QppnW66e*!lSXvd?=^abat6fW=+GQN@v zA`LwqOdZXTF=Cjoa$yM!fwNdWK6o)0EJcQ%5q%0)k?R`xGMU*`dOQ-$qaa; zVh4z{(&dbdV5WP4!!tK8!GpP1xm@)9z{f$45tXFiPl?J`8C){5f0NuKt$i$}zgsPf z*N$f!cjp`#;2?CiQb{EHjL1dHiQ%c%q#-wM>#BD$UwPA-QaLd_f(oMU&MdCwGDRzCF9zwaC`5Lj$TQPRhNG%WlrE zmQqI5gRVM4l|(#sH8y^5x^7+)VNTmmI(`6cgaS$WTjFd?QKV62%iHT*tfGstD&P4Q zUN64*DPuv={bEB+sQjnaWUFCDwpfpqO8^qQ={9OO?~e{28m4V6sOUY+TR7PPVpiAa zH9x#U&Hg4eCNN!mI-4>#W~7uzC3x|GY20M58hmy*?Jtp3v8L5pYkQcM$!53R)_FTg z9VUlql;0Z?+38eh@2;Od#*6%hsd=KIDb_&V-2mFy#HUu2y|!g?->Ub5@Rnu_%r?j7 z9yi<+{j#by@I)4J886PSxcS@`=&`TZU6a0;h9m;%sXtDq@wXAPy z%W_P4J=H9aY|9}Gu$AX2waj<$xwE)K{EjIRB)n3|+_0wW$2e@Z(-8p!a^>v$Fv)9w ziY5k8m&z!wd5}vdu{l%(X!VK0uo%}2p57KRoTYhZ$WzXAWk^rV&S&sAXBe0>Z2Ona zi1jG`!+5!ICWxN^&SF2~Tf}mAxmLh;#{gq7Gr)4WB?{C!`cvsI&ztcZ@DBwQb_7sz zkfKZ$7^^f!?zrJO(Nq~f7H(`j&T15oj4?XSe~y*B13QvdwL$-$-!hjdz>g-Obw1m0 z-wHenjCl%(D{j9#_1t?SZ*F2x1HN!>OM$LgVGyMWJ>)Pq;Lc~TRb8#-JOqlD#W(kVmaJA zjV^$re&;OIdd%nxWNmt-!rktvCWTB`_Tngt@J@B#em&8RB{$#aE_Ayaf??flz1akvLQzNwD3Kc`fmO_$@ z%IQ@}2lCVNHFh34)i_t5dtG`_sA=+H+nO!rc($H#`3F~s9f^E-Yyy0dYDrhGrO9== z>!$tk;q@P)-LlL&iydu`f<~b4#=vltm9f^N*Ote%rBi|E->7%g04o(sBsNI`@#KBq z&Blq_$y3O1v#tw=*Ar76p~df_iLA}z@m;soN-Go!UEtm8g1I$xt~z&yrC<(?`#UXo z4#i@v>t9Lb(w@i}-6oCGbOJ$U=L^1E(c=oe$A^q{zH{d7{HFph7u3TU^p#EP{`B@! zefvGa4S|67Ql~)|ZxDok#c*o4Wv~~XwAJ4dq_seVrzf?I z%y%070dOG&W~f-KzWz+ku>lVQYCP_m+`o|OO>?vP!#h~6u<^S-J9)YYj9qUp5@O35 zR!r&j_IrQV$`O;%7n-wukS8fB@HT0Q5n|xaqOrKeI?urdJdK~d${+m7`vNGckztZn zKd?az@z+{DhQdB!C_CjkpD)X968(@bW@H@zo}d~U8#CM7JmPmo^6GNJ*SROP0ejX7 z2iEGj(3WqszG-XmBiu1hTE9$OJmFZs1G@#Gbfy9%pw?`MkdWxIpKYA@|9AoT5Cik_ zn*Ix=pA+Jhu_XOx4X?0o@%#msgf3UIerLpwr%~spT#Di~`a%%_irfwAxcS=iNv!Eu z%)|ku(U-SUI=+TnYzZTqS3a}o(+Y=nJj?jr>q)v?hhlfm@aWw@=m*pJ`tywCCnSk^ zZ?TE-VGJC4KIj8y^2rQ$p;juGu`-1(bRA^ul*>$(pQH zo~1+_i4hx+)0t5syX?{{$f0yTxl{Pdt+>%xe0#coaSaGk&%`SjaEwngaMfs%s}$NFfX zX4JD%E;sGYwt=s^f&qm0-$92Pi`S|11>0uGn>UOZHeuw?!YeALsI>AgWyD7rNV4rm zoeUhQedYYL?aa;0L(XP9)hO#*JTtr<=!nDA{Ln-JzS|JhMb_zWB=_vFetvihWbB-g zx($Gg`1TjsHl-^FX7yBft0166o6NOle&{^8krrk6kAJF?16q(AJl}W)*e+)yft~Hx zf!ExX!T4OJs0t9{U~cm^pF^uk+NL??!leqKT{Os4a?{VyPAg7>G`DCw)VJMv zYAX!xwvdZ@78{1vW-<4*q-Q$4Hh%y@DAN2bNkD9^S1ksW5cl6UbF##7o0*^8g3tNPLZ};aUuMskclh{O>$)#iIzh zHEkTZ==!M|Ae!N|P+g0ZQwp$XSv~Ps zF~=&Y`G#fu7cvytU+1Aqw%X9W5m=Q4FYKXarTm%N-CzYDrfUMLi#+}q5SK?wBuxB7 zZ9g<4S;*o7(PafAmgg0Pjr=5`lUuI5~(QJ0WL*ctUH(d#adt4tG)2!Z# zJE?o)@hJb`eKE(V)n-a$CWBzb0X81BGSFuk&-8D5*aOBW_@uPNwZA5He=FYk=>2v= zHe=6)Wv;-<0qXir z&)4n}O^y!FvNsd=DFB8Rlk~!S5!O~L-dTEow+Vi10>+(vw zOQDh1O)T-R<>p}bk?E8sx{9lZgB8!qv8oXU3tyRA4zJrs#8WRXhg1*{RQR9=iauE# zK{Gf@P6Q7|hmK8a)3I0YuL&4Ej(+^0(``w-wt#QmFTG_3oLg@QS2OcrlBvW8L2>-dJIiR)k;q!xDY!~ zJ$S@ShyXQc#O${r1KGwAnIwI`LiumOTH@1fYimT`pFc&UAD2%!lIXR%yDbIS-S-us z{UDdAn|030HoLvbUF*j^u{0F#q@cCac5A%i-rsjv1805tw=5S~@S643`I6X(|8{M) zn@kxeH&R8?{X1flcS|(GgikO)o!7cL#)zWpzwV}!a<$mP$)~q8iaf6Xr^4@Go-_XD z`h7D&BVu%XgD(L~U|5WJMLARJ(e>Xq{!G9-Tw1lMU>^f}J#Ums$WKmvY%u_^&PIL^ zBTn8aR*Ro)CR7mQ3hAH~C^R+dmF{0?(!uL=2UFt?isb{W1wdMTHKg}PnIly>kKeaN z_;|{QYNiaS{+cd$yoEo~;tcH$}v;Uj-@vK+Em=Q;!P__CgnbXa4)f>=$ zh#I6r#VZQj;~&~tPX&@7Pdw6MOXoXBVrT?go?uN*mIR8(qa=X^Hi06iU419fcK|J= zxo(9yaK^=a=8DBJ=#aOTB(-i4Jef|4D3PQIVQkVfgF6<6@9b-q0Bu${eFjpWpGH<<9-?=={ zlpd~l=ruCW{>m`Lkrjq3F*a13Sm@L~heh<2{%hlrESd((e&ta!^k-WFWt;O|e5swj zqwK@0zsV(6LJM=8;64TppR0FBtr4FshFFtr;+-M*C{dl6!1Gv__x0J>OeG#oTK~I{ z>@r1)AOBap@%YMO?pnEd)rwOfhc_}`l}(waWqwqMoNt?+9{VS8f$+>A=fvBtc5{j0 z_;JTO&W=bUm)QZ?j+m{Jo+Yp>EWcb}%TTDD+mk1*d{SIO3Bk|R7hSy2dmw0h! zi|KE$J6YIDr}yot@2ehL9>uS=J3n^(nOipi51QLS_QM=!qf2{N?eysvG-(QdVnJ9F zuplasTN#{{&aQ38L!GWR%Z;#h4q$X;?lTW_y}^BBpTPt^OKO5S5l&BCwC=It52OjoSe>!SqtmsJ2=^k*TS=>N#(7Lk1AEb0nGy_FC8rpdb| z+2!`J(Z)98fr^#LV*LMODcVu>E*AbI-`p2y@iU+}Kz!8r7Ln0w5x{O?&>yST#S8Dc zKjryg?8=4neM1z8^NK6P2v7&DmcUi71zPJx55JNSRLJdcIMv_UWn@rm$cy3_k2zdn z&y$JI_x+GsUG29abx$~KsA$+9)Ch7$^g@Q1Un&x3(gj?jfr}LsEa3!f7V}RNKFGYZ z$&5u%zat&fX5aBaO$U~5o*U^4b5#XY>4|n9B(U_OqZGVDRn=XX>lZ+#56LPm&yAh+ zmNQX-M!dEE@^w#F)HI_XAm$!iJfVEZYR$xKitK+u_^#lsXbGJdjuUPNlwu)rh4v05 z_9KC~p*_8&yF=q<>m<;Tj&e*OH)UpZfXf_)-nGYb|6?n%Q2-aVaK4PUUiJw&2tnQRh8mC@>24smcfEP3OIRv*3E{&*{VdC^zBOU^5Bf_J z1*leb$EAmIaG{w`xtpZHz#!I5bKAMh&>c?nY66~O|6!8?bFj}GTJqtO)C;88>&=$H z!c;l+VUR$uDqi&mNF=CkgH*%v51(DrirZCgtZdpD31im{=Ef5fy8rL4vflryb*Q$V z({jF}JqSpG5gc)@rqt7Jd=pklEnaZ;l0v=V<89R)S_qT^4S^b^BedUfJ;yd&keV$)G3~C&+6el2a3YBlP31I-RJf#d^VD~MIGHIEzd=15 zC=a0}zp-%>0j8U5uB^9tEeYG6dU`viy`vCMwV+%7JcSU!%dV1z`>Op;( zuu-N4;C6go5A5>m2g^|1@E7JkVkTzu4i2~nzwcka&(-F(EhZ=wKxIUoE0DA3(&KHi zhpcKnToEW1p2I9g-XA~gA_2$vi)8-%?y0NUh!+6ZVmNL)h1}|Di%o4bo5DIfY)PoN z0`6rNW~e&t)q?5&TY{(Fw{v##>7EqKcXfJKJ~qf(p{4j*H}scTN8SHZzd4NcZGyGv zm-(4+3I$@2hy;Hw>~vb{1kXv@?|l@uoAd}uMn9<9Sz919nt6&oSf@_SXeS}WgW@os zoSODL3dS0ID?33A#9IuifN#ED53L8?vW?82l6B|ojM?XF@$U2U6qC)nxTy*MW8LIU z*8VFeX3+IDHJ-{fU0A;vGvO1Wu)*D&03d ziX@7$xH2|EzZ1dsFxlL^`|ABaYn0HxgpFPTK@?4VviXFr$?m5M*_}I;ADgBNtx(KH z^`#{xH9txGS8DnElrBl8ER0t?xtAsN;ogZ-FY6f@po(q2zQKZoa%TTGhN@t3NK6_x z?j(W!wY`~uoR!%)M%(rRlNQn@8-w!7xg&8!nH?X>pYDd=*ITZKtUei0bV6CLmp4XI zG`dW{zvCMS^1k~srTvnHno`qy@XPNLPt<+wSARnC;d`F6Io5>WL`NL?_Es@G(JIXV z=R?V94O>{aXR*VI_hi}iSFJt4o-jq8BTFg0CG{U-(rwIBpHyD>boHp!=K7U1_y?*bIy1$;z7y44Q zotcO-KfbI=u&u)U=Vm|+DEpj98)`WhUZURdo!8pr#9*TInpHCWhEAtgP(sv*=AWAW z2ua4Dbj?Qyu@Ekgt*Uu$OGXH_5)%!#O}0t)bfXOl2`WJ%X2&<2v**oNtiU{0XXPmW z)YkvA*J!}3;cJs7lO}!pB5l$t8GFl8i<=&@2_@(EeLa~oxFA-`Zz!jD>+#hwe#@Po zw(R)KmE`bxs%;0OZPfBm+O~! z0Sh;W3bCcgyCmHWi?4*mNTGbFRU@H=pTqIXlL4Xn6_@uB>|hk(-ifPV>9po5GM-Ks zt_)Bi2(fi^YzI$;05Qqw6ken{+7_!9?Q)&jn0R5LL!} zO$OxGhM*CF;@P*KWB%e)UQq>^ga*;B{wKKc4f4&C?6KQ9Q z*HebnB#wg)ERCa-C*|gg=g%Xe4X1K1-V!#jhn{mARDRoYO$IW|Z=Lc$^w8dU5XZB< z$qP$fZ!b+Rsv)J%_+B7GR{z0bm0^KgL8d?%;4S(v(O46K8--6~pXaE!E24K+E7vdx z<@WnIyLRWO1s!Cf8$X=R{P5vl4)s@o6arQqAlMt7*3v%-`0^i`JHCpMCU>$-9@1;N z{(44FphN>%vS{$VSwraA_~J0aF?zq#L_;uR%OIM|4k$Z0i0}I2(tn6n_8HJi*u49# zpAkK%4fDWLqG}0)NuMJ3RguYNWlgoP<~aM3nZx*%jd+KC<&Az-aAdZCxReryHw8V7 zoJsSVZI?{8ub&HIjih6tu!FJAehM437y2t(QfDqy<1&eF1EBiq^ zl8a7^%LWtJC&J{*w4IRzV6``(gANUtrK7hBO~O`RNMeDM98>=MJxSM{HgRyb+q6ml zAz&fA*Ru8EGMQMz0sz`n&mXARJQB3uAPV|}l|a5*=RM9Rfgm49$T&!a<7558&hL}+gcFj)Jk|2U z%RWuvJY($J+W0v<*UOdF20HE7feiBW)H)MZ0Da$7;5u4WVZhzkD(o~Lq&1V~CILXr zdetT7eq<)4=Ifh%M?~rD@UVA=-=O0Wxbxu;%v%lEreiOog-gun<8&^6x7mHAW9Zp5 zU>{i}*dzIiOW>mN3b<7FgDzXD2O$XOd5Vw3$>mJD85GTs?0$`8x-5mN^`_6s8f(y- zy$mO0`nw2BQhiZ$)lQ;}Hea92OV9bq%iUCJEo3GhmM7{CM6>iJ_r^!eO zwJd%uMIn?K#Zw7+J`dlzza;^~?2$0svF4MRG3|J-*&oIkg~}U|!+ogvv~0da<D1j6JU;n%YvBbI%()B}bzJsFu%`F$amJ&xmXBUo6;<@F^Wgi5Y|mwX^D0g5Fb zewR4?D0vo9JoHz>`KfsS_JQzP29c%lSXaAU&uG@2L2BY zs-LYV4Z#SDLw5G;$$uF_U)_lMw((IzC4zWD}mv4QOB?K`edL`n9Qx!CL{~nbY(5kl|@}| zm3mf1m;TS4GNxT`9SM*Ia8@Q@N7N@b=Ar8^T!EbnLZx%Z!6ra0(%8QCP&|6`-CX3E zY(wzD-JSb*xh7G9$g@a#uj||6En|K;x=hd5ZF2c@>X;*U^VxgbhY3~TZSP_poeE6x zXxxEQy_I|CJ(A@j)e~t+p=PvnY9dE@o}>(?4P#rlz10t++~(DPGy8WQF0tTBbwig? zBY;YXB~El8gzn9f;;b0qEUzx zRdC5VqjmrA-R1d#f*y>G^5wMV|9?{E!rc6v9*Nv^0+*2BKybuh-=hPqCRcUh7F2%1vOHrL`D^pyR zw)EnUx1V23M`JxbJqXbuCKIOwYDsMMI$_f2=$24ax|Y-o#`;OJN&gWu@uKNiQT~@Z!N7QTHH8{VT<`CYX z>m6$|xVrs{Ur8#Nfxe8zV-e)M9c&*p(@@)E@ST?EU;w9G{qK(l!p3KS1(vN7skK^@ z?UiB48xVl?g(^@gciUQoq{yhAUqj*o=!l|6Lf3Q;Waxk%$z{2F0Oc-@i7kdXQp*Yk zjHO6O8Qzf7;;IFGWeY-8eP#IVO^@PZa1wx()j$8?En&i3z$qT;EW;H|HPuFy78?~ zzX&H3kwym@agxOeWVV(o2{|xIy%$w4B*F3}i>i5GhxO_Ps8Wakp|5iG>-fm$;%-S+ zf5f&L)M8Pwq$RmJ(T(9@+9bw2m3`Z94Qh^g@qiw(;tH@jU(hE716uT|!jJ}VG{xse z9N?J3`%P(%X7)bDCpt$hy;oQ264FiVqj-AMycjp)bN#ThWQ>u`A9TKI9|q{yOB}xt z-t{ul!F9!a%hTS75U6Kpt;T-pF`9xCTdfuwgO(OJyiN0C0=9J566~@_Mg8ZudP3w_ zN_637yPc;ykdMWPz54G5aMM58^0&8rt*NT(JU9c?3MF#*!I&i1as_nS?yw)nA}Ka*Le$sF>e_Ph-Vz$`G`=}rbc`VIjE>FJ8H!`))vVo{xb-0xf{Vjl$d}4* z1$>+mGk4f%=tg1=Wno-;3{hEpBR@zFj|Clq{3T|VT<_Q@$1?^`7<5LI3sqxg3j`|S zw!dw(A`q;Qqv0MK$i!}7|F@}^m=$-s#dhV^e8Da6V)8g(ckJ7!sE2x-bDOIMPx@^B z43bQJ#K8YKb7->jz}|j$Q9zRp-TXOGvzML!DAT21SFr#xoGDh=Y)p=Mm}M()Ag73r zZ40`kWF^hSaZCb)xbJd=$>@%@JpHK>%vo(Q_IM&RMEyJFpH3wm#Q3(0sDYv}?#ChLuy~0z&aD zg!r33i6WlxB%DMZ^1DyvSU|}iQV8_y0b2Asn+#!48)c05S5nG_iLVpj_@(o%&;T|| zIiRB4=Yky~e0eL0NsiM(apylS@^@zizghn zM*{_m>%Qyn&04p}itjYH)=OK8judcdv)hRp?RWs1op!T7Uh)gWK$5gw3L3VP`wZCc zV`45UGFoth8?alX!vW`6+)ui8LQc!T52?a|E4yE|>+{0To_8A9ZAdBNYyKc()nI1q zcdwR`A>;ZpTrIN`0#(QC%g6a?$EObfc&OHfF0T$c3{7>{gX(&{yCi zM84UQH+tm9Sc*ZKV*RJxuk@omwxfgEDPjOYSPZMB2JY#}oeVvG3!2e!P2(t#>LsH(V|GR>A$X)^&w?M>DG>;sPVqYK|k zmuG57pXyO#S7J(nPlLnRl0gIBGe;oht>X6w7?zeYbz^GArj`EOhVrEj6JoTMh{h)5 zT>HVw&VZbSZ~-n@M;}6cuN8$IUZ*hNx0Vpkw?X7ex0vn?z0EVb`z1 z(ote?-qv|lZ8qm{#2J#W-vO7Hh4pnGN|AStk}Cz3s9NH1TyVI7p1(RFbPEP5Zkhlz zio)&=-H}LTHcyqrhKz9An91%dC@0tl{8aIz2HHP*R35)`OUL~A1l+uLA=01A)apn*0tl0_n7= zLqVESckUxwrz$zKB_Hz+;d~fHuY7=Bg?+ zJ!!}we7GOIEcjx(BCJYK^c5^%!C@&3`niga+w={k8yIU;ZX)lu+H3LRS!9^-j+V8* zRv?knDqg%gM4tt*1vHZ}7Au?&J|(h6gjdC-1mOAiDvO>6{{0FGgv~ua zw%@SW(0&7P#zR-_;zm*q-XdBG$q5=>c(Rj4g)sbSMT!&-H(FJ52nuzu8|4~XW#C8c( zW~0aP9<)vr3Fy$&D6+q|svS4hM7X^#VC(iOP!W24nW_dO&!42i#_@ADuY3^Y!Nmtx zkm-l-07iOkl!g}XKr3_|_b$RF$l#k3y#)O`_Wbr?vEngV;2x5{u-lB{0xEbbAHb4a^$@-4iM)mF5AaUh0|VPK|u(cU7;VPK|H(Qz0zCVXW{{_4ubtRr2Wv{=28 zi7lrteT;nUvhhbKzNKLF2Qgt4eEu--3Q^+4L}Dn`;nQp(EykMP$n}MHVJFBh%$A7GJx$jD|qWw$T7kh!bgH`9lalUl4F(=lm z&DvBYkUy8N7pFTWrI1fQSB5elA|*HZWR4-J*)s%Px-cxA$EEbDeK5&89Jna0e9zbH zE4KHRbd7ns5A7`&CWu*X-^e^&Y|Me&+sEGOLBPBRwAlx`6fPU+Y5 ztwXFu6+1-p;@Z$P8Dn!6&8VLG4o!Z3rw80(VkWEXO~Eb4>c8IZ*L>PH8WW7JSWMQX zqyBSl6AlzA0DO?a;h5?pUGd8K3$~>=ggWE%8NDhHO8ozzs)8CC0Rahu zRR24c?8-YPpc6$o!#&}u{yt;*4qhTjc94-RZ4uf3TMQ3Av_xD@!1Z^jx0^1qFz^V{ zA=a1Z^R60)X~iTte97o!^ZBDN5jm+><$~T=$!pRpLLwH+EqG`a_v-0uLkPW~tztEx ztdCA$f3KGOQ&H=`g$4TQ92{zgczmPILWU5dcbcnh#w^(LZcxYtpRv`8v8qOX;GH$= zx;-C#P9D+fu%te*JBkojY2oxnb|m(M-uY2H6N+mTudA&P>YTqh)Y+SPE;In3;>9X! zbgkDRiBDFIU%?(d?WbVHHvA-#i)b*(%j!lw#svUl#gtR=p$D+S+uBprBkx{=$k9+U z{Ztt&!`}%z$CcLu#M>yO`629maz3n1ESL!^ojE&h8-HV==(RQAJp7M| zi(m;vOcWTp9Yp=P{C&$xF9)oMqlXHx-i_PVFBm>>vEMKNt_Tab{^Rln`7fP9rB#W4(p|*r)@>r>H89fJv(!e05+{)d(eW-u?*dRPaJoT+5#k zEhE#DtLRckTRezd+yTc0AsgKJ@4C;ka4#iK+-aZ{OSv@RB`eTaxYf)j4xR|xyelf$ z#CIsfJ)@^i_Rs~Ic?M2g>TFMFvOM+*r3X9hZh|GrmD7;Cw#!b!rcr8k1{WmpFW3P5 z)h@6_Zuay*Y5-;Ozaik!;6cva1C9X@fGDAN3>OM_Xn{q)R5q{k-dD(c*QHHEc8iD! zqDQcv#BWhnSs{M^^ZQ$e!Xn+3yx$tGQ)Z(;6vAt3L2avnX`?1;Yk8+*&j3h$Nl(uJ z0q2qpTpWFS21QJf*+opiedAC;n3ydHGg=u6u2r+LM{VXfuYN)BLItCt_W_D2b7Dl9paq z0E+3LOjoVtg=CT(wq&$@*GJTu0vf>e&T@NVblz5F$eBL;-fF!2WByC|-ZJ(d9-lhA zV*9oj0<7wH#|<4?zNp>@^B-OfzEt`;%#a^HhW?rrAij-4V|7k%FkOhM!1#nYSur@4 z7`6fwyn$b63aI-~u|3c>Ixf-uf*ueH<2I6649&Gp z(k({5oxQtf$G?Jka_j~?eOuP{cGZLn-IA}g^nl@MVy~iR>w~}ycUzDedG(Dd>~G~hgkFN z{BfV`KIDTO1yRu!%F1jH(e$I!<)G=~N!eXRLejvK?Kl&cI~(PV_pm}#ME_3mOH*N+ zt4-A`_Ba|VTImNM1gtExfS_=6)G&}@*{RHv_h-SgF9Af3ZOE&rS~onwvT{< zhSav^KIfv->n?w2=Z3~Re|M>#26$(8Hc~M#F*4S zpoQJM4;2S$E`W4W*B1h$Ra;L4hPF@Up~J3JDIKuIb0G_$mLopINW#<$VI!q{MmY)^ zHXeXW1F^gmc$X+&f+R6__TUSRNa-B#%zmuZ6<}S&z$K6@q-uZz=q_T#D>AeMZGK6w z1pqOZ#f#FA@=+%OZDOnPyjqX*_GTk|F3<-|UO@LADqxtk@ug)xv2EG=V*}WV9c|%= zBee}~+yk{Gn(Vu(&wGQlxGktM2fUG+r@k6@Zc|FD3fwz8J=fIme4u!Ub!bZ}s)vZkPx7F41oJ&$6Y*7*&zdnWNkD zSBAMW#80PeFfx|I2X{sBFoeDd^J;(ajsgxo?3@gS^Sie~B}%~0Zc+B9sCIY@0)Pgv z#K58tT6CQ?)UeeY)Z*H6TQ?Jsa{K#L@?qObVWMX^g9dkc)QkppT()Yp z&YLpr&xB-9n(36GG&9OR(Y8!SC~wn8_xUUL<#$^##WU z$29x{&g<>&j?<1K0*`B-DiGvq9n^l*v0lF5T;-`>^hAY~r4Z^kA7WzA-4jmV{zSLqvq8yPYerh6%+l5L ziM7uzgOMXeEQ>pFXucWY4Zr@%kCV^wZ;L63ekfNMUl3H)Twi-?Jx6CVA3X#Qr`bOv zv;~FHgYJ*3d`bE+#?=(MLdj41I6XhYZrz2tV*dP&xVsnGV`fua)EZXsH(`e-XmII= zZiRUMw4z1}3QWV_e(+%ro*!}-T!Zx3c#qAh*Z)J)RRDF_d|edjl9KKc>28paZjkQo z?(Xi825FFz?r!NW0qO3R`quY9-)|m9#}P;N?!EWibI$H_lr<=zCSkC$f`Z24#(U8` z6VsGd;lZ%7_Qb-4V3V&z(9d9-+LPIg<*-L|%JbrgARu8Xj6+9}VNSm!Z8`jb8}C=# z@OBV|33@VL$Z?v$U;-O-J4J41=qK0!J0YN2&PuXbv>y~?k^Q;aJaV~(MyKdRscNNa zT0}RxZpnIoe#f44!D$8Iw%YytM9AS2oAJ3Tw3F)nfmP|7eZG+OmD;iHE8?4Z7Jl4M z-fFfg1zNfA&}5zg$?)~;i&>hc`=wOoB86<BrPUX_q+^)-5mweWTofskc+RFxM z>;RST`+}WYePHE&LdbnIg6)0+IbAASUhepQ1ObAtTH?FA;@3! z9TLZyjiZ>vi=E77apPWVx&6PbDv~zcVy_9nz!cZ*TiRzed zTBSmzTu(40UniUv&y?^2{22-<-vu+LW);bsdlpZ;ZJ#m0v><@5hi=vi7b+7gozGLY zR5<9Bw-5^8u!jASeNfkPkx28kB$-ce*e5j@ACZ*%+>@^xQBn@;jV*^xBl_@O|5gnd z)RS8)w>d!{aVluD!-CrI8F;h zN>))8i*`6`xlrqRenc5Ha$IlDbots6Dr(qg5o_2pB;uB3yppAB>aQ96I~jvjU$6*e z6uWs75O$|kIugU`P{q7|A1`s_O=m2E9Bi_diF%$Bh&^&Yy>h!hEbWwU+jOLSKIVvO zKK^USA3_XU90H3A-$Pw66C9Vumzov4lIq&sKj@4YTML;c9mCF=5OVm;>Gk~x*@R}O z0OH%Me!1o&l5pq_nhk#kuF{*F(5y27(Pgd_eOVlrz7zJ&zc9QmG+RD*xT;$2s3asF zI-ZuO7WKPL<1|m4RkeY;keY!r(RVfl6>aZ32cyBiKUA)O*!<@Mt$IFFF|t^t^39!H zaBb%L*1*ZuI#Y|4ek7kW_EG%q;I-#vBk4=P&-O$LkQvwg`$h!nvh3>+|{?8A?w zq($>~qiqRW+^P%*xgLwaG?>8mC|YB>9+uynei)r2e>>Kis_IYP8idtaNAdRvXQflL9R|;Bw^)gh1fyk+M0X0M*Xs~jm=J8nO{TIgP!IA#F=kN z%|5~wFNXb&KYoH6ljj{rCjX3XF`!-xlcez-59|Pj_r%usYC3K&OF7CDcI&1Ln>FlA zPYFCRO)^V|cO_b_sS>Vj-4%_mG4tO{zWG##Fe=^K=csZfEu4IJKNC&AEzdWf;4c5_ z8CL)SYL19WEah|NNZ2T$jG2{(FUnU=VJI)c76LxOH^p@KRqX_g?F6yC5i9yg(9bRS zZukw^f4&pQr9A)iXZ~J{SINZ5r)UYvTZB;Ypq_+K=^VHoBXDGP`Hz#Nww#z&G_r9R zYN2AZqNzyf6mTtwT!o)qc>eD0idhM-8X+v-TToh`SXjlRHQqSvJ3^lCM}qd}zF4&8 z)I8dESqwlD$0ul4vg(wpl+Qzk19XFMK1VKlYJj@wU%mOX0W(oNT>k+hLCdK9_Sep( zq@FHE#*Yt5ZxabsP0!XtZ9I8a2`ZY(k(zi`_G{Rubei#8#SpYlqTACt-j|PjK*Nb$ z!xs}5q5V4~B1CF1m1f8!N?{l#iN@v%wegNogo4TFg$^;z7a_WJ;pZkpih*tA_SLH^ zp+1~Cd2E*4ub@cAfr6Jm_OyZUsn0_WDzDET9rs&Sl&gPvr-XgILX^aW35cFLGv0)k zWxEHS-{+&S!v{zNAnR02#-H$!iIn4Q~CMT3wpY;B#t%et#GzKMRenVffA>A18U-kLeT6 z*F(Eml3c#}X(5FW?8*IryFiY7*z+tS7|4qB$(-zF%=5>9)hGf2Cm!o=`hm*vwH&_j znCy(`n3m`6!Gv}KS5rL2uGdw6Bj!42mh_*ntk5jWKgFH&Kg^13_>MR@f&s zQ26mhrfep;Wv|&bO!i^Q+B=(G%lf8i8PBeMZp*5oe{TM>swdQtJP%8*Uq%if zj!dG3-(w}JbZDWBzA%oHEL9wNEW{pA4x zEs)U=Kim%9mkza6#x#gA9`Kf0JU?4edsryLcE5Qx8hd&`omkMY_xp0U7BP=KKoQFu zNYdj_Lof3_2wnWYc04kM7reSA@x`6`07reWt#c5w{A&S|DDfTFB#xoNJ@380iK$=F z05k?XR6fE0(Zan8gFAe%#^9eTU+2Y}H=VK06RT1D%-N8NZ>u{0!oK<(Sck+82~=Le z{jsq9-eCvj%%d`?c1_n|gB7xmVclp&@Q4S)rBe z@RV3_4V#AUxuk|LCF=%Y!4tzqzIE4hP{TGex8^rEC(+m&vhu;p%OjILldirFf6--e zaOaLFkz`}aOlHda6)AS$ecB|?jus~$^&Gd5;fyb%(%O;BAG04lYii;7&1jy66t}yd z(jz+hmsHjtn?TONMov)D@+bZbD*w}IpGHOQMh|QH<2FJY+i*rcG)Nyu+0R)14Ovw) zcqf@AwQgMX*C3BgSr*AqtD{;WqGJm4rV6icJWS_Q zEPsmlYWUo<^*|-G+IYsp;Y!SqmC%ztwzlvaq;7k6$q^yljecj#8{3qckObP+b@M9afrGTkY3ci`iI@ zQ(XV1u>wa`lkYU<1Blx1EbAs74LjF5`~&bJ0AowB22OPK$ zZ)X%-{TilElB#?dIB6g!gGBWrCP-<`8F#nwdz3=;C5Jx5A_)5RvJ1u!W46EPQ&Dy9t1`_+x<1>rjzl;#u&tE~K0gQ-^$e6ZQt3|1w)dLcBW;;+K96r+-C zMogyl8$1%-y+TD}OZ{r8QvGLhB-YZZ^}}=Ydq>0rCFD+DsbLcrh6k#HE8mG|*Wdlu zIJFPYS-!lLj#<`k`B6YoSFGJ}v}pA42eB}8Vzzgm8E)Ow$#bOqE*}ofYzi4W^8xWm z9nW4p z-XlhT&Yi#AnuF`9P8`PEmsS8zP%$Fkrpucg4s1@_vf`sZoeh5+ho-b-94|aFE1cUW z2taS2Hxjg!IE4F1`R-^}9gR_h{CjK|y7rEoAz)!~%XakYOry(ZN3wgN`o8eC zWampC)#U;g|Rv|0NIV#8DE%}0-yur4R%NCx3gkM|}A3r8x zcR-GJFEw^WT~~6ag(B*8j3x9LdTr08=4HJRHJQcV^Yw;ZVTy_O>TDr?*l5t1z!Wm4 zIPxz6P3h7lj&m^0IX6$3IG*6`F`hU+U+B;K(HFuzyMP<$SI__&<~OY>5ay3+*l*v# zW&Cw&I$=SorNYK$_V~c9#LDf6*z)ruXa-*fH3T8HB{4}*?ZwI)J>^p>sPBItl_u_4 zRrD@t2!s8~xpH)HYIU@#Qpl1Q8zp8d@ozBeP6#65#xZn?Fzc|#1xOFgAcn$Z(e*5} zz%OS!#GyR7wOZx0sNI6Yd8MOZWi3XUk_yzYuqZFuG_vp^diIRvZWKG_v|yb#hPn1b7hc%_lqE_=wjOtxjzHx7{V_$fe z(|Ljfpq(A7>a>R*Ua}>BpY<8sr(Z@v*G^}1VpN7v@X+Wt3KH1)318aVW}>7kVduF! zMH>+Q-wO~mL2ld=+&+?3;jBgzX-2myd-PJFY<-UnM$Y8%`*vaj{%=uUvmxg`ZEpoR z?U#SKk|qu_72ybhM!P=dLf9E|5+UMpRzOZp*`b2+wNC2R;wWq*xt5Go^7Ikj=- zFr}pw?Tt* zOOLe`_3^M0{_p}Hlj@vYlvH&mN~R2_EMhCJj4YRsLAZyLTGzOb8xQ9)_zMkI4e*z+ zejYz?xcd$}Oi@30f}ORyd81seDRlE~;=K7-1nCp;>oN@3`I=7L{7CP-bhN_jc0UN<1g=*RluU=_at!9hN)xlv2d3sG0$_+@LVIH*6plzCh@F~bq5V@`v}fZ8 zp2(_W<6jrn3eGP@6LVyv^W^wrRYvva>TNe|zn+Q#bI86j=-05(61~_t_Tse=`hTXy zpkH06qSB$>;dMCAew(cEMX)YhDgAwp`Xw?4)`W}_nG_UwCSl6=Y)ugLYqJyiSV3De zI@OVr_fa{#iGrpvB%Zg?MiU*Vrc!i(ddNG@aQ&$LKxE`Vv7?P^VvJ-wobwucJj{}M z(ds#g8`FN;LJa#X_TO@U`dyu@yJ|-fjf511!{fibt<241-FAOg?EX}R;xIu(w42iT zu!?$j$BhDwM1kM%VN`?eUFLWBsm((Z)j5~SmR+nt-pZ^q-T(?uM8Gp4gQ8hxx+UeR zhwno8dREGDe+B7VsCV3F$Um4?(q0pGX)EyEqj%70DIH9`ri;OyWbVJAKzV=kbnCeT zi=SzI!>MT*@TPm7JCkmXGyR8s!`!BY?eR%Zsk~)i{e(w=Z#>RJyV5E$H1wAR6+uqN zXT2+=P83y5Z^pPq#nqX)#)!W?$;Ypom|oeHf0(ZIgZkecodgdQ8b(Qwv9c3@`Ysv0 zkIN0Nto(KM@@lGu^0~1+3xFPTS{<>OZ0CR93DJ}27&e~v`8w`G4I1-1GHUnxjcdCm z%8vrcYYAQ7xi}PBpJ{}6wM!C3QEQ!XjPW`tSU-hCR2;cKhe)M4-UX8HM04fteR#LA zjVdTC$oWMQCCTogzjm1DYuDh23Od1+w*2tX#rfuy+{NUx?`QfH$E_-4-K3@!%*+T{ z)sl1dijp2O1*gaJzg}*$`m+mPnQVHh3ttwnDhuoTr`FLG%p!jTxB2eTgZ3kA_w8C!!{fT&8E4sG+ zgP0WE_&hE?9UEsx8EC#F5^snXmHYH0L~JFFlqYPa zsUzR8DjS?qlNA%@x&;8{Xyl{rv(8V!$aR>13w`?zBf8ogduy7h-#D+4oHUU}_5u@5 zOxTbWUEq>;Q!E?CZ&1I`98Aa&3p4U{>Fqh~exR(AI&%VG5Jq56k7`cV_gc)zD1kQr zixlnh^(=_U<5Ba@uy1ErW zP3GSZiUn4DbgBP#c=M~AYeM?BZoF6ZD9KgVYqT_v@gXq0nW;p~Y(K^G`fGGcD1dr#eC(^e?(Im?$xu z&4?MlmmqDB$7IWF?k_<&xi(DIxk4hfswmx#@f>ShyRzn@_9148c%8Buh)JXBio-#M zM?if(|$CJd!djP`HaLuqJcJecgHv_1WO41I^#dA88_le-`c?|2m6VX|xsDNcP~JsuYTv!V}%pW-d~+=Px}! zk^f;_#d?PaAp3u~Re!KmN8y_Fso{#%*&*6RMw z`W>r2Z?zHKtH%LBO$`juO|_gUVDo9v&@Wm`ybon0`b@^_v z60YEf(s>EewgpHGK~mm_t9}IgTdPuUVJY7%$c!|e*SviG(}Q0s zwXu*iYk3AIp@7R5$7f44ziSg4os=NO`-9!gqZz1lhD#Hm9vHo|i1!J=yBimX6q=+U zk-i%zd>JZw*H0lO7*SKh`}qkXOzuFV@_3p-ZWDBzirk%wRR#t?JF+!MIHVS?#0tZ{7GZEjq=xOgo0J%Xys z%`L!`218xXB^4p5M8JtuIU*rXOi;IQJdH?}yddY?e=LFj;-VYGkFrn0gsj^zjTJv= z_kNq#BDano)sQ6)+c`JGLA^~N+Llaj@e)ty8=8U=Vv5&JQ?FgF6c)|81F-MQk-Oth@9jSZJb*5PpJu- z8baL$HikGH%OtzC9)CWEtOC_j*a@CVm`Xpa8QM@8?H^<#-4rni23B?ZIGV5BEuj}_ z-rr!J_(41uf7}_AEs2Spbo^o6+r=fP_5&OQEeV3s^!pyP8dy18X|+u~r=k*{mW0|w zYIoS8Z4$)JZRBH_ud`MUQUA90OKeW=UXyYHifE$;e5(i;{LvC)h2GQ#KUaUZsVdA8Qy z(eBywnmdTnx^{H@`E5%}3vBW*M7SUM)P`zee430%&`!yKQnSslek~%T4-wvrHw|){ zf8iHruiG0@R@@T>ot=Z;tvZF4Ljq*42i);_?oH9mky(MKl*J9DKD@Xy`;`?tR^`bh zwV3v5D#M>tp67Z4--Qahv9kh5D3eoj(T6kb=>X>zHC4J#w%K>41d0PjJWW!2ci*=C zm1oLhi?-A3=^&taDqI8_(%WZG?r{Or{QejbKbtf4XMrHtyxmEefzu0OumLNyih8|6l-bUjiT0oKcBWs0vwa$Mc$MbDF zb!HOkL&0t|IXB=xpnbN7yqHutwGe!I04g_*fTJuas5ZO`~!O<)~=W5kavvs z(-`1Bf1e@t`CE1$&#Q?cfDikIl~6o0ZA@VlyJA~M!i|(kQ10WUd^B2&qHs7iN(M-w zo{n`c<)$gM9mKzFWXI-!@fZa(!kzd*T}nQ(qeTW6h+2*$rOO@5q>8_wYG!Ucx?)Ryu&47yy9cKFQW_sta506g9TNG#GI( zXI6nH4Vtl#a{DJ6dMnS$&-vrRd=sLEbnm+4)9+SuJohcy-PGgN=BWuGdZ%fm){^6> z>fu!J^t|ciI1BM?Tim?JH1#W;MFuCN9SG8S$> zZ5v|J`Mh;C;{%4g+8zRxVLBd`Gq*alHpwZ;nQ>( zVdCQC?rv*v1f9g0=KqzQ_?&e&mR1*=y~B|`$DKKWy*#N(ViKmb7-T$4m8w7M6a4-f z`MVXbK2gW8w$Sa`F65n9wv90EZk%pe#DZTOsSsjovi19yQK~tG#fh0>26NTDP`(?9rO>iBgRL6XCUIA4#KY@*YzZRrXGE9Kh{_+Je+ zyIn;$$A1qI5O-n0b8Kzh#9c1#56%Z<4i#W1UW%fou!ZfKT4xC7|+{Y%GuTBNfaZR{4nShG- z)<*z7El8`hYyAYgG=z&c3g>YvEkvfNl;< zst`^^W{*kG*ZfMEttTgoKW-;=>R~jU znQnMgtIw{mfc6i36w={=|9HgGURb$t!9up{t>jED#BU-F^i9c`2sZsHnnGhma{uV~ ze}WWXyUY_mB>0>rn?>!u5dN^kHDg$p5IK~y3LupLt`nQl(%#`rpObK$MbzQ25uENx zxUHqeTTS>BhJ33P%8)Fc!1E?I4a*-t+2_&Ep<8KrDpa)CX%fg$v*N!r_QsG)WcsdT zeN6IR--~Izm((cx1TJj88hw5yLRM#h6^e5+f$gCtPaJMK{&n>4tE8+Vw>mcl=Ij+R zJbakfb_=lFKM(h)GrILHUL0j<4tI{3CbXx1<$? zJZ^?%(J3F=LuIiXv=%ttgL!DN@!0*>f)~W+zuQt=doc?rX%XHnm!7}Dume(Ka83RL zA{u+r%#>Qp0?u(!#cYsXlnjE;K3=CESm^9Wb5j|YLU1bAZqqEvBrjB!)MLM3%@}C) zF)fg4Ww&}2p9WOwL(?mC|JbVmU=5@X#$x2&Om2L~L%SZO5TJdY43=>|r=is_Q5dlt z=dI6Z)r8l4J(IuQKtKL_P6TEt;lHyq;W)fH(z+jzU7!ghOi8^_EqgjNK5*;;1L{pn>B-2(5c)rgEH|f*iX1H` zZYU^R>HazqCDwu{mS!=TU4(A%%pQ^%7vD!TI_kk+Nb;V$ z*MVP>9IESH49)KOF-IPMGwK~UJo(+f9m?bYPS&)qr&T<|;lcdz%@_E4P|pl1KAo0w z)MIHn+uLGEr)l{E)eP)&(ps@Zk8$Im{v!P-87gv809F{lA)(BTZAs@d<()IfhS_Pr zPTl?@U8afnsPnfo&MD8KMcJG*R6aoj(*vx42D}7Uc zAQ34w91^JTI>CjMkWUwD$pU``xNKdFt zXbE8oHG0FY#;Mp`F{B7RU9gTdz~W>_loH~ zB4t=E5v8SWa^?oBIiHnmz`10rBuJR$Iyc%7hL0gP3X(GUO)b1sknlCoP17t|~`-wIj%2BSYv;inmR&)JoWr0u!6?2{kC3M|q zC!&<9phI*gv8K*SATUuN4`8Rrnn{0hC~WBr{qJT=?|nKr@Q}x(&9sgJ#jrl_Bepp0 z%5cYoZr%uPd8uWXAMMjJL3p9f9EjXZKcI~PuG{;von);k2s4N7-18 zB=8qpjvOKc+`r9FpNOCk4mP{KhBl!p!8|4517#olVI9Gupyh#!RdOppq!5#7d9YIW z(tzs&>ND4dL?B$`gbaTQk;f*wqs?=%)u8d+~J+uW9-4 z&7{}>dNy-ZSlvcYG4ekeYnf5X7wNSQ=yoRCYtHs=+!lU0hnKKP^66Jsy({(5kr&Rg3C2#TET>Q0cgRJLCIe8Kn^F z62Y)ujcKH3Y4s-`6qrM#PD*;q$>Fv>^qvEUnOTd%{FyJN#ptcI2*o4Oy-UHpOJ71) z!^tHUxih_QkDNH+-W9ApdSrc=yYm?Y$E>17gJsLQOBQlbrqDk87&LaIr<9sQ}~ zyY>nlp2aX2yuX36PQEQ`x(k`}K8+3JhKm{y#VqFt!DO9Z@5ED4xMI)xH9%U_Od2;n zjZ9)FLsV^AuLm6_auohwXv=e1zM$rCWZkzNw2%D0WiQ`pH7i>TuCECL(dxf=Sr1sr zF!W$SC7Tx211_)WmWJ$8U|7*I1YPrXDD^1 z!O0E}(`yiQf2)88Zt}P|(AH%Cl*HsnQyNasE!1vL!BA_xP?PP^@7L;}=b0W(*cdDc z5bbsC-e73i!2uK$S&-Y@XY@|s?*5ry;}eb9VrQ)1gqWu`9TD#}V8>Xn+0KOWW|%$D z(U7f{A>M>Tyy0E7;rG3T6P;)c+n6!Em6{G%C;Fb-oOQTt^5ZDI^oMm`LvHeX1F}X% z7AsrhjKxXc$!+FkwResdJsBx)l(^%^_+9xtx(yNa9*KxpQZAB+g8M%*M5GDi(4YQI zE-6qxf0K zJfhp|X`{uvKZjRJvHLgw*k|?*CoGjv1kX|I%I4F7M2Bdqh^mz@OTQYab#8ekOS217;Zx%e-bI7GO;UWxu2j8cpHiiiZ?Q>PF2DHwcX#|t=sdRI zahPK`fxXQcb8J~+%wc<->bt=3xr}c$o)?MYia<6IQ4>I>1%a&Ij30rO!;zeiIucK_LzNsmSb>n^luQV!w?L8DqUWq!1&SE{ z{a+b?fFUI7Pv4=O-s6zbMs@r#V5j#;+13Z0z4%()Rzkw?Iv{eX?%vzvdDpcMWnBLz zgMno`)6u;2N1n?WVcRLaQ?7nrfhk&A>gY@Kkr^#dSMlo;UarEFQPd}5ZnnUNRTd)7qns(E4Zi^7Hw*k6g7k;)af2aES6L?gpFm$oRKQrykCe`bwMt2 zPX{d-^@(+K9=P^p~t7^AjpzUU*R@0Kl)xcCMuP20yBtXj!ePCA5mWCRx^V>EGb9K zLl&PDWQGx;G-D^m$@|}EYjw1X#CtoGvjk={*<#3Mtr*49zO9E-O=1c7q5!I5AFS;w z7cPkN`?veb@UZvx9*~F=H22+CbEo$a04>1#JjAXU13kKA{e?nmLRC#5&>UUdgQ`Pohx6o=lq66nOLPf+PAo93QG*&hM;67 z6TmJf_}*yFy#{{UJff6T4k~Wybe2`dPPQ;M>Bf@gPrZ9Mg^i^TcD?JzrKgn7G`u zvQlSas^BE2HmQK6G2Z^P>xhxpZIes+^!NB-qb`q8xVVn1>T ztCxFW=_#h|Y>v>R-|;~j0XrxiZl@C44p9DnMBB`;?-mGnHtzXK=^g?!k&R#pwuvljW4)zQDwDSudGl$KlP<+X&* z-^yyN@GL1PFPr*CYkV=$;O&Jej_05aeA36+MwAq!OP|VQ-sAullEt{(Ug}ldfDz1c zJXF|sf8QaZB#dD84f@{gp6C_jGQ9sxzwjRR-rNN`mC^PWN_G|K-k=iua~Z4I`O0Bg zzTWs++3xSE`g-^`-3OsN8B@h9EOoB|AhUgy5=Whcn0|v$WBP($PtvA4xMNk3U+P96 z<2ets48HMi8WBt6f7pDqHD|>gf`6Wqg87{T;b^IW*uG-(?~ zCPy4nM%<~^Hr9pkQG7k7tH}M)khc2xX{o&`;gzqIj_v=w0QBl`?;yju0u`~jXcOTK z9k2zsL&dL9Cfd+ra{dz=KA`38<%;EOr*t-L!Zb$4#0VDtJq_-fL1#^Zf=CMrifWN1 z!iwg0DAM1`uCGh7+HHFjIMr_08H2H3)VMIs8hk=Pp?mi`r_BZiro$_XFNYU~87FY} zw+QH&3Zd5%k$z?EB-q5XI&w-E-1uX2AC+-I>6ggx!T}5|T3WmS;I^2LT-Ymv@e!O9W1%zGacBSn+% z1!&?hzkWD$E!Vpfle_3|ul;EhOX4|?L>`?+)&yDwOYrQs!>Dg0z9TS*{xRMTV!+XM%5_K&UH84B)7rX$}qyx@LttN0a+4^gL zQiWR}TQq#O$Hh9;zJ(8W&dTr$gRbEO)db0dw^6n$pYYy#fFzNN#o*LQ9xz28BB&~M z9^v83Bm)KnL_$2PF0O=R>!(qSQ10P6tM9*p{oW^25#3>Eb{FW8*2X+$G&BVue*usP z1uil$o|p-JKs|65xqXM;i&hg)GyW7S1*p#doyYlZyiO_kt+S`4*tdVYL2p6c4Krr1-M)SEO5uKcA6~G%mp?^-OU#QOEGe;@dSMiU zBj;!gl_PM)`Q|m3?JcA~gqV_%xX@d;h>jODOKm!(%2rfmi+Ss{v6?E5tA}4>tgQ8S zOQv=vqTdpn>#)Aqa$cT2WO+cm>5BC4yOilHZm_lt7!6+OU32R zRq_LGM0h=Wb~)hiIKDb+Yr=ZQ3P=1l}40sr%fh(po*%Hi3&3f1Ir zy|jaoF(4T5x3gzjU!KRm{_`$(o%Lt(CT-hez0Y9r4=Y#LjQ;Pw;7k%A_SiSigpFj) zw~j6;N&$DxvS&c}*CT*6~2={uI z?sd&|%tR=a@OBpCYup~AU94*lNv>;H@DH{4{4)ncceW&_Wc%XgRGmd8X;G4KQPfW`>!uJ$yp0wLDKDN6q1YK($Nu1Z zNgEF~9ZJ@_&r?*d12bANEauEgMPt0(s*YBmeo^Ffj;>AUh$Os4Om~I^HOxt}h=gdA zvV8TH0toLLRu%tj5Q!}QQv#0&z%4VC*5Bv_N>_kg!=xq}c*F^LP#}P;mEVzcd#T-B zIcChW__|{WR61pDvZ8`+pdT9!6AEAdsW$5!Z#xJCVu`5s-Fq&qr*Hqz$xGFm-YZsB zoXaWZ_Gqhn7i%H9j}~yZ&|9Jdt743KCvYeXV^t+^ZMFE&U^@LcelVfvKL75dykdC+ z?Ud`Ch|f#NK!A)zK!DuFFYso#e^dmDhYn7f-;~y|I99)Bp9Heu&CY>zg(7n)ai|0o z*YCSW8uP{_^=cO?sm|p-u@R1IS>ukgGh60ry^kqlIXwaDTT>P=F1N>@NdiIwCSy;V z9w%sZu94}+WZreC(tvAJ6EYLlOjm&3!TgyTp(EA(3C$h72>-U}HpIcAk=}IrOy}+Q zk!6t$PhVq0bl!WbR~f0>=B(q#P2*d@A||X40y_>9aA;HU)lOK}uY!jlY2z7g|-1VJEJY;g7m29R0QBzQnNHct$^$$2K^nE$m}mwfWQzC7-4 z4`vdrFBCakJB9zyHSZ|jOgfojX#Omr?!e6Fe3mavo71hs&3_t`Dm+3rSV)}Cx3zXC*~JDf10PwTbYu*9nHy!(nrERajvgZQN`~iWNyilbub;* zKj)fx@Y*rS_P#M>w_aap{o>;Bc0rdrOKMLBO)2Klf62&b<99f1CQm$lW9ZJh)z;V- z8np%kgtCP*gBx)1-9c5=RV0n+1^6-y=d7owmgV?w@)j>f*zga18LzT!X_)}6L|j7V zsJ47%ZF$e9Rny>>Ylbru{KtdW5G6q#Hx1L$iOjViJiWqLh9M8W^c>r|xl z>iMsFzuUMjkhcsU#r$R{hyJA#VJL|cX$s40T<01Kuv~3%$>#ap1yVX@LN>P%fuH&fivLthXK%24M)O~ z$!~pb|8qX~;d@>}b3hzxHvSDe0sxx188ME8ganGbz>f%SvFYAh$HN-V*4kVofq1mU z^u--Y%X65uNCuyT86E~UOJxjfQ#D3Q{CQ*;BCnQj99R{4tKSS>Zht@W-b|x?7$uxI z^L2+yGrxG|`~61ZKN5DV(~hL7^Okp|!K&}Ez38LFuy-+4E6-nOqzrt1W*7qQu`Y1f z1L#6H?qiTc+wi!z<;8|)jmN45_9HtBS(%ZXXcBqgYy?KfBWz`Z$26txuP~`IZt58~ zuk8O^3>I5dvo^2rRke`9%4io4d+}O~9E*seZEpX)DZnnE#A!enw*rWpW>v7VmNpD4 z!r&NtP#KhMHAJUEeNC6Llz`?u zFd6A9C*olPR`#B#;RoMfrmNgGUG)9mfUm+bc}t9R`-xQ!oSNOR#)9xSKU@^ z+E#6NwdvbzII^=Jbs95%MQBJ$(R82n=bbyMX9rhbVcGR2*G`6-Jw7@F5xplg`BPM8 zVn6e>cCn!>saWSB^%b0JJo9c#NBQP6(&L`!{%8CsECRzBrBe^sNwoD$*POygj}}=-U&b3r{u#p!;{A+V`U9U^F#)UKX(^90zMMKY+WZ4o!*k2 z7Z$XCzn#2#!)ktIl7QM{Imx~QHl3_VM{qKultJsC8F&_}LKOZ!d=!6p@}V(~(Sscv z&=T-@{~zuMLI-EjWW3ydqF)I98!+#z50NNU${!#)8}X9o{eXfGv>_4WSQ1heq6(%w z(Dts4n7M`x_u`f9_-}YrL?{vA&;2$3-XgnHO0{?fWIh6j)zuHAVFquWQasrX%S zi-L}c*1@%Li6c|{*8;=BZpBQju^UZ!!KQE3SToa?NWhU5j+M1XV%(3yv#yujpDZ4}d&#EIQ} zImr+X1D_@>>-B;NeD_M4_iUcuc>6B}CV&^5D@x6+7?$w17PKyKL|Hh|*LC*Mi9P9` zmrd!+=aD?-_T2Lo_ifyJykXtbj&EfQ=@DA=CQMnU(8lEF(_4)WdsPg( zr(!x=`3&sm=ZUsg>nN(1o9n(}FLnwZg8#OiU(<7?K=uA}qq(Iu3E9=8?M({-!8>w! zVv;v-OAnz|N}wbHSI$tn4*|U;i?MFo=XjPRF<;kp38Kyl6QbZVej(sB2_t0APDAnW z=vn)?Y$5gU!0H@cia{BjplJlD{?}raiIbyWmy& z);wdi^NX;h(kau;45GrBR#W?&o@Yg(>2B9NzkGqJ4p79To>td8x*H^w6w!Duzsoh) zdzz)W);hX5YP)8zw_5I@LjNHgyq=Swv1ql~^#MB<59_C^tibPdmqFh?>2f|?mHJ?| zgu2C}eO8O|U-DcJ^SN^$tupN|kIpgZJlSEJJu={Ce2Gafkp~=bh&tFZ?zp%nZTfrl#lBZpa1G#$T&NOY)e&!t^IxJKL6y| zQ(pMyV7juRJ8~M;vDD^~NJPU*@Y<_Q*wu5o_(2YXohiR@7S)aEf)U^BJAZj>Zxg%& zdyaU`#m(s^78z0RAjhrou;?HG-M4dC$)94QqMVpnn1@D3KPRV%$;Qw2bpYW}qQflt>}WOcK(|NgC?SZ{hF8NHq18M6~ECZ$SD z$Xgm`T*IxMSmD)g;xc7&H*!>+$ea((e@+VngDP_-Dp6XM%8YfNLOXPGr>NdiB;tBQ zk)<(x7%z|$4Ki8Av%3Xg8 zZt*61*w5JU>U3k#eQHWiG_Cr1nUcoFZdz!!Ku0Vej?eou1JctK71KH6i?6Lva2Rg| zbh1vYMsaVWCBu_OgW&PL$l}t>{*A|VgG;8Y?11wrVN{>NwFVnnHL5{1s{X+N{#s*X zRZ%-~*Ig%lPpzkIjiY0e%QLsiP0MtF`%!TXma{CSYQxLujdrBMBInd?g>LDbN0+bU zzBVyN_L}71EIVndOgro8=%RcR1fkr|^~BWF{zICmeXHSQBqZ597p~&cO=31WgdU7f zGe_}5MyaWq-x(XbMD!#27O_j8Hk8cKS*`+lcw3Z_++$%Q+?UkN=5UkLaXzvz%bOT~ zUpRPABJ?iojS>rsmiBKuC%e9}IRY$Ijy4NVfo}+3KZDPorJZ&Cv2m+D+`WuQccnrQ);0^6nSYh?1`JWhSHm3_{=%ZWTd-|Z{9(5Y;MUA^P;6=U0 z9i(!3sFYf>1<&r6skJUJ)I(sq`Y<#f49^~LUQ%nSw5vbe(epnUP2<~ zszKm0Wiq4ht(%9l#rPsM0;j{LAi*lHUjmV)hSugP8!jrYK|FSE{EMSBipiw%Nu=`i z*N3+HjAj~pYiPac;nGe~r+Z)_uIwQ~3d^>hqXz z*&G_Cd*siN6xdc=QRP`{hf9a4!yC2bBifTS zI=uHc#?2{KOmq^+DtJ72r`^`g;A>+lUp4>q@Z74Vj-hL{qfW&_6S|SuX)qE0N9Y7j z!knDE5EUP{`!140;A{M~!dgaSP@&~*a?A6&ll4MSqGm__V@WJ5akRhn@8~^~nU(&J zs&|ae^LxIB)3mW|+qUhbaT+#gY};&{G-_SUwr6N^c6rx2>`;lH0wVZ*(q-4QgosGq0W3lk&9+;- zQo~_~qQtlsZdbakB|P4NYPo;WYA@Tk?yfquTwB8%H`3hu34>)0W2xFi4mIb=K!(Ie#A292d) zw|CnC1rdow%iLew4-cEK$5zpeMT>=uR(rEUIFy^cg415VaW!l%1RJj*4Azqb*V@D(q}QzQ>u31k_n=!ONOCKItg%jm`)P5(iH z-&=~&sY5U`C-kk$ZEJkT^r=|UGrK?Kcf|MAp*fh&6{+=a3sf*?fUeYx!rgeK;}ahv zKNV-S@wtT=@%gKG`0&_95*iE&`hgTF-dm*a#p!j8`30|q(P2vZ*4;}rRh5+BwIi(! zm#kPSOj}k?Oy4N5TstaKJ1PhB3lrTwHinv)xaT3#>R0y}{pZYN9zNZzW=@qQvp%p3 zit9dbng2~^=|FzSR-ePFtfU7*83!1w+A?cE2dz)k#trob%i1!^qj3tYT5n&3!R?^ zF&nB}@l0LT&~ND!p?~Evq-(qq|H={RZ62fAMp65asnpKzsw-EJKXbDAi{YNyeaOPE znh8naGkKCLOOE8wUJJ;TYm&yOvV8B2Vb;S3ZseW6d)+sz!_vRS($k~lsQBP)@N^?b zN1+?{*JRFLapQn3Cw1`=s#dyF`!MiFiqR95goKG*ZNCoARB*)?JOXPqB}&A^{!xVz z$0gm!bi*0V((Udi5V?jkn4am?KgwDd-zQ$O8%xq7!JOIAS*=tGM>A4Cf*$)+K!9wk zE4k~T^b&9DT&2J8ubK7iiJj*jqS|y%o;>>G!7-vD7}Dhkh?<{c!fy|^W>fXPte?ap#b2q zX{&K^+><1Ji5#_rk@l(`QG7jx)2H@OQQ|Zlr>wI-0=70&%0=$9->E1QmT>v(L%m*H zkTMaYQ*FGC!5Z`}JG+M>EaZg^V2A1!S8UU zT21u+vfEIh>LDQ_BD%`QP|-sFj_2K+BBr5=%?>2cP%IWx>qExsSkvoiy`k)RV4yJC z0kuB=2nY9~_$aL707a0B>;NT3N<0@kn4t;ORoK0{n>}L88SuV$=y(hF2%~be-kB(C zlu%i0lf#}j-p3IEFbu$b+tB|iJUzk79F7{1hWLh42hx3^6^9WOr%x(xlVbLY{M?(S~zL>xC(s?8Mdo3LO5#Neo_+)0SKcmw-dB9hl z-|*Z&0rqqW++>hi^65L+fA|(_Dw~3cBFUql@>i9omZl2U7 z1~`$p_yNobOIcbgGrlJY-W51{Rd1no`H}XK!6q+HKD&eatQj*~>sddw_>RGLF@`Ou z8o~USq@S|!4{w4x|qAc=Djo5@$%kvHRE$=?CxSjwgfvUK)x^I2r$h6vC)elyF z=?V^~o_`IuR9btKhC|7ikMA>lOfaL`8EO!hjfWwtlHsZE)M(!vrfgXUC-M#SqewsRqO9SwAFu~ zdfUxFtEI)cpzFG;(?fDmV>~his!x+O!4venTReLz;2isPkfGXb*b+#icZ;irg`R^2 zYlYD3HbCCJA=(N&{Q$!$&6z-I*PQ^sk4F8IZT7v^)Ya&R7fCC8#=-3TMHQpEE%&2) zx9&)9Uy1<6^2=Q)r*8T?iE#lr?8(D-Q@V+Dn%~}Qn#^@JTJsm2-2^nwj1O;i3RdOE zfrQx5kbgkyrGrGt$(T5zHS&?`<<;lN`Pk~*`A`J(x&{Q$?S;@LR-bs7*r9v;l;pD*<_os-lOa|*OuA2dh^ZHnoZE?!Sgw3KIEU*QN{P1M<+|~JQlK(wT+IHx*HD~FCbcwfdxG|2sw%JwHk}`3n-|@&_ z0{if3yUC}=ftp&XYkP-T&UG0BBG-6soe7r?EF|1YxuZ>!UM&L%}5yo z=1rTdbP#%LHk8MhYW!^%Kvd6ENqOp2vGo49BP!dl^LNsUzC7|UwCD?P5@JO~qy*1r zP7T`d8N0W_dGbE_ay$KZtKvd)C6#L9JwmsTL^dTL0Dct>n)Ks2x9Fcd3ArgmV{|#i z(ZCO&n7K3;fW45mRA2r4OK0`wJ;`2%eOJjn=x+^_>%W@~Kyr%U-`LGZ{N*Y2U1= z*LYaLx_Y#`qci0VfN%*{tkcg{@_JNCf?~gHpBpHgu95cGY;-q{-{_fXBf^1w`@J>7 zuwP|;XD{CNhL2sH{5Nq+h7>(_28WulaCdLZ%sjY0Hk1eB-r?m@V71*5k|YfGA<^rS zfdA{@bNPsqA0^>;eCFwy$ETzVC^(pW)lMPVrz0OsC@`lCXnd!Wn`w!g@5aWqwlkXE zZ(c+J5O9WlL)F6PB456I@x%6Cl=M%~(kWX#-d_6!3&LdvMG7Fzr+v4$-heQ;EnqdzETJv4G#DmdSGfT3zXCG za}?Fi3`IwTl+d_#<}?8YT|w;!gD8;0y?(Yt%P`G1p=KPgS&wpGBozd zgW)#>vG&0h0SH3BLi_vH$zhWy2<};VXp{^oHG8!-7aRc^*;e+Tfw7vrke1tn?i8!_ zrWgqd&=?fd=~1aESc`{q+Rt9l^Z0O3 zu6r`PD{X|kRH#KN_V#~h^*RE3B@m{(R!iGh%%oLQRSdr;YfV1nhuvbmU<5K9br2(cTfmkrSCD z(6By+D3jMeezE*nr}Lno)Wyq`9w51Seg(FKP{0=(ebNN=0rX5MC4&lo-RMY(;T-+j zqw>WCtFYp93o;EgKE?h0FF#9Mxxua*PWj+4+h%{~%7s4%5_}MtFs$wFHkYQgJI3=# z_%At-CKqSY8jMx4q`dT+-@5a~58iLBK?M};nMYS^2QyP3C}(z~nLm8BlP~qMH>Xd~ z{EFFzkh_DtRP(?};EF(Vqd9QhgXAS9R;RMR9=_A<78kF~Mf^+ke^6eyZ~-MYrQb^x zpE-z%IfyWnPx`l{bUFjP-9rx;>o~vvPs;Dbma9#Pa~5ioPPa5|H#c!5?1clw$l+#l zwFGo6x4VTb;RdK9u0gV4-)oiNT9L)X; z+`Sz?T|7wb*QLt$1EcH(b7;BZf5XC+Gw9~ZCWQj~!&z$R<6`*>CyG=o&?|*AeDeh} z=99a|Xw7(G)l>$#+hXy*1!)tAVrii3r6T2!1dh|`kOdNxBVWJeLhA_Zy13#uqF10*9xSwBp?Tf1&Xa@RuMf%F6fV`_pU(Ye(*;Zm@$e zntvZeevu&+uQOB3WT%7OdTca2S1cTJy~k^Z>?$vE1?kARvlrSk@C7gj8qdX57UQ!E z0m+Hgi6%d<79bgz=DI2j>F>GUyBjxRZh9^1;Xbg*zaBf^RINF$gEQT%e7$ z_o?_&pvSnaBYu|T5|f9H+7qLs%Hn#ZW%47wXm_K~>s=OjieYi?DL&T3B@6g+*mR~E_Ns)HsyytDT@%X zIw2doSPr8E@Fg~dkfmObn1gQ0LN3dkv7xHB-VH%J^#Me%awg83Bc}_8>3)^I!tx0U z_~&5>B=C2d1{Xl{VdNreb>F6+5h+VSw{PR6Ime&LNEptWK^{?j9f=z|hid9y-O+!A z&2Q(FyvPBLLpVKNth~!R;iu|dz9OGOMbMz_^{VP$)>j+1rFu;~tRK=9>k;}R>oc#< z3-I>#sz4E=N6DbC`0ds$WMS|wTW2KLwTUYxw%DjQ3Z<)eQp*LygE;5>`pgC=h5rbw z&w%MAT4(nx+K0jUoXP=RU%!HqGLZQ$UJN8Cu+QgaK*r0>={XwK^@(MF3{$4jS-j+!mB~*8a106w`FOquUlA8j>NgiEO75*5w(>F%B6v#F?3s|B8>6$_0 z3TB9@vu>vLHB(1*VEA5S`iOy}*I-0k$S5p*22e`MGJOUlM$o-8ZiX;gK$%G#3u)F- zWlWkt5{o75V`LnRYibaNoBPV%Tnt7iOdC%Un}Yeg=TV3CO;{v#wr_RwiTpbiFDD1= zL1s;sTqO%+6n8neleM#7R+;J^A8+UNgdFe`+#E3J+|gxun5_R~10Ku%2_>W}=D5-( z4gu9}%wJ7RZ))1uR82xvUf0Zznb~W70Ye8PW3{2ta+q-nzrt`y%iCm*9BzvE7bFa+ z7PqKBT10`?&tFv4sF72k=5@UncSBft=50Q?DnFF{owYr&@yg`h3IvbMC2Php-87P2 zo>2-mYS_VGE16RaCwCh7J5Z+TiY2h!7AMnz=d(eL<|{;-4sHG~cS2(8Ihc#JXg+U@ z<$c8V2O_;#AL~8D(UDlISiWHl_XYzPBahbyPM%LUE&e+@!Op+>g98-OTFrWw9kHK< zve`LIc#J!kZo>?9v8K{x)U9u3YOG{kKMD=3ARb=|AF%kJXzp>LjF(qGn5@n}q;Zwe z|Fu5+HkvtCHu`liIXi*Fllpgyj{#U1Z20w>a!U5d!voMljI>{sn$wP8FbqkNCrOIVN_@V?mGzPz=4H6xLANzm~?lv^!~BlIz(MWfIs66e@DDiw9`AFWI4|SG=cf6 zoIH9-nx~&=N*MP;_GaNfd5O}0V)3P{w__vX@ktEe)GU+xdw(=lgh+)8s`@0YBSek; zXZzZ^dQbc)(o?+X0uD_Kf<=wfF5dEiQ)v&z4%rC$#y>`#WU2Rxm?W1OjR(=yoATC! zp((oL5rPjv)GmR!c5_wTq%e1QL?}HqNIJz2Sg`fXC<)BKdq7zpC+k1h>pxFtOGjef z3K2#FLt|yJsVjtyRbtl0k=4y`%nmraz%m%Kf)k*#j7?o4Y^*~I9Do)!H;9VYg8*1Wzq#AzNGn@F2#gE44=KC&=QZfm(KR z?_6}Gpd$i*wwQ3XiPYcaqi?$2gUkMzIhN^xQ5ADXYb7Bm*var!GNAChE{uT?IZUI? zoP)_F&K9V!^7Yq}@9r-Rf@%{4+6QM9(5uZBs8r1Vk1I*UG-$o7mHJFG1T-!V+>h8{ z!$%s)sheB-f`#+%ZLDP$LV6A?D9+_+BLg}VKdQG759rr+z0Jwz)r^~37pIEr1%P!( zHD{uTy0_*bmJQsX?YX51qKm)2Q(UR8gQ(Nt*{pKcX)^lgn@__bVCC`c8+CfLiJakv zAD?IETNUE9hCHbOled~0CQMG0AXxU4sq0Dk)nna}U@HID(q&vf=A1cmjhi)$$GI#0 z>)nIK?~y>pk&|aHNgI7#NZI{mk~Qp837mw(W9+W?R4m`ASQHP8vlWf8zxAY*8HlL# zBL`4Y0H;bEK?jwp2Bt9c9=YUh!4T>`<}g}NFUK$P=s>5xgiK5iOW@agYH?C`&j4+-Z6WR_ZR(X}yAa+(g`+4@p_%cZKcFcjUd zf~3e+XuNP>=By?YX+}#Q-oK7t^-2{RXTmePLH}AmBs#{snj;p?khM9XpqKjAMBAHxA{^b*8-7c zu*esEHD*&2ff@YcZyqj8Ol-Z~b9kNeXNQbGA@MtcGHKOsU0U;+Wi)N(hu&A4P$Lv} zj6K_}C4!a=j7arIM-?7Twm8Z(Is)w&+ST+O)KR%3sW(WdHeM)s@Kl|_kJDgPewY>g z!78emA@~g~9Y9$$J|ik+!pvN(n`os7_6Algf}Z0p}YZO$c+O@_|uYYOJvCzL!1AMSM~saLD5~V?7MZ z$qK6W}<`8Jhb-RDbOMW343z$iIUhTNL1TWc zW~k_v{?<8@;<>(q-Ax1Hz$3_44*vH?uhmotHIHt_>t(e42poUro9sdjV@>K5v*Ohj z+JwMrIbV08ag5wjHo0CnsI9Jb$x_Jtg2v5(d7Z!a zD?eAQ00YwN_|)+l2p2)yxcmgrO>aw!=cLB{_tm^5Xb52~Aw_fdqfXS^+z$YO==AGg zL0F%#5-o8^_ByEJHIo?ykXSqcC1Qdixby3NGLQS8MfLbXT0}&L>G;p!Q1FGF?s773 z+aM7*r=|UQ^rznZiHMHIKAybDZD@QE)iV#KtffAR%g5wW6f`P(=}j$2+A}=|A)`)k z?1=jXvkmEDqeb*~cuX{NX`p}Zrm1cp#?nh`bG;3sV$A*L(Xn!Wuz-$IZspITeJ#t- z2Kiia{$0lR-t|h+krEDr>QJ$pjqI7tBV2B*9+*n6aRDFC&@j6(I42CoD&U@7!$MlY z$^{mi{gF=%qC~Dl<=fQvEb;iFxoNw}suK1cCTd|*NIs{uGatI``-BmYw&@n6JFRci zANgUkHi}KsiLEX=%XfH^I}Lbtjt_#=3HEoMh%)?{at7M4BOPhIt9vIh+BZ>3VFA@l zamaD6(2%@gy&?D6s5n!N>UWjfjjyTAlq@WlMOv9j#-rKtxdW1UO6UEe4o{;{QI=1@ zBhe-X;LL*%CJcWsRl!}Y3QiJutm|38df3wTPUH4Vq|?$jd1#V|mM;b1mNDX6jneR# zyhwV2H6+BSJO#rDB6iU~cE|v?r^=fe0Li)rCqVSW<&mQg-G~V^H^Ujr>jpoNKZzlr zJ`G-nlkrlf{io$BO722`2F2l)wn5L@9T|}D{ygjq%SVa0ebE1#bydpg358jgk^jdB zaBM$^@XYqV!#GGF^sd6=1B(97{Y}5(a+%17?}^x{TeDSo@^C9ijPE$sr<$Te&li%> z&BE@ZZ1ffHxGWM1yqb4|xpN?8d^oE0!)Ws6qjSg)365{D)W5*#S2`0L zr!HIbXp-D+pnak z>O^XEth--S(R&9h!>mH5S=P~!RHx;RmdRwGQ<1v%X|FLzR;THa>W6yuY7?L~KKN+* z*M_JIwVJepyUtq(ek4(-C76-r%oTC9SbYVl9DR=H&-Ct^D#yWOc_Sf3)1H;IH0m2V zBBz34gG>&l9zlG5v5CmD|AfT=N=nfrVyW$0{P#sheM9){`t^5Vv^xYb zZ{4SaG{D$UH@G;BkHhdm9DTxSUURWQMne==)`wYxoHHaFu|M7)U_>#HH9iI^NE>Tl zeh}OokC9l>q0!`u;krF1iXc`U8~FUT(U&_0lcvX?y6DhqcWn_JREscG*kJqXWFncz zZEMP%5FpvZ$37ltW6_h2otS4@~@N2%~-9!r>6V(bZ=fcaCuUrew^D} zKPX&Gv2Q+c3Vf56kgxcS(D53d`LP^_QFYeO3k>g8h?t+so8VWba$M3xVY4CYL3R)dw#*fxkS#7uTfSjLwn@<#AW>bogNNx%`FGJomq^= z%yQztV9#QaXPhX^ru50kN&vhckhXahH;2b0$!UoGmi3u3qvQ;=VMuM)&jb=^hmmvO zFha(weJ&k$!=vNy{89w;iVim7%=Di5Ao!U?Bo{k@gO4;Z%~@5@0iS@NQjTgNo>1P7 zjH)pK10XLf81oga=`W&ytscwEYl1eXJXBv>YFKviU_9)sx2co;xI5iaUP%Df(Rfp1 zC(*4rX?n0%SDK6X)s|Lo5N`;Z?@jhrgxd>`_3CdC`lRc*va2@UoP8CUcMgA3%I}6! z9;809W>04OsQ&jC;Di)3@xS!OySvNLaXvI8T@U;Hy>T$!0xhg;xZ!a%C)o{6_0^5* zrNxGd4L?CpgkIuQjm3o0(&bCq16Q4$Rrd=|Bgv!Fd@CjmYTePVBIKlm4EU}lECxHu~e9aa(AYi25ZNA8Y_#; zMu(K(a9C2c`*fL{`$N^eZ7(C!_T`PX11o7ujVM_$8hX0YH+(RM%i--7i7XbgAj`MM z61|D#SLT}`9(WtbFf<9q-hc+Dz_Px-crO<;upS;}a5BBoWP3}fSH2b;mg1K3@Ic7g zyi$en<&fKvb)@4l88|U`$+6#=OvH(_zHH}`eA+$AGjKv!8T-*^^85h zJ{jVSi0UA`0d(iZr`HprC|w2TYdq%j;CSx?@*|fXz{DXxdt_Bqqx1zR;SKh55pX8N z7hPFoWL&FsM)X+em80*$7-(x?EZ1Akw43N=n#=jXZQ17%kbo*xjeNOV2hvd))=#) zaR%-aE^0Q-*{0k}9>Tn{OOVSQpZH)~xvs6P5nENVNmehhBkJp2io_M8A#>FDb(EWql( z>GKGJl#S8sb;lg$V!+krhG&9sZoIycdUfg5cI|4mFHoh=1~P;Gs$1l$xJEvfa{qSG zHr38%a(_l$YwBt`qv@zgXXSp^J30*w!XiVX>3q^Zth2%i{2>uNpTexp^l%y%YYE%8 zZMPa0mZCl7=wLdnq$LNeuKWfL#n{Foor9&TWdQLYy5chdwOz3vfF_sG>yGNMna{;z zu+hZLZ_$)U7y!xYtCKS~aW&Guyzb(>nLi-KFTT`uO}En%Pt`sl4&_U!KYO`EgqQBy z?WQuhx?qWP(dZE-4%rsrgo>;QYDT<7{7)tRSD)@7l5CbFtB7aPp~+#ZP4n`34@;emDsT(Su z2|sDUI2IH6EEl`M(ViOFownl_w6+HKJZMwJGc2kHm}U91^?`>OU7u~`a-Y^A42gjK zAR2;|0~mL%r5|8c&g1l+jcx)9;}A&bj&V+%v|Zy%2>?{0eeR2~sD8O*5*zo~QDW4S z$CgoZ#}*-%%U-FP%5OOPf-#Y~AC4yTk5_(kiDEDI=3T1j2CQ#r1?jbElcpo{gDXmY zyv|4eTgDysPkrV4@XKI7tAD%&oWKd@;R{qktL-P~ZJjtysUKeVMA?N=wf64^qwgCf z_G1JNy_byo<1*mUd;XmS?q1y|!1MfCPSUMpxC}jIHd4tp)Cq~&->tC11++P$_(F77 zvd*Xehu6pT)W9@e>7n6Vu(#BPi_sN5hQ8_firEt_F3#8(#7_zpc+DYJ$9|)EaMx&F z=q-KgHBA9qFs>u0TS@{Kr`t17kM|H7wHBauR$H+zJv9Vv#G-cJHt5v^C$r4nF=y0xlkN z7tCOZ6F*70e;L%fW--_faD~BV8Lry#sdC%(EOmdIvXIM5_+8n}28P*arix_fgQ<|i z?e2>elGG`PSeSM-Gk7ZqdY@f>zE^%!8T5W}#^oG|`f6e}lfyql-XZvL?l+X@->0TEBNKo_?_SL^*r3s^38Ie#p^GmNu6M%(RPtg#K&VeaX36`hzdE4 z>ziq^jpA7}bl{2i8-Ba4!bI%O;ls7)X}V7AzrEePea054^qQs1N@64hXb$u+QC3J( zu>fDSvX@_9!r?OwFaGY)X1oxsylboEnPLKNCz$mVQC(|zufg_#Ll*%`gZ=GcRpXoI znDsi#Idln$Lgr|UqV7LLD!UuJM_+sa#WItjhVNO2s@PS^tkXnnYx_rP@y7e;qqAI- zJAcvY&B=`n+fki@eEwxuKy6(hSUM>YJGSqHF5VBL%)Tbf9)J1mg@3j)ij8J4-b*fV zp_4M&owkXWzz45)a`+%Z?deFgn@jgazOG($hp@doG~oS!RKYifuV-{90wkvnkV7ZU zX@iPb#~oU!t%GJKSGMevgM;uWzzVs5?6Hx^$z~4NcnW@(Go)zxc~w`aX70dH)V%bb zf0KWNkDmVueTM|Z|N6ui;Gh9L@LY#q9I)J_z1)zDf3V>kh~wGX%mJ4IKdb&=VrZ9_ z8CZinzRS4mlSLZ051fSzOYoh=;3AQZ=|at;0V`;N43Imt z9y0Xz21Iaqk(6w0CaWU_;s@^Y)en42*sGU`Ka&Tt2ZY3Qd_1*Pdtfpp$bf97YSFUU zVew9a@mIl+_kbU~552_g@$fdfgBP_M5~XvKFa7GSPHIokDS6~%po|wI7gskn&zYxa zuJ?-_P9zl31XK;tD%4`-Y8cQ8{PwN_%?=zBQg@wrZtmOhbZtvANHHyXtej_Dbimu0U8h zCSpBraJOEPau<%OuC9BBJ5k2H@u~oiodz+D{(VXJYBM|E!5OLR(_q@88#7fS!<5mi zL}*_$20KgKKRc^=yanSmMd02hoVMsimK7*X-pCso{(jDa9Hs_SRY;;&Y9 zCE8^cY_0~GJQxT+Pi9~Z!>1*nco}w$ej#~3f3sVt;8kQq4eJjTowS}EdHmKu@66AG z17qC5=1)}#XK+{0OZ#C$pudm{s09e&>Sx(fy~`1plYV}Dnu;5Rx5XLXsG~;9aGeSG zCjjg7V#@<8S2H+*GSJx&@KR?uz1T5(hwjZm_NgMW#hJ12lV8MMZWn%1zYhjEi#59( z;BDMkv68Yw#ksWU952OX9EOq%Ezy_(dZo^btxcdYxIRfvot_Ywfqx{HT5dViMn7cwH?<}7X%R`PRLO#&D4O*ce_a}TWsqfoX`{7I#*7rdy%4j zv4^kpdL=7BN7v?a3GR0oITw4eDY!qAJjr-7T`l-}UvaLnw3ItKy7?UB@cQ7Ur_uRMkPc0YK*}Gfem$uXyei{KQOGlf`RL9XS-Y(j{Pgm_?M*@_3GahgWB_nZ~ zUkJH(VZS6!X}`XcQp~x>sUTO`5AtN;@JY1$<)=Fg$A9JrNEMz>r8G%DU9ALo!P8bERE`a1_P~YH8vb^iv_1k@KhxJHd$3k7QMQEQm zK)VQ3Pprj=JUaUv6)!8UH4)&9%o##7qu~aMQWsjE+>561L^6}Ke;25ZMPfz)<0J2k zY?nAH-TR9;wkAQ9If#_Nkw;3a^AflF_Wp_o3^3H~NYi;aV1k!L2vKbx0p=9Xg2~TJ2{z)O^1d4_woV3c19!5(0Uj13E!>9QodlmfBlv``=lQW z+|#i^J^SJJ6SB%-PszDL`*|_VCj-8>r)3urMT^4Z{b7MSA`;(+ndW;fW1QrqIqUzw zA`U-2IoSA9G;sj*8~xJ}YNiBMa>|H_ye)uy$MM`LE1a;H<3w;4-V2*|tb=Ob8woT% zRuIJSIqIu6_fj(dc)ZgGNFX}VMWoXtUB3)oBzR;%;I4EaIqBlRTP+JzH^rvc(!7^1 zBiSEg0(DQ`LwKbv4Q-&Fz+W|^5BRUaf85^!7ft`Nl_`YBZrJ~P(cGrb6#bhN>M&q6 zTbNk&Hj8|Ia440utjJTv5kN62tZ$}M(f+@ah7P$ohcGQkksvk&5l|#0!Vvg+63PV} z?8Y!CEp==y=D$9uz1fy6lt@-~lyude{iN0L;%eFab?-SF9(6%CI9jB%sQS9+ivY{^*V5lliQaa_(k#&$Dgu6QbPW8D_*Vm0+N|VlTi0h8MoyfP@w=9q2KDF34}% za6^8FYrC{z%xGrO-QK(kKjlX3TPHbac6))}cyI6n0I6?&GZmgDTaJvD4|k(kgdU$l z-}W&{hJXcWp^@#bBV~v}ko}<%JGw48M-nbf<~MYMMnxh?UrX=oOu& zxNKUq_nkojG&c0@=;XuZRIF9@S*L zF>c4LF$SNXBXN4o7$}kT?R;y&QN}~N#UDRdwVQ4zg&>?!?6)bQ?52RTjVM;y&iALZzg(D{C zeM)n`Z543o=k*Qy;Z|Jp$IjJag9Q*3LtL>OOVc6#hiCLK1cYj|A~jwt?yAYi4|Ub}|@ zXk4Jf$XESEKbcEKJ7|73xl{u~nd@mi0Yx%$tm?|$8-@>15OYN65o>HXhO4KV=4~V| z8Vh%}wJN_0WG0qFEj7Y0?k3!u&!^qz>U9_S|4tstLw0w8%5q5psnf(0!l%Wc4${o%QWa{dG9xfGwHOwpAqoPyd<%}dTBvEfoM_>_DIqvNjT1EQ` z=Es)K*in%MU7O%~uuqz^!P;nqM=o5b{d31JC}>JnkpngLD>+zB7!j3_n9kQyFk*Ha z{)$gTAu*h6*PHyjvponM1j)Oy+KkuD5kJ6e|0s#wykuaJM@sU{JiOIi8qM?`xAPT;_dNu86J;L(&mj z@|U_f0nRawH@M6}WEEpASl6J>E@jiap@0lt_~9C|SleoPGoavFhp%zoeCv)k%rTAx z94bZ1sfxb}3=UR6qr1Fa>u@5fpL|A6+RoC|TIR@9on9rX$zvxqS~#dz%KBCOdHCHAv*M~V?;{6In{&(NW%l;Ydc|v z4W2B~f0{HjVKF0o9(4B_s>@c}T{3rs^l=3oQg(!r!rEV4GrR~GFf>{3v+V+wS#Qh5 zzHVr`ws6f;M)%c4SOQM2t$$;tJrxoto?QOn`i;;fcmiF08uCAD-Ro@TLht>&SRUs`a~0@zDW-&T{)54#t9KcUYz##ml=6_N_;| zwnLbx!RZN@fgVGQF@v|P=b>WGgyqh3OJ#G_vxD|4H#Rk6<7q(OVx6pmg?;U?bVUDh z?&0rt_x4XWJ1aJ4zIKDU)~$PvFavU%0}U1w)T|kj@B znvbr{n@8uNNv$OK*6>Z7%lz?f$TKXpVZY@_x#?qv7Cly@ItJ@QH9mtr-u@yMRjf0T zQsBMLdUI2d(upAV))uQ86H+8N1({hP7&)M$FD;#cy>@eIqY(yGu!agvI!BpZ-&HFy zD8I((YD!S(Y?Tj8I1?DdD8dIaPNL5f6Utzxe5LLih@`ai=5)|a8XR~3QdWGKb_Z$# zH39+x!?Me%aO%8MasKys`#07??@WK)(*C)TXkR9VE&Ro35{YQUnl1HHR;b-{jnV1e zaLGxnsk)7C&+WYBnq+erpWBiWXFm!bOurrB8Z?+dvmZFet8UDq6q1-`&G|sWv=!aN zfx;M%52rZ@4nuuHBq2dO9*N+!@WZAL`G*jg@tMULr{^M>O%eY&4k?fK`P z1ek=rd{@RqbeFGyeKOx;s>j@11=9`d!Or~gRtZ&=9jdX1tI>-Es*&W`~j)IFVWNX@I z=padkysC3*>ry>9H;nF~B?B~&*g01XbdQ&8wg;tvvM3uy>?urmaIo=(1D(ChHGhBx zSUU!)1fXFyNO!QG0x&`fYKq^Z94NkKw!gqf=NyA_zOMXTmm+D$h!Z?)e^~cW7L75; z4kM%{)DbPoAy$ncpKcBOE)pUrNtg#p6|+8a?(Or9#M3v6Hn7VplLEomWPd!Rn{0{Y zAtSdiys#8c_x#?ql?QqAL^!LHr(nR~=)ROZF1SZaPMy4WN-#4yt?(m2bzO=yPQ8Y8 zNiw@joK^iyXH+FNi`7KC>pI48Hizz9FHYN(*-uNvo?i!k!GdZd} znsw$7g4WjXCL;34xQ@wLSplyt_ZX=}1&q_yY5-aMH)afZmECefU2}E`t?%C4$?;%%rarDWHOHnQ?581 z5m2Z-pSAvRlI-csQ$nkKPsIwvU6v6N`f{>RAxIqi)8-;H$%Tx!-P88rvS(%m!v%o> zo6Srpmz*xS2k50!*q;qE#N}~M&QyODHR#cyrKL5SE(0rHfiDoYV{Y_k2W0a`%#{|V zstu4+i@IMo1$TY8ngN;H)GOj@2NeTpYP}}kbDJMOfI&&wZ7cvhnV)o1Ip>Q#+#D0d z*Ol1KJSo~l4|QqX;+!{skZxgUWk2QfEQBLmK=N7H?NmUnx2GxD0s88SNr<1Z1mhL{n{(DQT)F&S!+pVhx2f*YR`#qt16yXg9%WIbM6UwpH`?x=t=$8B z1p&|R=76tf0vW#bE48hfom3H#x5bM6;n=Ee_$zAPzl*-E8J&~n#iYfJzs<^?=jX+H zGNiwlVXevx6ViR|U)~yrYf4I5Vmgvk;J7UxG&8ph_4A__2X|LtldD)lqGevWNZOmx?(rMM=MnG=)8OtC68y65$m z*rbUYp~^3qi=A8wPk}XLNh441FRHZKtkLxj9XT6KRFWH6IRiE|rxA|c&j!3-Utn{@ z&fL@Zogz>M{X?UE@7|wr*3{NQ!nI4fYhr_eJ%J=A|J^#;3rI?`8O~hqh&^-Dr*HYyJ2+QgE02H)W;<*usw3;$l+ROcWoR#|;;@_E1^F$(54I8r4omsHbyb zqGg!fTVlCY6>|yQ@#u*s2r|It1U%8hMQVzS(XU-uEux00yvlw6 zH+6!#VDJD*IK$#2#{iA1*)7jxHzqw^qFP!^NC@fa$!FntVtAymsHo}I1I6$wDMCT0 zWFB%vq_p%mOsr$WqRQ}WKYZ}#oQAhlNm96=#tdP=wwus7)#)PfyQcOZcbfg)db+DY zPX*8kX0;d=n4R?tIV><*;BQw{dS~rny#6iz0~b(R{lZJUL=aX0clbFrG5Yt34nKoT zCacBq1Wr&*jXa4yjqLF-GYyJM$lP4Y&%(k2CrxLKiIH)4zC86aARZ5KAdKux{Yy(| z3Je4-&L@#aF-U#=gSOA2jJ@n{zbh*6=`=imf z_xbIMLDu?G3v#B~*o^k);8UDppL;D{vg*D#pk4v5CVmHU;|1kl!FxCXm?CT@fLqBf z5=-^oEOQuM1w<(z+Ix4g=OK0&b=K8oUWNz5w>X}`Prl>ZeMVn1=*V8vG465-7s-!#EgrF4M7c-(1DX2$wbLpQa@RVX)c^CyTBaCe9 zsCQq24v3-P;Jhl}5mCrxjry0Z7gBwIzP-dxUnwk#kZ7X_P;pFR<1OMf*Kl7yZfJW@PBsW_lLfFw9r zJg=a@_P`mJyukSObUuARH*q(RfQ;{)yC90+mGx|53CE?W<;25tj5TksG}fbjGhoT0 zZ&U;rj=~|S>(0E;z_7oc&32gjV`ssNwgS$hZPw?+CUa%5`XX4VcqZiAE#}Ac_zfv` z{qH;riY7Z(xGSR8*df$KFjo4bF6~ksvs!@r>L5Bkv~kq+JWm*KIW}U{^JM>Bs{ZhH zVi*ns!`1$7B5$P;78HOY2i_J?9C;=as)VR(Lqbkxco%%3Nd58h^&%}z8y3zhtT{DE z>1hH%xgtboFPiTE(R9^8RlQFi1CSPwZjkQoP`bN2q`Mmh0qO4UZt2b|-QC??7r4NC z`2Oad@efAlUYv8DXLmobyJa3ge;$;?*Vt2|!W?2gARRXmJwZeNAegd} zmZ#{QUcmNALF@}B*u&DYv2Q*;nKAdh;YkXF~2$12T*!XrF5P4o1~6YXD* z7j5sWKQu?Nv#=EYIKKPqJ)z1C48Pg#7Uv>_PEyb$uNz@io7w;A%QF3#^#e-8B&n^Nx^>P9^r?*g0NG_p$9B z4%LF@?4=`FswP--qL~yU4Ke2)#Hu%UiV94e(j(zlrY%KDjg)WQ{B5h@NIj=b0v#ihgxwWRP8tmA}QKu^~qOMhO|BDJ9U z^eP_u5rvFQCP6B|y{;k!WC`h^VL|*%l8dl5nr@k{CGy?#KF|k@GH^ z<>K)qo71}%7GP}977S*zE6j1Ue)6mXMua#+zFgTEqqjcr1b^3>DRf6J33qn4jw*~* zJ@|i^ZrRXjWSxbP6P|DKpBvv->csOnl+@ASMAAj4O+Rj5g3+LCcn@yZWugy_?(3{hwS|au=$IsMQ%W!S)e*9Q8X6W>tXuT%l-DIsH<&@C*Z^2{aIE$^vZN{)lbP8Q9VuI!FH=ZN z4@Y($^c!C=ys;$ck2U!ny#TQQa|#eKno$YGl$72p#Fo3dI?zf|c|L6&s7$Rc_DE|10%ueqlRPM6V`gd+us9z@z5IgDoUP~SC}qkLo^DY}P7*z~XjQ;YHg|!%7O7#> z9TK=%c5q_N2k{dv`#QhyN_<7bjeID$sqe%s79m)cfu!&ktM;qh*r`kj6}WosNS!)U z`l^w|=lXji(}7cu#qSi`wFPn8c;OdcXQhZ9y1xqGPP~^6OY$Ou-gLR;Vf&6MDf|tL z1yrpQoNQmY8MA&vysuPCYmp_7chKNqa6+(6zvleC92i;>^ZtxEl;ID2G2ucl(Q;#K zmC~ke8N)B6v=E#>gP&yS>)z;KZLr&^9Te88a0bhk;irEXo&I@6D##E!NN%LV?CBr zfs9C}TON6Q;kUwd^*EaC%Wxd@raqH5lkuRKJPIB^KT9aQiRj10y3DPI;XRe1a=?c6S~5z@MJf=(gp02u}Fg zE-E##qJ~r_Cuhf|Z?0&_b_Gze#?f4lxKi$8FUr0MMa`X-TpeQVUK#%S^^4?`*R{Y0 z6x(?p@N{48^kiD-%@HJtE|BlrTj+c;lfiMyJ6(28?0G}jb(XQ5%zBLwd)CMDR}=$3 zbX##@!HJdQU0(F8%&E^$Nh>)+BTKQLB{=UA$^;z8%FAVP^GHJ?LiWT&BuRlOGW08< zZNH=nzUL??)a3dcUYSywVe#?%Tp$$tcXWKiS)~RtU1Jge?jtD6$(@(qk5xj#M_OZ4 z@GfQ%$o~To(mTP}(aU!U=R2~#&V zGA^pGf&Mlj5Ce?r#xlrNFv?ZPohp{3r!(r?$TT-`v}Cgq?M2od=4mT}=l4mk3%-xT z#~O`g*DlU33tkf*MTE3?ho{sLnfaysi)6lqJK@Cvpztu0(Kqn<&CQL)WGMl?R{aO5 z%xnTd)V{}4?SEsV{Zrj=_oeLi*9cuBSECsr#foK;f5JBRb`eDM_@r$;c@i<`O4J+Q zwF^GMTj4F&A}f{wUv;?9%uB%QMky#5Wi0+`0z6=uOfbL&Mgg^+tMmC{7RM>iWT7sl z?|SX8^S$w}=e{)O>@2;L62d`!pD1T__uQNcx7E`wE7V?VuCZ}&&=s1G0!)k=r{;;y z4)C$?L`B@Ofr`bnKWct(eEfqHkC>O|QzC zlL5->eiCEP%WPnCZlz{d+!s}Qg#4whl5}lu9E3(8;A)g6IK1k6dUJ_!F#P)xHBQ)q zMd&Y664o5{iXQ2`(u<_RV!KWZWR6J?2YSu9Sp~a7bM3wxGGj`ZQ~lE4Cu&P7v;->g+4tZ?hNu_6U6~Ri}?90&AEIS`3Z5$wsZjtuk{!41O3oI66w8i0sUKCV09(GZ`+_$64v5Rh#4Zd%h4M-~)>e z$jW=LI;ac~kE7Z=uG7Xff`+M@uwhB#sab~=Od-$TmXT+sik zHa%X~Z*V4>zByBi@)p+~F)@I<(>t}@%j9z7vDL7HXI8R-3C=>xp}5NgFGuxvE^7ci zL-A}1i=9`UoC=fXT#wh^$80slS6_rnmS26SC=292ZrV^<0;7PX)r!^Plyzj}9GDkT zI(n*fcBU?gt?_j)s&r9|ud(!Bw4;-x&Hurn85`T*-hw(!32uI{+!Pq(=YeJm$e0@( zv$b9ssTml=7?R@bA3l9sM;s{d<+N;n9aXlfT^~AOC8i}v zS}KuR+{a2v%aO8QA`jLuf7#h3O_E|}=I9<>4frYbPUWg9y#6+gJxoD6*LKz9dcehc ztqJI0vQ-9pkUeh+M1ql57iu5WF~^=m@AQJeDVQ;;#oy!$N%|WEj60UEl(r0+fM8JHUFqix!CpxZQD0A10?#kvKT3 zdXDYtCgLQYtj2GkiS#|?2J`3p{ZpdZo_a+_NNc2r^)e7x>`PZ;hWG_%hni>l1HbBU zOPw4NjL!<~R;32zsJl8DbR$+0tjVT1=xT9l&I_1)9(9`m&O}FBwRJLNBxZb#gJgwx{ zwI;n(1wK5-Sl~E7#Y+*S>*^3$^lSmVUu!THONx6J8E_KlfHH$Et1Ts9y2a6Y^N9@% zHp{QYdM&1#pDcP27p%2YqOCmD@Ymmu`uo`?Bo|^`d){w+wsXJG04e`ci9`yF#P7g}U4-_i#SH8Ru0QhKYshToGJ<7rJ z0efkTJ3LcU^0XmTHC6Gomx!yw9NV#ga28h9&j??s`TcriUUk`0?6hEn@hjHpTL?gB*Hl;MFR|Xy($J97vIdNl%doIcO`5ZrnC2(hjt>sz6c>Mj(&g86 zCUTxn7%~C!8nDhCc+1^=eIJd{ryZx;o7!Tf3TEsU;vbRHu5M4x7cN1jz7H1EW$Fx+ z*^a8IcZ7p;d9W981IqncztSE#^qnsakLIi-^turR(Un;(=PJcVmu?9?_*uy^l9P+Y zd3fv=nrRu{(*l16{u?I}Cf z5>88M_TUl2^L({*4amDufpwi0k)9keyrYQ6O!Tl|vKXln4ud1*ZRVQ${8@Ei_2v~V z)|@Qa-42Ik8!N){(AHoMF+?;+!N68=v!WCaT*$=1k@MPhf52(*i87MF@OEey(&o)P zFhG&~apvpG9L`cR^~H>=nWq^Rg>_qGWv1_9pQX{G0(xR61}5fb0++I{G2raH>+a`P zu;F22u?o$OBe$z7G8a$lONPYFO-`)e4`yvupoB~JdN60z{NxvAXa$ zX)%EFD_MFSE`lYC*;xB4h*8G2y;3>|;cjIdyKPaj=~6#P{ZpCcPaN-u7LxCLXQ*WK zz7w$FykXARSn1TI^f5WnCfqMqHg|QNgO0Te7t*x1P04Qbw-v1+@nh)6o~2deV1m%eMLg|lJ_nbi^g{KUl~!c zExsZ(wFJxJw`oZj~jg zuNplny%#8S-d;I)EvpH9{MT$C-_BOLm$`Goya)Ge9q@|RApKc*LdU(enqt-hmIfe{ z+gRhUzBrBPv<*T61(ov6201CGn=>@S<9t!CTbup&njeP}r~|+Mii<-4%5~$N;BC#n z*5psfS$k^UJXlo&wGPL6V!m9+l$2Pcq&>;J$F!aD7sV7*r=4reNv(Fei}4s$); zSOXy5v+ZuQ01x+tzOypRU{^U9xIoJBNd*bawSm1SgVWs0+(XXa8*euyA zBfQWXj=lI&QF51lmYk$4gdgOk+1sq(Rn48p054KmT725|j>I{9M0$K%r3k%0@ZmQd zQGm|;8|KQwN%Jv4u%?;ae;oUvqw&hF*qv6w?M#SSnV`S)3_ND{*)LM${GPW(UgN&_ z+-+HQ`?5tx&!5_8x=xTWa5|q|n{D{6>{6@o7aGHMc0{sGxEt%jfW7A;;zhCKPNDI#Xh@L$B#Q{Q0!Q6!1UzSR*x)+fwaK^Nt_xEF*C%xiDDF9X=vo8tU zc@AWxecAnCxcOpf_30&nNhS)VXfd8%CrTbhs8C@;v6GtcHZ3+QV=!W)_cy`XXagfC z+sr!DEe{jSVHH*p^-3F|{`vPlS!|HMf*ci+v?;FCuHy`}=t0V2E)5MaFEb|XI?qbG z_ixXLy?}_4WjAklt)e{?&DQ0bbLnf;+SMie4 z)P&83iv(YQhK1D#Bq?6*){WiMu(5yvK|m9%V*QVme@R6T69@i3oEU#6LNrKYl%Ad+ z-kvk(T~$}>Y4t0coSr2qv}Q>%&m&(0J^K|YOCWOLUDWt@Z_Sy0QG9Kt_`l1WK*3UC z0<#m4zuD`I6ai7kLv!?+imYa3Y!Vt_kMa8AvEF7yBNFB2k;4t3k zWgrF|CC$7)@U^_WZR z=Lx6x%tZ}OHcv+HpJc==45U_Lq`BBC@Hmmn`|4&}qteGK9EcRkxSy}xqa`knA(Kx1 z7DordWmOI6F4hQGz8O+F|Kv)M(j%2mk(b&@-k!#JuW42AHduTPDbVyhu zThrra6CK9$oDJ9YAposWXd1#5Jp63EbZGMOWHr8XljrZ$swk|k7IMbIlH#5{6j8Y_ z{jMgHJv#D%k&X3&aiGB#?26yN8{t%4wFVHE<1Ysq?%3w-FS@qpTj?#6* zKb1g6ZqIL@Ge!Sx=ae>Vy)y_`dDt= zbbI#T#Mmcqu5v+yj?29`hpf)Y!QNLhYwIfo@%`Y`>MxjR7#M>Qe~$b5#ZXZR2Ws+y zA3Pq602Sd^XIeGi%H(2Ete}|Kzz=8kp0FwNY=w$K{V0xf0pBmjp{@`ImUyFxAku_X zqli?}2;2lQ;To7JR#xgc&aQtwvEIhY3`GTkF4p&Aqu5s3s6V}(5PDcxvRbNo29Q^C zjn2wc(j_Iog?>y?@&8WqjUfhrn2Hklee0pwX46^+hjc{tgSqk;{Q9=+F2Nx5vCU>UwUvDoD-&CDOkNmy~ePFdr-%wElM~^oH zAQg*37TehfJ0As;C`vbW#Cl2cEH2I@&h%PG>V>_yI*z>XudcZ2?>Gcpa5vC2Fq)Ob zhbIvLyzxe)?EVHwHz-_}!MMBl16qxykI`rZp*i)eVsmm|b&yH3LGCy7G-$xpQT3GV z8>k{ND*7I5T40CDW+%j zKGf@z#z+B`{8h8D8g8nh)d64nvD@xRsQe;(B}oT?IH13p=Q|d-+J*zP#jy~n;Y~{! zgk=H&OBwnc2G^d8K5O&*mb}^$iNaSP;}Iz}-X;ErSdNOo%;bYze}DftY!otF1dT~$1B|2^)D?o&@qU*|G&}^6NBo_Vu7otS{hTOrd+I) z04Y&ZELO{#6v`6_D48vx#GK<;85{LEN*3G049{%8XdbiMKZ?vKdvZEm{&BG0*;>qo zt71;2^zG&K)`pgeWwVY*EiNTBG^L2sOj#*fGXLP;*8_kF`6p1206B7r`MyNwXWO!KKOHmtFh0R>Er{R?jfmnpfH0nyn?H>5)OM%Jg%l4J? zyZQuK4!rMKK_Ii6k}w3xC=^i9>IGKhrH9TER~p`vU(QRgpaI?lI1m&kk-zW&ZM2Ui zF^w|7eAtdsoq*x!-D@dlxB4^B?}yI&vh9uIs2wEg52T-}c;6^a$E_-Tg&7nc^deBu z=G2=7jf_wQ_<1hO|FEhYb)Z!Rq##yUe+mx_>WObNbP z?<-Z>=*x_R*vz<_!En4p=z%+cJ$Y>mH%Ji{f-ZR9^xX!!HRPPmlxqyh*p#^WTmRQrQZar?4No`lk+}D5@}EI!O4Jb z1dNC4opMygT7Exm_)X_DCrhE{wz#pX#mo+-Fhi6nHmkFc!m9C~KbsB^@6`8=DJ{cF;3TC7^meyyp~_bFhCv zyOEW3DA7TR(z>m-x1V@yhW-XllfZ@l&Yfdy5(G0*9Qy8Ghaa9(5>zO{^*@=WKpP<- zplC_^?)j|X-fk`3iGI};42(VzkgM5da`KzZ2e( zZ*?@86Rg4U`sbpS3?kl6w`D_fHr%m_)Nm2f?z;XBKa5V9oB$xSH?g1f7Oa~(x|`aa ze9%@n&A`Fd3MIN5Cxbk)!`z?ye;loI!~D3Jz{13~H!*q5^)x@w{0v%IYyWH|%zf3S zFecrm(QJxPXXg9uc_{+zK7ml^cympR(4{EMvkejN#ANJIoo*S~+*Sn6)+>AF&B z)qwiAakg17`#V!CZ}T7~fKL009u)8@LKeb%H3GmH^sF|{#W21j#qYg@M0Rrz4Q{~GYk7YlstP#c0AanUQ2VQh9Yuqe+!yZvhji$U%+0pXBIpBwdvdgXYFm@R%YpjPdNRCve-e zP~K%5C78N%5Q+R_M6bChzUvdo1gsfA#q8v|`xQvQgrl%8$Hx<#jX=@e-^6}0xTqSp z$X^+wQ42|jM?j#W88HJz5)Jcw0nlP>bhONR2T_vmx_g(1FMn$i1bnQ4OI57+d9V#9 zPP5sTHyHV3FO7S8q5axT;0a>Ya({9^H^V!V=r=v-F+AYX2Lk1)l@T2toE+>tP9TbA z`OSiJi;MsGc)4CY$3Ez^xJTmFAJsn2+hF71u{PtP8nJ|h za(iszv!JuSKjQd$MwEz#AYU|P{tw`X%8LI0CcIKMo52F7B4&O+%=x2wrdV30Xxiw| zM&IVG#Vdl!b4cc&543Ox0&=v*N4S~_CD*|^i&sdM5uU~h-DfEv6LOIp1_p0O^my$g zDN~$|zAW03Np-Fcdu#?IuQ%Ti<0+rKv8A!JK^n4(#cJkGu|zIoCM6yC6W0A%-%vkr zQC;jS)X)PX&uF7$Kd*`WFXMi%G7$@f!C+}dF5P-Rb7Uk#-~*7r{RQ9LXqwcw&vwb) z@`3d8na-mP#VqW2SB;t%gH8JA?dovJ9q5v=Jt z9I2Sf4Wuyw0%T;_Ph1n`T-U=QfSCqJ#Lq>?HFs7*%ZtIy9`+bX9HS&h3z(%SFSxBV zqnSPz+A<|73hkakn!zNWdW4OPYz6PMk{CIwe>l^Rtq&HKwli1cFFISTC#&K$pnLPg zYfcO9Zz~EfH2Jc#?$LRd&t+Yl^H=0K85+KuRBV(&3qj%GAzJASBTDoQ14KWDBxAGv zpLuo1063v}Q1>ftF)?!);H8cQRp4a*Y+FNot1t@ z{>a9VoDgas!4!>0A8R>DQZ}iqVs?AF-%6`rOZGy!Q+*QUWQa zYhF?_Q#L&BTg47xxYy%IfgV6LH|25@=`Z*hywL!`_39x5sIK$BIz&Y+k-+{(4W8xg z(f%1R@d61qhm$4ToOZwK3@*n{mi*FJR`9jhEBbSx>i~g<;kbHTLaG26@Z~rk%tX|n z7gl@s!}!bTywM}U{$n*ePqWU)izv#<%5wO;Jv$*p)6G8Ud>Qn`x}$M~x>{F*!NMhb z=RIwU%7+Ujutj5{z~_U+(So4X1QHfnoVlkJl__?Nf$Z9psi>y8}s308+VE2G0cUk$0+cxWPmX8ga~{xEYAU{9F1 zarV4FlDHkR9ZBP_FYiUq?5UgmtWfd?{!!M-SZY@afRPlBV70UL7VyaP^j4*@$?@X? ze8wBSj+Xc81iNiUJv6>|u=4I8RYU1DZ&%_+)i{JKMJF;(|3_*EZ+HjmzH-&P5d4)R z7kFD~P9Aso63I%k#ig#i7pSl#|A%w=W@a@&{}6wkcsV4u!bAhUOn~L-ACmnCIQsw- zBahggO8M0917mF{d#e?^z)BKMluBQwOp*jI8RDx6+$lTp_(&Veb5Vn=L7*Xx;GT4h zk3Ey7opN*4l&YxXHF|mfu6?5ZFlAZ6t*zfE5$2Tq{8LDeC(61e#8ZDR^$w(uw^>Ni+C)PJzbd z;uay>IEgU)=>{ROYN0C&#NbHFkg-iN5B8X)ctpbXuc?8f^p8@|(D(;jUa-*;KF!ji zpo@+=CrZP)K&Vtfu5znbU!MrS%X+bP48Yz32${FhF2@$ht|OHt^X9Kgg-#yKKPsB9 zvf{7_nF2&(nj&GpgcVC>$N7Nft=h0KkNe@pnbV1c1Fyjq%WK4r|Mvonjgsq=qqS7w z6?8BI3vuIH+eMSfI(SVp~{)w zx>;Tkd<{tlU%A0M3Liji-JN=@BH~U`FC$q{vlzPUCsIg`dzncty?c5OSO&Nn?6KV# z2t7Bg{$5syFKfbHp7R7%XAHmD)!Z2Hy*C{IMsdhrgeGq;da)@*DkjIsEBuR;ax!AngIL(Vtx>6S~WY< z`)>3mFZantao(OPeXl+228`2%4&G1F(pEh679tC?wDK$GVtuz$1;qg5`htaZJv=^K ze01IeX`TlB0Z;Pt(M3wA85yI^Gb#WGmQ=R_yT7m;H6Dlms&P$JfnVC+Iu>7-r(oHr zE9u+cb7ZEED8s>7p`{WcOU-WQ;L}DVy|(>2h)SYG(D;~rn7`5{1W@X)P5J|;pJWKy z2)+1$a)*G-3BaP3>BLCyvt3NQ~AjbaT-#TTSL^1z~ zHX98FiC~1Erve%r`&vq%bT1+PlP#5`A!WT|20&^Q_BMiQ>?__HTmTexPgY0r_WlrP z&zFFEAOFrp=Tir!cz7nGEA(XBbScG$C)dr5U$H2`V`G)pFWXS)f>~psL`f4lvck3^ zI=~jvz)qm6r*1du0~Z(fbe@xRrB27ih_TG*$b-=lJ_{?W`FyEB#L-8l$AE6S7h7a6 zH#^FsIa$)4svHHrmcHty;y(}wUq_l?SgPuZX5*fj%6PH^CK1*!z-O6!!9dGQ87%nA zhIV~TjmZi>++LnbN?KRTl@%*yEyoaO$<9eynTP4u_+wzE1Px>5eY1yogc^w5>8`ig zR~?{iezi0mggkxOHH-6MBxD6iMcGJ4G>4|t-I?JGWG(jApN17*j?tC3Sy}l&)cZ#Y zN!fW^^Umk5-)>%ELqq!V18k>kN>?`#rW5PVm(m`}_50w}u#l~VsC*{JdQPU3jC z|0=0JDwR+|l@srX`5Ev5;WMP2vSgCH4%_-esy!p$?=1*^z9YF@J&~3@6Y?FKH|nZJC*SokzAVH#S^}YpuyD#jdXWt(faQpZ|F6- zX0{xqEh_33*gDLlev7k5Hi@-HugDHY7>WnZd1rCYJ|)8YhoKDs!sb93#l-{FHb1n;fx8hg3INhF+Qu66M-(m^W; zZz02UI$0+9IEp7xH_mB%mYadx30wq=+gW5IVONLC`H~ZCWunf=ybIf>7h~w`z{Vso zbYNZ5D|^l@DX3!%I3+JFAiJ%0k3|59zx8!AdNsmzV1k-{XoD|%8UER&=T`gB1|c2| z7TP?OsI_B4*`8%uFT4B>Tpu$!0rhe@@cq%e#uS_yRHwpwe1s|2yXVal?+{)mJk`A0 z)>>*fNBpT(v3JqkP6u(t#2U-W5vyn^*ShB&)o$=9$FtSbV~F7-!=7nG0IW?}o&rFp zg;*X514pW%@ME>LBzs4yK$KSf@rP&xov4m}-nhc4Hu3c&*VUe5VbVC3AN_XaueKad z0Z|H_76@O^m{E3Aol2)eoXUzmW7Q%=?R}`{sQgvH4}i(fEw|b_xOYGb^fK|%^5%lq z6-K1x(^6Lj`iAyaB_KS0`Slv1*G^m=7d|o>w2JlXNm_XKE~Lsd_HgBq(grS$tWzN! z?vejkixyjNv=K)}9Ln_2$CqxIYHHsJRj4@}>qs2Rtl#8|_-64Z?43t+&23+jZ&yvV z$2$XuDGq4#>)T;FD>AhgWZyo2l^Y~x<&8Q?=exSnms@o&QSqTh>dq>Z2UtG z+R2!XUZ$pot+!_d`xxGIVOeuaVG^z2dw$-~hs(yVpLYM~JtVdV$U~2slizV1Vi?eJrik4$TS@KDG{I{QY zj!NxKFuOO0FI(^W@o>3E*x=~kX3=gKuq#=*6lhfZ{zmVZ(94 zzL`Sb)Nn^BY-n^(Zz!fYnG2M*_f#xb(*O3g_UZ7A11)Ge+)XIT%c1Tw#R0!csG*yi z3qZxHG@)153#~iamTt#^cD;p+>;t@T_aRL#X@CB?1BV6Gi?{h^+%N7^{9ryd-jT79 z_0O1Jgi;0gANY0ShdQT)gJ3+Vc50{2S!*4MsKcT&V*+514sp1FZqS&73}B1&yTg>l zd^6Jz_UwFnCCm~9Xx8N;4z-N~gKO}VUREo*G+T$3QAKI|JVTtXugzEA->?CGjNn0b zdR9iH2!*(=j)q9_Rg*#zwzR@Vr`PM!;yuexm{dPhU*5Wd8vs5bcyD0^oOw{y| zeO5Ct^=*3>=48F*tMZ}%;jxMRaQKbF^PXe^fUorJJ7s2{9u}lGXc!21Spiu!I>9~i z5ee5}%bh8PUZ7y>nc(Kig@U?2Om9`I&T8GknszCHa6Vg+^^TCIANKsd$mbYlB)u+L z&j&VPGvSj$ZM^pwqyT7QWPOQ4VPay+ckAp1h*&aw{ESSi@TLXx(9oA=!bBMg@c@{& zRfnYAO9PlhuR`G&x^S(&5x5PmQKLp*)(Fu`z9fi^R-9NX!6P`ZvWZY*)FJC*Bt5Qv zO680O#-{@p4G27yG0=K8YuiVWV*rxJF>G)n4&6V$hIL5R>NQ}Dp$(O@IA3Efe5NWP%=ZcY37UaBm!s;GB$gLS3E{z*k#@bh;( z(6b9F&m*HEfyuhR=ey=(J?B67826gwbsOV1G&QBwUWB(qaqf2md{jB-iOsg0Ah<+YRwkp=XGsjh#WG^KZ*h@; zi?{W|Z4seRS@MsZOjx83tfk0$K|TR`D~oJ_+i|!GwWgFhys|>F%hd|=Xm4W*=yaCC z_YV3zW$-SsMgimI*%tK4liP>!hRA(@R>5w!=3V7sH+wZ?bauYoxgMbpt-IgA*&9t6 zDn@&ziqA!2lY*TOXgPR-5&CT__F~vs6x|gmIvy>4t4o>Y- zPpXy{7Z3OLmKLFSQ7!P3vHDWXAG#8SIt60!t?8*IA}o1o8~Pj7-&geO?^%ozR@6Hhr`^%)CQuKh(=aei*>nrGaf ztjS|Ni+Ana%B61)+3UW^PPH7fu}NkL=jMME z(^p6E(WNh^m!$#~1&Fh-u)uj;hGtJl_wt}Dt7<1a1!F0wT*W)G|_{X!By`$J#gkQ%Po5^pdg2!?~CRwN4GRiX_@TKeAEm1I!$dt5v``65 z`=^T~|NAj+cVzvF>IR#P%HLjI4mSPvsiW85HI?t{T;~Wo6Ikn(HgCl#kK`AlS~4AS zvQWrcuh^1(|8!mRHg!5NkZ?wAO}Vla9NmJcr>KB=&Y_r|YI4auYUGc5B!y$?rbM%y34xD%m&UhC74T!C zzs`l9VPp~57&k%~(Lz|}$ZZ@PsDqVp%vhV{yV6l{ACB3yOJ<~Q z`@JF;=nS*E?Z`Z^71bdxQ~`9c;I17nWBTBqgBsMkuqFRN6G~* ze-Rc!t%?0uHZ=OFqqcJ*BZvl+Q!w`Q(?gaG*%4*fTpABxPFwY*g(Y?D+UYT3d1CV!E?46c;T7Z7z{QLpxQW zwbY0n^7jT2k{Psx_j%|;r@kd>KNkX&SysC3 z^oEV{(TTB8LYJXPlgxGfuV6t(oSN9*jv18KkR_5_NS)ia$|*losQFi%jIxT-C779% zCSVmobB3gJ02u;;%GRO`v*T}KU`Q;}AhTvG&1<;EO*uM=&! zogwev$$MMqbkdAx3Oo$(0+AAswMOeE+!^$44IfJVaQLhd>yJ59?6D~*C?+aZKTya) z67qGFQv5#pdlNCYsQSpAFMT&Ta02$3N`^;mFOm@!OVf@|)MNeXVzZC(CN5PpQdw!mACy}%ff+`( zO>d%4N2My_u^Y9VstQWtAml|8yH)u!tCuq&^F0 z>U6%}(L)9tz;QGAB9U|{;un7N=p`yc?ZM;8&F-{>qhcE>d5i%Aj6a@!IsNW*53GqH zv;nq&cJB!2EbvBwL9I=GmfTi*D8>@wrZbgCSAM%pBS;uO;20t~oUIiDG`BtNy@wHv z2+z7+w{SV=2}URMMyb!Or9C}iuqq#ztOnJN+|qyABoN-bxS&2o>QOKsPM55_e-Qp( z+*5f8I~$e(CMTj$wtsprw7!(GAVky*OnfZBWF*odr4_y->n)XX%GcDq(h4SxNuG*$ zyg2ERQ_}Bb?6Xzu5HMw^Z>qbzx0at)VY|J+u1=0l0|6IUP~B_xHoSz>0|kdVBt308 zA$(?sk?%v+o^E?DrgWvzmPP{YFpR_1eWA#s-jk&j{1>J@d5=+1_=* zXgKt}8iVdszT;wz$v}3im#&_k_*S1sA!jHGgm(k4ge<>tw4NEEFIA>fu5Sj*R_T(0n z#Yh!Ep6B29ja5V!TYPqNphrk5H`!eeu=ZlQMd*RzQ$aYs>q(<~}ml`i_prJ}48t z(C~EQrd<|7XLfH5Ycgsp0MSwKuGBMfeYL$Q*@G8ijH(?WnuA?mUL+dvFYlHN&dJmC z+<{D=~*xo5$gbx>b}n^N^a-X>ZkMYJvGQVR#Q^Uvp&}M@N`9xR3zyO z2Im?As?+x84HtJP91FXN#)n!8s+`8i>k%v3gvSx#>3^j6aDu3k4mBdsFr=f8-uaun zz@acHEOK&PrNNX-{iU7pZpMZ)k=*KT>y_<`4ZTb1Y*}Bd#q)(gdwSA+L$%rH*8yPs zUc}Ik$(hf%cs}70Uwb<8p;wpZ3>Qa!t#H3!DXuLqwtJEWc(U~a{{R<4jnCy9*pY{2 ztY43n0W)SgoXOfI2lnjz<_Gh!2-voZ`dwC=h&nnUCDPVGGk6rtw5V*~8_SSS4vM>> zL4JHiCf2up^N;$XQEE*h< z*zX}(e9hB~GljC>+#qCu$KLdC1W^>;pZ!}6)9ZVkC+8&rhGi5*u{LWT@g%~hS@hPqM1b4iydS&Pt+%{GPoI`jI-E?0R&Rft(=LdKRF#7r>UN`Mq>sL z#!8ZdCC@~eV{zcP4*nb2nR(zv%xZfN!u7#sx|3(n^HbQMI?KYzDg5skiVh25eql@) zI!^g2DgY}q-a%|>FMc? zE-p6Kzr=o%uNqB*Oty=lPAMc_3aFE)W zZE7T&0l&)4U&oLH!uxg~V}(ZNy*?VHcRe$Q*OZck%IM&_DibMN9@SuuKjNGj-r6~= zuB*K@*f%kO2gc7&7;xR)J*9JKW@g4}GIUw4*AbD%iKd);f%YtVm1xMA@uzgkB>zP zI{T;Q==EmdxZu+}G z2Ib{c#Q8m}wK!j}R~hRWs;vo4^pWo-7<9Orlag}& zwoA(O49yX&)>g8gPs4gHBAjWzV}m)bIOUI4VH|095Lhv-_kunMBdyrm-8>%iVRMu}1yo~_0Epx3Mo!Eno=vwMaJ5L4~zl_=0)9Zh!% zbntu?Q5R=(Er9r*4}`nocg#6loF&X&(R1rl-EpwiU4y=Cu!$>1m((Ii6Z6M9WE2?tDEGV{?Ru%TWzs&sciocO( z^*Vj3&LQ`qdA!~0XUJ)p?|4J>Pea2K9lrrbIVGDX+T3?LhadT{kByUwi!Ps^+@}^2 z*KxeOdJ~ggylqxd;>92C&$t5@t1uknJ+Hpid?W-0`n6-_L`E8!df%pU*+?S`VW!;En%P}$S?E}sD1oT5G&5I z^wcV0K*-tkO;zIvi-$vt(7!qoNj*3-*V7G-&y#81Pf~8=cN)Ge#?56PVHrX|y{jQR78%bkI?Q&XUjsz5KPLtJ5Oub82%{Mf;P3c#YCa8Ew!^7{K zdLXlI9`p5EJa(#e20ALoa#%_n5kE5T=nhfOcAhadC!O%evwVOGa;8RDlgAb(%2t<* zg5@{xn|gszjz8BCD4lJG)AG}+CR?rd& zySzuk4uy0CJbr}`ra?yEy?h1ZACML5Nfm4b!NLL zVHPHiwBmQ3=X>N8VXCjK!y-$NLzw)gnnp-wnCGzH(IdIX#_)mMjplOrIpK9eJeQJ7 z@kUrJF&^X4RF1CfPx)*%QAtC1FOt@qJnAJ(%GHI)ed59`S(FYIr-Osmg_0w9N( za(boRTrlQpdy)&`q8uw5BZv-3*>G?ZWF`9bG-@umd8hE|2kWrQX;p+szORI20K_q} z>o+PHGE5YaZKsR1_+Wg!!5!6n7x8M)DYYZcV|etG%4;VXm|(x;(nA$Kd9 zRD3mx1TkrII3GOGJE-)$_q25IHS1=^Wk* zR%-s@`&iv8dAr-dufJq0v}#EF-jD;~1QG?Eh!VkWQgaQu^tzpqy|53}=8FrHC#Spy zI6ysWbRS9)PR#E=#>Zs=<)brGph=$ZyZktdamoAE=)tyn!EYL6_k_K==Xg(wq5eLa zxcX5p;EMmqgAB&i=$@fdIJh*dQo0yC7jM%3aBi~f9}{k=m_(G2p&@Xsp4%fx*q@I5 z4iu(`JKNqk$;qrQlk?Wi57Fn3kSTS$%q|nQ{sQ;rm%eB|&m*D9!{tslJSBriXrqz*U6Rj4tdbY!HGCBGl4H4FljU z(4>L&06igNiG9^fr>zAJc=gSX;oCCUXskbeAI2g^6xOFsqNxc18Z@4SbIs9%N0?I< z$*DNK8NNjdtv>QH8CE_eC4!i+@;U_$afVK~cd)MQSq54%SuJrMXg=m_L7Z|0-fZ&Z z=s784QNIF8NOobH$hK~@gYa+BfF-x`IZ0ll&C@n4y}H zicCs#!@cdg!7Bzvkc#w8b@5XcKcZv(V9m2Z`1yKEtrv5Og}byUt8?Y=!z)#&^p7N1 zPwagQIYW}fVgmq`98c2u*X?^f(CqJ<;p7)~h^uJ)B{}Ade7Ds}_bE z5tc43Ek0|RAB=TfT`Qh>c-F{Z=9OzO$> zYuzg@&I}BVrEh@d-w_`?_1QFJh2ySA7jF+^9G&pr@l{Va|1R~!a!Q7zuXe?;RGi+v zNls*}-{ykGh&1~ii$&>5R*JcKUSNugOB7csAo8%PptfF0jGs5s7CQ+|OwE*9e2js* z6>Mr|K2NDbOafpBH2D_&X^&|sm-OH4SS8TuQqp^^mU^cg+n{u$MoF&$vx21pBFzw# zx(^oqLoH0mna5!6BKQyqDCRhYYPi+iIN;-5` z_DuSY9`S&^y}_0b-C1^x2T}3Fz5meu(|D_V;o?vLA7W(p%8b8Y(IeH>ipKz|ZBUHR zUnz1pFYi7hG-Rv9!@Gy&HQtu+3!BsEn3!Qf?I^{Xzn>C6>ay5LSb6dP3viPtE<$Ol z3M(0rD$LIbLy?OOpM1uRciOi39?r+Aps9;5+;)RNGcxdyFvZF!G?n0e!$QcWO}}=s z<7raR;~_Ot3LL~DTYxkfwBVRo6aX6;53z3aiQ3x@rt@9)&UCP-!q5+xU*;0bW_5AU zrh3GmzTuB!>kc$KnO0We4To%|QKwUZ|3=m9@&TVOQ&+;#ZnCBFeXIFyXg!r}i;!iv z`7m5~IuP+1EV3|Hwy0|OHkLA4uGNqL^zSpdqTT_|V3W%4C6) zIGM|yc`ynzy51(f&q~bm3EGEVgp`GXmh_&4^EOSQQC zswFvq0?aNpu69^!C85x{izHmPF)_j1uKKLcRHsypiksy3IHDP*hHr4!*f!UGl1n|4 zu_SNNPHj>iwBM;G*eAjm&$vcZ00eM5kK=|utv@gSDU+Go?i%#ne=B-93~;sTdmVv} ze0xQuql_|>@GBiVSxi`DsRCnWWi#LYm>pYdj{;gC5T}`tlL$^(QRLxWCBt*=t#q^f z1$$={(HDehkcIE4?L|;K9B4ylN;u=eec*%*>(vX+}gJOo4mq9 z5qT;nZ1NJ)6Obh(7U3B+fjs8}KkpZe0Xb3)emfj_rYcjBti<9n%=W_k?xw*C8A$*s zikLj^ve2mGyM~vP(XUTQtq^y-{5yMTvw<40#r_!pEvd^ahBu4)Iz?nBaYRT1B!mG+ z66>i~d|}6=R1voU;$*c6^C=5V9Whnxe*Rt0f(hb$UzJZ4`mc z4A4s(O=>=6X-N0I*ST*<591LQFM0F0Hcf0Tx7f7EKOy|UqLZ5^8MWX$B)8-da~nVJ zDY0O1e|{Qqtr6cE6jfCXcz;z_E{%`qd9v$bFj%Z4yP4$oY&7l*-nf~}6C3XvJ*5o^ z8SWdT`gyfwvC>2=a=l|lulpk4%*FRcvEBw6S*Va^;pE)j^u;!nR=(KuB}FBsU68S! zH3MsNAtd49NemB1(rXVk+U&%*+3osRX;OG#x^k|5_#xR7W)3_hBEXs)N$=nd{T94Y zOtN6oSf0}6vxs1e=u$*4{i`SB#^Xh`+5C*oz1ns0L}EtJ6^~;qumT>V*L_h1v5Cr} zulFh?O?7yHeR*Q(olcpieT#0Y+8>$yTrz2Ds~d}Un*@IK5^_bxFu$`%k6g}jpL)G^nPZ@zcX7mf9)_7Ejj;yDSFcC{*|G&_tikv^Uej0te4sI}P{x zzOe!|675&eV4S((+$C40^Qv4nxtfvNB^F;xec*>KK7fBWtAw)3Jy3AfI8zoiO%{fC zV1CF8TP#_S-X>m>(@77BK>p|W%vVqYO##jsJv?>D1n zY;eaQ7WFF5@){ecW3V&QM?dzI6)@XT!6aLCcp?N9=VeKVwAd<#G+*|Q!eTqrj{{vhi#2Xic~h*AavHsM1SWkk-oXt3?eX-Q8OZo9v!$w#CNo48CsUc92Gt0)37?kg|NrVT9J@#ByC%MX4JNycLB#w+P_e2N-&Ky@R0XtPVrI%>_bkVAmnHe# zXylROyp4wAD_q#0t1&dORZDL3sEY|*sz4>UkybFKjnmG{wopFBP##QmRIHv~d zW>o5YSY`jgxb-wJQO``><(U5YLee)gvR)*`(x+-$2* zOBD0a(>NF?zijc*(D;~`@R138fH&C@A4CZb7+YIE4c{+RW;`y#&|WS${H!*8dlGVU zx1r*CLa?xqcfTFT%FYIal)C~G88DU8yY|xIyeLFS%lWj>y_^Ll3aIJm*nVDB0Z>H7 z42o&8fHPku;Q*Oh?3Dp13kjDaa3_%>`6|VBgjlIW>TBZ#-`KrX($TB5_+NVs|KNzo zy{E)`{Q`?XQ<{`roA-2@b`P|_X?x@s>4LqX!+BjAkHLjsm#-HgyzDl&=ELCr4Nrn2 zwt=bLKY00U-G!z5IX zv+Q&d^k+87W8Y{A_@%|e&qe@r1oFZrD?lZ+|MZi-)9o_UK7eO;imPw0SQvGZefH&8 zu;rhqmh_EFO%;1=bZ&MxfuBHG*j%OmUFBaI${JR9w?EgYnT(6S<@_wb;G6PYMyKar z$dUdx*p`5V>^#D&TqNP( z2cT!|Yh=^dFzT8n_5CT%I!+Ui8fdB~y1HjDgfr_$@Z%&3YR7%fC2BKi#1xa>3y z3~gk1be-q^or9EMo8jhefj2*NBIls?^yc|zoW}HbB@dH^1r0cQpodaZic89rD*=M< zWY+e}cv^Ekv3U1!M7{_#o89zgIc5DHI88cU&*Qh-JgBfp=zc7a zUewE{q`W!lPjcn|NXF`bh4?vo`WezvJzpEz^8o4WxAZ)oemO5NGHX+(H*{!PKq}S+ zL^aj!N>9exb2{Kry+R8kQTPY3+siyNI0!9PI#92xay6b`abV^vWXzjlom^cFoXR}P z)4rx;54v|nHM_Yn9ouaJ^W%_f->;tqfw~_ei8k{e6w%-73GVhVl?H&#{ncWbP7XDN z>Z;}(O!4!U<DE-fU=ybtB{$Ed1t&16 zEA>kI*(Y#i)=EBGX%$1o@`^q&{y6=g_ck%LY_y1 zo4y!w%7gP^*M2FYGl8F>fbZW{P45;2FEW> zPtL}67~TeQ^=}M?fDna?kqFnw4QD6IxSKPn4+mMre@Xb441u~Sg-ns0lyWF&XW!&F z7Z*+K`^41mH*tbUDVHsE~10|6Eu4e{eG(q zOtxzmNx5!a_{rB(X2%sMK#e38cOeL6*A)9Ov&9#xJ=aO|c4F`3KVEOX(fJ;UTg z$Kdf&BTGkXlkt1udT~jK@3;-T7fETUWxP`C74yee%{_iuZlClZ6#~S<*b*$_}Bo z=7$=*T+@y{>|nsE!jVED6iDaIt0nGj!FUW=+1VLMRmBneGd24^^vTMZa_g>(tLYh& zB0*lfa6e%&$LC0kX9xoJqqkvQ;}6pXjK~otQw9~kW(w}wCI?~}?Kq45-IGz6}wZ%2O#VesFifg+-i zB`Q(}tDM0Uw88Q5;CqDes_afv9E?I|b&oV70LkV^ljqZRo<{mAP(w4dPsXHPNeL8| z7mAjw=w1u92xvcY0;nlLD$3S&&VIXW@bI)ijYvSL-^b2;T^k>Fi-5kTvf6C!guhL2 zAA0+N3nl-vbLWAt4FJAP{g{9+Mb?(|N){9!nAsfMkX$6GCoq^9~5wq`_4bXxWCl- zO8t1Tfli7N2A7Hs@3OM;JzWD$Jbe(hI3OglmQ@Y!dtTt>Z*RZM{36QhJFjgK{DFWc zGif2UMb5udl?1^eCIyETdN#nhNiGJnyRiSb7T{|XD62Jb>Tj~bQKFU&*XvqLElsVx z5_%uz3%&JQ|0jv2#+}6Ekio5<=4~c`zms`G87-G&n?AmE02O zvB!YTwjSzO?7O6|4j@ltcodhdh`VgzOt8el=EZtxU_gHJI_z!iRxDOU%qKHqk4<1 zB&E9@%^{nxbRL_%J6XS-97X1$n6tKXq=lLjowmTzz89v0`s z>UQ!^ySU6DG{g9rVv+VkMxI(5{1LayxA{T}m-!b~+XoLlDoVPc4ry#TDIeh~Md>ML z>nLEMn_k!T)32o`kyd2w;7(=O@O0km)pprsJd1(?b7s4KqBT4u(K;1;_A{;B1p{hC zwF?SUeVKq<^WxCp@k9n+b99UsHX zz3NYS>u;LG3)w5)R-V@v%T%r=LJCi<=bKr1t&v8e5FdD|$_gC01z%mr+fbloJds%u zTDu(tIvB8-@-eS*5Ef9QTJx>WSpS8#j9eZ{d!m+;u^j_27WgjD7tb^*z?jhgle7vm zjdH}5r}>_7gC%G8QeS)+_5`3S#F@zW0m+ZAKDK_c(_uw4GBP5Q%;Xrp*()zZ(WW8n7-`j|ZCw}c0auu_jFjsv=O{Kn{uUTlZ$ z7f2vJ;u16e)*UiwR68)uYeiC!uu!B;5RqZk*e~Luqbs}N5)KZPSaCU>z(lmk8lHYQ z_EC{zU?dHtoANH#UZ($HxaWNz@aM({>N$~-w5E1R+1^+CPrGJSMTSY6m;^ytd0!f< zRvD#bFIEdkz`S`l6>vb&$;~2`^@M|e;}#|5Bq=BvV^q_kroEqfm}1}mU0JPHuVJoU z|6z;Vwm-?aqGICDo>LCRDxbYj`sfZPHMbq~8-m1Z_6^DGP^RZ>MA?qKDF@v)VR z^sgudqy)^)G@wIDVE|gH(v-P!1#%U{g^88G&XV<~n!l*QH(fE~Fl{`#(<}@jkCiQ1 z^~&Ys04+_w9mTh2x7YX3Gs`0pWsV3S3&_J2O7? zEJ6Z6MwxC`lg2|BkxmR`x__Wm2<$HTz!N!||E z*Q#Z8C(UJVwQH9(cg;Zpvzb>$Gwa1ntMvlixNp9-hN-!rkhJg>v3ysTJ*`w$I{g&o zU@xF;?&hc2aQ%lviZicVjWdXwUIux&!IE@ZU{%t+HLDC3d;7w2GLLF9rOw)%V_hgG z#w|;4!fJCJ=|dFjdC|C!6iD>75mg%wIs$gXg0RhQyCfbwspb0Yu|KlTMcnO-*L%>8 zepvmyC`I-CAPdv-Qjfb{e?`@YuHk<(MFNg-Ayv_o$_gv+sR~&e71eld=W9korj4Xw zh~zE@R6{0!Ww4ff>v<4+)D`5|cIdE5)n?2mSWE2iUP&y@DNA-dtXKOz%1iBmupi0U zLZOZiHzh@<`5>-{8^i=B_n%|FG_mr{Tgn2>5oGdOAww2wd2NNVl?2Jd2?Vs3`zg)KpeCjMKkn76bXzl{Q0mo(F`Q}u+sZ9bBhFn}-5ODi^1 z;7cEmZY!L(eM8@1oxfu8(Q;KA@4JCL5O$@?E{+HWZUOarWFt(R_)u$Wmz>OmJ>Qoj zZ>L*8-~e2MwL-9iXJK&YTM+Qq?=I$k^(&ijiPxe!nrMiz>F z;9;uLFgb1r-hgU&1+h8)S9;_=f500$IKlB8)J9qm7ZR5JILR?pNngs2I>lSq>+c;! zxK{;cEek{yaIN*ct8ofI?E%;39osi_hAkF`fXwV%I*?JpCh!V155Q=l%WaO%{nZfj zQ~=W>Yvdh!x6T#qV-Pg__;&fb(^(T(e-I1nPhw%%9j-u*<6@VDgIfRtE&e?D&2ZK2rDbHDVh z;b}HzGpo0xJZ#OLT7=-^=^r3={HRI5|6L^{&x@2cpI=E}*|?uux%gKn{6jK`E~w9k5( znmc#F3=SX!@lx!oY{LqT_N9)zV@(-dtA?uo z=zAyh1z6&|s1J;!49|z90VKd}=cSaJ5B4g@(VQxG$B!i1h-!#na6aWU18B2ApoHX9 z;CBwHfiqk0ami)zq+YHBUjC##?YZ!#f`_}pAP5rmzrm#4-rMr8NW`l2c)=+x^|FhD z>Lj5xVxb7=@{Z}Qm=yugz-><_)!zqQD7WHFL6p>0z3b|o@?IMREZ&k^&qCQM@<3> zX_0~c)+DmaQN7Ei)lTSCm6Brgk0AT}Eq0E^9NK^DKvQR%J|haSSYxtj7GIDF4F!+N zhu-E2x3*L@ka+>_VDME-HnXk4d3a_4BtWg92@gvkU*bIKXRE3}KpA$$S!p#?Er5P( z9DlKXsQ{|K5!bAdU18rt4Kfy{c$=>fuPQGBQt_ zhqt9n<-EA`Cxr=M+33ru$vX*lB@ImPo_Zs*+ZNSmXC0&Ai|QSy_l%h0tZ>{qWFGyf}WRmD)`1A<}}apybaV8o6^@PwI$NkpGlCdJJs)F6^E*}F zY?9SicQIm@UEgQ{_FuNusiPCUKvxY~jYePRuKIrD3KnuH7_--iC8Lh-H>Df=34PD* z;F7Ysb2`CVeJKwy81acApDNXg53SIDE&&sF0e&CL>{N8An4Ohi!s$56}GHv^nKoxUkc}bW}1PU+;Pcx=6VAw_f z_Z<7JBTD$*KEI$OyfTq8P{h1Gw_A7wNst$=M0ZWIH0`dfF(RzzgrWauAqrn+w98h> z@eXFAPu$*8OFB~C`rB6j`uEw-;J>pzs}c%3F-W29d+Hjt%dLy0KgRM0fC?VJMG`K{ zJ2|ntIJe&1t#Poh|#|qf`b$Dj2=FoRAVoUb7$AUW< z_HSfQRG_j)r=E*f8xxB@L%KJ5pLROtcgp5f7SRCaW(fw`8vc*6XgB08YTQtgX24w{_|sH1z*DqLl;S z417V4Nu>@WRhgfI6hVjy1oj4g;G|+;6#uKgbqHfL#zupZFbBRy&{LaT%1w#WjDQv3 zKaxGGav8chps+BlT5_dm;yw{Qdv#y|%O`7|69b?-G13dqebcsO1z?9`Avps0C#PpE zR&*J&xrkV7buJa(O3dCsgo5ZoU&$mR7fA2WgG)IGiaw!oy;{yE zw|$#Q)l;9e8f~Kz8&P;0ZTc#0IcJp7;aYrfYBXdf1^kv;&h^pJ^?bj3Zv6a7-L~g-rhR*_cWC`ze{72)ogfjOEjzTbRYy_urTrdvG_R`B6elHOfnDpf?jfr z4TCgtHJVttY5m9QRh+`iUBi1r%v4iQ@%e@;bJL0$Q8|8$^xoQJ)`D!ocPg~Kxd@|i0{6>4B|ifNJ#7cwyc z{XWU-`jb6meAMxLj=(RS4F&x)0IHwO6*6W2I>$UUTd1ET2Ds(%tggKc`M@hy?WC|j z>Vx?ZP8BLRV?)=15P>z|ryNDa#Y9m&TFJd}_PM*zYf6F8JyZY<#989PcvNKj3={`Q zHlx=)hkU>y>gPyJ&&KVG0}GRUN;w+^55OVkwq> zFcqKT`p)>AT2{cfIsQ2Xg%>WrITrso*?%PfR$LW4dpP9eECvb+Ad9)p$czedy}8+d zzOKkyG&Zl-&B24rhic*4U^7djm9x;vPw%s1@mq)NXW)WiaClX=0oD$};x;YO{Pf)1 z&RdHzU@@5#nc-1wI;#~Ji4!E+;sK?%5+Qr<;&i-`){kgbWA#e;f`aoP>Y|ZYz0*DI z=wz`Oo+xWoYdmRheU1Pc?&w|=)f7Fj{zTTJAc`rBshY1OF(N?)kd(TziwM?gGiwvd zwl#9lE%CmK%rx!v-+tj>N)CCP4-3x_h|1)D$*s)4>ljCW3RO8{@uS|f($Qu4(~8j) zr>!`$NYZ)ao9oC*iq=Xjir1N^v$zT0UX5XcVWr}XgxLR(1+9u{nkYjoF$i9VE9eP1 zPnS^8UT1TGL9&SF??`oTbdj%zU<~Ag;?rX_gY{=zAY9Dewp_xA*BBS?of^JsvY20) zn>y6JUxaiy=)z_@mZdt`swx|f0hI*oqWmyr+HB_ynRYZ!3~<`DMrrhg6>F5LGfJNh zWIit_&Y_Y1BQxNj--9yQ!}?6xV?>uNfVGj-1WBViM`%qyg47(a8VZ@!t@Lv56Fp^AUO0r8-!CCpf2FuSTWS^59zmnOA!LyyS+pFr#$kkR4ZjQ2v3N zl)cbA4!rg7p!FJh;WjTvvz!Z%@TX%I*5ykJ`-dvblxAwS-)rCy)O;BXP;!wn>cmyE*MU)z2(P2RVn!v9mSg{R>a?4bHverr=h$ zh6}krgHomisrIv72W^nkVJ;&Gi`b_M1lwG=|i>DNrf3czR z3VAFObYxeS+G&}6ds(?HPiOuUhp(<2>+AYF3I*{uufJ9ik(DW{)TP`x?IFJaFivoV z{$)s(X}r21`xy%p@MGbufvtc3(c%3DXSp2swM=cJ?io3OcZ zTweMk?iUfEt2)6aT!Vuz49SOC_*AA+UsK(!UtshB(lfAr1rs0y(WA#)q3x)Vb}Nwn z{my7UStVHGb@57`71k|H`&YcAZ+Qu)K!#F<9}8^C=?Y(i({{KsfN2hAYE&*5qI*rW zNy^IB2+1t+WmfdFDP^348F2(pRPKDTeDn}9oIdOMhAe`F*)nG#F7LC92CLjwbe zCqo;wGH}Qs0O4G^SAGad51?kMyMi>@yq>y!(TQnYO~9 z9g|-UphiXmq%P$lVkG=SRHT-2;C%GEA{IY5LlzRTpfokM%*_IWN@yO$#ESPEkSNfN zCbLYB&r+;`f}GY` z^aw3kQ+FCljtQ{fz8y=q zxSyV99dA6_Yt4Aq^*qzs>s3CIuW1D%PewQT^`m_#3NM6!M~`fHhU{1EpEFBP=IA~Q z6g%q9-t|wgcr#i+qhNS}0l(T}hKLN2cL&v~i5k_zk_(u3A^U##OddYWj8@f{JYQNr z86z_ZJl^T5TVk;j&^jXW1UeOHKMH^i^&5?uuv#M{+q1F!RWJE>TPo4faFcSE8(z#! zQgEA7k`3%k{1bkIo3U~aD8W0_;KaZ+R_P6=RtXx9j!-moHj3rtd|^uZ)2<^WeYfem zrl6-LrssmSSUI4qSBf9rGJmiycr$;u`1EkT$PzEXoG{FsG+M*L4m`feVugiIDKr*_ z#(wSj$qV2Na1Zx+HGrv54ND@-$|>5q(p1l!%5RY&d1^qTs^^cKvU;rJJp^o*x9DMx z-NZcg*!>f47-lcG*qN@#bmneJ$Ahn05%I9S8>xWr{81!-S>*+Hp< zjexxZc0{|oz>=AJu5)%p=VMuMg)^O9=pYdE4)Iy{ zGz3B*Ed)LS6X9*Fp6>P!J^c?W3sF%ibn}O^y`_Z+;3i(H(OTpyY#CaHmW8m$4GeJM z;2JAw^&Bm9hTEQxu1pFH3`~JZLq3l)wSYGU1}@>@Ih<7qy0J9VR5_ti^54)i4h#Un zwq;=%n)E%SN=XtU0T=v$wr@EFCq8k@%v9FV(J?h8Wjjx02Y3q*Aq#GkU_f< z<#4iW2&5?c_*=H?CZJzFekyqHE4+MjY7LC(iEhq_kY|GU!GC}I`AQx*P#ksxMm;9e z^W*{DFj9+-FjETqLcf-3|1dd8LpLI9TVBp%YhoBQGMpA)_xcm=OsOJDxK07-Ggcq* zibUM+Dpg+d;`*MiZeONX6Q_!AC2Vj9K-Kri1C^Roq-x`TZ6DM+Y;5OG0=TVHHd5ls z1PaHSCv8tVniDi=^Jdeemsza7cpeIhM`@--Sy0qPm_y^eR{s! zOkZmb?CoOwJKV*sN7y#q>}@W?P+@1artDiGs;ns#CNw$s+-7|Q4Bm%_hsmg@qR!6N zN-rDqTTILk6_u2v?Cs&9p#$QR)T86##6?A+-QA(%6B89x@^zt=Ra9gwEK(+{_V)I2 zp5^x)Qe;9)N-nZgF))nx9L_Dl+1Q|!NrYBoW9z9|m}y>};33Zr|8KbJz`6dJnprzTE=q-I*=7ojWP! z`t65RWNz)=e2=#t4UW;0&))AGU}uEsSL~{DOD=QWB=rwAe^N#WT%*LO!y_(V?xFv@ z_5;a(!b(fevydE}CU)FPgKw@s*4|CN zCt*|i#Oh433g{nxROwMVtw@RNP+6x%OZXedeIrPNn%PgV=p*7E3g}o}?mEMF@qNTa z@%eCbKKs6lqN}*FG|#Pb*O@_{$uIdgA(u$U`otD+5iQ!vE6#BJ3lo{L_zO1&b19Fek%@^5hGY!~0H1$68g5E)OV6%e-rcxbRSqk;V$BD_xDjew&@&O)Xe_ z-t`M|^FJkIl2W@%Vk@33r|QI}$=w|L!e?F;Y%DU@IOLx{1^9cjU}aqF%O`cH%LW%=HS8cY;-7z{_7CprsHTFB!*JEtaqKhSK! zL^os#9*+mgAHCro7J)4mxSVpAiHdgv#*3Gf^fGJ(-Kq&Mzma}y;NlpqwY7|YP4=u4 zFLJzdHM|%Tq`HdIm%L};FK&U8`-4QEW-RV9x?odsEGo{ej4jV)j_R|P@28d1-)uO9 zCdXTMYw&nNRK)UJa@Z}gr9?Gxuc@K{#b}=%bx>a>vB2QWJmjU^`t|V|1|pSu#)qkB z0J*qjQ_~=!V4u8k(9~rHcXQ*9ve^eiNl8gEM#dO_e-j{bC`m}3UnV8V$;mg>wqz+2 za#`7g3fO^~<(8xNtCI%eF0aq%3g|!5VEdbu33P!T$?2Irvu3R|Gr8$&zbGguhev61>dMk{cI08h#K|Zt@mVXQ zV`mubu3>@n_<6CD7N4{+`t*bsbZ`)tmNwZRW?SF!gD~a`CnvxW;n>>R_VxFJqoD?j%@yMw zxaS$NBoXHm2Orjdd-j2hwNTk?%`Y&8Dw@LZ#_i#e#^5@`MhIB*2MtSY9T0h#U_L?c zdp6e{0p$Kc7b_B(s01G|Vy@lwf@xA3vR}S&_Qchw`yxIwU3arm7N$;bvy!!kTNG$0 zDo&1rsb}qMxE#v8@zj!9mFdFqXCy{nBd?{wTO#CZjTdXD<&uC+H0|V%qmfz}$AP7x zEnOKUoAm&RkTTWQxP5cyn8X;!KWVkpyICirVZH8pzwx=KDntGohRws{W*)3|4=F26 zv2N#J0V%^plq02x_>ihith2@0Uw@y?q86_O&oR1RoidcHuwz}YB&%~GIhzpq^lmO3 zoveZk?`b@I*7CxVkA_Pj;OR~+8zg^_oNr~hIAAJ+9P2STqskS21*>u=CDKlm*Lqq~ zaYLHEbXKxm-i?x-u3a9#_h>~tutksTyEL5n8?Q<`WZkk1#~25He@O~1_qI7q!YhRc z-pFXtJvs*GTMHp7sw4$floe&O@g_MkYUlTNA^3;8Lx!Aozd~!MstQUzuw6hgeFxYE<$f|N#~`0jUxw|+*#dw zSAIWP^`_(LkV1dhv1tkXL=T#!1?ue3%X2D(58ox5t<`!^WL#3U_cl5)10?)OBHoZh zOR)RkUyi}u@78_g>wLu5D;N6e;ciiFdlIJ_j}Yw#uYP}Ljx)zU#OC@|6NGNGjh{<< zpNy7;m95u$yY*wRxlo70Wt8d6Y{(|R9sQE{80dj*2*M|#jJos2+bd+|WOI8yXjix? z$ZX>|Cx3Rd4pXIi)jlR%n+Lk|=(RpzPh~jJq7bvncW%t#d^)pd87@ zj24@;iH|5@W3hrgSTKIXwJlX4oQ{9McL$cE5>#REQ^5b4~1WTlWgUGdn04u_I#Qd<19ah^5lv z#YQJ%L{z6bbsb>Wb73JRIJnm*sAmNDEeXCqw2_gH)&Xd12It2?s)Qt*=bB1W@LjXB zVM~-rC0-5AHhC%D_U}(Gv^>vSM8Lh&#RNul4pnm*r4@WQ=$A=F;7o>1=4qy`k>I3u-FRu7#@=iWUH#=tb3`=+EDpzB+)rZWy z*Joq&{GR0Qc1}8v-@&p7Pb@Ir>Hr-eYL+*pETOC-8=C}U!uxweHW^ii+vIQ|{06JD z0BAc4>4H6LrPDWWrRu3|SexqcB=-(3hMHWkDJzxdNeK|Q=XZsqD>DVUsv7BJRSz>t zKcb8Ka8zZ+B2gZ1F?2xn&Gp`){+HA%mLoS#n~nr=Mlw=AKh&{k{>N1lCSI?$L3l7Dz^Kk)e4-^JY0Y zG`5eIVv#tU0zlY+Ci;QPBYCq6d^EkIz11s8GDM_pT-epJ^Xc$9Hpaw=^uRP48>i~5 z&rc2zGv+syIL6@SSi!Lb;v8C1L{IjZe`LDi#$27jSP3eZ@SmbhJ_+g$@|>sW`amlO4|6!`lITx(YvaFDc4vOuEps~o_P>h zI*wH(-{0((omhtNI8l3>kO-$=Ir~FulS*K}j~L3gI9W_gy=S0L5upnR5b$}C{ttgg zAP1A^&54pz4ncMG38zI#QzghnC;mC3J{w<8`#W7U9LXD1?|fpWzs!2pH>|@;OnFZQ z)cpC0lvWo0{ZoO{zY#6`0$oH7Y{m=YpzBPf$8X6+&K1H34K8=sz0FcOyUR})2EvZe zF6t3a{?rNrA*!rd*&oQJ&6fY+4JIGA%GFonKN^{LD z+=-H#K!dbR9tOOg8>tZ?LgTBNu&}T&KX}Lg3XrmSJQ4@}$RZ{sl_|_9jr#`fb^htm z6@CjO{Tu1WTE?0G8DtcEjHqILO|8b@adU$B=mql-+a#fQsc2qSn;!O_cSN1@z(2Tsu=F$oU=RpD9%N9P9fau%5dZ5 zQXxFttipg2{>vws7NEtxuIxwHdSL;e!NFEzWzDW1c%7Fi&wfBNIvF*+qM}ZF27Cuf zVPgC77@ikpLhX;UpPn*HzG(E-4%y2JaTj;_TvtFtbu&CxJ?3frwQxdP4~P+qWsHga zCIhcG`yZX}&Cp=9KScfoi9%XIo#}Z*YnUYt5$`fAY#6)kJtB0JP|eF0#&_JXyu7-y zm)q;|0ay(!I2Tu5i1c?~YSzh(( z?h59{U*i)E`ZMQYFiSK&=;fDV?TjjcqSW+JENpB%O1q zopIPQ*IcO$h4ZE@Se{ilZsQ?Jpr+1D6MBq_14?q?hK#g1;lBoSK(C>5GphY2D|Zzd zD|#g2+-!`rJ3${BK_cHx1#?3@S2@n*o_KWdTmHjs)TPBN!j$qS9=knaPN!32(8L=y zuU8^K2bg(g;FOtejsQo}+F>kq#QtQxa8K@%x>SALV^C+h$rECnG#f;Uoe2qU>nXNZ zVY9o22$B)By)%O~U$8J5PaOvXwr0*2E10)9Ux-HG;+W0|HvZa+6FfQ;TI=R5#j&@s zA>^ct+u6w}0n@xeEeH0Y6Te=9w|ok)JBa$M^klT^{H1?RvAeUi;i@MY=7+<(5rut+ z&MRE|%lDl#Q=}*3RUHo|kUhY19s5iO;KP5x3|-4ZXF3*Fr0Ez6NA{Ogn>gC!-M`FP zqz3?4oJbq~8-<#!F%0_sf@NnSP>$*_IHQOp3U&3i|A-t0yE|g|Y6J@ssz0(81bFN7 zBwu5rRT5W&WIyQ!P1;;8J(Xx-g?Vkj{;AK$D2Hq}!8w#VIne&}*sO1z>n*alTai~6 zK9pPv?3s(nEzD(iqX--dgHcp2DP0NfCxm$AIz&E|5v}4qQ-6k`guS3AFd+kCM4sp@ zQ7cAJT&TF=i@z#`03jpaCuGgA*(3e)mH1P(bv?3R!6oJs(c@*h)bDOupgQ*;0>QF0 z8Q?WGMC)Pt!!do}p{0ZvM>7(TaqlKnjPwF^I$_dRADJUsxpgWNyfO)T#ke{mh{xPfQy3zF6bi z!u{3>4fcM(F38?GP}WaT6dyg<_yqklRgsSeyptUh(mf7$`8Cy)rOwuS0^rmJ!Ld9L z2AW$_S7hI_f(f7P5LX+{3|AZ4!PwZAX4>7M-EI#BE42w!Rk_rj$dx8|fOlJ%Q}?CV zhlS7NBD>rnD>XK}RfGs^&khnIt&#Y32t4qsCseTyJqG8?84d#Ccw#y))bF1~wxB7`wmIaQ93b>s%Ayo^W* zajXF7?J24YuIa(v`?>P*qY`&LbWAlwYxcYIty`v+uv~PE=wrGsg0@r$fl@xg7ggnvNR{^78RbY{D#n-Pu12lv2&ca+jywJf>G@mXkA65P1Q z+U1Si-|G5pMq{BE32U_wbon)R-7;c`Fzi><~b zbR#|J=Yq5<^LN7cOW}5Yfq-(#@8B6BPsVBy05;3o*bP~(_O(yz_-n|G$P8JB%NRvH z`-{ESif3G;U8j<#UT(#G=4zbe^vQwP_+9nS$CRlv_rY!nF>lh`q3Dze(1hZnZk9b4 zOlMap=1wbq$Y}aOG08fyL%gin2^x~PG%Zb+>*KF;uoMCnRyXWVcBm>%Z?CT;n}9EE>$}C1Ik#R2GF+pPfhI?Yv9aad4p2wv&&EIGWTT^s zk9wP{8>*{!PcD*f#%gJ=@8?4N>ux{^iv@H?5slHq0Vv==2Ll%Ec?Us3YAvWIR=<0W z6J+DD-x`m$UwxL52|Nr$iJ3mc*l$>%Y+PrhG2-8c4xtQjUta96wT#Oa(qctzyhVxi zd?DJtz&1745)zO{AR(Xug@LeeQj3s*!>26Wqo-#Q0oAKQ-5av`s|qO=z%ko8H}tRf ze;47DuqantT29v2FYZ~HIsFTT3Ku3WDmJ>K?)LpCrJ1L)fkKZCIJ$__q(<)KU$s-ZjYp92NBwZR>Z?84* zDrb(LoGPHT{=_liK2QMGPlu+&u~u|Lp1X|=%B>`Xu|a<#V5RTxTKd#n4P!^7|5Z|w zo=!<#R&(IJ7dT?`!3N6NB_m&ymH#_1wd9|fp)r%I1Gn)~&HlYX=D-QIJEOXRN#CUN z``5EVEqYrTj?4_*!lecfoBNN9{jKg@Y%Z5{)7gWWd?*X1pTAL4m&XhnD39<5ly#^o|299(G0Dg9?#G!_!&4~!Uft#lPg}JL6`;iiYQLrElV3xncv;xNS*#N_80gtv`VAiK<}cWDJv~ya;d}3!fygEj@crjaN9>&TbZWEXW|OhDjV3W!KZ5w zEEivm*ApR6mz-nIR(qE^xWidD9;1yjF@`?gAElj3Fglg;Xl{ z;!k19)56JD_Y$;q_glk-!7L>WZt{Q7HFeFOEd6#Z3`C*>(FHgxG*|9PpR@AQAI}5? z3D3CS*AYWV>fHCS?!Dg;KfD-xtu88hd&-x!q9~hKPc5jbYOC?5DAu% zBqAU$r-)8Yj1f>5{*Iy6Y+$e-lbR`I=5{ZT(i-y@+==BtRimV;Mpn;Q-zTp9-y&k* zBj4IF@T=dCOYkcAi{Kjw!4FBy%JMm)0qirMDL)GX5+m|=R$dE~JRJbRE8Nxg418`5 z`DZ2I0C-1bIqAry@`t;xD2agSL3Hge?_K2>Qpi8uvruJ{#HR1-UcrIeAc92RUB^2gmc(tR{H(=J-fi-0K6=%*z&X04pUBP~jVY?Hl`_0hGXyitq<@z^Pn@9!5ues z56;EuhHWkF2~A0v7R1f{4_#!7+s%>>j{>JORY02B*M`J)0^#M@e8fGi4{V4s=lImm z=&PF-5^&7o`Dq?l_L9lo+|pV=d_TJ7}}ZAF0LH& zO9eSKv14Ui00B5mOO}&eOP+6q0|NmzOlS$xYG0WLmJX$Pr_=Rv`0(9N6d3B~?U*oyh0Lk{T*eLi~{RimGPaN9|7ABZ*UZMVh3HwqW zGMsZSl2B2qzi*|R*ORU7FfThKE#sQ*Do?+0MFIkZfW?x5&Gwx{)KXa4HZ_fUr;OY# z`%fK9sxUI2|H(Px-C@10H#?W-f;!TG(}7d1#Z6@Xem{!mITV9YTX(LAKT7h?sWdqb zmc8qP^?YQChH7kFZmS-Cks;QEV0zzD&p+z~18rs*ET+@Na#R$rN6;*36vAA|8DxsP z=iM>mAArNC_FAVnn8+NyC{@1Rk*K6Q8gG;(i~r&7_K)`D+anf)_+0=n5ovZ90qxL) zF)Sv2!UEDgpHsi4iw^Y1ouigji0pYWCKO9~ca!NT;FXIQxSm#P5X{iMcG;U;~VT(t` z+uJe=318avS03yC{meUyux2-lw0Cxl)SYSDFZ8S4zj7<`cPd2vKdO$1 zaX*5_MhnfY9`HKe-h)!&&_t4?7Y}UOpn<2ibpwUbCT?#} z#{g+DxUNo;qwxlmwP}Qe*Ws%cCjtX5&`s34IvXOh=^EpoOR0LjOw6Tq)@-xQkSiiX zKvsmO(Qrr$HZMzd%0)INnp5*?B#qCQANty+nbDxl<0Ysw<#kwRHs>2IL0US&e1F}& z+@H|y?zHhCwh3OXIySXEX?LiK3_MyvI?7Z(oAQ51c)tdQhKBz4DQmi@LCT?%Up`!a zi%s%?snx(uH6|65k4^Him!;+Cyrc9XGO}@c1D!tF&^;|W@ItPA2fBp}7zqr2GExeT*@>-0IGzM(Zil`wx? zA}a>fGk#Rp{A9h7#waqv^kHOC@ItdYf4y^~))uRz)|eI^n=5%Z&NwbHQEU~J=e7RT z)2Z^!Ka+qO*X)kjC!1wJ7^>}7QYPpAt!spqbaz`1;DeFhUZM<_s#Jgp7PlpZHX?EN zA555z^$;rZDe>3Wb{P!-Q$I91PQXlpArS>uvs+S0b%8#UP~{or1V2AClnhj+-K}a- zC|+*gWxR=O1sg`?kCyc7nwl19pfveHQIOJO)@nGztP}F?Gl;(ccsssU7oChsw)vR= zG34ru(`UopIh%%3_vBVKr;)n3H0V^m8G%3{QGc6^zT_J>1aQJ-k zmeezW0}$)MPoP4M%5Lu=#aQVx!rh$^j@6CdM;O5>QE2Q>CqeOhhI6etTIuTdIm=tD z>-en=)-$(JdomTnu`EGY_*xtpJt>zA-hW&0%@YdQ`T)K;%(`|3_yvZ{UZ?bP7Z)P!153D~C3b2}*TGi0_^7FaJ zRZ*G;+32T&w!Exkhk_`pbOxJvW~NeT6ee&^*l6-Cy{gyPbdkWnv9MFvh7#|e0z*R5 z|KD_DGr8X?pLZKVR7m1{d>cc+wslHBX7#H(@N zAPcRnT)*<@lV?BEc>xD401E%I31Uy<+LbC`8r(+wZ@Fh=DtC&LO}A(K^OKoDNI_2c zZ)QRuEayLSU5(!4Ar88Fq^!)-W`l zNf>b(j}v}jgSS8yP5JRW@9~b(_pB+XoL(6rd!B>yhW@oB!VuuK+f7Ymnkl$F=!pKxxP?HnxJIA(;^(p2{LKvQ!3g9#w*Lnr=UbLI=2dZJU zVx)cPM&Epm&@z1$B`g+Nj`N(>9`WzK)x6AgXN}UAJg9*>H(MH8=nvwnIqtD>5<~>9 zZHcc5iKkk0si8Hb`Xs>B9#kC8?<7>GWYYJ_r`j(tI$mtJ`b2(iQPma^PIrkungwsJ zj=dV=cSSSARzh)2389bUnjB5>g>H=kxzm^1pwe@*HjU0>`w9Yk#~R(mRCW(WcL=+b zct8lHbGwa)LSa)}agENhV>BU)8!jSS%mPi04n`dwiULX;kW`1HT2vh;)_P(K#vx!< zTTePBpR{Wm8VnC!?Ae^25oyCSx?=G<{~G=wy=Z4lsjHj&Uj?9aB~L1*qU@e2FP>;# zLq6-p%WsDUJE9*fCZnFgVruIyv4wBvUG{MgDr9fDrFNRc%4cP1)D7 zwIA#MYfxL{hnOkhxyb)RuJ8>p5!-yVAHj?&w3B#fNWK{U|w})<(Hx34q%~w4+Hxrr~Z0N z??_tjpwQT!)ng5;;=eEi3M%sP3BMk9iXSZ2M3ltD$UUFi_zd=hUOm^@Yo6?Xt!!uq zv|We7dZ|^8>ptxV?SelVzFCc!eKGlR9xg~YFgu@l0qTI|yWQ^#;>rya0+gJq{`c3L zRSO^+dA&J8#sS-rs|uB@3+{3EHfy-m2ovPxdZAgY@pyA`Cx{RwWS88dlRT{m;E1uqi*&^6ojEsl^V*B|*RWqQ|x?KZX|C})JIQ5XpSwAfgWMpYKzd|~V0 zVNY%gy-@4Do$T)Rg9iQ!uGW9L%4~xH*giyd!s77jo!63GarcLk3%FZFnOYlbVW(fn z$FOfO`+&hxv=d%h$TVi-hDB;c-#}O7*W&>uXo2h&g9($lTKD9*E%MK{b&MB5x;f~6 zars^ukY)?oinba;i|2xhBjC<--Vz^s(}Gu?d%1C5L&S&sdFSS0qIqSF{P>_wd3X6)7<$u> zKGs{q#1AiP2qF}e1dmQT%5KPl-$-um2Mvt;QggI;=>8%o?OAR8 zPSsD+;$0~*I$~?~#6?)x@#>!ajxstrLYe&VhWF_{Iaq8Ln5$<>?!rZSvY2)oIguN` z2l!USj^5~|+uf6__Yw}T){E)(*L5c=(BuIM-ft6pP-$f;?Ay@)c>%o4=-9s}IGxWo zkdEdtP~2L`Kv_=F{p5fJrmDj%u~O@r0L@LTS6bHvgy7*ERC~ z9@RO4u{!FVV3@KPxKSP-VH{D+ zNGVB+3cDLPe(VsLsLT`qh!?&(3aLdP@Y0^*t@O2s;|B!#f$_V5E&!hJ?voGGi{K&f5<|J00&l5n+^J~ zTMPAhDJHU_wqGv1yZLB#qxvs^=BXvu*2+T2%hW&yY=CDrcjXG&@Ks~;a>KY2J}X&R z&Gj=H4GDwMNK)CV-B!h**VCD`tK-1~HoL3O?U<&x_-GS)+SqZ#%NJa_&tMV4y|tCp zTg_r{OU`>#%})VV`?dp(0t@l|4gG0{6MP&xNH4n*5MqN0aA`j2btHn|Z z2c4Wye*lcCpj^QFcuyv`2R*nfSsl;FIkWi$M-AmJi6&6cQ38k(3o6&X_c^TV+{g4wheL zCi42(<3nqx3At#+^<}U2-*82}%q+^gIWDwmW4x&=23~_3VX@y?FwkV8J)ZA*`dE&+ zU;*pf_m9h;X50ya7l5Xs0@!zZ-YZFEQ?ndp2EC9y-tJ)M%$R9;SJS|FA6hsMW8zbX z?>$NBqDRr0*^vJjXB~(8XbwbH#Ss^*X$73DT%WxyPE;vaXkURh%bkd_wfKT_*P&!t zYi&CfE?CUGV`MVBB8Lom7ce;?U2RjUb{hOV(=aW?rqQVN+hjTIo}P%U=N-d;8#4=~ zvD}&}2&jX--0_g)vhRG-GCn0DrL6+sE^=R)h^G?kma~3+##}uw?%BZQ?@la(bMo`o0FZ;$I894&ZK?OGub?IQyb ztH87ow2@wC-pfUB&bE z$C_mSl)|6?L1D5CL<)U`>R*_=?EPKkZ=FDmQPz2ShHoX9JIu?RCXmdjg@i|N&5z7Lw&8v)OlZ$QgdaO zxw9Jd`L=SrDWPHtDO1|%9`^T*vcK%A zjjfGS8CATDdK{fG2Rf^hS9;ZGS3AQCFbMWWCxLeMw?!WlCrzivYLC}4Iz%3Johebn zN|gKG-ySkKaY6j_)wWRCWCCfUHBC)lh=}ytEzizyz(mEQ1$9qCg|&(m5P&{OlM*^}+E*?mx!@lchqTFaw`I+MNe3?(fhitD+qj12HemH_-)HXG?TIF?+5SGu>rvW`QB%dglFLyy!RUi`q z?!ln{gjj`e+e^_L;z1Nql+;hjj0b%0< zI59czGxkRF(_BnfRG7}`A~z;GWB{TV%$T+he9CocRaEPR$o43xFCR}2k0R zWI0$c2qy#w;)q~xE%giR&ieUT9ePxgogL8w=ijlHE-?Vl(fq{vk-OsN=GhsnS%DOb z_x?zRQk+M$L14j=SEoGVAW@_-nCIr@hod1)xlrGcV-@%A4@M->wzFM(p%*Z@g3BKdQ7=L&Nb7$EDKTS-aQ;$3v*ra;q4SHC0FJ1cB# zZ~uFgEtb5}WMlCZzIv>Jx4>g*!eT&CxajdqTJM${??V?pq|V!lDV0-)uNg?ffPxG$ zrN7rY9~ys){zL;-4YRmpU*u-(MH>0us^tvb*mh?-W#=wWbU(u{t8oY*r6dudZ;$ zai^uz2iNlQ!I6}aGpo}3Ijq0)P2jqo3UDW4 zu(RcDR4OE4U6gk`s1hdHY|HB@37u*D-{;>_-Tr|4&3O|;gG1KEGhbIuj$mNmCv!u6 ztusCe2@GJe1cW;wjCsF6fYYi1_EUd!3=&o9Y60kz>*ZAfnEX!NT(lN2G@9^F5}u)$ zietwcx40D21+34#i5c)AF#$M%;*=ToK);9}v7fAJsvu*a%@G2O={?-uQFB8c0hCGk zfXA;_AKv9#BX^qD_QwYKkEQ4O+{xGVWOgPaP?^sn914$itHUQ>(uDsQn8})Beqm|0 z;{K)_?!@>+FRLyqrz~l!Op&mk&*4eE{#HyyOLFl%JNgkj5&?9BQh?R}2BAdrjn4j> z@Z4tHwO>#VCZd&RaNpCsh>X0fdi~qGKw(@Oy1=g{tBIBs0J5leGG)aFxA)g+>Qj44YPfn9|?Q>HH!Ns4emLxWFFZIh1{a!K}fW>5P5G zvItnfIs)M{|upUEx==i8o?Mzw* z4Gp(q&~+fNx#=%N0e(i(&g|s!58T~+Q=Jn}YI6z8Xj?$tjE~=V3wo0Ct6zLuSlfSn z9qa@=7qOWsqa%(V*As0Ci>v<1C$lA!Sg&A-Q6)NZL^o1(I51)T` z!QoXq+&KZ}gWRUP@U_=pgoOG}Mo&iSx2X;)_LIYu2HuaZ!qRifm=6z*v!*u=S@(c? z{FAfsPkbE}018}=QdTE5*sq`6F9)E*o}Qw-hlfUp024QgxikG!FUbmv-!I2!?)g@n z($2IT`@(Lu9Y5Bf+2~j%cr%*X3=j_Cil0<&$L{B0$O>YJG@c=siuOt zT#lI#VWWL;T7Tgu#q})4?+l@__rcQ3M83q((Ng$@(`wL0)(H`+!I`T3wToYY(!wsXcbGJ4uwhX^#JX^{CoRo^v@BK)iCHGQeC3j zE;shqaG^)*%_NgN^ZDvoyT&vOPRA-P&X`eu2k|W+gs*{E`_rJ#)CK5sjHY8?^0T!V ztY_wHeuKZ)Oz0>!bpgI&DDT0m>FfccsNrmN%^E!;Gjjs4{G(%xd`xb51~I#Of@6Oe z)jZ%b2nxa5glTBxJ1(?%nQ7FUJt%6FmzS?MIGHtCYB?^bi_|+_1ZZFflMTgk|3bv~ z58uS&*Mtvbn|iq6;(~2{IDq=BJ>h=N?!mpAk~R?5Pq^XgDA@l}DTD5xkpEg>JD>76 zhTkI8kew|%z7(>#g-Q?G7%Uf__DT(Fh``MmaP!RQN0Gr<=B<+W_8S&k`pEz{D`8Qo zO)D$6IziRR!ptvwCeRF>8$F^gMgBdJv^xEOD#@(21HL)ojt+&7=odDC4Ty=Mzmf*7z3Y877TJhe;kI! z8*QOerq3q_49PJaorPzzsB`^c%l`Z4wJ*JKG{IL+v@4_9ulxFKFYIVn zt#OOHZ|5Xz4QKTchc@C&#)Od<_-+%&>TI*t7klIO5gA6E3UpRbE@-)7MH>yTc-^vuxJfVSw+Jsy7azvZ#||%gb)%|ZW=&1{Bj~bP|WTB-KBWM^U)cz zuleI(=KM$oAe9p$ZLh6;+--J!^f);EXHC&%@pKEQ0sb#vtsQ#&nr(0e~^%{hkkgRfd`0RoO^dT)?^FeZD(2dcM= z!r>y>SG3d8(uMA`9JFv|NN?R#v*igQp zjV+#>_ItVAc|8yh(?8pexiw2w7L{+0S4viF=jYE`6IQ(JlPo@MHIu&VnCLjNs5?#? z5+q$MNc6g#-XueV_c~|r15Cu0olUKtKp1$INF$(U!lZsCJ*K-_EM|#$=WxT ziVpM$sL&fmxsv#$m1Py~g@e@WzqODq67SbYYa(7;Jcd|;Ug2r3yz8zv6hJk6eOy!Zz+c*$}2oWm} z{f+CndDzcMag;`Ort-#^&L4OPy_Qf`JFupgl~ z?+4e;EMctp<;_q(tXP?8F?7U!-}4*Np{KmPs6R)z;w7~BSL+8|&#TN{+&7r@4~(Pz z>A4j|{`}@_ySgbqx ze-8U7h|vL?jKu10wU%jts}u#cJ4gVTbmtIF{^*;BVPLUtl3!slzlQFLE4D}4`t+NY z1To_7rY$~X=Ze58J)Z4TpYnUkQVP;24}b0$GpCA`rNG?DEXLEFwE<}#qxI|W$VxTk z6U>8uEGg3eYCv82W2@@VTt&}2m*R*paubuO6InwgTqcLhZ^DGN_?wbi0vEwSQ%MQ2 z_V2O@`WEYNHkNCld50yfWROf|i_j7xtTYxn7EWs@+kT{S^3hUyI1t{EUIa`>+<{0E zyg7;qIww!_rf+@jhvIYT8XpSnm7ayoEgZGRlj68;MMy_#uD7`C87iAE0Xwm2tyXa7 zmV}${pPVpdoGN_1el(KSsr4ShdbE<{8%>+{tx7&`v5t&5NM<}kz@d5ssIFDf_)whz zS|ZhuWN5Dm)6V&}+P)oBKJ#S4b5P~pTna6hvLVIR{B6}tyZVRN@@ znvKOWsz4)3n=1VQPHQEIuE<-)E9=EmhPZ>&{u?CWnAmg!r_&Z@ z%769TVzZ$d*O?N2t;IL5mhD+dY4VaV@w?TK1@@Gw1lfpK?{wo6&c^mQz)_9o3^15D zF(LF8MmHIgoM?ybJ;weZmrL%1*~eN)t>&dA%DMRM^u`iIQW;6I>+zO^jQHi#U7@ZP zJwQ~!%9oa=1R@rb81|QhK2V=(!HXFjj*6FzF(FGBvay(1HB|gfs3rZ*BQ?xcKX|JB z%E2vs91~$w3jyo}kivC~_179TkLNboJr;-y%G{bOsT?!nP|lwZHVr0Wkbb)}EC(qM z&U8nh`e~Cmy~&us+8=wqagGlU`%r73-W(MwL=We^R{iEK$92so)R&sFQB@y0nysbo z^mH|Df!`bzuQwb^X^admN?LZjWYX3?FVo?T0#Y_X$zaWA=WtQ~gj`P7qk=LP`;OlXDvMFSz>zfT?4^|zgym|=)rMDR_j?b#Fq7rLC}XeQtJ$RF#zR^z?)Jyq z+@rd0)?>j0o=c6+q?;dY@U+%h;-CktOSaui*AVND*Sryqko^2qjz!tFMGszgR9dc^ zPqdwEiF)n0`4!=9^3*Aq--`SDiP2DEij?iSm;;KfJH|kao5pXM8R=wXTY_FZA~)CU z>E3r|vf8+4b7t4#^?M0sA>@jh50Bfg9+7B!_Jq7y=tAI~)UOHud}R+CY2v=>{Ur6N z@i}@k65>PT)cM(xVd{lM?92(%xlr^+^Tz&Qxm)*)m~wdo+sLv)puO8q*dr3($!BTx zm@sWj9MB?3Rrm=TiSs_-zP@jhSq^%L&UDw8dDe3Wd8NslLRL^3C@@#C}Q>P^0 zlnYCNdK!3#q}b$u2OZ}8g~|>KdZO&51Au&3dGh2JZ8r?Sz2|JHG&&khapSI~ABSu< z3@44s8Kx9X&gir6`NX>4u#!Cd8-s4vHzu?c3TCecOV0f7J$yngK0?K{dM>x$*d5J~ zAfawsR##g|5~VYX>}KFY1e=;$RoEvM7914B%9WK2FwN!?jI|y@k4GcV(x#8h7G1=D z6UL3Y)?M%&OlV9LH!&G`z7ZL=Fr+elD*%?r8G$0PnG?frNBjCSi*K(IC{b^2;{?ct zDqoEs*OiONeqWrQQ6)bxnii8Eh6{(@alqE8Gf0Sw(ohg;=kJC8;y>MIstF6FU*bei zknK_vBDkU;Nt!d836<(@rHX)RZY3R+CZ_w?!g!AG29MB=8u*<(X2NIP^lU_jc{J7f z!+I=p6ss1rbA0B$zU$`aBi{}l(al#aJ$dU&sp>+OSh;vXtf3%YAl$o;s8DsCBQB)* zH+B~GGyP}RLraV1WUrLuImHR`1mgG$`ocP7Lp6+iH%Q?v*;}4>wHq|!$-XZ-yuKWA zpn|{D@>_~R1%Dad2%S_?v-46pNLO24HixMff>kLBhkIq{fplY;<(73Dx2pEwCSvFO z7Mal}yU#_c!}|~WfzR@g?Dy%SN}`L81$LURe~|+!llK4Qd!XIXEB+cX2J4vuRWU4D zWp`ax)LdAx6I^4z`{g=LTAxYz4RW0^hck4}KAx$hI+JR%WLr{z8KLV%zVf7qZ7sAoZlxny=p z)<590{pA+sKkOV7L>VNV4yv}ro7O+ncx~MM0@eE#b4S?pQ4}Vg+-gA7y`H6i+Gi~) zIh?0dD$8P#JUNoUyK}s930cfCk%^3EuyeQJ-NWr%9Rg)0lled!pGO;CS7Wc##f0+8tM?9 zrbg`tH%cZqNZ9hk`7{M%(++`Tt#Bn4%69hA z1`y|KxyhegiyS#_AHt7)x$+J0;#SBoH z+#R_54g_bdP6v?-`{??JqVBRfq!wl_R`UPP3lLzhG-3Wel^dSbnTje0xdfzFDmO1; z7-;9s?hLq35cdDgCn5O^#C8(IcIL!(aN$sphM121yA4(aZbo_`W0KJOUmQ{i=TgL! zc%qC=(E1QDQjEt~Ij&B)g6neArV~)pa2CrRRBI;je#OY&_4n4RfAzqS(xpkde^tu8 zT0{sjVYT}CnY^0#w9KC0*_R@$?lyarIA-Bq2y}cL?qd!67&a?(XjH z8e9SdcXxMpg1bA5>*DU*%lE&#s;yccP+PUTzc(}8)6>KA4@su&I^a}w@n`n+bzt=T zysftg{n3~nMM)?4@wWP6`)Z$0<`)qhKcVZyEUr;oU^oW<0ujWFWO;E13g z@`8f-#UT3m%uCA`Izfpx(bvP4%Vy7 zo>AQZwg}@()b5@=kViNRV(YgJfY8IHL9grcM%?CNRdQ&-fDD07men({UPXeksbNe` z^AlZtDTzo{#guYAPCYmQAiLR4`JlR(H)=>XJ{YTTN9g*5@5NF4LGCzcB@3b51+s;g z4=NgFWq+PJl_kGhKtYv2WWoNvNBh6x@PFb!il#;$LB4B@Nf34!(*RI-45^HR{ewdWH_G0 zWCGWqh6s+xHl%~G*7IX0t)6L)WRvLM2Ypwv)XEFzD2z2qVoQI9wN{?7`rVIiTkkr$ zS60Fob%`c};MyLyBbs2pTpc)=5Z3u-C2daXOm784kc(+l|YV8lD~^;*#5(?E|xdwbjnK_2DcS z5c1J?rmKm*w$7gZ4n5<-To{h+E2L$EQK>%#cv)Q_4YRPvVg-CCd3ezLGFF?E#yGHV zu;HOheEH&tKM_%|?%ch!Gvh`UkBng7-@LoMuTxv`G)L#{eW;$hf>2v#SASOd*0{ve zwwBnzhOUqTf8L!Pejn*q$UBv)L1?yaPn?fPJbl+pv6uf zOS6eV|KZ{d`DKS*OPF&hCn~7 z;(qn{h5E^Zvg3{}2qpFhb z_GA|6kwR~UjXcB+9#ismE(zwubIS;`M@Qzl$z-neb5#5LC06{=h@0yQ*-9`p%S{ak z0L@7f`7>$z>Ad#wnc5n)4TS#fV&5xfV>Gm+tn`UPfO}X`ZD>ySO>a8JvHfljsp$p( zqutfTZd;^hO4B)+b{76%jhA9TB4k7O+Khse5c1`(1m7bznYRQELHPp8uZbfyF1Me* zXT*h9Xy);>ba?D-P{eL!y$>a4C2rv&_wCyXn4BrTa#la6hSQX+9^MSjMJ4Uzcipb^AV4eu^Ac5ZYg;OZOA5iV&y4o>ki@l*}N! zwAdVGbFH~x8F2(c2ZfJX-Y8Fk$JRyb``}=+mlvKf`F`{UIy(+z%~a@qd=u+`c1^$G}(suiWDTs|n6Q z+UhM=;tbj=gQi&>qN|NtfT*oje^q}#<^}4!F%Rc)hHk%Vi3DFCa}70bT0-iCyz|MJ zy+d4PuwxJHcg6z(UL%1R8Rm48tt=+pL-@_j-?0pyxX{pjSI^O=3;?f?z&|{vBH@CT z2s8}Lg;P?p^^FEAmv}g9z02%GTKL_bAFiHu&AncF*f1HN5dI*|qD`*OX>4pyR}c~?t#=qr{2VZ#Ytl>+i{z%npnR|XNu+8*rgwnjr$!=LM4hXY z5)v7*K>#v-b+kp5dN;c#{rm>d~Yfk zcd{kX_h9f6=5#FP(RPvg!c1mXCl4j8Uu&tQUT3i*>G8ph#d;+IpRYADKmT@` z2002z7Y72K$rtO3d=nk$*)^6z!#=FHxnZHZ+C_~7yIz-=9;JOjNT1PB47BHT!hL|@$`bq&SB zk|(e%Mcnjt4#)~%G;U3{@y;(sz>4ms$Cgf~$Rl&ZjF-b9=ND@aG4;0dfx^)D*MnCL zfx)6mV>Jy8hMUzpj%;Offk3)>B9bGn_0O`BUN;jTur~f|UTow8nUwD3<9-B&vd9hTNn>3%WqV*N+?Z`Rw zw+RL(!dLuB`gMu(#lo1Z#J<|F9kp-vyrxYy-(97()ne47>SWfj??8i2IPAeU&5kd( zTTcJ(a2nNSL3-phn_g>?U)dkxG*{)xQ1$6pjd9Vn9pRT(mVteqftB^x(t_WhGB9hD zd}eVcK5UsqBox;wR$mvls{nn)fjUtvmdO)x05U3{4-TMIRojpes7ZcLA~v}P)h}Xy z>k|007Kqji)lhlYu;Kx^iN)nNTh`T6wewvhcV*-HkVzjCuaLhl=v2}Slf7}_x{Rc* zmh>=(5{T(|!Bx=*w~K?0M+!7}9A^fjiF_w(?tl8?rF^to!*r8u zgeVebN<|I18?0rD8i}23u>7;4SJy$En+(j@ztbaS_W_H3d|sER!<_@JtUoU6*t)um zgzoux^78A4vqjKRQFpH9P4~h6sES{Q$17caDWnw8uUN2jdy3u~j^ty>mnko;fVARu z<#>RlE7Y?fKpG@Zr`!4`8BHAco16Rd#a$Z_tJm%!jliVlH|y^daR58cA0byXYro}% zkK}6mS9Rm9_m6&FrDuC}`EMX>Ur9<%5ATi%*x|Mm7<+e!^jI^U^oPNF+LMg(M4`Tj>8v3;I0sTz}FVKqEkonG*TwTP1%2f2CAcsBD_JU)kb)lqd(lfp4Oo=F#VUYE%eCCqS_!v;=Q9EqPGnA6_(&UenI*=kw0 zI*9r~^REn@sJ}Mf{^wIHWnl~rMao@KVrc(EP^I4xfL;IuZ#BRW%lnnPHoD{v1*#8L z{Elr<^7}=ys1zReqg#;k!C~%wDLlW<)}lFbh>z!|idKjg>-lA-%JG#geB_D#iU{{wnq zy7~FSL$fId7T&5)k}-0>AW1B5_9!%pzbBF2bGg--Q9LSrTSAIg++h3B=1l#;YLPuXxaUR><|t`zSg#KZq!RLxgoPgu zkVZR^veh4Hubg&J-#S1ULy^jS!)!>UY^ZNJI}kSZxIGK#$p$L8cQ>!0P|fASO*Q}jwb{Z%L@)>k}l+K=WM^$t`>!E=0KM0ctk zqp`AfWDSz{pnAffc4?^Gk%Jz&+`V?Q|&x z4*K5FW6)%RXi4&WS!3Y+SwNbuuq8Gr^4jWu;L2~f;*=TN33~)gn1HUcp*}V9d{3EeF8h7R|s_90ww$h|Ijr_q{xF#Z3Ar zgCCV^9PawMcD_$oKZFge2hW?^-s1t&OpBGLM=K3{MBZ#T4XvR-kA>526MK4^lGE*i zGl}*30SM`DE7es7nN>-&^unLaaaNjn|12dB_+(0u2_=dO%jHg^;$`&?*M;@?a9^pC~BEkP4 z+aUP2n?abf=Ee~9zC7Q(>tH;pgT!md=*^QSe3Y5z!hF6AxP!?X>T_<<&K))fRn1pC z;U|8f%*&SM{Q1CmwNVc;%3KaGb&K}Uy!X+!wEX)Q$#s7#gy&PChb3U~DsWpbF&}jI|Qj3wn-Ow{C31c-U=Ab|_VZc=o z#NnFSuJWUXI$(BXB|d?qrdrIjuy70G6A|9XjX9cpN&M0>-;#LGIVR9UKVs$Y9~r@I z3Ht2fawk#1a&meaqp7B6Y#bRGNe|#FacFTT4?e!u`aa5H9NErGL}^ls#1=-g<}YmI zkd2YM2U#X)zRa1r`)~G5O=QL7d4ka->`@dQ;;K*0EUzEGix%qJ>u@hH?BnUJSN)_v zG3R0mw;>gab=t-@b+tKo`Nh}#?W)Lq@eE@*#7Ce063+66#~PPGqqPBejmYlOTEr|m z1lD2|1u%$2@I+5ClaQPwC#B80IpJk6-Brkz%b}vnl~WEBDiM=c6R{5q&NVC&h&w8w&fVr^I7)HB_K3C)9-PH<}H=-jtBiouA4)y|i0 z@9K=sl84s}eP1U2wHZl*-g*jLfA}*ZMnfa7BgeBUKovQq$VGo|^Cz%Ja&LqaIylb7 ztE>bkJjM1{XKQ_!y8~KGinWdLT_%9@Vu#i&zQrUOLXzGZ=7c-&S`%}o{oIkg74L9& z<71Xe2j}%Yhw~TQkC0A;QZEal>1tOf9Ux8RBKFdiG;uT23EOmFPQwx~8AU;z3H>KKwS24<5kS zO;lDio)3Sa0N=XB0-KOsf=tmr)K8t{DDiWYWX}O{*nBx(Yl4EDFQji*>Ssd&hXv4a zV6(=R073?aU~eM5@Wl=Ku_~xkG7QVUran)}nBPoI%jyfVhI*O>(MY+~_&1@J-1qLD z_SXeVtJN!_fRL#6TLd@@dfr_2Eq3@9<0K0SdK#03jWqkai}rCIv^Cm3RM@{d=|g#W z0}2`nQtdy(x*F&)g}(U&IyQ$Q>HsVtSFWxy&@w zHx{-#ID>RO7W44Jw}-xSumj#i)pJ^QBf-C{Ag+fD8W+B>Ar!LF_+sj6wbvb9fUn+^ zx+${`a|A-e8+^V_m8;_Tlbqi37|6z;(<!~@qLNo!Wf&i) zkDew10W_p2JXHg?jb{NubeOaGKOm%2A(;SAmGJ1Kc(c&xE)g#;lFQ2^PGA0*>jO04 z7lA@KySvLGGMUolPSTQaT%9_VZp~cVXWM>FMQ}C~i2pA3&VHvwe9AnN0URw1bw{Dl z5W=R-$aHfkcvJ;te28(>AC2~ChK6a$_-M0Ev_3Dle3_}c8XlSuuj1HHpC25IGa3Il zx`B&^zm^RA1e7ym_{^Qss0;(M1(CF=Lf7jg5u>aK73EUzS^X?<@GAY=_;=XIO-4ObD8_5k4vM8q7Cg6-a%S1n%r@s^IZYDat0Vr??% z74hw3uy`~x+9A_}uU05X_9T-aeWfu*EN818P!^r<6T3bq%%uQto0vKS%@mc>eV=4d zR(JQNg)Cf>Eg`C@mQ5S_87RPpRuOa=RoAre?HsE6r$JDZ;+puU)-`nvy#phtEo)8) zro>75*2bkd<%@W7rBw?#3`)R;FZ#S}xkw>(kzYcQLM0Sc-$gxC`2Qt^!UH8OT?)XZ zC^@#LFhf-quy`cFeRiLrDTl52>u-j!5U8RbS<{Hx8NF^9SmyB$%c!sBEv8y%DytlV z2IjGtNKk*snUbrvL@DZVlGFqORqGfOLPxKZU`P2<0Ne3Y)rh@93kH9MXPkqbHZW-m zy!WfQNRKpaF&^Y0vcB7>a1-xfQMp(x#kNG|3FPY>xIQ~9f+IoxzQ6{vq`Ma z_Bo(2PoOx7{WFjy)MHv)^3v12Vq+Bm18GWf@{HZx(Z!CeB-QTzd?yBq0@Y_;AOwqh zYR(452S`7DPOyHQhMRqMNP+j{0f$FW<5|M(vfv=zEl7~ZhPM@xh;VYRc|p%l416h3 za#$Z^E717Kw#dOhb#zl4E~UEx74S>Qn0bYTK(rq>T=FONe4>0YjZo37Vlj@H zGVPz;CAOAqBlvZO0A2BCcyGvv1tMR8%R_q{*AkwPJ9fB=Pf|t()5eCdsohrab%dIJ zFIFS6GZq!XA36zSMkZfDp<7lEmO;-F^T*kZkyawAA4CfiR(@5eGV(hxJa1TUgst8I z)dq2GXk;QP6yzOxxE|s^<`gS~ztfu&kiORbL7dSxweehJc1T7<$iehtSHo9D=e!xcJ5B<#&~ zw!0juP}(C3{;u$Kwiui3c0^jlUwVNqVAyqd>-gYkrAt*@v6P&cE5H#;fh)_d+_w&F`vz}qQ#ya=s&&iZVo_GxQ0Cd`Du%fGGHl3Zy&OFGz9v`Y zS#rj%v#e=sarG!~){rhwWoC2k7bFp=MhA&>F8X=c)c&UG#f&AH1;Kko5I_fw*Ni5%HinrYO(ey;6Ko8&4awuO29Ro6uR0Jf|mBp z&S1v_x5-@AF3F}D8cMmPb6PLEK0ofz&DY^l66mQz z7SPu2)$0sjc@TFWwvi;38h%&z!~yP;-3{uVYiX{#H^<929;Tv^`)flh{b`$>lMWuY zO^_}G8hZzYjj6mZWJT|9!F?TNFg`|F9p%);Ja~APsT@eT?$@P^P*qdlTPpOQfG4ax zRXm1o*PVAoBYZ+BOk`nvEGmM9Gm5b>H~JTH?hHg@_YADO=}@7Z_9HH((%dxeTn!Bk zJ?Fpn@L?kU9UVv85_Fh5n|dKq6#WYeP_(p?boBH9@h?b|u)VwMr^WDhdYX`u5*nZ2 z)b^<@FK=oompCGVF92w*Wquf!ST%ohbNFG;ys)4ey%JI20RL2L0bcm1rlB!yyQ!yA z2^5_0_l>x$H#pJkiKIn{J$ zP#Nsrc9|g<`tT`lx7~5sVLM0LN(mxC-BC+*UYFb0K50$qCOruE*!!=gU-#(7i8ADl z4F7L8&6DFpwpt8=UqK!+TRAMiw~5Os^7^OFyw&97r*jSW=Y?=KJ8(^xz4bBXVo0wz z=U)#|hT&fcphgjH0}!G7ecv&?-5d67Ei&7Mz-EMBiU(_S`nHT27oqsdL7fL|=<%CS z_Iud~kKSSsz`|}$JCwNPP%tFp|`c>q@0{S$Aj9NfTzN0u8L z>NNhV1NH^um6my0q=njqh{dpg0Uq`QRBT2;{ebQ zE9Kt6VWc{_T$EUQr39vzB-?7T=FB7U0Gb*0kR|XM&o@tfPEDkjIR{FZBxZAaJ1}DO zRh>$6$}WS)HF$GBM~$a7XVHRcwm3#z#b@w!KuWk|4fVGea42vS3?4Ryrpwh@|17Z< z!61|Y%h&x^G+W&WX%iXrj*+g7l<oJ0{Cde;O%pnGxzmVo@lYJWG7nf)o zqB&T%(3>9^h7D^#*cpH~+*$avw7T(hDI)kfMde66JlRM6wfr9lfQ8_UhelxkoB|vpzJ9Oe}@ zQ@aqcb#$;geh7GSGPtP*Ia%S&eD&e~W^`JugZTfn0KK-gfGeEK-eFna3~t!k7e58% zH)q506YVKXT0pqF&qKvw^P_|%diw>wZt{q5?L$crySnL}N}E8JOu$fw9lW!QMT23Q zSY!d2K-^6nPbq=7i}h{KL@5AS&A7b2U^Oxb#kh1%fY+#+Cn1&8e>8aT z0RujA363?UFt7-JbK6P1OIW%_YQBhmkeN`mMGhO0RGF)<{MQG9goLWGI`Y?Cs>$ZB z_dG<=dG$g(C93QS)^3`8j1&Kme6@aFe=_q)6Iz_E!WzbmaHP8^YX{u0dUl0aR=Ai@ z^PHs&@!Ru&6vCxSGpMrsO6GEYxqTanA78+K$I~Tyh;^P=8FSas3@irnwy=A(YW;$l zsM5}LpxVphDo(;y*jltpIRH_J#-AWxs4GI3V0dc5O|O(YBuJN_>ZE`<7rC~QS{RdY z_K%{RE$_ralBJfKz*#z)J^pe$Fx>{{67&=Ga00Ots$8;eK)t? zHXaS0+yK7)?K>nq?atAD-?i+m@$5|WaJc%w_BkluwMix3q5)Xd5%DJ5A$jl%O})_s z+L-%w9dza``QPYM^4JPGTl`4HpLo;gc+iyc?8-d!Z!w^uD`!lu+>+?{os%Rc`9Gp!y};{O>>yG3#Ke$04cI} znlV03QlRo0Ffp~7!#__%LVKQ!zHKZ74D{^!0Ygc532e;046tpxpi>3l8J3=&P7A^s z9c?38sIJTbyjE{!Cu%*58jXI}aj%El=)6R|WG>tpFFWvo?*1z*cJT~CgLvt@hg9r*&-l|w zaNItb>fms#cXAUwjN-AsrdY{FP=34{%|iNtXVNeHX&2X+ArY~1J~0t_F1?}-j-D{w zpu4Yxm-*U~`~CdKjRw6Z=A>!Ar(!5iH8g+#dHMJFNOGV4_?*EPh#vn043Tbk3(2nU zi_YT+Z97317(l7Qd=(^n^v#Tg_I(*46!08H!^8Ccew7pC#o`Q)Lj3FYA^aRE>h2pa z`!4anxrT`6{Yy}v{DVh}!s+1P15rGx>A4dPaXH8TRAAltmibh3tNTdKz5`yvK(J{?pIKZ)hVa4G8OPt2)udG3Dgry*~x zWnoc_RpU6P1mUoUqB^hRs%vwlu6aJhLEPZp^*IxDEikecUag9sBNI8o8~YF%7Zezg z=^AWwS^hgi5OYC=V|mPqrkhHju(jdwfGGLb2csj6I#2hVOVDqa`-5dd>j&cj^e+yz zV^JKGig|*TOuiiy&5l=b6G|z@FojaWo>gV+$&$*S)t0zaxpeF->8wxx)yu_LI>x(2 zx-;&5iW1~3Q7_jV;Lex8(My2%{sK|@WhI>H@YamI-|A^gQ^tB-Y0r_o(1^)qTlL1% zfg2bg{kt;azc?T;(Er+1_jK=iv{A-~8it%%682pHiQnUzIu?n3H|sO28Qyf@C{Byi zyA}T_p?8WXZId1ojH}df#6_3FSF_E06&DF32Y9jB&+hV|JuqR@HR8t@n3N!PQ4?Sp zIlx27$w?Oy`>DDi{Y-GDiZv`Fz?(8he*94+Z%n4bvrr_B4s_bI)>_I}Y8EXnAHeze zZ%CpeEgIu(iGbA1Yn5-LrvKb<3S62c_lYnk!ydsxJ5M9#zid)hB%LxxOy3)$xlEiW zF^#G0jZP!Lh=p}fCis`u*`Ta#+L0bwoRScaH~q2eHS`kmqpE)^vmRN~%|b2twqX>r z_nARrM)OdqV^Ud`T%;oO-NhYagqp(*ucIqr1t-hv#S)l<^fn&48jWbS_nLmXZ%$r(9tQQn_ZFkU~+&_BPkufr2uj^MpCK6CnJ z%9xx@kV-wixu!NT&#QIDNKX{WPqo)%P|Ump&ylvM{(H;>2%_Y~ZCJ;P~v7s5>6s zob`>t8!$CQ_asX3};%wIl&E05V#HCfIM9o(}nprtRTw<_hVrt^p{?3FoxWQv)jK7 zvjC0a&fEy&6y~BV0b|xehrKN*MzO53H0c)b{th@$8nf4Ew9vflTw9oax!i5%O|Kee zYgfRF&@jUNSZ_6-*m%lwH5$FKVDr~sQ$+)5@Q0>|OJzug7RJimlTDWme+8xSt3!dmt@`$dN{0VSTI>%>x)87OG7nqUQn8%hLaF<&J z#WD~;qMAQ;#)%vVUkO7(B5+qR?UN3Rccg{E{Hv8 z$G|e707-8SEWfvRaX%LAcHMCQL*i$Va>M}st1Y7MnENML4q_OuHedoW80m0inE+UI z2Pe#gjWG6TjqsY8E~8+vKFZ5`_+LZ38)%3NLav~alY|8-+}`$IT933maX*@1_$ zUNm82Y05$pkd-XD%3`K4+#f3}0$RvIV5fFhUj~mRxW&H>{8KR&FKh&lX3b5iv2~xE z1#t9VEP*}u8)$zEDp3+YnHF}|*--NlnaW-Sk`yy8d|{KNj-+)PK^9kiR=LvbkKfS) z(dA|@EI=Vk6iEd8-390jA!@(k5U#Zn2v{voj_tiOnT)hKc{o8NE__R0YKwbh-Do>w z4{SUidLIc022#;h%e}y-&8*Lkmi1kmS9nlCkIEbZr4wZV9@qV*M04()**?3J83QZ* zc#qG}&K5$3$YCwXMZ{y;1M!res2y*3z%-=|m38^U)jI5n<~4@kn+|?NSkYoNwFps}Cv_Qg%73?JGc7^)*QZBX*e+nc0ZNKFz1ApuFGGJs7a8S7wZ&_oxCL zlYfEqhZgqHVMv-)s2XLfueUE{nPp;JjNjXJkS0YZ+ha$tocg^j7JY;B-R@e>=SgQM zu`_NWgL5P(d8f(PI^>FOE*2|IjttvR-S>5H!~RIQb6(6i zQpSQsh9m|R_)-EW+WXQRefH9vS0OlCY@3#yE9a!j&Bb;TzLv#lt{-RO+<4T^DqLP# zD-}KZKgIbT#XoukAHk}vw2^e}bJmI_M6V58%2>(Tk>^mvHTy1 zOCK9S%oCI~mnT-B#T#K;bVUFb)B^=!s(<(bVsV|~SmgmewtODq2vAM|%Atja&|2Fz z{`|R%&{|V9j+1s=M}5ydcHdIeIYUSQ*!5XIb*Nn1%;hhdo$$VdsXso_S2$L<$ol%T z@cn|*#9CMdwgGOwxn2bx4M@3-E?^MFt#T=7h)ywe@FH*RooZe(UnYoAIS;X+hl#X5 zjNp}PzfzV^?}N9$98VHCb{Y1&I#=nN%H$OmcCWsqunvt&6y-~d*J!W)3tl$vr;E?` zdi}1t4rhnN4y-fN2?;r4lRFoU(q5OxkPxXlaqOC!-kEN=ev>+0sn)*qq|XjC01z}t zh|OdGt_}=3J;Ce{B%b#bvj_=TTe|#3KO{c5B(pQK}i(AOok(?Qnq;K-0akia# z_7Zx2PLbXduPfCR7wfxdTH-lS?}h3J&hw4nu5hH+jD`?;>iRxbT6F<_z*dPmYib98 zfAjlm7O=+2w)W{G=i4~wNa9`x{Y$;^c?TrUM-meMuQn)HHt0{O+05bO5`)Srt;VL*cNo-V~RT`a9%& zejFK({ZugOWNjc*8oXR*{u(q0y~h1ZdNfIEdWE{iRIPFIQzCtFCt{&kmFaOEk$uY2~a&KsqU#gh8H`@Q6m(Xiv`wt+5F4qM&a*4yo=F3qK@XNTZ*ca9oy zq|4!Q$})lt)42+WK0+R;lM_=29xSave`w;oH4AIKqk?=f+G#q@i-plVN z?+)CI%t`)tOmzYr1%Jy?wRG|679%a;TuXdKw{Msowo5?*X`_Kt1o%< z0-yXbJlSb2<0@1Bq}$j43##jz&Emt)E#X3cwG+FUU)8?Pn{2jamZFVM|0Y<`y2J({?pBfV603vW+%5 zUFhh#*6#gB!k9|Q;^SXZY_3}$(7QESPsOUvG<)H=M}{gUeZjLdsom|35J^IgqYH7q zGa2c*kKes-U6=ll?x?kR6tvC)#Gb<^n+&_*2Y1>9W~XhXm)_nO+Jr-GE%W70G^EaN z_d?^n_de@GLnZfUGu)^NVxRoVLMREI5w;UVC0mZ7sFSn|&#nY;czsYiiS>ujzr689JbHy%K(F(AbU>g&_3jiH-W#^Rixp+uaVz!=q zb0K1UN!WOM!7}X#o{!KiVb*iIP{ThB9@~r{dLv_?CdeC>aD9`zwkw^9%!(W0Bq_50$zzBP6!olD$HlPXVk35j27EKJhnn`Q}rOw{4Z97kSE0@rVy`oHciF8i;L3 zVN&w<`NyFmB9Wfq^h9gII@>j6vDQ?|#YdMH?@JdeY6jnc#eaT3RR4t=GY}%-(r5<| z6^7?MqzZ!Oqhuv{B9fXW$)m$6H{BcxV9|=M`iqFJ&eByMA6N%*m0|HIV|(Q zjr*{aPi3_5JT0COuswM`4XC^>Ypk!WEVR9FbxmPD1T}6hKod3?7DZL*QrCJilC<5I zF0Nn++?|ErDrZ*7RBh!Qv3uPF353)~kr}y+_YnDIt5l>st84pO`kWLbN?fY0x@rj9S?~1`iS2Ex@BBbB{PCf{9p}(Xh|wMXd+CC165p3& zN_P5)mMpqYdc#GN)7!Y0GGkp!7P_sQ~lS85#J7Fa$Rj zLImCyLh;9kOHE&UGtk}(4?;gOe*YH6x$ZPKmZR-*&;luu$%bo{oRXv>F5uH7@l)z6 zDPN?FcB}4HvsA%fB@OSd)O_?9wnQ6}gk|OCLl}?<qE|T@RC@AU&=fKv77* zbOg)@t8C3p6)*2P+02F>^THB67TC(!t`arP@s^`nY&#r8!7%t}`P17u<)#bm+4jv7 zzj#t4qylxK6*v>u%y#<-dgUbf{=U?i{uxmQ404y>p=-xC+=zA3OAY$?4q!vNggnJJwT(ZwhUxl)epVN5z%idgr7Sf zB&zckD=qo_I)F`zlZr$$wUe(@!eWMIJimz1bd6s3UlFU6S1Qbs3Uohj3t&X>Y}7(OfN*lf4qef@j&6IS2{q(6mB>4HH86L6?w zsFWb$F?4X*l-ia-e(_jKEXZ)+<7|9%^Rf;D=*h+osu785T2DE;gssIRirCX~%TNgs zvo4;{ji=Ed(xp2KRtqT60|g1tb%^ja!vXL=@Wj*j+FbA93oXe&4|FmPj(T)*dqbA6 z#MKcX7^m7#*X!aMV@~Bt82EIk6wP}q`ju3)jAcBY)OkDF8QrCvI$;AEw!hfq>hUaG zzeH5k>A&JO+BA0Aq;HOdiXfNH!wyQNF~vw2E!JGpI)5XM+IhFhsi;HKD3J>)tzk+; zmrG7j@+{Op#<}6w4`l${857Y-fHz9bwrH5<@1a&>f`@^DDTa9FA8op>U1{4g?BbAp za9EV`&5?hD?m2>#60Nwn_^r-w-okk1w`HzbRO2!pz5>ow)dH-BbO0 zV=WGJjv7vNQUMX2(ci>R@EL4r8w;o9_pQ$En=R2P{FWbh?z48a zT=_s5c#!rUN@-;qqVcaGsh<~OeBTa-=Ckdu3(n(o9q%?b@OAFa zlr>eqBC`>Bx}Ikn9@r=oCY4yJQ|^yOQE67FOcWMwda7Ulh7%{PBD;QS?|g-3H9CaJ z^z?ud%QNI~gj5}nt)P%9G6dUp{Ygn(n_5L-V*w|6jm{c|RJ&{yQB7_DW;cjju;NzI zau%?-`$g#k!;CMngFtp^OcUuvxfZir7x4VhZ0ID=HZYmt%#j!3QdHa=FDhWGcZ_z9 z#%{)4X>EIOMk(->_;Dt$R+mwI5{dSGU~#m2W-{|&Z7Yi^Ontbkt3&+Y&@L)NX1C(~ z72c11uPaV#A)YT ztipHG%7T83fNZIw-y{39Bh=sa=sa9(tQT?lc$z4tCIfcs4mf>QI%m{5X#N{3v%k7_ zhA*I@*K3nhNYC&Y#tzd8(<&HLQV3m{Z<}Zht~`jA-K8KbyM8h#!H*8Lae+qYSiKXh zw5Kp{@?H-9N$KjfibP^Ed+!q2r3Q|P{zKpzdSkeXpXtfGffz9D8D!`2+Dof(;9#?r zapW+GAN9tar3l8-o^Sa4QE*m8L18RxNBnTEWIsFSvetwu1?MO}DQSxc+3hHh_9WA* zh2y|W!ed3f^XbJ`)tK+sYkI%Ig7-59t2n}LmTnUJjSFOCpa_|ehE`ty65m8@!R<3L zL$iy+Hew#YN&HKu$uD!Whu)f6SIH&ya-6AaLqON#<5Z<{sP;|+E(UFvM@(KCCeuMs z8xBu7wBTDNI(lNY+mYDH23r7dKQa7%KOS_3c)1y_TlsqbrZcSaYV|r_5iZSpjt(uWR$X!_`fKp&-9~h5t;d=hkFqU2G5St zw~IB*zmECPyZ0pZlOBw9h^dIHOywJV)i-BX_3{{r$mG0(|EC2IdDx`J*Sh*Py^|$c z>0I)zkpz3{3O%sxb;pny1nfKN?;cjQwg#f069I2ER^75z0qmC-)r}D?2lFW=F6s|{ zetw&hgjkYRw)b?Z#IwlVi<4O)renJuEw)S+H*PO4mS^bH&8FF*!V#4IJu;DDa>C}Y0>EO2PZ*+t&N~CJ#Z<$c;MOQuFQC$@ZE*0-e4H4~!QJzAugtSW(j& z!0qH~ym@7z+r}X2yD<_NvQctrW~<&Zo#V~54R$3un83MK>vDf5zeNkV0}pXrXZ8IZ zU#@ii=xx0|7B`vMM)7RL5GVy$&xggSLLuyx!a2W>z}1%io^@Y7%O9GPLC+}T`MgTb zIa3J?C_#%_j#S|IpCTsnMy>VS>qjapxV4$e_$Qowl|=^+c;xs1T-mu@*IY z37Vh$ET^`l;;+lqc}C6<2=;YHuB|V(xTp~?f|;;-jXmw^99>hN#pYEa5)^|Jd`EK>V0}n!Z|QmrJK?WTGKD@C98nxt=Snax`j5tp zak=zQ8hH+PU)LuXMu5*frYu7OP>E*<#Yjj=WUYp+w?jrO*R-j0o-%>e~cEc+*`cIJ8fv`%IM$fVG?X%z4W(R{97@~w!#EFTAlKG+I zp*t)#ZS%0pU1Q^Ix}@2aAF`H|e7HHwKk`gz=<})gawa?ge--?S!GZ$vv4WtXgcZvU zQ9-`2ev)=R1mH7Pm_4riq?@$HyE=Ij5nz&l^Q&#qORfM@&)N9{?I&B4IztZFvbO)j z(^p1i`90C1fFKbx zYx}`ACiA;vj$i%DBcJX^;7SPfGXgI9VxPR1jxrs|FnlKA0mAza$&n=vvLwFykWk8; zfUSyK#Bw{QS5}TK{d>%iB@Io+gdH3M-bf7Ai4pCnM4^3&5hf|0*3E~bes!&=biLh7 zpdSHGKDNOVnIU*tW7q8$p^`w8g8<0knB&d?x{kCrvwwFU=BvMA{|h_YhXyZ8Lp200 z#6=wRJBJ-|w{^s-C(ag=&yk-cx20XYuaH1E5M8~Nt!DD^K3%hSd2CL~laP;1N>aFE z=NtU+)eSEK57iYq=4fHO-52%osr4Y!3HrBI`Qd7P8g7)J%FzW_^s`gb`Y$SFkydaF5y&%1gOC;;0}f3_0evcdcyHOIllq4ePlrow+Sm-Fh!)wOk)= zoi;mVd+COx*V$fONKeJ)KV~X8@|_{g?XnmL_j))Sxs~EOv;#(@VXc-Oa%7pktk1t{ zE(hm#CmpT~0%JT0#z%ROWq|pw-I^wS$1CR-B&+2YpVP+9=GM1q!843zpi5 zR<9<1IJ)ya5AJ$B_KI*F)LP9u#|LM=FAk- zhOJlbJ$m&%T%TXiC&{cc0xg~-HvBe{zjZ}~sh%tu8qDB7aJTxLvA@OhW7t&OB>Gdq zWTu>+AYA{jDng$C;jel-FgUm#_rhQb8TA&eMab7~w!2^DMl+*gKyV-VZY4COp{ylt zsxBa*KzVu}ZX4smn57LgfP>SE(E|bX(yR$}3!4KzNt{C53gj_{ zEc&goUDB1UcSJ8XPr*f5ZXrFZh`7PXa$uZWu^-(mzuNQ+hyLy>(aB5GtC!P|pq12Y zq8e7*wzjs0Qg*K@ySJRk`19l17+lm;$7l$xuWCDrdRgv@i%O>1V6^2#GU}sW%_Jl5 zLqbP*Q7)z`(?ErCKlKWS*Pb#3vis6~aN%2W?G6~88`D+K^)c5~fn@)_joYv5w8x(J zc|4GI_fJ&VOw0Y<5<7b54eTZnT>zG~KAaE?0?78S#PrJXXZxeO`R4qH$(Or^^IH)S z!4TjMG;4iuN@q`+P9JODifA?%KT$Yd6A5(jD|l-jL0HVKUMz^)m+F@Lq+|!WSNk$T zu!XI67U0d^!}ytgs+c9i2&HBk6{&D8%xx)?76${SsK1mGEoJU14nlqp_F#gA4~=Kn zGwhcZi@^vg+@FhX=Ga$?bba%sk)@iCPR?;S>@dtFI8>6AJa2Y~LJJ%^;S|=V@5KN| zL6GX%IPT*b?Q%;jeL+CSa~KjWP(N`}Y%4i`0g4^|nBR{(O6d?Qj*E$4eKza!Jg4x} zjo>KL^TV#qy+twv1y>xBFK*C^rSUL#o~(v;8Y}MWHf@=l(DwG&WVV^ZS-#Ixr`Z08;`L6GPWS>wZO}{eb6BOw`EV`%FThIR;z0XRRFAiWT)4^-c-}qR}{?a zUFyx*l%l`);ofYz$xqOWY8L+9kYZNJ35O8+9^`~;Mn+K{ZuGUS;ZEBm`-_kXHEC3M zymmm4y|*YfgRk2hm|?%iw7}!=sYf{p1bbtzdYAJHA>N{Qx2suaJJqfe_1fg%BKPMj zf3%yul$PBo%Q#e`djn+mGkcN1l>5`HsIItLf1BQE(3r*bsC8*(C`egx55)Pm}| zcQsu1jGCeyMom!-Ymegn_hX!s;h(H7tHi`-r}67GD5#$b;x~6nia=Ty@HKmbxKi>k zjsFKn@bT53TP1HMf(&d`g@$q_w2#oNwM3$%vOTb0m#jL3jFgBFo_sS}rfu4w;#0Ej;z0E=tRj+jI8bxX~;FNvBf)~9^XXsJ*) zIG9L0T8w&bw2@KrHUi{foFh-Wd91*a#O+N7p!FF$Aw@-voG^M;?zwYxtN9 z!QK42ZtS@9x>WgOKT_dZp236FXB5@ae~Zrlk0V2FB@`kfiIWDwlZq2{ud{EpZ0Er? z>0*D^aeV(Hax3skupN_MaNY~h(Yt7OPf-qUEW7Q@8Zl*~83+vssQc;CB1zi%w=a(F z>hE$^@eN;h*)CC$V-gWivFgSFK87rb?meF|7ZjrdH~1t`rwcU2I= zT5dUK3EB4Nc8;dga?76^U3mY|f)t1rFJ2fEomnB+^%tE#76EeusQ&kJrMelL=}vgq zEmx;%%`VmlQsjo29(ME!{9JW|jyRCdHD=|~{{l&~EwRq72Y7?_(LO(D)y}u=atW3_ z!UYQV=G#Lbw2npygH9iO>MPI-n6c>5jEy??8fp98DHBCa=lq786}E7a^rKDNJCg;> zk3UHJMop=qR;(Z9mXTnsB;v<17Uaxrf^;`~Flb1;ZK-T7#!!53)&3&E+~D;M)Mn`` zkzt0)e)ruqAh&7;0+n>=MdrgJWH(W#?MhA?;7u1L_q%(&uG};EZcoPR@~`&~T&qpCT{JYb?waOaC3SU=kqWW~R#3}PrKEp}2#Tzz*dm-8V%rR|cfF}Q zeDD+zu{{aOiI-$H$v+#oQ20XAPbQkzp-_(fI%ovsyX4LqEH14p<+lwzl~j2emEu3&pzA}{BoU@ISrV{jxUv7x{YK?Jlb~k$ zRq3Cs(ELgg%OdvX*#P49i(QmvK#uC@RM2Itc-o^|W?*q~q_KrJ9upjl}!u9%~E z-qV={+<&%al1gmXNWXgZE;-QoTF;L;jbIgl#m^@>qSkUAMw)W>$dmM5G; z{06TmL*Yh~5OCn+2rnUf+wkOv5@MM|N7&MyI(AS9rVC9={?* z$E9+aW7i{9S)20tFu<#^$WHX>0R5Z9P{lutcg&sOv_f)QL)?GHp2f{~W0+~}nd5Lp z>hs`Cd(VV1@plIfK7|X;tT93CW~H|Z`T8Y;J>Iwe#AN%oTFc9MYkwdm&TC$G_lEO< zG}N=b%g@H93$D<)-1F_OI9OO%PKQgiv-ZjfC>LTWL1*?X?~#u8GSW*4LA3m(IjrGa znS_XdvYiJTe(M5?kcYbmOAm&Q8O(_$hNGWa=pLGyVW5MU3bFT7$Clv0=^q9YRiK6aRmrAf$dZp5a0VC~^nbF9r1N7I`S; z!GeaN1TmVzIfQ+2GjE9Fd7!zgf)5vhWj6yz$QL@u2Fd!ls{AMU9wMos11{4(4Ypmy zWAP9vh5)R+D}PK%cm1u)kuFr!@OAUDaA!N+L94j;Pj9kY8X>Xi)2he26-)XocK=St z>z7ttg|oAPmb1SP!@hR{ISs%57%<9ft@yaG-Yh)<@8RB{l~Lzf+Y`puul-L?f3}vk zfF_2U61JO;4pK*s8sfeNMmU8gU4`{H+L!)u^d-j^vX;}~ymSHQjZ}RFJL`dNL!B*$ z$7ze>3=hF0vV~k4ro37`gZb+;6Hko?SqPW)q899d{N~^!nh4b8ns^YB`@?)F-=-pX6$W4 z+R;i!>!fIE2aLmmY@{`;`J~IdYdA3bhbl^{5&PRUW7+X_bA%|VO7t)1#$`uZcX6ja zcIsFaU$6bsC7J7SXRbhV`>mqP#$0CtlRDunPgA?T2mP2VpG2{n<=*vLx<3}J6%Rj$ z;-XqRJ(=W0isK>tnje0Oe~m_s6TjM7Zq!J`U79`wO#P_t--;(1jeSP$%ycwj8A-_z zA(0qS7ZS23EzkV~?iw5Xp7_wbfx#x1j2&1Aq(O1s02(4Ow*=bA)#a|vP!zVIzQMYR>Jm7Wwdz%&g?B@|5T-vr621jg>rYu z-cl``e=t(t)KIff8>P@@4CwGe)>02}U%$)G>=>vtN$8WKsDrqsfP6KeNNr4i_Xz9Z zWHU1VgW!JkngG9^$ZF4e`Scti443;#P2jSn%4mLpIQq>ck5mg*C)_U z!?+NO9SRE0^Y0o0I4?6%Th^@7Qtg^VZg7-ImxQC{ z`LwrjZ@NWvtB%dxx!@iF?vJEkOA%YK@os=?zI!*{#Kb$*<#`nv<#Z_Y21N!(}? z8fe}%^lx(wSm_3+VZ4>DN)DUE&`aa^4k?uTa^$M7F|dLe`iT^q3_X1Q=H`uFCTpZw zA2P+=E&4PD4NnS^StEhJaAdG@Xp(ebrPhdoqrS;#m&)h!6>ZUGuBnNc1RI+-P4AIJ zn;Xz_Aegx`lLaO)XT`7t+%cV9sDhEvywpF#=QV+~p;dWGP$B{w?EYD;86JXA7iG`q zN|QSXljFhZ$`;l;Hsg(OK8^>+!H5yEgQns;*ORwADBkgc&nw}j)sa|;W^6USyFn}J zab)jOF#gqK(!s^~XvI2#SlZLSJ~Fiqaz!)~tA__pE;)gbWii~)S{Em1JLIsf+ma}j zq@)jOKM$6|J>94P0^66UN8|VstNUTKEGYX~2wS=}P1jNQVOeOnkhnjRKZK+v z128wRSMNtUvR24o{GygX$8IAdF|0n}_Wp+r*=Nzy#9o~iJk`6>F5PtPdmQpBBJ$L4(-K?d(%jBF7#Pamgu4if)Hbr&v zgTB6qyFss;Udj_AB2N42xOU@?d|rS6Ar**|l=j-1WMMp(o+Pby|V3 zsp%J1ytfk;mO7Q1Bvh=!v$}OgU(j@sg7EsZ9v>xbX5O^MvFScS!#fnWjZ*z_U48bG zE*H;HoV~va5zXc4gNMNxlHm#i1)}BnFJ^wC@cEE9TlS2&F|*jAz|8@7j3w=(adVZbTFjuT`4is7`` z>rP7?`FP0+KMNRF+0k+YPTA9>hsscJUlA1Ve@>Shqok_*bqre(tx4b6H3BPW%jwmE z1at3>L9`)L%IvEZaGL{}A)K?d5Qc6A6lGj$YGkGDk@ItEQ!AM2Q@8v&Um}-bv`tI6 zbHR=r7l*-|A`26&y2_3Fi9SXzDK!WO(Q+bIZ1t%#K-+dFqh4?44oAPe0)q3=$AfAY zFYQK0HgAIU<_XrNe7@Y%w#oU#8lq{2Lqeu!XPwSljao4JZI&#%mj$-i3@oGC^D1d` z(I8StL`Vseiv>1b#lbd4Un;NpPKSdDc!(5|))km-+!R*4_w`z z6D4HKcgTwbB?z1K29+>H41_fmCTZg+jRz;bhN;{7B2%bsX(O z{s~NEdAdUIKqUz4hnaBWhU3PO;I}cJpAyE~>Ulrb$GSQRf(?`V5_M>EMoz7>4XMJ- zS0vfGW-c#}$jwQNJKd|kZIB4z1R6%%S-qpC|0`JR@jfmcxgenPjJvcO4tM zf|l1pUHr|i%pPUll@b_@M?dpHqV%#tIzGSXBKiL@#1!olYkFZ z{p#dR=ZHr~!vDkRi^s}R+tNRJ?)q!x-+>yqR`mmherj0x8GLrl8UaS5U(34(JhO&3 z686{Ql+8Dr1ZdwU2Qn_nv=346?p@yhkR+vWKH(95P^htt1YKU+2chn#r?@U5k#8aE zsHc61oH6beI7AH1Jbc7|s;!yiEA@3M8zHePQ)%mCtwQyoH@_?gNPT=S+>u^&IAu98 zF?gajQFe4~_Kl&T@3_uDTGfFk_}njdVqdF;F2NU~9UYeyiZQS-XtKathDV}4+tG<@ zqTK(?&T_7dzgX1|aDC4LYEiWysbDCxa=Fn*F2l)JJ*=5u6NZvdFoc`5+ZxQD)K%=P z=lCG)%}1ueIp=ux%}SC-w2!8%l6EK?0HDmV$oY+X{xf-Z-(*#sccoZD3Jq2-D`3;% zQOX4bosa)6vGAo>wRm4;{eOpce?_HL{WtMnU0sW39-|O?`b2<7uYs4-%XVZlvf85#j zslYgDztkSe!m7PpWO}`(nCVL^s7LRm6oDh`V?0jy0_BxIyjFVugPUL+GoDs8IqV$7 zQySUuycVuX>DkQQ<*1f!Bj7wK{ad9J{Etz9RpKlK@;WtLNSX`ONzwJJJ!4#)@PUre z5CZw2W^o$%S7P#*9mpg)X3@5@T#FRrW4_I@^&h)`K@4gNblsRH)}Iyp`hFrqL}s-Z za#aZ@@`;&K@B&Y_ceST|)w|=wR$%OSyvM1{8)3cmjn0e_lfAtZ%!7wc?Nvn}sDqy8 zYJyiGCttvlg7}0dSDh(9!3(u6vix-Ay>|)kt`9ZY0u4mr*DdgGPYn-$5q)Ebb|a+> zZLcRb?V5#ttloq#GE(6pOzSjTt>|4|8xHBv#dTJ3W%Wn<|5^YKXY<9M&>HaGc)>#=l&Su87*C~ z#9DYwPw?*)!+slH`%4B`N;*XtfxHB3UIqGl`n6+e(%}K410$-tE(~{PQ@bEM3DKu4JLN_PXX#&%dq0-d#3rpX*|LT?jfXYS~|`uy)4s zZX(xb(OUzX0wE#)D|_becw@4*7T!i5v>?IA}jVHSU66*W%dY};}B%EXfrwwHad6a1J=zTex_VjwcGxgPNa~krIe!As zdGqCKyL^p>@aNcTjBv4Y^d}`sx*LQ@XY7O%9%QYqZXobEqc-)H=dyx{fbB?jGIXa$amZjAvgJls` ztz7ArrSUf~X(hX%Aw;4`L8N?^`L=NVUlS8Zu1g#YQF1SkN@}I_luTK{?M;6y5zMrr zXJ|Qn)*I)mMY!0VawXcVH7h*7uzfjQX2R#jOd3pANMzZKGl79~V>SJX3e+w_H<9Qe zJtG(SV%DRkTc?Xngk`sz`Wz=*VFOl{dxh#WxcoJ6alOd-+I=B!R!lCyqCr^DN+MMO z3)N#n3f_lbfKDn5&|5YSY64G0>}p(~G=&mN33YyhTub!5|D!z6m{$pYovTB|Ds%vP zi>_*C)aIRA7Xm*?a!U7AkLClUFbZYi`yW&;7Yd>gX`jtzx3(XfktDVsY0Wr%WFA79 zcs}A-jleE-^2XR328-avBKPok8pm68Md36m<2c2>nf81x2x{aFjgy z<=(pv?J>Fa(@?j6$EVP4vm^WXdF6SJYRCI`d>ZJu0G14I2A?HV^vArHck_#$!aqfu zO46}QR3%@gj=Ih#3u#uN4rdcQ3%pCW^PUyA2k0N$+e^I8d>4YxsVw#KU-uZ^g7QTz z4$Cup^kxW_rsxxS=Rmy}xN|ZHRuL$$Bbm(|p%R75on%us29W1CdfnQTTHhl|0UH0C zcFlnY{j%;JDVg@;7^FSik#Ct3H7Krp6FD^fbkwF7kz~L^KBT>laN{;59}zbY5Jb=X zi!7#^sN$#xq3WBOn6g4oZ-szRCMCMq`2&U#{iwv|U&J|9WZ)-x(PPK~G-hG4#RXhs z=nI!6-u5x@B44x}2)+j8+TVyApnvMEIs%c?M4CZQ$y;irb|GhnJja{L&T6JFpK#>| zAhun`ptZ-Vde&&tH7~ehHcfe!0&)Ma<>G^5+&ygx+S=L|0hH0WbLTRFUUMuoaP<09 zQV`&DBsTqPBEV^X-wvv-iaB+-OtU)TM&KcEE}$BU>wx_S@qC)ZF_DyUX?D=^7cvYi zbXiqV=70UJwk{U0vo2z8JtY4KRuFBa3Z+usP?awG9Tb)1E!Ux6mu2Xf#Dz6YH|F4Xy@Rv9s^fo$H?aYK>QdF-BQs&YJQYN=`(t`r{WYvN#jp<+@z7V)MTHXsF9ulWQ5QKAh$)=!u%KadX9c zw^_;GO;J#FK1Nvf=m-a;cg*NyPAm_!gFpkGt)d!E2??Dy=5V|;CiO(kG8pS%JLGms z{ZAeGOXq!_I?etnTPnJLv%ShoB-cUd%MEEm-G50?wqLCdN6E-u0D+2AlvJB!XUH76 zjx3qtGtHh?CpBM^737|=BPO4Cac4Y}Z}FP)Xiq)Y#&hAA`@62h?~8CM7VKRT$eb&Z z(k`K&b~qR+)7`NH(8FqtJd)lwtNV!VAc0|Tq6scIakOAh$06f$T113!UcrTR+&EA;$E?34lAe{oN+P@2h zMKdg!-NFnf^0is3Z<{Ksd!T*C$_GRu2es1DR(>H&672B3$u=zAh5C&vv!Yn9YXWT- zB7=ibGOKy_fXiWme{i7Ws+n;Zh&=MueiEZIJeuSFb$w1^S|LLAEGf*dNoPAV1GuTP zct~V&@>ALW5%b%0AoN4iM@{7nf_V**ywI3|Y0HLWF?<@Aug8i?QJSNiP zySfGb*zYdxwNJ>fIWt+|fOvZ?q%8Rf80#Vy_*ulJxuyRh%Cq!Z(Nz8>OJS_`)(RAb zjgE&<#{`x#ks%7wyMJQdUlT{HgD)t=QDk6nDqsr<*xIgAIAS^Af(E-+D>BTj+uDKk zpRTol@HlKUs`4Y();CnGZyII8#I2iYXyT+930`re(NWVgwr;%)4axmOwHk`X5B%-P zhfBhvrp9rxiDJrsxs|7?2L|ZMt}QV_MFU_TCfls3kI1_A&~U|7MMK8#8qojq>tQ2N zIr#ZY73xFcg5F_xb%`nZpehe|aY3K;9iG{Pe-Nl;hQ-fg6+jo=1VS*z!C$3G+t1gC zxO(k>_`vf~-mUgX>^!p;1r`~)DZ+4-vs!AYHucvl*9HDcWgz`5^K^grndRZAVo_6y zRAb|iSV(=?=XLYy#%V1+z8SHghk|E7rV0_c4TK}|@r=%LcT}7-4t+L{sr()+A}>0Y z%>V6CZp(p7GcY1{vhLpFS^o3a>55tV>9L(mrC z5Pv=T%x;E}Dvc0>7@-Km4v%t5%JnC_s>_<95Xc$3sS4}?1C@MR-Q8W}0KU7;clzy! z7$PH01xBT~T$XQ2qK8gzuCh&j5*u^~{5vJq>8MjQ!ON!J`A&GWj$_9N#;8sj8V+jwvE!gPf?bUe>7kx|T7cTB3w6Ux#uTPiJX`w_8 zY#8QGKJNj~ z^3faRMxLP8a!ghz=coRu=4lp?qcXb>dZUcR(M}s@$xw0CcmuwTM_c0lJeN;(ln6!t zKntJUgWwG(=W&(`oRK)vmkHOQvvV7s0(1b-p*}ne`{;C8_{xpSa0kvPe|P*e(ib-r z?x3`Xtl{bDXDUsKj){FJqiHw8lWbxl4z3ATT1?mcr4{(@-@0GH_7E`GaDE;>Ku4Vm zwDt~pp_9ssF$Q3=4LGDjDG&I54hEZETje9b%EHf;JyMm8(Zzck`CWh~*0+Tg$h2|u zY}&A~JA_HjKKmb%C($^d8Igkf6u{6`!q;vgCjwPoN-TyerTI%yFWMS%W)LI!L*@%U z5SRNyn?ScNTvI;nsXtIb`4HL~-e`=)`nVwi>B(SUjc2k^N`7&R0$cf+O+BJZ3t7Htm;<>BM%;`(c0T zT94PfPCcr$9T=Lfob|&2nq}B@aFB9J(;F0zRc@>kYzD%Gu@#Y`l+!6G!5-$N51G6_@N^Ci6YxXz8=sm|zUc~l?z-z*QAL>9N`w;{i z2aG6mpQ)OE$uQ#+sm4E`aP1D-?%37nfwS9qhst(&O0?SnZ|>0W$d^Jer=t`!DTYrH>}bgX(byJ zOF@sM_O|CAlewhL747DWLgEVEf$1&6L8ynrImlV?ueuII$uZ7uTl40t{_=PFd2!j1 z2c?~)0|$wR7jHyH=e<7yqNL~(M?5@y8l)=9%Br6f?Usc^8fRxU2Q}jlPMs@?va`|D zD;LF8n^At?vV7A|d>#i9KzNwf&0FL|U4|TnKgp(;Iq%3veHhR~OKndT^}c#$Bp%?^ zeGmNf0quV|AGuL0s<`Go*xFb{J*Hm&EC2q(kA)GO(gMHpTpd6UgC38IZWo{`mby1_ zB83*a@|;~kz`*Tuo#TfCEV0V9?H^@>I?qUekACiIZqze$S=4el@k15sh}oTJhtA(d zbX_=S3Q;>%821s_-8RXkR7VkK*kp7co%n>>bVE0|;(k-5G=mJ9JU*T~(tAFMxzIm^ z=H~@7CnfpMNSk^QsFz|vmG)fUq&sb)4e7aOs=U~IzZg?9+f00t_1a^QmL5vxFo17o zNRQ~~X`|%zD=qR~RIDpcmk91xG~7_ZKEz}?;$DTeu&3S@>4bFA_U8()pLr?k^ zqby)fWlHe?*jV@Gw%l7?G)-DK(?4G06s}x+h?2|dU9@cx6%!K^v6TT<)fNfP7N`yp zY#x;h&GWmIgniuE&JkltI14uSbpMLp4_{#dHV0k{{mZb-N!YpLJVx|`Vudc9$teN< z#5*hLy(3X!=gMKD1=$W~`OH&o**P+H@J8EqbLGa)0+C_0lHk^ysWqmQZZFjjK}%=zWV0~QTmRVF=8Wgsf0$*FT@T{ zu@>|m+b3My=eI`~O`2ij#flr|S7?ixFy1MK>tl7D{V19%la>+k7{ps+W;ux0*FIia zMsth{G{!0INuvf^(;D-?52#%Q9yu(1y)YA$C&slcmBIL|O!IZdUv`M5ffyq?`g@%R zI8`V>P0Qvqo*L9t#YvL4oZs_l)mn62jPVVwEc0rf_PDxvxN~04g2eSw~ z@EMC7E;`t938)?yA_bT8w<3U9!StQWX?3qXlIvyZ`-^A6|Jn{E=3LFY$#0G+oe8n{ zYhhLUL`BCPgXO4aGFGy!nrxL)2pSMeXXD!MuoLY1_S$CNAi+Yi^on*MflTN`8$*Du z;XCi_LvAgg+&%4h5*6cJ@p=oaUwfsBgv#qG@1iCLJ{3b3kmC8jb(J?+F4W!HGG_T@ zE5Tv?Se;W(4j|tQkE;h$5O!^QX3~y{vU+r&jJ2F1f+H|>1jw(nRSXa>cFF&%?7=N> ztU+t+#RcQQV9*L`5TS$!ce>&3)t7Q+F!Ye!KZ-I4EG>8caBTJRszb&BHw-%WG(1U% z<9sipoQr?)W*u~Dc}To_fWgjGRYCOWK@@Gx_;#WhZ!&` z9hcV~Z)zaLn0e0YQ&##uW4PYmd-ZtUOFx>)Gr9yTBPBWdk15t~e{hR>QwBQ!_V&MD+}ajq zc7?mj3dvhcVA@|A6WX5M*h9J}hTR=GOsk&?=>C!ST6Ck*1>_I(#|)OX770mC1W-j< z{z2TriT|$a$NvjeRe9*KOhF0Uo2xTDss~0vjn!~Voz5D@*ELF}6_aDW+&Js_lMT2q zPmPncuwgXD4jU~JrtYq~zc1k42P4c5U-cBnSO5b^e)25nxl2eW*4lG6Hf!~JKWzor zu6b1E&`QUUe!)@wh4T*454Kq$E7wp$iI`SB3?5z+t>6ax!z+wQNd=Ap8;-@Brz&zZ zsrk=-->l5{ z;F!g66S!QOXwA00aA0}9bVF1|i)@FxRc7v|ig`q@><@hQ1 zZ611b@Bt+qc_L05muEgzuGD;F-(G(REx@*MV4 z#d&8LQy(4mYw|B8MU#r8F&kL#gH#zMXjK%|(!;xswMZo}A+Xl7212hvvoSWiTVSgQ z-ckuA+m13AW9))a!`vWnPjRmu)hwYAcC=8L~5PO>3CA*;G=de2l{g~J_!`yPB7 zRO2q=8N)u?j$G9)Tn_~i4E97p zj+08vxSWM<5LP9?U!0i>23nqYr3|MF*XxG|HTW)Q@=*3h$7GC^=+`%U*(9;SU7zGw zH($GXHdF1WR7~YuJMo7e7li&%Ogx#@!a=N;&FIL|zTV7Hwx2m|^Ey4o&y@@d36Ts} z@v`E4Rh1E4isu`hHzG^I+$NL9F|!@$b|1`P<_3<2)P{@_Sxi*xEkZ3Z6l)-YiW+QY zo6xuXm3$H|?f7kJc9dqU=9wQIJ&Cn{ZY$=1^zK3)K8&fwkrkFE4W=GX;)+P_m~kD; z|E-8k_S&BMCF7_i$V+o_s+NcYf(=U1S%q>pLt01$EMe918*61Z`mc#BY(K_Kbh{h~ zO-37BrZ5N6nJx|8_GNACXsm1{atf?P9C-*Vs14Ng5s9x)@R8!91p8|fd&Cv9t!`Bw z1^*mZGpN&)8XMe=h)QJn+KH+9cNEJih37(U<;4(7jADDvYM0hZ!P8CPI`y*e&_edc+33p&IrvSl2DdBj2f@$3 zBUNAvF834ru?Cz=XA4KY;uI3g@>EMj^wmZb4(eFkCanesop-Oa9x)qrdWZK%MgRVu z=_EqasUYC?8b6{H$*W2oq=nX#hQtN^{bN@m!*rBS^2y4IPsaB?LV_r5$XDO<`vIk% znELEMB8rTt=oV|?)*PcB#=}SRB5+V2>KwsAEeP{HiKNnf1eYx4LRc0rETje_-omUP zN0qX#46?C~4}&7%FLE*?q$IiRFg!Eb=<9)l74Myg5ksTqr)?*~i`uKHB->NG>GzoX z5Lvh}ZNDxxXw#*1_m!*Bz4${rUWs zMw^w=rRQ0RrTc|N*>tuja8eTOQk>)Nw+Y?OCt`M1e3@-NR!a_0)`6KTx{DKxZFeO| zf)B?UiDkEO{mjUMUVKR#{;P&uRet4kyHiElq(H%S_SbW_?Pl?&@b}Kp?gX)R5dZGd z*788QFv{b#0G5RB*7IU|N&gg4X4JePzu7})Wnkzd-$TC~)Z`Hk zvc#S4@GUZF@cT{P7*SIR&+R zJ=Ku0^zgldYTM{%YPFumtA$ekT)Vj=)g&AejbdGSJZTe$*ST@jnAAbJp(kO=M<-<* z?>^ZX5`*)GDW#U#M%aj@vUj*(74k8QV?GpjaH+KYrByB9hvD&sdL*yuap`(&C}S;I zbKwgAlUwuk?Hf3D;s8yd+a)@r6tYS7(CM^ZDhx0!$ z2lM4_p?vqY_2wL?+$Z2_lS)=LeJ-=$_EO(PRYu{A@p+L!VKtR_)DsJ)P*LwFb$LuQ zTk?iU54ykjnqefes|86N<)*kfzc?EC?CS+xpZL`;#2G+0{aOq3gwniPjJ)t*_$z|B zCIX4HPi9bO{msPR5#bx>V2v9Hdq+;e?sGARmO?dEwLnO1EVnqjhWj1`C3q-dJLz=> zkE_u#F>mt2uuRKUFP#p5E|aHA=+PMnR4+snRM&>}TJRPSw@Jk`$9K&mVTA+NTclMW zw}@`#3jObTY)LB=HH69r%`1Knu4gmX)K&65mo5+eV^|`rA0Oyy_wk+-lHdou=u|+j zq6yMZ0($IplwVg`;GI;y=p}(v#UF4_m$Iey&e^D?R;lK2J`}!i1P{1|6>=Y?v6aDt_z6*?Dc|73^Kkyq7c8^IYX_z8H9@EY(o+uxoFU zD$XeyTQ{z|sP0&X3Y%4AMxNQlmxc!E`bvoD%QW>z9!*;EwW z?z2%s&BuFfstqR-axlz5gbC3h50Mf$YK0 zDQD=Wqek#nDjYh1>2(%LOCgmchxt&Z!Wt-1|Moikm_ID`$J2Z1Ks8hI1*a~-68@C5 zB*gPlp$cWpDOdUwZ5;(X+L`CuASy*Ct0Zm9u<3$xr|{COD2-~Odhvj6FoIe=U$sa$ zcNEF9L2f$KIFJk_cp@HkkfS>N?B(*hvh7GXK+)p8ubN;JWsge9%-Qj-;Ke|!^A=Vj zxciluuFN$?2C`>mJe%>AfCb!`9-Jdig7s zJQWYixLS^cXEfZxwCUF+!V-Ip{>@5a10^=LZUfib+1S$t{>G5RrZ; zB*T#Es$VM{R3>o2*Zbf77xVk?{)StQhLpns%r2y)+i^eFoA<E;o@Bjz@{x5i8Ykz=JWz z2=<@c^aS>GrBW)^rU~G<615Vv8o5|=xrf9lAw|AF*BXOBAsBMp1v|zL6QaV#zV}>9KnM9hpN=lWi6F0q!i79{(T>f2qBi15r7S2BMUX2ZakGQ_+Sn|sTOZSJ z!~%P37k^&<*N2&c5UryTqv|Y^uEN&tdh?-ad@8$#@;ELZ`q}~!Oz_~uRI!b}OebJW zx7lwS2QQ1e%Ui^eQU^^*i6{u3@v4HLwvoM0a|vQ!5)uN_>Vi6ZoL+e65UR)kjal<= z9i=|?Le-pelx_=_jp%PxzhT0aqJ(GM9w@lt+@2>0sd?Q)8ie9>P!&l@YNkFRpxEY2 z1q8!nXgg)GSUs%?$tD!I-8SiUnUD@9a(=JvS$yAQT#*YffHVj&1alk{zxyX=O@k~A{ytH*9*h% zoEYnjJk3cJ;UtveX=&XunRH_}%psJqeufPAbssAmhW&6()^ARLll7c2Y1c>UEr*Y< z1TGI_|Kz#q4}D)g(pV2@bvxjNn)ZrG=N{n(=9S)6R=?E9>D zt^fMT+rm2ap!U|ZM;wYWk|;oj^3&`MYu*Pz)QpPQ?r!q>M;Ylb=JzG=NXR%k=6g63 zDE@U&GPR@SwM=S3NX@aU9LGCd3T>vlk>yB#)4C5OPKtj1yrPy04+(jEcvoOU_0w9R z=)D0MNE*?D3Af^Pmecb3>He;EPL4s;4xv@Miaf4@cLx3so>A^C14f$GE3$VKr@b@%;>28SGFw= zp*AQILO34n_?xn#P4=6{EzDVaG+4No!l8T#*h(tpBz!8A&4T*G(?fiH`|Y*kD_R&% zaifdd3d!S9tbygRgZB|fI8DnlPl)XFrgIO}KIRb!+Jexxy{C>ix$j6kw3MjtgkR~_;eF8gra@SVbwkQh3bf!CNBAK9{})Ur7VoycHb9%Hu7SdfD=5-pvo!2QD};yFBdMo|COP6i|A9 z_BXB`jTkd*`S?S9cD!2qvGLu)5%3j){w>dw<@JQZ@(6&LXCK#9cQbvu`mrN-kQCa^ zx$kMoFvXGcHR`()QFe1FFN}FsRs>*R8;c@S(lP>d7$q?OmT}c0{#?372^FH%P>xC4 znO!J<6)427?#8$1 z@1VSuIR1WNF?VY;sGfI!EMU@XGNnTuYY4*crGOl3KkVx1c|CakC~V4r6^~27S$)pD z@;xeDu6y{xbHjIs?jC5ucX4{f$M1-cvCy}+z5l&lODs4*GPB`CYiFz(x>$8iQovoa-He_L(?~g z=h-z~r%f6)YHZs!8r!yQ8;$KWwrx9UY};yV>pOct-}@uSapli>VedV&X00`|iFw@_ zgDBEVXdSCjXzGrX0k9KP`fKSXTgVA3ScsBjD@slHWcQ$SH;An0%hhx}UR?ZPo0+WT zKRV;-%NzwIh3R-Guai^c5uTUX0}q|%+^=uGYL8l*C94TF@<#&2aGC}T8jnN=H?722O8LL*Wii;&*YqKu%%jIq_wVl!Eg|T z>J(tC3{wa{b>pd2Fm-~x>h@JxFS#Y8jOdqQWUK0JFLPlQ-)cij;py<-8^RK6(U z>GY)WJ=DDZe^TXhF13Pa)Wxh>WwZ-I$pfMB7q|z{rIE127kNa z+THBLp8V}Uk_#pG?xtU%l1tlMEqas=5?BwEf&Z$%8l}@3^n15&feIu)`PC^^chOSC z)Cc){?Sp~kP=Dd=WolIF;s+yn02B~9|E0(?4#d`E_|!EY#Ix@#;y*E-A=uiCs;}+{ zTC{C%9zJ&#JqVpsnMqSAmS9ARt4((AlF1izbZ(a?MGkU}=4*7kUIqtpFFK5ueq3a| z|;mBD1ppN_Df zZb4;6SF67D@G#lzW?`_^-Y?H^zA^z5u*=GT2IW{wdV2R+^7z$Y#vEJG22>^#)bGkF zRHW%RT&9R&oZ2LOUXLiEf&0xyP>vZ7X%4~q>;%YG(I=gV_B zDs%iUgSIc)F&42mC()%@gX~$R@*wyO`MWj8R9ti7E6e2d(-b$W8PYHH7L}pFmrUjT z(mX5c7`aIkIM}PE$yzCDXP;tu4ZTuxWx3jZC9rQi-dc7-Klqa!ju>l6?a**O*zQ}A_o{5Y&La1xrL z;&{0YVLxLfR**;D^@;^Fl*iEkqeJAn*B*voY4><%NgYDQac7eA#h;4xa2t)z$vCgG zDfI8cQYPOYw-~ZCNx!R-cVmxmr%o#854N6XXD3U#xq&ejLW7k5)Gy6x;^FvsO_yOB$KX7i?7>f@$6 z4xTPw+vDFTg;Jx5vIA`flzr}Ip!oIwYAN9d6HDp(Fq**<2X8f#U3xubYVIl z`D*D)$IMzm?DIGVfZX3ZJ^U5}t!ycbVPLIFeWixx+|N&-DUl)<-n$qV-fpZCrO5E9 zFz~6!6sD`slvJbFcXymewgUS%xqtt%0z8@ZY!$ONA5e1mr3?;KTX6aSELl1UZ=7TR zi|^T>Rqfa5Lhtv>PNCfn)TZpJ-!AOf!2FC!+}roZXr@Q|%r&-5H=Aq(^-J!4Alw@s zRC9@Q*+Y9L{lK%8T_qD@ygu=X#8z-cz2Os9NA2>#%l3VQ5RE?4V^oKPhc$W|=3VD> zH_LnuxOiEZE)1y0Tr#S=8Vlx;N@wgCxka(Z`^R?_{0lP!HZ1v9cLM;M-p__$H>p($ zU!5b?vr-kTC8KN)Fe)1d_g{D0<W*`VpY@iO7N|W|bdG}o- zM9a$d-RQkKJ(Me3V6eZ#*KyObl63hN($BAQD89S9QO!&}JVnG!Smu(`6`LBoErq#S ziQ14#VKX$H_7BtGa{WrOWUce*heKQ=yS@UQJKmuAr3%bpU(YzxSWC{z?tlHhx&55H zsi!M}s_Xm6ltiXk6l?| zl&v!M5U=o%m=vcVKWVQ`qOPpWeLZ8~BQ|34Q3i`%!AgBk4D*FsDeDf?g(UL@P6!Eg z)2eom%sKD0r`HLKy$;!Rdcb?^YR$j#qF={%v2< zk+H{#Gu3g0Y;Ev{F-;aWTla!D8Q!21nM482UNH52|kOf=A;I;~9Ax z*|GS(z4puJaEDzFD6-vMf&KzCmmTy0QIfj5nMcJ5x@v>#OI^FEpR}b+qF34CL$18q z1Np8orW3oSEzhe2MhB?Zn`o9#4#(NfXY2Rn1e9;%rwxYL>@xcT|5E^dKsVBXIKazF zDIb)0W#E;-lE5nSV(#PWkS~1b)f?2Olq{mQb!3rtQ2{}ezaGKTZjxo4czKG89TR}z z`)3+d%WTZ%Ae+52MmFjM%V-%4SX7eaQ@khfow91&{MMep#bpZ3i%1;F)7v1xv_(p9 zPbYk$c0Zkb+{4%Gf!4TBQkC+kqb-fTf_9yvRWp;piF`HYPkAH8>-att=$l)hdI{x= zDbUx^q1D&_F)XVJwOY{^AG}FW>-J*czAT(>3`NNjjPc{cZ+-5(>=n$KL{zC8nyNnySWR1OW*!C(EOaRUgr zJ7A282+=VoPsr%lin>NP2X%b9$;8exoezG6BirbNNhB*)w8!i(9o{Z6<7AnE&X8g> zolV{&t7i7Izm+NyQl!CKoS7k?ue_i`vWF=Xy}Z^KrAbM^J+fvKCgTrG@cJ>h;=MMm z@3|Gj1F}1D)?$T>{%dU9Y*oRtNUxAme>V%XjW_M*d*z3baVLJ{4U-5=WC-|y@B#8f zyK|)Bd`%X$`{j>SGIpfVb0k8wn@yrf%*BK%aeEMeQEcSJl~`)8wNQH)WA%Am%){co2gE_+ZDwg{u)~Mzp&#(3QGb_a#;3{+b+nht!v=Nqmu@6kaeyktnC`UZw>yZ zH;wMwz|O;;XGpm}%zz)!u!=}!GZMBi~kC=g(AhHFj_ulh8% zK(59sG~En0HPp&EE~yuy;vgOU?w&BoFK7w9x*BFm3O3Of2Zmz$uR5V61b+>U z3^$paqpJh(9Uk=?bf(M@AjD+-c@UTCx;O-X?;|2iwO<1D`aItS7iOPTh|y9?3RSG? zOq)C>YB|j+#h&Iw3Iuk<$n+@%BgTwo#=8@lQrzGtl5XbjzqoVFwIG znvQzMupf!8odGNE00XW-MYW=+GI&wP$ciVq7f!$UU1XS5_rCdzG{H5${D{LNavRS@oBHYT(2_spQ z@c&+mz+Xc7#XP32q>*$Qbk*pQQlki!0?Oi*+addhhM(nbj_RSvOXx87FE7o<{34q^M%$)c#wUqXZ= z%;tXe!YjhN5Hf#k>f_r@JGbwJFbBsJ2bS>0clwu10N-uzknX#{?sof=Ln%48BSDSY zf7+_HC~wbiZP8E|c!Psao&6b4(q<>KWNhHbiWMsO3$CZzt7<8QE?AIo6C#$*x`XPY zsF_3Nn6C*U3)+JQDU7s0B|Q7AXdogYV$hqJCGdiR!xHdaA{Q3k^AUT#PN<@DG{Bpe z_8mgAp@FAIea(+Ei*hBrl{6W(hwKno4m9yMSix_dPBmhE%&k}8WI z5k*v(=U+hysu6*aUUKL)qLA2@84LHG-Y{o^2M`cH=9}z)Ap3=DF_@F@^47}tHu5F6 z5TK{TITjgAO)ZsAcGde%4b$ckym?J7i%(*%1|4ed6hAbC} z0tRY6ZpcRTdOuP`?hYN`V7yCR7DT)#XbKLu*|Ms$B z>2!`R3#ez!JU77XGLJOD(o`B8jq;uyyBdQHRv^}n5lwmf%jixN)Q-Hp&uPM(&D9q6 zw-ZxPj*I3)iO{;rM$ppHq50JS2k&G=fC~0kY&7T$+EEVOxDyrJkCLjY!S*cFMc-Y= zHfY&uuE+LeBgUK4mjxqZWBQYDAK2(cdJ6Dp~uV2i_hqFcg zucF`aROuVHs%19U&31$8$>B8(bWw=O=KSoz+&(MNk(4LG2HieAUkEJ}bHx8oLH{8k zn>|O_ISKCw5Zi^xbSe>F+8aL@oq@$-P52^cj=Rav;BSi$u!t>%IWP!|6sZDihnQc5 z9x((Tq8DtQ2Vu}<9~P6Atrvka!!OsKr55QyDbvd9)O?Q8tPp#{cF=0>zl3C-CUb7M zQgbKG>t#*K|Eue*%bagRgm<`QO&0(ahBP>vBw-sDdJDE(f4N*x6E3_`?<%}j8^er_ z^W3S^KFPoMY|`NDl1S?7e<8@#w|PZF;WWhy3JzMB?6mlM+sWXM^a|KC4(54lIhV8r z1o|!3Ca{Ru$gskM`m#2-N~@~M!QUPS`RFmC*s7kf&gezojQ2wW+(nxN} z>UpUW#}C@JmxtHYrba!5iT885xw+{vvSo_3Cz>NU7Tx~T-0>+tPpk#C&`ezVY^;`F z0~KXF<~g*t@wuvGvKPt@+smfuMoBX5O4!X0FgG6^o#GC(L^{_xt{K42^>H-kIFEA7<;kGZ&d%` zV~m?$z=P6}{lfyV;cS4>`9XJcZ_|8fdnZ@#{*vq1b%OezAz`8W@{b8p$TV9JaInZE z7iSJeUom`#BF=c-GOnh7e!QM(TdCi}5yhuxjS$bW3kN+1W`$5%iHrZ}^7$Z7!Ud+7 z5+hQu{yG@}QAo|0o*dc7E747rD=?1_fidmJJDoYE#A?)R-SvC}{p!Bod+a0=xjng7 zZTdWGTUt?}cRw|DqLj&r4d?T5EGhzb+F#4OB-D)A_lt=jDR)V+>OyWaat}W=ij*U!ZND-kB$6e(U^`jf#G`!ks?S+ukA{?PE^3h zov{Y{CfcOOgtZZUH`BRNNr+h)NII#OM0BPOH0ah_%u~6vn%5d%#uh+C?XV;J^|3kbW6Xf(+ZbK3 zPB@NAWqjZPaB-tNj(msPGg3C~Hta+p8P97O+$JDIAx@y%nX;<(u`CAT zlprFor@f8&X;}yExg3cnQWlg+4ug?@7y4$j^wLTcKG@8jA%%p5(olkuZLJZfm6W4Z zbLx%S36cz)<&Z%f3dx2G(5b>}(Y00W6U*nHf}8Cvt8$g9hyn2n8VoXG9zRYj?2IEG z`(IQBBv`SBNfw*N`)`fs;-!8Pf__i?BW_P%@l79&y{BQ2WNLd;w=uE@J;6a8?60hd zyM#ddz~OWAZ-k{!xcF*se^=CZCv`G}M_h@c(k0Y6+GpCA=*)rQt&03nJ;GL7Q{GIz z2<=n8?P#p(K|%Mb`0UVEWYj|>%oCqNeRFfDv>c{NeubcrSMmM}q8fE6WE>P)F_N!7 zA77}o8Uhh?;wZZi2N$$K_@2`7oDf5S#Ec{)KSEd<0eSiK5w*RJ}+@jozXmnlh7=VNC8K} zw6NHIi&lqX#v~ALFRPTL%ggi=d14$ZP}zjZ_(F($(Jx_jl)LXt@ZVr|#`pw2!Ijc?#TgpH=+{JjDY+Z@l9 zrhp6v+p|*3s;Zc1?{)n?>>>VB9`Bl{+1_^`>%s%y(Uv{aFe{{A#SzRj_ z80?*#F{MVr;LKg{|44bGym z@JDWU+$b_F1z9p+IstTi$)%Fjgpg1KHy*Fdjh_GW0(fvBU}6R~)nP^~sAxtlVYb?? zk}Jq&7`$#Wcj>mKrdM0H#Wyl2;Yw7so8T{L&o!t`@nNu3K;#FrY$(9PM$~DQc!O+J zuM0ht8i3zfOlh;}E;z*|(_6Bhne5&tXmY{;2%Kw~k^tDt|)^L)Mo6ol~H%=Yr@dFVB3Oq<{mlGnzJ`J9Vv4$iQA=V*At@sRe` znNA}-3K1gIx9gsSxmdywY>d-oyU;&)v3`44(s4PHG#u(;)^R(<>R8Bv!I}=reQ%#` z7A552BHONfusXil$g63|$b8K_YSJJ3;)25-z2H$4#7IpXYftpb{#U!5aI)!{;m~h zNA>6|on~7_BWU96RpShtY`NN4115t<38p+{7RRD4 zRjm&<=oaaBPJG7Q^%TmxTpCxc&ZI}S51wiGWVQbDmM|vj_@p>%ByReolv7^8MS-@1 zDhl@pI4|(e0EShVf!30*0@L471kLAQ4UM4|jK8^oLzm~w{Bad7eJI8^PS`H^mj?1) zAst*QQ8JjpLQna!ytlgi7mR*h>>Si(%ZkC^c411$oFOGLE4jT)-@mM!eQeDU>u|tk zU$OcdqH_3la4Sn;^Mr=wL&#e*Uq3zwzBS(C1H<$1?}gyXeYZwVwlYUU8B-Hw!fJuj zEtXus9=|G*Fi)FSa+O1>^88q%VQplDX1A}#T6)}iCMj+TY=}CCh?8ZCeMa!Ri{a@n z+8A-`nOWMa3+43D-)B#2OMnfK=3i zQ9E214hVkkXF?#+$4*bFQp6>l*JcB3(`etHLq3W&k`&Wfo!H4ayV9!?Ojyh{((FM( z`eo$&Ef=(tu@sACOx9D(0aszMa*UMxu<^L(zK00xd2b)d=|F)#&)dtA&!*=w?Td@; z^Y4xC6GvMgqd2ac>$CbG|KYcV+^ZX5)x@A#E|7$-jGU%l>@|kumTG>2m0>xAkLWM6 zfHiR~mu?)n!9-8X6o9?PWblX-^ycJoqmbe!qP;s44R|bqv2^UVZp}Vd_$Hl;Bq;6m zVHoVccyxJ&N;|uexb!+sqYs}p zp=Mi!yNKo22Usg}fy#T1%F$2Z`_ z-~G+_S#1+`cbWPprz=y=vvpC1&OyJV%waM@xqJi9NmoJP4xRuR-bzK12sa8TaTyEP zbw)Niw4|_~!anNniutcRJUnq(sCYNm55k0T0FJr3zBPQmJRPo_bv(_NC5Q_bC;U-D zpU$B-gIKPDREEfRM2C!09BoKGMpiK4jmfhR4p*+8Y+97yq)2pUX@JW@NYN^(E%ig5>Nl7x~>;G(nAqwXq zg=Jrz#b8W2QQ`THCJOmAmvdq`+0*LoK+&BG1HZwGswUEyNe30fZ|2q}8sieyC10%| z>SuyG>K$YKCuZs2N)UQ#K_OBUKiJ~)sxOa2B*g^BMh6V9J|xr>5Fh~3S%$VH*s~v# z_^Rc}_qXdC=Y70&F}Eds{}=*?9Y|QX?O-UuR(=25;2xtoyKOPfSA|(|uDJf%NUd3! zeTA}0BcN73TlcN#H5@r$1iUm*caOcAl>!I3e-sPBGDaklLT=4lyGBC?PNZIr?-tao zSsM;K8c-&Er3vE1Lc?HkwbR8`o1;iewP8BjngCucQBB+}PQI}EYtJb+vQ?w8F&OKd zR6ph}g!JyRZN#z9+?<&4ZsAUMFDP)MP-HuvP@zKZjUB0bN5?#Q;wZSclM0nNN|G8j zT62&1OeywnIUU2nZ1W4~Yl^q+LPjr1xip#QJ;NBE@_4ZSCtoQck7uhF<|0R04sCfIgVhd{}yhRP?nG9pMzF`gNvRY*!~ z4pRK^LCFqOKWuv3TzuIPD{^78W6t+9TcKc1-%^*YReIT0^fTlC0rpNw9V4fqUt$Na zTg2fF)VR3NFAslzZsFpbSkW!0IB@SFbGQ%eqa?;&u>FW4dy5q>knDu`6Me(vzT84ARcjAay?dg&KMF2SA!@XubGYBp-xf&^ z=9E`#6j3eZQ7y&$JmK@vyj=McL!?Kn-|ZEgyOufN^3^0~AejpRSJ_ur@K~;gIyRvg znF9T@BSi~TZu-|T4adt)EOv1-LP;azFT!|N)BUnJ3fgIo?sOtIiXWsEdq0zL?a+$P zi2iJ|O{$*84`e$nd97}A`3%ENH2&5rkDSz>rRsii8M zG}ez~g#Y+o7}G+15`Yn*{LXlFMf?W)-vHyR-+y?(tTCP`)nynDnfFfw#`=tJlokO`&gf0k}0#BBCUDj8c`Al(8yk zTlZPHs32oTl8&30N|vrlDwi);sFcT!89%+a{n$PV=&pXra~~yl_{gyJtkbCm?O9tZ zc1f2i?X$4fkjiK90_u5-rHF*|WPn(Th!li)w7=ADW;A*u7Fj+=dq3*kUDEBzDJO37 zMr@wQ5*0YI0mgFS&(+R*8JSeZB)4I56R2JdovQM%$~ zOMnp$@9TE-mrU`KjTrmp4QYi-A7`sIm*dHru%)>9a=e{dd$nX$pvI+>!|kD*=i#KRt&dIc{ht__=v(|B+BRT&_JSj<+nbwCQ5 zXR%LBe`8JqLGAd2j^X(r{I2VX03Wl+wI#QIV+6oSB`)N3*Uy1_g#Vf08IiNP)TETj zJ31In8vq$e3XddBORtMx_DJsH`%En?+T6-)dT51g!PnOgM`F1q!7tvA`2$J& z1FAVbm^ZifF6-qh7wQCQ-kO~NSCfu#%NRvwbn9a=>(yc;!usD<@QiYI}q4v3v z>~-^&!MR4+Xngi$O~d7*=_xaCaLV_gaO4UvOV%Wb#tb5>F7@(?m2%y97y zUj69|>A%99vdJ-v&iMG19*Yv{lDj}$(@>bIHl6@H*zla+CZSS=5BHqgQgT{{6qSj>B3< zS5S|44kG$Z`VC4dmPB#Rq%eW@zM8bMFJKY5V1Hb{gay`(3)&3eEOMmoHe@bul%&W* z2=C%02wiM$t!r@EYzsjvu^j*lqeC@&O7Eg2LcGrYPNEkF!DKa)XpFw#gRQ07 z`v>REp7f|bq?Ib{?%-};oxzUMgw)kyP&Oxf(uFRsy#r3`8G)7iBU`1!-w12GKwo-> zh}A3czx7$I`M}mppBQbk{TN!u8nhqkpgbJ3LgcD@yo@*TBU2ir;XeLi-)`sWjv7Q=f8A z;MY5%pZp#_pfj|A>ExlI8E7nMIE<;Ysi6++axa{8=ut_)U4cMT#odkY&Vh7e69OOv zycp;kkV`c30m`_UEUpvP#dLH)O=?tP!KLFEU)j+DP*5IK6d{WlRhP$#73`nskPT0< zaevX~58l3?ESid3vR}47dv*Z)G@}13;X?-YO$B577c3t04P@n=Q^Yuh&@m?Bm>y4H zh#RKNLq6}j9Wf-c+{j8;rA;gA54!ZP1dFuK{=gXOGndC0#eUJ-tnIaLpM~snXypTa zrIAQpSM$_ORhr6{b4TIwAl%M#ZoF<5s6g2JRbePv+ir(jg}ntRK-*yu>cF$$E?0y3 zRl^nxa`CwmlCr&r71^Y7UhY1Ta_1XJb=@~;K(rVR4msDR4)@&apYH~W*QlkXyk~g*Z}1} zpcGV`eS6$co7ck6SG`RRTsH!EXy*wS{z5Z;tHwd!3aT4NZr=Up7{$RB)*m%#ek1aX zDk$4WK3Ea`_DZR=8R(27F$t%S!rJu%>PXofQs&!{k87v+;1*weW8-l;B+x%5iS~SK zlshpYBa68~wM~t)iT^x6a29+}X}?knZ(F7ZNp($4SQ? zN6WqKp-)FjwQF(h)zrovhCK>Mx7WRTKd=7&yWM$a@ouBR!1u9f7@+B-(a%Le7D%dyO481wJUsw*S`b^R}| zY_>wVN{mJsj&K{(*9r3ENoQL(XocUNozI#p)S-G{;duv(ea{bG1=XqF9MNPunnU4u zUP0znka!(W8@=8a%R%U2v@Hz+<(FaaQ<<;xBaS&0AhL-Da-LF`4p#sT5<0Y)~>PmPd~f}Uf%?BSJ}N@ z_w1X8Vm^7bGmoX%P%%lp#uc^4BO9CSdscO06P5QH6jkkoyXAo2LK*+)o>4hBPFqqO z#v`UL^;OtYAV<{cC*kqn?;W5-3@YX`XvRn@j>Ip7I|m;Cx6fX?W6751f|$k}+ef5% z%=paE+r@9)wugZ(aEiW*4)`7tEtX8Cp99Han|%Ye8$ZMW;;#YE z8*L4BvX6^-l7;~tSm+46);{+Y<3zjnhNt^~& zQgRyE)@KF)70*6yU1hM>MF-;qfrZ|gLfNXnjcM$-yN5PFnnHsOpIw)&S;3>*z-{@CSODh{pLaF(z;9ijL*Qvl z2VJ5T=K+L-97*>6^WN>Hv&x8bRiJ=fD(7>U;SP@j+|N_jE8ugTEoyw82v~UVp8h2m zB6h-Xao~<3Wi}~iil(|efx6jfy+*b5v`WYvmUO6_E4wjOFq!i$KOst@3d=dR2iE#H z;AE}Fq|Fpq@5EJ3wr+~QrxT5j{qFK^ulG1lwpwjSc-DRU$*)5ozk|6t7`$_|7ob5_+v_K)! zezg@lz|nv$tZa_U8UdALi!d-0q?!h_vE`PrqbVAjS6b8~2ynp~3>C`)k_*sB+m}It zNZ791TguZt^Sr9=zZ8ApjKam66x)8pwhGfaNrKlM+JxTlO-&knANK+ZYkvB4@u-Ay zc)yy>)^L8z@_Kfj&sGA6+_S>8<>Htc8#hbGl=9`Br;rB2`=ch3m|y?fJ!q3aeF# zqPrb0mR#rbaY?IB*W0vK1esJi=fG~{LpwTv=A;Yhm*?WL|FfTda@KAzI$`yEVEUo< zfRk|P-SY6c30mDTz!k&S^NYsUUT;jd@qq^%{wQ||b-Ngfkeu6}P4#VXW`j#?r8ekt zD_d61jd;MlmD=k<9O$Yis_wqeaI*kYxI;N8D8}9{f3B|axGokeP_Xg6;ov_~3E1IY zT^HV--`s)}$Mh3exP$evUxfpji3r3&(;8^RRsw-02m362CI&YK8e#M3Z#Jwkx1{Cbe6|n+F@X5DW-J>YOz4T`LgXvDo7RB)9hep1>b7y*HY0RfW>08G>s^ zk&p1ji4n8QkgZJ0{A451$$JtlOhaHf3TCtE!r{l{Eo~15P+s#ks?__WnWX_i|(Rk}qUDCdFwsYBD zA1C$WX`k}v98PC*+0ouFx9_jF>Q6_si@xnCvN|baQ@Yd@Z02eKz+ng2021yh*hlS| z80m7AmP}@?r_uVzGrmwuvL#<1LRiCQjbW~qI2%P=*O9L6D^#F@yMngTsO1Dw@E^Do zyDoz8c|j#5c6s?ciDcWecrQAeTTmWVv`RwrzJ9HH46frclSI=t=VaXC6NsCMD+m&3gni*@EPE7!Uj5DW8@2&kl((zk?4V^glm$CCn8Jg~k zJsgwkKFd=K-wBq}?igpPl*|xrCx+{L<@)PkNC&GWF9=rhhvwEp|A`0bi^dQ2WU$KW zyg60L!|}YF?VoesgZ7Xww1WCoE*$y#-zp_Tuk>reD%q1q{iU)Oq5bh2NaL8116jpN zS#~Q*g{oNenv-%_gSYM50fUy6T?{QVYV%mwBI2*HW9t-a*n(<(reL5eq!@ zp}TQyr0ORsivtJY@H{i5VI;v)g<8Q3CWh(pjZzR{&7^xRZwbZAb*NzM=?UZW<>r~P zsgv#c;rKR2(F;GuLX+eab>gT~^!<{|tD+PwW5U(8Q{ZJ4XhRw9Kem&TcZglM{oFm^ z>fqU2bv?znx)+tr0P6wfUKo7DY$>F)<9SNMDlbAax>}h|E@eAh4&-}vWmV?+C*2+b zbZE-QRG9}-EFQI1fDoneK?lb&B_&9UZ=XAL$}^68>g&J8{6uV{fvrt_i)f8Y-~W~2%`S9Wc~J959hnJNSii9<+={?#-=u) zn}l)ztbM{_@v)^>Q0ns(`SW=M0|;LZD(g zdlogMb*zA8pN{e`3Ddkqz-hX;X4lcyup^u5OuztA5=F3VeE@hotb$eoiC-TH=i*}} z24_>h4B^HxhDMU`eOo7^FIsA?c;A)Jc(B-)kei^PX4Zfe^bi3W)wQ+bOg8h5K`I<8EbDzwHE{;d`2^p972 z{dBGV-PPp?8T6|kntnTIx-up&Dj!cLNJV^$Z(C6jrc;09 zH6>Sj>LI!21+Ucz;${l&@y3e|BGkD(NsqKyQagbpcR}=7?)o14o$ia?Wz)o&_nQw$ z0V4(o8|*6`zteT%TFh#*W50%rO-XllLofE9eTeM4Q_J#vwluXib2@&DPaPyE9gfo@ z#I;xM>_t=?-7mQCJG^&H;~P)#`k4?BwzG10fg38(qkrF- z+iQyqyX) zONx-HA|PT6pt!D&(a3hso>_K34|Pj*yz(o&z~B=zLZ@o|lE^3N5;Pr@N$az$M~z)B zw5-3d-yoX0+BfB+-(F`>>m!OCK|vqqZ#az~T^?b(UZvjBOnhUS^W1;RFa*!RwtULf z@pC@aeSWqTkU^!j^lZEcv!4!GK#dR_;t=Fb81;!(QJtXC2BJLsWC8U z&hjs0)*H}t*?IFB-8MAF^l7kftctWjixDK@{PfCt(FWX+@bJ|jp6lt&8E2$G4#9*T zoVoU0%9Lif&qEJyhR2&bt;3q)@QGF$4%BJ2d}OV~Z@KHJSt!LHACfGw$OR>d}{irtyAVonN{=nR1Nr?BWfeYYFW|({g&6I&UkOy||tic_el^ z=_?Ri_(hwXFs1<9*LxidzC>175O;Ss#yhY_l`15V*L57$E%5HJ^d6;PO8RGr=+8IJ zWP}xKwS-eRE3MEm9YHCOYQ=9rx?`0$CkKL(g5@9m@}Gr|q_9aEL<*_cqSh!EB9sbF zxwS1DGG&tAr-OtPQ?rjBJ6V210`WzHkre{lS16eu8Ekn80l#fY%wg#RXBz)U5<|-L zB{erg78{I0t^95dj>yFiTjV{%fjjQxv~UBs ziw*SYkCra9*mfV@$b$8>9?9O_>c2mbm*DB>Jxs z`CB$!ucMGLq#8|LXC*kog-PDcKvD=|naF#q+$* zOx^U>6#NrB^QO@;b(@_T9)RlvUP66>fp3fZryQQ&EC87k>4B0;A`{9}dv+RI#{I&k zYz!L8LNA+_Il3&so&27E+dg1O5D4T&=$~n}nurQ352u>!mR7?HAF|#`Sc3Gz&Bc0a z4tZ_adyhVTf3t{2)cKNal6kg2-=%W{UH| z9V*uKj^0hSr5IbAdVb^!&~i4oq<|C{3y+K}!tdS@e~^yDR;*QGbDujXu?A*S=d|fQ zL)L$~qNbb55plFWWR86%I7MN6z}Jwq!iqmegz6&fvj$IZQPG^hgUCAwNSnfUZ)hlH0Mz@CIu= z>IbdO+#n^MnvL(=r96>a^7#fneHhjf7iHFXLcu186BC;=Yk8l82^j3P-nW_uiadY5 zN}Hv3xgTI?B_(w*yw@+n9W!^Th5r) z)^B;-_l1B?YU@jDb50NJR-s(T3gaL#OlSeDf@$=t7VY5$jSLpnbr~*7Lr8_xj_bXV z-c2???Y39(pqnSY(#MB*igh0Gi7nA4#Y%b|d|D1rLlM>OuaW_U#LRi78p7y)Q5ZEP zDYm9QYj6!appb%w_X1#iq^l<+w*&@N%06>=YcY~<utZw)cy;l%G@=nhj@1_{7( zlQ4)-4}wEIvZR?LfmB7_LSB!&<6iqRDn74a=&^*5#VvpS7~R0{%PSk-dRA-E4(*ub z%uc)SMw2Zu2sQl+4mIaXY!sV~hk;wNW+^}>$)7P$AQxv!H@BtFiyP74qTT_!ZP^fu zMW|AlVLFJs3AG5&X!!TgQQ6) z#Sg$3k+OaZ3B=y=mDq+n9jEPM~tgh6ajx+(h22 zA<}*So5(wYx}Cj|iv;GCmc7;` zq$JizmdPIR}DvtIRgE+aUooc8L|ybKT_Cr>CrfD0{?f>zwPZMqF>h>LbyI4Cx< zFCI5Je`tft|IU=LChFJ3%!h&|Bj+XACK}Dfc>#*C5pBNa8E4AQRE@QfYG!VQ)n_!v zfrc3J(dB;CW^KXVi=OUFAcL`oodf%+&TUwY)c|!k6~~JQ9D4R_;KYaMnz9*P=3x-SV8&>b0%!go8p6ER6b14_szQ`f)gNU| zz=%;;REONi0Opq_;(_VkJX=$g2ML&DfjK$n4T{?Fm##3uS73=6M1>fdUtcgm`nVn; z!icxKg133{GTL*mi3VZgM)!q^GADk~M9KOn{*_v`M)|UlPa^ChbFli@ML8ougD18Wm-F6m9)+sZ4Ia9Fvtr%@a11a9Sdr3)68RUH5y+;7E(1 z^j^v7w9@r@AyU1d;j*V^-$+22(g;!9GKAzwj4I(r`NHgmfxcKswAK3W2~Rv9VTmQ1 zN*s-J6>W{5JJHI2;IGcj7;)htSZRpchB%^VsWuyfZ!)xrVUa`=zVWlahZf}GH^@s= z#%XABNOZ1va<5=RyM^R2FFwlPAx2fQqiNeA)3yWddkyrTb3S2zxL^t~#07&Uh2*r* zpqto=t9Lk-!yPHcRxqYNLaPEO*1NvC64?TmPcucADej5Y3?lytJlZt*a}Hm#vviqa z|Np4^%Al&h?`sqV=}?doq*F>d1*E&Xq`Nx>0qO1r>A2DjDo6`T=cV(~b!nc%_c#9+ z&y24eaGdiwXYaMwT6=G}ThiXB?f!R=jzndwxf|^k*Wp4TD&gH;u46|4p5928a|lq? z&a{ycTPp$IpbcssFtXHHybvkR)pJ!}k=|sYebu>cs&hA77_Fou zBiM(Fqgf*Vy~;dluo4kfe4P9JZ@s&NY0p3whn9rNr2x{uY%Tyl8>A+2G};{tTa`}k zexGHC^_HVZCQlw9zB5|;_{dXGsE(TN%r_~iLOr|m^3MmTa7EP^=7`bH8nw2q*_GSf z-Z#Z;_qD~|#zwh5R2YW**q?7rm%dZ+blZ(qvxR;rpOvfBh}4klw#Orl&FqLY|7+iG zCbiKipFc9sN(Kr>7rj)ZX@C?>!E?GX)@)EKeXK*1|AP)i6X}j>+RDUCGmNrN4nKZ+ zd^68>ML%`eMB_7{)&33pt*o8)MhQLT3vfM^aKrxCdJeuFboO|D8>&VTk2~o{(DLMh zljBQYAy)Lpk11-5YGrHrlJyUP%grBYI*;k^s?&zYSc*@(@3>Vnh-V&B0nL|HUA8zd zIG9)Ps|(dEaW<;kzT{eIX_ikV1T}SS9bJ?+;Uk6FvYi8^YWWp>Qu+^(FLjn4Zu=cp zTa)akRlI4H^h_}x`vMLfbkyg#PDw4l>8VtLl4MrhbjF6wd(U@<>bZrDRImN3TQ07r zFb|_ryUf^<#c!lZ4}6?i9+N1X9w3si)-NQMjlyC$yxcTE7PwIZ0~Ybg~r z=V(bFBi@a|V<*KSMMbB^R~eGN-MvbbO}aoJ`-uo}C*b)#*++f>TOcb_llXao_r#F0 z{N_c3JEVx~2TGqYeK6h3)DezV(a5^sg&%6d;5vGzgG`E$-GRH0mFLRsP5n7WH~ zQnOdjR)nnu-y#eS#Z=p-(5ulpU=Ok-@xAXRyN($QVoK@qXe+f8 z`qT59)^RCV@d$Q^#;2?YAaq~V%qJ;JvSN+ za(Dro!7@>+RfJW@qVY64ykrxUiOF*a?=2Xf2_aT&g?+{Zzq2zX_mwyyf&DQeY|n=)5{7Sff0?B>ly2=7fO zzxD$RT_{~3M_=}7Mdzz$`Cb$hg9*FcyGHOp+Ltq(&;6 zaErvBt0mpTpM3jBAp&A`r3!A<@h#ynHGA2hCxYMF~pDsL^s$5z1)tWo2}L zjMnQaN3YYo57jH8rr6(;m>Mpwr3)K*y)g0Lm8(bn$03G2M+YLXx)byD_h)-P9e0-# zo2)>_=fsnjSBm+$@4Rx{tZaFvh4xgINah>+@G*UoxjlwuK=$_}k@d=}_se%6-v7n) z>(>_^g@=1eew8AOnzt(PoYtXG2_u2G%UJY6rE>dKL)2(Wwl2e63D^_F$=Z7zMg=~M z1=bPz!#dJ_73%N{i0~Ai?eNEe9-ZrkKGO@0@}yKUU~p>sRAihDN`P&TwTep500uxQ zW{>2Kl^?%&cNhr?K*}p?%r^w2-mzuYrv2Gi1nG|1EcoRcZ0FsL=hrk5`e&0(~>l2m_g z)8&gEBB3}2q>ncVj!y~XCCTcNWQz#Cseo{XuywYN1s9OBAMqcN+5HgoTeNB@q zio4Ilv8Q9}qJYy4#-8+25HHUci>@m?!1T1`d>+AU%NFmtNBAJucHw%k2>E$=aX33L zr9Mw^BRvdFU$~%g5g>esWXga6U;_*&k0SPe6Qis3SWV(!|}o z`J*@_$<#i7Nq$_1K?PuPjsL0<3Ho}Zy+&s>@6(lmPKMy;0;JZ&gkPTKp~a8~%&Vv& zq1mURA=oH$;p>+#Icedx);g@9FEG=pXd4MTi}J(4EKQZT&Y&+MYly89uHegDZdzd; zXe&yE34v-=;XwNM;QA((-c|JqHv8w3ZxP?sXwoHcht@&9nr4IeIdARW@ zRH0X@NVc40K=*!!)PdA-aCYTGeOdevSoa+a3~6+G2_p4%y=0L}p-NdSe-2Y(6X<`- zjwytcv{uGV<_ZK38j%;nx2G_rc?MS3UbYqV!{`-|o+J1g9T%hC+=@_x`#7 zX70~Jvt#ybykhy7gqvEi=v>2y&layleGK~pLuw*GORhv*82~5!%pmJB9Wv}< z-+r(sH|x3b*EDNX$1I7=YNr63rv_M4K@g#{YFc{^i?Tx_NI&6{Fm79$1mDaUomJYhMh$ZSn4YkvQ=NieqCP*IrUWl zCBfYH+nI0qGQo8hJ+~cbAK^n}J@$+y1DV`x>(#Me4S4%RrMS1j<1M#eKqw85aS-WJC%k*gB%?8$W2lqEW z2a-l-h7-7PlpNn~ORLGeyKale%&?VI**|vAv3F-g0nZsbufDWEgoh#=gbJ2661Tk% zLY`=b=h!=AzDn$5%zWchJJ3Hu>k{xJ{pJ)bVe9oO-JNeKu~La3z%b3GW^SDW@U0Qyw&fEv~@qrBDNxV-VoW}ZD81n^KOfpfE?ipcbU1G zrUg~fzmSjI9V;(Hj_Lc8i6Y#q1evY0G_5R~vgckV`Q@`cXS<#9*>PGitIRq^IbHG( zS6>QHcwnR%H(Mt#br!b?o1xHS=H|cHv)C`rwv`^G^7G)D_b^j7Fs|_EkfWg%qKWF6 zaV($|eSyY?^9Dyw>uY*HD;kcm$g}h_0#~A_(9qcC=Ywm^wdVe|W+c67PfE@R-~ z`#%0QlGH%((7N99V3VMIIqvsm)TdTsSTvs#H(BRlVm+c=aL@4cb?`wNROOM^uV?sA zwvfr^M1YFWEX!LG{=!8lZAjq&Gz~slpj;79EWo5{s2UQF2;qFKmLDL91>+s_tDP;k)@otS<|Ov0_3l=fvV%r9 zoLml8{xy0Dj!1e3Tk@udE&-Q9IwF>eoQtHW;N0H~j4cR~^9Fx#KXrfphBU3iSTURF z7U(y7wf9HhN3~yzt-`3$e6{V#306XCKwLnIEl;};#jq%7?bw+veCg-y`b~1$)U+0) zFO+vS{j*!k$DUf3qk7EkmO+X>6omx?Lw|U8*+O)}7QIpZEuB98UKwk$FF1^bkit(@ zv7hC0&O|u(Yh9q-RR;_}rs-xY{AnAfTckG5vA{~W?noftznne{N8Ni|2HR)vfWI!v4Ptuna8*N)F@LotgZY+mOVh#`|jE4okhA=M@CLR}KA1v?VJ4 z_AkEk`jMff+L^A5$yY+ZBer#WO=P$`;h=9%rW;rdd~=t1+o1Y%C4UpC+Vh%qo6}X% zN)n#rE-856?$bY$JGyx$*Z9q%)_j~Le6_L1u-ApO-|a} zWM3_w|A(BNCh|rhHS#xOY#)M^UGgNGpHxSm0(|Y+^#KP=i}gik^Wlw7tEM5o3d4vCKo@ia?*a{Y|<`cPk57 zpMhD?^rT|F_w(AfFD#0IL5Lmy;X@bw_^r2oX3ZHbD22g1OL-_T@;qyTNdS)U9bWm{ z7ort_vj(NWZVWAdIRlW@ORLTl=G6$99uK^X&R)QZfJn?vJluomdtY?lTCYY{B>At0 zZz4**uYofP6rq{P93a5N{Soev0TRsh_vXNAoW(nmDgO&r@wRDPsMiPJQZb5A1PYqE z!-=XLYJO|`aoL33=P8npOGC8(V5=2UhDWq8|Em^Bh4n)Iy^s4&sY-I5;^@IzJzgG=Su1G{?zlXI~`0TkV{ylY}sxX z(PQ6a;-l_sbY8dX-achnk4G*(IsA1cB<~y@6H`=K|7CZVfrH55LGJKuUDXm>29YnO zleB^U%f{iN^yE)Hq=oA#D{dzP>@VX>y@!S$$?z3dmt}pI)?^ z9+%mfx@Om5kS||LSAFQ|`{K0L^KXI2iGw*cv&g3LxO6Ql?s z60vKqARLu1g^fsbWT_$z+j6?dz)tO(&NCm@WN@qVBHSw}Y&IOAlszixqc^Byno8Pn z(qQ&OjL*oLQ{76Y#n%J>n6xye7owSz8Sh?*>Qcw&{UvZz)68Sn!o(5=)oq-V>4X}I zt!o=I6_M_-zw64eTJm~6yVm#r<=V8~pTqB-93nfMu+{rHpf zlw1La&yCZl)v)nIQVy?lH|1})!)|fK&d~c?Vpg|3iA}H??QCyt*y|Lp@%H`eva>Ej zPSRLp0aC8pEB;ex0Gdy7z@##93qLGovIhSMR!2|1`o~O^K&MImn>1Ful$_9`Rblqn)e2YG~f#D1dW*N zI~B*?*broMl($P+XY6v+EU=W$VT_dp-nBF1+<<9eca9PXDGG7l8){J;?cJ|Gg}*eR z8?c1t0oMMRVY9x1M!-EQ&{|(E+9VnJz?m~dfTISefh6#SPVpt>l#c8JO~EOZ{6}8` z`+wk_70_G2VkP6yYkzt%uSzTyH@GpO_Ub>eNmky9{Q57C?Q?BF5`M=sM<$7+&SwNV zLwllYCb@vw+pGB$E*Me#VyJRPNA@m4f^Tv2NYZ2~2RdrWE_yjfWvp5uEnN{-s^Hbr zEvPRtYINwYO26jC>a{6v0effn;!~KcqN;b^&J#@CvG-}d(-l$8Xa4?oE`%V2<5;+D zg~7=_!4qP=P69Ol6^R*5mIOJNveS1X6|>!i%=a%{atgOUU{j9lDoCd%dkAHV!(Hq* z5Bip9S-N(5QXT7SUdw+dQ(}irlV$1=o1y@*F2SegnOTdB&mf#bAVo;v^FPIh7~bNS zF1aLq(10$7{kUf$mTT^}$3l25KHGl##)?kDT@T=|aTa|K!P{d0Cnoz*16twxTITcQ%f5$h^$BOLJiNkSZO6gJC zYh-7Lyx{I=##sT9mA+0Or|^*$MJu{!v67R~xM&xgh%&L1=R3T)k8_jNdJq*crtBSX zF88=fQEc>1q?!8FRUNcgy4{7am1Tr|Y!&NGGxwIY3lHbU?`Hjxz%^@| ziz@wSwJFb0(Wd#3p&g^27G$-qy{XOm(DI($3>^dSEuT=mGvQ4ZgII%-l@S=TDSRx} z>v(10qvW&PC>D_;5lFqMzvlya<8VN%4KrcP_{M55@gmR zb(cKX;7l0MeuavLUtO@|<#9B|zqIDa*Rr#F+OKy-=pf|x5+^@8`VdD)H5Jpz_i9tn zHtPn{0-B8vCCnR6Lg6KAw0kGQ$Y-CPG3awH`dlT!5g3gL`<< z`6EHfX|AHozCg5w4OCu9TrLEt9{^v|!h}4n#bj&f+^^Umz&7RXI3NfutbAB=KWN&}NbouL5p>Es@gDmg6z~YbN z`_h3od^I)}*DJz9lY9tS4J8g^*gvr2`?pIT-a0LNg614F#-%P;J#3Qh#jmn%kUcNz z!hk1e}|i z$%R~6j&l`Gyw=LZVh9;~Rxh9*wI+WG)c=fce&hbwjE)%7m+&_^_=f9wdzS)G&a4?C z=tt*Y9&tt~4}cWWKVRPu@pDebkLKNL{+2(58?IMX(X_OZE=7}?$mPtT9~S!!_8sRN zI+;l9Ka*{@`)2P4X=1M@{BO+7i|5mFmAj)~g9)P!5cWLHlBs)@F9^|ZW@F_~p({Zy z*Gekp8xfhgYsv5o(laL-V&N6kdcHSH{^wSOusM(Ik6zmJAt6w#fZc@97_K;@MEc3I zmV@V^(3|JLIsbkuKmOIt)k@6U7eVt@7FTT^kH`;c=}HK^g=;?y3p+eQS&IaLTkE*n zY5U&>+Jo1ST#Bo#3KXlQ3hHir@J2Vj#)<=2sJa_9!`RW6_ykz2!Wb}q+B5d8xpR8U zi2<)7rvppq_h;5s$bjL}LaTl1z49D8DNVxew@A4RW?sWbBv%XsAhV%He-7Fo0tPp% zOFodRQy>{Y3sI9AJTvar z5;h>p0!OdR1*Zc+gc=QPrHSDo&W8EdU9K!(+n-RooOY0ZO(dr7bl?9FQIFa34#M?j-N`?z+4T-TB}0tI(-%le`Zjvx;NrU}7d3jOHoA=E|`P(i_GvXJ+ujR;%xCoyJjSlRlC8McHX@~k7Xc5CS|flL&N2sQ<2qp z@bs3;1Mf<_Xy%OqYQ&&clNT1m?-FfMauNCo&aWQL-z41SdqT%h6f`ZAHo)SNk$UD( zAu870alC!O z`vQ;8=YT+JknvRYb$%3RR-64kE2F|_OK{1(dL#Dn(~s#PgLD35ab8yvzqOSR;Jh0)MuiaseVvjp%A?#cKHogAmXqW z>^olPHL%%^GfM0C=F0V6NU#U*NbZ~r(I)24T{XPQ0=xms16H%;)u&!x|J!>Q(zNUL->WWTI$W?f7SqCQLptJUU6n9+C*YJg%F~u+ zDoDrLQmvK%>pB7_dzc(Q#t$1}J6*2?G+d^ug7 zxQEqkAlemo;a9CSwN$VYx-#W*M*G;ermcUWOG4!($EOr*rC~e2b^_=_!6wXmOs>V6 zV{K$#(aMV&E_|wN6Xqfl5fQU;!dSf#J)Kk1*jNnZ+>cGqtDMLz6Fht0`3~(+AP~*q zIt=;%N9VPMhN+66b4tGoMr+uM6_zL<>R=PWEd_JdAufksv6 zIqJ=q&AoACas$XS(Em1m7@8W(SIq${lT?42k4cKKJn~{50mCFCYu+ z2V#?ao~m=ysA1va%6bvpzu=~H{$E2Ef!&E`Yiw(_X7OmxiYrokqtMWFvB`liVQn*8 z`}vMTpWj{I_4QT=diK%V&5_i6@b8}F5jQ`yDAG4w`*U0bzdrm>qW*p>chYu#)>(3B zKEdZ8AS(FxZ{PcYn{%P1PBGeu2vj=W?YpB#tCJ0*a5{M-a5GBZ;7mKO5HoK3Ux}GA zWe-&H-_-1crDp6+GQRk=17YIN4#?@s5+A2AmXNi#ko}N&PzE$0nW2kN#4GDUFON;bKSoU9 zipY!OFaVLO1Pwv=eL2Rv{jm=e`Ss7sF}nHSB}O->rLxvYKS<_LK$P$zemM4urJ*AU z+#S0GmW_&fz-7BQF7*bk@v8cA+u$HzLEQ;)!+RhdZj$j1X`ajo(}ujerG1Ji^jPhG zOd!7E8Vcm@VTo^ioSP4FxG#_4MPbtu=lUeV-g%?b4g6VA?W;JXzW49B>_+p-TT^z4 z_%jq9*$&zdej!bJ3y@ZKuBlhIoT}gJ zw}d!XV6=4)Kr0d3+5KpOdlw}`CYyFTR`Shh425uG`?@{4n1NvILW2S{$I#4!<>+aH zy!O3I)L+c>RtUCBn|D9N%CPwK68TT_Mz(T6_1o zsT#1z6KXkanV|2D9UwBEat4C)9te8psh?|pX8_%F5)fI|?R2C{YMMOBK#$MWiXdGB zlDEOBY2>0L_+{7sr1(&JH**B*3PvSDrm)!RG7Nly<}!PVM=wltw?G#>a^ z4ZsWtXgeXQ(1fT>c_pM5Fo8hOE5d-u;czMSaZc&v7Ffvt62#F@0x~IpWCT=S2^|zx zGij>{sDOSq`fEcVINT&X;O2aabpr2#DbeHUar)CCXc`KjC#(Ei_zfH2U0$NvGkG)H z4XG|M6zjO#d@AyVQ9U z?-r+HeV7F(5=yrTrmFOx2g*1IRh#`v7p)!}+xRu#vc1oF)_yIG>QT8GdlSa?&@$Ao z&)uYrSO*9Zzu!LG-!B_rmusE*Kpz+l)P=4uSlqv@H(A2(nr@su{PfjU5-5oXQn{y3 zu5@3&-;RMRm!7}#7k(@-vj0mQG^(ZGZtyS+DeuaKRVYmqD+wsja>}1^Jo_8ktE8P3 z%q);I_{)|f${fS_tV@pmL-c(d-q$wAEXr%3Ly=$V>6{&S8h7Ydn>1xQD(pDdK}&e_Dx}< z0clIC$6V`)nkDS!9}T0B-qk4Qw;!*|BiPP$LbRvvE>gu2+V9t2fvcZ@9T^XlvuS;{ zh-p%|f)f}MD((*v9OLd{GW{h#I-al3QQ;pDol_<)-+O-C6oAOOwut=5vWhZEa9BUC zd0uVX!9qAX%^mW)=kqB73ssZ9yNvoT9Q>#VnP)E?7@lY&Tkqa+NJw_OUBAxhxUThI zv|d&k`|E8^g8}PT*Wru074Ge9OpKFZb4T#&Wf{}(FYKHTX8z`N zpK7VTsbu`ST^j&n&f_pU=xxo%SPNiA0`}Y?^L|}1y{|MJ#yBg*$N(5iGP85gkh9bF z3TcAtTYeva_>snLIgb8-F_XDXxJ(hgI+xn^%) z7sy{x6lI1o|6*X_Zz* zIc~Nx4LH5j@b^m^bJjZUQDIVU{Y$t3mSIPVILVW(_m!eIKD z&Pr{z1~Z}tR0Li1J5^)iTE{E%3p1Y^shEt*ZDlbT33=aFfl+%;@tK9Mn{D(*drT6; zCpj+yS0RNO^stW6cp#ZQ`vD2yW~uSp6ZG9doSo50SL=-tY}iYFTJr zBwer{RbJ8zpwVhuBrPwu0X(H82SYAA+iKmJceLY-=JftP*vlnWh-RrmQ#c|LZD3^Z zOd~NjADp%ch#f$jbQw64M{nPMBS4BZ1Z_!9Z*ny`?}Mwh+sNC5(Y<)8)Nb>RQK&i7 z(0*qm6jbJPLLvV~?+3n0`oE=c>qqGd&>m3$ru2e&a0ikHwT|!g0h@&cJ=sK&S9|2T zcY72+0A}|UaDH2ZuCyIs<^~Liwi>Wb_w8G|b}@4xrFI}Cvk{~g;y17n=(;3^?zcWs z%4n$4o__KIz`@HQ} zUfAS9f)!%)U*oSbJ9bnzQst|UL^2u) zT1zAZ5RK0|TG%G`Z1D^^Zs6O({kALgviUwItWRbK8|%leuz_&(l8H$N8F4K?Yzmp3BrJBk`a9YjwlSkNAzG3^nFL} zG{0?wZF~Py0}hXsLt174ZT%miEs$hztEfTmb$Jy}|45h6CP)IuKwALQSw&+j$SiKp zqS2c-{v>)+d5*(bKE=S~e7o3ebMKhFh+jKSO<*a51`B0PE0y>CQnZ?UYd19(d!*^iOvVkim+pY_V}Sv$NY zLvgIczHeG6X>aRN$QIdnZh!C`G(sKMeTA&*Q8L zTDyz`5#7OJTkTp?l%N-1gI1xs3qBn&ntuAieJ}|>adBle(-%Q>m?^>JO6K&>TO}_P z`~$wJ#i`GI$m;+DD<)6Yy$-U}q#oy0xH#rEij_6+rgtoBf*~s*LnUPF+UoTueqf12 z-RoN!yG4A@d023@CWpv+T_`QXtq;6vIC-hCbfFI`KXnV_j1{w^hUCw9y-97vYm!ZN=O=I5k zq3-v>{mgv4OD`7hrVE_g$u&U8Yu|p|nXpOl8h^Bd?WQz#BUH8zf%Tv^;CO@b@P9!%c00(B7B;9%3C>0t)- zDz6@P3?if|!ft8QXh2mp%}O)eq+Y0sjX*wIvYpPz!BS_@ ze9{fQHXPAL$S>pIwZPXRJIG6-u*Y_pL3(Lc#{72k@a#XrP~b(VSwGM79Y@u{ zYRUTtqiPTYEQ%0ItnT^%068<`qeaql=wh`>&jOXWMS zo5HL16DSGvYP3qSW3zBp_Sn-8oopt0uT|!Ez@Utx=}e%#Z_}QlP)0`*F$*!;kL+pr z^&7(}c8h;9n@l>|0rz;S66}7PKPMwCF!q1nBd|9LRZ{MMJ$iwO0?O}7C z%zx{m4_d9b`DUcPV#FAlpnhBLjF_t6vywL-b~dy%RWSlS_Jh?}+LJHcjw|w`&S07M zD%P{+!{Spc;^~b<$q8Csh>+Z`hWwzP*bcrtWP#x(NE}vGDHNRVvXRN|xUr!8(QFoq zdAjia%vrx~rKH!{$bqBUku(Q?A0)m6r`MgbS!|8p1tEVwfQlYFpv`o6KbcSQj{^OY zRr5+?tr*k|Lq^9gcwZz==E~{r?VgA;cINx8K|qi4SSwcHLo_5FYQp23%w=8^(oKGU zd87<}r#mj|Pf*whMcaetT&|n^@TW&vBmJukAh0%*u6b@1h#B-v-*$KI+mv5-h9WB> zKy%fqKfFx+QfG~I{f+4<>1%|G+EDecZxlrBr%Tm{o>IB(O|Ki%frhbf7kwoK ziIyDtA@+7^!T-+}MAE)^0r;kE6TnUC!^ybR896)cVFDEtyE5rD zNvhPB`RidTsQo;@sBEzzJlf@9D1mllEfUsta)XRjI6<@%ux68WGi8XLb-`729UW=) z3)`qKHdjTpUb5w*;{SO8KHo|=)$N5avQnAw)ADlybc?+3w9*HWV58`=#z>_2@r?K-cN3O zX4LHso7#6e3$S#aKUa0Q#JjO~ zQWvyj-@ZIlL6KJC?{3l`qex>InPz`=6F zOt)Z)F=8v5?T57+xx1@rchdXOFexhB9RDL3uodyjObkrn%JI7A48_>{Im9B=oed1{ zu{j;bSM9Ix51(UqD;0dSkSS)}N3X=5I9K&JC&}s>VZE>r@e{ z23Rm}37Sd^#gs9c=p!n!-euHld@@i3OEWf}Gxkdhc(1NIs+=I7 z-h{=f=r`Y&{%OL~LCg=#4V(_qtK#3j7=~KZtiV#s<~ldOaGeMxFSwkVrrh2l!?^IB z2kN)3_M(CPe3mw=-91%}eJ7*j=n7FUU`HzyYZnI=r@&jKvvKsJTk)hn*u%N^Z~WQz zByuEm_@vE!&$CYifK$`7-ff~sY_=JkX*&p$dg^pQe0%k84R};>Pg)ZvI$6T)e2lH; z(L#E$*ZQBYT%ueHsM$Xxp2!c;>x13bx&f3Vn2B-I+3m)!W|@T)&{jJ3f%Z&S>fXfypT2M}iyf3fNVA(7i%xgUEpKE`9IH zh0W?JnEuuZzf3=L+4fUW{!~`PT$0pzOoO}v5t!M8tK(5vY4n^IkvNwlYREQrDobYI znk+VBJ8{wv_05qFW;%yl|9%8p11EpLoeC8OmRMQb>4i(v`|DpfSG)5YaxM3S=AHhr zQY2ieJ~9;q-uHfcGwL#<)plN&7m+4!#^_QP}algN&hFNqy&iiAoK$PCUF&cnLi`r|V z)ANQ^%Dw)g`gznW@>X!EJ>n!NSNnY#cmJzK=Bv1S?sf{K+!sM_NrF5rXkPruQX!N40egJC(?q*X)n!rmZ=?F=0%f{; zqNEhN*EKx%CoTV2?aj7)AE-%pIVlVO#ri7n8|K|i!zYErY3Ut-z_Ih8ZGrp#ZeCMV zJOuKk720I;T%phJBB3QWAz0+e;U)88R*9J-dpoi0D<_g^0G{<49zT0;(30qxC^VIi zqFisUO8ye!ov<%X?K(QTcG^THT7;|1ODszffAnj}fz4Nm<)Cv7DHN0JPlpGzCke&w zC_<+Dyyjq0;ylJpZC^_a9J6&K+KaHDw6XcPnQAP%P(x9bo6c>fof=GdTF6s> zjZQyWrz*Z0lUWPbOkWmW#F6O#T|4SyW)18N-jI=JfunYkRk0Ng2@rM~Y|Q6Q+~3An z$=`I1N6e+Y2-K_kZJ_ayhs1iUG4XQG*ZrX}@89$xON*Exm+yH1cq4y%xcz^b$=n-h zw0rSCi9L1zrWE)nX_oU-4$OY#)hv7o0A!`u6o{m!W*D zauX};&&~E^k$k1t%L1e8Vey5tWmvPIQ0vy#@$WV)6L!-3rIf#{C@A6WXS@7z*}hzY zim3YFwu(Y1ma7TX~BLVmkI>{1r+al z=A~_yh#UUl!oFtO-tE2qp1OzdZ5^F2S7B=b7Y2Mg*a|w2RK}mIa{KQFM>JHjiftN4*ndlR;gI$$+6szc%KUvwMy%0lQ>!50K-1(ePwd%Zf zqvuuE+2h-8DyPUesMqxK^;u^J-B>=*PMK~>`M(_B*5elP$#gq!K#+|su<6rF8S#%9 zDiQ2Ev}s~By44rp*nfJ^Zco8bR4T=fm#i`2IA7?%b_z2CjWG8wa=exql#L0*gGUK| z0;RwAy`qquMun~I0RpLwcx5;4J?P^#9)NwOK0GANd6Ju%@#|deP)k;Qg%89kiJwh} z*r=CrQfAwUwO<`3aa1LI$Rb^EJm48x8fy((&Q2yzF+lW&R~1ysuuk34t=ulORu zD@YxFkx*ynQu18d2RectRi88NwCf(ZI4Q^JltOtaYON;fX$_5;`ftVxLMx76=k$qd z>IJL*!4Uc<`G%|bR6DJ_5`j5ImBLB;4V`w^9@tK?)A?-$hXLcs9C}xhp+O6&q`1@i z79EL(M0p4>DlM;AK)3c|@sF149@YYKSym=#t1Wu+4r(wJE%S_6du+&tH&z~oe^`4I zOqO~b#M`8?`%6`d*`yr!9XUr& zHzsE2X9D0G<>v7OL||M=ZJZS)Y%m>RB;hj~^=mO5($FN5D0*H372QHvsh4-SA>Idb z?0ZEaGZ*%Sjh^ot+PF>LF_%6l0Z|Jl^&h6Hw{9%}Ot$F`lPG0+glqk=kihBRERe;o zYWY9XrZRpub9k0tE0+hxY~l#PP+CiN1Nv6wR#cX8R|2|WPid3ve0au`2fyn8HD4E ztP@OfI<5a#Dj#lpb5GeS-`O-!!|5Rtl2t<19>E4Cg2UGw>b!K>C|P_Tw-p`r+o|rv zFM+R(8is=!a&< ztZIc(aU`hG^rfYQvAx6MX}k9X1zM{G+C|5FO|mV7xV<)EUwEYFu>NWMl5}YO6hT7W zKW+AZwB}$7T!HNH2McLQZTORdzj9x?o2_MPQt?;m-t}lSzLeA^Z%hy+*${swpnw2; z{KaQnX|;TDP&+!O^!P#bDqhZBthZc`ajkl=!}6UKddp2W&7m_6;HOdkcU?nd!odIQ zu(5EWZ>^l+N$H{VOH`yIK5Hdn+?eJVW;R5N4g0f!D#s+eeA&TY1_l%L%T&0lb^NLg zE`H-vWr-6tWW-w?F?|}d-*WiruYzZI;BI>AK3KZa^bS8ROcBcTL^4-i*LkhD^2K&N zZ;=6or%u9WKfb!Xir1cZcf0~Ob4;KR9N=E6`ZWA~+|zRI`Psn~7dT`$(R|jr&HJ90 z58R1eT#`92bRa0mRd^lsOQ|ohv^H{iPK~`7vECKLTB8U_^ME zE4Bmm2D(2Z>u$vOu18rzYGYG<@7C<%iS8sG5h9-~-*xN9f~kZU8fHQ}U-sQr$c^_~ zw3;oCc_)qi-|8*Inr`#}Jc66WQz7f9x&K?crOm%2Sg#6HY|-S@nf3N!Y%~^yiUU96 z5`wve#MSbq=(UdU#fP@?xY7xak5c~>a2J9iJ^bzC^<9vrqI0EbkI|Vxdf$21NJ|<2 zfhVe@vEZk)n2W+|nW=}b0Kvx8X3Jx;kn`tu!2B&w_z=SPy(#0R%ILJj%@6B{IuumG z{6SKZxxWsd3Z^AHA+gd=ypCJ)m^h!y_Iggd)j85g{oXQQiZeQgqXmfkuY*Mi~Ll4Nu!-o{EcAk9inGwe%c-0?T)V z;IT{DFCpuHq6z(`v90R-w%MqO$ARQK zqLbt{AO`MZI2h@2*tpi9@xlCtvO2%cR7LrF0^n;L)eopE;Im2gmt~JIt4-e^8&(hHWE!w5uB3HFO92G8nCzP5k95h6WRiZkt0YKs` z8j{%Uci%UMzO`|)rvZTNLWoOD{#9Q=%kFiHorHQkMxo)2MHp?m#zfk>#y9r9c4xB9 zuu=^7lT@+Ne$(RBUx5n-fd;(h@{83Pb<(2->l-401~X5)$xFc)M3y8eCD@ z$4}QFu}*|2Q-uS3=PDMW`D}TAwJvaT+5S^nuwg-Q-Dph%vP^_KGy@BD}BAmD+4xqExkUdUdSF z+|l2`wu&L+0At_>I9|S_!Zmf?P)5$*8+RIZv(-K$igK!>UYn0Mzf*NeyDsZaT(2+>Im*JU#j- zmd+4E{puA^GX}j*PI(GA zT7)5uuL?=o6JBW%O0~ep&G-+P3R$v=NBdI_(!{axtGE)?47HiO%KROfdF?GFY&EH4 z^4!74_M9-%`zYZA%^HDxkqq+$?Sw0;$Pv7wQI;$-+4751RK{x+Dp|qu&+D}2ym&fS z6wz37D*?(TaPSJ9OCzNwnErU`a4@>O$;gHSsS*Glop<^cM$9OdDuqOs6twCpWxnfk%%Bm&#pDReaz!QTCp(m>UVI!e%vDvjY(E*4D1Q ziz}3nr*?R~II{(pyWq{sI|tzs^y##|tjdMn^^BQv(|MAiCoj;XT60;qwUuLklnATI zXU1hl6aG}kD5~Ri++lIgSUuQpSjXR<`-O_h>+JaSpiZoTmHF^UXv2$q zbN*;3b*bk)OIrg62EZvbyztcjy2(7S`IjB~w*~>rE)EVzx@DeiX+G1^sNfq)A%%EC zirA>9pazdgZ~Jt{HuR6u{7&2n5gR>uXwu-idB~sH;^=3#_#H57I^i`}oTeCWj#!YG z7)$g~E;Y5uC0%0@$j6Ff{-OIm`lEg9k%iI(YOsHOaRf+_-*n-(4GHuUL0>3TY;jJw zhnZgRz`HJkW^QE*b+5UcwTeByU1X<^DW5?pvg2zHi%W+ej#ZqNxxQ5f|5?;&~pQR5aT z)ayP5GHXqNi7*RU;o%KG&4#jiUFgytQ4EyWLJi3!`|;}?OEpfV@Nw&|5@_fNh95Cj_!~B=?}X; zBYm+vK9rChJRVW~wn}O_`D=JB!)V-s{sgZ8;hf7Hd!Tk`W*Nb%PS?# z4?sp_0D!{zUY(R!FykkVeA6)>lsOF|d4$lMMj;lYTn_Rvy#q&JO2B>=DEHZjiIYcQ z?UP+n80kY3OOCf{y89;n*ZbDsT){Gt*yoezw}*=bQFYI+_=~lx0=C+4%I~jbEtVSheaJJVa)0ZLMj#T6h3ma+n#`2_ zib#eX5wH>szc{O?tvyi8h{NnPgs15=-Y}GS%Py6Ri%n&Io^A$lg1n)qq9dr4bcfQ_8^#LZv6JU>8 zyft~w*G`DLkT}qunDsT3emOrY=itiFVzIy3x^=Vl4as(l+Bui={oB%}@3hvk8Nr&$ z^9a6UGPi{6Lk$M+wcW8i%N|imKBJg{i$sZ02F?^%8krl-ub4a-zz1G_`IS*zhYZtd zkCyvIdLWFOG~7tYGH$dzwKhMBfgN(hSssc=@Mu33=84{NRou;2SrXl-xmHGv1dpE( zOYux*HoY`~;=6n9)HwGKi&alR7d3Xm)Acq$UB2$!k;&Gg^SIjyCP=8k;mOqdXiOH< zi)=VC_v4cx-O(O<%B|%g_SdrcA*d|xpMt`zZ54tW!1TQ=oi>}^G|nC4;f-4=#;jzG z>6fYbWf)Ax-Y+Ai#FvaqFLx<()m3dB zFsC@R7_-so`>>hTqMiD+lf!NzT^=zf29Go)9=zDf;~DFb`-v@&(^2OeR%81PSA+Wf z+I^SDrxjsZED->inrf$FH6?mOB<>mL!0n5g30kE1@C<8VoFW6yD;N;VX3fA<$E>lW zt0J~))C<>Bw%@?`At5n1TOa2c3#6v|kb4dT5DaTOkGyI=aPOxB_OqhdWR9jX6sRS7 z{!Qlqv%?)n^u-I{Nvu@iO2ISOP1#o?zYj*D-|yOgZMDZS5fDHL7H$3^7zK1GU2sk& zbL~f$eYAze7E7Alz4VSxmdl?NZSkgSuAm4lWF-ml7L+3eeWqjjET+M%d(1oRxR>fv z-zmPwy$FXMmt@+C5upda`e}jV#KnJEH&4Xyq5~BMmS@UG2X*G3`3)14#=qmBG_l$R_CoU=-nXdnfn;$tAKy$DWvwaj6s zZp31Jl;Chcc+2bATh4mBQ)OLmu_wA@g;Uo22#XMKb4LpLGc2$7UVpr6Gl#*o8%3OG z3jDYo;CC?}pzML02Y+D$ z&?9SJwDkcyM{A`p`1xDqLkqX*bpc5b%4+}YdLm%}1lsPrP-KNtNcaX9F7tp90KSLf zI>X748ShK>$3(2WvGqqy$0l+OkhOUJ5niRLr}$N#;aec9dOH4|{?~ovVBlPT0==(a z)^2WXhn+ph{xvve#(wENvpYq-$x@Ba4lHE+v_lokItpg>*!F(1?(Nln4$Z{w?6?Sy z%49bPMA92kt*YN&5#O`s^=wBKNWEoG&}2%dW8{vkgJc9tQ54Dndq4Jv%brkRn6I`e zg+xY@MyB5SeBu7nBhmZVL0~ZRk>Ui1%UTeATF9^TS(b3QO)xQI)YTAz#sbX}KV4K9 z6E!qj*`=?988M?*B*y3naK8qUAE#oMDo8+%EY-db#BCgIMAG|K77s^$1xRM|I@GI&m&rZ-@|7hpg{&QKZ?`_c zot>K4H<%7^F|@g$Teopyq{-bsU;#BF+DXIhZcovC)0Mlj8*6s@Hy;5Sx*0uyqOnP5 zMa93bhCwKShshWW89ad*T$-T z=4AUu)RP8)rC6V-qyAw-e0{HM`OqS{570Z1pekxrudNbLpqm=zl7gft2NGVU(CSJ7 zUaVPvYS4V~0q{1B-7+85;c5Pu4W*s;2yI`0X^5k(ntyfnXKaq@*J9)1y5B$FRDl($(Fz0Okp6XGo@sw3w zhf>))2@s981`7(hqPzD;Y}k>2H2h<4HJ=5=A|B@>pYbU4=9eXAqr+jxQh?xw9XB3- zGYP?yI*y+N_;UDG*BKDz>xdt7($3M-CWIyr?r7gdgaK>{;>*nci!VRHO72&S!DY@B z?OT6IL64$guQwlzY>WVTJ}^^PYasBnL#~Y`0>yWQc;r#2^ug99eJt;S4UMFKz_!Ee`BL8QVKJ&nNWAhN4Az;avF%EMAq`FbPy{c@$T(^sEAc?1LINrfBK^Zw?5;?+IzGf(@{%9Cu* z(g36}{(k=n!(jk84T@NZ*=Hk}b`8$AuRmEze4~zW_S#`v@UGNLjeo zVVrQGa1kR1y+?=(M4g8&KS7@i7AGR-D=fY$&j3q2BbMA6(pCEnaD2HjMz)LQGti3( zG##m>azkbz$sP2QM{AEw)@xT9WgYuiDx<#dyA`;GYL5l=ANjk=6D;~-=hLgwAJSv* zJ1Qb%K%dR$|62V?G1bWgg0ON)(`~r?%Ssm%h!S3{p{^_hQXpLht8vje8_4v({#2+8 zfFWt>Rdc(rf2j-rt0YvMJ3{;|KOhV^-r``5*o{gaROFz7<*KcA0%6i$qQ_=zEq!kn zB3lEekC(+QZH1<0u)tSfHmVi*5T&G19TgnI@EbT7sL*+Hud|~E`|}=o{X`LXjDCII z`tLx|k9q|wjn?k@x~>&23`Tp)8&C5(qanJOx&Olo^EzAn`$+&0zH9#f^$L+HH*$dt z=DQXjjJ656Spl=!Tey3qJpk!cI|fCA%4zSLTHc*y(9^42CG0G0_?GYRL6&#H-jXj$#-7w@c(H6Fe6)N3(ep8jLDwW<>hhO>r~Yt^a?$D3`8OszW>~|dVPn>dgc)SP=3QDPWRULq%I2!ax$zX zLJg@W44C=*i&x$TAH%(>{D3X!D$v&KK@S`02RPBxhkN;)YeKyJF>s63+5UUSh5tMY zAu?ISq64+vkzfkzMTKDnwKcH(yFlE`h?V3b>{O}25s^YJ9pEoOf>&HrvKToOR>7o0 zis8K=TeaupM#D>(e_W;S>dOSz-iV3yrWBf6Pttq>;_5IsnoldVWkUsfT-(mH^ zNI{O~?+W>o=a4#q&0JN;miKX6&wTcq3WK|u4Xo1lZ|Rk(R}BDNmgqdI3+PO-52|DP z>wUO(*N9Vj-QR+!!1r4JFZ!SY2(2v}8-R+Mxjh;>X1K0G*a$bL+~$$huTX)}-6}OC zfRy`<25dV+c@KL<>9$95*S#~yP?KsJSM9QO^8}_%?+FS1TYG)T zg&|BFDRCs3l3D#ze!Z3Xmg1};-VpVa+cUGGWLKVmtuHaqtBBtMKOkUYsq996^sFH; zN=Z&+8!`=QYQ)r89!1*Aqax|Usli(oA3KlkyE%`c>Jc>pF+8|I#e`f5Z~Cs5T0V8C z?tFXIjyuwBtHaLjJdyQDoS|i%=b2f~lM_hcZ_2(V1lARU>&0`!ql`L(&QHlcMf#j9 zaS>j#e4~HGTfwRk?4LYG|Nq$>qaviiw~_;Ra4S8`piGAyX}~%QcYMm8{W)lgVxyqbwNV13COd3L#(*m! zs4W?k-|+<6y1nQk$Ha-Vf(5ksEIzAF*BcLQY{pbb!6l{?1&Y8Krq1x)5B?@+<^mmo zvX*-i;YXO_l2fs z1V2Ei$nBu*tT%R7LzE@+RjMS|^jbYws*t~|^8B5f!P%l^B4Ep?2@xtEg5(of4;>Kx zwMlYeiehAR;$08vw$oc@1xtrG{shcir`~@?)2LEuQ3~zyAZ^Tz>}rB=XoUCsYX0fa z`ZDvordl$IYcO;?`AZbdw11Z#V314qCJMU0kBsC~hDdhRU(^W_h>UDtzn;* zRaebbItN-97LyK^Li0jgp7J;Hg11aob#(Z8Aku33cVU(#k2W`r>OMaKC)`mITMkXD zu)P9zF9D_B!z29s5K#Y@2EEN?Kn7W7;DTh2hjQ7)U@pR^jMVU!gX5KO^x#c@q*nlKHB7T7 z!P2J5SoUm@AVl!BQI2mWzTrnMcCUlAnVCENo5RwYCP+oQ@4UYf8X*1kY?Vy@^s%YT z-t9PI2NT z|6(aC?5h1#7F!|;?oK8L1wf2XrZ~#;GbvsIiY3#B#M6%BC|L;;|7FBPnqu&D>g4OP z5(HI8N#&WB5=Uc^A-*b6YZT#z5+fbAqf#PrOPGqm!u`$sw9#h^r@LvhN{vPv@J(RO zgB-tY(qU9lwX$WXg(3%TSSqsxxz32d70o~pS;An$-a?96tv-J~3T|h0O6g|jd7o1G zpVPzlAXj!&!7MgBjoGfc=|8VXz=72RDuQ0M(T|zO?4zM2f5GX>$NlfSWC@t=CCyg*pW%St+H-wvtBv@2RmJM9(gGeCSbezo-E6bF( zQn`NNl7XRWRxke^5rf!0Du?6ncKtDhW^v)Bj|>20lu-jeNBi?DOUp>xZ-T$vY~|<1 z#)%z^;Q8d_U~0QQc(x{1B^C}Kh#~Iwq}6GOtEo90KaWk4=fcb}y`3FuGQkafWG6Pa z74pjsleU^i@?4JKR$6fEqm9zg(XU0n>ti+RlvwdRmeuTl8TkaG z(H=Q{T=Z1dd%Usx#3z~j8T{#IY%3F3bt-}ck)bxs5Fy$vmdrA_u2U1&J1?Le3t}Pw zqvGt_@{}5d_Pz+Cszmo~T`$*LH$din^5qZ+Aa(X?FX-EjS*q~<-x?)B>J83*&E1ysRNqyw#{R7~b?;#qYP`o-m^{hYq{YG@@eb}O;~PGBV{Oz; ze;qC8CM*MHH>_=9Wh^HRzstt}3Xy@h0_E>w5%`0uRf1as=2kom*EDfb+}F+T@SI1; z1ze70)7`IZSKO~18QRX=N*f-(BEoIhHt4KvVj%l5V(Ra?W~-f^N0R5~o==zU!~1vL z_>sO?Lw&UQsmmqv9_A2~vs@IhfXvp<9u=-{X6UPO~DK-jkMpDWVIWH02y& z%R&z!-rcJb}wp98FVy7)d~3Y;`VhWq<0&Y#xqNS*0BYz5;{RJGh$x6_?T%i69!ST|pNAd&HoA+T!jlV)tg z4i|G@I?~{JoGE$m!y{?#sLE#HD*2!84Q;)#9dank-=VszMitO296wc_y(Y{M_6$M-J2Z_>Bf6YGz|QOZ?R zF(9@4MMZ_bBy$Q3(Uq0(Xp<0gl|#fRH>!56PZmRT{+drlq*%4QYgrll{Y}m&B1FHI zKB=Sj*aY>Y9)RdTpao#^UGQGzIFm3$2Y}!;9QGd{lQofi(qK_=aSG!?#16Da3MuHY zZ-Ybt(+4zPk&W>y(ZN+&xR%1SEV=lCMf@T?dwSMgB~WW zqs0dLtF;_mnL&{}1pt6#3Yc-3{sk^dJd|qgFE(D-!BX=2wATe~E%1zAO7- zXjDuSy_5K17x;F%#T_1T^hmxMy4a!FQM7O2n#m2fCr{%!B`hFRGtXY3Z~KD(w~k|dYxe4jcpoH1 zGFtFqWVI$x3#2EA_{|EWhq@cxSpiD#se}z%_69~=QV&E?EznzRyzRyY1beRhKK{)| ze=%vFp-);+(S^(Rs%RmIM*kFo^pD>a+|{2;4w-eO_8qTpXfPVwXO9|4Nk%@)3%e76 zEGBk50yuxmYa|SArLsHm=?p<{{K=87B_$*_JH*r18wv7Hp>&KV6ZZ0_XYb_gPmN}6 zrfWE(Qd8YJ_0f=zL8u%>k!}O)f3|dy#I+AaaPxihb*652Iit_5Zpq8hZzTQi?<%Sn zx^E7S+UTf_(Bah^2-7r?txytDJ>gpJE(|&wzTh&QgyDYnu(+3_dnU1gnr)SuQP@&S zm^J|eA>i*WXJBo1DQ1`Kb2SCS{Pr`dIw~-O1g{_c{ws6pfG3cw#ek!t z4H1GDS^Mj|#^ltNp;VV*IfLJbMAV-wOYjYP_x-9-Ywp2IxWX*hLm3bS-)^t8hFUWT zyhl7j6xvbHX%NEG8Dfs~JL!scJ*TTa=uv}0P58fd3L#}Em&ert^tk1U_Im+!Jb zDTXAAug+qt5(m_Q%;eh&wWq28nVyq=myKPzv zj5V~(*n6M_<(`hx7Eji8iSLlOv_%iUN+7KRT)TEqv~67cFtNFfn`O0|`ew+YCZlg& zT3o~a$`^L%pXh;*AiK6;jTd8SJ4D0U+T$t?S8VQnN7h!;WwGVbo54^5uco^mWsHec7q~|smtUW%%wXweA?+(@>x<{o|xZ}433{TvyVLd1zVH*`|7lW z4p)E}4tSG<;ZB~NEEJtC6z)ZWR)7&=&fqc=Z~Q8nlRN4-+B|I!ioy6Ylinfjf>_$p zRu7g3x0;QbgeMUdmCrI8=EzdgS9WW+2D?iFX(k|GO|wsfu>zH|hdl4~s8hK*Y!bhh zMIIu*X;W3LYORf@iRl|JGB%ue5pt{3{!7D<<_!M#@twD9LbZim?Z$&Dd4ig8?`Yq{1@?EU(%_5mrG6$ z44N?O{>I>TDdOuzLbBq5M$no<@T|)H32UHk*jZd+cn90pm%*Eql_mUm({f5rkR?eQ zXZOsN*!-KlZ~jiUEt5Fpt>gKF_?BDKZS56^?C)Ouz(vX6>G6jxf{2GpeOAcciZ{_V z?xs-1KnymK=;Y|3 zNimZ1OIlAp0e7S|o3}|)BJJD3Qks3z!e5cU=sc1L%6bP_XSjzA54IX?mZ1Eu6E*oz z1Ck8E5^k&p^`H_%UZBdFB^f=QNNeUeOnkVdx;SvOlNB5u8QJ;~l(Bi$M67$1I`476 z=1|(SC#*C%(V)AxmCAXmU#V`?$1@ZY&x@Ngb(lA?O{S3WKK1I}+W^$lY}`b=F_RUn zFg*-7;167YuVD>-s8nzc8f%hB2MlQTpw{M&%)+tPT(OEKL7B)+qENevj@E9;LZhWsi=gh!*X`QocKpkK3=|hh} zQTK7JIE8i%4VtWn-P9dErQ?ot&%a&(d=U%*8PvU;xgqL+q^4Ot7=X1Iwtuwhiv!7Z zI=0HwVGnjZHxUV|BL|hHuLL>JkyacodyUD)jARTX=nQpl^EN=MjKw_#vqb9+{{h@PBadf2sr8>*Y4j!LwOwqpM3TwX<&51NB=Z)Ib|t z&{Wu0Wxbi2pvnyW6HrayStEh_{Kg0UhlKb7Bm^jEe7zWH{ce2@`@d%g=(dM8{fG;M z0ex-&h60WFpnbsqg#ZlTPO`A8{$G5q*_Rz2X#;|oK97cfPc$V4 zI1IPPeGWvdQODX|$@0go@dH_YF#z~t6Z{`{g3ROf7%N@ASnSc}qKBBp!@=DETGp;b zK0aBpvKo(M$}V2(`=vInvm#K%@BKL8h3A>pN&1#vHq5)O82_u=1{i; zk68t>G#B#y8mjv;gI7_3;Y2qpp1>wsJj3lBq-0c0dOXDXgGOZ8VQ1v1PDi>R&TJb; zOp)Uza`MnlJ~qo$gAt$yN?NDENNa%1{pTJ`a?k?HFq(AI9Zv3%y z>2gh@cxlpO1#>~e4YEmzoXP?@1-ZY6QjTkl1;9s5s!M_C6M%anZq)%72vgRA4`z+D zABKIm=u6Se)jye@OoVzLuQ@l}LN0O6x-=Nq?VJ9?k^7>U>5qTK1p*fAg4dI&O5lMB zPLVxAlfh)?M6vk{dRM%xJoMDUK?J%#i6%=a+C<=RWbyjI`<2~TX#27ZnSv0x>L93R z=+^G*)Jzy0PWc}j-UP@KZo-Q9eUQo93aThc*PZ30#EA*DdJCFX1)tnenXORs^V_Xy z0_x=x)=UMMx7i$OrmX8MVghGa+s)O!#5nxE4W*Z%&+EeG|2)u<{-+XwBtBG&V+!ih ze3cAcRJIKU%r`hZux0OnP3hF7Lp-9?%ma)MGerUbK~0BgxU#qrb5%@cJWu%q5|DCd zaO2q7ZTmq^4r)edqB{jGlB1-EI1;VM3oH%qP$?NIb*Uyf8PBbkGs90I8F_6|9TNeF zjeFQUh(rOR9|YvTBY406TieNxX+dv%ex-jEtE{B0GPp89Tg*X)oFAl1?Z3PxOdF>= zwf{>3xR2{aa7J4MlhITBxWIfzv|v0gz!+0}K~Ao3mpk^VcWQ=fz!~kCheh_dbza#F ztv|2bFDNbSPSp)o^bgOT-b=JO!lX>)eQj=u6pB4!@VLa-@RY96a2G+aGwY3Nf+!f1 z*(Ek!>e*+Y4cT>gKB&wOhqH5yxiG<^!YV4S6LcKAY+cxpwvhtojvRC^Z|gVWoDJ|p zZPtx8YqpM5^D&SEzI`zeiAt1BB!Q*LyQnq1;)}URH_58X>Els;E+8@guYh!Pj0^ma zVgNTzNW-%wOMZhEzGx8x0l{n2i+v5bKQdq)G{UXm9nk9d%7m4neJ7)j`(g) zmLgBuX+VdB!QWUdl&dUy$ozIVgSmtqNRCyXh3)fimN@<$!1LLRmU!Iu$doq!%bRyN#2=SrNOFX`2G?L6^4 zB{lUteao9+?V2Jqk>!?u#pRL$j2~{ejZa@%s-Ys{h4^+TJibwsloU^7H{gMI-ch{1 zy}f9#hsp3{4pk|NKOK-J``h3DZ+^Q^d83M#ZrONS!7Dw{=i~b*DH^AyUzfx}qN04^ z8dsmZjR~;8HVU1zQXIpk)hbbrPET*LCgi-vQzv%cL5%PNjVpg?l;BCQWe!!*v* zMGR|?$_Vcz{G=@vJ*z(heGM*VKVRi!lVsQ2SBoTOj2kA59wadCHPin z%Q>=MB`N$zS$O%UF8(wM6+<2}n%?89H#cbLJ3&3OKjn(VDC6|mOl_N%4Yyp>m#Qky zCFO?6x!Gej@+Y`b9YXvcBo9`+W549Heyj1KDw=UuzeIAQ=jY+vzB($|U1`8m4{sD} zMd`fkLdATI4nI$YqWz0)>bv9fsHFG(QB?-`!%by9~nP5nlD zeDTV!_JK=Y$+?W~W}R84<5~6{M|`-Ym8dtzN0J_X632XMYk}Dc`{Oq^G4^NgNoAX~ zPHt97QO+OgbSfOr;gahtzPv=!<_Ci!du5Zy>m^y!-Hb7l@OF!#=6G}oPaQ*LZMy6J zoNwPEb{d|owLi90Th0cL=6lPJF1nE==-eo|?)XKLMoGB1Ua*2q6l=NIqbO_R)qC^c z=A5f~+#2R>`65%#krvBaYJet!oFc1a*2g2iN@;t>f08PK*?X_=;NBg0QBaNVT-*ft zqd{t4ra>>Lnzj8{`mW1J5ZjwQsal8!duCdfF11^mIPdDLDe@#)SCY;{RSo_e*r)RC znSEtUM^Qew`*Pq^AxIVUwk3V2>x~)eY=Kn8bNV9;|KEKS13J~gQL)@}Wqj-{_bYZF zH>Iu?v%ykz@vZFLjFidzaD2gBTv5V@<<5fldN;pNxkHs0^0$`|QrS&s9>)YHmdT+m zvE26OOj0DAIKKq7gd5ezH_T9mbk=*KTr@33-R_C1imTcdY2QR{Ymw@>Xu4knxR+g@ zt1`JRyoio)UkFl>dfn1gmj|&ttZ&gMn&^g1qw8MkeJVo+^EY69$i%-SwiyzgCls4J z#J6~`Zp*hOodfd_PTi@PmkkXMva0OFYfwYPkk%d0oSKqc`@Yroi?Qe37E%HmU&j1w zB<~&4`iPgGP1EwhLPI!vk?PreY%rU}lz&ncPS&Ir^l6tAg)c;6P7Ha$(G#?6Mt3Bir6oeRrTLc)U;8u!Keqn6=HRb%=G+Ln z$bZk7f6=;BEMr&2!d>l7^)BDrO(oiI#qNHr?Eun><>T#q-&Nsv2VX>>K~`}9b*DG? z0zE0`OYO--i!P<3^fIYzaYEOKr(QPC+fzd7)P&=&E(UxQ{*DU&xd!r0eL)l4kX}=v zJY`i6-%3&68FXQLSnrnWf8@(~)r`TpHpa0~)9{4tN_?fx*)Rl`t zhMoVX1*of-$RAMQNv-v$#+I)U*6XdggDV&yN6%VxSbvl^w%s!g0)U4w?UCwf(WJs0LE#}~M_ z-vnpqJu>*|1h)W@2 z(P?pNN6ehS;A8#ICqjYf*P*Jv;+>LzIA6V|W8J9SMs9Sb&hQY3VH8N|mS*G&Up#Ex zv2Aj)6#o#l>cC^mb>P8a^r0kW+F)jA7ZX@9JWX;}nM6k=b-W{yZTp822*bMK8ScA8 z*l9q(^f)*_G*=&V{CJxX{4U|NUHXY43!%%jaPq973RWT2?3lhmONDo~Y^_B64QsI{ z1`M&q;!pUlpbF=~Tpf3=1E;*l>(4xwyE?i1fnt3&eIk+P69sEIIjMyc_+a;ZVV-q1 zH4#8(lb+!xN-L5HZW-_0KLyLm4{1n;{iEdKA6tk=8u^oto=G0sSsm-u(RMdQ zeJa)#`r5eNHJ3Vs$ibl1IoILI=z7%rha@U4z4w=*L6L){kGpttcfDB^llpy8bKrAk z|I8&%u}HO`T-{s100B$wQq?pjJ_#NAA50D7o|r%$X=+!K75_cItiSU75etSC$FbMZ zfo|rwQY}egWKGSrls@dW?6s*5mGZ>JQ?7P3*e01K>m@Us1#D(+WHAysQ~PsqcLK>B z{3J5s$L4x#=GixA9bOj6=SZI$=Glp|RJl@n?yn!LcX@0uHJk{4%l(Wa5hUp<-O6Ax z{G@7FX?{JLCs*`uUeEdDc)_fhdC#jFAItl`CcvpB!{~@{i;BX3L1dpmMo7%Afg~0e zQ49_lf9QfSZ?!Nt#&y598?bN)N?*R<&ec)j?V926kL)^}4QAb5>@UZmthmRxRUn<5 zGFKgp>bOFKGaamE6BBK8toCQ(U*277+q5no_8vOf>pp2iFOLRRo9=AbXex%7=aJv! zhg#gchEv(&z9=J+d4hJ#g@z`P`wl60iaAO;2}J?Rf8!&Y@Iu=lp^_(R9sJ2kx%MEtBRn+U-B2~V`CQ` zsrxqM!*%sFB{f;pD#6OwewPBsg%k=dbB@Y1Ln}4^&{)RJsC7}-i*AjCQ|Bmtaf|c} zdXx9~N%VZ?{^21(hRB2W^J2WgXscJz0(xYw&0-7V`S`_a;8-Fi$n66nsLARfQE6yx zJ33EEa>eM%@DWzVc$2%io!vW^ivSe7$1_X>1iB|N?Rs0&2VYz6L(HxCr>9-ANWrf0 z9I}r(d&{1NWmITU;~($07|-nNcNXukm7+&$o&RkbvU=|IRhz42^pUjU1Ss`~9b=c< z9Xf%59z=ArR@(w94lJZdq^;!c+th% z+?WTb8^%1f-0SB&s(!Q?mi3ibv}fTxf2Wn9*P5aOfj}UY*NtBai952%o^8YfM~bU; z+rUU}+ZPui6;6v~Tc0E6mcN3$Pq`opw0XG&IqP_pcYgU*_8CnN_9N7dkCl=?5(I;$ zTe=-)Q^b5FhBnm{8-s~kSK7Y_3>CS;$_|KHR=XY5qk@H{<)xCOnR-JS)v4?2`fyi= z9my(#c--sERv|@QcNiijH9?kIhY%u`_i^`XZa?n>3V=}-MLg}IC0d3$$Zc& zuXIUxP{R%8WU)>so|x5e>YKV_Q(Ts>$Je2Zu0F=_)ms5Aya}EN8iVwWi(muQ>PPVA zswhYF^Oo8g(%|wJXgw=(zT*Xq_|uo=OpJvcE(uXn zdZ*UD2(g=>ZB|ViLH8Zp{mrz`7T8V=vx!f{tu2>xE7luhzYf!beB63cGh;6KJvSy0 zK@*u5CT|cCy8tN`pFaF)62d zz8BI@_av?sT;{XIhR(juf&~pLuU-c+S&y@T1lA7<>5Z55KHnq2xG|YU>uq~vSX+xq z&@yoDl*2p=q44Gl7Kh(8`x8d^$i#@;n3nx?RAhIL66qOgoYs^zVOrGO+mP#N_HhdZ{k|0=MRCU+9-s{Ru`oJiarm1&1e;M^Zh^e_NGy9faCDi)lG8 zaca#~9UhGA`R^e6`=>9$V6xAorfKz9E z2K&kSEK{XU!?sDYSW}@^b^)F6MSH8I#?5WfsMNK9#pHuv^JNQF=FQFiF`A-a1lZE@ z)leE3K6iJV^qqxd!EFzBAw<`CwV}il9wO^w>8^N7x(7lAicuPXg#%)x@N`8S5UrXx zu{;7PW&y?Rq{%YyV>9NY5<)H@-`X?-iX0n z@UshrmAxTfsXmpO`1LxDXN>C1s}t+7K&^91rC+uPCDuJx;n4$em^khnVw|r&>kUfw z#i#rjSlzFwFO^1z$A3cQS-vG%fH(?@J0I&ppwl1IcwWbeNq5T*|AADn#*gtN=oBRv ztGC4ji8V(8|L)8tcc#m<{HQ@AcB1&%p6Q}4NGRpRcE>EZzbKx8VH?-;Ph=nG)F(6H zr$JA4Cd-Y|FR$IgDmkr2G!4OsKN)iC+460rc{`=Du&_cy53V%s&c|6I`5Lq>DjlV1 zPpe$kzXCNGKq9@)b-orOLrKO(9$R1E+uhCazR`-mIBLB9-fs-ANWkHb-oBHHz_tE* zavg*HB0f6YC%wl2l`TC-gXglw?apvrFRw))Fl~SK4CHlg$Tx` z_WSV=aTLrSD!MwOpNoeK%e<%YkJquT#rr<)YS)V&;z#d(JVpv?K+nDRN>CCnI=>uz zs|z98{~AXOsooey^fqCk6nq!|TX#jLJhnxHBf8v{$UaY|8y!=4uYW_v^YSx*1D22R zHQkQF;LA43=W(IyH&Q)1XauSZpNTP~{Q^(5bu^w|_=;x{?Gy`b8oaxg=fM+lhLsfwl(U zZyW|PxSS)1sLLWRtwV%NX}jmY;dJH#2AGC?YU*MjC^u5!nk{~ z3zzxKC@agLkfzZ*re|HgZ$zue;V9idEw}$;%gQGQ8Giiko-cJ){CmAq`BpL?9XrXQ zGE~D8t*Y!-5dz)X=QGK-VZXMtMEqQzhbLhz?vg#2w>#Z? z3@JYDJ#T5AA`XsAb4mr9Les~02RhfsmT~z1U7TiS+xq@ zCj&kWN9EYK7kZbBZNEY7%$Ru3+NBWoLy-%C&)UIGj_6E%LIKp+$kq~h2~^aBD(XXy z>k|Cs4V{uA!J3j4lQC>lYQhS89)Bek!gIBy%X*!%nQqig-88I|SKN5}gHY^T_9?GQ zbcO}n=sQho&{ygKiI%J%{1CDXV-Bma7nC$fiKcFO`vHYjrWLz#;)^7|E#i|s zZQHd~$Q(!&oaN?v#FBv+AWiML@9q)a@4PA`us z*mvIs^VUUGKae=lKVgKAOSs(2in5uB>9)*CTfMMmq<&9z$X2g+SqCY%KBVPY;>EPr zJu&J6co3rZEk?Aw$ylx>pN=e{Vo|g)aCHY8Fd)mHZhV_;=^=2gnvUz{E*nIljFG0p zG~b7!dBv3^(|dx($Z|F>{#^6^3@g+?8ejf~iSYV*S+H1Y+c+oh1_R|9< zHiq<9H(H$*e&7t;5*=7a#X@BH0ZmqSMo=b%!}_&vh>MS_|EtdlDD##|$iWMu6}k zNqd7Hm6P2{q?-)0U;)*IKNx%~HS7fOk78bO$UNCm<1ei?X50gn+Fa?1J2JsTeRfUK z_F}c%^-7y~`RQvT3cd`urQb#mek3~Wk=y4rqqs!ZZPS+do=DLm!p44QCy~30xFX_F z-Sv3BXim>|*ab#ldtpHB91F*4Rrk(a8=E$pge3q02!TXtvzeOKF=C&$`3rwWBEicK z5}LdyBD&-a`7zD-P1d4(PYh{m(=F&7tcY9fBsu`(0Fz2|u3YK{Rq_gl3Gw9ZI`PYT zzR*dKePa|8bt+al?-?V%EI6m$_6-rj`^>S3;=eEb_mzao8 zW{QC+Q#s_=%@6ptX;yikk6Ztan%ncvF6qpi+zkxhKyeefUCCM04pZQ<(Rcb(F~k9c zV|@aB1DPn&pxg7mnRWOk%szGlXKU9tfIzfp-Oiu>y{jMNM)wRym78Tv^Lpj_{k!ca z39!cB%5({WLU+%{HVzib=U4bMZW`fD_xkl_$lLCx`nK9q++`3$eW;IGSgpQ9KV zO7qS4xY@Q`$b0l_%9H&%owNCRoWf=~PzG+oRQ$T#_K3?OkR21( zEnmM6LU%gpryJF|xRLXOzO*sDmO~CFLGn@lH&1t6k)jbxJbOHzU&i$qGDaPXxHE|Z zU$foCEL32%_&7fl6S>sK%_tXOuGz=1oM>ZA2fy}zkurCL6>BU$Ay|D|^8LbDmDDw( za?(f4MFg5c(cH`x^v+%WeSV!cqPl~_@5}Yv&!Qt;*qtDMT{Pu*=c$l&k*#-X93Koc z)&O#4YeN7V&Z7-Ba1m*uDwq=B#0O6s(ji0~h9PG$D#Evj*zb^<9J2KitTv5vZ1qR2 z1VUI?h*3Ng}+*`JRg-;@2FPQUoDTnQic}qD^=j^PI2Lc-!t|3|AAlpn$hj z(}pNzxFdzcjbqi@d#RijcHogJ#~Nh$MBp59C6~6S ziroCjs}rd5Hrl@KHLomdu+~F{J$S8OTgyVz{~U+cKaPyE~PXlDxo`k_PE+P`Z(BknZmO z4!*x{t-Jh(h1~Nz=ggVev-h4+`;*eb={jo!-pLY@b$3)~K|#;^*U#JAEapo{Yf*gA zW&W(wwlS_}s4f0jr{}+34S@ojIB4(8xyqA&@~V)CbDhfA#JD9#} z+igEiUNA)Yx@l(Kbt#~U^AROsI90AK_dG?w7rk0sMo|=<^Rl_nx%dg!oN6PSY2LO| z{ze&-9v4vR2NUCPd`56Xb!@|{ee!(~HDf9?FoQ_jL`*EG$C$}%sGA)>Oz~MbCZpNd zMgTj0my5^~1t~#kdzcLAwDQlj$E?X-J@#94B=-w;x*jem1630mq}}Lr*XLkL|66G09?%ywb!P6*d_{5 zl-pur^7J%jl$9JQCI$8u6_2zUa!6#=x&M zYk%R=fGh9S-Y&PF{hl$6+zJUcPni~ErGJoit)%<0`_RvZ-pNne5`(%x!+OCZ8l^>D zahpt6&fV$kt?!Kq{i&}``&WtE5u%M*s5QMdJ`SND*w7bubn#|1!;B`sbS{r4subMs zCorMs?U|Ne6{#|m3qoUhrF#0hK85Z;!m7#_NA2F$p5dxwI5Ac)UPlFqcfZBK7kTVX zEBKHN(Q6g;o$~T6sC~$TvjvT%^MY~vp zMlH=k>O%ImdfhZZ;9zD-QQE*2ybh5k49Fx++zv^MM$KPVUU#Q_^fi+m5CdNYcE`jd z{jFw~Q8&_x@zj^;L>1Eq8or9`G{4n@ga}y&52h2W^4Zzx>i$Q3|RoA(#Q_9#Kn=vtcvY zoA(awS8n@k))KxHE}Pa5*Y~6p%@^j?pRjccc!*UAT52g75*yFFNav@=&3^U`-#7bF zgNEC2X={I&N$crUSQxqb%fpf0^>KDA(bQ=dd76TUT5a(lfBWK+*-{|!BbrzLmuV0~ z7U8^fDS-PV&_dF4W}Pud_J+-^pUEne5T#C3qA2>#GK1WMM+W}D5RM_QS@#yYkFj+%gV$ zIpGy1(3vd#HhQT!IKNo@2~zTStEZ)LwkZz0M0WksdV0EVlsHMSa)iHiPDzf5kMQyC zA=f-|=Sc5P1%@1MBm7bT4Z2EROD>#c%a7RnkXkWri}wIrxg9!dD&~B|=X|{hrGFN< zvzn)jYQ;uUEcPPVmTTg!l9d`V&WTg7VrKNzUQql;4a891@hRIhd+~!MiMo$h%OR6R zgUWT5hMiwy75A%33EANQ6S{~#`h`Cp%!zVSYpH>%;qwy1!xjesQG{kOB^DXoGWeCv zMT%-(Oy&6n)MOvbZJpNzzDbqmQO+Gbb)09wthcbZyPb=gpHLj;Z=NMd?EmS!k1a_5 z;%{djtYWKeX9$|4uop4HzL>5rF^a$=aW3o&1WTTzUcCpz58|o}0U@nX+y@MF$8M*6 zjja4$W@)QEBj^Ws7qB;;_vIZ+gJ?zq89)B0=4?8YP&mYNOhplq(k2%3J~XeK2U;cf z>BEL*4}^%lXFg~>v|l?CYDs0@rxByj4$~;e&gc!ygr%7bq@|3JEXg0NBbm45Y#m7I zLP68bYWe+DmJAAN{g;eyOZi@AfG0ILeNrLaT9Xda_^Yc`y1s6J-}QT3TQUHqO4tzN z*QW6-7_8@{)ID55%9|qcj+tskmyy;HW4e+<1tPjSQ|K7s!e%RH4|0k8lRmm$Ebd@# zWhNgBYO~%e>UhX^_oP#=^CxE|C}MBD3D9NX1iZ6Kh0oNgS^lvgX_yc&iNq*CTuJh< zxFbb#*<7sy86rH{6K%P6z~-)hMV4pEvNFM_4)&2PE??RqMiCh;W%}8G_Tqy(a^*&P zs(o@AR3`5s>-sthX$=!SCJovTrU!N14>#$pZ#tF?+3lVLuT^>kAu%(tKlGCMc)2p_s2c^-w~T1qmN1H7Xy9^@h=)p4 z@{$)L$`jkX>};C1ko$l?Au;xjN{ zjLehW^`kjI(9%F9T$j;scB@^;QK=`BHl8YD>nJ!zkG<=$xM$wNI~m7FYil*@>Y2%& z^bE_wc~N*>`;Nph(j!>1Soe2KnlJub-x!vu|4F|8b9<9{dMrl6tEF^xlqb^LQ!!Ft zH9@JGn+@E80Z-!-&tp$Hx+`6(u&6nV(c*Qmg4tbPv>7F;2IXJ>+q@yow)=a~PHHoA z;`XJ9JW}*CmGw;9IChz-I3*I1kS#iK;#NyGEtkFaWS(>L;>2duPL79NlCGvq#Nzg( zYkj<6&5{tH4$d5ZThQMrcaD3qjawR>;vAU4*rGW`j4%a5m=jAG!v8zzU6#dswuW2? z5O%T0NRlvkw$7!hry8itp5wULJWbe8d_#S1YHcDdnzWhg;rY!u#pnGn|q5Nw*xfuByv>aENN-n z7~<`X#sGuY!sV(U{!fO}zbAv#s2gib?vRkkhh9RT$*=L&k{B`sr`3{YC~b4pnc#FW zm^Eume?O}l>VxEx@b=_m)Uz~xq-XJ(tRA|y3b4a1!C+^3`sjd~@MKJ0G1?dE6T(md z)U}eQ1jb|snMAAcQ$}b*72={9thcIM2Jq34)Ns(fnktfTe09tBO5F!WlFzk4dXv)z zUFYV!zPCSoA^p2A#}~J?d^0Ac?#al$BDGOf?;PNS^w%N)!`7Q7fU!ophBDE7u>$E5 z#V7EXF^Y`8dBuW)vuGg7Ar;?5CoI`pWvTUB-wd*710|phM;HTz+8BI5?laUKis$l~4ww~tto>$6aCPe88Sw33T=d9ZTTu)1y(^;uf)fpH*T(*Q_!*A;ogGnKY_H-o-0^U zE*3+>V|hfpsmkB6zzE^Dfjdtos)}z4&IG1UD;*kj(m1M{23W||E#qDRmbj8D`E1<1 z@H6R<46K06a!hwke5a``nr6#&vBCeb_1vCUId@cAmkISYfPeEkDlM*%8Xi`r^)?l9v=c(czQ4GF2WQ?^+;6a z{7(>U>Iy90h_{~6JY51>oOVab#{QgCWXiMb7UKQ6gVz>)x8{3dJ)%;xE)ukH?{X(b zE0xd$?#yu>_oUZK8V^gi%buQvrub7SfT6tYW8WC&fDTMzuKzlMmi0PBpyc9Mf&}t0 z>C^Frak1W8u=qWu_#afSM-?&^cbj$JQGLv33hsz@=(v>5{#QDCUC!;0A*U^qNaVC-Q`^eqo`DT@;9Hy&&z8lRDEqGP@G% z(1S>eJWi|D>2w<7&8r?TgCnOLw38Xti%zpswbL2He%eHkY;U5;9{EcDJUFl)&%*+? zIe4kXCo(Ml``tA@5YMb0CvbXDiAkW*sM(>KC0iM^$rZLgGgU*jg?Z-(5!5C2PrR`d;H{P6Wjl^KHQs{Dyr3O{}S1|z0 z0mx2l3}2R836_bHs=?KtUZs6;1yBswi$OEMO z%Wy48OnAlOpAK-|SAz)Px-Zi))%~Hei}{nTM4c~{OB#o>*D^$*zefEIdVK#J$W_B@ zb-k{`rqD_RLSG`jeznX)pF3~u`cNIgNmw8CVplbzs6)jwBJd&+j6rb z@r{6A!_#YbQfF_;FUjk$dA093re%b?2@!mCw6dT4=%2q*IJ3jh>;euA`xzSuPT=z& zwZW-lX?qq#4J~G4O z}O!z%f*0R+#kZsPvkj4sfXGk3&||DdM<}PM*zAevqfK` z?7cPW(ooU{ggt0yB-ch_(pFOcHZ2SBU@U5*rG@SMoLtlHmtKxIWn!YdvtWE#K+##4 z8_~EbB{HG$_56(Y>46nhw(@{9IXLM^auk{x-WJ9zN)m-RzV2kKt$IDta0KK;O!>J_ zrW*<7$P=*%!91H{O{hx z0tOA>QUS*CKnhs_2^M(Zvc5*=wVr-M^N_1-hD0iOp0sJzst?T8zznS?mVw&K@1!`y zF@1a!!MdiAHe$1_phL>AXsNbWMoeq=_Vs5`k{sPAIPSYCJUrd}wRcUMUmE%MQA>S} z@EH=_9+R60$ngaS)dcCpfQ9f{$pJh5H$^#g&Ea@!E#HKx$vqzlzce3TL?b<%-woA% z9yU4|o>#YU2?x-;1nFb7!mk`#7JI8AR(g6kw^vNdp>SA}EnqG$4;ECkDTpiarDDJF z6%C{)<@~)~D}P!X0&hNLqSBH%nQUQazT(${ZhxY2u4Y}eo9bR;s?+H&FCdI(bt=`% zEj}UYwYG2CgOPq}mbI}9-F0FH&PtL96|gJCCnBIC&@^Lf4b4b>$B7dhA{ky3hkXBG zjYP_LoF;Hid+cBMpYF!z;pn7A%#;ae5 zdBtV({75q6`;I6ek#4uz@Z=ZB*a=45lXo|V;l02!=u+sn$gOKD1DrR@g+lU>+x$rziaAV2{bDn@6sMgsf{embc4IUEk!rS zymU104K(S`5yih>C0XomN_?z@s%OQxEv5B*A+?~>t-#4rlFi0^xjajLJgQ%Gdw3|L zqLMl~ha3`DyZF7W@zA&HXc^_lNW7jkvG(o107sp(2zLwJ5r&LlYAw!$p;h-P-?*3n zBl1b6uzfM~_3US9K1ll>X`DIry=q2!?N@~?LNos>aleGumNnpU7@x@0I?y;%kj!41 zJjPn+mR6wul+RINx~TVh=Dr-s$n9EjQ8Rmg*A3gEb%aR+@mCX{*BV=fpO7qICW`4R z^D5x44-_R?2A$_z-DcQ%{=Xctu}zO&dimS}rh35JQ@Zxx@!1Dzh@mnSykcSKpKWt} zw$X8G3T+DF{lC5mgK428{E_gf--se%!=;0yGDK+;GvcLVB>zUuuwE@^U0$uT*zALL zU{i|qiDO0i`}evh>LCmAfFDNP9cw>royg~UJoORE=gIX^*At^!Hdr^~SCPs}sVZ9T zgtA&G<&beUv{kS#Q&=G-fXpT7jrb!DhOh?S2++M_AzWhe4%fhAnMtFL|9%!X?i>z~XJ=Hp0aZgn1 z)(Rnt3%EZxj3l{5^Uy~XPb+raJ8mC zyQXsuNpOwjuRp3tSI5nqAT}I*q#l0w_!GQE1jWLcCUXXq8k>%|g}K-UGfbB%O%i9G z%yZ8j>hUZGP=C{xg8yd z^J5&lc`;494Y)`wq;#I`jzNU(?M!|%(w1qyDCw&X+?`9d^Ha=N^?&cUF`)JQgQ7jv z$j!-8;G$bMj3&GJ*WPYfV-+1l&HeX!dO#f|emp93c(h*|7cHqjUl*ElS!=iCznO-s zx-re5Gh1OkGCDe^ReNA~xEKI)w&NlLHIn&>6oQ0{^jWjmu;Xh5s1zubp18{KefkXe zzL_jn2E1mT6|x25C6mNzyV6>bw8A8ijB_NC!zxOlr@UyrDvKE|I?>UE1}R3ehim2D zfT~4Fu7@{OW#d-4%>^(iHZA85Jw}nOiA{z*?Lw%upAlxI*-=CZgTe7u57J<$=I(do z0!;v8jof~jnr^veI^PXuK5u?kO`$;(pELfQhJEX2h4($(9g`b^d|m+Y<-C-u>c+YP zYM|p2`wK)4Kx8PuMf2)4dJ*8iJzY;5natL%&!qY>5Y*pOA$jQp(yhKxN~Mc~*0WWq zb#+*a?nY$&2|gjxIdo2Yo9V5c_m`KXbae3b+Vb7sUSMY{yQO~v z^01>tvr~8TwQSsmPu%>hi3FG5Oa{9aUc%iRuU0uE$=&p)Q_V*ML}7dBb0IksRTAOG zy}ahE1rQKo?vBz7xI!2OBe>iwm-2b3gmZL;{2-k3KIFS|LE)SU>xXNTG3@a zkwyOTu>?(=l6ojV5@^uCq<=A@c`OdQ0t+@JT_O z+Wq$@Oq@ssC6p|4-~+^@f6{T7-{FH4`C7V~pdJe{^Xj3K{=$9{Sb#p_k~ z`p+SORv$!D%?yd&Mgf-TrP!(~kSJ}a{+y`K99WL*X?l$o|LiW)j^zH&13-^>$U(D$?k`}Y7|0iOxq z1qA`9l&-G8YPa7n|5tuYu6su^1bQDGUVnNTETSmmF&kI;YhT=iX%!UVDW|Z?Minaz zHEJ#VGlD61RcLh!3^1}nN;$o~O@(Yi^+c=aL6C?_VJnFxXCW`g^5(ZN^$mBC6O0?V zw_Pz6b}zbX?+&W3ULIOZas}rIw#b}PoO8LdK#~t}+VeSE$rxM9azzR&fD~uz{+AUZ z{_(TxS7L|+e^nj+ELsmxTtGzgbZ&UBibI8-rSHO&;kVOLf=ChwHWH+p5L>H6E3B zWYa_qln4N);KQ~)It*mQe@stxqyIrvIA-vz>(lp6GF)#%7 zXwJ>#MrKa2NOaGttfbB(zwoBLV5(o2^!naJ1bX)yU4a z?liqkTxd*myxrGnZfH?F{a=Xrjrf_K@eO1V^K)j(*=RRAC<)%2{@O25(JEgQ#QVGV za{Y(-$(X{A%3z3v)&&OSH)bk(d_>`&%stE*!1>ZN<#Ceoax}SMqZ`?4IYu|mJvto4 z2ENZn3_;pmg`|gOo%5IG9v|tt6>=PgKOUkk?Ms;s>Bu{j7v_r4srd@Mi)+1uCLu>1 z?R03MW6adAPP$rao-p5gy5w&k1zJT2Zw8RIdd|iTo18G8uKEj_PiDTqzjZbm@lXHB z5Bo%%2c!_g{}xld7{^w%X_g`I(Lz1m%@xR&x(P$*2|u?D#J?^rWQGIIf<3&fh@Dti zL38`UHWjhS-qTvkiOaa}6ik)l+MvPQrQOI)%w-d5 zmc5H)4(h?~5~T59t8MR^Hi^wfAS8-{b;EDzXy>+aYbJ;L-quPYouK&moLR-nIwV$} z`Ebf*;MN8|xrUIcxmBm1OPt>WGj)!mWYRrwHwr*B>s6~&?}^kt*+!|_MfVyvogWyJ zWbK?RIb`+p^{rKNE=kb5Pd9t>-#Tgkdv}2OEK0-6D>SnePJfw_oe?Dn;~1IdUlgW> z(>7y3^%u%gRQ)nQRCwqUR^W3`Mz{_65Q6q=AM5-0MZ*#_iP0s^YzwjyaSme0yo z*`3i-8ocXLZF5Uf`r2Nl9n{+Vuj?a--CWF$KHC;)*QVNS-1QRD)|R<%i(@b@eAQ;i zvN^qRwnbCuRz7MB z$!w~su2BvR$U_roDz4P)S^YeFX_87F-xS|5Iv4!QT>Bdd(1ECtmv3TDyqvdXK|_N# z9|yKB$-+jxa#GpTx?pe$Lor)C^~5J#)~1D2vXa!{jcvwJtG3tKjybh$?@LI4#(3(R z-1clab-}jAU4u1R_~ZPq*~muqN(as-Ozi_n%v)@X4_PDV@t#Z!)QgIWPniQBzki$k zsf;Pk9fwL&QWVN2uspRb!nJe6az_BM`KR*k&V9S2yt6BYZlvmcy; z-Y_87zKKcI1p`mUEk4hElD+8lJC6LC2Of?}i6{v~XQY9iz&lw_+|A%Jle**5Yf)z8 z^+e~+X8Vf(&!b;IfUz~k(d8t6(Na?gxcSShh7FJj&HCC~}Tq;WKe4d=e%Bl70idM@);IQblP7#cRFFCBGd3tQN^k;Q)4&2250#l%- zT+=E5v1N-nS9^wGKjd&4^~*7y)^&A<$>wHLRXRd|qzfM))+;owB#>TaAlo>*9F|;{ zK8Zyu7v(&kb)s6v9J%@_tH|+E9AtkWGEK#?IZsFH2|)}HKpeh$Ae~{}#BZBB`;DbN z^=9NXdq(z7saYZh3|DwKxAPj=Ei!=-;0>h6N>P%t$9<&61`Cc(jf?8vC!wr`fy#yn z<%uyQW=>g@-CX~*J0|A(6%|b+h|>}HQIH~{Oy3GgP-a;?i{;8+R9MONW*w!3;)~Gl z0llV_L|ymq1|o1LqqL=`Ye$&Tl4O7l{O@fF7e85?D27ubZ8%-9osm8QB4t#e&vU98 zOjS<>kyLg>weq;O2xI3-MMR+y^mWr8DDbV8z%xN9QcAn^*Y2*giDLvYvoZd{o6r3Q zA~YY}P4;hU`P)X2!qp#p$Ijesn3e0@Cf{2oXj72Z*kYBtwAW?j2D}S&lr(XS*F>vn zis&cQj#QyxC-mh@-JqX4>I)yPu$poeNVyE00iqXI~ZNu20!| zik`(*)ZBVz*=yka)l_8!lk>?LC$8H0XGQI`I2#G)H9TN6l$P4OE|3`N4S+%C-IqjP zlsb?yapXaKjM$5Vn_+)^QCdU|Xc9`m)Wv`4b}H<*2!ZJ&O1OHZ<*R19-HzXWms8G? z|Lytef0ifoxhz+Ppr_4t1)+E=lkam!?K(}>C*QtLQ*zXR6ZgJeS!8iL>vP_FwOmC| z7xhZXpK0E0vPg6U%*joT@ayW$0f7Dh+B?jU_X3Ium$>zU#N2hs-Iej~YdrsMa}Drz zZd=cfzo|uhmgxWiWe(8Y1P);v6-pLg^>L_eu{;6>CLy_>?-D;b3OFSC$rf! zxLNcs5>*&e$ru-WCd#METoHctPKkr&b=`+oLcuJ?R7Bd*&Bnd4&1xARWMnR-$0BYe zWhNSlmRt~7*Y#<;N{yJ%`J=x%Wfz9=oebK9t5gU7Z2>D51 z18!37rw%DqcYH|$?p&NpntCxtg`Ko!z57*coGEU+p(Mj16FMlafsg*LLBZ#7BcF-S zJqxUfVYT$yJMy!T^`-^|@xps0yUuCV2TZeHcT*re!?}FK2&WEdt_%U+6SS-R^WWq% zF@}Shh7cM1cj;+jg~h67n&nua2;3zv@Be~ANZM1p6Nea(O0qJf7T=4Jc7Q| z*^c?~+p{0j?TS?b#MiOG4WA_=>c^mCrD71WJ>HWd#qjLWq#t`~&pw}7VU{ID^x(0< zubWz?a>^~%|YqGkjf zG#p%?23dm-3jLGn%u%-B{Ffn%A&Y6o=sE?G-S_P6%uBcrC61lZDg&U468OX4;0b1UdCsE+S&e7$!P zf9q$dQ1B#r6()cTRSw80FogMiAPP??GMx|Xl}+afrPN|y>sfyB|F3B|<6rprR=`F8 zgEbbbXu&T;Ld?4^?nhhQhywFE((9O#$}1!qiWS~z{PGt)6Y57-3d?4_0&*n&b}OUm zB&inl*X@dTG|?EiLFC)gIjcm80dj>^w7cui_%Q7aAI{FtM@9FkIeO#$URnbCgL)gf0I3 zz(B$o&lL)oDStUbf5O&Ay-k$XodkHhj;%UpDtpZ~J#v}T!~ z5(sedLMC7JWSeX83piRdEUX}c|F*tkW7T}bG-A1c#qRptN7o~uv<2(;=>qScCKIbJ z?+5lzh1?H5|B~!J|NcZH^;TbATn=lq)h>MPM%UXiRzgNM8ddlo%IGsqN6||KpeCiTA*Er-anI%H6*S> zPQ&x9(#!@D@don&1tv&Xezoh|Vr+wXw#q_0OWdWC;WOOVf8io;+&wzgpwTef@sw=+ zWZOHc(f!JR!`P4+yH{RDH0QKox4OC|gG`spu(cTMWL0H4;Oaa+ov$o~)9_042RIX9 zJS)@L8D=mr6j{#(E*-dlx7F&yQu*@ffwnpyYPGxH`s7N!+aG4M7pOLl=C6F?*WgKm<>Yfsfx#=vQQTyaL&qaf08Kvx)b= zYc^LYeT}rEk}0$=&6fYMHw~T+8M7J{vzk6;YkOIBtDGVZx@yKye)tFb0$-rNMZ}ED zeh+W1X5V10hCc%59A7{n&3S(|EsdXdEK^J*<^$d8zf-`SqiR>mreb-HWjm8rbaC`M z$zsraY*?#0U#<$oxI0MwNd^F=k$9D$i>vb*@Ja&NG zmtg%O;g)YiJy&tW@ekd@rGpmFOB^Qb$R0?h+E=iq%^iH%w)%h}h(M4QL?wJS_^u1ST-)H@Dq-e0rDj}A9??{npDQ!U1P zyO)+i)b#d+9v>Lr;^4S1t-cSV$fbNE%$+ytIlpDGwISuIsoc`7!+*zQI!p7eG7M0r zcX7p49q~3&tYMs=#Sq2(a6P42FrZqlmWtp}KKs&19P@W)JE}J+=v?5OtqD525K^`& zzFbgs(#jZY$eeuOh3HSj=gp@3#aKX;AL$TGRU6suY}uRl@>h`X9wH3i7|9m;)B-)i zE-0WLLRNUne!}9TqdW4Imfqpa2Bz^Zne-?4Ik+f|RLZ$cg)i z8tj(o^X>HB7+I24~D(aNxvEfoUJSg5E5f*iGBw<^*_Y@HmlOJsk19XWIr>{qmkG zh6~Iq5_Nv|PMzL#bd`adH~v;SYvknNhr+bm7G8iLL2ui2>u8xSxwtpa*Q7!evnUC$ zxaHr59LZ2V4~~osIV>J$K5A+UzH`wRH4NCpy~ShhtxIF(>te=)0Wu9mWJ-ljRV;-j64R^8S;jAH&m zn2trh^F+p2$l%yuJ)+CMeLWC{>)401q{*?wQ;2E>}Z&Ute|Taek1~P13@+FV z2Z<78BPvq`5g3qHVIPlN%-KGBr#)Nwx=3|&g<<8Lc21y~J#VN=u!K1~YUa1MzfY01 z)b=-msCj`)<7yfE;V0u&3_jKy+=M9Xh)(O3g5O5beVtLx;B-oqIRBoY{V`90bXwP7 z>AqTg=>e?D=ybUfw?9&r>n~bs3XCK?*flGJch3>UNFH3>y?ER=>8c`}u0AC!>FoNO zak&;FfpfglUkYpy^KRWKOvX@_qBf^TM0(I)QvgUeZbJCmjPy6~Z>N7JxMr(S@qI#x z1D1q}T{CWX4>R+X@rzUkRLkbi_G>kZQ=}9qiRWsH9~7lo%0ol1bw4sZ3w@uhjL>?= zlgcWAvbw%25!5vpO(I0`GY^aLQYH(yezWVIX4#~ui%#DlAL$2Su6GS<+H+x zzCZ*)R_p1hq(M{v7fsi;XS>da(*rXZ3z!5vNJawQF|{|&#yy*rNwvJUsEXbFLa|&EZ0yhSRf3{-m=px;2!Upw##^GGxM= zs7f=1u^JtTy8sa;%>murO4eghfL8DOY*|2W4TYlnDNEsoH94d*PO!!)7*A zg~niucbM5x-%fiRMZ8p4;^cCK)oe86Y=0)fH=xz*@qv`h{0|h$O8KYS>NXSeEuMH& zBLcYN#_L|_4@h=(wxdA0R%@~|!W$WL_hc(#4a1vTx+vp!^Dh70@GvzmwKb_P+4)*s zm{r5ELsd4S*+1FpCRMWb_DZ|;cz%1U+WL;sTQEF_R6u|6bK=&`weguy##2og2=~>? z{{4#l*Wgu7pbD?DnES$E!)t%HW#9|tfWAvdTsa*{|5M!krfI%b5K^eJ8YOm`bhK{X zf+ZNLrt8DHgyW;r?M|_PG*F zRb76zqLD!X@@#wohX(_tW>cG%TLaif{Q6(FguZPXNLKE5aD|VR~RToMO0`f<2J(K+28rMoOGCk(HGj`n|6uP!ySr+>wMG zQbsWdZ9au>eejCdk^9ceyLa0c23aIT+PnJ6MhbdiuUxY>jSc} z5#osAq-d=;?Fn+bk_wDkt%3kR#V4?^P%s`VOVI!agotk>PXko3My0H#LS(q?;@l+%nip zznk(jWE%zEC+K@U+U779Z#;|K;dZCiA)?`J+Ui}4JGpdD?C!Bc)6MK$kU*(c6sEn) zM49ix&*y~00|WYdJyE^&BA@2&4XZV!`g=1DY5B3(??^fJW`|nlU#dIXKBwEvy%fNV z#7NCcL?d+-s23K}chA1BdC#;)p_%1`R-8PPVtO1KbapTj%GiPzFrr-J>j%=CdIs&U zxjwf7pukC0jhZlMZ*#c1-Act*g|cl$nn8Izm|h2^l(u~Dt8)RMe8w!;<|#2^G3C_aI@RPU%l|?iqhC zo8)jOPfp_xr^|ghUD^v62Ja-F1MG1OduQKicFYFN?A1@q&Tx!2R>yqY~`OI$+ z=ZiA2?*&HgC2Q2`Pt}p;N3LL$$L~i+Z#~a!Ym*35+B00~e z(2+o`IsN{)$WUH!@@h6Vczeq3`wu*O+E{Bf4X&qu_++EBOxlJ%Xh?PAtxVVq;u5mQimMi zR143)jU}p;sQb%Otacn5Raq)Uom;&rk)#V97(m1rdW7f>yR0SZoS-cuIw|EctVL3^{xnPz7v5FXXOl&u{@&aC45^R`4-L?JLPsst-T?6RGl) z25F(GN4_7R<|_vQ6Da{IxxW+#T7q9!V?dJ4S`hkdAC`^DI}NHeCBqxlPtfXK48N|H zjNsWREADuG9vKSNpf=%sr*^oV*2HEa0HyA|yD()O+F#t*iv|^1dlL=k--R5h1(2qd`iAHRWCmqZQ57)d)vR4u9ArF;;rfjB_zWX!-rmPenk)hbwO?PdT zh>ylZ+}z)`nJqe{Wu;%Y3t&su2!H7u3$cO?n5NJYU;E@OZf0ueaH&7>9pcS(wQv`g z^-9Qni%$DWFo9kxyfHcWeWk>5t_$^1UH+EU+2a))N%Dor`va;wekjrcLdFyW} z5e=*E*-$~hb-##?FxN*$|p7O>f*iTOr<2X&#@~I4d8IOY!flUpQKYvz>B79t? zgRN%4-y=(-3wYm?lz{_RS~N(JP|4_6-7udg5HltYB7Vc(O-Av)gp&pd$%M}W{x3d8 zZ@Az<#w^;t28Sb2a;|sej1ZwP_{w!xD!%dAGTpt*@u}NKCOWANQE#!(2L`qUF+Atn zUbV)=8D)$0bAWa&?7kLfuF2SJ1R-Y_NU6K^dnyQ%FEci4H3Y}Ddrh^!wK(UQgvZCm zwb!3HUyzfb<|(pRZN3xu&KEE%*FW_q7EbE2RzUw`#|H7*0~szhmMbwNMy~x64}U?<^pql@>Wczxq0E39DlkxRjxgv1ke#1~hG{nQCn1Y;IXdq< z`ab?(M8Fh7XeENbzE-vPI$=n0T$I$}TMMkJNX7j+=a+m9X5$abHSLyuHu)~lh$G<+ zB!l2S8n3Y@==h~o)pjFvQlVlk>Nv=JfTMgW=QTJR=yb%yNU(ZmjzmQP%_h&_Z#qZkwLm z6ui+d|KuIZJsieBy4-xV zRh^gnkz{~4oo2=N4SFritESYs+UOYFE5+ibu!?lQn{Ulv2B*#B;nnr4X~JO^y1 z+DkFjT+47(LtHEFXyYD|yBKlV)D!-^;k1oS3#X^_C0=Hx0HJ3B$GC6hlf&VnPqa*8 zi843ISL9+GbkCwi9hn5;7&;Nxa$Tdv(ZPW$A9}c`RLcHnImsU=I=pNq0044utMqAU z^w2sf)`~9%+m8hb1xMQ{(RyXR6Kiy|5+30!S147w>CzGtXR7r3VLhiBE=KkG^<-a1 zW9TLDHAXmWo(*yfQ7}1P`NVfQAJDkaQ1k?-yj853Jw<8sp35KBAP?{|M$1__s}Ezs8s2WhWMcgcMVW(>P+1$T)*!y_#iRRVnhulo6aJ zGGjxLjQ#BeJMm`vTE_&*@@=gU)7~pd9+cSpnyr3>`BQ$L6{L#&obTQkEq6$x(`eYc z!zuOqNQDFa&Qw^oXO5!rtGi@S(>I+hat`R#a4+3&GITLH?4Uj@);)nE;+q?q#wqt9 z4?RUeyC(~78*QJ4wCno(TWc0i6V`gla4}o(-rMDIAbGf5sc_iNf0?lsr-)nlXf6Ev z>2?den~PgGgQ*1$5XVR4w8XF?%Ez=w)dCqX#vNj-?^N;2$dOhR4#`=mF+l$9_-VvW z_p+^0m_7o#H~ar+`U;?^{_kxR5JXB^Qo0+YLAtv;rMnxYySqE2yIBzd>F!v%Vd;i_ zuixMMpMhc68J4^Ep3jNrdCob8pls&%-nGR@*hrfCJ;X6+WHDu2`V!Imqqp+5*=z}h zhQ|_Dn&6VXB>i})egZpTIdgX0qFSd*TMmnH!%e+e^_o9a=$L7LcPlT<%<#`-2@Sl7 ze!LpMJ$ij4JdiI5H=>h-Q>Nt)&xe6LVFaB!B9*UURL;qq)Ds1BoNSyp5?kX$g{ae~ zVx_Yr%almD1fa^6V0<+RP;gcu>-KToO8Jp@t_Era)D2|DS_;I6*(a8C*#V;rDAyN>Y88scHkb|?_b7_aUSq7 zLvJXlm=ZwqCnmRrH=_nk#4tHo^!j<$!{tA^E6}$rg#7n@y8#a=<8uIW55dbjMULv2 z0rjz7(|xai9gbUK-mx|koQt_Kzj^}$b)yuc+>nvhw=CY1AG+qBqmrT}#G1tMb($=M?k(28D6q0hY)UtAzpBT_mYPwY1PW{StK#Jn1@5*&UCQuy|Q zW?1iV2x&Ut`u=x-F`Fn;_1mWg9^dD;P$Hg@-XaSg=dHK<%mYTF?JjvN)dL}upGmr| z?GM)MumOr@g``<0VqM=xXkLChP|sc#39li>?33*ar92h8)hF#@3$ujeLiSfxYA}Vx}3abVsm2+)Mv}C|q2C@pnO0pYk^(vMesl!U++39>oowrb=3I_t$b+5s~^4_2mAs z*@Iex0#2h^cy4e-xnwuVlE3?8qSLv*#ir6E!EM9-FWOf= z?^qxeeeUpt4X9q~7m}q`s4B3G z42y_zxw*46aEa3kHPHYnq5pPyTn%;Q-W|N83tEjz?-2NzMLog$`woSa8Q|3E!STW$WsO zk0BD!?^j<@37i$a2)2GlWY{C5kdlt-ROdja*4PP#zH0J8TmnOkTo?})KeK0zz0`Rw6HDZmf%V>n_%`w4? zm2H+y_wPcKDy7+h`K1zCyU&ojwV%s^+{`>)bDQ;8P43FIcZXLwJZ_FcDMz#WmE!b7 z__D_Pcz(B7e6I$*y+pbZ-JWkm&EFZk{+PA9<(}wyWmEa5KkPb+PXBv#4NR|B;vJ8*XPdr0>+;$j#yjE4T~R-4{3gBOa|bwtEXC z=fA&4RINOc9Jjn$fIu(Xapx;{LFYG2ysx&VsB2Gg-@0#Nr7k;?N^2< z^dn#mq}Y{M7Yu{<`7@ZUYq&nNk(?mt@NLQn9-jxTv3g|BFKZUvMb~FM%=M!_W_Dbq z2c}$d#NC{Jvp>mpoiwIj%uUDZQHWVTvDKy9*-D}MYw z?dO|>Imd0ELIe;L8%-fjw}kv-nT$``jo*YIahU^wd4f#NF?SNrqd>LiJ3G=F%xU2 zl@5Q3o}LB$o{O1PAqiE<+NSq+9yMX(0jik{75U*5c2CVJNV?ld{P&-nUawi7^qw8K zbV~yUtNho(E${K<4ZLBY!vN}J5OE^pnu&etKoftaF0T?0nG=1(QQLe-8HQHfvGqv=JP-182SfUqg+CtkSer7%!%?!$4wb8KD-w#P;&GI+nf6e zX19%`rE}U-nEF3$*BEFPEs(p+O|~j}Xw-ru6sX@3ydO9Ig3q##=M3th{bVuvJMpQR zhi}9m#6wMxG-VV})1M4Y*CpZF_scPDvl4(U?b=^+j($1LGGR3@U6fgoNt%lkqw5cZ z#|=S_nv+q{!J)LuPEO9w?Yxdzv{6Gf1rm`H?Hi)F`3k)qe4uHyaxQYntfh6VJp<5M zTLoEj*co-+|MScV@=x{l$3Msxay!j1XZCB~7#*cS&~bd9AnE-vtt|CUEn7GN0eKkJ z7Xp_jyq~VE)F=S6eloZ&I}Nbv!*fAdmuvgPS|3HN-&(Pj=vtMd)rOGX z@M=fYw|S;k8Fv8}Y~8#?tQC=bkc1jpXNv^nB!a4YE=PGWCkEV6Ua*hoQ|GMsH@+eH z2$n0(K-LiTy8Js^h|BSD_1n`6;2?6Xz`^5o1k;7e@=f@-)Dqg>Kyu=0zY;!fXGfxB zx`m+)op_U4`;x|~d)o+^v;rnqj+IBaSWdO!FuOU34z|Q7(e@|rUD7ovTa4T3O9iD3 zaGM=jTk&1cpRDSNN+|+siAGdZlWCwHq(!GPF^IK5;3z zZyr0~?d07|y&Q=^a`gywrynhhR1*ujzquUZk}l|N+4H25gt64^&)K<9+f%)D`IPcd z7WS6^(v!e7*8ur+Dq$w<7JOq&~^(-f;S7Za{SegO2{0={sMhC+w=+IUWy&P4Zj-&e8}<(mt4HNP$*%~)ci!PP?sylZ@6&ZFtN{SmP*)&}NDNC>gH z+ht25+Rgr4OA;&diC={jz1^*Z0hz*dlkm;zQ1Pzp_gZSdj@DAeyLmJ7Z;j?7{;5^V zy@oa(^==EsEoZ#ZX$F$D7I_=hX?#(qBfCnL+v9}VkBkcnC%uBz9zYmnet1o?cs>ZB=r`_%*S$gvW(3jF73pA97g8-ut{E2xe~8~z%vye~D|NEMcq zJ<6SJILE%%g8p6nC+u6*jsd)9f{SOIA2pRYSI6R37J9kqeYduhkAxXiBh z^no}KA6rerc+IJh9kJI4!98EP`+(%TDq6Ogl~B9na0ig4L4)J$Uh_x>(DDN@-7uhK z+3n(;H;9iE{4zgMx#)3^4AgdX=U&Y2-Q79A$2z)S;WM;bpziyOYolEy56qD}@|sNc zT^`OC&V&|Bdg8SnW#(gv>I_J&J}j@|NP$W}Z5`&VpMciF@u-ugKfZ(It_FZ|YKIBG zArVqAJxL8`YECy0ZI;}=QsDLjyS>eZXJAy#8TpWAc9~40ol8cO$Q}@%WebTZy|hs3 z$O03nn|00+tH{nc1(|T0)Jx*vwk1z$4xPghWq&$cyO=65M!NzX2F7?-amhFiv{M^w-OT0%ywL-A+IJ$R8>{~^L-pR_SfWR-?JaJ#Zv6za zgN<|6z5z_W+ui!;qX`@VRL@a&`g}h@^s*lb-R0sfD=u@L-<%->k5|fdG8W7u@~4Qb zu+y!o^})CSJHE-b(={~nm5Vzhm?L11+lkBDa85i#S0~}a-~t+P%B{#o#^!v}vo9Y# z%IqpiPmmc(voZ2449IHAt-0Io#PpQs93A(?vVZrZM5rNub!pN?DA1~IIX(bV*(28z znHvov$2qY7X0v|hUNjM31W*;8kNsUhdU^2my_#UqZA^00Mf(>_>z$-&Qk=;|UaV%i zm|zV9LgRluuQ*Z1oGPZd$J~3JSp$M8;nf=~S9_*l_@_(Hq~)$>J)5U`aGVz`ZgV7v z>vY%JmW-#A;05-sHg|M1#Ad1C7!jALztBlt6~GJA@@zyw`yXokh5TM+3gW;vT^^U9 zo6a|uGo_yz$kuIww=nav;e=sq`;<;rlA67dTPaXV*m&r;6pNAO1k~}Z{cM9c*tVGW zW%2RZ?Z&2OYW2lPG>Rz7lxQZ-mnkGteDNaH=>Tn05nA;>m0alTak<+%YWR8YN3}-c ziTNtY=Z6_Wt@?ERD~r10y9}wfbS72K9s+20)p`;-TW+}rD|x?UVy)N$4(`1KiMXQl zpJHM2U0im@(s)_&9V`N2hZn$8-IML@mjfS8y|zPcPxyR8YXc01^D0{!Egv*q_1a_h z^SlBRf((8Q9-o!Hyhp3~JLpp%a7IJy_uztsKZSPc-)OY!?LO3Umm}DeXFRi~Qe=#& z)?cMU|93M7dOkD(QZ5oUWt*N(zgQ|eS!;>~?T72b3D8Ow0B4+8r*`EpSHdFfd^{k!`2#ayxdTSmS0q{%w zmx=E0<1-(+;?A_CGnk&R?I^|_f>vA54(+J?<1>R7o=AY8q4n8p7CaD z@V!y*>$LWh2d$eivarG~Cg1&<2Q9mU;7!dlPi-0_va42KE%ykYz9J?~IjRPpO7!dZ zY@&xESG5QIA)F#O+cV43+YRL4Vs&wW&lK6teG*8{pWe|(l_{ptTUBc7AWx!?udq`$ z0(gh^hVOr}hp{6@TUtb_+v{5@QKjtzIU#rI6d1`hEn-b#RLsp$tG|Q9sX+B9nm=7P zJu!R*eY_K1Km?pWWwo@>0Vip^8!B*n%L-qiK^ttH;(dAeeTBZ}!wjJ71hRYG9j7yU z{L*Nj&R>K7U{U|-K$1>vgE=GRJM2CCZN~5=TjNWHmHrfB0p9f)e38xnh`V2@G#uuO z7@pQSX^cP8J%$+4miusl-R2r9w)G1O_i#Y#fOK4EaF2*Q%xaMB?lwk6@@)E5NhZgv zX8F*e8z|M2s6x%WlA}s#re*ixne^>3jvxGq@eZbPhC2yz+3qokqwNcHk<9~VY9Fof za#rvsXFxVm^D#MnK65UqK+L_YGE7y*GfMM{fcQ(Se*F5j`Z<7I2txe@uhMM)nAC4= z?~Xscv=|8sJ@Z}rdipliCiChyo@cxjT>~8f$PmgKCjXgyPh2!HLGmKK3b%K<0l1a_k zXFz)^b%KikOzD-u)m4$(ENpHqYd59L)-eUUS2#Katv1^Yb*(IDv@Iq&sALefFQ<<7 zw2LU96JxQJWafL@Av#P2(evP&qd+%m-n|>%b$*9>GKfGDy<3_0ny;D_iuNbJvf&8G zMtNK|>9FZFHkK^%T-~|RC@%;AD)PHsU_h<1ydl&9vHhy(YEN1F^CKXh|IAL+GcoCr zYdV?!>Dl4MUP3;*FYsH|!)})FY&pi>33`YMAV2!J+{RwU^(;{`&z!QfUV>I>8&&eh zX4Z0Nv3hroWXKR@J1OhW@URr-%c^MQ7^3K?*)2Y6V{Hw9%z3Wp21nZM~A9#W^hT@eh$coS+=&HZf zSLmJy^>lH#fJparaKYvk4z?#VxHFAw{ml>GZd(EB+ta;+Ga`n^3j!cZ4F}%Rsz^|R zEMc-`FbaOa704x8>;xz% z`L?(K7iP&y`XScI>8{sgxHmn)7J{NmsFSC}Rs+5s=@JVBz*3+&^m>{&6vIACG1arc z4B*_TlKd*89d;!n__|yF)C_P@s_Bq5xB^t&by1-2d7ySYnYSZL9WJ2Lg(fPpls|{vRn5ftLRlD%9edNBxmQL4yek>BY1PET#eGh1G(sJq zreobW{33Vn>>9D~5w4fDNe3l~I_{0p`C^7%2L@y(oLCN4QgI)k1T#5(l6(B}Tz~`m zuPYAj4NQqf9BbcvlkTp$&2m;wW;_I7B}sU+TVA=eY5N0QW*&p%olaGHo?L%mCuos2 zCntphX%5hlL3w6lS)ZA(cl+z2X7zh8`%`_oyf}a5vvRw2`E(O}&O3j(R>eW33S(6! zV!>aR7kN&Hi^f$rEz(!{@YvZQZMP-#PEG#yh#y{;qX8=D`aP`H z!-^$c2tw+uRf^B4&ip=zGs&w`Q8HQrv#%#x9E{dO#n-tLvlG%VNM6PJI+y9Z1?kMY zrsE!nfPLb2IRL3>udL0?Z*#uNxV{3rDID1*lrP@}B^U4O8{BN&3%!~T4OMzPs}g#_ zDn1CyMVdY zpZB)LgdWg0Q=K_;2>0IgbZeu-4IVEwV(NFcP*XAnjn_t#a-NQZo{(CzI9zx@OzYpH zqA~$#>1Vg!b!C?#z83JpF#q~RMyfgFKqb?YeYmEf)jwKDEABCqIRy)f4JV+a{Q`Al zJWHR7`;*UZ&0zdObSP3-tSrCmE>cf=Y5HRUOykg$$%vvc|J%1#lMmY7(GQUl`aVWI zs@UOkw?b*Lgl30nMG>8jXDy@$?pp8ks~BM3**_{Y8E$LU z7PNu$_Fx2JXyKEMDF974x?76SmM22* zNM<(F!f6PHHR}Wgv=&5HFnbii*Yg38kP)J9_Q{ha#3v+&t1%6lbX+lu<1}WB&Z=qn z3;pmuZ((u9BEamn)j=L-H^z6_xuPe>```QXHHIHqRJ=gJ$L`$s>5X$mGf(ADckKK8jY zr#oxD-eZRM>7}|uU;?N{Wt(nyT`cZRhdrKIcRSybEF8FYU0#&?7=Y9la>a7Ehkv%S zXYiVw3)Cj<=Rp}ssrj;&<+H#SPbWm^Vy6RR+)Y;`Kw*mU?*Q$`5^t3m2O;tIh^N`Z zWb?VFyO4*$d>%V(oP$QZyWQ^Sxv=lqAIrFJe>qlnv1qV98(o>t?LMaA?Y3YYN9VBT z_0Ro+5K{j8V=$X!t;aqD6j0){ZK2h9BeV=+2?UwPqF1{ku?8%eKcYSo18T`ML;umM z2@iL7DKvqLGg8F2Mk_s8Il0c;E#sJ?-X=ibrhsp~4kJy|8D1iU(h4t-mJd^OImWEm z$4I`HXr=A<`zQoi;Upc;1iM`?7ipYa8f(UB$5pQ9q~JiH0= zvaubaCjb`L%RqjJR$N$OcEP?)7{V^s(|cd37c*Yl)!RD4_0gc)Ji=gm&Nz?N`_|-N zWKt9gFmr|nB;;g27Ybd#ufCnW+xoT5P7!t^PRF|M@>hSVx9(pN2{|3=EZ_NuY(%Cg z|C~Fx&Q+^e_|7$`Pc5KuyuokrqBp;07UCp{9r_NIqP!XwM*0Qsd_LxD zL;*`vl8v$H;2Q1M_<<(W#jYzByIc|pIX#mpMTW4RS1(%T?mHA79$*}WPg;Q}*x6lb zH?aJFk!&C+dsM9ohaIB=Ib}ZSWcJxX%eq?#hORnybZ1NPpOlrV+We1r(Kt~{;fLrZ zyStRHIw$Z?zY?c6uniEZG!hGAw=^3cx*1KrkS49&PkqvQdVf2L9|?4+>Cw_vAtgC8 zre6OECW}jwDrtFlkMUk3DrC{cqV0YRw{5rhA6mZma{f`KKL^|cNQM6Sj;f^wA@Iw> zR#H1o-an$~!Tpg9P_?DpXA_%yMGO`8DE7Wte-^M{h~Y&udzpvgU5)7tptcKAXOn4r94Dh3PYw6S>1%+vy>ujy#{swP)=(YsX; zhfq6WT1P%}ZDyGZe0MYL)+%5S4-hE@+JhD+t>ix!$V|*O z`H<<kU?C1G1W#0ppkUycYNL}J@Ww-4_Gw*k9CglUeg7ixxU^hYcg&cp$QhI~#7 zgbiq&XbO1#Xc4AC1-PKgfkB}<%YGqXyDpW&b8>GG*wI~UH?-}90yu10xwg$Z_Q;}B zUI{s=LRJTbcko|p<`dn}QbKET-$)g+O>a9~|6A;8=@+Qn)|P3nhC-`^J( zjB(A$k>wJu%eghkzn0vSq0P>>9W8v~9+&_Ei^}`Zw zDrUev^kmJ$Rc#JPY9KkeRvC#B-Up1I<$r$v9)3_%UT)-fYXNJkrF?>tduj}Mq5kZi zDJ6*>&m{034)L&Cj*1;5^p1=)f{t5FU3q;)@*PUIT zZ+M*=g_iV7w!^v~T#iN`0g2y4>1hl|vci%#vas;D?MX`e3YKR`7nW%J6XkEC&%ccj zUGcWCDw0c~e@m1rEOBkc)#I2JM8bbX#KoESM=l`~eEA+-#n05W$6CsN^`@Wl+YeO6 ze1Glwgql9cMkOTGxD|ojVq7CA=p>Sen))cLEHUSY5=6d|n9`LIC~=mLydfn;;RD`FLaPd?#ki_<$PsQ~v1KLV zZaUN?o4{X2Cw(<_!{biBg?(2zx9|e%2y7{t5V+=ffG>G|UKI_N41PYn_mZ8zS_|Za z)0L}wbmu+QmDJ4r;H355N$YUF9UIdD@AS?kJo5%Jmk_}fyVuWU?gGVxut1_Le6fqR zNJu*dAGmehcjK7zjQ_&sA@F9i%XAGzBQPJ9Sll8Enpa1FaILYiPpdVM8yK|1%_$j1 zhXUdA&W|cd9Kn7Q=f6j_eZTB$=6Y@D)U;oZK4vGRCiJ~1c2AVK`1c>*Og93;%*P`) zofg}BJH9{QBo7QyxDDN0+E;hT+`O&9hV zl?=W+=@S+miolt3GNwOb+|ie0(EtYCxyjcH4juh&j8GT{-)q~-LdT6%2rY!D-Nii?LA~Pa@*V!r7!D6*WYN3R=#p)ba2mb}zb+ zW^&jz;allgdLd0r!}GmZSmIs1-y9q7N+7FE@fWf1Jt<`@Duu4x6ncx9B1tlYnT9s^ zY2hf@+G^bMJ`C@CC_cO$cv zXO(n#?^Zs8P~$Rp5hG!jfeawyLN-E*DPSRQ9%i*Mvl))M%%ZTejDyGt>tNJu`GRWh z)Y_DZPIG}g@75DnxjN>h z$v+A^;rpxfR2nNSSy|=CWagIQEa1^^JntNs*iHItOx0j}3Rj4fl9NcYJ&VXkrTsNG z?cp&Dn{&OaXZyHFaKdo}w$|mTkNv@}50$Oql7`Wxp6?Lda8zFgtbCWPLTIjv-m2&J z2By(p%YAr)Qh}M&&gUc80r^W*`WfR_FI)=44*x;wb) zapCCi4Mjng?Bx7Fnptbm-O*q^rf1+|hyNujMSO&d&FI80J7Bkn;Q`^*w~Ms7CTba(r1KI=@x2?7|Fy?5kwe{cbIfBu?@fVV32!BlX27_ ztKaHEHl5N`HR9#Pyz7QR~rfUT!&Uag7-*`Ts(M#*!v3`>VCpPSfnuD%bUVPl(etr?UD1Fu1 z1tqm#Zn-F9g+OqgCE7c;inqnDreA&zI$`f#?ccG(5)FSEDpg^HZhN#_%qpdhzVJ?N zhR+1+C{JQxJ0Ay7UF<@olbA_gX=klDJyx9w%BY<2vq{5to2OajnX?c?2eKO_j z>BqHrXSurp_4Ufcu-zwQ)#y`e7R9S?_Ai*2WJqmdp zjxG7J*|64JIy3d;lhF5gT_l@YeIgL{mBWJ%=_iz_G^l3CZ2hc@movE9-vTjkNIY^> zPSL2`-4CIExI=-GPTNY*`^@KDh+OlIH>`M>4Xd36oI5q~>gS7Mh;XoEjSV+hB}vQZ z^a4L3qLD3DYOw4BJgGje)tId^PF&ug(Pzp7>jzrSb_@0e3*DdupFD?Nd>>BP_zjqG z4fzAH>CIUKUa7B7R|F=FBa4a$R1uY>9qOU#R+diR7i6`KQH5L1hgpSt3zA7r>+}+n zLV2qEePq)`Ov`DQizt|bK4;b9%UQIT*6})F@2RAxib+-4qg;z|Hd0eOcGntZLl_({~;oza_}8AwX47?j}`!l4#GvjczC0K9a1c z!o-qzdFis5tMl2iH|L(+#VM)rIw~?DgP0qC#Z-~zkHXnMu@0?=h-9-8q7tZY15wFBk@VYF%afad3e1CR$}yV*Oh%ddjsq-?u?JlpsHS>ygWbpA;x4 zEsio*jY?|Pk&VY-Nwxm@#QV3rrI%OHl3rX-;IL% zCkkN9DaFRHL(DYqJ}>IrjX|GoEfr;~d0qBv_kPT8EAWJxV#ji-^WtB3;1AB1_G}Xj zM@&rCS|GSH2ZS{fc+_9somQ>2MFCj^yTgz-mEbLo;j_aqEqKPB9X3A8&~w-&VkS{nzHSN^Ekn%2~?JrqI-8G6m3jwnbhP zfy{v`OT^5>cDhK1o?iLcu|R`3A48K7e;>?77PH&sE<~0aGHwzXCXSy3_ag z76JM=1j%Mn$cDlt8blz3x}3mA&!Qzj2-8EG72j_SQ^lY*45{@)bIl&=uM1eF%?T24 z;mWQO!>XQ%{HgN8g+|yHZ+93Y@GFPTP3I4IS!g+75ezPY_H+8`jA0L!*grON*jj)2Kfg{pdVWe?#=fLf!8w;%fEU;o8|!x8 zTvkx1V(KiRl3ouQcCs;}U#(F=nn`^5&_kTf*tv0|7N6D7EwgoLMyFS@aZ@;@S<3-u z$?3_jYp!Sk%_NcHF0)_r7e6i3x&NtuM@1qy^cNJ3w;H6}=kqUP{+G|i$#n%z?cb4h zh$F&>P!e({_cn0qK5SHmJhMVMVW^^sMuEqee!aK?6HT~PiS=SUrE`{h8|yHd-ivZ? zh5`iCNt+#tSC=uVciC$ZZ3iruA0ji{nu1)cmJEH;LwSRwCq@CjPJ`t(uxE~r(q{X@ zQ<`_5-{|D`%M4eLp5d833eLeOmhUjVd`A=1?Q_*Mjvl< z|1GP?`eH}T*ZRGg;Dc7DlV;H$!2YZjYA6M~DgGtr-nVkaK6m5ka&FAC=w-Ol_(-I5 zhl~mhw|1A^N?5Mud?j9=)CUN4RjN33Xl{#u8FyGXni<*r1Ncj!kqsD^XnEeM;YqAv z{RQkxe`VHHYKse2c2|59^kt`6{^Cf;O?*6g-Nlr~|MGo(jStwebd_3FR^En{RBu0* zmDl4uld#*R;;w{~0w={p`IHpX+-c5S8vY_(6RjyDI2%8r%|}qWX1Y5htbxP694frl9P$E`c8v^aF%o&6d{5sT01PDsu~*gs7fg}2-)jUSidt>&uce**!1vF`(!=m&)M40$x3V9^|f3q;SdEm zc~*2ZLu8aJE#0Nv$K<5#mBDpOWRcp1f~oR)tx-4xT|_iAQjS?^%krS~bgAX0h%)&s zI1FG)nKk9uwIW$SmPojacNEbAAPt3iSD7^Ze1bW^tz_kDc`X4-rG`xxHKpNCRM}0x zu|)W$=|ubue(4~NDb5}%GLXCm6R2&E-L!%D3xjWWI#l^ZwAOrTCM_YU0mVnJOlL46 zDa!t%NFFhfR<}Lhzt}Kbzn}X|_R9oyt4y(!^{Fhym*0jJAiVuU?1q35c37Fy7&%C5Uz z-_)vgk?B_sISE)hT?wbtHse*t{_|lTL!eFd!2fG$5VcFRjamGV7Ng7e)$}6ysa>uFAaO}G1#;fDqjny_Xf#fLCW_iIMm-BGSm@hkwQ1nu~IS%tAhO31_^Owm*;oYV>3hw zCoNIhMr3KFWUW_=NqbO-sRta{uqEkHI5{~)c&NH&U>F#68uk|^4&Byf%CL&QUzomY z^j>o(&U@uaGvJ2luCX5>!4}_~{(#_k7y^65VNg56w%a0`;k+_LF9xldt|@gv;dzCO zFWh|Upl&Jj*|H1Z17f*}$sRj3iAR@Rr^>zAya|Uj=e7h&)k1UOL*y}6XrFFs{o~k> z-nlLHXaVaFROwlf5*j!gH{gpRUCy`hS@R5J%x`YP;voQ~6Brj@26E_+$kv=*lBic8 z1nQYihX9>SIWdB7hq>q?;WKef6(2>^*t7`S^eKC~pJ4pzlBO~73t;fM~&V5WJ+?wdY!h6Us}ipZ499o4x`on!2_a z?b5fZ`PX8Vf$EExH`Bfmcy9C#wwG&?U<3t4uz#wzaVy7uNZ+X43iNea@T?WIUGYn=1!@2K{zLTDUxYLmo$TvQ*&9+Z%I>9i-zz86PS~`v zlXuk>@sI2ZJXd$yMk1ZC_ZOZ7OY5}wvF#%pE5EeWNi++WuyaUHPZH;a59%wN{UCDd z8PMNb0dGU-P~PaEbt8#a8!rT+DbPy1!Eeq?BkuepuI%aixX)nFP79c=4*vz1`QB~L zTqLKL-*e&qYZ!TEx&-c@Uqg_D0E&z`2ZgswT(wIFllANiU{}72i}&fxI%Gl7O=vC7 zEi=N3VL`VV^sK=4bwmG;s(%c=FkWlOu=4m17El zOVO&el4X~E&ngvaS_}=4%70HaivlGCuye^YxHO{E^r}W~>uQcFnj6Z==fiwk)F}A! zd0`&z22RiJ9g=lj2+#2d{t{AkubjeVDzBl7tyhCi8Fa--Cn%$(uhw*M0-`~M9|C>6 zKKPZx6}?c`ytzbv7+~&SwUcSv>@YgWP?@L0}I~_w%013Oi4&q|D z&b9}RDx8v5=lXTerk4iDk1I7CZtKYqNTA3{l-D@(~(GYUBvv zDzV|aWkM9HC2Ca?5;DeJTJ^)&IijJfUd$GGLW#>NKf1l|Y%(`O05hTb48TTWlsQYG zh2@Ue_lcq2QJ9*>Ou0y0bT@`zCgc_tnGX%hHaA!g?X?B8455M1uh^mvrmwPHST0B-)sXVudugsSsvssNx?ffvN*m!wo zm(6$frpGUUZvQ$Jb?yhpOEu5x-RzTRx4~J569bnaCmV2rX1+Ri4rZ};)@FxO*xL;+u*UfawDjsO*VY92@HbDFn0(L4|lH*LxrHfldAOV;Tk#9 zy|R+Z&%G6}p}3aNcN0@o^S5v5s1xSFOMTZx`dEfR9W&Mas8a)d3`|K}p_LbFI&%~Bm{_&sfJ zuse|yZ+e`8gJqzQG~jTyu1Wv9r{X0NHb|va=awY}a}f*2z3RzPz4$6Td{hM$g1aww=<7rn9@~YdfnJ7vM@_ zWn*}wyHeJo1gX6G33X6=w$%Crwm$_Sk9s@MwF;cmfq^Bxq-jEb`#ki=XQeTfD$E`< zRfm~r_HM&0E)TN}{hs94eKH%_WEAJY%nq@X|Wlui0mp=_&y{= z932No`Ls=<pbr~CehfB z+nl<0E8Kiksh*wH^YwYY{868aE{cb~iYrqX(*QRmn&RJ0!S-&9Y48OLhI&^*!Y-$u ztLWbIcQel31w;iUu0BGn5P=Yz(Yc_>Q#yad8X~5WoFLP?=@*mB;W|LQ<<$9CsO^L9 z>Ja@r-LQ7=C&YFGAHqaj%hRBLt_1pc6$oo!IIo0E1{D&CgFCHS0c#V%;k zzkKR@eYqwkKKn|l!jX+_)9N&*&kP_Du|O%`T;^ag3jYF2l*&CuL&y07NgtX9s_Wgk|kk_3h$O0J%=Q$9v^ zTVI&e*NB!dyelUCn&xz;q7mOW{s4KxEG+*aQ*u6=e4PHWu15Bo@VUW+{Pf-W=r+4x zQPU{)!TD=Futhn8`-bsdoX_{yqgMZi`DkEppwf5%x4?&)=z7 zB8dN)C)NLd5=5HD?z;;BLvkHlTtLbVhXvm}E>)lBgP+;A1=!&qeI2!3Pe(OfHGD>R z`FIYs3eH7S-uRq`W`%9~;St}Fq+`;*I0{b*T#a^Tm2I(1PdF&1j-VQb7js@H{(4&B zmP+Z^efFP%R`&gUbA;| zG@Y_X!MKs2_l;oB%fWlz<|tFeOH!uxL#qzt&YU=lm%tVMj|b>k)q%e;47?z^I(MK1 zgxrVkz^~&Zt4ZoYUB81oVk9e-5qQO>mwrd&O26^8pDJo;i7^bQ{<<=11b9#Xy53PECbUwEVBG^)a$|3Azgs z5KLIzsrD40R%B{FZZF$p1>%%K5yWi2%Y$}Y@I*0vivqyPG7R^-{zR!dQ2i7~)b%KJ zJT3mzMB@5^8N`=Xl^yssY|-{)*(3fb&p$8SV1ezhzLh6CSAL?#?qTm`@L_8#Oe(y3 zef4X2())%GR@)=OS#Qh_d3d6m2|GZo1YABMse%ZAe23Frn-c&!ZK3k!nVZ9sDxPET{N`O3UO(O6t!k9Vv8jJt-Cdt@8iXkNKzP z$A}Ff^_w$R{`$-c3Pl<&eZe2A3|W#Ea(i+#E)q`Uc}8~z!K6P2=j7V9;c;qLg9piF z(-hTIjqJlRwYpQ!uwg@Lvbv^zP_?>|O*BvCf! zxJxOjeKlj_d-;epPB2U4Ar23a7{ikzBxI!voU583VQ8|dRou+5*LbJc79pRT8pX$V-y1wa zh;v*?!~cV`fiuJBi&A{5*yNPLSd4hd)JMX#)a;#V3gosOhrtfns43kOe=z-J6{*-A zVQ)tq@n+$;EKr8}1LTWBiAtNJmID*vd{$5x`-AH(v+vC*Mj{%a@t&j*+f@+>Ks&Z? ztmYyUIpT;SxKehAOXc_310_!yBVXdfw|*)dM)2RQlq|YVdHP6^+Qwz4IZDy?``>TU zqeEdN>0gJMN{vGKuPJ5A3?~AuOh0iy=#ya}yyIo~cZ?97-u}ZUeokticy<%(g|r`3 zD_qZ`v$?+**y+VHMo)LiH3{Q@vI^4swxslhK+8_LwvqsnQMhp~_bh|GXdWFzO86Q+uzy z*4pQ=7qA3n{!EKqpKiL?2sj#eoLpYHaFvUmbF#FKi_5&sLhCyT84}|RPw0u|UMS$zqO>`cqnZMR`ul@3&znbNpn|6 zOF{oBMthUDf_GD+Ky7~E8B~Bm&}-D43cbIO)E7%YRWx6fBt3t%LhYoCgN3tVAeZ(L zX@B0A7`g#{x9T;e9V;^mjSQxz>a?_zZ7pxksF+BLr#K2|3_|hzMCK4PM1Id*tJck8dN&OU zkl|*jw;kfxdSF#!L?n;!v~++2uhOX(s|uIzB7w2Q@W&h@9dg_=~jlLUIq`|xL_0u*V?+fvb&%570v-< zj$+GDKRr1`>9^#jKb#J3jx)4XrZ^jtKWaiYi-wA~=gP^9#`6`s5JnZ|QoVRYj7e#p zoM3NYotSh^xfGYM{_S|7@&5)~trRYTC1m=Yo>;H!mbWSf(?D4q7lz}5`D>$@+q2-FLHg{f31P76rZ^nA7~ZoOK7(c-I?$wotzj7>G5~Ln zj&Q0^i!ql0b~=HM!j@Kgxh1Ow39hGLu)4Gs?dRJ(_S3{SIFmR}DX%GA72q8?nM4 zpd3oNo$k39?z)H2nl*iZjQ#SIzo|IYvH(?wIrSMQjX>BdSMZt>1q@|?qiNUK9>+hrXx~% z2P{qcMj~M{c>DiABdH;sK!6$W8dw7Pf6+f&U%6|M-^ush5bVkF!Je3U%XnlkES{!D`6A8kEJgl0dmlTU@Z2 zB|CPb7p)Ef2>b6kJ;{;jR!%UC3I2RtDY51L#{wDTTAZ0L-Hu^PseC~1ky%pP!!B*a zk11Gja*#8vLaN)7K1Dq+Y&Vu=y}k$RO7iR)C*x_oua6Vq@6|2x<8CZju*fe7VxPfQ z2Vd$l`82sr7giACrvz(wGf9ISdTA|jItBvSGfo%KKUSy%AXa0ej;taE;!=^8lJKA_ zD@ICTYFE6)^KK*bizysnkkYTD>C5dN-S)N5^s^QO;fNDyirWUhH7;deh0>R;<<_d+ zPZ&n8-`3Lk{X=is|B+HmkxxXekx}Fyjg5Eqo06O@wzk+c$`*{{06H%_%yF#r{ z6jJ^**)6-5S_0TJdT!^lGw^cIsFA}1_qc*s1xr?I*(iD+f#*ZsdkXxise20uQE6#J zxH5CGhX0#pBFSfLY-UfPgsYZZt%U2^On8pjxE$jLV-APw9hixmn4v;~e(Xw3ImD^a z9)mm_@l(uH3x;fVGOhFL3QQ?h%r9NMjO4s62U%Ufm)+2?eO;lpoN$9D7P7+_E5O6z zZv0l}X#8A@-k;3Atsp9T9;Ohlfz)<^j;2?`(0bQ64)R0BH5;eRBI{Ymuf*F%WGipdUh3=ZGqBFSbpWA&b+Qd zH=%uvG5V*%R?k`(a~4EyX%LL(I!N)?vjPHLH%7 z`aENyl$rSfJnTxw+3?zOp8O4l0o=KMfXF`~X2OebE3Dr1mQDzvKLa zHjh~iK<{s*XbAkOp5(E|b=3Oa`)JO69(W^h>-eANGatnTfvpMXhJec&!Ip~YzQBaV z^?37Iw17?Als4>ID5w%eJ~2+dSVDNz?E1eFqoh9&jQNf}p zKtAFSnq^4~V92A%sQJvoqgJn#-2@5!pc7G`eg|HKsOwvdj*g8065%e;9LDU#WO)9h zX1DLpMh&F$^tzu7xCcMBO_hndA)G^zx2#0{Mi`kv2bj}mD$w! z{Nm&}pcwypDVH4OS1nxVx;zBl(&X1QqORF?R2;$q37WkLHhkV!V*I+b+?Le-#d|JO z#0X>LeA|+I8srziNalTX6W|iA@%#Hxu3Z&TFc_1XiT!7L;P)F{^ef*T6n|d525IMb z5PuN*`m9gD67b^iyx-r20$^jc;eLa=G&fHMz9w4`7J1ez=HZ(*0vXi#gs)@hbLce7 zuH~fUNhDP;zc4`}mpEf83}u=l=~=49i4oayf;IfdRQTfD6_O!a%3JpG)g}E2f%YUL z-IIhk=-G=zrf3L)D|y<~<(IY@lY2052RWQt`!gxJY-+N4A@tyIe=)gR3URk0_Hw^{ zWxmv$Rz=speRE{Ypd$G4-vJv<*C?^&eRO6mZN4NoqlR!jU^0||_@_GAg=3)`y-oqhE1o9^xf4U*lcB^9y#S$pv;LgO#vp?bBtE zdmQqa*2bv#+RhkpM%!DzYMVJaDQu?r(q-45A%oh-H+xr1WlqKj2tm$kp|YmSo^Zfc zM09t_vWThh$LpEcm=H5A|LUp{Iih2u3ub5IXWKQh^LjmaUY0%t7!%gTD%pHr zmSpHj*T0YdOq=q+J&)Pi<`9S64z!RqSnctQb~!@NYhj?5za;qeA2l-}2C-3K6?m~+ zu~-4fnfCW??9R>G(n=B!MIfB}c7BQ10=4e-w(Ul8bJBfkV+($91Mu=dDeKC_tWj5E z%0k6b5J4 zImD)<^eZY$>ury~@6VLST^48E+!n*mRvmkV5HZ1}T%IrZmgvu`@WwMHr1URsHuU?g zI5xU$COnOnuQ6;6Yh!L73(@^6)+3fIO2@82CjOGB-HaAAO8DYB_S?Ig`ds2~9JD1} z63-(7trPcxZV%wwC!YXIXmO2@YR=?}4Q$ESaeP~?ROZ3&4EL+`2mHAu`(6b=T2YjB zI;=LCF567KLoGLNgS}@qq!g_wMX*1*YU6lFGTdm64Q zPznW`qm1Q-7O#i~;s=iSS_F=)4#dPcdR}8`^mhb~Ti3r-PbV(;S8|EC7J66wX^r%8 z4UVe7#m&IB(4`DQh!JszkCRH8 zAeYJ$(YN07KHP!pvc_KAUhMy_>4cnKFDiqVMM1LF270*O#zLI)W!v6}$wbrbE-VtE zI|mNVB%-3wU$HScIC&Cpfah#td~bCqa#(0(mGW5tDI|xnoa*Ok^$`MYbq5T#e&sv! z;8zPdozjVAb{!OvDGDs6c}!|l^nKBB5vF{-*f{k`jbnEm9|K&y%gAi&(QYx9EL@K>qS`&WeF{{Dwe$vKs&6vV9D zBN-{5s?|E7Ys2+t_qPJW;f*hLko(ya(ibqh+KdSB&SJk@kA-twO zYkFtJZH1NN`}knggMkUl|5@aM4Ng=5Yq`FPv=xXqbR}<9wmqbf{{qJC+ZvB~)0dzxC0YqF9 z#PcT((~@xRcpw~TGN>t7W{PmBR z2?dTt{*4wuL%ppnd{tZM>O_;p^YUtRT`xcF4i`5iB5wjWXsnO|xqa>m=DnNtMOas8 zC*l0}`*t_r)Q#!37opkcyphHf)C2+x$ziHQ93uT@BSmhR)l}|3ES*ReBO=;}XtkP& z6}KuSX0U@eU3TtkPRZUx|L>r(3-a6_2RGdv#>I!gcs`!PcZK6%Z2!cScFqeW)8^|Q zd0`w88{2lXr7ftYCX(LHxhDQ^hcr*Z-^VZ)xoZkm>;B}ypB^<(D+k}WU;;N}s0Wve za$cY7#n1Z2oy$YSFw^kdKhlqFi!t4Rh}6iH&(S3l*4+jj6omsS5M)_X(@q9g}PJosEpZOpwyq( z9{BZsv*ilTIBhbv+3hPf%dUuN7`o1X;TyuCWV(I#)1VA!uq+4WCiYe7wDfO*Am5vB zF9&)f%KSh85q(8n9oq!W^&CKoB8ufr?bq>VOjo{_3M}&feB^8Sq9?pB|2gEYT+X1i#af`l3&$<&X;|(=uN}b3k7CX{ENwkWu21v zN0bC{x9jz=Lb2t>e_l4B${b2+H5B~ryg20uc1Lut$7Awk>BH{S&a~C%>hjsH;`Khf zyB$RA%)GpK^KRsgIU4}YzeItqmz#U9tE@@0c*Zr&*pHfTpG~U&=2l96B*7w@P%|ut zFi$f^sH~`#g?=*)J3K*<>Z4PyIGtx|47^Vqp!~bN5%AdEUi% zk>?g3vl7&84${Mi1#F%LPFJiX4MRWc3e4uX%@JW)hkv!l`_Q%b~nt$oygHHj2@vZVtLhuG@7b9{~nD$qp{OVAsN zXHCL!S5(8zd4j-Ai0ZWbKuQ>XU-9wHznPC|Tm7vVt$w2h^5jQlUSMRvhYB6FmFSP6 z)3w1cBq%7497dae5#GI+-S2H#PS7(8obJ^i4e^^=xkh#VrPnVDl}vMqA;i+|U1c+7 zfZQ_oNfxq|qk%~5^f?UfcHxtE#PG-8IyR^MOv+^-TK6nmxTOoe6@WWImHYCgFDqOI z_HP1gNv9qP=MD>A?ZH~niqq+(@!3o*A2Mk0C`x`g1zBoGWHKH#oH>{*kGuA=2XV`5arfT-bLVUbBs^I7Ew_ zse8{N=DtOtmyAC7#{sJdAvRSoXsBc}peCV!^B9^x3sJzhLOxlOC*OtBeDV(e@nLA1UH|R1-YGI|>J9oks~rJA2fRIL^dy0HAN{ow9J3(t&k z^TV5VSch)iN*&hMqt*H^qae8LU9U^o)S9Gq0Wh2K9xT#q43tiK&glo(DCF(?Uw%(l}l>_sy3Ce}$Ig)4nsx(J~n#gkuu z#wxfB0OOplnr&3)h+K#xtbXpG&P)nwncTHbtX^-*f-?PVZ$f(?e%5jg`73 z0+B_kwBEa7%A`2*x48u{1>qAaZ=?d}4ni2SCK9rQ{I=^TS%>3Z=RJ<>@vP?bsO5wq z()E?)_K%S7VTVM;b=lE^rm8?H_$sIJqkE6IH61%fqRou;`^z?^x5QyOpnGAv>hzLU zs4|PPd6;A6u#YKvHcP=ZCGN92|9#8-_z+} zV>rX@J?~^m{cTBH{KL4!H%?{osmbH-i#N;ud}X#94KOLn$;s~2XaW-wkQ#XoJC6+W^QM5kn9#la=d52qQla|=9PbwWi%Zk4`h657e*hK}E zPt_se_M7Jk@|!9;Iapk(6}0+HyRG6)(A0O@ri}QaOf5vi{WBk768HD( z_~X8lr3oS$nun%*zA5&t-%Ba=S5v`Y0u#%A>Wnd+U4w2lDbIV$RL_e-+$g_R%bB)t zBEF$?-asH)axNEs1i1BECM7sVXyM)75@f+fNkPwKN%fdIuo)7ya?gtI*p!AFSBU~u zA2ulSl;xA@!7|UFu8qOLyviB}=ytUIQUkJLdfvq2VtQ&3TCv!CL(^$B8Ex2~cJaR# z0?Ybmuw ziIK<buOf+;;gw@W%?Z%BK|r+JnZeh?%(3 z_V+ae1n@&`iR4rMZ+iDZV+W`|MsWwWi;1J-F#g&!0-aj13l~)L7OH+ryV<1OPa?#d zBiNTumztql0&1zk;7)~g!t1x7)uZ)Do+uWRZnk-Qt&cRLUihVzGCUcFD4eYjvp7;{ zuTIS;_px?TEe1dB<@h0rT1|2P3@nE2uE2QwA%1@+wZ1|6^}VCGllC9WD%Dn8@7|^M z*~v8ew(xKQiXwIBU~PMbJoY-?+Cu4T%GQ-@Gk))Yp|%7r@Mn}ch<*ZHEai@CA8QVz zbmxaKmLAV3fM2>D#?g5H^+UbR_N)nubd(sDz(iE$o5cg}%*K@Nl|jjw%Lge>mraEI zlaw9jQOl0Y8!YPTd$EtecGOT*gb$VMSg1YiWQHf2TVoSb>U6->bAUQ*FnSug@HBCE zf4}qAA#v-eMSJL7El>FLUh#>$X+mMwn)e;~6yLThoQ;Y{tIF^|M7HkR$TT^h=l$z0 zo>g&g0XPkq!mQJaKzODso*$9>%m8;%4auC{rN$mROPqcJZpo4D9|g(gqZ{~8VHWDM z+2ZY|V*-Hc2Zj>;a4Xaxfy+lrp$F(lzwRoN=|K1=kMM(FFQc2g(zB)3?vb;x!X2BF zSLfua=!j*yXI4v3dc1a?TAxkxkNn9%GdGA!I2_p&-nZmq^_mM*M=P0>2xu9O9|R80 z_hvIrof8U^tG)JDrxlZKtX3dJ%T4}}t>V>rmqIwi@_+tPe)D=Y!#R7_2n zagcp%zt)sLbhD{GbZJ`L@8Zm%G{#P~mwYxpKl085J9@LUZl*Rx`sZh-$Own=8bge< zCRcj82F=dXY6l28$3bfv&^qcbb|a)(Op(gvGqBG&gCzSHs_W~f_Hf=|7GzxB3d28J=w>0Rot5$t1EDhWP*Yx_yV zinh^~X4;C&sV4V&MwRxrP?S=VSQy3vsq(OkT7D{2M>RmNK4-)9kATedqf!o`1 zA8IJ&(`{d%-(fj4YY1<_KfsxzHN0pzXgY3v(%;z~{02!lzVU9b8?4LFV6Vbzi)~Ow zOGRjwc^0K@WR7H{Qn*urg{&o^Ht4EF<@Zzy)qt}(pyAl!fQ!3-u~tJs!~Pl&g#xd9 zKt1|ki0_74Uc~w-z?7;IC+|f z^1eSmXrYk0BLi5N1sUhmuS*zV?k<_nqc~_Wzx@e$n3SbPFl&xj@OCRmGbe>{!v+ny znMJMW8JBf3>xaur28_%s#Y_BYC)0N0-OJDEx#(uqW2xQ|qt)wyv1B!q-+$V`@rbLZ zb6R%oPa(K9c6V^5i2T=rBUPhvQ-9NNs==T5HtAS~B5@6S>?kYz_E>GB3ilzzXM%|S zxOY03-K~RQ;c1;~eIt#-OIv_hbhAvwRqGBzU+XRfg#_}!^k({Lc*(|A}|} zj+7~iFp^*3C><^{fYNclx!Bz6fM9yb>A=vEhURdtu>|=w4du%((M!bq=wtoSQfXJ= z-}y=5#mO0>&+0$Y4{#52U-1+nu5@!;tyJQPd|FG8q|&}Luc!s`i5{CR=hqi`c_n)z zceezdWLMlLhJ(n^T>(m`_ zp~9Q5(O4X;c5$2Bk2{Aocu(qOJW6V&%t}>gMGPIF%MP~0_X(dbJur!x()nCG`PRC7 zczPt!B9FNN(?0|I>zbmpSqg84gkWe}NZW45*QL`}hWZkmq43t_6YD-UIk!=|L zWDJ&@@5bwupzfCgOsl$cgOb+sj%+_4OAZ4eFBF{7v^xlIntz>rKZSgqL3V56Ay` z0a{snpFAFDu9jVijnlYUXVozTsy;&;82(1%?RbqjL_a?A^tV2;E%RDa*X)0AC2%43 z6-{n!k01an+a;aHT^EJ;kapEC!6Wq=GZIwZGZgTV37-CHVU*gmHD**wz;+1rc=lME z>^7)Bs1xSYV<#|akS~;A&58+ya{|*$XZqUe4|K(c+rQSA$C$r< z)qIiS>1Z6E%yC^)$Sl>n=Wl%G`seW>E2!T@Qg?uC+O|_&+vYD0R>k(7tjorawS>$4 zb_J}`#T)3$4>U>;gL~DtF1y-9Xb7Tpf2(YYk{JWtthkNCk&$YrE8SS1TyDu@-Jj6c zx{-1!8o~;#yu!{(A7QI6G^ckz_{^|?Mww*YHICJ=EB4I{Dt0#{qsMvFlbveVioeCM zHW012eL4hUpBZ71a9*fy+MatVqT^#kTAM3@Shh1g-|hQl1Pe!XSaGmta=+oxb0zpL zxBMP?;XAl=Ht-O4=7mKl>uJTQCVi$>k@S(zxBIBUCv~xMbg$~Xr+@u1X?SarqU2~| z%gns^^44MLlg|8b#EeHaV0%W%ffep|WwDSJ#A(&(NX0ZDv!f7MA1!m`y{9ZPjQQ5D zqeRgAt5Bt3y1mW&t-_bD12$@Aoa^E~>=Q@jiGros?cA(BL%B+HL3L}?Eacp3wmp>} zQvT^QIhf<`#F+}HSvEcHF}>U`;BN#)8O}Q@zYW25y8W15PU|`dZwgu_%GNIB2KYrp z1Zk)GjP3Bd>qXB>QZ3>7V7S-chDPnp!lTWy@RvacZf_3jpq z>k?1V;~}!r(=n@Lt9xL`qyLEA!i_!GF}6Zt2?wnCkIyFbrxx;3zQNb za4pwBhON#ITriz9+>{!pE7S*@u6q>ew7wQ9F4%75gHM>CtXcuef@-IZx_R}qzxLzH z-!tVTZ(YN-+4F&NP$dqrTPKE*tK`82_gUnK1sg0T_o zb$EWp)wkc*sa{>oGrK;}l^iR%QK8ysiRy+Psx|x*-q`wNJ)Gkp!x-3X?vEbTkEIf% z4kGKF&DG&zu5`*(LPXQN!toA)Cxx%)b#AEs5SHvw_4gH}piJvF)3s~;IYj(VnS4oo z1?($78gKUTI4Gn8ngbchQoiRd4)i|Vhmt&AeuR-kVA8Hjlr7=-_WFoBq%mfV8)$+1 zn&++r#wje{RcO1+kEA6p9WSxLFN){%;B{>dV;W-rI6FUkBxV9)R#e;W`@i|7j~7#p z8+?qMpWts-VJBS8-{SeL(m^Qv{8FM2N>I~v|9_a^R z`O$~pqsf=YeD%(!q9zrH`PwI3M~iM;UsJt;Chd&SP+%gP2U&%)7)u(@UK4se@>Jm> zKOZM8uS=r=a>0t)DZ^9SvFnwGR=XRQ?l*9Lb?d(fxR^ZP}S&na3Vx&&XYjeI|b2^7(XSwiNl$6W-wQHQkfi@wrABE_)6B z5=P9Uo8_nc3pwG5(?Bo9Og_J4o9N}|f=a!g?iTtWFT-3J^J(_p`uZXKQeg=2L^9r|MbUv|`z3@Ur0e8_VMa#n0 z@a_2oI?DCPwlq}s6+v&)^br{@eAbtK`kZ_Y7i^etGRtd9SB?wXG>(+CR#4o#Jf3;;bOln)9qav`v}@4Z>F=RBcpa!mnfFk zZyU8bj2P|yTzf}0vk(hW#3#=paXw(eq`H#iAhzgVgdZ{N#U$MvRCD#UII3SY>_EWQR)rJiX2>wnlvpsam`}=k(xK!S8$UU4YZpPCZ;kBrho8R7wXCu zN3hHJ&a}&QNk7=Vy?1ZKYpeu0=$jwkQO5+$TQz zeBMtKRMadS?cpDcujQ{7Co!Jx8O=Ri!&&&6LRl)gc)F6suLNbflVg+iixG%BJi#Tf zKWB~KCt(g!;G!H^^Q=R%!5+J3$NjSQFkH+NPKDq$_GY z*3rmu0lA9gbEfR~e2fSutdBz_s*B=C^Ax+8n;d-XswR27+V-ZswW1ys%WgkP;ql@? z<#}MGj`^cLyxgGu%1?dK;bB(eY#RR6OX82sH&h7)v>m*EbR5R+X8PF=iI#2e*Z9UP zJ5GwOjXtGmIlcdS$e#G_EBUC3a>VnQ>+mFl99vHuY)b@*WC;m;=Kl;S{}RLDqr5p~ z*Gmv}%yKx}{jg6xe1GTV{; z?o4*P4?n{RTl~k~^*cWPqQhO_{n)x;`X>UeR@;L-m(b1Hm~TpJZ^w;Z|NQ#{B~{_7 zU!%6frK8UqOUQnkYI{mW8gC%LCl`oLLV3HT%gKqNn|5%5SZw(`)-Onhr83 z5lXCX>KZnf&S&5!Vq(5DT{{ImU8fv*xxEfm617@>T)*6tRVwA3(V+A4maErYjP(j$ zDJjwGJChwPUgk&P-Q%VWBT%2Ky;|=lswl6DL=$wiSsvVSJfT?NGGR7by4@;9BJ@H| zlYNLe@_J0M@kbKBtN~LfC7<7m&+Z4}Ivgw>RRUX#L#z7$q;#=&;b}>FXoRE(&*tT9 zdzg@U8L3;N09^TWu*e^UVs*it3g2itZK<6x-#i7g%+V<>(0YIj6C9IeRTrG;-Obwk zc-Z)4aK1h6d{nuU&2eyl*7mR_)p`>=W!;y9iiYG{e^5h{z_8L|05NSP&j1EfY4u?Y zq&o9a)i0wEj^*KHxoSZZ6Ny16;mA(Gwb!Yr+K?HazI)aEp=_3?vp zZA5$mbQ6@SH>#+7{!EiI%uSZe9Npc_bhd$ERAkKH-;?f@!czVARbLGH`xI58W?6RZ z-;ulT8=bT(TrY?lm5HP-F`x?AtoVyZ-@y9^3a=@a<U66Gw*mDDMFA_vAjw%D_~i7lLkQnyO;?qnyn<$GqLZ{=Aqr|qy$ zCXOC$t1L)do16_>hGmYM>%XRB7S>(_Sl(7F-fdIg)bA{Kw9hV_{w-X%yY}J$@5D`* znexBU)6N;i=_PVN2SfR=op0ElTuPaGfy1QT#7g)P1$5b=QH)q#%bN^d8bFjm5r7a1 z?!}lMSb<84bAq%)pDOml-{6fV3>aMCh^3W_R_?|T<*Bv0`d<|&P-m7?LU*P8o}qz= z7&EgpF132m^WN<%hVkCMO!YdjgG#MGI`z1{t4^?svsu+X>OL@Czdw^*A$p3B2a)rN z^cj?yn!ncktr^Nv2n*xJEp%`94dx_>+q?5~2sUx6zg!kx@#tK>1D)w2Sfk2L^UW%& zbjpb$?U{UIC%?8-zt#*FuBst}c17mo$eVFe=KYuCZU`PC;Tgl*j6x)6)YGLo2A!Y! zl<15HA(eqbe`c6I^&U?87a(^EJ=({vOqF7}KfI(3 z4WzzGfJPyMbl9vT;f3q=*SCP9(HiXMJyE17Ho5DfP^`s2Sy1m>C;{b*-<&wH@bZ?3 z<$Dn?wDqQgsQl`R7W;Ot<5!zXRzu<9uEf|jMz&?q+O~FeO}l}3w5F#=#AKJvN$#h) zt!S%~%|WlFpwW>V-EVFMvMrA>XC*EnB3?hg%5Wt1MiGh1M;k!QTPgmXpm~9IHK-~W zM6(oKe<(|uERrY_cDQe)4M=WQ6oT#N?(UOh9hqntF%7dUF>2mm37TCza#I&^x-dcK zxUC;S?-;$-2Y{8#x{13pJrvAXaC~`sDfi)%#n>^j-3O^9lt1R$Z`hhiN~XuWpe{GT zfLJ1b)%J|F@_=R7EwU@;9EbD!<996Q z;}y=rjCPns>m%N`Y>Sn2%=i;44o+l%>v6zJ>yf^aT`dl8i5ig$c=)-rn{K_&ff2^z z|Fbq#`Yg9xcL?kLGL0*NXGbYnSg@DC6N95Y>_bkHlscBcJ|FixygV(Qv_8eN=O2j| z!GV6>*hMlL!tKvXXv%}C;}8@6wBSaAy6mhRJlspb5WURn4h>bUCK!zko9g)@i@piH zT4{dOt%gnaPsIIkd!tmmH6xL1LhrGD>DnR|#iu;TRZ5E!^eJw=Dk?me&ea0Krrj`patd5k~3rH=3u5N z=}I_i4X5pZvstx3P?Cf{I}ukB1S{IO0!g>ujK-YLX$)om4(bT0n^hbGWM22UBYm%& z(cPY%@w8;#hm)zP<3k?HT55}w9*qh;93ozOHo-8?)X?lNn)AP3c)K2sXe|(`L$~f! zV!jRSlC$I}yUo?cdcoj0@&5eQ+2ne>NLV^UmlWObcE1xU1h3gx5%;Br^&GpE*E-9u z2j;YbL>LVefDcH0#L$apWv&EebMG>8-=eTqxU9%pB(lY9fS0|loSwqSc*2ucM8_>> zoX2kQeIzQ66dOQDl3gl5H=Cx^ zvPWMq@x_c-v*pjJ3`{|q9LaG*`7t)VE^u_K!&*!^Wq3;L#v|=2H89>8RJwXlA!3%A znn50I%uSq+`GE~^xb>2QZ&0m6b2<&Vg9Z(60d#Zr5OZa1eCLP|i*Dt60`FdI;q~>I zZ%3r{T0S{(dhwXMSKj@|V33u)jdtRFh)~><00{PcH=^Ao7k>yjE@dKv3Afgk!vdex z?EUyJdY!2z!(@iXbQC^8xbmaX?T~dsYovNud_h{w9M_ANtb<7sz4!S=@t@#B+oU$X z3HA_jhZTWq{KfZT_vsLcg&LiyS>-CNbh+Pa5TU|DBToWzmAR4Amqyg=WuHRpcPO2s z`V3|%#2FVzN?fxZuwz%p`q;LsIMSB=1e3K8w6iU*-j2Yhzx7*MYk)#9I&J*wauQL9 z!{UBa@apRJp8N4s^!_33=q-|OZ-4*hL2a7;`8G5tmrf|qfuYk;0^-12O(Dq5e9pE% zQ-F9fVtqEI&A|ETWGdRxRoa^exw!2|Z4>rw=+a6<<(Bo-(=FdF>&IofjEpG*vKavr zI63R%-ushB{gAr#QJ>cQH(biq8Q9e#(xmuSCk>gPGN9Irpe$E$7Yh<8%xYmA_&)0j zvteIiNVq!bS2!Ja+CJb5Qic#I`bJ#6s`F&MYm!UOt@OAg~*Nou>z1^&>_$|t{EJ?I=SciEkzWu~XWJNQ;kG<8R`S;4Ld z9uwLf57FKue}RDY;7)6Z78WYZ^v7)1hYx1cbRV{h1?BV0jjSWhdDvxinpir>P@kHw-}qP7f@t~Eo4XO zZyj&6E}h=(O```2$(b?>)gq!?7$MeF*?;-;sf=^HEGI|bE=Skqmu{6>FODrr=pz(8 zK1i?epiJeUcz0snF#Vx`&H}x==su= zR8q^gf7K@nE`RfUKZ{dyhw)eAvxW8HM1l5P3Xi_?*Cm^~QjXl*}JaKwztsQ?qDd>$cXLGo276^C<2O&;tjXrbwIyeBJ-_peHU$2)d zTt@9&U_i4vf@f3p0Q8*>f+`9>bDyq{$%7Lxy7Lu@dSFHeIf{97XoNVotm zg&lftvs!S2A7Tf*Z$g)<&ioxCO5l)comKmH})p4)JR5hqwzHI`BaG6LS98N^J}$7Q7{Mamu9ozf&b{>G>;T zPN*PwUQ2z`QE1Cg##0;K@Dv3UBZ> zAx+Gr4iCGS^_I{Un^hTCNtu&14$)kV6W4Oj*qr4Sn)wzwKE##QNI!R)*WI4`I*HMk zamCsv%`;T_A(Wt+?hUuaI)7~OT#sxerp@oaA3Sd?se&@AaBy30J1&4MfdQ2?*}-(B z+4j6N-DB0#S4|JS;ZWQj%NrW@n-S8b+U}R~9eUO~#lxqUxqOb)%u-G{P;#2{whTZ| zESAq_$-dwSsN#if<8WFnq|!fIP0LrgMZ`1m=o%YN1w6qDHLeJVbz*=nQyyN)tG+dW zXu_4pA>8mxKr}utb{S5*qtE%}3}3y6^%mtC=(5@Nd)`@h{4i-85fg{d;)8p&vX6=S zpKx5ZGt}#zkH&s^oXgEd?X|_O1#c2(5}`}N{YBA9vgbYVIn~@rUhZPsn&o=`k>?tq zQg!-J?E-~X3HY-_iGDX&uIXX^j|Lv>_V#{6ld^?1yzpU{6o+v`@xMgW2tcyqb9V zpk243HmhoH7Y-=spfT(vVSgW(TDV$n%%MZcu-kUScT*5Lyjeh?nX)hWG7^Cffz2-j zXbdg_JBlQjP=6@BJDv&ZSjj5WeYRAA_QAJ$eA#%#Up9Se*XA8EN!F7IJeu#D;viuX z=f2?l#j@xIhAYnY~7BW1QS1f(%`;X*OW@W z_5w~?H>t#P6!U4z^=HxueA2y2-DNmkN&Shq1LWK9bXX4(`;Gva`h5I(-59@m#`jO8 zVg5yZ^u4WEbhWv{!mCqYG#@vlDlHvzqJ+)G38w`}s#*yNOfE;X!Niw0- z6kh!GZUUkvzUY@TVX5|+bQ=`7Jgh>;bKW!$w@~sd_AWm< zz5}->_EwqlogFr&o!o3Kmm3%|N-ANV_3$kVX2~!1nVUg_{3x!+z5xbJ(T=I1R@}>@M?iY=*Oc>n!bT}Kgr(`;`QQXT>>a` zCE}$5X|OTMjV`t)a1U}=;$OhQ;;J{5OyO)ZZb~V6UBNuaHW|hF$7kw;JB8Ik6J2Xd zP5H(D&9c`0QC!pcZQMj7xGKjWDr(1~AvGaZqLh#W=na1)OTAuK@x01u1{h0srNY7e z;sK)J?0RO$&6md7xRW}RR}kpsy(JdImyJm5SbXUdK#5ROBme}C)p5ySztx_j)@4Oh z`10Yv&SM43%nSoEha{yjxr(6M(0*`4g?o-({Em>_yxvUOkxJuDx;evQa%)2{qE|V|y`nUz`_d~W*=EI(HCa#| zA8Nv42FR`tqm;;2MAa9B60FK==15g_j*gBn{sfM1^t;2>JKlB!$5{;*Z^ex7|EB!? zb}`8_p>57Ev(|cjhgYDEbcRH=Bb22Z(0M!=t3TLtH1QlxpcZ2Atm9!1trr#9eFlSn zeXX^*`G|@9|OgFB{humD!QCjqb3aR(Bt*DwJrj< z-&o5-E5Gh2I*&M9EOJwu^(6P~WMZqPz_ge0`3HnLyqhR`@Gh7{%+sp;w#?@o^0SsO zM#LY4g|N(wIt2e!THGMIN`D0$_;T1FKkquW(%cLSWaOMeo4DdY{m!K&aZJYFZ?j4RG!DwTFoyjg5X4fKk%cm2qs^EP zSmUe~akG4w9~8^GxKuJ1;RQIM>~#J~!lVwC(^`x^h%JW6?y$l~KrpVo>)X-|ty&A= z%v4xYbGrz#&e*&*G()ymxXJKq4_mmt=sc29?rDAGmJRnT8ELScG4mfvd9I=-tY$!+YVi zq4v~qL^msXc-W{8Jx03@v@DL*fYCuMRR4Ab1%PP02(^3zp?b~5*FO}$Zm~JAmK=K9LG4%b8N)LZ{tP@o?D&z% zKYYlM?9``XRkv?oKNt2?Lx|viqib~kBuL_Sxf9upKr9qDJ62%PPn`{_VCWO-Ux}+^ z6Bh93Yy*!!I@5UZh(dH~q7vu*qnmiM*Dpu_F@4$8Vk?sQCS@JS3SV1N{Ra0=6foA7 znlP_69l$&jPhb_S`-}|2z;No}Uq&G;izhf1B=o;UcE1@!Ta?ra#(nn2t zhKAmAagofbqq$-Ko4`p7T-Vi&UBJwzaO41H9*Co?aRa~O6T?aym@}%2O>gS@gVmdi z`l(-~d$y1HOqrmDI&Oif1C&Wer0Va;VQrmtL)raPkHAZ=lWqBhlO6-!G}ffP-CNdN zoTGtCRE;+98Qr~Dpv5Ye);>Jvuv{D;V*x}>N1=@Is$y;}B8FacL+|vY#|&OAr0&!#CzQQ$T}YZ<%MW+s`0UM*06e=vnfoyvf=YOqPUmjGMJv}3R-%?Gh}UU$CZ=D}c4mBM>pA1eqo!pGOgsJNbo>^)g^ z&G2}F#XYAldH23P30vPL^8!~U2>vN`2y2QnmpP68VLpBQ$m8q?`g4*#ajuK}6`(<> z%YHhx{1^|JO#59zzg*Sts~Hqn4_y&Z-3XV(L?iFoiYd{6)c$)_Uyu*JighgI^{ic;El4v2X ziy|_k(Fw@5WI$UzaO&%RRyKo*!?5`%Hfah!X)0Ec?dR%;k8wgGj&<*fvm)E4`_9cd zm-84iOA3i~lu_oV`#_>e<}9z`(&c$vReO< z!B35TypZon7%3FcgCF`AkZbxpiq}Tm5s~><1b)(NoUfM~ zVV-`^HBQs(_MmG%^r`U6q<0x@HAb-rBB7>E420;51=Hn5$gOU(tJ{FQkN~v_=f9-l zUscQFd^b;yhW&D2&N41P$4k?{dx~;-Frf;vnWPwxw&~3B={gqV zLmCSocxzFHI39dr#+r7b4;?pcTj_0%jfWL#nS_z!D=ys?#1VhMS7KwH9QkqH<@@yN z1Y#l))MV;{j+TiR5Ys(eyz>q z=GghBmJla@f6y)_*rC<`LoOv_pd{v9#UklXn*sj4ngjkl*PX`elPr_iqqdQi^(<<4 zjoPvG5#ys#x|GzhoVerGkd2eW09DX{1rAeN{1l0W@fiu|M^U(TjB?47+EHg?a5nXmk!&f2CXCW1VBluDP1k`V!Pl}lo5MnN zKKWfildc2s`XI}BzWs`sr;M+nu>Z%`amx-ZZRxe&Bt;r!ZgBDtA}SiXcUPcQ{F2z6 zfG+zcpp8tR4c^<+5N}WVb4m+OHFt%UD{aWo)ssium zahD5;1`H-sle^|YtJ2OGD86IiKrk>z#HsL*yS_^6J|}RfIKWl1ajaV{_ZoTpV2|(` zZ45*et@=a8P!6@E4J-6x6>7v$NqcsQLqi1vydiK$52cH<9lALuM7Un< z&8Ry45fM>O35so)K-;3Y1eLgi@eEhHKB%R5NN8Spjc=oa#{M3Ae-z6!XBwBa#zGyn zpi*%g)igwPOCBkZnLJV4w=RKa49kO9!a zyV3B>ybebTbk8cXq#EuXbJQdxk&pz7B45<^?V()Ni&Bsahmh)rGpC7T44L|ZKrj#} zCT6f0%H`~g76$f#I|>pZ%EhejHK}lj^%p@dy~gaZl-B_8j~j}al(&iq7p!J#R_3$zi~P7pF0VAu(ZHOZtWoJYj!Z!Pe9l|nhq=1p&unOrEtXSD zz~8ktW00;665ZAZJ5lkrn6n%-{jB9VP2`KKwSAT$*WgEMBPbMBmvsHvn(1WhtkG^Q z>hAaU5!+&p0>2$}^d|0t532CdU&JpYIR9Zty4qJcDwOvR%YVM{G|(> zl?cb)SN#{C+p|&`cg`?Fd{K}*L|dA)4y!+AS*6fm9b%(g*6tkeMxfy+^AEm%59T$3 zCN08@M-}S9?Yhmn4*Ff45(dSsElRK%fM2Ig#Vv|cIn)Q^c0kcVIaMBNIp%J3L`27j zbLGaBgRy+{J2#<3Ck37Zh;qA@KZs`3qM>q>KV&KIoVy6CfPU{yYLH zpyII7Z7zByxc%}SaMm-KY2;tO3^xtRE94T`_a|MSpZmQpj1^IbV%C~Eq_Yht(t4bn zwj_GCwOltCqGia|#Z9Et$7Ns;Meh_i#sPlDfXTB}E396Yn|QHqB=pZFQlV%;^kxu% z2uzdel#@{+%%GMpT$f_VHqbVeMZ04C>}jw#u9Lj&Pgqt=XcNfjO1Y6YtiQ&UBWccP-yMR4Rs(Q9<01r_z_{)Kcm@K1C}= zKK}W1r2rN|0kDY+E+mwgyV{KAG%0~0!Tk#&jKc|{b7Mnk+f`qvG}s_8 z?!P_0^%WWe!6UdTI<9h;x%ep`NoJv4|I8%xlWDO{57Uhume^zo&EMBtP#cbGoUTlo z$Ew;c4|M7-p4JD~lz_xoN3u6Yw$3ebuxh#XW(_q+X?X}*akhljhk{@hXRN|Hl;>K= z_!?@~4i#aTfUOHOI%vrONGn=vX(e%5n~-9GZ#w}%JqyQ^z!bUVJO(LKt1>zyaCsf1 z0;PLO3=UZIb8{?>Jch67AJchU6Uf(RKflXZ4Lc*-EfokVbpHKETl(&pcCYb7xR(ln z%=6@lPlrw)f$DWq^%GS}cXx)z0TdqmMpQ_o-U!sUC-7c6rP0^3sPkT%Hgz|{3*fSL znNwWQ!3A5JJHfrsuwH+h7A^MDFg2Ba+o7W~wsa#d;qjm#eP}UnDpCGXD!3rT$#@xr zFiVbLsTC?nU$KffXT|itK0s;pSI>yjTc2wIHA?B`tFwhOu^aY)?XqCviK||y`yGXs z{7E)@wS~!h?f0_vpHIt$CV&o5f}T>jC*aup`UA=jf9kI2@a&cb#6fI1;x^H5z1Asv zFAsTuB!3&)DBOz>kly#jUDj?1%W_fvvJVP;{eg)IX+muc^!MqTpCDK}e!%~X0YXjp zietQ&6!_0ACq2`g)TdI#px5U(_vaZ|-;SycpqreB`dbTsghzK%IBWKPF=MjZrKDb# zu3)iQG-qtwO)*3j48y*)CyQ7}>R#)fo~z8xq~qET!xPkPJ>VMl9Bt#@Kjw?HEX*YfA;nm1&HH_6Q#2 zF7%44dFv}VC{p}~$0tgS@GxyBc7{>9O8}sIm$dI7u6ga;P-jKllP#UTfO0qSh!49~ zU0nSYtghZ!(;GcSE~$-(Oxj>=Hq+x`&Ia~@J7(-P>V1R2eg3Hdbw^34QQH+Ct;Tn} zAlISH^up~{ttOP9EQZ;jU%#7fJH9YM1~HVx`8i%PPx27bX$(2_KSgDvfC2EiV@}mF zvo5y;hZ)^S+*nN>-)liQ!n~eTUES=7O2ZYU(myjQMKh(rpeiQfQVX9@yczzzx@Yr1 ziP1CG{qh90^V^ISRGtU!)A2y7+@kj`Ax&o(`EtxN`;|HE zlxAQ2iBY8Tj*GD=5KTZBX)nsM1grJ&Q&behh`+CcJcM&SyaHay7wIMwfdKT5w{cAt{(Sp}w{J;0K6uZ~#Sx;YYQe?r~rTgJ`#Ar}~CU zQ>Lpf_xiATjQHq}Y7YDGyBdfckENz4O7 zIg>aUL^nLg44onmKy0<;AY3Y_eV_A7`L{xH_4|skxnmWRGABcyIkA@;)GKGH9BNKg z3mctTpx7Wb@dNv~wXCU?g)uxRVgx}oSR|h&1ZYjLZxB2hWu7Dh{`WyQZ(Nj)nf%&U zu=&x%9(}wZO-9uflb zc8jP^)Ib6J;r**e32ooh3!2SYe(Xt;_eBXi`A6(XQ-cz(VSD<23jX*%!QQbWQ+kP~ zH8#|=4Gyk!wrVJes}CUTD?2w#KVAaGY08}2nfq{|?hr5~>kUuegi*y2Z9*ka_T3aOqH- zSf@tV{GN1`zz2XHAUp@rco2^{(>7B%2^$AR$di7KZ`NpNwN<;-XDl&4hVGtvc^>e- zc;g)-sPWgFko#`X|9gdM^TDtO$JFu3IxUr`0{6ynhgm*@NfRH2<8IkMt128Q`_EeCA$QoCII<&AG*#VriWnpr3{LrY zQPyWxP5f~R8&)JsWb8e)I`DVcAy6FNclYjO6OydAG4J)I6x*9_w+lpAA^no{xD>?u zn1|!kBU zlTZZ7b4^%i4_K3sg7=)$rNMB69~5(TmvC1LeB^7crCWBvbZGSY#b+L1X6*hrLaimq ze+$+(fi3uB;QZS2Vy*2Wz!eR4KgS7_lSgNNpTQD~EeLw16yQEV(pPbf9Ml;>XkhRT z@kEOsm9lhI8r&E=lR0q1CM6C}!RY?wnUapd4HFr3xZfgqSA%lMB>@$leACjf7Y)~lK#VhVbFTc6u?)1B}tsPjJ777DoLU58_D zc#i7C9YKRY;;W=*0!(@MyYyRW*d_*SSQW1M$mgS9pA-c6gU~0WB7udk)J%F`8uq-m z+y1p4o_S}JWsifznqjFkb}U)b`dz;pK`;c+O({m8jG=|GicI3{^Y!uMqdu>O|7qad zoBQYE-_9mmI)ji71j6cd3roG^e+rwv$IBYX=%izY%hWD5lpQ5%Y9zn3Ul^+3cXhVs2hh8;9M&Wa40PWEXRd zx`mD22SOIbO9e83t$}k8_sRn{pmImpgTn|IfUO!^{CC`cW~`L`H8u;-(QD0EIkxdw zpeOFm+tdFE=G5l?xvjb~b9zr751I#;c41ao<2(Y*bQLhJ&BA?AXxX}mefHPP=ML8W;{@8P zJ)M%~$ZiQ)-6lD4= z0Hvf@gVQnNqaMq0ykCQLVfrji5-deXdQgQ9vtW>M12INb`7}Q$2F`gBZwZ)G1Q}+6|=u zqRiUQZYi#?;WR5V`cT>99Fk|J8cl7(^go%q{*!qKgaT;`qKvz>%XnP?>gcFUa6!E& zXphrT)=x_lH)%DMYtd?G7<0Fr5(8Yr(_n=Wu@?Csq=XN?s&wE{@_yswgDyBdYN&}0 z82Hc9J`K7*{N%twefs3CA!%A%?WAtDkw@DC{DrF4k9|^l0$7M^E$4s!(8#6@@tBj^ zaT|}ijuh;-BNk%X^#|r(wp$_tm?5GUD|_20oR>dfY{6gITs?=`aUhwW>53Lk`2NGw z_s8ElpAn>7npBh20E0{^fHAOkQlJfUnzj?V1Dj)hQT`#OsK7C*q|^7a_n&t>VSgWe z)U>OLxnFfpMf`jCeSU%@gJz?bwhu7{f5(i^Os>Bjn%lI}**xw;_qI#y`VIj2VeN#rFcH(#vPtF^W zFYD^ukBnS?Y1}Oc{U_@UZ#Hau}kH+M`bLn%*TugpO_+XN?lzTl_^^JnddX`kqd@AdM1??=VhU z?|=<80YV*cP1@Yl9u0+LgA^A?tiwjc@;t`bY5VWzJ3ODnbR52c6OVNUv zBViG^vX-_fIa$zlvz|o6Xxu{P@P7pD&hu~Gya`F5P>Tm1xg4hBuK;-k&eJE~0S@-* zk)aJ4mmZDR6NAYk*m6_qiZv%`g-`s`cHa8PtLv9%+O}sf4SBXUc^pG5)L3_e4Q>8T z@CSUh_FrR5u)}!0xBCjsit$sDw0u7maiHpp%U@Xh6Y>hhKi6SpU|S3zkyn_C$EsO+xNRxq@3d6V49xTr2Ao?ysz{Xm z5(X3~TnL&KhR6Ze`!o*q15m6~hvWbZ*H@Sh8slMw__Aah%PZAA)Gv`OsyMN16)st4yh?O= z9jAy$$h^&D>ilX`?F&*!2jfp$IUrQWa^Y^2X!7Bv{ zB;LzxM1utG;cOo@&DHjd;0QBra5~4-z6v!r@}uIcb%Z}=7WnU+FwrtCY;jOisXpt` z=r!WOooM3|K1iiO6+BJX%_ z{kK#W4D5{&QpfR^qWn=%so;TPrP2K2)Bq;g4~^`gJdfo3xwc~0 zuXJa;QXRv*Jhtw-T@#$6R{vsZ=6~l7Y51i(f^cAcSh`|H+0Q>VlZ@=;)j1!I-1DF; zSwBJXggouzaCx}K?5y0rYBtcA(>{tiYb7mTX@mzd(E2ctSrL>9K?kYT77Hs9-}I?q z#I$np%yH(!S*cCWNd;;5Q_T6QOAka+cUFU^UHvyMvkW(f}zC;E2EcUd)r%Tw8^;VVC zXAgx6I6$F-)qx`GCCTifV>)P-1!l~FXbvG0h-@u`sl>KBTl((IAwPvLf+a>M#bKcxmM$NK}DsyNyT{36C`U) z>Mt)uPWxY8QE_oCugx!zHGP-F?LtF2^b#cXWal|^@4t9hFv^tzJ!|=S;JU-*%8sBk zu4Rnp~}F_rbw22DO}Nb(%ZWg4@YUF92u#sAg|e96Ve7N zuQHiRKW6afXu>-4II*cwE)2`+l32{=w86SM1qAy zFgLM-d#*BeyGWZE$m6$u%^+r8$1<=)`NuP~@?hnLbu&lmS$?=Rns|bWNKDIf9z5~m zJ4gJM%);5Gz@ogv_VTwZ!MWF?ZPYLAS5~=L56(x<&(pxP&>v+}%c&IHe|CaxGk;<@ zxr&Gb#`Z?8VKHcZe(}b2VQ_eukg6lLPdb6spWrIQXgZQbdd>o;@_gRU1<~g-xWVt! z!ABAeW(N0ep@iDal!V9O#tpw$|J!do_Ebu8 zukivPN6Z$^gQLVt-b~(|H(_nzP_RNvMnN!;XK)^SA6%Jg6M%-lV<&nE3GJ)8d%Y(i=@Ra-{jz0)n{ zTKJMUbbldce!bAUUh<9I_QEz$&htK|u$75y5`V5C9@C0dRH?PYC$cNxV|cOE$A5gR z!GAK0~3 zGD1sS*-Ud7Ddr>Ic^cU@S`<^8z(1WFKB@LEJm%l3v}{fam*XB4m08>Zg{e|G1Q~W` zmu$EhUA>bO-tDe(b=^&PT3y|8^Xm&H#4Q@mvqDC1CK~5oKMQWu83=Ezik7lD$9vSa z`mKLp>Ghdb``2m=hgBOn!qMOR9jEv66_`?Wo0MjqM{Fcz-mPql(Z#urqg^jG-(}?d zOkWSUSE<13z`ti@L`o^Orp49U?iA$1YS7V^1MzqFI|HBii>{k0I$NA`D4k=MRva_C)?fzxcsP90=;5CrZ#!)yHcTHlXD(^^xm>xK%r3=5{CVFSAZ@n+S~%C)d4Oe&zXyg_a!n! z)0OIAoO}Ml1^$Y}8HK5y#iqCi8xwqmYxNG^K*%r&hUu-DL|?FvtAHQ!eN?aKFl?%> zK!ih@1^0_`W`W70(+B}Ge8;(uguIFY2F&=m3?IVy3=C8J)5^=i+3?nnh;aVS!x??h zk=*Jk*U&w1YmYZZ>BsLm#N>MEY*M^a&xIUtc{gESY&EIbt&pwLu|Vee$fxNy$k+Cs zkqNZYc94G3!<&w`4ui#5Jj2-XLG#f{{(E>|+$+2# zk;gFLQ^It)lKgRFFfw?eCAp=mC`YYS!5q(svK+d(!PWIOHM)c3_t#>1Z#zjv#x5!O zu0tiI9AbP_oVXBu!e?_wxR;@Ki=#7lel0P*iM2Ls;bq3dRo8Utgj-0pt%4uU=U$=n zotQU#sEgOz6cqG2u$lFmD{>cj+5Flw7Fpp`CqIVu7Cp)i)h|of{*8&8~wSKd%EKc(Ap-diL>Eal*%URmh zhqJzka&{=;T!4)ybIP)pBf>LfFJn?czc%RW&RcgV&!mx9-v?^4=4-A!N^ck5g`(+B z78A{Z>5!Y(O7H&~k?Friq`j6o-hdBX#O?z5vKC5O?mBFSe#wF_^YGQzORWF~GyIA< zOF2Z_tkoqZ?OuX!%n=3a>^cmflXO8Y`7|X#EP~*G$GsBiO zMdRcX6HdI7#u3%OE3AR7Z~-5+l?R*eBcb|i11W^K!+kiXh^Bq%R6%FzZg4Q}hm1pN zR?F1a*K3k}nOUZ2dpkq;GRChaJRu^`K-8h%7M(2d#hE4!`#gC2M+s2fq6`y7WzEhR zjQN%$F71|yqJi|vx@|Tl=gLP51xqoFS41*>%#i1o)%-wKiE*4!#)bAhm;d0~7eN{&E8=dC zE(DqL-z&#tM>0o#v~8Oel4{=)nq*rvc;3CKiyY2U+)!DGW%m`W8iUI+iFHy*4%TPm>Aofpf$JGES##@ zXOsM9z+t>4;tRPv{NgpCdz59s-l3>k3U9O5Dm%eFatODNS47ETLL9Y?2OZ=?MWg^T zhP@_gY7dQ#7yEkkq1du%`&UMm*Lxb#9{Y?sjhs(Z?H_+wrur^m{bD{pQCp7I`Z3~% z>n1+>ge!P=5{`%=B(kr$F)ijV!jZkJ_TId!e9vmIP{QwZmRURcapl&YcPZ{>B}AJ0 z`pknFszK_uCF6CKXMj{o53^yI1p4=y`yr8(aK_JHB?jYDYGYl`AoF~LxI-!;@FW*o zem8|py6k#KSxOqEg`h{q*H9mDcw!cky#!KC&CVLNT#Ia9n*f=^0n={<$et~Nr8=ryDDCF5{%y*MjqVrdOEIdf%(~um z)j8`xf0gXS8!Bp(4YjhgTpM>!f&WwZIz`Gj-bTo)LGop@l#N$=1XJC>m$tmzUxgG+ zRwl!fnAcm8BHSlc2uSs{2URUuw(UVk2gmss)w>OM2m47e=;i|V$Az_=h8-tdu#8)P z{T$***v^9mObz>cX93ixI|jRx5EAyWh&E3r^M5DSX38)j?%p5>z&f6guhQpf%Tp<~Zt}owo+fUFz*d!Ft>fYw%Q9?U(j<{ z^mqjgaWf}*ncN*{&tL9a%*qm-%^eeQ_IdxvLMtk{*uJy9>%;s0r}XGl;tBUv*cp1~ zm2+$HN3!)KuZN4aKX)g@?=AB~*a3XqT3zQG|HYT^fz<>(%3G2e3_gRSpF_j5a6+D9 zdX3w~*(-zcO5zU1l|3B&qnM*n&jyEQCH4Ece>pv8XYWu);o$nn_e>ozbR?m*^9Exj zwamL^6EfFV5~C&Kpkx3!6K&ReFg8|qwvSME@_TMHGJ3ynX$<5e<8X8ybdc5zd>XyH ztrP2Y+h(&oz+J1ir;bT<=Z`ZJ)bBNBRjk+a=$96By+8;5XIy_mK;}_nDzr6;xqh>R z45yuVgAyXs=c5_&_Ygk&dkFi-9hM2NpY0Z2AUlniAwPx6WLFmw0+?}0lW4Ia*#)0k zSibFmre#JE=&O;#Fejwnul8!(b7FfvfquL|gsTSQmmxJXJ~9WVu+8C&j@9K`azyyjpC=hPa@PVR-xm>U`e&-450N zn?Vi+r+w2H#vhU^2Vx4jHQys^qn5Q{_*~cPWS(y%Q8Gr33{M(01fD~m!c1bgRv63; zl~oQFYe|~^g&n(|2SH{JUp>AL3$zEJygLojsN&eSKTfm??S7(n=rS)cX^IH6W3vNY8&dpau9IqHUuDRHD6MA(X)nnc+o36Q|&Geqcs%rn};W zRC?Bn&2xOcaIi6Kymws}zZoDyRy+;-4gB|nsOjArGC`(!#i`BpCo%bp%Q3g&yWKJ8 z8*Pm&^m7t#?06t|N0}SAbz`IT;tz^Vr>03&zTTs}J>iiEV6*{{*QY;42UrwRGy`bd z1C178n>}p>6tuJx&6a6vnB4}0)`0J9-};^WLuS>V(okA3y~CuVoe$o$@C;#dh(`4? z&ErU1n#Fi0h;+6qm)rAg!QH{R?RniK78ajxAY5M>u1eIXK4+Zd0VS&9>I@q`FIoHH zZw5S8Pjid2g>Rl6_IEOPw#}{()~ouWs+$@eiTcpq^6|Z%!|wQ;*BXDNEd!Ib4m~4A zlar5Je&Ne6V@3t*U5=Q6t?nacX4WsqH`C0I&J=Q6!V^Opi?5C*iF2#p=c~gB>7S~- za(6A%%b!CNGDxlQ7JK&|22e_PiTOUtIm$4EOZv7xbdPzX#s2dpWwD+Etpyh@8*k$g z8yft$HNCagg4ie5KangX4R?B1`&L59w9HUC&-l z`>L=wxU|j8haium9c`2;LwN6+wEDk5HR2AQvXs638U!rGM zluTygY~g;$*lWoe{-+fCafQ613WqKfkU!eQ-mUMq9=yp)a(U+MeeL-8YmXVa9}Ru( zpU>3BY`d*_$fI1g!$VgNo$%Pap8aiH{JpbGG4goGhX;64RV(cQ@Z5XFfcAENV`tF` zJ*h%mx%jt<3Z^tKZuIRgOid@0P3_#6VNU&w`OQ>>cuooFr^~O+UK5Lw{eZ-&v96@i znCk*tH;Pk8#W^2DVTK=N;SLew>EGOBrc`$lSe96Su;14F4B;|48`}7VA`2>}EJG4A zyU!fwe)n~9XSplZ0~hb^g8Y~H7Po!-%jCMVFfBoYrH#d2?h8Vgu}oDe)Kk(UAjs7Q zKz;>2_u}YL4}5I#$%N$n?u)`=wBWXINrS%1!9iViOcS{c*Ds}9Nr>K$Sa99nQ_&>o zGpJ$zIEcxIIwi4rKCI9{%6hr>EyKR$hqk~%{CBL1BRnJ99X7j{a48H1p%P_S2G~^b1=Ztp`3FPi>9{1n0ExxSUnOtIk zZHHi-BT~>_L*n{mnX3*1Lgfu%(7jVKbt?@#ma@p!dlW8-?~`^iK>p9kVng3%>+eEZ z-4#*ZpL&B%3pSqY8CelHRX0J7UE!7}DF1w($xPkmdu#m3;Kxy1$^E{(#_1L8*QtV>LUbMBe{q45bdAc zucx!{O_KkMVJ6({0Ld!9tm$7)6CMxUH`qbEh#ZOc6s)PC?)j^VNhSN7-8GO~R&~>^ z9kiuCiE5imZanun_r>|L#Xg%UL(KOD03-!cCiJ3#f=3AwjN zTM%oBVcrvyKo|yS8r3vk`}*(tr&W18yb*8)Wm62T>LdyTz7KTe`pM|LE)ueY5c)h50<%jQc?Pb&$E z2uo_u!Ho0K3jIH@UuTIps9@yB44Ozum8XEe1*Z)nT-IdO_#2w=TW3!m#nK=EGw5b! z``kxZI@%ys3bLI9GkJP6p+7C*%-y-!6#OfzCh>2NJ4WEEmZAZuWG@%~BiWQ7`gk6U zh<4jeVsc%J3JVGjUc8i&TcCyFz}_`nD*z^2Jf9)a#6B5=S}=u_E=bq$1LRF=+ir_# zDCL*W(OHOu7Iary!4y11pQf#;Xoyh76LYIc{L|hSUKMtjXkh;cDw)h>&>VsC8rdef z9K#cPb_#+45BBY3doOUz33h%s)qGj9@2_7H1R)-mwii{LSwj=!+xz3^kM9Q*$p$wj z#@{I|rEQgx*gU;@e&H`m;%nH<&<8gvq4&l9+t}x}&CJ4t!Kdm29LF|jX!X_DK-IAF z8Fz0N5fMToiLcu%uC%gI83C{K`u5TtfIg4IF-0%Wsd~}$!OfbyoLn^9*(om2G}eHO;1WFEMcW9^H=WC4~l_@!lnVn;oPE_$HU#wTOwzb=?HyYdZub$of zguGIHKW2Zv>8(Gn+9N4-u-{DKP1R&Xwp04|g#-V+u&dd=s^!)ErWr}7;@lB)B%p`E zfy$ULi;eVaEWg_A0{rTWa9a(yjlLu>P|(KRqms`72gD{Q9ODw1Dg+)QS)r>zS4F?g zLzY3vvW4{+auiN?Z})TO|K209gqpaolyupCxn0 zhA{0DNb5l92445UGqHj@E$ydK>cq4yD3MlFvshd9Ap$%^89bG{nj&(0zT>hjr2Q3A zy#x|3XNAZ7GZk``{rxF0rW2;_stIh;Be>>M2F_c&2C|Q0(40Of9F0nmF|SVcsFkG! z1{v7L9qrt)c&KgtkFrUG9RRN2o{6-Pr@w!|=udl-rFt{=F=ai6Y*8aH01if-=Ty)1 zi)D0uW24Nr`cg{m{6fZ2dGy2BkV!NZ`)0w4fn zPB?r;WMIL^>7bdZoHWvJ%L)auOg1!XnpyHI;0?_@I~<^`0WS>5 zDl%crb;+0GYgv`$*(lu?R!RO@vD~u+6tqw=(^zf~{%6|_+s;X>>}|0!vo05L9_PbJ zI|6zy0o8uJ+maN%n$=u*GA4HJMjJEE!2ZE`@c8h1Xqb2|t7ym^MF8aP%$whK28th@+SF7?BVUm|{5}?~`51Qd$D%JRKU_Q`z{c2iE@1sg5Q6CCI!vDEc8!|s zc_FgrzG5_P^=fgtQLrn-`6h5N46DlnF~yc+mAhxM68zc3Tp?w0d|!qr%F-{j|0;qf%zEY&SJknX z&xBgqxuOKbgD?u)z`@Z~r;dxndx(&p(Pq>?Z4%@HKy>~Rt6g{F8V3=)t&_{t{|b4psHWI7jdq`n1!d}`nRUxfrXXtz_HS*nCEI@EGd9Pc`^^zemj#<6>emLE z8L847w|N5Ic)LQ<()tqK94v)_P&l`UKJ*aB;4}c44en2Nm ztd&rZ5g9Rv&;Ji04twlrtP!e1496hb4c77lhyncFq z{Zl~+j^^g}3G12QuavRw!o7gPMj#5r=cB{T(6N z1z3_!96P9my7;=l8{0g;gBWjN)wAUEA-}7;!g-(jV>BZ^BH$wPR0YcjOkL&m+y8Y*%W5Dxk@ zNsCxLN^8H&8C?cMX{Dhj#6ok^6$F7wqr9kXdp)g7$BGT7Go&dgEEkdh(9vqtKmY%p z%}5qf(SIl`^j|GN6bUbs9@qtekA#G%;s6>T2PD9QjLX+|0;em9q#`Z&c`z`4{U~p` z(AAz=zQjo(Y`{4ycOzzyt_zu$%CrBh54$e^0WlvCf<;qYWjoIjkC z4OJhSBizGoPKiuX346|pOrqyln=tQ2b~ldF4HwkXp)?dMD`L9KNw2o=%a5jv^)ADJ{*URdlPH zb7Z4vKQ~cEg)1Gtvy<&rshai9lf*uF=JQ>u(|Jt^@ZTIxCP#u?#(1o$( z{4qLq>{Ux#B7%_CroZ(>_3)9pNJ{}p(EK9ybF4IdtpQM@OL5v97vEFk%5+lu*HU4I zr@?|uQ8CN9CxAZG?W=5}R#C-j+A1Z5AcN5CVfW)=SGM#@0Ukk?XG-~*j=}a^VC&eC zEKpRU9z0z?)|De1&vO8yGST^iLQ)!}xkqOge%x!fsHi_Gz|UADhzPjZ*&-%s{{zsw z1x_}IY3*+Gj7*@4F_9dYU@$Go80(lT&vn{zU$ql;KZxHPiBpTL5!S|Di13JF*tDi0Zp$hBVT#J zip;?QCu#*Uwmb=ILTDisQFDb3nd^%-6K1CD9Y4Oag&r!`KS7fz!L`TWO;Uymyah30 zQT%^9^>@80F){6ANjj!>SEd__AT&I{ z0*l3DgJooadwQvL5s)O4(fFnBXkkmEXq6w2VHT^G#mp0?rf9wHg{&k{U>u60T%Xs8*yiY~FmumY81t&pJ7B$^Tx@the-*Zz@6GY^N6bJ;;7Xb%rK0HoH8Vue9oxb* zCU4eo$=I(P3#XT!6k)t!hhtAPsG05o5~#ar?)B076nOnnElDGrQZ+`;&gIj%1Nu#y zg?rruIJrYQpE+3kgk1GT&Fz1pW)}v4g7p5;S#*F-P`V~P2qM9N+wMuTdNPyYCaW)NFKFJ#dAYBJOB1ts6ifXz-$_D%-hk;A-luk_nQ#Vcog&1v zNdW@5*aD{qMhO`z5fqd}-WW3xFmCs>MINq>f=Z#mt)m99BXM8iF>ZrMTMg7{LvXWJ zUMjXx;G7jt>xwymn7MG*&A@;S_80G)4tn7<+`ZaOVnMe96_5ruFT88%0xr$E`c5qL z^?H$ynkSV1d}W5%Wy$e+xvPnf?dUr~yTc*}hFwRab{Zw|-UZ@cB$RoNgo4Vbb=f6duWJ=DA9lZ+Dtle7EM7LT=U}uj1SFPS5T_@)xx23YuK&A zv|%f5Aje8YHZ*N@zIDT=nYU9F9nGvdd-#y4{(=W2Qs}cuoP}mg93B-Cu@Zx9 zyZ0pj5b-bDncu_;>JYmXdqG#jhrIHaIAS8>i4 zA8$eIdByFx22UdBzP>C57c1S)2q8!;vkJIb?Xl~i7p@FKhB&X}os8UC) zXFW#zr?Xc+>VI_>l^$khlvT3B`~kUN@Xs0!x39g;&dkO9B=q5&g2(Zrv*5mt+%8CP*Lm$Yzcs)ls~qZJoHKF2-j0%!EuJ$1zq$JXFw-6;7_d zx%vcEwaF?ei5p!JH72d(GD&17i2zim1~H#G{-B%jiUt|uN`3^!*6D=eJ;-)~#oBE=+6EZ4GCwYk6n{ zXLD=#wPEhSDwZGuy(57u$R@caT*Su3H2@lu+^18%Tcj*LeL557?S0B}eUR0G96-U& z;dj1qlnHL8RD@IXu+EYt>{3A5ZTnd=)4XHL-HhgZ6UIa4Ed>e$YHiLrTzSmEfT&J1 zXMrBEiPyc9>!dw#yOkVw+qpdax7SE;*9UdW+WPaci1I|Jvl$=|+J*K<3*YJ%dzFyub0@cy|oOxcB}6d+#;ZjPLvAoMZ_c1`fE9dLM;Q z0Er<-$U4(|l%rwe-gk6pFhDz7()N&uXh6Vn>HC(Tij#x86QFj zepc2L(?gUqJJVBx@yBAvZOG9*zmT6|c#GSFueYl9M3mKI(6RPejaAhV3DHcam8a)7 zwdu={B@3*-ui%#D@y^mCPAi8_E9LIO0-oxAJ*_1ZMN^k6XN5;vNfUngJ}vQhG~WZK z%4CvSsa7Gm*BM5U1(J~a#^}%VO$wP{5PLO@Ix>%fd_0!b3qb$G(rB0O?tyqH%pd#3 zW_rsup2_g(=c4WsE^htrr6~Hgu7z|sDQ<^iZ`-;@=bRLT5ItR&3zs==E4D{`%Z(Iu zddW1bbm28|Dlj2)bii*;$5($9q;mBER~^N^UcCcp`Db6Obc!$%oZTaP&K=jv?z`5v zr#L%VTV!Z!=(I7}*DZ$g=O#X@u#9satcyF}7oTV>qtKa&hs2gc&MM>J6e1Q^h$=Z9 zD!f@cOD$72;_*6bDr?94=EtQ;`!~9+q75V-sbp+>4%EJ8S-I4(G1sGLB;<8{peSr@ z>M2#iV}JuJ$O=-ic{>CurnGzh6)0gk$KD8x46Th!(UOK=T+%>6iwwnH2e$Xo(pq%NJy-5MW z&7nnKC5G^l)C;B@jezQ@cg8+Fsb$S-W7h&pWq>>i8J2O#I<{ z8I|wbI@c#ZUlGNt2@?zNJ4G?WpSy17yH|Ot;S&)_i!ZJ5*KFJvA(9JvF1=Qm|C=lfb=Y3d5$Q$OQISuc1_e-zL4z`ptq zyh$PQz{TCk*VOu)`vk5!M|xGZHNhXN=|_5~xL?fN_^pxYv?;e`$D8Ll^k*wZ$$$2B<;hf)*{=h>=3iErAq%bm&{c%Vchf zJi4VFIr{>~>h_LW?JglVty&;KUsvDguzGR|mwvN0wC|eoYf8gUnRZcn zt5P^K5A(;5+42APMZeoWeb3d_t3Hr7(7Q%+oxSlol@+;gn&XzCD}3Jjk}+uXy;NWB zRqM=#0X>tTwmsg&t>P9bNvd-CTiCI7&q+dq^e-1iK*H3!vVv_4-HvYSfb?OyLKjxO zXz>ksPz#KVS9DSnVR|s15us-3MAo#DoS0?Bd+)eWm%FbLEH2NuP!^8BvLeCa~ik*HlAn#UbEvk2Rm_#JDzY=qVvw^L_*Kr8WX z3R62f-7U77`m&Y&;Mmw*4b0Eg!;Kv#b)G){YZ;L<`l=ua*@$2}LsN_j*jfoN`1eD8 z!U)-G)e_&(!a|cE5$Csq2@|0&3VxoP;`BhiAVx-Hqj60F6+5= zlgP?N;Fy}cX?y1}$K1-u(J8<9J23lngZJ3Y(YOSt@Gth7*Mv?R{c27d#9$(a`fpmT zJPD7+7e>vkIU)JYr5Q4DF7vsdfzNZ~51Y%1dds`udpjD;&YVA2DjQFGo- zJ?-p?I)d0Tzks}aLrcS;%X=T)yjr*uT>S|7?$?QHKbU!j{CJO=Kn_B0%j^Ja_ zNC0I}LtB@0Jl@>Q$_Zuw^vYAQu!tSewq?0sWcU((<~OeEja1o3)Wcap|3|=YtE;aE zfpLwkth!rjI6z9-n&`?sBLumnp&U%}1p1~vfp?G?8@-=%U{qU0%48fyaT?l7xrczNba~EZ%p_( z>hJ?235x5hcCCi$D(tvkmbzFnJ~y0^q2a$eXo4QrnE{0*T2OrD{xscnyc$njHg;15l~~hyLUr%FFbRMoCj@X)T7JgK>DZLfnJxmN0DrU}?pBeibgrmXl%W64 zyng+!=%yN=_lz!6)BsL(u%RK|cS;o3pv>xCF)(e)L0Wmty27@<>t1mM=XLftN*COk zs*YVT_3W5QbPinzj%pO3=0>RmL=$gG3e~L^zrQ-@8$znsqkP4%Ai+UFw;Z! z!Mc85Ve+)MQxH*m{-$f8u-c=3V5Yj-c{6XOxW~IDfk;ZpP?__}-I%4m{$xb(@CJWN z24F4vCxBw953oNjsR+&30j*Tc1OdzH*ixK0L&o6RgUwMt1<1V`URkwQQI1sg?`JY- z*G@rZG8im1;KnNJB#^<=)S!6S3f^VVvTs#}kbTDA?rv%;by_NqtUS@RM8V6`2a(!G zWDt^TWEJ}wmw~7{JqWzS`YJK5^LqPTdQyW~ddkQhjZ}ds1O3*P zZ7vc@>}D#jPT=~$I20Q(007OaFWBh6b)8we8&K{gUcSCcqo}o3 z8mp~2gGG)C%aB7$}*D2n|5R`fbRh95sCUy!Q^^>%lEch8?F)MMq6w?C#Pg@>RcnW8XgsJ^nc0 z-t$&fX=)#bddscwBR`dU>6cjR%J=^Ojxnp7KYYQ)Txl}FhHW9X=cpA?{a%4os=)Og zXqvdj43}O}$XhA(#QVa!egbXhpw$|&dh7VZkH$d(=CWJYBu9=x{JfSZA7}x2afusf$F96X9QB^wXAPd zz5$x~0HQi{XTs07PDwdqvfyb}(`)cQ2lAamfH7#C%)}-iO(s!4X=u5}D%{l{7_RLw zB|4_9GQ2NWq;>j!&JI?wXx$2WVajJt=>nt>GdDdr4JMSEXcCL*K!N#S<<;h>`RdWj zr($09aVO1#);s0r9N@ve**{gJY5{C~m^R9X*StTXgv%yMw*!9VK70Mpt(7!a;Yp^z21X!MDLvU!Io_tr2pk2 zjsn$YztIoxCVY`|SCXC@j>xzgZC%$TrA72r0AdcVNyD$$r(c+27~NH5lmEX18o@mA<2?d)=pFF@{K=3nj#+Ur;w70ZJhe1 z1fAjRQ&q=!8$d&T2-9ZuP+@^(zhLeS-X7vO+hud+%5bTJ=#{Jkhn+L2b!1=#F{121 zS#_pYLL)8lkp))9Js#WH19z9%Il))5d)SWV$m68mqd6<*#3#8w?7c_@#DS>2z5bXT z0AL4PH0V{zr>A~^X~=fqS)JTR?$sUpx!z1J*kX!=Mgu-v4?Y~|?Ym6jFdtMYdw!KX zbLe0)zvh{2H|5k-eZ@=eGC}@+A^z50LPOa~g3F})OdtxFHeF~r_8}|V!p!o*JbsOy z;@Q~z*hJ*t@Ra>;!R5G){MQfFj{}@P$KxCpss>ORG7O7Z)`aRqSOK1ZJz7KJtrdf$ zD>E3H*5!j_bpY&LOX@q{K@I?8iK&P{z@-VgEt7Hk945k&(<%$OCj+QKHydiCQ1iqH zWdqSwRg`(8FlG232l{>I2T?p$i482`*M3}L{M7s^HsdQcDe_8#nskXqeW(+&qg})M z3n~hllF&#muxTqe@SK3W0BU;`n{}fv0Ih$3%dJ$%;;NNCQCtGmpm~7rpMa=G zb@|ud_R0wvBt8`YDWZx~T*w6J)1w+;l0VDczZ&#{`iy85DO-Bkp83UuBmlti4LOe< zEjQ@fFQdZ&ZF{W|OL|hdc~tv>F^wKXi1?kE6S{0sXV*W|HwrK6eiADM!k?%Ha<7n* z|EH5*8qCnj97&HjxJu4B7|yoEb1>VLaB$)on#^$rdlj`lxAY-)?>H^ff51|MoN4rD zFofmCQI%E+gqH5WRcv(IztH8kMaSWo72Py^e%&NrM_RFgEgh19n$0(>Hj#U^HuM;5 z1+gJM1TzF445U;GyKJ0#gVqbE_6CexvU@o^-Xj9Icr8^o$%c zsIV9mrxp-|ei+3q=(Nfz<#gg3Y+>W`3FUNx19t2&UBLGgNsj41Ht)%_)HrfcvDo+y zjBO)~OeVm8_l#Ms|G|f8hMh+@c={AF10rDq`0m+yztv22C`!f*=-&UiYy$WPAhAtW zjpXDe@?-_#GN3#kh`1*}kyM13hos$p4PuKveRyym>u$G6si3_oQyoO}UD)f(kI>b1qWXuVM7+#o~Ss(Qc2Ykc=|h z-^);G+dre^9xj8r74b*(D$GUu-kO>jS$T%tXJXTy2%O8EWoUb6&r(Pyj80I{@Lvru1%V9Fz`b4?|faL^JA0(FjI2-GtKW6Qu8eB2iNUVm(YNNFGD)`1O=Tn zDa{yCwieB@b0PDC%dqE&utGW=%F;7e8fd?Y$>k}o$&4co4#Xp%Ol0pU7kn6wR`YuBE&E;r5q|G(X(1kjn2 zYT~#Mf#nw+BW~guPws=KV{%&OlCNGcz#{Z)%GvOcHvDDnmk1BWNSNL8ziM7uA@4pU zO8ost(W6Kz=YL2PYJZ2KcP)>EDH!ex|Kzbot5*`I-8hVd+RIv zE)TJixaoS|>fsNKcjZ|M8F>5Bs`1D|CKCkdZ{-=Z-QToKH$gOJ3=`!oHd4bp5AMX2 zsqMCQtIcQLvw37{YD&jD^^xds=~>Ng@6KOYrz86`F>>M{62Snq#ENL5ME7r3H5ZOK zo%oVX3IqRX0j|dn&3{79y-%Jo%f%JY)N;*f9MB*y@vZFd)!z|-zM-)BqefO6?z^kZ z8P*}3PdOR>Hmx--Ce8CXR}^@8-8u((Ypfo$%oVUoA26T%6G0O&+U&XZrUX*E3vZRxNe1N6@yx zrnuqtQLE0q>1L7~Gi*Wv#z)ii)(YrsbSv|D>%v^O3sMO;OT9QgWv{B2<)6`NrX7A8 zi|&$CsF4tp;<35BlvQ02s|po+rF-e5S^^QCJUOo7qWDDJ^Y_lBRM=u#D6| z6My2d=UFcp98KlXaXf>#zwvLt4BxMtKMr4(Adr1@*&4q>x}GaP?rtqGeqqpU;9%4{ zXY*O{Ys6Vc#*m3D?8)dDzN*)w*W>zbrArPaWt(t!(>dobM(!btdVfuK_uql-1`W7fX45=2lkz5dNEa zROD>PnQjMUX|i%P44?n7FyWLA=MDMIIV$pua^7{`03$TRCBbTQJKR6I)zmv3F(Ofl z^k1vr1MqUhEb!@a(EIcCQ>APh&m}5%AtKR3MhdIk8oTa0IcFE*+ck)n+ZC5J>XEd~ zsM6_yre~FOyC*5E%~b?96Qyv8*VTz0d-Ii;Gdo^X-}bKB?k%Xw7PMmxIN~Z}&X7pq zlq@CrE@diaQMfQxcSq{*tryL$cX1KFiw=Q=e{>;gG1+iTXs0`4hzJLBO+$O{VB@*l z!m~Q(3z62S5Vp3?D>VXUium|JUM}U4-hj4=FZs_tjjXgyZ8mM}FIZvD;+6Cd56k;| zu3(h~1>x2(3zv^;b+=OH%Sll%hCe8l34WR1^lRk(phaO!AThRPmz3}~Op^yz%c!S0 zeqN!$q9IH+E+H{7uH-?@>X9_p#wF2pJ^f5g$CP+`G9jmQREa)J_)D`pI~X#}HDVys z-9`jT0TdH8+=Q&$+8|~6cj|BVpu!^`m#TwjGg%rIy8=w2&m}WeIp;!Vb}zJwN%B9; zH~DQFH@ehQTP*%8WZC*Oyn6IjQ%T%h632LnJM7)?+jkSMtlS?S22!rCPYv?&v{k(s zWPAi3HRM4TUx?-CLuS4$9*(yZqV8kuZ|swYT3f0Hy&Cgb`F^e>Lc>L8-0gE--&{=U zfKTS=*&{$BUlZ5fuvr# z6YhzcY0XB1$5GjRTU+q)sZAPUtiHvgc`HnZ{P&g)Q1}^Ig|JALMXZ_G9@zc%3SvcL z!4tMwstQf^IZ(m4!=Fj8n5y(6w)IzyLs5TRhDy-gWK0Ysr~X7X!!Ipl=quz)X89+8np2pTa1Ozg^a8zG&i=Bdxvymy@3lme2c7 zqB06rTNH!C)tR|Y#kIdbkGt|NO>B&+s*1}<;!Jd8F)-w>Q5IVo_t^6-u}+;{5aLLSSVmS$ta}ZJGlZ3pQD_vzgKs^Z%Md7X(F=Q zY(AJ;^*{#ljKj_hrrTzfZ?6AZ=F!IYPWAH4fKsy88fw~7=90|71PV;VF>O5fh)@DG zB@JGpr}!>$dN@333t*xii)MR~NPi@S(>?E(mW?!jTJk)5PWBQWpGKq-@*bbW)gfKJm@TRBUGApRrAm~?;v+;4~Dyv5YkWQF6X z%l@O$N=rt6-9$xYoDE^#`-b@;w{jyK2##YPgeiN>Fdq{>BOx)dcU zu%w+<@WCs`rymcZo(Shb-93gMMHU{k$vxN6=n8p6rcs?47H&~qWVfZN>jEW2sf=!a zL$21`Y%9)xlrdM05TTGQ;?#bwJ#wy*{x2}B;|6;&V?KE=WorKb>yG*1U`nw7YOf|a zSNJxwOrc9$L(iaB_`M} zEeea>mnLs9a!nGYFn?|z@D!g~WOyD8XQ2{3y01Ya#eQ~BT*#+m&^>3K(PZ|Tyf?Qh zKK>;kt6opKJ>mXZT#F@h?mFDV^?UpR9rj8^iZ8o~5vuqe=i+9aFdL~u0EyC{DEvE9 zBW}#7fcNQ2ULuP+M=;iDl*DvDn;6qBiU&(7eBNg2AAEiJCSJ%_S)TZ{hx`X@(U%7r zZ_p>@3T^EEx$m4C_YG2mPcM|MoXj$c1$L#u>{0!mUzK*8DAO?^KshA~AwNqc5HjEq zFHFTt&a|AG#-Jxi4d6@ozGP3#vE_t3<;M2C5RT#~*Cu9_JiWGglAYaYcc-5ssb7`S zSZ6M_9*sjbE+i;ENN0Tn*){ECRv5PDr?Dq9qEh96zM%%|s$QuNPajhgs z>(THs`G8>;_Ln4W!0i!k>>bBy<|d~Ua}FEdj0(fI|L5$6ACaELW)=38p2>p~H_HR5 zkVKNop@3iC&(HaF4+6nTU7qo7MLW2PPx+%h;QSHGkIujl=aqH}7 z-=Y)Qwf+(GGnOrisjqiOqGu9p|74bN8}fu zc}#lrV06Vq`|wDAFzzO#P0u+P`Sa3c4Gf8X>H&daK7AHts8jWC;GXDp)}=<8iw~)( zYwHlp9ePPWDwCa#n%gqHK`teYZdFH{v*rbtVW&s&+HEStY^A5FMkQ?OzAe2JrJ`(fW~Caacj)RLnR4gc$&icQ*BAVU|zGP{)syV=KXQASC-ec(CDkAF%F*du!^xFiNHJUn|qTlDP^1lABVewse z27(MfPB+wNZRw{DwA!A@Ebt*xZH1toKWrlNmg;vryCm6f|fQvS{2KX&=V*k;cP5?BJ8G=Lo7&4SPQ#jfvAhX^wpeAC@ThDrygxYi|s0 zBDIjCdL#YEue=O9g~l-0kW1iU(3iq6*7LnzV8k#3fe}IA;}o;o;Tt1`d)cf}hmFcn z54Q*?p+a}0DdgbuK02r$=q2chQ#lD1vm+Btoy{>*6h!a&a1`0!o){N&_FP80gwJDG z(r;sZ?UoWYjdLT2On{=%y&-4+WlHzmT{$z1T+o`hEr_f&)U(!CV?P2u4%LItt=x05 zXcd}{VGp*I#$ImChRrX^q%3&~{tM64H?KFmOg)>os$Z|fpCS~sNRe9{d2eETkVQEaR`+eL>^930fQL3}@ls6`t~>iuRrG*X&jq5sLhdW}MC5E9y6tiDPL`<( zZMlmJV?@`LQB6y4VrD=LSVZTH0JtH4!l4!l; zt(CqXa#2%+<6CvhIMag!e)8DRKw>?<$_8RQ@E>S7(bH}A@pO+WX%PP;oKJr5j=0Jr zo5d!K?X(U=dRrS48&3?R8L|^_P%sslQZ5p<_D#uADAZIvd7;?5C24vJ}_r)xhgPY%laig z{$x_F%X!hGj76_%;=DV7Ft75EDvle$nxk1B4nFaf`&sbC?wDxBY=B`}Vf&LmA9y}a zKvv#fZ231Bd1^1pP$N#qvQ^a8Ft#) zya~b{ck4!R-Z-kYV}5{@hLs{LyouXU7Vw12r;qO$Wbm6xPE>9E5=DU!1Tq*IdH?-P zk^(UD;*|J&U5|ukoYOP}*l4?m{!()L)^0FJL?{5A0&hwr{%}8GC7F}1z0%3=v6pVA zp2rmv5A2F)phxsu*%9vLMXx8{`S*H7jdxTVd;jKuLLXn(<7<}kXw_U|pY!Z-JSm@U z`}h4E(QiCZ#RzZK1LP$GM92fUGPR7mAz0 z=^x>{WhRGtl9fV68WU=tsd4PCZkW5~b6Zf*EbsZW=|iHGADCt(QjDG#-!C4r2C8Oa z1TeoQa>^$SkXZ7CaGk3yaL`xIf8Vd%_!Bf1F|H}Vv0Tb6#1!|Ft??yr%*PW)Lxbnq*|`=yjFwXp1Ul`10*41!J&_lcbNd|j?7v# z{?z`mpS{aocjan{ZOwV(m2Jl&`#JfQA5^b-3(j7{7VEcD1G=;Jz71rIX}@hzo4NeU zv~$qo@)L@Mj|UVr`Z+EbX>S{fkM*R#4E=RisB5vgIw0_}A87B9351yc%NUOq-yrYW zKuoA2{X1bX5Mt$}V-p?g>2mnF(C^uzGs(&Ur@m^VfNq9c>{Y~^^5gfOyOSdNEB<*2 zVAq+t`&%AEP6b+^3}8O4LHSdBd{s8`=l<+DRh8J7lU_wULmS1*FGJpazYLpySX$Su zzftXSt0deEOxLm4CWGYMIiE{9kvq-2ot2;jz|_M5Ej<8J86^?aZbXw6n{E? z2+n`yvtOf=xPVt;i%7isX1|!(>MfNJX`KMk-m;1FT&u0rz&ZlS@ysrbf@Enq=1bMQ zx-Eu~?<{|~R<&Vghch6Df<8?7=t&6O?{XhuPkrnKiIsKPYr$)}w7fa2ua{4N=Xw8P z6^zmX$ctbZYB?8h)nm~z(!YGlB232J(xs|%uV#TW_Y8}M7fpM|g3}f4<~fYdMF>SY@l-nRr0HSJ9*kTycSg!|B_TH7 zTkHw)^;jzB@RymjeI^!Ca%;Una_(|cdCYefAlkoa{;k7wJaI+Gu8BqnvDY>@$h`$G z)^=S;xmej6W)9d=YMpjmudg@oAifz)8+Kcr> z{S!G?O97yIh$3{{(N=PD%fM6Q=1xi+AWH(``vPE?E(>bXaESNYG}>N*%Sy0AfG~Gj z>Qe?UC<7Mf$0)aDo1TDmM?6OYJjRPgn(ItW0=M9b2g3m_DB939hNytK#Ep|fkkFxcszZ zBGds&oSZTBMubA`odcm2Ruz%rHnj?Bm+3r07OkExwW}{q3((u0j(9s|5%2aFA{7>N zk8wwIhD-OrG&8ES+*-r(4bU*CF?xu0ar*ln>dCqN&YZ;<$=}kl(*0h}9h6G7>#3IJMyNeW?;DbbP~wCkViLzBI07QhaCueF!{>O@BJsuP@{gIOWQx;$u4;s1 zmFV<(vJNMz+Uig0Sy7x9q9;z4%pc0gvZV~PvS0pfs5zaqLaDhLbLu-)Jcrk$Upg|U zzoGPcnLo8q(<8jAO~+_{5)9~7Oi~OH zStbf&iIM3Ws|Rh)7=d7iZ`vd7j3Gu}oR0MYa`Af{B$@@q%KNR%k1mdaOrwQ8@04F| zJrjW(Q6&pNH&$Gj$ypS&<{vE9r5O#_8O;oHj1s+IO|86`Zfy zsez-xYWDJlE+(tBoz^nVxELwj&a6;CMi@y?@O^5V-(<3YGC%lyjnk5O3+o~UQB1}D zG~MDdB&%TO1~L?rNX!AC3HIIiA^AT#=fxI5l-)|Mh7Jxs(gOAm>dc%J9gQDunl-6W zO|LUsNIeNOt_42-FENx+F3kdNiI*?9pG4g|E=5luMn>iLwh~G_L~3E| zqaueTTEZT;ICdH=*Ld+H#rs%3tE;OLx!dl>Ydw-@HMe}kl4fCKtg|&1l(T&+Gty*0 z;Lbb}=OtCUa`iN--i$jvkt^@~ux6*a49C=z@AK-_^Q;e5FlM=em?J35Ki4(WE-U_| z`4d=`?Jf3Fa|$vw;-G3O!G!Zj_K|NYvRIlPU-k6`RK$D$&!j;fdWkW1Qf?Z5j_-4< zwC{s7>566a7gA(?Xg*>My$u?`g@bC9CmHHT?g@Gu_5}8ca+7k3B0zTgVPneeL?@d-uu%ilU4tYDhn9e_r{F~-3)yQpwvQmDOPm%fK6&o(dm@%?qx_z8o0pDIht@3I% zyLwJ|aZvqMC2DFU_}^l>uV@W}Hf@vXdDg*-TH39t##a#XY2S11TF?7xH z-hH#Y4TSIAs1W-`5hq28{I=P@NEExEm5zwQU&`k91=~jQMYg^CWBHWj?%?G^u%{%p zRPQSE+`2k!A&8M$xFtv`xAoV^TP{BT*nEM|@Z!X^KJweMRL8pAo4h*#`D{ zXTXfpRziuT{;FH!;$&%H$}q8Fg%^amOrziYM^((_yg!9@UW6vbqkU@6SSXK7EbA%E z7k0U)rppI*UVVL;zZ4J}JRf^}Ic<3UvBZP$%594iL>Z;1#D)qQ^kc-Wo2&WcDE8)^ z!)X)vyuu?|<0+I5c`&@iZcjp1A1XJ-w5@ifI<%*wI9tf}X>KZI_bqn(c3kK$XrnX2 zNz3G_u__0Nd?t;;FQYy>?6a19X#L#%pAm7*2lwQcPe)Ab8X$OuC!uXk0uu#nqVbIv z`;~~ZeHzzk%!kr;AYrHtDvrVyf?h!kx-0VmFD8;-{wM$n746@ctGl|`(3v~5@!)=x zJyy_Dh+Z2(L{;|_{MaTgG$KGy0P*Q$0Kt0e<4Sk^xFMbC%_%nj`56w164Vs1IApVk zLc;=KerRx8D=aYR4cfM57$Z&{8|-0#H$Oj-o|VQZ6ICvWxY=`!f%89!MwITfrDTMD z5Zw8s#XM2%t{-3CfYEGAF`~j#>3Q|ku4UoxIPGB%Q1bY$Qi;_DTDIV}+cw+jEi)a) zD{=SZ@cIs|RXI%| zAYCnL(|ZZRCyVi3!K&GxFBZZ zTGX&JfR%`1hEXe|Xy9B311D4$SY}2?IPf$>X#-{#)OMcrnJgoE>I@GCW7P|3Yg##} z1;my(;Wn3_dUWd}2~5TE4V$)Tr-*jk&zPm39l*55r9Q95eJ*cDD(ii)+Np#J=ihX9bVhfyT1Pfa<_$YP0Y!pl+ z*ED4$3yHWM>h2XOYZMy`m;7%>K%qB$;PTJH)!7eyMHs)3HlWN{s@K?Ih;9V3bZvnf zo~#Z*3+Xi9>%{znPl;|G0tPU*%$+{7r_&$Wc7oWr9E=`V-kZ(Ne@YOrJ?2acNKKI0 zp{diX{=)vHNZ&5Bj$PK}SpVAm+(b zcf6kHx;x=|1=q%?&BS}DlC>eq^%^`A5f5ooM246CIY197faWxR>YIqWk2PnLHMJDu z|H9BHDXBeLQp-P9Us{kE=Uwg0eN=l{>rv3P_JG5;SEVdLk)HTSSVKC|r`(kc($abM zcK*rB?7)T3f_aO9E7o+t>w;-VoToKchT{iNjcWE9DX#fhc5sir%hv>TTDt~hjZ4u6 zkThP91lxC~r6(!Uzt{P9IPdY0gb_CJmcmqslkkY*gkQKXy0p|WIf$$1ZZR1wyv%l31|2v%bL5kYSC%F~NNoUBu%sf6;`ttxDpbZxKPl z+{A3Iu@4EpQvzi{4lFO+FKM@@gp;2WfSTfIee=2B?98I#Fkb8*?UFjE4`8GyW|`4r zUTKSe+BEc#X?LRPA0zx)(JC$%C)Ldzna~>2lQ=h0AM;%*WjS=rpMR}Ukl1OwyM}*( zOmkw~Q0MnuWvkj)zeH&8Bxe0G$X4{>-va^Pyj_pLig1Ht6UFh%s1n_HbKCpK#YXJ< zVe5SJa+t!Zr0dTezff3}xRNy`w1MUGRjLeSgW=MpQYkbPz~L`<%ons~&zD4Lk8y?P z`LFWxx5d2%kis5S-RkRTzo&rIt-m^DRCPzNZeKP%1Amk-fAp_Uz5CsjuX?s?fx#Tm zODr+`+g(cPKZZb$*CcBKTAJg-cd_>!o)Rq*I^ZL<^H}ICZ z+|aqp{>y=fj=9?5_4ahpq>6YA!;?*Z6H^z4;IO*_A^M>+iZ)r$m@ zSIn3l-+repblHwI3KFI1=fE?U!8Eb1S%02ax2Q55#~ula`4BJ|WgiK2gCBN2*1-LA ziq4YIp!u)Klj@Ps(GM0o`rA%Sr@Q_>HT&&u>!dNLirFf0Lgrj*x*%%tnS|vq-jI~@ zkCAeo_b=A0ST5uQ%jq_9aZ%9ZxPOT7)yNQF1spjLtn<|j_1VN2$hW7sK%K$jb<1e+ zQLgi$uZf|YYiP@&wvXznu&`w^@n<|U20koQTwDNza$0rp!J_O4+9BTV$mLzD`QY*4*N5LY$3{7Jijl)ZY_7fGHmqinQflAQe;6802>--636Nz9JAb&4oCaA1~g8{9&ys@LoaeV#` zFn@U!0coPvU^uDVbM3N(M;2whVCONZX>2CKoA)`OL!$S$WKHc4RuizR9TbB;wMVxPFAD&|p7}7GI9>xJ zQE?&C1t~asRwT4)JK5Qz$aQ6k>l4uvT;bf*e^JzgU@UZW~ z+CaG3u2`d9CyPC`ZYL#tuGs|G{LzBSxUqdTHs~en$GCYphpV#)U>-P19)~twH~?y& z!f_%dHpU$YA3Db6(sITW8}YKgYt*^k(@m^ztKbWaVW+{c?W!;!7j`5DUqCE7Q1=Dv zO@+<(@fw&>6vz%$wV{dM%FW<{qnPCeQBs6A8Q2*QEZg6j&1LvzZ59=S0l1&776Tx~ zEISY*eLXC7@!U%|Fbuz~c&+p5m03mN11l5xM2>`kbcZ|TrH9s_+3nBwp;(Qw4-c7C zZGKmkeT%k_V6%sXY@e$zKI120@g*=~E(FNZJ=6GavRcO5>21FfN>8R~n~jN56fq9l?cy$FB`ypK!&jO^A;29#FJ|Ae4% zMm@0aXCI_{{Z}Q&MJo*oh^r{1xu`Z)8Y&ipW`R1~?+BVQLK~~vV)(;iAYfCE%c(Mp z>9#o005CR-@n0g{PaI7ZNlAE%`2|#WYq@ z8bSh%YWr#QjC1H^(SR>!yYGN?%TJ@01pOyt=1oA2W7%)WwOSB^gE(>#5D#s?N?^wko{LdpLVk>9X z|7~z2*S>K9wcU3<)fZ+-o2l0>PkdcwA01Evaw8HeXN%++?3R!ah5e&$gWz&wT!V$2 z$R-gCTQvrnpti-XRA-n)K;5Rz&j?29AK}|inWoyKm4mnIhKHvcB0{z-=~+^owVnYl z5Ee0_sH*YW#h95JA_uTU9|U%&lHbep7PDRh_6<}vvcn8OC$sbT7oMLV1;HpMzGzL1 zo5RZ=VEcaLb-LrNtA{L1B@%~>2166xgR^@H)XoP4f_Ey-7gth4ey+brQk39Iym4&v zyU2ZR?_Zeb;u2sP2V1ub#9EZw<3dwZGW+O$C#z(iKjY#8$(nkZ$R@n3E9ti2_^##5 zmuI<;lT8^2WcL)R;@<6ubnM#OJb~#4mS`7J&2u4zFPwa=?&Zf~N%x0J1A$CRQEO*g zcT8=j_l=zU!_q^!L2fR9Bf?8>f8;&ibw=o9Uwj}-(M;D&J7f6DrO#znNavXA{N@dt zp+bSaLQzPVKJD1gS5h$)*<+*UsW+B)x9}#l3j?6$blm6yws?HE4D`=y=pTP6GLK#Z zd02~@nlEd|M5t4jPStKGXjgo@4~~i}BIg?)*X_T8bMIB%cW;x`yZIQHP7}is$(}%J zs2y}$JIK3WXAJ+bs}`Db4KoVBZ|~j_pE8Vzshyh1R$+XDu5)Y=C>5wn6)cwY=RJo$ z*DBk3Y5ymQ8{&@r*R`4O#dnVxrp>{aJBQ3dn(zQ(_B@7(w{N^=wdJ_PhH;!eK2JHl<36Rw6MDP;j~I@}Dp4DJW3&R4lmC7Ex!v&1yG!$IT7e zXicq{;)*OWj^ENPbK7@JT)8m-@G+B-TVR_%4bWDYjV)m}IongqmioT%ULlRq)+i}= zM%f)kW;Wt)8Q1wJw(nL6&>7*T*lsZ1^>L-D!O*mSz~6QeQkp0vO+Px8&VS?Kz-B$O z>x^j@tO*ZBVyX{vTPWeO;`Vmd$HySY_; zlBLeB?*H|CN0HY>R(i1jDEV&p(mh?U$rLpU&O)_94QAK4Q=24=}+aN0`%#NecJdQW*NhzY?VdkqrqSnmT%&@wC2>IWej56qx(jA1K#)` z{N@P}necD*nPulOFrWs%uVHpq-)`xbVkUezOd_|AqN}|U6#I7_OZ?n}nXA9HTDj|) z-vvs9OPR>RGeny?p7XKAKl}?US!TVlqic6#9*NtbioqN>L6gwA*g-qm_qm+5%9Io> zN_qdTqoV}DD_SF>z5*&>>cj$DP7aPGh1;Q?+sE4fZpssh)SF+H`wU1yh7669!1GZV z92=p8a{4>gW9WHWD#*j`_)sUC(0|jAJc-SM^GZ63EcCR*K4cJBInIfO6Le2BdDi`B zGWa;xRaKl=rkI8Nx~*^0^m1x(Z8(pOp@e<3_L#$Mw~|t>fn|&DAL7@Yh0nZ=fbIJr zU-~Wq7U_|_KgXZhOf>@;CjItKr_KNCF`ptIvsprIAv8uu*U3ub(nW1)8X!W|^~XaI z(&-gCQObKCfvAZUrr#13R;EW0<^&kKfZF+&S!zA$i`96?(0|;A_kC(@jxwx-2Q8VeTB9t&GaxM@`iMtVU@K=Fc0@R(qU^NIkgi=ncD ziQ2+9;wet-INme-bKMOKwl(DVv|F@d?{`Cn+0gC1YxP_3isUCi8zrOHW zFHE(VJe(FMVxfle-RU6d0PEPxHmOO=B}KVz^IgWowhNv)n@mEPhFUhxmq`A5KHTf| z(eK49WW+Lu57faj*~+^W7MMO?@Vkvm(vwuoQFc`$B}(N{UVjkT-owG4GVCOmvR_)J zoXAg+Oj5M#$UUAXkbtW1tl!rzBcYVGfOGH;;6vjZ`;>$gH84Z^jL|b;Ic6E_n!harSeizwy zKy7kuf>qCU*5aBzM(glrEF7MkC6Ro8R*E8)^i_bKY-iL|HX~_N=USb+N1>3hd2|}dOLS<&K>g%cz}ym7#hwPD)(ym`5A;H!7sQS z^aM|haMKE@fI-Wq^|5WiFc|ojZ%<$C%UPZsZFso<0~5r)HhCc(U=&Ch4({F^(!50) zpQ&(76A4V9Ie$p57uLvpYv^b!4c1pWRm=q1aRE-bwzF5Q$4CwzMY$0$;By;c8-|)81pe+YrbsmR(xPDHJ>*+ z$l9&wn4-vbI4Q#^+1niXKeE)BOw1e%<1hsIK^H z!=^t%TK`-`^Akzrt?pWV5DJdFZ+(o!a?KJZ0>&G>l9kNtN14rD3pSxYz488%Dxt&g z)9Wg(%IS9)O*i|rPe#G+ON-N;z{nK5GmL}N|2?h8_0zWg_<`1IC|GnIQ(Vk46tmdI z2bAauoU>9q!MgBg!TP2c30YS7Q;|`eU(ULjlK&4~Zvj*V`@DgID2NgQ(xo8X-Jp_6 zN(g%BmhNs5q(!icaII8b|7I+8Jy@@@l5n29Hr8h=RcUeldwZ8?X*<&G>86=InC1vwR*m%koF`e<#uS za1wyV0ZL-d-O7iU7YfKhDae5f?7KmI%u{6qAK?tYc0<_!Zg#02!XH_grR_L7@ELM{ z)pXXuP@!gsaz7IKobcq9Qqli??>m^q7LnS-3Oj&W!3@rum(MUQ#>M!f044Bm9jdJK zaRn8Eiu^N+vlRSiDKAhV%BPajiyymsmU^c5-q`NT>DTSQJW{{nf=}Yga}I2xARahCsx{~$p7n?chdB073Ovhrl%^i=P`bgniL_(=zYDv6 zTtgIZmU9`VFQ(QW|L}UNvjY4x`9qI_HrmEu&hV|u>``Pj;&3jP19QMpefd#o;*4S~ zFkMh=onY_7Y4%_`8bMRBtkBYSl!oT;5;WRkt`*M|8CH}59C4a?b#V}H*rN8bvvVpa zKr;*Gq}9^mF2&GKP|a!uh33G@-=5EwT{RhQJbNJxs!2GpJ|N@l_^D|ibFu-TDBg~c zra)xq_ioF#l|sh{O(Qbj(E!*?EP4_WnRYj+d*igy{0Cx$3_+pxa%0n~*-N%I<(J?7 z6t-;i_-kiq%Frd3)M0}hmYBF0Z0*6iH(7W7MhsVUGKK5e)=aOgS1{-umX+pepp0Vi z>=CKUS;_vxE!DN~fPqh)o2Lf?L{8KE@}8}_0HM?w zFb2T?&*5yAjk21+Pui1uqngZkO}hst(OI3l4-su85T9XAqo z*O6Wcqj?#fFv%WS(5g_zv6YfS!9n`+8SG6xL&dTZUoy{Wn^&1F`+W%aJ6`$Ur2FOb z-1@}UkP<q@xuXiKVsj}5;&`KA?^i}!(RQQ|7K_2t9_4~^3l&R zBFN4+&n$102FZ?TV*={@?2Oc$#GF_}@GmO0E;nY@6e`j$S2Ar~^|Dx94AIDaRy0|= zI1T@^BQTl78>Xn-czSMV{Ebp(zU=UWf%S=DFeb9~SLG5+S!v|Zgr5_9L4DqRTmRIG z{6;=e`M7FmpIU&_0KFV4#qYUQ#!MFI};toWwnG|FO|HQyfRU5c@ugyzbU{^po4 z-0j25^pwtKPzaz>KeSev5{U}?FoR5@(5)Gd3E7~@{a%_)M;LOMi9$Sf2~FQ++AhdHAMc; zD=M}hp~BX99P}Zf%~m|A)Jf;(%?2lb9z5REfQJ`Il@7OHo;^juZgct#%sc^^t{?J# z71c=~R6tGTX+rBFNI(XJyb}mo&wvF|!ekE%uKLHp1FE9)=8B7z178Vz)s78?{+7gu z;q4okE)tJ-Ld^6|htDq0s`k;Z*QoX}$1T)qT;j-MVx+)BIl z`vtmvtY&I)5T3GbH%jM!4h=N|@qHi5vd`YBo1QHKXc1SeW&I>~%v@(ON83%cCSoZc z`=xpQ!mR8X!VA*E#g4@bDI&f=P&mYFH}cA6>fG~|`@!7&gr|hL1)0alj35C`Ta=D% zqgGO7IB}?xv{sV728a+@RYuk$M%NeDC$8BHEcS0s;?U#usjswcDcDwH3IC{6_~<3M z_K1fFzP%jKB4Rl~0lfKB2U%fJ{MGJI` z*N!Ui&3O0EQb1NJpB?3gmjmq;6%6Sp(Yvj|mu+Jyhc7>8UsbsGc(tGIrDP><9uVBEvWV#L3G@yce_r&Gs zvU?;V(rRRKJw=Z8>Uu|$xy4>`d>^pJT==)0V+9yyp{sfs%m8?o;j^R%g&*(IA{&M- zzxQhEPK8^7`Pyi3747YLj@=jM-J-BA_nhXrE1OaJ`^S=O0I|28D_!O`pRxp?Ra>Ri zgVt%e{pGF&YJ2*A{TkBA0AZ}R+*5ZQTM;#XctAfd%@hI5`SV#0j3>^Ef79*q|5_`X z_#2u*>@WbL0mw{f)dLp3#EV+HRy_Q3V5frIa7lsgW`~-Y1&8hG-y!Z;J*sD}`6)7+#VM+w{ z;pO}8Qei`!)bphWLh35~!4Wm&_DGH7X1xZ+p13rawbFeMCMAGoz}Rj?I@+;UL?81ok}KrNI_nmBBR6K zDa-WK@9$dlrYme5mTSL!a-`CrN%Aow$2nsWEk*O^F5&pmAo-c~p)Hr@M^F%amSYQX z+zeuJux=YKEiXs-m8cD<-yvXtE)@&4vR4y=-^YxVXi#0HKO;v{?Ft5$)31%%ukX*J z*Xv*8Xh#;(u7Tp5Wzef_{gST#O=|?+_V54VQLU}3M3&dyKQUdkKZXp*85hCwbDPUm zK4U$vljWBFY$l;~t%dXRgQN-K-*wUtY6s{ya-U41F@FOdA=8GT@hk)L%%aQ350WRj@A^TA zb77{-X6`j~6N1lW^a7Ca6WvWI#p7)l#^(=Euxs*&{tLp1Dj&{$ZY?##a{W{nU_N8< z5}HxQp?}{1QKsJie5L@P_mCPe)Lj17kf1ydyrMGF9RHwRN!$|2;U$4*c6LK^1Pe!5 zq&lGX;>@AY!T8Crxs$hon=R6FoWeHU5zA)mVQTe#GIN15s$hIBMFL|Y@6rQHRfjc8 z`s;I+NViLLMjiv!M!BDN^<2K>S*q>5_BSQsn{Q{S4pj|AfxpKlzme^w(R=k516e zo-6TJFFr_gNOe4ROWI!Yig8S|PQp+9*I5M}M*VUUh$_^d)|~UY7ZRZ+LnYK8l#rC! zAgZT?T`_xS-j-m6KkBX*xr(3_^btPU-Z&rQripO4w*c;7fyTXla!a4y~n|;JDSJ!~2 zw|{Wb+CGl^T~=JplW~kGx*cnLwqu&D0S-actx=b=$2r2;tQO9Az!Oy}bdH=x@V9+p z!;gshdN5^@=-r1e6kKyROnvpoZgwl!XEsjv-60P72)xP21p0O+1kQEEyLA`eLLNsr zLaJZ(Fa2z5?@!7}HBJ0j6!EJP9xmK$`fbu}8v2I1c$dX9F2=p!Qnc!+oR6%*aZ;|f zwvr_&C4W5IE`0>X7565+rsN>~eYNkwJb?X-P`dWhMK6fCe#>7^BtF~Cci%55_9x@c z_HPY@EJul%nC)*_+hnUeaY^bUJHvuEHjnRn^627XgP}g{Pkg+Wb&k`j4WY2jn8lZtStQgPiaWjt-JjP2g(f=iyR^Q z8$ygaQ;t-}Hb(a+<>l`~w)6xAk@S&p(;vo31$OpHvh2;JV_lD58*Ykg1`1z(eeZ1+ z754ZQt@zP;Itg(maepL~p269p>)OQYvc;L7$y`wZ(k?nK*i~^9sg25dut;ZbHS?)? zs?JSPhUCuWR$#3MBDNR&KJOjnWt*r)&w0xALC=SD^o{BKi)vNI+q2e3bC(Mc959u| z^4pX0fmhmTP0`Gh2?2eAKCcn5YB+ogSX&ZNJm~E0qSS>Z$eM&>PNsw$_9tVmmy0Su z!_+7mYTD(o-2UCok^2)ybEYNm|EbK(mkLSvhG!U%oRaC)Hboog8Ho^VAW76yt_OO+ zO?%}-HDxoOy)`s(@3Ka#H8hkZ@edhHY6=QKk4s&YKCA5k`@zH@=>jY@JrS{wHRFts zgwB={^Q^qooYkt--_QI%(t=rdSRwW2o{%Sn!T$Q#5ghSXQSOJUXZigJJ#^F*g~{O* zbesn(bfk{bgS`-9L(9Xy?MzHu;@iuB;eVQs+U6Td*X=*04E7grn`%f8);2OpC%lO_Y$waHAA_HHz#g!5`qG0+#Y~ z1tOQ{-fLeeK-48nMKL@-x5Lj8jzOOuj`ctzYim0%rFpKG7r8(W$m{ja20Inz$LEf~ zffRIDMU%%$gCvr&GKT`0xY*XqvWL`bxHWjo)~ieW9BuLnNivKuj~0k#c4lryq_VzA zlHD#RLbJzBv}JF&E)T|?kMB(~ckp^rlGHda>#lU)h-ed8P$0qM=TnbPoDa5xi89R| znn;3T4U9>~ctjB>h}jc!0tr5^EpOndx0`TQ|BhgU>lcEd6GOw_93zmD9HTCM#BQw? zKg2sORm#ljJV$;M+y9RL#of)kDrKT8U&^<2%wG-!G~()A`RMg?MsY`b3?()0b!X_w z83707x&3>Jp4JuMJ4nFHXdh5<9XZ0rk`>=Luw1xU6eXCRQdBfrRx@sFWOewDjctQZ zp8(!3E0puVpOX&{{rIwAYscBp#AKaG4M+MJWDTEhLy7Z9DV$Hgerv=mWLhz;qU^logoFI=SNy|X{UF#S&UyN61W7Cr2Z5|H8k0uBygx1fmTUDv5I?Q6# z9u3ZX?l+&S{@$*B`K!M{t;Z{blxo6g&tf+z3RE-qMbBK!_k#lp=7Y+(saEEU9(9lF z7P&~{X!NM{C`0E$l8R19E28F4i3x6b&J$#miyrxEC2os%Zb!_ zb&~jjeVTrI*KMs2NrzyCGiVi!C`T@v+9{dnOK$M+PHkbcL*HfVFm=drv@=eF=EHiu}?Q3IWr)^ z2k!OYACG_>FID?tV+BJgp^r6x1@K?d+rIfh7-{38#Z+cxiUS9z%Dl-}Ui6fLmuK@| zPG$r6UE10E_$`TCm&vFLv)6*o)|hv^jlWcxNp_#yxm7sg^&aDzEdzjjU)GkXZux7_t zgCA5Mh%X4|flcBNa{q*^7D@%a0701~K}JO25aoO2sB&aoF7dIvVAD#DHO_tt7nVP*nv&?{q|*``poXe$_?7S2i;KaPWgkXD9SH z#)ptKuA(8yYA4%OJ4ocolp2to?loyDgoS~JBa`(!Yk2gKpFL@E9A8JA z-M+l{a?2nD*4g{(O>My-&PtplDY(}j?5`W^W06(S% zjiwX(hMmDOdt8y;%(o$J_ig7w`#ueVSMAe@F>18$H;MD1jL?AKYZ{n3Hdj2fJ2Qnz zP~+@%SdCCWjwAFUt--J9B!E95Qdwe?5cOa2XyWwOukuqfb(Qw-EbO_KQYU41t=-fi z2AjK#ZXBGPyI6Ni*1=B}LUHHJH|w`08q)FL1n&o6y57{+&?)_Zxg8ho98gKELA?+;rI=4U&gmI(N7rS39>NS8m2 z-7@}DNV_Y~FR6keC|Ex`){BcrB$hn-?i;R8$~oT6({1<1j>ZDRqid#ZAtWgO#5L%- zlbZ(reQ;kaXus>O{gK-_ss7egnEZ*TUeD#BL0|0-Je(N%_Po`N5-yi{MZ#g$)%n?R z;l%GSacNTl;4jc?gtc1VU4$=&6&hCw&R{(Hca?M_VydE8a(uDLhV> zqfB46Lo{I|im*t6{;8nJTEQbi#s*ERtUX8#i|NM^Gu6v&KjmPv1RL^=e^Ep zMF0SaIB@6pR|E@XiQ@WBq7uin)CD%*&NVM#6J8wk_Lt(XhZx8hUD%2zS&Q4r)(YBp zJr1m|PpH1{h%3S`2?h==arB%@)GYOL9Y6@;!glkH zq+W*r|C`@q#B-fz$5iADq2hbdZOTwVkA@_BclSMTAitRsS91bn^)(wDq&#oEC%@x! zu?9tvR)N}w>S_vo@uZ_$n6%E_?NB{JxT#vhgfdp%H)a>xOwLHqBU-s*HOLC$b{qylC7$54O~Y7ge;ySY;=aonz#a@|U5*c$!jl z4l^5qDFq)mxq6+j>5DQ7b~89sCA|@wl)sxg$K-kQ7%TZP^QbW={9w}Y5xSbNlp-F0 zC)au;Nz<#_*oMPb2TE9s`KZ)vaADyIpWY*P!3Jx{)V-&Z?tJgBH|v@w{{C7rj-wYQ z(3LOKydMq#MYGG^x|Jym%wcqo;u(abWRw>y7W9s}xDKoog+o;I;W13}A1cYc`x~wz zbTa4Oefl6On?<3n-{~(MD71`ITztf>ZRnm@4P_EY_zl}$hnB3UFvbCazWC8XSWX@9 z^WO5O6}+h5b>ae?TEEcEN)`~qf9CUiy%@e`lW&N}voB%v@hE#DbaSz%w*8+QvditB z@S7H~{ciJZJU-A4jA46<=a&YYaPe={`M*&IptUBM2wx=ex^Oa;k)`t+sw!hopPUE@6N z*+YYO_4lxi(&~%992IrOMxEs!e({Q#Jw8_cOnXOGLe;&?YTSNPom7Kd>n7xt`ALcz z`{SQaD-K2jeXCCUvzBdmtL`>819>kBU9N_U6J?~)Qrp@n)t!tvH`~=)+cj?9OZ@#2 zMOx#ze&>klCN`faBYPkA+TGhXe+v4@oTiz`c1p+_j*N>+)jq~{6#orLSEVYdA!7yL zhICnRvCF#ddHpOc>J@EfoSTn>Iqpyf+=Iz!^j~l}`^-ufhv5PL7Z*TFDPP^ssXIwzpKf}eAe+>(=1 zPWjW!YIONIyJ{ch7Og*j=#t=joy$Qvg?A_F(>drOE&nV>B5~#G)2_y?q#0Fj+>Y1eu=kcvABHfbXjUjNMY#yZCZy$&A;ZD6Es*PUcdSNv&$K4 zg&G^SFGDnd5-bl;Wq&gp5sc5DunIAJogM!6k%~Kk(d}z#ES;HiaC9iHW%F#|UkSfH&J+3jZt+)&6$YwpvStA~ppAv1!jV2!CCfxp$Pff)WCKaUZ8;WdjzZAVIR#*yBX1pb0nJ$LINNJ>g%qG*8d2xv!)7MBi^cVb>-}z8qwOt-dPo4; zdb*C7W#1oh7Jl+FB({ex%d!vZ061+&l#BG`7cNKcnz{b@{tiEJ(nj!kC#-`78X-3;&oiy% zLUF=k>b~QX-gN|qxIcacqL4H(^tJ54?>yRuLOv)`ZYIsS-H3R1~~lfIV>^LvRURiwcDc{PBC+L_I- ze3o+7Mx1PL`FL^K>)mo{&DHAqxIKMI=QxYq*>pU>r#VD#xx!pQp%yDlZJKv_+2D9J zn`M)TgE9fhJgF@+&-A*~kOR~fuVsnmcF<8T-t@aIfzP9VhR1qx4Gv8z~eKNdG> z(lc5xOgPT=`3}&4`}CzwFph$bt4Oz13~WL~-)@_%4h$b~|40M^*QE|}M9Y=zM(`4x zsCDjj4iBCp%pujW6HzEr&PwUTc_;lL5yC=_7zqE$eYbyBp8c5R5`!o~3Y`8zAY2KQhv;MRr{B`WMTVwj#o0_rxrQC^)kaN8lARoXJ zKDZ1lgzN?Q+5CzmX!i)`M$Bv*6yk|o@ut=$Blexa_v0u#G3o6!I2t3)oBY*V-CNZw zWZsohT5FWFE$s=Po<+fGV!;Yhy1F|Zp0t<`&XoSc($NAk43CEHjYpZ@6K+DneU?jG z8ht|-0=Oq}ZsaGG0Rq3*1&v!WK2_UFM?ud{(BD`MI9Nr2*lGZ^(>3kG9$~NOItkKS zX;Wglas46_Tgq-_Q~eVk29u7Nw(%P^EadH=5eNf!ZE~iQl9XE1e_k9noms# z?RnL7&ASbB);Pz^`?Q4DI63v#ih;hpZo(|C!2VU2?~#O)Z^mWj(V!uT!NT1U*h=)X zmB@qP&Cgc>-^Q2Ux}YGw_hMiG(Cv9CEqAqQ!RJ{wX=&+jP~^Ii^iuLJoLfFjdn1V`3+?@b)eD0e z9NV5#LnFyE8=TmkK``9c9BMWA;?=7OF{O9GSwl18;4(*B`Lc7VDgPNkkOF z3aH3TO`^1c;qq?FC^DU_pd~nc;Vwk(cM$rf4eE|3t)_{g z%~tW#7bT!|7&yvo**SRrOpNk89ayoE|MX?{a6*&$h4$>Q-^Q|z;igFG-j*f`D-xzI z3x>(;$%M8M4Gw`Tdj1ja{gPYw?sb0qlHnd@9_^eD1wRh(;5-|(M#6V2=n5F@;6w@C z({f%#B?}%TN|a%P$Q>>>p?IfEjgjC{3yM&1{&PX?l~!~IX1;?`4>%$1)TW<)R$1W> zV!D)I(^d7;A>l3XF#>NDam~yf`*wb&Ry$-tEQvdt;q0Wj_efHTZfH8~nA~>$>ip^H z&!n%o>eG0zM;Mc&AgR={jfWx_ZHl3YYijJ+XA+WHJy9pqJW#pz4(|scP7Ss}gYg>_ zn;Pm(3F6>RoIxYJz&)y6Zw?&%N6zBEoy`*neF6i%0w1`iviB1l4L?h3swUUrl%x zYP?$IW1W>QR0HOaeN0Iq209nM=53j!5L1x>c^-fNNXf`{@8#h)1-*WfOf!&&3f^-# zsd5XWk9O6>Spq4R2+Vjc)V=DVDp-c36f~jCud`FgE#N zS3vhf5#taBw^tO9+37@-UPx&g8)fmqbOryf zh=)s%SpNe{{d5xHAiNzd(4ww)gMX~Do8QN?WB(w|*y>wW0=pe3Z=YoDZ=)ZI5Jr z5!LFRqx&hSGaVUBQQX!;pf9K(C0i=Fz=s z=5PAUU*aF0VM-4IBpg++K0WC`x!CRUSM|~!{@j1pd3c|J8)x-xmH$$iC8rM{8igJ8 ztk-Yl98mgvoN}I3R1xPgAbv+rVY#6`7^w1d4dF*H7ST9dyBQ}x_@7v%!laU+guGhG zAf=P!gHn+*z?B)cXxeI{Wku7zV$`N#uBN6P|zNr)Zoeu6=LPz%~l!oA)eS)#d?_pO_VaR-Aud$6n#cOt4v^!|$IN&6#&Jt#R`c;)O zJ@)XxL!0lTxls_!<@1V$?*t;NJAj57B2Dbhg7Tat;)`K)@(jJzB!778M#--ZK%tl*D+{^V@9je?R zF%_yZ9=W#*c@M^n%ohbF3%N1P+HhaXspIUhQH}X63bf=DF>luf%o37Kw)yZ>89!Fo zX=oKQd`N4zZnQQZlv5UW>UAoohgivtYh`brYF z`)R~M+u2GHlTjH9QG+~#XV$(TMSvv%K)#lorzW9&FNvBgqcnO$6`0;wcarG~SP4yY z6+j2$A7reB58s&=9wRhZrD>U_Pj&EcV&|v6b02TTGEg{i%add@o$8WJ6T>sXlQ=;3 z0T4jbJv+dUmqCS(ax8R+-hx8Z(hsfc#_bn)*M*UW4<_eE=Zz)y=Huq(8ozRe2m(JG zBnsM3YssGZcTv;iCugU}gJ3Vmcq=<6=SgyAL2z~T+7ZQfdP)Fm!vQphIqnfaNs6ZP zyeEa9mLOr_63e_-eT-a$AtKJbe=>S@eZTN@=X)#IkBK9^ItSo7i5$t9`9u?x(ieD` z!3`YYLqO#QkCVU@z}x4okk6+sgBDS*;u4k%Dt$n66rcWvwL+*zP2kTHc}%hQrXU-E@?0-y?zj|Qo0x5 zT|4ojMV!8pp+PL7#vX3_TL8?KoX{^?!kie$Cz0e)&q)kvHBlB|6wWV^sRx!z4`?!RUi3|eBymDnp+s-}FcgU51%RD7J2kpJ4rrnDw9NB?FJV0%|Z4jxT#v=t6Qo3!R&JL&#O zL*i?vw*=%evG0>w!V_hn$zW2N_HC+CPh!b0ruwUhUA};?btHgi^Yd5{AP2e|$!~nn zK9cdg&gq8u*yCct@1zi$V-)7+8k}63fZUSqMXXe0VdqkXQrzTUo+udXq_Z{-r;8%B z(vl`_ImD7CAuG8fZ+36utj^_ONx#HNk{^xjQ8`{jL?48ir^(^78Rz!w2AR2O{fOz- z9?8YlBmy+lY<(IB_aN1bhZ=dsVnd%-GkREJ?g}eyk{E0y& z{kqm%UN&od7l%Quy@s@Rb(skl#BZaAE+DA=u*}MB)T4RJY{ZNpukFm-y~fxI2zG%T z6AA;S0Ko(eO?n`eu`pVVug2$MZD}03G2MfXBeoAegBEIssjTKUvA~ZTjXMv~QpJ9s zdzJsso!0gZU*Nb~6=-Qna0`mL8~M*BC7T3&%&dMB;_-?w12S#{85{^@4{y69=mLC= zSmtcV*nW6NxS~we;^#w7^OcH8(xXnSyEkMsKQOWq-zk1!QnXJgO_afcnlC zvsgpAk2Vo5t)`H5xNp3RP-JD>G?|YzBZ=7vT=Cgl;B7G-ke!>s*M{^18FF!L~gH6 zEb;vzp~5wA+A#FwV*ls@T!2659v1q7uyJ%a)1vW!YD?7d*qe8GZ%7+T>- zE-4t-N);j`qN4f;fr?1@u;Wvm(UcXSw}mvEgPh>qZ@_AS3%+TVGpjtd0qr^lSFMrj zVj49ymnLi|gQeFmkP37!+lBT=a!XVic%mRs_lS0Nmk>w+ZUbbB&pz|NB(m0(WvJ2gRLf!f4H3D6s>UVRXN{-+s8+9va3aj7`1DBGFfX?aPjfGl1I=gS z_M6C=Y+7ozhwYKO?x?*+$#H<}Pg&BBmxJw&vjgE}ge6sndY5a`C{|rf z=$!U08YwA)ffPwMepoxJ!5phu~-(Th_^3D;NK66F)QmqdW`u~V5{)ZjV5aW2 z5xU+Cr})r|XU+#zK396oF9co%ZNPtH9~lE93t2fCZez?ryL7m)n0jIHU%W;r7@dE1 z+byal>fKOnIYwPB&xLh~oF6sI#CjDL9l5KTPJimSQ@ePPJ7(IbRl>U5I?Z#6E-bK* zi0+D9d{Gp`d0eDt|Gu^tYc*@Iz?+o_?jO^D$ks+tdN7Hk(g&6} zTqf-sCZQs?#t@ZVt(GkG*KYeS$gWPB+YS0#=6)wk|Cuh!pZpPqJ?|zub~qpHFqnia zyWt>d`R)_GfvOc#Tyc45EFPfa%t+s@Oqe+*`H}&-uF!CWaTqM;B0`vtmPxboa#n@< zXYw|??k%1#25fYudNU^QN*6hkFQkNl>?*bL%?2Bz1+!#Nzs{CGaCl&C!Sh;E?fz~P1J1@GSj;atmsrL@z2Z@ zD>qjO3F%K1idB`N!v66C9KF!Rw@U~+=SW433{Y}eYA(27?JP!yLO8u{U!Mqb!IUsm z$N|qeJ7Urr$7+|jf7!+;w-|QP9gFV)*R9Dd|(};!7E&s^WXsUz=U)!2>&@-}EC2GiJyspk#P+sh>-*5jbBkw{P8iUfl5S zYI0qn@aVw14=#L1uPGC(`PhVRJx9`2%xahN{!1#0pgpn$qtXktkVCRqg|b$QCNV_I zkYJ&0+HXLi_5@JHr?qDxEhdtHoFnHzBpTzpQRRd54+pz>083`Ebo#b&?dNRI`GUub@#dS=3Yz^A>_E&Z1y|ORYe>I-~JiOlN%#DcCxMtg|vvb*hI+5IQ zCJ9-BKj`oA5uW4F$;|11yGoT=K-Ro|Kub}S=1+l`Rpa7QN7KV6cmG~Ev-(Vg#n|-i zUe(syjOwElQH8PZ{RZTf`Yb+F;_#N9D6@7z8z=AY)$BY(ovlv1mwX2#5WS_3KYbRG zk)v6dngS?DOT;98rohht8S@=K{Fer{8iOxl`#I=&6@61|KK<&IQM7U=*xovIPUzlj z`4NEHK)>)E>9#RAXdC9D`6fEz0&)VO?7V~`sdLR46W~z;lIv=Oef=9YXQ~s_pqCMf ze|1|aNn8&QScB`P^3RGI$mY^5@!@*Z1}?XAi;Da%0>(M#&6#1@|3A6r0@yBR0%2{a zmUImTylzbvX1Cp6K#A-@)O2D-O3~5q-v_;J4|D#UPy@()d}5yw21!U!VRW|+WI*rL z&tI8UL+1ga92y$gp$wgo9n8U3%)9f@(-7(pv)5?*5kO>sWNl)h zztz)Xgwuz-871Kc^no|D_y#%xYkyT}pIc=Y(jQ3NzXN%Q`ULBUXsjuu0WE5Ha&H^) zJ3MI`hK2^YAR?)%3@)Rp2wye87`M!H@3H zVB$*vTYwgw9XZ!LcN4lT&KZ3hO6sPL{I8`5Uuwp-7ri0R#If#AXD1+=!do1N3JiaH zx&Sp;NhD-~TR4akOfLE``#^p0Wxbc3zuv80jRRmHEFgkszCn-5y?L)-@I;&nVF6e3 zQB=ThhFlPMk^o)r;u7@I^mE0c8DmyhLLAqE)vj$~O57y@xI(4~jSBYp*I-^5ZeQoI=f==|IET{9Ui!(qsiztQ{ka zD{ZxsF>|@F4Q_1rgMFcCXH5kSv`&qOlQuBCelR>zxyWX8Ez-DQUX7h7s?VF{yXTl_ zGf4P-QvW0ktaB>))ST1o$jXYRf&PGf5BnobS#r}Q>}!KHt}9j0GpU1|$?YGIpQM;gYKTcO64glD+AldoMUtI1J3El_*@?27P$n#Df9~ zfN@L22ceEcVrxI!UH)ux_lgj3V9HiSK{Di}Uj8fXeNz6=Q^7!ZeXleH>Z#hm^T8~e zZh|^#9bo~`;`4=q#8b-Lh_?aQ3UV*-P_F8rVSMUYd1IZES$2D8TcucSheMDOp2K4Z z_j>q&6kb^0{;@7d7cOttK+gt2N*-7J>@n13#EEZjEuYU}CjH!;}r!Vc_^NCEeM-D>QyCL_FDKm<$W3hR)&iRpBYt=!n+tGi8G*9tCgN49Ts zu3B|U%VO!WSoYEM5=VpQO=Lfpz@QdT!vF|{ha6u(KROnTI%grbw$nSKg=L)uz!O+W zS=T>Yozb{x-e^p4n!h(?Ls!{=hwX$73mQawr=1vr4dKwygg>OZ7_2qogNeX_snQL$ z+XQuf8gE~9l8a*`Op!u#*(r0&n!U7u88YTHX(iBILQg}oHA)bN#DYP%G#=)JN-5!2E zD_{Np<6o;D0r&nKEv z!x=8Idfh5hS|At{Zvg58BM;Oev39$7%~;=ce$g547beoq#r3^PUm1WQ6UVfX``onl z*r={IkDmUW`onnG!~7CpLfCwqIPh9h-^MgVdR@U&3;Z375eOKXj1d-G78Xb$i zTD=~~MC}*=+OXO=a8cI*yMyZ}vb;J=z!Uy9pM;QiV(P}Zrch|$>H!uS$hbfJcZ;A5 zB0^q64UIj?c;k;u^FqfP;M9XiF8Vz=NE%KaNUH(&eeUk*;W)!iJqMa4#v&)2-3qSr z8}$$0Ci~f(y_WD(mO@VVdxzvSwp!Vq#>Ex8}JAQyoWKu|KW+r5G00rlF$% z>x>xC#k91>4x9P?o;T?4HuC^=9M0u-w(zRMnbewnTPs zhNHXn(8^t8sE~j4AsP5fN^V|&7xBKF6wXK4O8N)tk70%F?SZ6Iivq@6YZiCI!!R16 zX*~(3F7c~jG}FWv=aw#2fMy|%};>5SOY5C-q9ssU#Yrpej{$X zFp)Wmyi9AW)aZD~{XjEhU|P=Q1_1z&Uwu+kb_Nxl4V_p$IB0(yCd5o!WdbJH51$;? zkk(rPKoA0m@RO<38NDznV)%bZCF}NEmmJo2t=}uuTD(~{TSR@A4cN6=kbVm$Gr8C8 z*nIAB^wjzu2AKsTZIqb}+P=d~Hek>ICNn@-0cF>EdDY-AAn8L2TrcOks}57cKK$G* znfL2+PWn`N=IB!+J(2s0>s$O4Bnn>Gi7Q9=k7P3fT|o%aM)k=ii8`Ar{3eio9JV=;cJ`@bY3mZrcyO?3k< z2#^oPMkm5p!2yV%5Uqm%==_`jS&~HT_EPl!A?hoDqWr%1K_pZ{K&3$%q`N@{2`Lrn z4gu-z`p}JZgS1F@cZoDeE}fD~cl_@zet&;wc9>!0-TU5qPd(>3=TMQkzo{v-{vojO zC(CIo77M1nXPxIh>t(f{y1E1R@@u|A-O5ZpY9;7J5#aDMnyu4hsVks(Yro!TufZF9 zGUq1sv)a|{X{(JqCo50XyjsX=H0`;;$048$ayXv{>el(3}^APA=VB=22zk`T(c-`DGz8TaYUJpT+T80HRu znQFM#zB6`*29i;q6rv`JwuygRG+k~@q@_Za z28jlH)@;~zyYr^flxN52No<-gmw3|L)+nz-n;WnHo@}whuPh%r95$2#;%NW8i}R1t zgMm5!@vgK@&Pv~|ML<{617SxtI`}f6Joh4}%-K-X(89Sa&4-^^zo_{j4OA{4{RYo=^Zdc%On&u zE9WT7KvEtA(;pLCp1bM+k6?6%i!^91Z67gUaDK|dTH7IYA+X>yCPvZbw{@2DdRxK%0o$>i+C6gr4ZfG*Y^^e{OZ7|SIsmO07I!>- zmMHn|RtaH83dEsB$0|G3#{{f|fJFrN1^EMfK+zXjlLyx3*C4Z*@>ELsmc$az;SHCU zDROwgeT!CLZVov7ZE_1emb$*`O|}b%C*XeRio;y0Snqbdd}iZ4Pz6nye=wZrk1!GV z@Rg$lA}<|o43cPjnK*T1i-j(@7qx-mcKcloSg@7TGZ*O`l0lb2c%D`MGdEA+$OZV5 zyoOr~wMUUPR&|Tjrn!gh9h1vYBfuWNH>EG(cz6yV3tfx2o{?zUyWd$~J4>uL@wh_Y zv_EzYLVN7J+#2Spq`qrY@>4{)pgMf!r@fu(_Un&@xWs`k%L8^~e|gJ9eM@$&*gL<$ z{{HFZ)7oC@-fe5S@ZP3$=*CU+XL-yL4{`S|*u(XsrPHc4cX}}^X#&DN-Sw~32zSJc zFtaTt9nuHfc^}=#XPC`hV-}4>`}#jTDiK-e>u}VP)$vMfX}&@B89L|U*!bI?DEigH z`rvv&Sg*BHo7Hhd4QDyi30j3(2UU*0XyAgYh67wb0Oe4tE{~SQ*I1CxS|{rMj|)&O zM*U!Mb~o7;!~9Vq!XM>l*s*+1OD09l+g#H7!5WfL4}{NP7L7&YhoM;9O}}%y zTB-nbt6it_~FQDbGsUSaT~pn$ZPSV zMI9Hu7LiW?EY*x+5>CBr%Fz8aKU~@-u|cS&ufT>cJJt8Nv@`dqSxBzQ6_#+~l@-oq z1Y$}2?RafU6-nS6V-jK$fX149esQ9pay#C4eSJy)Fkt}9 zojMEUy>gIi*+CS(FnPor4_PpGs1>-vPn#Sf8E+6agwU#`D)vEzlRWYfuc;d@;R9cB+LhV4dK)%=BQ!92sK>~b zOs?I_dPn2nOTgr2FGWX@p!FTbtjh{=<0W*+>1K{4u|kK-_C+BLId_yPb7Ct-yj-TG z+|L&E69TX=HBXd}E?p}wtR@~15+)=5l967F=Sk^_#glu<%R4-z3D?8Fg2Xd20_~(S zMx^iu5P4q(2lkSBQ}g#4fzF#JHqRx-<-XhJENyMdk9|;oBPo_LWO7~7*;rO403b97p&D*4drw^)_EbUYg*yZ5AOPTiR6L-fRrid+lTV7?@>g z_N0E5%;?hiT?94JPIm?*_cokVndwU?V&HF5?>3!mm#bG%0jWzBgm(F z_MkuYh+%xm%%Ed}LaAuT=)|9-aK6-sY{FdRB^4(=I(l#4df}La&4h2{F*J3azUkhY zpJl)#fKgq8&^`x(xKP509wwJN(oEzijhpNBQqKh=!vyj^eZZ4fN|ffXL!hN=#iZMK zg3tC=hdYti{`j>ViO{z^(#A+8h_p(nnb4DXbDg&G6M*L&b%aa=r_tz@z%Wc&W*YCml0 z7a@Ff5=Tsp-@{UjR~t8<%`{|yl#wV&glkziJg%FjpS8M3M0mDas51a|c0mJ_Efi^Y zHN2Yo_<1lq(?(^u?B*dd%D2==F|Bm;!%G9!@A5QAmtSz6TVLPJ-?v`a$%5~-sRqj6 zT#l2*fJ$Z*g4NFaJF)lBl{5&>9Dlm)nVi|dX6G^Cdue?kdx0A4v?$lvBQiN-I~?qM z_o=!qB0qoHAC;@Tqfsloj-x+rO1Nrj>E;!sbglXPsMmHFi!#eyu*SI@ewwPc5E3O% zD{LTq&#&|I@22^FqVX`(gR+*F?f#K+sOw{4Wt4{2nR-^($ zwrub!;4!Y`K3b^ACqWHbj=S=)sScLGBqKYNARmZ_neL5q9 zywc($v)Um+N3nCE=yo9VAxc88oII6)W{np7{Uy(atzCBj88v~c`NSsR^6WRcxFzTC;Dr!i*TF@sier%t4ed3cHuGBlz)LzY15qBNAwg zgKuQuuRFM@k)B;mi{r?#5`nR`}Q^N+)hJQj&S>DsW|PD#n;TT=F4ALq<)M0 z_=KL7qfcLQJMunPk6$@)ar>0T)YPpVRFNB6UbSHF!~~Zr>_{>Nn9WXNVn*@;2lzHC z8qv+c$L1Rsj&c@KM1k|2X<3uR=<-xYTB^D`ctmw4qn>Mo!PV^7|Nk;QaLIf@m>M`j z9N3f@IQ*B272itff`$_v4Fl2R zmrAAVUt)@C%n#17@uZ?6!GJevc%OmF_%3B&utz=pYUYtzdd;EP(vXT4ws+K5n(_32YW z@uRy!u$^T~d4^C&I54#@9`ckc0xwvuc#l^`L{Nud}MZ-4pu(0gw;>q$4x^7@S zMP>Q4A|SN3$v$tbxcIPKgt(1(pQqXtlY6xpQ>>*xg3ylHw>JY0T&k8o+)E{Y`29l; zHUZG7{ZZ2RGX-f)pV0;eA(FQh4-e_Fi&^@|&l@GetF9!}bg%q|98t>bmumX2An5`{ z#rHCDEC}Bd4penC%#e)cMz7(&1_&vN&C{7?kI}m4M%{+D58NeIthp4%r9fxaih{OZ zs%OH3!35CKMMXv6pPJLZUP5t8_1NsnPePa!v`@PSlc!2+x=6dcZq#{GAQC8TPwhl%4WS z8Y9J=HxoIo>lbo_xW5L(4erl?9$hr~%D?Jr?JlQx7Psc4foiF}hpu1TlsKY%6H}t? z7CfFlurH1EZzV!sbASjxiJSTiF8zUv5b%4flw!{fw6ge~I@)%SFNACh5Gvaujb9W5 z^^z<_yXn|l>DfMEclu53u_=0gV)b~iyTdev!){f>IijNQ#@LSiIT7B4 zftJGSr+XcRoR!oDI5-6I7u{VRPcRU>H5{MhdLbCL9J}r)u7x(;;_0xS7m?jx!_7-r zkBxd{bu)g1)8B6yN2G)yX=a${-D7Tlho7p|&?%d#Ek~>MtYkA-t`;_seVM+xGhFA0 zSahg5Z=nA7jCPnr)jY)^h@fZ1cU48q80iI?nZ&_Q$2H-B50)$TV_;p1XDc5@K*{pzwEnME5(zXRd##n zXcTt@M1Y$#HmV{oyL7oyy!M2kL&EmL)-$WV){Do}9wYWb{dx{w5FHq3_Xc(=A*Eek zbXXuGgoFHMa6+pf=+gk*iWs3EHGS_cA2!9ZEQ49~oN_!tB6Z98S%c@Q4H z-QMT&q+pfnwuV~u>lVL%6zO^t*r}OMEsy21Fd+E+H~ixvu_ASkP#!(q!y)WJ@ldEM zdn^&&%1LcRLmCT#tYP zPtyWR(&z+n6A`v#92n$x*eE%b64Hj42d}m-2)_Sdj0Ss%Y4h!alA7His{7p*N`}ck zcRNl6;tv*FeGuP;{p^CYn zvE09lfxFybjfUHTNpGxL?>B>KxT{ulucV8OV3TVO>vv0C+t+_THqd4)Qvch{8`O7L^Y?Sur z--UdA2&~C6=zo*jI;}+$1$C)>u8ee9@%f=0_by(f?t2xZh_)tED7scgRTtQb2}<^p*dtji#I)Fdi$%ke?>efXrevdT_^Oc ze7Rk&YUElWYEEfLagpe_J!?11ND(Y#(HB3~pK8@Q-i>|l@_yDjz!`*O>W7Zyy3%aY zppdbx9MpG}j zkTi0us^Tbp2Kj5f`6=8>_Lyn|Op-Th^EwklSN@9HZiC&><}YB0zxck&M2JAG|JYwtgaOauy z{ z*p0u?@`Re^x^qUrYirkN(p+>2Yv%0`l{I+(Yel&E2`5}fo{lY0iDj#oQ5zzC&`y#! zmSGS7nVPC3z*b^UtpW^3b~tar*w$qdHAR#Hb4%QRxPt~=8)QcVB3jfme6eq$hsfO* zzgc*CXxWB@v@~Dv4K-fh-j-S|Pqoe3_H}`7%MY^-Ixnv&Q8(CateA&{+;GQ)lX}KV z+*;$VQ)dtM3mVVQA})4sCT%Btv2QKzPqiL@R}&}Ff|`>bTS14__5D$q80|{otIf(8 z#5k)=_Cq@LE6u#|9Z7KiLR*%MG_0U^x?$nEgCbgM9kgV++fnbFW-UBxCdt=XRC^NW zYmWBEEOkm8*}sg^#d+KcYRkKNbI6gnv?KeAydcEs3{y^N>#i#~m}fW}6X8h((P{Bz zmjY;UwgMu>ea8^EjvV!)gZU6$I;?sjL#WkZt#8zF`U{};xBW|zpx+kI0|znE}z^Qt?|lh#t^?)Sp(eZ-Fk4`oPz zES`M1P|=IB{_Hq^YT%XKwvt~$*RGYckZ&&_D)yFQrTF$yyx_IKCsSB4m#bg3DL$VYLl@Y15X@7!=Cg1^R-tuC35jFs9v|I-zKEFF!nlyB-|?6*n|dQ> zi1S3)B`yG3>y2Q0#&^iW&7XpGdx>!8w&!3r@if={mt^o0DMm^wT;<}% zeUoyZ#(bNFb5N_vIYD}*YC)>}1Z8CeRZ=`Uv9nQOs>)@LZF1+;18>n^L?V&-SR%ch z={Hec-(Rk`+_20$FIoT{yzqHvY90ClQt8wsKG<|g4y;fjtKm~=Vb`=spN0vg)zjLg za;g5ieS%Lo`YN?%NJg3$2#VwOw-)!2p4^8yBYMBUUs~1KW*P$+_((noR-a#h;LuLS z)_IP(AMwqu3(eO>r?{qrr+e$-GXJ&pe6C?&!$;3v!=PZYd@759`Pf6HE%)N++^)^7 zeR+A4%k5c{cv$y~=POX9vn$;>2j-TwN5q5T#dS^(JUvgjA0XA=m2|$jVOKqzK1#7a z=_s78^$D?b3zeUDO4(-(`G?g;;)W{095nrqp@-kQzV;YnwwAe0vJI_Sd~MgkG@j%L z@}XS>@uc2LrhYL*5!p}WulphIU<>q)_ijEwa&s*G#I|MWriXO3PgzT+ZyA|$0uoUm zuHTee|NFPTM{{;%u(ao;IzW7iYZpIj-K~%aQLxU^(hCQd{K2M1zt9bDb8OhJm_# z8_MaZ8;Fpt_k>T0VuYAv@nv__zoLEPG!~?0Xfd4PiXgS!-D@}Cj^;DqO%(NCv9QqH zh{M=9*X08a#qVVTD0XCmnA-g7(Mv2U;Q~B-bn`)FMUB9o72R=Vj_Gn^L|WM<@6b1* z;XmVzw9^Jh$+#oqi2Kx8=I4r-1;3WS5^FbW!ZaGEM7P&xSbXOFFT2BkA33VuZ=d(y zI!|?=DhB`vsi`Uq0wQ9?9#X=3%>jH!-RM&_(GHCCrnm0zuqSFO^@|tg5*{F(rhERi zZlH%$Cwh;Il$vkqO}O14S0~^{xt>wd*I+%W1H4@|tfVYKPXVnGyhbfz`zp7ih!6on=vb%&5X`K*_{pJ1Df2-Rw0>ak2}4yc|Ku5?b5V z2%*4F5v&CdWGs=Z7cI`qWc^n|wn8>*Iq)!y7!H9*>jq6fW4=tN{J8N+q4qXm1l(&69(ZFmd##Tc zEoA5C`)%i@4boFyk(K8uZXfaOMqN$oJMMUzJBFpsaXEmI^4()Bo?bPpNBXz@{xP;{ z5aE8}lW-K~s|&IOKBH;G66Me1?AwsF{!0fw%f>s5G3_R@0_xR-tMf8fPwPjpUlCP5 zJ6uPtsJkua0C6h(-R;a_ag2I7wZSLtk76J`5C5$%GB!Ln8p`&vbZ&@X;6Ex%{GP#B zZF){YLKLJj0@Y4K1Gb&nC&pjRzS}`wIGE3O4$2a#ob68HV~A5kD_C)HksQ|=LEn)Q zwWLem2Iqv<>b&C15{G)W7#ks{dsGE}TYR0?cz4-RZ9Tc-X%sQn*4msXcr+}JFH9HE ziogMR(w6}86qb!5kPWh%p5m4jXTw2Naj^tH321$A$RK~BZ>=P7nn9xCEvfsSxuJVQ z$~Isf0d4LjZ-Ro1vVVnIY_v5Xe-ICxsCsGI3p47h`*+p+_pXLZ)?E6W$fKh=d0k}z zz@{|74;##bC47*Lp57nTGAAnSlj`+N)Y30j^a&c~bW0e)_Ytk0Vy5Kj%Ke534y>~x z&TBH#nq+Yap@pUs{$xD&o`k*yU*Ov;8;5VCl$H4tyzfGI$CGAm* zdMfHkp8){p_s%zwg|A~!lY~5j`HnA<7+(vHv{9OM1c!J*L-|eH!QN31#)v{J8y+@k~&3X7GO}>PU#~O-zC#aKr)Lhhi z)qHn=*SZaL$7mI*(QtdMbFS~)G*-6}7jhOZVl}?fT$h3&JL|R((urP6tPYi~-OpY4 z_(5ad@J>AIKO*MThpnKf&2rM{-h14Wg4uuR|KiZR+cT}XW)Odr2v-je?^?7up@RW^ z57j7x21wrY9*vhn8X&ZDt>!hJLe=s3iHbQIFbmWvAh3fxX-v9UUR6| za7NTEl6u%oraP_NSgJJSBh)}_|Gw8^QNFuWEv`FJU1!qjBW>_me}M;iBJI2$OAyL; zN4m8$n00CPJiOsNW#a6tDEL}?a`uwZ)BWm+!{k)HBj^4IUI@PHNYm%Z z8A!_6&R9UrV1rx7$CG;?Z4Mp=SDQUj1^s8A8ieq#+hPa}$oAO5PNrkXVB@Fder-~O zGv?Q|6PIaCjs6U78lo^7^jvp_rx-e3It5|1$1>hgw&%@1B4@SeD>=C;RaZ7qEf>9e zvtVC->8fpeL*i+$*r|;Z>qx*edvX1S;q>-kPr30X-BL;}(D1ULCBtTbGX-+n(H@bm z-}zkw$X4WB=yZT= zfA^{d%tnuk8hv%Ue~4;6D3I;R&25SXaoEZHSzkO*cJIyJBVr7KY)@Qa4pX$%-n_kx ztHG7Beg4 zXh8VF-v9I0YW52It2@2c0ri2ieuOhAV%Es7sepLZ`JL0|rvK5a&Zl0`9sK zjgF4la|Q`oM&`8HXgPAWJf65;Ke8U9GnSA@{*McQNJyy0!u1G)@6>#~PPMo3qJ0jb zU%TGpZu`pnO%22cvfH+DuzcWj)`B@aYm?1^uO3D^;WED*It0;5eOJzT&udXAI+T0l)#CzOczu9zpD!$ zCF-y)A`_Z0?ANNz2n9gKZ8QLFCX)kIFGwoaxYwwMD}p%rR}-R2*WL_e_%6@w3sR3$ zCh&0igW~r|>KdQ-<~u+$*X7LgTTHKyqApOfyO8Zc#Kp#KvJL21bN2Vz6#s6+(Ob%Qj^d zW;`s-xAZH_^>_glks(8*9h-UR!mCELCrgtFHBL;xJy>T}>obpNL}`tY$_hWf=qpfT z(T8D{}eu1Nxl z*s?ue{h>zThtrSW*5G)qrwH=+Ox&l`_W5fp1$qX0EFw%vh6p+Q&0Yk#6q zz9l`A_L>f*=1f3zXRlq!!z(pB)y9vCcW>qJ^td)OY`JgHq_^?v&|OB@9KUR2DPe#{FRLRF zydTW*Hf+AYSCamvE7Fn7GCKf}f;R@W&!vr7H`1MP76zOy0}D{`7$IJeUEN<^S`U#) z7UJCCU^u|jN5P44nZBhtE#FOe;BBR}Yj$>&w$do%oSv{l4&YyUjdQk-1W4ho!h9|n zo@JhZXReDMdZB`l`OVPo3Yz!J(Yjv_01WJNE{b^Q z$U5GOMii`_*U&;^`Ar`Cg$R!_{r0e0dxwi~z75enuZzZ2Fi-U%;K0-2B&=O-Ke)BH zhqUAn;Evf7`TpFDTw-b9gn}sT*k#s9$RfQE43@@s7Y5@0+5E1J_NaHH;qMNcZ-6TB ze~=cKHCCVwa=b&${76QkxVUlzZ`Ev4S|ITCMdEtF5aJ9BB_R1=+)f@uO76R*)aSr+G%fCnT8pmu}C2tD`Pl2>k z3Q?zx6FKb9nvz{Mkfa~Qxi#OtSkGEJaJtwOVp%jZ*4v7)Mkh%adoy>B!zjbE>s%mt zBQ3*j5%EOg%he#~ajhl-zD#q26!%T`5lD=Gs{4{Sv>ua%`|Me3MZ`6F)<~cze^?qq`gN-X^0S}vT0C9SSSWZD15^H7|+wYU}R~`dF`*D(^YJW z%i-(y3_lZ{E_?vudF&{ix))N%PhKOO0A+w3#jHNeh5^(~``N?*Ujb=h$aBKI7NKc_)2||L zs_CKvuna$kwX^w6kC!Sc{$s~|V(}hI;W=$B%U?oV7ZM~Cl*F3ZlmxcEXzqLSqp&O}2 z^S@r>RXVWZmyKjuy)x_c@ufEq$95*B-OAncdK)zgoqY;~bzAgKa6Mt^e-ad63sU;eW5j{2BxY z$7s4>%5f6$ALSQhCmefCkZ24;Ku`jgY}Y1*>q|^=B82=%`U;&armry~ZRIpwQ_O3+ zAH*lJrwK%LM`bO*aMrXy1WfuS&DJuLJ$eFdE%ZTpptDPCe>u8k`KIND?4T_2*5aNN zP>=S%R~%MRewXFWQ@rk<<u1_uP+`%lM+>Hhs+@jqWVW0fi>9&O9{5-_3@pgU^_BkGqTAPuU+i362 z+DuJdt|6VXzzR_U{ayQ!LBvo8ToxoRz<&!u z!ld#u5=G;`Cr${g__8Du%A>jlu-iD-n(d!@J4{0Ch+_ zO}Ct`tx8xBJYn%T`qT1vjKPmSTAa<|Gbza2P_oa?WZXQ9`^@UO>C&uO>o4D;RW3p| zJGsrJKx?xZqwol;!p@isE=u>QcT#ddlXnl61HxVB%pdICEjmIv`iHsQ2b+Gq3m6fr+0*zOs<_P9Ww38twA* zz5ZV>v&*&I5f<98`RU$lnl2ndoIk}b<5dp9j*4a0rfl2Xc%|Tnw8xa&@N}^1*Ps+3 zYbv}{+s8gvra3?1&g?my_P}NqG(9Cu9#`!jqG<;%+a@bLET)G%u+j@nD`doP96`7G1I|iT@4)*EM~BCN zi5oRZ>yuJwplJ;MW{T9eFv-PVl4_zev-o~%tV~FF=I>AHC{d048Vc?&gvat@quGmm z%Avh|mu1)g5Don?et((zKI=1IP$58H@S}UlEPHUTbLHfNk)s|b!J`UaJyt?k))w24 z8W36+7hj9GJ-9dga8{L&xRVVgxExyySo6XzbXV21t^!W3?3KmdG9=F2rXtsr`ILjB zCLID1wJ2aY#FGqC-Kpy<{@P_NwxdRX^P<(QUW(OV2`<-4irs96S zuV(m1I^#n}X~$tlwE9eX!Tt=%wFb>m&x>bqx#0)BhJ5eO=~Sir)YU(l7b!I$)rn^X zU1mMPI5U^uTZBY=GO{;`(02^#%!P`WRQ>Bmbsh#&{~v*^Y}J98nO{Bv&H!vcVrfp^ zy5<59XRX5azh%IQhb}Sus~Un9cqePf62zvQRa&eIi6Gxk!EyMDf7eE-`G&VxTq1Ac zz8efSB1{=}_~xxX&@yo}7g|=)fBh5zXhclVg42iP4ueTnZo>2MQ{Lpi{|^f`go3%4 zNqk0pZOx@S*H4&}h~60xb?3qVKo-zw+s0dV?X6B`F{ zbyT*be)NW=M-I2F$=A@_s~o^8h5g%1g!w8FxQX**UY9?YxqA|kL|b+C`%YKgaW2C$ z7WisPchXxj^6NV--Qgk~C^?h~`<9f1!Z%)sSCJMUxbe}@%7;gFprO^6ro&%a$SJC@ zy2wPrdKV{^{;@j(V3}m0!DgZuQ-?yK<*AqIRI(>rBnzL3Le~+xueVq@$9MGXWJ0uE z?^hL>_68;-yw%xSUjGRRfEdf{JGJ-v$0N)K#&bo~LhHGb$W&ii@D&Hw$4KJ0HK9)m6j zU**TKdyrKrjU7_(Gss&rejk6Z}t}MNR;`pYUhj3^5+y@KogPvZW3@ zd)kT|AsE2*%KvPyE^$Va`qtvUP(`es0B&o$)-h4Pn`{Sj_xOp?5VNTq2fQo@%lC9b zmi~+mojc+{4!Bn;%L?!p3Et&+?Dcb3q>_)BlO0hxI@-`k)2MQs`OOQ4c)<$_@+EAU z7U&C;_rd>jRRisC?{@$lqeq8bK^?Tywgh0D$BI>21&KrNb^qetrM5bW{ii~I|1ISTqVW&2!}+UtwpN7Eliz&%FPCf7J!Q z&rD|D7fo z{3<^Vd;ieqznRQ1^YACqdwzh~av6+!#U3O2sM@cBnl3t;xjBWa!iept%P7Aj|MXwl zio(Vl#y}N{0|d{PoS~P$Gr4=-<(_uwaDG&;ZI0$YVqzJ#oOK#(*nUGuf+_5F_>r6C z8naRBe~v5#EuAK8@MIG8tH_xsSx$j%G;|DsReV4es6IzG3FiLBf4C#JH|&@hrBJ(= zcBenEqso|aiwTKiUXLj#rWNEKTqv^t3ZOz@l9`y8i3e#wHdRfdD1K;XdWF~6t*HVr zzR$hYl)UW?;DZzIC-uS@*I(U5=)Qgb{u*#t04@5gh56o2e}oHmx&o8d>Ta^1?GR**N>6smGPZB|m3*SF=6 zGs49*LSnkZMR14%Hq{$R-KP`$q-ZY`^Hm4Uz4vbB-#aDv1+p?kVk>1*m{E00;1ZE| ze0Y72oE^5nSNB4xh>kq7Hu( z{w^?~FDcB(EcYJ`CQQKy>rteo=zpuDgD^3y18~KMDAl(vpwyd`a{}<$bz1*x@kqsx z<>aa%-dB?jNp>+p8YVR1=4tp*WIH^&oH;-8T3??dENlR{Q8f(3J*5%(LX3uW(@YA<8j0ds|xQ(U1gCBF51mr7RVe-p#zC(0EFNT)v^3p?-857ymi zF=9vFn%_#OX;>USaVVp1@ij+opnH{{4f1B7o`8N{)%pXzBV7jh8^F=RB_omo-NYl8 zCXiZAi~m5*Y$dH;0#Jz@sdaGKihC5im!Z56=>GKQPjzvy;G!wi6u7WIe{N5yRwoDl zoVkHo&N!U+xr2L`P2Cd-05F&Lf?w&a!G!N`(XldMb^?k|2ChiaJvhq^)5=+@E2H}^ zf`3*^fciHZWJSmSF;nloni0*P-!P~f5~Mpi(2{99XA;++Fo@dX9_RsvIu9orDOB4( zIo*1NAZWo8K0_$%d@40qx2x5zr!P=71QISFCt3c*^-*$7Y^lA(qvYz?4=NfH>o1nh zr_k6xE%!=>fy6^K7jbA16+L)^9tT(I@{0E>ZMq(GPl}He;h&n4WHT-r^P*N3D zeTN~?=b-T6liV9?WMt~KKhvp&kk6nb0~u9_j1Wi0LW!MEwfA^0_Pv}E`;E<5?|bPF z32-!YR2Ht=2MCiE&TD-8NVSPPor|ct!diNSyyFd^ z`IUrHU9M-3<|+T4_hJnXjd5Zh!$Et5x$}**p&Z~f04MC-PW6~#8?QROLDT~oaFCLM zMJZwGA@oH*4972b3)Na~yo}5yKA@Zq80g$FqMVrCY{e#q_8RQ`jkqTp2*X3Q%5Og& zhUS9d^E;e>VsLQ?Jg3U;8SI6)4cl(w(Lo+7G~YOEI718@dnUS`U=pqz)PA+$-oH5V zT-;HIlE30xtKE)M{9Iu*jq;*o_E+W_(Nts6!}zOKuVDlBQGg`^y!3B!^!o*^{Nv4W z!e?80SPLP+rP$APK^V0IJoh5o(y!`l;Ec<@x;}#aaOuE&|GofT5d`RJBHWx*32$yH zc%7X@v|twZ#L&te{xyuq8RXA?K08>kqUJ z(-(kuW9-1onk3^ii(0aGPQwf4h|EmDT95FlwXLN5#J1_7K%N2O@?^ z3!}Aq^BuZZMk9w9jB4{P7C(9os7f4BvI5TZj{`kIiMYG~HAY1EekfEW+?#Wn@I@!w zZO8{c{pjKtmH>0{5S?JL;m;#wT!^ayt;5vC>1U-6l@455jR7Pp)~@?5$%z-sWQo^( zkf5P0`>8TO?+Q^iTiteMNVu8%?ZdnXf*zaSfw!R~6^EG)i?>f@QEdSzbJ98d z+5uqn(wh>+$r;sJH%d^5W^@~64`V)#6RFjtwt!MVK-3H+o=KKk@n^H1{cu@R_T`>r z${zt!X$OU6`G1}jX62Ud62%l*e+ArII(42FNPz$Lx|?5{Stq0$nG!)O0@YEPqe9Cq z9AMu>QgwHl&g*8z2J1Y1=f{2T`ZX(2T$^m~T$i|?0KP_`f&`Y%&aYeao#cF5Xnp<< zG@=bT;@&!3^}A$iZqBmRfC0A}ClXt{BHgy~Fh-5)|NQ#6_or+vqhg*8WLtOC?(eXr zu(M-jeZ(uc53qgUD`hOp2N1Ez;|UULv(eUr9W|~1M7)LZN2wPQqV7WK@r~-AqSOfLnEsW5TySA_`Uy}Hm z(WdwR$Z)sgfEP+h(vB`niDmbIF)d@GALK*E!V52*IKguL>J_gJf0J2?gguH{520|V?9LyxA zAAwJFYGh{>fK>+m1Oe*v%^bW$Lb4_g7T`3xgV+z)ZQL=_zq&m%==dRR2AOWVZlm(e z-z(I1J|nh~cN%RFTWd%wP(HycUhRl5tS~$gFGNHs{7+omP{O7+C#!BN*tSel3Lsm3+`OoH82K>?fDt1?UYt&h(y{2k9;$0*b|!c{vsYt$%Pb7&l*OU z3p8pDcbbO?CkX`;yx#)pSuixle`-bzYEBxIhBm7Km)xmIOZZlg-1EH8jvLxEOvOnR zSime8rafoHjC5sqStq*5e7TVe&kut{&q|*&gVPdO`u@11$o_oKQNr!r&YYvh_z7vx z!K5xRcln!Ky5(*mI#~uT+w8>H$@0Ts0|{l0zc=x4Fe^Z4Eje#jiBf z!5g2|U~lgSJqI4bq=MfTF2aYPDHdAu?w$+Kl;^Xf%>*SPJYI%jTPpRRVL?=+DGU^< z+na81(bczWZJUdTnM%bohb~+zISgF+zf}-c;;tV5uoSD`G11g`(>qiMsU-4B5++5j zYax;s`tyVZOZka1?c^&{Q-=D5(WJea%JtX%Y#s^aUQn8wuBcdbm3k8f$JrOX>K%Ku zoKr)iIq)D~gTwAKpgFa9MLWI}r&W$(vGHbqZ3WR<&83YlwN>PL=Jt0vc zAq~o5HeQQ~II!G>x7{@8>Fb+s9k2TS4_Hc|c#<;4uoE+&;^92`{piuB? zjNRVfnK+*U&&8}sl%?gJ4~8NY)BT|$%44qk0)NarL>w}j4op4Bit0uB_8mQ5x=b$N z>|*>U#QN~`#}*{Nl*k3E=joJ>LzBPac4PdZ$LC|Al2_03o63dH5JcpgiB34T*TXZk zQeU5v2IiUGDJQU=K>JAVTRphIOz}gjV@wJjrbj-pT)k`p%rnB-b0n)qIo57h!6rY7 zFLQE?MxY~(=U*=MhCqfGu&WVk_cS;V?Og<|QC>=Cm7)2kWe4oh;z?wPfXn5I zVhwefsUhxgqb--Bst{8j650Q_05(U51pA$+h0~=WFFh@9ufI@*ZTrO(KyQZJ+86qG zmb5w&C)4ZV=WD7cd0PW2j~SOEsLLr#P(|d_KX*A=U3A~oKSdD8Vybh#2u-j5#%3vE zvh?%4V^#CUI^_|Ay9}*_Yq$F~C(pvuHqoJor54=VRuDsO4`KW`u7iUN#rA5Toyh~< zD-?ZhyyYF`keGxJFzxWeRjzBGx=4Csf6S}mVwa}NTPHvPey1bLqBL-sJ^SAhSR9*? z?lUfp6qTc%Jan>|_)@i7d~@^tL#rI;6@I}hE6Zx;Ys=>gZEL+eiRWLsKOuC76F+EW z;fRZhw=6eM&8b(KKl*)|E=-chb&FwUZgzeQSxCH@G?9*n`(HNWFxcw>uPgEc9q5*< z%}y7YJPKM<84C)7DP~EUVr-6Lf#-zTO5VZ?AWR0gLzHNk`^=6D>A5T@i)*x3A4M4V z%S{tGZ3#dJ1aEa8*U~4uvQuFZ`=eL5lCndLBNi*wH-gvg8-E(UqMcS`>^Q_8+v)^m}Kw%IIrH_ z8oePJ+`HvyOT%xL?3y-^Q9uqRszEu^A(@S4q3P#?-VQ0w58dd&6xGlI{bP4+e7^9p ze1hj&@bMKkO=By)6ck<~(YO-K5riwKc`~1uw z{dqFt>Dgt*eRNuiD8`9a^kIR+6=8mQ*T3&)n;AF9exiJ$ps8xmHmZKaQ7;e2xoxlb z#5EhCGM)s2nxkj2Si@|i8}R$umt)lvPdbQ>n~Ub0ZPDEfIXP|_)!YqP@!vOcdzg%5 z^+urAVt57Ijl~)*T!tSg;Ek3@T=mu01mhnb#>OtLJeniI#)?aC9Z8S`bZLg zn6|N&{CD)uUP&w#y(i0&gvMo3_g1Ys5?NusYoa^%t+{lC)0)zy;59QsMNf-V3A1@0 zD5^?#br$3<72vql=!jBOzu4PwZalQRvpIv$QLCGWmGk{-A#QrWcU00fwx(gOa<+aY z88r89G~@59!a|o$5+SKS>q514{0GP1pFlTNl6*Tedn!$lFEo@$Ry;L-t*Z8+?H{ey zSZY&SLq3;d_UjFhrH|HssQ=FSA;Fd52Yiu|^UD!jDaLanT!5(VHB{gtoSiih0Kt8tY_|UEKq21V z(g?a@B+TB@IavqW>DeI5=z3Rv>up*aiOI~?-JNk4uvMO?H)cv=yR8G`LI01euMUfH zYrh5y1pyK1Qb3TFZV-`@Qo6glyA&xY0qK$!>1OEekY?y^7`o%z1D@ae$9JylT%MSj zXFogcSZm$)ev-^5vQVC#5R}w(I?%tcvCvV>I*EI6MS^AFn$M4&o3`prW@Yc7*BTVc zfQ$RSmH%WP#1S<|m!1eQd?yn;rK0fjpZ*7=Y#3+JCDLy>vnj22cgfcOmfIZdAzS*W zYVo4c#>%yh$k+bv70Maqax@BwNULq#IMwdDhmh%U#N>El78>nGgLW)TsyezlW~uQ= zYem!a`(!4adBU8GU=puAxI$QKPHVtD!^KpFe%- zNURW9m|wZ)WMr^l8Ax;C(9Pm;SaP^E^$2Xkua{u9blxBgRHLbnR>~UC zAsVp zk%Y}qL{4GVA4h5`EU%ZI1>zg9&Fx3;BrZF<|13)Ubv)oL(83%<*_=yKLON-o{!M9b z;e_ioP9|h~$>#W4{rcdMEsl^i=^hJ(tUy4Kjm^Qw#57sGh=cst-jxO3`$)5sWi6)Y zCk*G#O{G3Dy({AN5ahML<(~tR`*SHI`a9_B9H?MtpzAZ@8Whs&T#%^TTX`}UhFrlr zdB5M|7=i`bTH!8=3_E6g1^q}+sXLVL%+6`>-r>Q3hRcKCW zEw5e!lZx0dU-=*^j|zf()RW}D>Kg#%%s`4-*0(gIwNEOMA9eNEAIN{(nx{=3jCT8I@2NIDv~F2(}{?l$e!8&+<3aTFh2R9?Q2&0eRyg`NR(cFOY>hl7hj0j21CU%1 ztl9-(yUoK7TUsc8Bu0psxKMy&bFdt0Ydo-x=e5u-#eePcsFP|P{2Y_}47G2~rI3$_ zv{<(uIK99|5NdFz3>Q+fnUE?dJTka0%XC`CzvSO?v1oB@ArU9%C5t~3XWQ)v%ov;7 zR(`=Gm0a@rHPJe`<2^^z7s{@Q#aeHu#vHsy&5avp8kzL)lH{{i7$x z1Tp6$;^X5=2bccVLD$DkH2f(#$*w|fe06V1w`v)-bF5cCp*zS(b-ZWc3gJI--x-v;CFZPOZ%eGW3)fgUIJZZjROfMYb&F;aG z0eEPc;Pbh48|ehr^-Z&1vv&L{Nm*Pyhl7oj0|<4!CFLsVscehPZjk(Bzi2025k9fDd=8}u`(Uk%Xsf>`>R$`&;5jhznaj1$U2T@7w`>V|p+>a9hf`rh@U*D;7 zT|%d36EjgwZQmYqfB}8``n3u9$kEziu3uA_>8e_BeI$dDi$19%ecj)i$xfhl}E^izZ2TrCysG6D$I~Xwa_BVR=y*3d8$(0NP^*!Fv#7k@m zXY{l@NuSB6m7S#R*uz#7B~{hE2@(Fio$+iOc!IIBY<;Q6%%&4+%dS* z%!RtKief6$0_=!(AGx9vr$`>0Uou*gJ2)&~7;;=Ik@EKk>m0^Zbn$9R^kBrXthd$0 znEhy zBF7jN78Y3YN=F;thL^@HHJf`!V(~olS2F7utY5CgWOP5Lims2gOqJ|k9e3S*jDac` zyWg9$jP~?ajkk0I_y+%k)=uu2o`^lCZ^Bw^I5t)H{8A7qAC8hO`ObWhzKLnNCyOPo ze5AsLYB-bb_ylcN`)bs^bnRHe=lJo9YzvTo@bK#pP9xPxzSlvnD79=$NSQ@FXs&w_=?q2<@&z`)- zNOC?o+@z_F_{3q{308 z*mnPPza0WkbwEJE1ss<)TRfe5rdk?EK+k}&X4&3Zc%~ zJ84NWv@-u${!^a*gEQBI-rt7K#{+e4CkJjG@dxNYmZQJdmG^B7ZLW^na)sZWONM=T zb}*w$zR!%U#N>)T^Lh_`XeIY0=W8MaeiC$I;=jR2u=VfJemOolx2+~2YyjHA;Pi`7 zM2Hn@w>o~(HZu|^i^QfWV`QWY`%rRSP_$F6{msz>q2h-y7{&51I?6(cBeCvMAo^SV zQJK0}j%atkkp1JV2&ao7F_x$3E5PJ4?dGfQo*Wh0L2R&~5QeDr0|iFoHYT(-Vurez z+|NYBH5DjVuCqajiFprc?#6L^H;%L{e&tS~i$mv8W8uNZyl5VUZ8XOc&jD$(^D}b` z_k)uz>b>vq7+n|rP_N^PSE*hf-Se{6cimPIzPSqAcFEv>qc(f5k3dj?Y+>G40o7jA z=jV@z`1U_X)k-xsD7M%_pbE`x&-B_O>2PB(WMkF%yq?9rXK903F2zb+GDQ=fm`GP!B|Mm8N)B+A59Tw?`(*={5Ix=t zbfV?e+2~#1l@WfgFA7|+p{`G*aI%+Mylbv%L=MPj1hMKCCvN`+YPB+$EpUt|8L7%X z#Jgw<*i}QY5=rB2bSH(!ftUEL0ynX@Djd>P>%*rnDPM;H>`+6Su0iYN`X?5|UW?i# zM%9@UY}*Q2?Sr3=#usaAA9Ihp3@t6w7f~_nYF>S<@I%*weQ^SrS`WWzMUh9hMo6-R z!Fi3mL~;c(0>7o>MEP%#z&7ntBN;zz$)-~LJ!*Jjb2Fc2HskT5mm3Wzz7W|yz$nQ| zmZ+9MtXG*LPiA2;`;(r%tYLDf_dV8K&j;gMgVx+RL}IIr2+hK@+DB_?rHonfR%M`J zVd1JC+GuoCK3ZNJ{=OA#xri32v^SEWq4eyi>8q28l_fGVG8DodRTl41J^Eh0}^CB><%%uo?)ukmybx(&aF&o#IKj)c}+m_B?caZJe3l<#i+0mjv{LWDG4 zb?|H*54u{Gr^*fAGS8sJufp>1pFLkQ{qp@z&t3Cxn9K-Xx#?*f&PWTNvpB_&%GHi5 zUxn2MC^HBC-eVZj9hS)rK91&H8R?st`0fu{`m#LLUuz&nAPnM_It=j!&--xLmkMi_ zreO9IV>*a7do#e!(h=%AF96POsz>5G{9)8og&zzcPKm0@Fb(OHYY1D+;sD;a7AdsY zR+ARES^bl1j*!>n(G!$~nK+UJBd=1m&Ewc|B@ZaHom@38LYHqRR!#hF#527FGz6+l z5h3%aP9w%`Ay7>(=+kJ(m_~eKTFixxNO}KdkinH^Uc%P`M*H_BGL-2Q?yjW_b=a86 z4dv>7{xi=0z>XBIzT+v{dqU{X+4dzy7X*UxI!{5UlG5lgjC}Z-WjtEtOC1OwUy=Vs z^3;@et1;0sO{>3$2&^)P2UDyrWjF`nZKl8|B4xv|^MFz0xj(-Hazys8;X1TqhvB?! z>FK}k@JCTHjhj<{{q1fpi-WztMenHNJ#?P~JJ{HT@2bd9Ec+Z`7ui(6!i5PhV2|VC zf#&Eq+D;uy^$8Z+)ggsIo@IN9R7uyHvp7YXj%XEux+!Z_y}hy;H%vdB&=S}j#xV(B z*UbGr_;O5zMUW>-(eM>PXzOMyPMxaeVVhqHD!5tQr?S^KzhqU@?64*T*7HoMSvlIa z8M)eDM#jcQHm?r{Efg#bttUwJzGS3|T%?Q;J!8HcdHtLxo6 zNd^$={U*Q{1qtki&%@6Z4hSF~2LSOqmOgvFBP(ZU5k$&z<{$-qu zGJxA9ypoKP)8+C7<#TCUYO2U@EiaxwmmRO8%v3wz+LYc8lLIG{nCDG&yki#xj6!{VaEEHwC( zp^$V#JsfrMesUV_=pibhSK1aDo!0bieSO%P433v>JdgKJD9Hc%%^{G0w||0sNKu%1 zB99q!OEZWr4_Ja^C!?@nUQ%j<3L)2g+X^MOKl{GwYrLJ}?2bz#bI@y_w zqq$IePYJ5V&Vi&y_TI*yDh_{)nXyI0{8TADr+*dDvLqKmNgm-u?E{c|nL#E|vEC&+ zlSkRcc!2d&c=0hC9}vEn$Mi9f0Y%V!@OhBcY5Knu&nGIS4RwA z`OR%9R7IcB+x*pr51zkf6gnP}vmf2e|1eat4M)?s)_!Bi;dDB1944*Ac#LrwKmGAt zAbliTxmp5f71iF2O2WX7KY~J~m>kq&21X+$*87s3Jv69?u-L|?v%8y;uGZ+amaqXE zloQgLbH!9*)6vfWA<;5WU^`pg!dTO?Z0R%NxrtLBpcbNRPaO%cU`;42D{Jg*tUFZ+ z#+MqO#Iv@wZ>sebx4vtf71j;!#F75uIA0^3gj?yd#4yo-@Z1pJC(|w0jGFT26O*CD z38M3&oypbp>pdBeR#NM$W#a=ng@c>(nbJ`A;9Xt2zZ@rxIL=E_o7ctQjVZTtBYo}T zWPc=!cZKmra!GFrkmxL~HC4fq7`PJe^sgV5kl}rLZXez1ihpnT@zeITCEtbimT?Chl@1!X1AUQBTO7Fzf6DOz*_TmSzouS_g;fmVH0yMXBIUl%Y)tg zF<<{`O}&F9N6{%v`Sry+&8EK`yhb5RX1p4ETh;N{M6jR`J7Gfe40PF9oavvN-BM6+ zKjYwB7n5hYyI#j%)EOSFQ28X55Fnf>8@GJdUaDXBf*dw=O@=WFh2iyBGh z_k|SBEx6yBm=7QR_}@K;qYB}Nqk_?za>Z+a!9PE-{1eU@EM;Lw$o8e>iU7)|D-qfA z?>b}|Vz}@BsBQNK8C4RB*E(jlotTZGRM18I`H>Zh@rQ1t8SVDmBEre4^sbe=IlzFx zRc~Nt6*KCXn=0yLyn4Z#nxNzZUT0brNhZf#Q^E6yWt|dDab4|pCxXwy83LI{sz^Bd z#Y5t12Y)8NF9}Y*>FCcJgiP{r;VagEit^<7aoICWo%mn3M>Y7sy0kXeWENh&Kq%N9 zeG#`W%J)J&!&Y^2!g^@;NsLX2(%#u8WE2T`u4H)F3j$v#+*$l=1W~}XGFZ~eQ{TC{ z71`y`H}^Rz&j$BelR3&9dE+UAbNA2w%~@aJ9dJRd>UW@sf6r;eyffQf9@NG=4V%1Q z!qhC@KM;BHc2d6kzboM3EDU%R5uE*g=+LtUni{MCS9Up7qDFJqzv-~IA#~Rv@7lkb z#4FxCAYb$DJkZlT*MtRikbmE*f|pXk zzvb{Es(A44#3))nS1%{TP`zwaS6{ciCQX=dYU*@*xxJGsQ7!M_Zf|xR34+8(6c4!j z7zs#5-OA9*@Nep-e;}kCG%QwQuA27@3~KhCIxEMHXn5aEvf9PnBzKL5e4W~o(L6B! z8xr&lw>Uyt&Q^YIX})us#6!|xpDMHd5^U=1|9x-r?t2q$QC}|y74cn0OoJnXizY}u z^Q8&*B3vIpor(u#Vz{<2n8Kga$^1JCYVrTRWhAYQmy!}ZfEYS~LB6G-+ADvhiCT}a zbEQY<^N_;B)%wkPz!U78yUF;F4==F=+sEA0FZ-wWr@r0n*^mhAr>KZ(?w4!)=SaC` zX0cpb+Tl9r%B942`x?RqPur-x8z-Vb4jo%?!Db|~QFMPPUFCQ{ixORWhvpgo(oBleFyIdRh!*Tr;VV$ z*!fuQA87`lGDi3*(tnGa+n}bjvRQuISLw%6Jg)s_wYa=&`4~soYVp3H@_BC-?HTM1 zvcy>w{lAlu|DG+1{@sVAkNOBbI7&d443=z>TR~1*U|IX^UyFujrw2Z}V{2gv5kD9DLSLAwW)LT@5Zk%Fj&gqO1`#BtA7^%Dm(uEk3q!>K6Xr zFyZ|*!7#Oe4%8Q6=4eu@;oZUv>WG~D83gH(?d&RlnBHRBAW1t0t1bS+Gkub+e`nst z7jBG-f9hs{E{3QlKZFy;A)uSzA6x=%ZZzn_0qZ%f<9zkrtK?QX%-?cnQ8 zAECK;oK6fCQP{T@kG2s&%V%9ONguJmGLY_4?nlen?4UgB6D~e2YA4 zyB^f!@ z3o*#Z9Essl`|Eb$vft~ZlFyRj1c1Nhgq(r!A`Cch3kzZpk?ZL#Yca*b!;i>FRh^!# zDK#70193H5o6`2t%q4zP06f3NZD^c9bLCc5Q%|%it!VD+6Gg?L1Ozz;=fvXt%Gc`n z?)uq8@ylDm2&ql>?Wss9Ec~UGl2SH64BH(g-%@j4_Vc~5**jc0&Pt-R5MeR(jBkR$ zEHYcSYmJmE;=vFX0W{gX2IC&G>^IITT`Bg*PKh-^hgd3wWiv*2+q2nIQ= znPP`adrY!lGt;crm{J+zMYCo`Mj}d|;GdpVF2Xhg>XRw!W_BK&yM7*OzYl`tulH)K z?F#F2op0^l(!`w&TWPviSWK^|I@`7lt=Mf(9f~SQeM?tqEql4is&%pO&@6`6o7Yrf zur;XSx|;I}CKljd1zd3n>& zG?w&9YNTt@4t*=XYgP5al2NF)`#=}J2vYR|KR4%uF3W_LscvvdgkS(8(N-{sJjB(+ z`#aj?K7Cr4SRYRPTWG|pOPp;il!FHtWYG&peO(aOh~0pi8LmXB!F85!sVrM+&d8so z63-)K3_ZWh{HFyFmH4QAu~Up*zjx%2fXhPt0aK+0LoQVV_9}^XLvbQzgX>!!q%7x=*X9E8k&_Q?GpJKaTyhc1C7|85b zcY5$3ag6V3m`bPIjFim7p&CoJqgGX0~=x@xVn!3E@<$be+96Y%+Iwd@IRz}^RtaE zU(DWhc2$E{KluMlDQx(bk}&TNh$~@3M{tO&M|^w@D@P8qx^<;(FB|ySdae_pX)_s8 zo8>HKt2Kr=y8sG1kf>j^TE#hg_5%j*iF;25wjpKAOua z8NoSQkS6tkbPr^GeT^}x{4j32pOtC1xki1o`I{X$82ASYoa`3Anfc=X{Vf<;Ekpl9!S>G_i*`jclY2xgKu0IOBg;qPb*VKOHW_kygoIOr3 z$&FGI!IDXrxvlxunUR}MPAi{Pm~)e_xbdy^I?!5Q;c2^Ebl%2>t-%cJ84|{%ZvV--VGV_SsMSVTVAufYw5& zJGp~f4x>7sDBpbRw}?4jW6mF6vF#`3d2eoc{$sbll?r#lZ`6+l!iCjmF4nO~N$#RaRLghg9&<*?j8+ITQn?#w&E zRv=Q1ePlfNa;av>Z+RbJI-d)qUV{H? zo$dI#OyC@v8UbpCjV0PU9&=4U6HqepTDG{0sptbdnxA7(32F=Q`67SwWhIzx@l8+^ z<157iVWPZ}@)4tw^5-mhRg(&{=J{R%<%^5qRBw%**CY?waN+_c%M$DBhy}-9N$c9> zjw9lOOomni;&T?5s#NHv8zA^GH!sgZb@CSl~{+o<)+w}6BbPoIQVhyKk=#+A3Wd{-Ws$8p<;8mPEFjI^?`?s&FtUu%Z5|5NpAUI~d8Ii34Ud-ZHzu2P_{LH>p_ud1rtRs5?|BiBJ%LSv{p+ zFcz-mixFdv+J~N$aK3Q-I>r~%P{H532xlVzhhGFJcDw957Mo_iGJduIZ^< zrRKX5)p5Q9W{|Zh$%fb5z6!XjUahxIp(G|zYh;LHqKVmble)V_-`%c#9E8|2~o#$0u{!Y=mixmZNX zcdMh|gZ>`zv5_-@b1YQ?S7A2tpDLT}DT40p`x>hOigj@COLdZ6cVwzxnML<0uj|a8 zhEMceU0n^+yptvFdt(weJMtz-7e&C&PQzRivotRlI;r%NXXtL96DfXsWa#y!1rcy& zpQ&BG=d5zJ#*(wwKR55=w}YJMk6JK3{=3x{QZMo3u*tRz= zo*WSo(f;G2s%SMC=Jabe5BF(CvKIjWJpV@5r}v?v>*7oh6i{3lk6bBhT+fM=!veC) zCoI=^2?e##CywwH%x&-C-gDJ@y!APS&!7ZOM8dhP-_T2st@o~rW0!m?_MTDmu*-Lc z`OWfj=3-dcS28;XY5;(P@5*iQx`nn;R8AnMCB8p9HwNuyFjcz^;vto$x+QcNVbq^~ z#0LlOJr`^?s3=_Rx7H(XTikNrt3@afhCt4yPL}*=)yuG4xyfeTPRY@yht9sbm+$a= z$nq%o5tpRwMh7$#Vp&7b(rpA1&ns@AlVpHoGQS#WZ5s#VMp^tZ!m~1c1|ahqd{bj1 zWkYX?x*VAl)_W%&5a-)T`VsRUaGdewL|Q$S%8_idk#B&uSKRaB$Erxs;%4&7K?{wh z)nN;jFTcY!A={mp@eZm0`_;^Bi;y9^K-yarKq8#w_Ehug#JNjdwEaLgwuYh$7a)UE z+jF&Ut|ByCYg7-PCm`SetoPYcaAT>73Qk%cDw3{rp`ASozhptuNGwpRJ@!f*hyoJ5 zHfi;am)DWzX|p1XU!a>p`>FGp_zVfR4?evVkIn2hK&);9&KCo4t)V`^rZfiy-XJKj317z9 zRT_|dzP`Lr?ooZ=1EQzEtXj?dhG$yanbQcDd^@aF4rX7#e+Gyei#cxBLFlpeX48#= zJ``aoUgDBTmkL2w1PyU68c)2ln_d2F3hU@(UlJhaLLfaEz1*W}_B(zJrd3##00_JQ z3yRjyH&v}NQ$f=TZ2g&a&jIe!M;bR)_Xx^&%Iw7M4ktN00?By8viunY9_P>DdQr21 zNK9^p@Z^Zk0g=ixjpK_!=O*~zavMO=7rhTXsv5I;^pcyh;=Qd@93)8UN~1Bak$2qZ zm}09<#A*HN$!lU;KG&NX=8N^n@`9Nup-oO_Y9FBdgi8;>l5j>Qv?cg#eoVZ0?|P7U zq2g?c@aD~%rP_Ya425a|@H?3TSt+Y|xI88M`*)Jm!rY2g9_KR(VfQQU-YPyH+37kC z-)XUueCa))yX;_(rH7askD5&d!v(8oJDoU~D+!J_tJM95&W!hARX#v#B3_s6wK{Y8 zNLD}qa&ZS7pWQ+XLIM_S4X;T+p@93yBxAu;2qHAr|O}6n<~D z|DR8&i&@ybahDxllL$_y{OaOr1@wX%*Wv8^XFdRF2a8#>+JNy0ouvEFIp_Oi0@QJ@ z&w~A@E7+Zw>gV-+G$faz;N0u!uZ9C@68NW@!|MkY1iJ>-xJqH=8GyQ@0g|yV*}uG? zi?d6yjgCK|<;DEnj+%sUqQC(bx)@qN_Otp9nfnQ^wh5Do`7YQjJ_%5>zSjH6zU+8=Q8Sdm+-GpkAd`Pwk)6+9JSS%IdIlROr<>C(zS#-r?*<#jN z!2DQBa3)}Si^yjE#Gn^1cuSd zRHuhG zD5C=hjTn_&+{HR=?SKG2{%SA3R6>gmM5GM7pY5J?EqRi#-}Qg&y2b2XKw^cog9o77 z#cfYarW4cRadf-7^Mi_MEe?*a^j4P!b3dDd%re)?(~uI$;A-~~ca%pjC>uzHZL@y@ z1QAf1Q(TwFtW@y!0_A4wwr5N+f>*X?Z4Yo^i_7!hy=%idqK?jh_6;%SOz})H_KL$C z1F*1D&aULd7W4>Cm5{$#s^mUC1{Bu{?yjFgNUmrBwcR+<8V0oPZ6UbGzyk z<|bJ;G=X+3!Jq`<)Zfr};y|}I(R@|SWZs8NA)(p<>?^n#sPZtLCJW7+AoBFA$E4{n z=mx0=FlQ~qoMJ#KY6CN_g#G=D;NoCmJ7el-XO6}#W0Rl!N<@(mf$*|?Y(L^B)VQQgWF59&I!>ga?=r8lOK};3rILWeG=79iEVmsyJ!DvDvOvwwIo>3 zni64+YcBY?-%q$i3Bhmixl*}-YJkU0{c1RSVq%11m?}?bZDP@|b07Bq$wDE0iD^73 zYd#Yys>&s+4Pgtizq`|z_`3(&@`7uFm2 zhDBYY!|wIt-1UbI`B&DFe8=lQQ)M&z(Zc$2h1K|PN)C=6)0)>eFgJ#E+FhspS>|0^ znsVUN5NfoRaO;$}qDgc3IdSuzRc_eZ(eaViu;Ngl;zJDyr)>m;YqhHRnz0r7@6-dC zq~`s{o9qm_=H{)kmTo{W^l|oJR}Jfmwwnxif653MtHO%r=IIR3f*GDeEx~U{@&8H6 z&-_qzwOdu+N!Y4d1Jss;724Wo1R09ak!~!^X#r~`2$Fq;`D;{5kDv-+X&s>91Dgrd zGmwIC59(Qv0ZW4+{w;T|T{s5eO!}7;d|$Q_cw~l{17_@F7(5fi11<`KbQqIh!aZd1dVTcU< zwY(w8o|;YBODs~avl#a(TAvb}xqpu5ON8%6cgy-O;EaC@4rT?K?e;ZGLybcX>T~6& zc2MdAfR9Y`z;hs?Q2c$@`&cdJ_-;QM;5$e~J3j8h3n6CRdm8-G;>yj0trjBFR{8=M zs4EwTx#;ykXV`&e>?yPm`Dhk|T8`~f%hN@&;_lNx&MrOcl76}>aNI=AYH zs>}kNsK%Zqf4k#m37~Y>l|mlymcKY?XLB5J+42Z|X{i+f^9! z#)>VSZDbBoSQ;;)M-u!~ z>pSlQDeU2r%T%1JipuTrFhQrwFT~#-oNJjL+}zN!UC&y!sQF$|S<$PG+4!(#nBmm#EODZ=TzvXS06lnKGlj3u)_w$q6?+E`?W1jv09mUd z{EgAgX!bem3y3U1g0TvUzAy$}z5r1*h|@{&zcFo;3DCyu6AP=xBUjM%0++zN9*9#2 zM9^iS9@NZF`O-*}ms@N0_88!5f;5*`hgEs%kc+!6SZBE9ma`i9+gqA0>sW0!OgVox zf##7k_Zk)vW5c}8;ii)j6rJ>}J7JX!vb@|GT{B^&dT8K_Ru>-=6N$Ak2J7=XyH2BI zFzzdM+iRv34!VALg5P(^touT8W9-lHo)EnrC?UY(aie7$Rp?2+=d$1ZpXf59qhBJgv^@e* z%}sFk&t!OWj)B}nOw{3FvpZb&B$Z|G7jm$th4UWF_asLLa9!NsHHFpuAJwi#Jf zpDd~mqN%;p98JcRE|O-sjiftrmcVNV_3b=hsgG>V@hAX8?F7P0bWP6~>$K$d#>Noqh?~qANkO>Y zJEnJef=Mx50?O$egv%W3-zQycuxN34#S?qe?K(BRNg*Ch0snQIUU-uc;Guiug8Cu} zz+5;~#(yKq>G;T}v97Bs1GJw?EZby2K-CY_N<61ixE7FAdA1Lx1%la?P4Afjw)1Pg zH)T~jV~0DA1TqF@EClZME_Bp9v!DkR+np&`_44QAiuVA~ zbHkVDf4(W6Jq!X&LvS?#)6nCsE1$ z6P4f`Jv4D!TlQmEf9034ogcFE1Wmf65e5`ZqaW{1B5p=Z-}MQLMKm)1P>9SaBGiVjX2W+~mm z;{0%4RK&Nqk71Vx14H~NP*08a(fNtltX?34d3EAw*l{%ttvYx)WWcam!FltdfX{8E z*U}i57#_3QS{B3`ePZtzd@cT(ik77W3}A&mL}z2mbKG&wXwMX`!dndq;jyz+1mYYz zr8@;k0vw9Dd%T@Pv)1n_bInb=E$Kr`5?iN{r%ly7a{32q0dcH<1WSbNoovV5;bpnD zIQhDJ-|65$QU{|fE~f#qz2FsGub9ZqvbaJ(3bJyu_2P_sXzi~H^^O!kV~8$LK>z?M z?D`d;w&|xgUmsx&KQ_lVmA|{7`xZk5qZkS=v~?&La!hv_w%dpPb^aVh zijZgvk|TlymtiI(@I>WKG}Q=gf-Vu57w9CqH}kq~2M2C&40?bg2zbtAfUy_@I9h`^ zKZ;(n&jwTlY_h?$TdRm@m9f+>$M^7FeW^SA2RK(L^FF-0OIZ=#yNq9D2Z@_~Bi)^_mW+Ef&A;v@(jz9RqsBxGn)3#;bP4ail|be#d376zXf9Cc;ICKH{sE- zUn3OXW%S6`&u-^lEMXK!ELt5aG|FQeQi`}ZnhL=z@&FP+tJi;>W;R|NEvb4^Vm--+ zM$Fe3Qai9UPSBeR@x-bh1v>Lb_NExhlrbIt&q&Fx&xq#~_gbyw4a+7tY%a->(Auru za;?bW5j0=_#@yn!OQ^a0%B-=tW+Z(eY;QDHjA*Vpn&qD3`)%Y;!p+?XMVCJVCCfeo zWL?Z@#6phB*2j^!Z>50J+6v0fLa;acF}9?tq(sSR^vzd;U{YM$MFa#JoBeV3xi{6v zLN^Cx>~W_p!_4&Ne7()nK84Rbn@k=)BV3c**5U_o-}C2d;zs@?AYuY!q|TqrllY!) zhL^9Xg3~A$0s_Prj3n++>R@sb$9ELPJdkR6ZGCD)2%MjO-Haa7XG&WCOw?v$HU1z9 z)F$JJw+UR@jVeO7jcWkt{@GbU0oRiGNfP-rH!g1srbs*koD{jJ_|V zl7o95_4?z-IZxC{U4z@qRzDfrYIeHSOaTFUmU5bZNl1~3 zIeA8UL_)ZfOhCaKq;`C&CDv(V~PR?)0$gMyiT#IXKUhz4YJNbPaTpR#&3ChXA%m=HI>_U=NUsF4^ zcd*wm-J3zke|LW(WbijUzj?*L{LrlYV>QoNDTU%}`!&CzjnN3<#u2W3wrw{wwl{NO zM~#`nRc|7YKxEG>(Sq0Kea`s}3Qu&D1HuR@j)j`yA;_CR{l4ttLp% z>tk)!ys>1#rhTLAe_DW8QH3VPklc&1!PS3FAgRPaNweq^h;lXpN2QCx`P9yr`EL${ zT_KR61_SOJlv^(F!v|{r+X>!hmSLRa)Uvi>(z`YolOR7@(?H8R@BDFg=TSergZ~&6 z;4XaC;@sjCjmW^%ufQxdf4!s}DkQucqK&>RT$J|SLKqp%BGS{?MvP9FR|h&J0WiX7f^L86 zPt$T|)`-b;v`XGZ@lJ%un~rWau73?3)dcQ-DLL$Gn(D|KR79>2SMRA(@^ZI}@PXSv z3grCAskaL-)$@W-jVCDNa}SjJM|p*$!E95%7=I~rjpN@e_!Kg8d4URHV06E`V?n?c zs8Uq#51{k3GMm|~giZ#9+;s*gRYZVeGn}m|KSZ=Oq#{*}om8^+EOl15I=z1JARinA z|Mx-G1o#`sBHISC5fs_lv2k?9ZY8KasXaD!Bg(tHZnM=I`VLxi!2inTfS*<=s*Zld zhJ`sjtMFpZGhe2gO0o;Z>(1}%Fan}GlJ0}aTexS)da;y5jhZv}v3V%OFn*nV&v>-= z`fJ{SC)0mZGyG}dvCxO5pG`Hg(UjbB(}T}`Dc@*=LR#(4(&!>bn^dvnMq!bEswsS7 zco{v_!>o^jf$k$UJdpIhiXb3344u{VBrbuzPt&*`6mr)sib3U#-g!LS=dqko2(W1vM0#I zBzr^q5F?;Ec0U70wTFquIXQM$Z)QljSz~i{To59}0z2=H!P4#N2E$+=2-H2QOx9MO z2*M36$zn&DN%$~0VB`xrU!wKV3%CE94-?UDa4WMEU|RDPPMB%M7iYY2kIvg$b|yR7 z(L-Ld9#;;8-JQd9eE6}j`6!^lhK(eWrmI%|gMzN|ERlgRc5d^+vOVWz@0#e{29xQ9 zn;7`E(X3??;6w^-&=Rh{;KKiE~ zZpfd}%AiGd7$`IDfjvv)X}Y&bw!bLrC)?{yr4LI?P&2l-v0#VqNKIVW95qXaMJBaL z7f38LoR|IIicm|zErJ+pA=;i7EdxaR3ph zg3;m!5UGE*HYQ1tS(4{Ei(ki`J>-}2@I4+=6L0RDHZ@Z=`8HfC5zkQhW0I&aK?V<@9y39B<+)ZerU~{;&FkhWOa_nGicobmL?Aor$_ji z_-M&o|55I2arBgIG-fjP8cZmM!rpi~m$;WeQZpGp;>5V2G+S_qr|}2TU(y-N#Y#ONzCC)5fiDWnrwa^K&0{+z;p+Q?S`Cs6 zBzVo&`M8+JwL2C7+K`c4xvT8W+R6m07~S6CsHrDV)7=VE{N*ffjcU<2w+>wgGncP+ z!qn6{*9LZ+9jvoW)6-y21U8R@Efp`&{KR~sXUz$VqW;&9ho1SXn-5&!h&K<_2$~F8Ub>SfbF|H(tdy*! z8K3%%rHptreq%LtzQ&Zp1oEPu(|Poni!DQN!Vu=xwEFG6t8F&zYu6`h<@el?aw532 zzfAEP;GTry3G3K^n$LXgb4PI{hzBKeon})IEc$PXJsB|}|5rrbN%g(xlw0~l6neLv z3|Fm$3Ro`LVLv7giCx*B4ERAWFVwI-4~Y@&NsYPna9^Ru;}XHbmseH}27)vJunQq4 z&p`Z}E`YmeN!&pVsgKCTTbuG90XS~~E_*@y2dsSM_>rdXE^D_)p zdf-Y=@qgF8;wB)HzcrnIaBm%1%r+5K%{`d06Q9RC#$oc?u+!$xX3B4qXJ=grW+zfu zc4ojG?A+Rhn(hjVbV^lUvNX;Uz!66<0^1mUhBYBx(W)|p8oO#4$qfhy;%j)dPA_G{EntVa#wC{iYcxbcN)Hxfg3fy#MUOm zS=zZjro;wd7{cwh^~D(8*|&aZUFM%qF%E}swKUNs_VX~am zJe`Vexl*4?$myCOFn1+}BQ~iOSCS_K6|&W0B`AHs|8>p9C$G%SV}2XiH=M!gA4s)M z+;?(iO-l3TE#SAM%!?n<-4c{NGiq~NcrJ6g6nyiC4l(5L8m#$O8 z=H_mSD_RVSAjSVdPB=+7I_~Kp@GsGl1dECt;8E_LKe#ARdo+#(f{-yGIp~?+&Si!InC2XSXOD*T>+6xrO&vA&J?uMa=6@ zo)AtHhmlQIfDXlW3ccme1`8SIdsQ(;b6@unCnbzmL^r)R9SD>*|6`+ffvs~4OIh^) zJPaF$^f>1#5L8UxP)|A#rGC~k$L>q`T3=wOU)zhHWqLtzdA@vbNOJX5)4d`_MZkl{ zrT^$(a2EFQHk^Ne1AA8-!QhFBMipP3OhR{#mM%2=MbA*r%B~$d#B8>0g2bT2WOVG* zSLlb^CGIB|Bm-0JSI)}Hmq$l-Xy%}kcDzONNX{X0lOx|%K>er%C8*XDnympB-RS&CA8QS{~+Z1WmW0&te-Pmif6pe#w*!o2Yxj?{@j3c_*f26ZZdDd+VsEzo>5% z#YRCyLQ+9Mq+41AMB1dgySo+XlI}sJq?@5fa_Eun?q=woduH(W+`FE&-oM^EYq?b7 z8~dEI_h)~0c}gHyn2n~gwbS)3Poyq-FEZ4R(8uMbkpK{hpENOU^f!y_9>0Am8*9qk zse`rEoXdk>c+q^54kiOL$lB^-?RHepN)?&WaHT+;jM)TXGh?3tDE2?HS#A90dlc&& z3T*f?-_C6ijSLE-rOS+rOX|)rzv;B$P1UXPL*0Kj+6t5wjI+(?6ETf_T6I!$yJL-H zFdKF7f(k=yl^?Z_0kh|H23d1nnHU*AU;d=fl^9qOnc7o?QQv7_FQ2(t;BETPD@?ct zz+g$5s4@AWCch1+I1LsJHoVRqe68Sd%6&SNmvPFh>pZg&KTrH{XUcl$FVr=sr0!s* zEhQoWA{o?T?{pqtRBEbB1xz{a8~DyrcAneuc|@R-YqN#(v^{vhZ_rFKc@eh28Ek%h z1x7Ehp+iB7p#pmWU}&s;3@RQXL4I zm##PP3Z3Tlv5z&swv)`nQMNmOpLn<+m3P9@=2m7JP(n_9e46D3eHK_AM@I~+L$?`( zCyOO1RCux)J>lxMk5&-o^~JJh#YPlB-Q_|~=|ZSYiA9!{=FrFweY$6p8yT4z(~F@c zbLsS(TGL%9c&WUn!MZGV=_v3iKqoF=PBMy@VrkE<4{lR)@(nJNC_YW>ded2dK5RBv z63QOWthBz)rplD5q1&vY)LM9hMX)E6Cv?%4ICK(Xfd%q8G(MFVc&bPt!sVw2j&6{z z-K8&HQx`m#T}o%M6?Qk?S%K5Sykn-n zabA9q;)jl-ZcNHr{3$pN5j#eeDc4VRq}s*O(|_~6@Dl8?7@j_qm}-{(_} zhM*B)hOb#3Ojg;-ZE2V1<||AD3wt{wilh1ENU zJ4Z3uKg^~`QqnAQ2((FC9|3XLFIGcGJekE3*1)M!d#aoAX}v!z@;=0prF5Cfhdo); zdmzH9)VMbi6tqRPJhRzQ=3TWt?kPclPpTw%QKB3KrV}%ieRXp_Jw}4epR0<*^yTZp zIPQGQjNF-L)ZDI* z-K{jAO$4N%;M|dfCQ3t%6r46Z@*qicpEON5cmMJ(nvsePEU3uQqPQW+C=~lpaQ}+5 zqWRClzbXbj&oRoM+uLK57^o%Y$K)l+LdNvCBoqsQa};VpH`J>L21~Dd{G6$9a!D>> zyXMdT!H&WCH0BSfrg5C<)_aDsLzArExeVmkWuOY~@mUZ>Tq441!H0cb>o4pO(I_FW(JypQ-gF{Y133rmsV!xg{8{E-0lTNT zUYit&(fpcW-CeBw*e|Vq@UqiK`iIEV6^daZ(D+%(=xVxoO+jxO$)ErZeqS{&P%n)& zu9n2QCU|dkP^YC-0!yjL!w`w=Yu3{K84VmXg`9gi0}3Xo;eeaRNl3LFdxLdWv)#*s z56Y%kJ`i z5W}+IFxpH#taKb`Uk?5d!jlYaEyHvE4Lf7Scki59jxAwztXKtgD529|p_&epIG^cr zmnlOS2REMCyB#NN#M;#jf6NiUJ}+&*RBd! z4`R$|8HUC7Lr*4?g~NETsh&}8ZK;0J0W(yk&>i-=gbEE+^Eao$K~@dF<~f_C=ME>} z=g}7jj5V-;aRl&G%*Dea-dcVbg(m=wWU(us{~ktel`LN z)XF>`O1gBn%a$SN2+S9+`jAS$ zz27pPV}Fbz<#5Mpq04aV`Ne+R`}4q#8tX7Q0ZT}I?HIDzQJTbk$}~MRMI+>Bzf_`9 zyP<i2QkZXxk99~F^{9>4HU=He5Rwpn?{-#Iug+&9c=4;d40Ij=G5y~J zMBg&~Or0e#?JvWhi=k6dE}8{u7z_klBYu^WQiyk>VTdg0x5xxYTl;=>w}8h`FA6z3 z2kil8<+bQp5wxUnpgCYMg!*W!!gRQN{`>=35LON6u|-U$OL(|w)qBQPV&F%()lL}q z)llMvP}L7MZxMzi^BW7ID$Q?!>Zx`nwuyf9@BZ4`?=ap22M5qJtfyT3 zDc+R3dDd?9O-)P3ixVU_SRQr`3!1#M}}o7J18k zc>~UH=c?+Rdg;R?ThQ8HXa2iIFnRCB*F_d*M3c0T20hdF$`ldT`lV;m3JxqO9@Y1~ zo}BY*Y_DCa2N#Tb;5ZsI&x-aPXj13JYiS+{&?L&!?U37WQGYLdW+Du*QK{v?_xz1S z(tlL!^Ek9p;W+9ymz@1+K5V9tn%e4obPPHTwphn#)Ano2Y90?;T<)}v-v zkc!sN376YT2!o!yEhl1t*(BQd#q@bH^>F;9k-rETbc2-zn&zgI$7A6>eJ|o8Ct3ux zRS*=1ImV63y1?L>dd5KwGkkhtQ zMP^+NU$Nce_!q_xO)rI=Ad2Py9|3iEjcZeEJ(Tc`L^w`=x;p{HdE4L)P9B&)zQ&|d zH?sV8V6w#0t*g3kX=d37L2oJeEiAVBAN83Qf$>;^{?MuWk5%3=;{mUKJ>iALH2}R5 zYR<0aSK0=a~qbjqeu!F~HcEcf*Ms`Cz9h3id?rw=rLixmtSA^;mair>k_;lS<^G zynR{e^9K!&D+m~OBugWeHsXseh%2|uZfX2Gl~V= z@IjOX*j;x4m&(qItJTTprPxj9p5oGoX^GVKtENjYZ^a8UX;%`M*DKhSpC5JND1@Kqz^UN zY~Xe~Z+xI&Io>=Z!o0AS5(DDHFQ+#19u1c;3kmRMN_w-U(xiO$cy)!WeBE$m)%>hV zPiPIg&dhR$f@0&*U;zO%cwPE1w2LiX=0@hF1;|Fz`K{M)t-Xjk_w4+!kr&Ap&kXdY z&Eow0pWib=B-}MO0jTG&>>>3y)x{=*Zt8>0)u~#8>-Ex;)y2+4E|Vw3XrPoOFJZ75 z^rQOT35ehleZz;U4sVKV8d(&~hs6yPHJKUI`{T^HUUu+wqwZjm+CiG98Y|FqVCL9#eErgaVABZjk<5u?84UJvb zgPMcAYlZSz#C@br++WY{b#1$mYxHK~4C6itrmb7ithZ1z}F?{-9ewHN@Up2Pi2SEdbJJJ&0d! zujmCXRmcM1AV6qC@`DXOi1|N#O6ac61Oo4q8k@kz;scR6ZM;NBHUKeUea`m!>z*qH zfQda1McX8thm*!6iFHoC%h4h|R)1fB)gaU=iZgy!z;kbPfMwS?X8^pMdP|F- zrO|DkRsfh7tCuglffCM0>3zrIKVsG}HS{s|-X*hKrptqlquPHcSPDraACaA{XMQ7r(S#t($%a;3EMGkv zah)W%bPp}59#LF|=)}@63|QsckegFoJ@&AOc&qVcOwtArBH?TFE*HPEB}h&$?+KEj zI{){#IL1c$exOJWP)KfPW#j*1$oLG7nESmtuY>B8CG7HdyNi%NQWdR4p@ z!dq-up9z%F|HODdEs@FO@Sh7MA)%Pnq^AD&Eo!i_R`+WHHf$$bRK6S9 zkzc-IxJ@crL>yeOgD1eIjllGL|KD4Npl{hRy-x8KJWz@4Cf6NuZi4^G1=uP6pUCkC z7R>E43>vpGAJYf9a&uUdLr;B0>zr;R9@n9m(zk_OV!7w_Tmox&CK9 zJ_?la9LWG68O$b&KH|<*McTqxCpzb$h9KEnag`gS;>dWo^5Ddx?)}-@y3p!7@W!gy z9yU_p3jG7RXY(r3Cve@;?``C@wuc==A7-#L=4vW{8YlR=rUGe!K zT~@b%0TWIp%(3u~62UA?E9|{QgMfNh3v0?xHj$y_7u+pyPU0e)bBhL(W821o2`M3{ zv+KiM)NoTC!PJbF9TOI?-j(*V0-Y#b0x~EOp$|^1`ISF9>?!*@bE^4k%GQ>@$kjzk zK?PoD@X3(j`;j;Iw&axjsXB%>=S!5O?{;18+XZPf=;JfB?XaCsqb)ui!V3xgKm!;Z z_Bpsd*4>ppA_3_Ykt&FX*3;cOrv#1UM0Vte{1vC^5&4y#EC%$~GO0*zzf^mD=Uu4@ zvK4v6v6M|lvF*LJCWn!0RVtzqI2D~<`AI^>29Pl_9(C?&hG>|2{Y{X2d z(?BM}v*p{+fg$QA36@38p=?#TsaR}z$nxK+D}XKOj@NDr%mZ_jAYkS|I3zp-^fr?v z^R?OK76L!vkyQkAwsR0K8!Ake`~|t_8v|SrgYL&YNS7^f*{jZ`y|?PCwsYj*O~t^i zsZ6`nu;9t**yD0Q`2skJxS&ZIi1r1U-mpuX`phgHa(;L$?6NQ7CcK8{upuG^!ou}m zgw-YrgrI6e*g?mgFjKS1XLp}f8O~dJTFjP**LEK(Uq+nvf1o!2;Sc2Z+Z8vy6(7v` z)n~ZYs)z2Y9uSM<>;~9c$gvjIlyah@nPe8v!d~x)phC(#_$nG|cl0 z@5L4_E(Kqkki6%onmaqCcrcYe^MJw!hrT6rwQ*J%vD>jEkK8_*F&lUA>N%{nSDr(Z zJ?J$lL(VgDI-Lx}H?`1m+V>_iooe6tm_j8jqxL|)j>8+=N_q9d8znr|FTaTVdz2H8 zTHp+(v?lC<%k6CL9lPx}_Hr!cQk)?~BJDl5SZ#wZNiRteA^DG{oS&B1(cyd_t!E*Avm@pZn}okeUR@LT(_7#JGV<@$z)p-7VCFrFV-gYKm?(vb+50 z-2)lQ>OYouW?5mH?TLucD?k34FjLxgU|aU3e&htbL1a@;%8ZqugO3I>@)Cw-I3vvW(-2ll}#7F;<4~_rkp} z>)9>Z+~Z}~p1TQ8x0y%Ka(`p!O;YhQ7X-60f2D;bj1E1n-W&ij7*wibvV=o;7atQwArMDVWs;&%P_24Td%*^6V1YE+YSIZJMS!pQ3WTqY zulqdB1hZ1lSs+f%H?WvVCD>*LuVAT(q~X+7Kg@gSwic;5T)2;Q*}b#GZ9|UI)A4Gwc09QaL`B<69;AZu>2l&jN^XS zaJ0_-^tyV*!LY9U_DC=vVX}l++MBWJ>5n|_`{cDL5ZQNqV7&OKxhk*i;qV%tn^UuR z?Pi}mthwxQ@|W6C_5QW&h{L+05Z1a=bO$3hR8Oi>Co#%V1FlN|S{*zlgHk+w&L5N3 zfA@o&`sVt=id17&+45K|Ew*bpi~ZK?#IBZKu=4G-h!8M>Be*o!3@}EoJTywpAGMj& zxIQ3VR}{S1?ulg5td0aev6UcCz){nuP9jc^NlLEYWDSKL8vqTg(1uy^9))vGj={F( zDzrwXfEEz~J$dPA7;o|t)04g#)Nw-L-d*mg>L0dE-g2`ge5eBW&NXsAN`yM^zJ5a< zcE`nbPPpMzT$^V~(%XqD?IkL=_L)Yw(WKksQ(XGbS{&$u6dqUtO0_&LW~5ufs&TL) z+qe|TK%K;=U%uFzPaT$?54vq*d24C}r}|m?Aoz^lu|iyDeN5CzFP6%`fY(bZOFZOo z-IRJ0R#6!3NPF4Z#xhIViS-*G315Z{8b+BLg4oMTF(WLf=2Xt>7R}Z-tUyo(S_qsD z*ZkdN%lr{rMXPxyL7;~9#+NUMximk68j^8wLSV|lhdY`Dw1CT!p(9A9uL)_>(eCmi zVAPL|P$~QRR;G)ZQ6RHnDf<~wNjx-#s$<|>V7q$>#^E|Cl}e+IG(f1fm9FeQ68=GB zDa3p5)gdN-bwn&076)1*ku>RX^le<=6%Gp&pXC)P;p{xOt9ui&+EXQ}DxCPa zmh~eMgFFCmfF^I>jihSs>8byhvHKaFdWMh9SK-pL+f(pXpghbzMNnmCSLm#Df;>=G zw`Zq|P&oFj{q~OQ6#INaz1?Q-;6JzVb0GRxy`8^_^)5gh`ATPR9#@eDfb6Ge82DLi7as*C6=*5QQOLKn z(Gc>-HtT4wmbM)Y;u@aKZGjMgnol?VhtIi6Fz+!+x5VnrM;#Qp7HpUKy>Fw_fy~pg z+2WVEE|`>y`xwMJ3TK!IA?8Z>r6APeuK_@Dpa}R}z&0Cp@w#!3#(5=V z$>0CCx!vU?LX%f$7ld$bkxFWd-mu82mpk{uih5%66iX)KP6|{y*1>M2H#9fbEQVRN zF$z*jwi!C=}k&;q4njy~688f~e`g15#ctndER2am=OXLAYiU z&$GKXR-#1zfU&d+*(Q}Z*4!Ll@9oOzWVI!gh#98>vRa8StMKVvWWF7QE&B7;R8UE* z$TcWCe+1@;_^Um^*h_7Eb&2oR90{_TLK4H=(a_5nJ}AsH!)$~K0~*Sw^vqw}VRdqa zw#`#xmo$u6lbIbBK0Y6;94gnq{EJ)k^^SkosO5hgLDr=$#-=Or+0IFM{A8%}FiigO z%=VR3ntv(1_b^2R32Y+*+iSNa&Zw!6H+!lj{e_L}o?g-nSwAt4M{`|)g#FmOMs#g^ zBGr)q>Iway#N->8eEqIrfois$X5(vOJUW9ka{-ezga4C{+-P*D2b4?eNshwsT8kBJ|86U!GYlYYo zWu07H03C(gwt{zef32=2V_}hVa;lhHIYz|B#=^7U;!_ml>mA5G41XS;01`|4mt#(o%wsEDy)_`a>S-(7&|96JThFaBlp#+91eShvugtFdgYN49tfG5F%xr!I889H{#L1-s3{m@< znkobVR9%-rjnG7(!bxQ{QQn@dZT;lr*F@9zl?IlFh`9(R15WVUhU8F8?r}^!Gv9tn zbU+)!qv68vhy=->15zL=fBm{onxR2tY^=P21E@UWOUuxY0A)xfDs)*Z${_X{0e%uR zhynF_dWK8ilam_*2(14=c0GiFr24Z7#f*&D%1o}m2V(j8^U1ew*B+3P$~ZYOkB_Ud zZueopc=#%&2<0A_)cdl=)Q{b;??cL@sYG<_?NDhq$SGPMPtor zVtiw(*^-hGGjb8ij(Ts27gp13H}T%sPQT>3iAUs~o{^DqNDf5t?b`7)NW1}L@heQ% z%GsrjS6(T^UoJG75ywu1>Z7JlBilgYkZL?4nx9fZcvpXEK0GPmm7C7dq`Rezcto-+p{I8(Jbb1NdEXvm z_&;!?19(|azLIjy3?3TpjO8G_nOy(zSR`zV5`_n?JLKNH z_~N?==nQgxyC@2QgJRR6E1)>OF<;rE`D@1KoXt~#EQuEa$6z3XsPt-*qZ`Pz2dIzFg&LyEemluu8Z_XHBoC9FcQT^} zoIgHs>`OJZt2qkhf^+*|wYV(EB})wM8IP6<%O>*taNd1$?b?w-)7a%Hv%#dc+^|OO z7|cs=6(KX@bC1r1%DYit8fwO8m&|>9=F`%V=LCmVyQQqwcFeB!s?Htl?TcG5$71b9 zo^tcCu7eHNk=j$N_;^DLqO13(m&EnN*uwFj0BRqUrdjnI`rijJWk%YPvql6Q8&K>j zJPg%Zr9dJBX_D@vrN(bg z512tgzc5iy5u?Z@cZ}8#UAi1Sn^mgYce9&WBdHn;8Dy9XI&Ln}T+8$|AR{Z-LosM^gWT{8tn0pjyO#kbFrEl5G=yj&$OR~70ba-r0` zv#_RA>(cj#R{Na)NvY+C*FoNDU!6WSAb$OVO6F*5iL)x@3gpQDrph9VzNK;Tm`%Wa znNNf2EGHz?+#ZOWZIhw@U|qRVr)K|I!sTFH4CXOm{CE27Q2#PQ9fT&)(|n7Fhzj>S zEwwljgLq%^ktKGuw}V+woNRF|wKtRP)f^mf!S2?ZtPwf7I6ZD^N@Ch~n<#vI;$SI0 zbRY}z0tm~#me%{Ik%G;3W8VZ05*h=;#3=&w7fzCMM+<{|I(P}(*Y&a<6j@BL`QmOg z7HYdMkCYHNIGi9a$5Ys>WSZcIlhTCY&OvKSh>hjD&GhbLM&fk|I3!j?u`zd;AwNZxs=tZI5oy)<9(rGDa z;$kLott>*$+p*D4sYImQ`i14*Y|vj!3(HXsi@y1A6$@m7$P7PYdWNOiLkqWsxPMQ~ zkTcvu>KSy#HFm~}5N}zS@gy3JQAhj)vAkSMiP3U@t{vuf!hDb9`yk;_dwluJLn0OB z5@TK%i!y>WXsE~)^*%!$1zG8X!Qt?raGIN(+6`T$78Cu;!KNg+cmMkF@w~nv@?x0G+0_2QinBte0fBop zRHuJHksUnC)$`iBZW7e`B}$#>0vHR5gq`+}y2F*M36(fQ9JbvY4jTduK*){Yk7%_6 zGYRLSiv{eQUroJC0NRRzI&LBPVm-;>nupyt$A&xO__#B*{YUQ8eS7yS;(KG%N4{?| z)LEM8twrRVPvJ?TxY4?$d<%s(7INBTVC zLX;cG6@D}@JR_q84!{n6_0{gE-zwe@K6BziUf8eRjimD}Tpw$$P|p0&*%oLJt%l4e zdmARl?DR{oM=(_Bsp0cjR`G?MbdteC!iKP9gUQ~M_%b6J*8_4r1jIX-oG+AjYW+3L zL*3f`GqoBTTg+QT0SnXShfBeae&e>@bdm1~34!V9*Y{I$lQ#?H%1^Y&QO z)H~DT72$twQpx;5Z1EAXYIvvnd>PU(6FWkDRNh{=zj~~w(D05@z@eO{)HPoimP_7o zu#nQ19UwB4ufDX4$b4VtCQ2uF_sNE)94W?QZL{R+dnfiZ1*iuC_tVh%&Ujd1adDa@ zbcy6dK|oNbGg1FDbpNr#hS2Ljk%UM4r`9NI(96oH?Aqh=@zK){BAFZKiX3yTdfM85 z`Wi#Bh4o1Wp%n51*>;*^(9+T${;IDa*`EV`TGpK@Q5o#YPgyTs_?_Y=gI0Wt#UMrM z#@(au`W=Iu=A-aW*`GFF`C-NY?!4=j0UH#qrla#f$fZVlZP3zcu~YL%krlC7Mi966 zp0$L)*OOeNBfnMx>(+#4)V6Nsma5y0f*9ooYRB&Z@LggNE7@F{=(iO3roZM z_z=CQ&cW){4#|d)m8Q;k9P2{pLI-N!U})9)Q^A>7=qP$$V3qR>J{rQ|ojg?9&Dpax zl@x)-MDtVQP2__X<`Q%YM817qVaj#)Y~$MdpSp%6hwuqb6ki*3&* zI}^D`z{KaUsi6ZZeHOV;ne#o_MOo6|ybx|(c=z;#qe#bEAqFw;L`48Q6P9&xF2Y84 z7s_(Z1TVqibcZnnw=OGXpG5r}GG+d~`q6ipQBk=TIb^nm>a&>>*qS&#K1dM&&<_a< z2zsVoO;)b2GS^o~UqWozJ`lGV6%o-MRcV^Fd-gc+)0$VUBU$^9r#G&pdw0QUXk7of z!?6Kr9aq#>;f+G(zJy}=+V1aRqW;wmLSsdA<1)Xt{EeMHZTZ`;ETOn#I&F>aRP&Q{ zcw8)Cfi3XRwV2>GZ)C9`7`YQ1t7&*wgZbDPZplZ90?h4-uoE>Q>E55s0Aj10UPuOo zZ;ADqaHPv(4ZZE^ne*ZU^aZl}LrY8TbWdSEDI9fBZ_hJhCV6S;%pdXs;97j{EWJt> zOYzb*f6r;|M0tic)NQPsZz_(zecOpV;OqGz=Z;Rlrw7?8+n?6eMv_3T|*}L8%qux@La!_bHfS&3tvk4ot%(eDx@Z^u@=jIOKTuQxl@${M(*n7N_rhA{b zS5J-$Z4p#5@zuVsgvJsC1#~Z5x;1NL@=O+t)e2n7H|S|Ix8cZ=yC4RR1_07er@>oB zjWO<@_S>F`9KlnX)T`wf3aF!Yo?rd55NFEeWPJ;qTx_fJ7TJt0RS7-2b@iztJ{6w) z<|aJX-qVSK<)JNXi2H$YQWE)AmMn&Hln6Hfw3MLln=pu!iwpnOo<~pI_qLE-V%8Gv zH4QWK+?C;sC*Rr0IzWS@kgT^r zUXo98wis@BiRYAG-LC%=nl!e1FTgW@)^3?RrppcC6o||fCyR&aa5lgGzVZ9Nz5qd0 zMS7#vVianvAq0%Wm8&==pBd$kiu&9*oULQZJtrK$l})+5JS);qOYY*gWwtd){+zYs z^vmKt$QROon-Y8E=JZ{%79U&V`t)vAM}@~+Mv)*pLp-AH1lP;)w7lB%6da(BwJWM; zXB}5^^Ky@jT1{K{?_JFE3aMl5 z$ak$B{CaXFy3&pz;rsX8sVuZXee3Zf4diy{(mk1>BjYh^Zf}p^tuC#~EH_}C6f-d) zHHYMRo4%sQQp4d#zTV|eOHb!CYzsT2(JSdB9ZOM=Jp*yMAKx+s2!xk!|M@Z{KVdsY z8&r*5XuCxfoLnC4EbU3hz!zVR7}SRcvSYc`YGGsH!0s$ADC|F5Uk$EJzGrWupx4u{ zg%yJ;rB#L z{+NG_bvyw-jzU@*C$NfmwwXx2$aY_e^x7x(NmtZ{Vtl0*wg=(>{?kmg=8S*$;3g;5 z3%jS(5?gIa{8(SgI8UZL7>%81o`h>Upyc{)$oFy;-VkW;;ALr^JXo7iMVuvbb*fQ{ z9H(kr8$3w&N)@`dcEn-*3E}AuUtA`RDvEMjkfJ!jbR{^BjG+(m7c}UG)V>5(ZXxAa zXmz4={+Oh^JQyKEvM2R1(sg2tS0A}*{*7s})%9HC7_JXJls@-rryEL_)?@luOO&GZ z!9rhOQcCJM149;=LX$8qEhou7SUHhfguOiMco!s(agM+XoEsB5li9vg`{0m98p=b- z?&#H|1W$Q-*15xKWuS=Aj_!?;=eo1Ae0ER2YNsysBJpxq(C1iV zqMQc!79;lGo6__WZVWya5=us7GU=->YbRVE)bg{=(EhCJ>Itd5_VRozA_eOUYNxL2 zb7lq}7CcO1JoW%%eki#U&?)M1ZJlHj%(wOOy9DrTRy)P95*$b@Y~D)t;WmB=Zt7Z0 zzPYtL_1zpbLNOgq0N~Hafo*2zqwpnGjc%K*GoN4%=xaH;1^aWi7j^D*Xk4_kbsY(G z>_e+k!}FNhJt{tmBUiz!EMvf(g~!AI?yRcqMTx-ss_)WQZ2jIoiM`5o>vzLfRzIxm zk*F=1O_3=sF93Eb$ZbP_x`=1@6!KKBdfhg=X=g-W8Xp$S7Pu zD|hziz7HUqQ4H~?wS2bEnVIh$ExA9#c+r%Gmy%(4-#{QBpemPK`Bu*^*V;f)PM^|C zN3Qmb{AW%LVutmG^xsO<-ER_}I+stCJ5Frey@3s$Y^3{cXNXC3I~aHA;W1p}r%_PG zRta5%7pmG9L!O$0ZKWzIy(#`xI`!Y6gpV7FZc89o5@35 z0WgYRI+<8i&_}-VK~qz+EdZ>W7A!RvCM9Zz$_<>lcn#qE%t@_t>lA1#RdWk0<0tK( zax4kOf29AoXft=r$YVR-#FubG*tlj0sHPdXT#3Evq3ea6zEwdv+D@TeoBft|y5~O* zWN#}+*&pZxz47Q&-brPDAG0!bFk77noR_9wpH-D%`mE|Vf;((bBbn#R{pI13BbQ)J zr+mZSBr*Kk`awJA8IeaIIBd>yEVuuTvpJP@mXA+%`?5}Y3Q1S`_-yW58rv^u5`$;!HPVcJw`>fJyfFC6=~?C-IOKkXPX3N zMKoV3jK?l8(h_xnHGL&i^?%_S;LCcCI|ep9%g~(^R@GtD#i_rk;_%JqW9e^!i7I`e za22$gdMff4aWfMPiY)}HWTud3%2DsV`Pog)P)ryx)=7I6rwbvUE0DCtA%T7U zhSUI$5>oQGHjuET`V)Jk;lv%jBJ+_YG_sPoDS$==Z~PX)Op?DswP9PlJ{(s4GC(6m z(uXyyl+%u3=!xTinZG|p4K|`g^jhB;bg3dW;lO4(T5tamcDYe2Bi7_lvPw@!*Hdat zUv7@mn4_ev&`tWPD_b8m_iW+SEmE#8BSF0EzYSGeLYE;!GlD#eOvmAn`bbGBIql&> z-s7V=$4(a(>RIx-x-LE<>jjZeOcZDyhJUp;p-%hYpl_L} zVPB!PdAGWMhR2v=+{5C8{{GS$T-nW6O(W8|=f=EPuL=Ys;XQ(s=(D-+NY`sV?GzF5 zk%Ye#I&vG+G$7{y;iaD)51>fBm{;dnL2}fBA=oy1HFa3@F`=(UB;Y z4YZy{T5@~U(PUU(%r4a6%GkWakc#45_)vnqF5fRZk%?mn!8Y-2g!jaGHv&78FcGc)y>R`xP$2 z*#P{%jl0=Zq?@=hCGz&4cm<5WYP}WylrD9hh$X3$KIN`+XKO(#b#X=TNlA)AQcono5XTiJEv(Fb!~m}v^jSqtj!zs;e$c*r=LFfeQpK#q8=OBo5L0ZB(}f#E{? zJ+skL@2Rk4?f#1E!K6?x4q722BBe;cP#7y^KBwHgzRPddCIQ$3cns*wWC5Wj^qi@5}XwO9zx7RUMa&n>lzu)_) zlx4rqQTS{!ko_i}gLdb!2}Vhr$)aUYS&*BX`&*&Q&t$-DdGeeP%VJVy9y;Y=c({p8 zF6i`4)Gu`VbPHbjkgy~D_tX*KW9ZBuI@qI4M0?CZQ?*@B@Kk!>jCyt)uDbIrKpR;f z6g-oI)cpzY4_3~gw>%fdxBjxmYhiGj{VD6^Li>Ux?VX$tMZb87h=}lV1rylHLIlPi#kKrB?%J zXYr1h5SeyXHUIghfLn49!N#`8Og`rwE_yk=vpO5vm~Guh9jaR`SzbcTK~?XE2d+CR z8VZi%%xo^c)>bqeS6AP*V)d_1!~yW|p`Alh_uwLoa#fV}!sRNvH4^Mvd}qFx-yPQI zH`KFZ3Xh!&9*X^?d$cx7_#iR@RU`!ZA0ubQ8C1(3PELBF^fZW>me0K2&|zeF7=$)c zJAWB~DrpWR{ORG2Vmj2(nSJ4UaMciT(OhXu%;$MQZP=Xz+t}4q3zDC14Y2*gS8`HP zRs`xW@t3aRg2tNfTGO!ru?VI%PtVSK1(nboIFvuMDr_7by+beInw!gHZEf?Xq2cRS zmQW=U4iCfjT-VIkEZ2*pXfxC9dkU>RnEaL~IW8k}^)W4Nv?=m-3z}yFB-^}!4jM>T zgj+>6r9I5osIDJ4B5P8wl^ZWxQ>%6Gt}uNx1Z1EV0()g*lAydr8<}JJDv+2}sx1O! z84}j+S5_cx!6FQgj4b}fFi7~$6%1$%92Nzv)w55nKG~lcC(GnyWXOqG-{2G4`~3dh zp;q-!)^3mR*RTBh6z)Dj#Hs$Fp-=cv?i3X%RyuRC>&B?ttz(l*PBOgv6aMvjvbCdQ zGtiDcIMuV8n}OBUV|i<@E2^t!HaDe!*g;-Q$J)Olv@2+CSBz31K0us`Y8MS_@QEEm zDk^fCn$>A|4xSekJxVFi2%%@$B;~cFv)ND)1irpntxHIMKbMYfK?DSXeo$j$WAO8w zoTso4m@O=%s!A64&^q-k zKD6fFIM(@}TH!-i(DV@I)7mJGRto<<>_36^{O=QoIR+TlUQA2|WBD+fj+&YdW1{~3 z4uKTl^#1$YMxW__pQdl0HEx3Br$qtJi>vzWT&-(tV)Hx<3=GZ`U(r9`>YjJX|&Wo=}ezmX>y|-N#&ElM#I}O8kQZ+)p_goCS@T(}^GM_R{tLct`Yc`1jFy z{eSyn3X2N4DtXT*G);FkTmHK&HMR2(<32-~{CgmLB!x&-`tNnc=AVG+tqR7@#s3Mz z|NmZs|G&P^|9PSQzqg@=OE!MNzB#+LW~wj|N+Hl&VXZs24~mLjml$-}jOy2MTF;6l z@LFE{IR&PSY=3PCHDtJXra?uw82aR+2bHITo4flXkXYg#`1YS{D8&`E@uqM)PU@y-J3Xnez!v~H)JG58VZ z4KFV*EO6UcbL9+9!|v_P>aE`2?`a@zJCdY4X06lp-oOl`Nm3QmojeDK=_wai6rF6s z+1#WVy*xzk?~hkpMt`wHL_}1|Oq!z@K2|vIW=PhiN`!G3{e65D8#_y*mj50p*AGpY z2Qa&T(==cn=SG9MkHW*lYxW0KuU)(L4r-z9i$^7=qeDG2Gh??o{s>$xfy=l7)NV=2 z%5odiFfj#xNSAt__7-1vq{@EH3E51XrCdVy<;xehqZz*@IGlilq*c|jHabUXYcMuF zopuS4l4*#50NL;E^~vwTQ0J^20+oH>g2?@S{e|}E77p9Gk`#}V+nSo1b!R)$kq320 zvp8TyLF&%U@9d1*IR$mU?AHeS^VJi9ctFxfW2tf9TRAx%=fQFI`9oxZDl`;itb8aj z0COY??k9WoV`GVqlg@r1wTXyDt+h3r223YhtXzVe z4)F+I9O<@%kiic&#^Sk6i6|*SE+D-j12zZFnIxBOw>Ai;Ig-ISR~U7xGCjUco~ttgWq|JbUI(EgrZH0>5mw zi!ujWQwXrwY$SKdh27%v)vIUM*JTPcYM&_=KP6^S(;CcG2APvSAY0^p>YICWu9env zH@t7+wMy-J96iM8>rA8H$KUUsfUAq92)kE!ob&VW@U&F%1#nl_J=TpG^}2!$ zGI4IR)*Vp;>Rt<6s-m*82i(K#|7q+x!0Th$Ab>Y z4s@IS!ev(%6?SLMY`fYQe8J;T27|$aPp1x7x(#T+5*`cen-KWuLMNzbLQh0y91JEDEocxC7k8Uu7V$>grT2H_y&YnE zWo368*xSqK5a%+@DM%zncVns7`i0f6WA9=pRI0lLF$oJKwV8zVIG1U_Z)j-vvsLEZ zB6fQcHp=&V-|BCtH=oQZn!x%VuO#~VW|>CGq@M7-x3;!MmOz~cihyEeeOFhP+!ukr zrl-R)G7iEAN0gO2Y}1pI*JHxkva{t3jf`?_UQsd5iMfGXs7RNJftUNRs~EtZz#Hz= z8ay7qu(&u@`>P<-6%vQZlSv+t8TtA7iuNTxudJ*zKX9I0gtcvKYTDmcUtiA`NuI;M zy_4qhF8V!(<6$A~KGX9&f^pN*rJDZQ0)lW^t?eE+g zZ&cTG;N;9qE9@V!O1vb&5*}d3NNJ3Kf`WpJh5Rq^PMprP;H`~S{8FD42 zYPqy@jR99`o5dV>?%t6MW6F_Iws+l6+t%H2{mNu75v!-hVJNqxwlLMpHL3FZ;~WxH zFC*pUAATGvADf*e50C%>&355LBC(>PVz|^NAV3|EjU=<&6x7rnmz1bOAe#Ph>jZIB^=pHyqwvA5>9lFtq-8*Dp$$8|D)88mD z9}$&AqJ!6Ngo-0VfhoZy`(D~acx2p`I(RTcHs-K?jQ--N4RLETLQ0u5aBEvV<+fUG z_RO!i4y0{H^g0L%2uux@&f>W`+S)SuLo8O(pYB(#JhfYfymND5GmTv9rg_JoZSLv$ zf^n^JxWvOJFL1Wa@nV5vU2m@>tbl2xbR8hKuvl$_6HnoyFqk;HN7og!^ogL)a$qUQ zW)a*3We2KBgp}`xMo~zf8NkT4RktwkJtUAUte1}20%vtW&~9&5Y~1c|?J*z&3>fBz zrigeI{9rapO>OV}x>&cIk?I?Pf$y4|L&wKm$Flyl`trv6dZ?560;PxKao)do)(z9p z0rh&<)3Y})aFrabsH6m8rwC;nH~DycYHA9#j7!sgGHXkpJw}5FI!VhP=}_+DHr1VF zk*>>PUIJ4qp3i~1?m${3)&jtj^lp==l&r%?gDwDZX$O94k3wjQNJt>%8%ie6Th z1H|@qWr!eqlGK-NX=o_$aj?{7eQ8>2rVHi>1WpHXu}nST>_-4AgVxWtslJ6k|BQhF zZ0&J5z*)#;75tk<_)F9L>gv1xehsq?4+VAgeY_2fuU{kGR8&-M1qBtsxKQ*XoQ@O^ zzck9X$Ch@oGjnc^*7hMC zu+SvoJloIfVT{hqJOt7kw6Q$U;d9L2^aC&$tHO5--^RZ4_jO?NDR#9E;KLn;kmp$W z7{uFurcV(zDwbn5@}MLHgamTofNuty*5Trb3nMOxz(U9K&D zEFW#|@2A4!ptq_WZev&C`2#O7fY9#Lec_~&>=2%SJ>2!<4I)uPk=vamh{0gsc11p; zIksdzK7kc;<5Sin+Qd0#9dLF<@E1R-+aHt7r1BcS*^Sjv8bDeU0F&Y9M^=OPcBOosi;(a8)52;fD^ zLOXY2z57w5rK!5Apv6Rti*Q?ls)CZzEN zi~+vfXJ%#wmTusU`HX7y(rfbf*APR3Io5Fl{6CL&xWz~ni3}AMm+8(qi_rTz-%us7 z{my?#=p}{kJKGejs>kni*;rqOp-4(fx}4jD$WCzlD)svbM!a-YpRqj6`0P~i<_+{V z3xk83YzLIOx~W?JlYdQ2n7q1>|5^K6KPitXg4#WUJ|8^!pv?|91(1(&MBQ&M;- z6DPl%t#&|m`_uzC&`V!>cc{%j6SO$qp@7?09P0l}xc`~Q)wepKgA)c${VyABF>>kJ Z;$IO`^%br>a+MD*a}!JB0z;>J{{is)q2&Mo From b1bbd9c587ec835ce211c5a0ee5dfcd2cdb1f685 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 3 Apr 2019 22:12:00 -0700 Subject: [PATCH 002/134] Moved/updated cptest.sha1sum Signed-off-by: Russ Magee --- cptest.sha1sum | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 cptest.sha1sum diff --git a/cptest.sha1sum b/cptest.sha1sum new file mode 100644 index 0000000..67888ac --- /dev/null +++ b/cptest.sha1sum @@ -0,0 +1,6 @@ +9da9888265371375b48c224b94a0b3132b7ddc41 cptest/subdir/file64MB +da67c7698b25d94c0cc20284ba9d4008cdee201b cptest/subdir/file32MB +03939175ceac92b9c6464d037a0243e22563c423 cptest/file6B +306637b5c621892078ebadd9454a78820a000598 cptest/file16KB +f474d5da45890b7cb5b0ae84c8ade5abcb3b4474 cptest/file32KB +1a118dfff291352eb4aec02c34f4f957669460fc cptest/file1KB From 306ea64299782943ff56fe67d75c7fb985a88454 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 3 Apr 2019 22:37:43 -0700 Subject: [PATCH 003/134] Sorted cptest.sha1sum Signed-off-by: Russ Magee --- cptest.sha1sum | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cptest.sha1sum b/cptest.sha1sum index 67888ac..0440760 100644 --- a/cptest.sha1sum +++ b/cptest.sha1sum @@ -1,6 +1,6 @@ -9da9888265371375b48c224b94a0b3132b7ddc41 cptest/subdir/file64MB -da67c7698b25d94c0cc20284ba9d4008cdee201b cptest/subdir/file32MB -03939175ceac92b9c6464d037a0243e22563c423 cptest/file6B 306637b5c621892078ebadd9454a78820a000598 cptest/file16KB -f474d5da45890b7cb5b0ae84c8ade5abcb3b4474 cptest/file32KB 1a118dfff291352eb4aec02c34f4f957669460fc cptest/file1KB +f474d5da45890b7cb5b0ae84c8ade5abcb3b4474 cptest/file32KB +03939175ceac92b9c6464d037a0243e22563c423 cptest/file6B +da67c7698b25d94c0cc20284ba9d4008cdee201b cptest/subdir/file32MB +9da9888265371375b48c224b94a0b3132b7ddc41 cptest/subdir/file64MB From a53ec4ac2de016e97d5ae4422c938ed7b3616a16 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Fri, 5 Apr 2019 19:10:38 -0700 Subject: [PATCH 004/134] termmode.go: Added nil check in term.Restore() for nonexistent cp filename Signed-off-by: Russ Magee --- hkexsh/hkexsh.go | 4 ++-- termmode_unix.go | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index 366f0cb..ac7d0cc 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -298,7 +298,7 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { exitStatus = uint32(status.ExitStatus()) fmt.Print(stdErrBuffer) - fmt.Printf("Exit Status: %d\n", exitStatus) //# + //fmt.Printf("Exit Status: %d\n", exitStatus) //# } } } @@ -367,7 +367,7 @@ func doCopyMode(conn *hkexnet.Conn, remoteDest bool, files string, rec *hkexsh.S // an ExitStatus() method with the same signature. if status, ok := exiterr.Sys().(syscall.WaitStatus); ok { exitStatus = uint32(status.ExitStatus()) - log.Printf("Exit Status: %d", exitStatus) + //log.Printf("Exit Status: %d", exitStatus) } } } diff --git a/termmode_unix.go b/termmode_unix.go index 8bcb60a..e1b4cd1 100644 --- a/termmode_unix.go +++ b/termmode_unix.go @@ -3,6 +3,7 @@ package hkexsh import ( + "errors" "io" unix "golang.org/x/sys/unix" @@ -67,7 +68,11 @@ func GetState(fd int) (*State, error) { // Restore restores the terminal connected to the given file descriptor to a // previous state. func Restore(fd int, state *State) error { - return unix.IoctlSetTermios(fd, ioctlWriteTermios, &state.termios) + if state != nil { + return unix.IoctlSetTermios(fd, ioctlWriteTermios, &state.termios) + } else { + return errors.New("nil State") + } } // ReadPassword reads a line of input from a terminal without local echo. This From 9a72e02fc01f90ffd2cf14a93e90b2af821cad97 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 6 Apr 2019 23:14:28 -0700 Subject: [PATCH 005/134] Comment and redundant file cleanup Signed-off-by: Russ Magee --- CODE_OF_CONDUCT.md | 1 - hkexsh/hkexsh.go | 2 -- 2 files changed, 3 deletions(-) delete mode 120000 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 120000 index f1a49fe..0000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1 +0,0 @@ -CODE_OF_MERIT.md \ No newline at end of file diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index ac7d0cc..c24ba04 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -115,8 +115,6 @@ func copyBuffer(dst io.Writer, src io.Reader, buf []byte) (written int64, err er // or tunnel traffic indicator - note we cannot just spawn a goroutine // here, as copyBuffer() returns after each burst of data. Scope must // outlive individual copyBuffer calls). - // (Note that since this custom copyBuffer func is used only by - // the hkexsh client, it should eventually be moved to client.) escs := escSeqs{ 'i': func(io.Writer) { os.Stdout.Write([]byte("\x1b[s\x1b[2;1H\x1b[1;31m[HKEXSH]\x1b[39;49m\x1b[u")) }, 't': func(io.Writer) { os.Stdout.Write([]byte("\x1b[1;32m[HKEXSH]\x1b[39;49m")) }, From 8920184ae4f52dafd11fd338cdc99d32c41d996e Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Sat, 6 Apr 2019 23:19:26 -0700 Subject: [PATCH 006/134] Updated to stable archived link Signed-off-by: Russ Magee --- CODE_OF_MERIT.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CODE_OF_MERIT.md b/CODE_OF_MERIT.md index 4761273..149ec81 100644 --- a/CODE_OF_MERIT.md +++ b/CODE_OF_MERIT.md @@ -55,4 +55,5 @@ to the project. Any intent to deviate the project from its original purpose of existence will constitute grounds for remedial action which may include expulsion from the project. -This document is based upon the Code of Merit (http://code-of-merit.org), version 1.0. +This document is based upon the Code of Merit version 1.0 (Dec 4 2018). +(https://web.archive.org/web/20181204203029/http://code-of-merit.org/) From f09d6bbfef00243c918d882f066c8f56796f7c94 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Mon, 8 Apr 2019 21:58:33 -0700 Subject: [PATCH 007/134] Added NEWHOPE and NEWHOPE_SIMPLE KEM algs Fixed some -h typos, missing H_SHA512 option randReader seed time.Now().UnixNano() Signed-off-by: Russ Magee --- consts.go | 2 +- hkexnet/consts.go | 4 +- hkexnet/hkexnet.go | 213 +++++++++++++++++++++++++++++++++++++++++++-- hkexsh/hkexsh.go | 6 +- hkexshd/hkexshd.go | 2 +- 5 files changed, 213 insertions(+), 14 deletions(-) diff --git a/consts.go b/consts.go index 7dd9828..b65c4a9 100644 --- a/consts.go +++ b/consts.go @@ -10,4 +10,4 @@ package hkexsh // common constants for the HKExSh // Version string returned by tools -const Version = "0.8.0 (NO WARRANTY)" +const Version = "0.8.1 (NO WARRANTY)" diff --git a/hkexnet/consts.go b/hkexnet/consts.go index 38b67e8..7ed1c3b 100644 --- a/hkexnet/consts.go +++ b/hkexnet/consts.go @@ -20,8 +20,8 @@ const ( KEX_KYBER768 KEX_KYBER1024 KEX_resvd11 - KEX_resvd12 - KEX_resvd13 + KEX_NEWHOPE + KEX_NEWHOPE_SIMPLE // 'NewHopeLP-Simple' - https://eprint.iacr.org/2016/1157 KEX_resvd14 KEX_resvd15 ) diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index 4d86971..caa834b 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -49,6 +49,7 @@ import ( "blitter.com/go/herradurakex" "blitter.com/go/hkexsh/logger" kyber "git.schwanenlied.me/yawning/kyber.git" + newhope "git.schwanenlied.me/yawning/newhope.git" ) /*---------------------------------------------------------------------*/ @@ -197,6 +198,12 @@ func getkexalgnum(extensions ...string) (k KEXAlg) { case "KEX_KYBER1024": k = KEX_KYBER1024 break //out of for + case "KEX_NEWHOPE": + k = KEX_NEWHOPE + break //out of for + case "KEX_NEWHOPE_SIMPLE": + k = KEX_NEWHOPE_SIMPLE + break //out of for } } return @@ -227,12 +234,16 @@ func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { case KEX_HERRADURA1024: fallthrough case KEX_HERRADURA2048: - log.Printf("[KEx alg %d accepted]\n", kexAlg) + fallthrough case KEX_KYBER512: fallthrough case KEX_KYBER768: fallthrough case KEX_KYBER1024: + fallthrough + case KEX_NEWHOPE: + fallthrough + case KEX_NEWHOPE_SIMPLE: log.Printf("[KEx alg %d accepted]\n", kexAlg) default: // UNREACHABLE: _getkexalgnum() guarantees a valid KEX value @@ -276,7 +287,7 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { } // randReader wraps rand.Read() in a struct that implements io.Reader -// for use by the Kyber KEM methods. +// for use by the Kyber and NEWHOPE/NEWHOPE_SIMPLE KEM methods. type randReader struct { } @@ -285,11 +296,101 @@ func (r randReader) Read(b []byte) (n int, e error) { return } +func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { + // Send hkexnet.Conn parameters to remote side + + // Alice, step 1: Generate a key pair. + r := new(randReader) + rand.Seed(time.Now().UnixNano()) + + privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairAlice(r) + if err != nil { + panic(err) + } + + // Alice, step 2: Send the public key to Bob + fmt.Fprintf(c, "0x%x\n0x%x:0x%x\n", pubKeyAlice.Send, + hc.cipheropts, hc.opts) + + // [Bob does step 1-3], from which we read Bob's pubkey + publicKeyBob := big.NewInt(0) + fmt.Fscanf(c, "0x%x\n", publicKeyBob) + var pubKeyBob newhope.PublicKeyBob + for i := range(pubKeyBob.Send) { + pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] + } + log.Printf("[Got server pubKey[]:%v]\n", pubKeyBob) + + // Read cipheropts, session opts + _, err = fmt.Fscanf(c, "0x%x:0x%x\n", + &hc.cipheropts, &hc.opts) + if err != nil { + return err + } + + // Alice, step 3: Derive shared secret + // (NOTE: actual over-wire exchange was already done above. This is + // the math voodoo 'exchange' done after receiving data from Bob.) + aliceSharedSecret, err := newhope.KeyExchangeAlice(&pubKeyBob, privKeyAlice) + if err != nil { + panic(err) + } + log.Printf("[Derived sharedSecret:0x%x]\n", aliceSharedSecret) + hc.r, hc.rm, err = hc.getStream(aliceSharedSecret) + hc.w, hc.wm, err = hc.getStream(aliceSharedSecret) + return +} + +func NewHopeSimpleDialSetup(c io.ReadWriter, hc *Conn) (err error) { + // Send hkexnet.Conn parameters to remote side + + // Alice, step 1: Generate a key pair. + r := new(randReader) + rand.Seed(time.Now().UnixNano()) + privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairSimpleAlice(r) + if err != nil { + panic(err) + } + + // Alice, step 2: Send the public key to Bob + fmt.Fprintf(c, "0x%x\n0x%x:0x%x\n", pubKeyAlice.Send, + hc.cipheropts, hc.opts) + + // [Bob does step 1-3], from which we read Bob's pubkey + publicKeyBob := big.NewInt(0) + fmt.Fscanf(c, "0x%x\n", publicKeyBob) + var pubKeyBob newhope.PublicKeySimpleBob + for i := range(pubKeyBob.Send) { + pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] + } + log.Printf("[Got server pubKey[]:%v]\n", pubKeyBob) + + // Read cipheropts, session opts + _, err = fmt.Fscanf(c, "0x%x:0x%x\n", + &hc.cipheropts, &hc.opts) + if err != nil { + return err + } + + // Alice, step 3: Derive shared secret + // (NOTE: actual over-wire exchange was already done above. This is + // the math voodoo 'exchange' done after receiving data from Bob.) + aliceSharedSecret, err := newhope.KeyExchangeSimpleAlice(&pubKeyBob, privKeyAlice) + if err != nil { + panic(err) + } + log.Printf("[Derived sharedSecret:0x%x]\n", aliceSharedSecret) + hc.r, hc.rm, err = hc.getStream(aliceSharedSecret) + hc.w, hc.wm, err = hc.getStream(aliceSharedSecret) + return +} + func KyberDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { // Send hkexnet.Conn parameters to remote side // Alice, step 1: Generate a key pair. r := new(randReader) + rand.Seed(time.Now().UnixNano()) var alicePublicKey *kyber.PublicKey var alicePrivateKey *kyber.PrivateKey switch hc.kex { @@ -312,12 +413,12 @@ func KyberDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { hc.cipheropts, hc.opts) // [Bob, step 1-3], from which we read cipher text - cipherB := make([]byte, 4096) - fmt.Fscanf(c, "0x%x\n", &cipherB) + pubKeyB := make([]byte, 4096) + fmt.Fscanf(c, "0x%x\n", &pubKeyB) //if err != nil { // return err //} - log.Printf("[Got server ciphertext[]:%v]\n", cipherB) + log.Printf("[Got server pubKeyB[]:%v]\n", pubKeyB) // Read cipheropts, session opts _, err = fmt.Fscanf(c, "0x%x:0x%x\n", @@ -327,7 +428,7 @@ func KyberDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { } // Alice, step 3: Decrypt the KEM cipher text. - aliceSharedSecret := alicePrivateKey.KEMDecrypt(cipherB) + aliceSharedSecret := alicePrivateKey.KEMDecrypt(pubKeyB) log.Printf("[Derived sharedSecret:0x%x]\n", aliceSharedSecret) hc.r, hc.rm, err = hc.getStream(aliceSharedSecret) @@ -378,6 +479,84 @@ func HKExDialSetup(c io.ReadWriter /*net.Conn*/, hc *Conn) (err error) { return } +func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { + r := new(randReader) + rand.Seed(time.Now().UnixNano()) + // Bob, step 1: Deserialize Alice's public key from the binary encoding. + alicePublicKey := big.NewInt(0) + _, err = fmt.Fscanln(*c, alicePublicKey) + log.Printf("[Got client pubKey:0x%x\n]", alicePublicKey) + if err != nil { + return err + } + + var pubKeyAlice newhope.PublicKeyAlice + for i := range(pubKeyAlice.Send) { + pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] + } + + _, err = fmt.Fscanf(*c, "0x%x:0x%x\n", + &hc.cipheropts, &hc.opts) + log.Printf("[Got cipheropts, opts:%v, %v]", hc.cipheropts, hc.opts) + if err != nil { + return err + } + + // Bob, step 2: Generate the KEM cipher text and shared secret. + pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeBob(r, &pubKeyAlice) + if err != nil { + panic(err) + } + + // Bob, step 3: Send the cipher text to Alice. + fmt.Fprintf(*c, "0x%x\n0x%x:0x%x\n", pubKeyBob.Send, + hc.cipheropts, hc.opts) + + log.Printf("[Derived sharedSecret:0x%x]\n", bobSharedSecret) + hc.r, hc.rm, err = hc.getStream(bobSharedSecret) + hc.w, hc.wm, err = hc.getStream(bobSharedSecret) + return +} + +func NewHopeSimpleAcceptSetup(c *net.Conn, hc *Conn) (err error) { + r := new(randReader) + rand.Seed(time.Now().UnixNano()) + // Bob, step 1: Deserialize Alice's public key from the binary encoding. + alicePublicKey := big.NewInt(0) + _, err = fmt.Fscanln(*c, alicePublicKey) + log.Printf("[Got client pubKey:0x%x\n]", alicePublicKey) + if err != nil { + return err + } + + var pubKeyAlice newhope.PublicKeySimpleAlice + for i := range(pubKeyAlice.Send) { + pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] + } + + _, err = fmt.Fscanf(*c, "0x%x:0x%x\n", + &hc.cipheropts, &hc.opts) + log.Printf("[Got cipheropts, opts:%v, %v]", hc.cipheropts, hc.opts) + if err != nil { + return err + } + + // Bob, step 2: Generate the KEM cipher text and shared secret. + pubKeyBob, bobSharedSecret, err := newhope.KeyExchangeSimpleBob(r, &pubKeyAlice) + if err != nil { + panic(err) + } + + // Bob, step 3: Send the cipher text to Alice. + fmt.Fprintf(*c, "0x%x\n0x%x:0x%x\n", pubKeyBob.Send, + hc.cipheropts, hc.opts) + + log.Printf("[Derived sharedSecret:0x%x]\n", bobSharedSecret) + hc.r, hc.rm, err = hc.getStream(bobSharedSecret) + hc.w, hc.wm, err = hc.getStream(bobSharedSecret) + return +} + func KyberAcceptSetup(c *net.Conn, hc *Conn) (err error) { // Bob, step 1: Deserialize Alice's public key from the binary encoding. alicePublicKey := big.NewInt(0) @@ -411,13 +590,13 @@ func KyberAcceptSetup(c *net.Conn, hc *Conn) (err error) { // Bob, step 2: Generate the KEM cipher text and shared secret. r := new(randReader) + rand.Seed(time.Now().UnixNano()) cipherText, bobSharedSecret, err := peerPublicKey.KEMEncrypt(r) if err != nil { panic(err) } // Bob, step 3: Send the cipher text to Alice. - //fmt.Println("cipherText:",cipherText) fmt.Fprintf(*c, "0x%x\n0x%x:0x%x\n", cipherText, hc.cipheropts, hc.opts) @@ -525,6 +704,16 @@ func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err er if KyberDialSetup(c, &hc) != nil { return Conn{}, nil } + case KEX_NEWHOPE: + log.Printf("[Setting up for KEX_NEWHOPE %d]\n", hc.kex) + if NewHopeDialSetup(c, &hc) != nil { + return Conn{}, nil + } + case KEX_NEWHOPE_SIMPLE: + log.Printf("[Setting up for KEX_NEWHOPE_SIMPLE %d]\n", hc.kex) + if NewHopeSimpleDialSetup(c, &hc) != nil { + return Conn{}, nil + } default: return Conn{}, err } @@ -686,6 +875,16 @@ func (hl *HKExListener) Accept() (hc Conn, err error) { if KyberAcceptSetup(&c, &hc) != nil { return Conn{}, err } + case KEX_NEWHOPE: + log.Printf("[Setting up for KEX_NEWHOPE %d]\n", hc.kex) + if NewHopeAcceptSetup(&c, &hc) != nil { + return Conn{}, err + } + case KEX_NEWHOPE_SIMPLE: + log.Printf("[Setting up for KEX_NEWHOPE_SIMPLE %d]\n", hc.kex) + if NewHopeSimpleAcceptSetup(&c, &hc) != nil { + return Conn{}, err + } default: return Conn{}, err } diff --git a/hkexsh/hkexsh.go b/hkexsh/hkexsh.go index ac7d0cc..701446a 100755 --- a/hkexsh/hkexsh.go +++ b/hkexsh/hkexsh.go @@ -623,11 +623,11 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.BoolVar(&dbg, "d", false, "debug logging") flag.StringVar(&cipherAlg, "c", "C_AES_256", "`cipher` [\"C_AES_256\" | \"C_TWOFISH_128\" | \"C_BLOWFISH_64\" | \"C_CRYPTMT1\"]") - flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\"]") - flag.StringVar(&kexAlg, "k", "KEX_HERRADURA256", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\"]") + flag.StringVar(&hmacAlg, "m", "H_SHA256", "`hmac` [\"H_SHA256\" | \"H_SHA512\"]") + flag.StringVar(&kexAlg, "k", "KEX_HERRADURA256", "`kex` [\"KEX_HERRADURA{256/512/1024/2048}\" | \"KEX_KYBER{512/768/1024}\" | \"KEX_NEWHOPE\" | \"KEX_NEWHOPE_SIMPLE\"]") flag.UintVar(&port, "p", 2000, "`port`") //flag.StringVar(&authCookie, "a", "", "auth cookie") - flag.BoolVar(&chaffEnabled, "e", true, "enabled chaff pkts (default true)") + flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") flag.UintVar(&chaffFreqMin, "f", 100, "`msecs-min` chaff pkt freq min (msecs)") flag.UintVar(&chaffFreqMax, "F", 5000, "`msecs-max` chaff pkt freq max (msecs)") flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") diff --git a/hkexshd/hkexshd.go b/hkexshd/hkexshd.go index 473aab7..4ee07d8 100755 --- a/hkexshd/hkexshd.go +++ b/hkexshd/hkexshd.go @@ -387,7 +387,7 @@ func main() { flag.BoolVar(&vopt, "v", false, "show version") flag.StringVar(&laddr, "l", ":2000", "interface[:port] to listen") - flag.BoolVar(&chaffEnabled, "e", true, "enabled chaff pkts") + flag.BoolVar(&chaffEnabled, "e", true, "enable chaff pkts") flag.UintVar(&chaffFreqMin, "f", 100, "chaff pkt freq min (msecs)") flag.UintVar(&chaffFreqMax, "F", 5000, "chaff pkt freq max (msecs)") flag.UintVar(&chaffBytesMax, "B", 64, "chaff pkt size max (bytes)") From 5cf7a0f8b3cc5b0f858679c18f7a13273101f337 Mon Sep 17 00:00:00 2001 From: Russtopia Date: Mon, 8 Apr 2019 22:24:01 -0700 Subject: [PATCH 008/134] Update 'README.md' --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2b2e1e8..22cc948 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ remote shell client and server, similar in role to ssh, offering encrypted interactive and non-interactive sessions, file copying and tunnels with traffic obfuscation ('chaffing'). *** - -**NOTE: Due to the experimental nature of the HerraduraKEx and Kyber IND-CCA-2 algorithms, and the novelty of the overall codebase, this package SHOULD BE CONSIDERED EXTREMELY EXPERIMENTAL and USED WITH CAUTION. It DEFINITELY SHOULD NOT be used for any sensitive applications. USE AT YOUR OWN RISK. NEITHER WARRANTY NOR CLAIM OF FITNESS FOR PURPOSE IS EXPRESSED OR IMPLIED.** +newhopecrypto.org](https://www.newhopecrypto.org/) :: [Yawning/go-newhope golang implementation]( +**NOTE: Due to the experimental nature of the KEX/KEM algorithms used, and the novelty of the overall codebase, this package SHOULD BE CONSIDERED EXTREMELY EXPERIMENTAL and USED WITH CAUTION. It DEFINITELY SHOULD NOT be used for any sensitive applications. USE AT YOUR OWN RISK. NEITHER WARRANTY NOR CLAIM OF FITNESS FOR PURPOSE IS EXPRESSED OR IMPLIED.** *** @@ -25,6 +25,8 @@ Currently supported exchanges are: * The HerraduraKEx key exchange algorithm first released at [Omar Elejandro Herrera Reyna's HerraduraKEx project](http://github.com/Caume/HerraduraKEx); * The KYBER IND-CCA-2 secure key encapsulation mechanism, [pq-crystals Kyber](https://pq-crystals.org/kyber/) :: [Yawning/kyber golang implementation](https://git.schwanenlied.me/yawning/kyber) +* The NEWHOPE algorithm [newhopecrypto.org](https://www.newhopecrypto.org/) :: [Yawning/go-newhope golang implementation](https://git.schwanenlied.me/yawning/newhope) + Currently supported session algorithms: @@ -72,6 +74,7 @@ Dependencies: * [github.com/jameskeane/bcrypt](http://github.com/jameskeane/bcrypt) //password storage/auth * [blitter.com/go/goutmp](https://gogs.blitter.com/RLabs/goutmp) // wtmp/lastlog C bindings * [https://git.schwanenlied.me/yawning/kyber](https://git.schwanenlied.me/yawning/kyber) // golang Kyber KEM +* [https://git.schwanenlied.me/yawning/newhope](https://git.schwanenlied.me/yawning/newhope) // golang NEWHOPE,NEWHOPE-SIMPLE KEX * [blitter.com/go/mtwist](https://gogs.blitter.com/RLabs/mtwist) // 64-bit Mersenne Twister PRNG * [blitter.com/go/cryptmt](https://gogs.blitter.com/RLabs/cryptmt) // CryptMTv1 stream cipher From 1bb31c5e28e195e1c06ba4908cb110c07c0f627d Mon Sep 17 00:00:00 2001 From: Russtopia Date: Mon, 8 Apr 2019 22:26:03 -0700 Subject: [PATCH 009/134] Update 'README.md' --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 22cc948..26e40f4 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,6 @@ remote shell client and server, similar in role to ssh, offering encrypted interactive and non-interactive sessions, file copying and tunnels with traffic obfuscation ('chaffing'). *** -newhopecrypto.org](https://www.newhopecrypto.org/) :: [Yawning/go-newhope golang implementation]( **NOTE: Due to the experimental nature of the KEX/KEM algorithms used, and the novelty of the overall codebase, this package SHOULD BE CONSIDERED EXTREMELY EXPERIMENTAL and USED WITH CAUTION. It DEFINITELY SHOULD NOT be used for any sensitive applications. USE AT YOUR OWN RISK. NEITHER WARRANTY NOR CLAIM OF FITNESS FOR PURPOSE IS EXPRESSED OR IMPLIED.** *** From 7e60a395adfe0df1fbd43126dfa5de2228756bf8 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Wed, 17 Apr 2019 20:00:22 -0700 Subject: [PATCH 010/134] Updated go.mod to include newhope deps Signed-off-by: Russ Magee --- go.mod | 12 ++++++++---- go.sum | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b2fbc5b..a45ad3d 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,18 @@ module blitter.com/go/hkexsh +go 1.12 + require ( blitter.com/go/cryptmt v1.0.0 blitter.com/go/goutmp v1.0.0 blitter.com/go/herradurakex v1.0.0 blitter.com/go/mtwist v1.0.0 // indirect + git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 // indirect git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c + git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f - github.com/kr/pty v1.1.3 - github.com/mattn/go-isatty v0.0.4 - golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 - golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06 + github.com/kr/pty v1.1.4 + github.com/mattn/go-isatty v0.0.7 + golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af + golang.org/x/sys v0.0.0-20190416152802-12500544f89f ) diff --git a/go.sum b/go.sum index 84ad983..a3c7775 100644 --- a/go.sum +++ b/go.sum @@ -14,23 +14,37 @@ blitter.com/go/mtwist v0.0.0-20181024062339-1a11c643f88c h1:zQ6vgMPQ8J3ZJNYsskpf blitter.com/go/mtwist v0.0.0-20181024062339-1a11c643f88c/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= blitter.com/go/mtwist v1.0.0 h1:/Vg6k12+DC+fokeRrLApL22hZS/EqEazJTo/FDdbDog= blitter.com/go/mtwist v1.0.0/go.mod h1:aU82Nx8+b1v8oZRNqImfEDzDTPim81rY0ACKAIclV18= +git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63 h1:bwZNsbw3qFbg6ox55HrA37nPmh+/wtJxZ7uWeiAdUUc= +git.schwanenlied.me/yawning/chacha20.git v0.0.0-20170904085104-e3b1f968fc63/go.mod h1:NYi4Ifd1g/YbhIDgDfw6t7QdsW4tofQWMX/+FiDtJWs= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c h1:SGOx1s56QSOmuCegRcG3yvOG7W8PvRS9ZVnFQl5K2aQ= git.schwanenlied.me/yawning/kyber.git v0.0.0-20180530164001-a270899bd22c/go.mod h1:QrbgzU5EL/1jaMD5pD4Tiikj3R5elPMa+RMwFUTGwQU= +git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2 h1:89TYv/+wotJ+QWrH5B/yN0pEQutr2V/5za0VoYiVGCM= +git.schwanenlied.me/yawning/newhope.git v0.0.0-20170622154529-9598792ba8f2/go.mod h1:weMqACFGzJs4Ni+K9shsRd02N4LkDrtGlkRxISK+II0= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f h1:UWGE8Vi+1Agt0lrvnd7UsmvwqWKRzb9byK9iQmsbY0Y= github.com/jameskeane/bcrypt v0.0.0-20120420032655-c3cd44c1e20f/go.mod h1:u+9Snq0w+ZdYKi8BBoaxnEwWu0fY4Kvu9ByFpM51t1s= github.com/kr/pty v1.1.3 h1:/Um6a/ZmD5tF7peoOJ5oN5KMQ0DrGVQSXLNwyckutPk= github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.4 h1:5Myjjh3JY/NaAi4IsUbHADytDyl1VE1Y9PXDlL+P/VQ= +github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7 h1:UvyT9uN+3r7yLEYSlJsbQGdsaB/a0DlgWP3pql6iwOc= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 h1:mKdxBk7AujPs8kU4m80U72y/zjbZ3UcXC7dClwKbUI0= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af h1:6qGQw30u837TXZbCmLFR9AVA+RjJU1LIbvk0oIkDZGY= +golang.org/x/crypto v0.0.0-20190417174047-f416ebab96af/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/sys v0.0.0-20181211161752-7da8ea5c8182 h1:3jwI9dC+BuoXWS+QtR/HhfGTGTuB6ZzL6II6S1IuVvo= golang.org/x/sys v0.0.0-20181211161752-7da8ea5c8182/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06 h1:0oC8rFnE+74kEmuHZ46F6KHsMr5Gx2gUQPuNz28iQZM= golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190416152802-12500544f89f h1:1ZH9RnjNgLzh6YrsRp/c6ddZ8Lq0fq9xztNOoWJ2sz4= +golang.org/x/sys v0.0.0-20190416152802-12500544f89f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From cbf3c77342f5c5259eca3b3d8383c464894d00a1 Mon Sep 17 00:00:00 2001 From: Russ Magee Date: Thu, 9 May 2019 22:46:08 -0700 Subject: [PATCH 011/134] Cleaned up/added commenting (hkexsh/, hkexnet/) Signed-off-by: Russ Magee --- hkexnet/consts.go | 18 ++-- hkexnet/hkexnet.go | 140 ++++++++++++++------------ hkexpasswd/hkexpasswd-vis.gv | 22 ++--- hkexsh/hkexsh-vis-fixedup.png | Bin 709574 -> 697628 bytes hkexsh/hkexsh-vis.gv | 152 ++++++++++++++-------------- hkexsh/hkexsh.go | 55 +++++------ hkexshd/hkexshd-vis-fixedup.png | Bin 587927 -> 600193 bytes hkexshd/hkexshd-vis.gv | 170 ++++++++++++++++---------------- hkexshd/hkexshd-vis.png | Bin 583066 -> 595242 bytes 9 files changed, 285 insertions(+), 272 deletions(-) diff --git a/hkexnet/consts.go b/hkexnet/consts.go index 7ed1c3b..176b82f 100644 --- a/hkexnet/consts.go +++ b/hkexnet/consts.go @@ -7,6 +7,10 @@ // golang implementation by Russ Magee (rmagee_at_gmail.com) package hkexnet +// KEX algorithm values +// +// Specified (in string form) as the extensions parameter +// to hkexnet.Dial() const ( KEX_HERRADURA256 = iota // this MUST be first for default if omitted in ctor KEX_HERRADURA512 @@ -21,13 +25,13 @@ const ( KEX_KYBER1024 KEX_resvd11 KEX_NEWHOPE - KEX_NEWHOPE_SIMPLE // 'NewHopeLP-Simple' - https://eprint.iacr.org/2016/1157 + KEX_NEWHOPE_SIMPLE // 'NewHopeLP-Simple' - https://eprint.iacr.org/2016/1157 KEX_resvd14 KEX_resvd15 ) // Sent from client to server in order to specify which -// algo shall be used (eg., HerraduraKEx, [TODO: others...]) +// algo shall be used (see hkexnet.KEX_HERRADURA256, ...) type KEXAlg uint8 // Extended exit status codes - indicate comm/pty issues @@ -63,8 +67,8 @@ const ( CSOTunHangup // client -> server: tunnel lport hung up ) -// TunEndpoint.tunCtl control values - used to control workers for client or server tunnels -// depending on the code +// TunEndpoint.tunCtl control values - used to control workers for client +// or server tunnels depending on the code const ( TunCtl_Client_Listen = 'a' // [CSOTunAccept] @@ -77,12 +81,13 @@ const ( // action:server side should dial() rport on client's behalf ) -// Channel status Op byte type +// Channel status Op byte type (see CSONone, ... and CSENone, ...) type CSOType uint32 //TODO: this should be small (max unfragmented packet size?) const MAX_PAYLOAD_LEN = 4*1024*1024*1024 - 1 +// Session symmetric crypto algs const ( CAlgAES256 = iota CAlgTwofish128 // golang.org/x/crypto/twofish @@ -94,11 +99,12 @@ const ( // Available ciphers for hkex.Conn type CSCipherAlg uint32 +// Session packet auth HMAC algs const ( HmacSHA256 = iota HmacSHA512 HmacNoneDisallowed ) -// Available HMACs for hkex.Conn (TODO: not currently used) +// Available HMACs for hkex.Conn type CSHmacAlg uint32 diff --git a/hkexnet/hkexnet.go b/hkexnet/hkexnet.go index caa834b..494568e 100644 --- a/hkexnet/hkexnet.go +++ b/hkexnet/hkexnet.go @@ -9,13 +9,12 @@ package hkexnet -// TODO: -// If key exchange algs other than the experimental HerraduraKEx are to -// be supported, the Dial() and Accept() methods should take a kex param, -// specifying which to use; and the client/server negotiation must then -// prefix the channel setup with this param over the wire in order to decide -// which is in use. -// +// Implementation of HKEx-wrapped versions of the golang standard +// net package interfaces, allowing clients and servers to simply replace +// 'net.Dial' and 'net.Listen' with 'hkex.Dial' and 'hkex.Listen' +// (though some extra methods are implemented and must be used +// for things outside of the scope of plain sockets). + // DESIGN PRINCIPLE: There shall be no protocol features which enable // downgrade attacks. The server shall have final authority to accept or // reject any and all proposed KEx and connection parameters proposed by @@ -23,11 +22,6 @@ package hkexnet // with possibly a status code sent so client can determine why connection // was denied (compare to how failed auth is communicated to client). -// Implementation of HKEx-wrapped versions of the golang standard -// net package interfaces, allowing clients and servers to simply replace -// 'net.Dial' and 'net.Listen' with 'hkex.Dial' and 'hkex.Listen' -// (though some extra methods are implemented and must be used -// for things outside of the scope of plain sockets). import ( "bytes" "crypto/cipher" @@ -173,42 +167,6 @@ func (hc *Conn) SetOpts(opts uint32) { hc.opts = opts } -func getkexalgnum(extensions ...string) (k KEXAlg) { - k = KEX_HERRADURA256 // default - for _, s := range extensions { - switch s { - case "KEX_HERRADURA256": - k = KEX_HERRADURA256 - break //out of for - case "KEX_HERRADURA512": - k = KEX_HERRADURA512 - break //out of for - case "KEX_HERRADURA1024": - k = KEX_HERRADURA1024 - break //out of for - case "KEX_HERRADURA2048": - k = KEX_HERRADURA2048 - break //out of for - case "KEX_KYBER512": - k = KEX_KYBER512 - break //out of for - case "KEX_KYBER768": - k = KEX_KYBER768 - break //out of for - case "KEX_KYBER1024": - k = KEX_KYBER1024 - break //out of for - case "KEX_NEWHOPE": - k = KEX_NEWHOPE - break //out of for - case "KEX_NEWHOPE_SIMPLE": - k = KEX_NEWHOPE_SIMPLE - break //out of for - } - } - return -} - // Return a new hkexnet.Conn // // Note this is internal: use Dial() or Accept() @@ -253,6 +211,26 @@ func _new(kexAlg KEXAlg, conn *net.Conn) (hc *Conn, e error) { return } +// applyConnExtensions processes optional Dial() negotiation +// parameters. See also getkexalgnum(). +// +// Currently defined extension values +// +// KEx algs +// +// KEX_HERRADURA256 KEX_HERRADURA512 KEX_HERRADURA1024 KEX_HERRADURA2048 +// +// KEX_KYBER512 KEX_KYBER768 KEX_KYBER1024 +// +// KEX_NEWHOPE KEX_NEWHOPE_SIMPLE +// +// Session (symmetric) crypto +// +// C_AES_256 C_TWOFISH_128 C_BLOWFISH_128 C_CRYPTMT1 +// +// Session HMACs +// +// H_SHA256 H_SHA512 func (hc *Conn) applyConnExtensions(extensions ...string) { for _, s := range extensions { switch s { @@ -286,6 +264,42 @@ func (hc *Conn) applyConnExtensions(extensions ...string) { } } +func getkexalgnum(extensions ...string) (k KEXAlg) { + k = KEX_HERRADURA256 // default + for _, s := range extensions { + switch s { + case "KEX_HERRADURA256": + k = KEX_HERRADURA256 + break //out of for + case "KEX_HERRADURA512": + k = KEX_HERRADURA512 + break //out of for + case "KEX_HERRADURA1024": + k = KEX_HERRADURA1024 + break //out of for + case "KEX_HERRADURA2048": + k = KEX_HERRADURA2048 + break //out of for + case "KEX_KYBER512": + k = KEX_KYBER512 + break //out of for + case "KEX_KYBER768": + k = KEX_KYBER768 + break //out of for + case "KEX_KYBER1024": + k = KEX_KYBER1024 + break //out of for + case "KEX_NEWHOPE": + k = KEX_NEWHOPE + break //out of for + case "KEX_NEWHOPE_SIMPLE": + k = KEX_NEWHOPE_SIMPLE + break //out of for + } + } + return +} + // randReader wraps rand.Read() in a struct that implements io.Reader // for use by the Kyber and NEWHOPE/NEWHOPE_SIMPLE KEM methods. type randReader struct { @@ -302,7 +316,7 @@ func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { // Alice, step 1: Generate a key pair. r := new(randReader) rand.Seed(time.Now().UnixNano()) - + privKeyAlice, pubKeyAlice, err := newhope.GenerateKeyPairAlice(r) if err != nil { panic(err) @@ -316,8 +330,8 @@ func NewHopeDialSetup(c io.ReadWriter, hc *Conn) (err error) { publicKeyBob := big.NewInt(0) fmt.Fscanf(c, "0x%x\n", publicKeyBob) var pubKeyBob newhope.PublicKeyBob - for i := range(pubKeyBob.Send) { - pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] + for i := range pubKeyBob.Send { + pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] } log.Printf("[Got server pubKey[]:%v]\n", pubKeyBob) @@ -360,8 +374,8 @@ func NewHopeSimpleDialSetup(c io.ReadWriter, hc *Conn) (err error) { publicKeyBob := big.NewInt(0) fmt.Fscanf(c, "0x%x\n", publicKeyBob) var pubKeyBob newhope.PublicKeySimpleBob - for i := range(pubKeyBob.Send) { - pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] + for i := range pubKeyBob.Send { + pubKeyBob.Send[i] = publicKeyBob.Bytes()[i] } log.Printf("[Got server pubKey[]:%v]\n", pubKeyBob) @@ -491,10 +505,10 @@ func NewHopeAcceptSetup(c *net.Conn, hc *Conn) (err error) { } var pubKeyAlice newhope.PublicKeyAlice - for i := range(pubKeyAlice.Send) { - pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] + for i := range pubKeyAlice.Send { + pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] } - + _, err = fmt.Fscanf(*c, "0x%x:0x%x\n", &hc.cipheropts, &hc.opts) log.Printf("[Got cipheropts, opts:%v, %v]", hc.cipheropts, hc.opts) @@ -530,10 +544,10 @@ func NewHopeSimpleAcceptSetup(c *net.Conn, hc *Conn) (err error) { } var pubKeyAlice newhope.PublicKeySimpleAlice - for i := range(pubKeyAlice.Send) { - pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] + for i := range pubKeyAlice.Send { + pubKeyAlice.Send[i] = alicePublicKey.Bytes()[i] } - + _, err = fmt.Fscanf(*c, "0x%x:0x%x\n", &hc.cipheropts, &hc.opts) log.Printf("[Got cipheropts, opts:%v, %v]", hc.cipheropts, hc.opts) @@ -654,11 +668,13 @@ func HKExAcceptSetup(c *net.Conn, hc *Conn) (err error) { // channel on connect // // Can be called like net.Dial(), defaulting to C_AES_256/H_SHA256, -// or additional option arguments can be passed amongst the following: +// or additional extensions can be passed amongst the following: // -// "C_AES_256" | "C_TWOFISH_128" +// "C_AES_256" | "C_TWOFISH_128" | ... // -// "H_SHA256" +// "H_SHA256" | "H_SHA512" | ... +// +// See go doc -u hkexnet.applyConnExtensions func Dial(protocol string, ipport string, extensions ...string) (hc Conn, err error) { if Log == nil { Init(false, "client", logger.LOG_DAEMON|logger.LOG_DEBUG) diff --git a/hkexpasswd/hkexpasswd-vis.gv b/hkexpasswd/hkexpasswd-vis.gv index 95e67c8..380724f 100755 --- a/hkexpasswd/hkexpasswd-vis.gv +++ b/hkexpasswd/hkexpasswd-vis.gv @@ -14,43 +14,43 @@ digraph gocallvis { edge [minlen="2"] subgraph "cluster_focus" { - bgcolor="#e6ecfa"; -label="main"; + label="main"; labelloc="t"; labeljust="c"; fontsize="18"; +bgcolor="#e6ecfa"; "blitter.com/go/hkexsh/hkexpasswd.main" [ fillcolor="lightblue" label="main" penwidth="0.5" ] subgraph "cluster_blitter.com/go/hkexsh" { - style="filled"; -rank="sink"; + label="[hkexsh]"; penwidth="0.8"; +style="filled"; +rank="sink"; +URL="/?f=blitter.com/go/hkexsh"; +tooltip="package: blitter.com/go/hkexsh"; fontsize="16"; fillcolor="lightyellow"; fontname="bold"; -label="[hkexsh]"; -URL="/?f=blitter.com/go/hkexsh"; -tooltip="package: blitter.com/go/hkexsh"; - "blitter.com/go/hkexsh.ReadPassword" [ label="ReadPassword" penwidth="1.5" fillcolor="moccasin" ] + "blitter.com/go/hkexsh.ReadPassword" [ fillcolor="moccasin" label="ReadPassword" penwidth="1.5" ] } subgraph "cluster_github.com/jameskeane/bcrypt" { fontsize="16"; -fillcolor="lightyellow"; -fontname="bold"; rank="sink"; label="[bcrypt]"; URL="/?f=github.com/jameskeane/bcrypt"; tooltip="package: github.com/jameskeane/bcrypt"; penwidth="0.8"; style="filled"; +fillcolor="lightyellow"; +fontname="bold"; "github.com/jameskeane/bcrypt.Salt" [ fillcolor="moccasin" label="Salt" penwidth="1.5" ] "github.com/jameskeane/bcrypt.Hash" [ fillcolor="moccasin" label="Hash" penwidth="1.5" ] - "github.com/jameskeane/bcrypt.Match" [ penwidth="1.5" fillcolor="moccasin" label="Match" ] + "github.com/jameskeane/bcrypt.Match" [ fillcolor="moccasin" label="Match" penwidth="1.5" ] } diff --git a/hkexsh/hkexsh-vis-fixedup.png b/hkexsh/hkexsh-vis-fixedup.png index 07a29bce3ce62d1e6a76737a3c047579adaa5ff4..312e863944ca6bbd5a4dfb0ea3a25521bee37b9e 100644 GIT binary patch literal 697628 zcmdSBcUV))*FTEKqZ~oxsDN}tK{`n9K|sKObV4uEA@trsMdZ+t-g^zbgdVWbd+$X$ zp@d!%Lhg>|eZTK>@9+1|z0dvQ-p#W~CVS89nKf&D)@Rn5Buq_3frN;fh=72A1pMZ; z1_1#fHvz$4I)B{-J~4g8IS0JlHB(Y}O@PDy#NZG0Jom+)$Iq&~@Rz=1}0lULSkx)d|DX;$e^&RzBuVAN3ek6>a2tLFv z#VemmFk@qrcSFUhh&fzgxCneg?nK!2o46t*99V@aX?KbYl|>Z~u1zczu-o zKLyU{pUnSLig@mF??0ult8Wbd_)n=?~>wnsN%23nLFm`#g zRtpiH59|LC`e3)!C&G=E>_1O@ub`BT^XT<7N(#U8pAX-;Fmd1dPf3?HOzA%b0t$uI zNB=3k@BGsA=YLB7`)XeUyi7MVkJ;XpDV}ZWi~WA|D|)&AQ!7+lbiZ49isM+af^!?y zx&OZHeOn~e|3-}KZXY5H`ikFI%ngfFCX_r!+v{3SmKnZomotPk9z9M&&$mamh;K$s z)+zUumdC`iC-4+!$%4kN3MLHB{md3=Np@!SN!Xu!$!N;FRhz1HH6XiyHG&R6tShE^{-Xj5a){x zK}L)!$wTxb->XP%W}WQnu_KD)4Tuv=ttnwq*-{e&xus%1D>1_PZO1TeA*8>-Zumo| zt1z{z`!N2w??Vasf6vp(Ll;*h0iAML`H`FOuD4o-3cYAa;2DA$eBvuvxK!s^x?9pb z=fiHeHEc4mSHq(e_bfV~G&R|r9~~yat6de)sH`ndN|Jd~e4a@(9a45A=5rirrA*8I zBtP+yjPQ08`G?tX4)0mgaIcaAQmcyb(UTe?5kF&osRJGwj^I^pT%qvv-3@ddzE=e6 zlK*PY%EK>d88F^59hh}1+SRN6i`^GR-`!T;xPpYsarSw;(jt;T>2~9xS{L?`hTB$U z28=A=v6lQ_RMISDBN4_EPWvLPB9=f3-n~BX?`dx!L=G~w# zVy?7QBGcXyrTuyz6O>!(F&+==w#pcankW3-mH$%Ym4~KVM+wGk`$?q(-*#ssQHz9= z!(&CMtq3NzqvNOz%WU*o2Dg#Y6tdB7@mNfbhAfVW*+^+X+weSV|5Q=$f^!3srL6k? zg>h7mwiLeQ_n|a?zYX{6^Y2UhrJR;`Il3cJa6|jL46kaq3eK$EBU_#Eme^X5{MIlb z`{5p2rbvrPYs0>hlUa*$eo&2@-|^HDh36X-i{P)Mt>4ymMf|U!dB4`3CA%Cx@w_YB zfDyaIybgHj)8d)k?ptNr+qdnL{`g`+5Z{LtMwx%Dh@NUz_3cgaW4D&leS@GkarTlC zWpm~+r3EJ7t3>Xy@R-TC`ETER57w~Fu3Y$K>i6rxN4A^lA(m7oa8=u!n9>-ZC^Tlt=n*SeQ7J0u z>*()6&|Cc%cFbD2`@dakn2IYna*7CZDjTT22TG!g!ljd zRU5L|As|>-O26#~9j@F@dT^Vx<{7B-w7ZrBcn=8o>+J@gH8BLg{rkcn1jiLiRqdr9 z>{7KmC4e8|OxzzN_K=DF$mNc7{RVrB9ks*1#XQ(wJ(qvmfWL!)fb%H`WK2)bohE3P zQ7C)sICB`3URYA{Mk(|b!K?PytB-ot6cgDi=ip`fV)rFJm6z+1&;r%G6GX+ud9(gJ z2$l(H%|p?$a zV1~Bw&YBqkL995yC7M_^Cqx8M!Ui9vSIK=3a_)MinC`^>I|QJ<>_0!5-}_l4>21F4 zPSWTtecPoWkY%~G=qCC5maihz1OyTyK+hH)2gB=x{O1*zi9|}?^+MAc3bG4j|3fWE z8S??Ub9h)bw=0>sdzJ;v;(s5cynw0n)V#rsQYm#_pVWByal0|sfrAEbWHPh1pDurg zSUMT#dqyWhkTuq){>w3f);o@!1xxj9_WE(2m6t}hvr)N3f$((;9sQ{;KG!o?MK{tN zvfS7{dNWe+Hd*A*RGjKQv-`891a%4*O?&!6YwOmfii4eORWp6xbmB5U3-$|k+`OcO z9KK6mv7TnL5|Y#9nMAER38O8M5^d?o)OJk|p>OV6UBXuvBBOIf$PQ?M?Mao}M1`_W z;$bB>VfvWsQAsH*$`?8@ZAX^uX?{K5Q?bC+opr$6p`q_;lXT3()4A+P8|ZbBjHRp- zUjme0d!({6mRd-?Fk#$%elWE+`~nu(>p4f87<f zh2a3^9+tNj1zxA0Hs?>jP43d5+OXT4OvT}r*3m-d*;8V^s{v6ja;xpQ;jua@-ed!v z8t55NohfXCLo$)B!^6J`oO2LUH@!wHgPDNO(X%^u%e97A&%@gu6!*PqF_~z zJ4n@~{j5oD97_i_UlkV74vAQ+M2#L!4W3;RGeEz=7G05-S=`+jBb6q;yO+^}=ykXb zr1HwfNC_Oo;b|~oYh-xwxt!#4BuIkYQ?nZPN^h1zOJ>_Yv050p(Yy=jJ<@}r+aUS} zYV+nmsB15}5x`_uycfKP5*3t}+{zjfaa`I3C$g?Ead6}lU22c4@I2Xe5uWGVFOMA3 zZ$0#Ya3f#fFC~|ke{t)w&QJ|InXaxHUh4QtBCmW^6VPSqI$(NcNSjgGm&EuOk~75W z!Tv4?xB6RI7x>-Mz$crhkb9(rqTWd(Bi}6fhC&XoiZuCgb(6#4VZjhYHv{_J*>c)k znSRoV!4eYITQ+P>8zfqjzp(EBDLu18?(VaKTk5Y^BzY~Y<>|61e$@M4MzudvxrPu?m9~lA@+A4VUw49=p*PlG~Q)zeJf?>x-umpNVxZB21S)ELc9dq zs&snVc11l?f5^q2I%&LCnG<7&20=nEN zLtgreV<}8b=C>rX{Vu#nc>z$6V8ug*@RXT5hJBL;HMnw0qMQ z&%Q;H@GaJNZhR=c4QU<}Pph*C9r|2gJ2tkVD3BS?W~x-wKFGJ*&POS@(d|hUdX!rx zVACxK9@{~MvJGu9N3nWgm|cJSY@c9wl=bGvAgmzghSaf}Z4oPCsjd05KfrwI>$^GT zD3cNjja>(F-(tY}vsNmOV(10k3Kl_8Efd4Y4mNu6fR-aah>N00^rXGe?(p*Mv#X?1 zb_=&HsYT0+n*%m^fZY*(0$>sY{rPz#jjujf(Z|a8(UiT4=E{eCbTy6xhCy$h)=r3c zP}aQ2S2#Ce9X|`?_l@tn&$9<}w{w^3F_GX*u-Tjw6mO z+rGytVHVNh7x56_ebP@|?ya=f)^e3I#!F4l+I4%JuROzEp0y$;OB>2bgzsuAYz1ASKo)S^1xgD0B7WfAY}PPEwLDlly?kFVecghykX@E^ z(L)lj?#X~VMC zsC=FAaleQFbH;R0$vP)CszTSOVW@&U-q#!xzmm8%Y1t(=ICBFB>G7+27&?{fo;oyg z>w7TsCOf{^;$0fVJH-`afS)=q58BTf)alS_dAET#CoJyJ&%u1U^Z16O1ktkKojU$v zq1Ge$t>)z}sDfIgnd~0|wfza=#>Gyzt0GZH(>EGw_O;QRH?NLLZIKIAKaHm2-2B1USH;oiBxACSe#bx2R%w)3hR}`FKod}X!1ySK_Rr(S8{4|c116mA+tJzmxv?kCD7c#twT z5vb^3f>neprKj!86$foU3(oyCrLg2JewrHMCa`_=f?a(^xzt5LtFH_;7bB6!IKH`q zJ$CdmLNRn^Wt41H4!4w_qP2YH4^@9lWnB&@sDc$?RWV7fD2k(Nw1)D}Rn;0s#9)RS ze*9rZ=35d&9W#^SGGwnZX-!AnJ5-2Z>g{XDv2t95k=HG&7gGop{OBmP?QC&%FE3Y& z!t7KjG1q%vcq$`f+quHOsmVMrUL=dP8LJA&*2)ZHAtyhqA)2BtE2yUl>nnNBd|b^| z`d#p*y%^IEj>I+1y9f{vyi%b;8Qvjq97GK0rVg6p>Qri=Bm!;vw@HSrvH>VO`{m_! z`pZji_)LiK#@c|U_&Du+S3Hcsw z0L2U=PWVKwwB|P_;XWIou62GocNDd!6e6@?nZ=6^yVC%D-8>?F`RaEAe@gZN4MhLj z0HAa$6q{97KgJmG7xBm88`DzVf8XN&|F3-eKiB^6(e(c>RR+g+cW6j_g`JN^%jt{qwCk{{BQ|Z@$RXHa7aL{0@54!1-KZ z2>X_$)QVNJ$D7@rkUe^oW;YF1Qqp|=TC3}5aJjC(zhAac@e1~qN-B}dK*O>>NiCI+ zS*y|z?Bm*LO=g3GcUrr1aCdvMlb0D=v5b z{Il0yXt}n1)TZM5odw9mywXyL#Jc8;($XEt^_^eOgr6uhH;eS1p;f(vS!O9KHulzI zN0(-MjfJ{SgT9ZA4TOh>^@}{ojx8uyCzI>`$ss0WtUl@z9uCG)JtQyVn0`j?f0b7G zNq*bxO^QsVJS!(Bw$6Gum$L?qMwjTr6=BARI2fd?1Ubo3>TcU%82AxC;8?FrP=HGQ zQhH9_9mBIew?W9*g`QIAp9|_Xx(O85%_`Z-*ZQa^>hdmSq^=kf0f93fhZo@W^#XL_ zp8Dy+sHp}AKe%N-J)jjs8pBgvB}A6tW%gi(L^k!;mWpUY+`;qg?^(^~4f%ZA2Tu)TWMts38}b!~&FZ^T4uiF{WyP%#P;Isf zWTH~3exU|TyR?8kfh~!bgRhFiaKtEtxTVZ=KRmT>d~D#Dw5=ex`w#c+OHn#8`W&pn z5b}8PC6{rVe#DciBqmW&QJ7vG8ajP&4{kgDmRXUk?xzD@(yuD-k&x(A;Yid`+^XA0 zAO|kG2eIZuDi5gnFYjdDYbtrtN-|QvV-6|R0N@UQS;t?$dRPgn|9Q-E4S)B|mCNL& z@f;1BeY?D)w{i>%1<+hL>0;Q^Xa-j{H?&*r5|tv0MgE zC*8h0;uj0Njs#)si~15dN}m{S=Nv4Gml!t3QAFcoAp|$`0N9*v+C4wpzx*IN7k;~^ zf59kIaCcmqT4a^O$ET&ts)9Y~0l-`r05(ieSXgL#h8#=-VF@dY5qh?^wsB(@;r^8l z&n2fTztC5i$UQi3pokVg9dmEz>SQ?;0w;4k8^qv(b~+9sUcWLtC>DUu09`w$;ZJHo zScUM?Wp-9T1Ki&Jk_8{ud9@Uml2TxdqsenYwY?sDbd?k}sy`0$haf%&m7@YvidH*Q zA@>Ph8Gkbw{Gg!w_H9NxF7QJ;8mW*e`j{15+gJy|Bzc^f6xv{^(^~A zmEVG;#!~q|9JB3}UW9s1he*1e%||{&&a~VD_Zz-*a46JPwzC;ZU~F-9Zr@a)fw7Y- zZjTjmQ1e@bD<;{Odo5>{{PPd1QYhXUR~~xp&Db(`$^%xSnDpR|_tS84wj3)D4(QEw zCr~CJFzk+0T6q|kmIh1Z4;t-eP@OJR(qY1@@6JgVoqrqdAzkP~aRU$YxA;t*ZzyP3+ef$Tf(At2DD4g!l4`9lw^wMFE!XXgBUj~>O5 z(Il5#etOMZoI-DtF*T*_>f)LZ99%)WzrTKP@QhU0+Q%5TbFj%7v%4(0kO3)qAKFIj zQ<9TR)1S|dy*dlXO>D;<=#bElbpw8s;IIeC>aDv04&4`rWlNLrNz%}Gd(5HzMso>O zrcy!k@>TC`q&82nrBquL$vmmuND7shE1#MwXjT^CCsoxOuW;0WC%W$mS2434HtX-B zlOC*n2n&zae0NBm+2JfF{iF)10eB#p=VY#ehRIc*IG6+s!C*GggXJHCdY%nJuI|frekYeJ>a&q20J z)v)s_v`oA;_Y`6LmfiWD3Eby|n@f*RiJT*;#@!pQcE`N&y#+nh|M({tgoi~`r7K~JNt&g>kY*xnuV_IS5VJNU_^m(#H>%Bz5&RNz8CHq`hlD%&Hfn7)8A+#&2{bh2|3B?v{QY^5Gikm;IFO|13^rTFsdWJ9&b%l|Ef!q z!nwg6<`>3(;dyyau}a3FPN8cj7oB`Gpp5R{hP?MVe}^b^SxC$WacplCgPHU43^e@bbL1CRj1_k zeX5HUaMkNN($?xqF!JHmAlBx)Tbez<=8qz1+4#jFMz<_ zKSC&pIQ8YZIYpp7ohWuotvW@j$r26u#Qx;is8O`^!kA>KT2V@%Nzlxg>3`caf9Qiu zwcRNm4uBC$X8Fl1E7LR4m`~v*iv{*zrqV8{eG-cIwJxXjSi0|b)|yP$O}q|(ZnnOj<_b=G!5Dm1{7+U=j%6Hg$C zM1kyj3kCp+QG`nbIeU3%46+wO>J)c4w?1-z#!G`v^h;Kcg!^?ybe2RmudLe*Do81A z&)z|+!qpZ(qfxt(MZSU@J>QlNq?h~X0PoMv$@%?%r10F-^dWS-sQB5lyoqKb^TAZU zPttR;1MgmL$9oxT%b3L#4e95pWTI_xH{|R(+`F90z-S11N(%~J&(3Z}VTlH<>K@RM zjuh>O!aXk3_ZPfmT#mw0k(cBg1!9wZr7G}Rm?k0v3SoP$^F)DI?t1%}OJA*Bju_@q zr%z=W2JRK}=6vP%Aais{*1CRc#5PlmrhJi51$yxzK8&riD>jk*o-KaRSF#!!;SGCYd5OChHj|$vTl|?N#;?LHBg*guZYl?sHsu#t zp?3VzPuyU#N>BRCPP>OSB06lk0nrV2>3--iWtQXA z0IM;A+h_zc0l|kDV5`V0Pz}I32eUg~19Ufy-|`=OhXZU7YMe&Lb|7+6Kj^US*`opW zm9_lOBzDM+7AyyZH6D#^5Vm?Oe>adTri)|3 z`TKpYDw@1T7S55?eQUBr`-vF8K<)ID*<+hF8IrDmQuVIPG_jyy&&;-GqD?UM2$s{U zpUE4^WaY!fH$^@iq}v0Dy3JRYu&u8j(oQuxBX<{|!@cQMl2sFIQP{kKfci z(uKxPOA%U~J6-%L$}M>Z*p88~x@2-!F8yCFY_6UcYKdu(v#y*aq`u@9rkL{n-2g$y z_d@#;c@+j1+q+d;J7?2=n@ztn^40ag08Lm{Yq26i_8z$y)*SN`S}JRq+jO}M^Tt0KHlp6m(`3lw`3k>oU*w_#vmUa$S5 zC2_LGL)HU2p2GA3koi-*%#UWR`I*7y%f4Xd@F(qCH-G2^=7(2Rs-?|ls8c*5E0Oy6 z2i&yy!e~F_%IQQNQIQ-Z;;9LETGV{8DfWD~XN&&~TL(%-W}EOUFw5_2)c0nnOM$q! z)~?&bWGA`VujGRZoGZ`)U#MvjtQR?wL~mYNX0%X~<)|*xabutz+xhHX#zZ@(Jn>rR z&R>;>85PrS^kG&vRv{IrWOW`vQA6Ts`hf`{c1|sW>6?mu8c%l9dBZbKq;vP~Vsv^$ zd^_4AN9+{+CZ1(@?CS@~6c2oGdL`HGa7K?yw^kh(zq;;gcX=Pc@%gq`8o{0PbfS=2 zao^rmze{M!UNFp}Pfx77p3{$NPLB)W$OAWfM zpwlqpEL{}<_7{S#Cuw>Jhq5HAl+!(X0gr}gl}zLai1u;Hyf05Wi1mSeSLM>~o0TKd z#iUxbje{X=_HGMKJ(a1xSE1&|4r3~1H)*9aZv6@C9cq|BdYCV_Joa=*SFSLPAKu&) zSj-Mb6>-r7YMG4?r3UMicu8X-PuNCZz>zn#o(@@6ceM49doT2nXMAUaxTxoNz@OgW+ zM=7h@VR)pf{)(B=qNMEdX+^n!W(J7T<5~Cc9)oHltgMzffQ*u|++(+4(Jcs%2!~I9 zvM@n6Rf9^6=Y>yyx;fc)wUHA={G(j~vpl_0z`C0b8`2rzqF%IJgi}vfyd67!s5#bH zZ5&VoPr@Fy%RIO#U?_S3iRhY4G~=^9>q7Wi9$LfZ+Ol7~#X+XO=c5*YAewgxuovt2 zgGu0(rd6FDkGr=a_mF7zq*tB!(F>~b{fRtjDj$*AKAWwaIC2i;q%hiMd`w&P!0V=U z*K$ikIy8tnrx-?&7$22rzn`g9XG@Gl`&bq-{kd}z`{}I%tX;@hyxkuh)$iMTK!Jl! zQVQwWy^ySGVV1C{7lQd?iv@H)U6bDA=tg6KlbJq!5@Rd;AjrS%}1$Rh4yp(BzXj%=DIT-84VD zcES5XSvmS&I|q4LM*233RoSdI7lz81LkOfoSA$XKhu}_G2yCpp>TcUf^U$A$_4tL) z3J8cnK4qBcz?CrVgvn33Rt$TkdGB07k|DWA&WK~f+kz$9@`7cFIzA}Bd6U)t9B*dk z%!F1G%>2}BfS?|`@0!?9rzEaU74wIlIs1kK%blM+n5Nli2A@R0j^je#Dquqy`{!}fPMN9;>q1#_wFS!0n9$ZF2M6hwy6je@WpD#cW7}g=kLYU z*Fsd8bq8e+UC>T~dxs$^T`7*E&n_;>m2q^q6LBDnNASMwdqNuQssmS{T7)gP`!!ly z%U2T6--7S6zEG*-&f($TcKRq@!HSENAt27e(~i-s3p6h5400F`hqs<8HWr^Q^aYzYR18#06tXuj_E3vl%BA3mtm1-nOU33^wacx^!aB`j`jVV{>pCxbwWWhhui$ zOt888MQgNfX?0ZMszjF7z>Tmg*Hqie{=xFLMI<;%T(WptY)Zqj&7+!~`I$1`Kiw%e-t>w?V!wkN~C7zwjwBJ2!%>SHHgRU_Sh5G=SCf))pFq zsW%p(Pkp3`DF#L`of%|74$0@;8}?SF3{HfdMh3-l$xa$2VUV;LM_uIw{121OSd zjTDnwg^@A-L`^;4gm(7^{9HhnumYM6H+*NS>zj$EOBR*#-N$er`w|XEzdI?|oL$#6 z$JIyPzt;b3wm-35ykhu|z(x7Naqa!iIokm4a>|6{MbuWdRro}~=$clMyw2<;h^rAM zc^2q=O*ec+c0NI>84A5PwuKrt*2+|VF59As7qA#;R8(p1;9$H(@E#L^pOcC5s}!ak zR0W}1#c*6j_jY`9y2r|%U?)p4+h76{?m1yS{|mV(`6r3B{dzK$D2#`N3ja=Fl9SzW z9F{2hjhcQM_+hS2z2l@9$u|F6H<@_XeGvU$!RpNW@h>^Mc)j!UBRtxJhWUI=e#yRDf3PxOR06r*0O6Bib|U9mx6a#iWiR- zq@WP4{J{>@iDU-S*vtxL`A68*4Lee%K!EXMblE9-g5%bnS?;c9?W1|x4kNoFQ}ax4 z3*~I6i^PbN%!}-dvFftVcRG!vTAs?*cpkIzs{JyU2gk`oqozx~U<8m94hAGxUHYyJ zE(mhkx2b)bwp{qhmEGlTzTh>52Q((gIe22>IH0N)iarA)7JPDy+e;Uw3Y%OnOKM-H z52n?1Jxl~9I6;v@d3DQCF^k0jsX?#+Vm)~9o2XSG{L)!PGAfXD0 ztyMJzFG69sxiVKyHPx~wh)Q&!B!Aa1&f{SD{@q|>jESFM2}Iop6Eoc|TRd5W@zdwK zkWD=1ay7wcvDQHV0i&-s)gTSIVi?gB8Y^5b+MQlh+R(^}r8SgX-#*}0@Zu3|@$36G zs2uH>#lE>;Xf=qm`|+7B4ciYT*_l7eGM^E%jlVzu%z3Zcv)n(y;(R zfed!&eTBB8Y_rR>BMQ^5PhL2P(-u_EScv*~m&)%WkvE3K9v8K(TbB&=FP^_ZvS6wN z&x+_=<@<-%c*T?%UcwtS?{P6~&gA-54i(|X8Aqc^T|GEXkwa2rV71Ey~r&IXY* z&dvekTbfYSICX;#Q@rwBt}z;EQ5EzDzo#XJj3&77Aa{H%wPpsj!7le&DE+|-(HUcX zf(B%!J%x=@Upg10gU@bim1-M~M&9R2PVVmL!*mB^KPS94YNpM59;#}yG3Ovwg29Qu z2?xQ}1?u{wrj?`my{#|{`xE6F`hGfrmBqM=+=c^C5qCfrbpLzUvAb6@!!H0*F+i|4 zme5DXvAmieV`=v$o(-Ayk<=vqTi;V)qm4!EfUT{f(qP+-jkp1aV8DXxlWFd;qG#v6 zZ2`Nuwyu$VV!>0Xp=s!-BENopOIcIJK2bky+cN_X8qlINN%p~Ew#S0f{RC0(chN(_ z*;s_5u#?+zX<=&gqCcjGc7bI+z;F8U)nZp-{1j z%MpyRj@~_Waw@xyHTN}Lt3o$NMhx9tRrcMNcm@`GxuHx|v{2HDo6wka=2PUe>x_|t zeqSJ&3lcKa=B9^UdOwFWC;9I_9gl-MPm!Yizj@LT-A_);2iBiu`KCYoc6P#r4`vgb zjn6lX;|+QPiRS&+vhWK}xS^A1B12A@-JE3tOLta+QHUw~(&_CxSVIL3^i4c{lupU7 zPgH3-$O*b^<}R`0Nxt8v8s~1&^*5DOLE}Z`)rWIL<6grS zH%@PBY8Wf#rNdHz-gz#F;*$Z^;@Y@Isp;>jjrvMJuzDSW-?rJ)sv%2fB*CSbDmqv` zQJ*m1z*}6{yR@XzK}R}$Ai4`b@1>}%gEueduHFKWhx+BJk`WM}8ZYt?eD_u9ceVl8 z&#yrF&B=*&ZS^S+-Zf?}b*9QsqRLa$cK&QWi^+yy}hU7zb04v%|YZ+k}Vfb|On zVcb67)lpVmprX4zZA-48FgDE7lH}Umovfn2mOd)AV$QlzXDn(sZf^%c-A7E~3fQrV z7R^x4?7@SY9iAg?zkTcgxZl3#Ku{z82i$r8+gpeH?=o)5~KyJlfFyFYh{292>P&tV~0POMBfG>vvEL36xD*(soiBx1Z32 zWZ!7I$;Ka`K}@Bm{Ex}tYd&C&s9cjCz--qvfAp4&{BWDFlYVb+q=-ysc)>A-Q)SM^ zDzhX7<=qO@dmJRa3!3bKCvWT-$r1Gz z4o}T8|6i6`GI8sgxaXbpluTgQjJc~kwm)d)W-PMNMQuWTn_&Bv$i(?CjSH!)WeSYt`X zrhLH+Sk*11ztkDG;z>jxGLtw{3;8S+b;W*fiH`w7lw=jUjRwF9g%No=M=y*m1WZkR}UM<$9WTgj}xuxUg4YX}(oLG+9;_921a)mWrO`2>zB+l^mrt z?HlM?UlSLR+;}7G{;Az=weaWmbLxkb>FOP;WgARjDcZNHYH8zff~)TmplyOO@Qf(5 z-&j~=OZt>ye5Mk!H6nJczl?7={a;sM&hstJ6+m{89Z1%8 zt7J~^)Zv!!>6U+u{TXO4PNgC>zoT2SY8j&gdD|nJYT4wmv0KO4FW_y6=)f3R(g+TV zKnfM_R2YitaC57mcVbAOOO~I2JO=$wuBT6ch-Qf$?jAL6Lq^ZQz;3Cn6gv8`@ONTY zcj#zbI$ZV5g!u;c02(%v?m;UgqvQ2E=ei-Z>S0=BLxCA5b3b zqG$3I&a;wISgwXWoed2ey|9MoRt@%RMs z=}^lApQPPq9Kq5oTYrM%@`iAE?+dgLlg%Yvf?PSVlFKHl>qR?dv9HNX+;=Tp0P~mP zQCQyOA;Il9W_7ULzyh;QB8&siZUZK$#tcQUPP-0sunm^iPkaJciM4&CJlx(;Hm-ha zrIgUq2*~w2&8$7D&iQos_niaXyp#E4*1ZMO*%{H^;;zR~krm=uu@)%y=aahnnp&a0 zsa|ze68ehTsO%=o4v$^!ar9Y7iDq%&T*FoqvVkV=&T?DXUHE|`6@zY982^(AIL@0+ z(!&@CE2FQrcqWRJ`G04bsDwRl*6LT z!5&BTleN$7m?p=5?aZ&Q%)ZK$bRY+{WxWmJnw&Xtq2Bj=wH2>%X3;S=8;#W-F8Z9W z-o2`oI4YAn5mYH5__Pte4x5Bu8!D1#+@mHb&bP&3)uLRx3R;4 z8XB(QeaSq9%t}_JG9i1UDgf;ySP67-eQQE5C?*8b!N6-hv=_S>rWew(^wo}xj20WU z$1)!$Hy#h$e@`$>3DKLeDI8fJu{UW>sYtA3`g8Hv-fV^(9G4$sRCKJf>u2-JWPT$% zp(sWt6z0D5D~>5L^?#?B>ju|LMOBGfwPI`EPp$o^H}C;QCB35yzfm4>qaWwSVw~s$a^Nzh)@>LVe z^4CN~r{@FdVD#B;rKDfdmwNn$(pc*R4x_i)+IQ(he6{a|^)@ece2Z-l%1`9=Q>t4E zA7zu|rSxPK>u>&am{3kqK4wkw!noJ>Ku^_xS&m@>y2cnO=SM_!y5tA4Xj863d_xN0i#o1mm$b9_WeoolrB3Zpv`_Mq^Q-k6$mtw(^W{9wRP(?%A*} z$_<9;PE9|X1|k<;F+Z7|8JJ%ikJc2LY!81UIlX9d43BBbYeBGV&pMHo^{&ja8y71V zS!{HK6p1Ru^$9^MmzJ?#YXl#3!oo}7BBRxIITLTZrbkc?a4QB?$9Oo3Xz9J z69VzvnCyuH-t3Ya7VFxHMi)+IuvnvgrKj;fz3!FM9G#Xz#XBKStfAe_Z&EdsTf8?5 zKp5wbVknZ~F`XDvC^&A(fAcxEWw&ir*{btXh|LggwiR{Q&{r3;X0p%a)9)9vhj@R# zmXh%kiDjcbE0;rVWCNMEEpdp90c*XQJh8yuqzvV)M^DT5GH1Yh-cAMvwVRmGM=YP2 zKE=NFbPcLhN?y-*i#|{wni*5QIFWEB)d`#m8xo83i$J#zD^a-%5rurzaq_3AXwJyC zMj`J@+$5QvHch)se)rU19|Emx6U9YwD zvqgI9y?o0ZTE2{+cvK*olJW0ZT=R7olu zOGbBT)?#c+^xh0IIY_Nsc&Odxqti@9qea4Rl{DwG79ItggdR7O5hO4pq2Hq z%D~6Rj+;X}i3`m(TwB>5M%kDID8CnOOX$9$T=qV-`914G8z0No>{U%}(~I_>k)z3` z>H&R8uTpk&0vd-OpKm5@(HCHA=P&zLt>~L^jP%Vx!hOXxx zhPCsa70je?v#L-!_b+b}vKNmi33QAF2rJ}4e~<$rxJv|P`y}!v@5@WLNn3AghiGbu zS61}$=n(Jpbs|55QRhqq3O$s|{9e4MTUTH`2gvf4HldNkC6zY`-Sn8-si`~u?f#Fg zjjsHTyG;5rNpC`k!E^uJ)Bxn$r26H~D=8Yt~*@pecj)*h; zdt4#^&H{F>?Qx9hT+MSE2QTNF7}RsxC7e(Tjd5%CRZvsHiS_+_PL_N5Dp4}IU+tBw zz9;lvZ;WC}{5KyBz);D~izi*!YqO=l#s>8T?mm7VBbvmrDK&JGyuNShbO+~)5jGSl z{4-r8O5ZN0r0tJ%{V*uv~6zOIE4-41T(FeObJyJ7?Xhm_CF{{Aq30vYL{BI!QPc z-OA3!uw+ZQ&^^f%i8E^@3D*ChU&hkWl)^uh+TC$;M$qplUM={tc;Q?j3)2~Wwt-oVJZ=sEwki)@tD)dNX}84TB`Z_tGG8_N-mddQxyh{Cd7-2{wEa@ zS9`mmE%c0cGn~KnCy{0s9wS(eJcQzJ70n_Z63G(f@5-GH=nxc$_5^f^N|@pV-DAM&9fx{jcf?Z#JP!lup8WM^^Ty4U#L0r}atlf|$d^T5mR@+t zA9KN_1DLW1yW!Cfx63ujj`^wp%d9^cAE=3}0CFjwsbAsE`$n&5W%#NyEZKaBQiQlY zeegx#aXf=7_AL4M29te!_yf0^=|ypZ{5b6G@y&XM^Tkkx8>jW4X!K5Z^jDi$$FJCj z_e1n*-ETX!VearC&e$sUqn9v6Z&SaXO`CjAwa)sa&xIqV_;>iHQkiG)Hq5pOn1_`q zzdEJ2smXBy1sDw^oMbu>g7XORm6h|QPI&t zx|bm`-@;f_Hhw-X9-ElxBj&k|xjI?4=nVIez^=+<1-dZaMI_nAe|GB|ILeSPr)9pQ z7slOcVhi10&5TK^TgkWNymlvdjOn;&mkw4G!Cm_pI)AfGNTPUA`34V_e=+_XeNJtf zQWU&VCDGl}Y@ItwbB<9{f>KL&#B>eP*e+>+1s-KTn0i+er*8NWQSxc;TE_UM+riNP z$8G<^9jJWv7 z>Z20lxuyWES^xK-nwztZNB7Ru0#_~XgEpYR=Ll4e$8d}8b7*AGHo>mm0c$qTZsNUEe9_WuGXg?#6)5q?McWUvhX^8qPc^jHU_ z*Li0o=!{n2?ph;#Rim!Dt-x!U+@+C6Us0awt)7BsyVDP&KHX{x&?hnw8!U$%tkjkT z{%GS@-8|1Wc@sD3-qXeMQ{|glN@zBk2X~RY<8M%MBqxSp@s{u4k7m=GbNz+i{ zD=Ww`?UaugpS6~X==^!Q)6EA6Lj`o@eSA{)SgYn=uwJ#<^s2ADY*+fr%YN(Roe)pk zv6D9T!m{1>hAjzkdOu%PJf_AvBWB2ccFX52n5}8fpu2WTX~%^ExN~1pGgZu%l^j+yToQikM-3(t>z*SqPRZ7P*}2Y~ub0;1K6vwr+M32f>n7)QD0 z3a7hx)XVJ6(+kRTQr!8PlJ+gsgVERkk+`KJ)%ODzm~Ig0|6pq{oo}UMf*l>I%h~0} zP_-Tt(>AcmGj&T%J*^w%gnh{WB1X~K11}^I%JnLF#`CANhqdTVzfxbEtp-u3%Xd1b zSdfibUO!TpjOdPRXcE7>ji`=Ez%2r0<%)7+giB-p-3Es;^To~m^7%F_&6XNF`OJ7+ zZ!Jr_gDNw}^N_s(vN#7TK$Em19;SB!3j8*1@RLmL(_ZS1yDzETx9h11zW@5m5mhP3 zoXO2Is(U|lJYsymbL0G%yPr!-fV;Rvy{G&5$bz(8YcQajb7C2vzW;KXXwoz_<<6HU zF`X!3jHDI)G@2i(p%&}*H}IPezlHkgGVuRk>MfwE{GRV&R0Kgvx{;9XZlt?WO1ir{ zmG176xP)*C;nJPb-6aju-S9rwkKf<>UyHcFT5!(HoIQJH_H)qUq+d%A(i3((dSAGF z!A|0HW|4D`JVO!Pazopj=}Szf>y@2k$3MDIr1da##1NzHuQ8RuqOh z$uh61rA=Lh8nfFFu?#OQQow{*JiphmRitA+BKfpbh`$Hmk&I7!IX7F&ijJ2(ROi)n z3Mn+kJueV~x|&aqQkJfF>FD*EUi(v&rV*6$2Uz*J(`rR|chdlCB&6A_YedtVthpmk z7Ib;L<{u-i{uGvHv6H8C5i`>MM9;UV;98r-<5YNUd+y$>_G!A(W#6^d7JTTmys#kb zq>VFdqf_>!j^S%k-~6EkCf1g+mX?%-MMw0$$iQHPltS%?M*e@sm@7?J)LR?uv!k$k z=qL1A7NwqEXgMmao8vy3u)^i_VjTVA_Cj0mF*J21aKN_6eiv=1#6m-5()`B{<3sqj z@9&14x?joO!6qNv#M87(Pxi4Hotf)Ctx`Q4mT;9UX^rZjj_fc!dncSL=JbMghKwgt zg+ta$&?HlbwF%s}lTbZ?cMI!1*!P3kog67cTOm7H{yh(eR<+P1WvCwqpcT_CdxCslv;Dp{@Y%Q$?3u|jY6i*b= z6*Rfmx#xVX+t{?RFMZSucjD;->*oDd1N_;j>fmmseA-e1q+(F5>B;oj>VcQ0KYTe` z!q)b4j@4oGk^Da!;l6o@=4`fsu$SNYU)l){0cgo`_n>!;fOg$GKGj~@c8dTP5yj?r zt^V{lAadpij>P*k-lRBoOobnP!DFkgZ((*oQ{+Qlxs>%ef4h^-%)SF}@^&-A=O> z*;~bJ$(^iF1*+pUAfbekC&8wOz+4Wl80-o8g^A>^-RKF5j-<|qG46#HeJ=HCV*i(R zL@uz9;ZI#4zb%%di&{|JtQb~mwU)q;`ixS9*ZeTWm!^rd$TE;*Vnr@q*#W`P#byhl zisvgc4c4FB=ZbzkiSdnnk7X7XEp=|F^nF>La6#k}$Lb#&&*v=qqV)m3UA!>UzJKi9 z`!Fk*=cxV4O@KS6i8ymK_RM=EjW12rOx}3tB!1G3w|@ zJw?>DsZm1!gCxo1%qrmrFWot)2ECwS=}clE4>?Ihi~rD?Dout9%l3u$(3Obu zHpLGi-#Dl@x7~<~HgC@HJQozNZrrtn^oAC%AJQ`o@>8!D@5k}41cwVhaI{?4ax9P3 zt11@hZ>An&5hkTn@_gMR&LGl2ulBWiVm$m$Zcma#{nGJY3YU( z7rF73FaNk-P}jR;@O)=eM9O(vkgO)ecNU$MHYpwtke3Hc7O}a_h+W*ZDEiPtH$xr+ zo3dWKWx3KD-=-T?1diS)_e<>D7?E<8h5|A)H$=aWQ$l?@nh|i7Z%nU6KRSK!UCoN6 z(AcmR$53IE%4!Z%4)3+b!D|iHh%sFHd+*Hfgo*;=-XQDyT_Nk62{k4#d@V^~fO0RT6{}7v7%(w7C2p_(A!7L{kb}NizKh7DlN8Hb`GT z##Vf`-Ch=MUFZmH4}Rif;T^vN-BeF12do z`M>-qD5tD*?d)pBZfrl5*MggB7`HDo4MR#%UPd1R-JKK#0%MPI$z4K<=GBD_#a1HQ z&I&5C*(OyZ#lHiI_G+xPky7CBveL+>)yG9XeZonZI&rlW1u`;6p#PcSfy+wwk*(U9 z7+dJdjBE|9^ywa5mFXD)W2D8oZIoxHh|8xU{VGJa;xJ3*>bg#+_lzT{xyhV|#IH3N zl3}S)irw$Yikb8IiOaIp=By90 zT$RRq!7D~8@$``-n!Pv5Takn+-Id`Y09R2e{e(c+KTeJvQPt8Kh5QLpwyf6mlS5mh zwlTandBpBOTP1aP6QL`W-+>xnzEtG$jelwEsXY3Z@O+7}$>AbY9nt&k3ht}M5Sn!F z&v~-w|H3p*f873!p87d)fV84Ek#I%6+bYywljpzRD-_-N(5PwE1|_(!ua5qVT4!mKgOb;-cwdJhk+` z*faj%PnfI){5irO8ZfsO$M=nY%)fev7*b+oZ6+&^vCnB^wvo)ssWwyPAWNjH_nY8e zn?XVXmCj`7gjE8S$z5u5T*2W(qpxH6%ka98jtup0gR3mNcrAX`@ec_9 zqK{k7b4jOu(eku*dd(JqQ83DJG>uM6mV9^KDdar|CBgPZvpX}7GwU|q>(t5f^~r|9 zt?z26&116QN#tK+j*9VRrl#^lU1cRko^>3YZk3Kc{J)koKFMy)!2Q8r)ByTfKoI&X zdR~8`#x!13rKb6nSN}c%KouFpYU&|KLQaB$gciEi@c6B=CIvbOJSl7>OU2;=R-1(= z=`6~*=)7ID%qX$@^PVvJ;8erQlQm%A3|A$2^jGeONIYE`X@e_a9h^^49FdI4Kd)eM zP_xi_d?)+lN>rQ4YP$SH8(a`6mO}9tW&+XH-!C@I6y&#}n;Ctwn=NPpC&$hr_^W_= zQ`4j7bwf!xA`&OY0ibDWq+~n8;72^w*)j&jB_#EhR8w8rp5MJxv$4{joZ+RdTt#vgLs8L>gZIrg5R6qAVptkBsHdpu_?loQQe* z`e2Wb-cQ7hghxa;s5&TIL^_OG3yl`G`*~HMgydRVd~IIyLwmF^v1?DpBpGR4SKgl2 znrexgti|*>!XOVM+ClPuOTox|XjFE`DFBC2tkioar_B9`5ivTgub`Az3^e`!zzh6) ze3bQl%i9?U2W{C_1bb zKo6Uko9MW@`)s+dJ+HeeBk%L}QvQ$~;ykvpRsdOs@>C82tJX^gc1sujA-P)pF)QiX zv~dd#Tx4E=2J>dYRV&BL8-L7K&WDM&_7N2XOGNe0T~~*HR7CT8KWCP)xIs=Bh8`v1 z(Aa$QO8BLKFd-w;*X;L#eyEIfsDAII%<3W-Lqa|(t~wn=07ROcA#5np`0OVe^-#5H zY6@Q4$S4I9-(&Hi1hh}rz4pP+A(UK&9)GQr%C_)s0|(D(%?^)!=Z9E|^G8GK`lmZS zptp99t`m;y|E&X!Hi>fFmv&B|YLldSDU2%v8#gr(;E*0SkP(UMi5{Y$@ zcD}GX7F;7HiL*DKWqH9gZtgz&2z**TLcP8T3%p(_$)DI&^0VQ@i0Tg($^Dqm6`&HN zW%dy?lLvf%56N6!x)_a)yY%HkRRj5Be z-EPR#{ujz+PNcfyq)OEE6%~84vxk0>_N+GgDKZBdNyg&6f!!dA5fHez2()i(z6cb# z@fL7z_U(*&Gj5KQvN*d#n5%?aAv9)|p<5(ev45{SVmy(rT&hHk*|MAo*MeO-ANaYn z*P30Qb#HvX=JY#jf21(eF+4QAu$)NQ(?nCR`KQE?G-rNvx+92O`!a#rvg?)q-Kq1Q|?iBD9@x=kE5GiW3RjMh`f855#$EXryiT{+22hm&NQ&-z1YHLM-c;_Q3jgL5Pzh*LGUGAkY6P7Pww8rziz%xR8{?OdzoJi~sGj0t>1lE&k+Ey}9{<#K!= z`lTfP@}SgeVsTuG9{1L{3Ix8)zPa*`iCtYL zm^g?N`8s1R3YyHH!3Wq=u``?+J`sKk0!S->M}QM1+j3M$2KDj|Gtk zktvk~v*k^hkK@`g*Sn)SNmIEAVv7l*`-N{{W39bBWIH34Kh@R8WF zS)tRH>xDXe^dZ6Ssq;H~mx+y|KTd*>8GjmbR3l52!YOMx3m#lmCl=6-q0DecYC3}z z4zYySTdJ(fq#Gh|%l#n|l}*EzPa`D*-fMHYTG;51{~ghBlKv)M2eFfy+4FId5pwJ( z`_3#ofE!Z&BT=UUhe+u8am;{QHQ3QnUmCH9=u*K5@RfH7;;W$5Q835%34(F_q1}WDWvh!~WK(ue3|cU8R7Yg5e%Nu* zbUw@c`iuM-{~2R>sZ@7viwnMQldm$z+3-=uH;(f9roXO^2Uj$`)-%Icx$@)(Luzav z2<;@v$B9%IXr~u$*zRbjR(>h;Rn}X+A8zJSfN(R z*%2D_E&;*3-1l+zvGy?}hT|(VL;<=~-G(h41G7D3Yb)nII`w^$)~J1N;;4ml?g=Kp zNdySA|5}=9i zGX&$>s>=IF#mLy~p5(M(Qex&m!!0@ymPY*6YWtDqQOWM@)N6wVMQT>e6pJhri`P6E z;ed7Os^2LNx@Jac+jH5094_IlJ?}|catldmUTLrBtAqz9sBmXat-niUL;RS_{iSO! z*-EvwkA4m)kt*2L06S)=VGmWEFqE`Iq1& zp^V3W+oE(MU^Od>h9L#7P9UaNU;1yYaaR?)DnGVQw&?-8xdbv#O-RB$&gP)HVB!ZVSqYPf|Di3c_$SG2> z0t~V0aUeoS+iT2+m{d5*36cr&MD*cHDa%kK= zxD{~p`pw{isWArv_-R>UapPH;DNJHNvo?-iY0!t)wY*TD#D-dG$|ld^GQ`^Vo6KWVgM+^%jGH=j{NG&j8nWSPHR~t z?|@l`5bQ3rMwh3%)L3hXYo#`n%US_N z5Y82W`7Z%YHhf1j3oGTSQ7e)2y8a)kV}}e>D~B2>o}45|duyz3U;6*I@jSiQ-zrE_ zFUgr$jw@aW@MlN4B2L%NO;HyAEyucA;Hx121}y&z&*s zUC^D~4yy*0OJ=@vER3a=?M8C4Qxa$;U^#gTF66y4kNR9gsr_JBb5y??+^a7E;`r5Q z28^TvM@awxv@OTsqgt8uJ%tON+ z!`|&|?RbO~JA!qi7H3RT1zjf|D7=ZtI$(Sy30?qi>QugF53Vt#7&-Y#{?!5gr2)k1 zIKmYh1btS(>XR`qX4IUwjh&N?%jQAm!_vE8i(Pt}-7*>=m+^@VxVseqf9ceRdRhxe zv=lyLV(*`}(#sF`EdW6sIHT40F$1-FeVz}f*y98&;pX#A<9WOXgtJ6ku7O&DZ#Lb! zqHD5|$j(djSnFp~NWyKxw!t6`6-~uUS&0taB0QY`_7eIPC@opO2for3ynFNr6cxy{ z?;`+C$KTx$o*It7d0__MT5kF>n)6|V^I;j>)G4J-1$g!8=rcfpa*Tj-1x}mS(+VG8 zxd6o-(^ds+F|Iv1rWNl7n@F=e)K5K~-l7Jz8=)W~D12%?t^hm6cr3FttS8TTx-8#f z8lD~e6lxQZEt#v5AZSj;!}m>2TVcK~+s$sRpt=>kEguU8BooEL;U$^!mk(W(b6E`2 z#_jd}gKSB5s6*aGh-;pmKyHX^GTpBiapMoe7^Q(~tT~G){;Ay5`)>p8rcoP#TkF)N zZvEJHkL@*)zf8WUl}u->bziD+U$TzGOeGBvSr`3jxCyLdsR_&=)4{tgz);a|5QBbl z{UY?8iMpt7GM_)eW7roonAG+&+j4RKGA zuJ4&g!pAK$+%%=1y43;0rVHY{8GPmfV?(K*MsmYsU}vP>#4`7fX_Ylx}av3 zgaC2>>sZ+AXPg!*I=Ej({SqG-1E{rLQzRV=z5oiZ&ctjwy=BU}3>h|@Yk*-V6d!<%v9!qI2v#=d@N z-90-k!cG`@T&AR7X`(MPERkbP1+vGzi<<=E(@1WlJvK9lWu9^05LyHC0c7u{N!x)_ zZQZ&UNPWhV<5p z#qE>)H`(!Hh|Noz=h z)SS?s$EH%#gLpV_v~79P$O{bsN|cyQfJ&vxs{8|jKo|uWVEh?&Da$?G%D!%T9cTkK zf#BTsU4gWSP|x@EMk@u%sIEll@m?E8r3Qbfh@?%Iue4WQz0vfZx?e(fkkgNa28kCf z6?l7KH)|j_pg+Ok2Ny&J?QC@WzV*neU)(>bIoe$}2lq_s#?%2DkTg1GFK;19F5EGa z86|J=CM*QHr+6Nz6KBkY#(7FV(E0I!Mdv*uaxXe?sc+bpbWArADOw>PZM$C^|2l^I z2pTu2!Z947r)aUJ7grtWwPfnHX6j5$_W3oNq4oo^shBDI)ZO5|NHBMG`qo$>>TAibdxA^o*OzRCyJ#&XF1R%Bai|SlcL4t(-F)?V%oWN z9k0er0gaewm2oLtJ1>FqWXmOaZHGGRzDeDXCKtYytKgM#X~;?-kfM16aw3HjsIy&( zfzCDkm5AJ4!-N3vOGOSsjtLd8qrSTj%r|xRUo45P@OUuOB+@!c3{#j*$vx;W0KIa| zjFmfhf))4B^^zS{^N~-iQU8d|dNDb$D7TkK3W8oYT4%jEVtbJh=)n0~rv^+I9+JSo zaayvSUb|*JA6(axZO#qrzmgpNp%hnE;)MmssL~j_hmY#;^{&kx0`XU1n=H%+#0ri0 zrS-y>WtgYVY?x99$3 z)NE3-0|caOFJwF{3=EyT|BMFU0MyH7^9gm|RjksSw_b%YiobDy-E(kTvn}tPR*5QY zz*m&z7%8-I*Rp&A{|Ey>KYg0G#?NpX{wpNwc~B}_1hC9pU`oLM5-^ydeysgjd&wmw ztwLkw8HS(OAZE z)^lLPy$g~7?skH~6&+ZSxv zGdG?Id_v5Z2O4gy*by)Ffh;vx`kuz`jmL&!Z?g7RhPs!kS}2Gh+KzmvkM7#O&wd3G zyxC;(iVIbnEVqTiXu?r@z2OoWNm?2=oB~idps-i(zA+MfdLW6}|$e z&4;CpS5Vli#feR%TQes6u!U@Rh8)9IW{a_}_sk|s+?amp5rF3!44e8tLxjMlLmM$h zy&FzVVJ4=kTds#Lt0oy-%G!{3+A4?`BaJXo=u?OvEJ5g5GGP+AVx?*m<4fJgNA+n# zL)Hp{TkO#SwhMLqMuv(26Cdei;3oKC&tcm!trV1B^|Q_k2!G&`na*TYg^^uNB%VuN zdd(i-6e#b@hcW6w4K!<5MZFR&!Ot*VuT{HYu}qvJ(*lA6<^tpPXfQyZZCW>UURMez za?~=NU(XDY4QYz+GL#??2hHiIJn2)eo^S`0&Q=~J2~}-Ys8=<36B>;?Bku)JQvTmG z`$iY2{vSJk7Ws)=_M6KT=H%?Ez*hbSb7|CGI4vw_dHfzP+6xN=9v?>#%Y*HF=V_?? zE$+=%{n)8^$8ah_*`qlG>+||+&k+YU1^uN+jH~@qw)3~B6H>0y3UvvYt$w*TkhXi( zV;eK-`q@V^4e~&NlEqTwE(q&U0)`gIZy#2DUr}maOQv&+Fm{g0$4Y!Iun2z z7j|AcPL6dW{aI{SK$m?pnhznOMPGf#Si<+4dM%+19fXfY<>hmq1;{|I&fFASu#xyF$0X zWSOeW{R-vDZNqrLRA=B zF1rwvs#pB(r1KkUj$rD;3Hu!(_C_+_=c?soh7Ut^^BpZ_)LA~?(OPECvWU?z=O1OI z)#)Ia-0tt64b)1QOQut&ESMh}~`c zrgHtA)=U&eV-y2sdJBs@7BZtrOs|MR0L$On6auInYL3aF73$B&^I1HHEBVBc`Zpk% zmAki4CIFO4a30rW=$7~Kv-VSV+x7b-0G3Kp=y8AJBJ9LKnZ!kz+`eSJy>R-4E9jYH zB^fT-Wi6X$I5oGDLtaIlt%RvaJ=Fv*1%;Vq`-CTZ9c@ln+5P5nTMAGHN#sh2_3-^c zg0p8=TQ6P=&2NoAYK-FE=L8CVnD2Fkaf#Z(jw|mGqj`|E74T{^9f8Je7@ZdMxcB9) zy>BhY<_9lAO9k`dPJrALx!jlIA*xwMmdu}8e3?A&$LD+vR9Cf2h(Mo{Rrc!~IY>+N zHY`P%{g!^Fz@1rTZW|I4SLL^ zFre!OcYT$~Z7-YApDwO4pVHvK$D}^FZN`l%47j@i%H&4NnWGytNPKxZ1URwpA|yPE z+~t9u($z`HoFknS4e?h}i{}{>sAr=o0Y0Z^HW|(QvwZYo55PL00I$49dc9?gobin& z9|ov4p#4g)Ado>{CG{E`0Wt<9hY74Qk3C)NRX3J~d{dSqNx#^6=*fpt$H#Qo6f%P! zLLLZyZgk`$jV$9JBn^Q$YE*t_p$frk%&q+1v-vB_GMW-V<46c=s;zQ-C`DgO9vNMc zTcSeEY{kCh(DRyoddB{&|NQ2X$nWDR(E_X2lFsQ!|J|_jtX;2W(>qDg55Ob@F$i5% zLa_g}D0M13D&P~~6^q%XtXl}Ml2Z=gPI-@=i}I0R8DJvto>(Cr$b@rmsk1#9XEGh3 znNagX@g@AVtdz*XNMbUOhy>&SuV~zDGBmrKpF-I(K)XZ=WB&DEE@aOX#3>}`d$(W5 zsIqSn0`U-5ZrUFDqSZe2NI$k*AI*+?C`?^E_pI9hJ*>wbE?}r(y^sF! zM1YfPN_pclzHB2y(E8{zuK|K?b2Fxs~NpID?8faBYMaeOd9 za=8~wP_l-W?y;*qI*iIZPIZ3>`J{!VJjVS68F{F;0GHhXtpN(LuJCIIP8*Yf(HuEv zn#YCSORM>M2O_F058^`s0q3g=v;~_x_1(oZs%XZ5-bk~t)Ki!mxR=0NF&3hVGw*~8 zFQDsq<)Zf#V@?sN0*-=DybYkvcodC4hfhcp(kS$Rn$dMmAoJib-MXw(xh^br71>_} z+>;tFt)d`q2c=>$6{2ZzIlte%sj`!S1e2bZQ`tQbCJTDJJzn*|H>qYcnDVI0W0^N2G&G@OiMtlraGsfUiDsW9KuV zeP=*>&+1Ky)m2pOYs3-#eyHJs)>^thj8Pe|g;c6JcW5aH&P?=^9rvC^MMQ;YgAwP; z|F_%v8e_+B5DavqyA!h`L`eM-!oCj2e;OLnYZDtbtEf7g=PS{>LNQ`$i1=otAnR-) zfg z>Dt;mukNuHgDjfCNaUjc6IJ1gF5@X9);;N;=_~}7sga&Tl&?x?I44xf3W^p06$%-2 z^c;=_kx9OX8m7CQtOLY-z*`3{1fS8FK3+k@QYM%@x(w1EeWUL?#O0c990w$$9u=%` z5UUbQciBDthhr~Wp3=8&6!)`4B^5RqyT z$ds?zV}bUS`d6UTD>G1KHo?^Ymn?ZB$a6%5$2Y5g5eY=P`O*jW~}ObWB(^HIbcUftY1JY4FZH%ZA>#b>3- z_$t78%>^%{ZJuu+ zguKAzU8{#x{}7E?^t5Yfn&m~RJqtF?pOyX0F4L$Rf{xG)bn}qpsx&a|yk3r5CMUN(vPhOei3sy&R!i)u3HSn zwTQOW_Qkpp<4%+7cp(SdJXwtONdNaCK^>R%A<793UGJNRHoZ6MsK zn0f@1#~w40M+ld)m5@xf&jwAxWGn#n2>BG#6mbW7n`+oGwa23a{jQ&2NyU^qu?y%XEc0Zgi-V5ahAV7azpg$# zt`;PH^4{4{*JBNCN~yKqnK(qMBi5+r=_UkfS&W!T?pRXCIS;TNe35mm ze>%O|(^E~7zuAl0a6Hg~0N%Pkn|TbERk*>ya`WjV8KD!{-C3Qry0NLSW5x$9Y~%tM z)o$JSV}|hJ4mf_HkMEE}fS%{Ehvh6#utNJg(gP*$y)Ni!6=>Ttvtti3XNsGV0;J<01c&xULR&$-+PKl=aGiTanEA|;zZT3CMD?Yt;EzLA$GT}JIx zb=8mPfj@AZpQo#Ge?<3gqu^)oxm&HNx7?>-8aoW#kW3O?cS==70Sp&M$Id?*&RsP8_Xa-4qfbYsyaD&w za69+K+Gps%Q+1sCDHWjV(zii^X_#J=ngPAcwln;NBk7?EJj|ZYcY_*Nm-t7=`}+tX z^S|x$u01?%V^vv;bVtq&rY86(U0$%*^DG8Z)n@6X_esA@GQG}d z?~g{o~Wp1Nk7X(9g_VtlL+D-}#kfK;HlfRQNd?kIDAU${~;n03=AR zSnfOnlxnT6Zvl0fk+uyRAbs*UNCUZyp8_WTs##;DyMz!k&GE>1}CXhDDPiHy2=sncfj)~@xI zHbPMASM~Yo_X`-_ufP&Q|Cbi|Q=Nel;Qx|$cM}yuS`Y=mRoJ#+t$DU6wm#|i(T4jtv6mG8jWLf&fJv@W9O(phR_Vep

  • KNi~dpPXi}ui9ANI-HZvV)heGsb6ZtQ@4y?mc9|$bj3D;VhHqGV7wv*>(64I7i zJln5acD}FvU3q$YFk8Lb_x^N41sOUNDsFF^6VY5~kItX>8NC&`Ks4R*3Nj}0{(Wf% z2U3$@a8@2GZWCJUm03AHuixbOC;vahAB9MPgzmiq-o=UjZgKE%DZb)V4Fl6RH}sw; z(caSK=)P8RH5{g#7vDJyig2Q2beyVn-eo9?$DTCxY_npu40jBUMgU)-@z;2~PvgZH zB~QcZyXS8Zh&_JCpeLRp{~U}T7EHNy3r1*rE;_XeZVD#O7o|B`c2`*B+IW=v`H@Ld zcKofl(@64p&$oQ9l%6K$&wgpBrehhfr9fJn_X=V^7kBI=U(>+I5d4oKHHX)7F+iR^RoJ)wA@QQ9!$*Kv-kJ_(0?!pdzf#C}#&>tS ze)~S;a${l~JGjN-_KfE|cGOY#Y*{qrT=~0q!`8`^qG&3Eg_4K1Mj|Q7F_)-m`tPdUjXN{#>ntM1Y z#IcFqbJbsYq;u&0k(k*LPaPv`)@C0+ino0hU7LUZkJ-&vtGA#A4hctiz+ItuwxFEd zv-F21oc*K)?zM$#WV%)FqMFP9~(jf+bW(5XB7lteR?_sqF@vf@rC=~xdY$*pLl z01^=3E()QKGJs5%<>=@%F{5Pvcp=j0`KCxYqzW#g>~*{9rcIH6;7a*{3K>}eCw07} zoN(@1#m_&jVmn6#t#?WrG5c7r!;*Z7Z+NW;?=@@& zK@ilU@;B{oyzk)d7~QY*cv6toHs@pgOt3a|LsT1nE;KDi$cf68hvxZ944ex5u+fuD zukUJXeTHA=ZX?M+{U_?uBQYW!6HCU2q!kP|zLUq+j8S{TO!wvq@4fx`2Is}aAX{Rl z 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%0DR=0#3F2@`uO7(>IM&F}+m4dMD$fvt#bQHUr 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%0D}>KE=Tddw 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